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.