Escolar Documentos
Profissional Documentos
Cultura Documentos
Slago Pascal PDF
Slago Pascal PDF
6. Modularização............................................ 07
6.1. Módulos .................................................. 07
6.2. Funções .................................................. 07
6.3. Exercícios .............................................. 08
6.4. Procedimentos.........................................08
6.5. Exercícios .............................................. 09
6.6. Passagem de Parâmetros .......................09
6.7. Valor versus Referência ....................... 10
6.8. Exercícios ................................................10
7. Vetores ......................................................... 10
7.1. As Temperaturas Acima da Média ....... 11
7.2. Exercícios .............................................. 11
1. INTRODUÇÃO 1.3. Algumas Explicações
A linguagem Pascal, cujo nome é uma homenagem A palavra program serve para definir o nome do
ao matemático francês Blaise Pascal, foi desenvolvi- programa, que deve ser digitado logo em seguida;
da na década de 60 pelo professor Niklaus Wirth. Os locais de memória onde os dados são armaze-
Inicialmente, sua finalidade era ser uma linguagem nados, denominados variáveis, são identificados
para uso didático, que permitisse ensinar com clare- por nomes que devem iniciar com letras;
za os principais conceitos envolvidos na programa-
ção estruturada de computadores. Hoje, numa ver- A palavra var serve para declarar o tipo das vari-
são mais moderna denominada Delphi, essa lingua- áveis que serão usadas no programa. Variáveis
gem é também utilizada por profissionais de diver- que armazenam números inteiros devem ser do
sas áreas tais como processamento de dados, compu- tipo integer e aquelas que permitem números com
tação e engenharia. parte fracionária devem ser do tipo real;
➃ A palavra begin marca o início do programa;
1.1. O Sistema Turbo Pascal ➄ Todas as mensagens a serem exibidas na tela do
computador devem ser colocadas entre apóstrofos.
Para criar um programa na linguagem Pascal, usa- Uma variável, entretanto, não; caso contrário, o
remos o Turbo Pascal. Esse software engloba: computador exibirá o seu nome e não o seu valor.
um editor de textos que nos permite digitar e sal- ➅ O comando write exibe uma informação na tela e
var em disco o programa codificado em Pascal; deixa o cursor na mesma linha em que a informa-
um compilador, que traduz o programa escrito ção foi exibida. Já o comando writeln, faz com que
em Pascal para a linguagem de máquina. o cursor salte para o início da linha seguinte.
Após ter digitado o programa, usamos: ☛ Para que não sejam exibidas em notação
F2: para salvar em disco o programa digitado; científica, variáveis do tipo real devem ser
formatadas da seguinte maneira:
Ctrl+F9: para compilar e executar o programa;
variável : tamanho_campo : casas_decimais
Alt+F5: para ver o resultado da execução.
1.2. Um Primeiro Exemplo ➆ O comando readln aguarda até que o usuário digi-
te um valor e pressione <enter> e, em seguida,
Vamos criar um programa que “dadas as duas notas armazena o valor na variável especificada.
obtidas por um aluno, informe a sua média”. Para
realizar esta tarefa, o programa deverá executar os ➇ O final do programa é indicado pela palavra end.
seguintes passos:
1o Solicitar a primeira nota; 1.4. Exercícios
2o Ler o valor e armazená-lo na memória;
3o Solicitar a segunda nota; Para cada problema, codifique um programa Pascal:
4o Ler o valor e armazená-lo na memória;
1.1. Dada a medida dos lados de um quadrado, in-
5o Calcular a média com os valores fornecidos;
forme a sua área.
6o Exibir o resultado do cálculo;
1.2. Dada a medida do raio de uma circunferência,
Em Pascal, esses passos são indicados assim: informe o seu perímetro.
1.3. Dada uma distância (km) e o total de combustí-
program media;
vel (l) gasto por um veículo para percorrê-la, in-
var p1, p2, m : real;
real
begin forme o consumo médio (km/l).
write('Primeira
write nota? '); 1.4. Sabe-se que com uma lata de tinta pinta-se 3m2.
readln(p1);
readln Dadas a largura e a altura de uma parede, em
write('Segunda
write nota? '); metros, informe quantas latas de tinta serão
readln(p2);
readln necessárias para pintá-la completamente.
m := (p1+p2)/2;
writeln
writeln('A
eln média é ', m:0:1); 1.5. Dadas as medidas dos catetos de um triângulo
end.
end retângulo, informe sua hipotenusa. [Dica: em
Pascal, x escreve-se sqrt(x) ].
A unidade CRT consiste de um conjunto de coman- Para cada problema a seguir, codifique um progra-
dos adicionais que são oferecidos no Turbo Pascal. ma Pascal. Use os comandos adicionais disponíveis
Como esses comandos não fazem parte da lingua- em CRT e, para não ter que ficar digitando Alt+F5
gem Pascal padrão, para utilizá-los, precisamos in- para ver os resultados, inclua readln1 como a última
cluir a seguinte instrução no programa: instrução do programa (antes do end).
uses crt;
1.6. Dada uma distância (km ) e o tempo (h ) gasto
Essa instrução indica ao compilador que iremos u- por um veículo para percorrê-la, informe a velo-
sar os comandos adicionais contidos na unidade cidade média do veículo (km/h ).
CRT. Sem ela, os comandos adicionais não podem
1.7. Dada uma medida em centímetros (c), informe o
ser reconhecidos pelo compilador.
valor correspondente em polegadas (p). Utilize
a fórmula: p = c / 2,54.
☛ Essa instrução deve ser a segunda linha do
1.9. Dada uma temperatura em graus Celsius (ºC ),
programa, conforme indicado a seguir:
informe a correspondente em graus Fahrenheit
program exemplo; (ºF ). Utilize a fórmula: F = (9/5) ×C+32.
uses crt;
... 1.10. Sabe-se que 1m2 de carpete custa R$ 35,00.
Dados o comprimento e a largura de uma sa-
la, em metros, informe o valor que será gasto
para forrar todo o seu piso.
Temos a seguir a descrição dos comandos definidos
1.11. Dadas as coordenadas de dois pontos P e Q do
em CRT que são mais utilizados em Turbo Pascal:
plano cartesiano, informe a distância entre e-
clrscr: limpa a tela e posiciona o cursor no início les. [Dica: use o teorema de Pitágoras]
da primeira linha;
textcolor(cor): seleciona a cor na qual os textos y
serão exibidos no vídeo. As cores são representa- Q
das por números de 0 a 15 ou, então, por palavras yQ
em inglês (red, blue, ...). Para exibir texto piscan-
te, adicione a palavra blink à cor selecionada; por
exemplo, red+blink;
yP P
textbackground(cor): seleciona a cor do fundo so-
bre o qual os textos serão exibidos. As cores são
representadas da mesma maneira que no coman- 0 xP xQ x
do anterior. Para que a tela toda apareça na cor
de fundo selecionada, execute o comando clrscr
logo após o textbackground;
➃ gotoxy(col, lin): posiciona o cursor na posição de 2. A ESTRUTURA DE SELEÇÃO
tela indicada. Caso o valor de col (1 a 80) ou lin (1
a 25) esteja fora do intervalo permitido, o cursor A estrutura de seleção, ou condicional, é uma estru-
não é movimentado. tura que nos permite selecionar e executar apenas
um entre dois comandos possíveis. Para decidir qual
comando deverá ser executado, emprega-se uma
1 2 3 ... col ... 80 expressão lógica, denominada condição: se esta for
1 verdadeira, seleciona-se a primeira alternativa; caso
2 contrário, se for falsa, seleciona-se a segunda.
3
...
lin if condição
... then comando1
25 else comando2;
cnt := vi
3.3. Exercícios
F
cnt <= vf Para cada problema, codifique um programa Pascal:
6.2. Funções
Down Botton
Ao definir uma função, usamos o seguinte formato:
No exemplo acima, o problema original P foi decom-
posto em três subproblemas: A, B e C. Eventual-
mente, após uma decomposição, podem surgir sub-
problemas que ainda são muito complexos. Nesse function nome(parâmetros) : tipo;
caso, fazemos mais uma decomposição. No nosso variáveis locais;
exemplo, o subproblema A foi decomposto em D e E begin
e o subproblema C foi decomposto em F. Não há instruções;
limite para esse processo de decomposição e ele só ...
termina quando atingimos subproblemas suficien-
nome := resposta;
temente simples para que sejam resolvidos direta-
end;
end
mente. Cada módulo do D.H.F. corresponde a uma
rotina que deverá ser codificada no programa Pas- Toda função deve ter um nome, através do qual ela
cal. Note que o projeto é feito de cima para baixo possa ser chamada no programa. Para executar,
(top-down), enquanto a implementação deve ser fei- uma função pode precisar receber alguns parâme-
ta de baixo para cima (botton-up). Isso quer dizer tros de entrada e, ao final de sua execução, devolve
que, no programa Pascal, um módulo só deve apare- uma resposta do tipo especificado. Se a função pre-
cer quando todos aqueles dos quais ele depende já cisa de outras variáveis, além dos parâmetros, essas
foram codificados anteriormente. Sendo assim, o devem ser declaradas como variáveis locais. Para
módulo principal será sempre o último a ser codifi- indicar a resposta final devolvida pela função, de-
cado no programa. vemos atribuir seu valor ao nome da função.
6.8. O comando sound(f), cujo parâmetro f é um Um parâmetro pode ser passado a uma rotina de
número inteiro, liga o alto-falante para emitir duas maneiras distintas: por valor ou por referência.
som com freqüência de f hertz. Para desligar o Quando é passado por valor, o parâmetro é criado
alto-falante, temos o comando nosound e, para numa nova área de memória, ainda não utilizada, e
dar uma pausa, temos delay(t), cujo parâmetro o valor do argumento é copiado para essa área.
t indica o número de milissegundos a aguardar. Quando é passado por referência, o parâmetro com-
Usando esses comandos disponíveis em CRT, partilha o mesmo espaço de memória já utilizado
crie o comando beep, que emite um "bip". pelo argumento. Na passagem por valor, a rotina
tem acesso apenas a uma cópia do argumento; já na
6.9. Usando os comandos de som, crie um comando
passagem por referência, a rotina acessa diretamen-
para simular o som de uma sirene. [Dica: sons
te o argumento original. Para indicar que a passa-
graves têm freqüências baixas e sons agudos
gem deve ser feita por referência, devemos prefixar
têm freqüências altas]
a declaração do parâmetro com a palavra var.
6.10. Crie o comando centraliza(l,m), que exibe a
Para entender a utilidade da passagem por referên-
mensagem m centralizada na linha l, e faça
cia, vamos considerar um exemplo: criar um coman-
um programa para testá-lo. [Dica: a função
do que permuta os valores de duas variáveis que lhe
length(s) devolve comprimento da string s.]
são passadas como argumentos. Supondo que esse
6.11. Crie o comando horiz(c,l,n), que exibe uma li- comando se chame troca, o código
nha horizontal com n caracteres de compri- ...
mento, a partir da posição (c,l) da tela. [Dica: x := 5;
para obter uma linha contínua, use o caracter
y := 7;
cujo código ASCII é 196] troca(x,y);
troca(x,y)
6.12. A rotina a seguir tem como objetivo desenhar write(x,y);
uma moldura cujo canto esquerdo superior es- ...
tá na posição (Ci,Li) e cujo canto direito inferi- deverá produzir 75 como saída.
or está na posição (Cf,Lf); entretanto, ela con-
tém alguns erros. Codifique um programa pa- Primeiro vamos entender por que a passagem por
ra testar seu funcionamento e corrija os erros valor não funciona nesse caso.
que você observar:
...
procedure M(Ci,Li,Cf,Lf,cor:integer); procedure troca(a,b:integer
integer);
integer
var i: integer;
var c : integer;
integer
begin
begin
textcolor(cor); a: 5 Os parâmetros
gotoxy(Ci,Li); write(#191); c := a; são cópias dos
gotoxy(Cf,Li); write(#192); a := b; b: 7 argumentos!
gotoxy(Ci,Lf); write(#217); b := c;
gotoxy(Cf,Lf); write(#218); c: ?
end;
end
for i:= Ci+1 to Cf-1 do
...
begin begin
gotoxy(i,Li); write(#179); ...
X: 5 Argumentos
gotoxy(i,Lf); write(#179); x := 5;
originais.
end; y := 7; y: 7
troca(x,y);
troca(x,y)
for i:= Li+1 to Lf-1 do
write(x,y);
begin ...
gotoxy(Ci,i); write(#196); end.
end
gotoxy(Cf,i); write(#196);
end;
end;
Como podemos ver acima, parâmetros passados por
6.13. Baseando-se na rotina acima, crie o comando valor são criados como cópias dos argumentos origi-
vert(c,l,n), que exibe uma linha vertical com n nais. Quando a rotina é executada, de fato, ela troca
caracteres de comprimento, a partir da posi- os valores das variáveis a e b, que são destruídas
ção (c,l) da tela. Usando essa rotina e horiz(), assim que a execução da rotina termina. Retornan-
codifique uma nova versão do comando M, que do ao programa principal, os valores de x e y estarão
desenha molduras. inalterados e, portanto, teremos 57 como saída.
program TAM;
const max = 7; Finalmente, a rotina que faz a contagem das tempe-
raturas acima da média fica assim:
Type Temp = array[1..max]
array of real;
real
var T : Temp;
function conta(var
var T:Temp;
m : real;
real
... m:real) : inte
integer;
ger
var i, c : integer;
integer
begin
begin
obtem(T);
c := 0;
m := media(T);
for i:=1 to Max do
writeln('Total
writeln = ',conta(T,m));
end.
end if T[i] > m then
c := c+1;
Conta := c;
end;
☛ A declaração const é usada para criar cons-
tantes, disponíveis a todo o programa.
7.2. Exercícios
O programa ficou extremamente simples; mas, para 7.1. Crie tipos de vetores para armazenar:
ser executado, é preciso que as rotinas obtem, media
e conta sejam definidas. A rotina para a obtenção as letras vogais do alfabeto;
dos dados pode ser codificada da seguinte maneira: as alturas de um grupo de 10 pessoas; e
os nomes dos meses do ano.
7.2. Considere um vetor w cujos 9 elementos são do
procedure obtem(var
var T : Temp); tipo integer:
var i : integer;
integer 1 2 3 4 5 6 7 8 9
begin w:
writeln('Informe temperaturas: ');
Supondo que i seja uma variável do tipo integer
for i:=1 to max do
e que seu valor seja 5, que valores estarão ar-
begin
mazenados em w após a execução das atribui-
write(i,'
write o valor? ');
ções a seguir?
readln(T[i]);
readln
end;
end w[1] := 17;
end; w[i div 2] := 9;
w[2∗i-1] := 95;
w[i-1] := w[9] div 2;
Note que o parâmetro T é passado por referência, já w[i] := w[2];
que desejamos preencher o vetor originalmente pas- w[i+1] := w[i]+ w[i-1];
sado à rotina e não uma cópia dele. Lembre-se de w[w[2]-2] := 78;
que as cópias são destruídas ao final da execução da w[w[i]-1] := w[1]* w[i];