Você está na página 1de 116

DESENVOLVIMENTO DE SISTEMAS

UTILIZANDO DELPHI E FIREBIRD

Professor Francisco das Chagas de Mariz Fernandes


Diretor Geral do Centro Federal de Educao Tecnolgica
do Rio Grande do Norte
Professor Enilson de Arajo Pereira
Diretor da Unidade Sede
Professor Dante Henrique Moura
Diretor de Ensino
Professor Jucelino Cardoso de Medeiros
Diretor de Administrao e Planejamento
Professor Liznando Fernandes da Costa
Diretor de Relaes Empresarias e Comunitrias
Professora Anna Catharina da Costa Dantas
Gerente Educacional da Tecnologia da Informao
Professora Anna Catharina da Costa Dantas
Coordenador do Curso de Tecnologia da Informtica
Professor Gilbert Azevedo da Silva
Orientador do Estgio
Professor Raimundo Nonato Camelo Parente
Coordenador de Estgio Supervisionado
Estgio realizado na Accessus Consultores e Associados sob a superviso do
Analista de Sistemas Zalkind Lincoln.

Diviso de Servios Tcnicos


Catalogao da Publicao na Fonte. CEFET-RN

SOUZA FILHO, Silvio Oliveira de.


Desenvolvimento de sistemas utilizando Delphi e Firebird. Natal,
2005.

102 p.

1.Banco de dados. 2. Desenvolvimento de Software. 3. Delphi.


I.Autor. II.Ttulo.

S729d

CENTRO FEDERAL DE EDUCAO TECNOLGICA


DO RIO GRANDE DO NORTE
DIRETORIA DE ENSINO
GERNCIA DE TECNOLOGIA DA INFORMAO E
EDUCACIONAL DE TELEMTICA
CURSO SUPERIOR DE TECNOLOGIA EM INFORMTICA

DESENVOLVIMENTO DE SISTEMAS
UTILIZANDO DELPHI E FIREBIRD

Silvio Oliveira de Souza Filho


Trabalho apresentado em cumprimento
s exigncias legais da disciplina
Estgio
Supervisionado,
sob
a
orientao do Professor MSc. Gilbert
Azevedo da Silva, co-orientao e
superviso do Professor Raimundo
Nonato Camelo Parente para obteno
do ttulo de Tecnlogo em Informtica.

Natal RN
Junho de 2005
ii

CENTRO FEDERAL DE EDUCAO TECNOLGICA


DO RIO GRANDE DO NORTE
DIRETORIA DE ENSINO
GERNCIA DE TECNOLOGIA DA INFORMAO E
EDUCACIONAL DE TELEMTICA
CURSO SUPERIOR DE TECNOLOGIA EM INFORMTICA

DESENVOLVIMENTO DE SISTEMAS
UTILIZANDO DELPHI E FIREBIRD

Silvio Oliveira de Souza Filho


Trabalho apresentado em cumprimento
s exigncias legais da disciplina
Estgio
Supervisionado,
sob
a
orientao do Professor MSc. Gilbert
Azevedo da Silva, co-orientao e
superviso do Professor Raimundo
Nonato Camelo Parente para obteno
do ttulo de Tecnlogo em Informtica.

Perodo de realizao do estgio: __________________ Carga Horria: _______


Data da apresentao para apreciao: ______________
Resultado: ________________________________________________________
Comisso de Avaliao do Relatrio

_________________________________________________________________
Prof. MSc. Gilbert Azevedo da Silva
Orientador

_________________________________________________________________
Professor MSc. Raimundo Nonato Camelo Parente
Avaliador 1

_________________________________________________________________
Professor MSc. Eduardo Janser Azevedo Dantas
Avaliador 2

Natal RN,

iii

de

de 2005.

CENTRO FEDERAL DE EDUCAO TECNOLGICA DO RIO GRANDE DO NORTE


DIRETORIA DE RELAES EMPRESARIAIS Coordenao de Integrao Escola Empresa
Endereo: Av Senador Salgado Filho, 1559 Tirol CEP: 59015- 000
Fones (0xx84) 4005-2627 FAX (0xx84) 4004-2697

FICHA DE AVALIAO DO ESTAGIRIO

ESTAGIRIO: ___________________________________________________________
CURSO: ______________________________________REA:____________________
01.

O Plano de estgio proposto foi executado em:


20% ( )

40% ( )

60% ( )

80% ( )

100% ( )

Se inferior a 60% justifique:


_______________________________________________________________________________
_______________________________________________________________________________
02.

A empresa ou instituio ficou satisfeita com os resultados do projeto de estgio

executado?
Sim ( )

No ( )

Em parte ( )

Em caso negativo ou Em parte, justifique:


_______________________________________________________________________________
_______________________________________________________________________________
03.

O Estagirio apresentou dificuldades quanto adaptao inicial ao trabalho e ao

desenvolvimento das atividades tcnicas? Em caso positivo, enumera-las.


_______________________________________________________________________________
_______________________________________________________________________________
04.

O estagirio preenche os requisitos tcnicos que a profisso exige?


Sim ( )

05.

Como voc classifica o nvel tcnico-prtico do nosso aluno:


Ruim ( )

06.

No ( )

Regular ( )

Bom ( )

Excelente (

Que sugestes a empresa ou instituio daria ao CEFET para melhorar o nvel de

conhecimento tcnico do aluno?


_______________________________________________________________________________
_______________________________________________________________________________

Natal, ______/______/2005

CARIMBO DA EMPRESA/INSTITUIO

Assinatura do chefe imediato

iv

Gostaria de agradecer primeiramente


a Deus, pela oportunidade que me foi dada no
s de ingressar neste curso, mas tambm de
poder conclu-lo; minha famlia, pelo incentivo,
compreenso, pacincia, dedicao, educao
e, sobretudo, amor incondicional; minha
namorada,
pelo
constante
incentivo,
companheirismo e amor durante o curso; aos
professores do Curso de Tecnologia em
Informtica, pelos conhecimentos e lies de
vida transmitidos; aos colegas de turma, pelo
agradvel convvio e ajuda mtua; e a todos,
que direta ou indiretamente contriburam para o
desenvolvimento deste trabalho.

SUMRIO

LISTA DE FIGURAS _____________________________________________________________ ix


LISTA DE TABEL AS _____________________________________________________________x
LISTA DE EXEMPLOS___________________________________________________________ xi
RESUMO _____________________________________________________________________ xii
ABSTRACT ___________________________________________________________________ xiii
INTRODUO___________________________________________________________________1
1.

2.

CARACTERIZAO DA INSTITUIO ________________________________________2


1.1.

A Empresa ______________________________________________________________2

1.2.

Histrico________________________________________________________________2

1.3.

Vetor de Negcios _______________________________________________________2

1.4.

Estrutura Funcional e Local do Desenvolvimento do Estgio _________________3


FUNDAMENTAO TERICA _______________________________________________4

2.1. Banco de Dados_________________________________________________________4


2.1.1.
Introduo __________________________________________________________4
2.1.2.
Conceito ____________________________________________________________4
2.1.3.
Sistema de Gerenciamento de Bancos de Dados (SGBD) _________________4
2.1.4.
Caractersticas Gerais de um SGBD ____________________________________7
2.2. Uma Introduo SQL __________________________________________________10
2.2.1.
A Instruo SELECT ________________________________________________10
2.2.1.1.
Calculando Valores _____________________________________________13
2.2.1.2.
Definindo Grupos _______________________________________________13
2.2.2.
A Instruo INSERT _________________________________________________14
2.2.3.
A Instruo DELETE ________________________________________________14
2.2.4.
A Instruo UPDATE ________________________________________________14
2.3. Banco de Dados Firebird ________________________________________________14
2.3.1.
Histrico ___________________________________________________________15
2.3.2.
Edies do Firebird _________________________________________________17
2.3.3.
Administrando o Firebird ____________________________________________18
2.3.4.
Caractersticas _____________________________________________________19
2.3.5.
Comparao _______________________________________________________24
2.4. Modelos de Dados ______________________________________________________25
2.4.1.
O Modelo Entidade-Relacionamento __________________________________25
2.4.2.
O Modelo Relacional ________________________________________________30
2.5. Algoritmo ______________________________________________________________32
2.5.1.
Conceito de Algoritmo_______________________________________________32
2.5.2.
Formas de Representao de Algoritmos______________________________33
2.5.3.
Descrio Narrativa _________________________________________________34
2.5.4.
Fluxograma Convencional ___________________________________________35
2.5.5.
Diagrama de Chapin_________________________________________________36
2.5.6.
Pseudocdigo ______________________________________________________37
2.5.7.
Fases de um Algoritmo ______________________________________________39
2.5.8.
Variveis___________________________________________________________40
2.5.8.1.
Formao de Variveis __________________________________________40
2.5.8.2.
Tipos de Dados _________________________________________________40

vi

2.5.8.3.
Definio de Variveis___________________________________________41
2.5.9.
Comando de Atribuio______________________________________________42
2.5.10.
Operadores Matemticos __________________________________________43
2.5.11.
Operadores Lgicos_______________________________________________43
2.5.12.
Comandos de Entrada e Sada______________________________________44
2.5.13.
Estruturas de Repetio ___________________________________________45
2.5.13.1. Comando While_________________________________________________45
2.5.13.2. Comando FOR __________________________________________________46
2.5.13.3. Comando REPEAT / UNTIL _______________________________________47
2.5.14.
Estruturas de Seleo _____________________________________________48
2.5.15.
Sub-rotinas_______________________________________________________49
2.5.16.
Variveis Globais e Locais _________________________________________50
2.5.17.
Passagem de Parmetros __________________________________________50
2.5.18.
Funo __________________________________________________________51
2.6. Delphi _________________________________________________________________53
2.6.1.
Introduo _________________________________________________________53
2.6.2.
Conceitos Bsicos do Ambiente Delphi________________________________54
2.6.3.
Ambientes de Desenvolvimento ______________________________________54
2.6.4.
Caractersticas do Delphi ____________________________________________55
2.6.5.
Escrevendo Aplicaes______________________________________________56
2.6.5.1.
Estrutura do Cdigo _____________________________________________56
2.6.5.2.
Arquivos de uma Aplicao ______________________________________58
2.6.5.3.
Arquivos Gerados pela Compilao_______________________________59
2.6.5.4.
Exemplo de Aplicao___________________________________________59
2.6.5.5.
O Arquivo de Projeto (*.DPR) _____________________________________60
2.6.5.6.
As Unidades (*.PAS)_____________________________________________61
2.6.5.7.
Eventos________________________________________________________63
2.6.6.
Elementos Visuais __________________________________________________65
2.6.6.1.
Form __________________________________________________________65
2.6.6.2.
Component Palette (Palheta de Componentes) _____________________66
2.6.6.3.
Object Inspector (Inspetor de Objetos) ____________________________67
2.6.6.4.
Code Editor (Editor de Cdigo) ___________________________________68
2.6.6.5.
SpeedBar ______________________________________________________70
2.6.6.6.
Help On-Line ___________________________________________________71
2.6.7.
Suporte a Programao Orientada a Objeto ____________________________72
2.6.7.1.
Propriedades ___________________________________________________73
2.6.7.2.
Eventos________________________________________________________74
2.7. Delphi Acessando Banco de Dados_______________________________________74
2.7.1.
Introduo _________________________________________________________74
2.7.2.
Relacionamento entre o Delphi e a Conectividade de Banco de Dados ____75
2.7.3.
Ferramentas de Bancos de Dados ____________________________________76
2.7.4.
Borland Database Engine (BDE) ______________________________________76
2.7.5.
Relacionamento entre o BDE e Outros Produtos Borland ________________77
2.7.6.
Database Desktop __________________________________________________77
2.7.7.
Descrio do Componente DataSource ________________________________78
2.7.8.
Descrio dos Componentes da Guia BDE _____________________________79
2.7.9.
Descrio dos Componentes Data Control _____________________________80
2.7.10.
Usando DataSets _________________________________________________82
2.7.10.1. Abrindo e Fechando DataSets ____________________________________82
2.7.10.2. Navegando no Dataset __________________________________________83
2.7.10.3. Modificando Dados no Dataset ___________________________________83
2.7.10.4. Lendo Valores do Campo ________________________________________84
2.8. Conexo do Delphi com Interbase/Firebird_________________________________84
2.8.1.
Montando uma Conexo_____________________________________________85
2.8.2.
Acessando Dados __________________________________________________87
2.8.2.1.
Utilizando o IBDataSet___________________________________________88
2.8.2.2.
Utilizando o IBSQL ______________________________________________90

vii

3.

METODOLOGIA __________________________________________________________92

4.

RESULTADOS____________________________________________________________93

5.

CONCLUSO ____________________________________________________________98

6.

RECOMENDAES E SUGESTES _________________________________________99

BIBLIOGRAFIA________________________________________________________________100
ANEXO A_____________________________________________________________________101

viii

LISTA DE FIGURAS

Figura 1: entidades dominante e subordinada .............................................................27


Figura 2: relacionamento .................................................................................................27
Figura 3: cardinalidade.....................................................................................................28
Figura 4: auto-relacionamento ........................................................................................29
Figura 5: agregao..........................................................................................................29
Figura 6: generalizao....................................................................................................30
Figura 7: especializao ..................................................................................................30
Figura 8: principais formas geomtricas usadas em fluxogramas............................35
Figura 9: algoritmo escrito em fluxograma....................................................................36
Figura 10: diagrama de Chapin......................................................................................37
Figura 11: Form em branco .............................................................................................66
Figura 12: Compone nt Palette ........................................................................................67
Figura 13: Object Inspector .............................................................................................68
Figura 14: Code Editor .....................................................................................................70
Figura 15: SpeedBar ........................................................................................................70
Figura 16: help ...................................................................................................................72
Figura 17: acesso a banco de dados.............................................................................75
Figura 18: conectividade do BDE...................................................................................76
Figura 19: Database Desktop .........................................................................................78
Figura 20: esquema de ligao entre Dataset, DataSource e Data Controls .........79
Figura 21: conexo entre Data Control, Data Source, DataSets, BDE e Banco de
Dados..................................................................................................................................82
Figura 22: componentes InterBase ................................................................................85
Figura 23: propriedades do banco de dados................................................................86
Figura 24: propriedades das transaes.......................................................................87
Figura 25: editor de SQL SELECT.................................................................................88
Figura 26: gerador de SQLs............................................................................................90
Figura 27: ferramenta de ponto ......................................................................................94
Figura 28: fbrica de relatrios .......................................................................................95
Figura 29: ferramenta de pesquisa ................................................................................96
Figura 30: exportao e importao de informaes..................................................97
Figura 31: gerenciador de backup e manuteno do banco de dados ....................97

ix

LISTA DE TABELAS

Tabela 1: operadores para a clusula WHERE ...........................................................11


Tabela 2: comparao entre bancos de dados gratuitos. ..........................................24
Tabela 3: preos de alguns SGBDs...............................................................................25
Tabela 4: tabela no modelo relacional...........................................................................31
Tabela 5: tipos de dados..................................................................................................41
Tabela 6: operadores matemticos................................................................................43
Tabela 7: operadores lgicos..........................................................................................43
Tabela 8: resultados usando AND .................................................................................43
Tabela 9: resultados usando OR ....................................................................................44
Tabela 10: resultados usando NOT ...............................................................................44
Tabela 11: arquivos de uma aplicao..........................................................................58
Tabela 12: arquivos gerados na compilao................................................................59
Tabela 13: exemplo de arquivos de uma aplicao ....................................................59
Tabela 14: botes do SpeedBar.....................................................................................71
Tabela 15: componentes BDE........................................................................................79
Tabela 16: componentes Data Controls ........................................................................81
Tabela 17: propriedades e mtodos de navegao ....................................................83
Tabela 18: mtodos para modificar um dataset...........................................................84
Tabela 19: componentes InterBase ...............................................................................88

LISTA DE EXEMPLOS

Exemplo 1: SELECT e WHERE .....................................................................................11


Exemplo 2: clusula WHERE com AND .......................................................................11
Exemplo 3: DISTINCT......................................................................................................12
Exemplo 4: ORDER BY...................................................................................................12
Exemplo 5: SELECT de vrias tabelas .........................................................................13
Exemplo 6: clculo ............................................................................................................13
Exemplo 7: GROUP BY...................................................................................................14
Exemplo 8: INSERT..........................................................................................................14
Exemplo 9: DELETE.........................................................................................................14
Exemplo 10: UPDATE ......................................................................................................14
Exemplo 11: algoritmo usando descrio narrativa ....................................................34
Exemplo 12: elementos do pseudocdigo....................................................................38
Exemplo 13: pseudocdigo .............................................................................................39
Exemplo 14: definies de variveis..............................................................................41
Exemplo 15: atribuio.....................................................................................................42
Exemplo 16: READ e WRITE ..........................................................................................44
Exemplo 17: estrutura do WHILE ...................................................................................45
Exemplo 18: WHILE .........................................................................................................46
Exemplo 19: estrutura do FOR .......................................................................................46
Exemplo 20: FOR..............................................................................................................47
Exemplo 21: estrutura do REPEAT................................................................................47
Exemplo 22: REPEAT......................................................................................................48
Exemplo 23: estrutura IF ..................................................................................................48
Exemplo 24: IF ..................................................................................................................49
Exemplo 25: estrutura de uma PROCEDURE .............................................................50
Exemplo 26: passagem de parmetro...........................................................................51
Exemplo 27: estrutura de uma FUNCTION..................................................................52
Exemplo 28: valor a ser retornado pela FUNCTION...................................................52
Exemplo 29: projeto ..........................................................................................................61
Exemplo 30: estrutura de uma Unit................................................................................63
Exemplo 31: evento ..........................................................................................................65
Exemplo 32: formas de ler dados...................................................................................84
Exemplo 33: controle de transao e IBSQL ...............................................................91

xi

RESUMO

Este Relatrio descreve a participao do estagirio Silvio Oliveira de Souza Filho


no processo de desenvolvimento e manuteno dos sistemas criados pela
Accessus Consultores e Associados na figura do analista de sistemas Zalkind
Lincoln. O objetivo do estgio foi de fazer melhorias nos sistemas Patho Control,
sistema de elaborao e emisso de laudos e gerenciamento de laboratrios de
Anatomia Patolgica, e Cyto Control, sistema de elaborao e emisso de laudos
e gerenciamento de laboratrios de Citopatologia. Apesar desses sistemas j
estarem em fase de manuteno, havia a necessidade de aumentar a velocidade
de implementaes e de realizar mudanas exigidas por muitos usurios
espalhados por todo o Brasil. Foi utilizado durante o estgio o ambiente de
desenvolvimento integrado Delphi 5, banco de dados MS Access 2000, sendo
este acessado atravs do Borland Database Engine BDE. Durante o estgio foi
exigido basicamente conhecimentos de banco de dados e linguagem de
programao. A modelagem do banco de dados importante para um bom
funcionamento da aplicao, pois garante velocidade e recuperao adequada
das informaes inseridas no banco de dados, alm de facilitar o trabalho de
programao. A linguagem de programao Pascal, que utilizada pelo Delphi
para a criao dos aplicativos, simples, mas capaz de oferecer todos os
recursos necessrios para a construo de aplicaes, o que, juntamente com o
ambiente visual fornecido pelo Delphi, torna o processo de criao simples, rpido
e prtico. Entre as modificaes realizadas, damos destaque a migrao do
cdigo fonte para o Delphi 6, eliminao do acesso atravs do BDE e alterao do
banco de dados para o Firebird, que, alm de proporcionar um acesso mais
rpido, uma maior segurana e estabilidade, um banco de dados totalmente
gratuito. Para atingir os objetivos almejados no estgio, foram utilizadas como
fonte de pesquisa as anotaes de aula de diversas disciplinas, livros sobre
Delphi, manuais de componentes utilizados no desenvolvimento e,
evidentemente, a Internet.
Palavras-chave:
Banco de dados
Desenvolvimento de software
Delphi

xii

ABSTRACT

This Report describes the participation of the trainee Silvio Oliveira de Souza Filho
in the development and maintenance of the systems created by the Accessus
Consultores e Associados in the figure of the Analyst of Systems Zalkind Lincoln.
The objective of the period of training was to make improvements in the Patho
Control, system of elaboration and emission of findings and management of
laboratories of Pathological Anatomy, and in the Cyto Control, system of
elaboration and emission of findings and management of laboratories of
Citopatologia. Despite these systems already being in maintenance phase, they
had the necessity to increase the speed of implementations and to make changes
demanded for many users. It was used during the period of training the integrated
development environment Delphi 5, database MS Access 2000, being this had
access through the Borland Database Engine - BDE. During the period of training
it was basically demanded knowledge of database and programming language.
The modeling of the database is important for a good functioning of the
application, it will go to guarantee speed and the adequate recovery of the inserted
information in the data base, besides facilitating the programming work. The
Pascal programming language that is used by the Delphi for the creation of the
applications is simple, but it offers all the necessary resources for the construction
of applications, what together with the visual environment supplied by the Delphi it
becomes the process of creation simple, fast and practical. One of modifications
that we give to prominence was the migration of the code source for Delphi 6,
elimination of the access through the BDE and alteration of the database for the
Firebird, that besides providing a faster access, offer a greater security and
stability, is total free. To reach these objectives, were used as research source
the notations of lesson of diverse disciplines, books about Delphi, manuals of
components used in the development and the Internet.
Keywords:
Database
Software development
Delphi

xiii

INTRODUO

A finalidade do presente relatrio descrever a seqncia de


atividades executadas durante o estgio em uma empresa de desenvolvimento de
sistemas.
Neste relatrio tem-se uma breve caracterizao da Instituio onde se
desenvolveu o estgio. Logo em seguida, so apresentadas: a Fundamentao
Terica necessria para embasar os conhecimentos utilizados; a metodologia
utilizada no decorrer do desenvolvimento do mesmo; e, finalmente, a concluso
com uma sntese das experincias adquiridas com o estgio supervisionado.
Os sistemas que foram objeto do presente relatrio so o Patho
Control, sistema de elaborao e emisso de laudos e gerenciamento de
laboratrios de Anatomia Patolgica, e Cyto Control, sistema de elaborao e
emisso de laudos e gerenciamento de laboratrios de citopatologia. Apesar
desses sistemas j estarem em fase de manuteno, havia a necessidade de
aumentar a velocidade de implementaes e de realizar mudanas exigidas por
muitos usurios.

1. CARACTERIZAO DA INSTITUIO
1.1.

A Empresa
A Accessus Consultores e Associados tem como objetivo produzir e

desenvolver software de qualidade para ajudar seus clientes a atingir, da melhor


maneira possvel, suas metas. Sua razo social Fagundes & Fagundes Ltda e
seus proprietrios so Zalkind Lincoln, Alair Fagundes e Salustiano Fagundes.

1.2.

Histrico
Aps a concluso do curso de Cincia da Computao na Universidade

Federal

do

Rio

Grande

do

Norte

(UFRN), Zalkind

Lincoln

iniciou

desenvolvimento de sistemas personalizados e, em 1994, deu-se a criao da


IPSO Consultoria Ltda. Com o amadurecimento do negcio, Zalkind reuniu-se
com Alair e Salustiano para ento criar a Accessus Consultores e Associados no
ano de 2000.

1.3.

Vetor de Negcios
A

Accessus

Consultores

Associados

se

especializou

no

desenvolvimento de sistemas personalizados visando adequao da estrutura e


objetivos de cada cliente. Pensando nisso, no se restringiu a uma plataforma ou
ferramenta especfica.
Abaixo segue uma breve descrio de alguns dos softwares j
desenvolvidos pela empresa:

Patho Control: software para auxiliar a elaborao de laudos antomo e cito


patolgicos;

Cyto Control: software para elaborao de laudos colposcpicos e de citologia


ginecolgica;

Politics: software para automao de campanha e gabinete poltico;

SCRE: software para automatizar empresas de recarga de extintores;

PHISYS: software para avaliao fsica em academias de ginstica;

Legis: software de cadastro e pesquisas legislativas;

IPSORI: software para automatizao do trabalho em cartrios de registro de


imveis;

Conteven: software para controle de eventos.

1.4.

Estrutura Funcional e Local do Desenvolvimento do


Estgio
O quadro de funcionrios da Accessus se resume a secretria

administrativa e a recepcionista. Houve sempre uma preferncia por estabelecer


parcerias no desenvolvimento dos projetos, evitando a contratao de
funcionrios.
Tendo o anseio de aumentar a velocidade na implementao de
mudanas

em

seus

softwares,

Zalkind,

responsvel

pelo

setor

de

desenvolvimento de software da empresa, sentiu a necessidade de contratao


de estagirios.

2. FUNDAMENTAO TERICA
2.1.

Banco de Dados

2.1.1. Introduo
A tecnologia aplicada aos mtodos de armazenamento de
informaes vem crescendo e gerando um impacto cada vez maior no uso de
computadores em qualquer rea em que os mesmos podem ser aplicados.
Um "banco de dados" pode ser definido como um conjunto de
"dados" devidamente relacionados. Por "dados" podemos compreender como
"fatos conhecidos" que podem ser armazenados e que possuem um significado
implcito. Porm, o significado do termo "banco de dados" mais restrito que
simplesmente a definio dada acima.

2.1.2. Conceito
Banco de Dados uma coleo de dados inter-relacionados,
representando informaes sobre um domnio especfico. Pode ser definido
tambm como uma coleo de dados organizados de tal forma que possam ser
acessados e utilizados por muitas aplicaes diferentes. Como exemplo de banco
de dados temos: uma lista telefnica, o controle do acervo de uma biblioteca e o
sistema de controle dos recursos humanos de uma empresa.

2.1.3. Sistema de Gerenciamento de Bancos de Dados (SGBD)


O SGBD um software com recursos especficos para facilitar a
manipulao das informaes dos bancos de dados e o desenvolvimento de

programas aplicativos. Exemplos de SGBDs so o Oracle, MS SQL Server,


Interbase/Firebird, Postgresql, MySQL , etc.
Para manipulao de um SGBD, algumas regras bsicas e claras
devem ser consideradas. Se ao menos uma das caractersticas abaixo no estiver
presente, o software em questo poder ser um gerenciador de arquivo, mas no
um SGBD.

Auto-Conteno: um SGBD no contm apenas os dados em si,

mas armazena completamente toda a descrio dos dados, seus relacionamentos


e formas de acesso. Normalmente esta regra chamada de Meta-Base de
Dados.

Independncia dos Dados: a capacidade de modificar uma

definio de esquema do banco de dados em um nvel de abstrao sem afetar a


definio de esquema em um nvel mais alto. Por exemplo, um sistema que tem
independncia de dados fsica permite que se altere o esquema fsico (rotinas de
armazenamento e acesso aos dados) sem se ter que mexer nos programas de
aplicao. Quando as aplicaes estiverem realmente imunes a mudanas na
estrutura de armazenamento ou na estratgia de acesso aos dados, pode-se
dizer que esta regra foi atingida. Portanto, nenhuma definio dos dados dever
estar contida nos programas da aplicao.

Abstrao dos Dados: em um SGBD real fornecida ao usurio

somente uma representao conceitual dos dados, o que no inclui maiores


detalhes sobre sua forma de armazenamento real. O chamado Modelo de Dados
um tipo de abstrao utilizada para fornecer esta representao conceitual.
Neste modelo, um esquema das tabelas, seus relacionamentos e suas chaves de
acesso so exibidos ao usurio, porm, nada afirmado sobre a criao dos
5

ndices, ou como sero mantidos, ou qual a relao existente entre as tabelas que
dever ser mantida ntegra. Os principais nveis de abstrao existentes so: a)
Nvel fsico - o nvel mais baixo de abstrao. Nele descrito o modo como os
dados

