MODULARIZAÇÃO • 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 Function (Função) Definição: • As funções são muito parecida com as procedures, praticamente a mesma estrutura. • A principal diferença é que uma função pode retornar um valor para o programa principal. Function (Função) Forma Padrão: Function <nome_função> (parâmetros : tipo_parâmetros) : tipo_retorno; Var <nomes das variáveis locais>; Begin <Comandos a serem executados>; End; (opcional) Program Exemplo_6; Var x, y : Real; (* variáveis globais *) Função MEDIA Function MEDIA ( a , b : real ) : real; Var M : real; (* variável local *) Begin M := ( (a+b) / 2 ); Media := M; End; BEGIN x:=Media(8,12); y:=Media(7.0 , 5.0) - Media(5.5 , 4.5); Writeln( x ); Writeln( y ); END. EXEMPLO de Função Program Exemplo7; Var x, y : Real; Function Soma(a,b:real):real; Begin Soma:=a+b; End; BEGIN Write(‘Entre com valor de x --> '); Write('Entre com valor de y --> '); Writeln(Soma(x, y)); END. Readln(x); Readln(y); EXEMPLO de Função Program Exemplo8; Var m : Real; sx : char; nome : string[80]; Function Soma (m:real; sx: char; nome:string) : real; Begin Writeln(nome, sx); Soma:=m + 2.0; End; BEGIN Write(‘Entre com a media --> '); Write('Entre com Sexo ---------> '); Write('Entre com nome---------> '); Writeln( Soma(m, sx, nome) ); END. Readln(m); Readln(sx); Readln(nome); Função com passagem de Parâmetro Por valor Por referência Segue as mesmas regras vistas com procedures 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_Modulos; Function Entrada_Proces (w : integer) : integer; Var Sexo : char; contF, i :integer; Begin contF:=0; <As procedures e function devem ser criadas aqui nesse ponto> for i:=1 to w do begin BEGIN write(‘Sexo’); readln(sexo); n:= Quantidade; if sexo = ‘F’ then Fem:=Entrada_Proces(n); contF:=contF+1; Masc:= n - Fem; end; Saida(Fem, Masc) Entrada_Proces := Cont_F; Writeln (‘ *****Fim de Programa******’); END. end; Var n, Fem, Masc : integer; Function Quantidade : integer; Var q : integer; Begin Write(‘Número de pessoas’); readln(q); Quantidade:= q; End; Procedure Saida (F, M : integer); Begin Writeln(‘Número de femininos = ’ , F ); Writeln(‘Número de masculinos = ’ , M ); End;