Ir para o conteúdo

Aula 30 - Procedimentos e Funções

Agora chegamos em uma parte muito interessante do curso, vamos aprender sobre procedimentos e funções. Mas antes de aprender sobre eles, vamos descobrir a motivação para utilizá-los e pra isso precisaremos de um exemplo.

Por que aprender sobre procedimentos e funções?#

Imagine que você precisa criar um programa que funcione como uma calculadora, tendo várias operações matemáticas. Você deve criar um menu que permita ao usuário escolher qual operação ele deseja fazer. Alguns dos requisitos são:

  • O programa deve suportar operações de soma, subtração, multiplicação, divisão, potência, raiz quadrada, raiz cúbica, seno, cosseno, tangente e logaritmo;
  • O programa deve permitir que o usuário escolha qual operação ele deseja fazer;
  • Caso o usuário escolha uma operação que não existe, o programa deve mostrar uma mensagem de erro e voltar para o menu;
  • Ao final de cada operação o programa deve voltar para o menu e permitir que o usuário escolha outra operação podendo aproveitar o resultado do calculo anterior.

Olhando para esses requisitos, você pode imaginar que o programa ficaria muito grande e difícil de manter, pois serão diversos laços de repetição, condicionais (se ou escolha caso) e comandos de entrada e saída.

Se deparando com este desafio você provavelmente se questionará se não há alguma forma de simplificar o programa em partes menores e mais fáceis de serem entendidas. E a resposta é sim, podemos fazer isso utilizando procedimentos e funções.

O que são procedimentos e funções?#

Em termos mais simples, procedimentos e funções são “coisas” que executam uma tarefa específica ou uma sequência de tarefas.

Em termos mais técnicos, procedimentos e funções são blocos de código que compõem o seu programa e executam sub-tarefas.

Função#

O que é uma função?#

Aqui podemos usar uma analogia da função na matemática com a função na programação. Suponha que você tem as seguintes funções:

\[f(x) = 3x+5\]
\[g(x) = 2x^2+4x\]

Se você quiser calcular o valor de \(f(2)\) você deverá substituir o valor de \(x\) por \(2\) e então calcular o resultado da função. O mesmo vale para a função \(g(x)\), se você quiser calcular o valor de \(g(2)\) você deverá substituir o valor de \(x\) por \(2\) e então calcular o resultado da função.

\[f({\colorbox{green} 2 }) = 3 \times {\colorbox{green} 2 } + 5 = 11\]
\[g({\colorbox{green} 2 }) = 2 \times{\colorbox{green} 2 }^2 + 4 \times {\colorbox{green} 2 } = 16\]

Se você prestar atenção, notará que \(f\) é o nome da função e a variável \(x\) é o parâmetro da função. E o \(3x+5\) é a “sub-tarefa” desta função.

Isso quer dizer que se você dizer que \(y = f(2)\), o que acontecerá é que:

\[y = f({\colorbox{green} 2 }) = 3 \times {\colorbox{green} 2 } + 5 = 11 \]

Em outras palavras:

  1. Você chama a função \(f\) passando o valor \(2\) como parâmetro;
  2. A função \(f\) substitui o valor de \(x\) por \(2\);
  3. Ocorre as etapas da função \(f\);
  4. O resultado da função \(f\) é retornado para a variável \(y\).

Resumindo#

Uma função é um bloco de código que pode receber nenhum ou mais parâmetros e deve retornar um valor.

Estrutura de uma função#

Agora vamos criar uma função similar ao que vimos no exemplo anterior.

funcao f(x: real): real
    var
        auxiliar: real
    inicio
        auxiliar <- 3 * x + 5

        retorne auxiliar

fimfuncao

Note que aqui dizemos o nome da função, que é f e que ela recebe um parâmetro chamado x. Além disso, a função retorna um valor do tipo real.

funcao f(x: real): real
    var
        auxiliar: real
    inicio
        auxiliar <- 3 * x + 5

        retorne auxiliar

fimfuncao

Nas linhas seguintes temos as “sub-tarefas” que a função f deve executar. E que temos uma variável auxiliar para armazenar temporariamente este resultado.

funcao f(x: real): real
    var
        auxiliar: real
    inicio
        auxiliar <- 3 * x + 5

        retorne auxiliar

fimfuncao

E por fim temos a linha que retorna o valor da variável auxiliar para quem chamou a função.

funcao f(x: real): real
    var
        auxiliar: real
    inicio
        auxiliar <- 3 * x + 5

        retorne auxiliar

fimfuncao

Exemplos#

Para este primeiro exemplo vamos descobrir como utilizar a função que vimos anteriormente.

algoritmo "FuncaoEProcedimento"

    funcao f(x: real): real
        var
            auxiliar: real
        inicio
            auxiliar <- 3 * x + 5

            retorne auxiliar

    fimfuncao

var

inicio
    escreval(f(2))
fimalgoritmo

Agora note que você pode utilizar a função mais de uma vez, basta chamar a função passando o valor que você deseja como parâmetro.

algoritmo "FuncaoEProcedimento2"

    funcao f(x: real): real
        var
            auxiliar: real
        inicio
            auxiliar <- 3 * x + 5

            retorne auxiliar

    fimfuncao

var

inicio
    escreval(f(1), f(2), f(3), f(4), f(5))
fimalgoritmo

Procedimento#

Agora que você entendeu sobre o que é uma função fica muito mais fácil de entender o que é um procedimento.

O que é um procedimento?#

Um procedimento é um bloco de código que pode receber nenhum ou mais parâmetros e não retorna um valor.

Em termos mais simples, um procedimento “é uma função que não devolve alguma coisa”, ou seja, ele executa uma “sub-tarefa” e não te retorna nada.

Estrutura de um procedimento#

Agora vamos criar a “casca” de um procedimento.

procedimento p(x: real)
    var
        // variáveis utilizadas no procedimento
    inicio
        // comandos do procedimento
fimprocedimento

Exemplo#

Para consolidar o que você aprendeu vamos criar um procedimento que receberá um número e irá imprimir na tela dez vezes o resultado da função f passando este número como parâmetro.

algoritmo "FuncaoEProcedimento"

    funcao f(x: real): real
        var
            auxiliar: real
        inicio
            auxiliar <- 3 * x + 5

            retorne auxiliar

    fimfuncao

    procedimento g(x: real)
        var i:inteiro
        inicio
            para i de 0 ate 10 faca
                escreval(f(x))
            fimpara
    fimprocedimento

var

inicio
    g(1)
fimalgoritmo

Conclusão#

Nesta aula você aprendeu sobre o que são funções e procedimentos, a diferença entre eles, viu também que as funções e procedimentos podem ser utilizadas diversas vezes em um programa. E também que elas ajudam a deixar o código mais organizado e legível.

Aula em vídeo#

Caso prefira também existe o conteúdo em forma de vídeo