Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos
Algoritmos
Enviado por:
Jedean Carlos Bendlin
Apostila de
Lgica de Programao
EMENTA
Introduo a Algoritmos, Portugus Estruturado, Variveis e Operadores
Matemticos e Lgicos, Estrutura de um programa de computador, Procedimentos e
Funes, Tipos de dados.
OBJETIVO GERAL
Instruir os conceitos bsicos de algoritmos de programao, familiarizando os
acadmicos com os recursos computacionais na resoluo de problemas reais. Com a
utilizao de pseudocdigos ou portugus estruturado, aplicar tanto prtica como
teoricamente, as estruturas bsicas de programao de computadores. A aplicao da
ementa servir como manual introdutrio para as demais disciplinas que trataro de
anlise e desenvolvimento de sistemas computacionais.
OBJETIVOS ESPECFICOS
Incentivar os acadmicos a raciocinarem logicamente na resoluo dos
problemas propostos, utilizando, de forma adequada, os recursos da
linguagem de programao.
Propor aos acadmicos a tomada de iniciativa prpria, a criatividade e a
pesquisa, itens indispensveis para o desenvolvimento e capacitao
profissional na rea de sistemas de informao.
CONTEDO PROGRAMTICO
Contedo
1.INTRODUO
Conceito
Tipos de algoritmos
Descrio geral dos algoritmos
2. LGICA DE PROGRAMAO
Formas de representao grfica
Princpios de resoluo de problemas
Tipos de variveis
Uso de Constantes
Frmulas matemticas
Instrues bsicas
3. TOMADAS DE DECISO
Desvio condicional simples
Desvio condicional composto
Desvio condicional encadeados
Prtica com Linguagem Pascal
4.LAOS DE REPETIO
Looping com teste lgico no incio
Looping com teste lgico no fim
Looping com varivel de controle
Prtica com Linguagem Pascal
5. MATRIZES
Matrizes de uma dimenso ou vetores
Buscas e ordenao
Matrizes com mais de uma dimenso
Prtica com Linguagem Pascal
C.H.
8
10
18
20
16
METODOLOGIA DE ENSINO
EMENTA
Lgica de programao avanada incluindo sub-rotinas, registros, eficincia e
correo. Anlise de algoritmos de programao estruturados. Aplicao em uma
linguagem de programao.
OBJETIVO GERAL
Desenvolver ao aluno habilidades tcnicas necessrias ao conhecimento de
teorias para composio de programas.
CONTEDO PROGRAMTICO
Contedo
1. Estruturas de dados
Registros
Procedimentos e funes
Passagem de parmetros
Units
Exerccios de programao
3. Anlise de Algoritmos
Busca
Mtodos de Ordenao
4. Utilizao de Arquivos e Noes de ndices
C.H.
30
26
12
METODOLOGIA DE ENSINO
O mtodo de ensino baseado na Teoria das Situaes de Guy Brousseau (1996.
Recherches en Didactique des Mathmatiques, vol.9, n.3) em que problemas so
propostos com a finalidade de desafiar o estudante a utilizar conhecimentos j adquiridos
em busca de uma adaptao a uma situao nova. A interveno do professor no
sentido de pequenas ajudas, devoluo de questes, evidenciar falhas e preparar para
novas estratgias. As situaes didticas devem favorecer o compartilhamento do
conhecimento, a discusso e a ao por parte dos estudantes. Tambm sero utilizados
materiais concretos em problemas diversos, proporcionando uma mudana de contrato
didtico.
ATIVIDADES DISCENTES
1 Introduo
Conceito de algoritmo
um processo de clculo matemtico ou de resoluo de um grupo de problemas
semelhantes, em que se estipulam, com generalidade e sem restries. Podemos dizer
tambm, que so regras formais para obteno de um resultado ou da soluo de um
problema, englobando frmulas de expresses aritmticas.
A tcnica mais importante no projeto da lgica de programas chamada
programao estruturada, a qual consiste em uma metodologia de projeto, objetivando:
Agilizar a codificao da escrita da programao;
Permitir a verificao de possveis falhas apresentadas pelos programas;
Facilitar as alteraes e atualizaes dos programas.
2 Lgica de Programao
realizado por quatro notas bimestrais que determinam a aprovao ou reprovao dos
seus alunos. Considere ainda, que o valor da mdia deve ser maior ou igual a 7 para que
haja aprovao. A primeira etapa se inicia e termina com um terminador e existe apenas
um processamento que indica a idia geral do problema:
inc io
Calcular a
mdia e
determinar a
aprovao
fim
incio
Calcular a
mdia e
determinar a
apro vao
Apresentar se
houver ou no
apro vao
fim
incio
Calcular a
mdia
N
Mdia>=7
"apr ovado"
fim
Esta terceira etapa deve ser aperfeioada para trabalhar com variveis.
incio
ler
N1,N2,N3,N4
Calc ular
M=N1+N2+N3+N4
4
N
M>=7
"rep rovado"
"aprovado"
fim
Programa mdia
Var
Resultado : caractere
N1,n2,n3,n4,soma,media : real
Inicio
Leia(n1,n2,n3,n4)
Soma<-n1+n2+n3+n4
Media <-soma/4
Se (media >=7) ento
Resultado <-APROVADO
Seno
Resultado<- REPROVADO
Fim_se
Escreva(Resultado)
fim
Tipos de variveis
Tipos Inteiros: So tipos inteiros, os dados numricos positivos ou negativos,
excluindo-se, destes qualquer fracionrio. Como exemplo deste tipo de dado, tm-se os
valores : 35,0,-56;
Tipos Reais: So tipos reais, os dados numricos positivos, negativos e nmeros
fracionrios. Ex. : 35,0,-56,1.2,-45.897
Tipos Caracteres: So caracteres, as sequncias contendo letras, nmeros e
smbolos especiais. Uma sequncia de caractere deve ser indicada entre aspas(). Ex.:
PROGRAMAO,Rua Alfa, ,98.
Tipos Lgicos: So tipos lgicos ou boleanos, os dados com valores verdadeiro
ou falso, e deve ser escrito entre pontos. Ex.: .Falso.,.Verdadeiro..
O nome de uma varivel utilizado para sua identificao e posterior uso dentro
de um programa, sendo assim, necessrio estabelecer algumas regras de utilizao
das mesmas:
Uso de Constantes
Tem-se como definio de constante tudo aquilo que fixo ou estvel. E existiro
vrios momentos em que este conceito dever estar um uso. Por exemplo, o valor 1.23
da frmula a seguir uma constante: RESULTADO=ENTRADA*1.23.
Operadores aritmticos
Operador
+
Operao
Manuteno de sinal (nmeros
positivos
Prioridade Matemtica
1
10
Seta
cima
/
*
+
-
1
2
Diviso
Multiplicao
Adio
Subtrao
3
3
4
4
Frmulas matemticas
Na programao comum usar frmulas matemticas, mas para facilitar a escrita
da programao as frmulas so escritas de uma forma diferenciada, como mostrados
nos exemplos a seguir:
(Exemplificar a frmula do raio e da rea)
Instrues bsicas
Cada linguagem de programao usa um conjunto de palavras onde cada uma
desenvolve uma ao. Estas palavras reservadas de cada linguagem so conhecidas
como comandos ou instrues. Daqui para frente vamos utilizar instrues em portugus
estruturado, tais como : inicio, fim, var , programa, enquanto, se, ento, seno, para,
escreva, leia, faa, repita e at que, entre outras que sero estudadas.
Exemplo de algoritmo
Ler dois valores
Efetuar a soma destes valores
Apresentar o resultado
Exerccios
1 Indique o tipo de varivel que podero armazenar os valores abaixo.
I : inteiro;
R : real;
S : String ou Literal ou Caractere;
L : Lgico ou Booleano.
( )1000
( )-456
( )-1.56
( ) 0
( )34
( ).falso.
( ) -900
( )Casa 8
( )1.87
( ).Verdadeiro.
( )0
( ).F.
( )21brasil
( )Nome_usuario
( )Fone$com
( )Nome*usuario
11
( )End-A
( )23
( )Cidade3
( )N23
( )#Cabec
( )0
( )34
( ) -900
( ).falso.
( ).Verdadeiro.
( )Real
( )7quedas
( )C/C
( )Senha_conta2 ( )Nome Cliente
12
3 Tomadas de Decises
Significado
Igual a
Diferente de
Maior que
Menor que
Maior ou igual a
Menor ou igual a
=
<>
>
<
>=
<=
Operador Lgico .e.
Condio1
F
V
F
V
Condio 2
F
F
V
V
Resultado
F
F
F
V
Condio 2
F
F
V
V
Resultado
F
V
V
V
Resultado
F
V
13
Exerccios :
1 Determine o resultado lgico das expresses abaixo baseado nos seguintes
valores: X=1, A=3,B=5,C=8 e D=7.
.no.(x>3)
(X<1).e..no.(b>d)
.no.(d<0).e.(c>5)
.no(x>3).ou.(c<7)
(a>b).ou.(c<=5)
(x>=2)
(x<1).e.(b>=d)
(d<0).ou.(c>5)
.no.(d>3).ou..no.(b<7)
(a>b).ou..no.(c>b)
2 Efetuar a leitura de dois valores e apresent-los em ordem crescente.
14
15
4 Laos de Repetio
FATORIAL
1
1
2
6
24
RESULTADO
1
2
6
24
120
PROGRAMA FATORIAL
VAR contador, resultado: INTEIRO;
INICIO
Resultado<-1
Contador<-1
ENQUANTO contador<=5 FAA
Resultado<-resultado+contador
Contador<-contador+1
FIM_ENQUANTO
ESCREVA(O fatorial de 5 ,resultado)
FIM
Exerccios de Fixao:
1 - Apresentar todos os valores numricos interios mpares situados na faixa de 0 a
20.
2 - Apresentar o total da soma obtida dos cem primeiros nmeros inteiros.
3 - Apresentar os resutlados de uma tabuada de um nmero apresentado pelo
usurio. Todo o programa deve se repetir enquanto o usurio desejar.
4 - Apresentar os quadrados dos nmeros intereiros de 15 a 200
Looping com teste lgico no fim
Caracteriza-se por uma estrutura que efetua um teste lgico no fim de um looping,
denominada repita, sendo conseguida com a utilizao do conjunto de instrues
repita...at_que.
A estrutura repita...at_que tem o seu funcionamento controlado tambm por
deciso, porm ir efetuar a execuo de um conjunto de instrues pelo menos uma vez
antes de verificar a validade da condio estabelecida. Diferente da estrutura enquanto
que execugta somente um conjunto de instrues, enquanto a condio verdadeira.
Exemplo: "Pedir a leitura de um valor para a varivel X, multiplicar este valor por 3,
colocando o resultado em uma varivel R e apresentar o valor. Tudo isso dever ser
repetido por 5 vezes".
Criar uma varivel contador;
Ler um valor para a varivel X;
Efetuar a multiplicao do valor de X por 3, implicando o resultador em R;
Apresentar o valor calculado contido na varivel R;
Acrescentar 1 ao contador;
Repetir os passos 2,3,4 e 5 at que o contador seja maior que 5.
Exerccios:
17
18
5 - Matrizes
ALUNO
1
2
3
4
5
6
7
8
MDIA
4.5
6.5
8.0
6.5
6.0
7.0
6.5
6.0
Agora basta escrever um programa para efetuar o clculo das 8 mdias de cada
aluno. Para representar a mdia do primeiro aluno ser utilizada a varivel MD1, para o
segundo MD2 e assim por diante. Ento tem-se:
MD1=4.5;MD2=6.5;MD3=8.0;MD4=6.5;MD5=6.0;MD6=7.0;MD7=6.5;MD8=6.0.
Com o conhecimento adquirido at este momento, seria ento elaborado um
programa que efetuaria a leitura de cada nota, a soma das mesmas e a diviso do valor
da soma por 8, obtendo-se desta forma a mdia, conforme exemplo abaixo:
19
Programa mdia_turma
Var
MD1,MD2,MD3,MD4,MD5,MD6,MD7,MD8 : real
Soma, media : real
Inicio
Soma<-0
Leia MD1,MD2,MD3,MD4,MD5,MD6,MD7,MD8
Soma<- MD1+MD2+MD3+MD4+MD5+MD6+MD7+MD8
Media<-soma/8
Escreva media
Fim
Perceba que para receber a mdia foram utilizada 8 vairveis. Com a tcnica de
matrizes poderia Ter sido utilizada apenas uma varivel com a capacidade de armazenar
8 valores.
Vamos utilizar como representao de nome a forma mais comum usada pelas
linguagens de programao, que o nome da varivel e em seguida, entre colchetes, a
dimenso da mesma. Desta forma, teramos uma matriz MD[1..8], onde seu nome MD,
possuindo um tamanho de 1 a 8.
MD[1]=4.5;
MD[2]=6.5;
MD[3]=8.0;
MD[4]=3.5;
MD[5]=6.0;
MD[6]=7.0;
MD[7]=6.5;
MD[8]=6.0
Observe que o nome um s, o que muda a informao indicada dentro dos
colchetes. A esta informao d-se o nome de ndice, sendo este o endereo onde o
elemento est armazenado.
Para definir as variveis no portugus estruturado utilizaremos a seguinte sintaxe:
VARIAVEL : Matriz[<dimenso>] de <tipo de dado>
Desta forma utilizaria-mos no exemplo :
Var
MD : Matriz[1..8] de real;
Obs.: outros autores podero utilizar outros tipos de declarao, isto tambm
acontece com as linguagens de programao.
A leitura e escrita da matriz feita passo a passo, um elemento por vez com as
20
instrues leia e escreva, como as variveis simples, embora deva-se observar o ndice.
Exemplo:
Escreva MD[2]
Leia MD[1]
21
22
jk
Gf
sa
Ee
Programa Leitura;
Var
Tabela: array[1..2,1..3,1..4] de caractere;
l,c,e: integer;
inicio
para l de 1 ate 2 passo 1 faa {percorre as linhas de 1 a 2}
para c de 1 ate 3 passo 1 faa {percorre as colunas de 1 a 3}
para e de 1 at 4 passo 1 faa {percorre os elementos de 1 a 4}
escreva(Digite o elemento da linha ,l, coluna ,c, elemento ,e, : );
leia(tabela[l,c,e];
fim_para
fim_para
fim_para
fim
23
Exerccios
1 Desenvolver um programa de agenda que cadastre o nome, endereo, cep de
4 pessoas e em seguida liste-os.
2 Crie um programa que faa a leitura de 10 nomes de alunos onde cada aluno
dever ter 4 notas. Para isso crie uma matriz unidimensional para armazenar os nomes e
uma bidimensional para as notas. Aps efetuar a leitura o programa deve apresentar os
alunos e as mdias.
24
Busca sequencial
Caso1: Efetuar a leitura de 5 nomes para uma matriz A. Solicitar um valor para
pesquisa do usurio, pesquisar na matriz os nomes que coicidem com o valor e
apresentar os nomes e as posies dos elementos encontrados. Caso no tenha
encontrado, apresente uma mensagem que o valor de busca no foi encontrado.
Caso2: Efetuar a leitura de 5 alunos para uma matriz alunos e suas 5 mdias
para uma matriz chamada medias. Apresente os alunos que tm nota manor que 7
dizendo que esto para exame. Se no foi encontrado nenhum aluno, apresente uma
mensagem que nenhum aluno ficou para exame.
Algoritmos de busca
(matria aplicada a estrutura de dados)
Ordenao
Imagine um programa com 5 elementos inteiros em uma matriz A dispostos como
mostrado a tabela abaixo :
MATRIZ A
INDICE
ELEMENTO
1
9
2
8
3
7
4
5
5
3
Ou seja :
A[1]=9
A[2]=8
A[3]=7
A[4]=5
A[5]=3
Para efetuar o processo de troca necessrio aplicar o mtodo de propriedade
distributiva, sendo assim, o elemento que estiver em A[1] dever ser comparado com os
elementos que estiverem em A[2], A[3], A[4] e A[5]. Depois, o elemento que estiver em
A[2] no necessita ser comparado com o elemento que estiver em A[1], pois j foram
anteriormente comparados, passando a ser comparado somente com os elementos que
estiverem em A[3], A[4] e a[5]. Na sequncia, o elemento que estiver em A[3]
comparado com os elementos que estiverem em A[4] e A[5] e por fim o elemento de a[4]
comparado com A[5]. A cada comparao se o primeiro elemento comparado for maior
que o segundo os valores devero ser trocados utilizando-se uma varivel de troca.
Exemplo :
25
Programa ordenacao;
Var
A : matriz[1..5] de inteiros;
I, J, troca : inteiro;
Inicio
Para i de 1 at 5 passo 1 faa
Leia A[i]
Fim_para
Para i de 1 at 5 passo 1 faa
Para j de i+1 at 5 passo 1 faa
Se A[j]<A[i] ento
Troca <- A[i]
A[i] <- A[j]
A[j] <- troca
Fim_se
Fim_para
Fim_para
Para i de 1 at 5 passo 1 faa
Escreva A[i]
Fim_para
Fim
26
7 - Registros
TYPE
27
CAD_ALUNO = RECORD
CODIGO : INTEGER;
NOME : STRING;
NOTAS : ARRAY[1..4] OF REAL;
END;
VAR
ALUNO : CAD_ALUNO;
Leitura : READLN(ALUNO.NOTAS[1]);
Escrita : WRITELN(ALUNO.NOTAS[2]);
Estrutura de um conjunto de registros
Consiste em estabelecer uma matriz de tipo registro. Exemplo:
TYPE
CAD_ALUNO = RECORD
CODIGO : INTEGER;
NOME : STRING;
NOTA1 : REAL;
NOTA2 : REAL;
NOTA3 : REAL;
NOTA4 : REAL;
END;
VAR
ALUNO : ARRAY[1..10] OF CAD_ALUNO;
Leitura : READLN(ALUNO[1].NOTA1);
Escrita : WRITELN(ALUNO[2].NOME);
Exerccios:
1 Elaborar um programa que faa a leitura de 10 produtos contendo descrio,
quantidade, quantidade mnima e valor. Aps a leitura dos dados apresentar uma ficha de
compra onde devero ser listados todos os produtos que esto abaixo da quantidade
mnima. No final da lista apresentar o total a ser gasto para repor estes produtos.
{conjunto de registro}
2 - Efetuar a leitura de 4 notas bimestrais para 8 alunos. Apresentar o boletim
escolar dos alunos.
3 Elaborar um programa que contenha em um menu do seguinte formato :
PROGRAMA AGENDA DE TELEFONES
1 CADASTRAR
2 PESQUISAR
3 ALTERAR
4 CLASSIFICAR
5 LISTAR
6 - SAIR
ESCOLHA UMA OPO : [ ]
Construa rotinas que desempenham cada uma das funes do menu acima. Os
dados da agenda devero ser : nome, telefone e celular
28
8 Utilizao de Subrotinas
Os procedimentos e funes so utilizados na diviso de um programa complexo,
permitindo assim possuir a modularizao de um determinado problema, considerado
grande e de difcil soluo. A modularizao do cdigo nos d vrias vantagem na
linguagem pascal :
Para tarefas que devem ser efetuadas mais do que uma vez num programa, a
modularidade evita a necessidade de programao redundante (repetida) de
essencialmente o mesmo conjunto de instrues. Dessa forma, cada mdulo
pode ser definido apenas uma vez e depois acedido de vrios pontos do
programa.
Um conjunto diferente de dados pode ser processado de cada vez que o
mdulo acessado.
Facilidade na interpretao do cdigo.
O uso de mdulos de programa pode, portanto, reduzir apreciavelmente o tamanho
de um programa.
Uma sub-rotina , na verdade, um programa, e sendo um programa poder efetuar
diversas operaes computacionais (entrada, processamento e sada). As sub-rotinas
so dutilizadas na diviso de algoritmos complexos, permitindo assim possuir a
modularizao de um determinado problema, sonsiderado grande e de difcil soluo.
Sub Rotinas do tipo procedimento
Sintaxe :
PROCEDIMENTO <nome do procedimento>
VAR
<variveis>
INICIO
<instrues>
FIM
29
Utilizao de Parmetros
Parmetros tm por finalidade servir como um ponto de comunicao bidirecional
entre as sub-rotinas e o programa principal.
Exemplo:
PROCEDIMENTO TROCA(A,B : INTEIRO);
VAR X : INTEIRO;
INICIO
X<-A;
A<-B;
B<-X;
FIM;
Exerccios :
1 Desenvolva um programa que solicite do usurio o seu salrio e o percentual
de acrescimo. Aps a leitura chame uma sub-rotina para calcular e apresentar o salrio
atualizado.
2 Desenolva um programa que solicite do usurio a base e a altura de um
tringulo retngulo e chame um procedimento para calcular e apresentar a rea do
triangulo.
3 Elaborar um programa que possua uma sub-rotina que apresente o total do
somatrio dos N primeiros nmeros inteiros. (1+2+3+4+...+N)
4 Elaborar um programa que utilize um procedimento para calcular a potncia de
um nmero, ou seja, chamando-se o procedimento POTENCIA(2,3) o procedimento deve
calcular e apresentar o resultado 8.
5 Construa uma procedure que receba como parmetro uma frase e um nmero
inteiro, esta procedure deve escrever a frase na tela repetidamente o nmero de vezes
que foi passado como parmetro.
Sub-rotinas do tipo funo
Uma funo um bloco de programa como os procedimentos, sua principal
diferena est no fato de a funo retornar um determinado valor. O valor de uma funo
retornado em seu nome.
Sintaxe :
FUNCAO <nome da funo>(<parametro1>,<parametro2> : <tipo>) : <tipo de retorno>;
VAR
<variveis>
INICIO
<instrues>
<nome da funo> := <valor de retorno>;
FIM
Exemplo : Desenolva um programa com uma funo que retorne o maior nmero
30
31
9 Arquivos
NOME C(30)
Ana Paula
Cristina
Renata
ENDEREO C(50)
Rua...
Av...
Rua...
MENS. Dec(8,2)
250,00
260,00
255,00
Pedro
Av...
270,00
1M 1024 K
1 G 1024 M
1 T 1024 G
CHAVE PRIMRIA (PK): uma chave que representa um valor diferente para cada
registro do arquivo, de tal forma que, dado um valor da chave primria, identificado um
nico registro do arquivo.
Exemplo de chave primria para o arquivo de alunos: R.A
Uma chave primria pode ser composta por mais de um campo.
CHAVE SECUNDRIA: difere de uma primria pela possibilidade de no possuir uma
valor diferente para cada registro. Assim, um valor de uma chave secundria identifica um
conjunto de registros. utilizada principalmente para buscas e ordenao.
CHAVE DE ESTRANGEIRA (FK): a chave usada para identificar o(s) registro(s)
desejado(s) em uma operao de acesso a um outro arquivo.
32
EXERCCIOS
Com base no arquivo de funcionrios abaixo, resolva as questes:
Filial
1
1
2
2
.
.
Matrcula
1024
1050
1029
1080
Nome
Vagner
Maria
Marcelo
Valria
Cargo
Porteiro
Zeladora
Digitador
Analista Sistemas
Data Adm
25/05/91
16/03/92
05/04/95
06/09/96
Salrio
350,00
200,00
600,00
1500,00
a)
b)
c)
d)
e)
33
Arquivos FILE
Um arquivo do tipo FILE, tambm conhecido por arquivo randmico, ou de acesso
aleatrio, o arquivo mais importante do Pascal, sendo desta forma tambm o mais
utilizado. Um arquivo randmico caracterizado pelo fato de ser possvel buscar uma
determinada informao em qualquer posio que a mesma se encontre, sem haver a
necessidade de se percorrer todo o arquivo at se alcanar a informao desejada.
Sintaxe :
<Nome da varivel> : FILE OF<tipo>
Observao: Um arquivo FILE deve ser apenas um tipo de dado, ou seja : INTEGER,
REAL, RECORD, STRING, BYTE, etc.
Exemplo: Crie um programa que defina uma varivel como sendo um arquivo FILE de
STRINGs, crie tambm neste mesmo programa um tipo Arquivo de INTEGERs.
PROGRAM Exemplo;
TYPE
Meu_tipo = FILE OF INTEGER;
VAR
Minha_Varivel = FILE OF STRING;
BEGIN
END.
Estrutura Interna do Arquivo:
Quando um arquivo FILE criado, o mesmo possui a seguinte estrutura:
Posio Fsica
0
1
2
Informao
34
Rotina
: ASSIGN()
Funo
: Serve para associar um determinado Nome de arquivo, no disco ou
disquete com o arquivo definido pelo programador.
Sintaxe
: ASSIGN(Meu_Arquivo, STRING_Com_Nome_Arquivo_DOS).
Exemplo:
PROGRAM TESTE
TYPE
Registro = RECORD
Nome : STRING;
Idade : BYTE;
END;
VAR
Arquivo : FILE OF Registro;
BEGIN
ASSIGN (Arquivo, dados.dat);
END.
Rotina
: REWRITE()
Funo
: Cria e abre para E\S um arquivo. Caso o arquivo no exista, o mesmo ser
criado. Caso o arquivo j exista, todos os dados existentes nele sero apagados.
Sintaxe
: REWRITE(Meu_Arquivo);
Exemplo:
PROGRAM Teste;
TYPE
Registro = RECORD
Nome : STRING;
Idade : BYTE;
END;
VAR
Arquivo : FILE OF Registro;
BEGIN
ASSIGN (Arquivo, Dados.Dat);
REWRITE (Arquivo);
END.
35
Rotina
: RESET()
Funo
: Abre para E/S um arquivo que j exista. Caso o arquivo no exista ocorrer
um erro de execuo e o programa ser abortado.
Sintaxe
: RESET(Meu_Arquivo)
Exemplo:
PROGRAM Teste;
TYPE
Registro = RECORD
Nome : STRING;
Idade : BYTE;
END;
VAR
Arquivo : FILE OF Registro;
BEGIN
ASSIGN (Arquivo, Dados.Dat);
RESET (Arquivo);
END.
Rotina
Funo
Sintaxe
Exemplo:
: CLOSE()
: Fecha um arquivo que tenha sido aberto com RESET\REWRITE.
: CLOSE(Meu_Arquivo)
PROGRAM Teste;
TYPE
Registro = RECORD
Nome : STRING;
Idade : BYTE;
END;
VAR
Arquivo : FILE OF Registro;
BEGIN
ASSIGN (Arquivo, Dados.Dat);
REWRITE (Arquivo);
CLOSE (Arquivo);
END.
36
Rotina
: WRITE()
Funo
: A Rotina WRITE tem a mesma Funo de sada de informaes como at
agora j tnhamos trabalhado, somente que ao invs da informao ser apresentada no
vdeo, a mesma ser armazenada em um arquivo.
Sintaxe
: WRITE (Meu_Arquivo, Registro)
Exemplo:
PROGRAM Teste;
TYPE
Registro = RECORD
Nome : STRING;
Idade : BYTE;
END;
VAR
Arquivo : FILE OF Registro;
Reg : Registro;
BEGIN
ASSIGN (Arquivo, Dados.Dat);
REWRITE (Arquivo);
WRITE (Digite o Nome: );
READ (Reg.Nome);
WRITE (Digite a Idade: );
READ (Reg.Idade);
WRITE (Arquivo, Reg);
CLOSE (Arquivo);
END.
Rotina
: READ()
Funo
: A Rotina READ tem a mesma Funo de entrada de informaes como at
agora j tnhamos trabalhado, somente que ao invs da leitura ser feita pelo teclado, a
mesma ser feita de um arquivo.
Sintaxe
: READ (Meu_Arquivo, Registro)
Exemplo:
PROGRAM Teste;
TYPE
Registro = RECORD
Nome : STRING;
Idade : BYTE;
END;
VAR
Arquivo : FILE OF Registro;
Reg : Registro;
BEGIN
ASSIGN (Arquivo, Dados.Dat);
RESET (Arquivo);
READ (Arquivo,Reg);
WRITE (Nome = , Reg.Nome);
WRITE (Idade = , Reg.Idade);
CLOSE (Arquivo);
END.
37
: FILEPOS()
: Retorna um nmero inteiro indicando qual o registro corrente em um
: Registro_Corrente : = FILEPOS (Meu_Arquivo)
PROGRAM Teste;
TYPE
Registro = RECORD
Nome : STRING;
Idade : BYTE;
END;
VAR
Arquivo : FILE OF Registro;
Corrente: INTEGER;
BEGIN
ASSIGN (Arquivo, Dados.Dat);
RESET (Arquivo);
corrente : = FILEPOS(Arquivo);
WRITE (corrente);
CLOSE (Arquivo);
END.
Rotina
Funo
Sintaxe
Exemplo:
: FILESIZE()
: Retorna quantos registro existem armazenados no arquivo.
: Tamanho_Arquivo : = FILESIZE (Meu_Arquivo)
PROGRAM Teste;
TYPE
Registro = RECORD
Nome : STRING;
Idade : BYTE;
END;
VAR
Arquivo : FILE OF Registro;
Total : INTEGER;
BEGIN
ASSIGN (Arquivo, Dados.Dat);
RESET (Arquivo);
Total : = FILESIZE (Arquivo);
WRITE (Total);
CLOSE (Arquivo);
END.
38
Rotina
: SEEK ()
Funo
: Posiciona o ponteiro do arquivo em um registro determinado, para que o
mesmo possa ser processado.
Sintaxe
: SEEK(Meu_Arquivo, Endereo_Registro)
Exemplo:
PROGRAM Teste;
TYPE
Registro = RECORD
Nome : STRING;
Idade : BYTE;
END;
VAR
Arquivo : FILE OF Registro;
Reg : Registro;
BEGIN
ASSIGN (Arquivo, Dados.Dat);
RESET (Arquivo);
SEEK (Arquivo, 10);
READ (Arquivo, Reg);
WRITE (Nome = , Reg.Nome);
WRITE (Idade = , Reg.Idade);
CLOSE (Arquivo);
END.
Rotina
Funo
Sintaxe
Exemplo:
: EOF()
: Retorna TRUE caso se alcance o final do arquivo, FALSE caso contrrio.
: Chegou_Final : = EOF (Meu_Arquivo)
PROGRAM Teste;
TYPE
Registro = RECORD
Nome : STRING;
Idade : BYTE;
END;
VAR
Arquivo : FILE OF Registro;
Reg : Registro;
BEGIN
ASSIGN (Arquivo, Dados.Dat);
RESET (Arquivo);
WHILE NOT EOF(Arquivo) DO
BEGIN
READ (Arquivo, Reg);
WRITE (Nome = , Reg.Nome);
WRITE (Idade = , Reg.Idade);
END;
CLOSE (Arquivo);
END.
39
Rotina
: ERASE ()
Funo
: Elimina o arquivo do disco. importante notar que o arquivo a ser
eliminado no pode estar aberto.
Sintaxe
: ERASE (Meu_Arquivo)
Exemplo:
PROGRAM Teste;
TYPE
Registro = RECORD
Nome
: STRING;
Idade : BYTE;
END;
VAR
Arquivo : FILE OF Registro;
BEGIN
ASSIGN (Arquivo, Dados.Dat);
ERASE(Arquivo);
END.
Exerccios:
a) Faa um programa de incluso de dados em um arquivo chamado pessoas.dat. Os
registros deste arquivo devero ser formados de cdigo, nome e telefone de uma
pessoa.
b) Faa outro programa que abra o arquivo criado no exerccio anterior e liste todos
os dados no vdeo.
c) Elabore um programa para incluir produtos em um arquivo qualquer. A incluso
dever ser efetuada enquanto o usurio desejar. O produto composto de cdigo,
descrio, quantidade e valor. Quando o usurio no desejar incluir mais produtos,
chame uma procedure para listar os dados inclusos e o total em Reais do estoque.
d) Incluir um mdulo de consulta no arquivo de produtos do exerccio anterior.
e) Faa um programa com as seguintes rotinas:
1 Incluso de funcionarios: Devero ser includos clientes no arquivo func.dat
enquanto o usurio desejar. Os dados dos funcionrios so : cdigo, nome, salrio,
nfilhos.
2 - Processamento Folha de pagamento: Para cada funcionrio dever ser
criada uma folha de pagamento contendo: cdigo, codfun, salrio. O salrio da
folha dever ser igual ao salrio de seu cadastro mais 1% para cada filho que tiver.
3 Listagem de folha de pagamento: Dever ser uma listagem com o seguinte
lay-out :
Cod. Folha
Cod. Func.
Nome Func.
NFilhos
Salrio
...
...
Total da Folha:
f) Crie um arquivo de peas, com o seguinte Lay-Out: Nome de Pea, cor ,
quantidade, tamanho e deletado. O campo Deletado ser um campo Boolean, setado
inicialmente para FALSE , informando se o registro est ou no deletado do arquivo.
g) Faa a uma Rotina para deletar um, ou mais, registros do arquivo de peas. A
deleo consiste em setar o campo deletado do arquivo para TRUE.
40
41