A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aula 4 Comandos de Repeti çã o Prof. Filipe Mutz..

Apresentações semelhantes


Apresentação em tema: "Aula 4 Comandos de Repeti çã o Prof. Filipe Mutz.."— Transcrição da apresentação:

1 Aula 4 Comandos de Repeti çã o Prof. Filipe Mutz.

2 Instrução Condicional (seleção) Instrução... Instrução Repetitivo (loops) Repetitivo (loops)

3 Instrução Repetitivo (loops) Repetitivo (loops) Comandos de repetição permitem que um conjunto de instruções seja executado repetidas vezes, enquanto uma ou mais condições forem verdadeiras

4 Exemplos – Lavar a louça Enquanto existirem louças sujas, repita o procedimento abaixo: Pegue uma louça suja Passe detergente Enxágue Coloque no secador

5 Exemplos – Escrever Convites de Casamento Enquanto existirem convidados sem convites repita o procedimento abaixo: Escolha um convidado que ainda não possui convite Escreva o convite Coloque o convite no envelope Lacre o envelope Coloque o envelope na caixa Risque o nome do convidado

6 Exemplos Fazer uma lista de exercícios Enquanto existirem exercícios não feitos, selecione um exercício, resolva e marque como resolvido Ver as atualizações do Facebook Enquanto existirem atualizações não vistas, continue olhando Contar quanto dinheiro possui em um cofre Enquanto existirem moedas não contadas, pegue uma moeda, some com o valor total e retire da pilha Estudar uma matéria atrasada Enquanto existir uma parte da matéria que eu não sei, continue estudando

7 Algoritmos com Repetições início Enquanto : fim início instruções 1 instruções 2 Condições são Verdadeiras? sim instruções 3 não fim

8 Algoritmo VerificarSenha início int senha Escreva “Digite sua senha: ” Leia senha enquanto a senha está incorreta: Escreva “Senha inválida!” Escreva “Digite sua senha: “ leia senha Escreva “Conectado!” fim inicio Int senha Escreva “Dig...” Leia senha Senha incorreta? Escreva “Sen..” Leia senha Escreva “Dig...” Escreva “Con...” fim sim não

9 ... while ( ) { instruções }... #include int main (void) { int senha; printf("digite sua senha: "); scanf("%d", &senha); while (senha != 1024) { printf("senha incorreta!\n"); printf("digite sua senha: "); scanf("%d", &senha); } printf("Conectado!\n"); return 0; } Repetições em C Defini que a senha correta seria 1024 apenas por simplicidade Cada repetição é chamada de uma iteração.

10 Identificação de Repetições Quando estudamos condicionais, vimos que deveríamos buscar na descrição do problema, instruções que fossem executadas apenas em certas condições. Mostrar um número se ele fosse par. Mostrar a mensagem “pode dirigir” apenas quando a pessoa tiver mais de 18 anos e, mostrar “não pode dirigir” caso contrário. Verificar se a pessoa pode se aposentar e mostrar a mensagem “Pode descansar”, em caso afirmativo.

11 Identificação de Repetições Repetições são mais sutis e é necessário um atento para identificar instruções que são realizadas várias vezes. Busque as estruturas: “enquanto faça __ ”, “até que seja satisfeita”, “faça __ vezes”. Mas cuidado! Em certas situações eles não estarão presentes.

12 Identificação de Repetições Mostre seu nome na tela 10 vezes. Peça que o usuário digite um número até que ele acerte qual é o número mágico. Mostre na tela os 100 primeiros números pares, um por linha. Mostre na tela os números entre 500 e 700 que são múltiplos de 6 e 7, simultaneamente.

13 Assim fica mais fácil ver a repetição!

14 Como resolver problemas de Repetição 1. Busque instruções que são executadas várias vezes. 2. Identifique em que condições acontece a repetição. 3. Identifique o que muda a cada iteração. 4. Encontre uma forma de calcular os valores que mudam! 5. Identifique qual é o resultado esperado ao final da repetição.* 6. Atualize a cada iteração o resultado.* * Nem toda repetição possui um resultado final esperado.

15 Exemplo Faça um programa que mostre na tela 100 números a partir do 1. Algoritmo Números Início Escreva “1” Escreva “2” Escreva “3”... Escreva “100” Fim O que se repete? Se repete em que condições? A cada repetição, o que muda? Como calcular o que muda a cada repetição? Existe um resultado final esperado?

