23
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

Aula 7 aed - sub algoritmos

Embed Size (px)

Citation preview

Page 1: Aula 7   aed - sub algoritmos

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

Page 2: Aula 7   aed - sub algoritmos

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

Page 3: Aula 7   aed - sub algoritmos

SubAlgoritmos ALGORITMOPRINCIPAL

SUBALGORITMO 1 SUBALGORITMO 2 SUBALGORITMO 3

PROGRAMAPRINCIPAL

SUBPROGRAMA1 SUBPROGRAMA 2 SUBPROGRAMA 3

Page 4: Aula 7   aed - sub algoritmos

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.

Page 5: Aula 7   aed - sub algoritmos

SubAlgoritmos

PROGRAMA PRINCIPAL

---------------------

ALGORITMO

SUBPROGRAMA

--------------------------

SUBALGORITMO

Chamada 1

Retorno 1

Chamada 2

Retorno 2

Page 6: Aula 7   aed - sub algoritmos

SubAlgoritmos

PROGRAMA PRINCIPAL

SUBPROGRAMA 1Chamada 1

Retorno 1

Retorno 2 SUBPROGRAMA 2

SUBPROGRAMA 3

SUBPROGRAMA 2.1Chamada 2

Page 7: Aula 7   aed - sub algoritmos

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)

Page 8: Aula 7   aed - sub algoritmos

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.

Page 9: Aula 7   aed - sub algoritmos

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

Page 10: Aula 7   aed - sub algoritmos

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.

Page 11: Aula 7   aed - sub algoritmos

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!

Page 12: Aula 7   aed - sub algoritmos

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)

Page 13: Aula 7   aed - sub algoritmos

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

Page 14: Aula 7   aed - sub algoritmos

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;

Page 15: Aula 7   aed - sub algoritmos

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

Page 16: Aula 7   aed - sub algoritmos

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

Page 17: Aula 7   aed - sub algoritmos

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.

Page 18: Aula 7   aed - sub algoritmos

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.

Page 19: Aula 7   aed - sub algoritmos

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

Page 20: Aula 7   aed - sub algoritmos

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

Page 21: Aula 7   aed - sub algoritmos

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

Page 22: Aula 7   aed - sub algoritmos

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

Page 23: Aula 7   aed - sub algoritmos

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