Você está na página 1de 6

Lgica de Programao

Funes

Tpicos Abordados

Declarao
Chamada
Variveis locais e globais
Passagem de parmetros
Retorno de valores
Recursividade

Decomposio de Problemas
Os algoritmos podem ser divididos em
vrias partes
Isto especialmente importante para
algoritmos complexos
Facilita o entendimento
Foco em resolver apenas uma parte do
problema, e no o problema como um todo

Estas subdivises de um algoritmo so


chamadas funes

Funes
Uma funo um bloco de cdigo que tem o
objetivo de resolver uma parte do algoritmo
principal
A funo deve ter
um nome nico

funo processar() {
...
}
Aqui dentro est o
cdigo a ser executado
pela funo

Chamando Funes
Depois de criada, uma funo pode ser
chamada
O nome da funo utilizado
incio {
escreva("Processando...");
processar();
escreva("Fim do Processamento");
}
A funo chamada
neste momento

Chamando Funes
Quando uma funo chamada, o fluxo de
execuo desviado para ela

Bloco

Funo f()

ao 1
ao 2
f();
ao 3
...
ao n

ao 1
ao 2
ao 3
...
ao n

Funes e Variveis
As variveis definidas dentro de uma funo
so visveis apenas dentro dela
Tentar acessar a varivel fora dela causar erro

Variveis declaradas desta forma so


chamadas de variveis locais
Possuem um escopo local, vlido apenas no
interior da funo
funo f() {
real: valor;
}

A varivel valor s existe


dentro da funo f()

Funes e Variveis
Uma varivel pode tambm ser considerada
uma varivel global
Neste caso, ela declarada fora de qualquer
funo
Todas as funes conseguem acess-la
global real: valor;

Todas as funes podem


ler e alterar a varivel valor

global identifica que a


varivel global

Passando Parmetros para Funes


comum que uma funo precise receber
valores de entrada para realizar
determinado processamento
Por exemplo, uma funo somar precisa
receber os nmeros para efetuar a operao

Fornecer dados de entrada para funes


significa passar parmetros

Passando Parmetros para Funes


Os parmetros so
definidos como as
variveis

funo somar(real: x, real: y) {


real: result;
result = x + y;
escreva(result);
}

Parmetros so
variveis locais
Os valores dos
parmetros so
copiados no momento
da chamada

incio {
real: n1;
real: n2;
n1 = 10;
n2 = 5;
somar(n1, n2);
}

Se uma funo recebe


parmetros,
obrigatrio fornec-los

Retornando Valores
Determinadas funes precisam enviar um
dado de resposta para quem fez a chamada
Estas funes podem retornar valores
funo somar(real: x, real: y) -> real {
real: result;
result = x + y;
retorne result;
Tipo de retorno
}
Quando uma funo
retorna um valor, retorne
deve ser utilizado

O valor retornado deve


ser compatvel com o
tipo de retorno

Retornando Valores
Quem fez a chamada, pode ler o valor
retornado, apesar de no ser obrigatrio
incio {
real: n1;
real: n2;
real: r;
n1 = 10;
n2 = 5;
r = somar(n1, n2);
}

A varivel onde a atribuio


ocorre deve ser compatvel com
o tipo de retorno da funo

Atribui o valor retornado


da funo varivel r

Retornando Valores
O comando retorne pode ser utilizado em
funes que no retornam valores
Quando chamado, finaliza a execuo da
funo
funo mostra_valor(inteiro: v) {
se (v > 10) {
retorne;
}
escreva(v);
}

Se o parmetro v for
maior que 10, no
faz nada

Informaes Importantes
O bloco incio pode ser considerado uma
funo especial, por onde o programa
comea a executar
No recebe parmetros
No retorna valores

Alguns comandos j conhecidos so, na


verdade, funes
leia, escreva, pot, rad, abra, feche, etc.

Funes que no retornam valores podem


tambm ser chamadas de procedimentos

Recursividade
Funes podem chamar outras funes
Recursividade significa que uma funo
chama ela mesma
Funo f()

Funo f()

Funo f()

ao 1
ao 2
f();
ao 3
...
ao n

ao 1
ao 2
f();
ao 3
...
ao n

ao 1
ao 2
f();
ao 3
...
ao n

...
Quando parar
de chamar?

Critrio de Parada
Toda funo recursiva deve ter um critrio
de parada
Caso contrrio as chamadas entraro em um
loop infinito
funo contar(inteiro: ini, inteiro: fim) {
escreva(ini);
contar(ini + 1, fim);
}
contar(1, 5);
No existe critrio de parada. A
funo nunca para de executar

Critrio de Parada
funo contar(inteiro: ini, inteiro: fim) {
escreva(ini);
se (ini < fim) {
contar(ini + 1, fim);
}

Critrio de parada

}
contar(1, 5);

contar(1, 5)

contar(2, 5)

contar(3, 5)

contar(4, 5)

contar(5, 5)

Você também pode gostar