Buscar

Manual de Introducao a Informatica 2021 - (Pascal)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 72 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 72 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 72 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Eduardo Mondlane 
Faculdade de Ciências 
Departamento de Matemática & Informática 
 
 
Introdução a Informática
 
 
 
 
Gabriel I. Salimo 
 
Julho, 2019
Introdução a Informática (Gabriel Salimo) Pagina 2 de 72 
Índice 
1. Programação em Pascal ........................................................................................................................ 6 
1.1. Noções Básicas Preliminares ............................................................................................................ 6 
1.2. Descrição ......................................................................................................................................... 6 
1.3. Estrutura de um Programa em Pascal .............................................................................................. 6 
1.4. Sintaxe do Programa Pascal (Estrutura Simples) .................................................................. 7 
2. Identificadores ................................................................................................................................ 8 
2.1. Identificadores Pré-Definidos ............................................................................................... 8 
2.2. Caracteres utilizados ............................................................................................................. 8 
2.3. Regras para Formação de Identificadores ............................................................................ 8 
2.4. Comentários .................................................................................................................................... 8 
3. Palavras Reservadas ....................................................................................................................... 9 
4. Expressão ........................................................................................................................................ 9 
4.1. Tipos de Expressões .............................................................................................................. 9 
4.2. Operadores .................................................................................................................................... 9 
4.3. Operadores Aritméticos ........................................................................................................ 9 
4.4. Operadores Atribuição ........................................................................................................ 10 
4.5. Operadores Relacionais ...................................................................................................... 10 
4.6. Operadores Lógicos............................................................................................................. 11 
5. Tipo de Dados ............................................................................................................................... 11 
5.1. Dados Simples (Escalares Simples) ..................................................................................... 12 
5.2. Dados Estruturados (Escalares Estruturados) ..................................................................... 12 
5.3. Declaração de Dados ................................................................................................................... 12 
5.4. Declaração de todas Dados: VAR ........................................................................................ 12 
5.5. Declaração de Novos Tipos Dados: TYPE ............................................................................ 13 
5.6. Declaração de Constantes: CONST ..................................................................................... 13 
5.7. Constantes Tipadas ............................................................................................................. 14 
5.8. Constantes pré-Definidas .................................................................................................... 14 
5.9. Caracteres de Controle ................................................................................................................. 14 
5.10. Entrada e saída de dados ....................................................................................................... 14 
5.11. Saída na Tela: WRITE e WRITELN ........................................................................................ 14 
5.12. Entrada: READ e READLN .................................................................................................... 15 
5.13. Saída na Video/Impressora: WRITE e WRITELN .................................................................. 16 
5.14. Funções e Procedures para Controlo de Vídeo .................................................................. 17 
5.15. Funções e Procedures para Controlo do Teclado ............................................................... 19 
6. Estruturas Para o Controlo do Fluxo do Programa ........................................................................ 20 
6.1. Estrutura de Decisão ou Escolha Condicional (Simples): IF-THEN-ELSE ............................. 20 
6.2. Estrutura de Decisão ou Escolha Condicional (Múltipla): CASE .......................................... 22 
6.3. Instrução de “Salto” Incondicional: GOTO .......................................................................... 23 
6.4. Estrutura de Repetição com Contador: Ciclo FOR .............................................................. 24 
6.5. Estrutura de Repetição Baseada numa Condição: Ciclo REPEAT UNTIL ............................. 25 
6.6. Estrutura de Repetição Baseada numa Condição: Ciclo WHILE DO .................................... 26 
7. Outros Tipos Dados Estruturados ................................................................................................... 27 
7.1. Tipo Arrays: Variáveis Indexadas Uni-Dimensionais (Vectores) ......................................... 27 
7.2. Tipo Arrays: Variáveis Indexadas Bidimensionais (Matrizes) .............................................. 29 
Introdução a Informática (Gabriel Salimo) Pagina 3 de 72 
7.3. Tipo Record ......................................................................................................................... 31 
7.4. Tipo Set ............................................................................................................................... 33 
8. Subprogramas ............................................................................................................................... 36 
8.1. Declaraçäo de procedures .................................................................................................. 37 
8.2. Variáveis Globais e Locais ................................................................................................... 38 
8.3. Procedures: Passagem de parâmetros ............................................................................... 38 
8.4. Passagem de parâmetros por Valor .................................................................................... 38 
8.5. Passagem de parâmetros por Referência ........................................................................... 38 
8.6. Definição de Funções .......................................................................................................... 39 
8.7. Arquivos (File = Ficheiro) ............................................................................................................... 40 
8.8. Declaração de tipos e variáveis de ficheiros (VAR) ............................................................. 41 
8.9. ASSIGN: associação de identificador de ficheiro com o nome externo de ficheiro ............ 41 
8.10. REWRITE: Criação de um novo ficheiro & Escrita de Dados (WRITE, WRITELN) ................ 42 
8.11. RESET: Abertura de um ficheiro para leitura & Leitura do Ficheiro (READ) ....................... 43 
8.12. APPEND: Abertura de um ficheiro para Acrescentar Informação ......................................43 
8.13. Verificação de Existência de um Ficheiro: {$I-} e {$I+} ........................................................ 44 
9. Exercícios de Revisão .................................................................................................................... 46 
9.1. Exercícios Resolvidos .......................................................................................................... 46 
9.2. Exercícios por Resolver ....................................................................................................... 54 
10. Apêndices ............................................................................................................................ 60 
10.1. Turbo Pascal ........................................................................................................................ 60 
10.2. Iniciar Turbo Pascal (Criação de Ficheiro) ........................................................................... 60 
10.3. Gravação de Ficheiro com Turbo Pascal ............................................................................. 61 
10.4. Compilação do Programa com Turbo Pascal ...................................................................... 61 
10.5. Executar um Programa com Turbo Pascal .......................................................................... 62 
10.6. Abrir Ficheiro com Turbo Pascal ......................................................................................... 63 
11. Funções pré-definidas do Pascal ......................................................................................... 64 
11.1. ABS() .................................................................................................................................... 64 
11.2. CHR() ................................................................................................................................... 64 
11.3. CONCAT() ............................................................................................................................ 64 
11.4. COPY() ................................................................................................................................. 64 
11.5. COS() ................................................................................................................................... 64 
11.6. DEC().................................................................................................................................... 64 
11.7. DELAY() ................................................................................................................................ 65 
11.8. DELETE() .............................................................................................................................. 65 
11.9. COS() ................................................................................................................................... 65 
11.10. FRAC() .................................................................................................................................. 65 
11.11. COS() ................................................................................................................................... 65 
11.12. INC() .................................................................................................................................... 65 
11.13. INSERT() ............................................................................................................................... 66 
11.14. INT()..................................................................................................................................... 66 
11.15. LENGTH() ............................................................................................................................. 66 
11.16. LN() ...................................................................................................................................... 66 
11.17. ODD()................................................................................................................................... 66 
11.18. ORD() ................................................................................................................................... 66 
11.19. PI ......................................................................................................................................... 67 
11.20. POS().................................................................................................................................... 67 
11.21. SIN() ..................................................................................................................................... 67 
11.22. SQR() ................................................................................................................................... 67 
11.23. SQRT() ................................................................................................................................. 67 
11.24. STR() .................................................................................................................................... 67 
Introdução a Informática (Gabriel Salimo) Pagina 4 de 72 
11.25. TRUNC() ............................................................................................................................... 68 
11.26. UPCASE() ............................................................................................................................. 68 
11.27. VAL() .................................................................................................................................... 68 
11.28. Turbo Pascal - Exercícios de Consolidação (Exercícios Resolvidos) .................................... 69 
11.29. Programa de Vectores ........................................................................................................ 69 
11.30. Programa de Gerenciameto de Biblioteca .......................................................................... 69 
11.31. Programa de Ordenamento de Números ........................................................................... 71 
 
Introdução a Informática (Gabriel Salimo) Pagina 5 de 72 
 
 
 
 
 
 
 
Programação  Código  Resultados 
 
 
Quando uma linguagem de programação é criada, a 
partir das suas características, ela é categorizada em 
um ou mais paradigmas 
 
 
 
 
O paradigma de programação é o conceito 
que pressupõe a forma que programador tem sobre 
a programação e execução de um programa 
 
P
ro
gr
am
aç
ão
: 
E
le
m
en
to
s 
e 
co
m
an
do
s 
na
 p
ro
gr
am
aç
ão
 P
as
ca
l 
Introdução a Informática (Gabriel Salimo) Pagina 6 de 72 
1. Programação em Pascal 
A programaçäo deve ser entendida como uma arte ou técnica de se construir algoritmos, 
sendo que estes são métodos ou "receitas" para se resolver problemas... 
 
☺uma linguagem de programaçäo é um meio ou uma ferramenta para se traduzir os 
algoritmos em programas a serem executados por computadores! 
 
 A linguagem de programação Pascal, por ser uma linuagem estruturada é das 
melhores linguagens para ser à primeira linguagem a aprender quando se introduz à 
programação; pois permite ao aprendiz a possibilidade de desenvolver algoritmos 
lógicos, sistemáticos, facilmente compreensíveis segundo os métodos modernos de 
programaçäo e possibilitá-lo até a "dar asas à sua imaginaçåo". 
 
1.1. Noções Básicas Preliminares 
A linguagem Pascal é tradiconalmente compilada; assim sendo devemos obdecer as 
seguintes etapas: 
 
1º. utilizar um editor de textos para escrever e armazenar em disco o nosso programa 
fonte; 
2º. utilizar um compilador para traduzir o programa fonte para um programa em 
linguagem de máquina; 
3º. finalmente, devemos juntar ao programa compilado as diversas rotinas necessárias 
que, normalmente, ficam armazenadas numa biblioteca. 
 
...sempre que o programa fonte sofre qualquer alteração o processo de compilaçãodeve 
ser repetido para que modicaçöes tenham efeito na execução... 
 
O compilador Turbo Pascal facilita todo esse processo, pois ele possui numa forma 
integrada, um editor de textos compatível com o Wordstar, um compilador e um linkeditor. 
 
O processo de compilaçäo pode ser feito tanto em disco como em memória, o que faz 
com que ele seja muito rápido. 
 
1.2. Descrição 
Na descrição da semântica e sintaxe do Pascal neste manual consideraremos os seguintes 
significados nas notaçãoes: 
 
 Maiúscula (Bold) - Palavras Reservadas; 
 Itálico - para a preencher pelo programador; 
 [xxx] - indicação que xxx é opcional (pode ou não surgir no programa); 
 {} - encerram uma lista de itens dos quais somente um item pode ser usado 
(excepto quando usados no programas para indicar comentários); 
 ... - indicam que o item precedente pode aparecer uma ou mais vezes em 
