Você está na página 1de 70

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS

Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao



















Introduo ao PascaL

















Esta apostila corresponde a uma adaptao para o ensino do II grau da apostila
Introduo ao PascaL produzida pelos professores ngelo de Moura Guimares e
Helton Fbio de Matos da Universidade Federal de Minas Gerais.


Rosngela Ftima da Silva
Maro 2007


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 1


NDICE




Introduo 02

Aula Prtica 01 - Ambiente de programao PascaL
Comandos bsicas do rob

04
Aula Prtica 02 - Ambiente de programao PascaL
Estrutura bsica de programas em PascaL

10
Aula Prtica 03 - Bibliotecas

21
Aula Prtica 04 - Estrutura de repetio For

22
Aula Prtica 05 - Comentrios para programas

26
Aula Prtica 06 - Procedimentos

28
Aula Prtica 07 - Parametrizao

32
Aula Prtica 08 - Aplicao de parmetros para soluo de problemas

34
Aula Prtica 09 - Comandos de Entrada/Sada

37
Aula Prtica 10 - Expresses aritmticas

42
Aula Prtica 11 - Funes

46
Aula Prtica 12 - Estrutura de tomada de deciso IF

54
Aula Prtica 13 - Estruturas aninhadas

61
Referncias Bibliogrficas

69



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 2


INTRODUO

Um pouquinho de histria ...

Na dcada de 60, duas linguagens de programao, muito interessantes para a
realizao do nosso curso, comearam a se desenvolver:

Uma delas o Logo, criado por Scymour Papert no Instituto de Tecnologia de
Massachussets (MIT). Utilizava um conjunto de comandos para controlar um rob-
tartaruga que andava pelo cho sobre uma folha de papel. O percurso feito pelo
rob poderia ser analisado, pois havia um lpis preso na base do mesmo. Esse
lpis podia ser controlado atravs de comandos, ou seja, poderia ser levantado,
abaixado, girar 90 para direita etc. Com o tempo o rob-tartaruga passou a ser
representado na tela de um computador por uma figura qualquer. Essa figura,
desenhada no centro da tela, poderia ser deslocada e rotacionada a partir de
comandos introduzidos via teclado.

A outra linguagem Pascal, cujo nome uma homenagem ao matemtico Blaise
Pascal. Ela foi criada em 1968, no Institut fur Informatik de Zurich, por Niklaus
Wirth que se baseou no Algol 60 e tinha o nobre objetivo de facilitar o seu
aprendizado, uma vez que pretendia ser uma linguagem adequada ao ensino de
programao, de criar bons hbitos de programao atravs de sua simplicidade e
permitir uma implementao confivel e eficiente em microcomputadores e em
grandes computadores.

Vrias linguagens de programao incluram comandos de manipulao da
tartaruga-rob e at mesmo em ambientes de desenvolvimento de programao
eles foram includos, como no Turbo Pascal at a verso 3.0. No entanto, os
ambientes de programao mais recentes do Logo para sistema Windows so ao
mesmo tempo mais simples e mais flexveis do que os ambientes em Pascal.
Surgiu ento a idia de unir as vantagens do ambiente Logo moderno com a
simplicidade, rigor e estruturao do Pascal, com propsito de oferecer um curso
inicial de programao menos complexo do que um ambiente de programao
convencional.

O ambiente Pascal, aqui apresentado por PascaL, onde L vem Logo, Light,
Legal ou Ldico, uma tentativa neste sentido. Foi desenvolvido no
Departamento da Cincia da Computao da Universidade Federal de Minas
Gerais. Os professores ngelo de Moura Guimares e Helton Fbio de Matos
utilizaram um ambiente Logo moderno, e desenvolveram um ambiente sobreposto
que permite utilizar comandos para controlar um rob, esses comandos so


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 3

escritos segundo a sintaxe do Pascal. Assim, medida que voc executa um
comando ele pode ser visualizado, tornando a linguagem altamente interativa.

Para implementao do PascaL foi utilizado a verso MSWLOGO desenvolvida
por George Mils que por sua vez foi baseado no trabalho de Daniel Von Berkon,
Brian Harvey, Michael Katz e Douglas Orlean, conhecido como Berkeley Logo
(USCB Logo).

O nosso objetivo oferecer um caminho fcil e interessante que lhe motive a
aprender. Cabe a voc, ao final deste curso, verificar se o Pascal ou no uma a
linguagem de fcil aprendizado, conforme proposto por Niklaus Wirth, e se ns,
professores do CEFET-MG, tambm cumprimos nosso objetivo ao propor esse
curso. Lembre-se VOC o nosso melhor feedback.




Atenciosamente,



Rosngela Ftima da Silva


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 4


AULA PRTICA 01



OBJETIVO:

Introduzir o ambiente de programao PascaL
Manipular os comandos bsicos do rob

INTRODUO

Para acessar o programa logo Pascal clique sobre o cone
denominado logo Atalho que est na pasta Atalhos, localizada na
rea de trabalho do seu computador, figura ao lado.

O programa ser aberto e voc observar a tela: About MSWLogo, Figura 1. Leia
as informaes sobre MSWLogo e clique no boto .

Figura 1 - Janela informativa sobre o MSWLogo


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 5

Logo em seguida surgir a janela de registro de usurio (Login), Figura 2. Nela
coloque o seu nome completo. Ele ser utilizado para abrir uma pasta onde os
seus arquivos sero guardados ao serem salvos. Essa pasta ser criada na
unidade C: e uma subpasta da pasta temp. Observe o exemplo, seguinte, nele a
pasta criada ser C:\temp\LucasDeAquino. Se a pasta j existir, os seus arquivos
sero acrescentados nela.


Figura 2 - Janela de registro do usurio

Aps digitar o seu nome, clique no boto Ok para passar para a prxima etapa.
Uma nova janela aparecer na tela, a janela de identificao do PascaL, Figura
3. Leia as informaes da janela Sobre o PascaL e clique no boto Ok para passar
para o ambiente de programao do PascaL.


Figura 3 - Janela de identificao do PascaL


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 6


O ambiente de programao do PascaL foi construdo sobre o ambiente do
MSWLogo. Por isso a janela principal, apresentada na Figura 4, se chama
MSWLogo Screen e tem os seguintes componentes:


Figura 4 - Janela do ambiente de programao do PascaL (comandos)

1. Barra de ferramentas Logo
No utilizaremos essas ferramentas uma vez que no so necessrias em
PascaL. Mas os alunos interessados podero consultar o Help dessa barra
para maiores informaes.

2. Barra de Operaes do PascaL
Essa barra oferece as ferramentas para editar, compilar, salvar e rodar
programas em PascaL, alm de permitir a sada do ambiente de
programao. No prximo guia essas ferramentas sero estudadas com
maiores detalhes.

3. Metfora do Rob
O tringulo mostrado no meio da rea em branco representa o Rob do
ambiente Logo. Atravs de comandos como PFRENTE(10) ordenamos ao
rob que ele se desloque 10 passos para frente, ou podemos direcion-lo 90
graus esquerda, PESQUERDA(90). Alm disso, podemos traar todos os
passos do rob utilizando a instruo UL e com isso traar figuras.



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 7

4. rea de Desenho
Toda a rea em branco da janela MSWLogo Screen representa uma folha
de papel na qual Rob pode traar o seu deslocamento.

5. Barras de Rolagem
A janela mostra apenas uma parte do espao em branco sobre o qual o Rob
pode deslocar. Atravs das barras horizontais possvel deslocar a janela
para direita ou para a esquerda e visualizar o que foi traado alm das
bordas da janela, assim como as barras verticais permitem visualizar o que
est acima ou abaixo das bordas.

6. Janela de Commander
Na parte inferior da janela MSWLogo Screen, aparece uma caixa ou janela
contendo:

Botes de operao do ambiente Logo: utilizados apenas por usurios
que estejam programando em Logo.

rea de Histrico: nesta rea ficam registrados todos os comandos
introduzidos pelos usurios, mensagens de erros e resultados produzidos.

rea de Comandos: nesta rea o usurio pode digitar alguns comandos
individuais em PascaL (e em Logo).


ATIVIDADES

1.1 - Utilize a rea de Comandos para testar os comandos da Tabela 1,
apresentada a seguir.

Dicas Dicas Dicas Dicas:

Para testar os comandos posicione o cursor dentro da caixa em branco
da rea de Comandos e digite apenas um deles de cada vez. Em seguida
pressione a tecla <enter> e observe o que aconteceu com o rob, ou seja,
com o tringulo posicionado na rea em branco. Observe tambm a rea
de Histrico.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 8



Tabela 1 - Comandos bsicos do Rob
Comando Significado Efeito
Pfrente(N) Para Frente
N o nmero de passos
Faz o Rob deslocar N passos
para frente na direo e sentido
para os quais estiver apontando
no momento.
Ptras(N) Para Trs
N o nmero de passos
Faz o Rob deslocar N passos
Para trs, na direo em que
estiver apontando no momento,
mas em sentido contrrio.
Pdireita(A) Para Direita
A o ngulo
Faz o Rob virar para direita A
graus em relao direo para
a qual estiver apontando no
momento.
Pesquerda(A) Para Esquerda
A o ngulo
Faz o Rob virar para esquerda
A graus em relao direo
para a qual estiver apontando no
momento.
ClrScr Clear Screen
Limpa a tela
Limpa a rea de desenhos e a
rea de histrico e coloca o Rob
no centro da rea de desenhos.
UL Use Lpis
Abaixa o lpis que est
na base o Rob
Faz com que os prximos
movimentos do Rob deixem
rastro na tela.
UN Use Nada
Levanta o lpis que est
na base do Rob
Faz com que os prximos
movimentos do Rob no deixem
rastro na tela.
DR Desaparea Rob

Faz o Rob desaparecer, ficar
invisvel. O Rob pode continuar
a receber comandos e poder
deixar o seu rastro.
AR Aparea Rob Faz o Rob reaparecer, tornando
visvel na posio em que estiver
na tela.
UB Use Borracha
Abaixa a borracha e
levanta o lpis que esto
na base o Rob
Apaga as linhas por onde o rob
passar.




CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 9

Ateno: Ateno: Ateno: Ateno:

Em Pascal os comandos podem ser escritos com letras maisculas,
minsculas ou ambas.

Para desfazer uma linha use o comando UB (Use Borracha) e em
seguida passe a borracha sobre a linha que voc deseja apagar. Observe
a seqncia de instrues:

Pfrente (100)
Ub
Ptras (100)
Ul

A instruo Ptras (100) desfaz, ou seja, passa a borracha sobre a linha
que voc acabou de traar. necessrio usar a instruo Use Lpis
(UL) antes de traar novas linhas, caso contrrio o rob continuar a
usar a borracha.

Se voc digitar algum comando incorretamente, uma mensagem de
erro ser registrada na rea de Histrico. Verifique a tabela de comandos
(Tabela 1) e digite novamente.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 10


AULA PRTICA 02


OBJETIVO:

Aprofundar os conhecimentos a respeito do ambiente de programao
PascaL
Aprender a elaborar programas em PascaL


INTRODUO

At agora, introduzimos instrues por instrues na rea de Comandos e
verificamos a sua execuo atravs dos movimentos do Rob na rea de
Desenho. Isto s foi possvel por que voc estava apenas testando as instrues
ou elaborando figuras muito simples. Imagine que voc queira traar figuras mais
complexas. Imagine, tambm, que voc queira reproduzir essas figuras mais de
uma vez. Seria muito trabalhoso digitar todos os comandos novamente na rea de
Comandos, no mesmo?

Figuras mais complexas exigem uma seqncia de comandos organizados
logicamente, ou seja, exigem a elaborao de um programa. Podemos elaborar
um programa conforme o exemplo apresentado a seguir:

