comandos de repetição -laços - ebrito.com.br · comandos de repetição -laços •os comandos...
TRANSCRIPT
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
enquanto uma 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.
• 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 to indica que a variável aumenta a
cada iteração e downto que 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.
Comandos de Repetição - Laços
• 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ícioFaç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ícioFaç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ícioFaç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ícioFaç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ícioFaç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 comando enquanto … faça realiza as
iterações enquanto uma condição for
satisfeita.
• O teste da condição é feito antes de executar a
iteração, por isso um comando enquanto …
faça pode 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.
#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;
Exercício
while (i <= n)
{
f *= i;
i++;
}
printf(" Fatorial = %d \n", f);
return 0;
}
• Faça um programa para cálculo do fatorial de
um número utilizando while.
• 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 … enquanto ou repita
… até.
• O faça … enquanto realiza 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.
Comandos de Repetição - Laços
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 0 o 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 end nem 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 */
O comando do … while, em
C, deve sempre ter os
delimitadores {}, ainda que
envolva um único comando.
while (i <= n)
{
f *= i;
i++;
}
printf(" Fatorial = %d \n", f);
return 0;
}
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.
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.
#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;
}
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.
Ache o primeiro número, entre 1 e 1 milhão que é
divisível por 11, 13 e 17. Use o comando BREAK.
#include <stdio.h>
int main() {
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>
int main()
{
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.
Exercícios
Correção
#include<stdio.h>
int main()
{
int idade,contador21=0,contador50=0;
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)
Exercícios
Correção#include<stdio.h>
main()
{
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;
}