Vous êtes sur la page 1sur 36

Introduo ao PascaL

Angelo de Moura Guimares


angelo@dcc.ufmg.br

PascaL uma implementao quase completa de um compilador Pascal. Alm de outros recursos do Pascal, o que ela tem de especial a incorporao dos principais comandos da linguagem LOGO, com facilidades para a produo de figuras. Da mesma forma que em LOGO, PascaL usa um rob triangular que aparece na tela, como metfora para um rob real, originriamente parecido com uma tartaruga.

Podemos, por exemplo, desenhar um segmento de reta com 60 "passos. Isso equivale a ligar o motor do rob real durante um certo tempo correspondente ao deslocamento de 60 passos para a frente. O rob tartaruga poder deixar um rastro devido a uma caneta presa na sua base. Para girar o rob para a direita, basta girar as rodas da frente em 90 graus direita e acionar o motor. Como estaremos usando a figura do rob como uma metfora no ser necessrio nos preocuparmos com o acionamento do motor.

Professor do Departamento de Cincia da Computao da UFMG

Para ativar o PascaL, procure o cone ao lado no diretrio e d dois cliques sobre ele para ativar o programa.
PascaL

Isso far com que o PascaL seja carregado e fique pronto para uso. Ao fazer isso o sistema PascaL iniciar o processo de Login. Se voc desejar instalar o PascaL na sua mquina veja as instrues no Anexo I. Entre com o seu cdigo de usurio. Pode ser o seu nome ou seu nmero de matrula(por exemplo, 200014045).
Clique nos botes OK e voc dever obter uma tela como a que est mostrada a seguir:

Barra de Operaes

rea de desenho

Tringulo (rob) rea de histrico

rea de comandos

No PascaL, para avanar o rob tartaruga basta escrever pfrente(60) no espao para comandos. pfrente uma abreviatura de PARA A FRENTE, e sua execuo, far com que o rob se desloque e (eventualmente) deixe um rastro na tela.

Da mesma forma podemos usar o comando pdireita(90) no espao de comandos. pdireita uma abreviatura para PARA A DIREITA e sua execuo far com que o rob gire 90 graus na tela. Um dos vrtices do tringulo representa a cabea do rob. Esse vrtice indica a direo e o (aponta para ) sentido. Na figura a seguir vemos o ambiente, com alguns comandos PascaL mostrados na rea de histricos e o desenho equivalente produzido na rea de desenhos.

Por enquanto, os seguintes comandos podem ser utilizados no ambiente do Logo. Eles so adaptaes dos comandos Logo que funcionaro no PascaL: Comando pfrente(p); pdireita(a); Significado Para Frente onde p o nmero de passos Para Direita onde a o ngulo Efeito Faz o rob se deslocar p passos para a frente na direo e sentido em que estiver apontando Faz o rob girar a graus para a direita em relao direo em que estiver apontando.

Limpa a Tela em Pascal Dr; Ar; UL; UN; Desaparea o rob Aparea o rob Use Lpis Abaixa o lpis que est na base do rob Use Nada Levanta o lpis que est na base do rob.

rea de histrico. Coloca rob no centro da rea de desenhos. Faz o tringulo (rob) desaparecer. Faz o tringulo (rob) aparecer Faz com que, nos comandos usados depois desse, o rob deixe rastro na tela. Faz com que, nos comandos usados depois desse, o rob no deixe rastro na tela.

Obs: Os comandos PascaL podem ser fornecidos em maisculas ou minsculas indiferentemente. No existe um comando de desfaz, portanto se um erro for cometido preciso apagar o desenho (com o comando Clrscr;) e repetir os comandos novamente. Para fazer o rob tartaruga mover para traz basta fornecer um nmero negativo, exemplo: pdireita(-50), ou usar o comando ptras(50). Para fazer a tartaruga virar para a esquerda basta fornecer um nmero negativo, por exemplo pdireita(-90) ou usar o comando pesquerda(90). A seguir sero apresentados alguns desafios. Utilize os comandos j vistos e tente reproduzir os desenhos apresentados nos desafios.

Lista de Desafios 1 Desafio 1.1


