Você está na página 1de 34

Linguagem Comercial Parte01 Indice

AMBIENTE INTEGRADO DE DESENVOLVIMENTO DO DELPHI ( IDE ) .......................................................3 ELEMENTOS DO AMBIENTE .............................................................................................................................................3 BARRA DE BOTES DE ATALHO ......................................................................................................................................5 INSPETOR DE OBJETOS ....................................................................................................................................................6 PERSONALIZANDO A BARRA DE BOTES DE ATALHO .....................................................................................................6 MANIPULANDO UM PROJETO EM DELPHI.........................................................................................................8 ARQUIVOS DE UM PROJETO DELPHI ................................................................................................................................8 ARQUIVOS CRIADOS PELO COMPILADOR E LINKEDITOR .................................................................................................8 CRIANDO UM NOVO PROJETO ..........................................................................................................................................8 SALVANDO UM PROJETO NOVO EM DELPHI .....................................................................................................................8 SALVANDO UM PROJETO COM OUTRO NOME .................................................................................................................10 SALVANDO UM ARQUIVO ( UNIT, FORM) COM OUTRO NOME ........................................................................................10 SALVANDO UM PROJETO EM UM DISQUETE PARA TRANSPORTE ....................................................................................10 ESTRUTURA DE UMA UNIT.....................................................................................................................................11 CABEALHO DE UMA UNIT ...........................................................................................................................................11 CLUSULA INTERFACE..................................................................................................................................................11 CLUSULA IMPLEMENTATION .......................................................................................................................................12 CLUSULA INITIALIZATION...........................................................................................................................................13 CLUSULA FINALIZATION .............................................................................................................................................13 EXEMPLO DE UMA UNIT ................................................................................................................................................13 OBJECT PASCAL.........................................................................................................................................................15 PALAVRAS RESERVADAS ..............................................................................................................................................15 EXPRESSES .................................................................................................................................................................15 IDENTIFICADORES .........................................................................................................................................................16 CONSTANTES ................................................................................................................................................................16 VARIVEIS ....................................................................................................................................................................16 TIPOS DE DADOS DO OBJECT PASCAL ............................................................................................................................17 Tipos de Dados Numricos Inteiros.........................................................................................................................17 Tipos de Dados Numricos Reais ............................................................................................................................17 Tipos de Dados Lgicos...........................................................................................................................................17 Tipos de Dados Caracter .........................................................................................................................................17 Tipos Ordinais .........................................................................................................................................................18 Tipo Variant .............................................................................................................................................................18 Tipo Enumerado.......................................................................................................................................................18 Tipo SubArange .......................................................................................................................................................19 Tipo Conjuntos.........................................................................................................................................................20 OPERADORES ................................................................................................................................................................20 Operador de Atribuio ...........................................................................................................................................20 Operadores Aritmticos ...........................................................................................................................................21 Operadores Lgicos.................................................................................................................................................21 Operadores de Conjunto..........................................................................................................................................21 Operadores de Classe ..............................................................................................................................................21 TIPOS DE DADOS HOMEGNEOS ....................................................................................................................................21 Array Unidimensional..............................................................................................................................................21 Array Multidimensional ...........................................................................................................................................22 TIPOS DE DADOS HETEROGNEOS .................................................................................................................................22

Curso de Programao em Delphi Componentes Bsicos do Delphi


Record ......................................................................................................................................................................22 ESTRUTURAS DE CONTROLE EM OBJECT PASCAL .........................................................................................................24 Comentrios.............................................................................................................................................................24 Bloco De Comandos Begin... End .......................................................................................................................24 Estrutura Condicional Simples If-Then ...............................................................................................................24 Estrutura Condicional Composta If-Then-Else ..................................................................................................25 Estrutura Condicional Case-Of...........................................................................................................................25 Estrutura de Repetio For-To, For-Downto......................................................................................................26 Estrutura de Repetio While-Do........................................................................................................................26 Estrutura Repeat-Untill .......................................................................................................................................27 SUBPROGRAMAS...........................................................................................................................................................27 Funes ....................................................................................................................................................................27 Procedimentos..........................................................................................................................................................27 Passagem De Parmetros........................................................................................................................................28 PROGRAMAO ORIENTADA A OBJETOS COM DELPHI .............................................................................29 O QUE POO?..............................................................................................................................................................29 CLASSES .......................................................................................................................................................................29 Exemplo de definio de classe ...............................................................................................................................29 ENCAPSULAMENTO .......................................................................................................................................................32 Tipos de Encapsulamento ........................................................................................................................................32 Atributo de Visibilidade Private...............................................................................................................................33 Atributo de Visibilidade Protected...........................................................................................................................33 Atributo de Visibilidade Public................................................................................................................................33 Atributo de Visibilidade Published ..........................................................................................................................33 HERANA .....................................................................................................................................................................34

Prof. Evandro Csar Freiberger

Pgina 2

Curso de Programao em Delphi Componentes Bsicos do Delphi

Ambiente Integrado de Desenvolvimento do Delphi ( IDE )


Elementos do Ambiente
Menu principal / Barra de Botes de Atalho / Barra de Componentes

Formulrio ( Construo da Interface ) Imagem Grfica

Inspetor de Objetos (Configurao de propriedades e eventos dos componentes do formulrio)

Codificao da imagem grfica ( arquivo DFM ) acesso atravs do boto direito do mouse sobre o formulrio, opo View as Text. Para voltar, boto direito no texto, opo View as Form.

Configurao de propriedades em tempo de projeto.

Prof. Evandro Csar Freiberger

Pgina 3

Curso de Programao em Delphi Componentes Bsicos do Delphi

Arquivo que contm o cdigo fonte associado ao formulrio declara uma nova classe herdando as caractersticas da classe Tform. Ir conter todos os procedimentos manipuladores dos eventos associados aos componentes do formulrio em questo. Para acessa-lo, selecione o formulrio e pressione F12, para retornar, novamente F12.

