Escolar Documentos
Profissional Documentos
Cultura Documentos
1. INTRODUÇÃO
A linguagem Pascal foi concebida por Niklaus Wirth no início da década de 70, tendo
por principal objetivo eliminar os péssimos hábitos de programação reinantes na época, que
eram conseqüência da utilização das linguagens de programação existentes como Fortran,
Cobol e Basic.
O aparecimento de Pascal, linguagem cujo nome é uma homenagem ao filósofo
Blaise Pascal, foi motivado pela visão de que a maior parte dos erros de programação
poderiam ser evitados a partir da utilização de uma linguagem estruturada em blocos e
dotada de um severo controle de tipos. O controle de tipos garante que variáveis e
constantes de um tipo não podem ser mescladas a variáveis e constantes de um outro tipo
(com pequenas exceções). Com o passar dos anos, a linguagem Pascal foi ganhando
espaço como ferramenta para o desenvolvimento de programas e servindo de inspiração
para a concepção de outras linguagens de programação (como Modula-2, proposta pelo
mesmo Wirth). Atualmente, Pascal volta à evidência com o recente aparecimento da
linguagem Delphi.
Neste capítulo, serão apresentados os conceitos básicos da linguagem Pascal,
particularmente a estrutura de um programa Pascal, as palavras-chave, tipos, variáveis,
constantes e alguns exemplos de aplicação.
2. PROGRAMAS EM PASCAL
— 3.1 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
Instruções Pascal. As instruções da linguagem Pascal podem ser escritas a partir dos
elementos descritos anteriormente, podendo ser associadas a uma frase da linguagem
natural. Num programa Pascal, pode-se encontrar basicamente dois tipos de instruções: as
instruções de declaração, que permitem definir a natureza dos dados a serem utilizados nos
programas (reservando espaço em memória para eles) e as instruções executáveis, as
quais descrevem as ações a serem realizadas sobre os dados pelo computador. Como
veremos pelos diversos exemplos a serem analisados, o texto de um programa Pascal
corresponde a uma seqüência lógica de instruções, sendo traduzido, interpretado e
executado pelo computador, independente das características de hardware da máquina
considerada. Em programas Pascal, cada instrução é escrita numa linha de texto, mas nada
impede que o programador escreva diversas instruções numa mesma linha, ou utilizar
diversas linhas para uma mesma instrução.
— 3.2 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
PROGRAM <nome_programa>;
CONST
(* aqui são declaradas as constantes *)
TYPE
(* aqui são declarados os tipos de dados *)
VAR
(* aqui são declaradas as variaveis do programa *)
BEGIN
...
END.
— 3.3 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
VAR
Num1,Num2,Num3,Maior : integer;
BEGIN
(* Leitura dos numeros *)
write(‘Entre com o primeiro numero -> ‘);
readln(Num1);
write(‘Entre com o segundo numero -> ‘);
readln(Num2);
write(‘Entre com o terceiro numero -> ‘);
readln(Num3);
END.
As constantes são dados cujo valor permanece fixo ao longo de toda a execução de
um programa, o que significa que o espaço de memória ocupado por uma constante não
sofre nenhuma alteração enquanto o computador executa o programa.
As constantes num programa Pascal podem representar diferentes tipos de dados. O
que define que tipo de dado está sendo representado é a forma como a constante é escrita
no texto Pascal. Desta forma, 100 corresponde a uma constante inteira, enquanto ‘INE
5201’ e ‘APROVADO’ representam dados do tipo seqüência de caracteres.
Num programa Pascal, as constantes podem ser declaradas basicamente de duas
formas:
VMAX := 2*V_MED
— 3.4 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
CONST
identificador_1 = valor_1;
identificador_2 = valor_2;
...
identificador_N = valor_N;
CONST
PI = 3.14159205;
TAXA = 0.35;
DISC = ‘INE 5201 - Introd. a Ciencia da Computacao’
VAR
identificador_1 : atributo_1;
identificador_2 : atributo_2;
...
identificador_N : atributo_N;
VAR
Num1,Num2,Num3,Maior : INTEGER;
— 3.5 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
Um tipo de dado permite indicar um conjunto de valores que pode ser assumido por
uma dada variável, definindo um certo número de propriedades e de operações próprias ao
conjunto. A figura 3.1 mostra como os tipos de dados suportados pela linguagem Pascal
estão relacionados.
VAR
Num1,Num2,Num3,Maior : INTEGER;
Tipos de Dados
Vetores (ARRAY)
Registros (RECORD)
Arquivos (FILE)
Reais (REAL) Tipos Discretos Conjuntos (SET)
Definidos pelo
Prédefinidos
programador
Lógicos
Caracteres (CHAR)
(BOOLEAN)
— 3.6 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
Tipos de Dados Reais (REAL). As constantes reais podem ser expressas basicamente em
dois formatos: o formato fracionário, onde o valor será composto de uma parte inteira e uma
parte fracionária separadas por um ponto decimal (Ex: 123.5, -23.456, 0.375); o formato
científico, da forma m E e, onde m é mantissa, correspondendo a um valor inteiro ou real no
formato anterior e e é o expoente, correspondendo a uma constante inteira. Por exemplo, as
constantes 12E4, 64.2E-3 e -1.43E0 correspondem, respectivamente aos valores 120000,
0.0642 e -1.43. As variáveis reais são declaradas na seção VAR, assumindo o atributo
REAL, como é mostrado no exemplo abaixo:
VAR
X1,X2 : REAL;
As operações internas que podem ser realizadas sobre os dados reais são:
É possível realizar as operações acima envolvendo operandos inteiros e reais. Neste caso,
o resultado será sempre um valor real. Ainda, o operador de divisão aplicado sobre dois
operandos inteiros resultará num valor real (Ex.: 13/4 resultará no valor 3.25).
Tipos de Dados Caracteres (CHAR). Este tipo de dados consiste do conjunto dos
caracteres, contendo particularmente caracteres alfabéticos (letras), numéricos (dígitos
decimais), o caractere de espaço e caracteres especiais. As constantes de tipo caractere
correspondem a um elemento deste conjunto, sendo expressa, nos programas, pelo
caractere designado delimitado por apóstrofes, como mostram os exemplos abaixo:
As variáveis de tipo caractere devem ser declaradas, na seção VAR, associadas ao atributo
CHAR. No exemplo mostrado a seguir, as variáveis A e B são declaradas como do tipo
caractere. No caso da atribuição de valores às variáveis do tipo CHAR, estes devem ser
igualmente delimitados por apóstrofes, como é ilustrado a seguir.
VAR
A,B : CHAR;
...
BEGIN
A := ‘E’;
Tipos de Dados Booleanos (BOOLEAN). São os tipos de dados enumerados cujos valores
são denotados pelos identificadores predefinidos FALSE (falso) e TRUE (verdadeiro). As
variáveis booleanas são declaradas nas seções VAR utilizando a palavra-chave BOOLEAN,
como mostra a o exemplo que segue:
— 3.7 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
VAR
APROVADO : BOOLEAN;
Nos exemplos citados, a variável X deve ter sido declarada como BOOLEAN na seção VAR.
Em expressões booleanas, resultados de avaliações cujo valor seja booleano podem ser
operados resultando em valores também booleanos. São as chamadas operações lógicas,
que são:
Na tabela anterior, X, Y, Z, X1 e X2 devem ter sido declaradas como uma variáveis de tipo
booleano. Os operadores lógicos podem ser aplicados também a expressões cujo resultado
seja booleano. Abaixo são apresentadas as “tabelas verdade” dos operadores apresentados
acima:
Dados Operações
a b NOT b a AND b a OR b a XOR b
F F T F F F
F T F F T T
T F T F T T
T T F T T F
Tipos de Dados Intervalos de Valores. Estes tipos de dados permitem definir uma faixa de
valores de um tipo de dados específicos (denominado tipo hospedeiro). Na declaração de
um tipo de dados Intervalo de Valores, são declarados o menor valor e o maior valor
separados por dois pontos, sendo que os dois valores declarados devem pertencer ao
mesmo tipo de dados. Na sua forma geral, a declaração de um tipo Intervalo de Valores
apresenta-se da seguinte forma:
TYPE
<identificador> = <menor_valor>..<maior_valor>;
TYPE
— 3.8 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
dezena = 0..99;
byte = 0..255;
tensao = -5..5;
TYPE
Cores = (Amarelo,Azul,Verde,Branco,Vermelho);
Resultado = (Aprovado,Reprovado,Recuperacao,Conceito_I);
VAR
<identificador> : ARRAY[ind_1,ind_2,...ind_N] OF tipo;
Na declaração acima, pode-se verificar que o vetor pode apresentar diversos índices,
sendo que cada índice indica uma dimensão de componentes. A linguagem Pascal admite,
como tipos válidos de índices para vetores, os tipos Inteiro, Booleano, Caracteres,
Enumerados e Intervalos de Valores.
A seguir, são apresentados alguns exemplos de declaração de tipos de dados
vetores:
VAR
MATRIZ : ARRAY[1..5,1..8] OF REAL;
VETOR : ARRAY[1..10] OF ARRAY[1..100] OF INTEGER;
X := MATRIZ[3,4];
Tipos de Dados Registros (RECORD). São os dados caracterizados por um dado número
de componentes, denominados campos, que podem ser de diferentes tipos. A declaração de
um RECORD deve apresentar os identificadores e os atributos (tipos de dados) associados
a cada campo:
VAR
<ident> : RECORD
<id_1> : <atributo_1>;
<id_2> : <atributo_2>;
...
<id_N> : <atributo_N>;
— 3.9 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
END;
VAR
Pessoa : RECORD
Peso : REAL;
Altura : REAL;
Olhos : (Pretos,Castanhos, Azuis,Verdes);
Idade : 0..120;
Est_Civil : (Solteiro,Casado,Viuvo,Divorciado);
Sexo : (Masculino,Feminino);
END;
Estado := Pessoa.Est_Civil;
Da mesma forma, a variável Estado deve ter sido declarada como tipo enumerado
(Solteiro,Casado,Viuvo,Divorciado).
VAR
Alfa : SET OF `A`..`Z`;
W : ARRAY[0..20] OF SET OF 0..31;
Tipos de Dados Arquivo (FILE). Estes tipos de dados correspondem a uma seqüência
linear de componentes de um tipo de dado escalar qualquer. O número de componentes
não é definido na declaração. A declaração geral dos tipos arquivo é feita como segue:
VAR
<identificador> : FILE OF tipo_base;
VAR
Arq_1 : FILE OF CHAR;
— 3.10 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
CONST
DISC = ‘INE 5201’;
VAR
<identificador> : STRING[tam_max];
VAR
Cidade : STRING[20];
A maior parte dos programas de computador nada mais são que a formalização de
um algoritmo, sendo que boa parte das ações definidas em algoritmos (principalmente na
área de Engenharia) podem ser expressos por expressões matemáticas. Quando uma
expressão matemática é traduzida para uma linguagem de programação, o programador faz
uso de variáveis as quais serão modificadas pela expressão matemática ou vão fazer o
papel de agente modificador do valor de uma dada variável.
PROGRAM Maior_Num;
VAR
i : INTEGER;
Num : ARRAY[1..8] OF INTEGER;
BEGIN
(* Leitura dos numeros *)
FOR i := 1 TO 8 DO
BEGIN
write(‘Entre com o numero `,i,` -> ‘);
readln(Num[i]);
END;
— 3.11 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
FOR i := 1 TO 8 DO
IF Num[i] > 4
THEN
WRITELN(`>> O numero `,Num[i],`eh maior que 4!!!`);
END.
<identificador_variável> := <expressão>;
x := x - 1;
ou
soma := soma + a;
Uma expressão num programa Pascal pode ser caracterizada por uma seqüência de
operações elementares, como aquelas apresentadas quando da apresentação dos tipos de
dados de Pascal (adições, subtrações, etc...). Quando caracterizadas desta forma num
programa, algumas regras de avaliação da expressão devem ser observadas para que se
obtenha o resultado esperado:
— 3.12 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
Operadores Operação
unários NOT e - (mudança de sinal)
multiplicativos DIV, MOD, *, /, AND
aditivos +, -, OR
relação <, <=, =, <>, >=, >
b
a+ +d
c
a +b
c +d
— 3.13 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
READLN(V1,V2,V3,V4);
READLN(V1);
READLN(V2);
READLN(V3);
READLN(V4);
WRITE(V1);
WRITELN(2*3);
WRITE(‘INE 5201’);
WRITELN(‘-> O valor da taxa eh: ‘, Taxa);
PROGRAM multi;
VAR
n1,n2,Resultado : REAL;
BEGIN
WRITE(‘Entre com o primeiro operando >> ‘);
READLN(n1);
WRITE(‘Entre com o segundo operando >> ‘);
READLN(n1);
Resultado := n1 * n2;
WRITELN(‘O resultado da operacao eh: ‘,Resultado);
READLN;
END.
Se o programa acima for executado e o usuário entrar com os operandos 2.7 e 5.9,
por exemplo, o resultado da operação (que é 15.93) aparecerá impresso na forma científica,
como mostra a listagem da execução do programa a seguir:
— 3.14 —
CAP. 3 – CARACTERÍSTICAS BÁSICAS DA LINGUAGEM PASCAL PROF. V. B. MAZZOLA
A notação científica, na maior parte das vezes, não é muito adequada como forma
de apresentar resultado. Por esta razão, é interessante poder especificar a forma de
apresentação de um resultado, explicitando o espaço que o valor deve apresentar e o
número de casas decimais que deve ser apresentado. No caso do exemplo acima, se o
programador modificar a última instrução de impressão de modo a explicitar o formato no
qual o dado deve ser apresentado, a saída será mais confortável para o usuário. Observe
como fica a nova versão desta instrução:
PROGRAM impressao;
USES Printer;
BEGIN
(* Impressao de texto no monitor de video *)
WRITELN(‘Oi, tudo bem?’);
(* Impressao de texto na impressora *)
WRITELN(LST,‘Oi, tudo bem?’);
END.
1 No caso do Turbo Pascal, o programador deverá, ainda, tomar o cuidado de declarar, em seu programa, o uso
da unidade Printer, para que o compilador reconheça o identificador LST... isto é feito após a linha de cabeçalho
do programa, através do comando USES Printer.
— 3.15 —