sucessão. 
1.3. Estrutura de um Programa em Pascal 
Um programa em linguagem de programação Pascal obriga que inicialmente a declarar os 
dados; assim todo programa em Pascal é subdividido em 3 áreas: 
 
 cabeçalho do programa 
 área de declarações (parte declarativa) 
 corpo do programa (parte operactiva) 
Introdução a Informática (Gabriel Salimo) Pagina 7 de 72 
 
 Na definição padrão da linguagem Pascal, o Cabeçalho do programa é obrigatório, 
no entanto, no Turbo Pascal ele é opcional. Também se torna indispenável começar por 
declarar os dados - área de declarações; enquanto que a parte operactiva é aonde 
são descritas as operações a ser executados pelo programa. 
 
1.4. Sintaxe do Programa Pascal (Estrutura Simples) 
PROGRAM nome_do_programa; [{...as chavetas são usadas para representar 
comentários...}] 
 [VAR mome_da_variavel1, ..., nome_da_variaveln: tipo1; 
mome_da_variavel1, ..., nome_da_variaveln: tipo2; 
... 
mome_da_variavel1, ..., nome_da_variaveln: tipoN;] 
BEGIN [{Início do programa principal}] 
instruçoes/Comandos 
END. [{fim do programa principal}] 
 
Exemplo (Programa Pascal – Área do Trapézio) 
 
Seja o seguinte algoritmo (pseudocódigo), para o cálculo da área de um trapézio: 
Inicio 
Escreva(‘Quais as medidas das bases’) 
Ler(base1, base2) 
Escreva(‘Qual a medidas da altura’) 
Ler(altura) 
area←(base1+base2) *altura/2 
Escreva(‘A area é ’, area) 
Fim. 
 
Teremos a Código-Fonte em Pascal: 
Program Area_Trapezio; 
(* Programa para o cálculo da área de um trapézio dado as medidas 
 Autor : Crocodilo 
 Data : 30/07/2018 *) 
Var base1, base2, altura, area : Real; {declaração de variáveis} 
Begin 
Write(‘Quais as medidas das bases: ’); 
Readln(base1, base2); (* leitura de dados: as bases *) 
Write(‘Qual a medidas da altura: ’); 
Readln(altura); (* leitura de dados: altura *) 
Area := (base1+base2)/2*altura; {cálculo da área} 
Writeln(‘A area é ’,area); (* apresentação de resultados: a área *) 
End. 
 
Introdução a Informática (Gabriel Salimo) Pagina 8 de 72 
2. Identificadores 
São nomes que servem para representar variáveis, funções, sub-rotinas, constantes, etc... 
 
2.1. Identificadores Pré-Definidos 
Os identificadores pré-definidos, representam Procedures (Procedimentos) ou Functions 
(Funções), que podem ser utilizados normalmente na construção de programas para a 
obtenção de resultados já elaborados. 
 
Exemplos: 
 ClrScr (Clear Screen): limpa a tela de vídeo 
 DelLine (Delete Line): apaga a linha em que está o cursor e assim por diante 
 
 mais em diante deste manual se apresentam com mais detalhes algum dos mais usuais 
dos identificadores pré-definidos do Pascal. 
 
2.2. Caracteres utilizados 
Os caracteres que podem ser utilizados em Pascal para a formação de identificadores são 
divididos em : 
 
 Letras : 'A' até 'Z', 'a' até 'z' 
 Números : 0,1,2,3,4,5,6,7,8 e 9 
 Especiais : + - * / = ^ < > ( ) [ ] { } . , : ; ' # $ 
 
2.3. Regras para Formação de Identificadores 
O usuário também pode definir seus próprios identificadores, na verdade o programador é 
obrigado a isso; Nomes de variáveis, de labels, de procedures, functions, constantes etc. São 
identificadores que devem ser formados pelo programador, seguindo as seguites regras: 
 
1º O primeiro caracter deve ser obrigatoriamente uma letra ou o caracter underscore 
‘_’; 
2º Os demais caracteres podem ser letras, dígitos ou underscores; 
3º Um identificador pode ter no máximo 127 caracteres; 
4º Como já dissemos anteriormente, não pode ser palavra reservada; 
5º Não pode conter caracteres especiais. 
 
Exemplos: 
Correctos Errados Razão do Erro 
Nota 
numero_de_notas 
Numero_de_Notas 
N123 
_valor 
12_notas 
+notas 
%notas 
media final 
opção 
O primeiro caracter não é alfabético (letra) 
O primeiro caracter não é alfabético (letra) 
O primeiro caracter não é alfabético (letra) 
Contém um espaço entre o nome do identificador 
Contém caracteres acentuados 
 
2.4. Comentários 
Comentários são textos que introduzimos no meio do programa fonte com a intenção de 
torná-lo mais claro. Uma boa prática em programação é inserir comentários ao longo do 
nosso programa. Em Pascal, tudo que estiver entre os símbolos (* e *) ou { e } é considerado 
como comentário. 
 
Introdução a Informática (Gabriel Salimo) Pagina 9 de 72 
3. Palavras Reservadas 
 As palavras (tokens) reservadas são todas aquelas que por fazerem parte da própria 
linguagem, não podem ser utilizadas pelo programador para representar um 
idenficador; 
 As palavras reservadas no Pascal são: 
absolute(*) and array begin case const div 
do downto else end external(*) file for 
forward function goto if in inline(*) label 
mod nil not of or packed procedure 
program record repeat set shl(*) shr(*) string(*) 
thento type until var while with xor(*) 
 
Observação: 
(*) - não definidos no Pascal Standard 
 
 A utilização de identificadores com o mesmo nome de uma das palavras reservadas 
resultará em erro de compilação. 
 
4. Expressão 
Uma expressão PASCAL, é definida como uma combinação de itens sintácticos, isto é: uma 
expressão pode consistir de uma única constante, de uma única variável, de um único 
elemento ou conjunto, ou uma combinação de constantes, variáveis, elementos ou conjuntos, 
unidos com um ou mais operadores. 
 
Exemplo: expressão: x + z - consiste de duas variáveis unidas pelo operador + 
 
4.1. Tipos de Expressões 
 Aritméticas - produz somente um valor que é sempre um número cujo tipo é real, inteiro 
ou complexo. 
 Caracteres - produz somente um valor que é sempre uma cadeia de caracteres. 
 Relacionais - produz somente um valor que é sempre uma constante lógica. 
 Lógicas - produz somente um valor que é sempre uma constante lógica. 
 Booleanas - produz somente um valore que é sempre do tipo Booleano. 
 
4.2. Operadores 
4.3. Operadores Aritméticos 
Operador Definição Uso do Operador Significado 
** Potenciação ab a elevado a potência b 
* Multiplicação a*b a multiplicado por b 
/ Divisão a/b a dividido por b 
+ Adição a+b a mais b 
+ Mais unitário +a o mesmo que a 
- Subtracção a-b a menos b 
- Menos unitário -a a com sinal negativo 
DIV Divisão Inteira a DIV b Divisão inteira de a por b 
MOD Resto da divisão (de 
Inteiros) 
a MOD b Resto da divisão de a por b 
 
O sinal de adição (+) pode ser usado para uma operação de concatenação de caracteres 
(soma de uma cadeia de caracteres encadeando o primeiro operando imediatamente com 
o segundo operando, sendo seu comprimento final igual à soma dos comprimentos dos 
operandos). 
Introdução a Informática (Gabriel Salimo) Pagina 10 de 72 
 
Exemplo: 
a) 'AB'+'EFG' , é = 'ABEFG'; 
b) a = “tele”, b=”Visao”; c=a+b => c=”televisao” 
 
Program Operadores_aritimeticos; 
(* PROGRAMA EXEMPLO : Mostra como utilizar operadores 
 Autor : Crocodilo 
 Data : 30/07/2018 *) 
Uses CRT; 
Var x,y,z : integer; 
 r1,r2 : real; 
Begin 
 ClrScr; (* limpa a tela *) 
 x:=10; y:=20; z:=x+y; 
 writeln(z); (* escreve o valor de z na tela de video *) 
 x:=20 DIV 3; y:= 20 MOD 3; 
 writeln(x); (* escreve 6 na tela *) 
 writeln(y); (* escreve 2 na tela *) 
 r1:=3.24; r2:=r1/2.3; 
 writeln(r2); 
End. 
 
4.4. Operadores Atribuição 
Sintaxe: Identificador := expressão/dado 
 
Exemplo: 
a) nome := “Engenharia Quimica” 
b) ano := 1999 ! valores numéricos não precisam de àspas “” no final 
c) data := “20\11\98” 
d) temp(1) := 25.6 
e) temp(2) := 22.4 ! atribuindo valores a vetores 
f) temp(3) := 22.8 
 Dois pontos em seguida (..) indica um delimitador de faixa. 
 
Exemplo: 
1..30 - todos números inteiros entre 1 e 30 inclusive. 
 
4.5. Operadores Relacionais 
Operador Definição Uso do Operador Significado 
= Igual a a=b a = b ? 
<> Diferente de a<>b a ≠ b ? 
< Menor que a<b a < b ? 
<= Menor ou igual a<=b a ≤ b ? 
> Maior que a>b a > b ? 
>= Maior ou igual a>=b a ≥ b ? 
IN Elemento de a IN [1..10] a Є {1,2,3,4,5,6,7,8,9,10}? 
 
 
Introdução a Informática (Gabriel Salimo) Pagina 11 de 72 
 
Exemplos: 
1) Se A=30 e B=50, então 
- ( A = B ) é FALSE 
- ( A < B ) é TRUE 
2) Se A=TRUE e B=FALSE então 
- (A <> B) é TRUE 
- (A = B) é FALSE 
3) Se A=50 , B=35, C='A' , D='B' então 
- ( ( A < B ) OR ( C < D ) ) é TRUE 
 
4.6. Operadores Lógicos 
 
Operador 
 
Definição 
Uso do 
Operador 
 
Significado 
NOT Negação Lógica NOT a Complemento de a: se a é verdade, então 
.NOT.a é falso, se a é falso então .NOT.a. é 
verdade. 
AND Conjunção lógica a AND b Produto Booleano de a por b: se a e b são 
verdade, então a.AND.b é verdade; se a ou b 
ou ambos são falsos, então a.AND.b é falso. 
OR Disjunção 
Inclusiva lógica 
a OR b Soma Booleana de a com b: se a ou b ou ambos 
são verdade, então a.OR.b é verdade; se a e 
b são falsos, então a.OR.b é falso. 
XOR Disjunção 
Exclusiva lógica 
a XOR b operação XOR resulta TRUE quando os 
operandos forem diferentes entre si, isto é, 
quando um for TRUE o outro dever ser FALSE 
 
Exemplo: Se desejarmos testar se o valor da variável A satisfaz a inequação: 0≤A≤10, na 
linguagem PASCAL devemos utilizar: 0 <= a AND a >= 10 
 
