Buscar

Algoritmos de Programação CAP 8

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

- -1
ALGORITMOS DE PROGRAMAÇÃO
CAPÍTULO 8 – FUNÇÕES E PROCEDIMENTOS
Michel Cesar dos Santos
- -2
Objetivos do capítulo
Ao final deste capítulo, você será capaz de:
• Elaborar algoritmos modularizados utilizando procedimentos e funções com passagem de parâmetros (por 
valor e por referência).
Tópicos de estudo
• Conceito de modularização.
• Módulos.
• Declaração de Módulos: tipo, procedimento e função.
• Manipulação dos Módulos.
• Escopo de variáveis na modularização.
• Escopo estático, blocos, global, dinâmico.
• Exemplos dirigidos.
• Passagem de parâmetros (funções e procedimentos).
• Tipos de parâmetros.
• Passagem por valor e por referência.
• Funções e procedimentos com parâmetros.
Contextualizando o cenário
Pense em uma situação na qual uma empresa possui uma equipe de desenvolvedores em número elevado e cada
um esteja atuando em uma parte do desenvolvido. Podemos afirmar que cada pessoa trabalha com asoftware
modularização do software. Assim, cada um está atuando em uma rotina que, posteriormente, unir-se-á para dar
forma a uma solução maior.
Quando visualizamos um a ser desenvolvido, o qual apresenta uma grande complexidade, sabemos que ésoftware
possível dividi-lo para que seja trabalhado em cada funcionalidade que compõe o todo. Dessa forma, também
atuaremos com modularidade.
Ao verificarmos as regras e abordagens para o trabalho com os módulos, ficará evidente as vantagens de se
trabalhar desse modo. No desenvolvimento de , devemos sempre buscar a simplicidade na escrita esoftware
definição de um algoritmo. Para criarmos um algoritmo dessa forma, a pergunta que sempre devemos ter em
mente é: Como conseguir atingir um alto grau de simplicidade no código?
8.1 Conceito de modularização
Ao dividirmos um problema maior em problemas menores, fazendo com que a solução total, que pode ter um grau
elevado de complexidade, seja dividida em algoritmos menores, estaremos utilizando a modularização.
Cada módulo de um programa principal será um subprograma que, ao ser chamado, poderá ou não retornar valor,
e seu conjunto constituirá a funcionalidade total. Em outras palavras, somando cada uma das funcionalidades das
sub-rotinas, temos a solução principal.
A seguir, aprenderemos sobre a modularização dos códigos de programação através das estruturas de blocos de
programas do tipo funções e procedimento. Acompanhe!
•
•
•
•
•
•
•
•
•
•
•
•
- -3
8.1.1 Módulos
Quando falamos na utilização de módulos, estamos nos referindo à redução da complexidade, que é, também, a
redução da variedade. Ou seja, ao modularizarmos, diminuímos a quantidade de cenários e variáveis possíveis. A
fim de fazermos essa decomposição, utilizamos algumas técnicas, como os refinamentos sucessivos.
A técnica de caracteriza-se por nos auxiliar durante o processo de decomposição. Pararefinamentos sucessivos
essa decomposição ocorrer, devemos seguir determinados passos em sequência. Segundo Forbellone e
Eberspächer (2005, p. 127), os passos são os seguintes. Clique nos ícones e confira.
• 
Dividir o problema em partes principais.
• 
Analisar a divisão obtida para garantir coerência.
• 
Se alguma parte ainda permanecer complexa, decompô-la.
• 
Analisar o resultado para garantir entendimento e coerência.
A saber, é uma técnica de programação que utiliza métodos de cima para baixo, ou da rotina pai para top-down
sub-rotinas filhas, conforme ilustra a figura abaixo. O conceito mais amplo é expandido, formando uma
representação gráfica como um organograma.
•
•
•
•
- -4
Exemplo de decomposição top-down
A representação acima ilustra um exemplo de decomposição de um programa em suas sub-rotinas.top-down
A utilização de módulos permite que um programa tenha uma , a qual pode ser chamada várias vezessub-rotina
pelo programa principal. A manutenção dos códigos em programas com sub-rotinas se tornam mais eficientes em
termos de reutilização de código, localização do erro e redução do número de manutenções.
Além disso, utilizados na programação, os módulos facilitam os testes, pois apenas aquela rotina pode ser testada,
diminuindo, com isso, o número de cenários a serem testados.
Assim, a manutenção é mais direcionada, pois, caso houver alguma alteração dentro do módulo, diminuem as
chances do todo ser afetado.
Fonte: © aurielaki / / Shutterstock.
Na imagem acima você observa cada membro de uma equipe contribuindo para a solução completa.
Existem, portanto, vários benefícios na programação por módulos. A possibilidade da atuação de inúmeros
membros, conforme mostra a imagem acima, agiliza o como um todo.software
- -5
8.1.2 Declaração de Módulos: tipo, procedimento e função
Nos algoritmos elaborados diariamente, ocorre ampla utilização dos módulos tanto em procedimentos quanto por
meio de funções. Clique na interação e inicie conhecendo a respeito do tipo e procedimento.
Tipo
Quanto ao tipo, um módulo pode ser classificado como sendo ou .procedimento função
Apesar de existirem algumas diferenças entre os dois tipos, o conceito é o mesmo.
Procedimento
Para Forbellone e Eberspächer (2005), o procedimento, ou módulo, é um algoritmo em
instância menor, ou seja, um pequeno conjunto solução, praticamente independente, o qual
pode ser testado independentemente, em momentos distintos, permitindo focalizar a atenção
em um problema de cada vez. É um bloco de programa, escrito exatamente da mesma forma
que um programa.
É delimitado por e , bem como definido por um nome que é chamado de um ou outrainício fim programa principal
sub-rotina. A sua principal característica é que o procedimento é uma rotina onde .não se retorna valor
Observe a forma a seguir em português estruturado, dentro de uma representação de bloco.
Vejamos um exemplo em de um programa principal chamando um que realiza a médiaPortugol procedimento
aritmética.
Observe que o procedimento não realiza a passagem de parâmetros de retorno. A execução é realizada
internamente no procedimento e, em seguida, o fluxo de execução é retornado para o bloco principal do programa.
- -6
Agora chegou o momento de conhecer a respeito da função.
Função
Segundo Manzano (2009), função é um bloco de programa, assim como são os módulos ou procedimentos (sub-
rotinas). A diferença entre procedimento e função está no fato de que uma função possui como característica
operacional a capacidade de sempre retornar um conteúdo como resposta, como veremos na sequência.
A função é um bloco de programa delimitado por e , assim como o procedimento. No entanto, é umainício fim
rotina que tem como característica . Por exemplo, se seu programa chama uma rotina que executaretornar valor
uma operação matemática e, em seguida, o resultado dessa operação retorna para o programa que a chamou,
então essa rotina é uma função. Desse modo, é preciso informar qual o tipo do valor a ser retornado, se este é
inteiro, , booleano e assim por diante.string
Abaixo, verificamos a representação da função dentro de um bloco.
Vejamos, agora, um exemplo em de um programa principal chamando uma que realiza a médiaPortugol função
aritmética:
Observe, no algoritmo acima, que a função chamada retorna o valor da média para o bloco principal do programa
através do comando “retorna(soma)”, e o algoritmo atribui o valor à variável resultado. Ademais, as variáveis
valor1 e valor2 foram declaradas inicialmente com escopo global, ou seja, a função consegueCalcula_média 
realizar o cálculo da média com os valores entrados pelo usuário através das variáveis valor1 e valor2.
Aprendemos, até aqui, os tipos de módulos e suas representações. No próximo subtema, abordaremos como esses
módulos podem ser manipulados dentro de um fluxo de um algoritmo.
- -7
8.1.3 Manipulação dos Módulos
A ativação do módulo ocorre quando o algoritmo tem uma referência a essa sub-rotina. Essa referência se dá
através do nome.
Cada vez que uma sub-rotina é chamada, o fluxo é direcionado para essa sub-rotina, retornando, após sua
execução, à primeira linha de instrução do programa que a chamou.
A representaçãoa seguir mostra a chamada de uma sub-rotina e o fluxo retornando à linha imediatamente
seguinte.
Representação de uma chamada de módulo, mostrando o fluxo do algoritmo
Fonte: FORBELLONE; EBERSPÄCHER, 2005, p. 133.
Como vimos, os módulos são criados para dividirmos uma solução maior em soluções menores. Dessa forma,
aumentando a granularidade, a imagem abaixo representa chamadas de funções que compõem a solução como
um todo.
- -8
Fonte: © OpturaDesign / / Shutterstock.
Na imagem acima você percebe um nível de detalhamento em que cada rotina mostra uma finalidade.
Observe o exemplo de uma ativação do procedimento XYZ declarado anteriormente.
A manipulação de uma função através da sua ativação possui um alto grau de importância. É possível observar que
a sequência do fluxo de um programa segue para a função quando o programa ativador chama a função. Após a
execução da função, o fluxo do programa retorna à linha imediatamente a seguir, para o bloco chamador.
8.2 Escopo de variáveis na modularização
Uma variável em um algoritmo é um espaço de memória designado para armazenar determinado conteúdo. Além
disso, pode ser manipulada ao longo do tempo de funcionamento do programa e ter o seu valor alterado.
Segundo Manzano (2009, p. 24) “Todo dado a ser armazenado na memória de um computador deve ser
previamente identificado, ou seja, primeiro é necessário saber qual seu tipo para depois fazer o armazenamento
adequado”.
Quando falamos em modularização e seu escopo de variáveis, estamos verificando como as variáveis são
visualizadas entre dois blocos de algoritmos, principal e módulo, isto é, se uma variável é acessível de uma parte à
outra.
A imagem abaixo ilustra uma prateleira de um supermercado, representando, de maneira abstrata, variáveis no
escopo. Cada área da prateleira pode ser representada por uma variável, onde se armazena tipos de produtos.
- -9
Além disso, cada área é um pequeno escopo local, identificada por uma etiqueta com o nome do produto e seu
preço.
Mas imagine, agora, que o gerente do supermercado alterou a configuração de exposição dos produtos, ou seja, o
escopo de produtos que será utilizado. Digamos que todas as prateleiras da figura abaixo serão utilizadas por um
único tipo de produto (leite, por exemplo).
Fonte: © Gurza / / Shutterstock.
Desse modo, o escopo dessa variável se tornou muito maior, assim como a visão do cliente se torna quase única
para o produto leite. É o mesmo que ocorre em um programa de computador. Uma variável pode ter um maior
escopo, ou seja, pode tornar-se tão visível e utilizável dentro de um algoritmo quanto outras variáveis locais.
A seguir, definiremos as formas de escopo que podem ser utilizadas por uma variável dentro de um algoritmo.
8.2.1 Escopo estático, blocos, global, dinâmico
Necessitamos, muitas vezes, que uma variável seja visualizada em um nível do algoritmo principal e nas sub-
rotinas. Para isso, declaramos essa variável como sendo do tipo global.
Uma variável é considerada quando é declarada no início do programa e antes de um conjuntoglobal ou pública
de sub-rotinas. A variável sob esse escopo passa a ser visível a todas as sub-rotinas subordinadas à rotina
chamadora (MANZANO, 2009).
No entanto, precisamos, outras vezes, que uma variável seja visível no nível da sub-rotina, não tendo a necessidade
de ser acessada fora. A esse tipo, damos o nome de variável local. A variável é considerada de escopo local ou
 quando é declarada em uma sub-rotina e é somente válida dentro dela. As demais sub-rotinas não podemprivada
