Você está na página 1de 19

Subprogramas (funções e

procedimentos)
Regente da Cadeira
Dikiefu Fabiano, MSc.
Assistentes Estagiários:
Emanuel Tunga
Dizando Norton
Monitores:
Amádio de Jesus
João Costa
Ivone Diavita
Subprogramas
Subprograma é um programa que auxilia o
programa principal através da realização de uma
determinada subtarefa. Também podemos chamar
sub-rotina, método ou módulo.

Os subprogramas são chamados dentro do corpo do


programa principal como se fossem comandos.
Após seu término, a execução continua a partir do
ponto onde foi chamado. É importante compreender
que a chamada de um subprograma simplesmente
gera um desvio provisório no fluxo de execução.
Subprogramas
 Um subprograma, além de ter acesso às variáveis do
programa que o chamou (variáveis globais), pode ter suas
próprias variáveis (variáveis locais), que existem apenas
durante sua chamada.

 Ao se chamar um subprograma, também é possível passar-lhe


determinadas informações que recebem o nome de
parâmetros (que são valores que, na linha de chamada, ficam
entre os parênteses e que estão separados por vírgulas).

 Para se criar subprogramas, é preciso descrevê-los após a


declaração das variáveis e antes do corpo do programa
principal.
Subprogramas

Existem
duas espécies de Subprogramas:
PROCEDIMENTO e FUNÇÃO
Procedimentos
Subprogramas que não retornam nenhum valor:
Devem ser declarados entre o final da declaração de
variáveis e a linha inicio do programa principal
Sintaxe:
procedimento <nome-de-procedimento> (<sequência-
de-declarações-de-parâmetros>)
// Secção de Declarações de Variáveis Internas
// Secção de Comandos
fimprocedimento
Procedimentos
<nome-de-procedimento> obedece as mesmas regras de
nomenclatura das variáveis.

<sequência-de-declarações-de-parâmetros> é uma
sequência de
<tipo-de-dado> <sequência-de-parâmetros>
separadas por ponto e vírgula.

<sequência-de-parâmetros> é uma sequência de nomes de


parâmetros (também obedecem a mesma regra de
nomenclatura de variáveis) separados por vírgulas.
Procedimentos, Exemplos (1)
algoritmo "exemplo 1“
inteiro n, m, res
procedimento soma ()
inteiro aux
//n, m e res são variáveis globais
aux <- n + m
res <- aux
fimprocedimento
inicio
n <- 4
m <- -9
//chamada ao procedimento soma
soma()
escreva(res)
fimalgoritmo
Procedimentos, Exemplos (2)
algoritmo "exemplo 2"
inteiro n, m, res

procedimento soma (inteiro x, inteiro y)

//res é variável global


res <- x + y
fimprocedimento
inicio
n <- 4
m <- -9
//chamada ao procedimento com passagem de parâmetros por valor
soma(n, m)
escreva(res)
fimalgoritmo
Funções
Subprograma que além de executar uma determinada
tarefa, retorna um valor para quem a chamou, que é o
resultado da sua execução.

Por este motivo, a chamada de uma função aparece no


corpo do programa principal como uma expressão, e não
como um comando.

De modo análogo aos procedimentos, sua declaração


deve estar entre o final da declaração de variáveis e a
linha inicio do programa principal, e segue a sintaxe
abaixo:
Funções
funcao <tipo-de-dado> <nome-de-função>
(<sequência-de-declarações-de-parâmetros>)
// Secção de Declarações Internas

// Secção de Comandos
retorne …
fimfuncao
Funções
O <nome-de-função> obedece as mesmas regras de
nomenclatura das variáveis.

A <sequência-de-declarações-de-parâmetros> é uma
seqüência de
<tipo-de-dado> <sequência-de-parâmetros>
separadas por ponto e vírgula.

<sequência-de-parâmetros> é uma sequência de nomes


de parâmetros (também obedecem a mesma regra de
nomenclatura de variáveis) separados por vírgulas.
Funções
O valor de retorno da função será do tipo
especificado na sua declaração. Em alguma parte da
função (de modo geral, no seu final), este valor deve
ser retornado através do comando retorne.

De modo análogo ao programa principal, a secção de


declaração internas tem a seguinte sintaxe:
<tipo-de-dado> <lista-de-variáveis>
Funções, Exemplos (I)
algoritmo “exemplo funcao 1”
inteiro n, m, res
funcao inteiro soma()
inteiro aux
//n e m são variáveis globais
aux <- n + m
retorne aux
fimfuncao
inicio
n <- 4
m <- -9
//chamada da função sem parâmetros
res <- soma()
escreva(res)
fimalgoritmo
Funções, Exemplos (2)

algoritmo "exemplo funcao 2"

funcao inteiro soma(inteiro x, inteiro y)


retorne x + y
fimfuncao
inicio
inteiro n, m, res
n <- 4
m <- -9
res <- soma(n, m)
escreva(res)
fimalgoritmo
Recursão
É a possibilidade de que um subprograma possa chamar a si mesmo.

Implemente uma função factorial que calcula recursivamente o factorial


do número inteiro que recebe como parâmetro:

funcao inteiro factorial (inteiro v)

se v <= 2 entao
retorne v
senao
retorne v * factorial(v-1)
fimse
fimfuncao
Tarefas
1. Escrever um procedimento chamado
DOBRA que multiplique um número
inteiro (recebido como parâmetro) por 2.
Escrever um programa para ler um valor
inteiro e , utilizando o procedimento
DOBRA, calcular e exibir o dobro do
mesmo.
Tarefas
II. Escrever uma função chamada MAIOR
que receba dois números inteiros e retorne
o maior deles. Escrever um programa para
ler dois números inteiros e, utilizando a
função MAIOR, calcular e exibir o maior
valor entre os números lidos.
Tarefas
III. Escreva um procedimento chamado
SINAL que receba como parâmetro um
valor N inteiro e escreva a palavra
POSITIVO se N for um número maior
que zero, NEGATIVO se N for menor que
zero, ou ZERO se N for igual a zero.
Tarefas
IV. Escreva um procedimento chamado
TROCA que receba 2 variáveis inteiras (X
e Y) e troque o conteúdo entre elas;

Você também pode gostar