Buscar

Programação Modular: Parâmetros

Prévia do material em texto

Fundamentos da 
Computação 
Priscilla Fonseca de Abreu Braz 
turmas_uerj@yahoo.com.br 
 
Universidade do Estado do Rio de Janeiro 
Instituto de Matemática e Estatística 
Exercícios 
1) Elabore um programa para calcular o produto de dois 
valores. Usar procedures/functions diferentes para a 
leitura, cálculo dos valores e exibição do resultado. 
 
2) Construa um programa que leia três valores e imprima o 
maior deles. Utilize function. 
Exercícios 
program ex1_3005; 
uses crt; 
var 
 n1,n2:integer; 
procedure leitura(); 
begin 
 writeln('Informe o primeiro número'); 
 readln(n1); 
 writeln('Informe o segundo número'); 
 readln(n2); 
end; 
function prod():integer; 
begin 
 prod:=n1*n2; 
end; 
begin 
 leitura(); 
 writeln(„Produto de ',n1,' e ',n2,': „,prod()); 
 readkey; 
end. 
Exercícios 
program ex2_3005; 
uses crt; 
var 
 n1,n2,n3:integer; 
procedure leitura(); 
begin 
 writeln('Informe o primeiro número'); 
 readln(n1); 
 writeln('Informe o segundo número'); 
 readln(n2); 
 writeln('Informe o terceiro número'); 
 readln(n3); 
end; 
function maior():integer; 
begin 
 if (n1>n2) and (n1>n3) then 
 maior:=n1 
 else 
 begin 
 if(n2>n3)and(n2>n1) then 
 maior:=n2 
 else 
 maior:=n3; 
 end; 
end; 
begin 
 leitura(); 
 writeln('Maior número lido: ',maior()); 
 readkey; 
end. 
Parâmetros 
Os parâmetros ou argumentos são usados para comunicação 
entre o programa principal e os subprogramas. Na realidade, 
nós já usamos essa comunicação com os procedimentos pré-
definidos da linguagem, como por exemplo o readln e o 
writeln. Quando temos um trecho de programa como a 
seguir: 
 
 readln(x); 
 writeln(x); 
 
Os procedimentos readln e writeln precisam de parâmetros 
para executar sua tarefa. No caso de procedimentos definidos 
pelo usuário, a declaração da procedure fica da seguinte 
forma: 
 
Programação Modular: Parâmetros 
procedure <identificador> (lista de argumentos); 
 declaracao dos identificadores locais 
 begin 
 comandos; 
 end; 
 
Na definição da Procedure coloca-se entre parêntesis as 
variáveis que serão passadas. Por exemplo: 
 
 
PROCEDURE LE(A,B:REAL); A e B são ditos parâmetros formais 
 
 
O que significa “passe de ou para o programa principal duas 
variáveis reais”. No programa principal “chama-se” a 
procedure invocando seu nome e informando as variáveis ou 
valores que serão passadas. 
 
Por exemplo: LE(X,Y); X e Y são ditos parâmetros reais 
 
Isto significa que X e Y terão respectivamente os valores 
dados para as variáveis A e B. 
 
Programação Modular: Parâmetros 
 
A passagem de parâmetros entre o programa principal e o 
procedimento se dá 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ão passa-se o valor de uma 
variável. Por exemplo, no programa seguinte a segunda 
chamada do procedimento writeln passa o valor de x como 
argumento. 
 
writeln(‟A‟); 
x:=‟A‟; 
writeln(x); 
Programação Modular: Parâmetros 
 
PROGRAM EXEMPLO; 
VAR n: integer; 
 
PROCEDURE NumPar (a:Integer); 
begin 
 a := a DIV 2; 
 writeln (a); 
end; 
 
BEGIN 
 n := 4; 
 NumPar(n); 
 writeln(n); 
END; 
Quais seriam as saídas 
do programa principal? 
Saída: 2 
Saída: 4 
Programação Modular: Parâmetros 
A passagem de parâmetro por referência caracteriza-se 
pela ocorrência da alteração do valor do parâmetro real 
quando o parâmetro formal é manipulado dentro da rotina 
chamada. Desta forma, qualquer modificação feita no 
parâmetro formal, implica em alteração no parâmetro real 
correspondente. A alteração efetuada é devolvida para a 
rotina a chamou. 
 
Quando a passagem de parâmetros se dá por variável, o 
grupo de identificadores possui a palavra var na sua frente. 
Caso contrário, a passagem de parâmetros é por valor. 
Programação Modular: Parâmetros 
Exemplo: No procedimento P1 os identificadores x e y são 
parâmetros cuja passagem se dá por referência, ao passo 
que z é um parâmetro com a passagem por valor. No caso 
do procedimento P2, no argumento w1 a passagem é por 
valor e w2 é por referência. 
 
