Você está na página 1de 9

Lógica de Programação e Algoritmos - LPA

Procedimentos, Funções (Módulos/Sub-Rotinas/Sub-Programas)

Uma técnica aconselhada para desenvolver bons programas de computador consiste em


dividir o problema inicial em subproblemas mais simples ou, por outras palavras, dividir o
programa que permite a resolução computacional do problema em subprogramas.

A cada uma das partes é dado o nome de módulo.

Um subprograma constitui um bloco independente dentro de um programa, podendo ser


visto como um programa dentro de outro programa.

O gerenciamento das tarefas é feito pelo algoritmo principal ou módulo principal. Esse
módulo ”chama” ou aciona os outros módulos, que deverão ser escritos por meio de
procedimentos ou funções.

Refinamento sucessivo é a redução de um problema a um conjunto de tarefas destinadas


a solucioná-lo de maneira eficiente.

A uma das técnicas de refinamentos sucessivos dá-se o nome de top-down (de cima
para baixo), ou seja, parte-se do problema como um todo e vai detalhando-se até atingir o
nível desejado.

Utilização

A utilização de subprogramas num programa apresenta um conjunto de vantagens:

a) Reduzir ou eliminar sequência de linhas de programação idênticas, relacionadas


com uma única tarefa, incluindo essas linhas num subprograma que será
executado sempre que o programa o exija.

b) Aumentar a legibilidade dos programas escondendo pormenores pouco relevantes


para a compreensão do problema.

c) Reduzir o tamanho e a complexidade dos programas, dividindo-os num conjunto de


subprogramas mais simples.

d) Permitir a utilização de conjuntos de funções e procedimentos genéricos


(bibliotecas) por outros programas, evitando a reescrita de subprogramas.

1
Lógica de Programação e Algoritmos - LPA

Parâmetros

Os parâmetros são “variáveis” que estabelecem a troca de valores entre o algoritmo que
realiza a chamada e o procedimento/função.

Por meio dos parâmetros de entrada os valores são passados para o procedimento/
função.

Eles funcionam como comunicadores entre os módulos.

Nem sempre existe a necessidade do uso de parâmetros.

Procedimentos

É um conjunto de instruções que realiza determinada tarefa.

Um algoritmo de procedimentos é criado da mesma maneira que outro algoritmo


qualquer, deve ser identificado e possuir variáveis e operações.

Pseudocódigo:

Procedimento nome_do_procedimento (<lista de parâmetros>)


var
<declaração das variáveis pertencentes a este procedimento (locais)>
início
<comando 1>
<comando 2>
<comando 3>
fim

Diagrama de Bloco:

Nome do
Procedime nt o

Leitura das
variáveis

Comando s

Retornar

2
Lógica de Programação e Algoritmos - LPA

Exemplo:

Procedimento para realizar a operação de adição entre dois valores, sem a passagem de
parâmetros.

Procedimento proc_adicao
var
v1, v2, res : real
início
res v1 + v2
Escreva(“O resultado da soma é:”, res)
fim

Procedimento para realizar a operação de adição entre dois valores, com a passagem de
parâmetros.

Procedimento proc_adicao(v1, v2: real)


var
res : real
início
Escreva(“Digite o primeiro numero:”)
Leia(v1)
Escreva(“Digite o segundo numero:”)
Leia(v2)
res v1 + v2
Escreva(“O resultado da soma é:”, res)
fim

Chamada de Procedimentos

A chamada de um procedimento corresponde ao momento em que este é acionado e seu


código é executado, podendo ou não ocorrer a passagem de parâmetros.

Quando ocorre a chamado de um procedimento, a execução do algoritmo chamador é


“interrompida” e o controle é passado para o procedimento até que seu conjunto de
instruções seja finalizado, momento em que o controle de execução volta ao chamador.

Procedimento nome_do_procedimento (<lista de parâmetros>)


var
<declaração das variáveis pertencentes a este procedimento (locais)>
início
<instrucoes do procedimento>
fim
var
<declaração das variáveis pertencentes ao algoritmo principal>
início
<instrucoes do algoritmo principal >
fim

3
Lógica de Programação e Algoritmos - LPA

1. Procedimento para realizar a operação de adição entre dois valores, sem a passagem
de parâmetros.

Programa Princ_Adicao
Procedimento Proc_Adicao
var
v1, v2 : real
início
Escreva(“Digite o primeiro numero:”)
Leia(v1)
Escreva(“Digite o segundo numero:”)
Leia(v2)
res v1 + v2
Escreva(“O resultado da soma é:”, res)
Fim
Var
Inicio
Proc_Adicao
Fim

2. Procedimento para realizar a operação de adição entre dois valores, com a passagem
de parâmetros com valores predeterminados.

Programa Princ_Adicao
Procedimento Proc_Adicao (v1, v2 : real)
var
res : real
início
res v1 + v2
Escreva(“O resultado da soma é:”, res)
Fim
Var
Inicio
Proc_Adicao(5,10)
Fim

3. Procedimento para realizar a operação de adição entre dois valores, com a passagem
de parâmetros com valores variáveis

Programa Princ_Adicao
Procedimento Proc_Adicao (v1, v2 : real)
var
res : real
início
res v1 + v2
Escreva(“O resultado da soma é:”, res)
Fim
Var
n1, n2 : real
Inicio
Escreva(“Digite o primeiro numero:”)
Leia(n1)
Escreva(“Digite o segundo numero:”)
Leia(n2)
Proc_Adicao(n1, n2)
Fim

