apostila completa turbo pascal

Upload: marcos-costa

Post on 15-Jul-2015

567 views

Category:

Documents


0 download

TRANSCRIPT

Universidade Catlica de Pelotas Escola de Informtica

Linguagem Pascalpor Paulo Roberto Gomes Luzzardi

Reviso: Junho, 1996

Bibliografia CARROLL, David W. - Programao em TURBO PASCAL McGraw-Hill RAMALHO, Luciano & PRATES, Rubens - Turbo Pascal, Carto de Referncia, Livros Tcnicos e Cientficos Editora S.A.1

Contedo Programtico1. Introduo Linguagem Pascal 1.1 Histrico 1.2 Objetivos 1.3 Caractersticas de um Sistema em uma Linguagem Ideal 2. Ambiente Turbo Pascal 2.1 File 2.2 Edit 2.3 Run 2.4 Compile 2.5 Options 2.6 Debug 2.7 Break/watch 2.8 Como usar o DEBUG 3. Estrutura de um Programa Pascal 3.1 Identificadores 3.2 Comentrios 3.3 Estrutura Geral 3.4 Definio de Tipos (Type) 4. Tipos de dados 4.1 Integer 4.2 Real 4.3 Byte 4.4 Char 4.5 Boolean 4.6 String 4.7 Array 4.8 Word 4.9 ShortInt 4.10 LongInt 5. Operadores 5.1 Operadores Aritmticos 5.1.1 Com Reais2

5.1.2 Com Inteiros 5.1.3 Hierarquia dos Operadores 5.2 Operadores Relacionais 5.3 Operadores Lgicos 5.3.1 Not 5.3.2 And 5.3.3 Or 5.4 Operador de Incluso (In) 5.5 Procedimentos Especiais 5.5.1 Inc 5.5.2 Dec 6. Funes Padres 6.1 Abs 6.2 ArcTan 6.3 Cos 6.4 Sin 6.5 Exp 6.6 Frac 6.7 Int 6.8 Sqr 6.9 Sqrt 6.10 Ln 6.11 Chr 6.12 Ord 6.13 Round 6.14 Trunc 6.15 Pi 6.16 Random 7. Comandos 7.1 Tipos de Comandos 7.1.1 Seqncia 7.1.2 Seleo 7.1.3 Repetio 7.1.4 Atribuio 7.2 Comando SIMPLES e COMPOSTO 7.3 Comando If ... Then ... Else 7.4 Comando Case ... Of ... Else ... End3

7.5 Comando For ... Do 7.6 Comando While ... Do 7.7 Comando Repeat ... Until 7.8 Comando Halt 7.9 Comando Exit 8. Entrada e Sada 8.1 Entrada pelo Teclado 8.2 Sada no Vdeo 8.3 Sada na Impressora 9. Controle do Vdeo 9.1 ClrScr 9.2 GotoXY 9.3 ClrEol 9.4 DelLine 10. Comandos Especiais 10.1 Delay 10.2 TextBackGround 10.3 TextColor 10.4 Window 10.5 Sound e NoSound 10.6 WhereX e WhereY 10.7 TextMode 11. Vetores e Matrizes 11.1 Vetores 11.2 Matrizes 11.3 Sort (Ordenao) 12. Manipulao de "Strings" 12.1 Chr 12.2 Ord 12.3 Concat 12.4 Copy 12.5 Delete 12.6 Insert 12.7 Lenght 12.8 Pos 12.9 Str4

12.10 UpcCse 12.11 Val 12.12 FillChar 13. Procedures e Functions 13.1 Variveis Locais e Globais 13.2 Parmetros 13.3 Passagem de Parmetro por Valor 13.4 Passagem de Parmetro por Referncia 13.5 Function 13.6 Procedure 14. Arquivos 14.1 Procedimentos 14.1.1 Assign 14.1.2 Close 14.1.3 Erase 14.1.4 Read 14.1.5 Write 14.1.6 ReName 14.1.7 Reset 14.1.8 ReWrite 14.1.9 Seek 14.2 Funes 14.2.1 Eof 14.2.2 FilePos 14.2.3 FileSize 14.2.4 SizeOf 14.3 Como Definir um Registro (Record) 15. Grficos 15.1 Placas Grficas 15.1.1 CGA 15.1.2 EGA 15.1.3 VGA 15.2 Coordenadas de Tela

5

