• Nenhum resultado encontrado

Estruturas de repetição

N/A
N/A
Protected

Academic year: 2022

Share "Estruturas de repetição"

Copied!
36
0
0

Texto

(1)

Estruturas de repetição

Programação de Computadores I

Natália Batista

https://sites.google.com/site/nataliacefetmg/

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS

(2)

1. Repetição

(1/2)

#include <stdio.h>

int main ( ) { printf ("1 ");

printf ("2 ");

: : :

printf ("10 ");

: : :

printf("1000\n");

}

Como imprimir os mil primeiros números naturais?

1000 linhas de código com printf!

Insano!!!

saída: 1 2 3 4 5 6 7 8 9 10 ... 1000

(3)

 O trecho de código que será repetido várias vezes pode ser generalizado

Estrutura de repetição

1. Repetição

(2/2)

(4)

2. Estruturas de repetição

A linguagem C++ possui três tipos de estruturas de repetição (loops ou laços):

for

while

do-while

Executam um ou mais comandos de forma repetida dependendo de uma condição.

(5)

3. For

(1/9)

Recomendado quando há um número determinado de repetições.

Forma geral:

for (i = valor inicial; condição; passo){

comandos;

}

i: variável de controle

valor inicial: limite inferior

condição: enquanto for verdadeira haverá repetição

(6)

3. For

(2/9)

Exemplo 1: Escrever os números inteiros de 1 a 5.

E se fossem 1000 números?

#include <stdio.h>

int main () { int num;

for (num = 1; num <= 5; num++){

printf ("%d ", num);

}

return 0;

}

(7)

3. For

(3/9)

A primeira instrução é executada uma única vez, antes do início do laço.

A expressão a seguir é testada sempre que o fluxo do programa se encontrar no início do laço.

A segunda instrução é executada no final do laço, após a execução do bloco de instruções internas.

Cada execução do conjunto de instruções denomina-se uma iteração.

for (num = 1; num <= 5; num++){

printf ("%d ", num);

}

(8)

3. For

(4/9)

Exemplo 1: Escrever os números inteiros de 1 a 5.

for (num = 1; num <= 5; num++){

printf ("%d ", num);

}

1ª iteração num = 1 2ª iteração num = 2 3ª iteração num = 3 4ª iteração num = 4 5ª iteração num = 5

(9)

3. For

(5/9)

Exemplo 2: Escreva um algoritmo que imprima todos os números inteiros pares de 0 a 100.

#include <stdio.h>

int main(){

int i;

for (i = 0; i <= 100; i = i + 2) printf(“%d ”, i);

return 0;

}

(10)

3. For

(6/9)

 Exemplo 3: Construir um algoritmo que leia um número N, calcule e imprima o fatorial desse número.

(11)

3. For

(7/9)

 Exemplo 3: Construir um algoritmo que leia um número N, calcule e imprima o fatorial desse número.

 Definição de fatorial:

 Exemplo:

(12)

3. For

(8/9)

Exemplo 3: Construir um algoritmo que leia um

número N, calcule e imprima o fatorial desse número.

#include <stdio.h>