procedure P1(z:integer ; var x,y : integer); 
 
procedure P2(w1:char; var w2: char); 
Programação Modular: Parâmetros 
 
PROGRAM EXEMPLO; 
VAR n: integer; 
PROCEDURE NumPar ( Var a:Integer); 
begin 
 a := a DIV 2; 
 writeln (a); 
end; 
 
BEGIN 
 n := 4; 
 NumPar(n); 
 writeln(n); 
END; 
Quais seriam as saídas 
do programa principal? 
Saída: 2 
Saída: 2 
Programação Modular: Parâmetros 
O tipo dos identificadores na declaração dos subprogramas 
deve ser básico: (a) inteiro, booleano, caracter ou real; (b) 
definido pelo programador. 
Os seguintes cabeçalhos de procedimentos são inválidos: 
 
 procedure proc(i:1..10); 
 
 procedure proc2(a:array[1..10] of integer); 
 
Podemos apresentar as seguintes declarações para 
passarmos “ arrays” como parâmetros: 
 
 type indice = 1..10; 
 tipoa = array[1..10] of integer; 
 procedure proc(i:indice); 
 procedure proc2(a:tipoa); 
Programação Modular: units 
Algumas units embutidas na linguagem Pascal: 
 
 CRT, DOS, GRAPH, OVERLAY, PRINTER, SYSTEM. 
 
 
 
 
 
Programação Modular: units 
program CALCULADORA; 
Uses Crt; 
var 
 OPCAO := „0‟; 
begin 
 while (OPCAO <> 3) do 
 begin 
 clrscr; 
 gotoxy(33,1); 
 write(‘Menu Principal’); 
 gotoxy(28,6); 
 write(‘1. Soma....................’); 
 gotoxy(28,8); 
 write(‘2. Multiplicacao.......’); 
 gotoxy(28,10); 
 write(‘3. Fim do Programa.’); 
 gotoxy(28,12); 
 write(‘Escolha uma opcao:’); 
 readln(OPCAO); 
 if (OPCAO = ‘1’) then 
 Adicao; 
 if (OPCAO = ‘2’) then 
 Multiplica; 
 end; 
readkey; 
end. 
 
Programação Modular: units 
 
 
 
 
Funções pré-definidas 
O Pascal possui diversas funções pré-definidas. 
 
Funções pré-definidas 
Funções para tratamento de strings: 
 
Concat Function 
Combina qualquer quantidade de cadeias e as retorna como uma única cadeia. 
Declaração: Function Concat (S1, S2,..., Sn): string; 
 
Length Function 
Retorna o tamanho da cadeia S. 
Declaração: Function Length (S: string): integer; 
 
UpCase Function 
Retorna os caracteres em maiúsculo. 
Exemplo: UpCase („mala‟) = „MALA‟ 
 
TEXTBACKGROUND - Altera a cor de fundo da tela. 
Exemplo: TextBackGround(Blue) 
 
TEXTCOLOR - Altera a cor do texto (cor dos caracteres). Exemplo: TextColor(Red); 
Write(„Hello‟); 
Funções pré-definidas 
Exemplo: 
 
program teste; 
Uses Crt; 
var 
 texto:string; 
begin 
 write('Digite seu nome: '); 
 readln(texto); 
 texto:=upcase(texto); 
 writeln('Texto em maiúsculo: ',texto); 
 writeln('Qtde de caracteres: ',length(texto)); 
 
readkey; 
end. 
Exercícios 
1) Elabore um programa pascal para determinar o fatorial de um 
valor lido. Utilize uma função. 
 
2) Construa um programa que leia dois números inteiros positivos e 
utilize uma função para encontrar o MMC (Mínimo Múltiplo Comum) 
entre eles. 
 
3) Faça um programa que leia 2 valores e chame uma sub-rotina 
(procedure) que receba estas 2 variáveis e troque o seu conteúdo, ou 
seja, esta rotina é chamada passando duas variáveis A e B por 
exemplo, e após a execução da rotina A conterá o valor de B e B terá 
o valor de A. 
Obs.: Utilize passagem por referência. 
 
Exercícios 
Program EX3; 
uses crt; 
var 
i,num:integer; 
Function fat(n:integer) : integer ; 
var 
 aux:integer; 
Begin 
 aux:=1; 
 for i:= 1 to n do 
 aux:=aux*i; 
 fat:=aux; 
end; 
 
Begin 
 write('Digite um número: '); 
 readln(num); 
 write('O fatorial é ',fat(num)); 
 readkey; 
End.

Outros materiais

Materiais recentes

Perguntas Recentes