Estruturas de Controle



Documentos relacionados
Switch switch switch switch switch variável_inteira valor1 valor2 switch variável_inteira case case break switch case default default switch switch

Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO

Estruturas de Repetição

Estrutura de repetição do/while

LINGUAGEM JAVA - RESUMO

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

MC Teste de Mesa e Comandos Repetitivos

Orientação a Objetos

Declarações. C diferencia letras maiúsculas de minúsculas! int n, N; n é diferente de N!

PHP Estruturas de repetição

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

Comandos de Desvio 1

Java possui 4 tipos de dados. Estes tipos de dados são divididos em: boolean, character, integer e float.

Exercícios: comandos de repetição

BC-0505 Processamento da Informação

CAMPUS DE GUARATINGUETÁ FACULDADE DE ENGENHARIA. Introdução à Programação em C. Algoritmos: Estruturas de Repetição. Prof. Dr. Galeno.J.

LISTA DE EXERCÍCIOS PARTE 1 (ESTRUTURAS SEQUENCIAIS)

Capítulo 5: Repetições

MATEMÁTICA ENSINO FUNDAMENTAL

Aula 11: Desvios e Laços

Controle de Fluxo Comandos de repetição: while e do-while

1. À primeira coluna (P), atribui-se uma quantidade de valores V igual à metade do total de linhas

a) 2 b) 3 c) 4 d) 5 e) 6

Erros e Incertezas. Rafael Alves Batista Instituto de Física Gleb Wataghin Universidade Estadual de Campinas (Dated: 10 de Julho de 2011.

TUTORIAL MATLAB Victor Breder 2016

Programação de Computadores I. Linguagem C Função

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

C A P I T U L O 6 E S T R U T U R A S D E C O N T R O L E D E R E P E T I Ç Ã O

FRAÇÃO Definição e Operações

1. Escreva um programa em Pascal que leia três valores inteiros e mostre-os em ordem crescente. Utilize seleção encadeada.

Isto não é exequível!... B[8][6] A[10] Slides_Java_4

=...= 1,0 = 1,00 = 1,000...

Ponto Secullum 4 Extras. Para configurar as extras no Ponto Secullum 4 abra a tela Cadastro de Horários e clique no botão Extras:

Projetando um Computador

7. Funções de Lógica Combinacional. 7. Funções de Lógica Combinacional 1. Somadores Básicos. Objetivos. Objetivos. Circuitos Digitais 03/11/2014

Aula 5: determinação e simplificação de expressões lógicas

Linguagem de Programação C. Fluxo de Saída Padrão. Linguagem de Programação C. printf. Fluxo de Saída Padrão. Algoritmos e Lógica de Programação

INF1005: Programação I. Algoritmos e Pseudocódigo

Exercícios: Comandos de Repetição

Lista de Exercícios 04 Estruturas de Dados Homogêneas - Vetores

CONCURSO DE ADMISSÃO AO COLÉGIO MILITAR DO RECIFE - 95 / 96 QUESTÃO ÚNICA. ESCORES OBTIDOS MÚLTIPLA ESCOLHA

Introdução à Algoritmos. Aula 11

Circuitos Aritméticos

Arquitetura de Computadores - Operação da Unidade de Controle. por Helcio Wagner da Silva

Estruturas de decisão de múltipla escolha

SINTAXE DO COMANDO SEQUÊNCIA

Apontamentos de matemática 5.º ano - Múltiplos e divisores

2. Tipos Abstratos de Dados

CURSO DE MATEMÁTICA BÁSICA PROGRAMA DE EDUCAÇÃO TUTORIAL CENTRO DE ENGENHARIA DA MOBILIDADE

Professora Isabel Harb Manssour Paradigmas de Linguagens I 1

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com

Capítulo VI Circuitos Aritméticos

Projetando um Computador Parte II Arquitetura do Processador BIP

números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Câmpus Ponta Grossa. Coordenação do Curso Superior de Tecnologia em. Automação Industrial

OBSERVAÇÕES: EXERCÍCIOS

Linguagem C. Introdução à Programação C. Variáveis. Identificadores. Identificadores 12/03/2011 VARIÁVEIS E TIPOS DE DADOS

números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo

Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos

Programação em FORTRAN V. João Manuel R. S. Tavares

Análise Léxica. Sumário

Programação Orientada a Objeto Java

Bem-vindo ao tópico sobre importação de dados do cadastro do item utilizando o Data Transfer Workbench.

Até o momento, vimos que a estrutura de um computador segue uma seqüência: ENTRADA => PROCESSAMENTO => SAÍDA

Conteúdos: Debora, Edcarllos, livros! slides disponíveis!

CRITÉRIOS GERAIS DE CLASSIFICAÇÃO

SOLUÇÕES N item a) O maior dos quatro retângulos tem lados de medida 30 4 = 26 cm e 20 7 = 13 cm. Logo, sua área é 26 x 13= 338 cm 2.

