Aula 4 Comandos de Repetio Prof Filipe Mutz
- Slides: 107
Aula 4 Comandos de Repetição Prof. Filipe Mutz.
Instrução . . . Instrução Condicional (seleção) Instrução 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 Instrução Repetitivo (loops)
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
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
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
Algoritmos com Repetições início <instruções 1> Enquanto <condição>: <instruções 2> <instruções 3> fim início instruções 1 Condições são Verdadeiras? sim instruções 2 não instruções 3 fim
Algoritmo Verificar. Senha 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? sim não Escreva “Sen. . ” Escreva “Con. . . ” Escreva “Dig. . . ” fim Leia senha
Repetições em C. . . while (<condições>) { instruções }. . . #include <stdio. h> 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; } Defini que a senha correta seria 1024 apenas por simplicidade Cada repetição é chamada de uma iteração.
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.
Identificação de 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 <condição> faça __ ”, • “até que <condição> seja satisfeita”, • “faça __ <n> vezes”. Mas cuidado! Em certas situações eles não estarão presentes.
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.
• Assim fica mais fácil ver a repetição!
Como resolver problemas de Repetição 1. 2. 3. 4. 5. 6. Busque instruções que são executadas várias vezes. Identifique em que condições acontece a repetição. Identifique o que muda a cada iteração. Encontre uma forma de calcular os valores que mudam! Identifique qual é o resultado esperado ao final da repetição. * Atualize a cada iteração o resultado. * * Nem toda repetição possui um resultado final esperado.
Exemplo 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? 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
Exemplo Faça um programa que mostre na tela 100 números a partir do 1. 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 Algoritmo Números Início Escreva “ 1” Escreva “ 2” Escreva “ 3”. . . Escreva “ 100” Fim
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 A maioria das repetições possui um contador para contar quantas repetições já fizemos. . int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1
Exemplo valor_inicial Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 _ 1
Exemplo valor_inicial 1 nums_para_contar 100 Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 _
Exemplo valor_inicial 1 nums_para_contar 100 nums_contados 0 Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 0 numero_atual 1 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 0 numero_atual 1 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 0 numero_atual 1 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 0 numero_atual 2 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 1 numero_atual 2 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 1 numero_atual 2 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 1 numero_atual 2 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 1 numero_atual 3 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 2 numero_atual 3 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 2 numero_atual 3 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 2 numero_atual 3 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 2 numero_atual 4 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 3 numero_atual 4 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 3 numero_atual 4 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3 _
Algumas repetições depois. . .
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 98 numero_atual 99 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3. . . 97 98 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 98 numero_atual 99 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3. . . 97 98 99 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 98 numero_atual 100 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3. . . 97 98 99 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 99 numero_atual 100 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3. . . 97 98 99 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 99 numero_atual 100 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3. . . 97 98 99 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 99 numero_atual 100 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3. . . 97 98 99 100 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 99 numero_atual 101 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3. . . 97 98 99 100 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 100 numero_atual 101 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3. . . 97 98 99 100 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 100 numero_atual 101 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3. . . 97 98 99 100 _
Exemplo Algoritmos Números início int valor_inicial = 1 int nums_para_contar = 100 int nums_contados = 0 valor_inicial 1 nums_para_contar 100 nums_contados 100 numero_atual 101 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1 1 2 3. . . 97 98 99 100 _
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 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? Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 1 nums_contados = nums_contados + 1
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 fim Enquanto numero_atual <= valor_final: Escreva numero_atual = numero_atual + 1
Algoritmo Numeros Início int na int nf #include <stdio. h> int main (void) { int na; int nf; nf = 100; na = 1; nf = 100 na = 1 Fim while (na <= nf) { printf("%dn", na); na = na + 1; } while na <= nf: Escreva na na = na + 1 return 0; }
Algoritmo Numeros Início int na int nf escreva “numero de itens a serem escritos: ” leia nf #include <stdio. h> int main (void) { int na; int nf; printf("numero de itens a serem escritos: "); scanf("%d", &nf); na = 1; na = 1 Fim while (na <= nf) { printf("%dn", na); na = na + 1; } while na <= nf: Escreva na na = na + 1 return 0; }
E se quiséssemos mostrar os números entre -300 e 967? OBS: Equivale a mostrar 1267 números a partir de -300!
Exemplo Algoritmos Números início int valor_inicial = -300 int valor_final = 967 int numero_atual = valor_inicial fim Enquanto numero_atual <= valor_final: Escreva numero_atual = numero_atual + 1
E se quiséssemos mostrar os números entre 100 e 0 (de trás para frente)?
Exemplo Algoritmos Números início int valor_inicial = 100 int valor_final = 0 int numero_atual = valor_inicial fim Enquanto numero_atual > valor_final: Escreva numero_atual = numero_atual - 1
E se quiséssemos mostrar os 20 primeiros números pares?
Exemplo Algoritmos Números início int valor_inicial = 0 int nums_para_contar = 20 int nums_contados = 0 int numero_atual = valor_inicial fim Enquanto nums_contados < nums_para_contar: Escreva numero_atual = numero_atual + 2 nums_contados = nums_contados + 1
Exemplo Algoritmos Números início int nums_para_contar = 20 int nums_contados = 0 fim OU Enquanto nums_contados < nums_para_contar: Escreva nums_contados * 2 nums_contados = nums_contados + 1
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.
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, . . .
Contadores int contador; contador = [inicio]; contador = 0; while (contador < [final]) { <instruções> contador = contador + 1; } while (contador < 10) { printf(“olan”); contador = contador + 1; }
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.
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
Operadores de incremento e decremento int contador; contador = [inicio]; while (contador < [final]) { <instruções> contador += 1; } contador = contador + 1
Operadores de incremento e decremento int contador; contador = [inicio]; while (contador < [final]) { <instruções> contador += 2; } contador = contador + 2
Operadores de incremento e decremento int contador; contador = [inicio]; while (contador < [final]) { <instruções> contador++; } contador = contador + 1
Operadores de incremento e decremento int contador; contador = [inicio]; while (contador < [final]) { <instruções> contador -= 1; } contador = contador - 1
Operadores de incremento e decremento int contador; contador = [inicio]; while (contador < [final]) { <instruções> contador -= 2; } contador = contador - 2
Operadores de incremento e decremento int contador; contador = [inicio]; while (contador < [final]) { <instruções> contador--; } contador = contador - 1
Outros Operadores x /= 2; y *= x; A += (x + pow(2, x));
Vamos ver mais alguns exemplos
printf("digite um numero: "); scanf("%f", &numero); Exemplo: Leia 5 números e mostre na tela qual é o menor deles if (numero < menor) menor = numero; #include <stdio. h> int main (void) { float numero; float menor; Resultado esperado printf("digite um numero: "); scanf("%f", &numero); if (numero < menor) menor = numero; printf("digite um numero: "); scanf("%f", &numero); menor = numero; if (numero < menor) menor = numero; printf("digite um numero: "); scanf("%f", &numero); printf("menor: %fn", menor); if (numero < menor) menor = numero; } return 0;
contador = 0; Exemplo: Leia 5 números e mostre na tela qual é o menor deles while (contador < 4) { printf("digite um numero: "); scanf("%f", &numero); #include <stdio. h> int main (void) { int contador; float numero; float menor; if (numero < menor) menor = numero; contador = contador + 1; printf("digite um numero: "); scanf("%f", &numero); } menor = numero; printf("menor: %fn", menor); return 0; }
Exemplo: Leia 5 números e mostre na tela qual é o menor deles while (contador < 5) { printf("digite um numero: "); scanf("%f", &numero); #include <stdio. h> int main (void) { int contador; float numero; float menor; if (numero < menor) menor = numero; truque contador = contador + 1; menor = 99999; } contador = 0; printf("menor: %fn", menor); return 0; }
Exemplo: Leia 5 números e mostre na tela qual é o menor deles #include <stdio. h> int main (void) { int contador; float numero; float menor; Nas sequências, tínhamos um resultado por iteração. Neste caso, atualizamos um resultado único em todas as iterações. while (contador < 5) { printf("digite um numero: "); scanf("%f", &numero); if (numero < menor) menor = numero; contador = contador + 1; menor = 99999; } contador = 0; printf("menor: %fn", menor); return 0; }
E se quiséssemos o maior?
Exemplo: Leia 5 números e mostre na tela qual é o maior deles while (contador < 5) { printf("digite um numero: "); scanf("%f", &numero); #include <stdio. h> int main (void) { int contador; float numero; float maior; if (numero > maior) maior = numero; contador = contador + 1; maior = -99999; } contador = 0; printf(“maior: %fn", maior); return 0; }
Faça um programa que leia 4 números e mostre na tela a soma deles printf("digite um numero: "); scanf("%f", &numero); soma += numero; #include <stdio. h> int main (void) { float numero; float soma; printf("digite um numero: "); scanf("%f", &numero); soma += numero; printf("digite um numero: "); scanf("%f", &numero); soma = 0; soma += numero; printf("digite um numero: "); scanf("%f", &numero); soma += numero; } printf("soma: %fn", soma); return 0;
Faça um programa que leia 4 números e mostre na tela a soma deles contador = 0; #include <stdio. h> while (contador < 4) { printf("digite um numero: "); scanf("%f", &numero); soma += numero; contador ++; } int main (void) { float numero; float soma; int contador; soma = 0; } printf("soma: %fn", soma); return 0;
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).
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. OBS: Use variáveis double para uma maior precisão. Lembre-se de usar %lf para ler e escrever doubles. O que se repete? O que muda a cada repetição? Como calcular os elementos da série?
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.
Exemplo: leia um número inteiro n. Em seguida, leia n números e mostre na tela a média dos números digitados.
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.
Para Casa: Faça um algoritmo que leia um número e calcule seu fatorial.
Loops aninhados Faça um algoritmo que mostre na tela a tabuada de 1 a 10.
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).
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.
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!!!!
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.
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!!!!
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]) { <instruções> } i = [valor inicial]; while (i < [valor final]) { <instruções>; i += [passo]; }
Exemplo: FOR #include <stdio. h> int main (void) { int i; for (i = 0; i < 10; i += 1) { printf("i: %dn", i); } } return 0;
Exemplo: FOR #include <stdio. h> int main (void) { int i; for (i = 0; i < 10; i++) { printf("i: %dn", i); } } return 0;
Exemplo: FOR #include <stdio. h> int main (void) { int i; Assim como no if, podemos omitir se o bloco só tiver 1 instrução. for (i = 0; i < 10; i++) printf("i: %dn", i); } return 0;
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 = %dn”, i, j, i * j);
Exemplo: Faça um algoritmo usando for que leia um número e mostre na tela seus divisores.
Exemplo: Modifique o programa anterior para ler um número e mostrar na tela se ele é primo ou não.
Exemplo: Modifique o programa anterior para mostrar todos os números primos em um intervalo.
#include <stdio. h> int main (void) { char opcao; do { printf("Escolha sua opcao: "); scanf("n%c", &opcao); Outros comandos de repetição: DO. . . WHILE Útil em situações do tipo: • Leia até encontrar o número 0. • Leia até encontrar um caractere ‘q’ // <instrucoes> } 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!!!!
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.
#include <stdio. h> #include <float. h> int main (void) { char opcao; do { O que vai aparecer na tela se o usuário escolher as opções: d, e, a? E se ele escolher ‘f’, ‘g’, ‘q’? 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(“fimn”); return 0; }
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”.
Ler uma opção Opção é q? Opção é a ou b? Outra opção. Ler um número Opção é a? Mostre na tela o quadrado do número Opção é b? Mostre na tela a raiz do número Mostre na tela: “Opção Inválida”
#include <stdio. h> #include <math. h> 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); . . .
. . . if (opcao == 'a') printf("O numero ao quadrado eh: %fn", pow(numero, 2)); else printf("A raiz do numero eh: %fn", sqrt(numero)); } else printf("Opcao invalida!n"); } return (0); }
Revisão: Como resolver problemas de Repetição 1. 2. 3. 4. 5. 6. Busque instruções que são executadas várias vezes. Identifique em que condições acontece a repetição. Identifique o que muda a cada iteração. Encontre uma forma de calcular os valores que mudam! Identifique qual é o resultado esperado ao final da repetição. * Atualize a cada iteração o resultado. * * Nem toda repetição possui um resultado final esperado.
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.
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. 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. a dx b 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.
- Filipe d
- Cristiane dupret filipe pessoa
- Comandos ddl
- Comandos internos
- Lista de comandos sql
- Comandos
- Linguagem pascal comandos
- Comandos de word
- Comandos
- Como entrar a ms dos
- Repetio
- Repetio
- Repetio
- Repetio
- Repetio
- Repetio
- Repetio
- Repetio
- Repetió
- Repetio
- Repetio
- Instruções
- Correo uveg
- Baggi sassuolo indirizzi di studio
- Aula constitucional
- Aula hjemmeside redigering
- Parágrafo
- Plataforma virtual unan managua
- A aula de dança
- Aula inaugural de historia 6 ano
- Até a próxima aula
- Uma sala de aula possui 100 alunos sendo que 40
- Beneficios de los rincones de aprendizaje
- Aula sobre o humanismo
- Filme o triunfo - avaliação diagnóstica
- Dinámicas cristianas sobre el perdón
- Diferencia entre recursos y materiales didacticos
- Barra cronológica
- Sen 2 alfa
- Etnografia del aula
- Plano de aula órgãos do sentido 2o ano bncc
- Uftm a inducao eletrostatica consiste
- Uso de los libros de texto en el aula
- Aula cartoon
- El aula virtual
- Auladigital itc
- Aula virtual yacambu
- Aula virtual do ies xulian magariños
- Plan de aula de español grado noveno
- Aula virtual universidad de valencia
- Nesta aula vamos
- Paulo cesar sentelhas
- Nico es responsable de la biblioteca de su aula
- Aula virtual invima
- Aula virtual basella
- Taller de textos: leer, escribir y comentar en el aula
- Aula virtual valencia
- Multiplica abreviadamente
- Aula simulada
- Aula camfic
- Apoyovirtual science
- Nesta aula vamos
- Avatarmurciaeduca
- Ies canet de mar
- Gimnasio superior empresarial bilingüe aula virtual
- Open deusto
- Esmilagenina
- In aula salvii translation
- Interedvisual
- Aula virtual upm
- Tele aula
- Virtual aula frontex
- Classifique os adverbios sublinhados . siga o exemplo
- Nap de matematica
- Como hacer ciencia en el aula
- Gimnasio superior empresarial bilingüe aula virtual
- Aula simulada
- Unisan aula virtual
- 10 pedreiros fazem um muro em 10 horas
- Aula virtual fcm unc
- Porque o professor usava óculos escuros na sala de aula
- El diagnóstico en el aula elena luchetti resumen
- Formar futuro
- Material de aula unipampa
- Aula virtual ies illa de tambo
- 9 ano iii bimestre aula 1
- Psicologia uba
- Aula extendida udla
- Plano de aula sobre os dez mandamentos
- Aula virtual filosofia
- Fim de aula
- Atividade sobre vida e morte
- Meteorologia cesar
- Color 01122008
- Plano de aula paisagem natural e modificada
- Aula administratorvejledning
- De acordo com que vimos durante a aula
- Aula virtual.com
- En cada aula de un colegio hay entre 25 y 30 sillas
- Aula hjemmeside redigering
- Aula mg
- Aula virtual santa clara de asis
- San francisco de asis temuco
- Contabilidade aula 1
- Aula virtual san francisco de asís temuco
- Proyecto de aula grado quinto
- Ufpa acerca do poema é correto afirmar que
- Ventajas de la cartelera