You are on page 1of 51

2013

CTI UNESP
Prof Ariane Scarelli
Prof Ktia Zambon

Identifique sua apostila


Seu nome: ______________________________
Sua turma: _______________

[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

EXEMPLO 1: Criao de uma aplicao bsica ................................................................................. 8


EXEMPLO 2: Criao de uma aplicao para converter moeda de reais para dlares. .................. 10

5 EXERCCIOS .......................................................................................................................17
APNDICES ...............................................................................................................................44
APNDICE A Programao Orientada a Objetos (POO)............................................................... 44

6
7

REFERNCIAS BIBLIOGRFICAS ....................................................................................48


SITES TEIS .......................................................................................................................49

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:

MySQL Administrator (visual database administration console)

WinSCP (open source FTP client)

Skype (32 bits)

BVS Solitaire Collection (game)

Famos Robotic (offline programming and simulation for industrial robots)

Programao Estruturada

Programao estruturada uma maneira disciplinada de se efetuar a programao. Baseia-se no


seguinte princpio: os programas podem ser escritos na forma de blocos de cdigo que se interligam
atravs dos mecanismos de seqncia, iterao e seleo. As linguagens so linguagens procedurais,
particionadas em um conjunto de procedimentos e funes. A seqncia de rotinas descreve como os
dados so manipulados. O que importante observar que o programador controla a interao entre o
cdigo e os dados. Na linguagem de programao Pascal pode-se utilizar este tipo de cdigo. Exemplo:
unit unid1;
interface
var
iA, iB:integer;
procedure Verificacao(iNum:integer);
procedure Valores;
implementation
procedure Verificacao(iNum:integer);
begin

Consulte site do Lazarus em <http://www.lazarus.freepascal.org/>


Em feveveiro de 2013.
3
Consulte site da Embarcadero Brasil em http://www.embarcadero.com/br/.
4
Disponvel em <http://www.embarcadero.com/rad-in-action/application-showcase>. Acesso em dez/2011.
2

Apostila 1 Delphi

Prof Ariane e Prof Ktia

if (iNum mod 2) = 0 then


begin
writeln('Par');
iA:=2 * iNum+iA;
iB:=sqr(iNum)+iB;
end
else
begin
writeln('Impar');
iA:= iNum+5+iA;
iB:=iNum*4+7+iB;
end;
end;
procedure Valores;
begin
writeln('Valor de iA= ',iA);
writeln('Valor de iB= ',iB);
end;
end. {fim da unit}
program Exemplo_Introducao;
uses wincrt,unid1;
var iX:integer;
begin
writeln('Digite um valor inteiro para verificaao:');
readln(iX);
writeln('Digite o valor de A:');
readln(iA);
writeln('Digite o valor de B:');
readln(iB);
Verificacao(iX);
Valores;
end.

Imagens das execues em Pascal nas Figura 1 e Figura 2.

Apostila 1 Delphi

Prof Ariane e Prof Ktia

Figura 1 Primeira execuo do programa

Figura 2 Segunda execuo do programa

Programao Orientada a Objetos5

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.

Retirado de Alves (1999, p. 43-44).

Apostila 1 Delphi

Prof Ariane e Prof Ktia

Figura 3 Execuo em 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.

2 AMBIENTES DO DELPHI E DO LAZARUS

2.1 Elementos do Delphi/Lazarus


Elementos

Descrio

Formulrio (Form)

Componentes

uma janela, elemento bsico onde se agrupa os componentes para formar a


interface com o usurio
Arquivo que contm o cdigo fonte em Object Pascal. Para cada formulrio
existe uma unidade associada
Objetos utilizados para a construo das aplicaes (dos projetos)

Propriedades

Representam os atributos dos componentes

Mtodos

Procedimentos ou funes prprias do objeto

Eventos

Representam a resposta dos componentes ao serem acionados

Projeto (Project)

Conjunto de formulrios, componentes e unidades que compem a aplicao

Unidade (Unit)

Apostila 1 Delphi

Prof Ariane e Prof Ktia

2.2 Arquivos gerados no desenvolvimento em Delphi

Os arquivos gerados pelo Delphi so apresentados a seguir. Devido ao grande nmero de


arquivos gerados, recomenda-se que cada aplicao tenha uma pasta especfica.

Extenso Definio
.DPROJ

.PAS

.DFM

.RES
.~DP
.~PA
.~DF
.DSK

Funo

Arquivo do

Cdigo fonte em Pascal do arquivo principal do projeto. Lista todos


os formulrios e units no projeto, e contm cdigo de inicializao da
Projeto
aplicao. Criado quando o projeto salvo.
Cdigo fonte da
Um arquivo .PAS gerado por cada formulrio que o projeto
Unit( Object Pascal) 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 grfico do
Arquivo binrio que contm as propriedades do desenho de um
formulrio
formulrio contido em um projeto. Um .DFM gerado em companhia
de um arquivo .PAS para cada formulrio do projeto.
Arquivo de Recursos Arquivo binrio que contm o cone, mensagens da aplicao e
do Compilador
outros recursos usados pelo projeto.
Arquivo de Backup
Gerado quando o projeto salvo pela segunda vez.
do Projeto
Arquivo de Backup
Se um .PAS alterado, este arquivo gerado.
da Unit
Backup do Arquivo
Se voc abrir um .DFM no editor de cdigo e fizer alguma alterao,
grfico do formulrio este arquivo gerando quando voc salva o arquivo.
Situao da rea
Este arquivo armazena informaes sobre a situao da rea de
de Trabalho
trabalho especifica para o projeto em opes de ambiente( Options
Environment).

2.3 Arquivos gerados na execuo em Delphi


Extenso

Definio

Funo

.EXE

Arquivo
compilado
executvel

.DCU

Cdigo objeto
da Unit

Este um arquivo executvel distribuvel de sua aplicao. Este


arquivo incorpora todos os arquivos .DCU gerados quando sua
aplicao compilada. O Arquivo .DCU no necessrio distribuir em
sua aplicao.
A compilao cria um arquivo .DCU para cada .PAS no projeto.

Apostila 1 Delphi

Prof Ariane e Prof Ktia

2.4 Arquivos gerados no desenvolvimento em Lazarus

Os arquivos gerados pelo Lazarus so apresentados a seguir. Devido ao grande nmero de


arquivos gerados, recomenda-se que cada aplicao tenha uma pasta especfica.
Extenso Definio

Funo

.LPI

Arquivo principal do projeto (LPI Lazarus Project Information).


Equivalente ao .DPR do Delphi. Formato XML.

Arquivo do
Projeto

.LPR

.PAS

.LFM

Arquivo fonte do Cdigo fonte em Pascal do arquivo principal do projeto (Lazarus


programa principal
Project Main Source). Lista todos os formulrios e units no projeto, e
contm cdigo de inicializao da aplicao. Criado quando o
projeto salvo.
Cdigo fonte da
Um arquivo .PAS gerado por cada formulrio que o projeto
Unit (Object Pascal) 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 grfico do
Arquivo binrio que contm as propriedades do desenho de um
formulrio
formulrio contido em um projeto. Um .LFM gerado em companhia
de um arquivo .PAS para cada formulrio do projeto. Equivalente ao
.DFM do Delphi.

2.5 Arquivos gerados na execuo em Lazarus


Extenso

Definio

Funo

.EXE

Arquivo
compilado
executvel

Este um arquivo executvel distribuvel de sua aplicao.

Apostila 1 Delphi

Prof Ariane e Prof Ktia

TIPOS DE DADOS

3.1 Nmeros inteiros

Toda e qualquer informao numrica que pertena ao conjunto dos nmeros inteiros relativos
(negativa, nula ou positiva). Nmeros sem casas decimais.

Tipo

Faixa

Utilizao Memria (bytes)

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

3.2 Nmeros reais


Valores que podem ter parte inteira e parte decimal (ponto flutuante ou float).
Tipo
Real

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

Prof Ariane e Prof Ktia

Tipo

Tamanho mximo

Char

1 byte

String

At 2 Gigabytes

3.4 Lgicos
Toda e qualquer informao que pode assumir apenas duas situaes.

Tipo

Utilizao Memria (bytes)

Boolean

Bytebool

Wordbool

Longbool

4 UTILIZAO DE COMPONENTES BSICOS (exemplos comentados)

EXEMPLO 1: Criao de uma aplicao bsica

Figura 4 Exemplo 1: Aplicao Bsica

Criando uma Aplicao para o Exemplo1


Linguagens de Programao Lazarus
Criar um novo projeto (Figura 5): Menu Arquivo Novo Projeto/Aplicao
A partir deste ponto, alguns conceitos de programao devem ser inseridos:
Apostila 1 Delphi

Prof Ariane e Prof Ktia

Figura 5 Criando um novo projeto

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

Alterando as propriedades do Formulrio


Propriedade

Valor

Descrio

BorderStyle

Single

Estilo da borda da janela: modo simples, no permite


que o tamanho da janela seja alterado com o mouse

Caption

Exemplo
Bsica

Color

ClMenu

Cor da janela: clMenu uma constante que guarda a


cor padro da janela definido pelo usurio no Windows

Name

frmExemplo1

Nome do objeto interno

WindowsState

WsNormal

Modo de abertura da janela, modo Normal. Outros

Apostila 1 Delphi

Aplicao Label escrito no ttulo superior da janela

Prof Ariane e Prof Ktia

modos podem ser selecionados, como o maximizado


ou minimizado.

Salvando o projeto e o formulrio


Menu Arquivo Salvar Tudo, o Lazarus questionar o nome e a pasta (utilize uma pasta especfica
para cada projeto):
Pasta: C:\trabalho\exemplo1
Projeto: prjExemplo1
(neste processo o Lazarus salva:

prjExemplo1.LPI Lazarus Project Information)

Formulrio: untExemplo1
(neste processo o Lazarus salva:

untExemplo1.PAS Source File


untExemplo1.LFM Lazarus Form)

Inserindo os componentes e alterando suas propriedades


Guia

Objeto

Propriedade

Valor

Descrio

Standard

Label

Caption

Hello World!!!

o que ser apresentado na tela

Fonte Size

20

Tamanho da letra

Name

lblHello

Nome da varivel

EXEMPLO 2: Criao de uma aplicao para converter moeda de reais para dlares.

Figura 6 Exemplo 2: Conversor de Moedas


Apostila 1 Delphi

Prof Ariane e Prof Ktia

10

Criando uma Aplicao para o Exemplo2


Linguagens de Programao Lazarus
Criar um novo projeto: Menu Arquivo Novo Projeto/Aplicao

Alterando as propriedades do Formulrio


Propriedade

Valor

Descrio

BorderStyle

Single

Estilo da borda da janela: modo simples, no permite que


o tamanho da janela seja alterado com o mouse

Caption

Exemplo 1 Conversor Label escrito no ttulo superior da janela


de Moeda

Color

ClMenu

Cor da janela: clMenu uma constante que guarda a cor


padro da janela definido pelo usurio no Windows

Name

frmMoeda

Nome do objeto interno (varivel)

WindowsState

WsMaximized

Modo de abertura da janela, modo Maximizado

Salvando o formulrio e o projeto


Menu Arquivo Salvar Tudo, o Lazarus questionar o nome e a pasta (utilize uma pasta especfica
para cada projeto):
Pasta: C:\trabalho\exemplo2
Projeto: prjExemplo2
(neste processo o Lazarus salva:

prjExemplo2.LPI Lazarus Project Information)

Formulrio: untExemplo2
(neste processo o Lazarus salva:

untExemplo2.PAS Source File


untExemplo2.LFM Lazarus Form)

Inserindo os componentes e alterando suas propriedades


Guia

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

Digite o valor do dlar hoje


(US$):
Prof Ariane e Prof Ktia

11

Standard

Label

Standard

Edit

Standard

Edit

Additional BitBtn

Additional BitBtn

Standard

Standard

Label

Label

Fonte Size

10

Name

lblDolar

Caption

Digite o valor a ser convertido


(R$):

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

Converte reais em dlares

ShowHint

True

Name

bbtnSair

Fonte Size

10

Caption

&Sair

Hint

Encerra a aplicao

ShowHint

True

Caption

Valor convertido em dlares:


US$

Fonte Size

12

Name

lblResposta

Caption

<espao em branc >

Fonte Size

12

Name

lblRetorno

Entendendo o cdigo fonte principal do Projeto (prjExemplo2.LPR):


program prjExemplo2;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Apostila 1 Delphi

Prof Ariane e Prof Ktia

12

Forms, untExemplo2;
{ you can add units after this }
{$R *.res}
begin
RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TfrmMoeda, frmMoeda);
Application.Run;
end.