Aritmética Computacional. Prof. Leonardo Barreto Campos 1

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

Oganização e Arquitetura de Computadores

AC05 Lista de Exercícios sobre Sequências, Condições e Repetição Em C++

5. ESTRUTURA DE CONTROLE TOMADA DE DECISÕES

Programação para Computação

Simulado de Linguagem de Programação Java

Prática. Exercícios didáticos ( I)

Capítulo II : A Linguagem Pascal Conceitos Fundamentais

Sistema Operacional. Implementação de Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

ÁLGEBRA BOOLEANA- LÓGICA DIGITAL

Organização e Arquitetura de Computadores I


Linguagens de Programação:

TECNOLOGIA EM MECATRÔNICA INDUSTRIAL CONTROLADORES LÓGICOS PROGRAMÁVEIS

Determinantes. Matemática Prof. Mauricio José

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de

Parte 05 - Técnicas de programação (mapas de Veitch-Karnaugh)

Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

EXERCÍCIOS PREPARATÓRIOS PARA AS DISCIPLINAS INTRODUTÓRIAS DA MATEMÁTICA

Um Tradutor Dirigido por Sintaxe

Caminho de Dados e Controle. Prof. Leonardo Barreto Campos 1

- no assunto colocar [ALG] PRIMEIRA PARTE

Data Path / Control Path Controle do MIPS

Medidas de Tendência Central. Introdução Média Aritmética Moda Mediana

Estruturas de Dados Aula 9: Listas (parte 1) 05/04/2011

Engenharia Econômica

