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

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

Linguagem C LPG-I – Estruturas de Repetição Prof. Flavio Marcello

Apresentações semelhantes


Apresentação em tema: "Linguagem C LPG-I – Estruturas de Repetição Prof. Flavio Marcello"— Transcrição da apresentação:

1 Linguagem C LPG-I – Estruturas de Repetição Prof. Flavio Marcello

2 Linguagem C n ESTRUTURA DE REPETIÇÃO –Repetição com Teste no Início –Repetição com Teste no Final –Repetição Contada

3 Estrutura de Repetição n Permite que uma seqüência de comandos seja executada repetidamente até que uma determinada condição de interrupção seja satisfeita. n São de 3 Tipos: n while n do... while n for

4 Estrutura com Teste no Início condição.V..F. Fluxograma while

5 n A variável de controle é iniciada antes do Enquanto; n A variável de controle é incrementada dentro do Enquanto. n Enquanto o resultado da condição é verdadeiro (!=0, 1) executa repetidamente um conjunto de instruções. Sintaxe: Estrutura com Teste no Início (while) while ( ) { ;... ; } n Se no primeiro teste da condição resultado for FALSO, os comandos dentro do loop NÃO serão executados NEM uma vez. Loop

6 while Exemplo 1: Encontrar o menor dentre um conjunto de 05 valores digitados.

7 // ALGORITMO EncontraMenor_em5 #include int qtdenumlidos, num, menor; main () { printf (Algoritmo Encontrar Menor Valor num conjunto de 05 valores); prinf (Digite 1º Valor: );scanf (%i, &num); menor = num;qtdenumlidos = 1; while (qtdenumlidos < 5) { printf (Digite novo Valor: ); scanf (%i, &num); if (num < menor) menor = num; qtdenumlidos = qtdenumlidos + 1; } printf (Menor Valor Encontrado: %i, menor); } A variável de controle deve ter um valor conhecido. Então ela foi inicializada antes. A variável de controle deve ter seu valor modificado dentro do laço. Neste caso a variável foi incrementa em 1

8 Exemplo 3: Desenvolver um algoritmo para ler um conjunto de valores correspondentes aos pontos que alunos obtiveram em um teste. Quando o valor fornecido for um número negativo, isto é um sinal que não existem mais pontos para serem lidos. n Contar e escrever quantos alunos fizeram o teste. n Contar e escrever quantos alunos tiveram nota baixa (PONTOS < 50) n Contar e escrever quantos alunos tiveram nota alta (100 PONTOS 150) while São necessários 3 contadores

9 #include // Programa Estatistica_de_Testes int NUM,ALTAS,BAIXAS,PONTOS; void main () { NUM = 0;ALTAS = 0;BAIXAS = 0; printf ("FORNECA OS PONTOS OBTIDOS: "); scanf ("%i", &PONTOS); while (PONTOS > 0) { if ((PONTOS >= 100) && (PONTOS <= 150)) ALTAS = ALTAS+1; if (PONTOS < 50) BAIXAS = BAIXAS+1; NUM = NUM + 1; printf ("PONTOS: "); scanf ("%i", &PONTOS); } printf ("NUMERO DE NOTAS: %i", NUM); printf ("NUMERO DE NOTAS ALTAS: %i", ALTAS); printf ("NUMERO DE NOTAS BAIXAS:%i", BAIXAS); getch ();} Contadores Inicializados com ZERO

10 Exemplo 3: Desenvolver algorítmo para ler um conjunto de valores correspondentes aos pontos que alunos obtiveram em um teste. n Quando o valor fornecido for um número negativo, isto é um sinal de que não existem mais pontos para serem lidos. n Contar quantos alunos fizeram o teste; n Escrever o media de pontos de alunos. while

11 // Algoritmo Contagem_Pontos_Alunos #include int PONTOS_Teste; float SOMA_Ptos, NUM_Alunos; void main () { printf ("Algoritmo Contagem de Pontos dos Alunos"); NUM_Alunos = 0;SOMA_Ptos = 0; printf ("PONTOS: ");scanf ("%i", &PONTOS_Teste); while (PONTOS_Teste > 0) { NUM_Alunos = NUM_Alunos + 1; SOMA_Ptos = SOMA_Ptos + PONTOS_Teste; printf ("PONTOS: ");scanf ("%i", &PONTOS_Teste); } printf ("TOTAL DE ALUNOS: %i ", NUM_Alunos); if (NUM_Alunos > 0) printf ("Media de Pontos: %f ", SOMA_Ptos / NUM_Alunos); getch(); } NUM_Alunos NUM_Alunos dever ser zerado antes do Enquanto e então incrementado em 1 dentro do Laço de repetição NUM_Alunos NUM_Alunos dever ser zerado antes do Enquanto e então incrementado em 1 dentro do Laço de repetição