15.2.1 CGA 15.2.2 EGA 15.2.3 VGA 15.3 Deteco e Inicializao da Tela Grfica 15.4 PutPixel (Pontos) 15.5 Line (Linhas) 15.6 Rectangle (Retngulos) 15.7 Circle (Crculos) 15.8 Arc (Arcos) 15.9 DrawPoly (Polgonos) 15.10 SetColor e SetBkColor (Cor de Frente e Cor de Fundo) 15.11 OutTextXY e SetTextStyle (Textos) 15.12 Preenchimento (Pintura) 15.12.1 Retngulos (Bar) 15.12.2 Polgonos (FillPoly e FloodFill) 15.13 Ativao de Janelas 15.13.1 Janela Ativa 15.13.2 Limpar Janela Ativa 15.13.3 Salvar e Recuperar Janelas Grficas 16. Criao de Unidades ("Units") 16.1 Como Criar um Unidade 16.2 Exemplo de Criao de uma Unidade 16.3 Exemplo de Programa que usa uma Unidade 17. Memria de Vdeo 18. Passagem de Parmetros pela Linha de Comandos do Sistema Operacional 19. Ponteiros 19.1 Tipos de Alocao de Memria 19.1.1 Alocao Esttica 19.1.2 Alocao Dinmica 19.2 Acesso Direto a Memria 19.3 Acesso Direto a Memria de Vdeo 19.4 Listas Encadeadas 19.5 Filas e Pilhas 19.6 Listas Duplamente Encadeadas6

20. Interrupes

1. Introduo Linguagem Pascal

1.1 HistricoDesenvolvido em 1970 pelo Prof. Nicklaus Wirth no Technical University - Zurique Suia.Nome em homenagem Blaise Pascal (Sc. XVII).

1.2 Objetivosa) Ensino da Programao, pois uma linguagem didtica; b) Programao Estruturada.

1.3 Caractersticas do Sistema em uma Linguagem Ideala) Produzir programas-objeto compactos e eficientes; b) Usar uma linguagem de alto nvel, de fcil entendimento; c) Permitir ao programador fazer alteraes e visualizar os resultados rapidamente d) Produzir programas portteis para serem rodados em qualquer outro computador.

2. Ambiente Turbo Pascal 5.5r P o C umpile R doject En ile Fit Edit Tab Ident Insert Col Fill Line11

janela de edio

Message / Watch janela de mensagens do ambiente janela de assistncia (debug) F7-Trace F6-Switch F5-Zoom F1-HelpAlt: F1-Last help F3-Pick F6-Swap F7/F8-Prev/next error

2.1 File (Arquivo) [ALT][F]7

Permite carregar arquivo, salvar arquivo, listar diretrio, criar novos fontes, renomear arquivos, sada temporria ao Sistema Operacional e sada definitiva ao sistema operacional.

Load (Carregar) [F3] exibida uma caixa de dilogo solicitando o nome do arquivo a ser carregado, se for pressionado a tecla exibida outra caixa de dialgo contendo os nomes de todos os arquivos "*.pas" contidos no disco. O programador seleciona um arquivo (seta direita, esquerda, acima ou abaixo) e pressiona logo aps, o arquivo carregado do Disco para o Editor.

Pick (Pegar)[ALT][F3] exibida uma lista com os nomes dos ltimos arquivos que foram carregados. O programador pode selecionar um deles (seta acima ou abaixo) e ento carreg-lo do Disco para o Editor. Os nomes dos arquivos ficam armazenados em um arquivo chamado "TURBO.PCK".

New (Novo)Permite ao programador editar um "novo" arquivo. Este arquivo possui o nome de "NONAME.PAS", este nome deve ser renomeado quando o arquivo for salvo no disco (F2).

Save (Salvar) [F2]Salva o contedo do Editor no Disco. Se o arquivo no tiver nome ("NONAME.PAS"), pode ento, ser renomeado. Todo arquivo deve ter um nome que no seja "NONAME.PAS".

Write to (Escrever Como)Escreve (grava) o contedo do editor num outro arquivo indicado pelo usurio (conserva o antigo no disco e o novo no editor).

Directory (Diretrio)Exibe o diretrio do disco corrente, de acordo com uma mscara especificada, permite ainda, que um arquivo seja carregado.

Change dir (Mudar Diretrio)Permite mudar o subdiretrio (drive:\path) corrente.

Os Shell (Sada Temporria ao Sistema Operacional)8

Sada temporria do Turbo Pascal para o Sistema Operacional. Para retornar ao Ambiente digita-se Exit.

Quit (Sair) [ALT][X]Sada definitiva do Ambiente Turbo Pascal. Volta o controle ao Sistema Operacional.

2.2 Edit (Editar) [ALT][E]Permite a criao ou edio de programas. Para sair do editor pressiona-se a tecla F10 ou ALT mais a letra maiscula da opo do menu principal.

2.3 Run (Correr, Executar) [ALT][R] Run (Executa) [CTRL][F9]Compila o programa, linka as unidades e executa o programa.

Program reset (Reseta Programa) [CTRL][F2]Termina a execuo de um programa que foi executado com o "Debug". Desmarca a linha atual do "Debug".

Go to cursor (V para Cursor) [F4]Fora o "Debug" executar todas as linhas at a posio do cursor, ou seja, pula as instrues intermedirias.

Trace into (Traa Dentro) [F7]Fora o "Debug" a executar linha a linha entrando obrigatoriamente dentro das "procedure" e "function".

Step over (Passa Ssobre) [F8]Fora o "Debug" a executar linha a linha sem entrar nas "procedure" e "function".

User screen (Tela do Usurio) [ALT][F5]9

Exibe a tela de execuo do programa.

2.4 Compile (Compilar) [ALT][C] Compile (Compilar) [ALT][F9]Compila o programa fonte e linka as unidades.