Construa um desenho com dois segmentos adjacentes, um ngulo de 90 graus entre eles e comprimento de 100 e 120 passos respectivamente.

Desafio 1.2

Construa um desenho com dois segmentos adjacentes, um ngulo de 30 graus entre eles e comprimento de 100 e 80 passos respectivamente.

Desafio 1.3
Construa um desenho com dois segmentos no adjacentes, um ngulo de 90 graus entre eles e comprimento de 100 e 80 passos respectivamente e uma distncia de 100 passos entre eles (veja figura).

Desafio 1.4 Produza o desenho de um quadrado 100 x 100, usando apenas os comandos da tabela acima:

Desafio 1.5 Produza o desenho de um tringulo equiltero 100 x 100 x 100, usando apenas os comandos da tabela acima.

Desafio 1.6 Produza o desenho ao lado, usando apenas os comandos PascaL da tabela acima.

Desafio 1.7 Produza o desenho ao lado, usando apenas os comandos

Desafio 1.8 Que figura vai ser produzida pela execuo da sequncia de comandos a seguir (tente responder antes de tentar no sistema PascaL): pfrente (-100); pfrente(50); Pdireita(-90); pfrente(-50); pfrente(100); Construindo programas PascaL At agora, s fizemos uso de comandos simples, digitados um a um na rea de comandos. Para produzir uma figura um conjunto de comandos devem ser fornecidos em sequncia. Um programa nada mais do que um conjunto de comandos em sequncia. Podemos dar um nome para esse conjunto de comandos e nos referirmos a este nome ao invs de ter que escrever todos os comandos novamente. Um programa em PascaL deve ser editado, salvo em um arquivo compilado e executado. o que veremos a seguir. Usando a barra de operaes Para fazer um programa, isto , agrupar um conjunto de comandos formando um conjunto nico, precisaremos usar as opes da barra de operaes, com os seguintes botes:

Esses botes tem as seguintes funes:

PascaL que utilize comandos do PascaL. Abrir um arquivo j existente para fazer modificaes ou consulta. Chamar o compilador PascaL para verificar se o programa fonte criado pela primeira vez (via Novo) ou editado (via Abrir) est sintticamente correto. Executar o programa PascaL j compilado. Encerrar o programa. Limpar a tela e colocar o rob no centro na direo norte. Para criarmos um programa, portanto, o primeiro passo ser clicar no boto . Ao fazermos isso, o sistema pede pelo nome do arquivo. Digamos que nosso objetivo ser o de criar um programa para desenhar um quadrado. Vamos cham-lo portanto de quadrado. Fornecido o nome, o sistema acrescenta o sufixo .pas e abre uma janela com o diretrio pedindo a confirmao. Confirme clicando no boto Abrir..

A janela do editor j pr-formatada para inclurmos os comandos PascaL

Todo programa Pascal comea com a palavra program seguida pelo nome do programa. O sistema usou como nome do programa a palavra (quadrado) fornecida anteriormente. Os comandos PascaL devem ficar entre as clausulas begin e end. Esse ltimo end sempre seguido de um ponto(.). Portanto, colocamos o cursor no final da palavra begin e apertamos a tecla enter para incluir uma nova linha, onde escreveremos o primeiro comando. Cada vez que a tecla enter for apertada uma nova linha ser includa. Podemos ento escrever o programa. Depois da palavra program e o nome do progama e antes do begin aparece um comentrio {declaraes}. Ele est colocado al para lembrar o local das declaraes das variveis do programa. Isso ser visto mais frente. Por enquanto podemos retirar essa linha. Da mesma forma o comentrio {Comandos} indica o local onde sero escritos os comandos. Podemos eliminar essa linha tambm. Observe que no programa Pascal cada comando separado do outro por um ponto e vrgula (;). A ausncia de um ponto e vrgula pode causar erros na compilao do programa. O ponto e vrgula em Pascal indica fim de comando e um conjunto de comandos

