Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


estudo de procedimentos PASCAL, Notas de estudo de Engenharia Mecânica

entrada e saida

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 27/09/2010

kleber-martins-5
kleber-martins-5 🇧🇷

3 documentos

1 / 8

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Algumas notas sobre PASCAL
PARTE II - Procedimentos e Fun¸oes
Anjolina Grisi de Oliveira
1 Introdu¸ao
Os procedimentos e fun¸oes ao ´uteis na programa¸ao uma vez que permitem
que um programa possa ser dividido em subprogramas. Quando um programa
´e grande, fica mais acil depur´a-lo se ele est´a dividido em subprogramas. A
linguagem PASCAL possui dois tipos de subprogramas: procedimentos (proce-
dure) e fun¸oes (function).
2 Procedimentos
Em PASCAL os procedimentos ao definidos ap´os a declara¸ao das vari´aveis
do programa principal. O procedimento ´e ativado quando ´e chamado pelo
programa principal. Eles podem ou ao ter parˆametros. A sua forma mais
simples ´e definida como a seguir, sem a inclus˜ao de parˆametros.
2.1 Procedimentos sem parˆametros
Os procedimentos ao definidos da seguinte forma:
Procedure <nome do procedimento>;
declaracao de var.
Begin
comandos
End;
Exemplo 1 O seguinte programa recebe dois umeros e, de acordo com um
menu de op¸oes faz diferentes operoes com esse umero.
Program Ex1;
uses crt;
var
num1,num2 : integer;
op:char;
procedure MostraMenu;
begin
clrscr;
writeln(’Digite a opcao desejada’);
writeln(’ (1) Soma e produto’);
1
pf3
pf4
pf5
pf8

Pré-visualização parcial do texto

Baixe estudo de procedimentos PASCAL e outras Notas de estudo em PDF para Engenharia Mecânica, somente na Docsity!

Algumas notas sobre PASCAL

PARTE II - Procedimentos e Fun¸c˜oes

Anjolina Grisi de Oliveira

1 Introdu¸c˜ao

Os procedimentos e fun¸c˜oes s˜ao ´uteis na programa¸c˜ao uma vez que permitem que um programa possa ser dividido em subprogramas. Quando um programa ´e grande, fica mais f´acil depur´a-lo se ele est´a dividido em subprogramas. A linguagem PASCAL possui dois tipos de subprogramas: procedimentos (proce- dure) e fun¸c˜oes (function).

2 Procedimentos

Em PASCAL os procedimentos s˜ao definidos ap´os a declara¸c˜ao das vari´aveis do programa principal. O procedimento ´e ativado quando ´e chamado pelo programa principal. Eles podem ou n˜ao ter parˆametros. A sua forma mais simples ´e definida como a seguir, sem a inclus˜ao de parˆametros.

2.1 Procedimentos sem parˆametros

Os procedimentos s˜ao definidos da seguinte forma:

Procedure ; declaracao de var. Begin comandos End;

Exemplo 1 O seguinte programa recebe dois n´umeros e, de acordo com um menu de op¸c˜oes faz diferentes opera¸c˜oes com esse n´umero.

Program Ex1; uses crt; var num1,num2 : integer; op:char;

procedure MostraMenu;

begin clrscr; writeln(’Digite a opcao desejada’); writeln(’ (1) Soma e produto’);

writeln(’ (2) Produto’); writeln(’ (3) Resto da div. por x’); end;

procedure SomaProduto;

begin writeln(’Soma = ’, num1+num2); writeln(’Produto = ’, num1*num2); end;

procedure Resto; var x: integer;

begin writeln(’Entre com o valor de x’); readln(x); if x<=num1 then writeln(’resto de ’,num1,’ por ’, x, ’ = ’,num1 MOD x) else writeln(x, ’maior que ’, num1); if x<=num2 then writeln(’resto de ’,num2, ’ por ’, x, ’ = ’, num2 MOD x) else writeln(x, ’maior que ’, num2); end;

Begin writeln(’Entre com dois numeros inteiros’); readln(num1,num2); MostraMenu; op:=readkey; case op of ’1’: SomaProduto; ’2’: Resto; else writeln(’opcao invalida’); end; readln; End.

Algumas observa¸c˜oes:

  • Os subprogramas podem incluir defini¸c˜oes locais, tanto de vari´aveis como de constantes ou tipos. No exemplo 1, o procedimento Resto possui uma vari´avel local (x). As defini¸c˜oes locais s´o existem durante a execu¸c˜ao do subprograma. Por esse motivo, elas somente s˜ao acess´ıveis pelo subpro- grama que as contem.

readln(x); writeln(x);

Os procedimentos readln e writeln precisam de parˆametros para executar sua tarefa. No caso de procedimentos definidos pelo usu´ario, a declara¸c˜ao da pro- cedure fica da seguinte forma:

