Buscar

01 Conceitos Fundamentais - Subprogramas

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 3 páginas

Prévia do material em texto

1 
LINGUAGEM E TÉCNICA DE PROGRAMAÇÃO I 
 
Profa. Gisele Busichia Baioco 
gisele@ft.unicamp.br 
 
 
Modularização de Programas 
 
Conceitos Fundamentais 
1 Introdução 
No final da década de 60, um conjunto de problemas no desenvolvimento de 
programas levou a chamada “crise do software”. 
Os custos com as atividades de programação mostravam a cada ano uma clara 
tendência a se elevarem muito em relação aos custos dos equipamentos. Essa tendência era 
devida, em grande parte, ao rápido avanço tecnológico na fabricação dos equipamentos de 
computação, em contrapartida com a lenta evolução das técnicas aplicadas ao 
desenvolvimento de programas. 
A ausência de uma metodologia para a construção de programas conduz a um software 
geralmente com erros e com alto custo de desenvolvimento que, conseqüentemente, exige um 
custo elevado para sua correção e manutenção futuras. 
A programação estruturada é hoje o resultado de um uma série de estudos e propostas 
de disciplinas e metodologias para o desenvolvimento de programas. Conceitos associados 
como técnicas de refinamentos sucessivos e modularização de programas integram o 
ferramental para a elaboração de programas visando, principalmente, os aspectos de 
confiabilidade, legibilidade, manutenibilidade e flexibilidade. 
2 Decomposição de Problemas Computacionais 
A decomposição de um problema é fator determinante para a redução da 
complexidade. Nesse caso, complexidade é sinônimo de variedade, ou seja, a quantidade de 
situações diferentes que um problema pode apresentar. Assim, quando um problema é 
decomposto em subproblemas, divide-se a complexidade e, por conseqüência, simplifica-se a 
resolução. Outra vantagem da decomposição é permitir focalizar a atenção em um problema 
pequeno de cada vez, o que no final produzirá uma melhor compreensão do todo. 
É conveniente que se adote critérios para orientar o processo de decomposição de um 
problema: 
• Dividir o problema em suas partes principais; 
• Analisar a divisão obtida para garantir coerência; 
• Se alguma parte ainda permanecer complexa, decompô-la também; 
• Analisar o resultado final para garantir entendimento e coerência. 
Após a decomposição de um problema complexo em subproblemas, pode-se construir 
um subalgoritmo ou módulo para cada subproblema. 
3 Modularização – Módulos de Programas 
A modularização de programas consiste em decompor um programa em módulos 
correspondentes aos subproblemas determinados pela decomposição de problemas. 
 2 
Um módulo é um grupo de comandos, constituindo um trecho de algoritmo, com uma 
função bem definida e o mais independente possível em relação ao restante do algoritmo. 
Uma descrição estrutural de modularização de programas pode ser feita por meio do 
diagrama hierárquico seguinte: 
 Módulo 
Principal 
Submódulo 1 . . . Submódulo N 
 
 
A maneira mais intuitiva de proceder a modularização de programas é definindo-se um 
módulo principal de controle e módulos específicos para as funções do algoritmo. No 
diagrama anterior, o módulo principal tem a função de receber os dados, escrever os 
resultados e exercer o controle da execução das funcionalidades do algoritmo. A 
implementação das funcionalidades propriamente ditas é delegada aos módulos específicos. 
As linguagens de programação atuais dispõem de recursos que facilitam a construção e 
manipulação de módulos. Estes recursos permitem não só a modularização dos comandos dos 
programas, como também a modularização dos dados utilizados. 
 Assim, surgem os conceitos de objetos globais e locais a um módulo, os quais podem 
ser variáveis, arquivos, outros módulos, etc: 
• Objetos globais são entidades que podem ser usadas em módulos internos a outro 
módulo do algoritmo onde foram declaradas; 
• Objetos locais são entidades que só podem ser usadas no módulo do algoritmo 
onde foram declaradas. Esses objetos não possuem qualquer significado fora deste 
módulo. 
Um módulo pode usar objetos globais em relação a ele. Porém, não pode usar objetos 
declarados em módulos que não o abrangem. A comunicação entre módulos deve ser feita 
utilizando-se objetos globais ou transferência de parâmetros. 
A utilização de modularização traz benefícios como: 
• A independência do módulo permite uma manutenção mais simples e evita efeitos 
colaterais em outros pontos do algoritmo; 
• A elaboração do módulo pode ser feita independentemente e em época diferente do 
restante do algoritmo; 
• Testes e correções dos módulos podem ser feitos em separado; 
• Um módulo independente pode ser utilizado em outros algoritmos que requeiram o 
mesmo processamento. 
4 Subprogramas (ou Subrotinas) 
Um recurso muito utilizado para se implementar a modularização de programas é o uso de 
subprogramas (ou subrotinas). Basicamente, os subprogramas têm três objetivos: 
• evitar que uma certa seqüência de comandos necessária em vários locais de um 
algoritmo tenha que ser escrita repetidamente nestes locais; 
• dividir e estruturar um algoritmo em partes fechadas e logicamente coerentes – 
modularização de programas; 
• aumentar a legibilidade de um algoritmo. 
 3 
Subprogramas são módulos hierarquicamente subordinados a um algoritmo, 
comumente chamado de módulo principal. Da mesma maneira, um subprograma pode conter 
outros subprogramas aninhados, como esquematizado no diagrama a seguir: 
 
 MP 
S4 S3 S2 S1 
S1.1
3 
S1.2 S4.1 S4.2 
 
 
Tendo em vista os conceitos de objeto local e global, o subprograma S1.2 declarado 
dentro do subprograma1, é conhecido apenas em S1. Entretanto, o subprograma S2, declarado 
no módulo principal, é conhecido em todo o algoritmo e pode ser ativado dentro de S1. 
 Os subprogramas são criados por declarações em um algoritmo. Para serem 
executados, necessitam de ativação provocada por um comando de chamada. Essas 
declarações são constituídas por um cabeçalho e por um corpo. O corpo contém declarações 
locais e os comandos do subprograma. A ativação de um subprograma é feita por meio das 
informações que fazem parte do cabeçalho, ou seja, o seu nome e a indicação dos parâmetros 
formais. 
Quando ativado, um subprograma pode ou não retornar um valor. Quando existe o 
retorno de valor, o subprograma é classificado como função; quando não retorna valor, o 
subprograma é classificado como procedimento.

Continue navegando