Você está na página 1de 57

Resumo Terico Turbo Pascal 7.

0 - Prof Alexandre Rojas


1
Capitulo I Introduo ao Turbo Pascal
1. Instalao e inicializao do Turbo Pascal 7.0
J unto com sua documentao voc estar recebendo dois disquetes: um intitulado Turbo
Pascal 7.0 que uma verso compacta deste software. O outro um disquete vazio para
voc armazenar seus programas desenvolvidos durante o curso.
Para instalar o Turbo Pascal, proceda da seguinte forma:
Coloque o disquete no drive A:
No menu Iniciar Executar do Windows 95/98 digite: a:\Install.exe e pressione enter
ou clique em OK;
Capitulo II Itens Bsicos
2.1Tipos de dados
2.1.1 Numrico
Os dados numricos podem ser inteiros ou reais.
Os nmeros inteiros podem ser positivos ou negativos e no possuem parte
fracionria.
A faixa de valores inteiros possveis est relacionada com a definio do seu tipo
Tipo Faixa Tamanho em bytes
Shortint De 128 a 127 1
Integer De 32768 a 32767 2
Longint De 2147483648 a 2147483648 4
Byte De 0 a 255 1
Word De 0 a 65535 2

Exemplo: 4 -123 57
Os nmeros reais podem positivos ou negativos e possuem parte fracionria
A faixa de valores inteiros possveis est relacionada com a definio do seu tipo
Tipo Faixa Tamanho em bytes
Real De 2,9 x 10
39
a 1,7 x 10
38
( 10 a 12 dgitos) 6
Single De 1,5 x10
-45
a 3,4 x10
38
4
Double De 5,0 x 10
324
a 1,7 x 10
308
8
Extended De 3,4 x 10
4932
a 1,1 x 10
4932
10
Comp De 9,2 x 10
18
a 9,2 x 10
18
8

Observe-se que:
Os nmeros reais, a separao da parte inteira da parte fracionria representada pr
um(.) ponto e no pela (,) virgula.
No pode haver espaos em branco entre os algarismos usados
Se existir o ponto decimal, pelo menos um digito deve preceder e um digito deve suceder
o ponto
Podemos representar os valores reais pela notao escalar ou exponencial: por exemplo:
5.32 -34.89
7.8E3 onde a letra E significa 10 elevado a, assim teremos 7.8 x 1000 =78000
7.8 E-1 significa 7.8 x 0,1=0,78
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
2

2.1.2 Lgico
Os dados lgicos podem ser TRUE ou FALSE, isto verdadeiro ou falso. Este tipo de
dado ocupa apenas 1 byte e no pode ser lido ou escrito sendo usado para controle de
fluxo do programa.
Tipo Faixa Tamanho em bytes
Boolean 1 1



2.1.3 Literal ou caracter

So formados por um nico caracter ou por um conjunto de caracteres. Os caracteres
podem ser letras maisculas, minsculas smbolos especiais ou nmeros que sero
tratados como letras.
Este tipo de dados referenciado por
Tipo Faixa Tamanho em bytes
string De 1 a 255 1 byte por caracter +1 byte inicial com o
tamanho da cadeia
Char 1 1

Os dados destes tipos, dentro dos programas, so representados da seguinte forma:
Entre apstrofos: Ex: Alexandre
1234
arojas@ime.uerj.br
Pelo seu valor ASCII neste caso o smbolo #precede o cdigo ASCII
#166 significa
a
.
Pelo seu valor em hexadecimal neste caso o smbolo $ precede o cdigo
$FFFF

2.2 Formao dos Identificadores

Os identificadores so os nomes das variveis, dos programas, das constantes, das
rotinas e das unidades.
As regras para formao dos identificadores so:
Podem ter qualquer tamanho, porm somente os 63 primeiros caracteres sero
considerados;
Podem ter letras e nmeros ou underscore (sublinhado _)
No podem ter espaos em branco ou caracteres especiais ( )*&%$#@!+-=/?><.
Iniciam sempre por uma letra
No pode ser uma palavra reservada
Podem ser usadas letras maisculas ou minsculas

Palavras reservadas
AND ASM ARRAY BEGIN CASE
CONST DIV DO DOWNTO ELSE
END FILE FOR FUNCTION GOTO
IF IN LABEL MOD NIL
NOT OF OR PACKED PROCEDURE
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
3
Palavras reservadas
PROGRAM RECORD REPEAT SET THEN
TO TYPE UNTIL VAR WHILE
WITH

Exemplos:
Nome
Idade
Telefone
Nome_do_aluno
A1234

2.3 Estrutura de um programa Pascal
O Pascal uma linguagem procedural, ou seja, obedece a um procedimento sendo as
instrues executas em ordem seqencial.
Todo programa escrito em Pascal subdividido em 3 reas: rea de cabealho, rea de
declaraes e corpo do programa

2.3.1 rea de cabealho
O cabealho de um programa representado pela palavra PROGRAM <identificador>;
2.3.2 rea de declaraes
Em um programa no obrigatrio existir todas as sees.
Seo Funo Exemplo
USES Informa as unidades a serem
utilizadas. Caso uma rotina no esteja
no corpo do programa, a instrues
necessrias sero procuradas nas
unidades relacionadas
USES CRT;(usa o monitor)
USES PRN;(usa a
impressora)
CONST Atribui a identificadores valores
constantes que no podero ser
alterados dentro do programa
CONST
NMAX =100;
LABEL Define o nome dos rtulos LABEL
FIM, INICIO;
VAR Define as variveis usadas e seu tipo VAR
NOME: STRING[30];
IDADE:INTEGER;
TYPE Define um tipo de varivel criada pelo
usurio
TYPE
ALUNO=STRING[60];
PROCEDURE Define as instrues de um sub
programa
PROCEDURE LER;
FUNCTION Define as instrues de uma funo FUNCTION
SOMA:INTEGER;

2.3.3 Corpo do Programa
O programa propriamente dito est contido no corpo do programa. Esta rea tem incio
com a instruo BEGIN e trmino com a instruo END seguida de (.).
Chamamos de BLOCO ao conjunto de instrues entre o begin e o end.
2.3.4 Exemplo de programa Pascal
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
4
Program um;
Uses crt;
Var
A,b,c: integer;
Begin
Clrscr;
Write(Digite A );readln(a);
Write(Digite B );readln(b)
C:=a+b;
Writeln(A soma ,c);
End.
2.4 Comentrios
Os comentrios so introduzidos no corpo do programa para aumentar sua legibilidade.
Usa-se {para iniciar e }para terminar.
Ex. {Programador: Alexandre }
2.5 Declarao de variveis
As declaraes de variveis so obrigatrias para validar os identificadores. Todas as
variveis devem ser includas em uma nica declarao do tipo:
VAR
Lista de variveis : tipo;
Lista de variveis: tipo;
Os tipos de variveis podem ser:

Meia preciso
Numricas Inteiras preciso simples
Escalares Literais Reais preciso dupla
Pr definidas Lgicas
Ponteiros
Arrays(*) (dados homogneos)
Estruturados Registros(*) (dados heterogneos)
objetos
Definidas pelo usurio Enumerados
Conjuntos No
enumerados


(*) estes tipos sero apresentados durante o curso

Tipos Pr definidos
Os tipos pr definidos escalares j foram examinados no item 2.1
Exemplo de trecho de programa com declarao de variveis:

PROGRAM DOIS;{nome do programa}
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
5
USES CRT; {carrega as rotinas para a manipulao da tela}
VAR
NOME:STRING[30]; {a varivel nome armazena at 30 caracteres}
IDADE: INTEGER;
SEXO: CHAR;
SALARIO: REAL;
ACHEI: BOOLEAN;
BEGIN

END.
Tipo definido pelo usurio
O comando TYPE permite a definio de um tipo de dados utilizando os tipos pr
definidos na linguagem ou outro tipo previamente definido pelo usurio e permite uma
maior legibilidade do programa.
A declarao do tipo:
TYPE
VARIVEL =tipo;
A criao de um tipo no atribui a nenhuma varivel que deve ser realizada pela
declarao VAR.
Exemplo de trecho de programa com declarao de tipo e de variveis:
PROGRAM TRES;
USES CRT;
TYPE
TIPO_DE_NOME =STRING[30];
VAR
NOME: TIPO_DE_NOME;
IDADE: INTEGER;
SEXO: CHAR;
SALARIO: REAL;
BEGIN
....
END.
Podemos definir um conjunto heterogneo do tipo RECORD da seguinte forma:
PROGRAM TRES1;
USES CRT;
TYPE
TIPO_ALUNO =RECORD
NOME: STRING[30];
IDADE:INTEGER;
SEXO:CHAR;
END;{encerra a definio do RECORD}
VAR
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
6
ALUNO:TIPO_ALUNO
BEGIN
ALUNO.NOME:=ALEX;
ALUNO.IDADE :=20;
..
END.

Conjuntos
No Turbo Pascal um conjunto um grupo de nmeros ou caracteres inter-relacionados .
Os conjuntos so basicamente utilizados para verificar se um caracter ou um nmero
pertence ao conjunto. O operador IN verifica se um determinado valor pertence ao
conjunto
O tipo SET define o conjunto.
Exemplo usando conjunto:
PROGRAM QUATRO;
USES CRT;
VAR
LETRAS: SET OF A..Z;
NUMERO: SET OF 0..9;
TODOS: SET OF CHAR;
BEGIN
....
END.
Os conjuntos podem ser enumerados, como por exemplo:
PROGRAM QUATRO;
USES CRT;
VAR
INGREDIENTES:(OVOS,LEITE,MANTEIGA,FARINHA);
NUMERO: SET OF 0..9;
TODOS: SET OF CHAR;
BEGIN
....
END.

Constantes
As definies de constantes so realizadas antes das declaraes das variveis. Todas
as declaraes devem ser includas da seguinte forma:
CONST
Varivel =valor;
Algumas constantes esto pr definidas. Por exemplo:
PI 3.1416
Maxint - 32767
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
7
Exemplos de definio de constante:
PROGRAM CINCO;
USES CRT;
CONST
NOME =ANA FERREIRA;
NUM =100.
LETRA =A;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
8

Capitulo III - Comando de Atribuio

3.1 Um comando de atribuio sempre do tipo:

varivel :=expresso;
As expresses podem ser:
Expresses matemticas So escritas linearmente usando a notao matemtica. Os
operadores so:
Operador Funo Operandos Resultado
+ Somar Inteiro ou real Inteiro ou real
- Subtrair Inteiro ou real Inteiro ou real
* Multiplicar Inteiro ou real Inteiro ou real
/ Dividir Inteiro ou real Real
Div Quociente inteiro Inteiro Inteiro
Mod Resto da diviso Inteiro inteiro
Deve-se observar as seguintes regras:
No pode existir nenhuma operao implcita;
Dois operadores no podem aparecer juntos usa- se o parntesis para separar;
Por no existir operador para a exponenciao, temos: A
B
= EXP(B*LN(A));
Para cada ( deve existir um );
O smbolo :=significa atribua a e tem sentido diferente do igual da matemtica;
Hierarquia dos operadores:
1

sinal unrio
2

parntesis
3

funes
4

*/ div mod
5

+-
Em caso de mesma hierarquia resolve-se da esquerda para a direita.
Exemplos de operao matemtica:


A=2 B=3
Expresso Pascal Resultado
Z=A+B
2
Z:=(A+B)/2; Z=2,5
Z=A
B
Z:=EXP(LN(A)*B); Z=8
Z:=11 MOD A Z=1
Z:=11 DIV A Z=5

Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
9
3.2 Principais Funes Matemticas pr definidas