Make (Fazer) [F9]Compila o arquivo primrio ("Primary File: ") ou o arquivo presente no editor; e todos os arquivos que dependem deste, inclusive as unidades ("unit") que foram alteradas.

Build (Construir)Recompila todos os arquivos relacionados ao arquivo primrio ("Primary File").

Destination (Destinao) [Memory ou Disk]Especifica o destino do programa executvel. Se "Memory" o executvel temporrio, se "Disk" o arquivo executvel armazenado em disco (como .EXE).

Find error (Achar Erro)Localiza um erro de execuo "RunTime Error" (Erro em Tempo de Execuo).

Primary file (Arquivo Principal)Usado para definir o arquivo principal, usado pelo "Make" e "Build".

Get info (Mostra Informaes)Exibe uma janela contendo informaes do arquivo fonte.

2.5 Options (Opes) [ALT][O] Compiler (Compilador)10

Permite a insero de diretivas de compilao sem escrev-las no programa-fonte. Range checking (ON ou OFF): Se ligada, verifica se os "array" e "string" esto dentro das faixas definidas pelo programador. Stack checking (ON ou OFF): Se ligada, o compilador verifica se h espao na pilha para as variveis locais, antes das chamadas das "procedure" e "function". I/O checking (ON ou OFF): Se ligada, verifica se h erros de entrada e sada. Em OFF pode-se testar erros de entrada e sada atravs da funo IoResult. Force for calls (ON ou OFF): Se ligada, o compilador gera chamadas Near para "procedure" e "function" que estiverem sendo compiladas. Overlays allowed (ON ou OFF): Permite a gerao de cdigo "OverLay" para uma unidade (".OVL"). Align data (Word ou Byte): Em "Word" todos os dados maiores que "Byte" so tratados como tipo "Word". Var-string checking (Strict ou Relaxed): Se "Strict" (rigorosa) verifica o tamanho das "string" passadas como parmetro, se "Relaxed" (moderada) no verifica. Boolean evaluation (Short circuit ou Complete): Se "Short circuit" os testes de uma expresso booleana so mais rpidos, se "complete" todas as condies so testadas. Numeric processing (Software ou 8087-80287): Com 8087-80287 permitido o uso dos tipos: Single, Double, Extended ou Comp. Se "Software" permite somente o uso dos tipos comuns do Turbo. Emulation (ON ou OFF): Emula (simula) um coprocessador aritmtico, se ele no existir. Debug information (ON ou OFF): Gera um arquivo de informaes de depurao de um arquivo que est sendo compilado. Local symbols (ON ou OFF): Gera informaes sobre smbolos locais (nomes e tipos de todas as variveis e constantes locais de um smbolo). Conditional defines: Define smbolos que podem ser referenciados em diretivas de compilao condicionais no arquivo fonte. Memory Sizes (Stack size, Low heap limit ou High heap limit): Permite configurar o mapa de memria de um arquivo de cdigo resultante, ou seja, o tamanho da memria. Stack size: Permite especificar o tamanho do segmento da pilha em bytes. Low heap limit: Permite especificar o limite inferior da pilha. High heap limit: Permite especificar o limite superior da pilha.11

LinkerPermite especificar diferentes modalidades de gerao do mapa do "linker" e o destino do "link buffer". Map file (OFF, Segments, Publics ou Detailed): OFF: Arquivo "*.MAP" no gerado. Segments: Inclui informaes do segmento de memria no arquivo *.MAP. Publics: Inclui informaes sobre smbolos, procedure/function no arquivo *.MAP. Detailed: Informaes mais detalhadas do que as anteriores. Link buffer (Memory ou Disk): Define o destino do "Link buffer". Memory: Mais rpido, mas no aceita programas grandes; Disk: Mais lento, mas aceita programas maiores.

Environment (Ambiente)Permite configurar o ambiente de trabalho. Config auto save (ON ou OFF): Se ligado, atualiza o arquivo de configurao ("TURBO.TP") quando o programador sai do Turbo Pascal. Edit auto save (ON ou OFF): Salva automaticamente o arquivo fonte quando o arquivo for executado ("Run") ou quando da sada para o Sistema Operacional ("Quit" ou "Os shell"). Backup files (ON ou OFF): Gera arquivo "*.BAK" quando o arquivo fonte for salvo. Tab size 8: Especifica o tamanho da tabulao horizontal do editor (tab) (2 at 16 brancos). Zoom windows (ON ou OFF): se ligada, as janelas Edit, Watch ou OutPut esto expandidas. Screen size (25 line display ou 43/50 line display): Permite selecionar o nmero de linhas na tela: 25 placa CGA, 43 placa EGA e 50 placa VGA.

Directories (Diretrio)Permite especificar drive:\path para diretrios dos arquivos usados e gerados pelo turbo. Turbo Directory: Diretrio dos arquivos do Turbo Pascal (drive:\path), normalmente: C:\LING\TP.12

