subprogramas : procedimentos ( procedures ) em pascal

Post on 15-Jan-2016

24 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Subprogramas : 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. - PowerPoint PPT Presentation

TRANSCRIPT

Subprogramas :

Procedimentos (procedures) em

PascalProf. Luis Otavio Alvares

Funções/procedimentosFunções/procedimentos

• FunçõesFunções• devolvem 1 valor• o valor calculado é usado diretamente pelo programa

• ProcedimentosProcedimentos• podem devolver zero, um ou mais valores• valores são passados como parâmetros

Procedures sem parâmetrosExemplo

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)

ExemploProgram 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.

6 Procedures - PascalProcedures - Pascal DeclaraçãoDeclaraçãoProcedure <identificador> [( <lista de parâmetros formais> ) ] ;[ <declaração de variáveis locais>; ]begin < comandos separados por ‘;’ >end;

Lista de parâmetros formaisLista de parâmetros formais [ var ] < lista de identificadores > : <tipo>; ...

Procedure Teste ( A, B: integer; var C: real );begin C := A / B;end;

Ex:Ex:

opcionais

Indica passagem de parâmetro por referência- opcional

Exemplo com dois parâmetros de saída

• Fazer uma procedure que receba como parâmetro o nome de um vetor e forneça como saída o maior elemento do vetor e a sua posição.

program exemploProcedure;type tipoVetor = array[1..10] of integer;procedure maiorElemento(V:tipoVetor; var maior,posicao:integer); var I:integer; begin maior:=V[1]; posicao:= 1; for I:= 1 to 10 do if V[I] > maior then begin maior:=V[I]; posicao:=I; end; end;var vet:tipoVetor; I,M,P:integer;begin writeln('informe os 10 valores do vetor: '); for I:=1 to 10 do readln(vet[I]); maiorElemento(vet,M,P); writeln('o maior elemento do vetor eh: ',M,' na posicao ',P); readln;end.

9

Relembrando...

10

var X : integer; Procedure Muda; begin X := 1 end; { Muda }begin {programa principal }X := 0;Muda;write ( X );end.

Procedure Muda; var X : integer; begin X := 1 end; { Muda }

var X : integer; {programa principal }beginX := 0;Muda;write ( X );end.

Procedure Muda (X : integer); begin X := 1 end; { Muda }

var X : integer; {programa principal }beginX := 0;Muda (X);write ( X );end.

Procedure Muda (var X: integer); begin X := 1 end; { Muda }

ar X : integer; {programa principal }beginX := 0;Muda (X);write ( X );end.

Variável globalMuda valor da variável

Variável localNão muda valor da variável do progr. principal

Parâmetro por valorNão muda valor da variável do progr. principal

Parâmetro por referênciaMuda valor da variável do progr. principal

Exercício

• Faça uma procedure que receba como parâmetro de entrada uma matriz 5x5 e forneça como saída o maior e o menor elemento da matriz.

program procedureMatriz;type tipoMatriz = array[1..5,1..5] of integer;procedure maiorMenor(M:tipoMatriz; var maior,menor:integer); var I,K:integer; begin maior:=M[1,1]; menor:=M[1,1]; for I:= 1 to 5 do for K:=1 to 5 do begin if M[I,K] > maior then maior:=M[I,K]; if M[I,K] < menor then menor:=M[I,K]; end; end;var Mat:tipoMatriz; L,C,M,Menor:integer;begin for L:= 1 to 5 do begin writeln('informe os valores da linha ',L); for C:=1 to 5 do readln(Mat[L,C]); end; maiorMenor(Mat,M,Menor); writeln('o maior elemento da matriz eh: ',M); writeln('o menor elemento da matriz eh: ',Menor); readln;end.

Units

• Units em Pascal são bibliotecas de funções e procedures. Algumas já vem com o compilador, como a unit CRT, que tem funções para a saída em vídeo.

• As funções e procedures definidas pelo usuário podem ser salvas em uma unit e desta forma utilizadas em qualquer programa.

Exemplo de definição de unitunit minhaUnit;

interfaceFunction Fat(X:integer): real;function Pot(base:real;exp:integer):real;

implementationFunction 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.

top related