so

realmente

armazenados.

Engloba

complexas

estruturas

de

armazenamento de informao de baixo nvel. O nvel fsico depende fortemente


do SGBD escolhido; b) Nvel lgico - descreve quais os dados sero
armazenados e os relacionamentos entre eles. No existe a preocupao de
como os dados sero armazenados (nvel fsico). O nvel lgico no depende do
SGBD a ser escolhido, mas sim da classe do SGBD; c) Nvel conceitual descreve quais dados esto armazenados e seus relacionamentos. Neste nvel, o
banco de dados descrito atravs de estruturas relativamente simples, que
podem envolver estruturas complexas no nvel fsico.

Vises: um SGBD deve permitir que cada usurio visualize os


dados de forma diferente daquela existente previamente no
Banco de Dados. Uma viso consiste de um subconjunto de
dados do Banco de Dados, necessariamente derivados dos
existentes no Banco de Dados, porm estes no devero
estar explicitamente armazenados.

Transaes: um SGBD deve gerenciar completamente a


integridade referencial definida em seu esquema sem
precisar, em tempo algum, do auxlio do programa aplicativo.
Desta forma, exige-se que o banco de dados tenha ao menos
uma instruo que permita a gravao de uma srie
modificaes simultneas (transao) e uma instruo capaz
de cancelar uma srie modificaes. A transao dever ser
6

desfeita com apenas uma instruo ao Banco de Dados, sem


quaisquer modificaes suplementares nos dados.

Acesso Automtico: em um gerenciador de arquivo uma


situao tpica o chamado dead-lock. Esta situao
indesejvel pode ocorrer toda vez que um usurio travou um
registro em uma tabela e seu prximo passo ser travar um
registro em uma tabela relacionada primeira, porm se este
registro estiver previamente travado por outro usurio, o
primeiro usurio ficar paralisado, pois, estar esperando o
segundo usurio liberar o registro em uso, para que ento
possa trav-lo e prosseguir sua tarefa. Se, por hiptese, o
segundo usurio necessitar travar o registro travado pelo
primeiro usurio, afirmamos que ocorreu um dead-lock, pois
cada usurio travou um registro e precisa travar um outro,
justamente o registro anteriormente travado pelo outro. Por
exemplo, se um responsvel pelos pedidos acabou de travar
o registro item de pedido e necessita travar um registro no
cadastro de produtos para indicar uma nova reserva. Se
concomitantemente estiver sendo realizada uma tarefa de
atualizao de pendncias na tabela de itens, e para tanto,
previamente este segundo usurio travou a tabela de
produtos,

tem-se

ocorrncia

do

dead-lock.

responsabilidade de evitar esta ocorrncia do SGBD.

2.1.4. Caractersticas Gerais de um SGBD


7

O SGBD tem sete caractersticas operacionais elementares sempre


observadas, listadas abaixo.

Controle de Redundncias: a redundncia consiste no


armazenamento de uma mesma informao em locais
diferentes, provocando inconsistncias. Em um Banco de
Dados, as informaes s se encontram armazenadas em um
nico local, no existindo duplicao descontrolada dos
dados. Quando existem replicaes dos dados, estas so
decorrentes do processo de armazenagem tpica do ambiente
Cliente-Servidor, totalmente sob controle do SGBD.

Compartilhamento dos Dados: o SGBD deve incluir software


de controle de concorrncia ao acesso dos dados, garantindo
em qualquer tipo de situao a escrita/leitura de dados sem
erros.

Controle de Acesso: o SGDB deve dispor de recursos que


possibilitem selecionar a autoridade de cada usurio. Assim
um usurio poder realizar qualquer tipo de acesso, outros
podero ler alguns dados e atualizar outros e outros ainda
podero somente acessar um conjunto restrito de dados para
escrita e leitura.

Interfaceamento: um SGBD dever disponibilizar formas de


acesso grfico em linguagem natural, em SQL ou ainda via
menus de acesso, no sendo uma "caixa-preta" somente
sendo passvel de ser acessada por aplicaes.

Esquematizao: um Banco de Dados dever fornecer


mecanismos

que

possibilitem

compreenso

do

relacionamento existente entre as tabelas e de sua eventual


manuteno.

Controle de Integridade: um Banco de Dados dever impedir


que

aplicaes

ou

acessos

pelas

interfaces

possam

comprometer a integridade dos dados.

Backup: o SGBD dever apresentar facilidade para recuperar


falhas de hardware e software, atravs da existncia de
arquivos de "pr-imagem" ou de outros recursos automticos,
exigindo minimamente a interveno de pessoal tcnico.

Existe a possibilidade de se encontrar bancos de dados que no


satisfaam completamente todas as caractersticas acima, o que no o invalida
como Banco de Dados. Na prtica pode-se encontrar situaes onde a primeira
caracterstica (controle de redundncia) no seja importante, pois pode-se ter o
Banco de Dados baseado totalmente em um nico servidor, e as redundncias
podem ser aceitas em algumas situaes sob controle da aplicao (algo no
muito recomendado, mas passvel de aceitao, por exemplo, em situaes onde
a existncia do nome do cliente em um arquivo contendo duplicatas emitidas,
possibilita o acesso a apenas uma tabela sem relacionamentos, e sabe-se de
antemo que uma duplicata depois de emitida, no pode ter seu cliente alterado).
Deve-se ressaltar ainda o fator desempenho. Um SGBD que
satisfaa todas as caractersticas acima no necessariamente um bom banco
de dados. Se o seu desempenho for muito ruim, com um tempo de resposta alto,

este SGBD provavelmente ser trocado por outro que no tenha todas as
caractersticas, mas que tenha um desempenho alto.

2.2.

Uma Introduo SQL


A abreviatura SQL significa Structured Query Language (Linguagem

Estruturada de Consulta). uma linguagem padro, usada para construir e


acessar sistemas de bancos de dados relacionais (RDBMS) de diferentes tipos e
em diferentes plataformas de hardware. Apesar de ser uma linguagem padro, h
diferenas entre os dialetos SQL implementados em bancos de dados SQL.

2.2.1. A Instruo SELECT


A instruo SQL select tem como objetivo resgatar valores nas
tabelas do banco dados, ela criada em cima de trs clusulas:

select

- indica a lista de campos que se quer ver no

resultado da consulta. Usando o smbolo de asterisco (*), em


vez de uma lista de campos, pode-se selecionar todos os
campos da tabela .

From

- indica as tabelas que se quer considerar na

montagem da consulta.

where - indica algum critrio de seleo. Se no houver a


clusula where, todos os registros so selecionados.

Para selecionar somente algumas e no todas as linhas de uma


tabela, deve-se incluir a clusula where. O Exemplo 1 retorna somente os
pacientes que tenham idade a partir dos 18 anos.
select NOME from PACIENTES

10

where IDADE >= 18


Exemplo 1: SELECT e WHERE

Podem-se mesclar duas condies utilizando and e indicar que elas


devem ser atendidas ao mesmo tempo, ou pode-se usar or para indicar que um
registro deve atender a uma das condies. No Exemplo 2, sero selecionados
somente os pacientes que tenham idade a partir dos 18 anos e que sejam do
sexo feminino.
select NOME from PACIENTES
where IDADE >= 18 and SEXO=FEMININO
Exemplo 2: clusula WHERE com AND

Na Tabela 1 vemos todos os operadores que podem ser usados com


a clusula where.

Operador
=
<>
>
<
>=
<=
BETWEEN ... AND ...
NOT BETWEEN ... AND ...
IN (list)
NOT IN (list)
LIKE

IS NULL
IS NOT NULL

Descrio
Igual
Diferente
maior que
menor que
maior igual que
menor igual que
entre dois valores
no est entre dois valores
existe na lista
no existe na lista
utiliza caracter mscara que varia entre os SGBD. No Interbase e
MS SQL Server, usado (%) e no MS Access, (*). Colocando
(%a%) seria localizada a informao que contivesse a letra a em
qualquer posio do campo. Se fosse usado (a%), no resultado
teramos as informaes que comeassem com a letra a.
Tambm pode ser utilizado o (_). Nesse caso, se tivssemos
(_a%), no resultado haveria as informaes que tm como
segunda letra a vogal a.
um valor nulo
no um valor nulo

Tabela 1: operadores para a clusula WHERE

Para evitar elementos repetidos no resultado, pode-se incluir mais


uma palavra-chave SQL, distinct, que fora a remoo das repeties. O Exemplo
3 retornar quais as cidades dos pacientes.
11

select distinct CIDADE from PACIENTES


Exemplo 3: DISTINCT

Outra clusula SQL order by, que determina a ordem dos valores
no resultado. Caso no seja especificado em contrrio, assumir a ordem
crescente ; caso se queira o contrrio, deve-se colocar a clusula desc aps do
nome da coluna. A consulta contida no Exemplo 4 retorna os nomes dos
pacientes ordenados pelo nome.
select NOME from PACIENTES
order by NOME
Exemplo 4: ORDER BY

Na maioria dos casos, as instrues SQL referem-se a duas ou mais


tabelas. Para trabalhar com duas tabelas e junt-las de maneira apropriada, usase na clusula where os valores de campos das tabelas envolvidas que estejam
relacionadas ou ainda utiliza -se a clusula join. Temos os seguintes tipos de join:
INNER (s aparecer no resultado os elementos que possuem elementos iguais
na amarrao entre as tabelas), LEFT (aparecero no resultado todos os
elementos esquerda do join, a amarrao entre as tabelas estar feita, mas
quando no houver correspondente na tabela da direita e algum campo desta
estiver presente no resultado ser retornado o valor null nulo), RIGHT
(aparecero no resultado todos os elementos direita do join, a amarrao entre
as tabelas estar feita, mas quando no houver correspondente na tabela da
esquerda e algum campo desta estiver presente no resultado ser retornado o
valor null), FULL JOIN (aparecero no resultado todos os elementos direita e
esquerda do join, a amarrao entre as tabelas estar feita, quando no houver
correspondente nas tabelas o valor do campo presente no resultado estar

12

presente o valor null). Geralmente os campos que usamos para amarrar as