Prof. Evandro Csar Freiberger

Pgina 4

Curso de Programao em Delphi Componentes Bsicos do Delphi


Tempo de Projeto

Tempo de Execuo

Barra de Botes de Atalho


Segunda Linha Primeira linha de botes da esquerda para a direita New novo objeto ( unit, formulrio, etc) Abrir arquivos ( *.pas, *.dpr, *.dpk,) Salvar arquivo selecionado Salvar todos os arquivos do projeto Abrir projeto ( *.dpr, *.bpg ) Adicionar um arquivo j existente ao projeto Remover um arquivo do projeto Ajuda do Delphi Lista de Unit que pertencem ao projeto em questo Lista de formulrios que pertencem ao formulrio Alternar entre formulrio e Unit Novo formulrio Executar aplicao Executar passo a passo, entrando em sub-rotinas Executar passo a passo, no entrando em sub-rotinas

Prof. Evandro Csar Freiberger

Pgina 5

Curso de Programao em Delphi Componentes Bsicos do Delphi

Inspetor de Objetos
Seletor de Objetos Pgina de Propriedades Pgina de Eventos

Eventos

Propriedades

Valores

Personalizando a Barra de Botes de Atalho


Para personalizar a barra de botes d um clique com o boto direito do mouse sobre a barra de botes e escolha a opo Custumize, ser apresentada a tela abaixo que possui trs guias, conforme figura.

Nessa guia voc poder escolher quais barras de botes sero exibidas, assinalando os checks

Nessa guia voc poder escolher quais botes iro fazer parte da barra de botes. Para adicionar, selecione a categoria e em seguida escolha o boto e arraste-o at o local desejado na barra de botes. Para remover um boto existente na barra, arraste-o no sentido da barra para a tela de configurao.

Na ltima guia, Options voc poder optar por exibir a legenda dos botes quando voc passa com o mouse sobre os botes e tambm se deseja exibir as teclas de atalhos que existem para tais botes.

Prof. Evandro Csar Freiberger

Pgina 6

Curso de Programao em Delphi Componentes Bsicos do Delphi


Project Manager Acesse atravs do menu View / Project Manager, nele voc poder incluir, remover elementos do projeto ( units, forms ) e selecionar o projeto que deseja trabalhar, caso esteja trabalhando com mais de um projeto ao mesmo tempo.

Browser Acesse atravs do menu View / Browser, porm s ter acesso depois de ter compilado pelo menos uma vez o projeto. Nessa tela podemos visualizar a hierarquia de objetos do projeto em questo.

Arquivo DPR Nesse arquivo so referenciados as unidades e formulrios pertencentes ao projeto em questo. Para as unidades que no possuem formulrio associado somente ser exibido o nome da unidade e o arquivo que foi armazenada.

Prof. Evandro Csar Freiberger

Pgina 7

Curso de Programao em Delphi Componentes Bsicos do Delphi

Manipulando um Projeto em Delphi


Arquivos de um Projeto Delphi
Arquivo de Projeto ( .DPR ) - usado para manter informaes sobre formulrios e unidades que compem o projeto. Possui tambm cdigo de inicializao do projeto. Arquivo de Unidade ( .PAS ) - o cdigo fonte do projeto. As unidades podem estar associadas a formulrios ou apenas armazenar funes e procedimentos usados na aplicao. Arquivo de Formulrio ( .DFM ) - um arquivo binrio criado pelo Delphi para armazenar informaes sobre cada formulrio. Cada arquivo de formulrio possui um arquivo de unidade correspondente. Arquivo de Opes de Projeto ( .DOF e .CFG ) - armazenam ajustes de opes de um projeto (configuraes de compilao e linkedio ). Arquivos de Recursos ( .RES ) - so arquivos binrios que contm cones, imagens e tabelas de strings da aplicao. Normalmente o arquivo de Recurso do Projeto, contm apenas o cone da aplicao. No aconselhvel alterar esse arquivo, pois o Delphi altera constantemente durante o projeto. Arquivos de Backup ( .~DP, .~DF, .~PA ) so arquivos de Backup dos arquivos de projeto, formulrio e unidades respectivamente.

Arquivos Criados pelo Compilador e Linkeditor


Arquivos de Objetos de Unidade ( .DCU ) - a verso Compilada do Arquivo ( .PAS ). Arquivos de Biblioteca de Ligao Dinmica ( .DLL ) - contm cdigo executvel, mas precisa ser chamado por um arquivo executvel ( .EXE ). Arquivos Executveis - a aplicao propriamente dita. um arquivo independente e que ser instalado no local de uso da aplicao. Caso o arquivo executvel fizer uso de DLLs ou OCXs ser necessrio levar esses arquivos junto com o executvel.

Criando um novo projeto


Quando iniciamos o Delphi, um novo projeto sugerido, dessa forma podemos a partir desse iniciarmos a construo do novo projeto. Outra forma acessar o menu File / New Aplication.

Salvando um projeto novo em Delphi


Como j vimos, um projeto desenvolvido em Delphi possui vrios arquivos, para salvarmos pela primeira vez um projeto em Delphi devemos acessar a opo Save All, atravs do menu File ou atravs do boto , em seguida ser apresentada a seguinte tela:

Prof. Evandro Csar Freiberger

Pgina 8

Curso de Programao em Delphi Componentes Bsicos do Delphi

1. 2. 3. 4.

Crie uma pasta para armazenar o novo projeto. Evite criar pastas para projetos dentro das pastas de instalao do Delphi. Selecione a nova pasta criada, atravs da caixa Salvar em: Configure o nome do arquivo que ir conter a Unit. bom ter um padro de nomes para a unit, exemplo: UcadastroProduto, Unit_Relatrio_Clientes, etc. Clique no boto Salvar, e ser apresenta a tela a seguir:

