MODULARIZAÇÃO • Técnica utilizada e tida como vantajosa na confecção de programas. • Consiste em dividir o programa em diversos módulos ou sub-programas, de certa forma independentes uns dos outros. • Existe um módulo principal, a partir do qual é iniciado a chamada dos outros módulos. • Existem dois tipos de sub-programas – Procedures (procedimentos). Não retorna valores – Functions (funçöes). Retorna valores Exemplo de MODULARIZAÇÃO Program <nome_programa>; Var <declaração de variáveis> Procedures <nome_da_procedure> begin <comandos>; end; Functions <nome_da_funcao> begin <comandos>; end; Sub-programa 1 Sub-programa 2 BEGIN <comandos>; <chamada da Procedure declarada acima>; <comandos>; <chamada da Function declarada acima>; <comandos>; END. Programa Principal Exemplo Gráfico de uma (modularização) Programa aaaa; _____________________________ Procedure Primeiro; _____________________________ ____________________________ Function Segundo; _____________________________ _____________________ INICIO ______________ PRIMEIRO -------------SEGUNDO ________ FIM. Procedure Primeiro; ____________________ ________________ _____________ Function Segundo; _________________ _____________ Procedures (Procedimentos) Definição: • A procedure é como se fosse um programa. • Estrutura praticamente igual a de um programa. • A procedure deve ser ativada(chamada) pelo programa principal ou por uma outra Procedure, por ela mesma ou por uma função. • Não retorna valor. O ESCOPO DE OBJETOS NUM PROGRAMA Program Exemplo; Uses CRT; Var i,x,y : Integer; Procedure Linha; Function Fat(x:integer) : integer; BEGIN (*inicio do programa principal*) Comandos; END. Procedures (Procedimentos) Forma Padrão: Procedure <nome_do_procedimento> (parâmetros : tipo_do_parâmetro); Var <nomes das variáveis local>; Begin <Comandos a serem executados>; End; (opcional) Procedures sem passagem de PARÂMETRO Procedure LINHA Program Exemplo_1; Uses CRT; Procedure linha; Var i : integer; Begin for i:=1 to 80 do write('-'); End; BEGIN ClrScr; linha; (*CHAMANDO A PROCEDURE*) writeln('teste'); linha; END. Procedures com passagem de PARÂMETRO Procedure SOMA Program Exemplo_2; Var i, j : integer; Procedure soma(x, y : integer); Begin writeln(x+y); Parâmetros end; passados BEGIN ClrScr; soma(3 , 4); i:=45; j:=34; soma(i , j); END. Procedures com passagem de PARÂMETRO (por valor) Program Exemplo_3; Var i, j : integer; Procedure proc1(i, j : integer); Begin i:= 10; j:= 20; write(i , j); end; BEGIN ClrScr; i:=45; j:=34; proc1(i,j); write(i , j); END. Procedures com passagem de PARÂMETRO (por referência) Program Exemplo_4; Var i, j : integer; Procedure proc1(var i, j : integer); Begin i:= 10; j:= 20; write(i , j); end; BEGIN ClrScr; i:=45; j:=34; write(i , j); proc1(i , j); write(i , j); END. Procedures com passagem de PARÂMETROS DE DIFENTES TIPOS Program Exemplo_5; Procedure soma(x : real; y : string; z, w : integer); Begin writeln(x, y, z, w); end; BEGIN ClrScr; soma(3.7 , “jose” , 4, 9); END. Exemplo de um programa MODULARIZADO (em módulos) Exemplo Faça um programa em Pascal para Cadastrar o sexo de um número indeterminado de pessoas. Como resultado este programa deverá imprimir: o total de pessoas do sexo masculino e o total de pessoas do sexo feminino. Program Sem_Modulos; uses crt; Var Sexo : char; i, n, contM, contF : integer; begin contF:=0; write(‘Número de pessoas’); readln(n); for i:=1 to n do begin write(‘Sexo’); readln(sexo); if (sexo = ‘F’) then contF := contF + 1; end; ContM := n - contF Writeln(‘Número de femininos = ’ , ContF ); Writeln(‘Número de masculinos = ’ , ContM ); end. Program Em_Modulo; BEGIN write(‘Número de pessoas’); readln(n); Geral(n); Writeln(‘**Fim Programa**’); Var n : integer; Procedure Geral (w : integer); Var Sexo : char; i, contM, contF : integer; begin contF:=0; for i:=1 to w do begin write(‘Sexo’); readln(sexo); if (sexo = ‘F’) then contF:=contF+1; end; ContM := w – contF; Write(‘Número de feminino = ’ , ContF ); Write(‘Número de masculino = ’ , ContM ); End; END.