Buscar

Exercícios de Programação em Pascal

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)Faça um programa com uma sub-rotina (função) que 
calcule X elevado à Y = XY. Leia 2 valores de X e Y e exiba 
o resultado da chamada da sub-rotina na tela. Exemplo: 2 
elevado à 3 é igual à 2*2*2 = 8. 
 
2)Elabore um programa em Pascal que utilize um 
procedimento ou função que retorne ao programa principal 
um vetor com os três primeiros números perfeitos. Sabe-se 
que um número é perfeito quando é igual à soma dos seus 
divisores (exceto ele mesmo). Exemplo: os divisores de 6 
são: 1,2 e 3 e 1 + 2 + 3 = 6. Logo, 6 é perfeito. 
 
3) Faça um programa que implemente uma sub-rotina que 
receba um vetor A de 10 elementos inteiros como 
parâmetro e retorne ao programa principal um vetor B 
contendo o fatorial de cada elemento de A. O vetor B 
deverá ser mostrado no programa principal. 
Exercícios 
PROGRAM EX1; 
USES CRT; 
VAR 
 x,y: INTEGER; 
FUNCTION potencia(a,b: integer):integer; 
VAR i, res: INTEGER; 
BEGIN 
 res:=1; 
 for i:=1 to b DO 
 res := res*a; 
 potencia:=res; 
END; 
BEGIN 
 writeln('Informe o valor de x: '); 
 readln(x); 
 writeln('Informe o valor de y: '); 
 readln(y); 
 writeln(x, 'elevado a ',y,' é: ', potencia(x,y)); 
READKEY; 
END. 
Exercícios 
PROGRAM EX2; 
USES CRT; 
TYPE vetor = ARRAY[1..3] OF INTEGER; 
VAR vet: vetor; 
 i: INTEGER; 
 
PROCEDURE perfeitos(VAR v: vetor); 
VAR a, r, num, soma, cont: INTEGER; 
BEGIN 
cont := 1; 
num := 1; 
WHILE (cont <= 3) DO 
 BEGIN 
 soma := 0; 
 FOR a:=1 TO num-1 DO 
 IF num MOD a = 0 THEN 
 soma := soma + a; 
 IF soma = num THEN 
 BEGIN 
 v[cont] := num; 
 cont := cont + 1; 
 END; 
 num := num + 1; 
 END; 
END; 
 
 
BEGIN 
CLRSCR; 
perfeitos(vet); 
FOR i:=1 TO 3 DO 
 WRITELN('O ', i, '§ n£mero perfeito ‚ ', 
vet[i]); 
READLN; 
END. 
Exercícios 
PROGRAM EX3; 
USES CRT; 
TYPE vetor = ARRAY[1..10] OF INTEGER; 
VAR vet1, vet2: vetor; 
 X: INTEGER; 
 
PROCEDURE fatoriais(VAR a, b: vetor); 
VAR i, j: INTEGER; 
 f: REAL; 
BEGIN 
FOR i:=1 TO 10 DO 
BEGIN 
 IF (a[i] = 0) OR (a[i] = 1) THEN 
 b[i] := 1 
 ELSE 
 BEGIN 
 b[i] := 1; 
 FOR j := 1 TO a[i] DO 
 b[i] := b[i] * j; 
 END; 
END; 
END; 
BEGIN 
CLRSCR; 
FOR x:=1 TO 10 DO 
 BEGIN 
 WRITE('Digite o ', x, '§ elemento de A '); 
 READLN(vet1[x]); 
 END; 
fatoriais(vet1,vet2); 
FOR x:=1 TO 10 DO 
 WRITELN('O fatorial de ', vet1[x], ' ‚ ', 
vet2[x]); 
READLN; 
END. 
UNITS 
As units foram criadas para facilitar a construção de 
programas, pois eliminam a necessidade de duplicação de 
código, uma vez que blocos de comandos usados 
repetidamente podem ser transformados em sub-rotinas. 
 
As UNITS são rotinas compiladas separadamente do 
programa principal. 
 
Algumas UNITS disponíveis: 
 
 System: rotinas básicas do Pascal 
 Crt: rotinas associadas a aspectos de vídeo e som 
 Dos: rotinas que envolvem o Sistema Operacional Dos 
 Graph: rotinas responsáveis pelo suporte gráfico do Pascal 
 Printer: rotinas responsáveis por configurações para 
impressora. 
UNITS 
Sintaxe: 
 
UNIT <Nome da Unit>; 
INTERFACE 
USES <lista de UNITs importadas> 
 < definição de variáveis, constantes e tipos exportados> 
 <cabeçalho das sub-Rotinas exportadas> 
IMPLEMENTATION 
USES <lista de UNITs importadas privativas ao módulo> 
 <definição de variáveis, constantes e tipos internos a UNIT> 
 <sub-Rotinas internas a UNITs> 
 <corpo das sub-Rotinas exportadas> 
BEGIN 
 <Comandos a serem executados na ativação da Unit> 
END. 
 
INTERFACE define todas as sub-rotinas, variáveis, constantes e tipos de dados que são 
exportados, ou sejam, são visíveis em outros programas. 
IMPLEMENTATION define os tipos de dados, variáveis e constantes que serão visíveis 
somente dentro da UNIT. 
As sub-rotinas definidas na seção IMPLEMENTATION e que não tenham o seu cabeçalho 
definido na seção INTERFACE serão internas a UNIT, não sendo desta forma exportadas. 
Para usar as sub-rotinas, variáveis, constantes e tipos de dados definidos em outras UNITs 
basta utilizar a palavra reservada USES seguido da relação de nomes das UNITs desejadas. 
UNITS - exemplo 
Exemplo: Construir uma UNIT que contenha uma sub-rotina 
para escrever uma STRING qualquer em uma determinada linha 
e coluna na tela do computador. 
 
UNIT tela; 
INTERFACE 
 PROCEDURE Escreve_Str( linha, coluna : BYTE; Texto : STRING); 
IMPLEMENTATION 
USES CRT; 
 PROCEDURE Escreve_Str( linha, coluna : BYTE; texto : STRING); 
 BEGIN 
 GOTOXY(coluna, linha); 
 WRITE(texto); 
 END; 
END. 
UNITS - exemplo 
Como complementação do exemplo anterior, vamos construir 
um pequeno programa que use a sub-rotina definida 
anteriormente: 
 
Program Testa_Unit; 
uses Tela, Crt; 
begin 
 Escreve_Str(10, 10, ‘Teste de Unit’); 
 readkey; 
end; 
UNITS - Exercício 
Construa uma unit que implemente um procedimento 
para troca de dois valores e uma função que retorne 
o maior valor dentre os dois passados como 
parâmetro. Após construir sua unit, faça um 
programa em Pascal que a utilize.

Continue navegando