Lista de Exerccios - 04
Estruturas de Repetio
O que so e para que servem? So comandos que so utilizados na programao quando se deseja repetir, determinada parte do cdigo, mais de uma vez. Ou seja, ao invs de escrevermos o mesmo cdigo duas ou mais vezes, utilizamos uma estrutura de repetio. Exemplo:
Queremos imprimir os nmeros inteiros de 1 a 10 no vdeo do computador. a) Sem estrutura de repetio incio escreva 1 escreva 2 escreva 3 escreva 4 escreva 5 escreva 6 escreva 7 escreva 8 escreva 9 escreva 10 fim
b) Com estrutura de repetio PARA incio declare Cont : inteiro para Cont 1 at 10 passo 1 faa escreva Cont fim para fim
c) Com estrutura de repetio ENQUANTO incio declare Cont : inteiro Cont 1 enquanto (Cont <= 10) faa escreva Cont Cont Cont + 1 fim enquanto fim d) Com estrutura de repetio REPITA1 incio declare Cont : inteiro Cont 1 repita escreva Cont Cont Cont + 1 enquanto (Cont <= 10) fim Observao: Para este caso especificamente, no h muito problema em escrevermos o comando Escreva seguido de um nmero, dez vezes em nosso algoritmo. Por outro lado, imagine como ficaria nosso algoritmo, sem estrutura de repetio, se quisssemos imprimir os nmeros inteiros de 1 a 10.000. Nota: As estruturas de repetio tambm so conhecidas por: LUPES ou LAOS.
A estrutura apresentada exclusiva para a Linguagem de Programao C e suas derivadas. No caso da Linguagem de Programao Pascal e suas derivadas, a estrutura passa a ser: REPITA ... AT (Condio). H diferena na forma de teste da condio, nestas estruturas.
1. Estrutura PARA Dever ser utilizada quando se sabe previamente o nmero de repeties que devero ser executadas. Exemplo: Imprima todos os nmeros pares no intervalo de 1 a 30. Para este problema, j foi determinado o nmero de vezes que o lupe ser executado, ou seja, 30 vezes. Resoluo do problema: incio declare Cont : inteiro para Cont 1 at 30 passo 1 faa se (Cont mod 2 = 0) ento /* Testa se Cont possui valor par. */ escreva Cont fim para fim
2. Estrutura REPITA Dever ser utilizada quando o lupe tem que ser executado no mnimo uma vez e, a execuo do lupe mais de uma vez estar sujeita condio imposta no final. Exemplo: Imprima o somatrio de todos os nmeros inteiros no intervalo de 0 (zero) a N. Onde N deve ser um nmero inteiro maior ou igual a zero e ser escolhido pelo usurio. Para este problema, podemos considerar que, no mnimo uma vez o lupe dever ser feito, pois, o menor nmero que o usurio poder digitar o 0 (zero). Resoluo do problema: incio declare N, Total, Cont : inteiro Total 0 escreva Digite um nmero inteiro maior ou igual a zero: leia N Cont 0 repita Total Total + Cont Cont Cont + 1 enquanto (Cont <= N) escreva O Somatrio do intervalo de 0 a N : , Total fim
3. Estrutura ENQUANTO Dever ser utilizada quando, antes de se executar o lupe, for necessrio testar uma condio. Imprima o resultado da operao XY (leia-se: X elevado a Y). Onde X a base e o primeiro nmero que o usurio digitar, e Y o expoente ou potncia e ser o segundo nmero a ser digitado. Ambos inteiros. Para este problema deveremos fazer o teste da condio antes de entrarmos no lupe. Resoluo do problema: incio declare X, Y, Total : inteiro escreva Digite o valor da base X: leia X escreva Digite o valor do expoente Y: leia Y Total 1 enquanto (Y > 0) faa Total Total * X YY-1 fim enquanto escreva Total de X elevado a Y : , Total fim
Exerccios
1) Elabore um algoritmo que solicite que o usurio entre com 100 nmeros inteiros quaisquer. Imprima a soma dos nmeros digitados. 2) Elabore um algoritmo que leia um nmero qualquer digitado pelo usurio e calcule seu Fatorial. (Exemplo: 5! = 5 x 4 x 3 x 2 x 1) 3) Elabore um algoritmo em que o usurio entre com um nmero inteiro qualquer, e o software imprima os 20 nmeros subsequentes ao que foi digitado pelo usurio. 4) Elabore um algoritmo que solicite que o usurio entre com dois nmeros (inicial e final). Ao final o algoritmo dever apresentar o valor total da soma de todos os nmeros do intervalo digitado pelo usurio. 5) Elabore um algoritmo que solicite que o usurio entre com 300 nmeros quaisquer. Ao final apresente separadamente: a. A soma dos 100 primeiros nmeros digitados; b. A soma do 101 nmero at o 200; c. A soma do 201 nmero at o 300. 6) Elabore um algoritmo que apresente os nmeros pares maiores que 10 no intervalo fechado [A, B]. Sendo que A e B sero nmeros inteiros escolhidos pelo usurio. Um nmero par quando este satisfaz a seguinte condio: (NMERO mod 2 = 0) 7) Elabore um algoritmo que solicite que o usurio entre com 100 nmeros quaisquer. Ao final apresente separadamente: a. A soma dos nmeros pares que existirem entre o 1 nmero digitado at 50; b. A soma dos nmeros mpares que existirem entre o 51 nmero digitado at o 100. 8) Escreva um algoritmo que solicite que o usurio entre com valores inteiros quaisquer. Ao final imprima a quantidade de nmeros digitados, o somatrio dos valores digitados, e a mdia aritmtica do somatrio. 9) Elabore um algoritmo para fazer clculo de potenciao. Ou seja, x^y. (Exemplo: 3^4 = 3 x 3 x 3 x 3). Seu algoritmo dever solicitar que o usurio entre com o valor da base (x) e do expoente (y) e apresentar o resultado do clculo sem utilizar os operadores ** ou ^. Para resolver o problema utilize estrutura de repetio. 10) Escreva um algoritmo que calcule a mdia da seguinte seqncia numrica a seguir: 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + ... + 1/50. Feito isto, o algoritmo dever apresentar uma lista contendo todos os nmeros da seqencia que esto acima da mdia calculada. 11) Elabore um algoritmo que apresente todos os nmeros primos no intervalo de 1 a 50. Um nmero considerado Primo quando ele puder ser dividido exclusivamente por 1 e por ele prprio. Mais informaes e exerccios podero ser encontrados em: ASCENCIO, Ana F. G.; CAMPOS, Edilene A. V. de. Fundamentos da Programao de Computadores : Algoritmos, Pascal e C/C++, So Paulo: Pearson, 2002. - Pginas: 79 a 124. ASCENCIO, Ana F. G.; CAMPOS, Edilene A. V. de. Fundamentos da Programao de Computadores : Algoritmos, Pascal, C/C++ e Java, 2. Ed., So Paulo: Pearson, 2007. - Pginas: 93 a 144.