Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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;
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);
}
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
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);
}
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
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)