19 – a instrução for

32
19 – A instrução for O for é uma instrução de repetição apropriada para caso em que se conhece previamente o número de repetições (por exemplo:10 vezes ou n vezes). Tem a vantagem de conter em seu formato os elementos essenciais para este tipo de repetição: a “inicialização” , o “teste de fim” (a condição) e a “actualização” de um contador .

Upload: others

Post on 09-Jan-2022

4 views

Category:

Documents


0 download

TRANSCRIPT

19 – A instrução forO for é uma instrução de repetição apropriada para caso em que se conhece previamente o número de repetições (por exemplo:10 vezes ou n vezes).Tem a vantagem de conter em seu formato os elementos essenciais para este tipo de repetição: a “inicialização” , o “teste de fim” (a condição) ea “actualização” de um contador .

Sintaxe:

for ( inicialização ; condição ; actualização )instrução;

Funcionamento:

1 - primeiro é feita a inicialização do contador (apenas uma vez)

2 - é testada a condição,3 - se é verdadeira, a instrução é executada;

se é falsa , as repetições terminam,4 - após a execução da instrução o contador é

actualizado e então a condição é testada novamente (volta ao ponto 2 ).

Funcionamento:

condiçãoinstrução(ou bloco)

sim

não

inicialização

actualização

Exemplo:

Escrever de 1 até 10 .

Fluxograma:

i <= 10sim

não

i = 1

escreveri

i = i + 1

Instrução:

...for ( i = 1; i <= 10; i = i +1)

printf(“%d\n”,i); ...

Exemplo:

Escrever de 20 até 5 .

Fluxograma:

i >= 5sim

não

i = 20

escreveri

i = i - 1

Instrução:

...for ( i = 20; i >= 5; i = i -1)

printf(“%d\n”,i); ...

Exemplo:

Escrever de 2 até 100, de 2 em 2 .(só os pares )

Fluxograma:

i <= 100sim

não

i = 2

escreveri

i = i + 2

Instrução:

...for ( i = 2; i <= 100; i = i +2)

printf(“%d\n”,i); ...

Exemplo:

Ler 20 números inteiros do terminal e calcular soma e a média.

s = 0

i = 1

i <=20sim

não

escrever“pf um nº” ler n s = s+n i = i + 1

Pode ser um for !!!

escrever“a soma é” s

m = s/20

escrever“a média é” m

#include <stdio.h>main ( ){ int n,s,i; float m;

s = 0;for (i = 1; i<=20; i = i +1){

printf(“Por favor um número\n”); scanf(“%d”,&n);s = s + n;

}m = s/20.0;printf(“A soma é %d\n”,s);printf(“A média é %f\n”,m);

}

Observações

- seria possível utilizar um while !- a “instrução” do for é um bloco !

20 - Repetições dentro de repetições

Problemas mais complexos podem exigir a utilização de repetições dentro de outras repetições.O funcionamento mais comum é o de para cada repetição ser necessário um conjunto de repetições.

Exemplo:

Ler números inteiros do terminal e para cada número positivo n calcular a soma de 1 até n ( para n = 4, a soma é 10).Terminar quando ler um número menor ou igual a 0 (zero).

n > 0sim

não

escrever“pf um nº”

ler n

1 2

Isto é um while !!!

1

s = 0

i = 1

i <=nsim

não

escrever“pf um nº”

ler n

2

s = s + i i = i + 1

escrever“a soma é” s

E aqui um for !!!

#include <stdio.h>main ( ){ int s,n,i;

printf(“Por favor um número\n”);scanf(“%d”,&n);while (n > 0){ s = 0 ; for (i = 1; i <= n; i = i +1)

s = s + i;printf(“A soma é %d\n”,s);printf(“Por favor mais um número\n”);scanf(“%d”,&n);}

}

Observações

- a “instrução” do while é um bloco !- Poderíamos utilizar um while em vez do for

(isto sempre é possível!),mas o for é mais simples.

Exemplo:

Ler números inteiros do terminal e para cada número positivo n calcular o factorial ( para n = 4, factorial = 4*3*2*1).Terminar quando ler um número menor ou igual a 0 (zero).

n > 0sim

não

escrever“pf um nº”

ler n

1 2

Isto é um while !!!

1

f = 1

i = n

i >=1sim

não

escrever“pf um nº”

ler n

2

f = f * i i = i - 1

escrever“o factorial é” f

E aqui um for !!!

#include <stdio.h>main ( ){ int f,n,i;

printf(“Por favor um número\n”);scanf(“%d”,&n);while (n > 0){ f = 1;for (i = n; i >= 1; i = i - 1)

f = f * i;printf(“O factorial é %d\n”,f);printf(“Por favor mais um número\n”);scanf(“%d”,&n);}

}

Exemplo:

Desenhar um rectângulo, no terminal, composto por um caracter.O caracter a altura e largura deverão ser pedidos ao utilizador.Para o caracter x , altura 2 e largura 3 seriaxxxxxx

2

fim

início

escrever“pf um caracter”

ler ch

escrever“a altura e a largura?”

1

ler a,la

1

i = 1

i <= asim

não

2

escreverch

sim

escrever“\n”

j = 1 i = i + 1

um for !!!j <= la

j = j + 1

não

e dentro mais um for !!!

#include <stdio.h>main ( ){ char ch; int a,la,i,j;

printf(“Por favor um character\n”);scanf(“%c”,&ch);printf(“Por favor a altura e a largura\n”);scanf(“%d%d”,&a,&la);for (i = 1; i<=a; i = i +1){

for (j = 1; j<=la; j = j +1)printf(“%c”,ch);

printf(“\n”);}

}

Observações

- O primeiro for tem duas instruções (dentro de um bloco): o segundo for e o printf(“\n”).

- O segundo for tem apenas uma instrução, o printf(“%c”,ch).