12 Estrutura com Teste no Final condição.F..V. Fluxograma do … while... C1 C2 Cn

13 do { ;... ; } while ( ); Estrutura c/ Teste no Final (do … while) n Semelhante ao while, porém, a condição é testada ao final do laço, então os comandos dentro do laço são executados pelo menos 1 vez. n Enquanto que o resultado da condição for verdadeiro (!=0, 1) executa-se um conjunto de instruções. n Sintaxe:

14 Exemplo 1: Desenvolver algoritmo que permita a leitura de numeros positivos e acumule seu somatório, imprimindo o resultado no final. do … while

15 #include //ALGORITMO SomaPositivos int numero, soma; void main () { soma = 0; printf ("Programa para somar N valores positivos"); do { printf ("Digite um valor: "); scanf ("%i", &numero); if (numero > 0) soma = soma + numero; } while (numero > 0); printf ("Soma dos Valores: %i", soma); getch (); }

16 Exemplo 2: Desenvolver um algoritmo para escrever os 05 primeiros múltiplos de 13. do … while

17 //Programa Azarao #include int num, cont, vezes; main () { num = 13; cont = 0; vezes = 5; do { printf ("%i ", num); num = num +13; cont = cont +1; } while (cont < vezes); } numcontvezescont < vezes ???? ? 2615.V V V V F Monitor VariáveisCondição Loop

18 Estrutura de Repetição Contada.V..F. Fluxograma for Comando Início, Cond., Incr.

19 n A variável de controle é iniciada da estrutura; n A variável de controle é incrementada dentro da estrutura. n Para o resultado da condição verdadeiro (!=0, 1) executa-se um conjunto de instruções. n Então, neste tipo de estrutura manipulam-se automaticamente todos os detalhes da repetição controlada por contador. Sintaxe: Estrutura de Repetição Contada (for) for ( ; ; ) { ;... ; }

20 Exemplo 1: Desenvolver algoritmo que permita imprimir os números de 1 a 5. for

21 #include main () { int cont; for (cont = 1; cont <= 5; cont = cont +1) { printf (%i\n, cont); } contcont <= 5 ??... 1? 1.V F Monitor Condição Loop Passo1 - Inicializa a variável de controle. Passo2 - Testa a condição, de for verdadeira executa o conjunto de instruções, caso contrário encerra loop. Passo3 - Incrementa variável de controle; retorna ao Passo2.

