------------------------------------------------------------------------
Tutorial de Turbo Pascal 
------------------------------------------------------------------------


1- Tipos de Variveis 
2- Units 
3- Comandos Bsicos 
4- Estruturas Condicionais 
 4.1 If.. Then.. Else 
 4.2 CASE 
5- Estruturas de Repetio 
 5.1 For 
 5.2 While 
 5.3 Repeat 
6- Manipulao de Strings 
7- Functions e Procedures 
8- Arquivos e Registros 
 
 

BEGIN 

- Todo programa comea com a declarao PROGRAM seguido de um nome do programa. 
- Aps deve-se declarar as unidades. 
- Declarar as variveis. 
- O algortmo em si comea com BEGIN e termina com END. (no esquea do ponto no end); 
- Todas as instrues terminam com ; . 

 Ex.: 

 Program example; 
 Uses crt; 
 Var x : integer; 
 y : real; 
 
 Begin 
 {Aqui vai o algortmo} 
 End. 
 

1 - Tipos de VARIVEIS 

 - Boolean : ocupa 1 byte, s pode ter os valores True ou False (Verdadeiro ou Falso); 
 - Real : ocupa 6 bytes, seus valores vo de 1E-38 at 1E+38; 
 - Integer : ocupa 2 bytes, seus valores vo de -32768 at 32767, do tipo inteiro; 
 - Word : ocupa 2 bytes, inteiro de 0 a 65535; 
 - Longint : ocupa 4 bytes, valores inteiros de -2147483648 a 2147483647; 
 - Shortint : inteiros de -128 a 127; 
 - Byte : ocupa 1 byte, tipo inteiro de 0 a 255; 
 - Char : ocupa 1 byte, tipo alfanumrico, seu contedo  qualquer valor da tabela ASCii; 
 - String : ocupa de 2 a 256 bytes, cadeia de caracteres; 

As prximas variveis so s para o Turbo Pascal 5 ou superior 
 - Single : tipo real com 7 digitos 
 - Double : tipo real com 15 digitos 
 - Extended : tipo real com 19 digitos 
 - Comp : inteiros de -10E18 at 10E18 

 Obs: A atribuio de um valor a uma variavel  com := 
 Soma:=(1+2+3+4); 

2- UNITS 

As units so rotinas separadas do programa principal. Para usar uma unit deve se declarar Uses. 

 - CRT: rotinas de vdeo e som; 
 - DOS: Controles do SO; 
 - GRAPH: Rotinas grficas; 
 - PRINTER: Define LST como arquivo de texto direcionado para impressora; 

 possivel se criar uma unit prpria, para ser usada em vrios programas. 
 Ex: 

 UNIT Exemplo; 
 INTERFACE 
 PROCEDURE Logo; 

 IMPLEMENTATION 
 USES Crt; 
 VAR C : Integer; 

 PROCEDURE Logo; 
 BEGIN 
 For C:=1 to 15 do 
 TextColor(c); 
 WriteLn('|------------------------|'); 
 WriteLn('| Exemplo de um logo |'); 
 WriteLn('|------------------------|'); 
 END; 

 BEGIN 
 END. 

Quando num programa voc declarar USES "Exemplo" e charmar a rotina "Logo" o logo aprecer piscando na tela. 