16 Exemplo Faça um programa que mostre na tela 100 números a partir do 1. Algoritmo Números Início Escreva “1” Escreva “2” Escreva “3”... Escreva “100” Fim O que se repete? Escreva Se repete em que condições? Enquanto não mostramos os 100 números. A cada repetição, o que muda? O número escrito Como calcular o que muda a cada repetição? Anterior + 1 Existe um resultado final esperado? não

17 Exemplo Faça um programa que mostre na tela 100 números a partir do 1. Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim A maioria das repetições possui um contador para contar quantas repetições já fizemos..

18 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim _ valor_inicial1

19 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 _

20 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados0 _

21 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados0 numero_atual1 _

22 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados0 numero_atual1 _

23 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados0 numero_atual1 1_1_

24 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados0 numero_atual2 1_1_

25 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados1 numero_atual2 1_1_

26 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados1 numero_atual2 1_1_

27 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados1 numero_atual2 12_12_

28 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados1 numero_atual3 12_12_

29 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados2 numero_atual3 12_12_

30 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados2 numero_atual3 12_12_

31 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados2 numero_atual3 123_123_

32 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados2 numero_atual4 123_123_

33 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados3 numero_atual4 123_123_

34 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados3 numero_atual4 123_123_

35 Algumas repetições depois...

36 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados98 numero_atual99 1 2 3... 97 98 _

37 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados98 numero_atual99 1 2 3... 97 98 99 _

38 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados98 numero_atual100 1 2 3... 97 98 99 _

39 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados99 numero_atual100 1 2 3... 97 98 99 _

40 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados99 numero_atual100 1 2 3... 97 98 99 _

41 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados99 numero_atual100 1 2 3... 97 98 99 100 _

42 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados99 numero_atual101 1 2 3... 97 98 99 100 _

43 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados100 numero_atual101 1 2 3... 97 98 99 100 _

44 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados100 numero_atual101 1 2 3... 97 98 99 100 _

45 Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim valor_inicial1 nums_para_contar100 nums_contados100 numero_atual101 1 2 3... 97 98 99 100 _

46 Exemplo Faça um programa que mostre na tela os números inteiros entre 1 a 100 (limites inclusos). Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 fim Obs: note que a variável nums_contados e numero_atual são praticamente iguais! Será que não podemos usar isso para melhorar nosso algoritmo?

47 Exemplo Faça um programa que mostre na tela os números inteiros entre 1 a 100 (limites inclusos). Algoritmos Números início int valor_inicial = 1 int valor_final = 100 int numero_atual = valor_inicial Enquanto numero_atual <= valor_final: Escreva numero_atual numero_atual = numero_atual + 1 fim

48 #include int main (void) { int na; int nf; nf = 100; na = 1; while (na <= nf) { printf("%d\n", na); na = na + 1; } return 0; } Algoritmo Numeros Início int na int nf nf = 100 na = 1 while na <= nf: Escreva na na = na + 1 Fim

49 #include int main (void) { int na; int nf; printf("numero de itens a serem escritos: "); scanf("%d", &nf); na = 1; while (na <= nf) { printf("%d\n", na); na = na + 1; } return 0; } Algoritmo Numeros Início int na int nf escreva “numero de itens a serem escritos: ” leia nf na = 1 while na <= nf: Escreva na na = na + 1 Fim

50 OBS: Equivale a mostrar 1267 números a partir de -300! E se quiséssemos mostrar os números entre -300 e 967?

51 Exemplo Algoritmos Números início int valor_inicial = -300 int valor_final = 967 int numero_atual = valor_inicial Enquanto numero_atual <= valor_final: Escreva numero_atual numero_atual = numero_atual + 1 fim

52 E se quiséssemos mostrar os números entre 100 e 0 (de trás para frente)?

53 Exemplo Algoritmos Números início int valor_inicial = 100 int valor_final = 0 int numero_atual = valor_inicial Enquanto numero_atual > valor_final: Escreva numero_atual numero_atual = numero_atual - 1 fim

54 E se quiséssemos mostrar os 20 primeiros números pares?

55 Exemplo Algoritmos Números início int valor_inicial = 0 int nums_para_contar = 20 int nums_contados = 0 int numero_atual = valor_inicial Enquanto nums_contados < nums_para_contar: Escreva numero_atual numero_atual = numero_atual + 2 nums_contados = nums_contados + 1 fim

56 Exemplo Algoritmos Números início int nums_para_contar = 20 int nums_contados = 0 Enquanto nums_contados < nums_para_contar: Escreva nums_contados * 2 nums_contados = nums_contados + 1 fim OU

