Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação para Engenharia Profº Carlos Eduardo Estruturas de repetição 2 Estruturas de repetição Estrutura sequencial Estrutura condicional Estrutura de repetição Os comandos são executados um após outro, sem opção de pular ou repetir comandos. Permite ao usuário tomar a decisão de executar ou não um ou mais comandos ou. Permite executar várias vezes (repetir) um conjunto de comandos, com base em uma quantidade ou condição. 3 • Se uma ação se repete em um algoritmo, em vez de escrevê-la várias vezes, em certos casos podemos resumir anotando uma vez só e solicitando que ela se repita, usando uma das estruturas de repetição. • Podemos pedir que uma ação (ou um conjunto de ações) seja executada um número definido ou indefinido de vezes, ou enquanto um estado permanecer ou até que um estado seja atingido. • As principais estruturas de repetição são: o ENQUANTO...REPETIR o FAÇA...ENQUANTO o PARA...ATÉ...REPETIR Estruturas de repetição 4 • Quando não conhecemos a quantidade de repetições, ou dependemos de uma condição para encerrar as repetições, utilizamos a estrutura “Enquanto” o Enquanto...Repetir Enquanto (condição) repetir <instruções> Fim enquanto • Quando conhecemos o número de vezes que os comandos devem ser repetidos utilizamos a estrutura “Para” o Para...ate...repetir Para <variável> = <inicio> até <fim> repetir <instruções> Fim para Estruturas de repetição Para ... até ... repetir • Formato: Para <variável> = <valor inicial> até <valor final> repetir <ações> • Significado: A <variável> é inicializada com <valor inicial>. Após cada execução das <ações>, soma-se 1 à <variável> e repete-se as <ações>, continuando assim até que a <variável> atinja o <valor final>. • Esta estrutura de repetição cria um contador automático, que nós não precisamos mandar incrementar. Ao usar esta estrutura já está subentendido que a <variável> inicia com <valor inicial> e é incrementada a cada ciclo e que as <ações> serão repetidas até que a <variável> tenha o <valor final>. 5 6 • ...mas às vezes poderemos precisar de um ciclo, num algoritmo, cuja quantidade de repetições nós não sabemos a princípio, nem temos como descobrir durante a execução! Veja, por exemplo: o “Criar um algoritmo que determine o maior de vários números positivos lidos. Ficar lendo e calculando o maior até que o usuário entre com o número 0 (zero).” • Neste exemplo não sabemos quantos números o usuário vai digitar. Temos que ficar esperando que ele digite zero para parar o processamento e mostrar o maior. Então não podemos usar a estrutura PARA...ATÉ. Temos que escolher uma das outras estruturas de repetição... Enquanto ... repetir 7 • Formato: Enquanto <operação lógica> repetir <ações> • Significado: A <operação lógica> é testada. Se for verdadeira, então executar <ações> e em seguida testar novamente a op. lógica. Este ciclo prossegue até que em algum teste a op. lógica resulte em falso. • Nesta estrutura temos novamente, assim como nas estruturas de decisão, uma operação lógica determinando se devemos continuar a repetir ou parar de repetir as ações. • Devemos garantir que o dado testado na op. lógica tenha seu valor modificado por alguma das ações repetidas. Enquanto ... repetir 8 Estruturas de repetição condição instrução V F ENQUANTO PARA condição instrução V F 9 Estruturas de repetição • Contador: o uma variável utilizada para contar; o ela pode ser utilizada como condição para início ou término da estrutura de repetição; o ou, apenas para realizar uma contagem de valores; o o contador iniciado com um valor inicial e é representado por ele mesmo somado à um incremento, por exemplo: cont = 0; % início do contador cont = cont + 1 % incremento do contador 10 Estruturas de repetição • Exemplo 01: elaborar um algoritmo para imprimir na tela a contagem de 0 a 5. Var cont: inteiro Início cont ← 0; enquanto cont<=5 escreva cont cont = cont + 1 fim enquanto Fim cont = 0; while cont<=5 fprintf(`%i \n`, cont) cont = cont + 1 end Início cont = 0 cont <=5 cont cont = cont + 1 Fim Início cont = 0:5 cont Fim for cont=1:5 fprintf(`%i \n`, cont) end 11 Estruturas de repetição • Acumulador: o uma variável utilizada para acumular valores por soma, multiplicação, etc; o o acumulador é iniciado com um valor inicial e é representado por ele mesmo somado ou multiplicado à um valor (variável), por exemplo: acm = 0; % início do acumulador acm = acm + x % incremento do acumulador ou acm = 1; % início do acumulador acm = acm * x % incremento do acumulador 12 Estruturas de repetição • Exemplo 01: elaborar um algoritmo para imprimir na tela a soma dos valores de 1 a 20. Var cont: inteiro soma: real Início cont ← 1; soma ← 0; enquanto cont<=20 soma = soma + cont cont = cont + 1 fim enquanto escreva soma Fim cont = 1; soma = 0; while cont<=20 soma = soma +cont cont = cont + 1 end fprintf(`%i \n`, cont) Início soma =0 cont = 1 cont <=20 soma = soma +cont cont = cont + 1 Fim Início cont = 1:20 Fim soma = 0; for cont = 1:20 soma = soma + cont end fprintf(`%i \n`, soma) soma soma =0 soma soma = soma + cont Estruturas de repetição • Exemplo 02: elaborar um algoritmo para calcular a média de 4 notas para 5 alunos. Estruturas de repetição • Exemplo 03: elaborar um algoritmo para calcular o fatorial do número 5 (5!). Estruturas de repetição • Exemplo 05: elaborar um algoritmo para apresentar os resultados de uma tabuada de um número qualquer. Estruturas de repetição • Exemplo 06: • O comando while é frequentemente usado para checar um possível erro de entrada do usuário. • Considere o exemplo a seguir: • O programa solicita a entrada de um número positivo para calcular o log na base 10. Usamos a estrutura while para testar se o número é positivo ou não. Se for negativo, ele pede novamente para entrar com um valor positivo, até o usuário entrar com um número válido. Estruturas de repetição 18 Exemplos • Ler 50 números fornecidos pelo usuário e calcular e exibir a média. ENQUANTO Pseudocódigo: VAR Real: soma, num, media Inteiro: cont INÍCIO soma = 0 cont = 0 Enquanto cont < 50 repetir ler num soma = soma + num cont = cont + 1 Media = soma / cont Mostrar media FIM PARA Pseudocódigo: VAR Real: soma, num, media Inteiro: cont INÍCIO soma = 0 Para cont =1 até 50 repetir ler num soma = soma + num Media = soma / cont Mostrar media FIM 20 Aplicação no MATLAB 21 Exercícios Escrever um algoritmo que lê 5 valores, e conta quantos destes valores são negativos, escrevendo esta informação. neg=0; for cont=1:5 numero = input(‘\n Digite um numero inteiro: ‘); if numero<0 neg=neg+1; end end fprintf (‘\n O numero de valores negativos é %g \n", neg); 22 Enquanto ... repetir Escrever um algoritmo que lê 5 valores, e conta quantos destes valores são negativos, escrevendo esta informação. cont=0; neg=0; while cont<5 numero=input(‘\n Digite um numero inteiro: ‘); if (numero<0) neg=neg+1; cont=cont+1; end end fprintf (‘\n O numero de valores negativos é %g \n’, neg); 23 Outros exemplos 24 1. Construir um algoritmo que calcule a média aritmética de vários valores inteiros positivos, lidos externamente. O final da leitura acontecerá quando for lido um valor negativo. numero=input(‘\n Digite um valor inteiro positivo. Ou um valor negativo para encerrar: ‘); whilenumero>=0 soma=soma+numero; cont=cont+1; numero=input(‘\n Digite um valor inteiro positivo. Ou um valor negativo para encerrar: ‘); end if cont>0 media=soma/cont; fprintf(‘\n A media é %.2f \n’, media); else fprintf(‘\n Nenhum valor foi digitado ‘); end 25 2. Escreva um algoritmo que calcule a média aritmética das 3 notas dos alunos de uma classe. O algoritmo deverá ler, além das notas, o código do aluno e deverá ser encerrado quando o código for igual a zero. codigo=input(‘\n Digite o código do aluno. Ou digite zero para encerrar a execução: ‘); while codigo~=0 soma=0; for cont=1:3 nota=input(‘\n Digite a nota: ‘); soma=soma+nota; end media=soma/3; fprintf(‘\n A média do aluno %g é %.2f\n’, codigo, media); codigo=input(‘\n Digite o código do aluno. Ou digite zero para encerrar a execução: ‘); end 26 3. Escreva um algoritmo que calcule a média dos números digitados pelo usuário, se eles forem pares. Termine a leitura se o usuário digitar zero (0). num=input(‘\n Digite um numero inteiro. Ou digite zero para encerrar a execução: ‘); while num~=0 if rem(num,2)==0 soma=soma+num; cont=cont+1; end num=input(‘\n Digite um numero inteiro. Ou digite zero para encerrar a execução: ‘); end if cont>0 media=soma/cont; fprintf(‘\n A média é %.2f \n’, media); else fprintf(‘\n Nenhum valor foi digitado ‘); end 27 Mais um exemplo... 4. Faça um programa que realize a venda de produtos a clientes. • Cada cliente pode comprar vários produtos. • Sobre cada produto comprado por cada cliente, leia a quantidade de unidades compradas e o preço unitário. • Encerre a entrada de produtos para um cliente quando o código do produto lido for -1. • Mostre, para cada cliente, o valor total da sua compra. • Encerre a entrada de clientes quando o código do cliente lido for zero. 28 codCli=input('\n Digite o código do cliente. Digite zero para encerrar a execução: '); while codCli~=0 valorTotal=0; codProd=input('\n Digite o código do produto. Digite -1 para encerrar a execucao: '); while codProd~=-1 fprintf('\n Digite a quantidade comprada pelo cliente %g do produto %g ', codCli, codProd); qtidade=input('= '); fprintf('\n Digite o valor unitário do produto %g ', codProd); precoUnit=input('= '); valorTotal=valorTotal+qtidade*precoUnit; codProd=input('\n Digite o código do produto. Digite -1 para encerrar a execucao: '); end fprintf('\n O cliente %g deve pagar R$ %.2f', codCli, valorTotal); codCli=input('\n \n Digite o código do cliente. Digite zero para encerrar a execucao: '); end
Compartilhar