Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

ALGORITMO
ETAPA 5
MODULARIZAÇÃO: PROCEDIMENTOS E 
FUNÇÕES
CENTRO UNIVERSITÁRIO
LEONARDO DA VINCI
Rodovia BR 470, Km 71, nº 1.040, Bairro Benedito
89130-000 - INDAIAL/SC
www.uniasselvi.com.br
Curso sobre Algoritmo
Centro Universitário Leonardo da Vinci
Organização
Greisse Moser Badalotti
Autor
Marcio Poffo
Reitor da UNIASSELVI
Prof. Hermínio Kloch
Pró-Reitoria de Ensino de Graduação a Distância
Prof.ª Francieli Stano Torres
Pró-Reitor Operacional de Ensino de Graduação a Distância
Prof. Hermínio Kloch
Diagramação e Capa
Renan Willian Pacheco
Revisão
Andressa Ehlert
Caro acadêmico, parabéns por ter chegado a esta etapa. Agora você já conhece 
os conceitos fundamentais para a construção de algoritmos, a criação de variáveis e de 
seus tipos de dados, estruturas condicionais e comandos de repetição (loop), além das 
estruturas de dados homogêneas da etapa anterior.
A partir desta etapa, focaremos no desenvolvimento de procedimentos (sub-
rotinas), módulos de funções, variáveis globais e locais, além de passagem de parâmetros 
entre os procedimentos e funções. Nesta etapa, você perceberá que um programa deve 
ser quebrado em partes, isto é, em pequenos procedimentos que realizam uma função 
específica, pois isso facilita a manutenção de um programa.
Mas para isso, não esqueça, faça todos os exercícios propostos, analise e refaça 
os exemplos demonstrados, assim você vai conseguir aprender a criar um programa 
modularizado de forma que fique mais fácil sua manutenção, e também mais legível. A 
prática facilita e muito o desenvolvimento da lógica de programação. Este é o caminho 
para o bom aprendizado de programação. Portanto, bons estudos e boa programação!
2 ALGORITMO
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
1 INTRODUÇÃO
Como você já sabe, um programa de computador nada mais é do que um conjunto 
de instruções ou ações, logicamente organizadas e descritas utilizando a sintaxe de 
uma linguagem de programação determinada, cujo objetivo é ser executado pelo 
sistema operacional com a finalidade de solucionar problemas automaticamente pelo 
computador, seguindo as instruções programadas. É neste sentido que entramos na 
programação, pois até aqui você aprendeu como desenvolver um programa e instruí-
lo a fazer algo.
Dentre as instruções utilizadas neste curso, até este momento, você já sabe como 
realizar uma simples declaração de variáveis e atribuições de valores, assim como 
desenvolver instruções para resolução de expressões aritméticas com entrada e saída 
de dados, além da definição de estruturas mais complexas, desenvolvendo desvios 
condicionais e laços de repetição.
Neste sentido, até a etapa anterior, você aprendeu os principais conceitos 
fundamentais da programação de sistemas, como criação de algoritmos, variáveis e 
constantes, os comandos de atribuição e de entrada e saída de dados. Você aprendeu 
também o que são expressões lógicas e aritméticas, quais as procedências de operadores, 
além das estruturas condicionais e de repetição. E para finalizar, na etapa anterior, você 
aprendeu sobre as estruturas de dados homogêneas, isto é, vetores e matrizes. Todos 
estes conhecimentos são importantíssimos para o desenvolvimento de software, não 
importa a linguagem de programação, pois todas elas possuem estas estruturas.
Independentemente das instruções que você desenvolver nos exemplos, a forma 
como organizamos o código-fonte de nosso algoritmo é importante para aumentarmos 
as possibilidades de reutilização e reduzirmos a complexidade em uma manutenção 
futura. Para isso, devemos utilizar a técnica de modularização. Modularizar um código-
fonte significa quebrar em módulos, isto é, quebrar nossas instruções em pequenos e 
específicos procedimentos e funções (JUNIOR et al., 2012).
Para isso, nesta etapa vamos aprender como desenvolver um programa de forma 
que fique modularizado para facilitar a manutenção e o entendimento do código-fonte, 
isto é, fique mais legível. Neste contexto, digamos que você crie um programa, mas 
com uma única função que desempenhe todas as funções necessárias. Este código vai 
se tornar “macarrônico” ou também chamado de “espaguete”, pois será confuso de 
entendê-lo. Para evitar este problema, precisamos criar nossos programas em módulos, 
isto é, definir pequenos procedimentos ou funções que façam uma tarefa mais específica 
(JUNIOR et al., 2012).
3
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
ALGORITMO
2 MODULARIZAÇÃO DO CÓDIGO
De modo geral, os problemas complexos normalmente possuem uma solução 
complexa, isto é, um algoritmo complexo que o resolva. Mas é possível dividir o 
problema grande em pequenos problemas, conhecido na programação por “dividir para 
conquistar”, chamado de modularização do código (MANZANO; OLIVEIRA, 2014). 
Neste sentido, divide-se o código em pequenos algoritmos, o que facilita a solução e o 
entendimento do mesmo, chegando-se à solução do problema complexo (MANZANO; 
OLIVEIRA, 2014).
Neste contexto, módulo pode ser entendido por um bloco de código que pode 
efetuar operações computacionais de entrada, processamento e saída. Utilizando-se esta 
metodologia de dividir um problema complexo em módulos, é abstrair um algoritmo, 
que nada mais é do que trabalhar isoladamente um elemento ou uma funcionalidade, 
isto é, separada do seu todo (MANZANO; OLIVEIRA, 2014).
De acordo com Manzano e Oliveira (2014), a modularidade de um código-fonte 
baseia-se em três características:
•	 cada módulo deve possuir um único ponto de entrada;
•	 o módulo do programa que chamou (unidade mestre) um outro módulo (unidade 
escravo) é suspenso;
•	 quando o módulo escravo concluir sua execução, o fluxo de execução do programa 
é retornado para a unidade mestre, que continua a partir da primeira linha após a 
chamada do módulo escravo.
Esta técnica de modularização de código pode ser aplicada para modularizar 
blocos de código já modularizados, tornando-os menores e mais simples. Não existe 
limitação para modular, pois o ideal é tornar o código o mais simples possível, melhor 
para o entendimento, e melhor para a manutenção futura.
Um exemplo de modular um programa seria calcular a média aritmética de duas 
provas de um aluno, que neste caso temos que realizar a soma da nota da primeira prova 
com a nota da segunda prova, e então realizar a divisão por dois, que é a quantidade de 
notas. Porém, se tivermos que realizar este cálculo para mais de um aluno, temos que 
repetir esse trecho de código-fonte do cálculo para cada aluno. Neste caso, para que 
não tenhamos replicação do mesmo bloco de código, podemos criar um procedimento, 
cujo detalhamento será descrito a seguir, que seja chamado sempre que alterar o aluno. 
Diante de uma situação parecida com esta, replicar o mesmo bloco de código em um 
mesmo programa é uma prática ruim, pois torna o código maior, mais confuso e com 
mais difícil manutenção.
4 ALGORITMO
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
2.1. MÉTODOS TOP-DOWN E BOTTOM-UP
Os métodos top-down e bottom-up são utilizados para facilitar o desenvolvimento 
de programas de computador (MANZANO; OLIVEIRA, 2014). 
O método top-down é denominado desta forma pois analisa o problema de cima 
para baixo, descrevendo de forma mais resumida as ações de um programa, não se 
preocupando com detalhes específicos. Já o método bottom-up, de baixo para cima, 
descreve de forma mais detalhada as funcionalidades mínimas de um programa, 
sendo mais oportuno para o desenvolvimento de diagramas de blocos e o código-
fonte (MANZANO; OLIVEIRA, 2014). Estes métodos facilitam o desenvolvimento de 
programas com o código-fonte estruturado ou ainda orientado a objetos. A maioria das 
linguagens de programação atuais permitem a utilização destas metodologias.
De acordo com Manzano e Oliveira (2014),para seguir o método top-down devem 
ser seguidos os seguintes passos:
•	 Antes de iniciar a implementação de um programa, é necessário apenas conhecer as 
suas funcionalidades principais.
•	 Deve-se saber como deve ser o programa principal e como ele vai controlar os demais 
procedimentos (sub-rotinas).
•	 Então, deve-se detalhar, estruturalmente, cada procedimento, sendo um algoritmo 
para cada um deles. Desta forma, se possui uma visão do que deve ser executado 
e em qual módulo. Além disso, pode-se definir uma limitação de linhas para cada 
procedimento, e caso um dos algoritmos ultrapassar este limite, então este pode ser 
subdividido em mais de um algoritmo, permanecendo funcionalidades específicas 
em cada um deles.
O método top-down permite uma visualização mais detalhada da estrutura de 
cada programa ou procedimento separadamente, tornando a sua compreensão mais 
fácil. Neste contexto, aplicando-se o método bottom-up, isto é, de baixo para cima, cada 
procedimento (sub-rotina) pode ser testada separadamente, evitando erros no final 
do desenvolvimento do programa, e permite que mais de uma pessoa trabalhe na 
programação do mesmo projeto, tornando-o mais produtivo e reduzindo o seu tempo.
Desta forma, a estrutura do programa fica parecida com a de um organograma, 
que é um gráfico que representa a estrutura organizacional, conforme está ilustrado 
na figura a seguir.
5
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
ALGORITMO
FIGURA 1 – EXEMPLO DE MODULARIZAÇÃO HIERÁRQUICA DE UM PROGRAMA
FONTE: O autor
Como se pode observar, da forma como se está apresentando a modularidade 
do programa atual torna-se mais fácil encontrar a possibilidade de quebrar um dos 
procedimentos do gráfico, pois facilita a visualização de todos eles. Além disso, é possível 
modularizar um programa criando procedimentos específicos para entrada de dados, 
outro para processamento e mais outro para a saída, dependendo da situação.
A partir de agora, passaremos a formalizar o desenvolvimento de código-
fonte mais modularizado, e para isso desenvolveremos nossos próximos algoritmos e 
programas desta forma, dos quais poderemos analisar as vantagens que a modularidade 
nos retorna para entendimento, construção, codificação, teste e reutilização do código-
fonte. Além disso, a maioria das linguagens de programação, principalmente as mais 
modernas como Delphi, C e Java, possuem esta facilidade, cada uma com sua sintaxe, 
mas todas parecidas, seja pelas denominações sub-rotina, subprograma, procedimento, 
função, módulo, blocos, entre outros. Nestas linguagens de programação é possível 
realizar subdivisões de um programa para que fique mais fácil o seu entendimento, 
permitindo a reutilização e evitando-se repetição de trechos de código. Nas próximas 
seções apresentamos a diferença entre procedimentos e funções, assim como exemplos 
em pseudocódigos que você pode testar e alterar no VisualG.
3. SUB-ROTINAS
As sub-rotinas, ou também conhecidas por subalgoritmo, é a nomenclatura 
para um algoritmo que executa alguma tarefa mais específica, isto é, não representa 
um algoritmo com a solução completa para o problema (SOUZA et al., 2015). As sub-
rotinas são utilizadas para resolver tarefas específicas de um problema, evitando que o 
6 ALGORITMO
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
algoritmo principal se torne complexo, pois ao invés dele solucionar todo o problema, 
ele chamará as sub-rotinas que farão as suas tarefas específicas. Além disso, a utilização 
de sub-rotinas permite uma maior reutilização do código-fonte, como por exemplo, 
uma sub-rotina que valida o CPF de uma pessoa, a qual pode ser chamada de vários 
outros locais da aplicação.
3.1. PASSAGEM DE PARÂMETROS
Um parâmetro nada mais é do que valores sendo passados para um procedimento 
ou uma função (SOUZA et al., 2015). Além disso, um parâmetro pode ser de qualquer 
tipo, ou seja, inteiro, real, lógico, caractere, variáveis indexadas (vetor ou matriz) etc.
Neste contexto, um procedimento ou uma função, descritos a seguir, podem ter 
parâmetros que são dados oriundos do módulo mestre (unidade mestre) para serem 
manipulados pelas instruções internas do módulo escravo, isto é, procedimento ou 
função atual. Neste sentido, um parâmetro pode ser definido como uma variável no 
corpo do procedimento ou função, a qual recebe um valor apenas quando este trecho 
de código é chamado.
Os procedimentos e funções que utilizam parâmetros, e não variáveis globais, 
tornam a lógica mais segura, pois desta forma isola-se os dados do meio exterior, 
obtendo-se a vantagem de não se preocupar com o trecho de código que o chamou.
3.2. PROCEDIMENTOS
Um procedimento é uma sub-rotina, que pode ser descrita como um bloco 
de programa que possui início e fim, identificado por um nome que referencia sua 
funcionalidade. Desta forma, em qualquer parte do programa que chame sua execução, 
consegue-se ter uma ideia do que este procedimento realiza. Por isso é sempre 
aconselhável o nome de um procedimento, ou mesmo de uma função, descrita a seguir, 
ter relação com a sua funcionalidade. Um procedimento deve ser criado sempre que um 
conjunto de comandos se repetem no algoritmo, tornando o código mais reutilizável.
Neste contexto, as variáveis e as constantes declaradas dentro de um procedimento 
são acessáveis apenas pelas instruções do próprio procedimento, que neste caso são 
chamadas de variáveis locais ou constantes locais. O mesmo vale para uma função, 
que será descrita na próxima seção. Porém, as variáveis e constantes declaradas no 
algoritmo, isto é, no programa geral, são acessíveis em qualquer ponto do programa, 
incluindo nos procedimentos e funções criadas, e neste sentido, são chamadas de 
variáveis e constantes globais.
7
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
ALGORITMO
Além disso, um procedimento não retorna um valor e corresponde a procedure 
da linguagem Pascal, ou ainda a um método void, em Java.
FIGURA 2 – EXEMPLO DE MODULARIZAÇÃO HIERÁRQUICA 
DE UM PROGRAMA
FONTE: O autor
Em um fluxograma, um procedimento é representado conforme apresentado na 
Figura 2. O termo utilizado “nomeProced” é o nome do procedimento, e o ideal é que 
tenha referência com a sua funcionalidade. Os termos “par1” e “par2” são parâmetros. 
Não é obrigatória a existência de parâmetros em um procedimento, assim como em 
uma função. Além disso, como um procedimento não realiza retorno de valor, então 
não existe este bloco no fluxograma.
Observe a sintaxe básica de um procedimento em portugol.
TABELA 1 – SINTAXE BÁSICA DE UM PROCEDIMENTO
 procedimento nomeProcedimento (parametro1, parametro2: inteiro)
 início
 <Instruções executadas pelo procedimento>
 fimprocedimento
