comandos de repetição -laços - ebrito.com.br · comandos de repetição -laços •os comandos...

36
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.

Upload: hoangtuyen

Post on 17-Dec-2018

255 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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.

Page 2: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

• 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

Page 3: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

• 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

Page 4: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

• 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

Page 5: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

Exemplo

Page 6: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

Exemplo

Page 7: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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

Page 8: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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;

}

Page 9: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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;

}

Page 10: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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;

}

Page 11: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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;

}

Page 12: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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.

Page 13: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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.

Page 14: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

Exemplo

Page 15: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

Exemplo

Page 16: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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;

}

Page 17: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

Exercício• Faça um programa para cálculo do fatorial de

um número utilizando while.

Page 18: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

#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.

Page 19: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

• 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

Page 20: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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.

Page 21: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

Exemplo

O comando repeat … until

não necessita dos

delimitadores de bloco

begin end nem quando

envolvem vários comandos.

Page 22: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

Exemplo

O comando do … while, em

C, deve sempre ter os

delimitadores {}, ainda que

envolva um único comando.

Page 23: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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;

}

Page 24: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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).

Page 25: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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;

}

Page 26: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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.

Page 27: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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;

}

Page 28: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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

Page 29: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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.

Page 30: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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;

}

Page 31: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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);

}

Page 32: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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.

Page 33: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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);

}

Page 34: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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)

Page 35: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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);

}

Page 36: Comandos de Repetição -Laços - ebrito.com.br · Comandos de Repetição -Laços •Os comandos de repetição possibilitam que um conjunto de comandos possam ser repetidos seguindo

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;

}