Funo Pascal Argumentos Resultado
| x | Valor absoluto ABS(X) Inteiro ou real Inteiro ou real
e
X
Exponencial de e EXP(X) Inteiro ou real Real
Sen(X) Seno de X SIN(X) X em radianos Real
Cos(X) Co seno de X COS(X) X em radianos Real
Arctg(x) Arco tangente de X ARCTAN(X) X em radianos Real
LN(X) Logaritmo neperiano de X LN(X) Inteiro ou real Real
Arredondar ROUND(X) Real Inteiro
Parte inteira de X TRUNC(X) Real Inteiro
Parte fracionria de X FRAC(X) Real Real
Raiz quadrada SQRT(X) Inteiro ou real Real
X
2
SQR(X) Inteiro ou real Real
Semente de no. randmico RANDOMIZE
No. randmico entre 0 e 1 RANDOM Real
No. randmico entre 0 e o parmetro RANDOM(x) Inteiro real
Exemplos:
Considere que A=3.0 B=2.0 C=7 D=4
O valor da expresso Z:=A/B *(C MOD D); ser igual a:
3.0/2.0 * (7 MOD 4)
3.0/2.0 * 3
1.5 * 3 =4.5
3.3 Expresses Lgicas
So expresses cujos operadores so lgicos e cujos operandos so relaes tendo
como resposta um valor booleano (true ou false).
Os operadores relacionais so

Operador Significado
= Igual
<> Diferente
<= Menor ou igual
>= Maior ou igual
< Menor
> maior
Exemplos
Para X=1 Y=2 Z=5 considere a expresso: X * X +Y >Z assim teremos: 1 * 1 +2 >5
3>5 o resultado FALSE
Para X=4 Y=3 Z=1, considere a expresso X * X +Y >Z, assim teremos 4 * 4 +3 >1
19 >1 logo o resultado TRUE
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
10
Os operadores lgicos AND, OR e NOT significam e ou no sendo usados para
conjuno disjuno e negao
3.4 Expresses Literais
So expresses cujas respostas so valores literais.
Principais funes literais pr definidas
Funo Descrio Exemplo
ORD(X) Retorna um valor inteiro que indica o valor
de X no cdigo ASCII
Z:=ORD(A);Z:=65
CHR(X) Retorna um caracter representado por X
inteiro no cdigo ASCII
Z:=CHR(65); Z:=A;
SUCC(X) Retorna o sucessor de X no cdigo ASCII Z:=SUCC(A); Z:=B;
PRED(X) Retorna o predecessor de X no cdigo
ASCII
Z:=PRED(166); Z:=165;
UPCASE(X) Retorna X maisculo Z:=UPCASE(a); z:=A;

3.5 Principais funes para tratamento de cadeias de caracteres (string)

Funo Descrio
COPY(cadeia, posio, nmero) Copia da cadeia, a partir da posio o numero de
caracteres
LENGTH(cadeia) Retorna o numero de caracteres da cadeia
POS(cadeia1,cadeia2) Retorna em que posio a cadeia1 aparece
dentro da cadeia2
DELETE(cadeia, posio, nmero) Apaga, a partir da posio o nmero de
caracteres
INSERT(cadeia1, cadeia2, posio) Insere na cadeia2 a cadeia1 a partir da posio
CONCAT(cadeia1,cadeia2) ou
Cadeia1+cadeia2+...
Soma as cadeias
VAL(cadeia, varivel, cdigo) Transforma a cadeia no equivalente numrico
inteiro ou real conforme a varivel. Se tiver xito o
cdigo vale zero.
STR(valor: tamanho, cadeia) Transforma um valor em uma cadeia
Exemplo de programa usando as funes de manipulao de cadeias
PROGRAM FUNCAO;
USES CRT;
CONST
CADEIA ='UNIVERSIDADE DO ESTADO DO RIO DE J ANEIRO';
SEQ ='VER';
SIGLA = 'UERJ ';
NUM1='123';
NUM2='123.4';
NUM3 =567.8;
VAR
A,B:INTEGER;
C,S,D,E,H:STRING[60];
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
11
F,COD:INTEGER;
G:REAL;
BEGIN
CLRSCR;
A:=POS(SEQ,CADEIA); {posio em que seq aparece na cadeia}
WRITELN('A =',A);{a partir da 4 posio}
B:=LENGTH(CADEIA);{quantidade de caracteres de cadeia}
WRITELN('B =',B);{40 caracteres}
C:=COPY(CADEIA,17,6);{copia de cadeia, a partir da posio 17,6 caracteres}
WRITELN('C =',C);{ESTADO}
D:=CADEIA;
DELETE(D,1,16);{retira da frase 16 caracteres a partir da posio 1}
WRITELN('D =',D);
E:=CADEIA +' - ' +SIGLA;{soma as duas cadeias}
WRITELN('E =',E);
VAL(NUM1,F,COD); {transforma 123 em numero inteiro}
WRITELN('F =',F, ' E INTEIRO');
VAL(NUM2,G,COD); {transforma 123.4 em numero real}
WRITELN('G =',G:6:2,' E REAL');
STR(NUM3:5:2,H);{transforma 567.8 em string}
WRITELN('H =',H);
READKEY;
END.
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
12
Captulo IV Comandos de Entrada e Sada

4.1 Os comandos de entrada so:
READ(arq, lista de variveis e/ou constantes e/ou expresses);
ou
READLN(arq, lista de variveis e/ou constantes e/ou expresses);
O comando READ l permanece na mesma linha. O comando READLN l e muda de
linha.
Os valores somente sero atribudos as variveis aps pressionarmos a tecla <enter>
Exemplos:
READ(NOME);
READLN(IDADE);
READKEY;
O comando READKEY; l a tecla pressionada atribuindo a uma varivel CHAR. No
necessrio pressionar <enter>
Exemplo:
RESP:=READKEY; a tecla pressionada ser atribuda a RESP.
4.2 Os comandos de sada so:
WRITE(arq, lista de variveis e/ou constantes e/ou expresses);
ou
WRITELN(arq, lista de variveis e/ou constantes e/ou expresses);
Onde:
O comando WRITE exibe e permanece na mesma linha. O comando WRITELN exibe e
muda de linha.
Arq: nome do arquivo selecionado para ler ou exibir. O uso de arquivos ser examinado
no decorrer do curso.
Podemos enviar dados para a impressora, para tanto o nome do arquivo lst. Devemos
incluir o comando USES PRINTER; Obs: Deve existir uma impressora conectada ao
computador.
Se a unidade selecionada para exibir for o monitor, no necessrio especificar o
arquivo.
Exemplos:
WRITE(A = , A); exibe a mensagem entre apstrofos A= e exibe o contedo da varivel
A, mantendo o cursor na mesma linha.
WRITELN(A+B); exibe a soma da varivel A +B
WRITE(LST, Isto vai para a impressora);