FONTE: O autor
8 ALGORITMO
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
Segue abaixo um exemplo de um programa que possui um procedimento, cujo 
código-fonte seria replicado caso não estivesse modularizado, pois o mesmo é chamado 
mais de uma vez no decorrer do algoritmo.
TABELA 2 – EXEMPLO DE PROGRAMA MODULARIZADO (COM PROCEDIMENTO)
Algoritmo "procedimentoCalculadoraSoma"
Var
 primeiro, segundo, total: real
 
 procedimento soma (x, y: inteiro)
 inicio
 total <- x + y
 escreval("Total da soma é: ", total)
 fimprocedimento
Início
 Escreval ("Informe o primeiro número: ")
 Leia (primeiro)
 Escreval ("Informe o segundo número: ")
 Leia (segundo)
 soma(primeiro, segundo)
 se total > 10 então
 soma(primeiro, segundo)
 fimse 
Fimalgoritmo
FONTE: O autor
Observe o código-fonte anterior, o qual realiza a função de soma de dois números 
passados por parâmetro. Abaixo da declaração de variáveis do programa principal 
“procedimentoCalculadoraSoma”, foi criado o procedimento chamado “soma”,o qual 
possui dois valores sendo passados como parâmetros. Note que o procedimento “soma” 
é chamado duas vezes pelo programa principal, o qual poderia ser chamado quantas 
vezes fossem necessárias de qualquer ponto do programa, até de outro procedimento 
criado. Esta questão é importante, pois reflete no reuso do código. 
Observe que as variáveis “primeiro”, “segundo” e “total”, do algoritmo anterior, 
estão declaradas no algoritmo (programa), sendo descritas como variáveis globais, pois 
elas podem ser acessadas de qualquer ponto do algoritmo, inclusive do procedimento 
“soma”, que não necessitaria de parâmetros, pois poderia utilizar estas variáveis 
9
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
ALGORITMO
diretamente. Mas neste sentido, deve-se tomar cuidado para que as variáveis globais 
não sejam alteradas nos procedimentos e funções que as utilizar, pois isso afetaria o 
resultado de outros procedimentos que podem precisar de seu valor.
Agora analisemos o próximo algoritmo, bem mais aprimorado e que funciona 
como uma calculadora básica com todas as operações matemáticas. O exemplo a seguir 
está pronto para você copiar e utilizá-lo no VisualG, assim você pode realizar melhorias 
nele para aprimorar seus conhecimentos.
10 ALGORITMO
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
TABELA 3 – EXEMPLO DE PROGRAMA MODULARIZADO (COM PROCEDIMENTO)
Algoritmo "procedimentoCalculadora"
Var
 opção : inteiro
 n, m, retorno: real
 procedimento soma (x, y: real)
 inicio
 retorno <- x + y
 fimprocedimento
 procedimento subtração (x, y: real)
 inicio
 retorno <- x - y
 fimprocedimento
 procedimento multiplicação (x, y: real)
 inicio
 retorno <- x * y
 fimprocedimento
 procedimento divisão (x, y: real)
 inicio
 retorno <- x / y
 fimprocedimento