Entendendo o cdigo fonte do Formulrio (untExemplo2.PAS):


unit untExemplo2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, Buttons;
Type
{ TfrmMoeda }

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

Prof Ariane e Prof Ktia

13

var
frmMoeda: TfrmMoeda;

implementation
{$R *.lfm} { Diretiva compiladora que inclui toda a interface, propriedades da forma
e componentes do arquivo *LDFM }
end.

Eventos utilizados no exemplo:


Os programas feitos em Delphi/Lazarus so orientados a eventos. Eventos so aes
normalmente geradas pelo usurio, mas podem ser tambm geradas pelo Windows. Existem eventos
associados ao formulrio e a cada componente. Ex.: Clicar o mouse, pressionar uma tecla, mover o
mouse, pressionar <ENTER> etc.
Exemplos:
Ao formulrio est ligado o evento on create, que ocorre quando o formulrio exibido na tela
pela primeira vez durante a execuo;
Ao objeto boto est ligado o evento on click, que ocorre quando um click com o mouse sobre
o boto executado.
Eventos comuns aos componentes
Evento

Descrio

OnClick

Ocorre quando o usurio clica o mouse posicionado no objeto

OndblClick

Ocorre quando o usurio d um duplo clique

OnKeyDown

Ocorre quando o usurio pressiona uma tecla enquanto o objeto