Program operadores_logicos; 
(*PROGRAMA EXEMPLO : utilização os operadores lógicos 
 Autor : Crocodilo 
 Data : 30/07/2018 *) 
Uses CRT; 
Var x,y : boolean; 
Begin 
 x:=TRUE; 
 y:=FALSE; 
 Writeln( x OR y ); (* escreve TRUE *) 
 Writeln( x AND y ); (* escreve FALSE *) 
 Weiteln( x XOR y ); (* escreve TRUE *); 
End. 
 
5. Tipo de Dados 
 
Os dados usados em programação, podem ser divididos numa primeira análise em: dados 
simples (numéricos, caracteres, lógicos e booleanos) e dados estruturados (strings, arrays, 
records, files, set e text). 
 
 
Introdução a Informática (Gabriel Salimo) Pagina 12 de 72 
5.1. Dados Simples (Escalares Simples) 
a) Numéricos Inteiros 
Tipo Faixa Formato 
Shortint 
Integer 
Longint 
Byte 
Word 
-128..127 
-32768..32767 
-2147483648..2147483647 
0..255 
0..65535 
Signed 8-bit 
Signed 16-bit 
Signed 32-bit 
Unsigned 8-bit 
Unsigned 16-bit 
 
b) Numéricos Reais 
Tipo Faixa Dígitos Bytes 
Real 
Single 
Double 
Extended 
Comp 
2.9e-39..1.7e38 
1.5e-45..3.4e38 
5.0e-324..1.7e308 
3.4e-4932..1.1e4932 
-9.2e18..9.2e18 
11-12 
7-8 
15-16 
19-20 
19-20 
6 
4 
8 
10 
8 
 
 o que distingue os dados do tipo numérico inteiros dos dados do tipo numéricos reais 
é que os reais admitem a parte decimal e os inteiros não... 
 
c) Caracter: CHAR 
O tipo char corresponde a todos os caracteres que podem ser gerados pelo teclado 
tais como dígitos, letras e símbolos tais como &, #,* etc. 
 
 os caracteres devem sempre ser representados entre aspas simples 
 
d) Lógicos: BOOLEAN 
O tipo boolean só pode assumir os valores FALSE e TRUE. 
 
5.2. Dados Estruturados (Escalares Estruturados) 
a) Cadeia de caracteres: STRING 
Este tipo é chamado de estruturado ou composto pois é constituído a partir de um tipo 
simples que é o char. O tipo string é composto por um conjunto de caracteres entre aspas 
simples. 
 
 os dados arrays, records, files, set e text serão descritos mais em diantes. 
 
5.3. Declaração de Dados 
Como é sabido, todas as variáveis que forem utilizadas no corpo do programa, devem ser 
declaradas na área de declarações que pode ser subdividida em seis sub-áreas(Label, 
Const, Type, Var, Procedures, e Functions): 
 
5.4. Declaração de todas Dados: VAR 
Esta é a sub-área onde devemos declarar todas as variáveis que iremos utilizar em nosso 
programa; aqui se incluem varáveis do tipo standards (pertencentes a sintaxe do Pascal )e 
os tipos criados pelo programador neste mesmo programa ou importado. 
 
Sintaxe: 
[VAR mome_da_variavel1, ..., nome_da_variaveln: tipo1; 
mome_da_variavel1, ..., nome_da_variaveln: tipo2; 
... 
mome_da_variavel1, ..., nome_da_variaveln: tipoN;] 
Introdução a Informática (Gabriel Salimo) Pagina 13 de 72 
 
Exemplo: 
Program Declaracao_Var; (* cabeçalho do programa *) 
Var (* declaração de variaveis *) 
 idade, número_de_filhos : byte; 
 altura : real; 
 sexo : char; 
 nome : string[30]; 
 sim_ou_nao : boolean; 
 quantidade : integer; 
Begin (* início do programa *) 
 idade:=34; 
 número_de_filhos:=2; 
 sexo:='M'; 
 nome:='José'; 
 sim_ou_nao:=TRUE; 
 quantidade:=3245; 
End. 
 
 a palavra reservada VAR aparece uma única vez num programa; 
 lembre-se que o limite de caracteres numa linha é de 127; 
 uma única linha pode agregar mais que uma instrução desde que estas instruções 
estejam separadas entre si por ponto e vírgula ';'. 
 
5.5. Declaração de Novos Tipos Dados: TYPE 
Além dos tipos de dados pré-definidos no Turbo Pascal, podemos também definir novos 
tipos através da declaração Type. 
 
Sintaxe: TYPE identificador = (valor1,valor2,valor3,valor4, ... ,valorN); 
 o identificador deve seguir as regras de um identificador anteriormente apresentadas; 
 nos parênteses estão os valores que a variável (identificador) deve assumir. 
 
Exemplos: 
Type 
 cor = (azul,vermelho,branco,verde,amarelo); 
 dia_útil = (segunda,terça,quarta,quinta,sexta); 
 linha = string[80]; 
 idade = 1..99; 
 (* agora também podemos utilizar os novos tipos tal como: cor, dia_útil, linha e idade *) 
Var 
 i : integer; 
 d : idade; 
 nome : linha; 
 dia : dia_útil; 
 cores : cor; 
 (* etc. *) 
 
5.6. Declaração de Constantes: CONST 
Nesta sub-área, podemos definir tantas constantes quantas quisermos. Para além da 
declaração de variáveis como na sub-área Var, aqui elas são inicializadas, ou seja, são 
atribuidos um valor inicial. 
 
Sintaxe: [CONST nome_da_constante1=valor[,...],[nome_da_constanten=valor];] 
Introdução a Informática (Gabriel Salimo) Pagina 14 de 72 
 
5.7. Constantes Tipadas 
Exemplo: 
Const 
 Meu_nome = 'Thelmo'; 
 cor_preferida = 'verde'; 
 número_m ximo = 24345; 
(* e assim por diante *) 
 
5.8. Constantes pré-Definidas 
Existem algumas constantes pré-definidas e que podemos utiliza-las sem ter que declará-
las. São elas: 
 
PI = 3.1415926536E + 00 
FALSE 
TRUE 
NIL (…Pointer nulo, veremos mais adiante…) 
MAXINT = 32767 
 
 toda vez que nos referirmos ás constantes acima, o Turbo Pascal substituirá pelos 
seus respectivos valores. 
 
5.9. Caracteres de Controle 
Existem alguns caracteres que têm significados e efeitos especiais quando o programa 
é executado: 
 
Exemplos: 
Control G - Bell ou beep (som) 
Contorl L - Form Feed (avanço) 
 
Também podemos usar estes caracteres, escrevendo pelo seus valores em ASCII 
correspondentes precedidos do símbolo #, ou então a letra correspondente precedida do 
símbolo ^ 
 
Exemplo: Control G #7 ou ^G 
 
5.10. Entrada e saída de dados 
 
5.11. Saída na Tela: WRITE e WRITELN 
Estes são as principais procedures destinadas a exibir todos os tipos de dados no vídeo. A 
diferença entre write e writeln reside no fato de que a procedure write escreve o 
parâmetro, e mantém o cursor do lado daquilo que foi escrito, enquantoque writeln passa 
o cursor para a próxima linha. 
 
Estas procedures possuem 3 formas de sintaxes, a saber: 
 
Sintaxe (Primeira Forma): WRITE(parâmetro_1,Parâmetro_2, ...); 
 
 
Introdução a Informática (Gabriel Salimo) Pagina 15 de 72 
Program Exemplo_Write1; 
Uses CRT; 
Var i : integer; 
 r : real; 
 c : char; 
 s : string[20]; 
Begin 
 ClrScr; (* apaga a tela e coloca o cursor em 1,1 *) 
 Writeln('Exemplos de aplicação de writeln e write'); 
 writeln; (* apenas pula uma linha *) 
 i:=100; r:=3.14; c:='A'; s:='interessante'; 
 writeln('Valor de i e igual a ',i); 
 write('valor de r = '); 
 writeln(r); writeln(c,' ',s); 
End. 
 
Sintaxe (Segunda Forma): WRITE(parâmetro : n); 
 
 onde n é um número inteiro que determina quantas colunas o cursor deve ser deslocado 
à direita, antes do parâmetro ser escrito; além disso, o parâmetro é escrito da direita 
para a esquerda. 
 
Program Exemplo_Write2; 
Uses CRT; 
Begin 
 Writeln('A'); 
 Writeln('A':5); 
End. 
 
Sintaxe (Terceira forma): WRITE(parâmetro : n : d); 
 
 neste caso, n tem a mesma função que o caso anterior sendo que d, representa o número 
de casas decimais; obviamente, o parâmetro terá que ser do tipo Real. 
 
Program Exemplo_Write3; 
Uses CRT; 
Var r : real; 
Begin 
 ClrScr; 
 r:=3.14156; 
 Writeln(r); 
 Writeln(r:10:2); 
End. 
 
5.12. Entrada: READ e READLN 
Estas procedures são utilizadas para fazer leitura de dados via teclado. A procedure 
Read lê um dado do teclado até que se pressione a tecla ENTER, sendo que cada tecla 
digitada é ecoada para o vídeo. Após pressionarmos ENTER, o cursor permanecer no 
mesmo lugar; enquanto que, a procedure Readln faz a mesma coisa só que o cursor passa 
para a próxima linha. 
 
Sintaxe: READ(Var_1,Var_2,Var_3,...); 
 
 ao se digitar os valores das variáveis pedidas, deve-se separá-los por espaços. 
Resultados Exemplo1 
Exemplos de aplicação de writeln e write 
 
Valor de i e igual a 100 
valor de r = 3.1400000000E+00 
A interessante 
 
Resultado Exemplo2 
 
A 
…..A 
 
Nb: Os pontos representam 
espaços em branco 
Resultado Exemplo3 
 
 
3.1415600000E+00 
 3.14 
Introdução a Informática (Gabriel Salimo) Pagina 16 de 72 
 
Program Exemplo_Read1; 
Uses CRT; 
Var a,b,c:integer; 
Begin 
 clrscr; 
 readln(a,b,c); 
 writeln (a,' ',b,' ',c); 
End. 
 
Program Exemplo_Read2; 
Uses CRT; 
Var i : integer; r : real; c : char; s : string[10]; 
 Begin 
 ClrScr; 
 Write('Digite um numero inteiro: '); Readln(i); 
 Write('Digite um numero real:'); Readln(r); 
 Write('Digite um caractere: '); Readln(c); 
 Write('Digite uma string: '); Readln(s); 
 Writeln;Writeln; (* pula duas linhas *) 
 Writeln(i); Writeln(r); Writeln(c); Writeln(s); 
 End. 
 
