Modularização


Um procedimento ou uma função em Pascal é um trecho de programa que possui variáveis e comandos próprios e que, para ser executado, deve ser ativado por um programa principal, por outro procedimento ou por outra função. 
Os identificadores declarados em um procedimento ou em uma função representam objetos locais, portanto não entram em conflito com os identificadores declarados no programa principal ou em outros procedimentos e/ou funções. 
A comunicação entre programa principal, procedimentos e funções ocorre através de chamadas. Os dados são transferidos através de parâmetros e/ou pela utilização de variáveis globais. O uso de variáveis globais não constitui uma boa prática de programação; por que será utilizada preferencialmente, a transferência de dados através de parâmetros.



Procedimento
procedure Nome da Procedure [ (lista de variáveis: tipo) ];
[ declaração de variáveis utilizadas apenas pela procedure ];
begin
comandos;
end;
[ ] - Opcional.
* O nome da procedure obedece as mesmas regras de formação dos identificadores. 
* Na lista de variáveis pode usar a procedure com passagem de parâmetros por valor e por referência. 
- Passagem de parâmetros por valor: A procedure ou função não afetam o valor da variável passada como parâmetro. 
- Passagem de parâmetros por referência: A procedure ou função afetam o valor da variável passada como parâmetro.


Exemplo:
procedure NumPar (N:Integer); 
begin 
   if (n mod 2 = 0) 
     then writeln('N é um número par') 
     else writeln('N é um número ímpar'); 
end; 


* Agora apesar de usar um operador aritmético como o mod, a procedure não afeta o valor passado como parâmetro. 
procedure MetadeNum (var N:Integer); 
begin 
   N:=N div 2; 
end; 


* Agora o valor de N é modificado pela procedure, pois se N antes estivesse valendo 4, depois de executada essa procedure, o valor de N no programa principal estaria valendo agora 2 (4 div 2 = 2).


Function
function Nome da função [(lista de variáveis: tipo)]:tipo de retorno; [ declaração de variáveis utilizadas apenas pela função ];
begin
   comandos;
end;
[] - Opcional.
* A função obrigatoriamente deve retornar algum valor ao programa principal. 
* Numa procedure ela pode ou não retornar algum valor ao programa principal e a função deve pelo menos retornar um valor. 
* A função é usada para quando queremos retornar apenas um único valor ao programa principal, já a procedure é usada quando se quer retornar mais de um valor ao programa principal.


Exemplo:
function Par (N:Integer):Boolean;
begin
   if (N mod 2 = 0)
      then Par:=True
      else Par:=False;
end;




Referência:<http://si0104.tripod.com/pascal/modularizacao.htm>.