Introdução a Programação Estruturas de repetição (cont.) Prof. Luis Otavio Alvares Parte deste material é adaptado de lâminas das Profas. Patrícia Jaques, Mônica Py e Deise Saccol 1 REPETIR ... ENQUANTO Lógica de programação – Formato: repetir <ações> Enquanto <operação lógica> • Significado: As ações são executadas e depois a <operação lógica> é testada. Se for verdadeira, executar novamente <ações> e em seguida testar novamente a operação lógica. Este ciclo prossegue até que em algum teste a operação lógica resulte em falso. • As <ações> serão executadas pelo menos uma vez. 2 Exercício • Faça um algoritmo para mostrar os 30 primeiros números ímpares 3 Exemplo de solução 1. 2. 2.1 2.2 2.3 I=0 repetir I=I+1 impar=I*2-1 mostrar impar enquanto I<30 4 Exercício • Faça um algoritmo que fique num ciclo de leitura até que o usuário informe um número positivo e depois mostre a raiz quadrada do número positivo informado. 5 Exemplo de solução repetir mostrar “digite um número positivo” ler N enquanto N<= 0 mostrar “a raiz quadrada deste número e’: “ Mostrar sqrt(N) 6 Estruturas de repetição em C 7 Estrutura de repetição Comando do...while do { comando; } while (condição); do { comando1; comando2; comando3; } while (condição); Em pseudo-código: CONTADOR = 0 Repetir CONTADOR = CONTADOR + 1 exibir CONTADOR enquanto CONTADOR < 10 Exemplo: … cont=0; do { cont = cont + 1; printf("%d\n",cont); } while (cont < 10); 8 Comando do…while do {comando1;} while (condição); Não esquecer dos parênteses O comando1 será executado pelo menos uma vez. E continuará sendo executado enquanto a condição for verdadeira O programador deve cuidar para que a condição fique falsa em algum momento, do contrário o programa fica indefinidamente repetindo o comando1. 9 Exercício Faça um programa C que dado um número real não-negativo, informe sua raiz quadrada. /* raiz.c - exibe a raiz de um número não-negativo */ #include <stdio.h> #include <stdlib.h> #include <math.h> // para usar a função sqrt() main() { float N, R; do { printf("Digite um numero nao-negativo: "); scanf("%f", &N); } while( N<0 ); R = sqrt(N); printf("\nA raiz quadrada de %.1f e' %.2f \n", N, R); system("pause"); } 10 Lembre-se!!! Não se esqueça de alterar o valor da variável da condição dentro do laço de repetição do comando do…while Exemplo: saída (loop infinito): #include <stdio.h> #include <stdlib.h> main(){ int I=0; do { printf("I= %d\n",I); } while (I<5); system("pause"); } I= I= I= I= I= I= I= I= I= I= I= I= I= I= I= I= I= I= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 Exercícios 1- Faça um programa C que dado um número inteiro entre 1 e 10, exiba a sua tabuada (ficar lendo valores até que o número esteja no intervalo desejado). 2- Idem, mas depois de exibir uma tabuada, perguntar ao usuário se este deseja ver a tabuada de um outro número. (dica: usar função getch(), disponivel em conio.h, que le um caracter do teclado) 3- Um determinado material radioativo perde metade de sua massa a cada 50 segundos. Dada a massa inicial, em gramas, fazer um programa que determine o tempo necessário para que essa massa se torne menor do que 0,5 gramas. Escreva a massa inicial, a massa final e o tempo calculado em horas, minutos e segundos. 12 Exercícios (cont) 4- Simular o funcionamento de um caixa-eletrônico, que oferece as seguintes opções ao cliente: 1 – depósito, 2 – saque, 3 – saldo e 4 – sair. Suponha que o saldo inicial do cliente seja de R$ 1.000,00 e que o saldo pode ficar negativo. Exemplo de funcionamento: 1 – depósito 2 – saque 3 – saldo 4 – sair Opção: 1 Valor do depósito: 200.00 1 – depósito 2 – saque 3 – saldo 4 – sair Opção? 2 Valor do saque? 50.00 1 – depósito 2 – saque 3 – saldo 4 – sair Opção? 3 Saldo atual = R$ 1150.00 1 – depósito 2 – saque 3 – saldo 4 – sair Opção? 5 Opção inválida! 1 – depósito 2 – saque 3 – saldo 4 – sair Opção? 4 Fim das transações 13