vrgula apresenta uma estrutura de controle chamada seqncia, isto , cada comando executado depois do anterior, na seqncia em que aparecem. Uma vez editado o programa, o passo seguinte ser salvar o arquivo. Para isso basta clicar no menu File da janela do Editor que um menu deslizar para baixo com as opes de arquivo. Vamos salvar e sair do editor soltando o ponteiro do mouse sobre Save and Exit. Neste exemplo, o arquivo quadrado.pas ser salvo no diretrio c:\temp\200014045. Caso no existisse anteriormene, esse diretrio foi criado durante o nosso login do PascaL (no seu caso dever ter o seu cdigo de usurio).

Podemos agora compilar o programa PascaL j armazenado, clicando o boto . Se o programa no contiver erros de sintaxe, aparecer a mensagem Compilou Ok. Voc pode acompanhar o processo de compilao na rea de histrico.

Se por um acaso o programa fonte PascaL apresentasse algum erro de sintaxe ele seria apontado no processo de compilao. Antes de continuar o sistema pede que

Compilou OK e clique no boto Sim.

Quando um programa est com erro de compilao ele no pode ser executado e precisa ser depurado ou corrigido at que a compilao esteja Ok. Neste caso clique no boto No. O sistema abrir automaticamente o editor para voc corrigir o programa. Alternativamente, podemos clicar no boto , para ter acesso ao arquivo

quadrado.pas e edit-lo para corrigir o problema. Ao clicarmos no boto , uma janela aparecer mostrando os arquivos contidos no diretrio c:\temp\200014045. Bastar ento clicar no arquivo quadrado.pas e no boto Abrir para que ele seja aberto pelo Editor.

Estando o programa corrigido, podemos ento compilar o programa novamente, apertando o boto . Na etapa de compilao um programa embutido,

chamado compilador, verifica se os comandos do seu programa esto escritos com a sintaxe correta da linguagem PascaL.Se o programa no contiver erros de sintaxe ele ser traduzido para um cdigo executvel pela mquina (linguagem de mquina). Quando aparecer novamente a mensagem Compilado Ok, e respondermos Sim, podemos clicar o boto quadrado. para executar o programa que desenhar o

Observe que a barra de comandos desaparece para indicar a execuo do programa. Aperte o boto Tela de Comandos para ativar a barra de comandos novamente. Se a figura no aprecer corretamente, voc pode rolar

horizontal ou verticalmente. Reposicione no local original, se os botes do PascaL (Sair, Rodar, Compilar, Abrir e Novo) no estiverem no local correto.

Observao: Neste ambiente PascaL, o nome do programa dever ser sempre igual ao nome do arquivo, criado atravs do boto Novo. Se o nome do programa for mudado ocorrer um erro que exigir que o sistema PascaL seja re-inciado. Nestes casoas escreva PascaL na linha de comandos. Lista de Desafios 2 Desafio 2.1 Faa um programa PascaL para desenhar um quadrado de lado 100. Desafio 2.2 Faa um programa PascaL para desenhar um tringulo equiltero de lado 100. Desafio 2.3 Identifique o erro de compilao no programa fonte a seguir:

Desafio 2.4

programa PascaL ao lado no desenha um tringulo. Dizemos que ele tem um erro de lgica. Mostre o desenho que ser produzido e aponte a falha. Observe que o nome dado ao programa no indica necessriamente o que ele faz.

begin ul; pdireita(30); pfrente(100); pdireita(60); pfrente(100); pdireita(60); pfrente(100); dr; end.

Usando uma estrutura de repetio Vamos retomar o programa que fizemos para desenhar um quadrado. Observe que o padro de comportamento executado um padro repetitivo. program quadrado; begin pfrente(100); pdireita(90); pfrente(100); pdireita(90); pfrente(100); pdireita(90); pfrente(100); dr; end; Os comandos prafrente(100) e pdireita(90) so repetidos 3 vezes seguidos de mais uma execuo de pfrente(100). No PascaL podemos usar um comando repetitivo para controlar essas repeties, transferindo para o computador essa tarefa. Existem vrios comandos de controle de repeties no PascaL. Utilizaremos aqui, inicialmente, o comando for. Para isso precisamos lanar mo de uma varivel (digamos, i): for i := 1 to 5 do begin