57 Exercícios Faça um programa em C que mostre seu nome na tela 13 vezes. Exercício para casa: Traduza as variações de algoritmos que fizemos p/ C.

58 Loops Definidos São loops em que sabemos a priori quantas vezes realizaremos uma repetição. Ex: Mostre seu nome na tela 10 vezes, leia as informações de 20 pessoas, calcule a soma dos 50 primeiros termos de uma série,...

59 Contadores int contador; contador = [inicio]; while (contador < [final]) { contador = contador + 1; } int contador; contador = 0; while (contador < 10) { printf(“ola\n”); contador = contador + 1; }

60 Loops Indefinidos São loops em que NÃO sabemos a priori quantas vezes realizaremos uma repetição. Exemplo: Peça ao usuário que digite um número e mostre na tela o valor do número ao cubo. Repita esse processo enquanto o usuário não digitar 0.

61 Exercícios Para casa: Faça um algoritmo em C mostre na tela as 20 primeiras potências de 2 (2, 4, 8,...) Faça um algoritmo em C mostre na tela os 20 primeiros números da sequência (1 / 1), (-1 / 2), (1 / 3), (-1 / 4),... Faça um algoritmo em C mostre na tela os 30 primeiros números da sequência de Fibonacci

62 Operadores de incremento e decremento int contador; contador = [inicio]; while (contador < [final]) { contador += 1; } contador = contador + 1

63 Operadores de incremento e decremento int contador; contador = [inicio]; while (contador < [final]) { contador += 2; } contador = contador + 2

64 Operadores de incremento e decremento int contador; contador = [inicio]; while (contador < [final]) { contador++; } contador = contador + 1

65 Operadores de incremento e decremento int contador; contador = [inicio]; while (contador < [final]) { contador -= 1; } contador = contador - 1

66 Operadores de incremento e decremento int contador; contador = [inicio]; while (contador < [final]) { contador -= 2; } contador = contador - 2

67 Operadores de incremento e decremento int contador; contador = [inicio]; while (contador < [final]) { contador--; } contador = contador - 1

68 Outros Operadores x /= 2; y *= x; A += (x + pow(2, x));

69 Vamos ver mais alguns exemplos

70 Exemplo: Leia 5 números e mostre na tela qual é o menor deles #include int main (void) { float numero; float menor; printf("digite um numero: "); scanf("%f", &numero); menor = numero; printf("digite um numero: "); scanf("%f", &numero); if (numero < menor) menor = numero; printf("digite um numero: "); scanf("%f", &numero); if (numero < menor) menor = numero; printf("digite um numero: "); scanf("%f", &numero); if (numero < menor) menor = numero; printf("digite um numero: "); scanf("%f", &numero); if (numero < menor) menor = numero; printf("menor: %f\n", menor); return 0; } Resultado esperado

71 Exemplo: Leia 5 números e mostre na tela qual é o menor deles #include int main (void) { int contador; float numero; float menor; printf("digite um numero: "); scanf("%f", &numero); menor = numero; contador = 0; while (contador < 4) { printf("digite um numero: "); scanf("%f", &numero); if (numero < menor) menor = numero; contador = contador + 1; } printf("menor: %f\n", menor); return 0; }

72 Exemplo: Leia 5 números e mostre na tela qual é o menor deles #include int main (void) { int contador; float numero; float menor; menor = 9999999999; contador = 0; while (contador < 5) { printf("digite um numero: "); scanf("%f", &numero); if (numero < menor) menor = numero; contador = contador + 1; } printf("menor: %f\n", menor); return 0; } truque

73 Exemplo: Leia 5 números e mostre na tela qual é o menor deles #include int main (void) { int contador; float numero; float menor; menor = 9999999999; contador = 0; while (contador < 5) { printf("digite um numero: "); scanf("%f", &numero); if (numero < menor) menor = numero; contador = contador + 1; } printf("menor: %f\n", menor); return 0; } Nas sequências, tínhamos um resultado por iteração. Neste caso, atualizamos um resultado único em todas as iterações.

74 E se quiséssemos o maior?

75 Exemplo: Leia 5 números e mostre na tela qual é o maior deles #include int main (void) { int contador; float numero; float maior; maior = -9999999999; contador = 0; while (contador < 5) { printf("digite um numero: "); scanf("%f", &numero); if (numero > maior) maior = numero; contador = contador + 1; } printf(“maior: %f\n", maior); return 0; }

