Introdução a Programação
Estruturas de repetição
Prof. Luis Otavio Alvares
Parte deste material é adaptado de lâminas das Profas. Patrícia Jaques,
Mônica Py e Deise Saccol
1
Lógica de
programação
• 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
2
Fluxograma de uma estrutura de repetição:
Lógica de
programação
INÍCIO
CONT = 1
CONT = CONT + 1
Sim
Neste ponto do
algoritmo podemos
incluir qualquer
conjunto de instruções
que quisermos repetir
10 vezes.
CONT <= 10?
Não
FIM
3
Estruturas de repetição
Enquanto...Repetir
Lógica de
programação
F
condição
Enquanto (condição) repetir
V
<instruções>
instrução
Repetir...Enquanto
instrução
Repetir <instruções>
enquanto (condição)
condição
Para...até...repetir
F
V
Para <variavel> = <inicio> até <fim> repetir
<instruções>
4
Lógica de
programação
– 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.
5
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
6
Lógica de
programaçã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>, é somado 1 à <variável> e repetese 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>.
7
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)
Isto será repetido 9 vezes.
– 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.”
8
E se eu quisesse calcular a média de N números?
Lógica de
programação
– 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.1Ler N
(aqui é lido cada número, um em cada ciclo)
5.2SOMA = SOMA + N
(aqui os valores lidos são acumulados)
6- MEDIA = SOMA / QUANT
(isto está fora do loop)
7- Mostrar MEDIA
8- Fim
9
Exercício
• Faça um algoritmo para calcular e escrever o
valor de S:
1 3 5 7
99
S      ... 
1 2 3 4
50
10
Exemplo de solução
1.
2.
3.
3.1
4.
5.
Início
S=0
Para I=1 ate’ 50 repetir
S=S+(I*2-1)/I
Mostrar S
Fim
11
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 F0=0 e F1=1
12
Exemplo de solução
1.
2.
3.
4.
5.
6.
6.1
6.2
6.3
6.4
7.
Início
Mostrar 0
Mostrar 1
n_2=0
n_1=1
Para I=3 até 20 repetir
n=n_1 + n_2
mostrar n
n_2=n_1
n_1=n
Fim
13
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
14
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
15
Estruturas de repetição em C
16
Estrutura de repetição: comando for
• Comando for
for (var=valor inicial; condição; incremento/decremento)
comando;
Exemplo:
for (cont=3; cont<=11; cont++)
printf (“%d”,cont);
for (var=valor inicial; condição; incremento/decremento)
{
comando1;
comando2;
comando3;
}
17
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
18
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");
}
19
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
. ..
20
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...
21
Só use quando estritamente necessário:
E para forçar o término da repetição? Use um break.
Exemplo :
#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");
}
saída:
1
2
3
4
5
apos o FOR: 5
Press any key to continue...
Atenção para o valor de
saída da variável de
controle
22
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)
23
Exercícios
• Faça um programa para calcular e escrever o
1 3 5 7
99
S





...

valor de S:
1 2 3 4
50
• Faça um programa para calcular os 20
primeiros termos da série de Fibonacci
• Faça um programa para calcular os números
primos menores que 100
24
Download

Slides