4
Lógica de Programação e Algoritmos - LPA

Funções

As funções são criadas da mesma maneira que os procedimentos.

A diferença entre os dois é que elas podem ser utilizadas em expressões, como se
fossem variáveis, pois as funções retornam valores que são associados ao seu nome, e
para esses valores é necessário a declaração do tipo de dado a ser retornado.

Sintaxe:

Função nome_da_função (lista de parâmetros): tipo_de_dado da função


var
<declaração das variáveis pertencentes a esta função (locais)>
início
<comando 1>
<comando 2>
<comando 3>
retornar(variável)
fim

Diagrama de Bloco:

Nome da
Função

Leitura das
variáveis

Comando s

Retornar

Exemplo:
Função Func_Soma (v1, v2 : real): real
var
res : real
início
res v1 + v2
Retornar(res)
Fim

5
Lógica de Programação e Algoritmos - LPA

Chamada de Funções

A chamada de uma função corresponde ao momento em que esta é acionada e seu


código é executado, ocorrendo a passagem de parâmetros.

Programa Principal
Função Func_Soma (v1, v2 : real): real
var
res : real
início
res v1 + v2
Retornar(res)
Fim
Var
x, y, n1, n2 : real
Inicio
Escreva(“Digite o primeiro numero:”)
Leia(n1)
Escreva(“Digite o segundo numero:”)
Leia(n2)
x Func_Soma(n1, n2)
y n2 + Func_Soma(n1,
n2) Fim

Recursividade

Qualquer subprograma pode-se chamar a si próprio de uma forma recursiva.

Considere-se então um subprograma recursivo para o cálculo da expressão xy , na qual x


e y são números inteiros e n é positivo.

Esse subprograma irá tirar partido de uma definição particular da potência de um número,
na qual a expressão xn é representada por potencia( x, n):

potencia( x, y ) = x, se n = 1
potencia( x, y ) = x * potência( x, y - 1 ), se y > 1

A função potencia é, neste caso, definida à custa de si própria.

Programa Principal_Potencia

Função potencia (a,b:inteiro): inteiro


var
poten : inteiro
início
se (b = 1) então
poten a
Retorna(poten)
Senão
poten a * potencia(a, b –
1) Retorna(poten)
fim

6
Lógica de Programação e Algoritmos - LPA

Var
x, y, res : inteiro
Inicio
Escreva(“Digite o numero:”)
Leia(x)
Escreva(“Digite a potencia:”)
Leia(y)
res potencia(x,y)
Escreva(“O Resultado é:”, res)
Fim

Por exemplo, uma chamada da função com os valores 2 e 3 para os parâmetros x e y,


respectivamente, originaria a seqüência:

potencia( 2, 3 )
2 * potencia( 2, 2 )
2 * 2 * potencia( 2, 1 )

A função ao ser invocada com o valor 1 para o parâmetro y, termina a série de chamadas
recursivas e retorna o valor do parâmetro x, ou seja, 2.

A expressão final que a ser calculada é:

2*2*2 e a função retorna o valor 8.

Fatorial

Programa Principal_Fatorial

Função fatorial (n:inteiro): inteiro


var
i, fat : inteiro
início
fat 1
Para i de 1 até n Passo 1 Faça
Fat fat *
i Fim_Para
Retorna(fat)
fim
Var
Numero, resultado : inteiro
Inicio
Escreva(“Digite o numero:”)
Leia(numero)
resultado fatorial(numero)
Escreva(“O Fatorial é:”, resultado)
Fim

Escopo

As variáveis dentro de um programa podem apresentar âmbitos distintos: global ou local.

7
Lógica de Programação e Algoritmos - LPA

Uma variável local é apenas reconhecida no bloco em que se encontra definida não
podendo ser acedida a partir de outros blocos.

Uma variável global é reconhecida em todo o programa podendo ser acedida a partir de
qualquer parte do programa.

A passagem de argumentos a um procedimento pode ser feita por valor ou por referência.

No primeiro caso são criadas no procedimento cópias dos argumentos que são destruídas
quando o procedimento termina.

No segundo caso, é indicado ao procedimento as posições de memória ocupadas pelos


argumentos.

Nesta última situação, as alterações efetuadas sobre os valores dos parâmetros do


procedimento refletem-se de igual forma nos valores dos argumentos.

Exercícios Resolvidos:

1 – Subtraindo dois números usando função. Deverão ser passados dois números como
parâmetro e a função deverá retornar o resultado desta subtração.

Programa Principal

Var
x, y, n1, n2 : real
Inicio
Escreva(“Digite o primeiro numero:”)
Leia(n1)
Escreva(“Digite o segundo numero:”)
Leia(n2)
x Func_Sub(n1, n2);
Fim

Função Func_Sub (v1, v2 : real): real


var
res : real
início
res v1 – v2
Retornar(res)
Fim

2 – Criar uma função para calcular o valor de um número elevado ao quadrado.

Algoritmo função_quadrado

8
Lógica de Programação e Algoritmos - LPA

Var X, Y : real

Função Quad(w : real) : real


Var Z : real
Inicio
Z := w * w
Retorne Z
Fim

Início
Escreva "Digite um número”
Leia X
Y := Quad(X)
Escreva X, " elevado ao quadrado é = ", Y
Fim.

Material Cedido Por:


Antônio Viana
Ecila Oliveira
Luciana Abiuzi
Sidinei Akira