Início
 opção <- 0
 ENQUANTO (opção = 0) ou (opção <> 9) FACA
 Escreval (" ")
 Escreval ("*****MENU******")
 Escreval ("9 - Sair ")
 Escreval ("1- Soma ")
 Escreval ("2- Subtração ")
11
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
ALGORITMO
 Escreval ("3- Multiplicação ")
 Escreval ("4- Divisão ")
 Escreval ("Informe a opção: ")
 Leia (opção)
 se (opção = 1) ou (opção = 2) ou (opção = 3) ou (opção = 4) então
 Escreval ("Informe o primeiro número ")
 Leia (n)
 Escreval ("Informe o segundo número ")
 Leia (m)
 fimse
 ESCOLHA opção
 CASO 1
 soma(n, m)
 Escreval ("Resultado da soma: ", retorno)
 CASO 2
 subtração(n, m)
 Escreval ("Resultado da subtração: ", retorno)
 CASO 3
 multiplicação(n, m)
 Escreval ("Resultado da multiplicação: ", retorno)
 CASO 4
 divisão(n, m)
 Escreval ("Resultado da divisão: ", retorno)
 CASO 9
 Escreval ("*****Optou Sair******")
 OUTROCASO
 opção <- 0
 Escreval ("Opção inválida---->INFORME NOVAMENTE")
 FIMESCOLHA
 FIMENQUANTO
