Professional Documents
Culture Documents
CTI UNESP
Prof Ariane Scarelli
Prof Ktia Zambon
[LAZARUS/DELPHI AP01]
Apostila 01 - Linguagem de Programao II - Curso Informtica. Turmas: 72A, 72B e 72C.
SUMRIO
1
2
2.1
2.2
2.3
2.4
2.5
3
3.1
3.2
3.3
3.4
4
INTRODUO .......................................................................................................................1
AMBIENTES DO DELPHI E DO LAZARUS..........................................................................4
Elementos do Delphi/Lazarus ..........................................................................................4
Arquivos gerados no desenvolvimento em Delphi ........................................................5
Arquivos gerados na execuo em Delphi .....................................................................5
Arquivos gerados no desenvolvimento em Lazarus ......................................................6
Arquivos gerados na execuo em Lazarus ...................................................................6
TIPOS DE DADOS .................................................................................................................7
Nmeros inteiros ..............................................................................................................7
Nmeros reais ...................................................................................................................7
Caracteres .........................................................................................................................7
Lgicos ..............................................................................................................................8
UTILIZAO DE COMPONENTES BSICOS (exemplos comentados) .............................8
5 EXERCCIOS .......................................................................................................................17
APNDICES ...............................................................................................................................44
APNDICE A Programao Orientada a Objetos (POO)............................................................... 44
6
7
Nota: esta apostila est baseada no Delphi 7 e Delphi 2010. No entanto, ser utilizada com o software
open source Lazarus1, que contem diversas caractersticas das duas verses do Delphi.
1 INTRODUO
O Delphi uma linguagem de programao muito utilizada mundialmente para aplicaes desktop. A
ltima2 verso da linguagem Delphi a XE3, produzida pela Embarcadero3. Com ela possvel
desenvolver aplicaes para Mac OS e criar solues para iOS mveis para iPhone, iPod e iPad. Como
uma linguagem proprietria, no temos acesso a esta ltima verso, e sim, a uma mais antiga para fins
no comerciais, unicamente educacionais.
Alguns aplicativos desenvolvidos em Delphi4:
Programao Estruturada
Apostila 1 Delphi
Apostila 1 Delphi
O surgimento desta metodologia de engenharia de software deu-se em fins dos anos 70 e incio
dos anos 80, quando pesquisadores do Centro de Pesquisas da Xerox, em Palo Alto, Califrnia,
desenvolveram uma linguagem de programao chamada SmalTalk, que utilizava pela primeira vez o
conceito de classes e objetos, alm de possuir uma interface grfica baseada em janelas e cones, tal
como vemos hoje no Macintosh, no Windows, entre outros.
A ideia bsica por trs dessa tcnica de programao a reutilizao de cdigos j prontos,
denominados classes, para criarmos as partes vitais do programa, chamados de objetos. Com isso,
economizamos um bom tempo e no se reinventa a roda.
Na programao orientada a objetos o usurio pode controlar a entrada de dados e cabe ao
programador a manipulao destes dados independente da ordem que entraram. Observe o mesmo
exemplo anterior na Figura 3.
Apostila 1 Delphi
No caso da mesma aplicao ser executada utilizando-se os objetos do Delphi (Labels, Edits,
BitButtons) e a programao realizada atravs dos eventos OnClick dos botes, pode-se analisar que a
entrada de dados j no depende mais da ordem de programao e sim do usurio que est manipulando
o programa.
Delphi uma linguagem de programao orientada a objetos que teve origem no Object Pascal.
Em nossa disciplina utilizaremos as classes j prontas do Delphi, instanciando (criando) os objetos nas
aplicaes que desenvolveremos. Novas classes no sero criadas aqui, pois no o propsito de nossa
disciplina. Criaremos aplicaes com inmeros objetos instanciados e faremos a programao Orientada
a Eventos, isto , conforme os movimentos ou aes solicitados pelo usurio. Leia o APNDICE A
Programao Orientada a Objetos (POO) para mais detalhes.
Descrio
Formulrio (Form)
Componentes
Propriedades
Mtodos
Eventos
Projeto (Project)
Unidade (Unit)
Apostila 1 Delphi
Extenso Definio
.DPROJ
.PAS
.DFM
.RES
.~DP
.~PA
.~DF
.DSK
Funo
Arquivo do
Definio
Funo
.EXE
Arquivo
compilado
executvel
.DCU
Cdigo objeto
da Unit
Apostila 1 Delphi
Funo
.LPI
Arquivo do
Projeto
.LPR
.PAS
.LFM
Definio
Funo
.EXE
Arquivo
compilado
executvel
Apostila 1 Delphi
TIPOS DE DADOS
Toda e qualquer informao numrica que pertena ao conjunto dos nmeros inteiros relativos
(negativa, nula ou positiva). Nmeros sem casas decimais.
Tipo
Faixa
Shortint
-128 .. +127
Smallint
-32.768 .. +32.767
Longint
-2.147.483.648 ..
+2.147.483.647
Byte
0 .. +255
Word
0 .. +65.535
Integer
-2.147.483.648 ..
+2.147.483.647
Cardinal
0 .. +2.147.483.647
5x10^-324 .. 1.7x10^308
Dgitos
significativos
15 16
Real48
2.9x10^-39 .. 1.7x10^38
11 12
Single
1.5x10^-45 .. 3.4x10^38
7-8
Double
5.0x10^-324 .. 1.7x10^308
15 16
3.6x10^-4951 .. 1.1x10^4932
19 20
10
-2^63+1 .. 2^63-1
19 20
-922,337,203,685,477.5808 ..
922,337,203,685,477.5807
19 - 20
Extended
Comp
Currency
Faixa
Utilizao Memria
(bytes)
8
3.3 Caracteres
Toda e qualquer informao composta por um conjunto de caracteres alfanumricos: numricos
(0.. .9), alfabticos (A.. .Z, a.. .z) e especiais (por exemplo, #, ?, !, @).
Apostila 1 Delphi
Tipo
Tamanho mximo
Char
1 byte
String
At 2 Gigabytes
3.4 Lgicos
Toda e qualquer informao que pode assumir apenas duas situaes.
Tipo
Boolean
Bytebool
Wordbool
Longbool
Projeto composto por vrios formulrios (vrios *.LFM os quais tm sua respectiva unit
associada, os arquivos *.PAS)
Formulrio composto dos componentes que sero utilizados para a programao do projeto
Componentes esto nas suas respectivas guias: Standard, Additional, System, Data Access,
Data Controls etc.
Projeto (aplicao) prjExemplo1.LPI
untExemplo1.LFM
untExemplo1.PAS
Valor
Descrio
BorderStyle
Single
Caption
Exemplo
Bsica
Color
ClMenu
Name
frmExemplo1
WindowsState
WsNormal
Apostila 1 Delphi
Formulrio: untExemplo1
(neste processo o Lazarus salva:
Objeto
Propriedade
Valor
Descrio
Standard
Label
Caption
Hello World!!!
Fonte Size
20
Tamanho da letra
Name
lblHello
Nome da varivel
EXEMPLO 2: Criao de uma aplicao para converter moeda de reais para dlares.
10
Valor
Descrio
BorderStyle
Single
Caption
Color
ClMenu
Name
frmMoeda
WindowsState
WsMaximized
Formulrio: untExemplo2
(neste processo o Lazarus salva:
Objeto
Propriedade
Valor
Descrio
(voc deve completar)
Standard
Standard
Panel
Label
Apostila 1 Delphi
Align
AlTop
Caption
Conversor de Moeda
Fonte Size
18
Name
pnlMoeda
Caption
11
Standard
Label
Standard
Edit
Standard
Edit
Additional BitBtn
Additional BitBtn
Standard
Standard
Label
Label
Fonte Size
10
Name
lblDolar
Caption
Fonte Size
10
Name
lblReal
Name
Text
edtDolar
<espao em branco>
Name
edtReal
Text
<espao em branco>
Name
bbtnConverter
Fonte Size
10
Caption
&Converter
Hint
ShowHint
True
Name
bbtnSair
Fonte Size
10
Caption
&Sair
Hint
Encerra a aplicao
ShowHint
True
Caption
Fonte Size
12
Name
lblResposta
Caption
Fonte Size
12
Name
lblRetorno
12
Forms, untExemplo2;
{ you can add units after this }
{$R *.res}
begin
RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TfrmMoeda, frmMoeda);
Application.Run;
end.
TfrmMoeda = class(TForm)
bbtnConverter: TBitBtn;
bbtnSair: TBitBtn;
edtDolar: TEdit;
edtReal: TEdit;
lblResposta: TLabel;
lblRetorno: TLabel;
lblDolar: TLabel;
lblReal: TLabel;
pnlMoeda: TPanel;
private
{ private declarations }
public
{ public declarations }
end;
Apostila 1 Delphi
13
var
frmMoeda: TfrmMoeda;
implementation
{$R *.lfm} { Diretiva compiladora que inclui toda a interface, propriedades da forma
e componentes do arquivo *LDFM }
end.
Descrio
OnClick
OndblClick
OnKeyDown
OnKeyUp
OnKeyPress
OnMouseDown
OnMouseUp
OnMouseMove
Mtodos
Um mtodo um tipo especial de funo ou procedimento que est relacionado classe a que
pertence o componente.
Apostila 1 Delphi
14
Mtodo
Descrio
Show
Mostra um formulrio
Hide
SetFocus
Estabelece
foco
para
um
formulrio
ou
componente
BringtoFront
Boto Sair Evento OnClick (no evento On Click ocorrer o mtodo Close)
procedure TfrmMoeda.btnSairClick(Sender: TObject);
begin
frmMoeda.Close;
end;
Nota: o parmetro Sender enviado nas procedures de eventos dos componentes de um form do tipo
TObject e um tipo especfico do Delphi que proporciona maior flexibilidade de programao
(generalizao). Ele indica que componente (ou objeto) recebeu o evento e ento ativa o processo
correspondente. Um exemplo tpico seria apontar para a mesma procedure o evento de dois objetos
diferentes. Por exemplo, o trecho de cdigo abaixo mostra o ttulo da aplicao no Caption de um Dialog
Box somente se o evento OnClick foi recebido por Button1.
Boto Converter Evento OnClick (no evento On Click ocorrer a execuo dos procedimentos
abaixo)
15
val(edtDolar.Text,rValorDolar,iErro);
val(edtReal.Text,rValorReal,iErro);
rValorConvertido := rValorReal / rValorDolar;
str(rValorConvertido:8:1,sRetorno);
lblRetorno.Caption:=sRetorno;
end;
var
rValorDolar, rValorReal, rValorConvertido:real;
iErro:integer;
sRetorno:string[20];
Ou podem ser criadas localmente, na seo var da prpria sub-rotina, porque, neste caso, so
utilizadas somente no escopo desta procedure.
16
5 EXERCCIOS
1) Elabore uma aplicao em Lazarus que receba uma temperatura em graus Celsius e a converta em
Farenheit:
F = 9C/5+32
AREA 4R 2
4
VOLUME R 3
3
Apostila 1 Delphi
17
Objeto
Propriedade
Valor
Descrio
(voc
deve completar)
Additional LabeledEdit
EditLabel Caption
Qual o valor do
RAIO?
Additional BitBtn
Name
bbtnCalcular
Caption
&Calcular
Glyph ...
Load... escolher
imagem da calculadora
Name
bbtnLimpar
Caption
&Limpar
Glyph ...
Load... escolher
imagem da vassoura
Name
bbtnFechar
Caption
&Fechar
Glyph ...
Load... escolher
imagem de fechar janela
Name
bevBaixoRelevo
Additional BitBtn
Additional BitBtn
Additional Bevel
var
rRaio:real;
18
3) Desenvolva uma aplicao para entrar com dois valores e executar as funes de uma calculadora
(adio, subtrao, multiplicao e diviso). Para a diviso, verifique se o divisor no zero e d uma
mensagem para alertar o usurio e volte o foco para acessar outro valor:
Objeto
Additional Bevel
Additional Bevel
Apostila 1 Delphi
Propriedade
Valor
Name
bevTopo
Shape
bsFrame
Style
bsRaised
Name
bevCalculos
19
Additional Bevel
Additional Bevel
Standard Edit
Shape
bsFrame
Style
bsRaised
Name
bevTotalLimpa
Shape
bsFrame
Style
bsRaised
Name
bevRodape
Shape
bsFrame
Style
bsRaised
Name
edtMostra
ReadOnly
true
Dica: deixe o objeto edtMostra somente para leitura, no permitindo alterao. Para isso, altere a
propriedade ReadOnly de false para true.
edtMostra.Text := FloatToStr(rCalc);
Ao clicar em cada boto de clculo (soma, subtrao, multiplicao e diviso) a aplicao ter que
converter as duas entradas string (Text) dos Edits para valores reais. Para no repetir as mesmas
instrues de converso em todos os botes, criaremos uma procedure de converso que ser
chamada a partir de cada boto no evento click.
unit untCalc;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TfrmCalc = class(TForm)
//definies de objetos e procedures gerados automaticamente pelo Delphi
Apostila 1 Delphi
20
procedure Conversao;
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmCalc: TfrmCalc;
implementation
var
rCalc,rValor1,rValor2:real;
iErro:integer;
sCald:string;
{$R *.dfm}
procedure TfrmCalc.Conversao;
begin
rValor1:=strtofloat( edtValor1.text);
rValor2:=strtofloat( edtValor2.Text);
end;
procedure TfrmCalc.btnSomaClick(Sender: TObject);
begin
Conversao;
rCalc:=rValor1+rValor2;
end;
//outras procedures da aplicao
end.
Neste exerccio h duas entradas (Primeiro valor e Segundo valor) e diversos botes que devem
possuir uma ordem de foco para o uso da tecla TAB. Pense na situao em que o usurio utilizar
somente o teclado para ter acesso aos componentes de entrada. A sequncia ou ordem dos objetos
deve seguir uma lgica, geralmente, de cima para baixo e da esquerda para a direita. Para que isto
Apostila 1 Delphi
21
ocorra, programe a propriedade TabOrder para os Edits e tambm para os botes. Esta ordem iniciase no valor 0.
4) Elabore uma aplicao para inserir um ComboBox (guia Standard) para a seleo de um estado do
Brasil, com a imagem do mapa do respectivo estado:
Valor
Name
cmbEstado
Text
Selecione o Estado
DropDownCount
Font Size
10
Hint
Selecione um estado
ShowHint
True
AutoComplete
True
Items
Dica: deixe o Edit somente para leitura, no permita alterao. Qual a propriedade?
Uma das formas de apresentar o nome da capital do estado no Edit correspondente utilizar o
ItemIndex do prprio Combo. Exemplo:
Apostila 1 Delphi
22
5) Faa uma aplicao para apresentar o signo do zodaco correspondente a uma data. Receba como
dados de entrada (ComboBox) o ms e o dia de nascimento de uma pessoa (habilite a seleo do dia
somente aps selecionado o ms). A tabela abaixo mostra o ltimo dia de cada ms e o signo
correspondente. Apresente, atravs do componente Image (Guia Additional), uma figura
correspondente a cada signo aps sua identificao.
Apostila 1 Delphi
Name: imgSigno
AutoSize: True
Center: True
23
Nota: as imagens devem ser tipo BMP e, para facilitar, devero estar na mesma pasta que a aplicao.
Ms
ltimo dia
Signo
Jan
20
CAPRICRNIO
Fev
19
AQURIO
Mar
20
PEIXES
Abr
20
RIES
Mai
20
TOURO
Jun
20
GMEOS
Jul
21
CNCER
Ago
22
LEO
Set
22
VIRGEM
Out
22
LIBRA
Nov
21
ESCORPIO
Dez
21
SAGITRIO
Apostila 1 Delphi
24
6) Faa uma aplicao de uma agncia de carros que utilize o componente ListBox (guia Standard).
Apresente tambm a imagem do carro selecionado na lista. Modifique o design do form conforme
necessrio.
Valor
Fonte Size 10
Sorted
True
Items
Para os edits: Primeiro / Selecionado / ltimo propriedade ReadOnly deve ser true.
Apostila 1 Delphi
25
Apostila 1 Delphi
26
8) Faa uma aplicao na qual voc selecione o tipo de animal de estimao que possui (se no possui,
escolha assim mesmo!), a sua raa e busque a foto dele.
Utilize um componente OpenPictureDialog (da Guia Dialogs) para procurar o caminho que se
encontra a imagem.
Coloque um boto que dever indicar a seleo da Imagem, como Buscar Foto. D o nome
BTN_BuscarFoto.
Evento OnClick do Boto Buscar Foto
procedure Tfrm_PET.btn_BuscarFotoClick(Sender: TObject);
begin
OpenPictureDialog1.Execute;
if OpenPictureDialog1.FileName <> '' then
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
Implemente: para cada tipo de animal, trazer apenas as raas que correspondam a este tipo. Exemplo:
Co, trazer apenas as raas de ces. Isto pode ser implementado no Evento OnClick do ComboBox
referente ao tipo de animal.
Apostila 1 Delphi
27
Primeiro: verifique se os lados formam um tringulo: Cada lado tem que ser menor que a
soma dos dois outros lados. Caso no formem um tringulo, d uma mensagem ao
usurio, limpe os valores dos componentes do tipo Edit e solicite redigitao dos dados.
Quando o usurio digitar valores que formem um tringulo, apresentar um Radiogroup (que
vai existir no formulrio, mas estar invisvel at o momento) com as opes de tipo de
tringulo para que ele selecione o tipo. O programa far as verificaes e apresentar uma
mensagem de acerto ou de erro para o usurio. No caso de erro, identifique o tipo correto:
2 lados iguais issceles
3 lados iguais eqiltero
3 lados diferentes escaleno
Apostila 1 Delphi
28
b) b) nos botes utilizados no formulrio possvel acion-los utilizando a tecla <ALT> e a letra
que est sublinhada. Como isto foi feito?
10) A aplicao descrita abaixo utiliza o componente RadioButton (Guia Standard). Insira 4 objetos do
tipo RadioButton e altere suas propriedades para:
Caption
Somar
Subtrair
Multiplicar
Dividir
Name
rdbSomar
rdbSubtrair
rdbMultiplicar
rdbDividir
a) Para a apresentao do resultado utilize um objeto Panel (ou um Edit com a propriedade
ReadOnly true);
Objeto
Propriedade
Valor
Panel
Name
pnlMostrar
Caption
<deixe vazio>
Descrio
completar)
(voc
deve
b) Para a verificao de qual opo foi setada basta utilizar o mtodo checked do componente
RadioButton:
If rdbAdicao.Checked then
< calcular a adio dos valores>;
If rdbSubtracao.Checked then
< calcular a subtrao dos valores>;
...
Apostila 1 Delphi
29
c) Para os botes calcular, limpar e sair utilize o objeto SpeedButton (guia Additional):
Objeto
Propriedade Valor
SpeedButton Name
Glyph ...
SpeedButton Name
Glyph ...
SpeedButton Name
Glyph ...
Descrio
completar)
(voc
deve
sbtnCalcular
Load... escolher imagem de
calculadora
sbtnLimpar
Load... escolher imagem de
vassoura
sbtnSair
Load... escolher imagem de
porta aberta
Para melhorar a qualidade do programa faa testes de consistncia ao clicar o boto Calcular:
o
Apostila 1 Delphi
30
11) A aplicao descrita abaixo utiliza o componente RadioGroup e CheckGroup (Guia Standard). No
entanto, voc pode criar a aplicao com os componentes que achar conveniente para uma boa
interface.
Pesquise sobre os possveis doadores para cada tipo sanguneo e implemente no boto Checar
Respostas a verificao para a Doao bem sucedida ou Doao Mal Sucedida.
Apostila 1 Delphi
31
12) Faa uma aplicao para executar o jogo Joken-Po. Neste jogo voc poder utilizar o componente
Radiogroup ou adicionar um Groupbox e vrios RadioButtons. A interface dever prever a sua
escolha (ou jogada) e a escolha do computador entre as opes de PEDRA-TESOURA-PAPEL.
Utilize a funo Random que retorna um valor aleatrio para a jogada do computador.
iComputador := Random(3); //para sortear de 0 a 2
O usurio dever necessariamente marcar sua opo de jogo, caso contrrio d uma mensagem.
Aps o usurio marcar sua opo (evento click do componente), mostre a opo do computador
(gerada aleatoriamente entre 0 e 2). No permita que o usurio (jogador) marque as opes do
computador (desabilite-as). Feito isto, apresente o nmero de jogos (vamos estipular em 5 jogadas) e
o placar (quantas vezes o usurio ganhou, quantas vezes o computador ganhou e quantos empates
ocorreram).
A tela abaixo apenas uma sugesto, modifique o design conforme sua criatividade.
13) Faa uma aplicao para calcular o IMC (ndice de massa corporal) de uma pessoa, utilizando a
frmula:
IMC
Peso
Altura * Altura
Entre com peso, altura e sexo da pessoa. Faa os testes de consistncia necessrios para as
entradas peso e altura. Para sexo utilize o objeto ComboBox (guia Standard) e preencha a
propriedade Items com as opes Feminino e Masculino.
32
IMC
Resultado
Inferior a 20
20 a 25
26 a 30
31 a 40
Acima de 40
Muito magro
Normal
Sobrepeso
Obeso
Obesidade Grave
14) Faa um programa na forma de jogo em que o usurio possa identificar caractersticas dos animais
at descobri-lo ou o usurio escolhe o animal e tenta acertar suas caractersticas. A seguir, UMA
SUGESTO de como pode ser feito este jogo, mas use a sua criatividade, inclusive utilizando outros
tipos de componentes.
Exemplo: mamfero? Sim. quadrpede? Sim. carnvoro? No. herbvoro? Sim. Ento o
animal escolhido o cavalo.
onvoro
___________ hom em
mamferobpede
frutfero
__________ macaco
Apostila 1 Delphi
33
Sugesto montada:
15) Faa uma aplicao que contemple duas abas inseridas no componente PageControl Guia Win32.
Uma para o Cadastro de Alunos e outra, para o Cadastro de Professores. Abaixo, SUGESTES para
o exerccio, mas podem inserir outros dados e utilizar outros componentes.
34
16) Faa uma aplicao para anotar um prato do cardpio de uma trattoria de acordo com as escolhas do
cliente. Calcule e apresente o preo. Faa como descrito no formulrio, porm, o design apenas
uma sugesto.
Apostila 1 Delphi
35
Objeto
Propriedade
Valor
Descrio
(voc
deve
completar)
Standard RadioGroup
Standard RadioGroup
Standard GroupBox
Standard CheckBox
Name
rdgMassa
Caption
Massa
ItemIndex
-1
Items
Name
rdgMolho
Caption
Molho
ItemIndex
-1
Items
Name
grbIngredientes
Caption
Ingredientes
Name
chkAzeitona
Caption
Azeitona
Checked
False
Standard CheckBox
Standard Memo
Name
memPedido
Lines
<deixar vazio>
Name
edtTotal
ReadOnly
True
Standard Edit
O boto Fechar Pedido deve ser desabilitado aps ser clicado e ser habilitado novamente ao
clicar em Limpar. Para desabilitar, faa:
btnFecharPedido.Enabled := False;
Tabela de preos:
Item
Apostila 1 Delphi
Preo (R$)
Spaghetti
18,00
Farfalle
22,00
Gnocchi
25,00
36
Sugo
8,00
Branco
11,00
Alho
0,50
Azeitona
1,00
Queijo
2,50
Manjerico
0,50
Alcaparra
0,90
Funghi
3,50
Observaes:
Nos botes deve aparecer uma mensagem quando o mouse estiver posicionado sobre eles
(Hint):
Boto Sair mensagem: encerra a aplicao
Boto Limpar mensagem: novo prato
Boto Fechar Pedido mensagem: calcula pedido
Fazer no Boto Limpar: limpar o Edit, limpar as selees dos RadioGroup e CheckBox.
17) A aplicao a seguir o incio dos estudos sobre criptografia. Esta tcnica ou mtodo criado poder
ser utilizado no trabalho do Jogo e Quiz a ser realizado nos prximos bimestres. importante que
seja aplicado um mtodo eficiente para que possa ser implementado com o banco de dados do
trabalho para proteger logins e senhas de usurios.
Leitura e estudo do material Criptografia e Chaves Digitais.PDF (baixar do Blog da Prof Ariane)
Fazer o exerccio com a sugesto dada ou criar uma interface nova para sua aplicao:
Apostila 1 Delphi
37
18) O aplicativo solicitado a seguir tem o objetivo de preparar um menu com opes que englobem todos
os exerccios desenvolvidos at aqui. Determine, segundo sua opinio, os nveis de dificuldade dos
exerccios e os inclua nas opes de nveis correspondentes (Fcil, Mdio, Difcil). Siga os passos
abaixo para evitar erros. Nesta aplicao h um nico projeto com vrios forms.
Apostila 1 Delphi
38
Application.CreateForm(TfrmTemperatura, frmTemperatura);
Observao: verifique a diferena entre a ativao de um formulrio pelo mtodo Show e pelo
mtodo ShowModal. Anote aqui.
Apostila 1 Delphi
39
Exerccios extras:
19) O dia da Pscoa o primeiro domingo depois da lua cheia que ocorre a partir do vigsimo primeiro dia
do ms de maro. Se a lua cheia ocorre num domingo, ento a Pscoa no domingo seguinte. Ao
clculo do dia da Pscoa deu-se o nome de Computus. Em 1800, Carl Friedrich Gauss, um dos
maiores matemticos de todos os tempos, resumiu o clculo do dia da Pscoa numa frmula bastante
simples. O processo de Gauss para determinar em que dia se comemora a Pscoa no ano X o
seguinte:
M
22
23
23
24
24
25
26
25
N
2
3
4
5
6
0
1
1
Calcula-se P'= D + E - 9 e a Pscoa ser no dia P' de Abril. Mas, se P' for superior a 25, ento:
j)
Calcula-se P'' = P' - 7 e a Pscoa ser a P'' de Abril, j que no pode ser celebrada em data
posterior a 25 de Abril
Faa um programa que receba o ano, determine e mostre em que dia se comemora a Pscoa num
ano qualquer, de 1582 at 2499.
Apostila 1 Delphi
40
20) Elabore uma aplicao que receba o nome do aluno, as mdias dos 4 bimestres, calcule e mostre a
mdia resultante. No boto calcular testar os 4 edits nos quais foram digitadas as mdias e, se estiver
fora do intervalo 0-10 voltar o foco para acessar novamente (teste de consistncia de dados).
Exemplo
000;1;_
999;1;_
###;1;_
opcional
L
LLL;1;_
Lll;1;_
AAA;1;_
Aaa;1;_
>
>aaa;0;_
<aaa;0;_
\(999\)000-
no podendo sobrescrev-lo
0000;0;_
00:00:00;1;_
99/99/9999;1;_
Apostila 1 Delphi
41
medt_nota2.clear;
medt_nota3.clear;
medt_nota4.clear;
medit_nota1.SetFocus;
end;
Validao das entradas (mdias no intervalo de 0-10) no evento OnExit do prprio MaskEdit:
var
Apostila 1 Delphi
42
medit_nota1.SetFocus;
end;
end;
Aps o boto Calcular ser acionado, a mdia anual ser calculada e o seu valor apresentado no
MaskEdit correspondente:
Este e qualquer outro componente que permita edio, mas que est sendo utilizado somente para
apresentar valores DEVEM ter a propriedade ReadOnly alterada para TRUE. Neste caso, o componente
no permite edio, somente leitura.
Apostila 1 Delphi
43
APNDICES
APNDICE A Programao Orientada a Objetos (POO)
Caractersticas da OO
A OO tem como principais caractersticas: classificao, identidade, abstrao, encapsulamento,
herana e polimorfismo.
Classificao consiste em categorizar aquilo que nos rodeia. Criamos classes de objetos para
facilitar nossa compreenso do mundo, ou seja, grupos de objetos que compartilham caractersticas
comuns, embora distintas, em cada objeto. Por exemplo, os seres humanos tm caractersticas comuns:
estrutura e funcionamento do corpo, embora possam ser distintos por sua altura, idade, peso, cor e
aparncia da pele, olhos etc.
Apostila 1 Delphi
44
Classes
Na OO, o programa formado por um conjunto de classes que so modelos para a criao
de objetos. Pense nas classes como sendo um gabarito, um prottipo, a planta de uma casa ao
realizarmos uma construo, a receita de um bolo.
Classes so estruturas que definem as caractersticas e comportamentos dos seres ou coisas do
mundo real; quando implementados as classes, as caractersticas passam a se chamar atributos, e os
comportamentos se transformam nos nossos mtodos de acesso (ou funes).
Objetos so as instncias das classes, os seres que existem no mundo real quando so inseridos
no mundo computacional.
Atributos so as caractersticas inerentes ao ser ou coisa do mundo real quando so definidas no
mundo computacional.
Mtodos so os comportamentos ou funes de um objeto do mundo real na forma como ele
tratado no mundo computacional.
Apostila 1 Delphi
45
Por exemplo, um objeto carro no mundo real tem as propriedades cor, ano, nmero de portas e
tipo de combustvel, entre outras. Alm disso, tem os comportamentos acelerar, frear, virar esquerda e
outros. Assim, quando modelamos esse carro computacionalmente para um jogo de corridas, por
exemplo, definimos uma classe carro cujas propriedades so transformadas nos atributos cor, ano,
nmero de portas, tipo de combustvel e seus comportamentos so transformados no cdigo do programa
nos mtodos acelerar, frear, virar esquerda e outros (Figura 7).
Assim, durante a execuo do sistema, a cada carro que cadastramos uma cpia nova da classe
carro criada, e damos a ela caractersticas que iro diferenci-la dos demais carros, ou seja, criamos a
cada vez um novo objeto do tipo de carro.
Quando um trecho de cdigo quer fazer uma operao sobre um objeto ele emite
uma mensagem para esse objeto requisitando a operao. Na prtica, pode-se implementar isso como
uma simples chamada de funo (chamada de mtodo), que o que ocorre em C++.
Instanciao
a criao de um objeto. Instanciar significa criar uma instncia da classe, isto , um novo objeto
que pode ser descrito por meio dessa classe. Enquanto uma classe um modelo abstrato de um objeto,
uma instncia representa um objeto concreto dessa classe. Podemos criar uma classe Bola que
representa um modelo abstrato de bola, enquanto cada bola que existe fisicamente uma instncia
dessa classe, ou seja, um objeto concreto deste tipo.
Isso significa que utilizamos as mesmas caractersticas para descrever objetos diferentes, ou seja,
uma bola de 4 cm de raio, macia, de madeira e amarela uma bola diferente de outra com 1 m de raio,
oca, de plstico, azul, embora descritas atravs das mesmas caractersticas (raio, oca ou macia,
material e cor). Assim, os atributos de uma classe so variveis-membro dessa classe, que contm a
informao representativa sobre um certo objeto deste tipo.
Apostila 1 Delphi
46
/*
Instanciao de objeto
*/
#include <iostream>
#include <conio.h>
using namespace std;
class ponto
{
private: //nao precisaria por private, em class eh default.
float x, y;
public: //daqui em diante tudo e acessivel.
void inicializa(float a,float b){ x=a; y=b; }
/* As funcoes de uma classe podem acessar os atributos
private dela mesma.*/
void mostra(void){cout << "X:" << x << " , Y:" << y <<
endl;}
};
int main()
{
ponto ap; //instanciacao
ap.inicializa(0.0,0.0); //metodo public
ap.mostra(); //metodo public
getche();
}
Apostila 1 Delphi
47
6 REFERNCIAS BIBLIOGRFICAS
ALVES, William Pereira. Delphi 5.0, Aplicao para Banco de Dados Controle de Estoque. Editora
rica, So Paulo, 1999.
CANT, Marco. Delphi 7 A Bblia. Editora Pearson, So Paulo, 2003.
RUBENKING, Neil J. Programao em Delphi para leigos. Editora Berkeley, So Paulo, 1995.
SANTOS, Jean Patrick Figueiredo dos. Desenvolvendo Aplicativos com Lazarus Linux e Windows. 1
ed. 2011 (Ebook), AGBook. Disponvel para compra em <https://www.agbook.com.br/books>
SCARELLI, Ariane. Apostila 03 do Curso de Linguagem C/C++, Programao Orientada a Objetos (POO).
CTI, Unesp. 2011.
Apostila 1 Delphi
48
7 SITES TEIS
http://www.ajudadelphi.com.br/index.php
http://www.delphidicas.com.br/
http://www.activedelphi.com.br/
http://www.delphibrasil.net/index.php
http://www.embarcadero.com/br/
http://www.marcocantu.com/
http://blog.marcocantu.com/
http://wiki.lazarus.freepascal.org/
http://wiki.lazarus.freepascal.org/Lazarus_IDE_Tools
Apostila 1 Delphi
49