1. 2. 3.

Nessa tela iremos salvar o arquivo de projeto (.dpr), conveniente manter a mesma pasta onde foi salva a unit ( tela anterior ). Configure o nome do projeto, na caixa Nome do arquivo. Da mesma forma conveniente manter um padro de nomenclatura para os arquivos de projeto, ex: ProjetoControleEstoque, PcontroleFinanceiro, etc. Por fim pressione o boto Salvar. Com isso o novo projeto foi salvo.

Prof. Evandro Csar Freiberger

Pgina 9

Curso de Programao em Delphi Componentes Bsicos do Delphi


Obs: recomendado que o projeto seja salvo antes mesmo que o desenvolvimento propriamente dito seja iniciado, e que a cada novo arquivo que for inserido no projeto, este seja salvo novamente.

Salvando um Projeto com outro nome


Acesse o menu File e opo Save Project As..., em seguida informe um nome diferente para o projeto, veja que voc poder mudar tambm a localizao do arquivo de projeto, escolhendo uma nova localizao na caixa Salvar Em. Obs: esse procedimento somente salvar os arquivos ( DPR, RES, CFG, DOF) com nome e/ou localizao diferente, os formulrio e units continuaro iguais.

Salvando um Arquivo ( Unit, Form) com outro nome


Selecione o arquivo desejado e em seguida acesse a opo de menu File/ Salve As... e informe o novo nome e ou a nova localizao do arquivo em questo.

Salvando um Projeto em um Disquete para Transporte


Pelo fato de existirem vrios arquivos que compem um projeto, no vale a pena usar a opo Save As..., visto que esse procedimento dever ser repetido para o arquivo de projeto e todos os formulrio e unidades que compem o projeto. Com isso o caminho menos trabalhoso e seguro copiar a pasta onde o projeto foi salvo, usando o Windows Explorer.

Prof. Evandro Csar Freiberger

Pgina 10

Curso de Programao em Delphi Componentes Bsicos do Delphi

Estrutura de uma Unit


Units so os arquivos que o Delphi usa para implementar as classes de objetos, procedimentos e funes. Uma Unit pode ou no estar associada a um formulrio, sendo que um formulrio sempre ter uma Unit associada. Estrutura: Unit <nome da unit>; Interface Uses <lista de unidades referenciadas> Const <lista de constantes declaradas> Type <lista de tipos definidos pelo programador> Var <lista de variveis declaradas> Procedure Function Implementation Uses <lista de unidades referenciadas> Const <lista de constantes declaradas> Type <lista de tipos definidos pelo programador> Var <lista de variveis declaradas> Procedure Function Initialization <Comandos> Finalization <Comandos> End.

Cabealho de uma Unit


Define o nome da Unit, sendo que este dever ser nico. O nome de uma Unit poder ter qualquer tamanho, porm o Delphi considera apenas os 63 caracteres. No necessrio que o nome da Unit seja igual ao nome do arquivo (PAS) que a contm, mas uma boa tcnica usar esses nomes iguais, facilitando o uso dessas Units. Exemplo: unit unit_ola;

Clusula Interface
Nesta rea sero especificadas todas as Units necessrias para a Unit em questo e tambm tudo que poder ser usado por outras Units, ou seja, todas as constantes, tipos, variveis, procedimentos e funes definidas nesta rea sero visveis por unidades que usarem esta Unit. Exemplo:

interface

Prof. Evandro Csar Freiberger

Pgina 11

Curso de Programao em Delphi Componentes Bsicos do Delphi


uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm_ola = class(TForm) BotaoOla: TButton; procedure BotaoOlaClick(Sender: TObject); procedure FormClick(Sender: TObject); procedure FormResize(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form_ola: TForm_ola;

Clusula Implementation
Esta rea da Unit composta pelo cdigo que implementa as aes da Unit ( funes e procedimentos ). A rea de implementao pode conter uma clusula Uses. sempre melhor usar esta tcnica para as Units que voc desenvolver, sendo que dessa forma somente o cdigo da parte de implementao que visualizara as Units includas na clusula Uses. Exemplo: implementation {$R *.DFM} procedure TForm_ola.BotaoOlaClick(Sender: TObject); begin ShowMessage ('Ol, pessoal'); BotaoOla.Caption := 'Diga Ol Novamente'; end; procedure TForm_ola.FormClick(Sender: TObject); begin ShowMessageDlg ('Voc deu um clique fora do boto); end;

Prof. Evandro Csar Freiberger

Pgina 12

Curso de Programao em Delphi Componentes Bsicos do Delphi

Clusula Initialization
Serve para inicializar quaisquer variveis ou estrutura de dados, sendo que a inicializao ser feita apenas um nica vez: quando a Unit for acessada pela primeira vez. Exemplo: Initialization DataAtual := date; HoraAtual := time; end;

Clusula Finalization
Ser a ltima tarefa executada antes de encerrar uma Unit. Sua aplicao normalmente ser emprega nos casos de devem ser liberados recursos antes alocados. Exemplo: Finalization MeuObejto.Free; end;

Exemplo de uma Unit


unit unit_ola; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm_ola = class(TForm) BotaoOla: TButton; procedure BotaoOlaClick(Sender: TObject); procedure FormClick(Sender: TObject); procedure FormResize(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form_ola: TForm_ola;

Prof. Evandro Csar Freiberger

Pgina 13

Curso de Programao em Delphi Componentes Bsicos do Delphi


implementation {$R *.DFM} procedure TForm_ola.BotaoOlaClick(Sender: TObject); begin MessageDlg ('Ol, pessoal', mtInformation, [mbOK], 0); BotaoOla.Caption := 'Diga Ol Novamente'; end;

procedure TForm_ola.FormClick(Sender: TObject); begin MessageDlg ('Voc deu um clique fora do boto', mtWarning, [mbOK], 0); end; end.

Prof. Evandro Csar Freiberger

Pgina 14

Curso de Programao em Delphi Componentes Bsicos do Delphi

Object Pascal
uma linguagem Orientada a Objetos hbrida por possuir caractersticas de programao no s visual mas tambm escrita. Ela fora a voc executar passos lgicos o que torna mais fcil o desenvolvimento no ambiente Windows de aplicaes livres ou que utilizam banco de dados do tipo Cliente/Servidor, trabalha com o uso de ponteiros para a alocao de memria e todo o poder de um cdigo totalmente compilvel. Alm disso possibilita a criao e reutilizao (vantagem de re-uso to sonhado com a Orientao a Objetos) de objetos e bibliotecas dinmicas (Dynamic Link Libraries - DLL). Object Pascal contm quase todos os conceitos da orientao a objetos incluindo encapsulamento, herana e polimorfismo. capaz de suportar desde as facilidades do desenvolvimento visual at o desenvolvimento em um baixo nvel de programao (acesso as APIs do Windows e programao com cdigo Assembly). Como se pode perceber a base de toda a programao Delphi a linguagem Object Pascal, ento neste captulo trataremos de alguns aspectos deste tipo de programao.

Palavras Reservadas
Palavras-chave ou palavras reservadas so aquelas usadas pela sintaxe da linguagem com significado especfico e, portanto, no podem ser usadas com outra finalidade. O Object Pascal se utiliza das seguintes palavras reservadas: And Array As Asm Begin Case Class Const Constructor Destructor Div Do Downto Else End Except Exports File Finnaly For Function Goto If Implementation In Inherited Initialization Inline Interface Is Label Library Mod Nil Not Object Of On Or Packed Procedure Program Property Raise Record Repeat Set Shl Shr String Then To Try Type Unit Until Uses Var While With Xor

Expresses
As expresses em Object Pascal (como em qualquer linguagem) so formadas por operadores e operandos; os operadores so divididos em quatro categorias bsicas: Unrios Multiplicativos Adicionais Relacionais @, Not >, /, div, mod, and, shl, shr, as +, -, or, xor =, < >, <, >, < =, > =, in, is

As expresses obedecem as regras bsicas de lgica para a precedncia da execuo das operaes.

Prof. Evandro Csar Freiberger

Pgina 15

Curso de Programao em Delphi Componentes Bsicos do Delphi

Identificadores
Identificadores so usados para definir nomes de constantes, tipos, variveis, procedimentos, funes, unidades, programas e campos de registros. Algumas regras devem ser observadas para a utilizao de identificados em Object Pascal: No existe limite de caracteres para o nome de um identificador mas apenas os 63 primeiros caracteres so significantes (no podendo ser idntico ao nome das palavras reservadas). O nome de um identificador deve ser iniciado por Letras ou pelo carcter underscore ( _ ). O resto formado por Letras, Dgitos, carcter underscore. No permitido a utilizao de espaos para a formao do nome. O Object Pascal no faz distino entre letras maisculas e minsculas nos nomes de identificadores.

Constantes
Uma constante um identificador com valor fixo. Um bloco de declaraes constante possui a seguinte expresso: const <Identificador> = <valor>; Exemplos: const Min = 0; Max = 100; MensOla = 'Instruo invlida';

Variveis
Para que o Delphi possa usar nossas variveis, devemos primeiro declar-las, isto , informar o nome e o tipo desejado. Um bloco de declaraes de variveis possui a seguinte expresso: var <lista de Identificadores> : <tipo>; Exemplo: Idade, X : integer; Salrio : Real; Note que a declarao do tipo de uma varivel, em princpio no lhe atribui valores. Um erro comum em programao tentarmos ler valores de variveis no inicializadas, ou s quais ainda no se atribuiu valor. A seguir apresentada uma lista dos tipos de variveis mais comuns do Object Pascal com suas faixas de valores e o espao ocupado em memria:

Prof. Evandro Csar Freiberger

Pgina 16

Curso de Programao em Delphi Componentes Bsicos do Delphi

Tipos de dados do Object Pascal Tipos de Dados Numricos Inteiros


Tipo Integer Cardial ShortInt SmallInt LongInt Int64 Byte Word LongWord Faixa de Valores -2.147.483.648 a 2.147.483.647 0 a 4.294.967.295 -128 a 127 -32.768 a 32.767 -2.147.483.648 a 2.147.483.647 -263 a 263 -1 0 a 255 0 a 65.535 0 a 4.294.967.295 N Bytes 4 4 1 2 4 8 1 2 4

Tipos de Dados Numricos Reais


Tipo Real48 Single Double Extended Comp Currency Faixa de Valores 2.9 x 1039 .. 1.7 x 1038 1.5 x 1045 .. 3.4 x 1038 5.0 x 10324 .. 1.7 x 10308 3.6 x 104951 .. 1.1 x 104932 263+1 .. 263 1 922337203685477.5808.. 922337203685477.5807 Dgitos Significativos 1112 78 1516 1920 1920 1920 N Bytes 6 4 8 10 8 8

Tipos de Dados Lgicos


Tipo Boolean ByteBool WordBool LongBool Faixa de Valores True ou False ( 1 ou 0 ) True ou False ( 1 ou 0 ) True ou False ( 1 ou 0 ) True ou False ( 1 ou 0 ) N Bytes 1 1 2 4

Obs: o tipo padro para representar valores lgicos o tipo Boolean, ou outros so basicamente para atender compatibilidades com outras linguagens e o ambiente Windows.

Tipos de Dados Caracter


Tipo Char AnsiChar WideChar ShortString AnsiString WideString Faixa de Valores 1 caracter ASCII 1 caracter ASCII 1 caracter Unicode 255 characters ~231 characters ~230 characters - Unicode N Bytes 1 1 1 2 a 256 4 a 2GB 4 a 2GB

Prof. Evandro Csar Freiberger

Pgina 17

Curso de Programao em Delphi Componentes Bsicos do Delphi


Obs: quando usamos o tipo String estamos usando um tipo AnsiString, porm se inserirmos uma diretiva de compilao {$H-} estaremos usando o tipo ShortString.

Tipos Ordinais
Tipos ordinais so os tipos integer, Caracter, Boolean, enumerao, sub-intervalos, ou seja, so tipos de dados ao qual se conhea o seu valor absoluto, o seu predecessor e o seu sucessor. Existem uma srie de operadores capazes de manipularem esses tipos de dados: Funo Ord Pred Succ High Low Retorno Valor da ordem do argumento Valor predecessor do argumento Valor sucessor do argumento Maximo valor possvel para a varivel do tipo em questo Mnimo valor possvel para a varivel do tipo em questo

Tipo Variant
Esse tipo de dado pode conter qualquer tipo de informao, na realidade o tipo de dado que uma varivel variant definido em tempo de execuo, quando atribumos um valor para ela. Esse tipo de dado bastante usado quando lidamos com OLE Object Linking and Embbeding, que usado como padro de transferncia de dados entre aplicaes no Windows, j que no sabemos se receberemos um texto, uma imagem, um objeto multimdia, etc.

Tipo Enumerado
Esse tipo de dado pode ser usado para representar uma lista de possveis valores que uma varivel pode conter. Podemos usar o tipo enumerado para representar por exemplo: tipo de profisso (assalariado, autnomo, empresrio), tipo de chamada telefnica (Local, DDD, DDI), consulta mdica ( convnio, particular), operaes aritmticas ( adio, subtrao, diviso, multiplicao). O que vemos que o tipo enumerado na verdade uma forma de nomear uma seqncia de valores, visto que, internamente o Object Pascal representa a enumerao com nmeros comeando do zero, para o primeiro elemento, um para o segundo e assim sucessivamente. Exemplo: Type TAlinhamento = (Direita, Esquerda, Centralizado, Justificado); Var Alinhamento : TAlinhamento; No ambiente Delphi muito comum o uso de enumeraes, vamos ver alguns exemplos:

Propriedade Align do componente Label e propriedade BorderStyle do fomulrio.

Prof. Evandro Csar Freiberger

Pgina 18

Curso de Programao em Delphi Componentes Bsicos do Delphi

O Delphi define essas propriedades com os seguintes tipos de dados: type TAlign = (alNone, alTop, alBottom, alLeft, alRight, alClient); TFormBorderStyle = (bsNone, bsSingle, bsSizeable, bsDialog, bsToolWindow, bsSizeToolWin);

Tipo SubArange
Da mesma forma que os tipos enumerados, os tipos SubArange so definidos pelo programador, sendo que este determina para o novo tipo um intervalo de valores tomando como base um tipo ordinal. Exemplo: Type TContador = 0..100; //um subintervalo do tipo ordinal Integer Tdigitos = 0..9; //um subintervalo de caracteres do tipo char Var Contador : Tcontador; Dgitos : Tdigitos; Podemos definir SubArange de tipos enumerados, veja exemplo: Type TDiaSemana = (Domingo, Segunda, Tera, Quarta, Quinta, Sexta, Sbado); TDiaUteis = Segunda ..Sexta;

Prof. Evandro Csar Freiberger

Pgina 19

Curso de Programao em Delphi Componentes Bsicos do Delphi

Tipo Conjuntos
Atravs desse tipo de dados, suportado pelo Object Pascal, podemos manipular variveis usando os conceitos de conjuntos da matemtica. Exemplo: Type TDiaSemana = (Domingo, Segunda, Tera, Quarta, Quinta, Sexta, Sbado); TSemana = set of TDiaSemana; Var Semana : TSemana; Com esse tipo, conforme j foi dito acima, podemos trabalhar com as operaes matemticas de conjuntos. Vejamos alguns exemplos: Semana := [ ] // conjunto vazio Semana := [Tera,Quinta]; //atribuio de dois elementos ao conjunto; Semana := Semana + [Quinta,Sexta]; // unio de dois conjuntos Semana := Semana [Tera]; //Diferena entre dois conjuntos Semana := Semana * [Quanta,Quinta]; //interseo de dois conjuntos If [Segunda] in Semana then // operao de pertinncia de elementos If [Segunda, Tera] <= Semana then // est contido em semana If Semana >= [Quinta, Sexta] then // semana contm os dias quinta e sexta

Operadores Operador de Atribuio


Atribuio de valor literal A := 10; NomeFunc := Fulano de Tal; Atribuio de expresses Total := A * (B + 2); NomeFunc := Nome + de Tal; Atribuio de retorno de funo Total := Soma( A,B); Totao := Soma(A,B) Soma(C,D);

Prof. Evandro Csar Freiberger

Pgina 20

Curso de Programao em Delphi Componentes Bsicos do Delphi

Operadores Aritmticos
+ * / Div Mod Adio Subtrao Multiplicao Diviso conjunto de reias Diviso inteira Resto da diviso inteira

Operadores Lgicos
And Or Not Xor Operador lgico E Operador lgico OU Operador lgico de negao Operador lgico Ou exclusivo

Operadores de Conjunto
+ * In <= >= Unio Diferena Interseco Pertence Est contido em Contm

Operadores de Classe
Is As Questionamento se um objeto de uma determinada classe Afirmao que um objeto de uma determinada classe

Tipos de dados Homegneos Array Unidimensional


Arrays so conjuntos de variveis com o mesmo nome e diferenciadas entre si por um ndice. Eles so teis para manipularmos grandes quantidades de dados de um mesmo tipo, pois evitam a declarao de diversas variveis. Sintaxe: <NomeVarivel> : array[i1..i2] of <tipo>; onde i1 e i2 representam os valores mnimo e mximo, respectivamente, do ndice.

Prof. Evandro Csar Freiberger

Pgina 21

Curso de Programao em Delphi Componentes Bsicos do Delphi


O Object Pascal permite que i1 e i2 possuam qualquer valor desde que i1 seja menor ou igual a i2. Assim, poderamos declarar um array de 100 variveis inteira de vrias formas diferentes : lista : array [1..100] of integer; ou lista : array [-100..-1] of integer; ou lista : array [0..99] of integer

Array Multidimensional
Arrays multidimensionais so conjuntos de variveis com o mesmo nome e diferenciadas entre si por dois ou mais ndices. Eles so teis para manipularmos grandes quantidades de dados de um mesmo tipo, pois evitam a declarao de diversas variveis. Sintaxe: <NomeVarivel> : array[i11..i12, i21..i22, in1..in2 ] of <tipo>; onde i1 e i2 ... in1..in2 representam os valores mnimo e mximo para cada dimenso do array respectivamente.

Tipos de dados Heterogneos Record


O Object Pascal permite que o usurio crie novos tipos de dados baseados em tipos pr-existentes. A declarao de novos tipos deve ser feita na clusula type da unidade de cdigo correspondente. O exemplo a seguir destaca a criao de um tipo estruturado, um registro (record) capaz de armazenar os dados de um funcionrio. type TFuncionario = record Nome : string; Sexo : char; Salario : real; DataNascimento : TdataTime; end; Agora j podemos declarar variveis do tipo Tfuncionario var Funcionario : TFuncionario; O acesso aos campos que compe a varivel Funcionario pode ser feito da seguinte forma: Funcionario.Nome := Fulano de Tal; Funcionario.Sexo := M; Funcionario.Salario := 542.45; Funcionario.DataNascimento := StrToDate(28/11/1972);

Prof. Evandro Csar Freiberger

Pgina 22

Curso de Programao em Delphi Componentes Bsicos do Delphi


Ou ainda usando o operador With, teremos With Funcionrio do Begin Nome := Fulano de Tal; Sexo := M; Salario := 542.45; DataNascimento := StrToDate(28/11/1972); End;

Prof. Evandro Csar Freiberger

Pgina 23

Curso de Programao em Delphi Componentes Bsicos do Delphi

Estruturas de Controle em Object Pascal


Nos limitaremos a apresentar uma breve descrio da sintaxe dessas estruturas; os prximos exemplos demonstraro melhor a sua utilizao.

Comentrios
Para incluir um comentrio em qualquer parte do programa podemos fazer uso de trs tipos de delimitadores: {} e (* *) e //. Os dois primeiros delimitadores permitem que os comentrios sejam distribudos por vrias linhas. Eles marcam o incio e o fim do comentrio. Exemplos { Este um comentrio } (* Este um comentrio com duas linhas *) O terceiro tipo de comentrio se inicia com // e vai at o final da linha. Exemplo: A := B; // Comentrio at o final da linha.

Bloco De Comandos Begin... End


Prende um conjunto de declaraes em um bloco de comandos determinado. Sintaxe : begin {comandos} end; Ex: begin { ... comandos iniciais ... } begin { ... bloco 1 ... } end; begin { ... bloco 2 ... } end; { ... comandos finais ... } end;

Estrutura Condicional Simples If-Then


Sintaxe: if (condio) then {Bloco de comandos se condio for verdadeira}; Exemplo: If A > B then C := 10;

Prof. Evandro Csar Freiberger

Pgina 24

Curso de Programao em Delphi Componentes Bsicos do Delphi


Obs: Caso sejam necessrios {Blocos de Comandos} com mais de uma linha, estes devem ser delimitados pelas clusulas begin e end. Exemplo: If A> B then Begin C := 10; D:= C* 2; End;

Estrutura Condicional Composta If-Then-Else


Sintaxe: if (condio) then {Bloco de comandos se condio for verdadeira} else {Bloco de comandos se condio for falsa}; Exemplo: if A>B then A:= 10 Else A := 20; Obs: Caso sejam necessrios {Blocos de Comandos} com mais de uma linha, estes devem ser delimitados pelas clusulas begin e end. If A>B then Begin A:=10; B:= 10; End Else Begin A:=20; B:=20; End;

Estrutura Condicional Case-Of


Sintaxe: case expresso of constante_1_1,...constante_1_n : bloco_de_comando_1; constante_2_1,...constante_2_n : bloco_de_comando_2; ... constante_n_1,...constante_n_n : bloco_de_conabdi_n: else bloco_de_comando; end;

Prof. Evandro Csar Freiberger

Pgina 25

Curso de Programao em Delphi Componentes Bsicos do Delphi


O comando case um substituto mais elegante e mais legvel para if-then-else mltiplos. A expresso (ou seletor) dever ser de tipo com o tamanho mximo de 2 bytes (Byte, Char, Word ou Integer). Segue-se um exemplo: case Ch of 'A'..'Z', 'a'..'z' : WriteLn('Letra'); '0'..'9' : WriteLn('Digito); '+', '-', '*', '/' : WriteLn('Operador'); else WriteLn(' Caracter Especial'); end;

Estrutura de Repetio For-To, For-Downto


Sintaxe: for contador := valor_inicial to valor_final do begin {bloco_de_comandos} end; onde: contador uma varivel inteira; valor_inicial o valor inicial do contador, que dever ser um nmero inteiro; valor_final o valor final (para o qual o lao se encerrar) a ser assumido pelo contador, deve ser inteiro; Se desejar que o contador assuma valores decrescentes deve-se usar a seguinte sintaxe: for contador := valor_inicial downto valor_final do begin {bloco_de_comandos} end; Note que as clusulas begin e end s so necessrias para blocos com mais de uma linha.

Estrutura de Repetio While-Do


Sintaxe: while expresso_booleana do begin {bloco_de_comando} end; Note que o bloco_de_comando executado enquanto a expresso_booleana for verdadeira e que como a expresso_booleana avaliada antes da execuo do bloco_de_comando, se a expresso_booleana for falsa o bloco_de_comando no ser executado nenhuma vez. As clusulas begin e end s so necessrias para blocos com mais de uma linha.

Prof. Evandro Csar Freiberger

Pgina 26

Curso de Programao em Delphi Componentes Bsicos do Delphi

Estrutura Repeat-Untill
Sintaxe: repeat {bloco_de_comando} until expresso_booleana; Note que o bloco de comando executado em sequncia, enquanto a expresso_booleana for verdadeira e que o bloco de comando executado pelo menos uma vez, j que a expresso_booleana avaliada depois dele. No comando Repeat no necessrio usar a clusula begin e end, mesmo quando contiver mais de uma linha.

SubProgramas Funes
Uma funo se define em Pascal de forma semelhante a definio matemtica. Ela recebe valores como parmetros e retorna um outro valor como resultado. A definio de funo obedece a seguinte sintaxe : function nome_da_funcao(parametro_1:tipo_1,,,parametro_n:tipo_n) : tipo de retorno; var {declarao de variveis locais funo} begin {corpo da funo} end; O trecho de cdigo a seguir define a funo PRODXY, que retorna como resultado o produto de dois nmeros reais X e Y: function PRODXY(X,Y:Real) : Real; begin PRODXY := X*Y; end; Observe que o sinal de atribuio em Object Pascal := e, no o sinal de igual simplesmente.

Procedimentos
Prof. Evandro Csar Freiberger Pgina 27

Curso de Programao em Delphi Componentes Bsicos do Delphi


Um procedimento semelhante a uma funo, mas no retorna um valor. A definio de um procedimento obedece a seguinte sintaxe : procedure nome_do_procedimento(parametro_1:tipo_1,,,,parametro_n : tipo_n); var {declarao de variveis locais ao procedimento} begin {corpo do procedimento} end;

Passagem De Parmetros
Podemos passar parmetros para uma funo ou um procedimento por valor e por referncia. Quando se passa um parmetro por valor estamos realmente passando um valor ou a cpia de um valor armazendo numa varivel. Quando a passagem se faz por referncia, estamos passando o endereo da varivel na memria e no o seu valor. Quando se altera, dentro da funo, o valor de uma varivel passada por por referncia esta alterao surte efeito em todo o programa (fora da funo). Para passarmos um parmetro por referncia devemos preced-lo da palavra reservada var. Ex: procedure nome_do_procedimento(var parametro1 : tipo1 ; parametro2 : tipo2);

Prof. Evandro Csar Freiberger

Pgina 28

Curso de Programao em Delphi Componentes Bsicos do Delphi

Programao Orientada a Objetos com Delphi


O que POO?
Programao orientada a objetos um paradigma de desenvolvimento de programas. O Delphi no totalmente orientado a objetos, porm traz caractersticas suficientes para tal. Toda base para os conceitos e desenvolvimento orientado a objetos est fundamentado em uma nova estrutura, denominada de classe de objetos.

Classes
uma estrutura implementada atravs da unio de dados e cdigo numa mesma estrutura. Fazendo uma analogia com o Pascal, uma classe de objeto semelhante a um tipo registro, porm acrescenta-se, a capacidade de conter cdigo embutido nessa estrutura para manipulao dos seus prprios dados. De modo geral, uma linguagem para ser considerada como orientada a objetos precisa atender no mnimo os critrios de herana, encapsulamento e polimorfismo.

Exemplo de definio de classe


Clusula Interface da Unit definio da classe Type TEmpregado = class (TObject) Private FCodigo : word; FUltimoCodigo : word; FNome : string; FNascimento : TDateTime; Public Constructor Criar; Destructor Destruir; Procedure SetNome(nome:string); Function GetNome:string; Procedure SetNascimento(data:TDateTime); Function GetNascimento: TDateTime; Function GetCodigo:Word; Procedure Consulta; Function CalculaIdade:string; end;

Prof. Evandro Csar Freiberger

Pgina 29

Curso de Programao em Delphi Componentes Bsicos do Delphi


Clusula Implementation implementao da classe //-------------------------------------------------------------------------//implementao do mtodo construtor Criar //-------------------------------------------------------------------------Constructor TEmpregado.Criar; begin Fcodigo := 0; FUltimoCodigo := 0; end;

//-------------------------------------------------------------------------//implementao do mtodo Destrutor Destruir //-------------------------------------------------------------------------Constructor TEmpregado.Destruir; begin Inherited Destructor; end; //-------------------------------------------------------------------------//implementao do mtodo SetNome //-------------------------------------------------------------------------Procedure TEmpregado.SetNome(nome:String); begin FNome := nome; FCodigo := FUltimoCodigo + 1; FUltimoCodigo := FCodigo; end; //-------------------------------------------------------------------------//implementao do mtodo GetNome //-------------------------------------------------------------------------Function TEmpregado.GetNome:String; Begin GetNome := FNome; end; //-------------------------------------------------------------------------//implementao do mtodo SetNascimento //-------------------------------------------------------------------------Procedure TEmpregado.SetNascimento(data:TDateTime); begin FNascimento :=data; end;

Prof. Evandro Csar Freiberger

Pgina 30

Curso de Programao em Delphi Componentes Bsicos do Delphi


//-------------------------------------------------------------------------//implementao do mtodo GetNacimento //-------------------------------------------------------------------------Function TEmpregado.GetNascimento:TDateTime; Begin GetNascimento := FNascimento; end;

//-------------------------------------------------------------------------//implementao do mtodo GetCodigo //-------------------------------------------------------------------------Function TEmpregado.GetCodigo:Word; Begin GetCodigo := FCodigo; end;

//-------------------------------------------------------------------------//implementao do mtodo Consulta //-------------------------------------------------------------------------Procedure TEmpregado.Consulta; begin ShowMessage('Dados do Funcionrio(a): '+FNome+#13+ 'Matricula : '+intToStr(FCodigo)+#13+ 'Data Nasc : '+DateToStr(FNascimento)); end; //-------------------------------------------------------------------------//implementao do mtodo CalculaIdade, que atravs da data de nascimento //calcula a idade, tendo como base a data atual do sistema e devolve uma //string com o nmero de anos,meses e dias que a pessoa tem. //-------------------------------------------------------------------------Function TEmpregado.CalculaIdade:String; var numAno,numMes,numDia: word; Diferenca : TDateTime; begin Diferenca := Date - FNascimento; DecodeDate(Diferenca,numAno,numMes,numDia); CalculaIdade := 'A idade do(a) '+Fnome+' de '+intToStr(numAno-1900)+ ' Anos, '+intToStr(numMes)+' Ms e '+intToStr(numDia)+' Dias, '; end;

Prof. Evandro Csar Freiberger

Pgina 31

Curso de Programao em Delphi Componentes Bsicos do Delphi


Usando a classe definida acima Var Empregado : Tempregado; Codigo : word; Nome : String; Begin Empregado := Tempregado.Criar; //cria uma instncia da classe Tempregado Empregado.SetNome(Fulano); //atribui um novo nome Empregado.SetNascimento(StrToDate(01/03/1975)); //atribui a data de nasci. ShowMessage(Empregado.CalculaIdade); //exibe a idade Codigo := Empregado.GetCodigo; // busca o codigo Nome := Empregado.GetNome; //busca o nome Empregado.Destruir; //destri a instncia liberando memria End;

Encapsulamento
a capacidade de ocultar a complexidade que foi necessria para sua implementao. Dessa forma o desenvolvedor que ir usar essa classe, no conhecer a complexidade de sua implementao, facilitando e agilizando o processo de implementao da aplicao.

Tipos de Encapsulamento
So definidos atravs dos atributos de visibilidade, que devem ser colocados antes dos membros que possuem o respectivo atributo. Os atributos podem aparecer em qualquer ordem, porm adotada como padro a ordem alfabtica ( private, protected, public, published). Exemplo: Type Tdialogo = Class Private Ffonte : Tfont; Fmin : Integer; Fmax : Integer; Procedure MudaFonte(Fonte:Tfont); Protected Procedure DesenhaTela; Property Fonte : Tfont read Ffonte write MudaFonte; Public Constructor Cria(nome : string); Destructor Destroi; Function Executa : Boolean; Published Property Min read Fmin write Fmin; Property Max read Fmax write Fmax; End; Obs : quando temos para o mesmo atribuito de visibilidade, mtodos e campos, os campos devem vir antes que os mtodos.

Prof. Evandro Csar Freiberger

Pgina 32

Curso de Programao em Delphi Componentes Bsicos do Delphi

Atributo de Visibilidade Private


Esses membros ficam invisveis para as units que iro usar a classe em questo, bem como para todas as classes que herdarem esses membros, ou seja, esses membros sero visveis somente na classe que os definiu.

Atributo de Visibilidade Protected


Esses membros ficam invisveis para as units que iro usar a classe em questo, porm podero ser acessados na implementao dos mtodos das classes que herdarem esses membros.

Atributo de Visibilidade Public


No tem restries de acesso, tanto usurios da classe quanto classes que herdam esses membros podero acessa-los.

Atributo de Visibilidade Published


Da mesma maneira que os atributos pblicos, no possuem restries, porm ser usado para definir propriedades dos novos componentes para o delphi. Essa propriedades sero inseridas no Object Inspector para que possam ser manipuladas em tempo de projeto. Obs: quando omitimos os atributos de visibilidade, sero admitidos como pblicos.

Prof. Evandro Csar Freiberger

Pgina 33

Curso de Programao em Delphi Componentes Bsicos do Delphi

Herana
a capacidade que uma classe tem de herdar caractersticas (dados e cdigo) de uma classe ancestral, formando assim uma hierarquia de classes. No Delphi, qualquer classe pode herdar caractersticas de uma classe ancestral, com exceo da classe Tobject, que a classe ancestral de todas as outras. A herana o mecanismo que implementa o reaproveitamento de cdigo. Exemplo de herana Type TEmpregado = class (TObject) Protected FCodigo : word; FUltimoCodigo : word; FNome : string; FNascimento : TDateTime; Procedure SetNome(nome:string); Public Constructor Criar; Virtual; Function CalculaIdade:string; Procedure CalculaSalario; Virtual; Abstract; Procedure Demitir; Virtual; Abstract; Procedure Consulta; Virtual; property Matricula : Word read FCodigo; property Nome : String read FNome write SetNome; property Nascimento : TDateTime read FNascimento write FNascimento; end;

TEmpregadoCLT = class (TEmpregado) Private FSaldoFGTS:Double; FTempoServico:word; FTempoSemFerias:word; FNumFeriasPendentes: 0..2; FSalario:Double; Public Constructor Criar; override; Procedure CalculaSalario; override; Procedure Demitir; override; Procedure TirarFerias; Procedure Consulta; Override; property Salario : Double read Fsalario write FSalario; end;

Prof. Evandro Csar Freiberger

Pgina 34

Você também pode gostar