3- COMANDOS BSICOS DE I/O 

 Write ou WriteLn : escreve algo num dispositivo de sada, se o dispositivo no for especificado o default ser a tela do micro. 
 WriteLn('Isto  uma string e sair na tela'); 

 Read ou ReadLn : Permite a entrada de dados via teclado 
 Write('Digite um valor para X: )' 
 Read(x); 

 ClrScr (Clear Screen): Permite limpar a tela, posicionando o cursor no canto superior esquerdo. Equivale ao CLS do DOS. 

 GotoXY : Posiciona o cursor em qualque parte da tela. 
 GotoXY(Coluna, Linha); 

 Delay : Permite uma pausa no programa em milisegundos. (Este comando funciona conforme o clock do computador, sendo diferente em cada tipo de computador); 
 Delay(1000); 

4- ESTRUTURAS CONDICIONAIS 

As estruturas condicionais imnpem uma condio para que uma tarefa seja realizada. 

4.1 - Condio IF.. Then.. Else (Se.. Ento.. Seno); 

 Se a condio for satisfeita eno executa um bloco de tarefas seno executa outra tarefa ou cai fora da estrutura. 

 If <condio> 
 Then <bloco>; 

 OU 

 If <Condio> 
 Then <bloco> 
 Else <bloco>; 

4.2 - Instruo CASE; 

 O comando CASE  um seletor de opes, executando a opo que for igual a expresso. 

 Ex.: 
 CASE <expresso> Of 
 1:bloco; 
 2:bloco; 
 3:bloco; 
 Else 
 bloco; 

 END; 

5- Estruturas de REPETIO 

 Uma estrutura de repetio repete um bloco at que a condio seja satisfeita. 

5.1 FOR 

 FOR X:=1 to 10 do 
 Begin 
 <Bloco> { O bloco ser repetido at que x tenha o valor 10} 
 end; 

Ex.: 
 
ClrScr; 
For L:=1 to 24 do 
begin 
GotoXY(1,L); 
WrteLn('Esta  a linha ', l); 
End; 

5.2 WHILE 

 While <condio> Do 
 Enquanto a condio no for satisfeita faa 

Ex.: 

while x<100 do 
begin 
write('Digite um valor para A: '); 
read(a); 
x:=a+b; 
end; 

5.3 REPEAT 

 Repete enquanto a condio no for satisfeita. 

Ex.: 

REPEAT 
write('Aperte a tecla A'); 
read(tecla); 
UNTIL tecla='a'; 

6- Manipalao de STRINGS 

 Lenght : Retorna a quantidade de caracteres contidas em uma string 

 Pos : Retorna a posio de uma sub-string dentro de uma string 

 Copy : Retorna uma substring de uma string de acordo com a posio e a quantidade de caracteres predefinida. 
 Ex.: 
 v:='asdllgoprtfacillldeas' 
 Write(copy(v,11,5)); 
 {na tela aparecer a palavra 'facil'} 

 Val : converte uma string passada como parametro para o valor numrico. 
 
7- FUNCTIONS & PROCEDURES 

 PROCEDURE 

 Uma Procedure Realiza uma srie de tarefas quando chamada. 

Ex.: 

Program P_Exemplo; 
Uses CRT; 
Var op:byte; 

Procedure Menu; 
begin 
ClrScr; 
WriteLN('Digite sua Opo:'); 
WriteLN; 
WriteLN('1- Mostrar Registros'); 
WriteLN('2- Fechar e Sair'); 
OP:=readkey; 
End; 

BEGIN 
Clrscr; 
Write('Aguarde carregando o programa...'); 
menu; {Aqui a procedure  chamada} 
Case Op of 
 1:<bloco> 
 2:<bloco> 
END. 

FUNCTION 

 A FUNCTION  uma rotina que nos retorna um determinado valor. Da mesma 
 forma que uma procedure, uma FUNCTION deve ser declarada antes de ser 
 utilizada. 

Ex.: 
PROGRAM Ex_Function; 
USES CRT; 
VAR X:INTEGER; 

FUNCTION RESULTADO (Y:INTEGER): INTEGER; 
BEGIN 
 Y:=Y*Y; 
 RESULTADO:=Y; 
END; 

BEGIN 
 CLRSCR; 
 WRITE ('DIGITE UM VALOR: '); 
 READLN(X); 
 X:=RESULTADO(X); 
 WRITELN ('O RESULTADO  : ',X); 
 DELAY (10000); 
END. 

8 - ARQUIVOS e REGISTROS 

 ARQUIVO 

 Para formar um arquivo, devemos formar uma varivel do tipo arquivo, alm de criar comandos de abertura, leitura e fechamento. 

- File: Define uma varivel como sendo arquivo. 

 Ex.: 

Type Registro=record 
 Nome:string[50]; 
 Endereo:string[100]; 
 Fone: string[8]; 
 end; 

VAR Arquivo:File of Registro; 
 Reg:registro; 

- Assign: Este procedimento associa um nome externo de arquivo a uma varivel do tipo arquivo. 

Ex.: Assign (Arquivo,' d:\ficha.dat'); 

- Reset: Este procedimento permite abrir um arquivo j existente. No caso do arquivo no existir ocorrer erro. 

Ex.: Reset(Arquivo); 

- ReWrite: Permite Criar e Abrir um arquivo novo. Caso o arquivo j exista, ter seu contedo eliminado e ser gerado um novo arquivo. 

Ex.: ReWrite(Arquivo); 

- Close: Este procedimento permite que se feche um arquivo.  necessrio fechar um arquivo para no ocorrer erro com a FAT do Sistema Operacional. 

Ex.: Close(arquivo); 

- Write: Permite gravar em um arquivo. 

Ex.: Write (arquivo, reg); {Grava todo o reg no arquivo} 

- EOF: Retorna o valor TRUE quando for encontrado o fim do arquivo. 

Ex.: While not eof(arquivo) do 
 begin 
 x:=x+1; 
 Seek (arquivo,x); 
 end; 

- Seek: Este procedimento permite que movamos(do verbo 'movar') o ponteiro do arquivo para uma posio preestabelecida. 

Ex.: Seek(Arquivo,0); 

- FilePos: Retorna a posio atual do ponteiro do arquivo. 

Ex.: x:=FilePos(Arquivo); 

- FileSize: Retorna o numero de registros de um arquivo. 

END. 