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