22 Comparativo: (for) X (while) forwhile int i, N, Valor,Soma=0; scanf ("%i",&N); for(i= 0; i

23 Qual Estrutura Usar ??? forSabe-se o número de repetições whileNão sabe-se o número exato de repetições do... whileNão sabe-se o número de repetições, executando pelo menos uma vez. n Toda estrutura while pode ser convertida para do...while e vice-e-versa; n Toda estrutura for pode ser convertida em while, mas nem toda estrutura while pode ser convertida em for.

24 Exercício 1 Fazer um algoritmo para ler 2 valores e executar uma das seguintes operações matemáticas, de acordo com a escolha do usuário: -1 – soma, -2 – subtração, -3 – multiplicação -4 – divisão.

25 Exercício 2 Em uma corrida de automóveis com N voltas, foram anotados os tempos, em ordem, de um piloto a cada volta. Fazer um programa que dê o melhor e o pior tempo e em que volta aconteceram.

26 Exercícios Propostos 01. Faça um Algoritmo para calcular o fatorial de 5, faça outro algoritmo para calcular o fatorial de um valor digitado pelo usuário. 02. Faça o algoritmo para calcular o n-ésimo termos da série de Fibonacci. A série de Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, 34, Quanto vale k no fim do seguinte procedimento (exemplo10)? k = 0; para (i 0; i <=2; i i+1) { para (j i; j<=2; j j+1) { k k + 1; } 04. Escreva um algoritmo que lê 5 valores para A, um de cada vez, escrevendo, ao final, quantos destes valores são negativos. 05. Dado um conjunto de n notas de alunos, contar o número de alunos que foram aprovados. Considera-se aprovado o aluno que obteve nota igual ou maior que Fornecer a média aritmética simples das n notas de um aluno, indicando também sua situação final (média>=9 excelente, média>=7 bom, média>=5 regular, média<5 insuficiente). K = 6

27 Desafio A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o salário e número de filhos. A prefeitura deseja saber: n Média do salário da população; n Média do número de filhos; n Maior salário; n Percentual de pessoas com salário até R$ 100,00. n O final da leitura de dados se dará com a entrada de um salário negativo.

28 FIM

29 Exercício 1 Fazer um algoritmo para ler 2 valores e executar uma das seguintes operações matemáticas, de acordo com a escolha do usuário: -1 – soma, -2 – subtração, -3 – multiplicação -4 – divisão.

30 // Algoritmo Múltipla_Escolha Versao 01 #include main () { float A, B, X; int Op; Op = 0; printf ("Programa Calculadora (Operacoes entre 2 valores) "); printf ("\nEntre com o valor de A: "); scanf ("%f", &A); printf ("\nEntre com o valor de B: "); scanf("%f", &B); do { printf ("\n1. Soma"); printf ("\n2. Subtração"); printf ("\n3. Multiplicação"); printf ("\n4. Divisão"); printf ("\nOpção (1 a 4): "); scanf ("%i", &Op); } while ((Op 4)); if (Op == 1) { X = A + B; printf ("X = %.2f", X); } else if (Op == 2) { X = A - B; printf ("X = %.2f", X); } else if (Op == 3) { X = A * B; printf ("X = %.2f", X); } else if ( B != 0) { X = A / B; printf ("X = %.2f", X); }

31 // Algoritmo Múltipla_Escolha Versao 02 #include main () { float A, B, X; int Op; Op = 0; printf ("Programa Calculadora (Operacoes entre 2 valores) "); printf ("\nEntre com o valor de A: "); scanf ("%f", &A); printf ("\nEntre com o valor de B: "); scanf("%f", &B); do { printf ("\n1. Soma"); printf ("\n2. Subtração"); printf ("\n3. Multiplicação"); printf ("\n4. Divisão"); printf ("\nOpção (1 a 4): "); scanf ("%i", &Op); } while ((Op 4)); switch (Op){ case 1: { X = A + B; printf ("\nX = %.2f", X); break; } case 2: { X = A - B; printf ("\nX = %.2f", X); break; } case 3: { X = A * B; printf ("\nX = %.2f", X); break; } case 4: { if ( B != 0) { X = A * B; printf ("\nX = %.2f", X); break; }

32 Exercício 2 Em uma corrida de automóveis com N voltas, foram anotados os tempos, em ordem, de um piloto a cada volta. Fazer um programa que dê o melhor e o pior tempo e em que volta aconteceram.

33 #include //ALGORITMO CorridaAutomovel; int num_voltas, conta_volta, melhor_volta, pior_volta; float tempo_volta, melhor_tempo, pior_tempo; main () { printf ("Entre com o numero total de voltas da corrida: "); scanf ("%i", &num_voltas); printf ("Entre com 1o tempo: "); scanf ("%f", &tempo_volta); conta_volta = 1; melhor_volta = 1;melhor_tempo = tempo_volta; pior_volta = 1;pior_tempo = tempo_volta; while (conta_volta < num_voltas) { conta_volta = conta_volta +1; printf (\nEntre com %io tempo :, conta_volta +1); scanf ("%f", &tempo_volta); if (tempo_volta > pior_tempo) { pior_tempo = tempo_volta; pior_volta = conta_volta; } if (tempo_volta < melhor_tempo) { melhor_tempo = tempo_volta; melhor_volta = conta_volta; } printf (\nMelhor volta = %i com tempo = %.4f", melhor_volta, melhor_tempo); printf (\nPior volta = %i com tempo = %.4f", pior_volta, pior_tempo); }

34 #include //ALGORITMO CorridaAutomovel; int num_voltas, conta_volta, melhor_volta, pior_volta; float tempo_volta, melhor_tempo, pior_tempo; main () { printf ("Entre com o numero total de voltas da corrida: "); scanf ("%i", &num_voltas); printf ("Entre com 1o tempo: "); scanf ("%f", &tempo_volta); melhor_volta = 1;melhor_tempo = tempo_volta; pior_volta = 1;pior_tempo = tempo_volta; for ( conta_volta 2; conta_volta <= num_voltas; conta_volta = conta_volta +1 ) { printf (\nEntre com %io tempo:, conta_volta); scaf ("%f", &tempo_volta); if (tempo_volta > pior_tempo) { pior_tempo = tempo_volta; pior_volta = conta_volta; } if (tempo_volta < melhor_tempo) { melhor_tempo = tempo_volta; melhor_volta = conta_volta; } printf (\nMelhor volta = %i com tempo = %.4f", melhor_volta, melhor_tempo); printf (\nPior volta = %i com tempo = %.4f", pior_volta, pior_tempo); }

35 Exercícios Propostos 01. Faça um Algoritmo para calcular o fatorial de 5, faça outro algoritmo para calcular o fatorial de um valor digitado pelo usuário. 02. Faça o algoritmo para calcular o n-ésimo termos da série de Fibonacci. A série de Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, 34, Quanto vale k no fim do seguinte procedimento (exemplo10)? k = 0; for (i = 0; i <=2; i = i+1) { for (j = i; j<=2; j = j+1) { k = k + 1; } 04. Escreva um algoritmo que lê 5 valores para A, um de cada vez, escrevendo, ao final, quantos destes valores são negativos. 05. Dado um conjunto de n notas de alunos, contar o número de alunos que foram aprovados. Considera-se aprovado o aluno que obteve nota igual ou maior que Fornecer a média aritmética simples das n notas de um aluno, indicando também sua situação final (média>=9 excelente, média>=7 bom, média>=5 regular, média<5 insuficiente). K = 6

36 Desafio A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o salário e número de filhos. A prefeitura deseja saber: n Média do salário da população; n Média do número de filhos; n Maior salário; n Percentual de pessoas com salário até R$ 100,00. n O final da leitura de dados se dará com a entrada de um salário negativo.

37 //ALGORITMO Fatorial #include int fat, n, i; main () { n = 5; fat = 1; for (i = 2; i <= n; i++ ) fat = fat * i; printf ("Fatorial de %i: %i", n, fat); getch(); } Exercícios Proposto 01a

38 //ALGORITMO Fatorial #include int fat, n, i; main () { printf ("Digite o numero para calcular Fatorial: "); scanf("%i", &n); fat = 1; for (i = 2; i <= n; i++ ) fat = fat * i; printf ("\nFatorial de %i: %i", n, fat); getch(); } Exercícios Proposto 01b

40 //Algoritmo Quantos_Negativos #include main () { float A; int i, N = 0; for (i = 0; i < 5; i++) { printf("Digite o %i numero: ",i+1); scanf("%f", &A); if (A < 0) N = N + 1; } printf ("Número de valores negativos = %i", N); getch(); } Exercícios Proposto 04

41 Desafio #include main () { float sal, media_sal, media_filhos, maior_sal, soma_sal100, perc_sal100, soma_sal; int filhos, soma_filhos, sal100, contador; sal = 0; soma_sal = 0; maior_sal = 0; soma_filhos = 0; contador = 0; sal100 = 0; while (sal >= 0) { printf ("Salario da familia R$ "); scanf ("%f", &sal); if ( sal >= 0){ printf ("Nro de filhos: "); scanf ("%i", &filhos); soma_sal = soma_sal + sal; soma_filhos = soma_filhos + filhos; contador = contador + 1; if (sal > maior_sal) { maior_sal = sal; }...

42 if (sal <= 100) { sal100 = sal ; // soma_sal100 = soma_sal100 + sal; } if (contador > 0) { media_sal = (float) soma_sal / contador; media_filhos = (float) soma_filhos / contador; perc_sal100 = (float)(sal100 * 100) / contador; } else media_sal=media_filhos=perc_sal100=0; printf ( "\nMedia do salario da populacao R$ %.2f", media_sal); printf ( "\nMedia do numero de filhos = %.2f", media_filhos); printf ( "\nMaior Salario R$ %.2f", maior_sal); printf ( "\nPerc. de pessoas com salario ate' R$ 100,00 = %.2f", perc_sal100); getch(); }


Carregar ppt "Linguagem C LPG-I – Estruturas de Repetição Prof. Flavio Marcello"

Apresentações semelhantes


Anúncios Google