Pdireita(90); end; Uma varivel deve ser entendida como um local de memria capaz de conter um nico valor, mas esse valor pode ser modificado na medida que o programa vai sendo executado. Digamos que x uma varivel em um programa PascaL. Precisamos informar (declarar) isso ao compilador, usando a clusula var: Nessa clusula precisamos dizer que tipo de valor a varivel (ou espao de memria) pode conter. Vamos supor que x s pode assumir valores inteiros, isto , x . Neste caso declaramos: var x : integer; No nosso exemplo temos a seguinte execuo automtica: (i) atribuo do valor inicial 1 para a varivel i; (ii) Verificao do o valor da varivel i para ver se ele excede o valor final (5). Se exceder, o comando for encerrado (iii) Se o valor de i no excede o valor final, so executados os comandos que esto entre begin e end com esse valor de i ; (iv) aumento do valor de i em uma unidade. Se o valor 1 passar para 2, se 2 passar para 3, etc. (v) repetio de todo o processo a partir do tem (ii). Para escrever uma palavra ou frase na rea de histricos podemos usar o comando PascaL writeln, que significa write(escreva) line (linha). Ele escreve o que estiver dentro dos parnteses na linha corrente e, em seguida, posiciona o cursor na linha de baixo. Assim, o comando writeln( Ah!Eu t maluco! ); escrever na tela, na rea de hstrico a mensagem: Ah! Eu t maluco! No pascaL uma frase, palavra ou um caractere simples devem ser delimitados pelo apstrofe (aspas simples: )* Para testar um comando ou um conjunto de comandos Para os desfios a seguir observe que para executar um conjunto de comandos em Pascal, eles devem estar embutidos em um programa. Como voc j sabe, um programa comea com a palavra program , deve ter a palvra begin e deve terminar com um end seguido de um ponto(.). Assim se quizermos testar o comando writeln('PascaL cheguei!'), devemos fazer: program teste; begin

writeln('Pascal cheguei!'); end. No caso de haver o uso de variveis elas devem ser declaradas anteriormente, isto , preciso informar ao compilador que elas sero usadas. Declaraes de variveis elas devem ficar depois do program seguido do nome do programa e antes do begin: Veja o exemplo a seguir program teste; var i : integer; begin i := 10; writeln(i); end. Lista de Desafios 3 Desafio 3.1 a) O que ser escrito na tela com o comando for: for i := 1 to 5 do begin writeln( Ah!Eu t maluco!); end; b) Modifique o programa trocando o writeln por rotule. Que diferena voc notou? c) Acrescente o comando pdireita(60) depois do comando rotule: for i := 1 to 5 do begin rotule( Ah!Eu t maluco!); pdireita(60); end; O que aconteceu? Desafio 3.2 O que est sintticamente errado: for x 1 to 10 do begin

pdireita(90); end;

Desafio 3.3 O que est sintticamente errado: for y := 1 to 9 begin pfrente(90); pdireita(90); end; Desafio 3.4 O que est sintaticamente errado: For z := 6 to 20 do Pfrente(100); Desafio 3.5 O que ser escrito com a execuo do programa Program Serie; Var k : integer; begin for k := 1 to 7 do begin writeln(k); end; end. Desafio 3.6 Reescreva o programa quadrado.pas usando o comando for para produzir as repeties. Utilize a varivel i para controlar o processo. Procedimentos Um programa Pascal pode ser composto de vrios outros programas. Para fazer uma casinha o programa pode utilizar dois outros programas anteriores (quadrado e triangulo) que j estejam prontos. Diremos que um programa pode ser estruturado com diversos sub-programas, cada um dando conta de uma parte do problema. Os subprogramas em PascaL podem estar em bibliotecas parte ou embutidos no

prprio programa na forma de procedimentos e funes. Trataremos inicialmente dos procedimentos. O programa quadrado por exemplo, visto anteriormente, pode ser transformado em um procedimento, bastando reformular um pouco a sua sintaxe: program desenhaquadrado; procedure quadrado; var i : integer; begin for i := 1 to 4 do begin pfrente(100); pdireita(90); end; end; {quadrado} begin quadrado; end. Observe que um procedimento um mini-programa embutido dentro de outro programa. Ele declarado no incio do programa e sua execuo conseguida pela chamada do seu nome. Assim, o programa desenhaquadrado contm a declarao do procedimento quadrado. Como o programa comea, na verdade, a partir do comando begin o procedimento s executado depois de invocado antes do comando end. O procedimento quadrado tambm tem um bloco begin end (j que um miniprograma). Para deixar claro onde ele termina costume colocar um comentrio repetindo o nome do procedimento junto do end associado a ele.