Fimalgoritmo
FONTE: O autor
12 ALGORITMO
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
Analise agora o código-fonte da Tabela 3, acima. Você pode copiá-lo para executar 
no interpretador VisualG, que funcionará perfeitamente. Note que após a declaração 
das variáveis do programa principal, criamos quatro procedimentos diferentes, um para 
cada operação matemática, isto é, um para adição, outro para subtração, multiplicação e 
o último para divisão. Logo que o programa é executado, são executadas as linhas que 
montam o menu na tela, através do comando “Escreval”, o qual pode ser observado 
na Figura 3, a seguir. Se o usuário informar uma das opções 1, 2, 3 ou 4, significa que 
ele deseja realizar algum cálculo. Neste sentido, serão apresentadas as solicitações para 
que ele informe dois números para serem calculados. Assim que o usuário informou 
o segundo número, o fluxo do programa entra no comando “ESCOLHA..CASO” ou 
“SWITCH..CASE”, onde será analisada a opção escolhida, e então executada a instrução. 
Se a opção escolhida for de calcular, será chamado o respectivo procedimento da 
operação escolhida, o qual efetua o cálculo e armazena na variável global, chamada 
“retorno”, que é utilizada para apresentar o resultado na tela. A seguir, o fluxo volta para 
as linhas que montam o menu para que o usuário informe novamente uma das opções 
de menu. Caso ele informar a opção 9 “Sair”, o fluxo do programa segue, ignorando as 
linhas de instruções que solicitam os dois números para serem calculados, chegando 
novamente na expressão do comando “enquanto”, que retorna resultado falso, seguindo 
a execução para o final do programa.
FIGURA 3 – TELA ILUSTRANDO EXECUÇÃO DO PROGRAMA DA TABELA 2
FONTE: O autor
13
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
ALGORITMO
3.3. FUNÇÕES
As funções também são sub-rotinas, mas com a diferença que estas retornam 
um valor de resposta, isto é, a rotina que realizar a chamada de uma função receberá 
um valor de retorno desta, caso precise utilizá-lo. Além disso, funções, assim como 
procedimentos, possuem início e fim bem definidos e também podem operar com 
passagem de parâmetros. Neste sentido, uma função pode ser descrita como um 
módulo que possui o objetivo de realizar alguma ação e retornar um valor (resposta) 
ao algoritmo, procedimento ou função que a chamou.
Assim como nos procedimentos, ao ser chamada uma função por outra rotina, 
o fluxo do programa é desviado para a função, aguardando seu retorno. Assim que 
a função executa suas instruções, ela retorna a resposta para quem a chamou, e o 
fluxo prossegue na primeira linha após a chamada da função. Neste caso, idêntico ao 
funcionamento do procedimento.
Observe o fluxograma a seguir, o qual possui o termo “nomeFuncao”, que é a 
definição do nome da função, e é este que as demais rotinas que forem chamar a função 
atual vão utilizar. Note também os termos “par1” e “par2”, que estão entre parênteses, 
que são os parâmetros. Lembrando que parâmetros não são obrigatórios nas funções, 
assim como nos procedimentos. Agora observe o último passo de nosso fluxograma, 
o qual está em um retângulo, que significa um processo sendo executado, que neste 
caso é o retorno da resposta da função para a rotina que a chamou, que neste caso está 
declarada como “valorRetorno”, que poderia ser uma variável que recebeu um cálculo 
e está sendo retornada.
14 ALGORITMO
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
FIGURA 4 – FLUXOGRAMA QUE DEMONSTRA O RETORNO DE UMA 
FUNÇÃO
FONTE: O autor
Funções possuem a mesma funcionalidade em todas as linguagens de 
programação, mas o que muda é a sintaxe de uma linguagem para outra. Em Delphi, 
por exemplo, a função é declarada por “function calcula:Integer”, e em Java é “public 
tipoDeDado” ou “private tipoDeDado” sendo “tipoDedado” o tipo de dado de retorno.
Analise abaixo a sintaxe básica para a criação de uma função. Ela serve como 
base para qualquer linguagem de programação, pode haver alguma pequena diferença.
TABELA 4 – SINTAXE BÁSICA DE UMA FUNÇÃO
 função soma (x,y: real): real
 inicio
 retorne x + y
 fimfuncao
