Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informação Algoritmos Estruturas de controle: repetição com comando enquanto_for Profª Janne Oeiras Lachi 1 Plano de aula ` Estrutura de repetição em algoritmos: ` Estrutura de repetição para número indefinido de repetições. ` enquanto...fim_enquanto ` continua...enquanto_for Comando continua ... enquanto_for ` Estrutura com teste no final ` Baseia-se na análise de uma condição, ou seja, a repetição será feita enquanto a condição for verdadeira. ` Quando o teste condicional resultar em valor falso, os comandos dentro do bloco de repetição não serão executados. Comando continua ... enquanto_for ` Em Português estruturado usa os comandos: continua e enquanto_for ` Sintaxe do comando: continua comando 1 comando 2 ... comando n enquanto_for (<condição>) Teste no final porque está DEPOIS dos comandos a serem executados. Diferença entre os comandos ` enquanto...fim_enquanto x continua...enquanto_for ` continua...enquanto_for: ` os comandos são repetidos pelo menos uma vez, já que a condição de parada se encontra no final. ` SEMPRE vai entrar no laço de repetição e executar os comandos pelo menos 1 vez, pois não há uma condição prévia que impeça a entrada no bloco do enquanto. ` Estimativas afirmam que é usado em 5% dos laços. continua comando 1 comando 2 ... comando n enquanto_for (<condição>) Exemplo 1 ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule o valor de entrada, multiplicando- o por 3 e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. programa mult_3 var num: inteiro resp: caractere início fim Corpo mínimo do algoritmo Declaração da variável num para receber a entrada Declaração da variável resp para receber a resposta do usuário Exemplo 1: passo-a-passo ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule o valor de entrada, multiplicando-o por 3 e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. programa mult_3 var num: inteiro resp: caractere início escreva “Informe um número inteiro:” leia num fim Vamos pedir e receber o dado de entrada Exemplo 1: passo-a-passo ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule o valor de entrada, multiplicando-o por 3 e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. programa mult_3 var num: inteiro resp: caractere início escreva “Informe um número inteiro:” leia num escreva num * 3 fim Vamos efetuar o cálculo solicitado no problema e ao mesmo tempo apresentar esse resultado Exemplo 1: passo-a-passo ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule o valor de entrada, multiplicando-o por 3 e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. programa mult_3 var num: inteiro resp: caractere início escreva “Informe um número inteiro:” leia num escreva num * 3 escreva “Deseja continuar calculando (S ou N)?” leia resp fim Vamos perguntar se o usuário deseja continuar Exemplo 1: inserindo a repetição ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule o valor de entrada, multiplicando-o por 3 e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. programa mult_3 var num: inteiro resp: caractere início continua escreva “Informe um número inteiro:” leia num escreva num * 3 escreva “Deseja continuar calculando (S ou N)?” leia resp enquanto_for (resp = “S” .ou. resp = “s”) fim Veja que incluímos o comando continua... enquanto_for Exemplo 1: inserindo a repetição ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule o valor de entrada, multiplicando-o por 3 e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. programa mult_3 var num: inteiro resp: caractere início continua escreva “Informe um número inteiro:” leia num escreva num * 3 escreva “Deseja continuar calculando (S ou N)?” leia resp enquanto_for (resp = “S” .ou. resp = “s”) fim Note a indentação dos comandos dentro do bloco do comando continua... enquanto_for Exemplo 1: execução da repetição com o comando enquanto_for continua escreva “Informe um número inteiro:” leia num escreva num * 3 escreva “Deseja continuar calculando (S ou N)?” leia resp enquanto_for (resp = “S” .ou. resp = “s”) Simulação: num saída condição -12 3 18 -15 .v. .v. .v. .f. resp -4 S 1 S 6 S -5 N O algoritmo vai parar quando resp receber um valor diferente de S, pois a condição se torna falsa. Exemplo 1: com enquanto programa MULT_user var N, R : inteiro RESP : caractere início RESP Å “S” enquanto (RESP = “S” .ou. RESP = “s”) faça escreva “Informe um número inteiro:” leia N R Å N * 3 escreva R escreva “Deseja continuar (S ou N)?” leia RESP fim_enquanto fim Neste problema, é melhor a solução anterior com o enquanto_for porque não precisamos inicializar a variável controladora do laço ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule o valor de entrada, multiplicando-o por 3 e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. Exemplo 2: resolução com enquanto ` Escreva um algoritmo que leia dois números inteiros. Enquanto o primeiro número for menor que o segundo, incremente o primeiro com 2 unidades e o segundo número com 1 unidade. Ao término do algoritmo, imprima os novos valores dos números. programa novo_valor var x, y: inteiro início escreva “Informe dois numeros inteiros: ” leia x, y enquanto (x < y) faça x Å x +2 y Å y + 1 fim_enquanto escreva “O novo valor de x eh: ”, x escreva “O novo valor de y eh: ”, y fim Vimos anteriormente que este problema não é adequado para se resolver com o comando para. Exemplo 2 ` Escreva um algoritmo que leia dois números inteiros. Enquanto o primeiro número for menor que o segundo, incremente o primeiro com 2 unidades e o segundo número com 1 unidade. Ao término do algoritmo, imprima os novos valores dos números. programa novo_valor var x, y: inteiro início escreva “Informe dois números inteiros: ” leia x, y continua x Å x + 2 y Å y + 1 enquanto_for (x < y) escreva “O novo valor de x eh: ”, x escreva “O novo valor de y eh: ”, y fim Para usar o comando continua...enquanto_for precisamos ter cuidado. Devemos testar se x < y para não alterar os valores se não for necessário. Exemplo 2 ` Escreva um algoritmo que leia dois números inteiros. Enquanto o primeiro número for menor que o segundo, incremente o primeiro com 2 unidades e o segundo número com 1 unidade. Ao término do algoritmo, imprima os novos valores dos números. programa novo_valor var x, y: inteiro início escreva “Informe dois numeros inteiros: ” leia x, y se ( x < y) então continua x Å x + 2 y Å y + 1 enquanto_for (x < y) fim_se escreva “O novo valor de x eh: ”, x escreva “O novo valor de y eh: ”, y fim Neste problema, é melhor usar o comando enquanto porque economizamos esse teste com o comando SE. Exemplo 3: com continua...enquanto_for` Faça um algoritmo que receba números e imprima o dobro de cada número. A execução do algoritmo termina quando o usuário entrar com o número 0 (zero). programa DOBRO var num : realiníciocontinua escreva “Entre com um número ou 0 para terminar: ”leia num escreva num*2enquanto_for (num <> 0)fim Temos aqui o problema de imprimir o dobro de 0 antes de sair... Exemplo 3: com continua...enquanto_for ` Faça um algoritmo que receba números e imprima o dobro de cada número. A execução do algoritmo termina quando o usuário entrar com o número 0 (zero). programa DOBRO var num : realiníciocontinua escreva “Entre com um número ou 0 para terminar: ”leia numse (num <> 0) então escreva num*2fim-seenquanto_for (num <> 0)fim Colocamos uma condição que neste caso onera o algoritmo porque tem que ser testada a cada valor inserido... Conclusão: melhor usar o enquanto Exemplo 3: com enquanto ` Faça um algoritmo que receba números e imprima o dobro de cada número. A execução do algoritmo termina quando o usuário entrar com o número 0 (zero). programa DOBRO var num : realinícioescreva “Entre com um número ou 0 para terminar: ”leia numenquanto (num <> 0) façaescreva num*2escreva “Entre com um número ou 0 para terminar: ”leia numfim_enquantofim Colocamos a pergunta fora do laço e depois repetimos dentro dele (no final) Exemplo 4 ` Faça um algoritmo para calcular a área de um triângulo, que não permita a entrada de dados inválidos, ou seja, medidas menores ou iguais a 0. Dica: área = (base x altura) / 2. Use o comando continua...enquanto_for Exemplo 4: passo-a-passo ` Faça um algoritmo para calcular a área de um triângulo, que não permita a entrada de dados inválidos, ou seja, medidas menores ou iguais a 0. Dica: área = (base x altura) / 2 programa AREA_TRIANGULO var area, base, altura: realinício fim Corpo mínimo do algoritmo e declaração de variáveis: • area vai armazenar a area calculada; • base vai armazenar a base que o usuário informar; • altura vai armazenar a altura que o usuário informar. Exemplo 4: passo-a-passo ` Faça um algoritmo para calcular a área de um triângulo, que não permita a entrada de dados inválidos, ou seja, medidas menores ou iguais a 0. Dica: área = (base x altura) / 2 programa AREA_TRIANGULO var area, base, altura: realinício escreva “Entre com a base do triângulo (valor maior que 0): ”leia base escreva “Entre com a altura do triângulo (valor maior que 0): ”leia alturafim Vamos ler e armazenar os dados de entrada Note que NÃO podemos receber dados inválidos Exemplo 4: passo-a-passo ` Faça um algoritmo para calcular a área de um triângulo, que não permita a entrada de dados inválidos, ou seja, medidas menores ou iguais a 0. Dica: área = (base x altura) / 2 programa AREA_TRIANGULO var area, base, altura: realiníciocontinua escreva “Entre com a base do triângulo (valor maior que 0): ”leia baseenquanto_for (base <= 0) continua escreva “Entre com a altura do triângulo (valor maior que 0): ”leia alturaenquanto_for (altura <= 0) fim Incluímos aqui o comando continua...enquanto_for para “continuar” a solicitação de entrada enquanto o usuário não fornecer dados válidos Exemplo 4: resolução ` Faça um algoritmo para calcular a área de um triângulo, que não permita a entrada de dados inválidos, ou seja, medidas menores ou iguais a 0. Dica: área = (base x altura) / 2 programa AREA_TRIANGULO var area, base, altura: realiníciocontinua escreva “Entre com a base do triângulo (valor maior que 0): ”leia baseenquanto_for (base <= 0) continua escreva “Entre com a altura do triângulo (valor maior que 0): ”leia alturaenquanto_for (altura <= 0) area Å (base * altura) / 2 escreva “Medida da área é:”, area fim Por fim fazemos o cálculo e mostramos na tela Exemplo 5 ` Elaborar um algoritmo que calcule e imprima o valor de bn. O valor de n deverá ser maior do que 1 e inteiro e o valor de b maior ou igual a 2 e inteiro. Dica: modifique o algoritmo abaixo. programa AREA_TRIANGULO var area, base, altura: realiníciocontinua escreva “Entre com a base do triângulo: ”leia baseenquanto_for (base <= 0) continua escreva “Entre com a altura do triângulo: ”leia alturaenquanto_for (altura <= 0) area Å (base * altura) / 2 escreva “Medida da área é:”, area fim Exemplo 5: resolução ` Elaborar um algoritmo que calcule e imprima o valor de bn. O valor de n deverá ser maior do que 1 e inteiro e o valor de b maior ou igual a 2 e inteiro . programa B_N var res, b, n: inteiroiníciocontinua escreva “Entre com um valor inteiro de b >= 2: ”leia benquanto_for (b < 2) continua escreva “Entre com um valor inteiro de n > 1: ”leia nenquanto_for (n <= 1) res Å b ↑ n escreva “O valor final é:”, res fim Referências ` Algoritmos – Fundamento e Prática. Everton Coimbra de Araújo. Florianópolis: Visual Book, 2007. ` Algoritmos - Lógica para desenvolvimento de programação de computadores. José Augusto N. G. Manzano, Jayr Figueiredo de Oliveira. São Paulo: Érica, 2006. 27 Algoritmos Plano de aula Comando continua ... enquanto_for Exemplo 1 Exemplo 1: passo-a-passo Exemplo 1: passo-a-passo Exemplo 1: passo-a-passo Exemplo 1: inserindo a repetição Exemplo 1: inserindo a repetição Exemplo 1: execução da repetição com o comando enquanto_for Exemplo 1: com enquanto Exemplo 2: resolução com enquanto Exemplo 2 Exemplo 2 Exemplo 3: com continua...enquanto_for Exemplo 3: com continua...enquanto_for Exemplo 3: com enquanto Exemplo 4 Exemplo 4: passo-a-passo Exemplo 4: passo-a-passo Exemplo 4: passo-a-passo Exemplo 4: resolução Exemplo 5 Exemplo 5: resolução Referências
Compartilhar