O programa triangulo.pas, reformulado para usar o comando for apresentado ao lado, funciona corretamente?

Desafio 15 Fazendo uso do programa quadrado.pas, produza em PascaL o desenho abaixo:

Desafio 16 Fazendo uso do programa quadrado. pas, produza em PascaL o desenho abaixo:

Desafio 17 Fazendo uso dos procedimentos quadrado e triangulo produza o desenho abaixo

Desafio 18 Produza o desenho abaixo. Procure utilizar o que voc j tem pronto.

Desafio 19

Desafio 20 Escreva um programa PascaL, capaz de desenhar uma circunferncia.

Como voc deve ter percebido, podemos incluir vrios procedimentos em um programa como por exemplo, considerando o problema de desenhar uma casinha:

program casinha; procedure triangulo var i : integer; begin pdireita(30); for i := 1 to 3 do begin pfrente(100); pdireita(120); end; end; {triangulo} procedure quadrado; var i : integer; begin for i := 1 to 4 do begin pfrente(100); pdsiireita(90);

end; {quadrado} begin {desenha a casinha} quadrado; pfrente(100); triangulo; end. Parametrizao O programa quadrado.pas desenha um quadrado 100 x 100. Se desejarmos um quadrado 80 x 80 teremos que modific-lo, isto , precisamos abrir o arquivo e edit-lo, modificando o comando que especifica o nmero de passos que o rob deve movimentar:

program quadrado; var i : integer; begin for i := 1 to 4 do begin

program quadrado; var i : integer; begin for i := 1 to 4 do begin

pfrente(100);
pdireita(90); end; end. end. end;

pfrente(80);
pdireita(90);

Ora, essa soluo no vivel. Basta pensarmos que para desenhar um quadrado 30 x 30 ou 50 x 50 deveremos fazer os acertos correspondentes. Alm disso, ao fazer a modificao, perdemos a situao anterior. Seria algo como: para aprender a

fazer um quadrado 80 x 80, teramos de esquecer como fazer um quadrado 100 x 100, que j sabamos. A soluo geral para esse problema est na parametrizao de procedimentos, isto , escrevemos o procedimento em funo de uma varivel. Essa varivel ser instanciada no momento da chamada do programa. Para lidar com parmetros o Pascal exige que utilizemos procedimentos e funes. Veremos inicialmente como usar parmetros em procedimentos. Para o nosso exemplo o programa quadrado.pas deveria ser transformado para incluir um parmetro. Veja a procedure e a sua chamada abaixo . O desenho produzido est ao lado.

program quadrado; procedure fazquadrado( lado : integer); var i : integer; begin for i := 1 to 4 do begin pfrente(lado); pdireita(90); end; end; {fazquadrado} begin fazquadrado(100); fazquadrado(80); fazquadrado(50); end.

Consequentemente, usando o comando fazquadrado(100), obteremos um quadrado de lado 100 "passos". J o comando fazquadrado(80), produzir um quadrado de lado 80 e finalmente, fazquadrado(50), produzir o desenho de um quadrado de lado 50 "passos". Como vimos, uma procedure s executada sob chamada. Ela includa ou declarada antes da parte begin-end do programa. Neste local ela apenas declarada e no executada. A execuo s se d quando o nome da procedure invocado de dentro do bloco begin-end do programa. Quando o procedimento foi declarado com parmetros e invocada pelo programa principal, o valor usado na chamada (argumento) passado para o procedimento e instanciado para a varivel declarada no parmetro. Desafio 21 Reescreva o programa triangulo.pas para produzir o desenho abaixo, usando parametrizao:

Desafio 22 Reescreva e teste o programa casinha.pas incorporando os procedimentos quadrado e triangulo parametrizados. Desafio 23 Use o programa casinha.pas e produza o desenho abaixo