76 Faça um programa que leia 4 números e mostre na tela a soma deles #include int main (void) { float numero; float soma; soma = 0; printf("digite um numero: "); scanf("%f", &numero); soma += numero; printf("digite um numero: "); scanf("%f", &numero); soma += numero; printf("digite um numero: "); scanf("%f", &numero); soma += numero; printf("digite um numero: "); scanf("%f", &numero); soma += numero; printf("soma: %f\n", soma); return 0; }

77 Faça um programa que leia 4 números e mostre na tela a soma deles #include int main (void) { float numero; float soma; int contador; soma = 0; contador = 0; while (contador < 4) { printf("digite um numero: "); scanf("%f", &numero); soma += numero; contador ++; } printf("soma: %f\n", soma); return 0; }

78 Exercício: Implemente um programa em C que calcule o somatório abaixo: Em seguida, modifique o programa para que o usuário possa digitar o limite superior do somatório (por exemplo, 200 ao invés de 50 no caso acima).

79 Exercício: Faça um programa em C que calcule o somatório da série abaixo. Em seguida, execute o programa para valores crescentes de n e verifique se o somatório converge para algum valor. O que se repete? O que muda a cada repetição? Como calcular os elementos da série? OBS: Use variáveis double para uma maior precisão. Lembre-se de usar %lf para ler e escrever doubles.

80 Para Casa: Faça um programa em C que calcule o somatório da série abaixo. Em seguida, execute o programa para valores crescentes de n e verifique se o somatório converge para algum valor. OBS: Use variáveis double para uma maior precisão. Lembre-se de usar %lf para ler e escrever doubles.

81 Exemplo: leia um número inteiro n. Em seguida, leia n números e mostre na tela a média dos números digitados.

82 Redução (Reduction) Conjunto de problemas em que a partir de um conjunto de valores, obtemos um valor único. Este valor é obtido pela aplicação de um determinado operador aos elementos do conjunto. Exemplos: maior, menor, somatório, média, contagem, produtório, etc. Definição: Condição inicial, operador de transição e pós operação.

83 Para Casa: Faça um algoritmo que leia um número e calcule seu fatorial.

84 Loops aninhados Faça um algoritmo que mostre na tela a tabuada de 1 a 10.

85 Loops aninhados Peça que o usuário digite um número repetidamente, até que ele digite 0. Para cada número digitado, mostre uma mensagem na tela tantas vezes quanto o número (ex.: se o usuário digitar 2, o programa deve mostrar a mensagem 2 vezes na tela).

86 Loops infinitos e Loops vazios Loops infinitos são aqueles em que a condição do while é sempre verdadeira. Loops vazios são aqueles em que a condição do while é sempre falsa.

87 Repetições com Condicionais Leia as gravidades de 5 multas recebidas por um motorista. A gravidade de uma multa é representada por um caractere e pode ser ‘l’ (leve – 3 pontos), ‘m’ (média – 4 pontos), ‘g’ (grave – 5 pontos), e ‘G’ (gravíssima – 7 pontos). Ao final, mostre na tela a pontuação total perdida pelo motorista e se ela for maior que 21 pontos, mostre na tela uma mensagem dizendo que a carteira foi suspensa. ATENÇÃO: ao ler caracteres em loops, use scanf(“\n%c”, &var); para evitar que o “\n” seja lido como um caractere na próxima iteração!!!!

88 Exercício para Casa Modifique o exemplo anterior para que a pontuação do motorista comece com 21 pontos e sejam lidas multas enquanto a pontuação for maior que zero.

89 Mais repetições com condicionais Uma empresa deseja fazer uma pesquisa de satisfação com seus clientes. Leia de 10 pessoas, o gênero (‘f’ p/ feminino e ‘m’ para masculino) e se gostaram ou não do produto de interesse (caractere ‘s’ p/ sim e ‘n’ para não), e mostre na tela a porcentagem de entrevistados de cada gênero e a porcentagem de pessoas de cada gênero que se consideravam satisfeitas com o produto. ATENÇÃO: ao ler caracteres em loops, use scanf(“\n%c”, &var); para evitar que o “\n” seja lido como um caractere na próxima iteração!!!!

90 Outros comandos de repetição: FOR Usado em loops definidos (quando o número de repetições é conhecido a priori). int i; for (i = [valor inicial]; i < [valor final]; i += [passo]) { } int i; i = [valor inicial]; while (i < [valor final]) { ; i += [passo]; }

91 Exemplo: FOR #include int main (void) { int i; for (i = 0; i < 10; i += 1) { printf("i: %d\n", i); } return 0; }

