O documento discute procedimentos e funções em algoritmos e estruturas de dados. Apresenta os conceitos de subalgoritmos, projeto descendente e dividir para conquistar. Explica como declarar funções, definindo seu tipo de retorno, parâmetros e corpo. Demonstra como ativar funções, fazendo a correspondência entre parâmetros formais e atuais. Por fim, fornece exemplos e exercícios sobre funções.
Como descobrir e classificar coisas usando machine learning sem compilcação
Aula 7 -_aed_-_sub_algoritmos
1. Algoritmos e
Estruturas de Dados
Aula 7 e Aula 8
18 e 25/09/2012
Profª Ms. Engª Elaine Cecília Gatto
Unidade 6: Procedimentos e Funções
Curso de Bacharelado em Engenharia de Computação
Universidade do Sagrado Coração – USC
Bauru/SP
2. SubAlgoritmos
• DIVIDIR PARA CONQUISTAR:
• Método para resolução de problemas que consiste em dividir
um problema, em problemas menores e mais fáceis de
solucionar.
• PROJETO DESCENDENTE (TOP-DOWN DESIGN):
• Método de projetar a solução de um problema principal
obtendo soluções de seus subproblemas.
• As partes em que se divide um programa devem ser
desenvolvidas independentemente umas das outras
3. SubAlgoritmos
ALGORITMO
PRINCIPAL
SUBALGORITMO 1 SUBALGORITMO 2 SUBALGORITMO 3
PROGRAMA
PRINCIPAL
SUBPROGRAMA1 SUBPROGRAMA 2 SUBPROGRAMA 3
4. SubAlgoritmos
• Um subprograma/subalgoritmo pode ralizar as mesmas ações
que um programa:
1. Aceitar dados
2. Realizar alguns cálculos
3. Devolver resultados
• Entretanto, um subprograma é utilizado por um programa
para um propósito específico.
• O programa principal chama ou invoca um subprograma.
• O subprograma, quando invocado, obtém o controle, executa
sua tarefa e devolve o controle ao programa principal.
• Existem dois tipos de subprogramas: FUNÇÕES e
PROCEDIMENTOS.
5. SubAlgoritmos
PROGRAMA Chamada 1
PRINCIPAL
---------------------
Retorno 1 SUBPROGRAMA
ALGORITMO Chamada 2 --------------------------
SUBALGORITMO
Retorno 2
6. SubAlgoritmos
Chamada 1
SUBPROGRAMA 1
Retorno 1
Chamada 2
PROGRAMA SUBPROGRAMA 2 SUBPROGRAMA 2.1
PRINCIPAL Retorno 2
SUBPROGRAMA 3
10. Declarando Funções
<tipo_de_resultado> função <nome_função> (lista_de_paramêtros)
(declarações locais)
Tipo de resultado que a
função retorna:
início
inteiro, real, string, caracter,
<ações> //corpo da função
booleano, etc.
devolver (<expressão>)
fim_função
11. Declarando Funções
<tipo_de_resultado> função <nome_função> (lista_de_paramêtros)
(declarações locais)
Nome da função:
início Dê um nome simples,
objetivo e que te lembre o
<ações> //corpo da função
que está fazendo!
devolver (<expressão>)
fim_função
12. Declarando Funções
<tipo_de_resultado> função <nome_função> (lista_de_parametros)
(declarações locais)
Lista de Parâmetros:
início Parâmetros formais ou argumentos,
com um ou mais argumentos
<ações> //corpo da função
devolver (<expressão>) ({E|S|E/S} tipo_de_dadoA: parametro
fim_função 1; {E|S|E/S} tipo_de_dadoB: parametro
2; {E|S|E/S} tipo_de_dadoX: parametro
x)
Exemplo:
inteiro funcao fatorial (E inteiro: n)
13. Declarando Funções
<tipo_de_resultado> função <nome_função> (lista_de_parametros)
(declarações locais)
Declaração de Variáveis e
Estruturas de Dados caso
início necessário
<ações> //corpo da função
devolver (<expressão>)
fim_função
14. Declarando Funções
<tipo_de_resultado> função <nome_função> (lista_de_parametros)
(declarações locais)
Instruções que constituem a
definição da função e que
início devem conter uma única
<ações> //corpo da função instrução;
devolver (<expressão>)
fim_função
15. Declarando Funções
<tipo_de_resultado> função <nome_função> (lista_de_parametros)
(declarações locais)
Esta expressão existe se a
início função foi declarada com
<ações> //corpo da função valor de retorno e expressão
no valor devolvido pela
devolver (<expressão>) função.
fim_função
Exemplo: uma função do
tipo inteiro deve retornar
um resultado do tipo inteiro
16. Declarando Funções
Exemplo:
real função F(E real:x)
início
devolver ( x/(1+x*x) )
fim_função
real função tan(E real:X)
início
devolver (sem(x)/cos(x))
fim_função
17. Declarando Funções
• Parâmetros formas, fictícios ou mudos: são nomes de
variáveis, de outras funções ou procedimentos e que
somente são utilizados dentro do corpo da função.
• Parâmetros atuais: são os argumentos utilizados
quando chamamos a função e que podem ser
constantes, variáveis, expressões, valores de funções,
nomes de funções ou procedimentos.
18. Ativando Funções
nome_função (lista_de_parametros_atuais)
nome_função: função que chama
lista_de_parametros_atuais: constantes, variáveis, expressões, valores
de funções, nomes de funções ou procedimentos;
Quando chamamos uma função, automaticamente se estabelece uma
correspondência entre os parâmetros formais e os atuais, e por este
motivo, a quantidade destes parâmetros devem ser idênticas na
chamada e na declaração da função.
19. Ativando Funções
Exemplo 1:
real : função potência ( E real : x; E inteiro: n)
var
inteiro: i, y;
início
y 1;
desde i 1 até abs(n) fazer //estrutura for
y y*x;
fim_desde
se n<0 então
y 1/y;
fim_se
devolver(y);
fim_função
20. Ativando Funções
Exemplo 2:
algoritmo Elevar_a_Potencia;
var
real : a, n;
inicio
escreva(‘Digite um número positivo’);
leia(n);
escreva(‘Digite um expoente’);
leia(a);
escreva(‘N elevado a = ’, potencia(n, a) ); //chama a função
fim
real funcao potencia(E real: n, a)
inicio
devolver(EXP(a * LN(n)));
fim_funcao
21. Ativando Funções
Exemplo 3:
inteiro funcao FATORIAL (E inteiro:n)
var
inteiro: i, f; //advertência, segundo o resultado, f pode ser real
inicio
f 1;
desde i 1 até n fazer //for
f f*1;
fim_desde
devolver(f);
fim_funcao
22. Ativando Funções
algoritmo funcao_fatorial;
var
inteiro: x, y, numero;
inicio
escreva(‘Digite um número inteiro e positivo’);
leia(numero);
x fatorial(numero); //chama a função
y fatorial(5); //chama a função
escreva(x,y);
Fim
23. Exercícios FUNÇÕES
1. Projetar uma função para o cálculo do cubo de um número
2. Projetar uma função para calcular o máximo divisor comum
3. Projetar uma função para calcular o mínimo divisor comum
4. Projetar uma função para calcular o seno
5. Projetar uma função para calcular o cosseno
6. Projetar uma função para calcular a tangente