Comandos de Repetição -Laços Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo uma determinada regra ou condição. alguns comandos repetem um conjunto de instruções enquantouma condição é satisfeita, outros repetem atéque a condição seja satisfeita e outros repetem um determinado número de vezes. Cada repetição executada é chamada de iteração.
Comandos de Repetição -Laços Agora, vamos visualizar a seguinte situação: temos um laço que gira em torno de uma variável. O valor da variável inicia com um determinado valor, este valor é aumentado ou diminuído em uma unidade a cada iteração e quando atinge um determinado valor limite,o laço é finalizado. O comando para este fim é o para faça.
Comandos de Repetição -Laços Em Pascal toindica que a variável aumenta a cada iteração e downtoque diminui. Em C o comando para façaé bastante poderoso, permite a inicialização e atualização de várias variáveis e permite condições de continuação que não necessariamente estejam relacionadas às variáveis.
Um exemplo simples é o de uma contagem a ser impressa na tela. Uma variável começa em um determinado valor, a cada iteração é impressa na tela e incrementada e quando atinge o valor limite, o laço é finalizado. No laço seguinte a contagem é feita em forma decrescente. Exemplo
Exemplo
Exemplo
Exercício Faça um programa em C para escrever a tabuada de um número digitado. Faça um programa em C para escrever os pares até 10 Faça um programa em C para cálculo do fatorial de um número digitado. Faça um programa em C que obtenha a idade da 10 pessoas. Exibir a média de idade, a maior e menor idade
Exercício Faça um programa em C para escrever a tabuada de um número digitado. #include <stdio.h> #include <stdlib.h> int main (void) int n,cont; printf("digite um número"); scanf("%d", &n); for (cont=0;cont<=10;cont++) printf("%d x %d = %d\n",n,cont,n*cont); return 0;
Exercício Faça um programa em C para escrever os pares até 10 #include <stdio.h> #include <stdlib.h> #include <locale.h> int main (void) setlocale(lc_all,""); int cont; printf("pares até 10\n"); for (cont=0;cont<=10;cont+=2) printf("%d ",cont); return 0;
Exercício Faça um programa em C para cálculo do fatorial de um número digitado. #include <stdio.h> int main (void) int i,n,f = 1; printf("digite um número inteiro não negativo:"); scanf("%d", &n); for (i = 1; i <= n; i++) f *= i; printf(" Fatorial = %d \n", f); return 0;
Exercício Faça um programa em C que obtenha a idade da 10 pessoas. Exibir a média de idade, a maior e menor idade. #include <stdio.h> #include <stdlib.h> int main (void) int soma=0,i,cont,maior=0,menor=200; for (cont=1;cont<=10;cont++) printf("digite sua idade "); scanf("%d",&i); soma+=i; if (maior<i) maior=i; if(menor>i) menor=i; printf("media de idade: %d \n Maior idade:%d \n Menor idade:%d \n",soma/10,maior,menor); return 0;
Enquanto...faça O comandoenquanto façarealiza as iterações enquanto uma condição for satisfeita. O teste da condição é feitoantes de executar a iteração, por isso um comando enquanto façapode não ter sequer uma iteração realizada, quando logo no início a condição resulta em falso.
Exemplo O programa pede o número de caracteres que o usuário deseja digitar e permite que o usuário entre com esta quantia de caracteres.
Exemplo
Exemplo
Exemplo #include <stdio.h> int main (void) int i=0; printf("contagem crescente:"); while(i<=10) printf("%i ",i); i++; printf("contagem decrescente:"); i=10; while(i>=0) printf("%i ",i); i--; return 0;
Exercício Faça um programa para cálculo do fatorial de um número utilizando while.
Exercício Faça um programa para cálculo do fatorial de um número utilizando while. #include <stdio.h> int main (void) int i; int n; int f = 1; printf("digite um número:"); scanf("%d", &n); /* calcula fatorial */ i = 1; while (i <= n) f *= i; i++; printf(" Fatorial = %d \n", f); return 0;
Comandos de Repetição -Laços Existem situações em que o desejável é executar primeiro a iteração e depois testar a condição. Para isso temos o comando faça enquantoou repita até. O faça enquantorealiza uma iteração e só realiza a próxima se a condição for satisfeita, enquanto que o repita atérealiza uma iteração e só realiza a próxima se a condição não for satisfeita, pois atédenota uma condição de terminação e não de continuação. Pascal tem apenas o repita até e C somente o enquanto faça.
Exemplo Podemos refinar o programa anterior pedindo repetidamente que o usuário digite uma caractere: agora a condição é que quando ele digitar o caracter 0o programa será finalizado. Assim, não será necessário estabelecer o número de caracteres digitados previamente.
Exemplo O comando repeat until não necessita dos delimitadores de bloco begin endnem quando envolvem vários comandos.
Exemplo O comando do while, em C, deve sempre ter os delimitadores, ainda que envolva um único comando.
Exemplo #include <stdio.h> int main (void) int i=0; printf("contagem crescente:"); do printf("%i ",i); i++; while(i<=10); printf("contagem decrescente:"); i=10; do printf("%i ",i); i--; while(i>=0); return 0;
Exercício Alterar o programa de cálculo de fatorial para validarmos a inserção do usuário, isto é, o programa repetidamente requisita a inserção de um número enquanto o usuário inserir um inteiro negativo (cujo fatorial não está definido).
Exercício #include <stdio.h> int main (void) int i, n, f = 1; /* requisita valor do usuário */ do printf("digite um valor inteiro nao negativo:"); scanf ("%d", &n); while (n<0); /* calcula fatorial */ while (i <= n) f *= i; i++; printf(" Fatorial = %d \n", f); return 0; O comando do while, em C, deve sempre ter os delimitadores, ainda que envolva um único comando.
break e continue São formas para a interrupção antecipada de um determinado laço. O comando break, quando utilizado dentro de um laço, interrompe e termina a execução do mesmo. A execução prossegue com os comandos subsequentes ao bloco.
#include <stdio.h> int main (void) int i; for (i = 0; i < 10; i++) if (i == 5) break; printf("%d ", i); printf("fim\n"); return 0; Exemplo A saída deste programa, se executado, será: 0 1 2 3 4 fim pois, quando i tiver o valor 5, o laço será interrompido e finalizado pelo comando break, passando o controle para o próximo comando após o laço, no caso uma chamada final de printf.
break e continue O comando continue também interrompe a execução dos comandos de um laço. A diferença básica em relação ao comando break é que o laço não é automaticamente finalizado. O comando continue interrompe a execução de um laço passando para a próxima iteração. Exemplo: #include <stdio.h> int main (void) int i; for (i = 0; i < 10; i++ ) if (i == 5) continue; printf("%d ", i); printf("fim\n"); return 0; gera a saída: 0 1 2 3 4 6 7 8 9 fim
Exercícios Ache o primeiro número, entre 1 e 1 milhão que é divisível por 11, 13 e 17. Use o comando BREAK. Faça um programa que some todos os números, de 1 até 100, exceto os múltiplos de 5.
Acheoprimeironúmero,entre1e1milhãoqueé divisívelpor11,13e17.useocomandobreak. #include <stdio.h> intmain() int cont, numero; for(cont=1 ; cont<=1000000 ; cont++) if((cont%11==0) && (cont%13==0) && (cont%17==0)) printf("o numero e: %d",cont); break; return 0;
Faça um programa que some todos os números, de 1 até 100, exceto os múltiplos de 5. #include <stdio.h> intmain() int cont, soma=0; for(cont=1 ; cont<=100 ; cont++) if( cont%5 ==0) continue; soma += cont; printf("soma %d", soma);
Exercícios Solicitar a idade de várias pessoas e exibir: Total de pessoas com menos de 21 anos. Total de pessoas com mais de 50 anos. O programa termina quando idade for =-99.
#include<stdio.h> int main() int idade,contador21=0,contador50=0; Exercícios Correção do printf("\n DIGITE A IDADE(PARA ENCERRAR DIGITE -99) : "); scanf("%d",&idade); if(idade==-99) break; if(idade<21) contador21++; if(idade>50) contador50++; while(idade!=-99); printf("\n TOTAL DE PESSOAS COM MENOS DE 21 ANOS E:%d",contador21); printf("\n TOTAL DE PESSOAS COM MAIS DE 50 ANOS E:%d",contador50); printf("\n\n"); return(0);
Exercícios Ler um número do teclado: exibir todos os números de 1 até o número lido. exibir o produto dos números. Receber um número e verificar se ele é triangular. (um número é triangular quando é resultado do produto de 3 números consecutivos. Exemplo: 24 = 2 * 3 * 4)
#include<stdio.h> main() Exercícios Correção int x, max=0, p=1; printf("\n INFORME UM NUMERO : "); scanf("%d",&max); for(x=1;x<=max;x++) //Valor menor ou igual ao numero informado. printf("\n Numero gerado: %d ",x); p=p*x; printf("\n O produto dos numeros gerados e: %d",p); printf("\n"); return(0);
Exercícios -Correção #include <stdio.h> main() int num,num1,p; num1 = 1; printf("digite um numero: "); scanf("%d", &num); p = num1 * (num1 + 1) * (num1 + 2); while (p < num) num1++; p = num1 * (num1 + 1) * (num1 + 2); if (p == num) printf("\ne triangular."); else printf("\nnao e triangular."); printf("\n"); return 0;