(1, 6) é também uma solução da equação, pois = 15, isto é, 15 = 15. ( 23,

FRAÇÃO. Número de partes pintadas 3 e números de partes em foi dividida a figura 5

FUNÇÕES MATEMÁTICAS NÚMERO : PI() SENO E COSSENO: SEN() E COS()

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

Transcrição:

Estruturas de Controle controles de seleção fluxos alternativos controles de repetição fluxos repetitivos 1

Uma estrutura de controle é uma instrução de controle e sua coleção de comandos cuja execução ela controla. O exemplo ao lado ilustra um controle de seleção de fluxo de execução. verdadeiro instrução falso instrução 2

As computações em programas de linguagens imperativas são realizadas avaliando-se expressões e atribuindo-se os valores resultantes a variáveis. Entretanto, há somente alguns programas úteis que consistem inteiramente em seqüências simples instruções de atribuição. Pelo menos dois mecanismos lingüísticos adicionais são necessários para ampliar as possibilidades de computações em programas: Meios de selecionar entre caminhos de execução. Meios de provocar a execução repetida de certos conjuntos de instruções. 3

Estrutura Sequencial Estrutura seletiva Estrutura repetitiva 4

Um dos recursos de linguagem que facilita o projeto e a implementação de programas é um método para formar coleções de instruções. PASCAL begin end; <instrução 1>;... <instrução n>; C ou C++ ou Java { <instrução 1>;... <instrução n>; } 5

Estrutura de controle de seleção de um ramo Forma geral em JAVA... if(<expressão booleana>) <instrução 1>; <próxima instrução>;... Mecanismo: a <expressão booleana> é avaliada, se o valor lógico encontrado for true, a <instrução 1> será executada e depois o fluxo segue para a <próxima instrução>, se o valor lógico encontrado for false, a <instrução 1> não será executada e o fluxo segue para a próxima instrução. 6

Estrutura de controle de seleção de um ramo Uma forma de se vincular mais de uma instrução a um controle de seleção é utilizar instruções compostas: if(<expressão booleana>){ <instrução 1>; <instrução 2>;... <instrução n>; } <próxima instrução>; 7

Estrutura de controle de seleção de dois ramos Sintaxe para uma seleção de dois ramos em Java, com instruções compostas: Qual é o mecanismo associado? if(<expressão booleana>){ <instrução 1a>; <instrução 2a>;... <instrução na>; } else { <instrução 1b>; <instrução 2b>;... <instrução nb>; } <próxima instrução>; 8

exemplo de utilização de uma seleção de dois ramos e instruções compostas: public class Principal { public static void main(string[] args) { Aplicacao ap = new Aplicacao( ); ap.executar(); } } import javax.swing.joptionpane; class Aplicacao{ void executar( ){ int angulo1, angulo2, angulo3, soma; angulo1=integer.parseint(joptionpane.showinputdialog("medida do primeiro?")); angulo2=integer.parseint(joptionpane.showinputdialog("medida do segundo?")); soma=angulo1+angulo2; if(soma<180 && angulo1>0 && angulo2>0){ angulo3=180-soma; JOptionPane.showMessageDialog(null,"terceiro angulo: "+angulo3); } else{ JOptionPane.showMessageDialog(null," medidas incompativeis"+ "\n nao ha constituicao de um triangulo "); } } 9 }

Exercício Acrescente ao ramo que representa a alternativa positiva (existência do triângulo) as instruções necessárias para que, além de exibir a medida do terceiro ângulo, o programa produza como resultado mais uma mensagem: triângulo retângulo ou triângulo não retângulo Observação: um triângulo é retângulo se algum de seus ângulos for reto (medida de 90 0 ). 10

Tipo de dados booleano ( lógico ) Elementos: os valores lógicos: true e false (verdadeiro e falso) Operações não (! ) negação e ( && ) conjunção ou ( ) disjunção Definição das operações lógicas pela tabela verdade não e F T ou F T F T F F F F F T T F T F T T T T 11

Exemplos de expressões lógicas (a+x<0) ou (b=0) (a+x<0) (b==0) (a>0) e (b-6 a) (a>0) && (b-6>=a) não( (a=0) ou (a=1) )! ( (a==0) (a==1) ) 12

É possível colocar um seletor como instrução de um outro seletor. Isto pode gerar dúvidas dependendo da construção do programa. Pode haver duas interpretações deste programa: uma que a cláusula else é referente ao primeiro if e a outra é que ela seja referente ao segundo if (exemplo A). Muitas linguagens têm como padrão que o else estará vinculado ao comando if... não-emparelhado mais próximo, portanto, no exemplo seria ao segundo if. Porém pelo fato de este ser um fator que pode gerar dúvidas no momento da leitura do código, é recomendável que seja explicitado o vínculo da cláusula else com seu respectivo if... através da utilização de instruções compostas (exemplo B). 13

if(soma==0) if(cont!= 0) resultado=0; else resultado=1; if(soma==0){ if(cont!=0) resultado=0; } else resultado=1; 14

problema proposto A montagem de uma determinada placa de circuito eletrônico exige a utilização de dois tipos de componentes: três componentes do tipo A e cinco componentes do tipo B. Conhecendo-se as quantidades disponíveis de cada tipo de componente, como determinar a quantidade máxima de placas que podem ser montadas? Utilize variáveis de tipo int para representar as quantidades. Esboço do método de resolução: realizar as duas entradas (quantidades disponíveis de cada tipo de componente) obter o quociente do primeiro valor dividido por 3 e o quociente do segundo valor por 5 o menor dos dois quocientes será a quantidade máxima de placas realizar a saída Elabore a implementação do programa Java correspondente 15

problema proposto Uma determinada ração animal é obtida juntando-se farinha de soja, farinha de milho e farinha de ossos, na proporção 5:3:2 (proporção em massa, por exemplo em toneladas). Conhecendo-se as massas de cada tipo de farinha disponíveis em estoque, como determinar a quantidade máxima de ração possível de se obter? Utilize variáveis de tipo float para representar as massas. Esboço do método de resolução: realizar as três entradas (quantidades disponíveis de cada tipo de farinha) obter o quociente do primeiro valor dividido por 5, o quociente do segundo valor por 3 e o quociente do terceiro valor por 2 obter o menor dos três quocientes calculados a quantidade máxima de ração será esse menor quociente multiplicado por 9 realizar a saída Elabore a implementação do programa Java correspondente 16

problema proposto Conhecendo-se os valores correspondentes a dia, mês e ano de uma data, como determinar a quantidade de dias entre esta data e o final do mês dessa mesma data? Observações: - um ano é bissexto se for múltiplo de 4 mas não de 100, ou se for múltiplo de 400; - fevereiro tem 29 ou 28 dias conforme o ano seja bissexto ou não; - janeiro, março, maio, julho, agosto, outubro e dezembro têm 31 dias; - abril, junho, setembro e novembro têm 30 dias. 17

Instruções Iterativas controles de repetição Uma instrução iterativa faz com que uma ou mais instruções sejam executadas nenhuma, uma ou várias vezes. A iteração é a própria essência do poder dos computadores. Sem este recurso, programas úteis teriam um código-fonte muito grande e demorariam muito para serem escritos. Existem algumas formas de se implementar instruções iterativas, e estas formas podem ser classificadas segundo alguns aspectos: - Como a iteração é controlada, - Onde o mecanismo de controle aparece no laço. 18

Instruções Iterativas As formas de controle de repetição são: controle lógico ou controle por contagem ou a combinação dos dois. As possibilidades para a localização do mecanismo de controle são o topo ou a base do laço. O corpo de um laço é a coleção de instruções cuja instrução de iteração controla a execução. Utilizamos o termo pré-teste com o sentido de que o teste para a finalização do laço ocorre antes do corpo do laço ser executado. E pós-teste significa que ele ocorre depois que o corpo do laço é executado. A instrução de controle e o corpo do laço associado formam, juntos, uma estrutura de controle de repetição. 19

Instruções iterativas lógicas com pré-teste Préteste 20

Instruções iterativas lógicas com pós-teste Pósteste 21

Instruções iterativas com contagem inicia, controla e incrementa o contador 22

Laços Controlados por Contador Uma instrução iterativa de controle por contagem tem uma variável de laço, na qual o valor da contagem é mantido. Ela também possui alguns meios de especificar os valores inicial e final da variável de laço e a diferença entre seus valores seqüenciais, chamado passo de variação. As especificações valor inicial, valor final e passo de variação de um anel de repetição são chamados de parâmetros do laço. 23

Laços Controlados por Contador Muitas linguagens implementaram suas instruções iterativas de contagem com formatos distintos entre sí, porém o objetivo de todas elas é executar uma ou mais instruções um certo número de vezes. No caso da linguagem Pascal a instrução possui a seguinte sintaxe. for<variável>:=<valor inicial>(to downto)<valor final> do <instrução> A opção to downto define se a variação de contagem será crescente ou decrescente, o passo de variação é unitário. 24

Laços Controlados por Contador Na linguagem Java a forma geral é: for(<expressão1>;<expressão2>;<expressão3>){ <instrução 1>; <instrução 2>; corpo do laço... <instrução n>; } O corpo do laço pode ser: uma instrução única; uma instrução composta ou uma instrução nula. A primeira expressão é avaliada uma única vez quando se inicia o loop. Normalmente é utilizada para inicializações. A segunda expressão é o controle do laço, é avaliada antes de cada execução do corpo do mesmo. A terceira expressão é avaliada depois de cada execução do corpo do laço. Normalmente utilizada para incrementos de variáveis. 25

Exemplo típico da utilização do laço de contagem: for (dia = 1; dia < 15; dia=dia+1){ qtd=integer.parseint(joptionpane.showinputdialog( dia +dia+ quantas ocorrencias? ); tot=tot+qtd; } Pode-se utilizar expressões múltiplas no caso da linguagem Java. Veja o exemplo: for (cont1=0, cont2=0.0, soma=0; cont1<=10 && cont2<=100.0; soma=soma+cont1+cont2, cont2=cont2*2.5); 26

Laços Controlados Logicamente Em várias situações não se sabe exatamente a quantidade de vezes que um determinado laço deve ser executado, portanto, o processo de controle por contador não é o mais adequado. Nestes casos, são utilizados os laços controlados logicamente. A continuidade da repetição do laço depende de uma expressão lógica. 27

Laços controlados logicamente Forma geral (Java): pré-teste while(<expressão booleana>){ } <instrução 1>; <instrução 2>;... <instrução n>; pós-teste do{ <instrução 1>; <instrução 2>;... <instrução n>; }while(<expressão booleana>); 28

Laços Controlados Logicamente Localização do controle do laço Quando devemos colocar o controle do laço no topo ou na base do laço? Ao colocar o controle no topo, o teste será efetuado antes da primeira execução do corpo e, por isso mesmo, pode ocorrer de não ser executado nenhuma vez. No caso de colocar o controle na base, o corpo do laço será executado pelo menos uma vez, o teste será realizado pela primeira vez após a primeira execução do corpo. 29

Laços Controlados Logicamente Java possui o comando continue que desvia a execução do programa da sua localização dentro do corpo do laço até o final do corpo. Este comando não encerra a execução do loop. Possui também o comando break que provoca o desvio para o final do corpo do laço, porém, o laço será terminado. 30

Laços Controlados Logicamente Os exemplos abaixo ilustram a utilização do continue e do break. No primeiro caso um valor negativo que seja lido será ignorado e portanto, não acumulado na variável soma. No segundo caso, a entrada de um valor negativo encerra o loop. while(soma < 1000) { valor=integer.parseint(joptionpane.showinputdialog( valor? )); if (valor<0) continue; soma=soma+valor; } while(soma < 1000) { valor=integer.parseint(joptionpane.showinputdialog( valor? )); if (valor<0) break; soma=soma+valor; } 31

O método executar( ) descrito abaixo deve realizar a entrada do valor x, e obter o valor da seguinte soma: y = 1/x + 1/(x+1) + 1/(x+2) + 1/(x+3) supor que x seja maior do que zero Complete sua construção. void executar( ){ double x, y; x=double.parsedouble(joptionpane.showinputdialog("valor x?")); y= 1/x ; y= y + 1/(x+1); y= y + 1/(x+2) ; y=????????????? ; JOptionPane.showMessageDialog(null,"valor da soma y: "+y); } 32

O método executar( ) descrito abaixo deve realizar a entrada do valor x, e obter o valor da seguinte soma: y = 1/x + 1/(x+1) + 1/(x+2) + 1/(x+3) +... + 1/(x+100) supor que x seja maior do que zero Complete sua construção. void executar( ){ double x, y, denominador; int valor; x=double.parsedouble(joptionpane.showinputdialog("valor x?")); y= 1/x; //primeira parcela for(????????????????){ denominador= x + valor; y= y +??????????; } JOptionPane.showMessageDialog(null,"valor da soma y: "+y); } 33

problema proposto Como obter a soma dos algarismos que compõem a notação de um valor inteiro positivo conhecido? exemplo: se o valor é 3629 a soma dos algarismos vale 3+6+2+9=20 34

esboço do método de resolução: separar cada um dos dígitos (da direita para a esquerda) e paralelamente ao processo de separação, construir a soma dos algarismos. Veja o exemplo: valor inicial da soma: 0 (nehum dígito foi separado) primeiro dígito separado: 9 operação: soma=soma+9 dígito separado: 2 operação: soma=soma+2 dígito separado: 6 operação: soma=soma+6 dígito separado: 3 operação: soma=soma+3= 20 3629 10 9 362 10 2 36 10 6 3 10 3 0 quociente igual a 0 fim do processo 35

problema proposto Modifique o programa obtido na tarefa anterior para além da soma dos algarismos, determinar também quantos de seus algarismos são ímpares. 36

problema proposto Conhecendo-se o valor real x (não nulo) e o inteiro n (n>1), como obter o valor da soma descrita abaixo? 1 x 1 x 2 1 x 3... 1 x n Observe que em cada parcela o numerador é sempre igual a 1 e cada novo denominador é igual ao anterior multiplicado por x. 37

problema proposto Um policial rodoviário anota em sua ficha, a cada multa aplicada por excesso de velocidade, a velocidade autuada. Conhecendo-se a série de valores anotados num dia, como obter a maior das velocidades anotadas? Não é conhecida previamente a quantidade de multas aplicadas. Supor que após o último valor anotado será digitado o valor zero (o zero indica fim da entrada de dados). Supor que não ocorra empates. 38

problema proposto Um policial rodoviário anota em sua ficha, a cada multa aplicada por excesso de velocidade, a velocidade autuada. Conhecendo-se a série de valores anotados num dia, como obter a maior das velocidades anotadas e também a quantidade de vezes em que essa maior velocidade foi registrada? Não é conhecida previamente a quantidade de multas aplicadas. Supor que após o último valor anotado será digitado o valor zero (o zero indica fim da entrada de dados). 39

problema proposto Um policial rodoviário anota em sua ficha, a cada multa aplicada por excesso de velocidade, a velocidade autuada. Conhecendo-se a série de valores anotados num dia, como obter as duas maiores velocidades registradas? Não é conhecida previamente a quantidade de multas aplicadas. Supor que após o último valor anotado será digitado o valor zero (o zero indica fim da entrada de dados). Supor que não ocorra empates. 40

problema proposto O gerente de uma biblioteca virtual registrou, dia a dia durante o mês de junho, a quantidade de visitas recebidas. Conhecendo-se essa série de quantidades anotadas, em ordem cronológica, como determinar se a primeira ou a segunda quinzena do mês apresentou maior movimento de visitantes? 41