Buscar

Aula12_Modularidade_1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 125 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 125 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 125 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Federal da Grande Dourados
Faculdade de Ciências Exatas e de Tecnologias
Curso de Bacharelado em Sistemas de Informação
Algoritmos
Modularidade (1)
Profª Janne Oeiras Lachi
1
Plano de aula
` Programação estruturada de computador ou 
Programação modular
` Subprogramas: procedimentos e funções
` Variáveis globais e locais
` Passagem de parâmetro: por valor e por referência
` Parâmetros formais e reais
Modularidade
` Conceito que surgiu desde 1950.
` Usada quando temos problemas complexos
` Os exercícios que vimos até então NÃO são.
` A ideia é dividir um problema ‘grande’ em problemas 
menores, isto é, usar o processo de modularização.
` Cada parte menor (módulo) tem um algoritmo mais 
simples, o que facilita chegar à grande solução.
Módulo
` É um bloco de programa que pode efetuar operações 
computacionais de entrada, processamento e saída.
` Um módulo tem três características operacionais:
` Cada módulo possui um único ponto de entrada;
` Toda unidade de programa chamadora (unidade mestre) é suspensa 
durante a execução da unidade de módulo chamada (unidade escravo), o 
que implica na existência de somente um módulo em execução em um 
determinado momento, exceto quando se trabalha com paralelismo ou co-
rotinas;
` Quando a execução do módulo (unidade escravo) é encerrada, o controle 
do fluxo de execução do programa volta para a primeira linha de instrução 
após a chamada do módulo na unidade mestre, no caso de ser um 
procedimento. No caso de ser uma função, o retorno é na mesma linha 
que efetuou a chamada.
Módulo
#include <stdio.h>
#include <math.h>
int main()
{
int I, N;
double res;
printf("Informe um numero inteiro maior que zero:");
scanf("%d", &N);
for (I=1; I <= N; I++)
{
res = sqrt(I);
printf("\n%lf",res);
}
return 0;
}
Módulo: funcionamento
Algoritmo principal
Módulo
(unidade chamadora ou unidade mestre)
(unidade escravo)
Comando 1
Módulo
Comando 3
Comando 4
Comando 5
mmmm
mmmm
mmmm
mmmm
mmmm
mmmm
Um módulo pode ser 
um Procedimento ou uma Função
Módulo: funcionamento
Na figura cima está exemplificado o funcionamento de procedimentos (ou 
sub-rotinas) aninhados
http://h10025.www1.hp.com/ewfrf/wc/document?docname=bbia5104&lc=pt&dlc=pt&cc=br&product=60738
Refinamento de módulos
` A figura anterior nos sugere que um módulo pode ser 
dividido em tantos outros quantos forem necessários 
para o problema.
Tipos de módulos
` Funções
` É um tipo de módulo que tem a capacidade de sempre
retornar um valor como resposta.
` Procedimento ou Sub-rotina
` É um tipo módulo que não retorna valor
Funções
` Uma função é um bloco de programa;
` Tem início e fim (como qualquer algoritmo) e é identificado 
por um nome para que possa ser chamado pela unidade 
mestre (algoritmo principal);
` Esse tipo de subprograma sempre retorna um conteúdo de 
resposta.
` Atenção: uma função retorna apenas 1 valor. Nunca 2 ou mais 
valores.
Funções: como definir
` Sintaxe
programa <nome_do_seu_programa>
função <nome_da_função> (parâmetros): <tipo de dado de retorno da função>
var
<variáveis da função>
início
<instruções da função>
fim
var
<variáveis do seu programa>
x : <tipo>
início
<instruções>
x Å <nome_da_função>
<instruções>
fim
O código da função deve ser 
escrito ANTES da definição do 
algoritmo principal.
Módulo
#include <stdio.h>
#include <math.h>
int main()
{
int I, N;
double res;
printf("Informe um numero inteiro maior que zero:");
scanf("%d", &N);
for (I=1; I <= N; I++)
{
res = sqrt(I);
printf("\n%lf",res);
}
return 0;
}
Neste caso, veja que incluímos os 
módulos stdio e math.
Neles estão definidas as funções que 
vamos usar neste programa.
Funções: como definir
` Sintaxe
programa <nome_do_seu_programa>
função <nome_da_função> (parâmetros): <tipo de dado de retorno da função>
var
<variáveis da função>
início
<instruções da função>
fim
var
<variáveis do seu programa>
início
<instruções>
x Å <nome_da_função>
<instruções>
fim
Note que é como se você 
tivesse um programa dentro 
de outro. Por isso o nome de 
SUBPROGRAMA.
Funções: como definir
programa <nome_do_seu_programa>
função <nome_da_função> (parâmetros): <tipo de dado de retorno da função>
var
<variáveis da função>
início
<instruções da função>
fim
var
<variáveis do seu programa>
início
<instruções>
x Å <nome_da_função>
<instruções>
fim Dentro do algoritmo 
principal, você chamará a 
função pelo seu nome.
Módulo
#include <stdio.h>
#include <math.h>
int main()
{
int I, N;
double res;
printf("Informe um numero inteiro maior que zero:");
scanf("%d", &N);
for (I=1; I <= N; I++)
{
res = sqrt(I);
printf("\n%lf",res);
}
return 0;
}
Chamando as funções pelo nome 
dentro do programa principal
Funções: como definir
` Uma função SEMPRE retorna um valor calculado
programa <nome_do_seu_programa>
função <nome_da_função> (parâmetros): <tipo de dado de retorno da função>
var
<variáveis da função>
início
<instruções da função>
fim
var
<variáveis do seu programa>
início
<instruções>
x Å <nome_da_função>
<instruções>
fim
Como a função retorna um valor, 
esse valor será guardado dentro 
de uma variável. Geralmente, 
teremos uma variável recebendo 
o valor retornado pela função.
Módulo
#include <stdio.h>
#include <math.h>
int main()
{
int I, N;
double res;
printf("Informe um numero inteiro maior que zero:");
scanf("%d", &N);
for (I=1; I <= N; I++)
{
res = sqrt(I);
printf("\n%lf",res);
}
return 0;
}
Como a função retorna um valor, 
esse valor será guardado dentro 
de uma variável. Geralmente, 
teremos uma variável recebendo 
o valor retornado pela função.
Funções: como definir
` Parâmetros
programa <nome_do_seu_programa>
função <nome_da_função> (parâmetros): <tipo de dado de retorno da função>
var
<variáveis da função>
início
<instruções da função>
fim
var
<variáveis do seu programa>
início
<instruções>
x Å <nome_da_função (parâmetros)>
<instruções>
fim
Geralmente vamos passar 
alguns valores para que a 
função faça o cálculo 
necessário. Esses valores 
são chamados de 
PARÂMETROS.
Módulo
#include <stdio.h>
#include <math.h>
int main()
{
int I, N;
double res;
printf("Informe um numero inteiro maior que zero:");
scanf("%d", &N);
for (I=1; I <= N; I++)
{
res = sqrt(I);
printf("\n%lf",res);
}
return 0;
}
Geralmente vamos passar alguns valores para 
que a função faça o cálculo necessário. Esses 
valores são chamados de PARÂMETROS.
Funções: como definir
` Tipo de retorno
programa <nome_do_seu_programa>
função <nome_da_função> (parâmetros): <tipo de dado de retorno da função>
var
<variáveis da função>
início
<instruções da função>
fim
var
<variáveis do seu programa>
início
<instruções>
x Å <nome_da_função>
<instruções>
fim
Como a função retorna um 
valor, precisamos definir o tipo 
de retorno da função (inteiro, 
real, caractere, lógico)
Módulo
#include <stdio.h>
#include <math.h>
int main()
{
int I, N;
double res;
printf("Informe um numero inteiro maior que zero:");
scanf("%d", &N);
for (I=1; I <= N; I++)
{
res = sqrt(I);
printf("\n%lf",res);
}
return 0;
}
A função sqrt() retorna um valor do tipo double. 
Por essa razão a variável res foi definida como 
sendo do tipo double também.
Funções: como definir
` Tipo de retorno
programa <nome_do_seu_programa>
função <nome_da_função> (parâmetros): <tipo de dado de retorno da função>
var
<variáveis da função>
início
<instruções da função>
fim
var
<variáveis do seu programa>
início
<instruções>
x Å <nome_da_função>
<instruções>
fim
Preste atençãono recuo 
(indentação) da função dentro 
do algoritmo principal.
Exemplo 1
` Escreva um algoritmo que receba 3 números e escreva o 
dobro de cada um deles.
programa DOBRO
início
fim
Corpo do mínimo do algoritmo
Exemplo 1
` Escreva um algoritmo que receba 3 números e escreva o 
dobro de cada um deles.
programa DOBRO
início
escreva “Informe um numero”
leia n
fim
Vamos ler os dados 1 vez
Exemplo 1
` Escreva um algoritmo que receba 3 números e escreva o 
dobro de cada um deles.
programa DOBRO
início
escreva “Informe um numero”
leia n
res Å n*2
escreva “O dobro eh: ”, res
fim
Vamos calcular e imprimir o resultado
Exemplo 1
` Escreva um algoritmo que receba 3 números e escreva o 
dobro de cada um deles.
programa DOBRO
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n 
res Å n*2
escreva “O dobro eh: ”, res
fim_para
fim
Vamos incluir REPETIÇÃO para ler os 3 números
Exemplo 1
` Escreva um algoritmo que receba 3 números e escreva o 
dobro de cada um deles.
programa DOBRO
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å n*2
escreva “O dobro eh: ”, res
fim_para
fim
Vamos declarar as variáveis que usamos
Exemplo 2
` Escreva um algoritmo que receba 3 números e escreva o 
dobro de cada um deles. O dobro de cada número deve 
ser calculado por meio de uma função.
O que mudar no algoritmo abaixo?
programa DOBRO
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å n*2
escreva “O dobro eh: ”, res
fim_para
fim
Exemplo 2: passo-a-passo
` Vamos criar uma função
programa EXEMPLO2
função DOBRO (???): ???
início
fim
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å n*2
escreva “O dobro eh: ”, res
fim_para
fim
Apenas criamos o corpo da função. Note que o 
nome da função é DOBRO e o nome do algoritmo é
EXEMPLO2.
Parâmetros que serão definidos
Tipo que será definido
Exemplo 2: passo-a-passo
` Pense no que a função deve fazer (calcular o dobro)
Vamos fazer a função calcular o dobro e tirar isso do 
algoritmo principal.
programa EXEMPLO2
função DOBRO (???): ???
início
fim
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å n*2
escreva “O dobro eh: ”, res
fim_para
fim
Exemplo 2: passo-a-passo
` Pense no que a função deve fazer (calcular o dobro)
programa EXEMPLO2
função DOBRO (???): ???
início
calc Å n*2
fim
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å n*2
escreva “O dobro eh: ”, res
fim_para
fim
Vamos fazer a função calcular o dobro e tirar isso do 
algoritmo principal.
Exemplo 2: passo-a-passo
` Pense no que a função deve fazer (calcular o dobro)
Como usamos uma variável 
dentro da função, devemos 
declará-la também. Note que a 
variável é declarada dentro da 
função porque é usada 
somente nela.
programa EXEMPLO2
função DOBRO (???): ???
var
calc : real
início
calc Å n*2
fim
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å n*2
escreva “O dobro eh: ”, res
fim_para
fim
Exemplo 2: passo-a-passo
` Chamando a função
No lugar do cálculo, dentro do 
algoritmo principal, fazemos uma 
chamada a função. Note que 
escrevemos o nome da função e 
entre parênteses colocamos a 
variável n, pois precisamos passar 
esse valor de n para a função 
calcular o dobro. 
programa EXEMPLO2
função DOBRO (???): ???
var
calc : real
início
calc Å n*2
fim
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å DOBRO(n)
escreva “O dobro eh: ”, res
fim_para
fim
Exemplo 2: passo-a-passo
` Definindo parâmetros
Se estamos passando o valor de n, 
então ele é um PARÂMETRO da 
função e vamos especificá-lo na 
definição da função. Note que 
sempre vamos definir o nome do 
parâmetro e seu tipo.
programa EXEMPLO2
função DOBRO (n: real): ???
var
calc : real
início
calc Å n*2
fim
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å DOBRO(n)
escreva “O dobro eh: ”, res
fim_para
fim
Exemplo 2: passo-a-passo
` Tipo do parâmetro
O tipo do parâmetro é real porque o 
tipo da variável n no algoritmo 
principal é real.
programa EXEMPLO2
função DOBRO (n: real): ???
var
calc : real
início
calc Å n*2
fim
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å DOBRO(n)
escreva “O dobro eh: ”, res
fim_para
fim
Exemplo 2: passo-a-passo
` Nome do parâmetro
No slide anterior, colocamos o 
mesmo nome da variável usada no 
algoritmo principal (nome n), mas 
poderia ser qualquer outro nome, 
como v. Assim, precisamos mudar 
também no corpo da função
programa EXEMPLO2
função DOBRO (v: real): ???
var
calc : real
início
calc Å v*2
fim
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å DOBRO(n)
escreva “O dobro eh: ”, res
fim_para
fim
Exemplo 2: passo-a-passo
` Definindo o tipo de retorno da função
O usuário pode fornecer um número 
n real. Assim, a função DOBRO vai 
calcular um resultado também do tipo 
real.
O tipo de resultado a ser calculado é
o que define o TIPO DA FUNÇÃO.
programa EXEMPLO2
função DOBRO (v: real): real
var
calc : real
início
calc Å v*2
fim
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å DOBRO(n)
escreva “O dobro eh: ”, res
fim_para
fim
Exemplo 2: passo-a-passo
` Retornando um valor para o algoritmo principal
Para retornar um valor para o 
algoritmo principal, devemos atribuir 
o valor calculado ao NOME da 
função.
Pronto! Assim, concluímos nossa 
função.
programa EXEMPLO2
função DOBRO (v: real): real
var
calc : real
início
calc Å v*2
DOBRO Å calc
fim
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å DOBRO(n)
escreva “O dobro eh: ”, res
fim_para
fim
Exemplo 2: passo-a-passo
` Simplificando...
Como o cálculo a ser feito é bem simples, 
aqui podemos excluir a variável calc e 
atribuir o cálculo direto no nome da função.
programa EXEMPLO2
função DOBRO (v: real): real
var
calc : real
início
calc Å v*2
DOBRO Å calc
fim
.
.
.
programa EXEMPLO2
função DOBRO (v: real): real
início
DOBRO Å v*2
fim
.
.
.
Exemplo 2: novo algoritmo
programa EXEMPLO2
função DOBRO (v: real): real
início
DOBRO Å v*2
fim
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å DOBRO(n)
escreva “O dobro eh: ”, res
fim_para
fim
Exemplo 2: novo algoritmo
programa EXEMPLO2
função DOBRO (v: real): real
início
DOBRO Å v*2
fim
var
i: inteiro
n, res: real
início
para i de 1 ate 3 passo 1 faça
escreva “Informe um numero”
leia n
res Å DOBRO(n)
escreva “O dobro eh: ”, DOBRO(n)
fim_para
fim
Podemos também simplificar a chamada da 
função e eliminar o uso da variável res.
Exemplo 3
` Elaborar um algoritmo que receba um valor numérico inteiro 
qualquer. Em seguida calcule a raiz quadrada do valor de 
entrada e apresente o resultado dessa operação. Após 
mostrar o resultado, o algoritmo deve perguntar se o usuário 
deseja um novo cálculo. O cálculo da raiz deve ser feito por 
meiode uma função.
Exemplo 3
` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada 
do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve 
perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função.
programa RAIZ
var
num: inteiro
resp: caractere
início
continua
escreva “Informe um número inteiro:”
leia num
escreva num Ç (1/2)
escreva “Deseja continuar calculando (S ou N)?”
leia resp
enquanto_for (resp = “S” .ou. resp = “s”)
fim
Aqui temos a solução SEM o uso de FUNÇÃO.
Exemplo 3
` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada 
do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve 
perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função.
programa EXEMPLO3
função RAIZ (???): ???
inicio 
fim
var
num: inteiro
resp: caractere
início
continua
escreva “Informe um número inteiro:”
leia num
escreva num Ç (1/2)
escreva “Deseja continuar calculando (S ou N)?”
leia resp
enquanto_for (resp = “S” .ou. resp = “s”)
fim
Vamos incluir uma função
Exemplo 3
` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada 
do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve 
perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função.
programa EXEMPLO3
função RAIZ (???): ???
inicio 
fim
var
num: inteiro
resp: caractere
início
continua
escreva “Informe um número inteiro:”
leia num
escreva num Ç (1/2)
escreva “Deseja continuar calculando (S ou N)?”
leia resp
enquanto_for (resp = “S” .ou. resp = “s”)
fim
Vamos fazer o cálculo na função
Exemplo 3
` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada 
do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve 
perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função.
programa EXEMPLO3
função RAIZ (???): ???
inicio 
RAIZ Å num Ç (1/2)
fim
var
num: inteiro
resp: caractere
início
continua
escreva “Informe um número inteiro:”
leia num
escreva num Ç (1/2)
escreva “Deseja continuar calculando (S ou N)?”
leia resp
enquanto_for (resp = “S” .ou. resp = “s”)
fim
Vamos fazer o cálculo na função
Note que o cálculo já foi 
atribuído ao NOME da função 
para retornar o valor calculado 
para o algoritmo principal.
Exemplo 3
` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada 
do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve 
perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função.
programa EXEMPLO3
função RAIZ (???): ???
inicio 
RAIZ Å num Ç (1/2)
fim
var
num: inteiro
resp: caractere
início
continua
escreva “Informe um número inteiro:”
leia num
escreva RAIZ(num)
escreva “Deseja continuar calculando (S ou N)?”
leia resp
enquanto_for (resp = “S” .ou. resp = “s”)
fim
No lugar do cálculo, escrevemos a chamada da função.
Exemplo 3
` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada 
do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve 
perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função.
programa EXEMPLO3
função RAIZ (num: inteiro): ???
inicio 
RAIZ Å num Ç (1/2)
fim
var
num: inteiro
resp: caractere
início
continua
escreva “Informe um número inteiro:”
leia num
escreva RAIZ(num)
escreva “Deseja continuar calculando (S ou N)?”
leia resp
enquanto_for (resp = “S” .ou. resp = “s”)
fim
Vamos incluir o parâmetro da função.
Exemplo 3
` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada 
do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve 
perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função.
programa EXEMPLO3
função RAIZ (num: inteiro): ???
inicio 
RAIZ Å num Ç (1/2)
fim
var
num: inteiro
resp: caractere
início
continua
escreva “Informe um número inteiro:”
leia num
escreva RAIZ(num)
escreva “Deseja continuar calculando (S ou N)?”
leia resp
enquanto_for (resp = “S” .ou. resp = “s”)
fim
Vamos incluir o parâmetro da função.
Note que o tipo do parâmetro é
inteiro porque o valor que está
sendo passado é do tipo 
inteiro.
Exemplo 3
` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada 
do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve 
perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função.
programa EXEMPLO3
função RAIZ (num: inteiro): real
inicio 
RAIZ Å num Ç (1/2)
fim
var
num: inteiro
resp: caractere
início
continua
escreva “Informe um número inteiro:”
leia num
escreva RAIZ(num)
escreva “Deseja continuar calculando (S ou N)?”
leia resp
enquanto_for (resp = “S” .ou. resp = “s”)
fim
Vamos definir o tipo da função.
Como o cálculo será um valor 
do tipo real, então o tipo da 
função deve ser real.
Exemplo 4
` Elaborar um algoritmo que receba dois números. Faça a soma 
desses dois valores e apresente o resultado. A soma deve ser 
feita por meio de uma função.
Exemplo 4
programa SOMA
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
escreva “A soma dos numeros eh:”, x+y
fim
Aqui temos a solução SEM o uso de FUNÇÃO.
Exemplo 4
programa EXEMPLO4
função SOMA (???): ???
inicio
fim
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
escreva “A soma dos numeros eh:”, x+y
fim
Vamos incluir uma função
Exemplo 4
programa EXEMPLO4
função SOMA (???): ???
inicio
fim
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
escreva “A soma dos numeros eh:”, x+y
fim
Vamos fazer o cálculo na função
Exemplo 4
programa EXEMPLO4
função SOMA (???): ???
inicio
SOMA Å x+y
fim
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
escreva “A soma dos numeros eh:”, SOMA (x, y)
fim
Vamos fazer o cálculo na função. No lugar do cálculo, escrevemos 
a chamada da função. Note que SOMA tem 2 parâmetros.
Exemplo 4
programa EXEMPLO4
função SOMA (???): ???
inicio
SOMA Å x+y
fim
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
escreva “A soma dos numeros eh:”, SOMA (x, y)
fim
Note que o cálculo já foi 
atribuído ao NOME da função 
para retornar o valor calculado 
para o algoritmo principal.
Exemplo 4
programa EXEMPLO4
função SOMA (x, y: real): ???
inicio
SOMA Å x+y
fim
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
escreva “A soma dos numeros eh:”, SOMA (x, y)
fim
Vamos incluir os parâmetros da função. Temos dois valores 
dentro da chamada da função, então teremos dois parâmetros 
na definição da função.
Exemplo 4
programa EXEMPLO4
função SOMA (x, y: real): real
inicio
SOMA Å x+y
fim
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
escreva “A soma dos numeros eh:”, SOMA (x, y)
fim
Como o cálculo será um valor 
do tipo real, então o tipo da 
função deve ser real também.
Exemplo 5
` Elaborarum algoritmo que receba dois números e verifique 
qual é o maior deles (suponha que os números sempre são 
diferentes). Essa verificação deve ser feita por meio de uma 
função.
Exemplo 5
programa EXEMPLO5
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
se (x > y) então
escreva “O maior eh:”, x
senão
escreva “O maior eh:”, y
fim_se
fim
Aqui temos a solução SEM o uso de FUNÇÃO.
Exemplo 5
programa EXEMPLO5
função MAIOR (???): ???
inicio
fim
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
se (x > y) então
escreva “O maior eh:”, x
senão
escreva “O maior eh:”, y
fim_se
fim
Vamos incluir uma função
Exemplo 5
programa EXEMPLO5
função MAIOR (???): ???
inicio
se (x > y) então
MAIOR Å x
senão
MAIOR Å y
fim_se
fim
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
escreva “O maior eh:”, MAIOR (x,y)
fim
Vamos fazer a verificação na função. Note que fazemos a 
decisão dentro da função, mas quem deve imprimir o resultado 
é o algoritmo principal.
Exemplo 5
programa EXEMPLO5
função MAIOR (???): ???
inicio
se (x > y) então
MAIOR Å x
senão
MAIOR Å y
fim_se
fim
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
escreva “O maior eh:”, MAIOR (x,y)
fim
Note que RETORNAMOS para o 
algoritmo principal o maior valor 
encontrado. Somente 1 valor é
retornado: ou x ou y.
Exemplo 5
programa EXEMPLO5
função MAIOR (x, y: real): ???
inicio
se (x > y) então
MAIOR Å x
senão
MAIOR Å y
fim_se
fim
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
escreva “O maior eh:”, MAIOR (x,y)
fim
Vamos incluir os parâmetros da função. Temos dois valores 
dentro da chamada da função, então teremos dois parâmetros 
na definição da função.
Exemplo 5
programa EXEMPLO5
função MAIOR (x, y: real): real
inicio
se (x > y) então
MAIOR Å x
senão
MAIOR Å y
fim_se
fim
var
x, y: real
início
escreva “Informe dois numeros:”
leia x, y
escreva “O maior eh:”, MAIOR (x,y)
fim
Como o valor a ser retornado 
(x ou y) é do tipo real, então o 
TIPO DA FUNÇÃO deve ser 
real também.
Exemplo 6
` Elaborar um algoritmo que leia um número inteiro n >= 0 e 
calcule o fatorial desse número. O fatorial deve ser calculado 
por meio de uma função.
Exemplo 6
programa EXEMPLO6
var
n, I, FAT: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
FAT Å1 
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim-se
escreva “O fatorial de ”, n, “eh”, FAT
fim_se
fim
Aqui temos a solução SEM o 
uso de FUNÇÃO.
Exemplo 6
programa EXEMPLO6
função FATORIAL (???): ???
inicio
fim
var
n, I, FAT: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
FAT Å1 
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim-se
escreva “O fatorial de ”, n, “eh”, FAT
fim_se
fim
Vamos incluir uma função
Exemplo 6
programa EXEMPLO6
função FATORIAL (???): ???
inicio
fim
var
n, I, FAT: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
FAT Å1 
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim-se
escreva “O fatorial de ”, n, “eh”, FAT
fim_se
fim
Vamos fazer o cálculo do fatorial 
dentro da função. 
Exemplo 6
programa EXEMPLO6
função FATORIAL (???): ???
inicio
FAT Å 1
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim_se
fim
var
n, I, FAT: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
FAT Å1 
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim-se
escreva “O fatorial de”,n, “eh:”, FAT
fim-se
fim
Vamos fazer o cálculo do fatorial 
dentro da função. 
Exemplo 6
programa EXEMPLO6
função FATORIAL (???): ???
var
FAT, I: inteiro
inicio
FAT Å 1
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim_se
fim
var
n, I, FAT: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
FAT Å1 
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim-se
escreva “O fatorial de”,n, “eh:”, FAT
fim-se
fim
Declare as variáveis usadas dentro 
da função
Exemplo 6
programa EXEMPLO6
função FATORIAL (???): ???
var
FAT, I: inteiro
inicio
FAT Å 1
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim_se
fim
var
n, I, FAT: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
escreva “O fatorial de”,n, “eh:”, FATORIAL(n)
fim-se
fim
Faça a chamada da função e passe 
como parâmetro o valor de n
Exemplo 6
programa EXEMPLO6
função FATORIAL (n: inteiro): ???
var
FAT, I: inteiro
inicio
FAT Å1
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim_se
fim
var
n: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
escreva “O fatorial de”,n, “eh:”, FATORIAL(n)
fim-se
fim
Defina o parâmetro da função
Exemplo 6
programa EXEMPLO6
função FATORIAL (n: inteiro): ???
var
FAT, I: inteiro
inicio
FAT Å1
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim_se
FATORIAL Å FAT
fim
var
n: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
escreva “O fatorial de”,n, “eh:”, FATORIAL(n)
fim-se
fim
Retorne o valor da função por 
meio do nome dela
Exemplo 6
programa EXEMPLO6
função FATORIAL (n: inteiro): ???
var
FAT, I: inteiro
inicio
FAT Å1
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim_se
FATORIAL Å FAT
fim
Note que neste problema 
precisamos usar a variável 
auxiliar FAT durante o cálculo. 
programa EXEMPLO6
função FATORIAL (n: inteiro): ???
var
FAT, I: inteiro
inicio
FATORIAL Å1
se (n > 0) então
para I de 1 até n passo 1 faça
FATORIAL Å FATORIAL * I
fim_para
fim_se
fim
Neste problema não é possível 
fazer o cálculo no nome da 
função como em exemplos 
anteriores.
Exemplo 6
Neste caso, na primeira 
aparição da palavra 
FATORIAL, a função seria 
terminada e todo resto da 
função não seria executado. 
Portanto, não faria o cálculo 
corretamente.
programa EXEMPLO6
função FATORIAL (n: inteiro): ???
var
FAT, I: inteiro
inicio
FATORIAL Å1
se (n > 0) então
para I de 1 até n passo 1 faça
FATORIAL Å FATORIAL * I
fim_para
fim_se
fim
Exemplo 6
programa EXEMPLO6
função FATORIAL (n: inteiro): inteiro
var
FAT, I: inteiro
inicio
FAT Å1
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim_se
FATORIAL Å FAT
fim
var
n: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
escreva “O fatorial de”,n, “eh:”, FATORIAL(n)
fim-se
fim
Defina o TIPO DA FUNÇÃO 
com base no tipo de dado a ser 
retornado.
Exemplo 7
` Elaborar um algoritmo que leia um número inteiro n >= 0 e 
calcule a raiz cúbica do fatorial desse número. O fatorial e a 
raiz cúbica devem ser calculados por meio de funções.
Exemplo 7
` Aproveitando parte da solução anterior
programa EXEMPLO6
função FATORIAL (n: inteiro): inteiro
var
FAT, I: inteiro
inicio
FAT Å1
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim_se
FATORIAL Å FATfim
var
n: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
escreva “A resposta eh:”, FATORIAL(n) Ç(1/3.0)
fim-se
fim
Mudamos apenas uma linha 
para calcular a raiz cúbica. 
Porém o problema requer que 
essa raiz seja calculada por 
meio de uma função também.
Exemplo 7
programa EXEMPLO7
função FATORIAL (n: inteiro): inteiro
var
FAT, I: inteiro
inicio
FAT Å1
se (n > 0) então
para I de 1 até n passo 1 faça
FAT Å FAT * I
fim_para
fim_se
FATORIAL Å FAT
fim
função RAIZ_3(???): ???
inicio
fim
var
n: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
escreva “A resposta eh:”, FATORIAL(n) Ç (1/3.0)
fim-se
fim
Vamos criar uma nova função
Exemplo 7
programa EXEMPLO7
função FATORIAL (n: inteiro): inteiro
.
.
.
fim
função RAIZ_3(???): ???
inicio
RAIZ_3 Å FATORIAL(n) Ç (1/3.0)
fim
var
n: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
escreva “A resposta eh”, FATORIAL(n) Ç (1/3.0)
fim-se
fim
Não podemos simplesmente 
colar aqui o que está no 
algoritmo principal porque nem 
sempre vamos resolver a raiz 
cúbica sobre o fatorial de um 
número. Precisamos criar 
funções que sejam genéricas.
ERRADO!
Exemplo 7
programa EXEMPLO7
função FATORIAL (n: inteiro): inteiro
.
.
.
fim
função RAIZ_3(???): ???
inicio
RAIZ_3 Å v Ç (1/3.0)
fim
var
n: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
escreva “A resposta eh”, FATORIAL(n) Ç (1/3.0)
fim-se
fim
Vamos incluir o cálculo na 
função.
Vamos fazer o cálculo da raiz 
cúbica sobre uma variável v
genérica.
Exemplo 7
programa EXEMPLO7
função FATORIAL (n: inteiro): inteiro
.
.
.
fim
função RAIZ_3(???): ???
inicio
RAIZ_3 Å v Ç (1/3.0)
fim
var
n: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
escreva “A resposta eh”, RAIZ_3(FATORIAL(n))
fim-se
fim
No lugar do cálculo, vamos 
fazer a chamada da função. 
Note que a função RAIZ_3 tem 
como parâmetro o valor 
retornado pela função 
FATORIAL.
Exemplo 7
programa EXEMPLO7
função FATORIAL (n: inteiro): inteiro
.
.
.
fim
função RAIZ_3(v: inteiro): ???
inicio
RAIZ_3 Å v Ç (1/3.0)
fim
var
n: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
escreva “A resposta eh”, RAIZ_3(FATORIAL(n))
fim-se
fim
Defina o parâmetro da função. 
Como o fatorial de um número 
é um valor inteiro, então nosso 
parâmetro será do tipo inteiro.
Exemplo 7
programa EXEMPLO7
função FATORIAL (n: inteiro): inteiro
.
.
.
fim
função RAIZ_3(v: inteiro): real
inicio
RAIZ_3 Å v Ç (1/3.0)
fim
var
n: inteiro
início
escreva “Informe um número n>=0:”
leia n
se (n < 0) então
escreva “Numero invalido!”
senão
escreva “A resposta eh”, RAIZ_3(FATORIAL(n))
fim-se
fim
Defina o TIPO DA FUNÇÃO.
Como a raiz cúbica é um valor 
do tipo real, então o tipo da 
função será real também.
Exemplo 8
` Elaborar que leia dois números inteiros e verifique se eles são 
iguais por meio de uma função.
Exemplo 8
programa EXEMPLO8
var
X, Y: inteiro
início
escreva “Informe o 1º número:”
leia X
escreva “Informe o 2º número:”
leia Y
se (X = Y) então
escreva “Os números são iguais”
senão
escreva “Os números são DIFERENTES”
fim_se
fim
Aqui temos a solução SEM o 
uso de FUNÇÃO.
Exemplo 8: função
programa EXEMPLO8
função IGUAIS (???): ???
inicio
fim
var
X, Y: inteiro
início
escreva “Informe o 1º número:”
leia X
escreva “Informe o 2º número:”
leia Y
se (X = Y) então
escreva “Os números são iguais”
senão
escreva “Os números são DIFERENTES”
fim_se
fim
Incluindo uma função.
Exemplo 8: função
programa EXEMPLO8
função IGUAIS (???): ???
inicio
IGUAIS Å X=Y
fim
var
X, Y: inteiro
início
escreva “Informe o 1º número:”
leia X
escreva “Informe o 2º número:”
leia Y
se (X = Y) então
escreva “Os números são iguais”
senão
escreva “Os números são DIFERENTES”
fim_se
fim
Fazendo a comparação dentro 
da função.
Exemplo 8: função
programa EXEMPLO8
função IGUAIS (???): ???
inicio
IGUAIS Å X=Y
fim
var
X, Y: inteiro
início
escreva “Informe o 1º número:”
leia X
escreva “Informe o 2º número:”
leia Y
se (X = Y) então
escreva “Os números são iguais”
senão
escreva “Os números são DIFERENTES”
fim_se
fim
Fazendo a comparação dentro 
da função. Neste caso a função 
vai retornar um valor lógico .v. 
ou .f.
Exemplo 8: função
programa EXEMPLO8
função IGUAIS (???): ???
inicio
IGUAIS Å X=Y
fim
var
X, Y: inteiro
início
escreva “Informe o 1º número:”
leia X
escreva “Informe o 2º número:”
leia Y
se (IGUAIS(X,Y)) então
escreva “Os números são iguais”
senão
escreva “Os números são DIFERENTES”
fim_se
fim
No lugar da comparação, 
chamamos a função passando 
os valores de X e Y
Exemplo 8: função
programa EXEMPLO8
função IGUAIS (X, Y: inteiro): ???
inicio
IGUAIS Å X=Y
fim
var
X, Y: inteiro
início
escreva “Informe o 1º número:”
leia X
escreva “Informe o 2º número:”
leia Y
se (IGUAIS(X,Y)) então
escreva “Os números são iguais”
senão
escreva “Os números são DIFERENTES”
fim_se
fim
Vamos definir os parâmetros da 
função.
Exemplo 8: função
programa EXEMPLO8
função IGUAIS (X, Y: inteiro): lógico
inicio
IGUAIS Å X=Y
fim
var
X, Y: inteiro
início
escreva “Informe o 1º número:”
leia X
escreva “Informe o 2º número:”
leia Y
se (IGUAIS(X,Y)) então
escreva “Os números são iguais”
senão
escreva “Os números são DIFERENTES”
fim_se
fim
O valor de retorno define o TIPO 
DA FUNÇÃO. Lembre que o 
resultado de uma expressão 
relacional é um valor do tipo 
LÓGICO.
Procedimentos
` Tem início e fim (como qualquer algoritmo) e é
identificado por um nome para que possa ser chamado 
pela unidade mestre (algoritmo principal).
` Sintaxe em Português estruturado:
programa <nome_do_seu_programa>
procedimento <nome_do_procedimento> (parâmetros)
var
<variáveis do procedimento>
início
<instruções do procedimento>
fim
var
<variáveis do seu programa>
início
<instruções>
<sub-rotina>
<instruções>
fim
Procedimentos
` O código da sub-rotina deve ser escrito ANTES de sua 
chamada dentro do algoritmo principal.
programa <nome_do_seu_programa>
procedimento <nome_do_procedimento> (parâmetros)
var
<variáveis do procedimento>
início
<instruções do procedimento>
fim
var
<variáveis do seu programa>
início
<instruções>
<sub-rotina>
<instruções>
fim
Procedimentos
` Procedimentos NÃO retornam valor
programa <nome_do_seu_programa>
procedimento <nome_do_procedimento> (parâmetros)
var
<variáveis do procedimento>
início
<instruções do procedimento>
fim
var
<variáveis do seu programa>
início
<instruções>
<sub-rotina>
<instruções>
fim
Note que não há uma variável 
do lado esquerdo da chamada 
ao procedimento.
Por quê? Porque procedimento 
não retorna valor.
Procedimentos
` Procedimentos pode receber parâmetros
programa <nome_do_seu_programa>
procedimento <nome_do_procedimento> (parâmetros)
var
<variáveis do procedimento>
início
<instruções do procedimento>
fim
var
<variáveis do seu programa>
início
<instruções>
<sub-rotina>
<instruções>
fim
Um procedimento geralmente 
vai receber parâmetros, assim 
como as funções. Mas não é
obrigatório.
Exemplo 1
` Escreva algoritmo para imprimir o seguinte cabeçalho:
Universidade Federal da Grande Dourados
Curso de Bachareladoem Sistemas de Informação
Ano 2013
Exemplo 1: uma solução
programa IMPRESSAO
início
escreva “Universidade Federal da Grande Dourados”
escreva “Curso de Bacharelado em Sistemas de Informação”
escreva “Ano 2013”
fim
Note que o algoritmo escreve o cabeçalho e não são 
necessárias variáveis neste problema.
Exemplo 2
` Escreva um procedimento para imprimir o seguinte 
cabeçalho:
Universidade Federal da Grande Dourados
Curso de Bacharelado em Sistemas de Informação
Ano 2013
` Escreva um algoritmo em Português estruturado que 
utilize o procedimento para escrever o cabeçalho.
Exemplo 2: passo-a-passo
programa IMPRESSAO
procedimento CABECALHO( )
inicio
fim
início
escreva “Universidade Federal da Grande Dourados”
escreva “Curso de Bacharelado em Sistemas de Informação”
escreva “Ano 2013”
fim
Vamos incluir um procedimento
Exemplo 2: passo-a-passo
programa IMPRESSAO
procedimento CABECALHO( )
inicio
fim
início
escreva “Universidade Federal da Grande Dourados”
escreva “Curso de Bacharelado em Sistemas de Informação”
escreva “Ano 2012”
fim
Vamos escrever as informações por meio do procedimento
Exemplo 2: passo-a-passo
programa IMPRESSAO
procedimento CABECALHO( )
inicio
escreva “Universidade Federal da Grande Dourados”
escreva “Curso de Bacharelado em Sistemas de Informação”
escreva “Ano 2013”
fim
início
fim
Vamos escrever as informações por meio do procedimento
Exemplo 2: passo-a-passo
programa IMPRESSAO
procedimento CABECALHO( )
inicio
escreva “Universidade Federal da Grande Dourados”
escreva “Curso de Bacharelado em Sistemas de Informação”
escreva “Ano 2012”
fim 
início
CABECALHO( )
fim
No lugar da impressão, vamos fazer a chamada ao 
procedimento. 
Exemplo 2: passo-a-passo
programa IMPRESSAO
procedimento CABECALHO( )
inicio
escreva “Universidade Federal da Grande Dourados”
escreva “Curso de Bacharelado em Sistemas de Informação”
escreva “Ano 2012”
fim 
início
CABECALHO( )
fim
Note que neste problema não usamos parâmetros porque não 
são necessários.
Exemplo 2: passo-a-passo
programa IMPRESSAO
procedimento CABECALHO( )
inicio
escreva “Universidade Federal da Grande Dourados”
escreva “Curso de Bacharelado em Sistemas de Informação”
escreva “Ano 2012”
fim 
início
CABECALHO( )
fim
Note também que não há nenhum valor de retorno para o 
algoritmo principal. 
Exemplo 3
` Escreva um algoritmo em Português estruturado que 
receba do usuário o nome da Universidade, o nome do 
Curso e o ano vigente para imprimir um cabeçalho. Esses 
dados devem ser passados para um procedimento 
escrever o cabeçalho.
Exemplo 3: o que muda nesta solução?
programa IMPRESSAO
procedimento CABECALHO( )
inicio
escreva “Universidade Federal da Grande Dourados”
escreva “Curso de Bacharelado em Sistemas de Informação”
escreva “Ano 2013”
fim 
início
CABECALHO( )
fim
Precisamos fazer a leitura dos dados de entrada!
Exemplo 3: o que muda nesta solução?
programa IMPRESSAO
procedimento CABECALHO( )
inicio
escreva “Universidade Federal da Grande Dourados”
escreva “Curso de Bacharelado em Sistemas de Informação”
escreva “Ano 2013”
fim 
início
escreva “Informe o nome da universidade:”
leia universidade
escreva “Informe o nome do curso:”
leia curso
escreva “Informe o ano:”
leia ano
CABECALHO( )
fim
Precisamos fazer a leitura dos dados de entrada!
Exemplo 3: o que muda nesta solução?
programa IMPRESSAO
procedimento CABECALHO( )
inicio
escreva “Universidade Federal da Grande Dourados”
escreva “Curso de Bacharelado em Sistemas de Informação”
escreva “Ano 2013”
fim 
var
ano: inteiro
universidade, curso: caractere
início
escreva “Informe o nome da universidade:”
leia universidade
escreva “Informe o nome do curso:”
leia curso
escreva “Informe o ano:”
leia ano
CABECALHO( )
fim
Vamos declarar as variáveis usadas
Exemplo 3: o que muda nesta solução?
programa IMPRESSAO
procedimento CABECALHO( )
inicio
escreva “Universidade Federal da Grande Dourados”
escreva “Curso de Bacharelado em Sistemas de Informação”
escreva “Ano 2013”
fim 
var
ano: inteiro
universidade, curso: caractere
início
escreva “Informe o nome da universidade:”
leia universidade
escreva “Informe o nome do curso:”
leia curso
escreva “Informe o ano:”
leia ano
CABECALHO (universidade, curso, ano)
fim
Como as variáveis foram lidas no algoritmo principal, vamos 
passá-las via parâmetros para o procedimento
Exemplo 3: o que muda nesta solução?
programa IMPRESSAO
procedimento CABECALHO(u, c: caractere, a: inteiro)
inicio
escreva “Universidade Federal da Grande Dourados”
escreva “Curso de Bacharelado em Sistemas de Informação”
escreva “Ano 2013”
fim 
var
ano: inteiro
universidade, curso: caractere
início
escreva “Informe o nome da universidade:”
leia universidade
escreva “Informe o nome do curso:”
leia curso
escreva “Informe o ano:”
leia ano
CABECALHO (universidade, curso, ano)
fim
Vamos definir os parâmetros do procedimento
Exemplo 3: o que muda nesta solução?
programa IMPRESSAO
procedimento CABECALHO(u, c: caractere, a: inteiro)
inicio
escreva u
escreva c
escreva “Ano ”, a
fim 
var
ano: inteiro
universidade, curso: caractere
início
escreva “Informe o nome da universidade:”
leia universidade
escreva “Informe o nome do curso:”
leia curso
escreva “Informe o ano:”
leia ano
CABECALHO (universidade, curso, ano)
fim
Vamos usar os valores passados para escrever o cabeçalho 
corretamente
Exemplo 3: o que muda nesta solução?
programa IMPRESSAO
procedimento CABECALHO(u, c: caractere, a: inteiro)
inicio
escreva u
escreva c
escreva “Ano ”, a
fim 
var
ano: inteiro
universidade, curso: caractere
início
escreva “Informe o nome da universidade:”
leia universidade
escreva “Informe o nome do curso:”
leia curso
escreva “Informe o ano:”
leia ano
CABECALHO (universidade, curso, ano)
fim
Procure fazer a leitura dos dados de entrada no algoritmo 
principal e não dentro do procedimento
Exemplo de problema
` Desenvolver um algoritmo que simule as operações básicas 
de uma calculadora que opere com a entrada de dois 
valores do tipo real após a escolha da operação a ser 
executada.
` O algoritmo deve apresentar uma lista de opções (menus) 
com as operações matemáticas de adição, subtração, 
multiplicação e divisão, além de uma opção de saída do 
algoritmo.
` Escolhida a opção desejada, deve ser solicitada a entrada de 
dois valores numéricos para que seja possível executar o 
processamento escolhido.
` Após a execução da operação, o algoritmo deve apresentar 
o resultado e voltar a apresentar o menu de opções.
Entendimento do problema
` Pode-se entender e dividir o problema em cinco rotinas:
1 – Adição
2 – Subtração
3 – Multiplicação
4 – Divisão
5 – Fim do algoritmo
Rotina 3
Multiplicação
Rotina 4
Divisão
Rotina 1
Adição
Rotina 2
Subtração
Rotina principal
Rotinas secundárias
Rotina principal
` Apresentar o menu de opções;
` Quando o usuário escolher uma opção:
` Se o valor escolhido estiver entre 1 e 4, chamar a rotina 
correspondente OU
` Se o valor 5 for escolhido, encerrar o algoritmo.
Exemplo em Português estruturado
programa CALCULADORA
procedimento ROTSOMA()
...
fim
procedimento ROTSUBTRACAO()
...
fim
procedimento ROTMULTIPLICACAO()
...
fim
procedimento ROTDIVISAO()
...
fim
var
OPCAO: inteiro
início
OPCAO Å 0
enquanto (OPCAO <> 5) faça
escreva “1. Adição”
escreva “2. Subtração”
escreva “3. Multiplicação”
escreva “4. Divisão”
escreva “5. Sair do algoritmo”
escreva “Escolha uma opção:”
leia OPCAO
Exemplo em Português estruturado
início
OPCAO Å 0
enquanto (OPCAO <> 5) faça
escreva “1. Adição”
escreva“2. Subtração”
escreva “3. Multiplicação”
escreva “4. Divisão”
escreva “5. Sair do algoritmo”
escreva “Escolha uma opção:”
leia OPCAO
se (OPCAO <> 5) então
caso (OPCAO)
seja 1 faça ROTSOMA
seja 2 faça ROTSUBTRACAO
seja 3 faça ROTMULTIPLICACAO
seja 4 faça ROTDIVISAO
senão
escreva “Opção inválida, tente novamente”
fim_caso
fim_se
fim_enquanto
fim
Rotinas secundárias
Rotina 1 - Adição Rotina 2 - Subtração
1. Ler dois valores (variáveis 
A e B)
2. Efetuar a soma das 
variáveis A e B, colocando 
o resultado na variável R.
3. Apresentar o valor da 
variável R.
4. Retornar ao algoritmo 
principal.
1. Ler dois valores (variáveis 
A e B)
2. Efetuar a subtração das 
variáveis A e B, colocando 
o resultado na variável R.
3. Apresentar o valor da 
variável R.
4. Retornar ao algoritmo 
principal.
Rotinas secundárias (cont.)
Rotina 1 – Multiplicação Rotina 2 - Divisão
1. Ler dois valores (variáveis 
A e B)
2. Efetuar a multiplicação das 
variáveis A e B, colocando 
o resultado na variável R.
3. Apresentar o valor da 
variável R.
4. Retornar ao algoritmo 
principal.
1. Ler dois valores (variáveis 
A e B)
2. Efetuar a divisão das 
variáveis A e B, colocando 
o resultado na variável R.
3. Apresentar o valor da 
variável R.
4. Retornar ao algoritmo 
principal.
Exemplo em Português estruturado
programa CALCULADORA
procedimento ROTSOMA( )
var
R1, A1, B1 : real
início
escreva “Rotina de Adição”
escreva “Entre o 1º. Valor:”
leia A1
escreva “Entre o 2º. Valor:”
leia B1
R1 Å A1 + B1
escreva “O resultado da adição é:”, R1
fim
procedimento ROTSUBTRACAO( )
var
R2, A2, B2 : real
início
escreva “Rotina de Subtração”
escreva “Entre o 1º. Valor:”
leia A2
escreva “Entre o 2º. Valor:”
leia B2
R2 Å A2 - B2
escreva “O resultado da subtração é:”, R2
fim
Exemplo em Português estruturado
procedimento ROTMULTIPLICACAO( )
var
R3, A3, B3 : real
início
escreva “Rotina de Multiplicação”
escreva “Entre o 1º. Valor:”
leia A3
escreva “Entre o 2º. Valor:”
leia B3
R3 Å A3 * B3
escreva “O resultado da multiplicação é:”, R3
fim
procedimento ROTDIVISAO( )
var
R4, A4, B4 : real
início
escreva “Rotina de Divisão”
escreva “Entre o 1º. Valor:”
leia A4
escreva “Entre o 2º. Valor:”
leia B4
se (B4 = 0) então
escreva “Erro: divisão por zero!”
senão
R4 Å A4 / B4
escreva “O resultado da divisão é:”, R4
fim_se
fim
Repensando as rotinas
` Podemos enxugar as rotinas pedindo para ler os valores 
dentro do algoritmo principal e depois passá-los via 
parâmetros para cada procedimento chamado.
` Faça essa alteração.
124
Referências
` Algoritmos – Fundamento e Prática. Everton Coimbra de 
Araújo. Florianópolis: Visual Book, 2007.
` Algoritmos - Lógica para desenvolvimento de programação de 
computadores. José Augusto N. G. Manzano, Jayr Figueiredo 
de Oliveira. São Paulo: Érica, 2006.
125
	Algoritmos
	Plano de aula
	Modularidade
	Módulo
	Módulo
	Módulo: funcionamento
	Módulo: funcionamento
	Refinamento de módulos
	Tipos de módulos
	Funções
	Funções: como definir
	Módulo
	Funções: como definir
	Funções: como definir
	Módulo
	Funções: como definir
	Módulo
	Funções: como definir
	Módulo
	Funções: como definir
	Módulo
	Funções: como definir
	Exemplo 1
	Exemplo 1
	Exemplo 1
	Exemplo 1
	Exemplo 1
	Exemplo 2
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: novo algoritmo
	Exemplo 2: novo algoritmo
	Exemplo 3
	Exemplo 3
	Exemplo 3
	Exemplo 3
	Exemplo 3
	Exemplo 3
	Exemplo 3
	Exemplo 3
	Exemplo 3
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 4
	Exemplo 5
	Exemplo 5
	Exemplo 5
	Exemplo 5
	Exemplo 5
	Exemplo 5
	Exemplo 5
	Exemplo 6
	Exemplo 6
	Exemplo 6
	Exemplo 6
	Exemplo 6
	Exemplo 6
	Exemplo 6
	Exemplo 6
	Exemplo 6
	Exemplo 6
	Exemplo 6
	Exemplo 6
	Exemplo 7
	Exemplo 7
	Exemplo 7
	Exemplo 7
	Exemplo 7
	Exemplo 7
	Exemplo 7
	Exemplo 7
	Exemplo 8
	Exemplo 8
	Exemplo 8: função
	Exemplo 8: função
	Exemplo 8: função
	Exemplo 8: função
	Exemplo 8: função
	Exemplo 8: função
	Procedimentos
	Procedimentos
	Procedimentos
	Procedimentos
	Exemplo 1
	Exemplo 1: uma solução
	Exemplo 2
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 2: passo-a-passo
	Exemplo 3
	Exemplo 3: o que muda nesta solução?
	Exemplo 3: o que muda nesta solução?
	Exemplo 3: o que muda nesta solução?
	Exemplo 3: o que muda nesta solução?
	Exemplo 3: o que muda nesta solução?
	Exemplo 3: o que muda nesta solução?
	Exemplo 3: o que muda nesta solução?
	Exemplo de problema
	Entendimento do problema
	Rotina principal
	Exemplo em Português estruturado
	Exemplo em Português estruturado
	Rotinas secundárias
	Rotinas secundárias (cont.)
	Exemplo em Português estruturado
	Exemplo em Português estruturado
	Repensando as rotinas
	Referências

Outros materiais