You are on page 1of 39

Linguagem de Programao

Programao Pascal
Mrcio F. Campos
Carlos A. Pilar

Verso 23 outubro de 2006

MEU PRIMEIRO PROGRAMA .................................................................................................6


1.1
1.2
1.3
1.4
1.5

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

ALGUMAS FUNES PR-DEFINIDAS................................................................................ 10


3.1
3.2

OBJETIVO: APRESENTAR FUNES PR-DEFINIDAS. ................................................................. 10


RECURSOS DA LINGUAGEM: PROGRAM, WRITELN, DELAY, BEGIN/END, READLN; SQR(ELEVAR
AO QUADRADO), SQRT(RAIZ QUADRADA).......................................................................................... 10
3.3
EXEMPLO: ............................................................................................................................. 10
3.4
PRTICA................................................................................................................................ 10
4

ATRIBUIO DE VALORES................................................................................................... 11
4.1
4.2

OBJETIVO: APRESENTAR O COMANDO DE ATRIBUIO DE VALORES VARIVEIS. .................... 11


RECURSOS DA LINGUAGEM: PROGRAM, WRITELN, DELAY, BEGIN/END, READLN; SINAL DE
ATRIBUIO :=.............................................................................................................................. 11
4.3
EXEMPLO: ............................................................................................................................. 11
4.4
PRTICA:............................................................................................................................... 11
4.5
DESAFIO:............................................................................................................................... 11
5 .......................................................................................................................................................... 13
6

CONSTANTES. .......................................................................................................................... 13
6.1
6.2
6.3
6.4
6.5

VARIVEIS ALFANUMRICAS. ............................................................................................ 15


7.1
7.2
7.3
7.4

OBJETIVO: APRESENTAR O CONCEITO DE VARIVEIS ALFANUMRICAS. .................................... 15


RECURSOS DA LINGUAGEM: PROGRAM, WRITELN, DELAY, BEGIN/END, CONST....................... 15
EXEMPLO: ............................................................................................................................. 15
PRTICA:............................................................................................................................... 15

CONTROLES DO FLUXO. ....................................................................................................... 16


8.1
8.2
8.3
8.4

OBJETIVO: APRESENTAR O CONCEITO DE CONSTANTE. ............................................................. 13


RECURSOS DA LINGUAGEM: PROGRAM, WRITELN, DELAY, BEGIN/END, CONST....................... 13
EXEMPLO: ............................................................................................................................. 13
PRTICA:............................................................................................................................... 13
DICA: .................................................................................................................................... 14

OBJETIVO: APRESENTAR CONTROLES DE FLUXO DE PROGRAMA............................................... 16


RECURSOS DA LINGUAGEM: PROGRAM, WRITELN, DELAY, BEGIN/END, IF/THEN..................... 16
EXEMPLO: ............................................................................................................................. 16
PRTICA:............................................................................................................................... 16

FUNES MOD E DIV ............................................................................................................. 17


9.1
9.2
9.3

OBJETIVO: APRESENTAR AS FUNES MOD E DIV. .................................................................... 17


RECURSOS DA LINGUAGEM: PROGRAM, WRITELN, DELAY, BEGIN/END, IF/THEN, MOD E DIV.... 17
EXEMPLO: ............................................................................................................................. 17
2

9.4
10

PRTICA:............................................................................................................................... 17
EXERCCIOS. ........................................................................................................................ 18

10.1
10.2

OBJETIVO: LISTA DE EXERCCIOS. ........................................................................................... 18


RECURSOS DA LINGUAGEM: UTILIZAO DOS COMANDOS E FUNES APRENDIDAS AT O
MOMENTO......................................................................................................................................... 18
10.3 PRTICA:............................................................................................................................... 18
11

LAOS.................................................................................................................................... 19
11.1
11.2

OBJETIVO: APRESENTAR COMANDOS DE REPETIO FOR...DO (LOOP). ...................................... 19


RECURSOS DA LINGUAGEM : PROGRAM, WRITE, WRITELN, DELAY, BEGIN/END; READ,
READLN; FOR...DO. ............................................................................................................................ 19
11.3 EXEMPLOS:............................................................................................................................ 19
11.4 PRTICA:............................................................................................................................... 19
12