Program <nome do programa>; Program Quadrado;
Begin Begin
<comando em Pascal>; PFrente(100);
<comando em Pascal>; Pdireita(90);
<comando em Pascal>; PFrente(100);
Pdireita(90);
PFrente(100);
Pdireita(90);
<comando em Pascal>; PFrente(100);
<comando em Pascal>; Pdireita(90);
End. End.

Como voc pode perceber, um programa em Pascal comea com a palavra
Program seguida pelo nome do programa e pelo ponto e virgula. Logo a seguir
vem a palavra reservada Begin, que indica o incio do cdigo. Os comandos ento
so colocados sempre seguidos por ponto e virgula. E finalmente, vem a palavra
reservada End, indicando final do cdigo, seguida pelo ponto final. importante
que voc observe a endentao do programa, endentar torna o programa mais


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 11

legvel.
Para a elaborao de um programa, em um ambiente qualquer de programao,
necessrio que as instrues sejam escritas em um editor de texto e em seguida
sejam salvas em um arquivo. Esse arquivo, ento, compilado, para que
possamos saber se o texto do programa foi escrito de acordo com as regras
sintticas da linguagem de programao escolhida, que no nosso caso o
PascaL. O compilador, tambm, transforma um arquivo texto, no qual est o
programa, em um arquivo executvel. Arquivos textos no rodam, servem apenas
para guardar textos, portanto o compilador transforma um arquivo texto em um
arquivo em linguagem de mquina, isto , que contm apenas zeros e uns,
linguagem que o computador entende. Uma vez compilado o programa, ele j
pode ser executado ou rodado, produzindo na rea de Desenho a figura que voc
programou.

Ento, atravs do procedimento descrito, voc elimina o trabalho de digitar vrias
vezes o mesmo conjunto de instrues para elaborar a mesma figura. Mas isto vai
requerer um pouquinho mais de conhecimento sobre o ambiente de programao
do Logo Pascal.

COMO CRIAR UM PROGRAMA EM PASCAL

O ambiente de programao Pascal oferece a Barra de operaes do PascaL,
Figura 5,.para que possamos editar, compilar e executar nossos programas.

Figura 5 - Barra de operaes do PascaL

A Tabela 2, apresentada a seguir, descreve a funo de cada um desses botes:
Tabela 2 - Descrio dos botes da Barra de operao PascaL
Boto Descrio

Cria um novo arquivo, onde voc pode criar programas em
PascaL.

Abre um arquivo, que contm um programa em PascaL, j
existente. Voc pode ento consult-lo ou modific-lo.

Chama o compilador PascaL para verificar se o programa fonte
est correto. Se a sintaxe estiver correta o programa traduzido
para o cdigo que a mquina executa, chamado cdigo
executvel.

Executa o programa PascaL j compilado, produzindo o que o
seu programa prope.

Limpa a rea de Desenho, apagando o desenho corrente.

Fecha o ambiente PascaL.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 12

Agora que j possumos as ferramentas bsicas para elaborar um programa em
PascaL siga os seguintes passos:

1. Editar e salvar um novo programa

Clique no boto e voc observar a abertura da janela Entrada,
Figura 6. Nela digite o nome do arquivo no qual voc salvar o texto do programa
que ser elaborado por voc. Se o seu programa traa um quadrado, ento uma
boa opo cham-lo de Quadrado, conforme voc pode observar na figura
abaixo.


Figura 6 - Janela de identificao do programa
Aps digitar o nome do programa, clique no boto OK.

Digitado o nome, o sistema acrescenta o sufixo .pas e apresenta na tela a
janela Abrir mostrando a pasta onde o arquivo ser criado, Figura 7. Observe o
nome da pasta na caixa Examinar. Se voc deseja confirmar a abertura do novo
arquivo clique no boto , caso contrrio clique no boto .


Figura 7- Janela de verificao e confirmao do novo arquivo


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 13

Ao clicar sobre o boto , a janela do editor de texto aberta e
apresenta a estrutura bsica do novo programa em PascaL.

Observe na Figura 8 que o <nome_do_programa> o mesmo nome escolhido
para o arquivo.



Figura 8 - Janela do editor de texto

Ateno: Ateno: Ateno: Ateno:

No ambiente Pascal o nome do programa igual ao nome do arquivo
criado atravs do boto Novo. Se o nome do programa for mudado
ocorrer erro e poder ser necessrio reiniciar o ambiente PascaL.

Como j foi mencionado, os comandos em PascaL devem ficar entre as clusulas
begin e end. Para digit-los no arquivo, coloque o cursor no final da palavra begin
e tecle <enter>, uma nova linha ser criada, digite o comando seguido por ponto e
vrgula. Cada vez que a tecla <enter> for pressionada uma nova linha ser
includa para que possamos o digitar o programa: Observe a Figura 9 a seguir.


Figura 9 - Programa Quadrado.pas



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 14

Os comandos so separados por ponto e vrgula. O ponto e vrgula, em PascaL,
indica o fim de um comando, ou seja, ele um separador. E um conjunto de
comandos separados por ponto e vrgula forma uma estrutura de controle
chamada seqncia. Isto significa que a execuo do programa comea com o
primeiro comando e continua seqencialmente at o ltimo comando. A ausncia
de ponto e vrgula pode causar erros de sintaxe durante a compilao.

Uma vez editado o programa, o passo seguinte ser salvar o arquivo. Para isso
basta clicar na opo File na barra de comandos da janela Editor. Uma nova
caixa de opes automaticamente aberta, clique sobre a opo Save and Exit
para salvar o arquivo e sair do editor de texto, Figura 10.



Figura 10 - Salvar e sair do programa

O arquivo quadrado.pas ser salvo na pasta c:\temp\LucasDeAquino. Essa pasta
foi criada durante o processo de login do PascaL, usando o nome LucasDeAquino
para nomear a sub-pasta.

Ateno Ateno Ateno Ateno:

Na hora de salvar utilize sempre a opo File localizada na janela Editor. A
janela MSWLogo Screen tambm possui a opo File, NO confunda.

2. Compilar o programa

O editor de texto o local para digitar, alterar, revisar e salvar o texto de um
programa. Entretanto para que um programa possa rodar necessrio submet-lo
ao processo de Compilao. Nesta etapa um programa chamado Compilador
verifica se os comandos do programa esto de acordo com a sintaxe da
linguagem PascaL. Se no houver erros de sintaxe, o programa ser traduzido
para o cdigo executvel de mquina.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 15


Para compilar um programa em PascaL, que naturalmente acabou de ser editado
e salvo, clique no boto . Este boto compila o ltimo arquivo editado e
salvo. Para compilar programas que foram editados e salvos anteriormente, abra
o arquivo do programa no editor de texto e salve-o novamente para que ele fique
sendo o ltimo.

Voc pode acompanhar o processo de compilao na rea de histrico. Se NO
houver erros de sintaxe, aparecer a mensagem Compilou OK. E tambm
surgir a janela Compilador, contendo a seguinte pergunta: A compilao est
correta? Como est tudo OK acione o boto . Veja Figura 11, a seguir.


Figura 11 - Compilar um programa

Se houver algum erro de sintaxe, ele ser apontado no processo de compilao.
Observe o exemplo apresentado na Figura 12. A falta do ponto e vrgula aps a
instruo pdireita(90) gerou a seguinte mensagem de erro na rea de Histrico:
EXPECTED END GOT PFRENTE. Embora essa mensagem no identifica
claramente o erro cometido, ela diz que o compilador esperava um END e
encontrou um PFRENTE que na realidade era a nica clusula correta aps um
comando que no foi encerrado por ponto e vrgula.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 16



Figura 12 - Erro na compilao

Alm disso, voc pode observar na rea de Histrico a seguinte mensagem de
erro: Erro na Compilao. Isso significa que esse programa NO pode ser
executado, ele precisa ser depurado ou corrigido at que a compilao esteja
correta.

Na janela Compilador aparecer a seguinte pergunta: A compilao est
correta? clique no boto . A janela inicial aparecer na tela, voc
dever abrir outra vez o programa, corrigir o erro, salvar e depois compilar. E se
por acaso houver mais erros voc deve repetir todos esses passos at que a
mensagem Compilou Ok seja retornada pelo compilador.


Ateno: Ateno: Ateno: Ateno:

Alguns erros comuns de sintaxe:
No observar a estrutura do texto: colocar comandos antes do Begin, no
colocar End, etc.
Uso de palavras erradas (Begim, Pfente, Pradireita, etc).
Falta de pontuao (esquecer de abrir ou fechar parnteses, do ponto e
vrgula, ou do ponto final aps o ltimo End, etc).


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 17

3. Abrindo programas j existentes

Existem vrias situaes que necessitamos abrir um programa existente. Uma
delas quando o programa apresenta erro de sintaxe, visto no item anterior. Mas
existe tambm, o erro de lgica, ou seja, o nosso programa no executa aquilo
que propusemos. Podemos elaborar um programa para desenhar um quadrado e
na realidade ele executar um losango. Outra situao seria a de melhorar um
programa j elaborado, como, por exemplo, retirar o rob da figura apresentada
acima. Ou simplesmente, precisamos rodar um programa elaborado h algum
tempo. Nesses casos devemos clicar sobre o boto da Barra de
ferramentas do PascaL. Aparecer na tela a janela Abrir, com a lista de arquivos
armazenados na pasta indicada na caixa Examinar, Figura 13.

Figura 13 - Janela para Abrir programas existentes

Se o arquivo indicado na caixa Examinar NO for o seu, selecione a sua pasta.
Use a seta ou o boto , ambos direita da caixa Examinar:. Uma vez
estando em seu diretrio, selecione o arquivo desejado clicando sobre o nome
dele, observe que o nome aparecer na caixa Nome do arquivo:. Ento clique
sobre o boto .


Ateno: Ateno: Ateno: Ateno:

A partir do momento que for escolhida uma nova Pasta, todos os prximos
arquivos sero salvos e abertos nesta nova Pasta, independente do local
em que ela esteja (disco rgido, disquete etc ).



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 18

Dica: Dica: Dica: Dica:

Aps a abertura do arquivo desejado, faa as alteraes que julgar
necessrio, e para que elas sejam efetivadas salve e compile novamente o
seu programa. Se voc apenas deseja rodar um programa elaborado h
algum tempo, tambm necessrio salvar e compilar, pois como voc j
sabe rodado o programa que acabou de ser compilado, assim como
compilado o programa que acabou de ser salvo.

4. Rodando um programa

Como o seu programa compilou corretamente, o compilador gerou o cdigo
executvel que pode ser submetido execuo. Para rodar ou executar um
programa recm compilado clique sobre o boto .


Ateno: Ateno: Ateno: Ateno:

Sempre ser executado o programa recm compilado.

Ao rodar um programa, se tudo der certo, o desenho aparecer na rea de
Desenho. E a Barra de operaes do PascaL desaparecer e em seu lugar
observaremos janela apresentada na Figura 14, a seguir.



Figura 14 - Janela para abrir a Barra
de operaes do PascaL.

Dessa maneira a rea de Desenho torna-se maior. Caso voc queira que a Barra
de operaes do PascaL reaparea, clique sobre o boto Tela de comandos da
janela Execuo.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 19



Aproveite e d uma olhadinha na sua obra de arte:



Figura 15 - Figura apresentada na rea de Desenho


Dicas: Dicas: Dicas: Dicas:

Se a figura no aparecer na rea de desenho, experimente inserir no incio
do programa a instruo UL (Use Lpis), pode ser que o lpis localizado na
base do rob esteja levantado.

Se o rob aparecer colado figura use a instruo DR (Desaparea Rob)
para remov-lo.



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 20

Caso a figura no aparea corretamente use as barras de rolagem
horizontal e vertical para reposicionar a janela.

