aula 7 aed - sub algoritmos
TRANSCRIPT
Algoritmos e Estruturas de Dados
Aula 7 e Aula 818 e 25/09/2012 Profª Ms. Engª Elaine Cecília GattoUnidade 6: Procedimentos e FunçõesCurso de Bacharelado em Engenharia de ComputaçãoUniversidade do Sagrado Coração – USCBauru/SP
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
SubAlgoritmos ALGORITMOPRINCIPAL
SUBALGORITMO 1 SUBALGORITMO 2 SUBALGORITMO 3
PROGRAMAPRINCIPAL
SUBPROGRAMA1 SUBPROGRAMA 2 SUBPROGRAMA 3
SubAlgoritmos• Um subprograma/subalgoritmo pode ralizar as mesmas ações
que um programa:
1. Aceitar dados2. Realizar alguns cálculos3. 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.
SubAlgoritmos
PROGRAMA PRINCIPAL
---------------------
ALGORITMO
SUBPROGRAMA
--------------------------
SUBALGORITMO
Chamada 1
Retorno 1
Chamada 2
Retorno 2
SubAlgoritmos
PROGRAMA PRINCIPAL
SUBPROGRAMA 1Chamada 1
Retorno 1
Retorno 2 SUBPROGRAMA 2
SUBPROGRAMA 3
SUBPROGRAMA 2.1Chamada 2
SubAlgoritmos: FUNÇÕES• Função: é uma operação que recebe um ou mais valores
chamados argumentos e produz um valor denominado resultado.
• Exemplo:
• f(x) = é o nome da função;• x = é o argumento da função;• Nenhum valor específico é associado a x;• Portanto, x é um parâmetro formal;• Para avaliar f, devemos dar um valor real ou atual a x;• Se x = 3, então, qual será o resultado da função? f(x) = f(3)
SubAlgoritmos: FUNÇÕES• Uma função pode ter vários argumentos. Exemplo:
• f(x) é uma função com dois argumentos: x e y;• Uma função se transforma em uma expressão aritmética que
é executada pelo processador. Exemplo:
• Funções internas: são as funções nativas da linguagem de programação, incorporadas ao sistema, também chamadas de intrínsecas.
• Funções externas: são as funções definidas pelo usuário.
Declarando Funções<tipo_de_resultado> função <nome_função> (lista_de_paramêtros)
(declarações locais)
início<ações> //corpo da funçãodevolver (<expressão>)
fim_função
Declarando Funções<tipo_de_resultado> função <nome_função> (lista_de_paramêtros)
(declarações locais)
início<ações> //corpo da funçãodevolver (<expressão>)
fim_função
Tipo de resultado que a função retorna:
inteiro, real, string, caracter, booleano, etc.
Declarando Funções<tipo_de_resultado> função <nome_função> (lista_de_paramêtros)
(declarações locais)
início<ações> //corpo da funçãodevolver (<expressão>)
fim_função
Nome da função:
Dê um nome simples, objetivo e que te lembre o que está fazendo!
Declarando Funções<tipo_de_resultado> função <nome_função> (lista_de_parametros)
(declarações locais)
início<ações> //corpo da funçãodevolver (<expressão>)
fim_função
Lista de Parâmetros:
Parâmetros formais ou argumentos, com um ou mais argumentos
({E|S|E/S} tipo_de_dadoA: parametro 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)
Declarando Funções<tipo_de_resultado> função <nome_função> (lista_de_parametros)
(declarações locais)
início<ações> //corpo da funçãodevolver (<expressão>)
fim_função
Declaração de Variáveis e Estruturas de Dados caso necessário
Declarando Funções<tipo_de_resultado> função <nome_função> (lista_de_parametros)
(declarações locais)
início<ações> //corpo da funçãodevolver (<expressão>)
fim_função
Instruções que constituem a definição da função e que devem conter uma única instrução;
Declarando Funções<tipo_de_resultado> função <nome_função> (lista_de_parametros)
(declarações locais)
início<ações> //corpo da funçãodevolver (<expressão>)
fim_função
Esta expressão existe se a função foi declarada com valor de retorno e expressão no valor devolvido pela função.
Exemplo: uma função do tipo inteiro deve retornar um resultado do tipo inteiro
Declarando FunçõesExemplo:
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
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.
Ativando Funçõesnome_função (lista_de_parametros_atuais)
nome_função: função que chamalista_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.
Ativando FunçõesExemplo 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_desdese n<0 então
y 1/y;fim_se
devolver(y);fim_função
Ativando FunçõesExemplo 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
fimreal funcao potencia(E real: n, a) inicio
devolver(EXP(a * LN(n)));fim_funcao
Ativando FunçõesExemplo 3:
inteiro funcao FATORIAL (E inteiro:n)var
inteiro: i, f; //advertência, segundo o resultado, f pode ser realinicio
f 1;desde i 1 até n fazer //for
f f*1;fim_desdedevolver(f);
fim_funcao
Ativando Funçõesalgoritmo funcao_fatorial;var
inteiro: x, y, numero;inicio
escreva(‘Digite um número inteiro e positivo’);leia(numero);x fatorial(numero); //chama a funçãoy fatorial(5); //chama a funçãoescreva(x,y);
Fim
Exercícios FUNÇÕES
1. Projetar uma função para o cálculo do cubo de um número2. Projetar uma função para calcular o máximo divisor comum3. Projetar uma função para calcular o mínimo divisor comum4. Projetar uma função para calcular o seno5. Projetar uma função para calcular o cosseno6. Projetar uma função para calcular a tangente