• Unidade 1 - Caracteristicas e Implementações da linguagem de Programação - Pascal.
  • 1.1 - Procedimentos e Funções


    Até agora você deve ter escrito programas pequenos, com poucas linhas.

    Neste capítulo você irá aprender como escrever programas maiores, mais complexos, para isto você deverá saber sobre procedimentos e funções.

    A idéia para você construir um programa grande com muitas linhas, resultado de um grande problema, é dividir o problema em partes. Simples, não? Estas partes menores poderemos chamar de procedimentos ou funções.

    Um programa poderá ter diversos procedimentos e diversas funções. Se você quizer agora saber mais sobre este método clique aqui.

    Um procedimento - em Pascal se escreve procedure - é um segmento especifico do programa que realiza alguma tarefa.

    Normalmente cria-se um procedimento quando alguma tarefa é executada diversas vezes dentro de um programa.

    Um procedimento tem a mesma estrutura de um programa, qual seja, um cabeçalho seguido de uma seção de declarações e após, uma seção executável. Olha só como fica este esqueleto no Pascal:

    O nome de um procedimento poderá ser qualquer nome, de preferência significativo com aquilo que o procedimento se propõe a executar.

    Os argumentos são as variáveis que serão repassadas ou calculadas pelo procedimento.

    Necessariamente devemos declarar as variáveis denominadas argumentos quando da definição do procedimento.

    Se um programa, procedimento ou função chamar um outro procedimento ou outra função, devemos manter a coerência nos argumentos.

    Para que o procedimento seja executado, existe a necessidade de alguém chamá-lo.

    Quando quisermos que um procedimento o valor de uma variável retorne ao programa que o chamou, devemos colocar a palavra var antes da declaração do argumento.

    Veja a seguir uma estrutura exemplo de um programa com procedimentos. Note que o programa principal fica colocado no final.

    O procedimento proca(a,b) é chamado no programa principal. Ele utiliza como argumentos duas variáveis, a e b. Quando da execução do procedimento o valor do argumento a passará para x e o valor do argumento b passará para y.

    Como nesta declaração do procedimento não aparece a palavra var a nenhuma variável, deduziremos que neste procedimento só entra valores, não sai. Provavelmente este será um procedimento de impressão.

    Na chamada o procedimento procb(1,2,s,ss) utiliza como entrada dois valores e duas variáveis.

    Pela chamada do procedimento a variável w valerá 1 e k valerá 2.

    As variáveis s e ss serão variáveis de retorno.

    Verifique que no procedimento procb, as variáveis r e rr deverão retornar o valor para s e ss respectivamente.

    Quando um procedimento é criado ele poderá ser colocado em dois locais totalmente distintos.

    O primeiro é dentro do programa, como nós vimos no esqueleto de programa anterior.

    O segundo é guardá-lo em um bibilioteca. Mais tarde veremos como fazer isto. Por enquanto basta saber que existe estes dois locais.

    Existem algumas bibiliotecas já definidas pelo TURBO PASCAL.

    No exemplo a seguir usaremos a bibilioteca denominada CRT. Não confunda CRT com Companhia Riograndese de Telecomunicações. CRT quer dizer Tubos de Raios Catódicos. São rotinas para tratar a tela como sendo uma folha quadriculada de 80 colunas por 24 linhas.

    Analise agora o exemplo a seguir, é um programa completo.

    O exemplo possui 2 procedimentos um para ler e o outro para imprimir uma matriz quadrada com dimensão máxima de 10.

    Inicialmente começaremos o programa dizendo que vamos utilizar um bibilioteca de procedimentos e funções para manipulação das telas (uses crt;), isto é, só para dar um pouco de frescura (mais amigável) na entrada e saída dos dados.

    Após então vem o procedimento lermatriz, o procedimento impmatriz e por fim o programa principal . De uma olhada no programa.

    program Matrizes;

    Vamos tecer alguns comentários sobre o programa, um pouco mal feito, principalmente porque não testa o valor de n, que no máximo deveria ser 10.

    Quando no programa principal o comando lermatriz('a',a) for executado, terá como parâmetros a letra a e a variável a, que representa uma matriz, mesmo não tendo índices.

    No comando impmatriz('a',0,a) é feito da mesma forma que o comando anterior, porém foi introduzido mais um valor.

    O valor 0 neste procedimento indicam as linhas de vídeo na hora da matriz ser visualizada em tela.

    Um outro comando é o clrscr que é um procedimento da bibilioteca crt (tubo de raios catóticos) que limpa a tela (clean screen).

    Um outro procedimento desta bibilioteca é o gotoxy que especifica onde o cursor deverá estar, quando for lido ou impresso um determinado dado.

    Para utilizar este comando devemos especificar primeiro o valor de x, que poderá ser uma expressão, e de pois o valor de y, que também poderá ser uma expressão.

    Neste exemplo conforme o valor de i e j teremos a posição dentro da tela, como uma matriz.

    Agora que você entendeu este programa, chame o ambiente turbo, digite este programa e veja o resultado.

    Exercicio: Será que não daria para fazer um único procedimento para ler e imprimir uma matriz?

    No Pascal podemos ter também um procedimento especial denominado função.

    Uma função é um segmento de programa especificado que calcula um único valor.

    Uma função difere de um procedimento visto anteriormente porque:

    Veja agora um exemplo de uma função.

    O programa utiliza alguns procedimetos já definidos anteriormente.

    Este programa lê uma matriz, calcula a soma dos elementos da diagonal principal e imprime o valor calculado.

    program Diagonal;
    function somadiagprinc(n:integer; c:matriz): integer;
    begin
    end;
    {Programa Princiapl}
    begin
    end.

    Genericamente denominamos funções e procedimentos por subprograma ou subrotinas.

    No próximo capítulo voltaremos a falar sobre a passagem de parâmetros.

    Tecle aqui para obter uma série de exercicios ainda de Algoritmo e Programação