LAOS II. ............................................................................................................................... 20


12.1
12.2

OBJETIVO: APRESENTAR COMANDOS DE REPETIO WHILE...DO (LOOP). .................................. 20


RECURSOS DA LINGUAGEM : PROGRAM, WRITE, WRITELN, DELAY, BEGIN/END; READ,
READLN; WHILE...DO. ........................................................................................................................ 20
12.3 EXEMPLO: ............................................................................................................................. 20
12.4 PRTICA:............................................................................................................................... 20
13

LAOS III............................................................................................................................... 21
13.1
13.2

OBJETIVO: APRESENTAR COMANDOS DE REPETIO REPEAT...UNTIL (LOOP). ............................ 21


RECURSOS DA LINGUAGEM : PROGRAM, WRITE, WRITELN, DELAY, BEGIN/END; READ,
READLN; REAPEAT...UNTIL................................................................................................................. 21
13.3 EXEMPLO: ............................................................................................................................. 21
13.4 PRTICA:............................................................................................................................... 21
14

EXERCCOS LAOS. ........................................................................................................... 22


14.1
14.2

OBJETIVO: LISTA DE EXERCCIOS EM LOOPS. .......................................................................... 22


RECURSOS DA LINGUAGEM: UTILIZE OS COMANDOS DE LOOP: FOR...DO, WHILE...DO,
REPEAT...UNTIL. ................................................................................................................................ 22
14.3 PRTICA:............................................................................................................................... 22
15

SELEO MLTIPLA.......................................................................................................... 23
15.1
15.2
15.3
15.4

16

OBJETIVO: APRESENTAR O COMANDO DE SELEO MLTIPLA. CASE...OF. ............................... 23


RECURSOS DA LINGUAGEM: PROGRAM, WRITE, WRITELN, DELAY, BEGIN/END., CASE...OF..... 23
EXEMPLO: ............................................................................................................................. 23
PRTICA:............................................................................................................................... 24
EXECCIOS LAOS II.......................................................................................................... 25

16.1
16.2
16.3
16.4
17

OBJETIVOS: APRESENTAR PROBLEMAS DE LAOS MLTIPLOS( LOOPS DENTRO DE LOOPS). ..... 25


RECURSOS DA LINGUAGEM: PROGRAM, WRITLN, READLN, BEGIN, END, FOR...DO...................... 25
EXEMPLO: ............................................................................................................................. 25
PRTICA:............................................................................................................................... 25
DIFERENAS ENTRE OS TIPOS DE LAOS.................................................................... 26

17.1

OBJETIVO: DESTACAR AS PRINCIPAIS DIFERENAS ENTRE OS COMANDOS DE REPETIO, FOR...DO,


REAPEAT...UNTIL E WHILE...DO........................................................................................................... 26
17.2 RECURSOS DA LINGUAGEM: PROGRAM, BEGIN...END, FOR...DO, REAPEAT...UNTIL E WHILE...DO.26
17.3 EXEMPLO: ............................................................................................................................. 26
17.4 PRTICA:............................................................................................................................... 26
18

VARIVEIS MULTIDIMENSIONAIS ................................................................................. 27


18.1

OBJETIVO: APRESENTAR O CONCEITO DE VARIVEIS MULTIDIMENSIONAIS (VETORES E


MATRIZES). ....................................................................................................................................... 27
3

18.2
18.3
18.4
18.5
19

RECURSOS DA LINGUAGEM: PROGRAM, WRITE, READ, FOR...DO, DELAY,BEGIN..END................. 27


EXEMPLO: ............................................................................................................................. 27
PRTICA:............................................................................................................................... 27
DESAFIO:............................................................................................................................... 27
MATRIZES............................................................................................................................. 28

19.1
19.2
19.3
19.4
19.5
20

OBJETIVO: APRESENTAR CONCEITOS DE MATRIZES. ................................................................. 28


