A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Subprogramas : Procedimentos (procedures) em Pascal

Apresentações semelhantes


Apresentação em tema: "Subprogramas : Procedimentos (procedures) em Pascal"— Transcrição da apresentação:

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

2 Funções/procedimentos
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

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

4 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)

5 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; write('digite um numero inteiro: '); readln(Valor); If ( Valor >= 1 ) then begin Fat(Valor, f); writeln('Fatorial de ',Valor,' = ',f:5:0); readln; end.

6 Procedures - Pascal Declaração Lista de parâmetros formais Ex:
Procedure <identificador> [( <lista de parâmetros formais> ) ] ; [ <declaração de variáveis locais>; ] begin < comandos separados por ‘;’ > end; opcionais Lista de parâmetros formais [ var ] < lista de identificadores > : <tipo>; ... Indica passagem de parâmetro por referência- opcional Procedure Teste ( A, B: integer; var C: real ); begin C := A / B; end; Ex:

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

8 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; var vet:tipoVetor; I,M,P:integer; 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 Procedure Muda; var X : integer; begin X := 1 end; { Muda } var X : integer; {programa principal } X := 0; Muda; write ( X ); end. Procedure Muda (X : integer); begin X := 1 end; { Muda } var X : integer; {programa principal } X := 0; Muda (X); write ( X ); end. Parâmetro por valor Não muda valor da variável do progr. principal Variável local Não muda valor da variável do progr. principal Procedure Muda (var X: integer); begin X := 1 end; { Muda } ar X : integer; {programa principal } X := 0; Muda (X); write ( X ); end. var X : integer; Procedure Muda; begin X := 1 end; { Muda } begin {programa principal } X := 0; Muda; write ( X ); end. Parâmetro por referência Muda valor da variável do progr. principal Variável global Muda valor da variável

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

12 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; var Mat:tipoMatriz; L,C,M,Menor:integer; for L:= 1 to 5 writeln('informe os valores da linha ',L); for C:=1 to 5 do readln(Mat[L,C]); maiorMenor(Mat,M,Menor); writeln('o maior elemento da matriz eh: ',M); writeln('o menor elemento da matriz eh: ',Menor); readln; end.

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

14 Exemplo de definição de unit
unit minhaUnit; interface Function Fat(X:integer): real; function Pot(base:real;exp:integer):real; implementation var I:integer; begin fat:=1; for I:= 1 to X do Fat:=Fat*I; End; Pot:=1; for I:=1 to exp do Pot:=Pot*base; end; end.

15 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; {--- programa principal ---} var angulo: real; write(‘informe o angulo do 1. quadrante em radianos’); readln(angulo); writeln('o cosseno de ',angulo,' eh aproximadamente ', cos1quad(angulo):1:6); readln; end.


Carregar ppt "Subprogramas : Procedimentos (procedures) em Pascal"

Apresentações semelhantes


Anúncios Google