tem foco

OnKeyUp

Ocorre quando o usurio solta uma tecla enquanto o objeto tem o


foco

OnKeyPress

Ocorre quando usurio pressiona uma tecla

OnMouseDown

Ocorre quando o usurio pressiona o boto do mouse

OnMouseUp

Ocorre quando o usurio solta o boto do mouse

OnMouseMove

Ocorre quando o usurio move o ponteiro do mouse

Mtodos
Um mtodo um tipo especial de funo ou procedimento que est relacionado classe a que
pertence o componente.
Apostila 1 Delphi

Prof Ariane e Prof Ktia

14

Mtodo

Descrio

Show

Mostra um formulrio

Hide

Esconde um formulrio mais no o descarrega

Print

Imprime um formulrio na impressora

SetFocus

Estabelece

foco

para

um

formulrio

ou

componente
BringtoFront

Envia para frente

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.

procedure TMainForm.Button1Click(Sender: TObject);


begin
if Sender = Button1 then
AboutBox.Caption := Sobre + Application.Title
else
AboutBox.Caption := '';
AboutBox.ShowModal;
end;

Boto Converter Evento OnClick (no evento On Click ocorrer a execuo dos procedimentos
abaixo)

procedure TfrmMoeda.bbtnConverterClick(Sender: TObject);