usar essas variáveis, pois não conseguem visualizar a existência delas (MANZANO, 2009).
Blocos
Podemos chamar cada rotina de bloco. Nesse contexto, o escopo de variáveis e sua visualização entre as sub-
rotinas pode ser visto de três maneiras.
• Monolíticos
É uma visualização única do escopo, sendo que o programa é desenvolvido em um único bloco (programa
principal). Não é vantajoso utilizar-se de blocos monolíticos, pois fogem da estrutura modular e também não é
adequada a sua utilização para programas maiores. O diagrama abaixo mostra um programa principal sem as sub-
rotinas.
•
- -10
• Aninhados
Visualização do escopo com rotinas, sub-rotinas, podendo ter sub-rotinas chamando outras sub-rotinas.
Os blocos aninhados possuem uma melhor visibilidade e leitura, sendo eficazes para manutenção, assim como
adequados para programas maiores, podendo dividir soluções maiores em rotinas menores. A representação
abaixo mostra essa relação entre blocos.
• Não Aninhados
Nos blocos do tipo não aninhados, existem sub-rotinas, porém estas não são aninhadas. O diagrama abaixo mostra
essa relação entre blocos.
•
•
- -11
Cada um dos blocos faz parte de uma solução maior. Na imagem abaixo, o agrupamento dos blocos resulta em um
programa mais complexo.
Fonte: © cybrain / / Shutterstock.
Escopo Global
- -12
Uma variável, no que se refere à necessidade de visibilidade dentro do programa (escopo), pode ser definida de
maneira ou . No escopo global, a declaração é realizada inicialmente no bloco principal e identificadaglobal local
por todo o programa e em todos os blocos de programas contidos no programa principal. Já em um escopo local, a
variável é declarada localmente em um bloco específico e não é utilizada para os demais blocos do programa.
Escopo Estático
Também chamado de , é caracterizado por variáveis que são definidas e possuem seu escopo determinadoLéxico
no momento da compilação.
Uma variável declarada no âmbito global é visualizada no código principal e sub-rotinas.
O quadro a seguir demonstra graficamente o escopo de uma variável, sendo A global e acessada pela sub-rotina, ao
passo que B é uma variável local, visível somente na sub-rotina. A representação gráfica a seguir deixa mais clara a
explicação.
Note que o fato de se declarar novamente A e atribuir o valor 2, não tem impacto na sub-rotina 2, pois, nesse caso,
a variável A é local para a sub-rotina 1. Quando a sub-rotina 2 executa o comando para imprimir A, a variável global
a essa sub-rotina é a variável com valor 3.
Escopo Dinâmico
O escopo dinâmico é a mudança de visibilidade (escopo) de uma variável dentro do programa. Isto ocorre quando
as variáveis utilizadas em vários locais do programa possuem um mesmo nome. O que prevalece é o último valor
armazenado. O escopo dinâmico trabalha como uma pilha de dados, em que a primeira variável vinculada será a
última a ser desvinculada.
O que determina esse tipo de escopo é a linha de execução do programa. Portanto, o escopo é definido em tempo
de execução e não em tempo de compilação.
- -13
Para melhor visualização, consideremos, por exemplo, uma variável declarada globalmente e em uma sub-rotina
chamada pelo programa principal. Essa variável é novamente declarada com o mesmo nome e atribuída um valor
(como se fosse outra variável). No caso de chamar uma segunda sub-rotina, o valor a ser usado será da Sub-rotina
1, ou seja, o valor 2 e não o valor 3. A representação gráfica abaixo deixa mais clara a explicação.
O entendimento do escopo, blocos e comportamento das variáveis é crucial ao desenvolvimento, pois sua não
observância pode fazer com que o programa tenha comportamentos inesperados ao tratar variáveis de forma
diferente da esperada.
8.2.2 Exemplos dirigidos
Como verificamos, os módulos possuem diversas situações de aplicação, nas quais o seu funcionamento pode
variar.
- -14
A seguir, apresentaremos exemplos utilizando os conceitos de , e módulos escopos de variáveis tipos de escopo.
Exemplo: Escopo Variável Global e Local com o mesmo nome.
Quando tratamos de escopo, verificamos que tratamos sobre variável e . Vejamos um exemploglobal local
direcionado a esse conceito.
Algumas linguagens não permitem que seja feita a declaração de variável de mesmo nome em uma sub-rotina
abaixo da principal, como no caso de var_a.
Análise do Algoritmo
PAUSA PARA REFLETIR
Vimos a importância da modularidade na programação, e como o trabalho pode ser simplificado
com a divisão das tarefasde uma equipe muito grande de desenvolvedores. Diante desse
contexto, seria possível trabalhar o conceito de visibilidade das variáveis por escopos com as
modularizações?
- -15
No algoritmo acima, a variável global “var_a”, no módulo principal, possui o valor 7; dentro da Rotina2, uma
variável de mesmo nome “var_a” é declarada e possui o valor 3 atribuído. Depois da execução, o algoritmo
imprime novamente a variável “var_a” e o valor 7 é exibido. Assim, são variáveis diferentes, embora tenham o
mesmo nome.
Exemplo: Bloco de Sub-rotinas Aninhadas
Análise do Algoritmo
No algoritmo acima, verificamos que as sub-rotinas estão aninhadas, ou seja, criadas uma dentro da outra. Assim, a
variável varlocalrotina1, que no algoritmo recebe o valor da variável global “varglobal”, criada na Rotina1, é visível
dentro da Rotina2.
Exemplo: Escopo Variável Global com Escopo Dinâmico
- -16
Análise do Algoritmo
No algoritmo acima, a variável “var_a” é global e declarada novamente dentro da Rotina 1, sendo atribuído o valor
3 para “var_a”.
Em um escopo estático, o fato de “var_a” ter sido declarada novamente na Rotina 2 e o valor ter sido definido, não
teria influência nas demais chamadas da “var_a”, pois essa variável seria local de Rotina 1. Entretanto, com o
escopo dinâmico, a variável “var_a” teria o valor na instrução para escrever o valor em Rotina2.
O definido acima ocorre, porque o fluxo do algoritmo passou por Rotina 1 e, em seguida, executou a Rotina 2.
O escopo dinâmico é criado em tempo de execução e não em tempo de compilação, sendo que o escopo dinâmico
utiliza uma pilha global de vínculos. Como uma pilha de pratos, o primeiro prato a entrar é o último a sair e, para
desempilhar os pratos (escopos), deve-se desvincular o último prato que entrou ou escopo desvinculado. Haverá
uma desvinculação na ordem FILO (First in - Last Off) ou seja, o primeiro a entrar é o último a sair. Observe que,
pelo escopo dinâmico, o valor de “var_a” inicia com 7; quando entra na rotina 1, o valor de “var_a” passa a ser 3;
quando entra na rotina 2, é impresso este valor (3).
Já em uma cadeia estática, os vínculos estão relacionados a um vínculo pai (bloco principal) e, depois, aos vínculos
locais. No escopo estático, se a variável com o mesmo nome é declarada como local, terá visibilidade apenas local
e não será alterada no escopo global, tornando uma programação mais confiável.
Os escopos dinâmicos e estáticos dependem do tipo de linguagem de programação. Linguagens do tipo C, Pascal,
ADA, Haskell, assim como quase todas as linguagens atuais, utilizam o escopo estático.
- -17
8.3 Passagem de parâmetros (funções e procedimentos)
A passagem de parâmetros é a forma que as linguagens de programação realizam a transferência de um ou mais
parâmetros entre métodos (em linguagens orientadas a objetos) ou entre sub-rotinas (linguagens estruturadas).
A passagem dos parâmetros é muito utilizada na programação. Quando os valores são passados por parâmetros, a
partir da função que o chamou, valores são transferidos sem a necessidade de uso em excesso de variáveis globais.
8.3.1 Tipos de parâmetros
Os parâmetros podem ser ou , conforme elencados a seguir.formais reais
Parâmetros formais
São os parâmetros declarados com o tipo formal. A declaração ocorre da mesma forma como ocorre a declaração
de uma variável, no entanto, dentro dos parênteses na declaração da sub-rotina, evidenciando que aquele será um
parâmetro utilizado. A esses parâmetros, damos o nome de parâmetros formais.
No exemplo abaixo, o destaque em negrito é o parâmetro formal.
Parâmetros reais
Quando ocorre a chamada de uma sub-rotina e a substituição do parâmetro formal pelo valor que desejamos
passar, chamamos de parâmetro real. Este pode ser uma variável ou um valor fixo.
No exemplo abaixo, o destaque em negrito é o parâmetro real.
Os parâmetros constituem uma parte importante das funções ou procedimentos, pois é através deles que ocorre a
comunicação de entrada para a sub-rotina.
- -18
8.3.2 Passagem por valor e por referência
Os parâmetros são peças fundamentais de uma função. Um parâmetro pode ser passado por valor ou por
referência. Veremos a seguir sobre cada um dos tipos de passagem.
Valor
Um parâmetro, quando repassado para uma sub-rotina, passa a ser uma variável local para essa sub-rotina.
Quando um parâmetro é repassado por valor, esse valor é uma cópia da variável repassada e, se o valor for
alterado dentro da sub-rotina, o valor alterado é o da cópia, não refletindo no valor original, pois é um parâmetro
de entrada.
A variável “a” terá o valor 2, mesmo o seu parâmetro formal (x) tendo sido alterado para o valor 4.
Referência
Um parâmetro passado por referência tem como característica a alteração do valor enviado. Se o valor repassado
for alterado dentro da sub-rotina, irá refletir na variável inicial, pois é um parâmetro de entrada e saída.
O parâmetro repassado por referência está precedido pela palavra .var
Exemplo:
- -19
A variável “a” terá o valor 4, pois o seu parâmetro formal (x) teve seu valor alterado para 4.
8.3.3 Funções e procedimentos com parâmetros
Quando declaramos uma função ou procedimento, podemos passar parâmetros para essas sub-rotinas. Como
verificamos, os parâmetros podem ser ou . Também compreendemos que estes podem ser passadosformais reais
por ou por . A seguir, veremos alguns exemplos de funções e procedimentos de uma forma valor referência
unificada.
Fonte: © BEST-BACKGROUNDS / / Shutterstock.
- -20
A imagem acima mostra um código de programa chamando uma função, o que representa o código desenvolvido
e, no meio da complexidade de inúmeras linhas de código, a chamada de funções objetiva dividir a complexidade.
Vejamos a seguir um exemplo de algoritmo que utiliza um procedimento por passagem de parâmetros formais e
que efetua as operações básicas (adição, subtração, divisão e multiplicação).
• Algoritmo Calculadora – Com procedimento•
- -21
Análise do Algoritmo
No exemplo acima, vemos um algoritmo com bloco de escopo aninhado, chamando o procedimento calculadora.
O algoritmo passa aos parâmetros fat1, fat2, e os que são do tipo inteiro (variáveis locais doformais
procedimento). Já os parâmetros fator1, fator2 e Operador, são variáveis globais denominados ,parâmetros reais
que são passados para o procedimento calculadora.
Ao receber a chamada, o procedimento calculadora identifica a operação parametrizada, atribui à variável o
resultado da operação aritmética correspondente e, em seguida, mostra o resultado na tela.
• Algoritmo Calculadora – Com Função
DICA
Apesar de algumas linguagens permitirem passagens diferentes, para evitar erros na execução,
observe que o valor repassado como parâmetro deve ser do mesmo tipo do valor a receber o
parâmetro. Avalie com cuidado!
•
- -22
- -23
Análise do algoritmo
No exemplo acima, vemos o mesmo algoritmo de calculadora, mas utilizando a função como sub-rotina e não mais
o procedimento. O algoritmo passa os parâmetros fat1 e fat2 por valores e o parâmetro op por referência,
identificado pela palavra-chave var. Dentro da função, o parâmetro passado por referência tem o seu valor
alterado para 75.
Temos um primeiro comando de escrita do valor op. Nesse momento, o valor da variável é o digitado pelo usuário
na operação desejada.
Então a função é chamada e o valor calculado é exibido com base no valor retornado.
No segundo momento, o algoritmo imprime a variável Operador com o valor 75. Como este parâmetro real
(variável “Operador”) foi passado como referência para a variável op, e esta foi alterada, a variável “Operador”
assumiu o valor de op.
Dessa forma, o algoritmo escreve o valor da variável Operador, que agora é 75.
Perceba que a variável é uma variável de escopo global e é visível na função, utilizando a variável normalmente.res
Verificamos até aqui alguns exemplos de algoritmos criados, com a respectiva análise para o acompanhamento e
entendimento.
DICA
Use sempre comentários para especificar, em seu código, o que está sendo feito,pois isso deixa
o algoritmo mais legível, facilita o entendimento e a manutenção do programa.
PAUSA PARA REFLETIR
Vimos que os procedimentos e as funções trabalham com as passagens de parâmetros. Como
esse conceito pode ajudar na ?simplificação da codificação
ESCLARECIMENTO
O desenvolvimento de algoritmos que utiliza a técnica , um método de ordenaçãoBubble Sort
por bolhas, chamada de , é uma das formas mais simples de ordenaçãoordenação por flutuação
(FOLADOR; PENA NETO; JORGE, 2014).
- -24
Proposta de atividade
Agora é a hora de recapitular tudo o que você aprendeu neste capítulo! Elabore um algoritmo em português
estruturado, destacando as principais ideias abordadas ao longo destes estudos. Ao produzir seu algoritmo,
considere as leituras básicas e complementares realizadas.
Escolha qual será a finalidade do e como este será estruturado, bem como identifique, dentro do software software
(podendo ser por comentários), cada um dos tópicos abordados neste capítulo.
Recapitulando
Aprendemos a respeito da modularização de , seus conceitos e como podemos diminuir a complexidadesoftware
de um com a utilização da técnica . Abordamos os procedimentos e funções, assim comosoftware top down
parâmetros e exemplos, que foram fortalecidos nos exercícios realizados.
Os objetivos do capítulo eram o desenvolvimento de algoritmo modularizado com procedimentos e funções,
passando parâmetros por valor ou por referência, os quais foram totalmente atingidos.
A pergunta norteadora que foi lançada no início deste capítulo pode ser retomada com a seguinte explicação: a
simplicidade no código é uma característica que sempre deve ser procurada, e constantemente irão aparecer
formas de deixar o código mais simples. Isso acarreta em muitos ganhos, seja para um técnico ou programador que
irá realizar a manutenção no código, seja para uma equipe de desenvolvimento que irá ampliar a codificação.
Vimos que existem maneiras de simplificar a escrita do algoritmo. Essa simplificação é realizada através dos
conceitos de modularização, que contribuem na simplificação do código e no dimensionamento da visibilidade das
variáveis (escopo).
Durante o capítulo, foram lançadas questões para refletir, as quais nos fazem pensar a respeito da importância da
modularização, os conceitos assimilados e seu uso.
A modularização é, sem dúvidas, uma característica de programação muito benéfica e, se aplicados os conceitos
aprendidos, pode-se melhorar muito a dinâmica de trabalho e desenvolvimento da equipe.
Referências
FOLADOR, J. P.; PENA NETO, L. N.; JORGE, D. C. Aplicativo para análise comparativa do comportamento de
algoritmos de ordenação. , Passo Fundo, v. 6, n. 2, p. 76-86, out. 2014.Revista Brasileira de Computação Aplicada
Disponível em: < >. Acesso em: 25/03/2019.http://seer.upf.br/index.php/rbca/article/view/3792/2935
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. a construção de algoritmos e estrutura deLógica de programação:
dados. 3. ed. São Paulo: Pearson Prentice Hall, 2005.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. lógica para desenvolvimento de programação de computadores.Algoritmos:
22. ed. São Paulo: Érica, 2009.
http://seer.upf.br/index.php/rbca/article/view/3792/2935
	Objetivos do capítulo
	Tópicos de estudo
	Contextualizando o cenário
	8.1 Conceito de modularização
	8.1.1 Módulos
	8.1.2 Declaração de Módulos: tipo, procedimento e função
	8.1.3 Manipulação dos Módulos
	8.2 Escopo de variáveis na modularização
	8.2.1 Escopo estático, blocos, global, dinâmico
	8.2.2 Exemplos dirigidos
	8.3 Passagem de parâmetros (funções e procedimentos)
	8.3.1 Tipos de parâmetros
	8.3.2 Passagem por valor e por referência
	8.3.3 Funções e procedimentos com parâmetros
	Proposta de atividade
	Recapitulando
	Referências

Continue navegando