Escolar Documentos
Profissional Documentos
Cultura Documentos
SUBROTINAS
4.1 Conceitos de
Modularização
1
Modularização de Algoritmos
• Para o ser humano é difícil descrever, em um processo
completo, todas as instruções mais detalhadas, de
forma que se consiga memorizar várias instruções
complexas ao mesmo tempo
Modularização de Algoritmos
• A solução para o homem resolver esse tipo de
problema é dividir um problema complexo em vários
outros subproblemas elementares, de tal forma que o
homem consiga assimilá-los com maior facilidade
2
4.2, 4.3 Procedimentos,
Funções
Procedimento
• O procedimento (procedure) apenas executa uma ação,
sem devolver um valor
• Declaração:
Procedimento <NOME>(<LISTA_DE_PARÂMETROS>)
//declaração dos objetos locais
//conjunto de ações
Fimprocedimento;
3
Função
• A função (function) é semelhante ao procedimento, no entanto
se diferencia pela característica de retornar um valor com um
tipo associado
‒ Uma função deve ser ativada em um contexto de expressão
• Declaração:
4
Parâmetros
• A passagem de parâmetros é o meio de comunicação entre
as unidades de um programa
Passagem de Parâmetro
• As variáveis de um programa podem ser transferidas a
um subprograma por duas maneiras:
‒Passagem de Parâmetro Explícita
‒Passagem de Parâmetro Implícita
5
Passagem de Parâmetro Explícita
• Explícita é quando a troca é realizada por meio de
argumentos
6
Passagem de Parâmetro Explícita
7
Passagem de Parâmetros
explícita
por referência
Procedimento 1
algoritmo "p1"
var
a,b,c: inteiro
inicio
a:=1
b:=2
c:=5
um(c)
escreval(a,b,c)
um(b)
escreval(a,b,c)
um(a)
escreval(a,b,c)
fimalgoritmo
8
Procedimento 1
algoritmo "p1"
var
a,b,c: inteiro
inicio
a:=1
b:=2 Chamada do procedimento “um” passando como
c:=5
um(c)
argumento o conteúdo da variável “c”
escreval(a,b,c)
um(b)
escreval(a,b,c)
um(a)
escreval(a,b,c)
fimalgoritmo
Procedimento 1
algoritmo "p1"
var
a,b,c: inteiro
9
Procedimento 1
algoritmo "p1"
var
a,b,c: inteiro
Procedimento 1
algoritmo "p1"
var
a,b,c: inteiro
10
Procedimento 1
algoritmo "p1"
var
a,b,c: inteiro
Procedimento 1
algoritmo "p1"
var
a,b,c: inteiro
inicio
a:=1
Saída do algoritmo:
b:=2
c:=5
526
um(c)
escreval(a,b,c) 236
um(b)
escreval(a,b,c) 336
um(a)
escreval(a,b,c)
fimalgoritmo
11
Procedimento 2
algoritmo "p2" inicio
var a:=20
a,b: real b:=10
a1(a,b,b,a)
procedimento a1(a:inteiro; var c:inteiro; p,b:inteiro) escreval(a,b)
inicio a2(b)
a:=c escreval(a,b)
p:=b+c a1(a,a,b,b)
c:=c+100 escreval(a,b)
escreval(a,b,c,p) fimalgoritmo
fimprocedimento
Procedimento 2
algoritmo "p2" inicio
var a:=20
a,b: real b:=10
a1(a,b,b,a)
procedimento a1(a:inteiro; var c:inteiro; p,b:inteiro) escreval(a,b)
inicio a2(b)
a:=c escreval(a,b)
p:=b+c a1(a,a,b,b)
c:=c+100 escreval(a,b)
escreval(a,b,c,p) fimalgoritmo
fimprocedimento
12
Procedimento 2
algoritmo "p2" inicio
var a:=20
a,b: real b:=10
a1(a,b,b,a)
procedimento a1(a:inteiro; var c:inteiro; p,b:inteiro) escreval(a,b)
inicio a2(b)
a:=c escreval(a,b)
p:=b+c a1(a,a,b,b)
c:=c+100 escreval(a,b)
escreval(a,b,c,p) fimalgoritmo
fimprocedimento
Procedimento 2
algoritmo "p2" inicio
var a:=20
a,b: real b:=10
a1(a,b,b,a)
procedimento a1(a:inteiro; var c:inteiro; p,b:inteiro) escreval(a,b)
inicio a2(b)
a:=c escreval(a,b)
p:=b+c a1(a,a,b,b)
c:=c+100 escreval(a,b)
escreval(a,b,c,p) fimalgoritmo
fimprocedimento
13
Procedimento 2
algoritmo "p2" inicio
var a:=20
a,b: real b:=10
20 10 10 20 a1(a,b,b,a)
procedimento a1(a:inteiro; var c:inteiro; p,b:inteiro) escreval(a,b)
inicio a2(b)
a:=c escreval(a,b)
p:=b+c a1(a,a,b,b)
c:=c+100 escreval(a,b)
escreval(a,b,c,p) fimalgoritmo
fimprocedimento
Procedimento 2
algoritmo "p2" inicio
var a:=20
a,b: real b:=10
20 10 10 20 a1(a,b,b,a)
procedimento a1(a:inteiro; var c:inteiro; p,b:inteiro) escreval(a,b)
inicio a2(b)
10 a:=c escreval(a,b)
p:=b+c a1(a,a,b,b)
c:=c+100 escreval(a,b)
escreval(a,b,c,p) fimalgoritmo
fimprocedimento
14
Procedimento 2
algoritmo "p2" inicio
var a:=20
a,b: real b:=10
20 10 10 20 a1(a,b,b,a)
procedimento a1(a:inteiro; var c:inteiro; p,b:inteiro) escreval(a,b)
inicio a2(b)
10 a:=c escreval(a,b)
30 p:=b+c a1(a,a,b,b)
c:=c+100 escreval(a,b)
escreval(a,b,c,p) fimalgoritmo
fimprocedimento
Procedimento 2
algoritmo "p2" inicio
var a:=20
a,b: real b:=10
20 10 10 20 a1(a,b,b,a)
procedimento a1(a:inteiro; var c:inteiro; p,b:inteiro) escreval(a,b)
inicio a2(b)
10 a:=c escreval(a,b)
30 p:=b+c a1(a,a,b,b)
110 c:=c+100 escreval(a,b)
escreval(a,b,c,p) fimalgoritmo
fimprocedimento
15
Procedimento 2
algoritmo "p2" inicio
var a:=20
a,b: real b:=10
20 10 10 20 a1(a,b,b,a)
procedimento a1(a:inteiro; var c:inteiro; p,b:inteiro) escreval(a,b)
inicio a2(b)
10 a:=c Saída: escreval(a,b)
30 p:=b+c a1(a,a,b,b)
110 c:=c+100 10 20 110 30 escreval(a,b)
escreval(a,b,c,p) fimalgoritmo
fimprocedimento
Procedimento 2
algoritmo "p2" inicio
var a:=20
a,b: real b:=10
20 10 10 20 a1(a,b,b,a)
procedimento a1(a:inteiro; var c:inteiro; p,b:inteiro) escreval(a,b)
inicio a2(b)
10 a:=c Saída: escreval(a,b)
30 p:=b+c a1(a,a,b,b)
110 c:=c+100 10 20 110 30 escreval(a,b)
escreval(a,b,c,p) fimalgoritmo
fimprocedimento
Saída: 20 110
procedimento a2(var a:inteiro) Como a variável “a” do procedimento foi explicitamente
inicio
a:=30 declarada para receber passagem de parâmetro por
escreval(a,b) valor, a atribuição “a:=c” não se refletiu fora do módulo
fimprocedimento
Obs.: A saída de “b” foi 110 pois ela foi passada duas
vezes na linha “a1(a,b,b,a)”, sendo que a variável “c”
que a recebeu foi por referência
16
Função
Algoritmo "f1"
Var
A,B,C: Real
Inicio
A:=5
B:=6
C:=Exemplo(B,A)+Exemplo(A,B)+B
escreval(A,B,C)
Fimalgoritmo
Função
Algoritmo "f1"
Var
A,B,C: Real Tipo de dado associado à função a
Funcao Exemplo(var X:Real; Y:Real): Real ser retornado
Var
C: Real
Inicio Variável declarada do tipo do
C:=X+Y Saída do algoritmo:
C:=C+X
retorno da função
retorne C 6 5 17
escreval(X,Y,C) Comando que retornará o
Fimfuncao 5 6 16
valor ao chamador da
Inicio função 5 6 39
A:=5
B:=6
C:=Exemplo(B,A)+Exemplo(A,B)+B Ativação em contexto de
escreval(A,B,C)
Fimalgoritmo expressão
17