begin
Apostila 1 Delphi

Prof Ariane e Prof Ktia

15

val(edtDolar.Text,rValorDolar,iErro);
val(edtReal.Text,rValorReal,iErro);
rValorConvertido := rValorReal / rValorDolar;
str(rValorConvertido:8:1,sRetorno);
lblRetorno.Caption:=sRetorno;
end;

Criando as variveis utilizadas neste exemplo

As variveis podem ser criadas na seo Implementation:

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.

procedure TfrmMoeda.bbtnConverterClick(Sender: TObject);


var
rValorDolar, rValorReal, rValorConvertido:real;
iErro:integer;
sRetorno:string[20];
begin
val(edtDolar.Text,rValorDolar,iErro);
val(edtReal.Text,rValorReal,iErro);
rValorConvertido := rValorReal / rValorDolar;
str(rValorConvertido:8:1,sRetorno);
lblRetorno.Caption:=sRetorno;
end;

Verifique seu aprendizado:

a) No componente LABEL, qual a diferena entre as propriedades NAME e CAPTION?


Apostila 1 Delphi

Prof Ariane e Prof Ktia

16

b) No componente EDIT, qual a diferena entre as propriedades NAME e TEXT?


c) Qual a finalidade do & no componente BITBTN? Em qual propriedade deve ser inserido?
d) Qual o componente possui a propriedade HINT? Qual a finalidade desta propriedade?
e) Qual deve ser o status da propriedade SHOWHINT para que o HINT funcione?
f)

O que significam os arquivos salvos? .LPI, .PAS e .LFM?

5 EXERCCIOS
1) Elabore uma aplicao em Lazarus que receba uma temperatura em graus Celsius e a converta em
Farenheit:
F = 9C/5+32

Pasta: C:\Trabalho\Exercicio1 (para cada exerccio uma nova pasta)


Formulrio: untExerc1.PAS
Projeto: prjExerc1.LPI
2) Elabore uma aplicao que receba o valor do raio (admita que o raio esteja no intervalo de 0 100) de
uma esfera e calcule o seu volume e sua rea, baseando-se nas frmulas dadas. Mostre os valores
calculados. Utilize para o valor de 3.14159265.

AREA 4R 2
4
VOLUME R 3
3

Apostila 1 Delphi

Prof Ariane e Prof Ktia

17

Inserindo novos objetos e alterando suas propriedades


Guia

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

Validao da entrada (raio no intervalo de 0-100) no evento OnExit do prprio LabelEdit:

Na seo Implementation, declare as variveis que sero utilizadas nas procedures:

var
rRaio:real;

// varivel utilizada na transformao de text para real

rArea, rVolume:real; // variveis utilizadas no clculo


iErro:integer;

// varivel utilizada na procedure VAL

No evento OnExit do LabelEdit do Raio:

procedure TfrmCalculos.lbledtRaioExit(Sender: TObject);


begin
// Verifica se o valor est no intervalo de 0 - 100
val(lbledtRaio.Text, rRaio, iErro);
if (rRaio < 0) or (rRaio > 100) then
begin
ShowMessage('Valor do Raio fora do intervalo vlido (0-100)');
Apostila 1 Delphi

Prof Ariane e Prof Ktia

18

lbledtRaio.Clear; // Limpa o valor anteriormente digitado