FONTE: O autor
Agora que você entendeu o que é uma função, e como criá-la, que tal 
desenvolvermos uma função em pseudocódigo para praticarmos? Você pode copiar no 
VisualG para realizar modificações para aperfeiçoar seus conhecimentos.
15
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
ALGORITMO
TABELA 5 – EXEMPLO DE PROGRAMA MODULARIZADO (COM FUNÇÃO)
Algoritmo "funcaoCalculadoraSoma"
Var
 primeiro, segundo, resposta: real
 funcao soma (x,y: real): real
 inicio
 retorne x + y
 fimfuncao
Início
 Escreval ("Informe o primeiro número: ")
 Leia (primeiro)
 Escreval ("Informe o segundo número: ")
 Leia (segundo)
 resposta <- soma(primeiro, segundo)
 Escreval ("Total: ", resposta)
 
Fimalgoritmo
FONTE: O autor
Analise o código-fonte acima e note como a função é criada abaixo da declaração 
de variáveis do programa principal. Assim como procedimentos, uma função pode ser 
chamada de ponto do programa, inclusive de um procedimento ou de outra função. O 
programa acima é bem simples, escrito para entendimento de uma função. Lembrando 
também que função não precisa possuir parâmetro. 
Agora vamos fazer uma pequena alteração no programa anterior, removendo 
os parâmetros da função. Neste caso, temos que realizar mais alguns ajustes para que 
o programa continue funcionando da mesma forma.
16 ALGORITMO
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
TABELA 6 – EXEMPLO DE PROGRAMA MODULARIZADO (COM FUNÇÃO SEM 
PARÂMETRO)
Algoritmo "funcaoCalculadoraSoma"
Var
 primeiro, segundo, resposta : real
 funcao soma: real
 inicio
 retorne primeiro + segundo
 fimfuncao