Program Area_de_Triangulos; 
Uses CRT; 
Var Base,(* base do triangulo *) altura: (* altura do triangulo *) Real; 
Begin 
 ClrScr; Writeln('CALCULO DA AREA DE TRIANGULOS':55); 
 Writeln; Write('Valor da base:'); Readln(base); 
 Writeln; Write('Valor da altura:'); Readln(altura); 
 Writeln; Writeln; Writeln('Area do triangulo = ',base*altura/2 : 10 : 2); 
End. 
 
 ReadKey: Lê uma tecla do teclado, sem que seja necessário pressionar a tecla ENTER 
 
Program Exemplo_Readkey; 
Uses CRT; 
Var tecla:char; 
Begin 
 Write('digite uma tecla:'); 
 Tecla:=readkey; 
 Writeln; writeln('você digitou ',tecla); 
End. 
 
5.13. Saída na Video/Impressora: WRITE e WRITELN 
Podemos enviar dados para a impressora através das procedures Write e Writeln. Para 
tanto, devemos colocar, antes dos parâmetros a serem enviados à impressora, o nome 
lógico LST. 
 
Sintaxe: WRITE(LST,informação) 
 
 LST - nome da impressora; quando não presente os dados são enviados para o 
monitor 
 informação - representa variáveis ou constantes dos dados a serem escritos no ficheiro. 
Introdução a Informática (Gabriel Salimo) Pagina 17 de 72 
 
Exemplo: 
Writeln('isto vai para o vídeo'); 
Writeln(lst,'isto vai para a impressora',' e isto também'); 
 
5.14. Funções e Procedures para Controlo de Vídeo 
ClrScr 
Esta procedure tem a finalidade de limpar a tela de vídeo e colocar o cursor na primeira 
coluna da primeira linha. A tela de vídeo é dividida em 80 colunas e 25 linhas. O canto 
superior esquerdo tem coordenadas (1,1) e o inferior direito (80,25). 
 
Gotoxy(x,y) 
Move o cursor para a coluna x e linha y. 
 
Program Posicionamento_Gotoxy; 
Uses CRT; 
Var x,y : Byte; 
Begin 
 ClrScr; Gotoxy(10,2); Write('Coluna 10 da linha 2'); 
 x:=40; y:=10; 
 Gotoxy(x,y); Write('Coluna 40 da linha 10'); 
End. 
 
ClrEol - Esta procedure limpa desde a posição actual do cursor até o final da linha. 
CrtExit - Envia para a tela de vídeo a string de finalização definida na 
instalação. 
Crtnit - Envia para a tela de vídeo a string de inicialização definida na 
instalação. 
Delline - Elimina a linha em que está o cursor. As linhas posteriores sobem, 
ocupando a que foi eliminada. 
 
Program PosicaoEliminar; 
Uses CRT; 
Begin 
 ClrScr; Writeln('linha 1'); Writeln('linha 2'); 
 Writeln('linha 3'); 
 Writeln('linha 4'); 
 Gotoxy(1,2);(* posicionei o cursor no início da linha 2 *) 
 Delline; 
End. 
 
Insline - Esta procedure faz exactamente o Contrário de Delline, ou seja, insere uma 
linha na posição actual do cursor. 
 
 
Resultado do PosiçãoEliminar 
linha 1 
linha 3 
linha 4 
Nb: repare que a string 'linha 2' foi eliminada. 
Introdução a Informática (Gabriel Salimo) Pagina 18 de 72 
Program PosicaoInserir; 
Begin 
 ClrScr; 
 Writeln('linha 1'); 
 Writeln('linha 2'); 
 Writeln('linha 3'); 
 Writeln('linha 4'); 
 Gotoxy(1,3);(* cursor na 1ª coluna da 3ª linha *) 
 InsLine; 
 Write('teste'); 
 Gotoxy(1,20); 
End. 
 
LowVideo - Coloca o vídeo em baixa intensidade até que se execute a 
procedure NormVideo ou HighVideo. 
NormVideo - O mesmo que HighVideo. 
TextBackGround - Esta procedure selecciona a cor do fundo sobre o qual o texto 
ser escrito. 
 
Sintaxe: TextBackGround(cor); 
 
Tabela de cores 
 0 Black Preto 
 1 Blue Azul 
 2 Green Verde 
 3 Cyan Ciano 
 4 Red Vermelho 
 5 Magenta Magenta 
 6 LightGray Cinza-claro 
 
 Pode-se substituir/atribuir ao identificador “cor” pelo número ou o nome da cor em inglês 
apresentados na tabela 
 
Program CoresFundo; 
Uses CRT; 
Begin 
 ClrScr; 
 WriteLn('teste'); 
 TextBackGround(7); 
 Writeln('teste'); 
 TextBackGround(Brown); 
 Writeln('teste'); 
End. 
 
TextColor - Esta procedure permite seleccionar a cor com que o texto deve ser 
impresso. 
Tabela de cores 
0 Black Preto 
1 Blue Azul 
2 Green Verde 
3 Cyan Ciano 
Resultado do InserePosição 
 
linha 1 
linha 2 
teste 
linha 3 
linha 4 
 
Nb: repare que a string 'teste' foi 
inserida entre as linhas 2 e linha 3 
Introdução a Informática (Gabriel Salimo) Pagina 19 de 72 
4 Red Vermelho 
5 Magenta Magenta 
6 Brown Marrom 
7 LightGray Cinza-claro 
8 DarkGray Cinza-escuro 
9 LightBlue Azul-claro 
10 LightGreen Verde-claro 
11 LightCyan Ciano-claro 
12 LightRed Vermelho-claro 
13 LightMagenta Magenta-claro 
14 Yellow Amarelo 
15 White Branco 
16 Blink Piscante 
 
Program CoresTexto; 
Uses CRT; 
Begin 
 Clrscr; 
 TextBackGround(7); 
 TextColor(black); 
 writeln('teste'); 
 TextColor(black+blink); 
 write('teste'); 
End. 
 
Window 
Procedure para o desenho de janela de texto dada as coordenadas do canto esquerdo 
superior e canto inferior direito. 
 
Sintaxe: WINDOW(1,y1,x2,y2); 
 
 Esta procedure tem o poder de definir uma janela de texto cujo canto esquerdo superior 
é x1,y1 e canto inferior direito é x2,y2. Após esta instrução, as instruções ClrScr, Write 
Writeln agem somente dentro da janela recém definida. 
Program Janela;Uses CRT; 
Begin 
 Window(10,10,70,20); 
 ClrScr; (* limpa somente a janela *); 
 Writeln('teste'); (* escreve 'teste' em 10,10 *) 
End. 
 
5.15. Funções e Procedures para Controlo do Teclado 
Kbd 
Quando quisermos ler dados do teclado, e que não sejam ecoados para o monitor de 
vídeo até que sejam processados e aceites, utilizar-se: 
 
Sintaxe: READ(Kbd,Variável); 
 
 no caso de números inteiros ou reais, o número só será aceite quando pressionarmos 
a tecla <enter>; 
Introdução a Informática (Gabriel Salimo) Pagina 20 de 72 
 no caso de variáveis do tipo char, o caractere ser aceito sem que seja necessário 
pressionar a tecla <enter>, idem para o tipo string. 
 
Program Read_Kbd; 
Uses CRT; 
Var i:integer; 
Begin 
 ClrScr; 
 Write('Entre com um inteiro '); 
 Readln(Kbd,i); 
 Writeln(i); 
End. 
 
BufLen 
Buflen é uma variável interna pré-definida em Turbo Pascal cujo valor inicial é 126. Ela 
contém o número máximo de caracteres aceitos por Read. 
 
Program Exemplo_Buflen; 
Uses CRT; 
Var i : Integer; 
Begin 
 ClrScr; 
 Writeln(Buflen); (* escreve 126 *) 
 Buflen:=2; 
 Write('Digite um inteiro '); 
 Readln(i); (* readln não permitir inteiros com mais de dois dígitos, *) 
End. 
 
Keypressed 
O identificador Keypressed é uma função especial do Turbo Pascal que retorna um valor 
booleano - TRUE se uma tecla foi pressionada, ou FALSE caso Contrário. Ela é muito utilizada 
para detectar teclas pressionadas no teclado. 
 
Program Exemplo; 
Uses CRT; 
Begin 
 ClrScr; 
 Write('Pressione uma tecla '); 
 Repeat until Keypressed; (* repita até que uma tecla seja pressionada. *) 
End. 
 
6. Estruturas Para o Controlo do Fluxo do Programa 
A sequência de instruções num programa considera-se simples quando elas se apresentam 
uma ordem de execução uma atrás da outra de cima para baixo e sem “saltos”. Porém, 
frequentemente é necessário alterar a sequência linear da execução; aí temos então 
instruções estruturadas ou estruturas de controlo. 
 
6.1. Estrutura de Decisão ou Escolha Condicional (Simples): IF-THEN-ELSE 
O comando IF permite ao programa tomar decisões de sequencia do curso da execução das 
instruções/comandos com base numa condicão. Ele pode ter duas sintaxes: 
 
Sintaxe (Primeira Forma): IF <expressão_lógica> THEN Comando; 
Introdução a Informática (Gabriel Salimo) Pagina 21 de 72 
 expressão_lógica pode ser simples ou até relações complexas; 
 Se a expressão_lógica resultar verdadeira (TRUE), então o comando será executado e 
no caso contrário nada será executado; 
 Para os casos em que tivermos mais de um comando para serem executados, eles 
deverão vir delimitados pelas palavras BEGIN e END, como se apresenta em seguida: 
 
IF <expressão_lógica> THEN 
BEGIN 
 Comando_1; 
 Comando_2; 
 Comando_3; 
 . . . 
END; 
 
Program Exemplo_IF_1; 
Uses CRT; 
Var i : Integer; 
Begin 
 Clrscr; Write('Digite um inteiro maior que 100:'); Readln(i); 
 Writeln; Writeln; 
 If (i>100) Then Writeln('Você conseguiu!') 
 Else Writeln(i,' não é maior que 100…'); 
End. 
 
Sintaxe (Segunda Forma): IF <expressão_lógica> THEN Comando_1 ELSE Comando_2; 
 
 Neste caso, se expressão_lógica for verdadeira (TRUE) então Comando_1 será 
executado e comando_2 não será executado, e no caso contrário, o Comando_2 será 
executado e Comando_1 não será executado. 
 E, no caso de ter mais que um comando para executar a delimitação com BEGIN e END 
será: 
 
IF <expressão> THEN 
 BEGIN 
 Comando_1; 
 Comando_2; 
 . . . 
 END (* não tem ; *) 
ELSE 
 BEGIN 
 Comando_3; 
 Comando_4; 
 . . . 
END; 
 
Program Exemplo_IF_2; 
(*Programa para determinar o maior numero entre dois lidos do teclado*) 
Uses CRT; 
Var N1, N2 : Integer; 
Begin 
 ClrScr; 
 Write('Digite o Primeiro numero :'); Readln(N1); 
 Write('Digite o Segundo numero: '); Readln(N2); 
 Writeln; Writeln; 
