Linguagem: Pascal

Share

3 – Uma linguagem de Alto Nível

A linguagem de programação que utilizaremos para implementar nossos algoritmos será a PASCAL,
desenvolvida em 1968 por Niklaus Wirth. O PASCAL é uma linguagem estruturada, de fácil compreensão, muito
adequada para fins didáticos e atualmente possui diversas implementações e está em constante evolução.

O PORTUGOL que estudamos foi desenvolvido baseando-se no PASCAL, então a transcrição de nossos algoritmos
para programas é bem fácil e este capítulo atua como pequeno ponto de início para.

A estrutura básica de um programa em PASCAL é:

program identificador;
	VAR
	Declarações de variáveis
BEGIN
	Comando;
	Comando;
	Blocos de comandos;
END.

3.1 – Conjunto de caracteres

O tipo caractere em PORTUGOL se divide em dois tipo no PASCAL: o char para guardar apenas um símbolo
e o string para se guardar uma seqüência de símbolos. Os valores literais para caracteres e strings
devem ser delmitados por aspas simples “‘”.

PORTUGOL             PASCAL
caractere: tipo;      tipo: char;
tipo ← "A"           tipo := 'A';

caractere: nome;      nome: string;
nome ← "Manoel da Silva"           nome := 'Manoel da Silva';

3.2 – Tipos básicos

A maioria dos tipos básicos do portugol têm suas representações diretas em PASCAL:

PORTUGOL                        PASCAL
inteiro: idade;                 idade: integer;
idade ← 18;                     idade := 18;

real: peso;                     peso: real;
peso ← 56.4;                    peso := 56.4;

lógico: aprovado, emCurso;      aprovado, emCurso: boolean;
aprovado ← verdadeiro;          aprovado := true;
emCurso ← falso;                emCurso := false;

3.3 – Variáveis

A declaração de variáveis começa pela palavra reservada var e deve vir antes do bloco principal.

PROGRAM variaveis;
VAR
	idade: integer;
	peso: real;
	aprovado, emCurso: boolean;
BEGIN
	idade := 18;
	peso := 56.7;
	aprovado := true;
	emCurso := false;
END.

3.4 – Constantes

As constantes são um recurso para se evitar incluir literais em seu código. Na prática são variáveis
que têm seu valor iniciado apenas no início do programa(em tempo de compilação). São declaradas antes
da declaração de variáveis após a palavra reservada CONST.

PROGRAM constantes;
CONST
	pi = 3.14;
	msgErro = 'Dados de entrada inválidos!';
VAR
	idade: integer;
	peso: real;
BEGIN
	...
END.

3.5 – Expressões e Operadores

As expressões seguem a mesma ordem descrita no PORTUGOL visto em sala assim como a maioria dos operadores.

No Pascal não temos o operador para potências X**Y. Para isto usaremos a propriedade de logarítmos e
criaremos uma função que calcula exp(Y*ln(X)). Onde exp(X) e ln(X) são funções que calculam uma potência do
número de Euler e o logarítmo neperiano respectivamente.

3.6 – Declaração de atribuição

O comando de atribuição de valores em PASCAL é o “:=” ao invés do “←”:

PORTUGOL            PASCAL
idade ← 18;         idade := 18;
media ← (N1+N2)/2;  media := (N1+N2)/2;

3.7 – Declaração de controle

PORTUGOL            PASCAL
idade ← 18;         idade := 18;
media ← (N1+N2)/2;  media := (N1+N2)/2;

3.8 – Declaração de entrada e saída

Os comandos de entrada e saída leia() e escreva() possuem diretamente seus
representantes em pascal: read() e write().

PORTUGOL                    PASCAL
leia(idade);                read(idade);
leia(peso,altura);          read(peso,altura);
escreva(idade);             write(idade);
escreva(peso," ",altura);   write(peso,' ',altura);

O read() com várias variáveis lê os valores digitados no teclado separados por espaço.
Para leitura de textos que possuem espaços em seus valores usamos o readln() que espera que o
enter seja pressionado. E similarmente o writeln() imprime o conteúdo com uma quebra de linha
no final.

PORTUGOL                    PASCAL
leia(nomeCompleto);         readln(nomeCompleto);
escreva(idade);             writeln(idade);

3.9 – Estruturas de controle

As estrutura de controle são praticamente traduções dos comandos em PORTUGOL.
Uma seqüência de comandos simples podem ser agrupadas em um único comando pelo chamado bloco de código
. Os comandos são escritos separados por “;” e devem estar dentro de um beginend.

Condicional

PORTUGOL              PASCAL
se <condição> então     if <condição> then
   comando1;          begin
   comando2;             comando1;
     ...                 comando2;
fim-se;                    ...
                      end;

