Estruturas de Repetição Alguns cálculos realizados pelo computador são feitos de forma repetitiva Exemplos: Cálculo de 25! fat = 25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2*1; Soma dos 100 primeiros números naturais não-nulos s = 100 + 99 + 98 + 97 + 96 + 95 + 94 + 93 + 92 + 91 + 90 + 89 + 88 + 87 + 86 + 85 + 84 + 83 + 82 + 81 + 80 + 79 + 78 + 77 + 76 + 75 + 74 + 73 + 72 + 71 + 70 + 69 + 68 + 67 + 66 + 65 + 64 + 63 + 62 + 61 + 60 + 59 + 58 + 57 + 56 + 55 + 54 + 53 + 52 + 51 + 50 + 49 + 48 + 47 + 46 + 45 + 44 + 43 + 42 + 41 + 40 + 39 + 38 + 37 + 36 + 35 + 34 + 33 + 32 + 31 + 30 + 29 + 28 + 27 + 26 + 25 + 24 + 23 + 22 + 21 + 20 + 19 + 18 + 17 + 16 + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1; Estruturas de Repetição Introdução à Computação 1 de 18
Estruturas de Repetição Para se evitar repetições cansativas na escrita de um programa São utilizadas estruturas que repetem um determinado conjunto de instruções Para isto, são utilizadas as estruturas de repetição Estruturas de Repetição Introdução à Computação 2 de 18
Estruturas de Repetição São utilizadas quando há uma grande quantidade de tarefas a ser repetida em um programa Para o seu funcionamento correto, é necessário: Ser limitado: encerrar quando uma expressão lógica não for mais verdadeira ou após uma quantidade fixa de execuções Variável de controle: responsáveis por determinar o sequenciamento de ações ao longo da execução do laço Existem três estruturas de repetição distintas: Estruturas de Repetição Introdução à Computação 3 de 18
Repetição com teste no início -while Consiste na repetição das instruções controladas por expressões relacionais e/ou lógicas feitas no início da estrutura Semelhante ao da estrutura if Deve existir um contador, que é uma variável que controla o laço de repetição É necessário que ela seja: Iniciada Comparada Atualizada S = 0; cont = 1; while (cont <= 100) S = S + cont; cont = cont + 1; printf("soma = %d", S); Estruturas de Repetição Introdução à Computação 4 de 18
Repetição com teste no fim do...while Consiste na repetição das instruções controladas por expressões relacionais e/ou lógicas feitas no final da estrutura Executa ao menos uma vez o conteúdo da estrutura do system("cls"); printf("entre com um numero entre 0 e 9"); scanf("%d", &n); while ((n < 0) (n >= 10)); printf("algarismo = %d", n); Estruturas de Repetição Introdução à Computação 5 de 18
Exemplo Inserir um número e exibir a sua tabuada Desse jeito, fica fácil... Vou passar no 3º!!! #include <stdio.h> #include <stdlib.h> int n, cont, P; int main() printf("insira um numero:"); scanf("%d", &n); cont = 1; while (cont <= 10) P = n * cont; printf("%d * %d = %d\n", n, cont, P); cont = cont + 1; system("pause"); Estruturas de Repetição Introdução à Computação 6 de 18
Observações Estruturas de repetição devem sempre ser finitas! Caso contrário, o programa deverá cair em um loop infinito Ou seja, executar o bloco de repetição infinitas vezes Pode ocorrer por causa da falta de alteração da variável de controle Ou pela má formação da expressão relacional ou lógica Estruturas de Repetição Introdução à Computação 7 de 18
Exercícios cios 1. Calcule o valor de S, utilizando estruturas de repetição, dado por: a) S = 1 1 + 2 4 + 3 9 + 4 16 +... + 10 100 b) S = 1 3 2 5 + 3 7 4 9 +... + n+ 1 ( 1) n 2n + 1 2. Dado um valor n inserido pelo usuário, calcular e exibir a) A soma de todos os múltiplos de 3 entre 0 e n; b) O produto de todos os múltiplos de 7 entre 0 e n; Estruturas de Repetição Introdução à Computação 8 de 18
Operadores Especiais Existem alguns operadores que simplificam na representação do cálculo, especialmente quando elas são utilizadas nestes tipos de estruturas Símbolo Operação Exemplo Equivalente += Adição n += 4 n = n + 4 -= Subtração k -= 3 k = k - 3 *= Multiplicação p *= 2 p = p * 2 /= Divisão a /= b a = a / b %= Resto bin %= 2 bin = bin % 2 ++ Incremento n++ n = n + 1 ++x x = x + 1 -- Decremento m-- m = m 1 --y y = y + 1 Estruturas de Repetição Introdução à Computação 9 de 18
Repetição com Controle for É utilizada quando o laço de repetição utiliza um contador Não é necessariamente uma operação lógica, porém é Iniciada Comparada Atualizada S = 0; for (cont = 1; cont <= 100; cont++) S = S + cont; printf("soma = %d", S); Inclui em apenas uma linha a inicialização, a comparação e a atualização do contador Estruturas de Repetição Introdução à Computação 10 de 18
Estruturas de Repetição e Seleção Estruturas de seleção podem ser inclusas em estruturas de repetição Exemplo: par ou ímpar! for (i = 0; i <= 30; i++) if ((i % 2) == 0) printf("%2d = par!\n", i); else printf("%2d = impar!\n", i); Estruturas de Repetição Introdução à Computação 11 de 18
Várias Estruturas de Repetição É possível também incluir uma estrutura de repetição dentro da outra (Pereira, 2010): for (i = 1; i <= 10; i++) for (j = 1; j <= i; j++) printf("*"); printf("\n"); Estruturas de Repetição Introdução à Computação 12 de 18
Comandos de Controle break: encerra todo o bloco de controle, ignorando as próximas iterações (Pereira, 2010) cont = 0; //variável inicializada na declaração srand(time(null)); // inicializa o gerador de números aleatórios num = rand() % 100;// rand() gera um número inteiro while (1) // loop infinito cont++; system("cls"); printf("adivinhe o numero que estou pensando... [0, 99]: "); scanf("%d", &chute); if (chute == num) break; printf("acertou em %d tentativas\n", cont); system("pause"); Estruturas de Repetição Introdução à Computação 13 de 18
Comandos de Controle continue: encerra todo o bloco de controle, continuando na próxima iteração (se ela for executada) (Pereira, 2010) printf("quantos valores deseja informar? "); scanf("%d", &n); for ( i = 0; i < n; i++ ) printf("%do. valor: ", i + 1); scanf("%f", &valor); if ( valor == 0.0 ) continue; printf("o inverso de %f é %f\n", valor, 1.0/valor); Estruturas de Repetição Introdução à Computação 14 de 18
Comandos de Controle exit(0): encerra o programa! printf("quantos valores deseja informar? "); scanf("%d", &n); for ( i = 0; i < n; i++ ) printf("%do. valor: ", i + 1); scanf("%f", &valor); if ( valor == 0.0 ) printf("divisão por zero!\n"); system("pause"); exit(0); printf("o inverso de %f é %f\n", valor, 1.0/valor); Estruturas de Repetição Introdução à Computação 15 de 18
Exercícios cios Escrever um programa em C para os seguintes problemas: 1. Calcule n! 2. Calcule o valor de S, dado que S = 1 1 + 3 2 + 5 3 + 7 4 +... + 99 50 Estruturas de Repetição Introdução à Computação 16 de 18
Exercícios cios 1. Calcule e exiba uma tabela de graus Celsius e graus Fahrenheit que varia entre -20 a 60 C, de 4 em 4 graus. 2. Utilize a estrutura for para exibir a tabuada de um número inteiro inserido pelo usuário. Estruturas de Repetição Introdução à Computação 17 de 18
Exercícios cios 3. Faça um programa onde devem ser inseridos pelo usuário a massa, a velocidade e a aceleração escalares e mostre uma tabela de valores contendo: O módulo da quantidade de movimento; O módulo da força; A energia cinética; As tabelas devem ter o valor da massa variando entre 0 até o valor inserido. Estruturas de Repetição Introdução à Computação 18 de 18