EXE & TPU Diretory: Diretrio dos arquivos "*.EXE" (executveis) e "*.TPU" (unidades). Include Diretories: Especifica o diretrio dos arquivos utilizados pela diretiva de incluso de fontes {$I}. Unit Diretories: Especifica o diretrio dos arquivos fontes de unidades ("*.PAS" das unidades). Object Directories: Especifica o diretrio dos arquivos objetos "*.OBJ". Pick File Name: Especifica o drive, caminho e nome do arquivo de seleo "*.PCK". Current Pick File: Indica o drive, caminho e nome do arquivo de seleo corrente.

Parameters (Parmetros)Permite a especificao de parmetros para que o programa possa ser compilado na memria.

Save options (Salva Opes)Salva o arquivo de configurao "*.TP" (default "TURBO.TP").

Retrieve options (Recuperar Opes)Carrega o arquivo de configurao "*.TP" (default "TURBO.TP").

2.6 Debug (Depurao) [ALT][D]Evaluate [CTRL][F4]: Exibe uma janela de avaliao com trs opes: (Evaluate, Result e New name) Evaluate: Permite identificar uma expresso ou uma varivel a ser submetida ao Debug. Result: exibido o resultado da avaliao da expresso ou varivel selecionada acima. New name: Permite atribuir um novo valor. Call stack [CTRL][F3]: Durante a depurao, permite chamar uma janela com a pilha que contm uma lista de "procedure" e "function" que mostram a posio atual, mostrando tambm, os parmetros de cada chamada. Find procedure: Posiciona o cursor no incio de uma "procedure" ou "function".13

Integrated debugging (ON ou OFF): Se ligado, aciona o debugger, "BreakPoints" (pontos de parada) podem ser colocados. Standalone debugging (ON ou OFF): Se ligado com "Compile/Destination" em "Disk", as informaes do "Debugger" so anexadas ao arquivo "*.EXE" para uso com o "Turbo Debugger". Display swapping (None, Smart ou Always): Permite estabelecer modos de visualizao de "OutPut" de tela durante a depurao do programa. None: No mostra a tela de sada do programa. Smart: Mostra os efeitos da tela somente quando houver um comando de sada. Always: Mostra sempre a tela resultante. Refresh display: Retorna para a tela do ambiente.

2.7 Break/watch [ALT][B]Se a opo "Integrated debugging" do menu "Debug" estiver em "On" pode-se adicionar, deletar, editar, remover todos os "watches" ou colocar, retirar ou procurar "BreakPoints". Add watch [CTRL][F7]: Permite que a varivel sob o cursor seja exibida na janela de assistncia quando o "debug" for executado Delete watch: Permite que uma varivel da janela de assistncia seja deletada. Edit watch: Permite que uma varivel da janela de assistncia seja editada (alterada). Remove all watches: Remove todas as variveis da janela de assistncia. Toggle breakpoint [CTRL][F8]: Permite que "BreakPoints" (pontos de parada) sejam colocados ou retirados. Clear all breakpoints: Permite que todos os "BreakPoints" sejam removidos. View next breakpoint: Permite visualizar o prximo "BreakPoint".

2.8 Como usar o DEBUGPasso 1: Ter as duas janelas na tela: janela de edio e janela de assistncia [F5]; Passo2: Marcar um "BreakPoint" (ponto de parada) [CTRL][F8] ou opo "Toggle breakpoint" do menu "Break/watch"; Passo 3: Rodar o programa "Run" ou [CTRL][F9], o programa executado at a linha anterior ao "BreakPoint";14

Observao: Para visualizar o resultado obtido na tela de execuo [ALT][F5] ou a opo "User screen" do menu "Run"; Passo 4: Para selecionar as variveis que se deseja assistir, posiciona-se o cursor em cima da varivel e [CTRL][F7] ou a opo "Add watch" do menu "Break/watch", aps aparecer uma janela com a varivel no seu interior (podendo-se alterar ou mudar a varivel) pressiona-se [RETURN]; Passo 5: Para visualizar a execuo do programa linha linha pressiona-se [F8] (opo "Step over" do menu "Run") ou [F7] (opo "Trace into" do menu "Run"): [F8]: executa o programa linha linha sem entrar nas "procedure" e "function"; [F7]: executa o programa linha linha entrando tambm nas "procedure" e "function"; Passo 6: Pode-se ainda "Delete watch" (deletar varivel), "Edit watch" (editar varivel) ou "Remove all watches" (remover todas as variveis) no menu "Break / watch". Passo 7: Pode-se ainda desviar a execuo do "debug" para a linha que est o cursor [F4] ou a opo "Goto cursor" do menu "Run"; Passo 8: Para encerrar a execuo do "debug" [CTRL][F2] ou a opo "Program reset" do menu "Run", deve-se ainda desmarcar todos os "breakpoints" atravs da opo "Clear all breapoints" do menu "Break/watch".

3. Estrutura de um Programa Pascal 3.1 IdentificadoresSo os nomes criados pelo programador para: - nomes de Constantes (Const); - nomes de Variveis (Var); - nomes de Tipos (Type); - nomes de Procedimentos (Procedure); - nomes de Funes (Function); - nomes de Unidades (Unit); - nomes de Programas (Program). Regras: - Todo identificador deve comear com uma letra ou subscrito (_); - No pode conter espaos; - Os caracteres vlidos so letras, dgitos, subscrito; - Pode conter qualquer quantidade de caracteres, mas somente os primeiros 63 so significativos.