Introdução a Informática (Gabriel Salimo) Pagina 22 de 72 
 If (N1 > N2) Then Write(N1,' é o maior') 
 Else If (N2 > N1) Then Writeln(N2,' é o maior') 
 Else Writeln('São iguais'); 
End. 
 
6.2. Estrutura de Decisão ou Escolha Condicional (Múltipla): CASE 
Instrução para seleccionar a opção entre várias opções baseada no valor de uma variável 
ou expressã: 
 
Sintaxe (Primeira Forma): 
 
CASE <expressão ou variável> OF 
<valor 1> : Comando_1; 
<valor 2> : Comando_2; 
. . . 
<valor n> : Comando_n; 
END; 
 
ou 
 
CASE <expressão ou variável> OF 
<valor 1> : BEGIN 
 Comando_1; 
 Comando_2; 
 . . . 
 END; 
<valor 2> : BEGIN 
 Comando_1; 
 Comando_2; 
 . . . 
 END; 
 . . . 
<valor n> : BEGIN 
 Comando_1; 
 Comando_2; 
 . . . 
 END; 
END; 
 
 A expressão ou variável no comando Case deve ser do tipo simples, normalmente Char 
ou Integer. Após a avaliação da expressão, seu valor ou o valor da variável é 
comparado com os diversos valores discriminados. Se houver algum que satisfaça, 
o comando subsequente será executado. 
 
Sintaxe (Segunda Forma): 
 
CASE <expressão ou variável> OF 
<valor 1> : Comando_1; 
<valor 2> : Comando_2; 
. . . 
<valor n> : Comando_n; 
ELSE Comando; 
END; 
 
Introdução a Informática (Gabriel Salimo) Pagina 23 de 72 
 Neste caso, se o resultado da expressão ou o valor da variável não satisfizer nenhum 
dos valores discriminados, então o comando que estiver na frente da cláusula Else será 
executado. 
 
Program Exemplo_Case_1; 
Uses CRT; 
(* Calcula a soma, ou a subtracção, ou a multiplicação, ou a divisão entre dois números lidos 
do teclado*) 
Var oper : Char; 
 x,y : Real; 
Begin 
 ClrScr; 
 Write('Valor de X = '); Readln(x); 
 Write('Valor de Y = '); Readln(y); 
 Writeln; Write('Operação? '); 
 oper:=ReadKey; 
 Writeln(oper);Writeln; 
 Case Oper of 
 '+' : Write('X + Y = ':10,x+y:6:2); 
 '-' : Write('X - Y = ':10,x-y:6:2); 
 '*' : Write('X * Y = ':10,x*y:6:2); 
 '/' : Write('X / Y = ':10,x/y:6:2); 
 Else Writeln(oper,' nao e operação'); 
 End; (* case *) 
End. (* programa *) 
 
Program Exemplo_Case_2; 
Uses CRT; 
(* Identificação das fases da lua *) 
Var mudancas,fase,dias:integer; 
BEGIN 
 write('Nº de dias decorridos desde o início do ano:'); 
 read(dias); 
 mudancas:=dias div 7; dias:= dias mod 7; 
 fase:=mudancas mod 4; 
 if dias=0 then fase:=fase-1; 
 case (fase) of 
 0:writeln('Lua Nova'); 
 1:writeln('Quarto Crescente'); 
 2:writeln('Lua Cheia'); 
 3:writeln('Quarto Minguante'); 
 end; 
END. 
 
6.3. Instrução de “Salto” Incondicional: GOTO 
A instrução Goto permite desviar a sequência de execução do programa para um 
determinado Label pré-definido. Para utilizarmos algum Label, ele deve, obrigatoriamente, 
ser declarado na subárea Label. 
 
Program Exemplo_GoTo_1; 
(*Programa para colocar em ordem crescente 3 números lidos do teclado*) 
Uses CRT; 
Label Inicio; 
Var x,y,z : Integer; 
Introdução a Informática (Gabriel Salimo) Pagina 24 de 72 
tecla : Char; 
Begin 
Inicio: 
 ClrScr; 
 Write('Primeiro numero: '); Readln(x); 
 Write('Segundo numero: '); Readln(y); 
 Write('Terceiro numero: '); Readln(z); 
 Writeln; Writeln; 
 If (x>=y) Then 
 If (x>=z) Then 
 If (y>=z) Then Writeln(x,' ',y,' ',z) 
 Else Writeln(x,' ',z,' ',y) 
 Else Writeln(z,' ',x,' ',y) 
 Else If (y>=z) Then 
 If (x>=z) Then Writeln(y,' ',x,' ',z) 
 Else Writeln(y,' ',z,' ',x) 
 Else Writeln(z,' ',y,' ',x); 
Writeln; Write('Deseja Continuar: '); 
Tecla:=Readkey; 
If ((Tecla = 'S') OR (Tecla = 's')) Then Goto Inicio; 
End. 
 
6.4. Estrutura de Repetição com Contador: Ciclo FOR 
Este comando permite que um grupo de operações ou comandos sejam repetidos um certo 
número de vezes determinados. 
 
Sintaxe Geral: FOR <variável> := <valor inicial> TO/DOWNTO <valor final> DO 
<comando>; 
 
 A variável deverá ser, obrigatoriamente, do tipo integer (qualquer um), char ou 
Boolean; 
 A variação de variável entre valor inicial e valor final será crescente e de um em um, 
quando utilizamosa palavra TO; e decrescente de um em um, quando utilizamos a 
palavra DOWNTO. 
 
Program Exemplo_For_1; 
Uses CRT; 
Var i : Integer; 
Begin 
 ClrScr; 
 For i:=10 to 15 do Writeln(i); (* para i igual a 10 até 15 faça escreva i *) 
End. 
Program Exemplo_For_2; 
Uses CRT; 
Var i : Integer; 
Begin 
 ClrScr; 
 For i:=10 downto 1 do Writeln(i); 
End. 
 
 
Introdução a Informática (Gabriel Salimo) Pagina 25 de 72 
Program Exemplo_For_3; 
Uses CRT; 
{ Este programa escreve na tela os quadrados dos números de 1 até 20 } 
Var i : Integer; 
Begin 
 ClrScr; 
 For i:=1 to 20 do 
 Begin 
Write('O Valor ',i:3); 
Writeln(', o quadrado é ',(i*i:5)); 
 End; 
End. 
 
6.5. Estrutura de Repetição Baseada numa Condição: Ciclo REPEAT UNTIL 
Repete um bloco de instruções até que uma certa condição seja satisfeita. 
 
Sintaxe: 
 
REPEAT 
 Comando_1; 
 Comando_2; 
 Comando_3; 
 . . . 
UNTIL (expressão_lógica); 
 
 Neste caso, todos os comandos entre as palavras reservadas Repeat e Until serão 
executadas, até que a expressão lógica seja verdadeira (TRUE) 
 
 Nos ciclos devemos tomas especial atençãocom as condições, pois no caso de nunca 
alcalçar a verdade(TRUE) em nhenhum momento teremos um LOOP INFINITO, (o 
programa fica preso dentro da estrutura Repeat - Until). 
 
Program Exemplo_Repeat_1; 
Uses CRT; 
(* Programa exemplo para mostrar o funcionamento da estrutura Repeat Until *) 
Var i : Integer; 
Begin 
 ClrScr; 
 i:=1; 
 Repeat 
 Writeln(i); 
 i:=i+1; 
 Until i=10; 
End. 
 
Program Exemplo_Repeat_2; 
Uses CRT; 
(* Soma dos números pares compreendidos entre dois números lidos do teclado*) 
Var i, numero_1, numero_2, soma: Integer; 
Begin 
 Clrscr; 
 soma:=0; 
 Write('Primeiro Numero: '); Readln(numero_1); 
 Write('Segundo Numero: '); Readln(numero_2); 
