Prévia do material em texto
AULA PRÁTICA 3 01/09/2008
Aluna: Ana Carolina Arantes Araújo Turma: A1
1.1-
Primeira maneira:
program estrela;
var valor, lado, losango: integer;
begin
readln (valor); {na figura, valor=100, que corresponde ao lado do hexágono do contorno}
for lado:= 1 to 6 do
begin
pfrente(valor);
pdireita(60);
end;
un;
pfrente(valor/2);
pdireita(60);
pfrente(valor/2);
pdireita(60);
pfrente(valor/2);
pesquerda(60);
ul;
for losango:= 1 to 6 do
begin
ptras(valor/2);
pdireita(120);
pfrente(valor/2);
pesquerda(120);
pfrente(valor/2);
pesquerda(60);
pfrente(valor/2);
end;
dr;
end.
Segunda maneira:
program hexagonos;
var valor, x: integer; {declaração das variáveis do programa principal}
procedure hexag (valor: integer); {declaração do procedure com argumento}
var lado: integer;
begin
pdireita(60);
for lado:= 1 to 6 do
begin
pfrente(valor);
pdireita(60);
end;
end; {fim do procedure}
begin {início do programa principal}
readln(valor); {na figura, valor = 50}
for x:= 1 to 6 do
begin
hexag(valor); {chamada do procedure}
end;
dr;
end. {fim do programa principal}
1.2 -
program poligono;
var valor, lado:integer;
begin
readln(valor); {na figura, valor = 30}
for lado:= 1 to 13 do
begin
pfrente(valor);
pdireita(60);
valor:= 10+valor;
end;
dr;
end.
2.0 –
program sequencia;
var inicio, intervalo:integer;
procedure seq (inicio, intervalo: integer);
var x: integer;
begin
for x:= 1 to 8 do
begin
inicio:= inicio + intervalo; {incrementação}
writeln(inicio);
end;
end;
begin
readln(inicio); {no exemplo, inicio = 2}
readln(intervalo); {no exemplo, intervalo = 5}
seq (inicio, intervalo);
end.
[Rodando... sequencia]
2
7
12
17
22
27
32
37
3.0 -
program icha;
var lado: integer;
procedure espiral (deslocamento: real; vezes: integer);
begin
if vezes <= 50
then begin
pfrente(deslocamento);
pdireita(90);
vezes:= vezes + 1;
deslocamento:= deslocamento + deslocamento/30;
espiral(deslocamento, vezes); {recursão}
end;
end;
begin
readln (lado); {na figura, lado = 30}
espiral(lado, 1);
dr;
end.
Explicação: O programa icha inicia com a declaração do procedure espiral, que tem como argumentos o deslocamento do robô e o número de vezes que o programa repetirá. Nos comandos, o robô anda para frente o deslocamento e vira para direita 90graus. Em seguida, soma se 1 ás vezes que tais comandos foram executados e soma se 1/30 ao deslocamento anterior, ou seja, o número de vezes aumenta de 1 em 1 e o deslocamento aumenta de 1/30*deslocamento. O último comando do procedure é chamar ele mesmo (por recursão), assim o robô volta a repetir os comandos do procedure. O programa principal inicia se lendo o lado/deslocamento do robô e em seguida chama o subprograma procedure espiral para ser executado.