15

3.2 ComentriosO programador pode, dentro do seu programa, fazer comentrios sem que o cdigo seja compilado, isto pode ser feito de duas maneiras: (* aqui comea o programa *) ou { aqui comea o programa }

3.3 Estrutura Geral(* ----------------------------------------- Nome do programa *) Program nome_do_programa; (* opcional *)

(* ------------------------------------------------- Unidades *) Uses Crt,Printer,Graph; // unidades

(* ---------------------------------------------- Declaraes *) Const x = 100; PI = 3.1415; UP = #72; LEFT = #75; RIGHT = #77; DOWN = #80; PGUP = #73;` PGDN = #81; ENTER = #13; ESC = #27; BACKSPACE = #8;

{tecla acima} {tecla esquerda} {tecla direita} {tecla abaixo} {tecla pagina acima} {tecla pagina abaixo} {tecla RETURN ou ENTER} {tecla ESC} {tecla BACKSPACE}

Type Nome = String[80]; Var A,B: Integer; C: Real; N: Nome;

(* ----------------------------------------------- Definies *) Procedure nome_do_procedimento(parmetros); Begin comandos; End;16

Function nome_da_funo(parmetros): TIPO DA FUNAO; Begin comandos; End; (* --------------------------------------- Programa Principal *) Begin comandos; End.

3.4 Definio de Tipos (Type)Em Pascal o programador pode definir seus prprios tipos de dados. Uses Crt; Type TIPO_DATA = Record ano: Integer; mes: 1..12; dia: 1..31; End; TIPO_NOME: String[80]; Var Data: TIPO_DATA; Nome: TIPO_NOME;

Begin ClrScr; Data.ano := 1995; Data.mes := 12; Data.dia := 19; Nome := _UCPel';

4. Tipos de Dados 4.1 - Integer: (2 bytes)Var Contador,Acumulador: Integer; Begin Contador := 1000; Acumulador := -32000; Faixa: [-32768 32767]

17

4.2 - Real: (6 bytes)

Faixa: [1.0E-38 1.0E+38]

Var Pi,Inflacao,Juros,Nota,Salario: Real; Begin Pi := 3.1415; Inflacao := 13.6; Juros := 25.7; Nota := 5.99; Salario := 87657.99;

4.3 - Byte: (1 byte)

Faixa: [0 255]

Var Dia,Mes,Idade,Numero_de_Dentes: Byte; Begin Dia := 31; Mes := 12; Idade := 33; Numero_de_Dentes := 12;

4.4 - Char: (1 byte)

Faixa: [0 255] caracteres

Var Sexo,Opcao,Letra,Operacao: Char; Begin Sexo := 'F'; Opcao := '1'; Letra := 'a'; Operacao := '+'; Caracter := #65; { Letra A } Letra := CHR(66); { Letra B }

4.5 - Boolean: (1 byte)Var Begin Continua := FALSE; Repeat ReadLn(X); ReadLn(Y); If X = Y then Continua := TRUE; Until Continua; Continua: Boolean; X,Y: Integer

Faixa: [True ou False]

18

4.6 - String[n]: (n+1 bytes)Var Nome: String[40]; Begin ClrScr; Nome := 'Turbo Pascal 5.5'; Write('Nome: ',Nome);

4.7 - Array[faixa] Of Tipo:Var Nome: Array[1..10] of String[80]; Nota: Array[1..10] of Real; Letra: Array[1..40] of Char; I: Byte; ClrScr; For I := 1 to 10 do Begin Write('Nome: '); Readln(Nome[I]); Write('Nota: '); Readln(Nota[I]); End; For I := 1 to 40 do Begin Write('Letra: '); Letra[I] := ReadKey; End;

Begin

4.8 - Word: (2 bytes) 4.9 - ShortInt: (1 byte) 4.10 - LongInt: (4 bytes) 5. Operadores

(0 65535)

Var Numero_de_Alunos_Catolica,Numero_de_Funcionarios: Word; (-128 127) (-2147483648 2147483647)

5.1 - Operadores Aritmticos19

5.1.1 - Com REAIS+ * / Adio Subtrao Multiplicao Diviso

5.1.2 - Com INTEIROS+ * / Div Mod Uses Crt; Var X,Y: Integer; Divisao: Real; Resto,Quociente: Integer; Adio Subtrao Multiplicao Diviso com resultado real Resultado inteiro da diviso Resto da diviso

Begin ClrScr; X := 7; Y := 2; Divisao := X / Y; Resto := X Mod Y; Quociente := X Div Y;

{ Divisao = 3,5 } { Resto = 1 } { Quociente = 3 }

7 1

2 3

5.1.3 HIERARQUIA (Precedncia)1. Parnteses: () 2. Operador unrio: -(valor) 3. Funes 4. Operador Not 5. * / Div Mod And 6. + - Or Xor 7. = > < >= = Igual Diferente Maior ou igual Menor ou igual Menor Maior

