Introdução a Programação
Estruturas de repetição
Prof. Luis Otavio Alvares
• ESTRUTURAS DE REPETIÇÃO
– 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 executar uma ação (ou um conjunto de ações) 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:
• PARA...ATÉ...REPETIR
• ENQUANTO...REPETIR
• REPETIR...ENQUANTO
Lógica de programação
Fluxograma de uma estrutura de repetição: Lógica de programação
INÍCIO
FIM
CONT <= 10?
Não Sim
CONT = 1
CONT = CONT + 1
Neste ponto do algoritmo podemos incluir qualquer
conjunto de instruções que quisermos repetir 10 vezes.
Enquanto...Repetir
Enquanto (condição) repetir <instruções>
Repetir...Enquanto
Repetir <instruções>
enquanto (condição)
Para...até...repetir
Para <variavel> = <inicio> até <fim> repetir <instruções>
Lógica de programação
Estruturas de repetição
condição instrução
V
F
condição
instrução V
F
– Até agora para vários valores informados pelo usuário líamos cada valor de forma separada
– Por exemplo, no algoritmo para o cálculo da média de quatro números, líamos 4 valores em 4 variáveis
diferentes.
Mas também poderíamos:
• ler um valor para 1 variável e repetir isso 4 vezes, adicionando cada valor lido ao total em uma outra variável, a cada repetição.
• Após as 4 repetições, a soma dos 4 números estaria acumulada na outra variável, bastando uma instrução para dividi-la por 4 e assim obter a média.
Lógica de programação
Exemplo Para
• Ler 50 números fornecidos pelo usuário e calcular e exibir a média.
Pseudocódigo:
1. Início
2. Soma = 0 <<< o acumulador precisa ter um valor inicial
3. Para cont =1 até 50 repetir 3.1 ler num
3.2 soma = soma + num 4. Media = soma / cont
5. Mostrar media 6. Fim
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>, é somado 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
(podendo-se inclusive aproveitar seu valor dentro do ciclo), e que as <ações> serão repetidas até que a <variável> tenha o <valor final>.
Lógica de programação
• Exemplo da estrutura PARA...ATÉ...REPETIR:
“Mostrar os quadrados dos inteiros de 3 a 11.”
– Pseudocódigo:
Para CONT = 3 até 11 repetir
Mostrar (CONT *CONT)
– Usamos esta estrutura quando sabemos quantas vezes temos de repetir certas ações, mesmo que o número de vezes só seja conhecido durante a execução. Por
exemplo:
“Perguntar ao usuário de quantos valores ele quer
calcular a média. Ler os números e calcular a média.”
Lógica de programação
Isto será repetido 9 vezes.
Lógica de programação
E se eu quisesse calcular a média de N números?
– Para esse problema construímos um algoritmo que será genérico, ou
seja, que poderá ser usado para calcular a média de quantos números se quiser!
– Pseudocódigo:
1- Início
2- Mostrar “De quantos valores você quer calcular a média?”
3- Ler QUANT (aqui se descobre quantas repetições) 4- SOMA = 0
5- Para CONT = 1 até QUANT repetir
5.1- Ler N (aqui é lido cada número, um em cada ciclo) 5.2- SOMA = SOMA + N (aqui os valores lidos são acumulados) 6- MEDIA = SOMA / QUANT (isto está fora do loop)
7- Mostrar MEDIA 8- Fim
Exercício
• Faça um algoritmo para calcular e escrever o valor de S:
50 ... 99
4 7 3
5 2
3 1
S 1
Exemplo de solução
1. Início 2. S=0
3. Para I=1 ate’ 50 repetir 3.1 S=S+(I*2-1)/I
4. Mostrar S
5. Fim
Exercício
Faça um algoritmo para calcular os 20 primeiros termos da série de Fibonacci:
0, 1, 1, 2, 3, 5, 8, 13, ….
com F
0=0 e F
1=1
Exemplo de solução
1. Início
2. Mostrar 0 3. Mostrar 1 4. n_2=0
5. n_1=1
6. Para I=3 até 20 repetir 6.1 n=n_1 + n_2
6.2 mostrar n
6.3 n_2=n_1
6.4 n_1=n
7. Fim
Exercício
Faça um algoritmo para calcular a soma dos números primos menores que 100
Faça um teste de mesa para testar a sua solução
Exemplo de solução
1. Início
2. Para I=1 até 99 repetir 2.1 eprimo=1
2.2 para J=2 até I-1 repetir
2.2.1 se I%j=0 então eprimo=0 2.3 se eprimo=1 então mostrar I
3. Fim
Estruturas de repetição em C
Estrutura de repetição: comando for
• Comando for
for (var=valor inicial; condição; incremento/decremento) comando;
for (var=valor inicial; condição; incremento/decremento) {
comando1;
comando2;
comando3;
}
Exemplo:
for (cont=3; cont<=11; cont++) printf (“%d”,cont);
Comando for
for (var=valor inicial; condição; inc/dec) comando1;
Não esquecer dos parênteses
O comando1 será executado enquanto a condição for verdadeira
O incremento ou decremento é executado automaticamente após a execução do comando1
Exercício
Escrever um algoritmo que lê 5 valores, e conta quantos
destes valores são negativos, escrevendo esta informação.
#include <stdio.h>
#include <stdlib.h>
main(){
int numero, cont, neg=0;
for (cont=0; cont<5; cont++) {
printf ("\nDigite um numero inteiro: ");
scanf ("%d", &numero);
if (numero<0) neg=neg+1;
}
printf ("\nO numero de valores negativos e’ %d\n", neg);
system("pause");
}
Cuidado!!!
• Se o valor da variável de controle do
comando for for alterado explicitamente dentro do bloco de repetição …
• Exemplo: saída:
#include <stdio.h>
#include <stdlib.h>
main(){
int I;
for (I=1; I<=10; I++){
printf (“%d\n",I);
if (I==5) I=8;
}
system("pause");
}
1 2 3 4 5 9 10
Press any key to continue . . .
Lembre-se!!!
Qual o valor da variável de controle do for após a execução do comando for? O valor que foi testado e não passou na condição.
Exemplo: saída:
#include <stdio.h>
#include <stdlib.h>
main(){
int cont;
for (cont=1; cont<=10; cont=++){
printf ("%d\n", cont);
}
printf("valor apos o FOR: %d\n",cont);
system("pause");
}
1 2 3 4 5 6 7 8 9 10
valor apos o FOR: 11
Press any key to continue...
Só use quando estritamente necessário:
E para forçar o término da repetição? Use um break.
Exemplo : saída:
1 2 3 4 5
apos o FOR: 5
Press any key to continue...
#include <stdio.h>
#include <stdlib.h>
main(){
int I;
for (I=1; I<=10; I=I+1){
printf ("%d\n",I);
if (I==5) break;
}
printf(“apos o FOR: %d\n",I);
system("pause");
}
Atenção para o valor de saída da variável de controle
Cuidado!!
• Faça sempre um teste de mesa com os
valores inicial e final do loop do comando for, pois a maioria dos erros são na primeira ou na última execução do laço.
• Erros comuns:
– Executar o laço (repetição) uma vez a mais ou a menos que o desejado
– Atribuir o valor inicial de alguma variável dentro do laço, quando deveria ser fora
– Não atribuir o valor inicial de uma variável (principalmente em for s aninhados)
Exercícios
• Faça um programa para calcular e escrever o valor de S para os n termos:
• Faça um programa para calcular os 20 primeiros termos da série de Fibonacci
S n1
4 ...
1 3 1 2
1 1