You are on page 1of 20

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

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)
escreval ("Resultado", result)
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) // Declaração do Procedimento

inicio int soma ( int a, int b )


{
result <- a + b result = a + b;
FIM_PROCEDIMENTO } // FIM_PROCEDIMENTO

Auxiliadora Freire Fonte: Guimarães, A de M - Algoritmos e estruturas de 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. Retornar soma de dois números (CONT)
// Programa principal
var x,y, result : inteiro
INICIO int main()
{
int x,y;
escreva ("entre com dois numeros: ") printf("entre com dois numeros: ");
LEIA (x,y) scanf("%d %d", &x,&y);
soma(x,y) soma(x,y);

escreval ("Resultado", result) printf(“Resultado %d ", 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 int soma (int a, int b) {
var result: inteiro int result;
inicio // INICIO

result <- x + y result = a + b;

retorne result return result;

fimfuncao } // FIM DA FUNÇÃO SOMA


Auxiliadora Freire 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) LING C


// Programa principal int main()
VAR x,y: INTEIRO int x,y;
INICIO // 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)

You might also like