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 begin…end.
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;
Deixe uma resposta