Início
 Escreval ("Informe o primeiro número: ")
 Leia (primeiro)
 Escreval ("Informe o segundo número: ")
 Leia (segundo)
 resposta <- soma
 Escreval ("Total: ", resposta)
 
Fimalgoritmo
FONTE: O autor
Observe no código-fonte acima que removemos os parâmetros da função “soma”, 
inclusive na sua chamada não passamos mais parâmetros. Porém, como temos as 
variáveis globais “primeiro” e “segundo”, dentro do programa, pudemos utilizá-las 
diretamente dentro da função. 
Após executado, no VisualG, o código acima ou também o anterior, cuja função 
possui parâmetros, temos o seguinte resultado.
17
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
ALGORITMO
FIGURA 5 – TELA DO PROGRAMA ANTERIOR SENDO EXECUTADO NO VISUALG
FONTE: O autor
Agora que você entendeu como funciona uma função em qualquer linguagem 
de programação, vamos apresentar um exemplo um pouco mais complexo, isto é, um 
programa que possui várias funções diferentes.
18 ALGORITMO
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
TABELA 7 – EXEMPLO DE PROGRAMA MODULARIZADO (COM FUNÇÃO)
Algoritmo "funcaoCalculadora"
Var
 opção : inteiro
 n, m: real
 função soma (x, y: real): real
 início
 retorne x + y
 fimfuncao
 funcao subtracao (x, y: real): real
 inicio
 retorne x - y
 fimfuncao
 funcao multiplicacao (x, y: real): real
 inicio
 retorne x * y
 fimfuncao
 funcao divisao (x, y: real): real
 inicio
 retorne x / y
 fimfuncao
 
