Procedures e Functions
Autor: Ayrton Pipo | Publicado: 2010-05-10T18:43:00-07:00

Definição:  Uma das técnicas mais utilizadas e tida como vantajosa na confecção de  programas grandes é a modularização. Consiste em dividir o programa em  diversos módulos ou subprogramas, de certa forma dependentes uns dos  outros. Existe um módulo que é o principal, a partir do qual são  chamados os outros módulos, esse módulo principal&nbsp;recebe o nome de  programa principal, enquanto que os outros são chamados de subprogramas.  No Pascal, existem dois tipos de subprogramas: - Procedures (procedimentos) - Functions (funções)  Procedure: A procedure é como se fosse um programa. Ela tem a estrutura  praticamente igual a de um programa. Ela deve ser ativada (chamada) pelo  programa principal ou por uma outra procedure, ou até por ela mesma.  Ela contém um cabeçalho, área de declarações e o corpo da procedure.  Devemos lembrar que tudo que for declarado dentro das sub-áreas só será  reconhecido dentro da procedure. Todos os elementos (constantes, variáveis, etc.) que forem definidos  antes de começar o corpo do programa, são considerados globais e podem  ser utilizados por todas as procedures, functions e o próprio programa. O  espaço para tais elementos é criado durante a compilação. Já os  elementos declarados dentro de uma procedure, só existem dentro da  procedure, exemplo: ao declararmos uma variável dentro de uma procedure,  toda vez que ativarmos a procedure, tal variável será criada e ao  sairmos da procedure ela será destruída. Quando estivermos dentro do programa, teremos acesso à variável global e  quando estivermos dentro da procedure, teremos acesso à variável local.  Exemplo:   Program Exemplo_1; {cabeçalho do programa} uses crt; procedure testando; {cabeçalho da procedure testando} var {sub-área Var da procedure testando} begin &nbsp;&nbsp; ...{corpo da procedure testando} end; {fim do corpo da procedure testando} var {declaração de variáveis do programa principal} begin {início do porgrama principal} &nbsp;&nbsp; ... &nbsp;&nbsp; testando; {procedure sendo chamada pelo programa} &nbsp;&nbsp; ... end. {fim do programa principal}    Function: As funções são muito parecidas com as procedures. A principal diferença é  que o identificador de uma função assume o valor de retorno da função  (ou seja, essa função fará um determinado cálculo e retornará ao  programa principal tendo um valor armazenado que foi calculado dentro  dessa função) . Uma função deve sempre retornar um valor e em Turbo  Pascal, este valor é retornado no nome da função. A declaração de uma função é muito parecida com de uma procedure que por  sua vez é parecida com a de um programa:  Exemplo:  Program Exemplo_2; uses crt; Function Nome_da_função(parâmetros) : Tipo_da_função; {cabeçalho da  função} var {declaração de variáveis da função} begin &nbsp;&nbsp; ... {corpo da função} end; var {declaração das variáveis do programa principal (caso queira usar as  mesmas variáveis para o programa e para a função, tem que  declarar&nbsp;antes da function}   begin {início do programa principal} &nbsp;&nbsp; ... &nbsp;&nbsp; rTotal:=Nome_da_função(parametros); {function sendo chamada e  atribuindo o valor calculado para rTotal} &nbsp;&nbsp; ... end.  A formação do nome da função deve seguir as mesmas regras para formação  de identificadores em Turbo Pascal. Dentro dos parênteses devemos  declarar os parâmetros (variáveis a serem utilizadas) e seus respectivos  tipos dos quais a função depende (real, integer, etc). O tipo de valor  retornado pela função também deve ser declarado (real, integer, etc). Na área de declarações, podemos declarar labels, constantes, variáveis e  até mesmo Procedures e Functions. Devemos lembrar que tais elementos só  poderão ser utilizados dentro do corpo da função, pois são locais a  ela.  Importante: na hora de "chamar"a function, é necessário que o programa  já tenha os valores (parãmetros) já lidos ou definidos peolo programa  principal.  Exemplo:  program exemplo_3; uses crt; var &nbsp;&nbsp; res,a,b:real; {essas variáveis do programa principal podem ser usadas  pela function, por isso, nesse caso, não precisa declará-las novamente  dentro da function} function soma(a,b:real):real; {essa linha diz que a function chama-se  soma, e vai utilizar duas variáveis: a e b, que são reais. O resultado  obtido também será real} begin &nbsp;&nbsp; soma:=a+b; {cálculo do valor "soma"} end;  begin {inicio do programa principal} &nbsp;&nbsp; readln(a); &nbsp;&nbsp; readln(b); &nbsp;&nbsp; res:=soma(a,b); {a variável res vai receber o valor calculado pela  function soma, que vai somar a e b} &nbsp;&nbsp; writeln(res); end. {fim do programa}