procedure (lista de argumentos); declaracao dos identificadores locais begin comandos; end;

A passagem de parˆametros entre o programa principal e o procedimento se d´a de duas formas:

  1. passagem por valor: nesse caso, o programa principal passa um valor para o procedimento. Esse valor pode ser passado explicitamente, ou ent˜ao passa-se o valor de uma vari´avel. Por exemplo, no programa seguinte a segunda chamada do procedimento writeln passa o valor de x como argumento.

writeln(’A’); x:=’A’; writeln(x);

  1. passagem por referˆencia (ou por vari´avel): nesse caso, na chamada do sub- programa o programa principal passa o endere¸co da vari´avel. A vari´avel correspondente no subprograma ´e um nome alternativo da vari´avel da chamada do subprograma. Mudan¸cas nessa vari´avel afetam a vari´avel do programa principal.

Defini¸c˜ao dos parˆametros

Quando a passagem de parˆametros se d´a por vari´avel, o grupo de identificadores possui a palavra var na sua frente. Caso contr´ario, a passagem de parˆametros ´e por valor.

Exemplo 2 No procedimento P 1 os identificadores x e y s˜ao parˆametros cuja passagem se d´a por vari´avel, ao passo que z ´e um parˆametro com a passagem por valor. No caso do procedimento P 2 , o argumento w1 a passagem ´e por valor e w2 ´e por referˆencia.

procedure P1(var x,y : integer; z:integer);

procedure P2(w1:char; var w2: char);

Exemplo 3 Aqui mostramos o exemplo 1 modificado. O exemplo mostrado aqui ´e mais recomendado em programa¸c˜ao, pois n˜ao devemos alterar o valor de uma vari´avel global dentro dos subprogramas. Esse tipo de a¸c˜ao pode gerar erros dif´ıceis de serem depurados.

Program Ex1; uses crt; var num1,num2 : integer;

procedure Menu(var op:char);

begin clrscr; writeln(’Digite a opcao desejada’); writeln(’ (1) Soma e produto’); writeln(’ (2) Produto’); writeln(’ (3) Resto da div. por x’); op:=readkey; end;

procedure SomaProduto(x1,x2:integer);

begin writeln(’Soma = ’, x1+x2); writeln(’Produto = ’, x1*x2); end;

procedure Resto(n1,n2:integer); var x: integer;

begin writeln(’Entre com o valor de x’); readln(x); if x<=num1 then writeln(’resto de ’,n1,’ por ’, x, ’ = ’,n1 MOD x) else writeln(x, ’maior que ’, n1); if x<=num2 then writeln(’resto de ’,n2, ’ por ’, x, ’ = ’, n2 MOD x) else writeln(x, ’maior que ’, n2); end;

Begin writeln(’Entre com dois numeros inteiros’);

writeln(’ (3) Resto da div. por x’); RecebeOp:=readkey; end;

Begin writeln(’Entre com dois numeros inteiros’); readln(num1,num2); case RecebeOp of ’1’: SomaProduto(num1,num2); ’2’: Resto(num1,num2); else writeln(’opcao invalida’); end; readln; End.

Alternativamente, poderiamos colocar o comando op := RecebeOp, nesse caso o case fica como antes.

Exemplo 5 Program Calc;

var num,dig: integer;

function digito(n:integer) : integer; begin if n > 1000 then digito:= n mod 9 else digito:= (n mod 5) + (n mod 3); end;

begin readln(num,dig); if dig <> digito(num) then writeln(’digito invalido’); readln; end.

4 Arranjos como parˆametros

O tipo dos identificadores na declara¸c˜ao dos subprogramas deve ser b´asico: (a) inteiro, booleano, caracter ou real; (b) definido pelo programador. Os seguintes cabe¸calhos de procedimentos [TenAug86] s˜ao inv´alidos:

procedure proc(i:1..10); procedure proc2(a:array[1..10] of integer);

Podemos apresentar as seguintes declara¸c˜oes para passarmos “ arrays” como parˆametros:

type indice = 1..10; tipoa = array[indice] of integer;

procedure proc(i:indice); procedure proc2(a:tipoa);

References

[Asc99] Ana Fernanda Gomes Ascencio. L´ogica de programa¸c˜ao com Pascal. Makron Books Ltda, S˜ao Paulo, Brasil. 1999.

[CooCla85] Doug Cooper and Michael Clancy. Oh! Pascal! W.W. Norton and Company, New York and London. Second Edition, 1985.

[TenAug86] Aaron M. Tenenbaum and Moshe J. Augenstein. Data Struc- tures using Pascal. Segunda edi¸c˜ao, Prentice-Hall International Editions, EUA, 1986.

[Ziv99] Nivio Ziviani. Projeto de Algoritmos com implementa¸c˜oes em Pascal e C. Pioneira Inform´atica, S˜ao Paulo, Brasil. Quarta edi¸c˜ao, 1999.