Programação de Computadores Modularização Prof. Dr. Erivelton Geraldo Nepomuceno Depto. Engenharia Elétrica Sala 4.23 EL – Prédio do DEPEL http://www.ufsj.edu.br/nepomuceno [email protected] 1/17 UM PROBLEMA DECORRENTE DO AVANÇO DA COMPUTAÇÃO (60’) → DESENVOLVIMENTO DE SOFTWARE SEM METODOLOGIA → MUITOS ERROS, CONSTANTE RETRABALHO E MANUTENÇÃO COMPLEXA: SOFTWARE ONEROSOS METODOLOGIAS PARA DESENVOLVIMENTO DE SOFTWARE: PROGRAMAÇÃO ESTRUTURADA! 2/17 Programação estruturada ● Desenvolvimento do algoritmo por refinamentos sucessivos ● Sistematização de estruturas de dados ● Uso sistematizado de um número limitado de estruturas de controle ● Transformação de refinamentos sucessivos em módulos → modularização ○ Decomposição do algoritmo em módulos ○ Dominar a complexidade ○ Organizar o processo de programação 3/17 Módulo ● Grupo de comandos com função bem definida e independente ● Trecho do algoritmo ● Muito útil quando ○ Usado repetidamente ○ É independente EXEMPLO (PÁGINA 175) Elaborar um algoritmo para calcular o salário líquido de um empregado 4/17 MODULARIZAÇÃO DO EXEMPLO DA PÁG. 175 MÓDULO PRINCIPAL MÓDULO VANTAGENS MÓDULO DEDUÇÕES 5/17 Vantagens da modularização ● Manutenção mais simples sem efeitos colaterais no resto do código ● Independência na elaboração dos módulos ● Testes e correções dos módulos podem ser feitos separadamente ● Uniformidade no processo de desenvolvimento de software ● Reutilização do código (trabalho) ● Legibilidade do código ● Em síntese: ○ Maior qualidade ○ Maior eficiência 6/17 Objetos globais x locais ● Escopo de acesso às entidades (variáveis, arquivos, etc.) do algoritmo ● Módulos secundários “herdam” os objetos do módulo principal → o contrário não se dá MÓDULO PRINCIPAL MÓDULO VANTAGENS B C A MÓDULO DEDUÇÕES 7/17 Ferramentas para modularização ● Tipos ○ Sub-rotinas ■ Código modularizado ○ Funções ■ Código modularizado que retorna um valor ● Módulos hierarquicamente subordinados ao algoritmo ● Objetivos destes módulos: ○ Evitar repetição de seqüências de comandos ○ Dividir e estruturar o algoritmo ○ Aumentar a legibilidade 8/17 Múltiplos níveis de modularização MP S1 S3 S2 F3 F1 S4 F2 F4 9/17 MP S1 S2 F1 F2 S3 S3 F3 S4 F4 S3 S3 S3 10/17 Sintaxe da sub-rotina EXEMPLO Leia dado com uma pergunta ao usuário 11/17 EXEMPLO (PÁGINA 180) Dados 3 valores distintos, colocá-los em ordem REPETIÇÕES (MUDAM AS VARIÁVES) MODULARIZAÇÃO! 12/17 13/17 Passagem de dados ● ● ● ● Transferência de dados entre MP e módulos Vinculação dos módulos Depende da linguagem de programação Tipos nas linguagens de programação ○ Por valor ■ Parâmetros são do tipo “de entrada” ○ Por resultado ■ Parâmetros são do tipo “de saída” ○ Por referência ■ Parâmetros são do tipo “de entrada-saída” PORTUGOL 14/17 Função ● Sub-rotinas que retornam valores ● Relação com funções matemáticas ○ ABS(A) ○ RESTO(A, B) ○ QUOCIENTE(A, B) ○ LOG(A,B) ○ … ● É necessário declarar o tipo retornado 15/17 Sintaxe da Função 16/17 EXEMPLO (PÁGINA 184) Escrever um algoritmo que leia as medidas dos três lados A, B e C de um paralelepípedo, calcule e escreva o valor de sua diagonal Algoritmo Fim algoritmo 17/17