se condição então     if <condição> then
   comando1;          begin
   comando2;             comando1;
     ...                 comando1;
senão         ...
	comandoA;     end
	comandoB;     else
	...           begin
fim-se;                  comandoA;
                         comandoB;
                            ...
                      end;
                      
                      if <condição> then
                         comando1
                      else
                         comando2;
             
escolha <Expressão>			case <Expressão> of
	caso v11,v12,...v1n: C1;	   v11,v12,...v1n: C1;
	caso v21,v22,...v2n: C2;	   v21,v22,...v2n: C2;
	...						...
	caso vn1,vn2,...vnn: Cn;	   vn1,vn2,...vnn: Cn;
	senão Cs;			else
fim-escolha;				   Cs;
					end;

Repetição

PORTUGOL                     PASCAL
enquanto <condição> faça     while <condição> do
   comando1;                 begin
   comando2;                    comando1;
     ...                        comando2;
fim-enquanto;                    ...
                             end;

repita                       repeat
   comando1;                    comando1;
   comando2;                    comando2;
     ...                          ...
até <condição>;              until <condição>;
                             
para <variável> de <início> até <fim> faça     for <variável>:=<início> to <fim> do
   comando1;                                   begin
   comando2;                                        comando1;
     ...                                            comando2;
fim-enquanto;                                        ...
                                               end;

3.10 – Estruturação de dados

Tipo definidos pelo usuário são os vetores, matrizes e registros. O PASCAL dá os recursos para
que o usuário crie estas estruturas deixando seus dados em um nível de abstração mais alto, mais próximo
da realidade.

Vetores

Um vetor em PASCAL é um tipo de dados declarado pelo programador que agrupa várias variáveis do mesmo tipo em uma única declaração.
O tipo deve ser declarado numa seção type antes de ser utilizado para definir variáveis.

Em PORTUGOL:
	tipo <identificador> = vetor[<inicio>:<fim>] <tipo>;

	tipo TReais = vetor[1:40] real;
	TReais: notas;
	
	tipo TTextos = vetor[1:40] caracter;
	TTextos: nomes;
	
Em PASCAL:
	type <identificador> = array[<inicio>:<fim>] of <tipo>;

	type
		TReais = array[1:40] of real;
		TTextos = array[1:40] of string;
		
	var
		TReais: notas;
		TTextos: nomes;

Matrizes

Uma matriz em PASCAL é definida como um vetor de mais uma dimensão. Também se utiliza a palavara reservada array
com mais de um faixa de valores para os índices. Deve ser definido numa seção type.

	type <identificador> = array[d1i:d1f, d2i:d2f, ...] of  <tipo>;


	type
		TReais = array[1:40, 1:3] of real;
	var
		TReais: notas;

Registros

Um registro é um tipo não homogêneo definido pelo programador. Deve ser definido numa seção type antes de se ter variáveis declaradas.

Em PORTUGOL:
tipo TPessoa = registro
                 caracter: nome;
                 inteiro: idade;
                 lógico: sexo;
                 real: peso;
               fim-registro;

Em PASCAL:
type
TPessoa = record
nome: string;
idade: integer;
sexo: boolean;
peso: real;
end;

3.11 – Procedimentos e funções

Os procedimentos e funções devem estar definidos antes dos blocos onde serão utilizados e seguem a sintaxe abaixo:

Em PORTUGOL:

procedimento <identificador>(<parâmetros>);
<declaraçao de parâmetros>
início
	C1;
	C2;
	...
	Cn;
fim;

Em PASCAL:

procedure <identificador>(<declaraçao de parâmetros>);
begin
	C1;
	C2;
	...
	Cn;
end;

Onde a declaração dos parâmetros é feita como uma definição das variáveis
normal em pascal. Se uma declaração for precedida pela palavra reservada var
este parâmetro é passado por referência e caso contrário, por cópia. Parâmetros passados
por referência podem ter seu valor global ao procedimento alterado, sendo muito utilizados
como variáveis de retorno de procedimentos e funções.

Um função se comporta exatamente como um procedimento, exceto pelo fato de ela própria ter
um valor de retorno. O valor de retorno de uma função é definido dentro do seu corpo quando
se atribui um valor ao identificador de mesmo nome da função. Este comando de atribuição é
obrigatório!

Em PORTUGOL:

função <identificador>(<parâmetros>):<tipo>;
<declaraçao de parâmetros>
início
	C1;
	C2;
	...
	<identificador> ← <valor>;
	...
	Cn;
fim;

Em PASCAL:

function <identificador>(<declaraçao de parâmetros>
):<tipo>;
begin
	C1;
	C2;
	...
	<identificador> := <valor>;
	...
	Cn;
end;
Share

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*