19 – a instrução for
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 .
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 ).
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);
}
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).
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).
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
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”);}
}