92 Exemplo: FOR #include int main (void) { int i; for (i = 0; i < 10; i++) { printf("i: %d\n", i); } return 0; }

93 Exemplo: FOR #include int main (void) { int i; for (i = 0; i < 10; i++) printf("i: %d\n", i); return 0; } Assim como no if, podemos omitir se o bloco só tiver 1 instrução.

94 Exercício: escreva o loop while que corresponde aos for’s abaixo (assuma que as vars. foram declaradas previamente) for (i = 100; i < 300; i++) { } for (i = 300; i > 100; i--) { } for (contador = 0; contador < 20; contador += 2) { } for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) printf(“%d x %d = %d\n”, i, j, i * j);

95 Exemplo: Faça um algoritmo usando for que leia um número e mostre na tela seus divisores.

96 Exemplo: Modifique o programa anterior para ler um número e mostrar na tela se ele é primo ou não.

97 Exemplo: Modifique o programa anterior para mostrar todos os números primos em um intervalo.

98 Outros comandos de repetição: DO... WHILE #include int main (void) { char opcao; do { printf("Escolha sua opcao: "); scanf("\n%c", &opcao); // } while (opcao != 'q'); return 0; } ATENÇÃO: ao ler caracteres em loops, use scanf(“\n%c”, &var); para evitar que o “\n” seja lido como um caractere na próxima iteração!!!! Útil em situações do tipo: Leia até encontrar o número 0. Leia até encontrar um caractere ‘q’

99 Comandos Adicionais Break: interrompe imediatamente o loop. Continue: volta imediatamente a avaliar a condição de repetição e, se ela for verdadeira, continua a repetição. Ambos podem ser usados em todos os comandos vistos: while, for e do... while.

100 #include int main (void) { char opcao; do { printf("Escolha sua opcao: "); scanf("\n%c", &opcao); if (opcao == 'a' || opcao == 'b') break; else if (opcao == ‘c’ || opcao == ‘d’ || opcao == ‘q’) continue; printf(“trabalhando...\n”); } while (opcao != 'q'); printf(“fim\n”); return 0; } O que vai aparecer na tela se o usuário escolher as opções: d, e, a? E se ele escolher ‘f’, ‘g’, ‘q’?

101 Faça um programa que leia uma opção repetidamente e execute as ações abaixo de acordo com a opção escolhida: Opção ‘a’: ler um número e mostrar o quadrado do número. Opção ‘b’: ler um número e mostrar a raiz do número. Opção ‘q’: terminar o programa. Qualquer outra opção: mostrar na tela a mensagem “opção inválida”.

102 Ler uma opção Ler um número Mostre na tela o quadrado do número Mostre na tela: “Opção Inválida” Opção é q? Opção é a ou b? Outra opção. Mostre na tela a raiz do número Opção é a?Opção é b?

103 #include int main (void) { int numero; char opcao; while (1 == 1) { printf("digite 'a' para mostrar o quadrado, 'b' a raíz, e 'q' para terminar: "); scanf("\n%c", &opcao); if (opcao == 'q') break; else if (opcao == 'a' || opcao == 'b') { printf("digite um numero: "); scanf("%d", &numero);...

104 if (opcao == 'a') printf("O numero ao quadrado eh: %f\n", pow(numero, 2)); else printf("A raiz do numero eh: %f\n", sqrt(numero)); } else printf("Opcao invalida!\n"); } return (0); }

105 Revisão: Como resolver problemas de Repetição 1. Busque instruções que são executadas várias vezes. 2. Identifique em que condições acontece a repetição. 3. Identifique o que muda a cada iteração. 4. Encontre uma forma de calcular os valores que mudam! 5. Identifique qual é o resultado esperado ao final da repetição.* 6. Atualize a cada iteração o resultado.* * Nem toda repetição possui um resultado final esperado.

106 Exercícios: Faça um algoritmo que peça ao usuário para digitar um número e mostre seu fatorial na tela. Repita este procedimento até que o usuário digite 0 ou um valor negativo.

107 Exercícios: Faça um algoritmo que aproxime a área abaixo da curva de uma função usando a soma da área de retângulos. ab Entrada do algoritmo: Limite inferior: a Limite superior: b Número de divisões: n A função deve ser escrita no próprio programa. Dica: para calcular a altura dos retângulos, calcule o valor da função nos pontos esquerdo e direito do retângulo e tire a média. dx


Carregar ppt "Aula 4 Comandos de Repeti çã o Prof. Filipe Mutz.."

Apresentações semelhantes


Anúncios Google