|
MC102 |
| O COMANDO FOR |
Lembra de nosso procedimento para desenhar um quadrado na tela? Lembra como fazíamos para desenhar dois? Nós
PROGRAM quadrados;
PROCEDURE um_quad;
{aqui ía o corpo do procedimento}
BEGIN
um_quad;
writeln;
um_quad;
writeln;
END.
|
Mas e se quiséssemos desenhar 10 triângulos? Teríamos de escrever 10 vezes um_quad; e 10 vezes writeln;. Nossa! Isso não parece certo. Não seria mais fácil ter um algoritmo assim?:
Como fazemos isso em Pascal? Usando FOR:
FOR cont:=1 TO 10 DO
BEGIN
um_quad;
writeln;
END;
|
E se quisermos um número de quadrados diferente de 10? Basta substituir o 10 por esse número.
Reparou na variável cont? Ela é INTEGER, não esqueça de declará-la no VAR.
Mas afinal, o que o FOR faz? Vamos ler o comando:
FOR cont:=1 TO 10 DO algo
|
Ou seja, "para cont valendo inicialmente 1 até 10 faça algo. Peraí, cont só recebeu 1. Como seu valor pode chegar a 10? é que, a cada repetição, o comando for incrementa cont, ou seja, soma 1 a cont. Assim, ele executa isso 10 vezes, pois após 10 vezes somar 1 a cont, esse chegará a ter 10 (se teve 1 como valor inicial).
Então, o for age assim:
PROCEDURE um_quad;
BEGIN
writeln('****');
writeln('* *');
writeln('* *');
writeln('****');
writeln
END;
|
Mas, e nesse caso, como usaríamos o for? simples:
FOR cont:=1 TO 10 DO
BEGIN
um_quad
END;
|
Somente assim? Não. Há um outro modo: como o corpo do FOR (o que está entre BEGIN e END) contém um só comando, podemos fazer assim:
FOR cont:=1 TO 10 DO um_quad;
|
Economizamos duas linhas de escrita!
Atenção! Não confunda! Se dentro do for você quiser mais de um comando, deve colocar esses comandos entre BEGIN e END. Por exemplo:
FOR cont:=1 TO 10 DO
um_quad;
writeln('quad');
|
O que isso faz? Não deixe a edentação te enganar, isso é o mesmo que:
FOR cont:=1 TO 10 DO um_quad;
writeln('quad');
|
Ou seja, isso desenha 10 quadrados dando uma linha em branco após cada um e então escreve 'quad'. Se quisermos escrever quad 10 vezes temos que fazer assim:
FOR cont:=1 TO 10 DO
BEGIN
um_quad;
writeln('quad');
END;
|
Então, eis o programa completo:
PROGRAM quad;
VAR cont : integer;
PROCEDURE um_quad;
BEGIN
writeln('****');
writeln('* *');
writeln('* *');
writeln('****');
writeln;
END;
BEGIN
FOR cont:=1 TO 10 DO um_quad
END
|
Poderíamos também por tudo isso no procedimento. Veja onde foi posta agora a declaração da variável:
PROGRAM quad;
PROCEDURE dez_quad;
VAR cont : integer;
BEGIN
FOR cont:=1 TO 10 DO
BEGIN
writeln('****');
writeln('* *');
writeln('* *');
writeln('****');
writeln
END
END;
BEGIN
dez_quad
END.
|
| ITERAÇÃO |
Suponha, agora, que queremos contar os quadrados desenhados. Então, queremos que a saída seja:
quad 1
****
* *
* *
****
quad 2
****
* *
* *
****
.
.
.
quad 10
****
* *
* *
****
|
Como fazemos? Podemos usar a variável cont. Para isso:
BEGIN
FOR cont:=1 TO 10 DO
BEGIN
writeln('quad ',cont);
um_quad
END
END.
|
Lembra que o for incrementava cont? Pois é. Podemos usar esse fator a nosso favor. Vejamos outro exemplo. Vamos imprimir os 10 primeiros pares:
FOR cont:=1 TO 10 DO writeln(2*cont);
|
E a saída é:
2
4
6
...
20
|
E agora os 10 primeiros ímpares:
FOR cont := 1 to 10 do writeln(2*cont -1);
|
E teremos:
1
3
5
...
19
|
Agora vejamos alguns exemplos (estude-os cuidadosamente, vendo a importância de comentar o código. Fica mais claro não?):
VAR soma : integer; {soma dos números}
cont : integer; {contador do for}
BEGIN
soma := 0; {inicializei a soma}
FOR cont := 1 to 100 do
soma := soma + cont; {vou somando os números}
writeln(soma);
END.
|
VAR soma : integer; {a soma dos termos}
razao : integer; {a razão da PA}
cont : integer; {contador do FOR}
termo : integer; {cada termo da PA}
BEGIN
soma := 0; {inicializando a soma}
razao := 3; {a razão da PA é 3}
termo := 1; {primeiro termo da PA}
FOR cont:=1 TO 10 DO
BEGIN
soma := soma + termo; {adiciono o termo anterior à soma}
termo := termo + razão {calculo o próximo termo da PA}
END;
writeln('A soma de ',cont,' termos da PA de razão ',razao,' com início em 1 é ',soma)
END.
|
Vamos ver agora o conteúdo de cada variável após cada iteração:
cont soma termo
- 0 1
1 1 4
2 5 7
3 12 10
4 22 13
5 35 16
6 51 19
7 70 22
8 92 25
9 117 28
10 145 31
A soma de 10 termos da PA de razao 3 com início em 1 é 145
|