5.3 - Operadores Lgicos 5.3.1 - Not (negao):N O T NA o t V F F V

5.3.2 - And (e):C d A o i o n A N D V C d B o i o n F F F V V F F

5.3.3 - Or (ou):C d A o i o n O R V C d B o i o n F V F V V F V

5.3.4 - Xor (ou exclusivo):21

C d A o i o n X O R V C d B o i o n FV

V F

F V F

5.4 Operador de Incluso (In)Operador que testa a incluso de uma varivel em uma lista de constantes.

Exemplo (1):Repeat Ch := ReadKey; Until Ch In ['S','s','N','n']; (* verdadeiro quando Ch igual a: 'S','s','N','n' *) igual a: Repeat Ch := ReadKey; Until (Ch = 'S') Or (Ch = 's') Or (Ch = 'N') Or (Ch = 'n'); (* verdadeiro quando Ch igual a: 'S','s','N','n' *)

Exemplo (2):Repeat ReadLn(X); Until X In [1,2,3,4,5]; (* verdadeiro quando X igual a: 1,2,3,4,5 *) igual a: Repeat ReadLn(X); Until (X=1) or (X=2) Or (X=3) Or (X=4) Or (X=5); (* verdadeiro quando X igual a: 1,2,3,4,5 *) (* ou X In [1..5]; *)

5.5 Procedimentos Especiais22

5.5.1 IncProcedimento que permite o incremento de uma varivel inteira. Modo de Usar: Inc(varivel,passo); Inc(i); Inc(i,5); (* i := i + 1 *) (* i := i + 5 *)

5.5.2 DecProcedimento que permite o decremento de uma varivel inteira. Modo de Usar: Dec(varivel,passo); Dec(i); Dec(i,5); (* i := i - 1 *) (* i := i - 5 *)

6. Funes Padres6.1 - Exp(x): Funo exponencial ex 6.2 - Abs(x): Valor absoluto (valor sempre positivo). 6.3 - ArcTan(valor): Funo arco tangente (resultado em radianos). 6.4 - Cos(ang): Funo cosseno (ngulo em radianos). 6.5 - Sin(ang): Funo seno (ngulo em radianos). 6.6 - Frac(x): Retorna a parte fracionria. 6.7 - Int(x): Retorna a parte inteira. 6.8 - Sqr(x): Retorna x elevado a segunda potncia. 6.9 - Sqrt(x): Retorna a raiz quadrada de x. 6.10 - Ln(x): Logaritmo Natural. 6.11 - Chr(x): Transforma ordinal em caracter. 6.12 - Ord(x): Transforma caracter em ordinal. 6.13 - Round(x): Converte real em inteiro arredondando. 6.14 - Trunc(x): Converte real em inteiro sem arredondar. 6.15 - Pi: Valor Pi = 3.1415926535897932385. 6.16 - Random(v): Gera um nmero aleatrio de zero at (v-1).

7. Comandos 7.1 Tipos de Comandos 7.1.1 Seqncia23

um tipo de comando que no fluxo lgico do programa executado e o controle passa para o prximo comando. Exemplo: Var Nome: String; Begin ClrScr; Write('Nome: '); Readln(Nome);

7.1.2 Seleo (If e Case) um tipo de comando que no fluxo de execuo do programa permite que, atravs de condies, desvios sejam feitos, ou seja, alguns comandos so executados e outros no. Exemplo: If numero = 0 Then WriteLn('Zero') Else If numero > 0 Then WriteLn('Positivo') Else WriteLn('Negativo');

7.1.3 Repetio (For, While e Repeat) um tipo de comando que no fluxo de execuo do programa, permite que outros comandos sejam repetidos at que uma condio seja satisfeita ou enquanto uma condio satisfeita. Por exemplo: Exemplo: i := 1; Repeat (* repete at que uma tecla seja pressionada *) WriteLn('i = ',i); Inc(i); (* inc(i) igual a i := i+1 *) Until KeyPressed;

7.1.4 Atribuio

24

um tipo de comando que permite que uma expresso (equao) seja resolvida e o seu valor atribudo (igualado a uma varivel). Exemplo: i := 1; x := x + 1; x1 := (- b + sqrt(sqr(b) - 4 * a * c)) / (2 * a);

7.2 - Comando SIMPLES e COMPOSTO:Simples: Quando h apenas um comando ligado a outro. For i := 1 to 100 do WriteLn(i); Composto: Quando mais de um comando est ligado a outro, usar-se os delimitadores Begin, End; For i := 1 to 100 do Begin WriteLn('i = ',i); ch := ReadKey; End;

7.3 - Comando If ... Then ... Else (Comando de Seleo)Modo de usar: If condio Then comando; Se a condio verdadeira ento o comando executado, seno executado o prximo comando. ou If condio Then comando 1 Else comando 2; Se a condio verdadeira o comando 1 executado seno executado o comando 2. Comando, comando 1 e comando 2 podem ser simples ou compostos.

7.4 - Comando Case ... Of ... Else ... End (Comando de Seleo)25

