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;
Download

05_Modularizacao_2Funcoes