RECURSOS DA LINGUAGEM: PROGRAM, BEGIN..END, FOR...DO. ................................................ 28
EXEMPLO: ............................................................................................................................. 28
PRTICA:............................................................................................................................... 28
DESAFIO:............................................................................................................................... 28
PROCEDIMENTOS. .............................................................................................................. 29

20.1 OBJETIVO: APRESENTAR A UTILIZAO DE TRECHOS DE PROGRAMAS REUTILIZVEIS


(PROCEDIMENTOS), SEM PASSAGEM DE PARMETROS.......................................................................... 29
20.2 RECURSOS DA LINGUAGEM: PROGRAM, BEGIN...END, WRITELN, READLN, PROCEDURE.............. 29
20.3 EXEMPLO: ............................................................................................................................. 29
20.4 PRTICA:............................................................................................................................... 29
21

PASSAGEM DE PARMETRO............................................................................................ 30
21.1

OBJETIVO: MOSTRAR PASSAGEM DE PARMETRO DE PROCEDIMENTOS, TANTO POR VALOR


QUANTO POR REFERNCIA.................................................................................................................. 30
21.2 RECURSOS DA LINGUAGEM: PROGRAM, BEGIN...END, WRITELN, READLN, PROCEDURE.............. 30
21.3 EXEMPLO: ............................................................................................................................. 30
21.4 PRTICA:............................................................................................................................... 30
22

FUNES............................................................................................................................... 31
22.1
22.2
22.3
22.4

23

OBJETIVO: MOSTRAR O CONCEITO DE FUNES. ..................................................................... 31


RECURSOS DA LINGUAGEM: FUNCTION <NOME DA FUNO>................................................... 31
EXEMPLO: ............................................................................................................................. 31
PRTICA:............................................................................................................................... 31
ESCOPO DE VARIVEIS. .................................................................................................... 32

23.1
23.2
23.3
23.4
24

OBJETIVO: APRESENTAR O CONCEITO DE ESCOPO DE VARIVEIS............................................... 32


RECURSOS DA LINGUAGEM: VAR, PROCEDURE, FUNCTION, BEGIN...END................................... 32
EXEMPLO: ............................................................................................................................. 32
PRTICA:............................................................................................................................... 32
REGISTROS........................................................................................................................... 33

24.1
24.2
24.3
24.4
25

OBJETIVO: APRESENTAR O CONCEITO DE REGISTRO. ............................................................... 33


RECURSOS DA LINGUAGEM: TYPE, RECORD............................................................................. 33
EXEMPLO: ............................................................................................................................. 33
PRTICA:............................................................................................................................... 33
REGISTROS........................................................................................................................... 34

25.1

OBJETIVO: APRESENTAR O CONCEITO DE REGISTROS E COMANDOS PARA OPERAES COM


ARQUIVOS TEXTOS. ........................................................................................................................... 34
25.2 RECURSOS DA LINGUAGEM: ASSIGN; REWRITE; CLOSE. ........................................................... 34
25.3 EXEMPLO: ............................................................................................................................. 34
25.4 PRTICA:............................................................................................................................... 34
26

ARQUIVOS TEXTO. ............................................................................................................. 35


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. ........................................ 35
26.2 RECURSOS DA LINGUAGEM: RESET; ASSIGN; CLOSE; READLN; EOF() . ...................................... 35
26.3 EXEMPLO: ............................................................................................................................. 35
26.4 PRTICA:............................................................................................................................... 36
4

27

ARQUIVO DIRETO............................................................................................................... 37
27.1
27.2
27.3
27.4

28

OBJETIVO: APRESENTAR O CONCEITO DE ARQUIVO DIRETO (FILE OF...). ................................... 37


RECURSOS DA LINGUAGEM: ASSIGN, RESET, REWRITE, FILE OF E CLOSE. .................................. 37
EXEMPLO: ............................................................................................................................. 37
PRTICA:............................................................................................................................... 37
ARQUIVO INDEXADO. ........................................................................................................ 38

28.1
28.2
28.3
28.4

OBJETIVO: INSERIR DADOS EM UM ARQUIVO DO TIPO FILE OF ................................................ 38


