MODULARIZAÇÃO Existem dois tipos de sub-programas –Procedures (procedimentos).Não retorna valores –Functions (funçöes). Retorna valores
Exemplo de MODULARIZAÇÃO Program ; Var Procedures begin ; end; Functions begin ; end; BEGIN ; END. Programa Principal Sub-programa 1 Sub-programa 2
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 (parâmetros : tipo_parâmetros) : tipo_retorno; Var ; (opcional) Begin ; End;
Program Exemplo_6; Var x, y : Real; (* variáveis globais *) 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. Função MEDIA
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 --> ');Readln(x); Write('Entre com valor de y --> ');Readln(y); Writeln(Soma(x, y)); END.
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 --> ');Readln(m); Write('Entre com Sexo > ');Readln(sx); Write('Entre com nome > ');Readln(nome); Writeln( Soma(m, sx, nome) ); END.
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; Var n, Fem, Masc : integer; <As procedures e function devem ser criadas aqui nesse ponto> BEGIN n:= Quantidade; Fem:=Entrada_Proces(n); Masc:= n - Fem; Saida(Fem, Masc) Writeln (‘ *****Fim de Programa******’); END. Function Quantidade : integer; Var q : integer; Begin Write(‘Número de pessoas’); readln(q); Quantidade:= q; End; Function Entrada_Proces (w : integer) : integer; Var Sexo : char; contF, i :integer; Begin contF:=0; for i:=1 to w do begin write(‘Sexo’); readln(sexo); if sexo = ‘F’ then contF:=contF+1; end; Entrada_Proces := Cont_F; end; Procedure Saida (F, M : integer); Begin Writeln(‘Número de femininos = ’, F ); Writeln(‘Número de masculinos = ’, M ); End;