Escolar Documentos
Profissional Documentos
Cultura Documentos
Intro Ling Pascal Zim
Intro Ling Pascal Zim
Program Taylor;
var
k, n: integer;
s, x: real;
function Fatorial(n: integer): integer;
begin
if (n>1) then
Fatorial := n*Fatorial(n-1)
else
Fatorial := 1;
end;
function potencia(x,n: real): real;
begin
potencia := exp(n*ln(x));
end;
begin
write('Digite numero de termos e o valor x: ');
read(n,x);
s := 0;
for k:=1 to
n do Pascal (1623-1662)
Blaise
s := s + potencia(x,1.0*k)/fatorial(k);
writeln('S= ', s);
readkey;
end.
16/02/05
-i-
PROGRAMAO
SUMRIO
1. OBJETIVO DO DOCUMENTO ................................................................................................................1
2. INTRODUO .....................................................................................................................................1
2.1. A Linguagem Pascal..................................................................................................................1
2.2. Pascal ZIM! ...............................................................................................................................1
3. RESUMO DA LINGUAGEM PASCAL.......................................................................................................2
3.1. Estrutura Bsica de um programa Pascal..................................................................................2
3.2. Executando um Programa no Pascal.ZIM! ................................................................................3
3.3. Tipos de Dados Pr-definidos ...................................................................................................4
3.4. Identificadores ...........................................................................................................................4
3.5. Constantes e Variveis..............................................................................................................5
3.6. Comentrios ..............................................................................................................................6
3.7. Comando de Atribuio .............................................................................................................6
3.8. Operadores ...............................................................................................................................7
3.9. Funes Pr-definidas...............................................................................................................8
3.10. Sada de Dados.......................................................................................................................8
3.11. Entrada de Dados....................................................................................................................9
3.12. Estruturas de Seleo .............................................................................................................9
3.12.1. Alternativa Simples: if...then..............................................................................................9
3.12.2. Alternativa Composta: if...then...else..............................................................................10
3.12.3. Seleo Mltipla: case...else...........................................................................................10
3.13. Estruturas de Repetio ........................................................................................................11
3.13.1. Controlada no Incio: while...do .......................................................................................11
3.13.2. Controlada no Final: repeat...until ...................................................................................11
3.13.3. Com Varivel de Controle: for...do ..................................................................................12
3.14. Estruturas de Dados Homogneas........................................................................................13
3.14.1. Vetores ...........................................................................................................................13
3.14.2. Matrizes ..........................................................................................................................14
3.14.3. Vetores Multidimensionais ..............................................................................................15
3.15. Estruturas de Dados Heterogneas.......................................................................................15
3.16. Tipos Definidos pelo Usurio.................................................................................................16
3.17. Mdulos.................................................................................................................................17
3.17.1. Funes ..........................................................................................................................17
3.17.2. Procedimentos ................................................................................................................17
3.17.3. Passagem de Parmetros...............................................................................................18
3.17.3.1. Por Valor ..................................................................................................................18
3.17.3.2. Por Referncia..........................................................................................................18
3.18. Escopo de Variveis..............................................................................................................19
3.19. Arquivos ................................................................................................................................20
3.19.1. Procedimento Assign ......................................................................................................20
3.19.2. Procedimento Reset........................................................................................................21
3.19.3. Procedimento Rewrite.....................................................................................................21
3.19.4. Procedimento Append.....................................................................................................21
3.19.5. Procedimento Close........................................................................................................21
3.19.6. Procedimentos writeln e readln .......................................................................................21
4. CONCLUSO....................................................................................................................................22
4.1. Comentrio Final .....................................................................................................................22
4.2. Compiladores Gratuitos...........................................................................................................22
5. REFERNCIAS .................................................................................................................................23
16/02/05
- ii -
FIGURAS
Figura 1. Viso da interface do Pascal ZIM!.........................................................................................2
Figura 2. Estrutura bsica de um programa Pascal..............................................................................2
Figura 3. Exemplo de um programa Pascal. .......................................................................................2
Figura 4. Blocos em um programa Pascal. ..........................................................................................3
Figura 5. Primeiro programa no Pascal ZIM!: o tradicional "Al, Mundo!". ...........................................3
Figura 6. Mensagem de erro sinttico do compilador...........................................................................4
Figura 7. Programa com reas de declarao para constantes e variveis. ........................................6
Figura 8. Programa com mltiplas atribuies. ....................................................................................7
Figura 9. Programa com concatenao de strings. ..............................................................................8
Figura 10. Programa com comandos de sada.....................................................................................8
Figura 11. Programa com comandos de sada formatada ...................................................................9
Figura 12. Programa com comandos de entrada e sada.....................................................................9
Figura 13. Programa com alternativa composta if...then...else. ..........................................................10
Figura 14. Programa com comando de seleo mltipla case...of. ....................................................11
Figura 15. Programa utilizando comando while...do...........................................................................12
Figura 16. Programa utilizando comando repeat...until. .....................................................................12
Figura 17. Programa utilizando comando for...do...............................................................................13
Figura 18. Programa utilizando vetores..............................................................................................14
Figura 19. Programa utilizando matrizes............................................................................................15
Figura 20. Programa utilizando registro. ............................................................................................16
Figura 21. Programa utilizando funo...............................................................................................17
Figura 22. Programa utilizando procedimento....................................................................................18
Figura 23. Programa utilizando procedimento com passagem de parmetro por referncia. .............19
Figura 24. Exemplo de escopo e visibilidade de variveis..................................................................20
Figura 25. Programa utilizando procedimentos de acesso a arquivos................................................22
TABELAS
Tabela 1. Tipos de dados pr-definidos do Pascal ZIM!.......................................................................4
Tabela 2. Exemplos de identificadores na linguagem Pascal. ..............................................................5
Tabela 3. Operadores do Pascal ZIM!..................................................................................................7
16/02/05
- iii -
1. OBJETIVO DO DOCUMENTO
Apresentar um ambiente para aprendizado de programao baseado na linguagem Pascal, bem
como um resumo desta linguagem. Trata-se de um material de apoio para disciplina de Algoritmos:
o leitor j dever estar iniciado nas tcnicas de construo de algoritmos e ter noes de portugus
estruturado (ou portugol).
NO objetivo apresentar a ltima palavra em ambiente de programao1, e sim utilizar um
software tipo freeware (acessvel a todos!) com recursos suficientes e amigveis para o objetivo
principal, que propiciar ao iniciante dar seus primeiros passos em programao.
2. INTRODUO
2.1. A Linguagem Pascal
A linguagem Pascal foi desenvolvida no incio dos anos 70 por Nicklaus Wirth na Universidade
Tcnica de Zurique, Sua, com o objetivo de oferecer uma linguagem para o ensino de programao
que fosse simples, coerente e capaz de incentivar a confeco de programas claros e facilmente
legveis, favorecendo a utilizao de boas tcnicas de programao. Ela foi batizada com o nome de
Pascal em homenagem a Blaise Pascal, filsofo e matemtico francs que viveu entre 1623 e 1662,
inventor da primeira calculadora mecnica.
O mais famoso compilador desta linguagem foi desenvolvido pela Borland International em 1983,
e foi denominado Turbo Pascal. Foram lanadas vrias verses deste compilador para ambiente
DOS, culminando com o lanamento do Delphi2 para programao em ambiente Windows. No
Museum da Borland (http://community.borland.com/museum/) possvel obter verses antigas do
Turbo Pascal gratuitamente.
Se voc fosse aprender a pilotar, voc acha que deveria iniciar num Boeing 777, ou num planador ou mono-motor? por
a...
2
Ambiente de desenvolvimento visual baseado no Object Pascal (Pascal orientado a objetos). No Museum da Borland h o
porqu deste nome.
3
Distribuio gratuita, no podendo ser comercializado.
IntroLingPascal-ZIM.doc - Ver. 1.0a
16/02/05
-1-
program Constante;
const a = 5;
begin
writeln('Valor de a: ', a);
end.
Figura 3. Exemplo de um programa Pascal.
No Pascal padro, a rea de declaraes subdividida em sete sub-reas: uses, label, const,
type, var, procedure e function. Algumas destas sub-reas (as suportadas pelo Pascal ZIM!) sero
abordadas mais adiante.
16/02/05
-2-
program Qualquer;
Declaraes
begin
comandos
begin
comandos
end;
comandos
end.
Figura 4. Blocos em um programa Pascal.
Salvar
Executar
Ajuda
Para o programa poder ser executado, ele deve estar sintaticamente correto (tudo escrito
conforme a sintaxe da linguagem Pascal). Caso isto no ocorra, o compilador ir emitir uma
mensagem avisando sobre os eventuais erros, indicando em que linha ocorreram e qual a natureza
do erro. A Figura 6 mostra um exemplo disso para o primeiro programa (Figura 5), onde foi
esquecido de se colocar um ponto-e-vrgula ao final do comando write: a sintaxe do Pascal exige um
ponto-e-vrgula como terminador de comandos
16/02/05
-3-
Integer
Real
String
Descrio
Define dois valores lgicos: FALSE e TRUE. Um dado do tipo booleano ocupa um byte
de espao na memria.
Define os elementos do conjunto de caracteres que compem o alfabeto ASCII,
adicionados dos caracteres representados pelos cdigos de 128 a 255. Um dado do
tipo char ocupa um byte de espao na memria.
Define os valores inteiros compreendidos no intervalo de -2.147.483.647 at
2.147.483.647. Um dado do tipo integer ocupa quatro bytes de espao na memria.
Define os valores reais definidos no intervalo de 3.410-38 at 3.410+38. Um dado do
tipo real ocupa quatro bytes de espao na memria.
Define uma cadeia de caracteres. Se nenhuma restrio de tamanho for especificada,
um dado do tipo string capaz de armazenar uma seqncia contendo at 255
caracteres, onde cada caracter ocupa um byte de espao na memria. Uma cadeia de
caracteres pode ter seu tamanho definido (contendo menos de 255 caracteres), onde o
tamanho especifica o nmero mximo de caracteres contidos na cadeia. Essa
especificao deve ser indicada entre colchetes, logo aps a palavra reservada string,
Tabela 1. Tipos de dados pr-definidos do Pascal ZIM!
3.4. Identificadores
Um identificador vlido na linguagem Pascal qualquer seqncia de caracteres que obedea s
seguintes regras:
seja iniciada por um caractere alfabtico (letras a,...,z, minsculas ou maisculas) ;
16/02/05
-4-
possuir, aps o primeiro caractere, uma seqncia de caracteres que podem ser alfabticos,
numricos (1, 2,..., 9, 0) ou o caractere _ ;
no seja uma palavra reservada da linguagem Pascal.
Identificadores NO vlidos
1A
E(13)
A:B
Meu Identificador
Colchetes ([ e ]) sempre indicaro que aquilo por eles delimitado opcional. Exceo se faz na definio de
vetores/matrizes, onde os colchetes delimitam o "tamanho" destas estruturas.
IntroLingPascal-ZIM.doc - Ver. 1.0a
16/02/05
-5-
program AreaCirculo;
const {rea de declarao de constantes}
PI = 3.14159;
3.6. Comentrios
Comentrios so textos escritos dentro do programa (cdigo-fonte) para explicar ou descrever
alguns aspectos relativos ao mesmo. Os comentrios podem ser colocados em qualquer lugar do
programa, e no fazem parte dele. So colocados entre os smbolos { e } (chaves) ou (* e *).
Exemplos:
...
d := b*b 4*a*c; { clculo do discriminante }
...
(* Clculo das razes da equao *)
x1 := (-b + sqrt(d))/(2*a);
x2 := (-b - sqrt(d))/(2*a);
...
A Figura 7 tambm mostra um programa com comentrios explicando onde so as sub-reas de
declarao de constantes e de variveis.
16/02/05
-6-
program Atribuicao;
var
A, B: integer;
C, D: real;
T, F: boolean;
Cadeia: string;
begin
A := 1;
B := A + 3;
C := 2.3;
D := C/3 + A + B;
T := (A > 2);
F := false;
cadeia := 'Um texto' ;
end.
Figura 8. Programa com mltiplas atribuies.
3.8. Operadores
A Tabela 3 resume os operadores do PascalZIM! utilizados nos diversos tipos de expresses.
Tipo
Geral
Aritmtico
Relacional
Precedncia
0
0
1
1
1
1
2
2
3
Lgico
(boolean)
Operador
parnteses
funes
Multiplicao
Diviso Real
Diviso Inteira ( truncada )
Resto da Diviso Inteira
Subtrao
Adio
Maior que
Smbolo
()
f(x)
*
/
div
mod
+
>
Menor que
<
Maior ou igual
>=
3
3
3
4
5
6
Menor ou igual
Igual
Diferente
No
e
ou
<=
=
<>
not
and
or
Notar que no h o operador de potenciao. Esta operao deve ser implementada atravs de
uma funo utilizando a seguinte relao: xy = eyln(x). Na linguagem Pascal, as funes exp(x) (isto ,
ex) e ln(x) so definidas. Para calcular x2, pode usar sqr(x). Para x1/2 existe sqrt(x).
Existe um operador utilizado com o tipo string, denominado operador de concatenao,
(smbolo +) que efetua a juno de duas variveis ou constantes do tipo string. A Figura 9 mostra um
programa onde houve a concatenao de strings.
16/02/05
-7-
program Concatena;
var
PreNome, SobreNome, NomeCompleto: string[30];
RESULTADO
Alberto Roberto Silva
begin
{ Seja o nome Alberto Roberto Silva }
PreNome := 'Alberto Roberto ';
SobreNome := 'Silva';
NomeCompleto := PreNome + SobreNome;
writeln(NomeCompleto);
end.
Figura 9. Programa com concatenao de strings.
RESULTADO
5 e 4
b - c = -3 e b + c = 11
begin
write(a,' e ');
writeln(b);
write('b - c = ', b - c);
writeln(' e b + c = ', b + c);
end.
Figura 10. Programa com comandos de sada.
16/02/05
-8-
RESULTADO
a=[
12.4]
a=[
12.43]
a=[
12.431]
a=[
12.431]
b=[ 3]
b=[
3]
b=[
3]
Program SaidaFormatada;
const
a = 12.431;
b = 3;
begin
writeln('a=[',a:8:1,']');
writeln('a=[',a:8:2,']');
writeln('a=[',a:8:3,']');
writeln('a=[',a:10:3,']');
writeln('b=[', b:3,']');
writeln('b=[', b:4,']');
writeln('b=[', b:5,']');
readkey; {"Pausa"}
end.
program Leia;
var
a,b,x,y: integer;
begin
writeln('Digite x
read(x);
read(y);
writeln('Valores:
writeln; { Pula 1
writeln('Digite a
read(a,b);
writeln('Valores:
end.
e y:');
x=',x,' e y=',y);
linha }
e b:');
Digite a e b:
7 8 [enter]
Valores: a=7 e b=8
a=',a,' e b=',b);
Esta caracterstica melhor visvel na leitura a partir de arquivos. Se for utilizado o comando read, os dados lidos podem
ser digitados na mesma linha; com o readln, cada dado deve estar em uma linha.
IntroLingPascal-ZIM.doc - Ver. 1.0a
16/02/05
-9-
if expresso then
bloco_verdade;
onde expresso resulta em um valor lgico (true ou false - .V. ou .F.). Exemplo:
...
if (x > 10) then
writeln('O valor da varivel X maior que 10');
...
16/02/05
- 10 -
case seletor of
lista_de_constantes: bloco;
...
lista_de_constantes: bloco;
else bloco;
end;
onde seletor uma expresso do tipo inteiro ou caractere. A Figura 14 mostra um exemplo de
programa utilizando este tipo de seleo.
program SelecaoMultipla;
var
opcao: integer ;
begin
writeln('[Opcao 1] [Opcao 2] [Opcao 3]');
write('Escolha uma opcao: ');
read(opcao);
{ escolha da opcao }
case opcao of
1: writeln('Voc escolheu a opo 1...');
2: writeln('Voc escolheu a opo 2...');
3: writeln('Voc escolheu a opo 3...');
else writeln('Voc escolheu uma opo diferente de 1, 2, 3...');
end;
end.
RESULTADO
[Opcao 1] [Opcao 2] [Opcao 3]
Escolha uma opo: 3 [enter]
Voc escolheu a opo 3...
Figura 14. Programa com comando de seleo mltipla case...of.
16/02/05
- 11 -
program Enquanto;
var
x, s: real;
begin
s:=0;
writeln('Digite os valores (valor+[enter]):');
read(x);
while (x<>0) do
begin
s := s + x;
read(x);
end;
writeln;
writeln('A soma dos nmeros ',s);
readkey; {espera o usurio pressionar uma tecla "Pausa"}
end.
RESULTADO
Digite os valores (valor+[enter]):
3 [enter]
4 [enter]
6 [enter]
0 [enter]
A soma dos nmeros 13.000000
Figura 15. Programa utilizando comando while...do.
RESULTADO
Entre com x: 1 [enter]
x^2 = 1.000000
program Repita;
var
i: integer;
x: real;
begin
i := 1;
repeat
write('Entre com x: ');
read(x);
writeln('x^2 = ', x*x);
i := i + 1;
writeln;
until(i>5);
end.
16/02/05
- 12 -
program Para;
var
k, n, s: integer;
Somatrio: 15
begin
write('Digite n: ');
readln(n);
s := 0;
for k := 1 to n do {ou for k := n downto 1 do}
s := s + k;
writeln;
writeln('Somatrio: ', S);
end.
Figura 17. Programa utilizando comando for...do.
3.14.1. Vetores
No caso de vetores, cada elemento possui um ndice (unidimensional) que o diferencia dos outros
elementos. A sintaxe da declarao de vetor da forma:
var identificador[,..,identificador]: array[1..tamanho] of tipo_var;
O programa da Figura 18 permite a entrada de nomes e idades, e logo aps imprime todos os
nomes e idades contidos na memria atravs do uso de vetores.
16/02/05
- 13 -
program ExemploVetor;
const
MAX = 3; { Quantidade mxima de nomes/idades a serem lidos }
var
Nome: array[1..MAX] of string[30];
Idade: array[1.. MAX] of integer;
i: integer;
begin
i := 1;
repeat {repete at terminar a lista de nomes/idades}
write('Nome: ');
read(Nome[i]); { entrada de um nome }
write('Idade: ');
read(Idade[i]); { entrada de uma idade }
i := i + 1;
until (i>MAX);
writeln('-------------------------------');
for i := 1 to MAX do
begin
write('Nome: ',Nome[i]);
writeln(' - Idade: ',Idade[i]);
readkey; {"Pausa": faz o programa imprimir um nome por vez}
end;
end.
RESULTADO
Nome: Zeca [enter]
Idade: 33
[enter]
Nome: Paulo [enter]
Idade: 43
[enter]
Nome: Maria [enter]
Idade: 19
[enter]
------------------------------Nome: Zeca - Idade: 33 [enter]
Nome: Paulo - Idade: 43 [enter]
Nome: Maria - Idade: 19
Figura 18. Programa utilizando vetores.
3.14.2. Matrizes
Tambm so tipos de dados que permitem agrupar em uma mesma estrutura variveis do mesmo
tipo bsico, sendo que cada elemento possui agora dois ndices (bidimensional) que o diferencia dos
outros elementos. A sintaxe da declarao da matriz da forma:
var ident[,..,ident]: array[1..tam1,1..tam2] of tipo_var;
onde ident o identificador da matriz, e tam1 e tam2 correspondem ao nmero de linhas e de
colunas dela, respectivamente.
O programa da Figura 19 apresenta um exemplo do uso de matrizes. Este programa gera uma
matriz quadrada onde a diagonal principal vale um, e os valores das diagonais adjacentes crescem
em valores proporcionais distncia da diagonal principal.
16/02/05
- 14 -
program ExemploMatriz;
const
MAX = 9; {Mxima ordem da matriz quadrada}
var
M: array[1..MAX,1..MAX] of integer;
i,j,n: integer;
begin
write('Digite a ordem da matriz: ');
read(n);
for i:=1 to n do
for j:=1 to n do
M[i,j]:= abs(i-j)+1;
writeln('Matriz: ');
for i := 1 to n do
begin
for j:=1 to n do
write(M[i,j]:2); {define tamanho do campo em 2}
writeln;
end;
end.
RESULTADO
Digite a ordem da matriz: 4 [enter]
Matriz:
1 2 3 4
2 1 2 3
3 2 1 2
4 3 2 1
Figura 19. Programa utilizando matrizes.
16/02/05
- 15 -
program ExemploRegistro;
type
cadastro_aluno = record
Nome: string;
Nota1: real;
Nota2: real;
end;
var
aluno: cadastro_aluno;
begin
writeln('Cadastro de Aluno');
writeln;
write('Informe o nome...........: '); read(aluno.nome);
write('Informe a primeira nota..: '); read(aluno.nota1);
write('Informe a segunda nota...: '); read(aluno.nota2);
writeln;
writeln('Nome...: ',aluno.nome);
writeln('Nota 1.: ',aluno.nota1:3:1);
writeln('Nota 2.: ',aluno.nota2:3:1);
writeln('Tecle [enter] para encerrar...'); readln; {"Pausa"}
end.
RESULTADO
Cadastro de Aluno
Informe o nome...........: Pedro [enter]
[enter]
Informe a primeira nota..: 6.4
Informe a segunda nota...: 8.3
[enter]
Nome...: Pedro
Nota 1.: 6.4
Nota 2.: 8.3
Tecle [enter] para encerrar...
Figura 20. Programa utilizando registro.
16/02/05
- 16 -
type
intList = array[1..100] of integer ;
matrix = array[0..9, 0..9] of real ;
pInt = ^integer; { ponteiro para inteiro }
3.17. Mdulos
3.17.1. Funes
Uma funo um bloco de programa no qual so vlidas todas as regras de programao vistas.
Uma funo sempre retorna um valor (ao contrrio da procedure, vista a seguir), que utilizado
exatamente no ponto onde a funo chamada no bloco de origem. O valor de retorno pode ser
numrico, lgico ou literal. Sua sintaxe
function id_funcao [(par[..,par]:tipo[;..;par[..,par]:tipo])];
var
Declaraes
begin
Comandos
end;
A Figura 21 mostra um exemplo do uso de uma funo.
Program ExemploFuncao;
var
a, b: real;
function Hipotenusa(x:real; y:real):real;
Begin
Hipotenusa := sqrt(x*x + y*y);
End;
begin
write('Digite os valores dos catetos: ');
read(a,b);
writeln('A hipotenusa ',Hipotenusa(a,b):5:2);
readkey; {espera o usurio pressionar uma tecla "Pausa"}
end.
RESULTADO
Digite os valores dos catetos: 3 4 [enter]
A hipotenusa 5.00
Figura 21. Programa utilizando funo.
3.17.2. Procedimentos
A diferena bsica entre um procedimento e uma funo o fato do procedimento no possuir
valor de retorno. Sua sintaxe :
procedure id_procedimento [(par[..,par]:tipo[;..;par[..,par]:tipo])];
var
Declaraes
begin
Comandos
end;
A Figura 22 mostra um exemplo do uso de um procedimento funo.
IntroLingPascal-ZIM.doc - Ver. 1.0a
16/02/05
- 17 -
Program ExemploProcedimento;
var
a, b: real;
procedure CalculaHipotenusa(x:real; x:real);
Begin
writeln('A hipotenusa ',sqrt(x*x + y*y):5:2);
End;
begin
write('Digite os valores dos catetos: ');
read(a,b);
CalculaHipotenusa(a,b);
readkey; {espera o usurio pressionar uma tecla "Pausa"}
end.
RESULTADO
Digite os valores dos catetos: 3 4 [enter]
A hipotenusa 5.00
Figura 22. Programa utilizando procedimento.
Tanto as funes como os procedimentos devem ser colocados aps todas as outras subreas (como type, var e const) e antes do bloco do programa.
16/02/05
- 18 -
RESULTADO
k = 1
k = 5
k = 2
Program PassaParametros;
var
k: integer;
procedure incrementa(var n: integer; d: integer);
begin
n := n + d;
end;
begin
k := 1;
writeln('k = ',k);
incrementa(k,4);
writeln('k = ',k);
incrementa(k,-3);
writeln('k = ',k);
readkey; {"Pausa"}
end.
Figura 23. Programa utilizando procedimento com passagem de parmetro por referncia.
16/02/05
- 19 -
program A;
{ declarao de variveis }
var
m, n : real;
procedure B;
{ declarao de variveis }
var
i, j : integer;
begin
{ corpo do procedimento B }
end;
procedure C;
{ declarao de variveis }
var
i, j : integer;
k, l : real;
procedure D;
{ declarao de variveis }
var
k, l : integer;
begin
{ corpo do procedimento D }
end;
begin
{ corpo do procedimento C }
end;
begin
{ corpo do programa principal }
end.
As variveis i e j, declaradas nos procedimentos B e C, so invisveis entre si,
e portanto no causam conflito.
As variveis k e l so vlidas como reais em C. Apesar de serem globais, so
invisveis a D, pois foram redeclaradas como tipo inteiro. como se k e l
fossem declaradas com outros identificadores (internamente ao computador,
isto que acontece; o compilador trata disso).
As variveis i e j declaradas em C so globais a D, assim como as variveis
m e n so globais a todos os procedimentos.
Figura 24. Exemplo de escopo e visibilidade de variveis.
3.19. Arquivos
O Pascal ZIM! s trabalha com arquivos texto e acesso seqencial. O uso de arquivos texto na
linguagem Pascal feito atravs da definio de um tipo especial, TEXT, que identifica uma varivel
do tipo arquivo, definida na sub-rea para declarao de variveis.
Os comandos para tratamento de arquivos implementados no compilador so descritos a seguir.
16/02/05
- 20 -
trabalhar com um arquivo texto deve-se criar uma associao entre a varivel TEXT (varivel
arquivo) e o arquivo armazenado. Essa associao feita atravs do comando assign, cuja sintaxe
assign(variavel_arquivo, nome_arquivo);
onde variavel_arquivo uma varivel do tipo TEXT e nome_arquivo uma cadeia de caracteres
contendo o nome do arquivo associado, ou ainda uma varivel do tipo string. Exemplo:
assign(arq,'c:\dados.txt');
O nome do arquivo externo pode ser definido por uma varivel do tipo string, cujo valor pode ser
determinado durante a execuo do programa.
16/02/05
- 21 -
Program AcessoArquivo;
const
path = 'C:\temp\TEXTO.TXT';
var
arq: Text;
texto: string;
begin
assign(arq,path) ;
rewrite(arq); {Cria o arquivo}
reset(arq);
{Abre o arquivo}
writeln(arq,'Texto inicial');
close(arq);
{Fecha o arquivo, salvando as alteraes efetuadas}
append(arq); {Abre o arquivo para adicionar mais texto no seu final}
writeln(arq,'Mais texto!') ;
close(arq);
{Fecha o arquivo, salvando as alteraes efetuadas}
reset(arq);
{Abre o arquivo}
while not eof(arq) do { L todas as linhas at o final do arquivo}
begin
readln(arq,texto); {L linha do arquivo}
writeln(texto);
{Escreve a linha lida na tela}
end;
close(arq);
end.
RESULTADO
Na tela:
No arquivo:
4. CONCLUSO
4.1. Comentrio Final
Como apresentado no incio deste documento, o objetivo do presente material apresentar um
ambiente onde o iniciante em programao possa dar seus primeiros passos na construo e
implementao de algoritmos. Neste aspecto, o uso da linguagem Pascal bastante adequado, uma
vez que foi criada originalmente com este objetivo. O compilador sugerido - Pascal ZIM! - implementa
apenas parte dos recursos do Pascal padro, mas suficientes para os objetivos deste trabalho.
Aquele que quiser ir mais longe e utilizar um compilador Pascal completo pode encontr-lo na
Internet (item a seguir).
16/02/05
- 22 -
Virtual Pascal 2.1: http://www.vpascal.com/. Este compilador uma verso com "interface
DOS para Windows" bastante semelhante ao Turbo-Pascal 7.0. bem documentado. Vale
pena.
A descrio resumida dos softwares acima (e outros) podem ser encontrada no seguinte site:
http://www.thefreecountry.com/compilers/pascal.shtml
5. REFERNCIAS
1. Gottfried, B. S.: Programao em Pascal. Editora McGraw-Hill de Portugal Ltda, Lisboa, 1988.
2. Funo Ajuda do Compilador Pascal ZIM!.
16/02/05
- 23 -