Desafio 24 Desenvolva um procedimento Pascal capaz de desenhar um pentgono regular, dado o valor do lado.

Desafio 25 Desenvolva um procedimento Pascal capaz de desenhar um hexgono regular dado o valor do lado. Desafio 26 Desenvolva um procedimento Pascal capaz de desenhar um octgono regular dado o valor do lado. Desafio 27 Desenvolva um procedimento Pascal capaz de desenhar um polgono regular qualquer dados o comprimento do lado e o nmero de lados. Desafio 28 Utilize o procedimento desenvolvido no desafio anterior para desenhar um quadrado. Desafio 29 Utilize o procedimento desenvolvido no desafio 27 para desenhar um tringulo. Desafio 30 Desenvolva um procedimento Pascal capaz de desenhar um retngulo, dados os lados (comprimento e altura).

Ao utilizar a parametrizao demos um grande passo no sentido da generalizao. Assim, ao invs de resolvermos um nico problema, como desenhar um quadrado, somos capazes de resolver uma familia de problemas similares, isto , podemos fazer um quadrado de qualquer tamanho. A parametrizao permite que um nico padro de comportamento possa ser usado em uma gama enorme de casos. O passo seguinte para maior generalizao envolve o uso de expresses aritmticas. Desafio 31 Fazer um programa PascaL para produzir o desenho abaixo

Neste caso, um nico procedimento quadrado pode desenhar os quadradinhos como o quadrado, em funo de um valor. Por exemplo: Quadrado (lado) e quadrado (lado*5). Nos prximos desafios no utilize diretamente o sistema PascaL. Tente resolver no papel. S depois confira sua resposta. Desafio 32 Se quadrado est definido como: procedure quadrado var i : integer; begin for i := 1 to 4 do begin pfrente(100); pdireita(90);

O que ser desenhado com os comandos: a) for i := 1 to 4 do begin quadrado; pfrente(300); pdireita(90); end;
b)

for i := 1 to 4 do begin quadrado; prente(200); pesquerda(90); end;

Desafio 33 Se tringulo est definido como: procedure tringulo; var i : integer; begin pdireita(30); for i := 1 to 3 do begin pfrente(100); pdireita(120); end; end; {triangulo que ser desenhado em cada caso:
a)

for i := 1 to 4 do begin triangulo; pdireita(60); end;

b)

for i := 1 to 4 do begin triangulo; pfrente(100); end; for i := 1 to 4 do begin triangulo; pfrente( 100); pdireita( 60);] end; for i := 1 to 12 do begin triangulo; pfrente( 100); pesquerda( 60); end; end;

c)

d)

Desafio 34 Se casinha est definida como: procedure casinha; begin quadrado; pfrente(100); triangulo; end;

O que ser desenhado em cada caso: a) for i := 1 to 6 do begin casinha; pfrente(100); pdireita(30); end; f i 1t 6d

casinha; pfrente(40); pdireita(120); end; Desafio 35 Diga o que ser desenhado: a) for i := 1 to 360 begin pfrente(1); pdireita(1); dr; end; b) for i := 1 to 6 do begin pfrente(60); pdireita(60); dr; end; Desafio 36 Voc pode mudar a espessura do lpis usando o comando esplapis(n), onde n pode variar de 0 (mais fino) at 5(mais grosso). Usando este comando, produza o desenho abaixo.

Desafio 37 Produza o desenho abaixo:

Arcos e Circunferncias O comando arco( g, r) capaz de desenhar uma arco de circunferncia de g graus e raio r. Por exemplo: Arco(90, 50) produz o desenho:

enquanto que Arco( 360, 100) produz:

Desafio 38
Faa um programa PascaL capaz de produzir o desenho abaixo:

Faa um programa PascaL capaz de produzir o desenho abaixo:

a) Escreva um programa PascaL capaz de desenhar uma oval.

Para isso utilize b) Usando o procedimento para fazer uma oval, desenvolvido em (a), escreva um programa PascaL que produza o desenho ao lado.

Desafio 39 Explique o que desenhado com a execuo do programa PascaL a seguir.

program fibarcossemq; var ant1,ant2, novo : integer; i, n : integer;

