Professional Documents
Culture Documents
Laboratório 6 – Subalgoritmos
(Funções e Procedimentos)
*Material adaptado dos roteiros da disciplina de Lógica de Programação e Algoritmos
produzidos pelos autores: Nélio Alessandro Azevedo Cacho (neliocacho@ect.ufrn.br) e
Keivillany Janielle de Lima Coelho (keivycoelho@hotmail.com).
APRESENTAÇÃO
Em nossas aulas, até o momento, você conheceu as instruções
primitivas, estruturas de controle e, nas aulas mais recentes, conheceu as
estruturas de dados homogêneas, que são os vetores e as matrizes. Você sabe
que existem problemas com diversos graus de complexidade e, com todos os
conhecimentos que adquiriu até aqui, é certo que você já é capaz de construir
algoritmos que resolvam problemas de diversos tipos.
Nesta aula, você verá que, para reduzir a complexidade de um
algoritmo, é interessante sabermos utilizar o nosso raciocínio lógico para dividir
um problema grande em diversos problemas menores. Desta forma, a
complexidade é reduzida, favorecendo a compreensão.
E é nesse contexto que entram os subalgoritmos, que são trechos de
programas que podem ser utilizados dentro de um programa maior, sempre
que necessário ou conveniente.
Nesta aula, conheceremos os conceitos acerca de subalgoritmos,
classificando-os em funções e procedimentos. Vamos conhecer os conceitos,
sintaxe e aplicações das funções e procedimentos. Veremos como criá-los,
declará-los e em que parte do algoritmo eles devem ficar posicionados.
Aprenderemos, também, como fazer a chamada de funções dentro do
algoritmo principal e os conceitos de escopo de variáveis, definindo variáveis
globais e locais e a comunicação entre as funções e o algoritmo através dessas
variáveis.
SUBALGORITMOS
Com os conhecimentos que você adquiriu até hoje, você sabe que é
capaz de construir algoritmos que podem resolver problemas de diversos tipos.
Além da diversidade de tipos de problemas, nos algoritmos, poderemos
nos deparar com diversas situações diferentes dentro de um mesmo problema.
E quanto maior essa diversidade, podemos dizer que maior é a complexidade
do algoritmo.
Para reduzir essa complexidade é interessante utilizarmos a nossa
habilidade de raciocínio lógico para decompor os problemas grandes e
complexos em diversos problemas menores e mais simples.
Dessa forma, fica mais fácil manter o foco em cada „subproblema‟ por
vez, aumentando a compreensão.
Em algoritmos, essa decomposição é possível, quando utilizamos os
subalgoritmos.
ATIVIDADE 01
1. O que é um subalgoritmo? Quando é interessante utilizar subalgoritmos?
2. Quais as vantagens de se utilizar subalgoritmos?
ELEMENTOS DE UM SUBALGORITMO
Os elementos de um subalgoritmo são o corpo e o cabeçalho.
No corpo, são definidas as instruções, ou seja, as ações que o
subalgoritmo vai executar cada vez que for chamado dentro do algoritmo
principal.
No cabeçalho, definimos o nome, os parâmetros, as variáveis locais e o
tipo. Veja a descrição de cada um desses elementos, abaixo:
a) Nome – é o identificador pelo qual o subalgoritmo será chamado
no algoritmo principal.
b) Parâmetros – são os dados que permitem as relações entre o
subalgoritmo e o algoritmo. Ou seja, são os dados que o
subalgoritmo precisa receber para executar suas instruções e os
dados que ele retorna quando termina de executar. Por exemplo,
para realizar uma soma, os parâmetros recebidos são os números
que serão somados. Ao efetuar a soma, retornamos o resultado
dessa soma.
c) Variáveis locais – são as variáveis declaradas no subalgoritmo e
que só podem ser utilizadas dentro dele.
d) Tipo – os subalgoritmos podem ser de dois tipos: funções ou
procedimentos. A diferença entre ambos está no número de valores
que retornam ao final da execução. Uma função retorna sempre um
único valor. Um procedimento retorna vários valores ou nenhum.
ATIVIDADE 02
1. Quais os elementos de um subalgoritmo?
2. Quais os tipos de subalgoritmos? Qual a diferença entre os tipos?
3. Explique o que são variáveis locais. E parâmetros?
ESCOPO DE VARIÁVEIS
Uma variável local pode ter o mesmo nome de uma variável global.
Porém, uma vez declaradas em contextos diferentes, elas são distintas.
ATIVIDADE 03
1. O que você entende por „escopo de variáveis‟?
2. Defina variável global e variável local.
3. Uma variável local pode ter o mesmo nome de uma variável local?
Explique por que.
FUNÇÕES
As funções, em algoritmos, seguem o mesmo princípio das funções
matemáticas que aprendemos na escola. Quando dizemos que f(x)=x+1, temos
duas variáveis (x e f(x)) e, com base no valor de uma delas, encontramos o
valor da outra.
Você viu, há pouco, que um subalgoritmo tem, como elementos, dentre
outros, os parâmetros, que são os dados que ele recebe para poder executar
suas instruções (as variáveis globais). Dessa forma, em uma função soma,
teríamos como parâmetros os números a serem somados (no caso da função
matemática acima, o x, que é informado pelo usuário) e como valor de retorno
o resultado da soma entre os números (nesse mesmo caso, o f(x), que é a
variável local onde fica armazenado o valor de retorno).
<declaração da função>
Inicio
<corpo do algoritmo>
fimalgoritmo
Veja o algoritmo abaixo, que utiliza uma função que soma dois números:
inicio
leia (a)
leia (b) Corpo do algoritmo
principal
soma <- fsoma(a,b) //chamada da função
escreva ("soma: ", soma)
fimalgoritmo
ATIVIDADE 04
1. Determine o conceito de função.
2. Em que local do algoritmo a função deve ser definida?
3. Explique a sintaxe da criação de uma função.
4. De que forma é realizada a chamada de uma função?
5. Qual a utilidade do comando retorne?
6. Experimente remover a declaração da variável local resultado da função
que criamos em nosso exemplo e utilizar a variável global soma no
cálculo da expressão de soma e no retorno. Execute. O algoritmo
funcionou? Explique o motivo.
PROCEDIMENTOS
Um procedimento é um subalgoritmo, assim como a função. A principal
diferença entre ambos é a quantidade de valores retornados ao algoritmo que
os chama.
Um procedimento é um subalgoritmo que é chamado dentro do algoritmo
através da citação de seu nome (identificador) e deve retornar vários ou
nenhum valor.
Você viu, que uma função retorna um único valor, enquanto um
procedimento retorna vários ou nenhum. Existem, porém outras diferenças
importantes entre os dois:
Funções Procedimentos
Os procedimentos sempre retornarão
As funções retornam o seu valor de
seus valores por meio dos
forma explícita, por meio do comando
parâmetros. Não existe comando
retorne.
retorne.
Os procedimentos são chamados em
As chamadas às funções ocorrem comandos isolados, com as
sempre em expressões ou instruções instruções de entrada e saída de
de atribuição. dados (leia e escreva), e nunca em
expressões ou atribuições.
<declaração do procedimento>
Inicio
<corpo do algoritmo>
fimalgoritmo
A sintaxe da criação de um procedimento é a seguinte:
//cabeçalho, com o nome e os parâmetros
procedimento <identificador> (var <lista de parâmetros>:<tipo dos
parâmetros>)
//inicio da execução do procedimento
Inicio
<instruções>
fimprocedimento
inicio
escreval ("Digite o valor da base: ")
leia (base)
escreval ("Digite o valor da altura: ") Corpo do algoritmo
principal
leia (altura)
ptriangulo(altura,base, area) //chamada ao procedimento
escreval (area,"m²")
fimalgoritmo
ATIVIDADE 05
1. Explique, com suas palavras o que é um procedimento e quais as
diferenças entre procedimentos e funções, no que concerne às formas
de retorno e à chamada no algoritmo principal.