Ao rodar o programa duas ou mais vezes, ou rodar sucessivamente
programas diferentes, pode ser que os desenhos fiquem sobrepostos ou
mal posicionados na tela. Use o comando ClrScr para limpar a tela. Ele
pode ser digitado na rea de Comandos entre uma rodada e outra, ou
includo no texto do programa. Voc ainda tem o opo de usar o boto
localizado na Barra de operaes do PascaL.


Ateno: Ateno: Ateno: Ateno:

Pode ocorrer que o seu programa tenha compilado corretamente, mas
tenha um erro que impea de ser executado. Inclusive pode acontecer da
janela Execuo no aparecer. Nestes casos existem duas opes para
restaurar o PascaL.

1. Clique sobre a opo HELP da Barra de ferramentas Logo
localizado na janela MSWLogo Screm, selecione e clique sobre a
opo Demo. Em seguida, digite a palavra PascaL na rea de
Comandos.
2. Feche o ambiente MSWLogo (clicando sobre o boto da barra
ou selecione File e depois Exit na Barra de ferramentas
Logo localizada na janela MSWLogo Screm. Em seguida carregue
novamente o ambiente PascaL.

Em ambos os casos, procure identificar o que ocasionou o erro antes de tentar
rodar o programa em PascaL novamente.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 21


AULA PRTICA 03


OBJETIVO:

Aprender a reutilizar programas existentes.


INTRODUO

Os programas antigos podem ser novamente reutilizados a qualquer momento.
Esse procedimento muito utilizado, tanto que vrias linguagens de programao
possuem suas bibliotecas. Bibliotecas so conjuntos de programas que executam
funes freqentemente utilizadas, como por exemplo, funes matemticas ou
funes relacionadas ao controle do hardware do sistema. Ento conveniente
que esses programas sejam elaborados apenas uma vez e estejam disponveis
para os usurios em suas aplicaes.

Ns sabemos que os programas do quadrado e do triangulo podem fazer parte de
vrias figuras geomtricas. Que tal construirmos uma biblioteca?

Observe o programa abaixo:

program casinha;
uses quadrado, triangulo;
begin
quadrado;
triangulo;
end.

Como voc pode perceber, at agora no usamos a clusula uses, ela indica ao
compilador que ele deve usar os programas, quadrado e tringulo, j existente em
sua biblioteca. Observe que em seguida os dois programas, identificados pela
clusula uses, so chamados no corpo do programa.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 22


AULA PRTICA 04


OBJETIVO:

Estudar a estrutura de repetio For.


INTRODUO

Observe os programas apresentados a seguir:


Program Quadrado;

Program Quadrado;
Begin Var Indice: integer;
Pfrente(100); Begin
Pdireita(90);
For Indice:= 1 to 3 do
Pfrente(100); Begin
Pdireita(90); Pfrente(100);
Pdireita(90);
Pfrente(100); End;
Pdireita(90);
PFrente(100);
Pfrente(100);
End. End.

Primeira verso verso 1.1 Segunda verso verso 1.2


Da maneira em que foi apresentada, a primeira verso, voc percebe que os
comandos Pfrente(100) e Pdireita(90) esto repetidos 3 vezes, seguido de mais
uma instruo Pfrente(100). Existem vrias maneiras para elaborar o mesmo
cdigo, observe a segunda verso do programa. O que foi apresentado chama-se
estrutura de repetio, note que as duas instrues aparecem apenas uma vez,
embora elas tenham que ser repetidas trs vezes. Ento o processo de repetio
ser executado apenas pelo computador, e no por ns programadores.

A partir deste momento vamos estudar tudo que foi preciso para a elaborao da
estrutura de repetio apresentada, por que afinal, imagine se essas duas
instrues repetissem mil vezes e ns tivssemos que escrev-la as mil vezes...


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 23

1. Varivel
Creio que voc j sabe o que uma varivel, basta lembrar do conceito
apresentado em matemtica. Pois , em matemtica, dizamos que X era uma
varivel se o valor de X pudesse mudar com o tempo, assumindo qualquer valor
de um conjunto definido. Em computao dizemos que varivel uma posio de
memria capaz de conter um nico valor, mas esse valor pode ser modificado
medida que o programa vai sendo executado.

Na verso 1.2 do programa apresentado anteriormente, dizemos que Indice
uma varivel em um programa em Pascal. Ento Indice uma posio na
memria do computador capaz de armazenar um valor pertencente a determinado
conjunto, ou tipo. Precisamos informar (declarar) isso ao compilador, ento
usaremos a clusula Var:. Atravs dela podemos definir um nome para a varivel
e dizer o tipo de valor que essa varivel poder armazenar. Suponhamos que
Indice possa assumir valores inteiros, isto , Indice . Ento feita a seguinte
declarao:

Var Indice: integer;

Essa declarao informa ao compilador que a varivel Indice ocupa um espao na
memria do computador capaz de armazenar valores do tipo inteiro.

De uma maneira geral, a declarao de variveis, bem como clusulas e
comandos em Pascal seguem um conjunto de regras bem definidas. Assim o
comando de declarao de variveis da seguinte maneira:

Var <Varivel_1>, <Varivel_2>, ... <Varivel_N> : <Tipo_da_varivel >;

Exemplo: Var Lado, Altura1, Altura2: integer;

Onde temos:

As vrgulas para separar os nomes das variveis.

Os nomes Lado, Altura1 e Comprimento, escolhidos pelo programador,
obedecem as seguintes regras:
1. Devem sempre comear com letra;
2. Devem conter apenas letras e algarismos. No podem conter
espaos em branco e/ou caracteres especiais.
3. Devem ser nomes significativos, isto : Lado representa o lado de
uma figura geomtrica qualquer, assim como Altura1 e Altura2 se
referem altura.



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 24

O tipo de variveis pode ser definido como Integer ou Real para valores
numricos.

A declarao de variveis feita no incio do texto do programa, antes do bloco
Begin_End. Veja a seguir a estrutura de um programa em Pascal incluindo
declarao de variveis:

Program <Nome_do_programa>;
Var <varivel>: <tipo>;
Begin
<Comando_em _Pascal>;
<Comando_em _Pascal>;
.......................
<Comando_em _Pascal>;
end.


2. Estrutura de repetio: comando for

O comando For um comando de repetio. Ele controla a execuo de uma
seqncia de comandos que se repetem por um determinado nmero de vezes.

A maneira de escrever o comando for em Pascal o seguinte:

For <Nome_da_Varivel> := <Valor_inicial> to <Valor_final> do
Begin
<Comando_em _Pascal>;
<Comando_em _Pascal>;
.......................
<Comando_em _Pascal>;
end;

Observe que logo aps o comando For, temos <Nome_da_Varivel> que deve
ser declarada no incio do programa como sendo do tipo integer. A varivel
controla o processo de repetio, assumindo inicialmente o <Valor_inicial>,
automaticamente acrescida de uma unidade a cada iterao, at que seu valor se
torne maior do que o <Valor_final>. importante saber que o <Valor_inicial> um
valor inteiro menor do que o <Valor_final>, que tambm do tipo inteiro. A cada
passo de iterao a seqncia de comandos que est delimitada pelo bloco
Begin_End executado. O processo de repetio interrompido quando a
varivel assumir um valor maior do que o <Valor_final> e o programa continuar a
partir do primeiro comando colocado depois do bloco Begin_End. D novamente
uma olhadinha no exemplo apresentado anteriormente, verso 1.2.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 25

Como vimos, na verso 1.2, a varivel Indice foi previamente declarada como
sendo do tipo Integer. No comando For, o primeiro valor que a varivel Indice
assumiu foi 1. A seguir o computador verificou se o valor armazenado em Indice
seria maior do que o <Valor_final>, que no nosso caso 3. Se fosse maior,
ento o comando For seria encerrado e o computador se desviaria para executar o
primeiro comando aps o bloco Begin_End, que no nosso caso a instruo
PFrente(100). Se o valor de Indice fosse menor ou igual ao <Valor_final>, ento o
computador executaria a seqncia de comandos que est dentro do bloco
Begin_End, a saber: PFrente(100) e PDireita(90). Aps executar a seqncia, o
computador incrementa uma unidade no valor armazenado em Indice, que
assume o valor 2, e volta a testar se o novo valor de Indice maior do que o
<Valor_final>. Se no for, o computador executa novamente a seqncia de
comandos dentro do bloco Begin_End, incrementa o valor de Indice e volta a
testar. Assim a varivel Indice assumiu sucessivamente os valores 1, 2 e 3. E os
comandos dentro do bloco Begin_End foram executados trs vezes.

Ateno: Ateno: Ateno: Ateno:

importante mencionar que cada linguagem de programao possui uma
maneira prpria de declarar suas vaiveis e de escrever suas estruturas de
repetio.

ATIVIDADES

4.1 - Corrija os erros presentes nos seguintes trechos de programas:


1. for Ind := 1 to 10 do

2. for Ind := 4 to 1 do

3. for Ind 1 to 4 do
Begin Begin Begin
Ul; Pfrente(100); Pfrente(140);
Pfrente(20); Pesquerda(90); Ptras(70);
Pdireita(36); End; Pesquerda(90);
End. End;


4. for Ind := 1 to 3 5. for Ind = 5 to 17 do 6. for Ind := 1 to 9 do
Begin Begin Pdireita(30)
Pfrente(100); Pdireita(30);
Pdireita(120); Pfrente(80);
Pfrente(100); Pdireita(120);
End; Pfrente(80);
End;




CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 26



AULA PRTICA 05


OBJETIVO:

Verificar a importncia da utilizao dos comentrios.


INTRODUO

Observe os programas apresentados a seguir:

Program EmpilhaTijolo;

Procedure Retangulo; {declarao do Procedimento Retngulo}
{Este procedimento traa um retngulo de lados 100x50}
Var Ind: Integer;
Begin
For Ind:= 1 to 2 do
Begin
Pfrente(50);
Pdireita(90);
Pfrente(100);
Pdireita(90);
End;
End; {fim da declarao do procedimento Retangulo}

Begin {Incio do programa}
Retangulo; {Chamada do procedimento para traar o primeiro retngulo}
Mudepos (100,0); {Muda o rob de posio}
Retangulo; {Chamada do procedimento para traar o segundo retngulo}
Mudepos (50,50); {Muda o rob de posio}
Retangulo; {Chamada do procedimento para traar o terceiro retngulo}
Dr; {Retira o Rob da tela}
End. {Fim do programa}

Quais as novidades apresentadas neste programa?

No sei se voc observou, mas uma das novidades que alm do cdigo, o
programa EmpilhaTijolo, apresentou alguns textos posicionados entre chaves.
Esses textos ajudam na compreenso do programa, explicando o que est sendo
feito em cada trecho. Todo texto entre chaves, no analisado pelo compilador,


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 27

em outras palavras, no so transformados em cdigo executvel. So chamados
de comentrios e servem para explicitar a funo de uma varivel, registrar a
referncia de um mtodo do autor, etc, sem interferir no programa.

As outras novidades so a declarao da Procedure Retngulo, a chamada desse
procedimento dentro do programa e o comando mudepos(x,y).. Existem muitas
novidades por aqui, no ? Ento imagine esse programa sem os comentrios...

O comando mudepos(x,y) estabelece as coordenadas x e y onde o rob deve ser
posicionado. Lembre-se que as coordenadas tm como referncia a origem do
sistema cartesiano e que ao ser executada essa instruo o rob ocupar uma
nova posio apontando sempre para cima.


Dica: Dica: Dica: Dica:

Os comentrios tm a finalidade de tornar o seu programa compreensvel.
Uma boa opo utiliz-los sempre.


ATIVIDADES

5.1 - Edite, compile e rode o programa EmpilhaTijolo, apresentado anteriormente.
Verifique se os comentrios colocados ajudaram voc na compreenso da figura
traada. Caso no tenha ajudado, coloque os comentrios pertinentes no
Programa EmpilhaTijolo.

5.2 - Edite, compile e rode o programa apresentado a seguir. Aps verificar o
funcionamento do programa coloque os comentrios que julgar conveniente.

Program Enigma;
var cont, j: integer;
begin
writeln(Digite um nmero menor que 5);
readln(cont);
for j:= 1 to cont do
writeln( um enigma!!!.);
end.


Dica: Dica: Dica: Dica:
Rode o programa. Se voc no perceber o que ocorreu d uma olhadinha
na Aula Prtica 09, l voc encontrar as funes writeln e readln.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 28


AULA PRTICA 06


OBJETIVO:

Estudar as maneiras de subdividir programas em Pascal.


INTRODUO

Um programa em Pascal pode reutilizar solues desenvolvidas em outros
programas. Essa tcnica foi empregada na construo da casinha, atravs dos
programas do tringulo e do quadrado, elaborados anteriormente. Imagine agora,
que os seus programas esto ficando muito grande, confusos, portanto de difcil
entendimento. Ento voc resolveu estrutur-los em diversos mdulos, de tal
maneira que cada um deles resolvesse parte do problema, funcionando como um
subprograma.

A linguagem Pascal oferece as estruturas Procedure e Function para implementar
subprogramas. Essas duas estruturas so definidas dentro do prprio corpo do
programa. Entretanto subprogramas podem tambm fazer parte de bibliotecas, ou
seja, estar localizados fora do programa do qual so chamadas.

Iniciaremos nossos estudos com a estrutura Procedure, tambm chamada de
Procedimento.

Observe o programa EmpilhaTijolo, apresentado a seguir.

Program EmpilhaTijolo;

Procedure Retangulo; {Declarao do Procedimento Retngulo}
{Este procedimento traa um retngulo de lados 100x50}
Var Ind: Integer;
Begin {Inicio da declarao do procedimento Retngulo}
For Ind:= 1 to 2 do
Begin
Pfrente(50);
Pdireita(90);
Pfrente(100);
Pdireita(90);
End;
End; {Fim da declarao do procedimento Retngulo}


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 29

Begin {Incio do programa}
Retangulo; {Chamada do procedimento para traar o primeiro retngulo}
Mudepos (100,0); {Muda o rob de posio}
Retangulo; {Chamada do procedimento para traar o segundo retngulo}
Mudepos (50,50); {Muda o rob de posio}
Retangulo; {Chamada do procedimento para traar o terceiro retngulo}
Dr; {Retira o Rob da tela}
End. {Fim do programa}

No programa EmpilhaTijolo est definido o Procedimento Retngulo. Observe que
um procedimento um mini-programa embutido dentro de um outro programa (da
a denominao de subprograma). Um procedimento declarado no incio do
programa, mas s executado quando invocado pelo programa dentro do seu
bloco Begin_End. Essa invocao na verdade uma referncia ao nome do
Procedimento. O procedimento tambm tem um bloco Begin_End, que determina
o seu incio e final.


Dica: Dica: Dica: Dica:

Para que o seu programa fique claro, identifique todos os blocos Begin_End,
determinando atravs de comentrios, se esses blocos pertencem ao
programa ou a um procedimento.

A forma geral para declarao de um procedimento a seguinte:

Procedure <Nome_do_Procedimento>;
<Declarao_de_variveis_locais>;
Begin {Incio do procedimento}
Nome_do_Procedimento; {Chamada do procedimento}
............................
End; {fim da declarao procedimento}

A declarao de um procedimento muito semelhante declarao de um
programa. Assim como nos programas, o nome do procedimento escolhido pelo
programador e deve ser um nome sugestivo, comear com letra, no pode ter
espaos em branco, sinais de pontuao, caracteres especiais tais como /, &, #, *,
$, etc, exceto o caracter sublinhar. O nome Triagulo_Equilatero um exemplo
vlido em Pascal.

Aps a declarao do procedimento, as <variveis_locais> podem ser declaradas,
caso elas existam. Variveis locais so aquelas que sero usadas APENAS dentro
do bloco Begin_End do procedimento. Os <Comandos_em_Pascal> tambm so


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 30

colocados dentro do bloco Begin_End. Observe que o End do fim do procedimento
seguido por ponto e vrgula.

Um programa pode conter vrios procedimentos, todos eles devem ser declarados
no incio, ou seja, aps a declarao das variveis do programa. Veja o formato
geral para declarao de vrios procedimentos:

Program <Nome_do_programa>;

{Declarao de variveis do programa}
Var <lista_de_variveis>: <tipo>;
<lista_de_variveis>: <tipo>;

{Declarao de procedimentos}
Procedure < Nome_do_procedimento_1 >; {Declarao do primeiro
procedimento}
<Declarao_de_variveis_locais>
Begin {Incio do procedimento}
<Comandos_em_Pascal>;
............................
End; {fim da declarao do primeiro procedimento}

.
.
.

Procedure < Nome_do_procedimento_N >; {Declarao do n-simo
procedimento}
<Declarao_de_variveis_locais>
Begin {Incio do procedimento}
<Comandos_em_Pascal>;
............................
End; {fim da declarao do n-simo procedimento}

Begin {Inicio do programa}
Nome_do_procedimento_1
.
.
.
Nome_do_procedimento_N
End. {Fim do programa}





CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 31


Acabamos de aprender que podemos subdividir os nossos programas atravs de
procedimentos. Sabemos que um subprograma pode tambm ser executado
atravs de uma funo, os detalhes ns veremos na Aula Prtica 11.


ATIVIDADES

6.1 - Refaa o programa Barquinho, proposto na Avaliao Prtica 03, exerccio
16, de tal maneira que os programas Trapzio e Tringulo se transformem em
subprogramas


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 32

.AULA PRTICA 07


OBJETIVO:

Estudar a passagem de parmetros.


INTRODUO

Na prtica anterior verificamos que um programa pode ser subdividido em funes
ou procedimentos. E comeamos a perceber a importncia dessas estratgias na
soluo dos nossos problemas.

Imagine ento que voc necessite traar vrios quadrados e que eles tenham
dimenses distintas... O que fazer? Seria vivel elaborar um procedimento para
cada dimenso do quadrado? Ou talvez, seria melhor, abrir o arquivo, mudar a
dimenso do quadrado, compilar o programa e execut-lo, a cada nova alterao?

D uma olhadinha no cdigo apresentado a seguir e verifique se ele uma
soluo satisfatria para o problema.

Program Quadrados;

Procedure FazQuadrado(lado: integer);
{declarao do Procedimento FazQuadrado: Este procedimento traa um
quadrado de dimenso determinada pela varivel lado}
Var Ind: integer;
Begin {Incio do procedimento FazQuadrado }
For ind:= 1 to 4 do
Begin
Pfrente(lado);
Pdireita(90);
End;
End; {Fim do procedimento FazQuadrado}

Begin {Incio do programa}
Clrscr;
FazQuadrado(100); {chamadas do procedimento FazQuadrado}
FazQuadrado(80);
FazQuadrado(50);
Dr;
End. {fim do programa}



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 33

O programa apresentado acima chama o procedimento FazQuadrado por trs
vezes. Cada chamada seguida por uma constante, entre parnteses. Essa
constante chamada de parmetro. Observe que na declarao do procedimento
foram definidos o nome e o tipo do parmetro, ambos entre parnteses e logo
aps o nome do procedimento, observe: FazQuadrado (lado: integer). O
parmetro , portanto, a varivel denominada lado do tipo inteiro. No momento da
chamada do procedimento o tamanho do lado do quadrado atribudo varivel
lado e o procedimento traar o quadrado do tamanho desejado
.
Como voc pode observar, a melhor soluo para o problema usar apenas um
procedimento, cham-lo varias vezes passando em cada chamada a dimenso do
quadrado a ser desenhado atravs de um parmetro.

Um procedimento pode receber mais de um parmetro, veja o formato geral para
declarao de procedimento com passagem de parmetros:

Procedure <Nome_do_procedimento> ( <Nome_da_1_varivel : tipo>;
<Nome_da_2_varivel : tipo>;
<Nome_da_N_sima_varivel>: tipo);
<Declarao_de_variveis_locais>
Begin {Incio do procedimento}
Nome_do_procedimento(varivel_1, varivel_2, ...,varivel_N);
............................
End; {fim da declarao do procedimento}


ATIVIDADES

7.1 - Rode o programa Quadrados apresentado anteriormente e verifique se a
dimenso de cada quadrado equivale dimenso do parmetro passado na
chamada do procedimento FazQuadrado.

7.2 - Reescreva o programa Triangulo para produzir a figura apresentada abaixo,
use parametrizao.






7.3 - Reescreva o programa da Casinha, utilizando os procedimentos do
Quadrado e do tringulo de tal maneira que as dimenses envolvidas sejam
passadas por parmetros.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 34


AULA PRTICA 08


OBJETIVO:

Aplicar a passagem de parmetros para soluo de problemas.


INTRODUO

Ao utilizar a parametrizao demos um grande passo no sentido da generalizao
de um problema. Assim, ao invs de resolvermos um nico problema, como por
exemplo desenhar um quadrado, somos capazes de resolver uma famlia de
problemas similares, isto , podemos fazer quadrados de qualquer dimenso.

ATIVIDADES

Os exerccios apresentados a seguir devem ser primeiro feitos manualmente e em
seguida no computador. Compare os resultados obtidos.

8.1 - Se o procedimento para traar um quadrado est declarado da seguinte
maneira:

Procedure Quadrado;
Var I: integer;
Begin
For I:= 1 to 4 do
Begin
Pfrente(100);
Pdireita(90);
End;
End; {Quadrado}

O que ser desenhado com os comandos:

A) for Ind := 1 to 4 do B) for Ind := 1 to 4 do
begin begin
Quadrado; Quadrado;
Pfrente(300); Pfrente(200);
Pdireita(90); Pesquerda(90);
End; End;



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 35