Inicio
 opcao <- 0
 ENQUANTO (opcao = 0) ou (opcao <> 9) FACA
 Escreval (" ")
 Escreval ("*****MENU******")
 Escreval ("9 - Sair ")
 Escreval ("1- Soma ")
 Escreval ("2- Subtração ")
19
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
ALGORITMO
 Escreval ("3- Multiplicação ")
 Escreval ("4- Divisão ")
 Escreval ("Informe a opcao: ")
 Leia (opcao)
 se (opcao = 1) ou (opcao = 2) ou (opcao = 3) ou (opcao = 4) entao
 Escreval ("Informe o primeiro número ")
 Leia (n)
 Escreval ("Informe o segundo número ")
 Leia (m)
 fimse
 
 ESCOLHA opcao
 CASO 1
 Escreval ("Resultado da soma: ", soma(n, m))
 CASO 2
 Escreval ("Resultado da subtração: ", subtracao(n, m))
 CASO 3
 Escreval ("Resultado da multiplicação: ", multiplicacao(n, m))
 CASO 4
 Escreval ("Resultado da divisão: ", divisao(n, m))
 CASO 9
 Escreval ("*****Optou Sair******")
 OUTROCASO
 opcao <- 0
 Escreval ("Opção inválida---->INFORME NOVAMENTE")
 FIMESCOLHA
 FIMENQUANTO