Introdução a Informática (Gabriel Salimo) Pagina 26 de 72 
 i:=numero_1; 
 Repeat 
 If i MOD 2 = 0 then soma:=soma+i; (* Verifica se o número é par, se sim adiciona *) 
 i:=i+1; 
 Until i>numero_2; 
 Writeln;writeln; 
 Writeln('Soma dos números pares entre ’, numero_1,' e ',numero_2,' é igual a ',soma); 
End. 
 
6.6. Estrutura de Repetição Baseada numa Condição: Ciclo WHILE DO 
A estrutura While..Do, permite controlar o número de vezes que uma instrução ou bloco de 
instruções será executado. 
 
 While..Do, difere da instrução Repeat..Until porque esta só avalia a expressão lógica 
no final do primeiro Loop, enquanto que a instrução While..Do avalia a expressão 
lógica antes da primeira interacção, isto significa que, eventualmente, no While..Do 
pode não ocorrer sequer a primeira interacção. 
 
Sintaxe: WHILE <expressão_lógica> DO <comando>; 
 
ou 
 
WHILE <expressão_lógica> DO 
BEGIN 
 Comando_1; 
 Comando_2; 
 . . . 
END; 
 
Program Exemplo_While_1; 
Uses CRT; 
(* Programa que escreve na tela de 0 até 10*) 
Var i : Integer; 
Begin 
 ClrScr; 
 i:=0; 
 While (i<11) Do 
 Begin 
 Writeln(i); 
 i:=i+1; 
 End; 
End. 
 
 
Program verificar_se_primo; 
uses crt; 
var e_primo,contador,divisores:integer; 
BEGIN 
writeln('Insira um número inteiro para verificar se é primo:'); 
read(e_primo); 
contador:=1; 
divisores:=0; 
while (contador<=e_primo) do 
Introdução a Informática (Gabriel Salimo) Pagina 27 de 72 
 begin 
 if (e_primo mod contador = 0) then divisores:=divisores+1; 
 contador:=contador+1; 
 end; 
 if (divisores <=2) then writeln('O número ',e_primo,' é primo.') 
 else writeln('O número ',e_primo,' não é primo.'); 
END. 
 
 
7. Outros Tipos Dados Estruturados 
 
Para além do String, existem outros tipos de dados chamados complexos ou estruturados, 
tais como: Array, Record, Set e File. 
 
 O tipo file refere-se a arquivos de discos e será amplamente estudado num capítulo à 
parte... 
 
7.1. Tipo Arrays: Variáveis Indexadas Uni-Dimensionais (Vectores) 
Uma variável uni-dimencional é um “Vector” aonde é possível definir a variável com 
quaisquer tipo de dados válidos no Pascal. 
 
Array é um tipo estruturado que pode agrupar numa mesma variável um conjunto de valores 
do mesmo tipo. 
 
 Uma variável do tipo array, como qualquer variavel, é designada por um identificador 
que, neste caso, é o mesmo para todos os elementos do conjunto. 
 Apesar de um array ter um so identificador para todos os elementos que agrupa, cada 
elemento desse agrupamento tem um ou mais indices associados. 
 Sao os indices que permitem identificar cada elemento individual no conjunto 
representado pelo array. 
 Há arrays unidimensionais (vectores) e arryas multidimensionais (matrizes). 
 
Um array unidimensional – que tambem é costume designar por vector - é um conjunto de 
elementos representados por um identificador e um indice; este ultimo varia entre um limite 
inferior e um limite superior, em correspondencia com o numero de elementos do conjunto. 
Sintaxe: VAR <identificador>: ARRAY [iINICIO..iFIM] OF <tipo>; 
 
 “ARRAY” é uma palavra reservada do Pascal 
 Os valores “iINICIO” e “iFIM” correspondem aos índices inicial e final 
 Uma variável indexada pode ser apenas de um tipo de dado 
 
Exemplo 1: Definir uma variável indexada como sendo do tipo REAL, sendo que a mesma 
deverá corresponder a 10 posições de memória. 
 
VAR 
 Vet: ARRAY [1..10] OF REAL; 
Após a definição da variável, a memória estará como mostrado no esquema abaixo: 
 
Vet 
 
 1 2 3 4 5 6 7 8 9 10 
Introdução a Informática (Gabriel Salimo) Pagina 28 de 72 
 Os Valores numéricos apresentados acima (de 1 a 10) correspondem aos índices da 
variável. 
 
Exemplo 2: Suponhamos que pretendiamos representar num programa os gastos de um 
determinado departamento em cada um dos 12 meses do ano. Evidentemente, poderiamos 
definir 12 variaveis, designadas por 12 identificadores diferentes; por exemplo: jan, fev, 
mar, ou m1, m2, m3, etc... 
 
Todavia, o uso de uma varaivel estruturada, neste caso, array, com um único identificador 
agrupando os 12 elementos em causa revela-se uma tecnica muito mais economica em termos 
de escrita, encerra muito mais potencialidades de manipulação em termos de programação. 
 
Neste caso, poderiamos definir um array mediante um unico identificador, por exemplo : 
gastosmes. 
 
Mas, para que esse identificador possa representar os 12 elementos correspondentes aos 
12 meses de um ano, temos de utilizar indices. 
 
Em pascal poderiamos escrever assim: Var gastosmes : array[1..12] of real; 
 
Depois de declarada ou definida uma variavel do tipo array, a designação individual de 
cada um dos seus elementos faz-se escrevendo o identificador da variavel, seguido do seu 
indice entre parentesis rectos. 
 
De um modo geral, cada elemento desta variavel do tipo array designa-se por: gastosmes[i] 
em que [i] representa a posição do elemento no conjunto que compoe o array, ou seja, neste 
caso, o numero do mês que se pretende designar. 
 
Por exemplo, tendo em conta a declaração anterior da variavel “gastosmes”, os seus 12 
itens ou elementos seriam asssim designados: 
 
Identificador: Gastos do mes: 
gastosmes[1] Janeiro 
gastosmes[2] Fevereiro 
..... 
gastosmes[12] Dezembro. 
 
7.1.1.1. Utilização da variável array para Leitura, Escrita e Atribuição 
Se quisermos utilizar uma variavel do tipo array com qualquer uma das três instruções básicas 
(leitura, escrita, atribuição), apenas temos de ter em conta o identificador do array e os 
respectivos índices. 
 
Exemplos 
 
1) Instrução de leitura: Read(gastosmes[1]) 
Faz a leitura do valor dos gastos do mês do indice 1, ou seja, Janeiro. 
 
2) Instrução de atribuição: Gastosmes[4]:=25350 
Faz com que o elemento indice 4 do array, o mes de Abril, seja atribuido com o valor 
25350. 
 
3) Instrução de escrita: Write(‘Gastos do mes de Dezembro: ’, gastosmes[12]) 
Escreve a mensagem da string indicada, seguida do valor dos gastos do mes de 
Dezembro. 
Introdução a Informática (Gabriel Salimo) Pagina 29 de 72 
 
 No lugar onde se indicam os indicesdo array podem empregar-se variaveis, em vez de 
numeros inteiros directos, como por exemplo: 
 
M:=2; 
Gastosmes[m]:=3039; 
Write(‘Gastos do mes corrente: ’, gastosmes[m]); 
 
 Aonde a variavel “m” terá de ser definida como uma variavel de tipo inteiro, ou como 
subconjunto[1..12], de modo a ser compativel com o indice do respectivo array 
“gastosmes”. 
 
 Combinando uma estrutura de um array com um ciclo de repetição, podemos usar os 
respectivos indices na tecnica de iteração. 
 
No exemplo que se segue pretende-se calcular o total anual e a média dos gastos mensais 
do mesmo exemplo atras apresentado: 
 
 
Program Medias; 
Var m: integer; 
 Totalano, mediames : real; 
 Gastosmes : array[1..12] of real; 
Begin 
 Totalando:=0; 
 For m:=1 to 12 do 
 Begin 
 Writeln(‘Introduza o gasto do mes ’, m); 
 Readln(gastosmes[m]); 
 Totalano:=totalano+gastosmes[m]; 
 End; 
 Mediames:=totalano/12; 
 Readln; 
End. 
 
7.2. Tipo Arrays: Variáveis Indexadas Bidimensionais (Matrizes) 
Também conhecida por “Matriz”. Uma variável Bidimencional, como o próprio Nome já 
indica, possui duas dimensões, sendo ser possível definir variáveis com quaisquer tipo de 
dados validos do Pascal. 
 
Sintaxe: VAR <Nome>: ARRAY [I..J, L..M] OF <tipo>; 
 
 I,J,L e M - devem ser inteiros péviamnte declarados e inicializados (constantes). 
 
Exemplo: Definir uma variável indexada bidemensional para armazenar os dados de uma 
matriz 4 por 4 de números do tipo REAL, sendo que a mesma deverá corresponder no total 
a 16 posições de memória. 
 
VAR MAT: ARRAY [1..4,1..4] OF REAL; 
 
 Neste exemplo, após a definição da variável, a memória estará como mostrado no 
esquema abaixo: 
 
Introdução a Informática (Gabriel Salimo) Pagina 30 de 72 
 1,1 1,2 1,3 1,4 
MAT = 2,1 2,2 2,3 2,4 
 3,1 3,2 3,3 3,4 
 4,1 4,2 4,3 4,4 
 
 Os Valores numéricos apresentados acima correspondem aos índices da variável. 
 
Outros exemplos: Var a : array[1..10,2..5] Of Integer; 
 
Na declaraçäo acima, definimos um Array de 40 elementos chamado 'a'. Ele é constituído 
de 10 linhas numeradas de 1 a 10 por 4 colunas numeradas de 2 a 5. O acesso a cada 
elemento é feito da seguinte forma: 
 
 a[1,2] a[1,3] ... a[1,5] 
 a[2,2] a[2,3] ... a[2,5] 
 ... ... ... ... 
 a[10,2] a[10,3] ... a[10,5] 
 
Poderíamos definir o mesmo array da seguinte forma: Var a : array[1..10] of array[2..5] Of 
Integer; 
ou da seguinte forma: Type b = array[2..5] Of Integer; Var a : array[1..10] Of b; 
 
7.2.1.1. Iteração de um array bidimensional numa estrutura de ciclos encaixados 
Se quisermos utilizar tecnicas iterativas com arrays bidimemensionais, teremos de utilizar uma 
estrutura de ciclos encaicxados, ou seja, um ciclo dentro de outro ciclo; neste caso o ciclo com 
contador (coclo “For”) se apresenta mais apropriado. 
 
Por exemplo, para medir a introdução consecutiva de todos os valores da variavel “gaveta”, 
a melhor tecnica é precisamente a dos dois ciclos encaixados; assim: 
 
Gaveta : array[1..3, 1..4] of integer; 
 
For i:=1 to 3 do 
 For j:=1 to 4 do 
 Readln(gaveta[i, j]); 
 
Sintaxe (Atribuição): <Nome>[<Índice>,<Índice>]: =Valor; 
ou seja, 
 
READ (<Nome>[<Índice>,<Índice>]); 
 
PROGRAM Atribui; 
VAR 
 Nomes : ARRAY[1..4,1..4] OF STRING; 
 I,J : INTEGER; 
BEGIN 
 FOR I: = 1 TO 4 DO 
 FOR J := 1 TO 4 DO 
 READ (Nomes[ I,J] ); 
END. 
 
Introdução a Informática (Gabriel Salimo) Pagina 31 de 72 
7.3. Tipo Record 
O tipo Record introduz o conceito de estrutura heterogênea: estrutura que nos permite criar 
um tipo de dado que é composto de itens de vários tipos. Estes itens dos quais o tipo Record 
é formado recebem o nome de campos. 
 
 Imaginem que queiramos armazenar os seguintes dados a respeito de uma pessoa: 
Nome - Idade - Sexo - Altura 
 
Até o momento, näo temos nenhum tipo de variável capaz de fazer isso, pois como podemos 
reparar, os quatros itens säo de tipos diferentes, a saber: 
 
Nome => String; 
Idade => Integer; 
Sexo => Char; 
Altura => Real. 
 
 Em seguida, se apresenta a solução com base no tipo Record. 
 
Declaração de Records 
A definiçäo de uma variável do tipo record, começa com a palavra reservada Record, 
a qual é seguida pelos campos (variáveis) e os seus tipos. A palavra reservada End seguida 
de um ponto e vírgula, termina a definiçäo do Record. 
 
Sintaxe: 
VAR identificador-registo :RECORD 
 Identificador-campo1:<tipo>; 
 Identificador-campo1:<tipo>; 
 ... 
 Identificador-campo1:<tipo>; 
END; 
 
Exemplo: 
 
Var individuo : Record 
Nome : String[30]; 
Idade : Integer; 
Sexo : Char; 
Altura : Real; 
End; 
 
ou 
Type individuo = Record 
Nome : String[30]; 
Idade : Integer; 
Sexo : Char; 
Altura : Real; 
End; 
 
Var Registro:individuo; 
 
 
Introdução a Informática (Gabriel Salimo) Pagina 32 de 72 
7.3.1.1. Acesso aos elementos da estrutura (Records) 
Para acessarmos os elementos da estrutura, ou seja, os campos, nós devemos incluir o 
nome da variável seguida de um ponto e depois o nome do campo. 
 
Exemplo: 
Registro.Altura := 1.78; 
Registro.Sexo := 'M'; 
Etc... 
 
Exemplo: 
Program Registo1; 
Uses CRT; 
(* Lê uma variável do tipo record do teclado e em seguida a mostra no monitor *) 
Type Pessoas = Record 
 Nome : String[30]; 
 Idade : Integer; 
 Sexo : Char; 
 Altura : Real; 
