segunda-feira, 10 de maio de 2010

Procedures e Functions

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 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
   ...{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}
   ...
   testando; {procedure sendo chamada pelo programa}
   ...
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
   ... {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 antes da function}


begin {início do programa principal}
   ...
   rTotal:=Nome_da_função(parametros); {function sendo chamada e atribuindo o valor calculado para rTotal}
   ...
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
   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

   soma:=a+b; {cálculo do valor "soma"}
end;

begin {inicio do programa principal}

   readln(a);
   readln(b);
   res:=soma(a,b); {a variável res vai receber o valor calculado pela function soma, que vai somar a e b}
   writeln(res);
end. {fim do programa}

Nenhum comentário:

Postar um comentário