tabelas so, em uma delas, a chave primria e na outra, a chave estrangeira.
Por exemplo, podemos juntar as tabelas pacientes, requisies e
mdicos para podermos informar qual a data da recepo de um paciente , e qual
o mdico que o encaminhou, como foi feito no Exemplo 5:
select PACIENTES.NOME, REQUISICOES.DATARECEPCAO, MEDICOS.NOME
from PACIENTES, REQUISICOES, MEDICOS
where PACIENTES.PACI_NR_MATRICULA = REQUISICOES.PACI_NR_ MATRICULA AND
REQUISICOES.MEDI_NR_CRM = MEDICOS.MEDI_NR_CRM
OU
select PACIENTES.NOME, REQUISICOES.DATARECEPCAO
from PACIENTES INNER JOIN REQUISICOES ON
(PACIENTES.PACI_NR_MATRICULA = REQUISICOES.PACI_NR_ MATRICULA) INNER JOIN
MEDICOS ON (REQUISICOES.MEDI_NR_CRM = MEDICOS.MEDI_NR_CRM)
Exemplo 5: SELECT de vrias tabelas

2.2.1.1. Calculando Valores


Na clusula select, em vez de um campo de uma tabela, pode-se ter
o resultado de um clculo. Os clculos possveis so: COUNT, SUM, AVG, MAX e
MIN, podendo incluir a clusula distinct para calcular somente os valores no
repetidos. Para campos com nmeros, podemos fazer operaes matemticas
normalmente colocando junto ao nome do campo os operadores e valores,
formando a expresso que se deseja calcular. No Exemplo 6, calcula-se a
quantidade e a mdia de idade dos pacientes.
select count(*),avg(idade) from PACIENTES
Exemplo 6: clculo

2.2.1.2. Definindo Grupos


Alm de fazer clculos com o resultado, podemos calcular um valor
para cada grupo de elementos usando a clusula having, que funciona como o
13

where, restringindo o resultado da pesquisa. O resultado da consulta abaixo


uma lista dos convnios, cada um deles com a quantidade de requisies.
select convenio, count(*)
from requisicoes
group by convenio
having count(*)>10
order by convenio
Exemplo 7: GROUP BY

2.2.2. A Instruo INSERT


Adiciona uma ou mais linhas novas a uma tabela especificada.
INSERT INTO nome_tabela (nome_coluna, nome_coluna )
VALUES (valor1, valor2 )
(VALORES DO TIPO STRING DEVEM
ESTAR ENTRE ASPAS)
Ou
INSERT INTO nome_tabela (nome_coluna, nome_coluna )
SELECT nome_coluna, nome_coluna FROM nome_tabela
(TEM QUE TER A MESMA
QUANTIDADE DE CAMPOS
E OS TIPOS DOS CAMPOS
DEVEM SER OS MESMOS)

Exemplo 8: INSERT

2.2.3. A Instruo DELETE


Remove linhas de uma tabela.
DELETE FROM nome_tabela
WHERE condio_de_procura

(SE APLICA O MESMO DO SELECT)

Exemplo 9: DELETE

2.2.4. A Instruo UPDATE


Altera informaes de um registro j existente de uma tabela.
UPDATE nome_tabela
SET nome_coluna=valor1, nome_coluna=valor2 (QUANDO STRING DEVEM ESTAR ENTRE )
WHERE condio_de_procura
(SE APLICA O MESMO DO SELECT)

Exemplo 10: UPDATE

2.3. Banco de Dados Firebird


14

2.3.1. Histrico
O banco de dados Interbase foi originalmente concebido e criado
por um grupo de engenheiros de sistemas, funcionrios da DEC (Digital
Equipment Corporation), que desejavam produzir um SGBDR - sistema
gerenciador de banco de dados relacional, inovador e que substancialmente
oferecesse maiores benefcios que os outros sistemas at ento existentes. Na
poca de sua concepo, muita tecnologia j existia como proposta de inovao,
mas nenhum produto a oferecia como recurso ou caracterstica disponvel. Tendo
iniciado em 1985 como Groton Database System, logo mudou de nome para
Interbase. Foi inicialmente comercializado pela Ashton Tate (Dbase) e em 1992
foi entregue Borland como parte de uma negociao de produtos.
Ao

longo

de

seu

desenvolvimento,

foram

consistentemente

introduzidas um nmero de tecnologias de primeira mo. Muitas dessas so:


arquitetura multi-geradora, commit automtico em duas fases, sombreamento do
banco de dados (replicao), admisso e tratamento de campos blobs, ndices em
mapa de bits disperso, colunas vetoriais multidimensionais e subsistema de
eventos de alertas. Alm de ter sido o primeiro a disponibilizar acesso nativo a
driver de JDBC.
Em julho de 2000, a ento chamada Inprise, antes conhecida como
Borland, decidiu liberar o cdigo-fonte do banco de dados Interbase. Mais
conhecido por ser fornecido junto s edies Enterprise do Delphi.
A concorrncia gerada pela entrada dos pesos-pesados como
Oracle, DB2, Sybase e MS SQL Server estava tornando cada vez mais difcil
vender licenas do Interbase. A Inprise como um todo esta va passando por

15

problemas financeiros, o resultado foi a demisso da maior parte dos funcionrios


responsveis por desenvolvimento, suporte e vendas do Interbase.
Por outro lado, a Inprise precisava fornecer um servidor de bancos
de dados relacional, pois suas principais concorrentes no mercado de BDs
tambm forneciam ferramentas de desenvolvimento e as vendas casadas de
bancos e IDEs estavam minando as vendas do carro-chefe da empresa, o Delphi,
alm do C++ Builder e do JBuilder. Portanto, descontinuar o Interbase no era
uma opo desejvel.
A Inprise optou por uma soluo inovadora para a poca, que
manteria o produto vivo a um custo mnimo: abrir o cdigo da verso 6.0, ainda
em beta. Foi uma deciso desesperada, tomada sob grande oposio dos setores
da empresa que acreditavam ser melhor encerrar a diviso Interbase.
O sucesso foi imediato: milhares de downloads e uma comunidade
de usurios crescente. O produto passou a ser suportado ativamente por
ferramentas de terceiros e ganhou componentes importantes, porm ausentes na
verso proprietria, como o driver ODBC, e a verso do Linux atendendo o
mercado de servidores.
Em pouco tempo, a "nova" Borland decidiu mudar a estratgia para
o Interbase (a Inprise alterou seu nome para Borland) e o produto foi novamente
transformado em software proprietrio. Foi liberada, em 2001, uma verso 6.0
"certificada", que continha cdigo ausente da verso aberta e, em 2002, foi
liberada a verso 6.5 exclusivamente sob licena proprietria.
Foi ento que a verso aberta do Interbase criou vida independente
da Borland, sendo chamada de "Firebird" (ave de fogo), em aluso Fnix, ave
mitolgica que renasce das prprias cinzas.
16

No dia 16 de dezembro de 2003, a Borland liberou a verso 7.1 do


Interbase, mas perdeu grande parte da sua comunidade de usurios e do suporte
de terceiros. J o Firebird liberou a verso 1.5 , em 16 de julho de 2004, com
recursos exclusivos e suportando ainda mais plataformas.

2.3.2.

Edies do Firebird
Na maioria das plataformas, o Firebird fornecido em duas edies,

chamadas de Classic Server ou CS e "Super Server" ou SS.


O Classic Server a verso original do Interbase, onde cada cliente
possui um processo gds_inet_server dedicado a ele, de forma semelhante a
servidores como o Apache 1.x ou PostgreSQL. Quando o segundo cliente se
conecta ao banco, inicia-se um processo gds_lock_mgr, que gerencia o acesso
concorrente aos mesmos arquivos de banco de dados. As instncias do
Interbase/Firebird CS so iniciadas pelo inetd, e h tambm suporte a um modo
de conexo local onde o prprio cliente realiza o acesso aos arquivos de banco
de dados, de modo que no h um processo separado para este cliente. Esta
ltima opo bastante interessante para o uso embutido, onde o banco de
dados de uso exclusivo de uma aplicao.
O Super Server surgiu na verso 5.0 do Interbase. O Firebird SS
formado por um nico processo ibserver, executando autonomamente (em vez
de iniciado pelo inetd), que mantm uma fila de solicitaes para atender os
pedidos dos clientes remotos. Estas solicitaes compartilham um nico cache de
pginas do banco de dados e uma solicitao especializada gerencia o acesso
concorrente aos arquivos. No existe no SS o modo de conexo local suportado
pelo CS. Esta uma arquitetura bastante semelhante ao MySQL.
17

O SS capaz de atender a uma carga de trabalho bem maior do


que o CS, consumindo menos recursos do servidor, alm de apresentar melhor
tempo de resposta e segurana. Mas o CS continua sendo suportado por ser mais
leve com poucos clientes e pelas vantagens do modo local para algumas
aplicaes.
Em algumas plataformas h ainda o processo ibguardian, que atua
como um watchdog (co de guarda): ele monitora o processo ibserver e, caso
seja terminado por alg um motivo (por exemplo, um bug do cdigo do servidor),
um novo ibserver iniciado.
A verso 1.5 do Firebird muda os nomes dos executveis e
arquivos, basicamente trocando os prefixos "gds" e "ib" por "fbs" e "fb"
respectivamente. Junto com esta mudana de nomes, cujo objetivo permitir a
instalao de verses do Firebird e do Interbase na mesma mquina, h
mudanas no formato dos arquivos de banco de dados, que deixaram de ser
intercambiveis entre o banco livre e o seu irmo proprietrio. Mas ser a mantida
a compatibilidade retroativa com aplicaes compiladas para verses anteriores
do Firebird (ou do Interbase) pelo fornecimento de uma biblioteca de cliente
"pass-through" com o nome original.

2.3.3.

Administrando o Firebird
O Firebird no inclui o aplicativo grfico de administrao do

Interbase, o IBConsole, pois ele no fazia parte da verso aberta. A verso aberta
inclua o IBClient, cliente escrito em Java (mas no "100% pure" Java) ao qual o
Projeto Firebird decidiu no dar continuidade devido aos problemas de
compatibilidade com verses do Java e necessidade de configurao extra de
18

processos no servidor apenas para atender ao IBClient. Assim sendo, a


instalao padro do Firebird inclui apenas utilitrios de linha de comando, tal
qual o MySQL e o PostgreSQL, mas existem vrias ferramentas de terceiros que
fornecem ferramentas grficas ou web para administrao do Firebird, tanto livres
quanto proprietrias, entre elas temos: IBConsole(Interbase), IBAcces, Quick
Desk e IBExpert. O IBExpert possui uma verso Personal que distribuda
gratuitamente e entre essas opes a mais utilizada por ser fcil de usar e
oferecer a maioria das funcionalidades necessrias.
O conjunto de utilitrios padro do Firebird inclui, entre outros:

isql: ferramenta para execuo interativa de comandos e


scripts SQL

gsec: ferramenta para configurao de usurios e senhas no


banco de sistema

gbak: ferramenta para backup e restore de um banco de


dados ativo

2.3.4. Caractersticas
O Firebird foi desenvolvido de acordo com o conceito de
"Atomicidade, Consistncia, Isolamento e Durabilidade". Outras caractersticas:

MGA - Multi-Generational Architecture: uma caracterstica


