Créditos FEC-Unicam

Modularização

A linguagem Pascal oferece facilidades necessárias no tocante a modularização de programas, por meio de procedimentos e funções, que permitem a confecção de programas modulares e bem estruturados. A idéia principal do conceito de modularização, informalmente falando, é dividir o programa em sub-programas, o que torna o trabalho de desenvolvimento e manutenção menos desgastante. Em Pascal o conceito de modularização é implementado por meio de sub-rotinas. Um módulo em Pascal é definido como sendo uma procedure ou uma function. Esses módulos podem ter variáveis próprias ou utilizar as variáveis declaradas no programa principal. E possível a declaração de variáveis com o mesmo identificador em módulos diferentes no mesmo nível ou em módulos aninhados (um módulo dentro do outro). Conforme o contexto em está inserido, uma variável pode ser considerada uma variável local ou um variável global. Por exemplo: as variáveis declaradas em um módulo A são consideradas locais à A, porém são consideradas variáveis globais aos sub-módulos contidos em A. Dessa forma, todas as variáveis declaradas no programa principal são consideradas globais as procedimentos.

Variáveis locais com o mesmo identificador declaradas em módulos diferentes e no mesmo nível são invisíveis umas para o outras, ou seja, não causam conflito. Quando os módulos estão aninhados, as variáveis declaradas em cada módulo, podem ser vistas e/ou utilizadas pelos respectivos sub-módulos. Porém, não serão utilizadas se forem declaradas variáveis com o mesmo identificador em seus sub-módulos, onde valerá somente as variáveis locais. Ou seja, se forem declaradas variáveis locais em um módulo A com o mesmo identificador que as variáveis globais à A, valerá as variáveis locais. Isso define as regras de escopo das variáveis, ou seja, até onde as variáveis podem ser utilizadas e/ou visíveis à outros módulos. No caso de existirem variáveis locais e globais com o mesmo nome, alterações feitas nas variáveis locais não afetam as globais. Já no caso onde um variável global é modificada, o próximo instrução que acessá-la irá encontrar o valor dessa última atualização.

Exemplo:

program A;
{ declaração de variáveis }
var m, n : real;

procedure B;
{ declaração de variáveis }
var i, j : integer;
begin
{ corpo do procedimento B }
end;

procedure C;
{ declaração de variáveis }
var
i, j : integer;
k, l : real;

procedure D;
{ declaração de variáveis }
var k, l : integer;
begin
{ corpo do procedimento D }
end;
begin
{ corpo do procedimento C }
end;

begin

{ corpo do programa principal }

end.

* As variáveis i e j declaradas nos procedimentos A e B são invisíveis entre si, portanto não causam conflito.
* As variáveis k e l são válidas como inteiros em C. Apesar de serem globais, são invisíveis a D, pois foram redeclaradas como tipo real. É como se k e l fossem declaradas com outros identificadores.
* As variáveis i e j declaradas em C são globais a D, assim como as variáveis m e n são globais à todos os procedimentos.


Procedimentos

Convencionamos aqui que módulos do Pascal como procedimentos do Pascal. Procedimento é um trecho do programa que possui seus objetos (variáveis, arquivos, etc.) e comandos próprios e que para ser executado deve ser ativado por um programa principal ou por outro procedimento. A criação de um procedimento em Pascal é feita através de sua declaração em um programa, ou seja, o procedimento é um objeto da linguagem que deve ser declarado, como os demais objetos, no início do programa ou de outro procedimento. Um procedimento em Pascal pode, por sua vez, conter outros procedimentos, que só serão conhecidos dentro do mesmo.

A declaração de um procedimento em Pascal é constituída de um cabeçalho e de um corpo. O cabeçalho identifica o procedimento através de um nome, e o corpo contém as declarações dos objetos locais, além de comandos e estruturas do procedimento. A ativação de um procedimento, atendidas às condições de escopo, é feita através da referência ao seu nome em algum ponto do programa. Em Pascal existem dois tipos de procedimentos: procedure e function. Não confunda procedimento com a tradução de procedure, pois esta última é uma palavra reservada do Pascal, que define um tipo de procedimento.