Professional Documents
Culture Documents
Programao Pascal
Mrcio F. Campos
Carlos A. Pilar
VARIVEIS .................................................................................................................................8
2.1
2.2
2.3
2.4
2.5
2.6
OBJETIVO. ...............................................................................................................................6
RECURSOS DA LINGUAGEM. .....................................................................................................6
EXEMPLO: ...............................................................................................................................6
PRTICA:.................................................................................................................................6
ADIANTE. ................................................................................................................................7
OBJETIVO. ...............................................................................................................................8
RECURSOS DA LINGUAGEM. .....................................................................................................8
EXEMPLO: ...............................................................................................................................8
PRTICA..................................................................................................................................8
EXEMPLO DOIS.........................................................................................................................8
PRTICA..................................................................................................................................9
ATRIBUIO DE VALORES................................................................................................... 11
4.1
4.2
CONSTANTES. .......................................................................................................................... 13
6.1
6.2
6.3
6.4
6.5
9.4
10
PRTICA:............................................................................................................................... 17
EXERCCIOS. ........................................................................................................................ 18
10.1
10.2
LAOS.................................................................................................................................... 19
11.1
11.2
LAOS III............................................................................................................................... 21
13.1
13.2
SELEO MLTIPLA.......................................................................................................... 23
15.1
15.2
15.3
15.4
16
16.1
16.2
16.3
16.4
17
17.1
18.2
18.3
18.4
18.5
19
19.1
19.2
19.3
19.4
19.5
20
PASSAGEM DE PARMETRO............................................................................................ 30
21.1
FUNES............................................................................................................................... 31
22.1
22.2
22.3
22.4
23
23.1
23.2
23.3
23.4
24
24.1
24.2
24.3
24.4
25
25.1
27
ARQUIVO DIRETO............................................................................................................... 37
27.1
27.2
27.3
27.4
28
28.1
28.2
28.3
28.4
Objetivo.
1.2
Recursos da Linguagem.
1.3
Exemplo:
(prg1a)
program primeiro;
{cabealho o programa}
uses crt;
begin
{limpa a tela}
write(al mundo);
delay(3000);
comando}
end.
1.4
Prtica:
1.5
Adiante.
END
MOD
REAPEAT
ARRAY
FILE
MIL
SET
BEGIN
FOR
NOT
THEN
CASE
FORWARD
OF
TO
CONST
FUNCTION
OR
TYPE
DIV
GOTO
PACKED
UNTIL
DO
IF
PROCEDURE
VAR
DOWNTO
IN
PROGRAM
WHILE
ELSE
LABEL
RECORD
WITH
Tabela 1.
A tabela 2 lista as cores que podem ser utilizadas. Pode-se utilizar tanto as cores quanto os
nmeros.
Nmero
0
1
2
3
4
5
6
7
Cor
Black
Blue
Green
Cyan
Red
Magenta
Brown
Lightgray
Nmero
8
9
10
11
12
13
14
15
Cor
Darkgray
Lightblue
Lightgreen
Lightcyan
Lightred
Lightmagenta
Yellow
white
Tabela 2.
2 Variveis
2.1
Objetivo.
2.2
Recursos da Linguagem.
read, readln.
2.3
Exemplo:
(prg2a)
program multiplica2;
uses crt;
var numero :
interger;
{uma
varivel
pode
assumir
valores
diferentes durante a execuo do prg; A varivel nmero do
tipo inteiro, ou seja, somente assume valores do tipo 0,1(1),2(-2),3(-3),4(-4),5(-5) etc}
begin
write(digite um nmero qualquer);
read(numero);
write(numero*2);
delay(3000);
end.
2.4
Prtica.
Digite, compile e execute o programa acima.
Modifique o programa acima de forma que o nmero digitado seja multiplicado por 3 (faa
tambm para 4 ou 5). No se esquea de compilar e executar, logo aps.
Altere o programa acima os comandos write para writeln e read para readln. Compile e
execute.
2.5
Exemplo dois.
(prg2b)
program soma;
uses crt;
var numero1, numero2
: integer;
begin
writeln(digite o primeiro nmero);
readln(numero1);
writeln(digite o segundo nmero);
readln(numero2);
writeln(numero1 + numero2);
8
delay(3000);
end.
2.6
Prtica.
Escreva o programa acima no ambiente turbo pascal, compile-o e execute-o.
Modifique o programa para ao invs de somar, subtrair, multiplicar e dividir (lembre-se de
que no possvel a diviso por zero). Ao fazer a modificao do programa certifique-se de
salv-lo com outro nome.
Experimente informar dois nmeros inteiros acima de 30000. Verifique o que acontece!
No caso do problema identificado acima, mude o tipo de integer para longint ou real.
3.2
3.3
Exemplo:
(prg3a)
program quadrado;
uses crt;
var numero
: integer;
begin
writeln(digite um nmero);
readln(numero);
writeln(sqr(numero));
delay(3000);
end.
3.4
Prtica.
Digite o programa acima. Compile-o e execute-o.
Experimente, no programa
feito no item 2, digitar um nmero
negativo. Lembre-se que no existe a raiz quadrada de nmeros
negativos no conjunto dos nmeros reais.
10
4 Atribuio de valores.
4.1
4.2
4.3
Exemplo:
(prg4a)
program area_quadrado;
uses crt;
var lado, area
: integer;
begin
writeln (digite o tamanho
lado do quadrado);
readln(lado);
area := lado * lado;
4.4
{ o end
Prtica:
Digite, compile e execute o programa acima.
que
calcule
rea
do
tringulo
(base
4.5
Desafio:
Faa uma programa para calcular a rea da
3m
10 m
8m
6m
casa abaixo.
quarto
cozinha
2m
banheiro
6m
sala
4m
2m
11
12
5
6 Constantes.
6.1
6.2
6.3
Exemplo:
(prg5a)
program area_circulo;
uses crt;
const
pi = 3.1415;
{definio da constante}
var
area, raio: real;
{Observe! Duas variveis do tipo real sendo
declaradas ao mesmo tempo}
begin
writeln(digite o raio do crculo);
readln(raio);
area := pi * sqr(raio); { o valor de pi igual a 3.1415}
writeln(area);
writeln(o valoe de pi , pi);
delay(3000);
end.
(prg5b)
program graus;
uses crt;
const
conerte_far_ celsius = 0.55 {definio da constante}
var
farenheit, celsuis: real;
begin
writeln(digite a temperatura em graus farenheit);
readln(farenheit);
celsius := converte_far_celsius * (farenheit 32);
writeln (a temperatura em celsius , celsius);
delay(3000);
end.
6.4
Prtica:
Faa um programa que solicite ao usurio o valor do raio de forma a
calcular o volume de uma esfera (bola de frescobol), cuja frmula
Volume = 4/3 * pi * R3 (onde R o raio). Dica: use o comando
const.
Faa um programa em que dado uma valor em celsius, obtenha-se um
valor em farenheit, dado a frmula far = 1.888 * celsius + 32. Dica
use o comando const.
Faa uma programa que solicite o preo de um produto e este seja
majorado em 20%. Dica use o comando const.
13
6.5
Dica:
14
7 Variveis Alfanumricas.
7.1
7.2
7.3
Exemplo:
(prg6a)
program caracteres;
uses crt;
const
bem_vindo = seja bem vindo ao ORT
;
var
nome : string;
begin
writeln(digite o seu nome);
readln(nome);
writeln(bem_vindo + nome);
{ o comando + concatena strings}
delay(3000);
end.
(prg6b)
program caraceres2;
uses crt;
var
letraminscula, letramaiuscula : char; {equivale ao string de
apenas uma posio}
begin
writeln(digite qualquer letra munscula);
readln(letraminuscula);
letramaiuscula := upcase(letraminuscula); {a funo upcase
transforma letras minsculas em letras maisculas}
writeln(letramaiuscula);
delay(3000);
end.
7.4
Prtica:
Faa uma programa que aceite uma frase em letras minsculas de
forma a transform-las em letras maisculas.
Faa uma programa que aceite o nome e o sobrenome de uma pessoa e
imprima-os invertidos (sobrenome e nome).
A funo length(string) fornece o nmero de caracteres da varivel
informada. Faa uma programa que calccule o tamanho, em letras, de
uma frase.
15
8 Controles do fluxo.
8.1
8.2
8.3
Exemplo:
(prg7a)
program maior_que_dez;
uses crt;
var valor : interger;
begin
writeln(digite um valor);
readln(valor);
if valor > 10 then writeln (voce digitou um valor maior que
10);
delay(3000);
end.
(prg7b)
program medias;
uses crt;
var nota1, nota2, media : real
{olhe o tipo! Com inteiro pode dar
problema}
begin
writeln(digite a sua primeira nota)
readln(nota1);
writeln(digite a sua Segunda nota)
readln(nota2);
media := (nota1+nota2)/2; {olha o parenteses!}
if media > 5 then writeln(parabens voce passou!)
else writeln(bem vindo ao curso de vero); { repare o ponto e
virgula apenas no final do else!}
end.
8.4
Prtica:
Digite os programas acima e execute-os no ambiente turbo pascal.
Faa um programa que calcule o valor de (delta) em uma equao de
segundo grau, informando o seu valor caso seja positivo, caso
contrrio dar mensagem de negativo. Lembre-se, = b2 4ac.
Faa um programa que calcule a equao do segundo grau, sendo dados
os coeficientes a, b e c. Lembre-se (b +/- )/2a.
A relao peso/altura dada pela frmula XXXXXXX. Faa uma
programa que verifique se o seu peso est compatvel com sua
altura.
16
9.2
9.3
Exemplo:
(prg8a)
program e_par?;
uses crt;
var numero, resto : integer;
begin
writeln(digite um nmero inteiro);
readln(numero);
resto := numero mod 2; {a funo mod fornece o resto de uma
diviso inteira}
if resto = 0 then
begin {quando o if/then tem mais de um
comando deve-se usar os comandos
begin/end}
writeln(o numero digitado e par);
delay(3000);
end {quando exite else aps o end, no se usa ;}
else
begin
writeln (o nmero mpar);
delay(3000);
end; {fim do else}
end.
(prg8b)
program dividindo_mesada;
uses crt;
var mesada, filhos, mesada_filho: integer;
begin
writeln(informe o total da mesada no ms);
readln(mesada);
writeln(informe o nmero de filhos);
readln(filhos);
mesada_filho := mesada div filhos;
writeln(este o valor da mesada_filhos , mesada_filhos);
delay(3000);
end.
9.4
Prtica:
Digite os programas acima e faa-os executar em turbo pascal.
Elabore um programa em que dado um ano, verifique se este
bissexto ou no (divida-o por 4 e verifique o resto).
17
10 Exerccios.
10.1 Objetivo: lista de exerccios.
10.2 Recursos da Linguagem: utilizao dos comandos e funes
aprendidas at o momento.
10.3 Prtica:
Deseja-se calcular o consumo de um automvel. Sabe-se
a
kilometragem inicial(KI) e a final(KF) e o total de litros
consumidos(TLC). Para se obter o consumo em Km/L deve-se usar a
frmula: (KF-KI)/TLC.
Elabore um programa para calcular o permetro do crculo. Deve-se
solicitar o raio ( r ).
O clculo do permetro dado por
Permetro(p) = 2r, onde (pi) uma constante de valor 3.14.
Sabendo-se que um automvel percorreu 500m , faa um programa que
solicite um tempo de percurso de forma a calcular a velocidade
mdia. Sabe-se que velocidade mdia = espao / tempo.
Sabendo-se que um automvel atinge a velocidade de 100 m/s em
t
segundos, calcule a acelerao, onde a acelerao
= velocidade /
tempo.
O programa deve mostrar as diferentes
aceleraes para
cada uma dos tempos informados.
Deseja-se dar um aumento
para um grupo de funcionrios de uma
empresa. A regra bsica a que se segue. Caso o salrio seja maior
ou igual que 1500 reais, ento ter aumento de 10%; caso contrrio
15%. O programa deve aceitar um salrio e calcular o respectivo
aumento.
Deseja-se classificar um grupo
idade, da forma de se segue:
de
pessoas
conforme
faixa
de
18
11 Laos.
11.1 Objetivo: apresentar comandos de repetio for...do (loop).
11.2 Recursos da Linguagem : Program, Write, Writeln, Delay, Begin/End;
read, readln; for...do.
11.3 Exemplos:
(prg10a)
program mostra_for;
uses crt;
cont max = 20;
var incremento
: integer; {deve ser uma varivel inteira!}
begin
for incremento := 1 to max do { o begin/end do for executado
max vezes; a varivel incremento atualizada automaticamente at
atingir o nmero max }
begin
writeln(este o valor do incremento dentro do loop,
incremento);
delay(3000);
end;
end.
11.4 Prtica:
19
12 Laos II.
12.1 Objetivo: apresentar comandos de repetio while...do (loop).
12.2 Recursos da Linguagem : Program, Write, Writeln, Delay, Begin/End;
read, readln; while...do.
12.3 Exemplo:
(prg11a)
program mostra_while;
uses crt;
var incremento
: integer;
begin
incremento : = 1;
{ateno ! }
while incremento <= 20 do
begin
writeln(o incremento est valendo, incremento);
delay(3000);
incremento := incremento + 1 {ateno !}
end; {fim do enquanto}
end.
12.4 Prtica:
20
13 Laos III.
13.1 Objetivo: apresentar comandos de repetio repeat...until (loop).
13.2 Recursos da Linguagem : Program, Write, Writeln, Delay, Begin/End;
read, readln; reapeat...until.
13.3 Exemplo:
(prg12a)
program mostra_repeat;
uses crt;
var incremento
: integer;
begin
incremento : = 1;
{ateno ! }
repeat
writeln(o incremento est valendo, incremento);
delay(3000);
incremento := incremento + 1 {ateno !}
until keypressed; { observe que o teste feito ao final; isto
quer dizer que o programa entra no loop pelo menos uma nica vez}
end.
13.4 Prtica:
21
14 Exerccos Laos.
14.1 Objetivo: lista de exerccios em loops.
14.2 Recursos da Linguagem: utilize os comandos de loop: for...do,
while...do, repeat...until.
14.3 Prtica:
Em um frigorfico deseja-se verificar qual o boi mais gordo e o
mais magro. Cada boi possui um nmero de identificao. Na medida
que o boi passa na balana um funcionrio digita o peso e o numero
de identificao do animal. Sabendo-se que sero pesados 25 bois,
faa um programa que imprima o nmero de identificao do boi mais
pesado e do mais leve.
Deseja-se mostrar na tela a tabuada de uma determinado nmero. Faa
uma programa em que dado um nmero, apresente a respectiva tabuada
(1 a 10) .
Dada a seguinte equao: f(x) = 2x + 1. Faa uma programa que
verifique o valor de f(x) para os valores de x maiores que 4 e
menores que 15.
Dada uma equao do segundo grau, elabore um programa que solicite
os coeficientes a,b e c de forma que se calcule o e caso o seja
positivo ou zero, calcule e imprima os vrtices (xv = -b/(2 a) e yv
= - /(4a). Deve-se testar os resultados para cinco equaes
diferentes. Dica utilize um loop.
Faa uma programa que mostra a tabuada exponencial do nmero 5.
Calcule o valor de 5 elevado aos expoentes de 0 a 20.
22
15 Seleo Mltipla.
15.1 Objetivo: apresentar o comando de seleo mltipla. Case...of.
15.2 Recursos da Linguagem: Program, Write, Writeln, Delay, Begin/End.,
Case...of.
15.3 Exemplo:
(prg14a)
program case_of;
uses crt;
var
operador : char;
operando1, operando2 : real;
begin
writeln(digite o operando 1);
readln(operando1);
writeln(digite o operando 2);
readln(operando2);
writeln(digite qual a operao desejada: +, -, *, /);
readln(operador);
case operador of
+ : writeln(operador1 + operador2);
- : writeln(operador1 - operador2);
* : writeln(operador1* operador2);
/ : writeln(operador1 / operador2);
end; {case}
end.
(prg14b)
program case_of_else;
uses crt;
var
operador : char;
operando1, operando2 : real;
begin
writeln(digite o operando 1);
readln(operando1);
writeln(digite o operando 2);
readln(operando2);
writeln(digite qual a operao desejada: +, -, *, /);
readln(operador);
case operador of
+ : writeln(operador1 + operador2);
- : writeln(operador1 - operador2);
* : writeln(operador1* operador2);
/ : writeln(operador1 / operador2);
else: writeln(operador invlido);
end; {case}
end.
23
15.4 Prtica:
Faa um programa que apresente um menu de opes para o clculo da
rea das seguintes figuras geomtricas: (a) quadrado, (b)
retngulo, (c) tringulo, (d) trapzio e (e) crculo.
Um banco classifica seus clientes segundo a mdia do saldo mensal,
conforme a tabela abaixo:
Mdia do saldo mensal
status
< 500
uma estrela
de 500,01 a 1.500
duas estrelas
de 1.500,01 a 5.000
trs estrelas
acima de 5.000,01
vip
Faa uma programa que aceite o saldo mdio do cliente e imprima em
qual status este se encontra.
24
16.4 Prtica:
25
program,
begin...end,
for...do,
17.3 Exemplo:
FOR
program forexemp;
var i : integer;
begin
for i := 1 to 10 do
begin
writeln(3*i);
delay(1000);
end;
end.
WHILE
Program whileexemp;
Var i : integer;
Begin
i:= 1;
while i < 11 do
begin
writeln(3*i);
delay(1000)
i := i+ 1;
end;
end.
REPEAT
Program repeatexemp;
Var i : integer;
Begin
i:= 1;
repeat
writeln(3*i);
delay(1000);
i := i +1
until i > 10
end.
O reapeat...do permite a
execuo de pelo menos
uma nica vez dentro do
corpo do comando, j que
o teste do controle do
loop ocorre apenas ao
final do mesmo. Repare
que o corpo do comando
repeat...do executado
enquanto a condio do
until falsa. Ao se
tornar verdadeira o loop
encerrado.
Ateno: semelhantemente
ao while...do, a varivel
de controle deve ser
atualizada dentro do
prprio loop.
17.4 Prtica:
Digite e execute os programas acima.
Para os programas acima, faa as seguintes alteraes:
No programa FOR faa listar a tabuada de 1 a 20.
No programa WHILE inicialize a varivel de controle i com
11.
No programa REPEAT inicialize a varivel de controle i
com 11.
26
18 Variveis Multidimensionais
18.1 Objetivo: apresentar o conceito de variveis multidimensionais
(vetores e matrizes).
18.2 Recursos
da linguagem:
delay,begin..end.
program,
write,
read,
for...do,
18.3 Exemplo:
(prg17a)
program vetor_manual;
uses crt;
cont nmax = 5;
type
vetor = array[1..nmax] of integer;
var
i: integer;
vet: vetor;
begin
for i := 1 to nmax do
begin
writeln(entre como nmero);
readln(vet[i]); {preenchendo o vetor, na posicao i}
end;
end.
18.4 Prtica:
Faa um programa que imprima o vetor acima e na ordem inversa.
necessrio digitar o programa acima.
Idem acima, so que imprime na ordem correta da entrada de dados.
Faa um programa que preencha um vetor de 10 posies, apenas com
nmeros pares.
Idem para mpares.
Faa um programa que aceite uma palavra de at 10 caracteres e
imprima na ordem inversa. A entrada da palavra deve ser de caracter
a caracter.
Acione ao programa acima a seguinte funcionalidade: imprimir a
posio i do vetor onde ocorrer uma letra informada. Faa uma menu
de opes.
18.5 Desafio:
27
19 Matrizes
19.1 Objetivo: apresentar conceitos de matrizes.
19.2 Recursos da Linguagem: program, begin..end, for...do.
19.3 Exemplo:
(prg18a)
program matriz;
uses crt;
const nlinmax = 10; ncolmax = 10;
type matriz = array[1..nlinmax, 1..nconmax];
var i, j : integer;
minha_matriz : matriz;
begin
for i := 1 to nlinmax do
begin
for j := 1 to ncolmax do
begin
randomize;
valor := random(j);
minha_matriz[i,j] := valor;
end; {end fo for j}
end; {endo do for i}
end. {end do pgm}
19.4 Prtica:
Digite e execute o programa acima do exemplo18.1
Atualize o programa acima para que este leia uma matriz randmica
e a imprima ;
Faa uma programa que imprima apenas os valores da matriz cujos os
nmeros da linha sejam iguais aos nmeros das colunas.
Faa uma programa que imprima apenas os valores da matriz cujos os
nmeros da linha sejam iguais ou menores aos nmeros das colunas.
Faa uma programa que imprima apenas os valores da matriz cujos os
nmeros da linha sejam iguais ou maiores aos nmeros das colunas.
19.5 Desafio:
28
20 Procedimentos.
20.1 Objetivo: apresentar a utilizao de trechos de programas
reutilizveis (procedimentos), sem passagem de parmetros.
20.2 Recursos da Linguagem: program, begin...end, writeln, readln,
procedure.
20.3 Exemplo:
(prg19a)
program procedimento;
uses crt;
var
lado, base, altura, area : real; {variveis globais, vistas por
todo o pgm}
opcao : integer;
procedure quadrado;
begin
writeln(digite o lado );
readln(lado);
area := lado*lado;
writeln(area:4:2);
delay(1000);
end; {fim do procedure quadrado}
procedure retangulo;
begin
writeln(digite a base e altura);
readln(base, altura);
area := base * altura;
writeln(area:4:2);
delay(1000);
end; {fim do procedimento retngulo}
Begin {inicio do programa principal!!!}
Writeln(escolha qual a sua opo);
Writeln(1 quadrado);
Writeln(2 retngulo);
Readln(opcao);
Case opcao of
1 : quadrado;
2: retangulo;
else writeln(opcao invalida);
end; {fim do case}
end. {end do pgm}
20.4 Prtica:
21 Passagem de parmetro.
21.1 Objetivo: mostrar passagem de parmetro de procedimentos, tanto
por valor quanto por referncia.
21.2 Recursos da Linguagem: program, begin...end, writeln, readln,
procedure.
21.3 Exemplo:
(prg20a)
program procedimento2;
uses crt;
var
a,b,c : integer; { estas variveis so globais }
procedure incrementa (x:integer, var y:integer);
{ Em x a passagem do parmetro dita por valor, ou seja, e
passado uma cpia do valor da varivel para o procedimento. Em y a
passagem por referncia, ou seja, passado um endereo de memria,
sendo assim se o valor da varivel for alterado no procedimento este
volta alterado ao programa principal; x e y so os parmetros do
procedimento. }
begin
x := 2*x + y;
y := 3*x;
writeln(este o valor de x, x);
writeln(este o valor de y, y);
delay(2000);
end; { fim do procedimento}
begin { inicio do programa principal}
a := 2;
b:= 3;
writeln(este o valor de a , a);
writeln(este o valor de b, b);
incrementa(a,b);
writeln(este o valor de a , a);
writeln(este o valor de b, b);
end.
21.4 Prtica:
30
22 Funes
22.1 Objetivo: mostrar o conceito de funes.
22.2 Recursos da Linguagem: function <nome da funo>
22.3 Exemplo:
(prg21a)
program eleva_ao_cubo;
uses crt;
var
x
: real;
function cubo(x :real);
begin
cubo := x*x*x;
end; { fim da funo}
Begin
Writeln(digite um nmero);
Readln(x);
Writeln(este o cubo de x: , cubo(x));
End.
22.4 Prtica:
31
23 Escopo de variveis.
23.1 Objetivo: apresentar o conceito de escopo de variveis.
23.2 Recursos da Linguagem: var, procedure, function, begin...end.
23.3 Exemplo:
(prg22a)
program escopo_de_variveis;
var
global_x, global_y : integer; {variveis globais, visveis em
todo o programa}
procedure incrementa;
var local_x : integer; {esta varivel s vista dentro do
procedimento incrementa}
begin
local_x := 3;
local_x := local_x + 1;
global_x := local_x;
writeln(local_x = , local_x);
writeln(global_x = , local_x);
delay(1000);
end;
procedure troca (var x : integer, y : integer); { x passado por
referncia e y por valor}
var temp :integer;
begin
temp := x;
x := y;
y := temp;
writeln(dentro do procedimento x igual a , x);
writeln(dentro do procedimento y igual a , y);
delay(1000);
end;
begin {programa principal}
writeln(digite dois nmeros:);
readln(global_x);
readln(global_y);
incrementa;
troca(global_x, global_y);
writeln(global_x = , global_x);
writeln(global_y = , global_y);
end.
23.4 Prtica:
32
24 Registros.
24.1 Objetivo: apresentar o conceito de registro.
24.2 Recursos da Linguagem: type, record.
24.3 Exemplo:
(prg23a)
program cadastro;
const
nmax = 5;
type
ficha = record
nmat
: integer;
nome
: string;
end; { observe que na descrio do registro existe um end sem
begin}
vetor = array[1..nmax] of ficha;
var
vetfichas
: vetor;
i
: integer;
procedure inclui;
begin
for i := 1 to nmax do
begin
writeln(digite o nmero de matrcula do aluno);
readln(vetfivhas[i].nmat);
writeln(digite o nome do aluno);
readln(vetfivhas[i].nome);
end; {fim do for}
end;
procedure imprime;
begin
writeln(matricula e nome);
for i := 1 to nmax do
begin
writeln(vetfichas[i].nmat);
writeln(vetfichas[i].nome);
end; {end do for}
end; {end da procedure}
Begin { programa principal}
inclui;
imprime;
delay(1000);
end. {end do programa principal}
24.4 Prtica:
25 Registros.
25.1 Objetivo: Apresentar o conceito de registros e comandos para
operaes com arquivos textos.
25.2 Recursos da Linguagem: assign; rewrite; close.
25.3 Exemplo:
(prg24a)
program arquivo_texto;
uses crt;
var
nome
: string[30];
nota
: real;
meuarquivo : text;
grava
: boolean;
op
: string;
begin
assign(meuarquivo, meuarq.dat)
{ observe que meuarquivo o nome lgico do arquivo}
{meuarquivo.dat o nome fsico do arquivo}
rewrite(meuarquivo)
{ este comando cria o arquivo para gravao pela primeira vez}
grava := true;
while grava do
begin
writeln(digite o nome do aluno );
readln(nome);
writeln(digite a nota do aluno );
readln(nota);
writeln(meuarquivo,nome,nota(4:2));
writeln(deseja gravar mais registros? S/N );
readln(op);
if op = N or op = n then grava := false;
end; {while}
close(meuarquivo); {fechabdo o arquivo}
end.
25.4 Prtica:
34
26 Arquivos texto.
26.1 Objetivo: ler arquivos do tipo texto, mostrando na tela ou na
impressora os resultados pesquisados, tendo como base o
programa da aula 24.
26.2 Recursos da Linguagem: reset; assign; close; readln; eof() .
26.3 Exemplo:
(prg25a)
program ler_arquivo_texto;
uses crt;
var
nome
: string[30];
nota
: real;
meuarquivo : text;
begin
assign(meuarquivo, meuarq.dat);
reset(meuarquivo) ;
{ este comando abre o arquivo e no primeiro registro.}
writeln(este o arquivo);
readln(meuarquivo, nome, nota); {primeira leitura}
while not eof(meuarquivo) do
begin
writeln(nome);
writeln(nota);
readln(meuarquivo, nome, nota); {leitura de reposio}
end; {while}
close(meuarquivo); {fechabdo o arquivo}
end.
(prg25b)
program adiciona_dados_em_arquivo_texto;
uses crt;
const nmax = 10;
var
nome
: string[30];
nota
: real;
meuarquivo : text;
i
: integer;
begin
assign(meuarquivo, meuarq.dat);
reset(meuarquivo);
for i := 1 to nmax do
begin
append(meuarquivo); {posiciona na ltima posio do
arquivo}
writeln(digite o nome);
readln(nome);
writeln(digite a nota);
35
readln(nota);
writeln(meuarquivo, nome,nota);
end; {for}
close(meuarquivo); {sempre que houver um assign haver um close}
end.
26.4 Prtica:
36
27 Arquivo Direto.
27.1 Objetivo: apresentar o conceito de arquivo direto (file of...).
27.2 Recursos da Linguagem: assign, reset, rewrite, file of e close.
27.3 Exemplo:
(prg26a)
program gravar_arquivo_indexado;
use crt;
const nmax = 10;
type registro = record
nome : string[10];
nota
: real;
end;
var
reg
: registro;
i
: integer;
meuarquivo_index : file of reg
Begin
Assign(meuarquivo_index, meuarqid.dat);
Rewrite(meuarquivo_index);
For i:= 1 to nmax do
Begin
Writeln(digite o nome);
Readln(reg.nome);
Writeln(digite a nota);
Readln(reg.nota);
Write(meuarquivo_index, reg); {note que o comando write
foi usado em arquivo indexado}
End;
Close(meuarquivo_index);
End.
27.4 Prtica:
37
28 Arquivo indexado.
28.1 Objetivo: inserir dados em um arquivo do tipo FILE OF
28.2 Recursos da Linguagem: assign, reset, write, seek, filesize, close.
28.3 Exemplo:
(prg27a)
program insere_em_arquivo_direto;
{ este programa insere mais dados em um arquivo j existente}
uses crt;
const nmax = 10;
type
registro_direto = record
nome : string[10];
nota
: real;
end;
var
reg : registro_direto;
meuarquivo_index : file of registro_direto;
i
: integer;
Begin {programa principal}
Assign(meuarquivo_index, meuarqid.dat);
Reset(meuarquivo_index);
For i := 1 to nmax do
Begin
Writeln(qual o nome do aluno);
Readln(reg.nome);
Writeln(qual a nota do aluno);
Readln(reg.nota);
Seek(meuarquivo_index,filesize(meuarquivo_index))
{procura o final do arquivo para inserir mais dados}
Write(meuarquivo_index,reg);
{ note que para gravar o arquivo direto deve-se usar
apenas o comando write; no necessrio especificar
os atributos individuais do registro}
end; {end do for}
close(meuarquivo_index); {no esquea de fechar seu arquivo}
end.
38
(prg27b)
program ler_dados_em_arquivo_direto;
{ este programa ler dados de um arquivo j existente}
uses crt;
type
registro_direto = record
nome : string[10];
nota
: real;
end;
var
reg : registro_direto;
meuarquivo_index : file of registro_direto;
Begin {programa principal}
Assign(meuarquivo_index, meuarqid.dat);
Reset(meuarquivo_index);
While not(eof(meuarquivo_index)) do
{ eof a funo que identifica o fim do arquivo}
Begin
Read(meuarquivo_index,reg);
Writeln(reg.nome);
writeln(reg.nota);
delay(3000);
{ somente se pode ler do arquivo file of com o comando
read}
end; {end do for}
close(meuarquivo_index); {no esquea de fechar seu arquivo}
end.
28.4 Prtica:
39