lbledtRaio.SetFocus // Volta o foco para LabelEdit
end;
end;

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:

ShowMessage('Divisor no pode ser zero!');


edtValor2.SetFocus;

// edtValor2: name do edit que acessa o 2. Valor

Inserindo objetos e alterando suas propriedades


Guia

Objeto

Additional Bevel

Additional Bevel
Apostila 1 Delphi

Propriedade

Valor

Name

bevTopo

Shape

bsFrame

Style

bsRaised

Name

bevCalculos

Descrio (voc deve completar)

Prof Ariane e Prof Ktia

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.

Nota: para transformar strings em valores reais e vice-versa:

rValor1 := StrToFloat (frmCalc.edtValor1.Text);

edtMostra.Text := FloatToStr(rCalc);

Criando uma procedure para efetuar as converses

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

Prof Ariane e Prof Ktia

20

procedure Conversao;

//deve ser includo manualmente pelo programador

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.

Definio de ordem para as entradas solicitadas:

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

Prof Ariane e Prof Ktia

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:

Altere as propriedades do objeto ComboBox para:


Propriedade

Valor

Descrio (voc deve completar)

Name

cmbEstado

Text

Selecione o Estado

DropDownCount

Font Size

10

Hint

Selecione um estado

ShowHint

True

AutoComplete

True

Items

<digitar todos os estados que devero aparecer no combo>

Para que o estado selecionado aparea no Edit:


<nome_edit>.text := <nome_combo>.text;

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

Prof Ariane e Prof Ktia

22

procedure TfrmCombo.cmbEstadosClick(Sender: TObject);


begin
edtEstado.Text:=cmbEstados.Text;
case cmbEstados.ItemIndex of
0:edt_capital.Text:='Vitria';
1:edt_capital.Text:='Cuiab';
2:edt_capital.Text:='Belo Horizonte'; //colocar para os outros estados
end;
end;

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.

Para o componente Image:

Apostila 1 Delphi

Name: imgSigno

AutoSize: True

Center: True

Prof Ariane e Prof Ktia

23

Para habilitar a seleo do dia depois de selecionado o ms, no evento OnChange do


ComboBox de seleo do ms, faa:
procedure TfrmZodiaco.cmbMesChange(Sender: TObject);
begin
lblDia.Enabled:=True;
cmbDia.Enabled:=True;
end;

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

Evento OnClick do Boto Descobrir Signo?


procedure TfrmZodiaco.btnSignoClick(Sender: TObject);
begin
imgSigno.Picture.LoadFromFile('capricornio.bmp');
lblSigno.Caption:='Capricrnio';
end;

Apostila 1 Delphi

Prof Ariane e Prof Ktia

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.

Altere as propriedades do objeto ListBox para:


Propriedade

Valor

Descrio (voc deve completar)

Fonte Size 10
Sorted

True

Items

<digitar todos os carros que devero aparecer na lista>

Para os edits: Primeiro / Selecionado / ltimo propriedade ReadOnly deve ser true.

Evento Duplo Clique no ListBox


procedure TfrmListBox.ltbCarrosDblClick(Sender: TObject);
var
QtdeItens:byte;
begin
with ltbCarros do
begin
edtPrimeiro.Text:=Items[0]; // preencher o texto do edit: Primeiro da lista
edtSelecionado.Text:=Items[ItemIndex]; // preencher o texto do edit: Selecionado
QtdeItens:=ltbCarros.Items.Count;
edtUltimo.Text:=Items[QtdeItens-1]; // preencher o texto do edit: ltimo da lista
end;
end;

Apostila 1 Delphi

Prof Ariane e Prof Ktia

25

Evento KeyPress no Edit do Adicionar lista


procedure TfrmListBox.edtAdicionarKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then // testa se a tecla foi um <enter>
begin
if edtAdicionar.Text <> '' then // para no adicionar item em branco
begin
// adiciona em tempo de execuo, mas no armazena em Items
ltbCarros.Items.Add(edtAdicionar.Text);
// Limpar valores dos Edits
edtAdicionar.Clear;
edtPrimeiro.Clear;
edtSelecionado.Clear;
edtUltimo.Clear;
ltbCarros.SetFocus; // volta o foco para o ListBox
end;
end;
end;

7) Faa uma aplicao para efetuar a tabuada de um nmero qualquer.


a) Faa a previso de que o usurio pode digitar qualquer caracter e no s valores numricos
b) Pode-se utilizar um ListBox para apresentar os valores (veja o exerccio anterior) para o mtodo:
<Name_ListBox>.Items.Add (<string que ser apresentada>);
c) O operador + faz a concatenao de strings e pode ser utilizado no mtodo acima. Exemplo: 72 +
ABCD igual a 72ABCD
d) Qualquer um dos comandos de repetio podem ser utilizados: While, Repeat ou For.