especial do Firebird a "Arquitetura de Mltiplas Geraes",
que permite ao banco manipular vrias verses do mesmo
registro fsico em qualquer momento, assim qualquer
transao pode ter sua prpria verso sem se importar com
outras transaes concorrentes ("leitura no bloqueia escrita
19

e escrita no bloqueia leitura"). Isto assegura OLTP to bem


quanto operaes OLAP.

Procedimentos Armazenados (Stored Procedures): usando a


linguagem SQL de procedimentos do Firebird, pode-se
facilmente criar poderosos procedimentos armazenados para
processar dados internamente no lado do Servidor. Um
detalhe especial so os selectable stored procedures
(procedimentos selecionveis) que podem calcular dados
linha por linha no servidor e podem ser usados como uma
view (tabela virtual) do lado cliente, a qual especialmente
til para criao de relatrios.

Eventos: Stored Procedures (procedimentos armazenados) e


triggers (gatilhos) podem disparar eventos que podem ser
monitorados de um cliente numa porta TCP/IP para bases de
dados ativas.

Geradores (Generators): O conceito de Generators permite a


fcil implementao de colunas do tipo auto-incrementos,
mas vai alm disso. Generators so contadores no volteis
do tipo Int64 que so independentes de transaes e podem
ser usados de muitas maneiras.

Bases de dados "somente leitura": para distribuio de bases


de dados em CD-ROM, por exemplo. Especialmente quando
usado em conjunto com a verso embutida (embedded), isto
d uma facilidade imbatvel de distribuio.

20

Controle total de transaes: uma simples aplicao cliente


pode ter multiplas transaes concorrentes. Os diversos
nveis de isolamento podem ser completamente controlados
pelo cliente. O protocolo de commit em duas fases permite
consistncia garantida entre as bases de dados. Travamento
otimista tambm suportado, bem como mltiplos Savepoints
em Transaes.

Backups Onli ne: no h necessidade de parar a base de


dados para efetuar o backup. Um processo de backup
captura a imagem da base de dados no momento em que ele
inicia, assim os usurios podem continuar trabalhando
enquanto um backup roda, permitindo operao 24x7.

Gatilhos (Triggers): cada tabela pode ter mltiplos gatilhos


que so disparados para cada linha da tabela antes ou depois
de Inserts, Updates ou Deletes. Dentro de um gatilho, a
riqueza da linguagem SQL de procedimentos pode ser usada
para aplicar valores padres, assegurar a integridade dos
dados, gerar excees, etc. A novidade no Firebird 1.5 so os
"gatilhos universais. Com ele pode haver um nico gatilho
para manipular Inserts, Updates e/ou Deletes na tabela de
uma s vez.

Funes Externas (External Functions): bibliotecas com


funes definidas pelo usurio (User Defined Functions ou
UDFs) podem ser escritas em linguagens como C, C++ ou
Delphi e podem ser facilmente ligadas ao ncleo do Firebird
21

via DLLs/SOs, estendendo a funcionalidade dentro do


Servidor.

Integridade Referencial em Cascata (Declarative Cascading


Referential Integrity): assegura consistncia e validade de um
relacionamento 1-N (Pai e Filho) entre tabelas.

Configuraes de Caracteres (Character Sets): o Firebird


implementa

muitas

configuraes

de

caracteres

internacionais, incluindo Unicode com uma variedade de


collates.
O Firebird tem suporte completo ao SQL 92 Entry Level 1 e
implementa a maioria do padro SQL-99, alm de alguns adicionais teis. Isto
inclui declaraes dml/ddl, sinta xes full/left/right [outer] join, clusulas union e
distinct, subconsultas (in, exists), funes internas (avg, sum, min, max, coalesce,
case, ..), constraints (primary key, unique, foreign key), assim como todos os tipos
de dados da SQL.
O Firebird tambm implementa Domnios (Domains) e campos com
Check Constraints, Views, Exceptions, Roles e uma refinada gerncia de
permisses (Grant).
O Firebird roda em quase todo hardware. Mesmo hardwares "fracos"
podem servir de servidor, especialmente quando usados com Linux. Como
qualquer SGBDR, h os aspectos comuns que influenciam a performance: a
quantidade fsica de RAM (16MB j ir rodar); a velocidade do subsistema de
armazenamento (como sistemas RAID), etc. claro, o hardware recomendado
depende do que se quer fazer com uma base de dados, qual o tamanho que ela
atingir, quantos usurios concorrentes se espera e assim por diante.
22

As plataformas mais usadas com o Firebird so Linux e Windows


(incluindo MS Terminal Servers e Citrix MainFrames). Outras plataformas so
Mac OS X, Solaris e HP-UX.
Migrar de uma plataforma para outra possvel a qualquer momento
simplesmente fa zendo um backup da base de dados de um SO usando o formato
transportvel (transportable) e ento restaurar em outro SO qualquer.
O Firebird suporta um grande nmero de mtodos de conectividade,
incluindo: pacotes de componentes nativos para C/C++ e Delphi, ODBC, JDBC
(JayBird), Driver PHP, driver OLEDB, dbExpress, .Net data provider e finalmente
atravs de chamadas diretas API usando a biblioteca fbclient.dll/.so.
As bases de dados podem se estender a mltiplos arquivos, o
tamanho de cada arquivo depende do SO. O limite terico atualmente 64TB
para um nico arquivo da base de dados, ento o limite prtico normalmente
definido pelo sistema operacional ou o espao disponvel no HD.
O Firebird licenciado sob a IPL (InterBase Public License), a qual
tem os mesmo termos da Mozilla Public License 1.1. O Firebird completamente
gratuito para usar e distribuir. No preciso entregar o cdigo fonte do seu
sistema, independente do seu modelo de licenciamento. Se o ncleo do Firebird,
entretanto, for modificado, deve-se liberar o acesso pblico ao cdigo fonte das
modificaes.
Uma gama enorme de ferramentas est disponvel para o Firebird,
algumas gratuitas, outras comerciais. H ferramentas para administradores,
ferramentas

para

desenvolvedores,

conectividade, etc.

23

Bibliotecas

UDF,

ferramentas

de

Em www.firebirdsql.org, o lar do Firebird, h muitos links teis sobre


o projeto. A empresa IBPhoenix oferece vrios contratos para suporte profissional
por pessoas com um longo perodo de experincia. Em seu website, h tambm
uma variedade de informaes tcnicas, tutoriais e documentaes bem
detalhadas disponveis.
H uma comunidade sempre crescente de usurios do Firebird e
vrios newsgroups (grupos de discusso) para fornecer suporte on-line
instantneo. Na homepage do projeto h uma lista de todos os newsgroups sobre
Firebird.

2.3.5. Comparao
Como o Firebird, tambm temos o MySQL e PostGreSQL como
banco de dados gratuitos. A Tabela 1 sumariza algumas diferenas entre os trs
principais bancos livres.
Recurso
Transaes
Procedimentos armazenados
(incompatveis com ODBC)
Triggers
Integridade referencial
Consultas aninhadas (subselects)
Outer Joins
Funes agregadas (count, sum, avg, ...)
Recursos para OLAP / DatawareHouse
Extenses Orientadas a Objetos
Servidor baseado em mltiplos processos
Servidor baseado em mltiplas threads
Acesso direto, sem servidor
Um arquivo por tabela

Firebird
Sim

MySQL 3.x
opcional

PostgreSQL
sim

sim

no

sim

sim
sim
sim
sim
algumas
no
no
sim (CS)
sim (SS)
sim (CS)
no

sim
sim
sim
sim
muitas
no
sim
sim
no
no
sim

BD ocupando vrios discos

no

Liberao automtica de registros deletados


Servidor estvel em Windows
Servidor em Netware

sim
sim
no

no
no
no
no
poucas
no
no
no
sim
no
sim
sim (via
links, apenas
Linux/Unix)
sim
sim
sim

Tabela 2: comparao entre bancos de dados gratuitos.

24

sim (via SQL)


no
no
sim

interessante ter uma noo dos preos dos banco de dados


comerciais, na Tabela 2 so mostrados estes valores, no esquecendo que o
Firebird gratuito.

Tabela 3: preos de alguns SGBDs

2.4.

Modelos de Dados
Os modelos de dados so formas de definir um banco de dados

atravs de ferramentas conceituais, relacionamentos entre dados, semntica e


restries. Existem vrios modelos de dados a serem utilizados em diferentes
SGBD e nveis de abstrao.

2.4.1. O Modelo Entidade-Relacionamento


O Modelo Entidade-Relacionamento (MER) o modelo mais usado
para representao de bancos de dados em nvel conceitual. Tem como
25

caracterstica principal a facilidade de projetar esquemas de bancos de dados.


Este modelo baseia-se na representao do sistema por um conjunto de objetos
do mundo real (entidades) e por relacionamentos entre estes objetos o
diagrama de entidade-relacionamento (DER). A maioria das ferramentas CASE
adotam este diagrama, mas existem variaes de simbologia, como a sugerida
por CHEN.
O modelo entidade-relacionamento, apresenta algumas definies
que sero mostradas a seguir:

Entidade: uma entidade representa uma coleo ou um


conjunto

de

objetos

do

mundo

real

cujos

membros

desempenham um papel no sistema. Por exemplo, disciplina


e aluno so entidades.

Atributos: so qualificadores das entidades. Por exemplo,


nome e matrcula so atributos da entidade aluno.

Atributos multivalorados: so aqueles que podem ocorrer


mais de uma vez para uma mesma entidade. Se definirmos
que telefone um atributo multivalorado da entidade aluno,
ser possvel indicar um ou vrios telefones para os alunos.

Chave ou atributos-chave: o conjunto de atributos que


identifica unicamente uma entidade no conjunto de entidades.
Por exemplo, o atributo matrcula identifica unicamente um
aluno.

Entidade forte ou dominante: entidade cuja existncia


independe de outras entidades, podendo determinar a
existncia de entidades que so subordinadas a ela.
26

Entidade

fraca

ou

subordinada:

existencialmente

dependente de outra entidade, ou seja, se a entidade da qual


depende deixa de existir, esta tambm deixar de existir. Um
exemplo claro a relao entre as entidades scio
(dominante) e dependente (subordinada) num sistema que
modele o funcionamento de um plano de sade, mostrado na
Figura 1.

Figura 1: entidades dominante e subordinada

Uma entidade fraca est sempre associada a uma entidade forte


atravs de um relacionamento chamado de Relacionamento de Dependncia.

Relacionamento: um relacionamento uma associao entre


entidades. Por exemplo, as entidades aluno e curso tm uma
relao, num sistema de controle acadmico (veja a Figura
2).

Figura 2: relacionamento

Cardinalidade: expressa o nmero mximo de entidades de


um dado conjunto de entidades que pode se relacionar,
atravs de um relacionamento, com uma ocorrncia das
outras entidades participantes. Por exemplo, um aluno s
27

pode estar matriculado em um nico curso. Por sua vez, um


curso

pode

ter

vrios

alunos

matriculados.

Logo

relacionamento entre aluno e curso 1:N (leia-se um para


muitos). A cardinalidade de um relacionamento binrio, por
exemplo, pode ser 1:1, 1:N, N:1 ou N:N. No DER, a
cardinalidade representada por setas simples ou duplas.
Setas simples indicam cardinalidade 1 enquanto setas duplas
indicam cardinalidade N. A figura abaixo

mostra um

relacionamento com cardinalidade N:1.

Figura 3: cardinalidade

Totalidade: uma restrio de obrigatoriedade, de uma


entidade, na participao de um relacionamento. Por
exemplo,

se

um

aluno

deve,

obrigatoriamente,

estar

matriculado em algum curso, ento se diz que a entidade


aluno total em relao ao relacionamento matricula-se em.
No DER, a totalidade representada pelo smbolo l.

Auto-relacionamento: um relacionamento onde s existe


uma entidade participante. No DER, representado conforme
mostra a figura a seguir.

28

Figura 4: auto-relacionamento

Agregao:

uma

abstrao

atravs

da

qual

os

relacionamentos so tratados como entidades de um nvel


mais alto, podendo assim se relacionar entre si ou, mesmo,
com

outras

entidades.

No

DER,

uma

agregao

representada por um losango dentro de um retngulo. Um


exemplo da necessidade de se tratar um relacionamento
como uma entidade mostrado no na Figura 5 que se segue .

Figura 5: agregao

Generalizao: um tipo de relacionamento que expressa a


unio de subconjuntos de entidades de um nvel mais baixo
formando um conjunto de entidades em nvel mais alto. Ou
seja, um relacionamento que cria, a partir de entidades
mais especficas, entidades mais genricas que contm
informaes comuns a todas as outras e cuja classificao
29

interessa ao sistema. Um exemplo disso termos a entidade


cliente como sendo generalizao de pessoa fsica e pessoa
jurdica, como mostra a Figura 6.

Figura 6: generalizao

Especializao: um tipo de relacionamento que expressa a


classificao de um subconjunto de entidades de um nvel mais alto formando um
conjunto de entidades em nvel mais baixo. Ou seja, um relacionamento que
cria, a partir de entidades mais genricas, novas entidades sobre as quais se tm
informaes mais especficas e cuja classificao interessa ao sistema. Um
exemplo termos cantor e ator como especializaes de artista (Figura 7).

Figura 7: especializao

2.4.2. O Modelo Relacional


O modelo relacional utilizado pela grande maioria dos SGBDs
atualmente, como por exemplo: Interbase, Oracle, SQL Server, Postgresql, etc. A
30

razo para esse grande uso que o modelo relacional permite acessos aos
dados de forma eficiente, sendo baseado em noes simples e intuitivas. Neste
modelo, um banco de dados representado por uma coleo de tabelas. Alguns
conceitos importantes so:

Tabela: conjunto de campos que contm informaes sobre


algum objeto concreto, abstrato ou mesmo interno ao sistema
ao qual pertence. O conceito de tabela corresponde
essencialmente ao conceito matemtico de relao. Um
exemplo de tabela no modelo relacional mostrado na
Tabela 4 que se segue.
CLIENTE
Nome
Endereo
Telefone
CPF
Tabela 4: tabela no modelo relacional

Campo ou coluna: o campo (ou coluna) de uma tabela um


dado que se deseja armazenar sobre o objeto que ela
referencia ou um dado necessrio ao acesso dos seus
registros pelos programas de aplicao e rotinas de
manuteno. No exemplo de Tabela 4, nome e endereo so
duas de suas colunas.

Chave primria: um conjunto de um ou mais campos que


identificam unicamente um registro em um conjunto de
registros e que tenha sido escolhido pelo projetista do banco
de dados como forma de acesso principal a cada um destes
31

registros. Por exemplo, podemos definir o atributo CPF como


sendo a chave primria da tabela cliente.

Chave estrangeira: conjunto de um ou mais campos de uma


tabela que fazem referncia chave primria de outra tabela
para fins de manuteno de integridade e consistncia de
dados do sistema.

2.5.

Algoritmo

2.5.1. Conceito de Algoritmo


A automao o processo em que uma tarefa deixa de ser
desempenhada pelo homem e passa a ser realizada por mquinas, sejam estas
dispositivos mecnicos (como as mquinas industriais), eletrnicos (como os
computadores), ou de natureza mista (como os robs).
Para que a automao de uma tarefa seja bem-sucedida
necessrio que a mquina que passar a realiz-la seja capaz de desempenhar
cada uma das etapas constituintes do processo a ser automatizado com
eficincia, de modo a garantir a repetio do mesmo. Assim, necessrio que
seja especificado com clareza e exatido o que deve ser realizado em cada uma
das fases do processo a ser automatizado, bem como a seqncia em que estas
fases devem ser realizadas.
especificao da seqncia ordenada de passos que deve ser
seguida para a realizao de um tarefa, garantindo a sua repetio, d-se o nome
de algoritmo.
Embora esta definio de algoritmo seja correta, podemos definir
algoritmo, de maneira informal e completa como sendo um conjunto finito de
32

regras, bem definidas, para a soluo de um problema em um tempo finito e com


um nmero finito de passos. Um algoritmo , portanto, qualquer procedimento
computacional bem definido que toma algum valor ou conjunto de valores como
entrada e produz algum valor ou conjunto de valores como sada.
Um algoritmo deve sempre possuir pelo menos um resultado,
normalmente chamado de sada, e satisfazer a propriedade da efetividade, isto ,
todas as operaes especificadas no algoritmo devem ser suficientemente
bsicas para que possam ser executadas de maneira exata e em tempo finito.
Na prtica, no importante ter-se apenas um algoritmo, mas sim,
um bom algoritmo. O mais importante de um algoritmo a sua correo, isto , se
ele resolve realmente o problema proposto e o faz exatamente.
Para se ter um algoritmo, necessrio: que se tenha um nmero
finito de passos; que cada passo esteja precisamente definido, sem possveis
ambigidades; que existam zero ou mais entradas tomadas de conjuntos bem
definidos; que existam uma ou mais sadas; e que exista uma condio de fim
sempre atingida para quaisquer entradas e num tempo finito.
Para que um computador possa desempenhar uma tarefa
necessrio que esta seja detalhada passo a passo, numa forma compreensvel
pela mquina, utilizando aquilo que se chama de programa. Neste sentido, um
programa de computador nada mais que um algoritmo escrito em uma forma
compreensvel pelo computador.

2.5.2. Formas de Representao de Algoritmos


Existem diversas formas de representao de algoritmos. Algumas
formas de representao de algoritmos tratam dos problemas apenas em nvel
33

lgico, abstraindo-se de detalhes de implementao muitas vezes relacionados


com alguma linguagem de programao especfica. Por outro lado, existem
formas de representao de algoritmos que possuem uma maior riqueza de
detalhes e muitas vezes acabam por obscurecer a idia principal, o algoritmo,
dificultando seu entendimento.
Dentre as formas de representao de algoritmos mais conhecidas,
sobressaltam: Descrio Narrativa, Fluxograma Convencional, Diagrama de
Chapin e Pseudocdigo (Linguagem Estruturada ou Portugol).

2.5.3. Descrio Narrat iva


Nesta forma de representao os algoritmos so expressos
diretamente em linguagem natural. Como no Exemplo 11, tm-se os algoritmos
seguintes:
Troca de um pneu furado:
Afrouxar ligeiramente as porcas
Suspender o carro
Retirar as porcas e o pneu
Colocar o pneu reserva
Apertar as porcas
Abaixar o carro
Dar o aperto final nas porcas
Clculo da mdia de um aluno:
Obter as notas da primeira e da segunda prova
Calcular a mdia aritmtica entre as duas
Se a mdia for maior ou igual a 7, o aluno foi aprovado, seno ele foi
reprovado
Exemplo 11: algoritmo usando descrio narrativa

Esta representao pouco usada na prtica porque o uso de


linguagem natural muitas vezes d oportunidade a ms interpretaes,
ambigidades e imprecises.
34

Por exemplo, a instruo afrouxar ligeiramente as porcas no


algoritmo da troca de pneus est sujeita a interpretaes diferentes por pessoas
distintas. Uma instruo mais precisa seria: afrouxar a porca, girando-a de 30 no
sentido anti-horrio.

2.5.4. Fluxograma Convencional

uma

representao

grfica

de

algoritmos

onde

formas

geomtricas diferentes implicam aes (instrues, comandos) distintas. Tal


propriedade facilita o entendimento das idias contidas nos algoritmos.
Nota-se que os fluxogramas convencionais preocupam-se com
detalhes de nvel fsico da implementao do algoritmo. Por exemplo, figuras
geomtricas diferentes so adotadas para representar operaes de sada de
dados realizadas em dispositivos distintos, como uma unidade de armazenamento
de dados ou um monitor de vdeo. A Figura 8, vista a seguir mostra as principais
formas geomtricas usadas em fluxogramas.

Figura 8: principais formas geomtricas usadas em fluxogramas

35

De modo geral, o fluxograma se resume a um nico smbolo inicial,


por onde a execuo do algoritmo comea, e um ou mais smbolos finais, que so
pontos onde a execuo do algoritmo se encerra. Partindo do smbolo inicial, h
sempre um nico caminho orientado a ser seguido, representando a existncia de
uma nica seqncia de execuo das instrues. Isto pode ser melhor
visualizado pelo fato de que, apesar de vrios caminhos poderem convergir para
uma mesma figura do diagrama, h sempre um nico caminho saindo desta. A
Figura 9 contm um exemplo de um diagrama. Excees a esta regra so os
smbolos finais, dos quais no h nenhum fluxo saindo, e os smbolos de deciso,
de onde podem haver mais de um caminho de sada (normalmente dois
caminhos), representando uma bifurcao no fluxo.

Figura 9: algoritmo escrito em fluxograma

2.5.5. Diagrama de Chapin


36

Esse diagrama foi criado por Ned Chapin a partir de trabalhos de


Nassi-Shneiderman, os quais resolveram substituir o fluxograma tradicional por
um diagrama que apresenta uma viso hierrquica e estruturada da lgica do
programa. A grande vantagem de usar este tipo de diagrama a representao
das estruturas que tm um ponto de entrada e um ponto de sada e so
compostas pelas estruturas bsicas de controle de seqncia, seleo e
repartio. Enquanto difcil mostrar o embutimento e a recursividade com o
fluxograma tradicional, torna-se mais simples mostr-lo com o diagrama de
Chapin, bem como codific-lo futuramente na converso para pseudocdigos. A
Figura 10 apresenta um exemplo de diagrama de Chapin para o algoritmo de
clculo da mdia de um aluno, indicando se ele foi aprovado ou reprovado.
Incio
Leia N1, N2
Mdia (N1+N2)/2
Mdia >= 7
Sim

No

Escreva
Aprovado

Escreva
Reprovado
Fim

Figura 10: diagrama de Chapin

2.5.6. Pseudocdigo
Esta forma de representao de algoritmos, tambm conhecida
como portugus estruturado ou portugol, bastante rica em detalhes e, por
assemelhar-se bastante forma em que os programas so escritos, encontra
muita aceitao.

37

Na verdade, esta representao suficientemente geral para


permitir que a traduo de um algoritmo nela representado para uma linguagem
de programao especfica seja praticamente direta.
A representao de um algoritmo na forma de pseudocdigo pode
ser vista no Exemplo 12:
Algoritmo <nome_do_algoritmo>
<declarao_de_variveis>
<subalgoritmos>
Incio
<corpo_do_algoritmo>
Fim.
Exemplo 12: elementos do pseudocdigo

Onde:

Algoritmo uma palavra que indica o incio da definio de


um algoritmo em forma de pseudocdigo.

<nome_do_algoritmo> um nome simblico dado ao


algoritmo com a finalidade de distingui-lo dos demais.

<declarao_de_variveis> consiste em uma poro opcional


onde so declaradas as variveis globais usadas no algoritmo
principal e, eventualmente, nos subalgoritmos.

<subalgoritmos> consiste de uma poro opcional do


pseudocdigo onde so definidos os subalgoritmos.

Incio e Fim so respectivamente as palavras que delimitam o


incio e o trmino do conjunto de instrues do corpo do
algoritmo.

O Exemplo 12 mostra a representao do algoritmo de clculo da


mdia de um aluno na forma de um pseudocdigo.
Algoritmo Mdia
Var N1, N2, Mdia

38

Incio
Leia N1, N2
Mdia := (N1+N2)/2
Se Mdia >= 7 Ento
Escreva Aprovado
Seno
Escreva Reprovado
Fim.
Exemplo 13: pseudocdigo

2.5.7. Fases de um Algoritmo


Quando temos um problema e vamos utilizar um computador para
resolv-lo, inevitavelmente temos que passar pelas seguintes etapas:
a) Definir o problema;
b) Realizar um estudo da situao atual e verificar qual(is) a(s)
forma(s) de resolver o problema;
c) Terminada a fase de estudo, utilizar uma linguagem de
programao para escrever o programa que dever, a princpio, resolver o
problema;
d) Analisar junto aos usurios se o problema foi resolvido. Se a
soluo no for encontrada, dever ser retornado para a fase de estudo para
descobrir onde est a falha.
Estas so, de forma bem geral, as etapas que um analista passa,
desde a apresentao do problema at a sua efetiva soluo. Iremos nos ater as
etapas de estudo, tambm chamada de anlise, e a etapa de programao. Mas
antes vamos definir o seguinte conceito: programar um computador consiste em
elaborar um conjunto finito de instrues, reconhecidas pela mquina, de forma
que o computador execute estas instrues. Estas instrues possuem regras e
uma sintaxe prpria, como uma linguagem tipo portugus ou ingls, sendo isto
chamadas de linguagem de computador.
39

No mundo computacional existe uma grande variedade de


linguagens , como: Pascal, Java , C, C++, Cobol, Fortran. Iremos utilizar o Pascal,
que a linguagem de programao utilizada pelo Delphi, para introduzir os
primeiros conceitos de programao.

2.5.8. Variveis
O computador possui uma rea de armazenamento conhecida como
memria. Todas as informaes existentes no computador esto ou na memria
primria (memria RAM), ou na memria secundria (discos, fitas, CD-ROM etc).
Aqui iremos tratar, somente com a memria primria, especificamente com as
informaes armazenadas na RAM (memria de acesso aleatrio).
Podemos dizer que uma varivel uma posio de memria,
representada por um nome simblico que atribudo pelo usurio, a qual contm,
num dado instante, uma informao.

2.5.8.1. Formao de Variveis


Uma varivel formada por uma letra ou ento por uma letra
seguida de letras ou dgitos, em qualquer quantidade. No permitido o uso de
espaos em branco ou de qualquer outro caractere, que no seja letra, sublinhado
e dgito, na formao de um identificador.
Na formao do nome da varivel deve-se dar um nome,
preferencialmente, significativo.

2.5.8.2. Tipos de Dados

40

O Pascal exige que no momento que formos trabalhar com