End; 
Var p : Pessoas; 
Begin 
 ClrScr; 
 Write('Nome: '); Readln(p.Nome); Write('Idade: '); Readln(p.Idade); 
 Write('Sexo: '); Readln(p.Sexo); Write('Altura: '); Readln(p.Altura); 
 Writeln; Writeln('Voce digitou os seguintes dados :'); 
 Writeln;Writeln; Writeln(p.nome); 
 Writeln(p.idade); Writeln(p.sexo); 
 Writeln(p.altura:6:2); 
End. 
 
Pode-se também definir arrays de records, como se pode ver no exemplo abaixo: 
 
Program Exemplo_2; 
Uses CRT; 
(******************************************************************************** 
ler dados (máximo 20 pessoas) e fazer uma listagem em ordem alfabética (nome) 
******************************************************************************) 
Label fim; 
Type Pessoas = Record 
 Nome : String[30]; 
 Idade : Integer; 
 Sexo : Char; 
 Altura : Real; 
End; 
Var p : array[1..20] of Pessoas; 
 i,x,y : Integer; 
 s : Pessoas; 
Begin 
 ClrScr; 
 i:=0; 
 Repeat 
 i:=i+1; 
 Write('Nome (0=fim): '); 
 Readln(p[i].Nome); 
Introdução a Informática (Gabriel Salimo) Pagina 33 de 72 
 if p[i].Nome='0' then goto fim; 
 Write('Idade: '); 
 Readln(p[i].Idade); 
 Write('Sexo: '); 
 Readln(p[i].Sexo); 
 Write('Altura: '); 
 Readln(p[i].Altura); 
 Writeln; 
 fim: 
 Until ((p[i].Nome='0') or (i=20)); 
 If i<20 then i:=i-1; 
 For x:=1 to i-1 do 
 For y:=x+1 to i do 
 If ((p[x].nome) >= (p[y].nome)) then 
 Begin 
 s:=p[x]; 
 p[x]:=p[y]; 
 p[y]:=s; 
 End; 
 ClrScr; 
 Writeln('NOME':30,'IDADE':6,'SEXO':5,'ALTURA':8); 
 For x:=1 to i do 
 Writeln(p[x].nome:30,p[x].idade:6,p[x].sexo:5,p[x].altura:8:2); 
 End. 
 
7.4. Tipo Set 
Na matemática, usamos uma linguagem näo só adequada às suas necessidades, mas 
também ao estudo de outras ciências. Uma boa parte dessa linguagem vem da teoria de 
conjuntos. 
 
Na linguagem Pascal, ao invés de difinirmos os conjuntos como sendo uma coleçäo de objetos, 
nomes, números etc., chamaremos de elementos aos objetos, nomes, números, etc. que 
pertencem a um conjunto; assim se considera, um conjunto é uma coleçäo de elementos 
semelhantes. O tamanho do conjunto pode ser variável, sendo que no caso específico do 
Turbo Pascal, o conjunto pode ter no máximo 256 elementos. 
 
Um conjunto pode consistir em zero ou mais elementos do mesmo tipo base que, 
obrigatoriamente deverá ser um tipo simples, podendo ser qualquer escalar com exceçäo 
do REAL. 
 
Em Pascal, os conjuntos têm seus elementos inclusos emcolchetes e separados por vírgulas. 
Podemos ter também a representaçäo da sub-faixa: 
 
Exemplos: 
[1,3,5,7,9,11,13] - alguns inteiros 
[3..7] - inteiros entre 3 e 7 
[3,4,5,6,7] - equivalente ao anterior 
['A'..'Z'] - caracteres alfabéticos maiúsculos 
[gol,passat,fusca] - marcas de carro 
[] - conjunto vazio 
 
 
Introdução a Informática (Gabriel Salimo) Pagina 34 de 72 
7.4.1.1. Declaração de Records 
Sintaxe: Type <identificador> = SET OF <tipo base>; 
 
Exemplos: 
Type 
 caracteres= set of Char; 
 letras_maiúsculas = set of 'A'..'Z'; 
 dígitos = set of 0..9; 
 carros = set of (fusca,gol,escort,opala); 
 
Var 
 c : caracteres; 
 letras : letras_maiúsculas; 
 números : dígitos; 
 marca : carros; 
etc. 
 
7.4.1.2. Operações em tipos Set 
Atribuição: O operador de atribuição é o mesmo utilizado para tipos simples, 
 
Exemplos: 
c := ['a','e','i','o','u']; 
letras := ['B'..'H']; 
números := [0,3,5]; 
etc. 
 
União: O operador uniäo é representado pelo sinal '+'. A uniäo entre dois conjuntos 
resulta num terceiro conjunto, constituído dos elementos dos dois conjuntos. 
 
Exemplo: 
a := [1,2,3]; 
b := [2,3,4,5]; 
c := a+b; resulta c = [1,2,3,4,5] 
 
Intersecção: Representada pelo sinal '*'. A intersecçäo entre dois conjuntos, resulta num 
terceiro conjunto, constituí-do pelos elementos que fazem parte tanto de um como do outro 
conjunto. Exemplo: 
 
Exemplo: 
a := [1,2,3]; 
b := [2,3,4,5]; 
c := a*b; resulta c = [2,3] 
 
Diferença: Representada pelo sinal '-'. Retorna um conjunto, cujos elementos estäo num 
conjunto mas näo no outro. 
 
Exemplo: 
a := [1,2,3,6]; 
b := [2,3,4,5]; 
c := a-b; resulta c = [1,6] 
c := b-a; resulta c = [4,5] 
 
 Usando operadores relacionais: 
Introdução a Informática (Gabriel Salimo) Pagina 35 de 72 
 
Exemplos de programas: 
-------------------------------------------------------------------------------------------------------- 
Program Exemplo_1; 
Uses CRT; 
(******************************************************************************* 
Lê uma tecla e a envia para o monitor até que se digite 'S' ou 's' ou 'N' ou 'n' 
*******************************************************************************) 
Var tecla : Char; 
 Begin 
 ClrScr; 
 Repeat 
 Read(kbd,tecla); 
 Write(tecla); 
 Until tecla IN ['s','S','n','N']; 
End. 
 
Program Exemplo_2; 
Uses CRT; 
(******************************************************************************** 
Lê uma tecla e diz se é número, letra maiúscula ou letra minúscula até que se leia um '?' 
*******************************************************************************) 
Type simbolos = Set of Char; 
Var Maiusc,Minusc,Numeros : simbolos; 
tecla : char; 
Begin 
 ClrScr; 
 Maiusc := ['A'..'Z']; Minusc := ['a'..'z']; Numeros := ['0'..'9']; 
 Repeat 
 Read(kbd,tecla); 
 If tecla IN Maiusc Then Writeln('MAIUSCULA') 
 Else if tecla IN minusc Then Writeln('minuscula') 
 Else if tecla IN numeros Then Writeln('numero') 
 Else Writeln('nada'); 
 Until tecla = '?'; 
End. 
 
Program Exemplo_3; 
Uses CRT; 
(******************************************************************************** 
Programa que conta o número de vogais, número de consoantes e de brancos numa frase 
*******************************************************************************) 
Type simbolos = set of char; 
Var Alfabeto,vogais,consoantes : simbolos; 
frase : string[50]; 
v,c,b,x : integer; 
 Begin 
 Vogais:=['a','e','i','o','u','A','E','I','O','U']; 
 alfabeto:=['a'..'z']+['A'..'Z']; 
 consoantes:=alfabeto-vogais; 
 Clrscr; 
 Write('Digite uma frase: '); 
 Readln(frase); 
 b:=0;c:=0;v:=0; 
Introdução a Informática (Gabriel Salimo) Pagina 36 de 72 
 For x:=1 to length(frase) do (*funçäo length() devolve o tamanho do parâmetro*) 
 if frase[x] in vogais then v:=v+1 
 else if frase[x] in consoantes then c:=c+1 
 else if frase[x] = ' ' then b:=b+1; 
 Writeln; 
 writeln(b,' brancos'); 
 Writeln(c,' consoantes'); 
 Writeln(v,' vogais'); 
 End. 
 
8. Subprogramas 
 
Os subprogramas destinam-se principalmente a: 
 
 permitir a criação de rotinas ou partes de codigo que podem ser usadas mais do que 
uma vez num programa; 
 ajudar a estruturar melhor o programa, permitindo que determinadas porcoes de codigo 
sejam escritas de uma forma mais autonoma e que a leitura do programa resulte mais 
facil e compreensivel. 
 
 
Figura 3-1: Exemplo de dois subprogramas derivados de um Programa (cálculo da hipotenusa) 
 
Em pascal, os subprogramas podem assumir duas formas principais: 
 “procedures” ou procedimentos; 
 “functions” ou funções. 
 
 A principal diferenca entre estes dois tipos de subprogramas é que, enquanto um 
procedimento executa uma ou mais operacoes, uma função, para além disso, tem de 
deveolver um determinado resultado. 
 
 Uma função tem estatuto de uma variável, isto é, uma função é de um determinado tipo 
de dados da mesma forma que uma variável é de um tipo - uma função é declarada 
e chamada num programa é ligeiramente diferente do que se passa num procedimento, 
como veremos mais adiante. 
Introdução a Informática (Gabriel Salimo) Pagina 37 de 72 
 
8.1. Declaraçäo de procedures 
Um procedimento pode ser referido escrevendo simplesmente o seu nome seguido de um lista 
opcional de parâmetros. 
 
Uma procedure tem praticamente a mesma estrutura de um programa, ou seja, ela contém 
um cabeçalho, área de declarações e o corpo da procedure. Na área de declaraçöes, tal 
como no programa, podemos ter as seguintes sub-áreas: Label - Const - Type - Var - 
Procedures - Functions. 
 
Devemos salientar que tudo que for declarado dentro das subáreas só será reconhecido 
dentro da procedure. 
 
PROCEDURE <Nome>([<lista-de-parâmentro>]) 
VAR 
<declaração-variáveis-locais> 
BEGIN 
<commandos/instruções> 
END; 
 
Exemplo: 
--------------------------------------------------------- 
Program Exemplo_1; (* cabeçalho do programa *) 
Uses CRT; 
 
Procedure linha; (* cabeçalho da procedure linha *) 
Var i : integer; (* subárea Var da procedure linha *) 
Begin (* corpo da procedure linha *) 
 for i:=1 to 80 do write('-'); 
End; 
 
Begin (* corpo do programa principal *) 
 ClrScr; 
 linha; (* ativaçäo da procedure linha *) 
 writeln('teste'); 
 linha; (* ativaçäo da procedure linha, novamente *) 
 End. 
 --------------------------------------------------------- 
 
O programa acima, pura e simplesmente faz o seguin-te: 
 