8.2 - Se o procedimento para traar tringulo est definido como:
Procedure Triangulo;
Var I: Integer;
Begin
Pdireita(30);
For I:= 1 to 3 do
Begin
Pfrente(100);
Pdireita(120);
End;
End; {Triangulo}

O que ser desenhado com os comandos:


A) for Ind := 1 to 4 do

B) for Ind := 1 to 5 do
begin begin
Triangulo; Triangulo;
Pdireita(60); Pfrente(100);
End; End;





C) for Ind := 1 to 4 do

D) for Ind := 1 to 12 do
begin begin
Triangulo; Triangulo;
Pfrente(100); Pfrente(100);
Pdireita(60); Pesquerda(60);
End;

End;

8.3 - Se o procedimento para a casinha est definido como:
Procedure Casinha;
Begin
Quadrado;
Pfrente(100);
Triangulo;
End;


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 36



O que ser desenhado com os comandos:


A) for Ind := 1 to 6 do

B) for Ind := 1 to 4 do
begin begin
Casinha; Casinha;
Pfrente(100); Pfrente(40);
Pdireita(30); Pdireita(60);
End; End;




CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 37


AULA PRTICA 09


OBJETIVO:

Estudar os comandos de Entrada e Sada.


INTRODUO

Alm de desenhar, programas podem tambm ser usados para ler um valor
externo ou imprimir os resultados obtidos em um processamento. Para executar
essas funes necessrio utilizar os comandos de entrada e sada, como
veremos a seguir:

COMANDO DE IMPRESSO: WRITELN

WriteLn formado das palavras write que significa escrever, e Ln (de line) significa
linha. Pronuncia-se write line.

O comando WriteLn pode ser utilizado para imprimir na tela ou no papel uma
seqncia de caracteres (ou strings), variveis, constantes e os resultados de
expresses aritmticas.

A sintaxe do comando para impresso de um texto, frase ou sequncia de
caracteres o seguinte:

WriteLn(<texto, frase ou sequencia de caracteres>);

Assim o comando:

WriteLn(T doidoT doido...T doido...);

escrever na tela, na rea de histrico a mensagem:

T doidoT doido...T doido...

O comando WriteLn imprime o que est entre apstrofos (texto, frase ou
sequncia de caracteres) na rea de Histrico do PascaL e depois muda o
cursor para a prxima linha.





CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 38


Ateno: Ateno: Ateno: Ateno:

No use sinais de pontuao ou aspas duplas como delimitador da
String.

A sintaxe geral para o comando WriteLn a seguinte:

WriteLn(<campo_1>, <campo_2>, ... , <campo_N>);

Onde cada <campo> pode ser preenchidos por uma sequncia de caracteres, um
caracter, uma varivel ou uma expresso aritmtica. Observe que os campos so
separados por virgulas.

Assim:

O comando:

WriteLn(O valor de x :, x );

escrever na rea de histrico, se X = 4:

O valor de x : 4

O comando:

WriteLn(A diferena entre 5 e 3 :, (5 - 3));

Ir imprimir:

A diferena entre 5 e 3 : 2

O comando:

WriteLn(O cosseno de 60 :, (cos(60)), .);

Ir imprimir:

O cosseno de 60 : 0.5.

Alm do comando WriteLn voc pode usar o comando Write para impresso. A
sintaxe a mesma porm, preste ateno, o comando Write imprime a sequncia
de campos, que estiverem entre parenteses mas no final, ou seja, aps imprimir o
ltimo campo, o cursor permanece na mesma linha. Lembre-se, quando ocorre a


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 39

execuo de um comando de Write (ou WriteLn) a impresso inicia sempre a partir
da posio do cursor.

interessante que voc saiba que o comando Write armazena, numa rea
temporria chamada Buffer, os dados antes de serem impressos. Somente
quando esta rea est cheia ou quando o comado WriteLn executado, que o
contedo dessa rea transferido para a tela ou impressora. Portanto, a execuo
do comando WriteLn vazio tem por objetivo forar a transferncia do Buffer.


COMANDO DE ENTRADA: READLN

Os comandos de sada (write e writeln) escrevem na tela ou no papel, uma cpia
dos valores armazenados no computador em uma varivel, em uma expresso ou
uma string. Comandos de entrada fazem o inverso: eles capturam ou lem um
valor externo, em geral do teclado ou de arquivos e armazenam em uma varivel
do programa.

No PascaL o nico comando disponvel para leitura o ReadLn, cuja sintaxe :

ReadLn(<Varivel>);

Durante a execuo desse comando, em PascaL, a janela Input Mode aberta,
Figura 16. O cursor est posicionado sobre a caixa Input onde voc deve digitar o
valor que deseja introduzir no computador. Aps digitar, clique o mouse sobre o
boto OK (ou digite a tecla <enter>) e o valor digitado ser lido e armazenado na
<varivel> indicada no comando ReadLn.

Figura 16 - Janela para introduo de dados.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 40


Ateno: Ateno: Ateno: Ateno:

No PascaL somente uma varivel pode ser lida de cada vez, ou seja,
para ler mais de uma varivel, deve-se usar o ReadLn para cada uma
delas.


ATIVIDADES

9.1 - Teste os comandos apresentados como exemplo:
A) WriteLn(O valor de x :, x ); {faa x:= 4}
B) WriteLn(A diferena entre 5 e 3 :, (5 - 3));
C) WriteLn(O cosseno de 60 :, (cos(60)), .);

9.2 - O que ser escrito na tela coma execuo dos seguintes comandos:

A) B)
Program Frase; Program Serie;
Var Ind: integer Begin
Begin for Ind:= 1 to 5 do
for Ind:= 1 to 3 do Begin
Begin Writeln(Ind);
Writeln(T doido... Tdoido...); End;
End; End.
End.


9.3 - Mude o comando writeln pelo comando write e verifique o que acontece.
Caso acontea alguma coisa que voc no estava esperando, apresente uma
nova soluo para os programas do item anterior.

9.4 - Execute os programas apresentados abaixo, verifique as ocorrncias e
acrescente os comentrios que julgar pertinentes:

A) Program LeiaIdade;
Var Idade: Integer;
Begin
readln(Idade);
writeln (Sua idade :, Idade. anos.);
End.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 41


B) Program FazRetangulo;
Var LadoMaior, LadoMenor: integer;
Procedure Retangulo(LMaior, LMenor: integer);
Var Ind: Integer;
Begin
for Ind:= 1 to 2 do
Begin
Pfrente(LMaior);
Pdireita(90);
Pfrente(LMenor);
Pdireita(90);
End;
End;

Begin {Incio do progrma}
Readln(LadoMaior);
Readln(LadoMenor);
Retangulo(LadoMaior, LadoMenor));
End. {Fim do programa}


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 42

AULA PRTICA 10

OBJETIVO:

Estudar expresses aritmticas em PascaL.
Estudar a prioridade dos operadores.
Estudar o comando de atribuio.

INTRODUO

Expresses aritmticas so usadas para resolver problemas tanto em matemtica
quanto para programao em PascaL. Em ambos a comcepo a mesma
entretanto em PascaL so formatadas de acordo com a sintaxe da prpria
linguagem, requerendo cuidados com alguns detalhes que aos poucos nos
habituaremos com eles.

EXPRESSES ARITMTICAS

As expresses aritmticas so formadas por operandos (que podem ser variveis,
constantes ou funes) e operadores aritmticos, Tabela 3. Utilizam apenas pares
de parnteses para priorizar operaes e devem ser escritas de forma linear, isto
se desejarmos escrever
a 2

escreveremos a 2 / .
Tabela 3 - Operadores aritmticos
Operao Operador Exemplo Operandos
Soma + 5 + 8
B + 6
X + Y
Operandos inteiros ou real
Subtrao - 9 4
B 2
X Y
Operandos inteiros ou real
Multiplicao
*
3 4
2 B
XY
Operandos inteiros ou real
Diviso real / 6.2 / 3
B / 5.9
X / Y
Pelo menos um dos operandos
deve ser do tipo real. (X ou Y real)
, o resultado real
Diviso
inteira
div 7 div 3
B div 5
X div Y
Os dois operandos devem ser do
tipo inteiro (B, X e Y so inteiros) e
o resultado tambm.
Modulo da
diviso
mod 7 mod 3
B mod 5
X mod Y
Os dois operandos devem ser do
tipo inteiro(B, X e Y so inteiros) e
o resultado tambm.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 43


Um dos detalhes a ser observado o tipo dos operandos. At agora usamos
apenas os nmeros inteiros (integer), podemos tambm trabalhar com os nmeros
reais (real). Lembra-se do conjunto dos nmeros inteiros e reais em matemtica?
Em PascaL o mesmo conceito. Portanto em uma diviso inteira os operandos e
o resultado da operao so nmeros inteiros. Na diviso real, um dos operandos
e o resultado da operao so do tipo real.

O outro detalhe o operador mod, ele retorna o resto (inteiro) da diviso entre
dois operandos inteiros. Observe os exemplos apresentado abaixo:

writeln(50 mod 9) Este comando imprime o resto da diviso inteira de 50
por 9, lgico que o valor impresso ser 5.
Writeln(5 mod 2) Este comando imprime o resto da diviso inteira de 5
por 2, ou seja, o valor 1.
Writeln(100 mod 7 mod 2) Ser impresso o resto da diviso da
expresso 100 mod 7 = 2 e 2 mod 2 = 0, isto o valor 0.

PRIORIDADE DA OPERAO NUMA EXPRESSO ARITMTICA

Uma expresso aritmtica em Pascal sempre escrita de forma linear e
avaliada (ou calculada) comeando da esquerda para a direita. Uma expresso
complexa envolve vrias operaes de soma, subtrao, multiplicao, diviso
potenciao, clculos de raiz, radiciao, etc. E em geral possui sub-expresses
que precisam ser avaliadas antes das demais. Na matemtica convencional
algumas operaes, por definio, devem ser realizadas em primeiro lugar, e sub-
expreses so colocadas entre parnteses, chaves e colchetes, para definir nveis
de avaliao. Em Pascal so usados apenas parnteses, em quantos nveis forem
necessrios, para manter a ordem original de avaliao das sub-expreses. A
Tabela 4 mostra a ordem de prioridades usada para avaliao de expresses
complexas.

Tabela 4 - Prioridades para avaliao de
expresses aritmticas
Ordem Descrio
1 Parnteses
2 Funes (internas ou criadas)
3 Div diviso inteira
Mod resto da diviso intera
4 , / multiplicao e diviso
5 +, - soma e subtrao
.




CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 44

Ateno: Ateno: Ateno: Ateno:

No use chaves nem to pouco colchetes em expresses aritmticas
escritas em Pascal: apenas use parnteses, em quantos nveis forem
necessrios.

No omita o operador de multiplicao em expresses aritmticas
escritas em Pascal. Escreva sempre 4*A*B. O compilador acusar erro
de sintaxe caso voc escreva: 4.A.B ou 4AB. Para escrever A x B,
escreva A * B. Se for escrito AB o compilador interpretar como uma
varivel.

COMANDOS DE ATRIBUIO

Em programao quando executamos uma operao aritmtica qualquer devemos
guardar o resultado da operao em um local apropriado ou imprimi-lo na tela, por
exemplo. Um local apropriado para armazenar dados uma varivel ou uma
posio de memria. Caso o resultado seja armazenado em uma varivel, ela
deve ser declarada. Como voc j sabe, a declarao usada para definir o
identificador da varivel e o tipo de valor que ela pode armazenar (real ou integer).

At agora usamos variveis para passar argumentos para procedimentos. Usamos
no comando de leitura ReadLn para armazenar os valores lidos durante a
execuo do programa e como varivel de controle do comando For. Vimos
tambm que variveis podem ser usadas como operando de expresses
aritmticas. E agora usaremos variveis em comados de atribuio, que talvez
seja a aplicao de uso mais comum em programao.

O comando de atribuio usado para armazenar em uma varivel o resultado de
uma expresso aritmtica. Uma expresso aritmtica pode ser formada por uma
varivel ou uma constante. Assim atravs do comando de atribuio podemos
armazenar em uma varivel o valor de uma outra varivel ou de uma constante.

Sintaxe do comando de atribuio:

<varivel> := <expresso aritmtica> ou
<varivel> := <constante> ou
<varivel> := <varivel>

O sinal de comando de atribuio representado por (:=). O resultado da
expresso aritmtica que aparece direita do sinal atribuido, ou seja,
armazenado na <varivel> indicada esquerda. Ou ento, uma cpia do valor da
<constante> ou da <varivel> que aparece direita do sinal armazenado na
<varivel> que aparece esquerda.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 45


Em resumo, o comando de atribuio armazena um valor em um espao
adequado para conter o tipo associado varivel. Como voc se lembra as
variveis usadas devem ser declaradas atravs da clusula var, bem no incio do
programa, do subprograma ou na lista de parmetros. Assim o trecho do programa
Program TestaVariavel;
Var Inteiras: integer;
Reais: real;
begin
Inteiras:= 5;
Reais:= 3.141516;
end.
.....................................
far com que o espao reservado para guardar um nmero inteiro denominado
Inteiros contenha o valor 5 e o espao reservado para acomodar um nmero real,
identificado pelo nome Reais, passe a conter o valor 3,141516.


ATIVIDADES

10.1 - Escreva um programa em PascaL capaz de desenhar um pentgono regular
dado o valor do lado igual a 60.

10.2 - Escreva um programa em PascaL capaz de desenhar um hexgono regular
dado o valor do lado igual a 60.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 46


AULA PRTICA 11


OBJETIVO:

Estudar funes.


INTRODUO

Procedure e Function so subprogramas, cuja finalidade subdividir os programas
em mdulos tornando-os mais legveis. O procedimento, ns j estudamos e
sabemos como usar. As funes so semelhantes aos procedimentos, a diferena
fundamental que a funo retorna um nico resultado atravs de seu prprio
nome.

