ALGORITMOS I
Procedimentos e Funções
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 1
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
MÓDULOS
• São blocos de instruções que realizam tarefas
específicas.
• Carregado uma vez e pode ser executado quantas
vezes for necessário.
• Podem ser usadas para economizar espaço e tempo de
programação já que podem ser usadas várias vezes num
mesmo programa.
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 2
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
MÓDULOS
• Cada módulo, além de ter acesso às variáveis do programa
que o chamou (são as variáveis globais), pode ter suas
próprias variáveis (são as variáveis locais), que existem
apenas durante sua chamada.
• Ao se chamar um módulo, também é possível passar-lhe
determinadas informações que recebem o nome de
parâmetros.
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 3
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
MÓDULOS
Vantagens
• Dividir e estruturar um algoritmo em partes logicamente
coerentes;
• Facilidade de testar os trechos em separado;
• Evitar repetição do código-fonte;
• Maior legibilidade de um algoritmo.
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 4
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Procedimentos e Funções
Tipos de subprogramas:
Procedimentos - são estruturas que agrupam um
conjunto de comandos, que são executados quando o
procedimento é chamado.
Funções - tipo especial de procedimento onde depois de
executada a chamada, o valor calculado é retornado no nome
da função que passa a ser uma variável da expressão.
Função Recursiva – são aquelas que chamam a si próprias.
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 5
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Procedimentos e Funções
• Funções e procedimentos permitem modularizar
algoritmos.
• As funções são chamados dentro do corpo do programa
principal como se fossem comandos. Após seu término, a
execução continua a partir do ponto onde foi chamado.
• Cada função, tem acesso às variáveis do programa
que o chamou (são as variáveis globais), e tem acesso as
suas próprias variáveis (são as variáveis locais), que
existem apenas durante sua chamada.
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 6
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Funções Recursivas
Uma função recursiva possui:
• Um passo básico (ou mais)  cujo resultado é imediatamente
conhecido.
• Um passo recursivo  tenta resolver um subproblema do
problema inicial.
A execução de uma função recursiva consiste em resolver
subproblemas sucessivamente mais simples até se atingir o caso
mais simples de todos, cujo resultado é imediato.
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 7
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Procedimentos e Funções
• Variável global é vista pelo programa principal e por todos
os módulos pertencentes a ele.
• Variável local é visível ao módulo em que ela foi
declarada e aos módulos hierarquicamente inferiores.
• Ao se chamar um módulo, também é possível passar-lhe
determinadas informações que recebem o nome de
parâmetros.
• Parâmetros - são valores que, na linha de chamada,
ficam entre os parênteses e que estão separados por vírgulas.
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 8
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Procedimentos e Funções
Declaração de um procedimento:
procedimento <nome-de-procedimento>
[(<seqüência-de-declarações-de-parâmetros>)]
var
// Seção de Declarações Internas
inicio
// Seção de Comandos
fimprocedimento
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 9
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Exemplo: Procedimento
1. Retornar soma de dois números
ALGORITMO “SOMA DOIS
NUMEROS”
PROCEDIMENTO soma ( a, b:
INTEIRO)
inicio
result <- a + b
escreval("Resultado", result)
FIM_PROCEDIMENTO
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 10
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Exemplo: Procedimento
1. Retornar soma de dois números (CONT)
// Programa principal
var x,y, result : inteiro
INICIO
escreva ("entre com dois numeros: ")
LEIA (x,y)
soma(x,y)
FIMALGORITMO
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 11
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Exemplo: Procedimento –Ling. C
1. Retornar soma de dois números
ALGORITMO “SOMA DOIS NUMEROS”
LING. C
#include <stdio.h>
#include <stdlib.h>
int result;
// variável global
PROCEDIMENTO soma ( a, b: INTEIRO)
inicio
// Declaração do Procedimento
void soma ( int a, int b )
int result ; {
result <- a + b
escreval ("Resultado", result)
result = a + b;
printf(“Resultado %d ",
result);
FIM_PROCEDIMENTO
Auxiliadora
Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas deFIM_PROCEDIMENTO
dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 12
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
} //
ALGORITMOS I
Exemplo: Procedimento – Ling C
1. Chama o proc. soma de dois números (CONT)
// Programa principal
var x,y, result : inteiro
INICIO
int main()
{
int x,y;
escreva ("entre com dois numeros: ")
LEIA (x,y)
printf("entre com dois numeros: ");
scanf("%d %d", &x,&y);
soma(x,y)
soma(x,y);
escreval ("Resultado", result)
FIMALGORITMO
system("pause");
}
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 13
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Procedimentos e Funções
Declaração de uma função:
funcao <nome-de-função>
[(<seqüência-dedeclarações-de-parâmetros>)]:
<tipo-de-dado>
var
// Seção de Declarações Internas
inicio
// Seção de Comandos
fimfuncao
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 14
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Exemplo: Função
1. Retornar soma de dois números
ALGORITMO (função)
Declaração da função
funcao soma: inteiro
var result: inteiro
inicio
result <- x + y
retorne result
fimfuncao
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 15
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Exemplo: Função
1. Retornar soma de dois números (cont)
ALGORITMO (prog. Princ)
// Programa principal
VAR x,y: INTEIRO
INICIO
ESCREVA ("entre com dois numeros: ")
LEIA (x,y)
ESCREVA ("Resultado", soma)
FIMALGORITMO
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 16
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Exemplo: Função – Ling C
1. Retornar soma de dois números
ALGORITMO (função)
LING C
#include <stdio.h>
#include <stdlib.h>
int result; // VARIÁVEL GLOBAL
Declaração da função
funcao soma: inteiro
var result: inteiro
inicio
int soma (int a, int b) {
int result;
// INICIO
result <- x + y
result = a + b;
retorne result
return result;
fimfuncao
Auxiliadora Freire
} // FIM DA FUNÇÃO SOMA
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 17
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
ALGORITMOS I
Exemplo: Função – Ling C
1. Retornar soma de dois números (cont)
ALGORITMO (prog. Princ)
// Programa principal
VAR x,y: INTEIRO
INICIO
LING C
int main()
int x,y;
// INICIO
ESCREVA ("entre com dois numeros: ")
printf("entre com dois numeros:
");
LEIA (x,y)
scanf("%d %d", &x,&y);
ESCREVA ("Resultado", soma)
printf("soma %d \n", soma(x,y));
FIMALGORITMO
system("pause");
} // FIMALGORITMO
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 18
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Exercício de fixação – Lista 1
Utilizando funções - Faça os algoritmos
1 - Escreva uma função para calcular se um dado inteiro é par ou ímpar.
2 - Escreva uma função para calcular o fatorial de um dado inteiro.
3 – Escreva uma função que retorne o menor número de um vetor (números reais);
4 - Implemente uma calculadora (números reais) com suas funções básicas: soma,
subtração, multiplicação e divisão.
5 – Escreva uma função para calcular a distancia entre dois pontos (x1, y1) e (x2,
y2). Obs.: os valores de x1, x2, y1 e y2 são inteiros, mas a saída é ponto-flutuante.
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 19
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Exercício de fixação – Lista 1
Utilizando funções - Faça os algoritmos
6 - Escreva uma função de potenciação, em que os dados de entrada são: base e
expoente (inteiros).
7 - Escreva uma função recursiva para calcular o fatorial de um dado inteiro.
8 - O que faz a seguinte função recursiva ?
SE ( b = 0 ) entao
a
SENAO
a <- a+1
b <- b-1
FIMSE
Auxiliadora Freire
Fonte: Guimarães, A de M - Algoritmos e estruturas de dados
Jaime Evaristo (http://professor.ic.ufal.br/jaime/)
Slide 20
Yuri Lacerda (http://sites.google.com/site/yurilacerda/disciplinas/algoritmos-e-programao-i)
Download

ALGORITMO - DEINF/UFMA