a) Apaga a tela e coloca o cursor em 1,1 
b) Ativa a procedure linha 
c) Escreve a palavra teste 
d) Ativa novamente a procedure linha. 
 
 Por sua vez, a procedure linha traça uma linha a partir da posiçäo atual do cursor; 
 Uma observaçäo importantíssima a ser feita neste instante, é que a variável inteira i, 
definida dentro da procedure linha só existe dentro da procedure,isto significa que toda 
vez que ativamos a procedure linha, a variável i é criada e toda vez que saimos da 
procedure linha, ela é destruída. 
 
Introdução a Informática (Gabriel Salimo) Pagina 38 de 72 
8.2. Variáveis Globais e Locais 
Uma variável é considerada Global quando é declarada no início de um programa escrito 
em Pascal, podendo ser utilizada por qualquer procedimento ou função. Assim sendo, este 
tipo de variável passa a ser visível a todas as funções ou procedimentos. 
 
8.3. Procedures: Passagem de parâmetros 
A passagem de parametros é feita com base no número e tipo de parâmentros declarados; 
isto significa que os parametros devem: 
 ser declarados como variáveis; 
 na chamada (execução da procedure) os parâmetros podem ser números inteiros 
“constantes” ou duas variáveis inteiras, obviamente desde que haja compatibilidade entre 
os parâmetros passados. 
 
A passagem de parâmetros pode ser feita de duas formas: passagem por valor e passagem 
por referência.8.4. Passagem de parâmetros por Valor 
A passagem por valor passa para a procedure apenas o valor; isto significa que as 
alterações feitas nos parâmentros (varáveis) no subprograma não alteram os valores no 
programa principal (chamador). 
 
Sintaxe: PROCEDURE <nome>(<identiticador>:<tipo>); 
 
Exemplo: 
Program Exemplo; 
Uses CRT; 
 
Var i,j:integer; 
 
Procedure soma(x,y:integer); 
Begin 
 writeln(x+y); 
end; 
 
Begin 
 ClrScr; 
 soma(3,4); 
 i:=45; j:=34; 
 soma(i,j); 
end. 
 
8.5. Passagem de parâmetros por Referência 
A passagem por referência passa para a procedure o endereço do parâmetro real; isto 
significa que todas as alterações feitas sobre o parâmentros (varáveis) no subprograma 
serão reflectidos sobre as variáveis correspondentes no programa principal (chamador). 
 
Sintaxe: PROCEDURE <nome>(VAR<identiticador>:<tipo>); 
 
 
Introdução a Informática (Gabriel Salimo) Pagina 39 de 72 
Program exemplo; 
Uses CRT; 
 
Var i : Integer; 
 
Procedure Soma(x,y:Integer;Var z:Integer); 
Begin 
 z:=x+y; 
End; 
 
Begin 
 ClrScr; 
 Soma(3,4,i); 
 Writeln(i); 
End. 
 
 Na passagem de parâmetro por referência, o parâmetro deve abrigatóriamente ser uma 
variá. 
 
8.6. Definição de Funções 
As funçöes säo muito parecidas com as procedures. A principal diferença é que o 
identificador de uma funçäo assume o valor de retorno da funçäo. Uma funçäo deve 
sempre retornar um valor e em Turbo Pascal, este valor é retornado no nome da funçäo. 
Declaração de Funções 
A declaraçäo de uma funçäo é muito parecida com de uma procedure que por sua vez é 
parecida com a de um programa, senäo vejamos: 
 
FUNCTION nome_da_função(parâmetros) : Tipo_da_função; 
 < área de declaraçöes > 
BEGIN 
 <corpo da funçäo> 
END; 
 
 A formaçäo do nome da funçäo deve seguir as mesmas regras para formaçäo de 
identificadores em Turbo Pascal; 
 Dentro dos parenteses devemos declarar os parâmetros e seus respectivos tipos dos 
quais a funçäo depende; 
 O tipo de valor retornado pela funçäo também deve ser declarado. 
 
Na área de declaraçöes, podemos declarar labels, constantes, variáveis e até mesmo 
Procedures e Functions. Devemos lembrar que tais elementos só poderäo ser utilizados 
dentro do corpo da funçäo, pois säo locais a ela. 
 
Program Exemplo; 
Uses CRT; 
 
Var x,y : Real; (* variáveis globais *) 
 
Function Soma(a,b:real):real; 
(* Soma é uma função que depende de dois parâmetros reais e devolve um valor real *) 
Begin 
 Soma:=a+b; (* reparem que o valor da função é retornado pelo seu nome *) 
End; 
Introdução a Informática (Gabriel Salimo) Pagina 40 de 72 
 
Begin 
 ClrScr; 
 x:=Soma(4,5); 
 y:=Soma(3,6)-Soma(45.5,5.6); 
 Writeln(x:10:2,y:10:2); 
 Writeln; 
 Write('Valor de x --> '); 
 Readln(x); 
 Write('Valor de y --> '); 
 Readln(y); 
 Writeln; 
 Writeln(Soma(x,y):10:2); 
End. 
 
 Devemos lembrar que o Turbo Pascal possui inúmeras funções de procedures pré-
definidas, das quais algumas iremos ver neste manual. 
 
8.7. Arquivos (File = Ficheiro) 
O tipo file ou arquivo, é uma estrutura constituída de elementos do mesmo tipo dispostos 
sequencialmente. Essa estrutura é utilizada para comunicaçäo com o meio externo, 
principalmente com discos magnéticos. 
 
 Todos os dados com que se tem trabalhado até aqui são dados voláteis – quer dizer 
que são armazenados temporariamente na RAM do computador, enquanto estamos a 
funcionar com o programa; quando se sai do programa, toda a informação 
desaparece. 
 
Ficheiro – é a unidade de informação, armazenada fisicamente num suporte de memória 
secundária; há ficheiros que são legíveis directamente no sistema operativo (Type ou Edit), 
pois são constituídos por caracteres ASCII – são os Ficheiros de Texto; outros tipos de ficheiros 
não são formados apenas por caracteres ou não têm qualquer caracter legível – são os 
ficheiros em código – máquina (executáveis); estes são chamados ficheiros binaries - porque 
a informação se encontra em formato binário. 
 
Assim, em Pascal os ficheiros em que se armazenam os dados com que os programas 
trabalham 
são de 2 tipos: 
 
 “TEXT FILES” – ficheiros de texto - Aqui a informação é totalmente armazenada em 
formato de caracteres ASCII. Podem ser criados, consultados, modificados no Sistema 
Operativo ou no editor de texto fora do programa que os usa. 
 
O acesso aos dados é do tipo sequencial ou seja, a leitura dos dados não pode ser iniciado 
num ponto qualquer escolhido pelo utilizador, mas sempre o início e percorrer todos os 
elementos até chegar ao ponto pretendido. 
 
 “TYPED FILES” – ficheiros de tipo não texto - Ficheiros definidos pelo utilizador; Estes 
agrupam dados simples ou estruturados, no formato binário, não legíveis nem 
manipuláveis fora do programa em que foram criados. 
 
Introdução a Informática (Gabriel Salimo) Pagina 41 de 72 
 
Podemos ter ficheiros de números inteiros ou reais, matrizes, registos, etc....; Em particular, os 
ficheiros de registos permitem manipular dados num formato bem estruturado para trabalho 
com informação externa (disco ou disquete). O acesso aos dados pode ser feito de forma 
aleatória ou seja por escolha da posição pretendida (directa). 
 
Independentemente do tipo de ficheiro, sobre ele, são válidas as seguintes acções: 
 
8.8. Declaração de tipos e variáveis de ficheiros (VAR) 
1. Ficheiro Tipo TEXT 
Sintaxe: VAR <identificador-do-ficheiro>:TEXT; 
 
2. Ficheiro Tipo Definidos pelo Programador 
Sintaxe: TYPE Arquivo = FILE OF <Tipo>; VAR a : Arquivo; 
 
 as declarações acima, a variável 'a' passa a representar um arquivo do tipo <Tipo>. 
 
Exemplos: 
a) Arquivo com números Inteiros 
Type Arq = File Of Integer; 
Var Arquivo : Arq; 
ou 
Var Arquivo : File Of Integer; 
 
b) Arquivo com números Reais 
Type Arq = File Of Real; 
Var Arquivo : Arq; 
 
c) Arquivo de Records 
Type Pessoa = Record 
 Nome : String[30]; 
 Idade : Integer; 
 Sexo : Char; 
 Altura : Real; 
 End; 
 
Var Arquivo : File Of Pessoa; 
 
 neste manual aprofudaremos apenas os ficheiros do tipo texto 
 
8.9. ASSIGN: associação de identificador de ficheiro com o nome externo de ficheiro 
Esta procedure tem a finalidade de atribuir um nome lógico ao arquivo físico, ou seja, 
ao nome do arquivo em disco. 
 
No Pascal, quando se declara uma variável do tipo texto ou file, não se está a designar o 
nome externo ou físico de um qualquer ficheiro do sistema operativo, mas sim o, identificador 
interno do programa. É preciso associar a variável do ficheiro com um nome efectivo do 
ficheiro ao nível do sistema operativo. Faz-se através do comando ASSIGN. 
 
Sintaxe: ASSIGN(<identificador>, <nome-do-ficheiro>); 
Exemplo: ASSIGN (fich, ‘PESSOAL.DAT ’); 
 
Introdução a Informática (Gabriel Salimo) Pagina 42 de 72 
 identificador - nome lógico do ficheiro; 
 Fich - é a variável interna do tipo file ou text, e 
 pessoal.dat - é o nome físico do ficheiro. 
 
8.10. REWRITE: Criação de um novo ficheiro & Escrita de Dados (WRITE, WRITELN) 
Sintaxe Criação: REWRITE (<identificador>); 
Exemplo: REWRITE (fich); 
 
Sintaxe Escrita: WRITE (<identificador>,<colecção-de-dados>); 
 
 identificador - nome lógico do ficheiro; 
 colecção-de-dados - representa variáveis ou constantes dos dados a serem escritos no 
ficheiro. 
 
Exemplo: WRITE (fich, ‘Quantidade: ‘ , 1000); 
 Escreve no ficheiro identificado por fich (pessoal.dat) a string (palavra) quantidade e o 
valor 1000. 
 
No caso dos ficheiros de texto, tal como na escrita de dados no écran existe a mesma 
diferença entre 
o Write e o Writeln – mudança ou não de linha. 
 
Programa 1:( Criação de um ficheiro do tipo TEXT) - Registar os nomes de alguns produtos, 
os seus preços por unidade e as respectivas quantidades existentes em armazém: 
 
Program FICHTEXTOCRIAÇÃO; 
var 
produtos: text; 
i,quantos:integer; 
nomeprod: string; 
precprod, quantid:integer; 
begin 
assign(produtos, 'artigos.txt');

Outros materiais