Apostila 1 Delphi

Prof Ariane e Prof Ktia

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

// aqui se usa dois apstrofos, no so aspas

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

Prof Ariane e Prof Ktia

27

9) Faa uma aplicao para a verificao de tipos de tringulos.

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

Prof Ariane e Prof Ktia

28

Implemente as seguintes caractersticas:


a) no boto Checar apresentar a mensagem Identifica o tipo de tringulo quando passar o
cursor em cima do boto (Hint). Anote as propriedades que foram setadas para que esta ao
ocorra;

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

Prof Ariane e Prof Ktia

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

no deixar valores em branco;

na diviso testar se o divisor diferente de zero.

Apostila 1 Delphi

Prof Ariane e Prof Ktia

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.

A forma de checagem do CheckGroup :


if CheckGroup1.Checked[num_item]then

Apostila 1 Delphi

Prof Ariane e Prof Ktia

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.

Calcule e mostre o IMC e classifique-o de acordo com a tabela abaixo:


Apostila 1 Delphi

Prof Ariane e Prof Ktia

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.

quadrpedecarnvoro _____ leo


herbvoro _____ cavalo

onvoro
___________ hom em

mamferobpede
frutfero
__________ macaco

voador __________________ morcego

aqutico _________________ baleia

tropical __________ avestruz

avesno voadora polar ____________ pingim

nadadora ______________________ pato

com casco ____________________ tartaruga


rptil carnvoros ____________________ crocodilo

sem patas _____________________ cobra

Apostila 1 Delphi

Prof Ariane e Prof Ktia

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.

Implementao: insira a data de nascimento do aluno e utilize o componente Calendrio (guia


Dialogs).
Apostila 1 Delphi

Prof Ariane e Prof Ktia

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

Prof Ariane e Prof Ktia

35

Inserindo objetos e alterando suas propriedades


Guia

Objeto

Propriedade

Valor

Descrio

(voc

deve

completar)
Standard RadioGroup

Standard RadioGroup

Standard GroupBox
Standard CheckBox

Name

rdgMassa

Caption

Massa

ItemIndex

-1

Items

<digitar todas as opes de massa>

Name

rdgMolho

Caption

Molho

ItemIndex

-1

Items

<digitar todas as opes de massa>

Name

grbIngredientes

Caption

Ingredientes

Name

chkAzeitona

Caption

Azeitona

Checked

False

Standard CheckBox

<repetir para os demais ingredientes como acima>

Standard Memo

Name

memPedido

Lines

<deixar vazio>

Name

edtTotal

ReadOnly

True

Standard Edit

Para adicionar ao Memo do Pedido, veja o exemplo:


memPedido.Lines.Add(variavel + texto + variavel + texto);

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

Prof Ariane e Prof Ktia

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:

Caso nenhuma opo de massa, molho e ingredientes seja selecionada, d uma


mensagem;

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

Prof Ariane e Prof Ktia

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.

a) Criar uma nova aplicao e salvar:


prjMenu.LPI
untMenu.PAS (que salvar a untMenu.LFM)
b) Inserir o componente MainMenu (Guia Standard) e as opes do Menu (segundo sua opinio)

Apostila 1 Delphi

Para colocar as teclas de atalho setar a propriedade ShortCut

Prof Ariane e Prof Ktia

38

c) Testar a aplicao e, se tudo estiver correto, comece a inserir os formulrios um a um e


execute o projeto para cada formulrio inserido.

Coloque na mesma pasta do projeto do menu os arquivos .PAS e .LFM


correspondentes ao exerccio (vamos utilizar o exerccio da temperatura:
untExerc1.PAS e untExerc1.LFM)

Para inserir o formulrio correspondente, siga os passos:


1) Abra no Lazarus o arquivo da unit (untExerc1.PAS) a ser inserido;
2) Clique em menu Projeto Adicionar arquivo do editor ao projeto;
3) Abra o cdigo fonte do projeto (menu Projeto Exibir fonte do projeto);
4) Acrescente a linha a seguir:

Application.CreateForm(TfrmTemperatura, frmTemperatura);

5) Repita o passo 4 para cada unit que for inserida ao projeto.


Cuidado: se os formulrios estiverem com o mesmo nome (form1 e form1, por
exemplo, ento no ser possvel adicionar o novo formulrio)

Em cada opo correspondente do objeto MainMenu, no evento click, inserir o


nome do formulrio que deseja que seja aberto:

procedure TfrmMenu.TemperaturaClick(Sender: TObject);