main(){

int N, i, fat;

//Leitura

printf("Digite um numero: ");

scanf(“%d”, &N);

//Cálculo do fatorial fat = 1;

for (i = 1; i <= N; i++) fat = fat * i;

//Saída

printf("O fatorial de %d e igual a: %d", N, fat);

return 0;

(13)

3. For

(9/9)

Flexibilidade: qualquer expressão de um laço “for” pode conter várias instruções separadas por vírgula.

inicializa x e y com 0

testa se x + y < 100

executa comando

incrementa 1 a x, e x a y

for (x=0,y=0; x+y<100; ++x, y=y+x) printf(“%d”,x+y);

raramente usado

(14)

4. While

(1/12)

 Pode ser utilizado quando não se sabe o número de vezes que um trecho do

algoritmo deve ser repetido, embora também possa ser utilizada quando se conhece esse número.

(15)

4. While

(2/12)

 Forma geral

while (condição){

comandos;

}

(16)

4. While

(3/12)

 Essa estrutura baseia-se na análise da

condição: a repetição será feita enquanto a condição mostrar-se verdadeira.

(17)

4. While

(4/12)

 Exemplo 4: Escrever os números inteiros de 1 a 5.

int i = 1;

while (i <= 5){

printf(“%d “, i);

i++;

}

(18)

4. While

(5/12)

 Se o teste condicional do while (que fica no início) resultar em um valor falso logo na

primeira comparação, os comandos de

dentro da repetição não serão executados.

(19)

4. While

(6/12)

 Exemplo 5: Programa para calcular a área de um triângulo, que não permite a entrada de dados inválidos.

Neste caso são considerados dados inválidos aqueles menores ou iguais a 0. Se for lido um valor inválido, a leitura terá que ser

repetida.

(20)

#include <stdio.h>

int main(){

float base, altura, area;

base = 0;

while (base <= 0){

printf( "Digite a medida da base: ");

scanf(“%f”, &base);

}

altura = 0;

while (altura <= 0){

printf("\nDigite a medida da altura ");

scanf(“%f”, &altura);

}

area = base * altura / 2;

printf("Area = %f", area);

return 0;

}

(21)

4. While

(8/12)

Pode a execução de um programa com processamento iterativo não terminar?

Observe:

s = 0;

i = 0;

while (i < 3) {

i--;

s = s + i;

}

Este laço ou loop nunca irá terminar!

(Erro de lógica)

s = 0;

i = 0;

while (i > -3) {

i--;

s = s + i;

}

Maneira correta

(22)

4. While

(9/12)

Atenção!

Em alguns casos, o loop infinito pode ser desejável.

Exemplo: um programa que monitora um reator nuclear deve estar sempre em execução.

Neste caso, pode-se escrever:

while (1) {

...

}

(23)

4. While

(10/12)

for (;;)

printf(“Este loop executará eternamente!\n”);

Laço infinito com for:

(24)

4. While

(11/12)

 Qual seria a saída se não fossem colocadas as chaves na instrução do while?

int i = 1;

while (i <= 5){

printf(“%d “, i);

i++;

}

(25)

4. While

(12/12)

 O que faz o programa a seguir?

include <stdio.h>

int main(){

int n = 10;

while (n) {

printf(“%d “, n);

n = n-1;

}

return 0;

while(n) é equivalente a:

while(n != 0)

(26)

5. Do-while

(1/8)

 Pode ser utilizado quando o número de repetições necessárias não é fixo.

 Os comandos serão repetidos até a condição assumir o valor falso.

(27)

5. Do-while

(2/8)

 Forma geral

do {

comandos;

} while (condição);

(28)

5. Do-while

(3/8)

 Exemplo 6: Escrever os números inteiros de 1 a 5.

int i = 1;

do {

printf(“%d ”, i);

i++;

} while (i <= 5);

(29)

5. Do-while

(4/8)

 Qual a diferença entre o while e o do-while?

No do-while os comandos serão

repetidos pelo menos uma vez,

já que a condição de parada se

encontra no final.

(30)

5. Do-while

(5/8)

 Qual a diferença entre o for e os comandos while / do-while?

O número de vezes que o comando do for será executado é normalmente conhecido enquanto no while/do-while é desconhecido.

(31)

5. Do-while

(6/8)

Exemplo 7: programa que lê o conceito obtido pelo aluno no semestre (de A a E) e imprime seu significado. O programa mantém-se aberto até que o usuário digite S (sair).

(32)

#include <stdio.h>

int main(){

char Conceito;

do{

//Leitura

printf("Digite o conceito obtido no semestre: ");

scanf(" %c", &Conceito);

//Seleção e impressão do conceito switch( Conceito ){

case 'a' :

case 'A' : printf("Excelente\n"); break;

case 'b' :

case 'B' : printf("Otimo\n"); break;

case 'c' :

case 'C' : printf("Bom\n"); break;

case 'd' :

case 'D' : printf("Regular\n"); break;

case 'e' :

case 'E' : printf("Ruim\n"); break;

case 's' :

case 'S' : printf("O programa sera encerrado.\n"); break;

default : printf("O conceito informado nao existe.\n");

}

} while (Conceito != ‘S’ && Conceito != ‘s’);

return 0;

(33)

5. Do-while

(8/8)

 Exercício: fazer o programa que calcula a área do triângulo (Exemplo 5) usando do- while.

 Por que neste caso não é necessário realizar as atribuições iniciais da base e da altura?

(34)

6. Comparação entre os laços

(35)

7. Os comandos break e continue

break

- sai de um laço (for, while, do) e do switch

- o próximo comando a ser executado é o comando seguinte ao laço

continue

- vai para o início do laço

(36)

8. Atividades sugeridas

Leitura do livro-texto (Damas): Capítulo 4.

Fazer os exercícios do capítulo.

Referências

Documentos relacionados

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

[r]

O candidato que se julgar prejudicado, após a publicação do gabarito preliminar do concurso, poderá interpor recurso no prazo de 2 (dois) dias úteis, a contar da

Acelerador para 'cuidados de longo prazo' Long term care Cobertura adicional para uma apólice de vida Beneficio é iniciado em caso de falha permanente de um número de "Atividades

Ele3 (como se fosse chorar a qualquer momento): - Não fala assim, você sabe que não é fácil pra mim. Eu estou cansado, preciso

Artigo 17.. b) Promover as acções necessárias aos trabalhos de avaliação de candidaturas a financiamentos de programas e projectos de investigação cien- tífica e

O conversor de freqüência foi testado utilizando um cabo não blindado de 75 m e um cabo blindado de 25 m e foi concebido para funcionamento com um cabo de motor com uma