240 likes | 356 Views
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. Lógica de programação. ESTRUTURAS DE REPETIÇÃO
E N D
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
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
Lógica de programação Fluxograma de uma estrutura de repetição: INÍCIO CONT = 1 Neste ponto do algoritmo podemos incluir qualquer conjunto de instruções que quisermos repetir 10 vezes. CONT = CONT + 1 CONT <= 10? Sim Não FIM
instrução F condição V Estruturas de repetição Lógica de programação 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> F condição V instrução
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.
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 • Mostrar media • Fim
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 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.” Isto será repetido 9 vezes.
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.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:
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 F0=0 e F1=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 • 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
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 automaticamenteapós a execução docomando1
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: #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"); } 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
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: • 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