4.3 Comandos e funes para controle do vdeo
4.3.1 Comando para limpar a tela
CLRSCR; significa clear screen
Para usarmos este comando necessrio especificar USES CRT; no incio do programa
4.3.2 Comando para apagar a partir do cursor at o final da linha
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
13
CLREOL; significa clear end of line
4.3.3 Comando para posicionar o cursor na tela
GOTOXY(X,Y);
O comando posiciona na coluna X e na linha Y, sabendo-se que a tela tem 80 colunas e
25 linhas e que a primeira posio 1,1.
Exemplo:
pr ogr amexempl o333;
uses cr t ;
var x, y: byt e;
begi n
cl r scr ;
got oxy( 10, 5) ;
wr i t el n( ' Est ou na col una 10, l i nha 5' ) ;
x: =40;
y: =20;
got oxy( x, y) ;
wr i t el n( ' Est ou na col una 40 l i nha 20' ) ;
x: =x- 20; {x = 40- 20 =20}
y: =y+1; {y =20+1=21}
got oxy( x, y) ;
wr i t el n( ' Est ou na l i nha segui nt e pr essi one qq t ecl a par a
cont i nuar ' ) ;
r eadkey;
got oxy( 29, 21) ;
cl r eol ;
wr i t el n( ' <- - - - - - - obser ve o que apagou' ) ;
r eadkey;
end.

4.3.4 Comando para formatar os valores exibidos
WRITE(varivel: nmero total de casas: casas decimais);
Exemplo:
PROGRAM exempl o334;
uses cr t ;
var
r : r eal ;
i : i nt eger ;
nome: st r i ng[ 10] ;
begi n
cl r scr ;
r : =3. 1416;
wr i t el n( r ) ;
wr i t el n( r : 10: 4) ;
i : =10;
wr i t el n( i ) ;
wr i t el n( i : 5) ;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
14
nome: = ' Al ex' ;
wr i t el n( nome) ;
wr i t el n( nome: 10) ;
r eadkey;
end.
Resultaria na seguinte tela:
3.141599999902E00
3.1416
10
10
ALEX
ALEX

4.3.5 Comando para alterar a cor das letras:
TEXTCOLOR(cdigo da cor);
Exemplo: TEXTCOLOR(1); todas as letras passam para azul at que outro comando
altere.
Os cdigos das cores podem ser agrupados em 0-7 cores pasteis, 8-15 cores fortes, 16-
23 cores piscantes.
Numero
da cor
cor Numero da
cor
cor Numero
da cor
cor
0 Preto 8 Cinza escuro 16 Preto piscante
1 Azul 9 Azul claro 17 Azul piscante
2 Verde 10 Verde claro 18 Verde piscante
3 Ciano 11 Ciano claro 19 Ciano piscante
4 Vermelho 12 Vermelho claro 20 Vermelho piscante
5 Magenta 13 Magenta claro 21 Magenta piscante
6 Marrom 14 amarelo 22 Amarelo piscante
7 Cinza claro 15 Branco 23 Cinza piscante

A cor da letra padro branca (15)

4.5 Comando para alterar a cor do fundo da tela
TEXTBACKGROUND(cdigo da cor);
Os cdigos das cores so
Numero da cor cor 4 Vermelho
0 (padro) Preto 5 Magenta
1 Azul 6 Marrom
2 Verde 7 Cinza claro
3 Ciano
3.3.6 Comando para eliminar a linha onde esta o cursor
DELLINE;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
15
As demais linhas abaixo sobem uma linha
3.3.7 Comando para inserir linha na posio do cursor
INSLINE;
As demais linhas descem uma linha
Exemplo
pr ogr amexempl o334;
uses cr t ;
begi n
cl r scr ;
wr i t el n( ' l i nha 1' ) ;
wr i t el n( ' l i nha 2' ) ;
wr i t el n( ' l i nha 3' ) ;
wr i t el n( ' l i nha 4' ) ;
wr i t el n( ' pr essi one qq t ecl a par a cont i nuar ' ) ;
r eadkey;
got oxy( 1, 2) ; {v par a col una 1 l i nha 2}
del l i ne;
got oxy( 20, 2) ;
wr i t e( ' <- - - obser ve que l i nha 2 apagou' ) ;
r eadkey; {aguar da pr essi onar qq t ecl a}
got oxy( 20, 2) ; {VA par a col una 20 l i nha 2}
cl r eol ; {l i mpa a par t i r do cur sor }
i nsl i ne; {i nser e uma l i nha na posi o do cur sor }
got oxy( 1, 2) ;
wr i t e( ' i nser i a l i nha 2' ) ;
r eadkey;
end.
Exemplos:
Elabore um programa Pascal que:
1. Leia dois valores determine e exiba a soma eles;
pr ogr amexer ci ci o1;
uses cr t ;
var
a, b, c: r eal ;
begi n
cl r scr ;
wr i t e( ' Di gi t e A ' ) ; r eadl n( A) ;
wr i t e( ' Di gi t e B ' ) ; r eadl n( B) ;
c: =A+B;
wr i t el n( ' A soma e ' , C: 10: 2) ;
r eadkey;
end.
2. Leia uma determinada quantia em Reais e exiba a menor quantidade de cdulas de
100,50,10 e 1 real que sero necessrios para obtermos esta importncia.
pr ogr amt r oco;
uses cr t ;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
16
var

val or , not a100, not a50, not a10, not a1, r est o100, r est o50, r est o10: i n
t eger ;
begi n
cl r scr ;
wr i t e( ' Di gi t e o val or R$' ) ; r eadl n( val or ) ;
not a100: =val or di v 100;
r est o100: =val or mod 100;
not a50: = r est o100 di v 50;
r est o50 : =r est o100 mod 50;
not a10: =r est o50 di v 10;
r est o10: =r est o50 mod 10;
not a1: = r est o10;
wr i t el n( not a100, ' not as de R$100' ) ;
wr i t el n( not a50, ' not as de R$ 50' ) ;
wr i t el n( not a10, ' not as de R$10' ) ;
wr i t el n( not a1, ' not as de R$1' ) ;
r eadkey;
end.
3. Leia uma frase e exiba-a centralizada na tela:
pr ogr amcent r a;
uses cr t ;
var
f r ase: st r i ng[ 80] ;
begi n
cl r scr ;
wr i t e( ' Di gi t e a f r ase ' ) ; r eadl n( f r ase) ;
wr i t el n( f r ase: ( 40+t r unc( l engt h( f r ase) / 2) ) ) ;
r eadkey;
end.
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
17
Capitulo V Estruturas de deciso (ou seleo)
5.1 Deciso simples
IF condio THEN comando;
Ou
IF condio THEN
BEGIN
Comando 1;
Comando 2;
END;
O comando ou o bloco de comandos executado caso a condio seja verdadeira;
Os operadores relacionais so:
Operador Significado
= Igual
<> Diferente
<= Menor ou igual
>= Maior ou igual
< Menor
> maior
Tambm podemos usar os operadores lgicos
Operador Significado
AND E As duas condies devem ser verdadeiras
OR ou Uma das duas condies deve ser verdadeira
NOT no A condio no deve ser verdadeira
Exemplo
pr ogr amdeci sao1;
uses cr t ;
var
a, b: r eal ;
begi n
cl r scr ;
wr i t e( ' Di gi t e A ' ) ; r eadl n( A) ;
wr i t e( ' Di gi t e B ' ) ; r eadl n( B) ;
i f A=B t hen
wr i t e( ' Os val or es sao i guai s ' , a: 10: 2) ;
r eadkey;
end.




Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
18

5.2 Deciso composta
IF condio THEN
Comando ou bloco de comandos 1
ELSE
Comando ou bloco de comandos 2;
Se a condio for verdadeira o bloco de comandos 1 executado. Se a condio for falsa
o bloco de comandos 2 executado.
O comando anterior ao ELSE no tem (;)
Exemplo:
Programa para determinar o maior de dois valores reais lidos
pr ogr ammai or _de_doi s;
uses cr t ;
var
a, b: r eal ;
begi n
{mai or de doi s val or es l i dos}
cl r scr ;
wr i t e( ' Di gi t e A ' ) ; r eadl n( A) ;
wr i t e( ' Di gi t e B ' ) ; r eadl n( B) ;
i f A>B t hen
wr i t e( ' A e' ' o mai or ' , A: 10: 2)
el se
wr i t e( ' B e' ' o mai or ' , B: 10: 2) ;
r eadkey;
end.
Observe que se os valores forem iguais ser impresso que B o maior. Para corrigirmos
isto iremos colocar outro IF dentro do primeiro IF.
pr ogr ammai or _de_doi s;
uses cr t ;
var
a, b: r eal ;
begi n
{mai or de doi s val or es l i dos}
cl r scr ;
wr i t e( ' Di gi t e A ' ) ; r eadl n( A) ;
wr i t e( ' Di gi t e B ' ) ; r eadl n( B) ;
i f A>B t hen
wr i t e( ' A e' ' o mai or ' , A: 0: 2)
el se
i f A = B t hen
wr i t e( ' A e B sao i guai s a ' , A: 0: 2)
el se
wr i t e( ' B e' ' o mai or ' , B: 0: 2) ;
r eadkey;
end.
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
19
Programa para determinar o maior de 3 valores lidos. Os valores so diferentes entre si.
pr ogr ammai or _de_t r es;
uses cr t ;
var
a, b, c: r eal ;
begi n
{mai or de t r es val or es l i dos}
{os val or es sao di f er ent es ent r e si }
cl r scr ;
wr i t e( ' Di gi t e A ' ) ; r eadl n( A) ;
wr i t e( ' Di gi t e B ' ) ; r eadl n( B) ;
wr i t e( ' Di gi t e C ' ) ; r eadl n( C) ;
i f ( A>B) and ( A>B) t hen
wr i t e( ' A e' ' o mai or ' , A: 0: 2)
el se
i f ( B>A) and ( B>C) t hen
wr i t e( ' B e' ' o mai or ' , B: 0: 2)
el se
wr i t e( ' C e' ' o mai or ' , C: 0: 2) ;
r eadkey;
end.

4.3 Seleo mltipla
CASE opcao OF
Lista de alvos 1 : BEGIN

END;
Lista de alvos 2 : BEGIN

END;
ELSE comando 3;
END;
Obs: a varivel opcao deve ser do tipo INTEGER ou CHAR
A lista de alvos pode ser uma constante numrica inteira, do tipo caracter um conjunto de
valores ou um intervalo de valores
pr ogr amescol ha;
uses cr t ;
var
opcao: char ;
begi n
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
20
{exempl o do CASE}
cl r scr ;
wr i t e( ' Di gi t e a opcao ' ) ; r eadl n( opcao) ;
{escol ha ent r e as opes l i st adas}
case opcao of
' 1' : wr i t e( ' Voce di gi t ou 1' ) ;
' 2' . . ' 6' : wr i t e( ' Voce di gi t ou ent r e 2 e 6' ) ;
' A' , ' E' , ' I ' , ' O' , ' U' : wr i t e( ' Voce di gi t ou vogal
mai uscul a' ) ;
el se
{se no f or nenhuma das opcoes}
begi n
t ext col or ( 19) ;
wr i t e( ' voce di gi t ou out r o car act er ' ) ;
end; {est e end encer r a o el se }
end; {est e end encer r a o case}
r eadkey;
end.
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
21
Capitulo VI Estruturas de repetio

6.1 Comando WHILE
Repete um conjunto de instrues enquanto uma condio for verdadeira.
Devemos estar atentos para que a condio se torne falsa durante a execuo para
interromper a repetio.
A condio testada antes de entrar na estrutura de repetio
WHILE condio DO
Comando ou bloco de comandos;

FLAG um tipo de valor que lido e que representa o final dos dados. Seu valor no
pode ser considerado nos clculos realizados.
Exemplos:
Programa para calcular a soma de um conjunto de valores reais positivos. O Flag um
valor negativo. O termino ocorrer quando o flag for lido
pr ogr amr epet e1;
uses cr t ;
var
num, soma: r eal ;
begi n
cl r scr ;
wr i t e( ' Di gi t e umnumer o ' ) ; r eadl n( num) ;
whi l e num>= 0 do {enquant o nao f or o f l ag r epi t a}
begi n
soma: =soma+num;
wr i t e( ' Di gi t e umnumer o ' ) ; r eadl n( num) ;
end;
wr i t el n( ' A soma e' ' ' , soma: 0: 2) ;
r eadkey;
end.
Programa para calcular a soma de 5 valores reais.
Neste caso o termino da repetio ocorrer quando o contador de valores lidos chegar a 5
pr ogr amr epet e2;
uses cr t ;
var
num, soma: r eal ;
cont : i nt eger ;
begi n
cl r scr ;
cont : =0;
whi l e cont < 5 do {enquant o o cont ador f or menor que 5
r epi t a}
begi n
wr i t e( ' Di gi t e umnumer o ' ) ; r eadl n( num) ;
soma: =soma+num;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
22
cont : =cont +1;
end;
wr i t el n( ' A soma e' ' ' , soma: 0: 2) ;
r eadkey;
end.

6.2 Comando REPEAT ..UNTIL
A lgica semelhante ao comando While somente que repete at a condio seja
verdadeira.
A condio testada no final do conjunto de comandos.
REPEAT
Comando1;
Comando 2;
Comando n;
UNTIL condio;
Exemplos:
Programa para calcular a soma de 5 valores reais
pr ogr amr epet e3;
uses cr t ;
var
num, soma: r eal ;
cont : i nt eger ;
begi n
cl r scr ;
cont : =0;
r epeat
wr i t e( ' Di gi t e umnumer o ' ) ; r eadl n( num) ;
soma: =soma+num;
cont : =cont +1;
unt i l cont =5; {r epet e at e que cont = 5}
wr i t el n( ' A soma e' ' ' , soma: 0: 2) ;
r eadkey;
end.
6.2 Comando REPEAT ..UNTIL
A lgica semelhante ao comando While somente que repete at a condio seja
verdadeira.
A condio testada no final do conjunto de comandos.
REPEAT
Comando1;
Comando 2;
Comando n;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
23
UNTIL condio;
Exemplos:
Programa para calcular a soma de 5 valores reais
pr ogr amr epet e3;
uses cr t ;
var
num, soma: r eal ;
cont : i nt eger ;
begi n
cl r scr ;
cont : =0;
r epeat
wr i t e( ' Di gi t e umnumer o ' ) ; r eadl n( num) ;
soma: =soma+num;
cont : =cont +1;
unt i l cont =5; {r epet e at e que cont = 5}
wr i t el n( ' A soma e' ' ' , soma: 0: 2) ;
r eadkey;
end.
Programa para ler nome, idade e sexo de um conjunto de pessoas, calcular e exibir
a) Nome da pessoa mais velha;
b) Mdia das idades dos homens;
c) Mdia das idades das mulheres;
O flag a palavra pare no campo do nome. Usando o comando WHILE e o comando
REPEAT
pr ogr amexempl o521;
uses cr t ;
var
nome, nomev: st r i ng[ 30] ;
i dade, i dadev, cont m, cont f , somam, somaf : i nt eger ;
sexo: char ;
medi am, medi af : r eal ;
begi n
cl r scr ;
wr i t el n( ' Ent r ada dos Dados' : 45) ; wr i t el n; wr i t el n;
{l ei t ur a da pr i mei r a i nf or macao}
wr i t e( ' Di gi t e o Nome- - - >' ) ; r eadl n( nome) ;
wr i t e( ' Di gi t e a I dade- - >' ) ; r eadl n( i dade) ;
wr i t e( ' Di gi t e o sexo- - - >' ) ; r eadl n( sexo) ;
nomev: =nome;
i dadev: =i dade;
whi l e nome <> ' par e' do
begi n
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
24
i f i dade > i dadev t hen
begi n
i dadev: =i dade;
nomev: =nome;
end;
i f sexo = ' m' t hen
begi n
somam: =somam+i dade;
cont m: =cont m+1;
end
el se
begi n
somaf : =somaf +i dade;
cont f : =cont f +1;
end;
wr i t e( ' Di gi t e o Nome- - - > ' ) ; r eadl n( nome) ;
i f nome <> ' par e' t hen
begi n
wr i t e( ' Di gi t e a I dade- - > ' ) ;
r eadl n( i dade) ;
wr i t e( ' Di gi t e o sexo- - - > ' ) ;
r eadl n( sexo) ;
end;
end;
medi am: =somam/ cont m;
medi af : =somaf / cont f ;
cl r scr ;
got oxy( 1, 10) ;
wr i t el n( ' Nome da pessoa mai s vel ha e' ' ' , nomev, ' com
' , i dadev: 3, ' anos' ) ;
wr i t el n( ' Medi a da i dade dos homens ' , medi am: 0: 2) ;
wr i t el n( ' Medi a da i dade das mul her es ' , medi af : 0: 2) ;
wr i t el n; wr i t el n;
t ext col or ( 20) ;
wr i t e( ' Pr essi one qq. t ecl a par a encer r ar ' ) ;
r eadkey;
end.
O mesmo programa usando o REPEAT
pr ogr amexempl o522;
uses cr t ;
var
nome, nomev: st r i ng[ 30] ;
i dade, i dadev, cont m, cont f , somam, somaf : i nt eger ;
sexo: char ;
medi am, medi af : r eal ;
begi n
cl r scr ;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
25
wr i t el n( ' Ent r ada dos Dados' : 45) ; wr i t el n; wr i t el n;
{l ei t ur a da pr i mei r a i nf or macao}
wr i t e( ' Di gi t e o Nome- - - >' ) ; r eadl n( nome) ;
wr i t e( ' Di gi t e a I dade- - >' ) ; r eadl n( i dade) ;
wr i t e( ' Di gi t e o sexo- - - >' ) ; r eadl n( sexo) ;
nomev: =nome;
i dadev: =i dade;
r epeat
i f i dade > i dadev t hen
begi n
i dadev: =i dade;
nomev: =nome;
end;
i f sexo = ' m' t hen
begi n
somam: =somam+i dade;
cont m: =cont m+1;
end
el se
begi n
somaf : =somaf +i dade;
cont f : =cont f +1;
end;
wr i t e( ' Di gi t e o Nome- - - > ' ) ; r eadl n( nome) ;
i f nome <> ' par e' t hen
begi n
wr i t e( ' Di gi t e a I dade- - > ' ) ;
r eadl n( i dade) ;
wr i t e( ' Di gi t e o sexo- - - > ' ) ;
r eadl n( sexo) ;
end;
unt i l nome= ' par e' ;
medi am: =somam/ cont m;
medi af : =somaf / cont f ;
cl r scr ;
got oxy( 1, 10) ;
wr i t el n( ' Nome da pessoa mai s vel ha e' ' ' , nomev, ' com
' , i dadev: 3, ' anos' ) ;
wr i t el n( ' Medi a da i dade dos homens ' , medi am: 0: 2) ;
wr i t el n( ' Medi a da i dade das mul her es ' , medi af : 0: 2) ;
wr i t el n; wr i t el n;
t ext col or ( 20) ;
wr i t e( ' Pr essi one qq. t ecl a par a encer r ar ' ) ;
r eadkey;
end.

5.3 Comando FOR
Repete uma quantidade determinada de vezes
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
26
FOR I:=valor inicial TO valor final DO
Comando ou bloco de comandos;
A varivel I chamada de varivel de controle inicializada com o valor inicial, executa
todas as instrues do bloco de comandos e retorna para o incio do comando.
Acrescenta uma unidade a varivel de controle e verifica se superior ao valor final se
afirmativo encerra o comando passando para a instruo seguinte ao termino do bloco.
O bloco executado pelo menos uma vez.
A varivel de controle no pode ter seu valor alterado dentro do bloco e do tipo
INTEGER ou CHAR desde que a variao seja ordinal(obedecendo a ordem dos
caracteres ASCII)
FOR I:=valor final DOWNTO valor inicial
Comando ou bloco de comandos;
Ir decrescer os valores da varivel de controle

Exemplos
Impresso dos valores de 1 at 10 Impresso das letras de a at z
pr ogr amex531;
uses cr t ;
var
i : i nt eger ;
begi n
cl r scr ;
{exi be os val or es de 1 at e 10}
f or i : =1 t o 10 do
wr i t el n( i ) ;
r eadkey;
end.

pr ogr amex532;
uses cr t ;
var
i : char ;
begi n
cl r scr ;
{exi be os val or es de a at e z}
f or i : =' a' t o ' z' do
wr i t el n( i ) ;
r eadkey;
end.



Fatorial de um nmero n lido Impresso das letras de z at a
pr ogr amf at or i al ;
uses cr t ;
var
i , f at , n: i nt eger ;
begi n
cl r scr ;
wr i t e( ' Di gi t e o val or ' ) ;
r eadl n( n) ;
f at : =1;
f or i : =n downt o 1 do
f at : =f at *i ;
wr i t el n( ' O f at or i al de ' , n, ' e' ' ' , f at ) ;
r eadkey;
end.

pr ogr amex533;
uses cr t ;
var
i : char ;
begi n
cl r scr ;
{exi be os val or es de z at e a}
f or i : =' z' downt o ' a' do
wr i t el n( i ) ;
r eadkey;
end.


Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
27
Capitulo VII Estruturas de Dados Homogneas

As variveis compostas homogneas, conhecidas como Arrays, matrizes, variveis
indexadas, variveis subscritas ou tabelas em memria, so conjunto de elementos de
mesma natureza identificados por um ndice.
Os arrays podem ser unidimencionais (tambm so chamados de vetores) quando
possuem apenas uma dimenso ou multidimensionais quando posuem mais de uma
dimenso.
7.1 Vetores
Vetores so conjunto de dados com uma nica dimenso.
Por exemplo
Supondo que o vetor NOTA contivesse os seguintes valores:
NOTA
10.0 7.5 4.3 8.2 6.0
1 2 3 4 5
NOTA[4] conteria o valor 8.2
Declaramos as variveis como Array da seguinte forma
VAR
NOME: ARRAY[ndice inicial .. ndice final] OF tipo de varivel;
O ndice inicial e o ndice final so constantes inteiras o caracteres ordinais.
Exemplos
VAR nome : array[1..100] of string[30] {nome uma varivel com 100 elementos e cada
elemento pode ter at 30 caracteres}
VAR idade : array [-10..10] of integer; {o ndice da varivel idade
VAR: cod : array [a..z] of char;
No corpo do programa as variveis so identificadas pelo seu nome e pelo ndice que a
localiza.
Nome[1]:=Alexandre; Idade[-5]:=52; Cod[a]:=x;

Vet or 1;
Uses cr t ;
Var
not a: ar r ay[ 1. . 10] of r eal ;
i : char ;
begi n
cl r scr ;
f or I : = 1 t o 10 do
begi n
wr i t e( ' Di gi t e o ' , i , '
t er mo' ) ;
r eadl n( not a[ i ] ) ;
end;
f or I : =' a' t o ' e' do
wr i t el n( not a[ i ] ) ;
r eadkey;
end.

pr ogr amvet or 2;
uses cr t ;
var
not a: ar r ay[ ' a' . . ' z' ] of r eal ;
i : char ;
begi n
cl r scr ;
f or I : = ' a' t o ' e' do
begi n
wr i t e( ' Di gi t e o ' , i , '
t er mo' ) ;
r eadl n( not a[ i ] ) ;
end;
f or I : =' a' t o ' e' do
wr i t el n( not a[ i ] ) ;
r eadkey;
end.



Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
28
7.2 Matrizes
As matrizes so conjunto de dados de duas ou mais dimenses. At 3 dimenses existe
representao no espao cartesiano.
A declarao de uma varivel tipo matriz do tipo:
VAR
X: ARRAY[1..10,1..20] OF REAL; {onde x tem 2 dimenses uma com 10 elementos e
outra com 20 elementos totalizando 200 elementos reais}
A referncia a varivel realizada por intermdio de seus ndices.
X[1,1]:=50.7;
Ou
I:=5; J :=8;
X[i,j]:=23;
Exemplos
Programa que leia duas matrizes de 3x3 elementos reais determine sua soma.
Imprimir sob a forma de tabela
pr ogr amexempl o62;
uses cr t ;
var
a, b, c: ar r ay[ 1. . 5, 1. . 5] of r eal ;
i , j : i nt eger ;
begi n
{l er duas mat r i zes e det er mi nar sua soma}
cl r scr ;
wr i t e( ' Mat r i z A' : 44) ; wr i t el n; wr i t el n;
f or i : =1 t o 3 do
f or j : =1 t o 3 do
begi n
wr i t e( ' Di gi t e A[ ' , i : 2, ' , ' , j : 2, ' ] ' ) ;
r eadl n( A[ i , j ] ) ;
end;
cl r scr ;
wr i t el n( ' Mat r i z B' : 44) ; wr i t el n; wr i t el n;
f or i : =1 t o 3 do
f or j : =1 t o 3 do
begi n
wr i t e( ' Di gi t e B[ ' , i : 2, ' , ' , j : 2, ' ] ' ) ;
r eadl n( B[ i , j ] ) ;
C[ i , j ] : =A[ i , j ] +B[ i , j ] ;
end;
{i mpr i mi r as duas mat r i zes}
cl r scr ;
wr i t el n( ' Mat r i z Soma' : 27) ;
f or i : = 1 t o 3 do
begi n
f or j : =1 t o 3 do
wr i t e( C[ i , j ] : 0: 2, ' ' ) ;
wr i t el n;
end;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
29
r eadkey;
end.
Programa que leia uma matriz de 3x3 elementos reais e determine a soma ddos
termos cada linha e de cada coluna
pr ogr ammat r i z2;
uses cr t ;
var
cent r a: i nt eger ;
t i t ul o: st r i ng[ 30] ;
a: ar r ay[ 1. . 3, 1. . 3] of r eal ;
sl i nha, scol : ar r ay[ 1. . 3] of r eal ;
i , j : i nt eger ;
begi n
cl r scr ;
t i t ul o: =' Lei t ur a da Mat r i z' ;
{cent r a det er mi na o f or mat o par a cent r al i zar o t i t ul o}
cent r a: =t r unc( 40+l engt h( t i t ul o) / 2) ;
wr i t el n( t i t ul o: cent r a) ;
f or i : = 1 t o 3 do
f or j : = 1 t o 3 do
begi n
wr i t e( ' Di gi t e A[ ' , i : 1, ' , ' , j : 1, ' ] = ' ) ; r eadl n( A[ i , j ] ) ;
end;
{cal cul o da soma da l i nha}
f or i : =1 t o 3 do
f or j : =1 t o 3 do
sl i nha[ i ] : =sl i nha[ i ] +a[ i , j ] ;
{cal cul o da soma da col una}
f or j : = 1 t o 3 do
f or i : =1 t o 3 do
scol [ j ] : =scol [ j ] +a[ i , j ] ;
{i mpr essao do r esul t ado}
cl r scr ;
wr i t el n( ' I mpr essao do Resul t ado' ) ; wr i t el n;
wr i t e( ' Mat r i z Li da' : 15) ;
got oxy( 25, 3) ;
wr i t el n( ' Soma ' ) ;
wr i t el n;
f or i : =1 t o 3 do
begi n
f or j : =1 t o 3 do
wr i t e( a[ i , j ] : 5: 2, ' ' ) ;
wr i t el n( ' ' , sl i nha[ i ] : 5: 2) ;
end;
wr i t el n;
f or i : = 1 t o 3 do
wr i t e( scol [ i ] : 5: 2, ' ' ) ;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
30
r eadkey;
end.
7.2 Exerccios Resolvidos
Procura seqencial em uma tabela. Consideraremos uma tabela com nomes e
leremos um determinado nome para verificar se o mesmo se encontra na tabela. O
programa dever prever a procura de vrios nomes at que o usurio responda que
no que continuar.

pr ogr ampesqseq;
uses cr t ;
var
nome: ar r ay[ 1. . 100] of st r i ng[ 30] ;
nomep: st r i ng[ 30] ;
achei : bool ean;
i , n: i nt eger ;
cont i nua: char ;
begi n
cl r scr ;
{l ei t ur a da t abel a comos nomes}
wr i t e( ' Di gi t e a quant i dade de dados ' ) ; r eadl n( n) ;
f or i : =1 t o n do
begi n
wr i t e( ' Di gi t e o ' , i , ' nome ' ) ; r eadl n( nome[ i ] ) ;
end;
whi l e cont i nua <> ( ' N' ) do
begi n
cl r scr ;
wr i t e( ' Di gi t e o nome a ser pr ocur ado ' ) ; r eadl n( nomep) ;
achei : =f al se;
i : =0;
whi l e ( i < n) and ( achei =f al se) do
begi n
i : =i +1;
i f nomep = nome[ i ] t hen
achei : = t r ue;
end;
i f achei = t r ue t hen
wr i t el n( ' O nome ' , nomep, ' f oi l ocal i zado na ' , i , #166, '
posi cao' )
el se
wr i t el n( ' O nome ' , nomep, ' nao f oi l ocal i zado' ) ;
wr i t e( ' Desej a cont i nuar ? S/ N ' ) ; cont i nua: =r eadkey;
cont i nua: =upcase( cont i nua) ;
end;
end.
Ordenao de valores
Existem vrios processos para ordenar valores. O que ser apresentado abaixo
denominado mtodo da seleo
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
31
pr ogr amcl assi f i ca;
uses cr t ;
var
nome: ar r ay[ 1. . 100] of st r i ng[ 30] ;
aux: st r i ng[ 30] ;
i , j , n: i nt eger ;

begi n
cl r scr ;
{l ei t ur a da t abel a comos nomes}
wr i t e( ' Di gi t e a quant i dade de dados ' ) ; r eadl n( n) ;
f or i : =1 t o n do
begi n
wr i t e( ' Di gi t e o ' , i , ' nome ' ) ; r eadl n( nome[ i ] ) ;
end;
{r ot i na de or denacao}
f or i : = 1 t o n- 1 do
f or j : =i +1 t o n do
i f nome[ i ] > nome[ j ] t hen
begi n
aux: =nome[ i ] ;
nome[ i ] : =nome[ j ] ;
nome[ j ] : =aux;
end;
{i mpr essao dos val or es}
cl r scr ;
wr i t el n( ' Val or es or denados' ) ;
f or i : = 1 t o n do
wr i t el n( nome[ i ] ) ;
r eadkey;
end.
Outro processo de ordenao o chamado Bubble Sort
pr ogr ambubbl e;
uses cr t ;
var
a: ar r ay[ 1. . 23] of i nt eger ;
aux: i nt eger ;
k: bool ean;
i , j : i nt eger ;
begi n
cl r scr ;
{par a f aci l i dade i r emos pr eencher a t abel a com val or es
al eat or i os de 0- 100}
r andomi ze; {cr i a a sement e par a os numer os al eat or i os}
f or i : = 1 t o 23 do
a[ i ] : =t r unc( r andom( 100) ) ;
wr i t el n( ' Val or es i nci ci ai s' ) ;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
32
f or i : =1 t o 23 do
wr i t el n( a[ i ] : 7) ;
k: =f al se;
whi l e k = f al se do
begi n
k: =t r ue;
f or i : = 1 t o 22 do
i f a[ i ] > a[ i +1] t hen
begi n
aux: =a[ i ] ;
a[ i ] : =a[ i +1] ;
a[ i +1] : =aux;
k: =f al se;
end;
end;
{r eadkey; }
got oxy( 20, 1) ; wr i t el n( ' Val or es or denados' ) ;
f or i : =1 t o 23 do
begi n
got oxy( 20, i +1) ;
wr i t e( a[ i ] : 7) ;
end;
r eadkey;
end.
A manipulao de cadeias tem vrios usos prticos. O programa abaixo usa uma
cadeia de 80 caracrteres de linha dupla horizontal para dividir a tela em duas partes.
pr ogr amspl i t scr een;
uses cr t ;
var
di vi der : st r i ng[ 255] ;
begi n
cl r scr ;
f i l l char ( di vi der , si zeof ( di vi der ) , 205) ;
di vi der [ 0] : =chr ( 80) ;
got oxy( 1, 14) ;
wr i t e( di vi der ) ;
r eadkey;
end.

A primeira instruo da rotina fillchar(divider,sizeof(divider),205);
Preenche a cadeia toda, da posio 0 a 255, com o valor ASCII 205. Para fazer com que
a cadeia preencha a linha na tela necessrio alterar o tamanho da cadeia.
O byte de tamanho da cadeia deve ser definido como 80.
Divider[0]:=80;
Agora a cadeia pode ser exibida na tela de forma agradvel.
Rotina para localizao e substituio de cadeias.
Dada a frase: Diga ao Fernando para pagar os R$10,00 que ele me deve. Substituir
Fernando por Raul
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
33
Pr ogr amacha_e_t r oca;
uses cr t ;
var
f r ase: st r i ng[ 80] ;
acha, t r oca: st r i ng[ 20] ;
i : i nt eger ;
begi n
cl r scr ;
acha: =' Fer nando' ;
t r oca: =' Raul ' ;
f r ase: =' Di ga ao Fer nando par a pagar os R$10, 00 que el e me
deve' ;
wr i t el n( f r ase) ;
i : =pos( acha, f r ase) ; {l ocal i za o t ext o de acha emf r ase}
del et e( f r ase, i , l engt h( acha) ) ; {apaga em f r ase os car act er es
de acha}
i nser t ( t r oca, f r ase, i ) ; {i nser e na f r ase o t ext o t r oca a
par t i r de i }
wr i t el n( f r ase) ;
r eadkey;
end.
Entrada numrica livre de erro
Um dos problemas para entrada de valores numricos que o usurio poder digitar
dados no numricos e gerar um erro de execuo do programa. A forma de solucionar
este aspecto ler o valor para uma varivel string e converte-la para numrica. Este
programa emite uma mensagem de erro caso seja digitado um valor no numrico.
pr ogr ament r a_numer o;
uses cr t ;
var
i dade, cod: i nt eger ;
i dade_al f a: st r i ng[ 10] ;
begi n
r epeat
cl r scr ;
wr i t e( ' Di gi t e sua i dade ' ) ; r eadl n( i dade_al f a) ;
val ( i dade_al f a, i dade, cod) ; {conver t e i dade_al f a p/ i dade}
i f cod <> 0 t hen {se r et or nar comer r o}
begi n
t ext col or ( r ed+bl i nk) ;
wr i t el n( ' I dade er r ada. Tent e de novo' ) ; del ay( 1000) ;
t ext col or ( whi t e) ;
end;
unt i l cod = 0; {at e que nao t enha er r o}
wr i t el n( ' Sua i dade e' ' ' , i dade) ;
r eadkey;
end.
Remover espaos em branco de uma frase
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
34
Pr ogr amt i r a_br anco;
uses cr t ;
var
f r ase: st r i ng[ 80] ;
i , j : i nt eger ;
begi n
cl r scr ;
wr i t e( ' Di gi t e uma f r ase ' ) ;
r eadl n( f r ase) ;
f or j : = 1 t o l engt h( f r ase) do
begi n
i : =pos( ' ' , f r ase) ;
del et e( f r ase, i , 1) ;
end;
wr i t el n( f r ase) ;
r eadkey;
end.
Programa para separar as palavras de uma frase. Cada frase contem um mximo
de 10 palavras de 20 caracteres cada.

pr ogr amsepar a_pal avr a;
uses cr t ;
var
f r ase: st r i ng[ 200] ;
pal : st r i ng[ 20] ;
pal avr a: ar r ay[ 1. . 10] of st r i ng[ 20] ;
i , k, i ni ci o, t am: i nt eger ;
begi n
cl r scr ;
wr i t e( ' Di gi t e a f r ase ' ) ; r eadl n( f r ase) ;
k: =1;
i ni ci o: =1;
t am: =1;
f or i : =1 t o l engt h( f r ase) do
i f ( f r ase[ i ] = ' ' ) t hen
begi n
t am: =i - i ni ci o;
pal avr a[ k] : =copy( f r ase, i ni ci o, t am) ;
k: =k+1;
i ni ci o: =i +1;
end;
f or i : =1 t o k do
wr i t e( pal avr a[ i ] , ' ' ) ;
r eadkey;
end.
Programa para traduzir palavras do portugus para o ingls (palavra a palavra).
pr ogr amt r adut or ;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
35
uses cr t ;
var
por t ugues, i ngl es: ar r ay[ 1. . 10] of st r i ng[ 20] ;
pal avr a: st r i ng[ 20] ;
i : i nt eger ;
achei : bool ean;
cont : char ;
begi n
cl r scr ;
{l ei t ur a das t abel as}
wr i t el n( ' Lei t ur a das Tabel as' ) ;
wr i t el n( ' Por t ugues I ngl es' ) ;
f or i : =1 t o 10 do
begi n
got oxy( 2, i +2) ; wr i t e( i , #166, ' pal avr a ' ) ;
r eadl n( por t ugues[ i ] ) ;
got oxy( 35, i +2) ;
r eadl n( i ngl es[ i ] ) ;
end;
{l ei t ur a da pal ava a t r aduzi r }
cl r scr ;
wr i t e( ' Di gi t e a pal avr a a t r aduzi r ' ) ; r eadl n( pal avr a) ;
i : =0;
achei : =f al se;
whi l e ( achei = f al se) and ( i <=10) do
begi n
i : =i +1;
i f por t ugues[ i ] = pal avr a t hen
achei : =t r ue;
end;
i f achei = f al se t hen
wr i t el n( ' A pal avr a ' , pal avr a, ' nao est a' ' cadast r ada' )
el se
wr i t el n( ' A t r aducao de ' , pal avr a, ' e' ' ' , i ngl es[ i ] ) ;
r eadkey;
end.
Programa para calcular a surpresinha da megasena
Inicialmente sorteamos 6 nmeros, ordenamos os valores e verificamos se cada valor
diferente do seguinte. Caso afirmativo sorteamos um novo valor e repetimos o processo
at que todos os valores sejam diferentes.
pr ogr amsur pr esi nha;
uses cr t ;
var
sor t e: ar r ay[ 1. . 6] of i nt eger ;
i , j , t : i nt eger ;
i gual : bool ean;
begi n
cl r scr ;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
36
{sor t ei o dos 6 pr i mei r os val or es}
r andomi ze;
f or i : = 1 t o 6 do
sor t e[ i ] : =t r unc( r andom( 60) ) ;
i gual : =t r ue;
whi l e i gual = t r ue do
begi n
i gual : =f al se;
{r ot i na de or denacao}
f or i : = 1 t o 5 do
f or j : =i +1 t o 6 do
i f sor t e[ i ] > sor t e[ j ] t hen
begi n
t : =sor t e[ i ] ;
sor t e[ i ] : =sor t e[ j ] ;
sor t e[ j ] : =t ;
end;
{ver i f i ca se exi st em2 i guai s}
f or i : = 1 t o 5 do
i f sor t e[ i ] = sor t e[ i +1] t hen
begi n
sor t e[ i +1] : =t r unc( r andom( 60) ) ;
i gual : =t r ue;
end;
end;
wr i t el n( ' Val or es sor t eados' ) ;
f or i : = 1 t o 6 do
wr i t el n( sor t e[ i ] ) ;
r eadkey;
end.
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
37
Capitulo VIII Estruturas de Dados Heterogneas

8.1 Registros
Quando nos referimos a algum elemento, geralmente o caracterizamos por um conjunto
de dados lgicamente relacionados e de diferentes tipos de informao. Por exemplo se
nos referimos a dados pessoais estamos querendo o nome, idade, sexo, filiao,
endereo etc.
Este conjunto chama-se registro ou RECORD em ingls e tem as seguintes
caractersticas:
a) contm um nmero fixo de elementos chamados campos;
b) os campos podem ser de tipos diferentes;
c) cada campo tem um nome prprio chamado de identificador do campo.
Estabelecemos os registros da seguinte forma:
Program nome;
Type
Nome_do_registo =record
Campo1:tipo;
Campo2:tipo;
End;
Var
Nome_da_variavel:nome_do_registro;
Por exemplo:
Program exemplo;
Uses crt;
Type
ficha =record
nome:string[30];
idade:integer;
sexo: char;
salario: real;
end;
var
funcionario:ficha;

A varivel funcionario tem os campos de Ficha.
Para nos referenciarmos a um determinado componente dentro do programa indicamos o
nome da varivel (.) nome do campo.
Por exemplo
Funcionario.nome :=Alex;
Funcionario.salario:=10000.00;
Os nomes dos campos podem ser arrays:
Type
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
38
Ficha =record;
Nome:string[30];
Nota:array[1..3] of real;
End;
Var
Aluno:ficha;
No programa nos referimos a primeira nota do aluno da seguinte forma:
Aluno.nota[1]:=10;
Aluno.nota[2]:=7.5;
As variveis tambm podem ser arrays:
Type
Ficha =record;
Nome:string[30];
Nota:array[1..3] of real;
End;
Var
Aluno:array[1..100] of ficha;
No programa nos referimos ao 1 aluno da seguinte forma
Aluno[1].nome:=Alex;
Aluno[1].nota[1]:=10.;
Exerccio:
Elabore um programa pascal que leia nome, idade, sexo e salrio de um conjunto de
pessoas ordene e exiba em ordem ascendente por nome. A quantidade mxima de
pessoas 100 e lida no incio do programa.
pr ogr amor dena;
uses cr t ;
t ype
cadast r o = r ecor d
nome: st r i ng[ 30] ;
i dade: i nt eger ;
sexo: char ;
sal ar i o: r eal ;
end;
var
pessoa: ar r ay[ 1. . 100] of cadast r o;
aux: cadast r o;
i , j , n: i nt eger ;
begi n
cl r scr ;
wr i t e( ' Di gi t e a quant i dade de pessoas ' ) ;
r eadl n( n) ;
cl r scr ;
wr i t el n( ' Ent r ada de dados' : 48) ;
f or i : =1 t o 80 do
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
39
wr i t e( #205) ;
wr i t el n;
f or i : = 1 t o n do
begi n
cl r scr ;
wr i t el n( i : 2, #167, ' Pessoa ' ) ; wr i t el n;
wr i t e( ' Di gi t e o nome ' ) ; r eadl n( pessoa[ i ] . nome) ;
wr i t e( ' Di gi t e a i dade ' ) ; r eadl n( pessoa[ i ] . i dade) ;
wr i t e( ' Di gi t e o sexo ' ) ; r eadl n( pessoa[ i ] . sexo) ;
wr i t e( ' Di gi t e o sal ar i o ' ) ; r eadl n( pessoa[ i ] . sal ar i o) ;
end;
{r ot i na de or denacao}
f or i : =i t o n- 1 do
f or j : =i +1 t o n do
i f pessoa[ i ] . nome > pessoa[ j ] . nome t hen
begi n
aux: =pessoa[ i ] ;
pessoa[ i ] : =pessoa[ j ] ;
pessoa[ j ] : =aux;
end;
{r ot i na de exi bi cao}
cl r scr ;
wr i t el n( ' Val or es Or denados' : 48) ;
f or i : =1 t o 80 do
wr i t e( #205) ;
wr i t el n( ' Nome' : 15, ' Sexo' : 15, ' I dade' : 15, ' Sal ar i o' : 15) ;
f or i : = 1 t o n do
wi t h pessoa[ i ] do
wr i t el n( nome: 15, sexo: 15, i dade: 15, sal ar i o: 15: 2) ;
r eadkey;
end.

Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
40
Capitulo IX Sub Rotinas
A complexidade do desenvolvimento dos softwares exigem algoritmos complexos que
necessitam ser divididos em partes para poderem ser resolvidos.
O uso da modularizao permitir uma maior legibilidade dos software, uma melhor
manuteno enfim um menor custo e prazo de desenvolvimento.

9.1 Utilizao da Sub Rotinas

As sub rotinas podem ser as PROCEDURES e as FUNCTION que so trechos de
programa que podem ser invocados em qualquer parte do programa retornando aps o
comando que a chamou.
A diferena entre os dois tipos est no fato que uma PROCEDURE pode ou no retornar
um valor, enquanto uma FUNCTION sempre ir retornar um valor.
O Turbo Pascal dispe de um conjunto de rotinas pr definidas. Algumas destas rotinas j
foram examinadas nos captulos anteriores.
As sub-rotinas aparecem no inicio do programa com a seguinte sintaxe:
Program nome;
Uses crt; {e demais unidades necessrias}
Var {variveis globais}
..
PROCEDURE <nome>[(parmetros)]
Var {variveis locais}
Begin
.
End;
Begin

<nome>[(parmetros)]

end;

9.2 Variveis Globais e variveis Locais

Uma varivel global definida no incio do programa (antes das procedures) e vista por
todo o programa e procedures.
Uma varivel local definida dentro de uma procedure e somente vista pelo sub
programa onde foi criado
Procedures e function
Programa principal
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
41
9.3 Exemplo de programa usando procedures e variveis globais
Este programa para realizar as 4 operaes matemticas. O diagrama abaixo mostra
como o programa principal est ligado as vrias tarefas.



pr ogr amsubr ot i na;
uses cr t ;
var
{t odas as var i avei s sao gl obai s}
r esp, a, b: r eal ;
opcao: char ;
pr ocedur e l e;
begi n
wr i t e( ' Di gi t e o pr i mei r o val or ' ) ; r eadl n( a) ;
wr i t e( ' Di gi t e o segundo val or ' ) ; r eadl n( b) ;
end;
pr ocedur e i mpr i me;
begi n
wr i t el n( ' A r espost a e' ' ' , r esp: 0: 2) ;
wr i t e( ' Pr essi one qq t ecl a par a vol t ar ao menu' ) ;
r eadkey;
end;
pr ocedur e soma;
begi n
cl r scr ;
wr i t el n ( ' Rot i na de Soma' : 30) ;
l e;
r esp: =a+b;
Programa
principal
Multiplica Soma Subtrai Divide
l
imprime
As subrotinas l e
imprime se
repetem em todos
os mdulos
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
42
i mpr i me;
end;
pr ocedur e subt r ai ;
begi n
cl r scr ;
wr i t el n ( ' Rot i na de Subt r acao' : 30) ;
l e;
r esp: =a- b;
i mpr i me;
end;
pr ocedur e mul t i pl i ca;
begi n
cl r scr ;
wr i t el n ( ' Rot i na de Mul t i pl i cacao' : 30) ;
l e;
r esp: =a*b;
i mpr i me;
end;
pr ocedur e di vi de;
begi n
cl r scr ;
wr i t el n ( ' Rot i na de Di vi sao' : 30) ;
l e;
r esp: =a/ b;
i mpr i me;
end;
begi n
{pr ogr ama pr i nci pal }
opcao: =' 0' ;
whi l e opcao <> ' 5' do
begi n
cl r scr ;
got oxy( 33, 1) ; wr i t e( ' Menu Pr i nci pal ' ) ;
got oxy( 28, 6) ; wr i t e( ' 1. . . . . . . . . . . . . . . . . . . . Soma' ) ;
got oxy( 28, 8) ; wr i t e( ' 2. . . . . . . . . . . . . . . Subt r acao' ) ;
got oxy( 28, 10) ; wr i t e( ' 3. . . . . . . . . . . Mul t i pl i cacao' ) ;
got oxy( 28, 12) ; wr i t e( ' 4. . . . . . . . . . . . . . . . . Di vi sao' ) ;
got oxy( 28, 14) ; wr i t e( ' 5. . . . . . . . . Fi mdo Pr ogr ama' ) ;
got oxy( 28, 18) ; wr i t e( ' Escol ha uma opcao. . . . . . . . ' ) ;
opcao: =r eadkey;
i f opcao <> ' 5' t hen
case opcao of
' 1' : soma;
' 2' : subt r ai ;
' 3' : mul t i pl i ca;
' 4' : di vi de;
el se
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
43
got oxy( 27, 24) ; wr i t el n( ' Opcao i nval i da - t ecl e al go' ) ;
r eadkey;
end; {f i mdo case}
end; {f i mdo whi l e}
end.

9.4 Parmetros

Os parmetros tem como finalidade servir como pont de comunicao bidirecional entre a
sub-rotina e o programa principal, ou com uma sub-rotina hierarquicamente de nvel mais
alto. Os parmetros podem ser formais ou reais
Sero parmetros formais quando forem declarados atravs das variveis juntamente
com a identificao do nome da sub-rotina, os quais sero tratados exatamente da
mesma forma como so tratadas as variveis globais ou locais.
Considere o programa abaixo:

pr ogr ampar amet r o;
uses cr t ;

pr ocedur e soma( a, b: i nt eger ) ;
var
z: i nt eger ;
begi n
z: =a+b;
wr i t el n( z) ; {z e' var i avel l ocal }
r eadkey;
end;

{pr ogr ama pr i nci pal }
var
x, y, w, z: i nt eger ;
begi n
cl r scr ;
wr i t e( ' Di gi t e x ' ) ; r eadl n( x) ;
wr i t e( ' Di gi t e y ' ) ; r eadl n( y) ;
soma( x, y) ;
soma( 3, 4) ;
end.

As variveis a e b so parmetros formais da sub-rotina soma. Z uma varivel local e
somente reconhecida dentro da sub-rotina. As variveis X e Y so parmetros reais
assim como os valores 3 e 4.

9.5 Passagem de Parmetros

A passagem de parmetros pode ser por ser por valor ou por referncia

9.5.1 Passagem por valor

Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
44
A passagem por valor caracteriza-se pela no alterao do valor do parmetro real
quando o parmetro formal manipulado dentro da sub-rotina.
pr ogr ampar amet r o_val or ;
uses cr t ;

pr ocedur e soma( a, b, c: i nt eger ) ;
begi n
c: =a+b;
end;
{pr ogr ama pr i nci pal }
var
w: i nt eger ;
begi n
cl r scr ;
w: =9876;
soma( 3, 4, w) ;
wr i t el n( w) ; r eadkey;
end.
Observe que a sub-rotina soma os valores de a com b armazenando em c.
No programa principal, passamos os parmetros 3 e 4 para a sub rotina. O parmetro w
um parmetro real que foi passado para a sub-rotina como valor. Assim no pode ser
alterado dentro da sub-rotina permanecendo com o valor existente antes da chamada.
O valor impresso ser 9876, atribudo no incio do programa.

9.5.2 Passagem por referncia

A passagem de parmetro por referncia caracteriza-se pela ocorrncia de valor do
parmetro real quando o parmetro formal manipulado dentro da sub-rotina.
A alterao efetuada no parmetro formal corresponde a alterao no parmetro real.
Identificamos a passagem por referncia colocando na relao de parmetros a
expresso VAR.
Por exemplo
Procedure troca (var a,b :real);
Var aux:real;
Begin
Aux:=a;
A:=b;
B:=aux;
End;

Calcular o fatorial de um numero lido usando procedure.
pr ogr amf at or i al ;
uses cr t ;
pr ocedur e f at ( var val : l ongi nt ; n: i nt eger ) ;
var
i : i nt eger ;
begi n
val : =1;
f or i : = 1 t o n do
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
45
val : =val *i ;
end;
var
r esp: l ongi nt ;
k: i nt eger ;
begi n
cl r scr ;
wr i t e( ' Di gi t e umval or i nt ei r o ' ) ; r eadl n( k) ;
f at ( r esp, k) ;
wr i t el n( ' O f at or i al de ' , k, ' e' ' ' , r esp) ;
r eadkey;
end.
Neste caso a varivel n passada como valor e a varivel val passada como referncia.

9.6 Function
Uma function um bloco de programa, ao qual so validadas todas as regras vistas
anteriormente. A diferena que uma function sempre retorna um valor no prprio nome
da funo cujo tipo definido na sua definio.
Uma function possui a seguinte sintaxe:
Function <nome>[(parmetros)] :<tipo>;
var
<variveis>
begin
<comandos>
end;
Por exemplo; Funo para determinar o fatorial de um nmero
pr ogr amf at or i al 2;
uses cr t ;
f unct i on f at ( n: i nt eger ) : l ongi nt ;
var
f at or i al : l ongi nt ;
i : i nt eger ;
begi n
f at or i al : =1;
f or i : = 1 t o n do
f at or i al : =f at or i al *i ;
f at : =f at or i al ;
end;
{pr ogr ama pr i nci pal }
var
k: i nt eger ;
begi n
cl r scr ;
wr i t e( ' Di gi t e umval or i nt ei r o ' ) ; r eadl n( k) ;
wr i t el n( ' O f at or i al de ' , k, ' e' ' ' , f at ( k) ) ;
{f at ( k) r et or na como f at or i al de k}
r eadkey;
end.
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
46
Capitulo X Arquivos
A manipulao de um conjunto de dados requer uma forma de armazenamento que
permita ser acesso e tratamento de um grande volume de informaes com facilidade.
10.1 Definio do Arquivo
Os arquivos em Pascal podem ser texto ou de tipo definido chamado de tipados e
compostos de registros.

A sintaxe a seguinte: Onde:
Type
<arquivo>=[text] ou [file of <tipo>]
var
<varivel>: <arquivo>;
<arquivo>nome do tipo do arquivo;
<tipo> tipo do arquivo (text, string, integer,
record )
<varivel>nome que ser usada dentro do
programa para representar o arquivo

10.2 Principais comandos com arquivos
Instruo Sintaxe Descrio
Assign Assign(<varivel>,caminho:\
arquivo);
Associa a varivel ao arquivo gravado
Rewrite Rewrite(<varivel>); Cria o arquivo com o nome da
varivel.Se o arquivo j existir, apaga o
antigo e re-cria um novo.
Reset Reset(<varivel>); Abre um arquivo existente e posiciona o
ponteiro no 1

registro
Append Append(<varivel>) Abre um arquivo texto existente e
posiciona o ponteiro no ultimo registro
Write Write(<varivel>, dados); Grava no arquivo <varivel>os dados
Writeln Writeln(<varivel>,dados); Grava em um arquivo texto os dados
Read Read(<varivel>,dados); Le do arquivo <varivel>os dados
Readln Readln(<varivel>,dados); Le de um arquivo texto <varivel> os
dados
Close Close(<varivel>); Fecha o arquivo
Seek Seek(<varivel>,posio); Posiciona o ponteiro na posio indicada.
O primeiro registro 0 (zero)
Filesize Filesize(<varivel>); Retorna o numero de registros do arquivo
Filepos Filepos(<varivel>); Retorna o numero do registro onde est
posicionado. O primeiro registro
Not eof Not eof(<varivel>); Verifica o final do arquivo
Not eoln Not eoln(<varivel>); Verifica o final da linha em um arquivo
texto




Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
47
10.3 Mtodos de acesso
Os arquivos so um conjunto de informaes gravadas fisicamente de forma seqencial.
Entretanto, podemos acessar as informaes de 3 formas distintas:
Acesso seqencial: as informaes so acessadas uma aps a outra assim como em
uma fita k-7. H a necessidade da leitura da informao anterior para o prosseguimento
da leitura.
Acesso direto ou randmico: as informaes so acessadas diretamente sem a
necessidade da leitura da informao anterior. Os discos CD permitem que localizemos
uma determinada msica sem ouvirmos a trilha anterior.
Acesso seqencial indexado: O arquivo tem um outro arquivo auxiliar que contm o
endereo da informao desejada. como se procurssemos no ndice a informao
desejada e fossemos diretamente a pgina que procuramos.
No nosso curso veremos apenas os acessos seqenciais e de acesso direto.

10.4 Exemplos:
Arquivo tipo texto.
O programa abaixo l uma frase e grava a frase lida. Depois inclui novas frases.
Finalmente exibe todas as frases gravadas.

pr ogr amar q_t ext o;
uses cr t ;
var
ar q: t ext ;
f r ase: st r i ng[ 255] ;
cont : char ;
begi n
cl r scr ;
assi gn( ar q, ' a: ar q1. t xt ' ) ; {associ a ar q ao ar qui vo a: \ ar q1. t xt }
r ewr i t e( ar q) ; {cr i a o ar qui vo ar q) ;
{t r echo par a l er uma f r ase e gr avar no ar qui vo}
cont : =' s' ; {cont i nua = si m}
wr i t el n( ' Lei t ur a dos dados' ) ;
whi l e cont <> ' N' do
begi n
wr i t e( ' Di gi t e uma f r ase ' ) ;
r eadl n( f r ase) ; {l e do t ecl ado uma f r ase}
wr i t el n( ar q, f r ase) ; {escr eva emar q a f r ase l i da}
wr i t e( ' Desej a cont i nuar ? S/ N ' ) ;
r eadl n( cont ) ;
cont : =upcase( cont ) ; {t r ansf or ma emmai uscul a}
end;
cl ose( ar q) ; {f echa o ar qui vo ar q}
{t r echo par a i ncl ui r novas f r ases no f i nal do ar qui vo}
append( ar q) ; {abr e posi ci onando no f i nal do ar qui vo}
wr i t el n( ' I ncl usao de novos dados' ) ;
cont : =' s' ; {cont i nua = si m}
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
48
whi l e cont <> ' N' do
begi n
wr i t e( ' Di gi t e uma f r ase ' ) ;
r eadl n( f r ase) ; {l e do t ecl ado uma f r ase}
wr i t el n( ar q, f r ase) ; {escr eva emar q a f r ase l i da}
wr i t e( ' Desej a cont i nuar ? S/ N ' ) ;
r eadl n( cont ) ;
cont : =upcase( cont ) ; {t r ansf or ma emmai uscul a}
end;
cl ose( ar q) ; {f echa o ar qui vo ar q}
{t r echo par a exi bi r as i nf or macoes do ar qui vo}
r eset ( ar q) ; {abr e posi ci onando no i ni ci o do ar qui vo}
wr i t el n( ' I nf or macoes do ar qui vo' ) ;
whi l e not eof ( ar q) do {enquant o nao f or o f i nal do ar qui vo
r epi t a}
begi n
r eadl n( ar q, f r ase) ; {l ei a emar q uma f r ase}
wr i t e( f r ase, ' ' ) ; {exi ba na t el a a f r ase l i da}
end;
r eadkey;
end.

Arquivos Tipados

Para facilidade de entendimento adotaremos um arquivo de empregados de uma empresa
onde cada registro contem o cdigo do empregado, seu nome, idade e sexo.
Cadastra os empregados
pr ogr amar q_t i pado;
uses cr t ;
t ype
{def i ne o r egi st r o empr egado}
dados_empr eg = r ecor d
codi go: st r i ng[ 5] ;
nome: st r i ng[ 30] ;
i dade: i nt eger ;
sexo: char ;
end;
var
cad: f i l e of dados_empr eg;
empr egado: dados_empr eg;
cont : char ;
begi n
cl r scr ;
assi gn( cad, ' a: \ empr eg. dat ' ) ; {associ a cad a empr eg. dat }
r ewr i t e( cad) ; {cr i a cad}
wr i t el n( ' Ent r ada de dados' ) ;
cont : =' S' ;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
49
whi l e cont <> ' N' do
wi t h empr egado do {si mpl i f i ca a descr i cao do campo}
begi n
wr i t e( ' Di gi t e o nome ' ) ; r eadl n( nome) ;
wr i t e( ' Di gi t e a i dade ' ) ; r eadl n( i dade) ;
wr i t e( ' Di gi t e o sexo ' ) ; r eadl n( sexo) ;
wr i t e( cad, empr egado) ;
wr i t e( ' Desej a cont i nuar ? S/ N ' ) ; r eadl n( cont ) ;
cont : =upcase( cont ) ;
end;
{f i l esi ze most r a o numer o de r egi st r os do ar qui vo}
wr i t el n( f i l esi ze( cad) , ' r egi st r os cadast r ados' ) ;
cl ose( ar q) ;
r eadkey;
end.
Incluso de um novo empregado
pr ogr amar q_t i pado;
uses cr t ;
t ype
{def i ne o r egi st r o empr egado}
dados_empr eg = r ecor d
codi go: st r i ng[ 5] ;
nome: st r i ng[ 30] ;
i dade: i nt eger ;
sexo: char ;
end;
var
cad: f i l e of dados_empr eg;
empr egado: dados_empr eg;
cont : char ;
novo_empr eg: dados_empr eg;
achei : bool ean;
n_empr eg: i nt eger ;
begi n
cl r scr ;
assi gn( cad, ' a: \ empr eg. dat ' ) ; {associ a cad a empr eg. dat }
r eset ( cad) ; {abr e o ar qui vo cr i ado ant er i or ment e}
{l ei t ur a dos dados do novo empr egado}
wr i t el n( ' Empr egado a i ncl ui r ' ) ;
whi l e cont <> ' N' do
begi n
wi t h novo_empr eg do
begi n
wr i t e( ' Di gi t e o codi go do empr egado ' ) ; r eadl n( codi go) ;
wr i t e( ' Di gi t e o nome ' ) ; r eadl n( nome) ;
wr i t e( ' Di gi t e a i dade ' ) ; r eadl n( i dade) ;
wr i t e( ' Di gi t e o sexo ' ) ; r eadl n( sexo) ;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
50
end;
{r ot i na de cr i t i ca dos dados}
{ver i f i ca se o empr egado j a e cadast r ado}
achei : =f al se;
whi l e not eof ( cad) and ( achei =f al se) do
begi n
r ead( cad, empr egado) ;
i f empr egado. codi go = novo_empr eg. codi go t hen
achei : =t r ue;
end;
{se t i ver achado nao pode ser cadast r ado de novo}
i f achei = t r ue t hen
wr i t e( ' Empr egado j a cadast r ado ' )
el se
wr i t e( cad, novo_empr eg) ;
wr i t e( ' Desej a cont i nuar ? s/ n ' ) ;
r eadl n( cont ) ;
cont : =upcase( cont ) ;
end;
cl ose( cad) ;
r eadkey;
end.
Edita os dados de um empregado

pr ogr amar q_t i pado;
uses cr t ;
t ype
dados_empr eg = r ecor d
codi go: st r i ng[ 5] ;
nome: st r i ng[ 30] ;
i dade: i nt eger ;
sexo: char ;
end;
var
cad: f i l e of dados_empr eg;
empr egado: dados_empr eg;
cont : char ;
k: i nt eger ;
novo_empr eg: dados_empr eg;
achei : bool ean;
n_empr eg: i nt eger ;
begi n
cl r scr ;
assi gn( cad, ' a: \ empr eg. dat ' ) ; {associ a cad a empr eg. dat }
r eset ( cad) ; {abr e o ar qui vo cr i ado ant er i or ment e}
{l ei t ur a dos dados do novo empr egado}
wr i t el n( ' Empr egado a Al t er ar ' ) ;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
51
whi l e cont <> ' N' do
begi n
wr i t e( ' Di gi t e o codi go do empr egado
' ) ; r eadl n( novo_empr eg. codi go) ;
{r ot i na de cr i t i ca dos dados}
{ver i f i ca se o empr egado j a e cadast r ado}
achei : =f al se;
whi l e not eof ( cad) and ( achei =f al se) do
begi n
r ead( cad, empr egado) ;
i f empr egado. codi go = novo_empr eg. codi go t hen
achei : =t r ue;
k: =k+1;
end;
{a posi cao emque f oi encont r ado e k- 1}
i f achei = t r ue t hen
begi n
wr i t el n( ' Dados at uai s' ) ;
wi t h empr egado do
wr i t el n( codi go, ' ' , nome, ' ' , i dade: 2, ' ' , sexo) ;
wr i t el n( ' Dados a al t er ar ' ) ;
wi t h novo_empr eg do
begi n
wr i t e( ' Di gi t e o nome ' ) ; r eadl n( nome) ;
wr i t e( ' Di gi t e a i dade ' ) ; r eadl n( i dade) ;
wr i t e( ' Di gi t e o sexo ' ) ; r eadl n( sexo) ;
end;
seek( cad, k- 1) ; {posi ci ona onde f oi encont r ado}
wr i t e( cad, novo_empr eg) ;
end
el se
wr i t e( ' Empr egado nao cadast r ado' ) ;
wr i t e( ' Desej a cont i nuar ? s/ n ' ) ;
r eadl n( cont ) ;
cont : =upcase( cont ) ;
end;
seek( cad, 0) ;
wr i t el n; wr i t el n( ' Cadast r o at ual ' ) ;
whi l e not eof ( cad) do
begi n
r ead( cad, empr egado) ;
wi t h empr egado do
wr i t el n( codi go, ' ' , nome, ' ' , i dade: 2, ' ' , sexo) ;
end;
cl ose( cad) ;
r eadkey;
end.
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
52
Retira empregado do cadastro
pr ogr amar q_t i pado;
uses cr t ;
t ype
{def i ne o r egi st r o empr egado}
dados_empr eg = r ecor d
codi go: st r i ng[ 5] ;
nome: st r i ng[ 30] ;
i dade: i nt eger ;
sexo: char ;
end;
var
cad: f i l e of dados_empr eg;
aux: f i l e of dados_empr eg;
empr egado: dados_empr eg;
cont : char ;
k: i nt eger ;
cod_demi t i do: st r i ng[ 5] ;
achei : bool ean;
begi n
cl r scr ;
assi gn( cad, ' a: \ empr eg. dat ' ) ; {associ a cad a empr eg. dat }
assi gn( aux, ' a: \ auxi l i ar . dat ' ) ;
r eset ( cad) ; {abr e o ar qui vo cr i ado ant er i or ment e}
r ewr i t e( aux) ;
{l ei t ur a dos dados do novo empr egado}
wr i t el n( ' Empr egado a Ret i r ar ' ) ;
whi l e cont <> ' N' do
begi n
wr i t e( ' Di gi t e o codi go do empr egado ' ) ; r eadl n( cod_demi t i do) ;
{r ot i na de cr i t i ca dos dados}
{ver i f i ca se o empr egado j a e cadast r ado}
achei : =f al se;
whi l e not eof ( cad) do
begi n
r ead( cad, empr egado) ;
i f empr egado. codi go = cod_demi t i do t hen
begi n
wr i t el n( empr egado. nome, ' ' , empr egado. i dade, '
' , empr egado. sexo) ;
achei : =t r ue;
end
el se
wr i t e( aux, empr egado) ;
end;
i f achei = t r ue t hen
wr i t el n( ' Empr egado r emovi do' )
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
53
el se
wr i t el n( ' Empr egado nao cadast r ado' ) ;
wr i t e( ' Desej a cont i nuar ? s/ n ' ) ;
r eadl n( cont ) ;
cont : =upcase( cont ) ;
end;
r ewr i t e( cad) ; {apaga cad e mant emaber t o}
seek( aux, 0) ; {posi ci ona no 1 r egi st r o}
whi l e not eof ( aux) do
begi n
r ead( aux, empr egado) ;
wr i t e( cad, empr egado) ;
end;
er ase( aux) ;
seek( cad, 0) ;
wr i t el n; wr i t el n( ' Cadast r o at ual ' ) ;
whi l e not eof ( cad) do
begi n
r ead( cad, empr egado) ;
wi t h empr egado do
wr i t el n( codi go, ' ' , nome, ' ' , i dade: 2, ' ' , sexo) ;
end;
cl ose( cad) ;
r eadkey;
end.
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
54
Capitulo XI Conjuntos

O conceito de conjunto usado em matemtica como uma coleo de objetos,
nmeros etc.
Em Pascal, um conjunto pode ser composto por zero elementos conjunto vazio
ou por vrios elementos no mximo 256.
Os elementos integrantes de um conjunto so representados em colchetes e
separados por virgulas, como por exemplo:
[1,3,5,7,9] - alguns inteiros
[3..7] - inteiros entre 3 e 7
[A..Z] - letras maisculas de A at Z
[golf, marea,audi] - marcas de carro
[] - conjunto vazio

Declarao
A forma geral para a definio de conjuntos :
Type
<identificador>=set of <tipo>;
Exemplos
Type
Caracteres =set of char;
Letras_maiusculas =set of A..Z;
Digitos =set of 0..9;
Carros =set of (golf,marea,audi);
Var
Letras:letras_maiusculas;
Marca: carros;

Operaes em tipo SET
Atribuio
A atribuio realizada de forma semelhante aos demais tipos:
C:=[a,e, i, o, u];
Numero:=[3,4,5];

Unio
O operador de unio representado pelo sinal +fazendo que esta unio resulte
em um terceiro conjunto constituido por elementos dos outros dois.
Por exemplo:
a:=[1,2,3];
B:=[2,3,4,5];
C:=a+b; resulta em c=[1,2,3,4,5]

Interseo
representada pelo operador * resultando por um terceiro conjunto com os
elementos comuns aos outros dois conjuntos:
Por exemplo:
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
55
A:=[1,2,3];
B:=[2,3,4,5];
C:=a*b; resulta em c=[2,3]

Diferena
representada pelo operador resultando em um terceiro conjunto cujos
elementos esto em um conjunto e no no outro;
Por exemplo:
A:=[1,2,3,6];
B:=[2,3,4,5];
C:=a-b; resulta em c=[ 1,6];
C:=b-a; resulta em c=[4,5]

Operadores relacionais
A=B todos os elementos esto em ambos conjuntos;
A<>B alguns ou todos os elementos no esto em ambos conjuntos
A>=B todos os elementos de B esto em A
A<=B todos os elementos de A esto em B
A IN B A um elemento de B este operador o que apresenta maior uso nos
programas.
Exemplos
pr ogr amset 1;
uses cr t ;
{l e uma t ecl a e i nf or ma se e' mai uscul a, mi nuscul a ou numer o}
t ype
si mbol o= set of char ;
var
mai u, mi nu, nume: si mbol o;
t ecl a: char ;
begi n
cl r scr ;
mai u: =[ ' A' . . ' Z' ] ;
mi nu: =[ ' a' . . ' z' ] ;
nume: =[ ' 0' . . ' 9' ] ;
r epeat
wr i t e( ' Pr essi one uma t ecl a ' ) ; t ecl a: = r eadkey;
i f t ecl a I N mai u t hen
wr i t el n( ' Voce pr essi onou l et r a mai uscul a' )
el se
i f t ecl a I N mi nu t hen
wr i t el n( ' Voce pr essi onou l et r a mi nuscul a' )
el se
i f t ecl a I N nume t hen
wr i t el n( ' Voce pr essi onou numer o' )
el se
wr i t el n( ' Voce pr essi onou out r a t ecl a' ) ;
unt i l t ecl a = #27;
end.
pr ogr amal t er a;
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
56
uses cr t ;
var
nomel : st r i ng[ 30] ;
nome: ar r ay[ 1. . 30] of char ;
i , j , l : i nt eger ;
l et r a: set of char ;
t : char ;
begi n
cl r scr ;
wr i t el n( ' Al t er acao de dados de Cl i ent es' : 45) ;
got oxy( 1, 3) ;
wr i t e( ' Di gi t e o Nome do Cl i ent e ' ) ; r eadl n( nomel ) ;
l et r a: =[ ' A' . . ' Z' ] +[ ' a' . . ' z' ] +[ ' ' ] ;
got oxy( 1, 4) ; Wr i t e( ' Nome ' ) ;
got oxy( 10, 4) ; wr i t e( nomel ) ;
got oxy( 10, 4) ;
t : =r eadkey;
i f ( t i n l et r a) t hen
begi n
got oxy( 10, 4) ; cl r eol ;
nome[ 1] : =t ;
end
el se
begi n
wr i t el n( ' Voce pr essi onou di f de l et r a' ) ;
r eadkey;
exi t ;
end;
j : =1;
l : =11;

whi l e ( nome[ j ] i n l et r a) do
begi n
got oxy( l , 4) ;
wr i t e( nome[ j ] ) ;
l : =l +1;
j : =j +1;
nome[ j ] : =r eadkey;
end;
wr i t el n;
wr i t el n( ' Nome Al t er ado ' ) ;
i : =1;
whi l e nome[ i ] <> #13 do
begi n
wr i t e( nome[ i ] ) ;
i : =i +1;
end;
r eadkey;
end.
Resumo Terico Turbo Pascal 7.0 - Prof Alexandre Rojas
57
Capitulo XII Unit
Na linguagem Pascal existem vrias Unit pr definidas que j vem sendo utilizadas
como por exemplo a CRT, DOS, entre outras.
Entretanto, podemos criar nossas prprias unidades que funcionaro como
programas autnomos que sero ligados aos programa principal.
Compilar um programa Pascal para a memria ir gerar um arquivo .PAS.
Compilar um programa Pascal para o disco ir gerar um arquivo .EXE.
Compilar uma Unit ir gerar um arquivo TPU.
A sintaxe de uma Unit
UNIT nome da unidade;
INTERFACE
Declarao de outras unidades utilixzadas;
Declarao das procedures e funes;
IMPLEMENTATION
Desenvolvimento das procedures e funes;
END.
Exemplo: Criar uma unidade que escreva Estou na procedure.
1) Digite o programa:
uni t uni 1;
i nt er f ace
uses cr t ;
pr ocedur e achei ;
i mpl ement at i on
pr ocedur e achei ;
begi n
cl r scr ;
wr i t el n( ' Est ou na pr ocedur e' ) ;
end;
end.
1.1 No esquea de alterar o destino da compilao para o disco !!
1.2 O nome usado para salvar o arquivo ser a referncia para a ligao com o
programa principal
2 Digite agora o programa principal:
pr ogr amuni dade2;
uses cr t , uni 1;
begi n
achei ;
r eadkey;
end.

Você também pode gostar