variveis, indiquemos o tipo de informao que uma varivel pode conter, isto ,
se uma dada posio de memria armazenar, por exemplo um nmero ou uma
letra. Para isto, a linguagem Pascal possui definidos alguns tipos que devero ser
usados quando formos trabalhar com variveis. Alguns tipos encontram-se na
Tabela 5 :
Algoritmo
a) Inteiro

Pascal
INTEGER:

b) Real

REAL:

e) Caracter

CHAR:

d) Cadeia

STRING:

g) Lgica

BOOLEAN:

WORD:
BYTE:
Shor Int
LongInt
Single
Double

Descrio
Representa os nmeros entre -32768 at +32767.
Ocupa 2 bytes na memria.
-39
38
Representa os nmeros entre 2.9 x 10
at 1.7 x 10 .
Ocupa 6 bytes na memria.
Representa um dos caracteres, da tabela ASCII. Ocupa
1 byte na memria.
Conjunto de caracteres (CHAR). Ocupa de 1 a 255
bytes na memria.
Valor lgico. Assuma somente dois valores:
TRUE(Verdade) ou FALSE(Falso). Ocupa 1 byte na
memria.
Nmeros de 0 at 65535. Ocupa 2 bytes na memria.
Nmeros de 0 at 255. Ocupa 1 byte na memria.
Representa os nmeros entre -128 at 128 . Ocupa 1
bytes na memria.
Representa os nmeros entre - 2.147.483.648 at
2.147.483.648 . Ocupa 4 bytes na memria.
-45
38
Representa os nmeros entre 1.5 x 10
at 3.4 x 10 .
Ocupa 4 bytes na memria.
-324
308
Representa os nmeros entre 5 x 10
at 1.7 x 10 .
Ocupa 8 bytes na memria.
Tabela 5: tipos de dados

2.5.8.3. Definio de Variveis


Para definir uma ou mais variveis, devemos utilizar, em Pascal, a
palavra VAR. O Exemplo 14 mostra algumas definies de variveis:
ALGORITMO Teste
VARIVEIS
Palavra: CADEIA
Letra: CARACTER
Nmero: INTEIRO
INICIO
<comandos>
FIM

PROGRAM Teste;
VAR
Palavra: String;
Letra: CHAR;
Nmero: INTEGER;
BEGIN
<comandos>;
END.
Exemplo 14: definies de variveis

41

Obs.: Os nomes dados as variveis no podem ser os mesmos


nomes de palavras reservadas do Pascal, tais como PROGRAM, BEGIN, END,
VAR, etc.

2.5.9.

Comando de Atribuio
Quando definimos uma varivel natural atribuirmos a ela uma

informao. Uma das formas de colocar um valor dentro de uma varivel,


consequentemente colocando este dado na memria do computador, atravs da
atribuio direta do valor desejado que a varivel armazena . Para isto
utilizaremos o smbolo := em Pascal, e nos algoritmos, que significa: recebe,
ou seja, a posio de memria que uma varivel representa, receber uma
informao, a qual ser armazenada no interior desta varivel.
ALGORITMO Teste
VARIVEIS
Nmero: INTEIRO
INICIO
Nmero 10
FIM

PROGRAM Teste;
VAR
Numero: INTEGER;
BEGIN
Numero := 10;
END.
Exemplo 15: atribuio

O Exemplo 15 nos informa que:


a) Foi definida uma varivel, a qual demos o nome de Numero, e
informamos que esta varivel, ou posio de memria, s poder aceitar dados
que sejam numricos e que estejam entre -32768 e +32767 ( tipo INTEGER ).
b) Atribumos varivel Numero o valor 10.
Quando estivermos fazendo a atribuio de um valor para uma
varivel do tipo CHAR (Caracter) ou STRING (Cadeia), temos que ter o cuidado

42

de colocar o valor (dado) entre aspas ( ), pois esta a forma de informar que a
informao caracter.

2.5.10. Operadores Matemticos


Os operadores matemticos, usados no Pascal, so os seguintes:
Operao
Adio
Subtrao
Multiplicao
Diviso
Diviso inteira (QUOCIENTE)
Resto da diviso (RESTO)
Diferena
Menor Igual
Maior Igual

Operador
+
*
/
DIV
MOD
<>
<=
>=
Tabela 6: operadores matemticos

2.5.11. Operadores Lgicos


Os operadores lgicos, que realizam as operaes da lgebra
booleana, encontram-se na Tabela 7.
Operao
E
OU
NO
NO OU

Operador
AND
OR
NOT
XOR
Tabela 7: operadores lgicos

A seguir, so mostradas as tabelas verdade de cada um dos


operadores, indicando seis resultados para as possveis utilizaes.
a) Tabela verdade para o operador AND (Tabela 8):
Operao
TRUE AND TRUE
TRUE AND FALSE
FALSE AND TRUE
FALSE AND FALSE

Resultado
TRUE
FALSE
FALSE
FALSE
Tabela 8: resultados usando AND

b) Tabela verdade para o operador OR (Tabela 9):


43

Operao
TRUE OR TRUE
TRUE OR FALSE
FALSE OR TRUE
FALSE OR FALSE

Resultado
TRUE
TRUE
TRUE
FALSE
Tabela 9: resultados usando OR

c) Tabela verdade para o operador NOT (Tabela 10):


Operao

Resultado

NOT TRUE
NOT FALSE

FALSE
TRUE
Tabela 10: resultados usando NOT

2.5.12. Comandos de Entrada e Sada


O computador no uma mquina isolada, pois ele precisa se
comunicar com o mundo exterior atravs de vdeo, impressora, teclado, discos,
etc. Para realizar esta comunicao, existem comandos que permitem que
informaes sejam exibidas, por exemplo, no vdeo, como tambm existem
comandos que permitem que informaes sejam colocadas na memria do
computador atravs do teclado.
Os comandos que iremos ver so os comandos LEIA e ESCREVA,
respectivamente, comando de entrada e de sada que em Pascal escreve-se
READ e WRITE. O Exemplo 16 mostra a utilizao deste comandos.
ALGORITMO LeEscreve
VARIVEIS
Num : INTEIRO
INICIO
LEIA(Num)
ESCREVA(Entrada)
FIM

PROGRAM LeEscreve
VAR
Num: Integer;
Begin
READ(NUM);
WRITE(Entrada);
END;
Exemplo 16: READ e WRITE

Obs.: Em Pascal, quando usamos os comandos READ e WRITE, o


cursor continuar posicionado na mesma linha. Para evitar tal situao, devemos
pular para nova linha. Isto obtido acrescentando as letras LN (de LINE NEW, ou
44

seja, linha nova) no final dos comandos READ e WRITE. Desta forma, os
comandos tero a seguinte grafia: READLN e WRITELN.

2.5.13. Estruturas de Repetio


As estruturas de repetio so usadas para conjunto de aes a
serem executadas repetidas vezes. Existem trs tipos bsicos de repetio no
PASCAL: WHILE, FOR e REPEAT.

2.5.13.1. Comando While


O Comando while usado para repetir n vezes uma seqncia de
instrues, em que n pode ser um valor no conhecido previamente.
Antes de executar a seqncia a condio verificada. Se a
condio no for atendida, mesmo na primeira vez, a seqncia no acessada.
A seqncia ser executada at a condio se tornar falsa. Logo, a
sua condio dever ser alterada, em um determinado insta nte, dentro da
seqncia de operaes. A estrutura do comando while pode ser vista no
Exemplo 17.
WHILE <condio> DO
BEGIN
<seqncia de operaes>
END.
Exemplo 17: estrutura do WHILE

O Exemplo 18 calcula a mdia de um grupo de nmeros, enquanto


no entrar com um nmero de valor zero.
Algoritmo: WhileMedia
Real : N1, Soma, Media;
Inteiro: Contador;
Incio
Soma 0
Media 0

PROGRAM WhileMedia;
USES CRT;
VAR
N1,Soma,Media: REAL;
Contador: INTEGER;
BEGIN

45

Contador -1
N1 1
Enquanto N1 <> de Zero Faa
Leia (N1);
Soma N1+ Soma
Contador Contador +1
Fim Enquanto
Media Soma / Contador
Escreva (A media dos Contador
nmeros igual a Media)
Fim do Programa.

