1 / 15

Subprogramas : Procedimentos ( procedures ) em Pascal

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.

yasuo
Download Presentation

Subprogramas : Procedimentos ( procedures ) em Pascal

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Funções/procedimentos • Funções • devolvem 1 valor • o valor calculado é usado diretamente pelo programa • Procedimentos • podem devolver zero, um ou mais valores • valoressãopassadoscomoparâ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; {chamadada procedure} ... Asteriscos; {chamadada procedure} ...

  4. Procedures com parâmetros • Háduasformas de passagem de parâmetrosnas procedures em Pascal: • Porvalor e porreferência • Na passagempor valor, como o próprionomeindica, somente o valor é passado (é usadoparaosparâmetros de entradada procedure). Análogoaosparâmetros de funções. • Na passagemporreferência, o valor do parâmetropode ser alterado e vai ser percebidopeloprogramaquechamou a procedure (é usadoparaosparâmetros de saídada 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; 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 - Pascal Declaração 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 doisparâ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; 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. Procedure Muda; var X : integer; begin X := 1 end; { Muda } var X : integer; {programa principal } begin X := 0; Muda; write ( X ); end. Procedure Muda (X : integer); begin X := 1 end; { Muda } var X : integer; {programa principal } begin 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 } begin 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; 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.

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

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

More Related