RECURSOS DA LINGUAGEM: ASSIGN, RESET, WRITE, SEEK, FILESIZE, CLOSE. ............................ 38
EXEMPLO: ............................................................................................................................. 38
PRTICA:............................................................................................................................... 39

1 Meu Primeiro Programa


1.1

Objetivo.

Apresentar a elaborao de um programa simples em pascal, mostrando a estrutura bsica de


um programa nessa linguagem.

1.2

Recursos da Linguagem.

A linguagem pascal possui um conjunto de palavras reservadas que so comandos executados


pelo computador na resoluo de um algoritmo escrito em uma linguagem de programao. As
palavras reservadas no podem ser utilizadas de outra forma. Os principais comandos da
linguagem pascal apresentados neste primeiro programa so.
Program: esta palavra reservada delimita o incio do programa.
Write: esta comando escreve um conjunto de carateres em um perifrico de sada que pode
ser uma impressora, um arquivo ou em uma impressora.
Writeln: este comando faz exatamente aquilo que o comando write, porm faz pular uma
linha.
Delay: aguarda um tempo fixo pr-determinado.
Begin/End: este par de comandos define o escopo de um conjunto de comandos/instrues.
{ }: o conjunto de pares de chaves possibilita escrever comentrios ao longo do programa.

1.3

Exemplo:
(prg1a)

program primeiro;

{cabealho o programa}

uses crt;

{uso da unit crt}

begin

{declara o incio do prg}


clrscr;

{limpa a tela}

write(al mundo);

{escreve na tela sem mudar de


linha}

delay(3000);

{impede a execuo imediata do


prximo

comando}

end.

1.4

Prtica:

Digite o programa acima no turbo pascal e faa-o executar.


Aumente ou diminua o tempo do comando delay, compile, execute e verifique o que
acontece.
6

O comando textcolor(Red) modifica a cor do texto. Escreva este comando antes do


comando write. Compile, execute e verifique o que acontece. O pascal possui uma tabela
de cores que podem ser usadas.
O comando writeln escreve na tela mudando de linha. Modifique o programa acima de
forma imprimir de 5 a 10 linhas sendo cada uma de uma cor diferente.

1.5

Adiante.

A tabela 1 lista as palavras reservadas no pascal padro e no podem se modificadas.


AND

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.

Apresentar o conceito de varivel e os comandos de leitura.

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 Algumas Funes pr-definidas.


3.1

Objetivo: apresentar funes pr-definidas.

3.2

Recursos da Linguagem: Program, Writeln, Delay, Begin/End,


readln; SQR(elevar ao quadrado), SQRT(raiz quadrada).

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.

Modifique o programa acima de forma a calcular a raiz quadra de de


um nmero.


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

Objetivo: apresentar o comando de atribuio de valores variveis.

4.2

Recursos da Linguagem: Program, Writeln, Delay, Begin/End,


readln; sinal de atribuio :=.

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;

{ou area := sql(lado)}

writeln(este o valor da rea do quadrado, area);


delay(3000);
end.

4.4

{ o end

final do programa sempre acaba em ponto}

Prtica:
Digite, compile e execute o programa acima.

Faa uma programa que calcule a rea do retngulo (base x altura).




Faa uma programa


altura)/2.


que

calcule

rea

do

tringulo