CLRSCR;
Soma:=0;
Media:=0;
Contador:=-1;
N1:=1;
WHILE (N1 <> 0) DO
BEGIN
WRITELN('Entre o valor para
se calcular a media dos numeros');
READLN (N1);
Soma:= Soma + N1;
Contador:= Contador + 1;
END;
Media:= Soma / Contador;
WRITELN('A
media
dos
',
Contador,'numeros e=' , Media:2:2);
READLN;
END.

Exemplo 18: WHILE

2.5.13.2. Comando FOR


Este comando utilizado quando queremos realizar uma operao
durante um nmero fixo e conhecido de vezes. A estrutura do comando for pode
ser vista no Exemplo 19.
FOR <var>:= <limite inferior>
BEGIN
<seqncia de operaes>
END

TO <limite superior>

DO

Exemplo 19: estrutura do FOR

As operaes so realizadas no intervalo determinado sendo


incrementada automaticamente de 1 em 1.
No Exemplo 20, abaixo, calculado a mdia de um grupo de
nmeros, sendo informado a quantidade de nmeros para ser tirado a mdia, e os
seus valores, usando o comando FOR.
Algoritmo: ForMedia
Real : Numero, Soma, Media
Inteiro: I, Quantidade
Incio
Soma Zero
Leia (Quantidade)
Para I = 1 ate Quantidade Faa
Leia (Numero)

PROGRAM ForMedia;
USES CRT;
VAR
Numero,Soma,Media: REAL;
I, Quantidade: INTEGER;
BEGIN
CLRSCR;
Soma:=0;

46

Soma Numero + Soma


Fim Para
Media Soma / Quantidade
Escreva (A media dos Quantidade
nmeros igual a Media)
Fim do Programa.

WRITELN('Entre com a quantidade


de
numeros
para
ser
tirado
a
media');
READLN(Quantidade);
FOR I:= 1 TO Quantidade DO
BEGIN
WRITELN ('Entre com o valor
do ',I,'o numero');
READLN(Numero);
Soma:=Soma+Numero;
END;
Media:= Soma / Quantidade;
WRITELN('A
media
dos
',Quantidade,'
numeros
e=
',Media:2:2);
READLN;
END.

Exemplo 20: FOR

2.5.13.3. Comando REPEAT / UNTIL


usado quando no conhecemos previamente o nmero de vezes
que uma seqncia deve ser repetida.
Neste comando a condio executada pelo menos uma vez, pois a
condio fica aps a seqncia de operaes. A estrutura do comando repeat
pode ser vista no Exemplo 21.
REPEAT
<seqncia de operaes>
UNTIL < condio>
Exemplo 21: estrutura do REPEAT

Calculando a soma dos nmeros de uma seqncia linear


determinada pelo usurio, usando o repeat teremos o cdigo do Exemplo 22.
Algoritmo: Repsoma
Inteiro: Numero, Soma
Incio
Soma 0
Leia (Numero)
Repita
Soma Numero + Soma
Numero Numero -1
At Numero = 0
Escreva (Soma)
Fim do Programa

PROGRAM Repsoma;
USES CRT;
VAR Numero,Soma:INTEGER;
BEGIN
CLRSCR;
Soma:=0;
WRITELN('Entre
com
o
numero da sequencia');
READLN (Numero);
REPEAT
Soma:= Soma+Numero;
Numero:= Numero-1;
UNTIL (Numero=0);
WRITELN
('A
Soma

47

ultimo

desta

sequencia e ', Soma);


READLN;
END.
Exemplo 22: REPEAT

2.5.14. Estruturas de Seleo


So as estruturas de seleo que permite m a escolha de um grupo
de aes a ser executado quando determinadas condies, representada por
expresses lgicas, so ou no satisfeitas.
uma expresso lgica que quando inspecionada, pode gerar um
resultado falso ou verdadeiro. O Exemplo 23 mostra a estrutura de uma seleo.
if (condio) then
Comando nico;
Ou
If (condio) then
begin
Comandos;
End
else
begin
Comandos;
End;
Exemplo 23: estrutura IF

O Exemplo 24 demonstra a utilizao do if. Iremos calcular o


resultado da mdia aritmtica das trs notas do aluno e, caso a mdia for maior
que 6, mostrar o resultado Aprovado e a mdia obtida, caso contrrio,
Reprovado e a sua mdia.
Algoritmo: Ifmedia3
Real : N1, N2, N3, MA
Incio
Leia (N1, N2, N3)
MA (N1+ N2 + N3) / 3
Se MA > 7 ento
Escreva (Aprovado)
Escreva (MA)
Seno
Escreva (Reprovado)
Escreva (MA)
Fim Se
Fim Algoritmo.

PROGRAM Ifmedia3;
USES CRT;
VAR N1,N2,N3,MA: REAL;
BEGIN
CLRSCR;
WRITELN('Entre
com
as
tres
notas do aluno para calcular a
media');
READLN (N1,N2,N3);
MA:= (N1+N2+N3) / 3;
IF MA > 6.0 THEN
BEGIN
WRITELN('O
Aluno
foi

48

Aprovado');
WRITELN('A
sua
media
e=
',MA:2:2);
END
ELSE
BEGIN
WRITELN('O
Aluno
foi
Reprovado');
WRITELN('A sua media e=
',MA:2:2);
END;
READLN;
END.
Exemplo 24: IF

2.5.15. Sub-rotinas
Quando se necessita construir um grande sistema, deve-se dividir tal
programa em partes, sendo ento desenvolvida cada parte em separado. Depois,
tais partes so acopladas para formar o sistema. Essas partes, em que o
programa particionado e desenvolvido parte, so o que chamamos de subrotinas.
Sub-Rotina , ento, um pedao de cdigo computacional que
executa uma funo bem definida, sendo que esta sub-rotina pode ser utilizada
vrias vezes no programa.
Uma procedure um tipo de sub -rotina que ativada atravs da
colocao de seu nome em alguma parte do programa. Desta forma, assim que o
nome de uma procedure encontrado, ocorre um desvio no programa, para que
os comandos da sub-rotina sejam executados. Ao trmino da sub -rotina, a
execuo retornar ao ponto subseqente chamada da procedure. No Exemplo
25 vemos a definio da procedure EscreverNoVideo, que responsvel por
escrever a palavra fim na tela.
PROGRAM Teste;
PROCEDURE
BEGIN

EscreveNoVideo;

49

WRITE(fim);
END;
BEGIN
READ(N);
EscreveNoVideo;
END.
Exemplo 25: estrutura de uma PROCEDURE

2.5.16. Variveis Globais e Locais


Damos o nome de variveis globais para aquelas variveis que so
definidas logo aps o comando var do programa principal, sendo desta forma
visveis em qualquer parte do programa.
Damos o nome de variveis locais s variveis que so declaradas
dentro de uma sub-rotina, sendo que as mesmas s podem ser manipuladas
dentro da sub-rotina que as declarou, no sendo visveis em nenhuma outra parte
do programa.

2.5.17. Passagem de Parmetros


Para ativar uma sub-rotina, como visto anteriormente, basta colocar
o seu nome em alguma parte do programa. As sub-rotinas foram criadas para
serem genricas o bastante para se adaptarem a qualquer situao, visando
justamente a possibilidade de reutilizao do cdigo. Para isso, precisamos
entender o que chamamos de passagem de parmetro que justamente a
passagem de informaes para uma determinada sub-rotina para serem utilizadas
em seu interior. O Exemplo 26 traz uma procedure que utiliza passagem de
parmetro.
PROGRAM Teste;
VAR
Nmero
Funcionrio

: INTEGER;
: STRING;

50

PROCEDURE EscreveNome(N : INTEGER; Nome : STRING);


VAR I : INTEGER;
BEGIN
FOR i : = 1 TO n DO
BEGIN
WRITE(Nome);
END;
END;
BEGIN
READ(Nmero, Funcionrio);
EscreveNome(Nmero, Funcionrio);
END.
Exemplo 26: passagem de parmetro

Variveis do mesmo tipo so separadas por vrgulas (,) e variveis


de tipos diferentes so separadas por ponto e vrgula (;). Os nomes dados aos
parmetros no necessitam serem iguais s variveis passadas para sub-rotina.
Temos dois tipos de passagem por parmetro:
a) Passagem de parmetros por valor: qualquer alterao no
contedo de um parmetro, dentro de uma sub -rotina, no ser refletido no
programa chamado.
b) Passagem de parmetros por referncia: quando a alterao no
contedo de um parmetro, dentro de uma sub-rotina, se reflete no programa que
chamou. Os parmetros a serem passados por referncia devero ter, na
definio da sub-rotina, colocado na frente do nome do parmetro, a palavra var.

2.5.18. Funo
Uma sub-rotina do tipo function possui as mesmas caractersticas de
uma procedure no que se refere a passagem de parmetros, variveis globais e
locais, mas possui uma importante diferena, que o retorno de um valor ao
trmino de sua execuo, ou seja, uma function sempre dever retornar um valor
a quem a chamou.
51

Na definio de uma function, dever ser informado qual o tipo do


valor retornado. O Exemplo 27 traz a estrutura de uma function.
function <nome>(<parmetros>):<tipo que ir retornar>;
Exemplo 27: estrutura de uma FUNCTION

Para informar qual o valor deve ser retornado, deve ser colocada,
em algum ponto do cdigo da function, uma linha com a seguinte sintaxe do
Exemplo 28.
result := <valor a ser retornado>;
Exemplo 28: valor a ser retornado pela FUNCTION

52

2.6.

Delphi

2.6.1. Introduo
O nome Delphi faz referncia Delphos, o nome da localidade onde
se situava um templo dedicado ao Deus Apolo. Nesse local, havia um orculo
para onde os cidados gregos se dirigiam para perguntar sobre o futuro s
Pitonisas, videntes do local.
Essa a origem do nome dado ao ambiente de desenvolvimento de
aplicaes, orientado a objeto, que permite o desenvolvimento de poderosas
aplicaes baseadas no MS Windows com o mnimo de codificao. Ele foi criado
pela Borland em 1995. Incorpora modernos conceitos de programao visual
combinados aos poderosos recursos da linguagem Object Pascal.
O Delphi (e os compiladores da Borland) utili za um compilador
extremamente otimizado, oriundo de mais de uma dcada de experincia em
compiladores para a linguagem Pascal, da qual deriva.
A linguagem Delphi considerada como uma das mais completas e
abrangentes j criadas at hoje, incluindo recursos como orientao a objetos,
blocos protegidos, tratamento de excees, eventos, propriedades, entre outros.
O Delphi oferece ferramentas de desenvolvimento, tais como
templates de aplicaes e forms (janelas), que permitem criar e testar
rapidamente o prottipo de aplicaes. Pode-se utilizar o conjunto de
componentes e cdigo gerado para transformar prottipos em aplicaes robustas
que satisfaam s necessidades. Alm disso, tambm possui ferramentas de
bancos de dados que permitem desenvolver aplicaes Client/Server e relatrios.
As ferramentas de bancos de dados permitem a visualizao de dados
53

dinamicamente durante o desenvolvimento para que verifique imediatamente se


os resultados das consultas esto de acordo com os objetivos almejados.

2.6.2. Conceitos Bsicos do Ambiente Delphi


As caractersticas bsicas da programao orientada a objetos se
resumem em classes. Cada classe um tipo de dado definido pelo usurio,
contendo mtodos como funes e procedimentos. Cada objeto pertence a uma
classe e cada componente um objeto, que contm propriedades, mtodos e
eventos.

2.6.3. Ambientes de Desenvolvimento


Um ambiente de desenvolvimento consiste na combinao de uma
srie de aplicativos habilitados para escrita de cdigo fonte, compilao,
depurao e entrega de aplicativos. Em geral possuem estreita ligao com a
linguagem de programao, sendo em muitos casos chamados de Ambientes
Integrados de Desenvolvimento (AID). O conceito de AID permitiu um grande
salto de qualidade no desenvolvimento de aplicaes, possibilitando depuraes
iterativas, acompanhamento passo a passo da execuo dos aplicativos, melhor
compreenso do cdigo como um todo e outras vantagens. Mais recentemente,
este conceito foi expandido para incorporar as facilidade de Desenvolvimento
Rpido de Aplicaes. Os ambientes pertencentes a esta categoria, na qual o
Borland Delphi se inclui, permitem que o programador especifique manualmente o
posicionamento dos componentes de um aplicativo e associe trechos de cdigo a
eventos destes componentes.

54

2.6.4. Caractersticas do Delphi


O Delphi consiste de vrios elementos, ferramentas de design e de
banco de dados para auxili-lo a desenvolver e testar suas aplicaes de forma
rpida e intuitiva. A seguir descrevemos algumas caractersticas do Delphi:

Construtor Visual de Interface com o Usurio: o IDE permite


criar visualmente aplicaes Client/Server de forma rpida
atravs da seleo de componentes em paletas.

Arquitetura Baseada em Componentes: os componentes


asseguram que as aplicaes Delphi sejam robustas,
reutilizveis e de fcil manuteno.

Compilador de Cdigo Nativo de Alta Performance: o


compilador gera cdigo otimizado de mquina ao invs de pcode interpretado e lento, fazendo com que as aplicaes
sejam at vinte vezes mais rpidas.

Tow-Way Tools : a capacidade de alternar entre um form e


seu cdigo permite que o desenvolvedor trabalhe tanto na
edio de texto como no modo de design visual atravs de
total sincronizao do cdigo fonte com a representao
visual.

Biblioteca de Componentes Visuais (VCL-Visual Component


Library) : consiste de objetos reutilizveis incluindo objetos
padro de interface com o usurio, gerenciamento de dados,
grficos, multimdia, gerenciamento de arquivos e quadros de
dilogo padro.

55

Arquitetura Aberta: a arquitetura do IDE permite adicionar


componentes e ferramentas personalizadas e de terceiros.

Linguagem Orientada a Objetos: o Delphi utiliza o Object


Pascal, que oferece a facilidade de programao em 4GL de
alto nvel com a performance e poderio de um 3GL.

Suporte Tecnologia do Windows: o Delphi compatvel com


a tendncia da tecnologia Windows, incluindo suporte a OLE
2.0, DDE, VBXs e ODBC.

Debugador Grfico: o Debugger permite encontrar e eliminar


"bugs" em seu cdigo.

Edio Estilo Brief: o Editor permite a utilizao de um


conjunto de smbolos para expresses.

Ambiente Personalizvel: a opo de menu Environment


Options permite personalizar seu ambiente para o mximo de
produtividade.

Object Browser: permite a visualizao da hierarquia dos


objetos na visual component library.

Gerenciador de Projetos: o Project Manager oferece uma


visualizao de todos os forms e units de um determinado
projeto e oferece um mecanismo conveniente para gerenciar
projetos.

2.6.5. Escrevendo Aplicaes


2.6.5.1. Estrutura do Cdigo

56

Aplicaes escritas em Delphi so tambm chamadas de projetos,


podendo estar divididas em uma ou mais unidades (arquivos de cdigo)
separadas. Uma vez que a linguagem Delphi deriva da linguagem Pascal, cada
unidade de cdigo pode conter diversos tipos de smbolos, tais como funes,
procedimentos, classes declaraes de variveis, etc.
Entretanto, a linguagem Pascal no possui suporte para gerao de
aplicaes visuais, o que faz com que algumas consideraes especiais sejam
feitas quando se escreve cdigo em Delphi.
Para todos os diferentes tipos de janelas que um programa possa
exibir deve haver uma classe que implemente suas funes. O ambiente Delphi
prov uma classe denominada TForm que implementa todas as funes bsicas
de uma janela comum do ambiente Windows, maximizao, criao, fechamento
e outras mais, sendo indicada como classe bsica para qualquer classe que
implemente quaisquer tipos de janela.
Por este motivo, quando o usurio adiciona um novo modelo de
janela ao seu projeto, o Delphi automaticamente cria uma nova classe herdada de
TForm e a associa a esta janela. Desta forma, mesmo que o usurio no escreva
cdigo algum, j ter um modelo de janela disponvel a partir do qual poder criar
vrias instncias durante a execuo de seu programa.
Quando se abre um projeto no Delphi, ele j mostra uma unit com
vrias linhas de cdigo. Um projeto Delphi tem, inicialmente, duas divisrias: uma
unit, que associada a um Form, e outro projeto, que engloba todos os Form e
unit da aplicao.

57

Em Delphi, temos: o Project, os Forms e as Units. Para todo Form


temos uma Unit (Cdigo do Form), mas temos Units sem form (cdigos de
procedures, funes, etc).

2.6.5.2. Arquivos de uma Aplicao


Na Tabela 11, a seguir, so descritas as definies e funes de tais
arquivos.
Extenso do
Definio
Arquivo
.DPR
Projeto

Funo

.PAS

Cdigo fonte da Unit


(Object Pascal)

.DFM

Arquivo grfico
formulrio

.OPT

opes do projeto

.RES

Recursos
do
Compilador
Backup do Projeto
Backup da Unit
Backup do Arquivo
grfico do formulrio

.~DPR
1
.~PAS
1
.~DFM

.DSK

do

Situao da rea de
Trabalho

Cdigo fonte em Pascal do arquivo principal do projeto.


Lista todos os formulrios e units no projeto, e contm
cdigo de inicializao da aplicao. Criado quando o
projeto salvo.
Um arquivo .PAS gerado por cada formulrio que o
projeto contm. Seu projeto pode conter um ou mais
arquivos .PAS associados com algum formulrio.
Contem todas as declaraes e procedimentos
incluindo eventos de um formulrio.
Arquivo binrio que contm as propriedades do
desenho de um formulrio contido em um projeto. Um
.DFM gerado em companhia de um arquivo .PAS
para cada formulrio do projeto.
Arquivo texto que contm a situao corrente das
opes do projeto. Gerado com o primeiro salvamento e
atualizado em subsequentes alteraes feitas para as
opes do projeto.
Arquivo binrio que contm o cone, mensagens da
aplicao e outros recursos usados pelo projeto.
Gerado quando o projeto salvo pela segunda vez.
Se um .PAS alterado, este arquivo gerado.
Se for aberto um. DFM no editor de cdigo e o
f r feita
alguma alterao, este arquivo gerando quando se
salva o arquivo.
Este arquivo armazena informaes sobre a situao da
rea de trabalho especifica para o projeto em opes de
ambiente(Options Environment).

[1]: so arquivos de backup (menu Tools, Editor Options..., guia Display, opo Create
Backup Files).
Tabela 11: arquivos de uma aplicao

Devido a grande quantidade de arquivos de uma aplicao, cada


projeto deve ser montado em um diretrio especfico.

58

2.6.5.3. Arquivos Gerados pela Compilao


Quando feita a compilao do projeto, so criados os arquivos
listados na Tabela 12.
Extenso Arquivo
.EXE

.DCU

Definio
Arquivo
compilado
executvel

Funo
Este um arquivo executvel distribuivel de sua
aplicao. Este arquivo incorpora todos os arquivos
.DCU gerados quando sua aplicao compilada. O
Arquivo .DCU no necessrio distribuir em sua
aplicao.
Cdigo objeto A compilao cria um arquivo .DCU para cada .PAS no
da Unit
projeto.
Tabela 12: arquivos gerados na compilao

2.6.5.4. Exemplo de Aplicao


Para um projeto intitulado Notepad, por exemplo, contendo uma
unidade chamada MainWnd associada a um modelo de formulrio, outra
chamada de About tambm associada a um formulrio e uma terceira unit
chamada de Search, teramos os seguintes arquivos gravados em disco:
Arquivos
NOTEPAD.DPR
NOTEPAD.CFG
NOTEPAD.RES

MAINWND.PAS
MAINWND.DFM
ABOUT.PAS
ABOUT.DFM
SEARCH.PAS

Representao
Arquivo de projeto da aplicao. Nada mais do que o mdulo program de
um programa escrito em pascal
Opes de compilao do aplicativo, tais como forma de otimizao,
gerao de tabelas de smbolos e outros.
Contm os recursos do aplicativo final. Recursos so cones, bitmaps,
tabelas de strings e outros elementos comuns a programas escritos para o
ambiente Windows
Cdigo fonte da unidade MainWnd
Representao binria do formulrio contido na unidade MAINWND.PAS
Cdigo fonte da unidade About
Representao binria do formulrio contido na unidade ABOUT.PAS;
Cdigo fonte da unidade SEARCH
Tabela 13: exemplo de arquivos de uma aplicao

Com um projeto e unidades definidos desta forma, a aplicao final


receberia o nome de NOTEPAD.EXE, contendo o cdigo compilado de todas as

59

unidades alm das descries de formulrios contidos nos arquivos de extenso


DFM e dos recursos contidos em NOTEPAD.RES.

2.6.5.5. O Arquivo de Projeto (*.DPR)


Os arquivos de extenso DPR so gerados automaticamente
quando o programador pede a criao de um novo projeto e, tambm, atualizados
automaticamente quando o usurio altera os nomes dos formulrios ou unidades
envolvidos no projeto.
Neste arquivo est escrito o cdigo de criao da aplicao e seus
formulrios. O arquivo Project tem apenas uma seo.
Esta seo formada pelo seguinte cdigo:

PROGRAM - define o Projeto;

USES - clusula que inicia uma lista de outras unidades;

Forms - a unidade do Delphi que define a classe TForm;

In - clusula indica ao compilador onde encontrar o arquivo


referente a Unit;

Unit1 - unidade que criada;

{$R *.RES} - diretiva de compilao que inclui o arquivo de


recursos.

O Exemplo 27 traz o cdigo de um projeto.


program Notepad;
uses
Forms,
Mainwnd in 'MAINWND.PAS' {FormBlocoNotas},
About in 'ABOUT.PAS' {AboutBox},
Search in 'SEARCH.PAS';
{$R *.RES}

60

begin
Application.Title := 'Bloco de Notas Sythus';
Application.CreateForm(TFormBlocoNotas,
FormBlocoNotas);
Application.Run;
end.

Exemplo 29: projeto

2.6.5.6. As Unidades (*.PAS)


Uma

unidade

pode

conter

declaraes

de

tipos,

variveis,

constantes e classes. Tambm pode conter declaraes e as respectivas


implementaes de procedimentos e funes.
Nestes arquivos sero escritos os cdigos dos seus respectivos
forms (Unit1 = Form1). Aqui so definidos os cdigos de cada procedimento dos
componentes que se colocar no form.

Seo Unit - declara o nome da unit.

Seo Uses - contm as units acessadas por este arquivo.

Seo Interface - nesta seo esto s declaraes de


constantes, tipos de variveis, funes e procedimentos
gerais da Unit/Form. As declaraes desta seo so visveis
por qualquer unit. Esta seo formada pelo seguinte cdigo:

- INTERFACE - palavra que inicia a seo;


- USES - clusula que inicia uma lista de outras unidades
compiladas (units). Ser adicionado automaticamente as units necessrias aos
componentes que foram inseridos no formulrio, mas caso declare uma varivel
de um tipo em que a definio esteja em outra unit ou precise de um
procedimento que igualmente no esteja presente nas units declaradas, ser
necessrio adicionar manualmente.
61

Seo Type - declara os tipos definidos pelo usurio.


Subsees: Private, declaraes privativas da Classe; e
Public declaraes pblicas da Classe.

Seo Var - Declara as variveis pblicas.

Seo Implementation - contm os corpos das funes e


procedimentos declarados nas sees Interface e Type.
Nesta seo tambm esto definidos todos os procedimentos
dos

componentes

que

esto

includos no Form.

As

declaraes desta seo so visveis apenas por ela mesma.


Esta seo formada pelo seguinte cdigo:
- {$R*.DFM} - diretiva de compilao que inclui toda a interface,
propriedades do Form e componentes do arquivo *.DFM;
- Seo uses adicional - serve para declarar Units que sero
necessrias a esta;
Inicialization - nesta seo, que opcional, pode ser definido um
cdigo para proceder as tarefas de inicializao da Unit quando o programa
comea. Ela consiste na palavra reservada inicialization seguida por uma ou mais
declaraes para serem executadas em ordem.
O Exemplo 30 traz o cdigo de uma unit.
unit About;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TAboutBox = class(TForm)
Panel1: TPanel;

62

OKButton: TBitBtn;
ProgramIcon: TImage;
ProductName: TLabel;
Version: TLabel;
Copyright: TLabel;
Comments: TLabel;
procedure OKButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.DFM}
procedure TAboutBox.OKButtonClick(Sender: TObject);
begin
Close;
end;
end.

Exemplo 30: estrutura de uma Unit

2.6.5.7. Eventos
A linguagem Delphi, assim como a maioria das linguagens
desenvolvidas para o ambiente Windows, suporta tambm o conceito de
orientao a eventos.
Isto significa que o cdigo escrito pelo usurio no possui uma
seqncia clara de execuo, como teria em uma linguagem tradicional para o
ambiente DOS.
Um bom exemplo pode ser a entrada de caracteres em um campo
comum de texto. Normalmente, em uma linguagem convencional, o usurio
precisaria escrever uma rotina que lesse uma seqncia de caracteres um a um e
os colocasse em uma string final. Caso precisasse que algum caractere tivesse
63

algum tipo de tratamento especial, por exemplo, a tecla enter para indicar o final
da entrada, tambm precisaria adicionar este cdigo dentro da seqncia de
leitura.
No Delphi j existe um cdigo padro para entrada de caracteres em
uma classe de nome TEdit. Dentro deste cdigo padro, a cada caractere lido, a
biblioteca verifica se o usurio escreveu alguma rotina para tratar os caracteres
individualmente e, caso exista, ele a chama. Em outras palavras, o usurio
escreve um tratador (a rotina) para um evento (o caractere digitado).
Estes tratadores so implementados como mtodos da classe
associada ao formulrio que contm os componentes que geram os eventos e
no como mtodos do prprio componente.
No cdigo abaixo gerado para um formulrio que contm um nico
boto, o tratador associado ao evento clicar (click) do boto implementado como
mtodo da classe associada ao formulrio e no como um mtodo da classe
BitBtn, que define o boto.
unit About;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TDlgAbout = class(TForm)
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
end;

implementation

{$R *.DFM}

64

procedure TDlgAbout.BitBtn1Click(Sender: TObject);


begin
Close;
end;

end.

Exemplo 31: evento

Uma vez que um tratador de eventos nada mais do que um


mtodo de uma classe, necessrio que a informao da associao entre o
tratador e o evento fique gravada no arquivo de descrio do formulrio (.DFM) .
Isso significa tambm que uma vez desfeita a associao entre um
tratador e um evento, o cdigo no removido automaticamente pelo ambiente,
podendo ser perfeitamente utilizado por outras rotinas de seu programa, desde
que chamadas diretamente pelo cdigo do usurio.

2.6.6. Elementos Visuais


O Integrated Development Environment (IDE) do Delphi consiste de
diversos elementos ou ferramentas visuais. Uma vez acostumados a estes
elementos, pode-se comear a desenvolver aplicaes.
Os principais elementos visuais, que sero vistos em maiores
detalhes, so: Form, Component Palette , Object Inspector, Code Editor,
SpeedBar e On-Line Help .

2.6.6.1. Form
A utilizao de form a caracterstica central das aplicaes Delphi.
Quando o Delphi aberto, um form se torna uma janela em sua aplicao.
Quando estiver desenvolvendo a interface de usurio de uma aplicao,
65

adicionar-se-o itens chamados de componentes ao seu form. Um componente


um objeto Delphi, tal como um label ou edit box. O formulrio uma janela, e,
portanto, possui os atributos de uma janela (menu de controle, botes de
maximizar e minimizar, barra de ttulo, bordas redimensionveis). Quando se
inicializa o Delphi, um form em branco com nome de Form1 aparece, como
mostrado na Figura 11.

Figura 11: Form em branco

2.6.6.2. Component Palette (Palheta de Componentes)


composto de vrias pginas contendo, cada uma, um grupo de
componentes reunidos por funo ou utilizao. Esses componentes so
utilizados para construir a interface com o usurio.
Um ponto chave do Delphi que ele permite a criao de seus
prprios componentes e personalizao da Componente Palette. O usurio pode
adicionar ou remover componentes da paleta, bem como criar uma nova pgina
na paleta. A Component Palette aparece abaixo da barra de menu, direita. Em
destaque na Figura 12.

66

Figura 12: Component Palette

Quando se clica com o mouse sobre uma aba de pgina, exibido o


grupo de componentes da pgina.

2.6.6.3. Object Inspector (Inspetor de Objetos)


O Object Inspector trabalha de acordo com o componente
selecionado.

Uma vez selecionado um componente, o Object Inspector

automaticamente exibe as propriedades e eventos que podem ser utilizados para


o componente. As propriedades e eventos permitem personalizar os componentes
visualmente sem a necessidade de codificao.
Os menus so dinmicos no tocante em que somente as
propriedades e eventos que se aplicam aos componentes selecionados
aparecero.

Se

mltiplos

componentes

so

selecionados,

somente

as

propriedades e eventos compartilhados por todos os componentes aparecero no


Object Inspector. A figura abaixo mostra o Object Inspector.

67

Seletor de Objetos
(mostra o nome e o tipo
de objeto selecionado)
Pgina de Propriedades

Pgina de Eventos

Coluna de Propriedades
Coluna de Valores

Propriedades aninhadas

Figura 13: Object Inspector

A pgina propriedades permite que se estabelea parmetros de


formulrios e componentes. Estes parmetros especificam os valores iniciais de
caractersticas, como nome do componente e sua posio no formulrio.
A pginas eventos permite associar os componentes com aes
(procedimentos) definidas pelo usurio.

2.6.6.4. Code Editor (Editor de Cdigo)


No processo de desenvolvimento, aps atribuir propriedades e
eventos a cada componente adicionado ao Form, o Code Editor utilizado. O
Code Editor um editor de texto que exibe o cdigo fonte que o desenvolvedor
escreve ou que o Delphi gera para criar uma aplicao. O cdigo fonte aparece

68

em um arquivo chamado UNIT.PAS que um dos tipos de arquivos que compe


um projeto do Delphi.
O Code Editor oferece comandos de edio, Help sensvel ao
contexto e as seguintes caractersticas de edio: sintaxe de destaque colorida,
desfazer (undo) ilimitado, marcao de bloco de coluna e toques de teclado
personalizveis.
O Code Editor aparece no arquivo unit, que posicionado atrs do
Form1 default quando o Delphi iniciado. Quando um duplo clique dado em um
evento na pgina Events do Object Inspector, o Code Editor automaticamente
torna-se a janela ativa para que se possa digitar o cdigo para manipular o
evento. O Code Editor pode exibir mltiplos arquivos unit.
Uma unit utilizada para organizar as declaraes de programao
do Delphi. Por exemplo, procedures utilitrias podem ser agrupadas como uma
unit. Um form organizado como uma unit.
O arquivo default, Unit1.PAS, aparece na janela do Code Editor,
como pode ser visto na Figura 14.

69

Figura 14: Code Editor

2.6.6.5. SpeedBar
A SpeedBar feita de botes que economizam tempo, permitindo
que, com um clique, possam ser executadas operaes e comandos mais
comuns. A SpeedBar aparece abaixo da barra de menu, esquerda, e consiste
dos seguintes botes:

Figura 15: SpeedBar

A SpeedBar totalmente personalizvel. Pode-se adicionar ou


remover botes. A Figura 15 representa a configurao default da SpeedBar, cuja
descrio de cada um desses botes mostrada na Tabela 14.

70

Boto
New

Descrio
Possibilita a criao de um item
Abre um arquivo existente

Open File

Grava o arquivo. Arquivos unit e form so ligados.


Gravando um, grava-se o outro
Salva todas as alteraes no projeto e suas units

Save File
Save All
Open Project
Add File to Project
Remove File From Project
Help Contents
Select Unit From List
Select Form From list

Abre um projeto existente


Adiciona um novo arquivo ao projeto
Remove o arquivo selecionado no Project Manager da
clusula uses do arquivo de projeto corrente
Chama a ajuda do sistema
Seleciona uma unit da lista das units existentes
Seleciona um form da lista de forms existentes

Exibe o from inativo associado com a unit ativa, ou viceToggle Between a Form and
versa
Unit
Cria um form em branco e uma nova unit associada para
New form
ser adicionado ao projeto
Compila e executa sua aplicao
Run
Interrompe momentaneamente a execuo da aplicao
Pause
Executa um programa, uma linha por vez e executa cada
Trace into
linha de uma procedure
Executa um programa, uma linha por vez e pula as
Step over
procedures executando-as como uma nica unit
Tabela 14: botes do SpeedBar

2.6.6.6. Help On-Line


O Help On-Line uma grande fonte de referncia sobre o Delphi. No
menu Help, os itens Contents e Topic Search so comuns s aplicaes MS
Windows, mas documentam o produto to bem que pode-se utiliz-lo no lugar de
uma cpia impressa. O Contents, em particular, inclui um glossrio, que
especialmente til para uma referncia rpida sobre o significado de termos.
A Figura 16 mostra o menu Help:

71

Figura 16: help

A ajuda sensvel ao contexto est disponvel para cada elemento na


interface. Pressionando F1 sobre um elemento destacado exibida a descrio
deste elemento. Por exemplo, se Form1 estiver destacado e for pressionado a
tecla F1, a descrio do componente TForm (tipo de objeto) aparece, incluindo as
propriedades, mtodos, eventos e tarefas associadas a ele. O Help sensvel ao
contexto tambm est disponvel quando o Code Editor for exibido e oferece
auxlio na sintaxe da linguagem, palavras reservadas, e assim por diante.

2.6.7. Suporte a Programao Orientada a Objeto


Como j comentado anteriormente, as caractersticas bsicas da
programao orientada a objetos se resumem em Classes. Cada classe um tipo
de dado definido pelo usurio, contendo mtodos como funes e procedimentos.
Cada objeto pertence a uma classe e cada componente um objeto, que contm
propriedades, mtodos e eventos.
A propriedade (property) funciona como se fossem os parmetros do
objeto, como dentre outros: cor, ttulo, texto, alinhamento, tamanho e posio.
Algumas propriedades podem ou devem ser modificadas em tempo de projeto,
72

outras so propriedades apenas de leitura, ou seja, s retornam caractersticas


especficas sobre o objeto atual no momento solicitado.
Os mtodos (methods) so os comandos de execuo do objeto,
executando uma determinada operao disponvel no mesmo. Alguns exemplos
de mtodos so: executar, focalizar e localizar.
Os eventos (events) so as reaes de determinado objeto, toda
operao ou modificao neste executa um evento. Atravs dos eventos
disponveis podemos controlar vrios outros objetos.

2.6.7.1. Propriedades
Como vimos, eventos podem estar associados a modificaes em
propriedade de componente e formulrio, ou seja, pode-se modificar propriedades
de formulrios e componentes durante a execuo do sistema. Para isto deve-se
usar a sintaxe: <componente>.<propriedade>;
Por exemplo, para modificar a propriedade text de uma caixa de
edio Edit1 para Bom Dia faz-se: Edit1.Text := Bom Dia;
Se a propriedade do componente tiver sub-propriedades, para
acess-la,

utilize

seguinte

sintaxe:

<componente>.<propriedade>.<sub-

propriedade>
Por exemplo, para modificar a sub -propriedade Name referente a
propriedade fonte, de uma caixa de edio Edit1, para Script, basta fazer:
Edit1.Font.name := Script;

73

2.6.7.2. Eventos
Eventos so aes normalmente geradas pelo usurio, como por
exemplo: o clicar do mouse, pressionar uma tecla do teclado, mover o mouse, etc.
Os eventos podem ser tambm gerados pelo Windows.
Existem eventos associados ao formulrio e cada componente
inserido neste. Exemplos: o OnShow do formulrio ocorre quando mostramos o
formulrio na tela; o componente boto possui o evento OnClick, que ocorre
quando damos um clique com o mouse sobre o boto.

2.7. Delphi Acessando Banco de Dados


2.7.1. Introduo
Uma aplicao de bancos de dados pode ser construda utilizando
as ferramentas de desenvolvimento de banco de dados do Delphi, componentes
da paleta Data Access e Data Control. Para acessar informaes do banco de
dados, o Delphi possui as paletas: BDE (diversos bancos, acesso atravs do
BDE), Interbase (bancos Interbase e Firebird, acesso direto), dbExprees (diversos
bancos, acesso dependente de drivers especficos, os j inclusos so: DB2,
Oracle, Interbase e MySQL) e ADO (bancos MS SQL Server e MS Access,
acesso direto).
A seguir, na Figura 17, ser mostrado a conectividade do Delphi com
os diversos banco de dados.

74

Figura 17: acesso a banco de dados

O acesso atravs do BDE o mais simples e que possibilita acesso


a um nmero maior de diferentes SGBD, mas, em compensao, o mais lento.
As aplicaes de banco de dados que utilizam os componentes da
paleta BDE se comunicam com o Borland Database Engine (BDE), que , por sua
vez, comunica-se com suas outras fontes: dados locais, tais como dBASE,
Paradox e InterBase for Windows; e, dados remotos, tais como Oracle, Sybase e
InterBase

2.7.2. Relacionamento entre o Delphi e a Conectividade de Banco


de Dados
O diagrama da Figura 18 mostra as formas de acesso a bases de
dados mostrando os elementos envolvidos e suas interaes para este acesso.

75

Figura 18: conectividade do BDE

2.7.3. Ferramentas de Bancos de Dados


As seguintes ferramentas a seguir permitem construir aplicaes de
banco de dados que podem trabalhar com arquivos de dados locais ou em um
servidor de rede local: Borland Database Engine (BDE), SQL Links, Database
Desktop, Componentes Data Access e Componentes Data Control. Algumas
destas ferramentas sero abordadas a seguir.

2.7.4. Borland Database Engine (BDE)


O Borland Database Engine (BDE) construdo no Delphi para
oferecer uma conexo entre controles Data Access e dados de vrias fontes,
como Paradox, dBASE, Oracle e InterBase. Bancos de dados, linguagens e
ferramentas da Borland compartilham o mesmo Borland Database Engine. Este
design em comum permite que os componentes sejam intercambiados para
construir um ambiente de aplicao Client/Server que atenda s suas
necessidades.

76

O Borland Database Engine (BDE) uma coleo de DLLs a quem


as aplicaes de banco de dados iro fazer chamadas. Cada estao de trabalho,
que tiver a aplicao de banco de dados instalada, dever ter tambm o BDE
instalado (o Delphi vem com a instalao do BDE para se adicionar a aplicao).
O BDE permite usar tabelas dBase, Paradox ou ODBC em modo
multi-usurio. A verso Cliente/Servidor do Delphi tambm vem com links para
servidores de banco de dados como Oracle, Sybase, MS SQL Server, Informix e
InterBase.

2.7.5. Relacionamento entre o BDE e Outros Produtos Borland


O Borland Database Engine um componente integral do dBASE for
Windows, Paradox for Windows, Delphi e ReportSmith. Tambm est disponvel
como biblioteca API de engine de banco de dados para programadores C e C++.
O Borland Database Engine permite que ferramentas e aplicaes
Borland se conectem, transparentemente, a dados residindo no dBASE, Paradox,
Oracle, Sybase, Interbase, Informix, DB2 e qualquer banco de dados que utilizem
o Open Database Connectivity (ODBC).

2.7.6. Database Desktop


O Database Desktop uma ferramenta de definio e manuteno
de banco de dados que permite consultar, criar, reestruturar, modificar, copiar
tabelas de banco de dados e copiar dados e informaes do dicionrio de dados
de um formato para outro.
O Database Desktop encontrado no menu do Delphi em Tools. Na
Figura 19, mostrado o Database Desktop com a tabela bdesdd.DB aberta.
77

Figura 19: Database Desktop

2.7.7. Descrio do Componente DataSource


O componente DataSource se encontra na pgina Data Access do
Component Palette. Todo dataset (dataset todo componente que representa
informaes em colunas e linhas) precisa estar associado a um componente data
source se suas informaes sero exibidas ou manipuladas em componentes
data-aware (componentes que reconhecem informaes diretas do banco de
dados). Igualmente, cada componente data-aware precisa estar associado a um
componente data source para ser capaz de receber e manipular informaes. O
componente data source tambm responsvel por interligar datasets fazendo
relacionamento mestre-detalhe (master-detail). Na Figura 20 est a representao
esquemtica do que foi dito.

78

Figura 20: esquema de ligao entre Dataset, DataSource e Data Controls

2.7.8. Descrio dos Componentes da Guia BDE


A Tabela 15 descreve alguns componentes da guia BDE.
cone

Propsito
Um objeto Table refere-se a uma tabela de banco de dados. Deve-se
indicar o nome do banco de dados que quer usar na propriedade
DatabaseName (pode ser prprio nome, um alias ou o caminho do diretrio
em que esto os arquivos da tabela). O Object Inspector lista os nomes
disponveis, o que depende da instalao do BDE. Deve-se indicar o nome
do arquivo que contm a tabela na propriedade TableName.
Uma query mais complexa que uma tabela, porque precisa de uma string
de linguagem SQL. O componente Query tambm tem uma propriedade
DatabaseName, mas no uma propriedade TableName. A tabela est
indicada dentro da declarao SQL, armazenada na propriedade SQL.
Permite que aplicaes executem stored procedures do servidor

Ttable

TQuery

StoredProc
TDatabase

TBacthMove

Define uma conexo contnua um banco de dados. Uma propriedade


importante deste componente LoginPrompt que deve ser alterada para
False para que o login de conexo do banco no se abra a cada conexo.
Copia a estrutura de uma tabela ou seus dados. Pode ser utilizado para
mover tabelas inteiras de um banco de dados a outro. especialmente til
em migrao de um banco de dados para outro.
Tabela 15: componentes BDE

A eficincia de uma tabela ou query depende do banco de dados


que estiver sendo utilizado. Dificilmente o componente Table ser mais rpido que
o Query, principalmente quando a aplicao estiver rodando em rede. Mas, para
obter o melhor rendimento da aplicao, deve-se incluir no select da query
somente os campos necessrios e retornar o mnimo de linhas possvel. Caso
79

utilize um comando select * from tabela, a velocidade tender a ser a mesma do


componente Table.
As Queries podem ser utilizadas para unir duas ou mais tabelas e
ver o resultado como se fosse uma nica tabela armazenada no banco de dados.
Enquanto um componente Table refere-se somente a uma tabela do banco de
dados, uma instruo SQL pode produzir qualquer tabela, interligando as tabelas
do banco como resultado. Isso permite que se visualize uma tabela que no
esteja no banco de dados, mas que seja o resultado de uma unio, uma seleo
ou outros clculos.
Quando se opera em um dataset no Delphi (isso se aplica a
qualquer componente que derive da classe dataset), pode-se trabalhar em
diferentes estados, indicados por uma propriedade state especfica, que pode
assumir valores diferentes: dsBrowse (indica que o dataset est em modo normal
de visualizao, utilizado para ver e pesquisar os dados), dsEdit (indica que est
em modo de edio), dsInsert (indica que um novo registro est sendo
adicionado), dsInactive ( o estado de um dataset fechado), dsSetKey (indica que
est preparando uma pesquisa) e dsCalcFields (enquanto se processa um clculo
de campo, ocorre quando h uma chamada a um manipulador de evento
OnCalcField).

2.7.9. Descrio dos Componentes Data Control


Os componentes Data Control do s aplicaes Delphi de banco de
dados uma interface visual consistente, quer a aplicao acesse um arquivo de
banco de dados local ou um servidor remoto.

80

J vimos que possvel conectar uma fonte de dados a um banco


de dados, usando uma tabela ou uma query, mas ainda no sabemos como
mostrar os dados. Para isso, o Delphi tem muitos componentes que se parecem
com os controles normais do Windows, mas que so relacionados com dados.
Por exemplo, o componente DBEdit similar ao componente Edit, e o
componente DBCheckBox corresponde ao componente CheckBox.
A Tabela 16 descreve os componentes Data Control na Component
Palette:
cone
TDBGrid

TDBNavigator
TDBLabel
TDBEdit
TDBMemo

TDBImage
TDBListBox
TDBComboBox
TDBCheckBox
TDBRadioGroup
TDBLookupList
TDBLookupCombo
DBCtrlGrid

Propsito
Permite visualizar e editar dados em formato tabular (tipo planilha). Faz
uso extensivo das propriedades do Tfield para determinar a visibilidade
de uma coluna, modo de exibio, e assim por diante. Ela permite
rolagem e navegao e pode-se editar seu contedo
um conjunto de botes usados para navegar e executar aes no
banco de dados
usado para exibir o contedo de um campo que no pode ser
modificado. a verso data-aware do componente TLabel
Permite exibir ou editar um campo de um registro ativo. a verso
data-aware do componente TEdit
usado para permitir que o usurio veja e modifique um grande campo
de texto, eventualmente armazenado em um campo memo ou BLOB
(que significa, em ingls, Grande Objeto Binrio). a verso dataaware do componente TMemo
Permite exibir, recortar, ou colar imagens bitmap BLOB para e de um
registro ativo. a verso data-aware do componente TImage
Permite exibir valores de uma coluna de uma tabela. a verso dataaware do componente TListBox
Permite exibir ou editar valores de uma coluna de uma tabela. a
verso data-aware do componente TComboBox
Permite exibir ou editar um campo de dado Booleano de um registro
ativo. a verso data-aware do componente TCheckBox
Permite exibir ou definir valores de colunas. a verso data-aware do
componente TGroupBox populado com radio buttons
Permite exibir dados de uma tabela de busca durante a execuo. a
verso data-aware do componente TListBox
Permite exibir dados de uma tabela de busca durante a exibio. a
verso data-aware do componente TComboBox
uma grade multi-registro, que pode acomodar diversos outros
controles relacionados com dados. Estes controles so duplicados
para cada registro do data set
Tabela 16: componentes Data Controls

Todos esses componentes so conectados fonte de dados usando


a propriedade correspondente, DataSource. Muitos deles referem-se a um campo
81

de dados especfico da fonte, com a propriedade DataField. Uma vez a


propriedade DataSource selecionada, a propriedade DataField ter uma lista de
valores disponveis na caixa de opes do Object Inspector.
Na Figura 21

mostrado um esquema de conexo dos

componentes Data Control, Data Source, DataSets, BDE e Banco de dados.

Figura 21: conexo entre Data Control, Data Source, DataSets, BDE e Banco de Dados

2.7.10. Usando DataSets


As classes de componentes TTable e TQuery so descendentes de
TDataset atravs do TDBDataSet. Esta classe de componente herda uma parte
de propriedades, mtodos e eventos.

2.7.10.1. Abrindo e Fechando DataSets


Antes que uma aplicao possa acessar dados atravs de um
dataset, este deve ser aberto. Existem dois meios para abrir o dataset:

82

Ativando a propriedade active para true, isto pode ser feito


atravs do Object Inspector ou programavelmente em tempo
de execuo, com o seguinte cdigo: Table1.Active := True;

Chamando o mtodo Open em tempo de execuo:


Table1.open;

Para fechar o dataset, usam-se meios semelhantes aos da abertura,


alterando-se apenas a pripriedade para false e o mtodo para close.

2.7.10.2. Navegando no Dataset


As principais propriedades e mtodos de navegao no dataset
podem ser vistos na Tabela 17.
Mtodo ou Propriedade
Mtodo First
Mtodo Last
Mtodo Next
Mtodo Prior
Propriedade BOF
Propriedade EOF
Mtodo MoveBy(n)

Descrio
Move o cursor para a primeira linha em um dataset.
Move o cursor para a ultima linha em um dataset.
Move o cursor para a prxima linha em um dataset.
Move o cursor linha anterior em um dataset.
True quando o cursor est no inicio do dataset, em outro caso
false.
True quando o cursor est no final do dataset, em outro caso
false.
Move o cursor para n linhas a frente em um dataset, quando n
um numero inteiro positivo ou negativo.

Tabela 17: propriedades e mtodos de navegao

Como exemplo, para mover o cursor para o ltimo registro da tabela,


deve-se executar o seguinte comando: Table1.Last;

2.7.10.3. Modificando Dados no Dataset


Os mtodos mostrados na Tabela 18, abaixo, habilitam uma
aplicao para inserir, atualizar e deletar dados no dataset.
Mtodo
Append

Descrio
Comfirma qualquer dado pendente e move um registro em branco
para o final do dataset, e coloca o dataset em estado de Insert.

83

Cancel
Delete
DeleteTable
Edit
EmptyTable
Insert

Cancela a operao corrente e coloca o dataset em estado de Browse.


Apaga o registro corrente e coloca o dataset em estado de Browse.
Apaga uma tabela
Coloca o dataset em estado de edio.
Esvazia uma tabela.
Confirma qualquer dado pendente, e coloca o dataset em estado de
insero.
Tentativa para confirmar um registro novo ou alterado. Se sucesso, o
dataset e colocado em estado de Browse; se insucesso, o dataset fica
no estado corrente.
Atualiza a viso do banco de dados.

Post

Refresh

Tabela 18: mtodos para modificar um dataset

2.7.10.4. Lendo Valores do Campo


Existem algumas maneiras de ler dados de um dataset, algumas
delas encontram-se no Exemplo 32.
Edit1.text := Table1Nome_Clie.asstring;
Edit1.text := Table1.Fields[1].asstring;
Edit1.text := Table1.FieldByName(Nome_Clie).asstring;
Exemplo 32: formas de ler dados

Para associar outros tipos de campos, que no texto, a uma caixa de


edio (que s aceita valores do tipo string), devemos utilizar propriedades de
converso do componente TField: AsBoolean, AsDataTime, AsFloat (Real),
AsInteger, AsString.
Para atribuir valores aos campos de um dataset, o procedimento o
mesmo, s que no sentido inverso, desde que a tabela esteja em modo de edio
ou insero.

2.8. Conexo do Delphi com Interbase/Firebird


O

Delphi

oferece

acesso

direto

aos

bancos

de

dados

Interbase/Firebird, o que torna as operaes mais rpidas e seguras. A paleta de

84

componentes responsvel pela interao com bancos de dados Interbase/Firebird


a InterBase, como exibido na figura abaixo.

Figura 22: componentes InterBase

2.8.1. Montando uma Conexo


Para

estabelecer

uma

conexo

com

banco

de

dados,

precisaremos dos componentes: IBDatabase e IBTransaction.


O componente IBDatabase tem como funo fazer a conexo com o
banco. Ele possui uma janela que facilita sua configurao, como visto na Figura
23. Nela, iremos localizar o banco de dados que iremos nos conectar, definir o
User Name e Password, que no Interbase/Firebird tem como padro sysdba e
masterkey respectivamente, escolher o Character Set em que o banco de dados
foi criado e desmarcar a opo de exibir o Login Prompt. Confirmando essas
informaes, toda a configurao deste componente estar concluda. Alm da
configurao feita neste editor, necessrio definir a propriedade default
transaction que far a associao do IBDatabase ao IBTransaction.

85

Figura 23: propriedades do banco de dados

O componente IBTransaction tem como funo controlar as


transaes das execues dos comandos SQL no banco de dados. Da mesma
forma, teremos uma janela para facilitar a configurao do componente,
oferecendo quatro tipos de configuraes de transao, como exibido na Figura
24. Desejando, pode-se definir outros parmetros de configuraes, mas vamos
nos ater e m explicar os tipos de configurao padro oferecidos nesta janela:

Snapshot: por default esta configurao define os parmetros


concurrency e nowait, o que significa que as transaes
estaro cientes das outras transaes e no iro esperar que
os locks nos registros afetados pelas outras transaes sejam
liberados, retornando um erro quando isto ocorrer.

Read Committed: esta configurao define os parmetros


read_committed, rec_version e nowait. Assim a transao
86

ler as mudanas feitas pela transao corrente, poder ler


as informaes mais recentes das transaes j confirmadas
e no ir esperar pela liberao dos registros em lock.

Read-Only Table Stability: define os parmetros read e


consistency. Isso ir fazer com que a transao leia uma
tabela especfica e bloqueie as demais transaes.

Read-Write Table Stability: define os parmetros write e


consistency. Isso ir fazer com que a transao possa ler e
escrever em uma tabela especfica e bloqueie as demais
transaes.

Figura 24: propriedades das transaes

2.8.2. Acessando Dados


Para acessar e manipular dados das tabelas podemos utilizar os
componentes da guia Interbase, que so exibidos na Tabela 19, abaixo:
Imagem

Nome
IBTable

IBQuery

IBDataSet

Descrio
usado para exibir informaes de uma nica tabela ou view. Se
tratando de aplicao Cliente/Servidor no aconselhado sua utilizao
por ele sempre trazer todas as colunas e todos os registros quando for
ativado.
Fornece acesso somente leitura para uma seleo de informaes,
podendo acessar vrias tabelas. Para possibilitar alteraes nos dados
necessrio associar este componente com TIBUpdateSQL
o componente ideal para ser associado ao DataSource dos
componentes Data-Aware (TDBGrid, TDBEdit...).

87

IBSQL

o componente mais rpido para executar comandos SQL. No


possvel utiliza-lo com componentes Data-Aware e quando utilizado em
consultas de seleo unidirecional.
Tabela 19: componentes InterBase

2.8.2.1. Utilizando o IBDataSet


O IBDataSet utilizado tanto para o acesso como para a
manipulao das informaes em base de dados Interbase/Firebird.
Para utiliz -lo devemos alterar as seguintes propriedades:

Database: associando a um TIBDatabase;

SelectSQL: apertando no boto com reticncias que aparece


no Object Inspector aparecer a janela que exibida na
Figura 25. Dando um duplo clique sobre a tabela e em
seguida sobre os campos que se deseja consultar, o cdigo
SQL ser preenchido;

Figura 25: editor de SQL SELECT

88

Demais SQLs: para preencher os comandos SQLs de


update, insert e delete, o prprio componente oferece um
gerador de SQL. Para utiliz-lo, deve-se apertar com o boto
direito sobre ele e clicar sobre DatasetEditor. Assim, surgir a
janela que mostrada na Figura 26. Os botes que aparecem
nesta janela tm as seguintes funes:

- Get Table Fields - preencher a lista de Key Fields e Update Fields


com todos os campos da tabela do banco de dados;
- Dataset Defaults - preencher a lista de Key Fields e Update Fields
com os campos presentes no SelectSQL;
- Select Primary Keys - seleciona o campo que chave na tabela;
- Generate SQL cria os comandos SQL usando as informaes de
Key Fields e Update Fields;

Fields: para facilitar o acesso aos campos do dataset e para


possibilitar a conexo com alguns componentes data-aware,
necessrio criar os fields. Para isto, deve-se dar um duplo
clique sobre o componente, apertar com o boto direito e
clicar em Add field , selecionar os campos que se deseja
adicionar e apertar em Ok.

89

Figura 26: gerador de SQLs

Active: esta propriedade, quando alterada para true, ir


executar o mtodo Open. Desta forma no momento que
desejar manipular qualquer informao por este componente,
esta propriedade dever estar True.

Observao 1: Para atualizar o resultado da consulta, deve-se


efetuar os mtodos Close seguido do Open.
Observao 2: Para que as demais transaes possam ver as
informaes alteradas sem que tenham que utilizar o mtodo Commit da
transao (que fecha todos os componentes), deve-se utilizar o mtodo
IBDatabase.ApplyUpdates([IBDataset]);

2.8.2.2. Utilizando o IBSQL


Como j foi dito , o IBSQL tem como funo executar comandos
SQL. No Exemplo 33 mostrado como utiliz-lo juntamente com o controle de
transao e de exceo. Ao chamar esta funo, deve-se passar como parmetro
90

a ao que ela deve executar, seja ela alterao (update), insero (insert) ou
excluso (insert), e esta retornar True quando executada corretamente e False
quando ocorrer alg um erro.
function TfmdmAplicacao.ExecutaSQL(acao: string): boolean;
begin
result:=true;
IBSQL.SQL.Text := acao;
try
if IBTransaction.Active then IBTransaction.Commit;
IBTransaction.StartTransaction;
IBSQL.ExecQuery;
IBTransaction.Commit;
except
on E: exception do
begin
result:=false;
IBTransaction.Rollback;
MessageBox(0,PChar('No foi possvel executar o script:' + #13 +
ao + #13 + 'Mensagem: ' + E.Message), 'Erro', MB_OK+MB_ICONERROR);
end;
end;
end;
Exemplo 33: controle de transao e IBSQL

91

3. METODOLOGIA
Para atingir o objetivo almejado no incio do estgio, que era
desenvolver os sistemas Patho Control e Cyto Control, foram utilizadas como
fonte de pesquisa as anotaes de aula de disciplinas como banco de dados e
linguagem de programao, livros sobre Delphi, guia do desenvolvedor do
componente ReportBuilder e, evidentemente , a Internet, atravs principalmente
do site de busca google.
Foram utilizados os seguintes softwares no decorrer do estgio:
Windows 98 segunda edio: sistema operacional da Microsoft amplamente
utilizado por sua praticidade; Delphi 5: ambiente de desenvolvimento integrado
criado pela Borland que utiliza a linguagem Pascal e fornece um ambiente simples
e intuitivo para o desenvolvimento de aplicaes para plataforma Windows;
componente Report Builder: componente que se integra ao Delphi para a criao
de relatrios, e que possui uma grande quantidade de recursos que o Quick
Reports, componentes que o Delphi j traz consigo, no oferece; e, Banco de
dados MS Access 2000: apesar de no se tratar de um banco de dados confivel
e no ser recomendado para aplicaes comerciais, o Access de simples
instalao e manipulao, possibilitando que o prprio usurio final possa
manipular seus dados.

92

4. RESULTADOS
O objetivo do estgio foi de fazer melhorias nos sistemas Patho
Control, sistema de elaborao e emisso de laudos e gerenciamento de
laboratrios de Anatomia Patolgica, e Cyto Control, sistema de elaborao e
emisso de laudos e gerenciamento de laboratrios de Citopatologia. Apesar
desses sistemas j estarem em fase de manuteno, havia a necessidade de
aumentar a velocidade de implementaes e de realizar mudanas exigidas por
muitos usurios espalhados por todo o Brasil.
Ambos os sistemas eram desenvolvidos em Delphi 5 e utilizavam o
banco de dados MS Access 2000. A migrao para outro banco de dados era
uma necessidade para muitos clientes j que, ao atingir um determinado nmero
de registros (quantidade relativamente pequena), o arquivo do banco de dados
corrompia e tornava o sistema extremamente lento. Fazendo um estudo sobre os
SGBD existentes, deu-se preferncia a SGBD gratuitos, j que o custo das
licenas do banco de dados para os clientes seria maior do que com o prprio
sistema. Entre os bancos analisados, o Firebird se destacou por sua velocidade e
estreita ligao com o Delphi.
Para conhecer melhor o sistema e seu propsito foi necessria uma
visita a um de seus usurios e uma boa leitura de documentao disponvel sobre
ele. Dessa forma, poder-se-ia adquirir uma viso mais ampla do sistema em
funcionamento.
Durante todo o estgio, registrei, diariamente, as atividades que iam
sendo realizadas (relatadas a seguir), o que facilitou a elaborao dessa seo do
relatrio.
93

A primeira tarefa foi implementar um registro de ponto, para


controlar melhor a entrada e sada de funcionrios. Esse mdulo do sistema foi
criado como uma aplicao independente, sendo posteriormente acoplado ao
Patho Control por Zalkind, o supervisor do estgio. Essa atividade foi
desenvolvida entre os dias 3/5/01 a 9/5/01.
A Figura 27 a seguir mostra a interface desenvolvida para tal
aplicao e um exemplo de relatrio que poderia ser obtido com a sua utilizao.

Figura 27: ferramenta de ponto

A tarefa seguinte envolveu a criao de um ambiente para o usurio


final de criao de relatrios, chamado de Fbrica de Relatrios, aproveitando
facilidades oferecidas pelo componente de relatrio do Report Builder. Aps
estudar o guia do desenvolvedor do componente foi criada essa nova ferramenta,
94

cuja interface pode ser vista na Figura 28. Essa atividade se deu entre os dias
10/5/01 e 28/5/01.

Figura 28: fbrica de relatrios

Devido necessidade de melhorar a ferramenta de pesquisa, muito


aqum do solicitado pelos usurios, minha atividade seguinte foi aperfeio-la,
aumentando sua facilidade de uso e suas funcionalidades, com, inclusive, a
possibilidade de exibio de relatrios. O perodo de realizao foi do dia 30/5/01
at o dia 4/6/01.
A Figura 29 mostra a nova interface da ferramenta de pesquisa.

95

Figura 29: ferramenta de pesquisa

Outra realizao no estgio foi a criao de uma ferramenta que


possibilitasse transportar dados (Figura 30), seja entre laboratrios, entre o
laboratrio e a casa dos mdicos, ou entre o laboratrio e seus postos de coleta.
Por sua aplicao diversificada, a complexidade dessa atividade foi bastante alta,
consumindo praticamente metade do tempo do estgio. Essa atividade se deu
entre os dias 1/6/01 e 29/8/01.

96

Figura 30: exportao e importao de informaes

J prximo ao fim do estgio, foi criado uma ferramenta para facilitar


o gerenciamento dos bancos de dados (Figura 31). Ela era capaz de realizar
backup e restaurar o banco, alm de fazer a manuteno, compactando e
corrigindo os bancos MS Access. Esta tarefa foi realizada entre os dias 30/8/01 e
3/9/01.

Figura 31: gerenciador de backup e manuteno do banco de dados

97

5. CONCLUSO
Durante o decorrer do estgio, foi cumprido o objetivo tanto da
empresa, que necessitava que seus produtos passassem por modificaes, como
do estagirio, que precisava conhecer a realidade de uma empresa de tecnologia
e aprimorar seus conhecimentos.

98

6. RECOMENDAES E SUGESTES
O conhecimento terico obtido no decorrer do curso, tendo em vista
sua grade curricular bastante abrangente, foi bastante til. Mesmo disciplinas que
aparentemente no teriam relao com desenvolvimento de software, como o
caso de Manuteno de Computadores, foram essenciais para a efetividade da
realizao do estgio.
A impressionante rapidez e o dinamismo da informtica, com o
constante surgimento de novas e diferentes tecnologias, so pontos que
dificulta m a definio do contedo de diversas disciplinas. Apesar disso, deve-se
sempre procurar introduzir uma viso de mercado dentro de cada disciplina.
Dentro de seu contedo programado, seria interessante fornecer uma viso das
necessidades do mercado: o que est sendo mais utilizado, quais as tendncias
e, inclusive , dando foco em solues gratuitas que no s so uma realidade,
como tambm, uma forte tendncia em todos os setores da informtica.
O curso de Tecnologia em Informtica superou minhas expectativas,
mostrando-se bem atualizado, um ponto crucial na rea da computao; com uma
exposio prtica, que falta em cursos de graduao; e de uma organizao
impressionante, o que se contrape a realidade de outras instituies de ensino.

99

REFERNCIAS BIBLIOGRFICAS

YONG, Chu Shao. Banco de dados. So Paulo: Atlas, 1988.


SETZER, Valdemar W. Banco de dados. 3 ed. So Paulo: Edgard Blucher, 1995.
MACHADO, Felipe; ABREU, Maurcio. Projeto de banco de dados. 2 ed. So
Paulo: rica, 1996.
CHEN, Peter. Modelagem de dados: a abordagem entidade-relacionamento para
projeto lgico. So Paulo: McGraw-Hill, 1990.
CANTU, Marco. Dominando o Delphi A Bblia. So Paulo: Makron Books, 2001.
BLUE, Ted; KASTER, John; LIEF, Greg; SCOTT, Loren. Desenvolvendo bancos
de dados em Delphi. So Paulo: Makron Books,1997.
FACUNTE, Emerson. Delphi 5: desenvolvendo aplicaes cliente/servidor. Rio de
Janeiro: Brasport,1999.
IBPhoenix.
What
is
Firebird?.
Disponvel
em:
<http://www.ibphoenix.com/main.nfs?a=ibphoenix&s=1096405274:384303&page=
what_is_interbase> Acesso em: 16 set de 2004.
Borland . Interbase. Disponvel em: <http://www.borland.com/interbase/> Acesso
em: 16 set de 2004.
LOZANO, Fernando. Firebird o sucessor do Interbase. Disponvel em:.
<http://www.revistadolinux.com.br/ed/040/assinantes/lozano.php3> Acesso em: 21
set de 2004.
CARDOSO, Rodrigo Aparecido. Conhecendo o Firebird. Disponvel em:
<http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=781> Acesso em: 21
set de 2004.
SANTANA, Gladiston. Firebird Classic x SuperServer. Disponvel em: <
http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=949> Acesso em: 21 set
de 2004.

100

ANEXO A

Plano de Estgio

101

CENTRO FEDERAL DE EDUCAO TECNOLGICA DO RN


GERNCIA DE TECNOLOGIA DA INFORMAO E
EDUCACIONAL DE TELEMTICA
Av. Sen. Salgado Filho, 1559, Natal/RN. Fone (084) 215-2637
e-mail: geinf@cefet -rn.br

PLANO DE ESTGIO SUPERVISIONADO


1. DADOS DO ESTAGIRIO
Nome: Silvio Oliveira de Souza Filho
Identidade: 1.496.424 / SSP-RN
CPF: 009.819.454-22
Endereo: Rua Missionrio Joel Carlson, 1993 - Capim Macio - Natal/RN
Telefone: 642-1090
E- mail: silvio.filho@bol.com.br

2. DADOS DA EMPRESA
Nome de Fantasia: Accessus Consultores e Associados
Razo Social: Fagundes & Fagundes Ltda
CGC/CNPJ: 01.052.366/0001-77
Endereo: . Nascimento de Castro, 1992 - Lagoa Nova - Natal/RN

3. DADOS DO ESTGIO
Perodo de Durao Previsto: 16/04/2001 16/10/2001
Carga Horria Total Prevista: 720 horas
Carga Horria Semanal Prevista: 6 horas/dia (30 horas)
Horrio de Trabalho Dirio: 8:00 s 14:00
Atividades a serem Desenvolvidas (Sistema de Manuteno do CEFET/RN):
Atividades
Desenvolvimento
de Software

Perodo Estimado
16/04/2001 16/10/2001

Local

Responsvel

Accessus Consultores e Associados

Zalkind Lincoln

Natal, 7 de Maio de 2001

Silvio Oliveira de Souza Filho


Estagirio

Zalkind Lincoln
Responsvel pela empresa

102

Gilbert Azevedo da Silva


Professor Orientador