FUNES

Observe o programa CalculaMedia apresentado a seguir:

Program CalculaMedia;

Function Media(x: real; y: real): real;
{Declarao da funo para clculo da mdia entre 2 nmeros }
begin
Media:= (x + y)/2;
end; {Fim da Function Media}

begin {Inicio do programa}
{imprime o resultado da funo Media chamada com os argumentos 4 e 5}
writeln(Media(4,5));
end. {fim do programa}

Uma funo se parece com um procedimento: a palavra Function usada no lugar
de Procedure. Alm disso as funes podem ter parmetros, assim como nos
procedimentos: observe as variveis x e y que so do tipo real. Ao contrrio do
procedimento a funo tem uma declarao de tipo adicional, colocada aps os
parmetros, observe:

Function Media(x: real; y: real): real;

No caso de funes, essa declarao de tipo extra est associada ao nome da
funo, que funciona como uma pseudo-varivel, isto alm de servir para


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 47

chamar a funo, ela funciona como uma varivel de retorno. Neste caso retorna o
resultado do clculo da mdia aritmtica atravs da (pseudo) varivel Media.

No exemplo acima a funo Media chamada com os argumentos 4 e 5 que
sero associados respectivamente a x e a y dentro da funo. O resultado de (4+
5)/2 = 4,5 atribudo pseudo-varivel Media por onde retornado ao programa
e em seguida escrito pelo comando-funo writeln.

A declarao de funo possui a seguinte sintaxe:

Function <nome da funo> (<declarao dos parmetros>): <tipo de funo>;
<declarao de variveis locais>;
Begin {incio do bloco de comandos da funo}
<comandos em Pascal>;
<comandos em Pascal>;
........................................
<nome da funo> := <resultado>;
end;

A declarao comea sempre com a palavra reservada Function seguida pelo
nome da funo escolhido pelo usurio. Entre parnteses declaram-se as
variveis que representaro os argumentos que sero passados funo para
que ela os processe. Aps fechar parnteses, coloca-se dois pontos ( : ) e defini-
se o tipo de resultado que a funo retornar: Integer ou Real, quando a funo
retorna valores numricos. Essa primeira linha termina com ponto e vrgula.

Se for necessrio alguma varivel local (varivel utilizada apenas dentro da
funo) para processar a funo, ela dever ser declarada abaixo da linha inicial,
onde aparece a <declarao de variveis locais>. E finalmente, dentro do bloco
Begin_End, so colocados os comandos que descrevem a funo.

Ateno: Ateno: Ateno: Ateno:

Uma funo retorna um nico resultado, atravs do seu nome, conforme o
tipo declarado pela funo. Assim necessrio que dentro do bloco
Begin_End esteja o comando que atribua ao nome da funo o resultado
que ela dever retornar: <nome da funo> := <resultado>;

O Pascal possui uma srie de funes embutidas, ou internas, d uma olhadinha
na Tabela 5, apresentada a seguir. Essas funes j esto prontas, ento basta
cham-las, passando-se os argumentos definidos como parmetros. A chamada
de uma funo s pode ocorrer dentro de uma expresso aritmtica, em um
comando de atribuio ou no comando de sada writeLn.



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 48

Dentre as funes descritas na Tabela 5, algumas so exclusivas do PascaL, mas
a maioria tem equivalncia no Pascal padro. Em cada descrio apresentado
um exemplo de uso da funo.
Tabela 5 - Funes embutidas do Pascal
Funo Parmetro(s) Retorna
tipo
Descrio
ABS REAL REAL ABS(nmero) retorna o valor absoluto
(mdulo) do nmero (entre
parnteses). Ex: O comando writeln
(abs(-10)) imprime o valor 10.
ARCCOS REAL REAL ARCCOS(nmero) retorna o arco em
graus do cosseno do nmero (entre
parnteses). Ex: O comando writeln
(arcos(0,5)) imprime o valor 60.
ARCSIN REAL REAL ARCSIN(nmero) retorna o arco em
graus do seno do nnero (entre
parnteses). Ex: O comando writeln(
arcsin(0,5)) imprime o valor 30.
ARCTAN REAL REAL ARCTAN(nmero) retorna o arco em
graus do tangente do nnero (entre
parnteses). Ex: O comando writeln
(arctan(0,577...)) imprime o valor 30.
COS REAL REAL COS(nmero) retorna o cosseno do
ngulo especificado pelo nmero
(entre parnteses). Ex: O comando
writeln (cos(90)) imprime o valor 0,0.
EXP REAL REAL EXP(nmero) retorna e
nmero
, ou seja,
2,71828...
elevado ao expoente nmero. Ex: O
comando writeln (exp(2)) imprime o
valor 7,38905609...
INT REAL INTEGER INT (nmero) retorna a parte inteira
do nmero (entre parnteses). Ex: O
comando writeln
(int(7, 38905609...)) imprime o valor 7.
LN REAL REAL LN (nmero) retorna o logartmo
natural do nmero (entre parnteses).
Ex: O comando writeln (ln(1)) imprime
o valor 0.



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 49

Tabela 5 - Funes embutidas do Pascal
Funo Parmetro(s) Retorna
tipo
Descrio
LOG10 REAL REAL LOG10(nmero) retorna o logartmo
na base 10 do nmero (entre
parnteses). Ex: O comando writeln
(log10(1000)) imprime o valor 3.
PI REAL PI retorna de Ex: O comando writeln
(pi) imprime o valor
3,14159265358979...
POWER REAL REAL POWER (nmero1, nmero2) retorna
o nmero1 elevado ao expoente
nmero2, isto nmero1
nmero2
. Se o
nmero1 for negativo ento nmero2
precisa ser inteiro. Ex: O comando
writeln (power(2,3)) imprime o valor 8.
Se x= (power(2,-2)) ento x = 0,25.
O comando writeln (power(-2,3))
imprime o valor 8.
RADARCSIN REAL REAL RADARCSIN (nmero) retorna o arco
em radianos do seno do nmero
(entre parnteses). Ex: O comando
writeln (radarcsin(0,5)) imprime o
valor 0,5235987755598299.
RADARCTAN REAL REAL RADARCTAN (nmero) retorna o
arco em radianos do tangente do
nmero. Ex: O comando writeln
(radarctan(0,5)) imprime o valor
0,463647609000806.
RADCOS REAL REAL RADCOS (nmero) retorna o valor do
coseno do ngulo em radianos do
nmero. Ex: O comando writeln
(radcos (1)) imprime o valor 0,5.
RADSIN REAL REAL RADSIN (nmero) retorna o valor do
seno do ngulo em radianos do
nmero (entre parnteses). Ex: O
comando writeln (radcos (1)) imprime
o valor 0,5.



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 50

Tabela 5 - Funes embutidas do Pascal
Funo Parmetro(s) Retorna
tipo
Descrio
RADTAN REAL REAL RADTAN (nmero) retorna o valor da
tangente do ngulo em radianos do
nmero (entre parnteses). Ex: O
comando writeln (radtan (1)) imprime
o valor 1,5574077246549.
RANDOM INTEGER INTEGER RANDOM (nmero) retorna um
nmero aleatrio inteiro e positivo
entre 0 (zero) e o nmero (entre
parnteses) menos 1. Ex: O
comando writeln (random (40))
imprime um valor qualquer no
intervalo [0, 39] , como por exemplo, o
valor 23.
ROUND INTEGER REAL ROUND (nmero) retorna o valor do
nmero (entre parnteses)
arredondado para o inteiro mais
prximo. Ex: O comando writeln
(round(5.25)) imprime o valor 5.
SIGN REAL REAL SIGN(nmero) retorna:
+1 se o nmero positivo
-1 se o nmero negativo
0 se o nmero for zero
Ex: O comando writeln (sign(-13))
imprime o valor -1.
O comando writeln (sign(13)) imprime
o valor +1.
O comando writeln (sign(0)) imprime o
valor 0.
SIN REAL REAL SIN (nmero) retorna o valor do seno
do ngulo especificado em graus pelo
nmero (entre parnteses). Ex: O
comando writeln (sin(90)) imprime o
valor 1.
SQR REAL REAL SQR (nmero) retorna o quadrado do
nmero (entre parnteses), isto
nmero
2
. Ex: O comando
writeln (sqr(9)) imprime o valor 81.



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 51



Tabela 5 - Funes embutidas do Pascal
Funo Parmetro(s) Retorna
tipo
Descrio
SQRT REAL REAL SQRT (nmero) retorna a raiz
quadrada do nmero (entre
parnteses), isto . nmero
Ex: O comando writeln (sqrt(9))
imprime o valor 3.
TAN REAL REAL TAN (nmero) retorna o valor da
tangente do ngulo especificado em
graus pelo nmero (entre
parnteses). Ex: O comando writeln
(sqrt(9)) imprime o valor 3. (tan(45))
imprime o valor 1.
TRUNC REAL INTEGER TRUNC (nmero) essa funo
anlogo funo INT, ou seja, ela
retorna a parte inteira do nmero
(entre parnteses). Ex: O comando
writeln (trunc(7,3)) imprime o valor 7.

Quando usamos uma funo, geralmente o fazemos no meio de uma expresso
aritmtica ou como parmetro de uma outra funo, verifique os exemplos abaixo:

1. A expresso aritmtica
a
ac b b
x
2
4
2

= quando escrita em Pascal
assume o seguinte formato:

( ) ( ) ( ) a c a b b sqrt b x + = 2 / 4 : ou
( ) ( ) ( ) ( ) a c a b sqr sqrt b x + = 2 / 4 :

( ) ( ) ( ) a c a b b sqrt b x = 2 / 4 : ou
( ) ( ) ( ) ( ) a c a b sqr sqrt b x = 2 / 4 :

2. Na instruo: writeln Media(5, sqrt(49)), a funo Media utiliza dois
parmetros. O interpretador Pascal associa 5 como o primeiro parmetro e
sqrt(49) como o segundo parmetro. A funo sqrt(49) deve ser calculado
antes de executar a funo Media.

Observe as funes embutidas sqrt e sqr no meio da expresso aritmtica.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 52

ATIVIDADES

11.1 - Escreva um programa em PascaL que desenhe os eixos coordenados
(abscissa e ordenadas).

11.2 - Analise os programas feitos por voc nos exerccios 24 e 27 e responda:
Eles traaram circunferncias ou polgonos de 360 lados?

11.3 - Escreva um programa em PascaL que desenhe um arco de circunferncia
de 90 graus e raio igual a 50.

Dica: Dica: Dica: Dica:
Para traar um arco de circunferncia temos que relacionar o lado do
polgono ao raio da circunferncia:
1. O comprimento da circunferncia dado por: R C 2 = onde R o raio.
2. O comprimento do polgono de 360 lados : Lado C = 360
3. Igualando as duas frmulas obtemos: = Lado R 360 2

R Lado R Lado = = 77776 0017453277 , 0
360
2



11.4 - Infelizmente voc no pode criar um procedimento com o nome de Arco,
porque o PascaL j possui a funo embutida chamada Arco capaz de desenhar
um arco de circulo. definida por:

arco(numero1, nmero2);

Essa funo desenha um arco com um ngulo igual ao valor do argumento
numero1, direcionado para onde o rob est apontado. O argumento numero2
especifica o tamanho do raio. A posio corrente do rob ser o centro do arco.

Teste a funo arco, traando as seguintes figuras:


A) B) C)



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 53

11.5 Execute o programa apresentado a seguir, analise a resposta obtida e
coloque os comentrios pertinentes:

Program Direcoes;
Begin
Mudedirecao(0);
Pfrente(100);
Rotule(0);
Pfrente(-100);
Mudedirecao(90);
Pfrente(100);
Rotule(90);
Pfrente(-100);
Mudedirecao(180);
Pfrente(100);
Rotule(180);
Pfrente(-100);
Mudedirecao(270);
Pfrente(100);
Rotule(270);
Pfrente(-100);
End.

