subprogramas : procedimentos ( procedures ) em pascal

15
Subprogramas : Procedimentos (procedures) em Pascal Prof. Luis Otavio Alvares

Upload: yasuo

Post on 15-Jan-2016

24 views

Category:

Documents


0 download

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

Page 1: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

Subprogramas :

Procedimentos (procedures) em

PascalProf. Luis Otavio Alvares

Page 2: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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

Page 3: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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

Page 4: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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)

Page 5: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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.

Page 6: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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

Page 7: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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.

Page 8: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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.

Page 9: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

9

Relembrando...

Page 10: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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

Page 11: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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.

Page 12: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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.

Page 13: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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.

Page 14: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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.

Page 15: Subprogramas  : Procedimentos  ( procedures )  em  Pascal

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.