Fimalgoritmo
FONTE: O autor
Analise agora o código-fonte acima. Você também pode copiá-lo para executar 
no interpretador VisualG, que funcionará perfeitamente. Note que após a declaração 
das variáveis do programa principal, criamos quatro funções diferentes, uma para cada 
operação matemática, isto é, uma para adição, outra para subtração, multiplicação e a 
última para divisão. Logo que o programa é executado, são executadas as linhas que 
montam o menu na tela, através do comando “Escreval”, o qual pode ser observado na 
Figura 6, a seguir. Se o usuário informar uma das opções para calcular, isto é, 1, 2, 3 ou 
20 ALGORITMO
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
4, significa que ele deseja realizar um dos cálculos. Neste sentido, serão apresentadas 
as solicitações para que ele informe dois números para serem calculados. Assim 
que o usuário informou o segundo número, o fluxo do programa entra no comando 
“ESCOLHA..CASO” ou “SWITCH..CASE”, onde será analisada a opção escolhida, 
e então executada a instrução. Se a opção escolhida for de calcular, será chamada a 
respectiva função, a qual efetua o cálculo e retorna a resposta, que é o resultado do 
mesmo. O retorno da função é impresso na tela. A seguir, o fluxo volta para as linhas que 
montam o menu para que o usuário informe novamente uma opção. Caso ele informar 
a opção 9 “Sair”, o fluxo do programa segue, ignorando as linhas de instruções que 
solicitam nos dois números para serem calculados, chegando novamente na expressão 
do comando “enquanto”, que retorna resultado falso, seguindo a execução para o final 
do programa.
FIGURA 6 – TELA DO PROGRAMA ANTERIOR SENDO EXECUTADO NO VISUALG
FONTE: O autor
21
Copyright © UNIASSELVI 2016. Todos os direitos reservados.
ALGORITMO
REFERÊNCIAS
JUNIOR, D. P. et al. Algoritmos e programação de computadores. Rio de Janeiro: 
Elsevier, 2012.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. Algoritmos: lógica para desenvolvimento 
de programação de computadores. São Paulo: Érica, 2014.
SOUZA, M. A. F. et al. Algoritmos e lógica de programação: um texto introdutório 
para a engenharia. São Paulo: Cengage Learning, 2015.
Centro Universitário Leonardo da Vinci
Rodovia BR 470, km 71, n° 1.040, Bairro Benedito
Caixa postal n° 191 - CEP: 89.130-000 - lndaial-SC
Home-page: www.uniasselvi.com.br

Mais conteúdos dessa disciplina