11.6 Elabore o programa Polgonos que chama o Procedimento Poli trs vezes
para traar trs polgonos. O Procedimento Poli, apresentado a seguir, possui trs
parmetros: Lado, Angulo e Vezes. Esses parmetros so introduzidos atravs do
teclado pelo usurio, com os seguintes valores:
a) Poli(100, 151, 31)
b) Poli(100, 144, 5)
c) Poli(100, 160, 9)
Utilize o Procedimento Poli apresentado abaixo:
Procedure Poli(Lado, Angulo, Vezes: integer);
Var Ind: integer;
Begin
For Ind:= 1 to Vezes do
Begin
Pfrente(lado);
Pdireita(Angulo);
End;
End; {Fim do procedimento Poli}


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 54


AULA PRTICA 12


OBJETIVO:

Estudar expresses lgicas.
Estudar a estrutura de controle IF_then_ELSE.
Estudar o uso de contadores.


INTRODUO

Observando a nossa vida diria, percebemos que tomamos decises aps
efetuarmos algum tipo de comparao. Ou seja, se desejamos comprar um
computador, primeiramente verificamos a relao custo benefcio entre os vrios
modelos existentes e finalmente, aps ter escolhido um deles, comparamos as
nossas economias com o preo do equipamento escolhido para efetuar a compra.
Comparaes, ns fazemos a todo instante, s que no nos damos conta disso.
Para que uma mquina tome uma deciso, os programas utilizados no controle
dessa mquina tm que ser inteligentes. Em outras palavras, eles so capazes de
comparar grandezas entre si e escolher a opo correta.

Para que os nossos programas sejam capazes de tomar decises estudaremos
agora as expresses lgicas e o comando IF_then_ELSE. Como vocs
comprovaro atravs das expresses lgicas o programa compara as grandezas
entre si e atravs do comando IF_then_ELSE a deciso correta tomada.


EXPRESSES LGICAS

As expresses lgicas so formadas por operendos (que podem ser variveis,
constantes, funes, ou expresses aritmticas) e operadores lgicas, Tabela 6.
Eles estabelecem uma relao entre os operandos e tambm utilizam apenas
pares de parenteses para priorizar operaes.

Uma expresso lgica ser frequentemente usada para representar uma condio
que dever ser avaliada e o resultado da expresso ser VERDADEIRO ou
FALSO. Em PascaL estes valores so representados pelas palavras TRUE e
FALSE, respectivamente.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 55


Tabela 6 - Operadores lgicos
Simbolos Significado Exemplo
= Igual a A = B

> Maior que > 0

>= Maior ou
Igual a
X / 5 >= C
< Menor que (B*B 4*A*C) < 0

<= Menor ou
Igual a
X MOD 2<= B
<> Diferente de NOME <> JOSE

AND E (0 <= X) AND ( X < 5)

OR OU A OR B


Nos exemplos apresentados na tabela anterior, cada expresso lgica pode ter
como resultado o valor lgico True ou False, dependendo dos valores dos
operandos. Suponha os seguintes comandos:

Program Compara;
{Compara duas grandezas}
Var A, B: integer;
Begin {Inicio do programa}
A := 10;
B := 5;
Writeln(A = B);
Writeln(A mod 2 = 0);
End. {Fim do programa}

Observe que existe uma expresso lgica, entre parnteses, logo aps as funes
Writeln. No me diga que voc est pensando que o programa imprimir:
A = B
A mod 2 = 0
Nesse caso as duas expresses deveriam estar entre apstrofes, no ? Como j
sabemos o resultado de uma expresso lgica Falso ou Verdadeiro. Ento a
funo Writeln(A= B) retornar false porque as duas variveis so diferentes, mas
para Writeln(A mod 2 = 0) retornar true, uma vez que o resto da diviso de 10
por 2 zero.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 56

Ateno: Ateno: Ateno: Ateno:

No confunda o smbolo de atribuio := (dois pontos seguido do caractere
=) com o operando lgico = (somente o caractere =). O comando A := B
um comando de atribuio, em que o valor de B copiado e armazenado
em A. J a relao A = B, compara o valor armazenado em A com o valor
armazenado em B, se forem iguas a relao ser True, caso contrrio ser
False.