begin pdireita(90); un; pfrente(raio); ul; arco( 90, raio); un; ptras(raio); pesquerda(90); ul; end; {desenhaarco} procedure quadrado( lado : integer); var i : integer; begin for i := 1 to 4 do begin pfrente(lado); pdireita(90); end; end; {quadrado} procedure qua( a,b : integer); begin a := a*10; b := b * 10; desenhaarco(a); pdireita(45); un; pfrente(a*sqrt(2)); pdireita(45); ul; end; {doisqua}

clrscr; esplapis(2); qua(1,1); ant1 := 1; ant2 := 2; n := 6; i := 0; while i < n do begin i := i + 1; qua(ant1, ant2); novo := ant1 + ant2; ant1 := ant2; ant2 := novo; end; desenhaarco(10*ant1); end.
Desafios PascaL

Parte I Descrever padres de comportamento utilizando o PascaL. 1) Utilizando apenas o procedimento PascaL abaixo, produzir os dois desenhos ao lado. 2) procedure espiral(lado, angulo, acrescimo, nespiras : integer); var i : integer; begin for i := 1 to nespiras do begin pfrente(lado); pdireita(angulo); lado := lado + acrescimo; end; end; {espiral}

2) Utilizando o procedimento PascaL abaixo, foi produzida a figura ao lado Nesta figura os deslocamentos do rob (tartaruga) so completamente aleatrios. Modifique o procedimento para produzir o desenho apresentado abaixo dela. procedure caos; var i : integer; begin for i := 1 to random(300) do begin esplapis(random(5)); if random(2) = 0 then pfrente(random(60)) else pdireita(random(60)); if random(2) = 0 then pdireita(random(360)) else pesquerda(random(360)); end; end; {caos} 3) Utilizando o PascaL, produzir o desenho da espiral ao lado.

4) O que ser produzido com o comando PascaL: for i := 1 to 6 do begin rotule ('----------> PascaLogo'); pdireita(60); espere (40); mudecorlapis(random(255), random(255), random(255)); end;

5) Segundo a teoria das probabilidades, quando fazemos o lanamento de uma moeda para cima, a probabilidade de obtermos cara ou coroa de 50% para cada uma. Voc acredita nisso mas, provavelmente, nunca tentou verificar (exaustivamente) a veracidade desta afirmativa. Agora voc pode fazer isso, graas ao PascaL. A idia colocar o computador para fazer os "arremessos de moeda" e contar quantas caras e quantas coroas sero obtidas com um nmero muito grande (digamos 10.000) de jogadas. A expectativa que o nmero de caras obtido deva ser igual ao nmero de coroas obtido, ser que obteremos sempre esse resultado? 6) Usando o comando arco e o conceito de recursividade, produza o desenho ao lado usando o PascaL. O procedimento abaixo pode ajudar. procedure fractal( comp, lim : integer); begin if comp < lim then pfrente(comp) else begin fractal (comp div 3, lim); pesquerda( 60); fractal (comp div 3, lim); pdireita( 120); fractal (comp div 3, lim); pesquerda( 60); fractal (comp div 3, lim); end; end; {fractal} 7) Implemente o programa PascaL abaixo program rosadosventos; procedure hexagono(lado : integer); var i : integer; begin for i := 1 to 6 do begin pfrente(lado); pdireita(60); end; end; {hexagono}

var i : integer; begin for i := 1 to 6 do begin hexagono(lado); pdireita(60); end; end; {rosa} procedure coloredentro(lado : integer; vezes : integer); var i : integer; begin for i := 1 to vezes do begin un; pdireita(30); pfrente(lado); mudecorpreenche(random(255), random(255), random(255)); pinte; ptras(lado); pdireita(30); end; end; {coloredentro} procedure colorefora(lado : integer; vezes : integer); var i : integer; begin for i := 1 to vezes do begin un; pdireita(60); pfrente(lado + (1/2)* lado); mudecorpreenche(random(255), random(255), random(255)); pinte; ptras(lado + (1/2)*lado); end; end; {colorefora}

begin l

coloredentro(60, 30); colorefora(60, 30); end.

Vous aimerez peut-être aussi