Modo de usar: Case varivel OF constante 1: comando 1; constante 2: comando 2; . . . . constante n: comando n; End; Se a varivel igual a alguma constante o comando correspondente executado, se nenhuma constante for encontrada o comando ser terminado. ou Case varivel Of constante 1: comando 1; constante 2: comando 2; . . . . . . constante n: comando n; Else comandos; End; Se a varivel for igual a alguma constante, o comando correspondente executado, se nenhuma constante for encontrada os comandos aps o Else so executados, logo aps o comando Case terminado. Observao: A varivel no pode ser Array, String e Real. Case letra Of 'a'..'z': WriteLn('Minsculas'); 'A'..'Z': WriteLn('Maisculas'); '0'..'1': WriteLn('Nmero'); Else WriteLn('Caracter Especial'); End; Case digito Of26

'0': WriteLn('Zero'); '1': WriteLn('Um'); '2': WriteLn('Dois'); : '9': WriteLn('Nove'); Else WriteLn('ERRO: No um Nmero'); End;

7.5 Comando For ... Do (Comando de Repetio)Modo de usar: For Varivel_de_Controle := Valor_Inicial (To) Valor_Final Do comando; A varivel de controle no deve ser alterada no corpo do comando, pode-se ter comando simples ou comando composto, a varivel de controle no deve ser real, array ou string. To: Comando de repetio crescente DownTo: Comando de repetio decrescente For i := 0 To 255 Do Begin WriteLn('Cdigo: ',i,'- Caracter ASCII:',Chr(i)); ch := ReadKey; End; For i := 1 To n-1 Do For j := i+1 To n Do Begin WriteLn('i=',i,' | j=',j); ch := ReadKey; End;

7.6 Comando While ..Do (Comando de Repetio)Modo de Usar: While condio Do comandos; Enquanto a condio verdadeira os comandos so repetidos. Pode-se usar comando simples ou comando composto.

27

Exemplo: i := 1; While i = 10; i := 0; Repeat WriteLn('i = ',i); i := i+1; Until KeyPressed;

{ Repete at i ser igual a 10 }

{ Repete at que uma tecla seja pressionada }

7.8 O Procedimetro HaltFora o trmino do programa (aborta o programa), retornando ao sistema operacional, se o programa for executvel ou ao ambiente do Turbo Pascal, se o programa for um arquivo fonte. Modo de Usar: Halt (x: Word); ou Halt;

28

7.9 O Procedimento ExitFora a sada de um lao, passando a execuo para a prxima instruo. Repeat : If KeyPressed then Exit; : Until False;

8. Entrada e Sada 8.1 Entrada pelo TecladoReadLn: Procedimento que permite entrada de dados via teclado. A varivel x pode ser de qualquer tipo. ReadLn(x); ReadKey: Funo que permite a entrada de um caracter sem pressionar a tecla . A varivel deve ser do tipo Char e necessrio usar a unidade Crt;. Uses Crt; Var Tecla: Char; Begin ClrScr; Write('Digite uma TECLA: '); Tecla := ReadKey; WriteLn('Voc digitou: ',Tecla); End.

8.2 Sada no VdeoProcedimento que permite escrita no vdeo: Write(x); ou WriteLn(x); ou WriteLn; (* Imprime x e cursor fica ao lado *) (* Imprime x e cursor vai para prxima linha *) (* Deixa uma linha em branco na tela *)

8.3 Sada na Impressora29

