1 Introdução a Programação Estruturas de repetição Prof. Luis Otavio Alvares Parte deste...
Transcript of 1 Introdução a Programação Estruturas de repetição Prof. Luis Otavio Alvares Parte deste...
1
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
2
• 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
3
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.
4
Enquanto...Repetir
Enquanto (condição) repetir
<instruções>
Repetir...EnquantoRepetir <instruções>
enquanto (condição)
Para...até...repetirPara <variavel> = <inicio> até <fim> repetir
<instruções>
Lógica de programaçãoEstruturas de repetição
condição
instrução
V
F
condição
instrução
V
F
5
– 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
6
Exemplo Para• Ler 50 números fornecidos pelo usuário e calcular e
exibir a média.
Pseudocódigo:1. Início2. Soma = 0 <<< o acumulador precisa ter um
valor inicial
3. Para cont =1 até 50 repetir 3.1 ler num3.2 soma = soma + num4. Media = soma / cont5. Mostrar media6. Fim
7
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
8
• 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.
9
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ício2- Mostrar “De quantos valores você quer calcular a média?”3- Ler QUANT (aqui se descobre quantas repetições)4- SOMA = 05- Para CONT = 1 até QUANT repetir5.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 MEDIA8- Fim
Exercício
• Faça um algoritmo para calcular e escrever o valor de S:
10
50
99...
4
7
3
5
2
3
1
1S
Exemplo de solução
11
1. Início2. S=03. Para I=1 ate’ 50 repetir3.1 S=S+(I*2-1)/I4. Mostrar S5. Fim
Exercício
12
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
Exemplo de solução
1. Início2. Mostrar 03. Mostrar 14. n_2=05. n_1=16. Para I=3 até 20 repetir6.1 n=n_1 + n_26.2 mostrar n 6.3 n_2=n_16.4 n_1=n7. 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ício2. Para I=1 até 99 repetir2.1 eprimo=12.2 para J=2 até I-1 repetir2.2.1 se I%j=0 então eprimo=02.3 se eprimo=1 então mostrar I3. Fim
15
Estruturas de repetição em C
16
17
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;
18
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
19
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:
20
#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");}
12345910Press 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:
21
#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");}
12345678910valor apos o FOR: 11Press 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:
22
12345apos o FOR: 5Press 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)23
Exercícios
• Faça um programa para calcular e escrever o valor de S:
• 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
50
99...
4
7
3
5
2
3
1
1S