begin
frmTemperatura.ShowModal;
end;
Na unit do Menu inserir os nomes das units correspondentes s opes do menu:
unit untMenu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, Menus, untExerc1; //Nome atribudo unit criada

Acrescente os outros formulrios da mesma forma

Observao: verifique a diferena entre a ativao de um formulrio pelo mtodo Show e pelo
mtodo ShowModal. Anote aqui.

Apostila 1 Delphi

Prof Ariane e Prof Ktia

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:

a) Determine duas constantes M e N, pela tabela:


ANO
1582 a 1699
1700 a 1799
1800 a 1899
1900 a 2099
2100 a 2199
2200 a 2299
2300 a 2399
2400 a 2499

M
22
23
23
24
24
25
26
25

N
2
3
4
5
6
0
1
1

b) Determine A = resto da diviso de Ano por 4


c) Determine B = resto da diviso de ano por 7
d) Determine C = resto da diviso de Ano por 19
e) Determine D = resto da diviso de (19 x C + M) por 30
f) Determine E = resto da diviso de (2 x A + 4 x B + 6 x D + N) por 7
g) Calcula-se o valor de P dado por P= 22 + D + E
h) Se P for inferior ou igual a 31, a Pscoa ser no dia P de Maro. Mas se P for maior que 31,
ento:
i)

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

Prof Ariane e Prof Ktia

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).

Neste exerccio, utilizar o componente MaskEdit (da guia Additional).


Alterar as propriedades: Name, Text (deixar em branco) e EditMask para 99,9. Este formato de
mscara permitir que sejam digitados somente valores numricos com este formato: dois inteiros
e uma casa decimal. A validao de dados (valores no intervalo de 0 10) no feita aqui.

A mscara tem basicamente 3 campos separados por ; (ponto-e-vrgula):


Primeiro campo: a mscara propriamente dita (quantidade de caracteres, tipo etc.);
Segundo campo: o valor 0 (zero) no salva os caracteres fixos da mscara e o valor 1 salva;
Terceiro campo: representa o caractere em branco, podendo ser substitudo pelo underline, @ etc.

Alguns caracteres do MasEdit mais utilizados:


Caractere Definio

Exemplo

Caracteres numricos (0-9) de preenchimento obrigatrio

000;1;_

Caracteres numricos (0-9) de preenchimento opcional

999;1;_

Caracteres numricos (0-9) e os sinais de - ou + de preenchimento

###;1;_

opcional
L

Caracteres alfabticos (A-Z, a-z.) de preenchimento obrigatrio

LLL;1;_

Caracteres alfabticos (A-Z, a-z.) de preenchimento opcional

Lll;1;_

Caracteres alfanumricos (A-Z, a-z, 0-9) de preenchimento obrigatrio

AAA;1;_

Caracteres alfanumricos (A-Z, a-z, 0-9) de preenchimento opcional

Aaa;1;_

>

Todos os caracteres alfabticos digitados aps este smbolo sero

>aaa;0;_

convertidos para maisculos


<

Todos os caracteres alfabticos digitados aps este smbolo sero

<aaa;0;_

convertidos para minsculos


\

Utilizado para marcar determinado caractere no especial como fixo,

\(999\)000-

no podendo sobrescrev-lo

0000;0;_

Utilizado como separador de horas, minutos e segundos

00:00:00;1;_

Utilizado como separador de dia, ms e ano

99/99/9999;1;_

Apostila 1 Delphi

Prof Ariane e Prof Ktia

41

Para o boto Limpar:

procedure TForm1.Button1Click(Sender: TObject);


begin
medit_nota1.Clear;

//Limpa o texto no MaskEdit

medt_nota2.clear;
medt_nota3.clear;
medt_nota4.clear;
medit_nota1.SetFocus;

// Volta o foco para o MaskEdit da 1 mdia

end;

Validao das entradas (mdias no intervalo de 0-10) no evento OnExit do prprio MaskEdit:

Na seo IMPLEMENTATION, declarar as variveis que sero utilizadas nas procedures:

var

rMed1,rMed2,rMed3,rMed4:real; // varivies utilizadas na transformao de text para real


iErro:integer; // varivel utilizada na procedure VAL

Apostila 1 Delphi

Prof Ariane e Prof Ktia

42

No evento OnExit do MaskEdit da Primeira Mdia:

procedure TForm1.medit_nota1Exit(Sender: TObject);


begin
// Verifica se o valor est no intervalo de 0 - 10
val(medit_nota1.Text,rMed1,iErro);
if (rMed1 < 0) or (rMed1 > 10) then
begin
ShowMessage('Valor da Mdia do 1 Bimestre fora do intervalo 0-10');
medit_nota1.Clear;

// Limpa o valor anteriormente digitado

medit_nota1.SetFocus;