necessrio usar a unidade Printer. Uses Crt,Printer; Begin ClrScr; WriteLn(Lst); Write(Lst,'x = '); WriteLn(Lst,x); End. Observao: WriteLn(lst,#12); WriteLn(lst,#15); (* Salta uma pgina na impressora *) (* Comprime os caracteres na impressora *)

(* Pula uma linha na impressora *)

9. Controle do Vdeo e Teclado: 9.1 ClrScr (Clear Screen)Procedimento que permite limpar a tela, o cursor permanece no canto superior esquerdo. obrigatrio o uso da unidade Crt. A tela limpa com a cor de fundo corrente. Uses Crt; Begin ClrScr;

9.2 GotoXY(coluna,linha) (V para posio X,Y)Procedimento que permite o posicionamento do cursor em qualquer posio da tela. obrigatrio o uso da unidade Crt.

Uses Crt;30

Begin ClrScr; GotoXY(30,12); Write('Turbo Pascal'); GotoXY(34,13); Write('5.5');

9.3 ClrEol (Clear End Of Line)Procedimento que permite que uma linha seja apagada desde a posio do cursor at o final da linha. obrigatrio o uso da Unidade Crt. Uses Crt; Var L: Byte; Begin TextBackGround(WHITE); ClrScr; TextColor(BLACK); For L := 1 to 24 do Begin GotoXY(40,L); ClrEol; End; End.

{ Altera a cor de fundo} { Altera a cor do Texto }

9.4 DelLine (Delete Line)Procedimento que permite que uma linha seja apagada. obrigatrio o uso da Unidade Crt. Uses Crt; Var L: Byte; Begin TextBackGround(WHITE); ClrScr; TextColor(BLACK); For L := 1 to 24 do Begin GotoXY(40,L); DelLine; End; End.

{ Altera a cor de fundo} { Altera a cor do Texto }

10 Comandos Especiais (Unidade Crt)31

10.1 Delay (Atraso)Procedimento que permite uma parada temporrio da execuo por parte do computador. Modo de Usar: Delay(x); { x em milisegundos }

10.2 TextBackGround (Cor de Fundo)Procedimento que permite mudana na cor de fundo do vdeo. Modo de Usar: TextBackGround(cor); Nmero 0 1 2 3 4 5 6 7 Nome Black Blue Green Cyan Red Magenta Brown LightGray { cor: nmero ou nome } Cor preto azul verde azul claro vermelho rosa marrom cinza

10.3 TextColor (Cor de Frente)Procedimento que permite mudana na cor de texto do vdeo. Modo de Usar: TextColor(cor); Nmero 0 1 2 3 4 5 6 Nome Black Blue Green Cyan Red Magenta Brown { cor: nmero ou nome } Cor preto azul verde azul claro vermelho rosa marrom32

7 8 9 10 11 12 13 14 15

LightGray DarkGray LightBlue LightGreen LightCyan LightRed LightMagenta Yellow White

cinza cinza brilhante azul brilhante verde brilhante azul claro brilhante vermelho brilhante rosa brilhante amarelo branco

Observao: Piscante (Blink cor a 128)

10.4 Window (Janela)Procedimento que permite definir a janela de texto ativa, ou seja, parte do vdeo ativo onde as escritas so feitas. Normalmente a janela ativa toda tela, ou seja: Window(1,1,80,25);

( iY Xi , )

(f f X ) , YModo de Usar: Window(Xi,Yi,Xf,Yf); Observao: Aps setar uma janela ativa a posio (1,1) passa ser o canto superior esquerdo.

10.5 Sound e NoSound (Som e Sem Som)Sound: Procedimento que ativa o auto-falante do computador. Modo de Usar: Sound(nota: Word); Uses Crt; Begin Sound(220);

(* ativa o auto-falante com a nota 220 *)33

Delay(200); NoSound; End.

(* perodo de durao do som *) (* desativa o auto-falante *)

NoSound: Procedimento que desativa o auto-falante do computador. Modo de Usar: NoSound;

10.6 WhereX e WhereY (Localizao do Cursor)Funes que indicam a posio corrente do cursor [x (coluna) e y (linha)]. Uses Crt; Var Coluna,Linha: Byte; Begin Coluna := WhereX; Linha := WhereY; WriteLn('Coluna: ',Coluna); WriteLn('Linha : ',Linha); End.

10.7 TextMode (Modo do Texto)Procedimento que define o tipo de modo texto, colorido ou preto e branco e 40 ou 80 colunas. C80 - Colorido com 80 colunas C40 - Colorido com 40 colunas BW80 - Preto e Branco com 80 colunas BW40 - Preto e Branco com 40 colunas

11. Vetores e MatrizesVetores e matrizes so variveis que possuem vrios elementos de mesmo tipo, cada elemento possui um ou mais ndices que os referenciam e os diferenciam. Uma caracterstica importante que todos os valores permanecem na memria ao mesmo tempo. Os elementos so alocados com contigidade fsica, ou seja, um ao lado do outro.

11.1 Vetores um tipo particular de matriz onde cada elemento possui s um ndice (unidimensional).34

O programa exemplo abaixo, permite a entrada de nomes e idades, logo aps imprime todos os nomes e idades contidos na memria. Program Vetor; Uses Crt; Const QUANT = 255; Var Nome: Array[1..QUANT] of String[40]; Idade: Array[1..QUANT] of Byte; I,N: Byte; Ch: Char; Begin ClrScr; I := 1; Repeat Write('Nome: '); ReadLn(Nome[i]); (* entrada de um nome *) Write('Idade: '); ReadLn(Idade[i]); (* entrada de uma idade *) Inc(I); Write('Continua [S]im ou [N]o ? '); Repeat Ch := ReadKey; Until Ch IN ['S','s','N','n']; Until (Ch IN ['N','n']) Or (I > QUANT); N := I - 1; (* nmero de elementos *) For I := 1 To n Do Begin WriteLn('Nome: ',Nome[i]); WriteLn('Idade: ',Idade[i]); Ch := ReadKey; End; End.

11.2 Matriz um tipo de dado que permite que uma varivel contenha vrios elementos de mesmo tipo. Cada elemento possui dois ou mais ndices (bidimensional, tridimensional, etc) que o diferencia dos outros elementos. O programa abaixo, calcula a soma de duas matrizes: C = A + B. Program vetor; Uses Crt; Const QUANT = 10; Var A,B,C: Array[1..QUANT,1..QUANT] of Real; Col,Lin,J,M,N: Byte; Ch: Char;35

Begin ClrScr; Write('Informe a ORDEM da MATRIZ (MxN): '); Repeat Write('Nmero de Linhas (M): '); Readln(M); Until (M >= 1) And (M = 1) And (N