(base

Faa uma programa que calcule a rea do trapzio ((base maior +


base menor) x altura )/2.


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

Faa um programa que calcule a


rea da casa acima para qualquer
valor, mantendo o formato geomtrico da casa (quarto= retangulo;
sala= trapzio + tringulo; cozinha = retngulo; banheiro =
retngulo).

12

5
6 Constantes.
6.1

Objetivo: apresentar o conceito de constante.

6.2

Recursos da Linguagem: Program, Writeln, Delay, Begin/End, const.

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:

Como visto os tipo desempenham o papel de informar ao programa como


sero interpretados os bytes associados s varives. Porm cada tipo
possui um escopo de valores. Ex:
Tipo
escopo
Const
: valor nico.
Byte
: 0 a 255
Integer
: -32768 a 32767
Longint
: -2147483648 a 2147483647
Shortint
: -128 a 127
Real
: qualquer nmero real (com preciso de
11 casas aps a vrgula).

14

7 Variveis Alfanumricas.
7.1

Objetivo: apresentar o conceito de variveis alfanumricas.

7.2

Recursos da Linguagem: Program, Writeln, Delay, Begin/End, const.

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

Objetivo: apresentar controles de fluxo de programa.

8.2

Recursos da Linguagem: Program, Writeln, Delay, Begin/End, if/then.

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 Funes mod e div


9.1

Objetivo: apresentar as funes mod e div.

9.2

Recursos da linguagem: Program, Writeln, Delay, Begin/End, if/then,


mod e div.

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

< 13 anos : infantil


de 13 aos 19 : adolescente
de 20 aos 35: jovem
de 36 aos 60: meia idade
61 em diante: idoso

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:

Faa um programa que imprima os 20 primeiro pares a partir do


0(zero). Dica: use a funo mod.
Idem para os mpares.
Idem para os primos. Lembre-se que os nmeros primos so aqueles
divididos por si mesmos e por 1.
Idem para a raiz quadrada dos 20 primeiros nmeros inteiros. Dica:
use a funo sqrt.
Idem para o quadrado dos 20 primeiros nmeros inteiros. Dica: use
a funo sqr.
Faa uma programa que solicite ao usurio digitar 10 nmeros
distintos, tendo como resposta do mesmo o maior deles.
Idem para o menor.

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:

Faa um programa que imprima os 20 primeiro pares a partir do


0(zero). Dica: use a funo mod.
Idem para os mpares.
Idem para os primos. Lembre-se que os nmeros primos so aqueles
divididos por si mesmos e por 1
Idem para a raiz quadrada dos 20 primeiros nmeros inteiros. Dica:
use a funo sqrt.
Idem para o quadrado dos 20 primeiros nmeros inteiros. Dica: use
a funo sqr.
Faa uma programa que solicite ao usurio digitar 10 nmeros
distintos, tendo como resposta do mesmo o maior deles.
Idem para o menor.

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:

Faa um programa que imprima os 20 primeiro pares a partir do


0(zero). Dica: use a funo mod.
Idem para os mpares
Faa um programa que imprima os 20 primeiro pares a partir do
0(zero). Dica: use a funo mod.
Idem para os mpares.
Idem para os primos. Lembre-se que os nmeros primos so aqueles
divididos por si mesmos e por 1
Idem para a raiz quadrada dos 20 primeiros nmeros inteiros. Dica:
use a funo sqrt.
Idem para o quadrado dos 20 primeiros nmeros inteiros. Dica: use
a funo sqr.
Faa uma programa que solicite ao usurio digitar 10 nmeros
distintos, tendo como resposta do mesmo o maior deles.
Idem para o menor.

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 Execcios Laos II.


16.1 Objetivos: apresentar problemas de laos mltiplos( Loops dentro
de loops).
16.2 Recursos da linguagem: program, writln, readln, begin, end, for...do.
16.3 Exemplo:
(Prg15a)
program tabuada;
uses crt;
var i,j
: integer;
begin
for i := 1 to 9 do
begin
clrscr;
writeln(esta a tabuada de, i);
for j := 1 to 9 do
begin
writeln(i, x ,j, = , i*j);
end; {fim do j}
writeln(para a proxima tabela digite qualquer tecla);
readkey();
end; {fim do i}
end.

16.4 Prtica:

Faa um aprograma que usando-se um loop dentro de outro, como o do


exemplo 14.1, em que mostre quando o valo r de i > j.
Faa uma tabuada que informe mostre os valores de 1 a 20.
Faa um programa que mostre uma tabuada dado uma faixa de valores.
Faa uma programa que calcule quantos tringulos retngulos
existem, dado que os lados podem variar na faixa de
valores de 1
a 25. Dica: use o teorema de Pitgoras (a2 = b2 + c2); um tringulo
s existe se cada lado for menor que a soma de outros dois;
ateno, este programa necessita de 3 loops embutidos um dentro do
outro!
Idem para o problema acima, exceto que para a frmula a3 = b3 + c3 .
Sendo que neste caso esta frmula no est associada a nenhuma
figura geomtrica!

25

17 Diferenas entre os tipos de laos.


17.1 Objetivo: destacar as principais diferenas entre os comandos de
repetio, for...do, reapeat...until e while...do.
17.2 Recursos
da
Linguagem:
reapeat...until e while...do.

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 comando for...do deve ser


utilizado quando se sabe a
priori o nmero de repeties
que se deseja.
Ateno: no for...do a varivel
de controle (i) atualizada
automaticamente.

O while...do faz um teste de


condio no incio do loop,
caso esta seja verdadeira a
repetio executada
(begin..end do while), caso
seja falsa o controle do
programa passa para a
primeira instruo aps o
begin...end do while.
Ateno: observe que a
varivel de controle (i)
deve ser atualizada dentro
do prprio loop.

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:


Faa um programa que, dado um nome e o sobrenome de um indivduo,


imprima o sobrenome e o nome, nesta ordem! Ex: Rui Barbosa , o
programa imprime Barbosa, Rui.

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:

Faa um programa que preencha automaticamente uma matriz 11x11


sendo que toda a coluna 6 e linha 6 devem conter o nmero 1, de
outra forma deve conter 0 (forma de cruz). O programa deve, tambm,
imprimir a respectiva matriz.
Faa um programa que preencha automaticamente uma matriz 11x11
sendo que deve ser formado uma estrela. Tenha como base as linhas 3
e 9 e as coluna 6. O programa deve, tambm, imprimir a respectiva
matriz.

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:

Digite e execute o programa acima (19.1).


Adicione ao programa acima os procedimentos para clculo da rea do
tringulo, trapzio, crculo e losango. Insira no programa uma
opo para sada.
Faa um programa que implemente uma calculadora. Para cada operao
utilize um procedimento diferente.
29

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:

Reescreva os programa de clculo da rea do tringulo e retngulo


passando a base e a altura por valor, usando procedimentos.
Reescreva os programa de clculo da rea do tringulo e retngulo
passando a base e a altura por referncia, usando procedimentos.

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:

Elabore uma funo que solicite um nmero e eleve ao expoente 15


(use o comando exp(ln)).
Elabore uma funo em que solicite uma cadeia de caracteres imprima
os 5 primeiros.
Dado a frmula matemtica f(x) = x 2 - 3x + 5. Faa uma programa que
calcule o f(x). Tendo como base o programa acima faa o mesmo para
as seguintes funes matemticas:
f(x) = 2x + 5
f(x) = x7 + 1
f(x) = e3

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:

Copie e execute o programa acima. Observe o que acontece com cada


varivel.
Adicione ao programa acima o seguinte comando: writeln(local_x),
dentro do programa principal. Execute-o.

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:


Digite e execute o programa acima.


Faa um programa, que utilize um vetor de registros( mximo de 6
proprietrios), que mostre o nmero do chassi do carro, o nome do
proprietrio e a data de pagamento do IPVA. Ao final imprima na
ordem inversa ao que foi digitado.
33

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:

Elabore um programa para gravar os dados de uma agenda: nome,


endereo, telefone, esporte preferido.
Elabore um programa para gravar os dados de uma
agenda cujo nome
seja maior que C e menor que M.

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:


Elabore um menu de opes que permita as seguintes opes:


Grava pela primeira vez dados de um poo de petrleo
(nmero do poo, vazo,em barris por hora, e a
profundidade do poo).
Insere mais 15 novos poos.
Ler os dados dos arquivos e imprime na tela.
Pesquise a funo IORESULT(nome do arquivo), e verifique como o
programa acima pode ser melhorado.


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.

Ateno: o arquivo do tipo texto mais lento, no que diz respeito ao


acesso, do que o arquivo indexado. Exemplo, para ler o ensimo
registro em um arquivo texto, necessrio percorrer todos os
registros anteriores.

27.4 Prtica:


Faa um programa que crie um arquivo indexado que implemente uma


agenda com nome, endereo, telefone e e-mail.

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:


Faa um programa que utilize procedimentos de forma a criar um


arquivo, inserir mais dados, exibir um arquivo gravado na tela e
sair do programa. Escolha o tema.

39