Uma expresso do tipo 0< X <=5 deve ser escrita em Pascal no seguinte formato:
(0 < X) AND (X <= 5) e ser verdadeira apenas se as duas condies forem
verdadeiras ((0 < X) e (X <= 5)). O resultado da expresso ((A <>0 ) OR (C > 4),
verdadeiro se (A <>0 ) for verdadeiro ou (C > 4) for verdadeiro. Ou seja, d para
perceber que os operandos AND e OR so exatamente os mesmos estudados em
Sistemas Digitais, no mesmo?


COMANDO IF_THEN_ELSE

Os programas podem ser expressos por trs estruturas de controle:

Seqncias de instrues;
A repetio de seqncias de instrues;
A execuo de seqncias alternativas.

As duas primeiras estruturas ns j estudamos e conhecemos bem. E a terceira,
ns acabamos de estudar, e sabemos como comparar duas ou mais grandezas
utilizando as expresses lgicas. Ento se j podemos comparar grandezas entre
si podemos tambm tomar decises. Ou seja, escolher um entre vrios caminhos
distintos. Voltando ao exemplo da compra do computador, podemos ao final do
processo de escolha comprar ou no o computador. Concluso: primeiro
comparamos depois escolhemos um dos caminhos, dentro do quadro analisado.
Para efetuarmos a escolha de um entre dois caminhos distintos, em programao,
temos que utilizar a estrutura de controle IF_then_ELSE, apresentada a seguir:

IF <condio>
Then begin
<lista de comandos 1>;
end
Else begin
<lista de comandos 2>;
end;


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 57

Observe que logo aps o comando IF, temos uma <condio>, que na verdade
uma expresso lgica. O resultado dessa expresso pode ser VERDADEIRO ou
FALSO. Se o resultado for VERDADEIRO a <lista de comandos 1> executada,
caso contrrio, executada a <lista de comandos 2>. Na realidade o comando IF
avalia a expresso lgica e toma uma deciso que implica em executar apenas
uma entre duas <listas de comandos>.


Ateno: Ateno: Ateno: Ateno:

importante que voc observe que:

As <listas de comandos> com mais de um comando devem estar entre as
clusulas Begin_End. Para listas de apenas um comando o uso do bloco
Begin_End opcional.
Apenas o ltimo end, da estrutura IF_then_ELSE seguido por ponto e
virgula. O ponto e vrgula representa o final da estrutura.

Observe o exemplo apresentado a seguir:

Program ExemploIfThenElse;
{Esse programa compara o valor de duas variveis e imprime na tela o resultado
da comparao}
Var A, B: integer;
Begin
A:= 2;
B:= 2;

IF (A = B)
Then WriteLN(O valor de A igual a B)
Else WriteLN(O valor de A diferente de B);

WriteLN(O valor de A foi comparado com o valor de B);
End.

Nesse exemplo a <condio> a ser testada se o valor armazenado na varivel A
igual ao valor armazenado na varivel B. A expresso lgica A= B representa
essa <condio>. Se o valor de A for igual ao valor de B, ento ser impressa a
mensagem O valor de A igual a B, seno ser impresso O valor de A
diferente de B. Em qualquer um dos dois casos o comando WriteLN(O valor de A
foi comparado com o valor de B); colocado aps a execuo da estrutura
IF_then_ELSE executado, imprimindo: O valor de A foi comparado com o valor
de B.



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 58

COMANDO IF SIMPLES SEM O ELSE

possvel utilizar o comando IF sem a clusula ELSE, Se a condio for
<verdadeira> ento uma determinada seqncia de comando deve ser executada,
seno, o programa pula essa seqncia e continua a executar os demais
comandos do mesmo. A sintaxe do comando IF sem a clusula ELSE a
seguinte:

IF <condio>
Then begin
<lista de comandos>;
end;

A <lista de comandos> executada se a <condio> testada for verdadeira, caso
contrrio, ela pulada.

D uma olhadinha no programa ExemploIF_sem_ELSE apresentado a seguir:

Program ExemploIfSemElse;
Var Numero, Contador, Ind: integer;

Begin
Contador := 0;
Writeln(Neste programa voc deve digitar cinco nmeros consecutivamente.);
Writeln(Eles sero classificados como par ou impar);
Writeln(Digite o primeiro nmero);
for Ind:= 1 to 5 do
begin
readln(Numero);
writeln(O nmero que voc digitou :, Numero);
IF (Numero mod 2 = 0)
Then Contador := Contador + 1;
IF (ind<= 5)
Then writeln(Digite o prximo nmero);
end;

writeln(Voc digitou 5 nmeros:);
writeln(, Contador, nmero(s) pare(s).);
writeln(, (5 Contador), nmero(s) impare(s).);
End.

Voc consegue imaginar o que o programa ExemploIfSemElse faz? Caso a
resposta tenha sido negativa execute o programa e verifique se os comentrios
apresentados abaixo esto corretos.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 59


O programa ExemploIfSemElse faz a leitura de cinco nmeros, introduzidos pelo
usurio atravs do teclado e verifica quantos so pares e quantos so impares.
Alm disso, ele imprime na tela cada nmero digitado e a quantidade de nmeros
impares e de nmeros pares.

Se voc observar atentamente, ver que existem duas estruturas IF_sem ELSE.
Na primeira verificado se o nmero digitado par, se a proposio for verdadeira
a varivel Contador incrementado, indicando que ocorreu um nmero par. Na
segunda estrutura IF_sem_ELSE verificado se a varivel ind contm um valor
inferior cinco, caso a condio seja verdadeira impresso na tela: Digite o
prximo nmero. Esses dois comandos IF_sem_ELSE esto dentro de estrutura
de repetio For que garante que o processo descrito ocorra cinco vezes, ou seja,
o programa no sai da estrutura de repetio For enquanto o usurio no digitar
cinco nmeros. A partir desse ponto impresso o relatrio final, apresentando a
quantidade de nmeros mpares e pares que foram digitados.

A grande novidade apresentada nesse programa que existe uma varivel
chamada Contador que modificada no decorrer do programa. Nesse caso, ao
valor corrente do Contador acrescido uma unidade toda vez que a instruo
executada. Variveis cujo prprio valor acrescido de uma constante durante a
execuo de um programa chamada de Contador. Observe que os Contadores
sempre so iniciados.


ATIVIDADES

12.1 - Explique porque os Contadores (variveis) devem sempre ser iniciadas.

12.2 - Execute os programas Compara e ExemploIfThenElse apresentados
anteriormente e verifique o que ser impresso para cada um deles.

12.3 - Execute o programa ExemploIfSemElse, analise o ocorrido e escreva os
comentrios pertinentes.

12.4 - Usamos o comando For para executar a repeties de seqncias de
instrues. O comando For controla uma varivel, que comea com um valor
inicial e faz com que uma lista de comandos seja repetida at que a varivel atinja
um valor limite. Agora associaremos o comando For com os novos conhecimentos
obtidos nesta aula. D uma olhadinha no exerccio a seguir e identifique o que
ser impresso:


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 60


1.
Program FazContagem01;
Var Ind: integer;
Begin {Incio do programa}
For Ind:= 1 to 10 do
Begin
if (Ind mod 3 = 0)
Then Writeln( Ind, mltiplo de 3)
Else Writeln( Ind, NO mltiplo de 3);
End;
End. {Fim do programa}


2.

Program FazContagem02;
Var Contador, Ind: integer;
Begin {Incio do programa}
Contador:= 8; {iniciar a varivel Contador}
For Ind:= 1 to 4 do
Begin
Writeln(Contador);
Contador:= Contador DIV 2;
End;
End. {Fim do programa}


3.
Program FazContagem03;
Var Ind: integer;
Angulo: real;
Begin {Incio do programa}
Angulo:= 0; {iniciar a varivel Contador}
For Ind:= 0 to 13 do
Begin
Writeln(Angulo = , Angulo, seno (, Angulo,)= ,
sin(Angulo));
Angulo:= Angulo + 30;
End;
End. {Fim do programa}


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 61





AULA PRTICA 13


OBJETIVO:

For aninhado.
IF aninhado.


INTRODUO

s vezes necessrio utilizar uma estrutura de repetio dentro da outra, assim
como indispensvel utilizar uma estrutura de controle dentro da outra. Essas
estruturas so chamadas respectivamente de For aninhado e IF aninhado.


FOR ANINHADO

Imagine que voc gostaria de colorir todos os seis espaos de uma Matriz 2x3.
Voc poderia selecionar a primeira linha e ento colorir os espaos
correspondentes s colunas um, dois e trs, sucessivamente. E em seguida
repetir o mesmo procedimento para as outras linhas. Para colorir os espaos, ler
ou escrever os valores de uma matriz comum usar a estrutura For aninhado.
Veja a sintaxe de uma estrutura For aninhado:

For <Nome_da_Varivel_1> := <Valor_inicial> to <Valor_final> do
Begin
For <Nome_da_Varivel_2> := <Valor_inicial> to <Valor_final> do
Begin
<Comando_em _Pascal>;
<Comando_em _Pascal>;
.......................
<Comando_em _Pascal>;
End;
End;

Um exemplo de um programa utilizando For aninhado apresentado a seguir. Se
voc no reconhecer alguma instruo d uma olhadinha na Tabela 7 no final
desta aula prtica.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 62


program ForAninhado;
{Este programa faz uma Matriz 6x5 de quadrados e
colore cada um dos quadrados, acessando as linhas
e percorrendo todas as colunas da linha corrente}

Procedure Quadriculo;
{Desenha um quadrado de 100x100}
Var Ind: integer;
begin
for Ind:= 1 to 4 do
Begin
pfrente(100);
pdireita(90);
End;
end; {Fim do procedimento QuadradoFor}

Procedure Quadrilatero;
{Desenha uma Matriz 6x5 de quadrado}
Var Vezes, Ind, Posicao: integer;
begin
Posicao:= 0;
for Vezes:= 1 to 5 do
begin
pdireita(90);
for Ind:= 1 to 4 do
begin
Quadriculo;
pfrente(50);
end;
Posicao:= Posicao - 50;
mudepos(0,Posicao);
end;
end; {Fim do procedimento Quadrilatero}

Procedure ColoreQuadrilatero;
{Colore os quadriculos da Matriz 6x5}
Var linha, coluna, X, Y: integer;
begin
for linha:= 1 to 6 do
begin
for coluna:= 1 to 5 do
begin
X:= (coluna - 1) * 50 + 25;
Y:= ((linha - 1) * - 50) - 25;
mudepos(X,Y);
mudecorpreenche(random(256), random(256), random(256));
pinte;
espere(30);
end;
end;
end; {Fim do procedimento ColoreQuadrilatero}


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 63


begin {Inicio do programa}
clrscr;
Quadrilatero; {Traa uma Matriz de Quadrados de 6x5}
ColoreQuadrilatero; {Colore a Matriz de Quadrados}
end. {Fim do programa}


IF ANINHADO

At agora, quando voc queria tomar uma srie de decises era usada a seguinte
estrutura:

IF <1 condio> {1 condio}
Then begin
<lista de comandos 1>;
end;
IF <2 condio> {2 condio}
Then begin
<lista de comandos 2>;
end;

.
.
.
IF <N-ssima condio> { N-ssima condio}
Then begin
<lista de comandos N>;
end;

Atravs da estrutura de IFs aninhados, o arranjo acima pode ser re-escrito da
seguinte maneira:

IF <1 condio> {1 condio}
Then begin
<lista de comandos 1>;
end
Else Begin
IF <2 condio1> {2 condio}
Then begin
<lista de comandos 2>;
end
Else begin {3 condio}
<lista de comandos 3>;
end
End; {Fim dos IFs aninhados}


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 64

importantssimo que voc observe o seguinte:
1. No primeiro arranjo se nenhuma das condies satisfizerem no ser
processado nenhum dos IFs;
2. No segundo arranjo se nenhuma das condies satisfizerem o ltimo Else
obrigatoriamente ser executado. Ateno: somente o ltimo end
seguido por ponto e vrgula;
3. Caso voc queira que no primeiro arranjo um dos IFs seja executado
obrigatoriamente, necessrio acrescentar:


IF (NO<1 condio> AND NO<2 condio>... AND NO<n-ssima condio>)
Then begin
<lista de comandos>;
end;

Um exemplo de um programa utilizando IFs aninhado apresentado a seguir

program IFsAninhados;
{Este Programa traa um quadrafo e permite que o
usurio escolha atraves do teclado uma cor para
colori-lo}
Var Cor: char;

Procedure Quadrado;
{Este procedimento traca um quadrado}
Var Ind: integer;
Begin
for Ind:= 1 to 4 do
Begin
pfrente(100);
pdireita(90);
End;
End; {Fim do procedimento Quadrado}

Procedure ColoreQuadrado(Num: integer);
{Este procedimento colore o quadrado}
Begin
mudepos(50,50);

if ((Num = 65) OR (Num = 97)) {Amarelo}
Then Begin
mudecorpreenche(255,255,000);
pinte;
end
Else Begin if((Num = 86) OR (Num = 118)) {Verde}
Then Begin
mudecorpreenche(000,255,000);
pinte;
End
Else Begin
mudepos(-200,-50);
pdireita(90);
rotule('Voc NO digitou uma das letras
solicitadas.');
End


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 65

End; {Fim dos IFs aninhados}

End; {Fim do procedimento ColoreQuadrado}


begin {Inicio do programa}
clrscr;
Quadrado;

mudepos(-200,200);
pdireita(90);
rotule('Este programa traa um quadrado.');


mudepos(-200,175);
pdireita(90);
rotule('Escolha uma das letras para colori-lo:');

mudepos(-200,150);
pdireita(90);
rotule('A - amarelo');

mudepos(-200,125);
pdireita(90);
rotule('V - verde:');

readln(Cor);
ColoreQuadrado(Cor);
dr;
end. {Fim do programa}




CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 66

Tabela 7 - Conjunto de instrues
Comando Descrio
ARCO ARCO(nmero1, nmero2 )
O rob no se movimenta neste comando, ele apenas
desenha um arco (parte de um circulo) permanecendo no
centro do mesmo. O arco traado baseado na direo
apontada pelo rob, na posio do rob e nos
argumentos. Os argumentos so: nmero1 - especifica a
medida do ngulo e numero2 - especifica a medida do
raio. Ex: arco (360,100) traar um arco com o ngulo de
360 (um circulo) de raio 100.
CENTRO CENTRO
Coloca o rob na sua posio original (centro da tela
apontando para o norte), sem apagar a tela grfica e sem
deixar rastro. Ex: centro;
ESPERE ESPERE(nmero)
Provoca uma pausa (em milisegundos) antes de executar
o prximo comando. til para acompanhar a confeco
de um desenho. Ex: espere(30);
ESPLAPIS ESPLAPIS(nmero)
Muda as caractersticas da espessura da linha traada
pelo lpis de acordo com o nmero. O nmero pode
variar de 0 (linha mais fina) at 5 (linha mais grossa).
Observao: No garantida a compatibilidade entre
implementaes em mquinas diferentes. Ex: esplapis(4);
MUDECORLAPIS MUDECORLAPIS(qvermelho, qverde, qazul)
Muda a cor do lpis de acordo com os trs nmeros
fornecidos. Esses nmeros indicam a combinao das
tonalidades das cores vermelha, verde e azul (RGB, red,
green e blue em ingls). Cada nmero pode variar de 0 a
255. Algumas combinaes podem ser vistas abaixo:
mudecorpreencimento(000,000,000) => preto
mudecorlapis(255, 255, 255) => branco
mudecorlapis(128, 128, 128) => cinza
mudecorlapis(255, 000, 000) => vermelho
mudecorlapis(000, 255, 000) => verde
mudecorlapis(000, 000, 255) => azul
mudecorlapis(255, 255, 000) => amarelo
Ex: mudecorlapis(13, 95, 201);




CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 67



Tabela 7 - Conjunto de instrues
Comando Descrio
MUDECORPEENCHE MUDECORPEENCHE(qvermelho, qverde, qazul)
Muda a cor de preenchimento da rea onde est o rob,
delimitada por uma figura qualquer. A cor estabelecida
de acordo com o valor de trs nmeros, os quais indicam
a combinao das tonalidades das cores vermelho, verde
e azul. Cada nmero pode variar de 0 a 255.
Observao: A delimitao dos objetos feita atravs da
cor do lpis que est ativa. Se houver objetos
desenhados com cor do lpis diferente da atual, os
objetos sero apagados!!!
MUDEDIRECAO MUDEDIRECAO(nmero)
Muda a direo do rob de acordo com o nmero. O
nmero 0 corresponde ao Norte, 90 corresponde a
Leste, 180 corresponde ao Sul e 270 corresponde ao
Oeste. Ex: mudedirecao(180);
MUDEPOS MUDEPOS(nmero1, nmero2 )
Movimenta o rob para uma posio absoluta da tela. O
argumento uma lista de dois nmeros, onde o nmero1
representa a coordenada X e o numero2 representa a
coordenada Y. Ex: mudepos(-100, 50);
ROBO ROBO
Apaga a tela grfica, colocando o rob instantaneamente
na sua posio original, ou seja, no centro da rea de
Desenho voltado para o Norte. Ex: robo;
PINTE PINTE
Pinta uma regio ou janela grfica que contm o rob e
est limitada por linhas que foram desenhadas
anteriormente com cor de lpis atual. Este comando varia
conforme a mquina: pode no funcionar para algumas
ou pode no atuar da mesma forma para mquinas
diferentes. Desenhos feitos com cor de lpis diferente da
atual sero apagados. Ex: pinte;



CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 68

Tabela 7 - Conjunto de instrues
Comando Descrio
ROTULE ROTULE(cadeia)
Mostra na tela grfica uma cadeia de caracteres (a qual
deve ser uma varivel declarada como string ou uma
cadeia de caracteres delimitada por apstrofes). As
caractersticas do texto mudam em funo dos
dispositivos (vdeo, impressora), do tamanho, da direo
do rob e da fonte de caracteres usada. Ao usar o
comando rotule, as fontes True Type do Windows
aprecem numa direo diferente das fontes que no so
True Type, com um deslocamento de 90 graus.
Exemplo de fontes True Type: Arial, Courier New, Times
New Roman. Exemplo de fontes que no so True Type:
Courier, Ms Sans Serif, System etc. Ateno:
A cor do texto determinada por mudecorlapis;
A posio do texto determinada pela localizao do
rob; A fonte do texto determinada por mudefonte no
menu. O ngulo do texto determinado pela direo
apontada pelo rob se a fonte por True Type. Ex:
rotule(Seu nome);
rotule (Nome); { se Nome for uma varivel do tipo string:
Var Nome: string;
Nome:= LucasDeAquino;}


ATIVIDADES

13.1 Execute os programs apresentados anteriormente.


CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS
Departamento de Ensino do 2
o
grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Introduo a Programao

Professora: Rosngela Ftima da Silva 69


REFERNCIAS BIBLIOGRFICAS


1 GUIMARES, Angelo Moura. Introduo ao PascaL. UFMG, 2002, 100p.

2 GUIMARES, Angelo Moura e LAGES, Newton, CASTILHO, Alberto de,
Algoritmo Estruturas de Dados. LTC, 1985

3 FARRER, Henry. Programao Estruturada de Computadores - Pascal
Estruturado. Rio de Janeiro: Guanabara S.A., 1985, 141p.