Baixe o app para aproveitar ainda mais
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
Compartilhar