Escolar Documentos
Profissional Documentos
Cultura Documentos
Procedimentos
(procedures) em Pascal
Prof. Luis Otavio Alvares
Funções/procedimentos
• Funções
• devolvem 1 valor
• o valor calculado é usado diretamente pelo programa
• Procedimentos
• podem devolver zero, um ou mais valores
• valores são passados como parâmetros
Procedures sem parâmetros
Exemplo
Program teste;
Procedure asteriscos;
Var I:integer;
Begin
writeln;
for I:=1 to 80 do write(’*’);
Writeln;
End;
{programa principal}
...
Asteriscos; {chamada da procedure}
...
Asteriscos; {chamada da procedure}
...
Procedures com parâmetros
• Há duas formas de passagem de parâmetros nas procedures
em Pascal:
• Por valor e por referência
• Na passagem por valor, como o próprio nome indica,
somente o valor é passado (é usado para os parâmetros de
entrada da procedure). Análogo aos parâmetros de funções.
• Na passagem por referência, o valor do parâmetro pode ser
alterado e vai ser percebido pelo programa que chamou a
procedure (é usado para os parâmetros de saída da
procedure)
Exemplo
Program ExcomFatorial;
Procedure Fat(A:integer ; Var X:real);
Var I: integer;
begin
X:= 1;
for I:=1 to A do
X:= X * I;
end;
{programa principal}
var Valor : integer;
f : real;
begin
write('digite um numero inteiro: ');
readln(Valor);
If ( Valor >= 1 )
then begin
Fat(Valor, f);
writeln('Fatorial de ',Valor,' = ',f:5:0);
end;
readln;
end.
Procedures - Pascal 6
Declaração
Procedure <identificador> [( <lista de parâmetros formais> ) ] ;
[ <declaração de variáveis locais>; ]
begin
< comandos separados por ‘;’ >
end;
Relembrando...
Procedure Muda; Procedure Muda (X : integer);
10
var X : integer; begin
begin X := 1
X := 1 end; { Muda }
end; { Muda }
var X : integer; {programa principal }
var X : integer; {programa principal } begin
begin X := 0; Parâmetro por valor
X := 0; Variável local Muda (X); Não muda valor da variável
Muda; Não muda valor da write ( X ); do progr. principal
write ( X ); variável do progr. end.
end. principal
interface
Function Fat(X:integer): real;
function Pot(base:real;exp:integer):real;
implementation
Function Fat(X:integer): real;
var I:integer;
begin
fat:=1;
for I:= 1 to X do Fat:=Fat*I;
End;
function Pot(base:real;exp:integer):real;
var I:integer;
begin
Pot:=1;
for I:=1 to exp do
Pot:=Pot*base;
end;
end.
Exemplo de uso de unit
{calcula o cosseno de um angulo do 1. quadrante dado em radianos}
uses minhaUnit; {é uma declaração}
function cos1quad(A:real):real;
var
I,sinal:integer;
cos:real;
begin
cos:=1;
sinal:=-1;
I:=2;
while I<= 60 {30 termos da serie}
do begin
cos:=cos+sinal*(Pot(A,I)/fat(I));
sinal:=sinal*-1;
I:=I+2;
end;
cos1quad:=cos;
end;
{--- programa principal ---}
var angulo: real;
begin
write(‘informe o angulo do 1. quadrante em radianos’);
readln(angulo);
writeln('o cosseno de ',angulo,' eh aproximadamente ',
cos1quad(angulo):1:6);
readln;
end.