// Volta o foco para o primeiro MaskEdit

end;
end;

No permitir a edio do MaskEdit da Mdia Anual:

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.

Verifique seu aprendizado:

a) Nos componentes EDITs, para que serve a propriedade TABORDER?


b) Para impedir a alterao de um componente EDIT, o que deve ser feito?

Apostila 1 Delphi

Prof Ariane e Prof Ktia

43

APNDICES
APNDICE A Programao Orientada a Objetos (POO)

Programao Orientada A Objetos (POO)


At alguns anos atrs, o desenvolvimento de software foi baseado no chamado modelo
procedural, que consiste na execuo sequencial de rotinas ou funes, ordenadas de acordo com a
maneira como se deseja que a aplicao resultante funcione. Mas uma tcnica mais simples, natural e
interessante para o processo de anlise de problemas e construo de aplicaes foi criada: a Orientao
a Objetos (OO). De uns anos para c, embora o modelo procedural ainda seja utilizado, uma migrao
em grande escala deste para o modelo OO vem ocorrendo.
Como principais vantagens, a POO traz a capacidade de reutilizao de cdigo e a modularidade
de escrita.

Orientao a Objetos (OO)


O modelo orientado a objetos tem como base a execuo de mtodos (pequenas funes que
atuam diretamente sobre os dados de um objeto), levando em considerao a maneira como o usurio
enxerga o sistema e suas funes. A OO uma forma de programao em que os dados so agrupados
ao seu processamento. Ou seja, em vez de existirem dados declarados e funes que os alteram
arbitrariamente, cada pequeno conjunto de dados estar acompanhado por um conjunto de funes que
operam sobre eles fazendo todas as operaes desejveis. Nenhum outro trecho de cdigo do programa
acessar esses dados diretamente, mas sempre chamando as funes corretas. Dessa forma, mais
fcil manter consistncia dos dados, encontrar e corrigir erros, fazer manuteno, implementar novas
funcionalidades ou trocar representaes de dados. O principal benefcio da OO a reutilizao de
cdigo, pois a cada objeto criado no necessrio criar novamente sua estrutura.

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

Prof Ariane e Prof Ktia

44

Identidade consiste em denominarmos todos os objetos, no apenas classific-los, de forma que


cada objeto se torne nico, ou seja, assuma uma identidade. As pessoas tm nomes e sobrenomes, os
animais de estimao recebem nomes, os automveis tm chapa etc.
Abstrao um processo que consiste em compreender um sistema, concreto (como um jogo de
futebol) ou no (um sistema de conta corrente, por exemplo), e criar um modelo documentado e
padronizado que reflita o seu comportamento. Em outras palavras, abstrao um processo de
modelagem de sistemas concretos ou no, extraindo do seu contexto os principais objetos e
descrevendo-os por meio da discriminao de suas propriedades (atributos) e funcionalidades (mtodos).
Encapsulamento indica que podemos utilizar um objeto conhecendo apenas sua interface, isto ,
sua aparncia exterior, tal como fazemos, muitas vezes, com computadores, automveis e outras
mquinas de nosso tempo. Nele, os dados no esto acessveis diretamente, mas apenas atravs dos
mtodos permitidos O encapsulamento permite preservar informaes consideradas importantes ou
sigilosas dentro do objeto, divulgando apenas aquilo que se julgue conveniente.
Herana o mecanismo de criao de novas classes de objetos a partir de outras j existentes. A
herana toma como prontas e disponveis certas caractersticas do objeto de origem, sendo portanto uma
forma muito especial de compartilhamento de cdigo. Isso permite que criemos vrias classes,
hierarquicamente relacionadas, partindo de uma mais geral para diversas outras mais especializadas,
obtendo como resultado uma rvores de classes, tal como a classificao proposta pela biologia para a
diviso dos seres vivos.
Polimorfismo refere-se nossa capacidade de reconhecer em um objeto particular um outro mais
geral, por exemplo: podemos falar de uma bola de futebol em termos de uma bola genrica, podemos
tratar um liquidificador como um eletrodomstico genrico, podemos classificar morcegos, cachorros e
orcas como animais mamferos.

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

Prof Ariane e Prof Ktia

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).

Figura 7 Exemplo de classe e objetos

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

Prof Ariane e Prof Ktia

46

Do ponto de vista da computao, a instanciao corresponde alocao de memria para


armazenar informaes sobre um certo objeto, ou seja, a reserva de uma poro de memria organizada
internamente para guardar os valores associados aos atributos que descrevem um objeto de uma certa
classe.
Exemplo em C++:

/*
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

Prof Ariane e Prof Ktia

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

Prof Ariane e Prof Ktia

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

Prof Ariane e Prof Ktia

49

You might also like