You are on page 1of 61

Universidade Federal de Viosa

Departamento de Engenharia Agrcola

Free Pascal Lazarus


Ambiente Windows

ENG 390
Prof. Evandro de Castro Melo, DS

26 de novembro de 2012
http://wiki.lazarus.freepascal.org/Main_Page/pt

1. INTRODUO
O Projeto Lazarus surgiu em 1 de fevereiro de 1999 com trs pessoas: Cliff Baeseman,
Shane Miller e Michael A. Hess. Em agosto de 1999 Marc Weustink se junta ao grupo
seguido por Mattias Gaertner, que aderiu em setembro de 2001. O Projeto Lazarus, desde
ento, s vem crescendo cada vez mais, sempre incorporando novos componentes e recursos.
O Lazarus uma alternativa de cdigo aberto (open source) ao Delphi, com a grande
vantagem de ser multiplataforma. Trata-se de um Ambiente Integrado de Desenvolvimento
(IDE) com base na linguagem Pascal e no compilador Free Pascal, que h dcadas so
utilizados no meio acadmico.
O Free Pascal (FPC) um compilador de cdigo fonte aberto com duas notveis
caractersticas: um grau elevado de compatibilidade com Delphi e com capacidade para ser
executado em Windows, Mac e Linux.

Free Pascal LAZARUS

Melo (2012)

2. AMBIENTE LAZARUS
2.1 Prefcio
Lazarus um ambiente (E) integrado (I) de desenvolvimento (D) - IDE Lazarus gratuito e de cdigo aberto para o compilador Free Pascal. O IDE uma parte importante
para se trabalhar com o Lazarus: ele quem ajuda a editar os cdigos, gerenciar os arquivos e
montar os projetos.
O ambiente Lazarus estvel e rico para criao de aplicaes grficas e de console
(antigo DOS dentro do Windows). Ele atualmente funciona nos sistemas operacionais: Linux,
FreeBSD, Win32 e Win64. Possui um editor de cdigo e um ambiente visual para criao de
formulrios, acompanhado de um gerenciador de pacotes, depurador de erros e uma completa
integrao da GUI com o compilador Free Pascal.

2.2 Baixando o Lazarus da Internet


O Lazarus pode ser obtido desde o sitio http://www.lazarus.freepascal.org/ na opo
Downloads como mostrado na Figura 1.

Figura 1 Imagem parcial do stio oficial do Projeto Lazarus na Internet

Existem duas verses para o Windows: 32 e 64 bits. Se o PC, onde for instalado o
programa, possuir processador de dois ncleos (AMD ou Intel) e 4 Gb de memria RAM,
pode-se optar pela verso 64 bits.
Free Pascal LAZARUS

Melo (2012)

A verso utilizada nesta apostila foi a Lazarus-1.0.2-fpc-2.6.0 para o sistema


operacional Windows 32 bits.

2.3 Modificando o idioma do Lazarus


Depois de instalar o Lazarus no computador, roda-se o programa. Ento iro aparecer
na rea de trabalho do computador uma srie de janelas flutuantes, como se v na Figura 2.

Figura 2 - Janelas do Lazarus na rea de trabalho do computador

Para mudar o idioma da interface para o portugus, deve-se acessar a aba Tools e
depois Options, como mostrado na Figura 3.

Figura 3 - Mudando de idioma

Ento aparecer a seguinte tela, onde se escolhe a opo Desktop, optando pelo
portugus do Brasil, como mostra a Figura 4, finalizando com o boto OK.
Free Pascal LAZARUS

Melo (2012)

Figura 4 Parte da Janela para modificar o idioma

Para que a modificao tenha efeito preciso reiniciar o Lazarus. A interface do


programa ficar como mostrada na Figura 5:

Figura 5 Parte da janela do ambiente Lazarus no idioma portugus.

2.4 O Editor
Quando se ativa o ambiente de programao Lazarus pela primeira vez, uma srie de
janelas flutuantes, separadas entre si, iro aparecer no desktop do computador.
A primeira, localizada no alto do desktop, chamada de Lazarus IDE v0.9.30 project1 (que ser modificada para refletir a mudana no nome do projeto em que se est
trabalhando). Esta a principal janela de controle de projetos e contm o Menu Principal, a
Barra de Botes e a Paleta de Componentes. Ver Figura 6.

Figura 6 - Janela principal do Lazarus IDE ou ambiente Lazarus

O Menu Principal composto das seguintes entradas: Arquivo, Editar, Localizar,


Exibir, dentre outras. E abaixo desta, esquerda, tem-se a Barra de Botes, que so atalhos
para diversos itens do Menu Principal. E direita, a Paleta de Componentes.
Sob a janela do Editor do Lazarus ir aparecer, esquerda, a janela do Inspetor de
Objetos e, direita, o Editor de Cdigo. Pode-se ter outra janela menor, indicada como
Free Pascal LAZARUS

Melo (2012)

Form1, sobre a janela do editor de cdigo. Se esta janela no visvel imediatamente,


aciona-se a tecla F12 e ela aparecer. Essa tecla alterna entre o Editor de Cdigo e o Editor
de Formulrio. Nesta janela de formulrio, ser construda a interface grfica da aplicao
desejada. Esta janela somente funciona se estiver editando um formulrio.

Figura 7 Editor de Cdigos e Inspetor de Objetos no ambiente Lazarus

Quando se inicia um novo projeto (ou quando se ativa o Lazarus), por padro, ir ser
construdo um formulrio Form1, que consiste de uma caixa preenchida com pontos (grid),
para ajudar no posicionamento dos componentes no mesmo e uma barra ao longo do topo,
que contm os usuais botes de janelas do Windows: Minimizar, Maximizar e Fechar. Se
clicar com o mouse dentro desta caixa, ver-se-o as propriedades deste formulrio no Inspetor
de Objeto, no lado esquerdo do desktop. Caso o Inspetor de Objetos no esteja visvel, devese pressionar a tecla F11.
Outras janelas que podem ser visveis durante o trabalho: o Inspetor de Projeto, que
contm detalhadamente os arquivos includos no projeto em que se est trabalhando. A janela
Mensagens, que exibe as mensagens do compilador, erros ou relatrios de progresso no
projeto.

Free Pascal LAZARUS

Melo (2012)

2.5 O Menu Principal


O Menu Principal contm as seguintes entradas, como indicado na Figura 8 com
alguns sub-menus apresentados na Figura 9.

Figura 8 Entradas do Menu Principal do Ambiente Lazarus

Figura 9 Alguns Sub-menus do Menu Principal do Ambiente Lazarus

Free Pascal LAZARUS

Melo (2012)

2.6 A Barra de Botes


Uma pequena barra de ferramentas esquerda da janela principal do editor, logo
abaixo do Menu Principal e esquerda da Paleta de Componentes, contm um conjunto de
botes que repetem as opes que so frequentemente mais usadas no menu principal. Ver
Figura 10.

Figura 10 Barra de Botes do Ambiente Lazarus

2.7 A Paleta de Componentes


uma barra de ferramentas organizada em abas com um grande nmero de cones
comumente usados para construir Forms. Cada aba tem um conjunto diferente de cones,
representando um grupo funcional de componentes. O cone mais esquerda em cada aba
uma seta inclinada para a esquerda chamada Selection Tool. Parando-se o mouse sobre
qualquer um dos cones, sem clicar nele, o nome do componente ser mostrado em uma
pequena janela.
importante observar que cada ttulo inicia-se com 'T', que significa Type, ou mais
precisamente Class do componente. Quando um componente selecionado para incluso em
um Form, a Class adicionada seo Type da interface da Unit (geralmente como parte de
TForm1).
Qualquer mtodo projetado para ser usado pelo Form ou componentes (isto ,
Procedures ou Functions) sero colocados aps o item Implementation da unidade.
A seguir esto relacionados os nove componentes da paleta.
1

Free Pascal LAZARUS

Melo (2012)

Figura 11 Detalhamento das abas da paleta de componentes.

Free Pascal LAZARUS

Melo (2012)

2.8 Como usar a Paleta


Para usar a Paleta deve haver um Form aberto no editor. Aciona-se um cone do
componente na aba apropriada e, depois, outro clique no Form, na posio desejada onde o
componente deve aparecer. Quando o componente desejado aparecer, pode-se selecion-lo
clicando no mesmo com o mouse e arrastando-o para o local exato do Form. Podem ser feitos
ajustes na aparncia do componente, alterando a figura do objeto no Form ou alterando as
propriedades correspondentes do componente no Inspetor de Objetos.
Se componentes adicionais forem instalados, criados pelo programador ou que veem
em um pacote de outra fonte, abas extras, com cones relevantes iro aparecer na Paleta de
Componentes. Esses componentes podem ser selecionados e usados nos Forms da mesma
forma que os componentes padres.

2.9 Os arquivos do Lazarus


Quando se salva um projeto no ambiente Lazarus, como mnimo, dois arquivos
bsicos sero gravados no disco, cujas extenses so *.pas (arquivo da Unit) e *.lpr (arquivo
do Project). Mais arquivos sero gravados, mas apenas estes dois requerem que sejam
nomeados pelo usurio. importante ressaltar que esses dois arquivos devem ter nomes
diferentes: isto uma exigncia do compilador.
Assim que se salva um projeto chamado teste, se tentar salvar teste.pas e teste.lpr,
haver uma mensagem de erro, porque os nomes da unidade e do projeto so iguais. Depois
de modificado o nome da unidade para testeu.pas, os seguintes arquivos sero gerados:
teste.exe: O programa principal em formato binrio executvel.
teste.lpi: Arquivo principal do projeto Lazarus (Lazarus Project Information), que equivale
no Delphi extenso *.dpr. armazenado no formato XML.
teste.lpr: Arquivo fonte do programa principal no formato Pascal.
testeu.lfm: Desenho do formulrio. O Lazarus utilizar este arquivo para gerar um arquivo
fonte, que est includo na seo de inicio da Unit testeu.pas. Equivale no Delphi extenso
*.dfm.
teste.lrs: Este o arquivo fonte gerado. Note que no um arquivo fonte de Windows.
testeu.pas: Arquivo da Unit que contm o cdigo-fonte do formulrio (unidade).
teste.ppu: Arquivo da Unit compilada.
ppas.bat: Arquivo que contm um script para criar o executvel. Se a compilao tiver
sucesso, este arquivo removido pelo compilador.
Free Pascal LAZARUS

Melo (2012)

10

Programas escritos em Delphi (unidades, projetos e pacotes) podem ser convertidos


para o ambiente Lazarus, empregando-se a opo Ferramentas do Menu Principal, segundo
a Figura 12, onde o usurio ir optar pela converso que lhe for a mais adequada.

Figura 12 Opo Ferramentas do Menu Principal com as opes de converso de arquivos tipo
Delphi para tipo Lazarus

Free Pascal LAZARUS

Melo (2012)

11

3. CONCEITOS SOBRE O FREE PASCAL LAZARUS (FPL)


O Lazarus um sistema de desenvolvimento de cdigo aberto que adiciona um Ambiente
Integrado de Desenvolvimento (IDE) ao compilador Free Pascal, onde est includo um
editor de cdigos, um editor visual de formulrios, uma biblioteca de componentes (LCL),
altamente compatvel com a biblioteca de componentes visuais do Delphi (VCL).
O Free Pascal tem compatibilidade com o Delphi incluindo suporte para programao em
linguagem Object Pascal, alm das mesmas bibliotecas de rotinas e classes conhecidas do
Delphi. Isto inclui as unidades System, SysUtils, StrUtils, DateUtils, Classes, Variants, Math,
IniFiles e Registry. O Free Pascal tambm possui unidades como Windows, ShellAPI,
BaseUnix, Unix e DynLibs para acessar capacidades especficas do sistema operacional local.
Estas unidades so a parte inicial da biblioteca de tempo de execuo ou run-time library
(RTL) do Free Pascal.
Semelhantemente ao Delphi, o Free Pascal e o Lazarus so ferramentas de programao
de uso geral, significando que se pode desenvolver com eles uma variedade de programas, ou
seja, aplicaes de console, bibliotecas dinmicas e aplicaes com interface grficas (GUI).
Dado estas explicaes, o ambiente Lazarus de programao tambm pode ser chamado
de linguagem de programao FPL, isto , Free Pascal Lazarus.

3.1 Tipos de dados, variveis e constantes


O objetivo no desenvolvimento de um programa que o mesmo processe uma srie de
comandos e dados, que podem representar nomes de pessoas, datas, valores monetrios ou
equaes matemticas.
Na linguagem FPL, as variveis e as constantes precisam ser declaradas antes de
serem usadas. Quando se declara uma varivel ou uma constante, h a necessidade de se
especificar seu tipo, ou seja, o conjunto de valores que ela pode armazenar na memria do
computador.

Free Pascal LAZARUS

Melo (2012)

12

3.2 Tipos de dados na linguagem FPL


A base ou tipos simples do FPL so os tipos da linguagem Delphi:

Ordinais Define um conjunto de valores, onde cada valor desse conjunto, com exceo
do primeiro e do ltimo, tem um valor anterior e posterior. Os tipos ordinais na
linguagem FPL so: Integer, Character, Boolean e Enumerated.
Integer Representa um subconjunto de nmeros inteiros. Segue na tabela os limites e
formatos para armazenamento.
Tipo
Byte
Shortint
Smallint
Word
Integer
Cardinal
Longint
Longword
Int64
QWord

Faixa
0 .. 255
-128 .. 127
-32768 .. 32767
0 .. 65535
smallint ou longint
longword
-2147483648 .. 2147483647
0 .. 4294967295
-9223372036854775808 .. 9223372036854775807
0 .. 18446744073709551615

Tamanho em bytes
1
1
2
2
tamanho 2 ou 4
4
4
4
8
8

Caractere Um caractere pode ser qualquer smbolo que possa ser representado (um
nmero, uma letra ou smbolos especiais)
Boolean Este tipo de dado o responsvel pela representao de valores lgicos e
ocupa 1 byte de memria. Pode ser dois valores: True ou False.
Enumerated Um tipo de dado enumerado define um conjunto ordenador de valores
simplesmente listando identificadores que os denotem.
Type
Direction = ( North, East, South, West );

Reais Um tipo de dado real ou flutuante define um conjunto de nmeros que podem ser
representados com notao de ponto flutuante.
Tipo
Real
Single
Double
Extended
Comp
Currency

Free Pascal LAZARUS

Faixa
depende da plataforma
1.5E-45 .. 3.4E38
5.0E-324 .. 1.7E308
1.9E-4932 .. 1.1E4932
-2E64+1 .. 2E63-1
-922337203685477.5808

Dgitos significativos
???
7-8
15-16
19-20
19-20
922337203685477.5807

Tamanho
4 ou 8
4
8
10
8
8

Melo (2012)

13

3.3 Estruturas Bsicas de um Programa em FPL


Para se declarar variveis, constantes, procedures e functions de maneira correta em
qualquer linguagem, so necessrios o conhecimento de sua estrutura e a identificao dos
pontos onde elas podem ser declaradas.

Estrutura bsica de uma Unit

Uma Unit , na maioria das vezes, associada a um formulrio (Form) que contm seu
cdigo, ou seja, as declaraes de variveis, os componentes utilizados e as rotinas definidas.
possvel verificar que, medida que componentes so inseridos, so tambm adicionados
automaticamente linhas de cdigo na Unit relacionada. A Unit tem reas predefinidas e que
devem ser respeitadas para que a programao tenha xito. So elas:

unit xxxx Representa o nome fsico do arquivo onde est o cdigo da referida unidade.
Por meio desse nome, units podem usar outras units.

interface A seo interface comea com a palavra reservada interface e termina no


inicio da seo implementation. Nessa seo, so declarados constantes (const), tipos
(types), variveis (var), procedures e functions, que esto disponveis para outras units ou
outros programas. Essas declaraes so chamadas de pblicas (public), indicando que as
mesmas podem ser usadas por quaisquer outras unidades dentro do mesmo programa. A

Free Pascal LAZARUS

Melo (2012)

14

declarao de procedure e function, na seo interface, refere-se apenas ao cabealho das


mesmas. O seu contedo ser descrito na seo implememntation.

uses a lista de outras units que esto ligadas ao programa atual.

type Esta declarao especifica um identificador que denotar um novo tipo que,
normalmente, no oferecido pelo FPL.

var - Nessa rea, so declaradas todas as variveis que podem ser acessadas em qualquer
lugar do programa, portanto, consideradas pblicas.

implementation - Esta seo comea com a palavra reservada implementation e termina


em initialization. Neste local esto descritas todas as procedures e functions do programa.

{$mode objfpc}{$H+} e {$R *.lfm} estes cdigos so diretivas de compilao, que


tm a funo de passar informaes ao compilador no instante de se criar o arquivo
executvel do aplicativo.

3.4 Estrutura Bsica de um Arquivo de Projeto em FPL


O arquivo de projeto tambm conhecido como Lazarus Project (LPR). O
LPR tem os seguintes pontos em sua estrutura:

Estrutura bsica de um arquivo de projeto

Free Pascal LAZARUS

Melo (2012)

15

begin/end. estas duas palavras reservadas indicam inicio e fim do projeto.

RequireDerivedFormResource := True; -

Application.Initialize; Inicitialize o primeiro mtodo chamado pelo arquivo-fonte do


projeto que, por padro, simplesmente inicializa a aplicao.

Application.CreateForm(TForm1, Form1); cria um objeto formulrio da classe


TForm1. Aqui so listados todos os formulrios criados pela aplicao.

Application.Run; - quando um projeto criado, o IDE insere automaticamente a linha de


cdigo com o mtodo Application.Run, responsvel pela execuo da aplicao.

3.5 Funes (Functions) e Procedimentos (Procedures)

Funes so rotinas que recebem valores, passados como parmetros, a partir da


unidade ou fora dela, e retornam apenas um valor como resultado. As funes so definidas
obedecendo seguinte sintaxe:
Function NomeDaFuno (Parmetro1: Tipo; ParmetroN: Tipo): Tipo do valor de retorno;
var {declarao de variveis locais funo quando necessrias}
begin
{bloco de instrues}
end;
Procedimentos so semelhantes s funes, porm no retornam um valor como parte
de sua definio. Os procedimentos obedecem seguinte sintaxe:
Procedure NomeDoProcedimento (Parmetro1: Tipo; ParmetroN : Tipo);
var {declarao de variveis locais funo quando necessrias}
begin
{bloco de instrues}
end;

Free Pascal LAZARUS

Melo (2012)

16

3.6 Declarando Variveis


Quando se atribui nomes s variveis, faz-se necessrio seguir algumas regras
genricas s linguagens:

O primeiro caractere deve ser uma letra;

No se pode usar espao em branco e nem hfen para declarao de varivel;

O FPL no distingue letra maiscula de minscula no nome da varivel;

No se podem usar palavras reservadas da linguagem como nome de varivel.

3.7 Entrada e Sada de Dados Numricos


A entrada de dados em ambientes visuais normalmente se d atravs de componentes
(objetos visuais), porm as linguagens tambm possuem funes responsveis pela entrada de
dados a partir de janelas de dilogo com o usurio.
importante frisar que dados numricos so apresentados sob o tipo caracteres
(string) em um formulrio do ambiente Lazarus. Assim sendo, em aplicaes de engenharia,
estes dados numricos, antes de serem repassados ao programa, devem ser transformados de
caracteres para numrico. E o contrrio, quando forem apresentados no formulrio, deve-se,
antes, serem transformados de numricos para caracteres. As funes do FPL que fazem
essas tarefas so:
StrToFloat e StrToInt Transforma de caractere (string) para numrico (real e inteiro
respectivamente).
FloatToStr e IntToStr - Transforma de numrico (real e inteiro respectivamente) para
caractere (string) .
StrToDate e StrToTime Transforma de caractere (string) para data e hora
respectivamente.
DateToStr e TimeToStr - Transforma de data e hora para caractere (string)
respectivamente.

Free Pascal LAZARUS

Melo (2012)

17

4. O PRIMEIRO PROGRAMA EM FREE PASCAL LAZARUS


Como exemplo de aplicao, o primeiro programa, executado no ambiente FPL, ser um
projeto que calcule a soma de dois nmeros. Portanto, o programa dever solicitar ao usurio
os dois nmeros e apresentar na tela o resultado da soma. Neste exemplo, o programa ser
executado em ambiente console (
Windows.

), ou seja, fora do ambiente grfico do

As instrues do algoritmo sero:


Algoritmo Soma
Inicio
Escrever (Digite o primeiro nmero)
Ler (num1)
Escrever (Digite o segundo nmero)
Ler (num2)
soma num1 + num2
Escrever (O resultado )
Escrever (soma)
Fim

E o programa em Free Pascal Lazarus (FPL), para ambiente console, ser:


Program Project1;
var
num1, num2, soma: double;
begin
writeln (Digite o primeiro nmero);
readln (num1);
writeln (Digite o segundo nmero);
readln (num2);
soma := num1 + num2;
writeln (O resultado , soma);
end.
Free Pascal LAZARUS

Melo (2012)

18

4.1 Criando um projeto FPL em ambiente console


Para criar um programa em FPL referente ao algoritmo anteriormente desenvolvido, o
respectivo projeto ser criado acessando-se Arquivo Novo / Projeto / Programa, de
acordo com a Figura 13:

Figura 13 Janelas do FPL para criar um projeto

Ir aparecer a seguinte janela, qual se deve responder com um No.

Figura 14 Janela do FPL que aparece aps a solicitao de criao de um projeto

Em seguida aparecer a janela com o Editor de Cdigo, onde se escrevero os comandos


do primeiro programa como indicado nas Figuras 15 e 16. As variveis (var) devero ser
descritas acima da palavra begin e o restante do programa, aps a mesma, finalizando antes
da palavra end, seguida de um ponto em vermelho. Deve-se observar que na aba referente ao
projeto existe um asterisco antes de project1.lpr: isto indica que o presente arquivo ainda no
foi gravado no disco.

Free Pascal LAZARUS

Melo (2012)

19

Figura 15 Editor de cdigo do FPL

Transcrevendo o programa no Editor de Cdigo, o mesmo ficar assim:

Figura 16 Janela do Editor de Cdigo do FPL com o programa proprosto j transcrito


Free Pascal LAZARUS

Melo (2012)

20

Para rodar o programa aciona-se a tecla Executar, que se parece a um tringulo verde
como mostrado na Figura 17.

Figura 17 - Boto Executar em destaque

E o resultado ser apresentado na seguinte janela, de acordo com a Figura 18:

Figura 18 Janela com os resultados do programa proposto.

Deve-se ressaltar que, ao final do programa original, foram acrescentadas mais duas
linhas. A funo das mesmas permitir a visualizao do resultado do programa na janela do
prompt. Sem as mesmas, o programa seria executado e a sua janela ser fechada
imediatamente, sem que o usurio pudesse ver os resultados.

Free Pascal LAZARUS

Melo (2012)

21

5. O PRIMEIRO PROGRAMA EM FPL EM AMBIENTE WINDOWS

5.1 Criando o formulrio


Como o programa proposto anteriormente foi desenvolvido para ambiente console, o
mesmo no apresenta as tradicionais janelas do Windows, que tornam a interao com
usurio mais agradvel e bonita. Para que isto acontea preciso montar o projeto de outra
maneira. Primeiramente deve-se estruturar o formato da janela, atravs da qual o programa
ir interagir com o usurio. O programa dever ser escrito em uma janela do FPL chamada de
formulrio ou Form.
Quando se acessa o ambiente FPL, dever aparecer uma tela, em que parte dela, est
representada na Figura 19.

Figura 19 Tela parcial de abertura do ambiente FPL

Nesta tela, j est disponvel, para o programador, um formulrio Form1 do projeto


Project1, onde se montar a interface com o usurio. Tem-se frente, a janela Form1 e, por
detrs, a janela Editor de Cdigo. medida que componentes do FPL so adicionados ao
Fom1, instrues ou linhas de comando, referentes a esses componentes, sero acrescentadas
automaticamente no Editor de Cdigo. A tecla F12 faz a alternncia entre o Formulrio e o
Editor de Cdigo.
Free Pascal LAZARUS

Melo (2012)

22

Como exemplo de aplicao, para ser o primeiro programa FPL executado no ambiente
grfico do Windows, desenvolver-se- um projeto que calcule a rea de um tringulo.
Portanto, a interface com o usurio dever solicitar-lhe os dados numricos referentes altura
e base desse tringulo.
Recomenda-se, como boa norma de programao em FPL, antes de iniciar qualquer
programa ou projeto para ambiente Windows, criar um diretrio especfico. Ento, o passo
seguinte gravar o projeto no disco. Cada projeto, com seus formulrios e unidades, dever
ser gravado no disco em pasta prpria, sendo recomendado ainda no se aceitar os diretrios
sugeridos pelo ambiente FPL. Os arquivos de unidade e de projeto no podem ter nomes
iguais. Sugerem-se os nomes u_triangulo.pas (unidade) e p_triangulo.lpr (projeto).
O projeto ser criado acessando-se Arquivo Novo / Projeto / Aplicao, de acordo
com a Figura 20:

Figura 20 Janela para criao de um novo Projeto/Aplicao.

A partir desse ponto, passa-se montagem da interface com o usurio, fazendo-se


incluses de componentes ou objetos no formulrio, disponibilizados no ambiente FPL.

5.2 Escrevendo no formulrio


Para atender ao que se solicita como Primeiro Programa, clculo de rea de tringulo,
no ambiente FPL, prope-se a seguinte interface com o usurio:
Free Pascal LAZARUS

Melo (2012)

23

Figura 21 Interface com o usurio do Primeiro Programa

Sero inseridos no Form1 os seguintes componentes presentes na Paleta de


Componentes Standard:

Dois componentes Label funcionam como rtulos, sendo um para Altura e outro
para Base;
Trs componentes Edit funcionam como locais para entrada e sada de dados,
sendo um para o valor da Altura, um para o valor da Base e outro para exibir o
resultado do clculo da rea;
Dois componentes Button so botes que, quando pressionados, executam uma
ao, sendo um para calcular a rea e outro para permitir sair do programa.
Para colocar tais componentes no formulrio, deve-se clicar na Paleta de
Componentes (Standard neste caso), no componente desejado e depois clicar no formulrio.
As propriedades desses componentes so modificadas no Inspetor de Objetos, desde que o
componente esteja selecionado no formulrio.
O texto relativo a um componente, que aparece no formulrio, modificado no
Inspetor de Objetos na propriedade Caption. As variveis vinculadas aos componentes
podem ter seus nomes alterados no cdigo-fonte pela propriedade Name.
Free Pascal LAZARUS

Melo (2012)

24

Figura 22 Inspetor de Objetos mostrando a propriedade Caption de trs componentes

5.3 Escrevendo o cdigo-fonte


De acordo com o formulrio Form1 proposto na Figura 21, o usurio deve fornecer
dois valores das dimenses do tringulo e depois acionar o boto REA. Os componentes
Edit so como caixas que recebem os dados digitados na tela (Edit1, Edit2) ou que
apresentam resultados do programa (Edit3). Para terminar o programa, o usurio dever
acionar o boto SAIR.
Os dois componentes Button1 e Button2 esto vinculados a procedimentos especficos
dentro do programa ou projeto, ou seja, quando se faz um duplo clique no boto, dentro do
formulrio, aparecer no Editor de Cdigo um procedimento (Procedure) onde devem ser
escritas todas as aes ou comandos referentes ao componente Button. Observa-se na Figura
23 que cada Button tem um procedimento associado ao mesmo.

Figura 23 Procedures vinculadas aos componentes Button


Free Pascal LAZARUS

Melo (2012)

25

importante verificar que o nome dos procedimentos, inseridos automaticamente


pelo Editor de Cdigos (Figura 23), leva o nome do objeto a que ela pertence. O primeiro
nome (TForm1) o objeto principal (formulrio - form), separado pelo operador ponto,
seguido do nome do objeto inserido, acrescido de uma palavra referente ao (Button1Click
ou Button2Click), que no caso, click, referindo-se a ao de clicar no boto. Para saber a
ao referente ao procedimento, deve-se ler o seu o nome de trs para frente: clicar no
boto1 do formulrio1 e executar as aes dentro do procedimento. Ou seja, pulsando cada
um desses botes, o programa dispara uma seqncia de comandos contidos no respectivo
procedimento.
No procedimento do boto REA, dever ser introduzida a palavra var, aps a qual
sero definidas duas varveis para receber os dados digitados na tela do programa,
previamente transformados de caracteres para numrico (StrToFloat, ver item 3.7) e uma
terceira varivel para receber o valor calculado da rea, que dever ser transformado de
numrico para caracteres (FloatToStr, ver item 3.7), antes de ser apresentado na mesma tela.

Figura 24 Procedimento que calcula a rea de um tringulo

No procedimento vinculado ao boto SAIR deve-se digitar apenas o comando close


(encerrar o programa), entre o begin e o end (Figura 25).

Figura 25 Procedimento SAIR

Para alterar o texto que aparece escrito na barra de ttulo do programa, segundo a
Figura 26, deve-se selecionar o Form1 com um clique no seu ttulo e alterar o texto na
propriedade Caption no Inspetor de Objetos (Figura 27).

Free Pascal LAZARUS

Melo (2012)

26

Figura 26 Barra de ttulo do programa ou projeto

Figura 27 Alterando a propriedade Caption do Form1 no Inspetor de Objetos

Analisando o Editor de Cdigo, depois de pulsar a tecla F12, tem-se a Figura 28,
com parte do cdigo referente ao projeto que se est desenvolvendo. Na referida unidade,
abaixo de { TForm1 } esto relacionados todos os objetos (Button, Edit, Label, procedure)
presentes no formulrio Form1 do programa.

Free Pascal LAZARUS

Melo (2012)

27

Figura 28 Editor de cdigo contendo parte da codificao do projeto

Free Pascal LAZARUS

Melo (2012)

28

5.4 Escrevendo outro cdigo-fonte para o mesmo projeto


O projeto anterior ser alterado para o seguinte layout de interface com o usurio,
como mostrado na Figura 29a.

(a)

(b)

(c)

(d)
Figura 29 Janelas para projeto que calcula rea de tringulo

Free Pascal LAZARUS

Melo (2012)

29

Neste novo layout ser empregado o componente BitBtn, disponvel na Paleta de


Componentes Additional, que est em destaque amarelo na Figura 30.

Figura 30 Componente BitBtn da Paleta Additional

O cdigo-fonte dos dois procedimentos, referentes aos botes, apresentado a seguir,


na Figura 31.

Figura 31 Cdigo-fonte dos procedimentos

O comando InputBox ('Digite a altura', 'Valor:', ' ') abre uma janela para leitura de
dados, cujo ttulo ser o primeiro texto entres aspas e o segundo texto entre aspas ser exibido
acima da caixa que recebe o dado (Figura 29b e 29c). O terceiro texto entre aspas est em
branco porque no se quer exibir um valor inicial na referida caixa.

Free Pascal LAZARUS

Melo (2012)

30

Na tabela a seguir, esto descritas as propriedades dos componentes, presentes no


formulrio Form1, que foram alteradas no Inspetor de Objetos:

Propriedades no Inspetor de Objetos

Objeto

BitBtn1

Acionando o mouse no destaque em


amarelo, aparecer a janela abaixo. A opo Carregar ir buscar no PC
um cone, no necessariamente a mesma imagem que se v. Se no
existir no PC, deve-se buscar na Internet. O cone ser apresentado
dentro do boto, conforme a Figura 29a.

Button1

Free Pascal LAZARUS

Melo (2012)

31

6. DESENVOLVENDO OUTROS PROGRAMAS EM FPL


6.1 Programa sobre clculo de idade
O objetivo desse programa calcular a idade de uma pessoa, informando o ano de
nascimento e o ano atual e assumindo, obrigatoriamente, que o primeiro valor ser menor que
o segundo.
A soluo do mesmo ser o formulrio com o seguinte layout, mostrado na Figura 32:

Figura 32 Formulrio do Programa

Os componentes usados no programa esto listados na tabela a seguir, que se


correspondem ao Inspetor de Objetos na Figura 33.
Objeto

Name

Caption

Form1
Label1
Label2
Label3
Edit1
Edit2
Edit3
BitBtn1

Form1
Label1
Label2
Label3
edNasc
edAtual
edIdade
bbCalcular

Calculando Idade
Ano de Nascimento
Ano Atual
Idade

Calcular

Figura 33 Inspetor de Objetos do Programa 6.1


Free Pascal LAZARUS

Melo (2012)

32

O evento vinculado ao boto bbCalcular o procedimento apresentado na Figura 34.

Figura 34 Procedimento vinculado ao objeto bbCalcular

6.2 Programa sobre clculo da idade completa


Este programa ir calcular a idade em anos, meses e dias da pessoa em funo da data
de nascimento e da data atual. O layout proposto para o formulrio desse programa se
apresenta na Figura 35. O campo Data Atual dever ser inicializado com a data do sistema
operacional, para que o usurio no tenha que inform-la.

Figura 35 Formulrio proposto para o programa Idade Completa

Free Pascal LAZARUS

Melo (2012)

33

Os componentes usados no programa esto listados na tabela abaixo e na Figura 36,


que se corresponde ao Inspetor de Objetos.

Objeto

Name

Caption

Form1
Label1
Label2
GroupBox1
MaskEdit
Label3
Label4
Label5
Edit1
Edit2
Edit3
Button

Form1
Label1
Label2
GroupBox1
meNasc
Label3
Label4
Label5
edAnos
edAtual
edIdade
btCalcular

Idade Completa
Data Atual
Data de Nascimento
Idade
VER Figura 37
Anos
Meses
Dias

Calcular a Idade

Figura 36 Inspetor de Objetos do Programa 6.2

O componente meNasc receber a Data de Nascimento do usurio na forma _/_/__,


que uma mscara, que deve ser informada na Inspetor de Objetos, na Propriedade
MaskEdit, segundo a Figura 37, onde, para cada campo, deve-se digitar #, separado por /, no
campo Entrar Mscara.

Free Pascal LAZARUS

Melo (2012)

34

Figura 37 Informando a mscara para a Data Atual no componente MaskEdit

Os procedimentos vinculados ao formulrio do projeto proposto esto na Figura 38, a


seguir:

Figura 38 Procedimentos do projeto Idade Completa

Free Pascal LAZARUS

Melo (2012)

35

A captura da data do sistema, que inicializa o campo edAtual (Data Atual), se realiza
no procedimento TForm1.FormCreate, cujo cdigo gerado quando se escolhe, no Inspetor
de Objetos, no Evento OnCreate do Form1, a opo FormCreate (Figura 39). Realizada esta
opo, aparecer no Editor de Cdigos, o referido procedimento. Entre o begin e o end
digita-se:
edAtual.text:= DateToStr (Date);

onde Date retorna a data do sistema operacional e DateToStr transforma esse valor em string
para ser apresentado na tela do programa. J o comando StrToDate reverte a converso de
string para formato de data. Este evento usado para atribuir valores iniciais a componentes
de formulrio (como este caso), verificar e habilitar (desabilitar) componentes.

Figura 39 Procedimento de inicializao de componente com o evento OnCreate

Na Figura 38, a varivel dias foi definida como variant, que um tipo genrico, que pode
receber e atribuir qualquer outro tipo. Essa declarao foi utilizada porque o retorno da
subtrao entre datas do tipo Extended.

Free Pascal LAZARUS

Melo (2012)

36

6.3 Programa que compara dois nmeros entre si


O usurio dever informar dois nmeros e, como resultado, obter uma resposta com
um dos smbolos grficos <, > ou =. O formulrio do projeto est na Figura 40.

Figura 40 Formulrio do projeto que compara dois nmeros entre si.

Os componentes usados no programa esto listados na tabela abaixo, seguido da


Figura 41, que corresponde ao Inspetor de Objetos.
Objeto

Name

Caption

Form1
Label1
Label2
Label3
Edit1
Edit2
Edit3
Button
Button

Form1
Label1
Label2
lbResultado
edNum1
edNum2
edIdade
btCalcular
btSair

Comparar dois nmeros


Data Atual
Data de Nascimento
?

Comparar
SAIR

Figura 41 Inspetor de Objetos do Programa 6.3


Free Pascal LAZARUS

Melo (2012)

37

Os procedimentos vinculados ao formulrio do projeto proposto esto descritos a


seguir, bem como o resultado para os nmeros 45 e 100, que aprece depois de acionar o boto
COMPARAR.

Free Pascal LAZARUS

Melo (2012)

38

6.4 Programa para ordenar trs nmeros


Este projeto tem como objetivo ordenar trs valores numricos informados pelo
usurio, que dever escolher a opo de ordenao dos mesmos de forma crescente ou
decrescente. O resultado dever ser apresentado no componente Panel. Na Figura 42 est o
Inspetor de Objetos do projeto. E na Figura 43, o lay-out proposto.

Figura 42 Inspetor de Objetos do programa 6.4

Figura 43 Lay-out proposto para o programa 6.4


Free Pascal LAZARUS

Melo (2012)

39

Os procedimentos referentes ao programa proposto esto descritos a seguir,


apresentando-se um resultado para os nmeros 45, 300 e 2, que aparecer depois de
selecionar a Ao desejada, acionando-se depois o boto Ordenar.

Free Pascal LAZARUS

Melo (2012)

40

Exerccios Resolvidos
Sobre

FPL

Free Pascal LAZARUS

Melo (2012)

41

Exerccio 01
Faa um projeto em Lazarus para transformar escalas de temperaturas em C
e em F, de acordo com o formulrio sugerido.
a. Sugesto para o formulrio Form1:

b. Escrevendo o cdigo vinculado aos dois botes:

c. Colocar um boto SAIR e outro boto LIMPAR no formulrio do item a.

Free Pascal LAZARUS

Melo (2012)

42

Exerccio 02
Faa um projeto em Lazarus que leia os trs lados de um tringulo e verifique
se realmente eles formam um tringulo. Caso afirmativo, classificar o tipo de
tringulo.
a. Aplicao dos componentes: Label, Edit, Button, Memo
b. Sugesto para o formulrio Form1:

TMemo - este componente semelhante ao Edit, com a diferena de permitir a


editorao de vrias linhas. Ele pode ser usado, por exemplo, para mostrar os resultados.
Depois de inserir o componente Memo no formulrio Lazarus, pode-se alterar a sua
propriedade Name para Mresultado. A propriedade que controla o que ser escrito no
Memo a Lines. Para iniciar este componente vazio, ou seja, sem nada escrito ao iniciar um
programa, deve-se clicar em (...) ao lado de Lines (TStrings) e apagar o texto contido no
Memo. Alm disso, importante que o usurio no consiga alterar o texto apresentado.
Ento, deve-se alterar a propriedade ReadOnly do Memo para True. Finalmente,
interessante adicionar barras de rolamento ao Memo, alterando a propriedade ScrollBars
para ssBoth.

Free Pascal LAZARUS

Melo (2012)

43

c. Escrevendo o cdigo vinculado aos botes do Form1 :

Free Pascal LAZARUS

Melo (2012)

44

Exerccio 03
Faa um projeto em Lazarus para reajuste salarial:

a. Aplicao dos componentes: Label, Edit, Button, Memo


b. Sugesto para o formulrio Form1:

Free Pascal LAZARUS

Melo (2012)

45

c. Escrevendo o cdigo vinculado aos botes do Form1 :

Free Pascal LAZARUS

Melo (2012)

46

Exerccio 04
Aplicar o componente
temperaturas (C F)

MainMenu ao projeto de transformao de

a. Aplicao do componente MainMenu

TMainMenu - Este componente permite criar barras de menus contendo vrios nveis (como
o menu principal dos aplicativos Windows). Para us-lo, basta inserir a figura que o representa no
Formulrio do seu Projeto, localizando-o, por exemplo, no canto superior direito. Para inserir as
opes necessrias ao seu projeto, clique duas vezes no smbolo do MainMenu. Aparecer o Editor
de Menu. Para alterar seu nome, de acordo com o menu proposto, deve-se alterar a sua propriedade
Caption no Inspetor de Objetos.

Para criar outros tpicos, pressiona-se o boto direito do mouse em cima do item e
aparecer a seguinte janela, com as opes para edio de itens no seu menu:

Free Pascal LAZARUS

Melo (2012)

47

b. Sugesto para o formulrio Form1:

Free Pascal LAZARUS

Melo (2012)

48

c. Escrevendo o cdigo vinculado s opes do MainMenu no Form1:

Free Pascal LAZARUS

Melo (2012)

49

Exerccio 05
Fazer um projeto no ambiente Lazarus para calcular o ndice de massa
corporal (IMC) e classificar a pessoa segundo a tabela da O.M.S.:

a. Aplicao do componente RadioGroup:


TRadioGroup - Apresenta vrios RadioButtons agrupados, sendo que apenas um deles
poder ser selecionadp por vez. O RadioGroup conter as opes do sexo da pessoa. No
Inspetor de Objetos, sua propriedade Name dever ser alterada para RgSexo, sua
propriedade Caption para Sexo e a propriedade Items dever conter as opes Feminino e
Masculino (uma em cada linha do editor de itens). Cada opo conter um ndice, iniciandose do zero. Quando o sexo for selecionado, o valor de seu ndice ser atribudo
propriedade Itemindex do RgSexo. O programa deve ser iniciado com uma opo j
selecionada. Para tal, basta atribuir propriedade Itemindex do Rgsexo o valor 0 (ndice da
primeira opo). Quando o usurio alterar a seleo a propriedade ItemIndex ser
modificada automaticamente.

b. Sugesto para o formulrio Form1:

Free Pascal LAZARUS

Melo (2012)

50

c. Escrevendo o cdigo vinculado s opes no Form1:

Free Pascal LAZARUS

Melo (2012)

51

Exerccio 06
Fazer um projeto em Lazarus que calcula a Mdia das Provas de uma
disciplina em que no se conhece de antemo o nmero de notas.
a. Uso do componente InputBox (ver item 5.4)

b. Sugesto para o formulrio Form1:

Free Pascal LAZARUS

Melo (2012)

52

c. Escrevendo o cdigo vinculado ao Form1:

Free Pascal LAZARUS

Melo (2012)

53

Exerccio 07
Queda de presso em camada de gros Equao de Shedd Usando
esta equao, fazer um projeto em Lazarus com opo para arroz, milho, soja
e trigo. Os dados de entrada so os parmetros Q e hg.
a. Aplicao do comando CASE:

b. Sugesto para o formulrio Form1

Free Pascal LAZARUS

Melo (2012)

54

c. Escrevendo o cdigo vinculado ao Form1:

Free Pascal LAZARUS

Melo (2012)

55

Exerccio 08
Faa um projeto em Lazarus para resolver o seguinte problema: tm-se
duas cidades A e B com populaes iniciais diferentes e taxas de crescimento
tambm diferentes. A cidade A tem menor populao inicial que B, porm
uma taxa de crescimento percentual ao ano maior que B. Ento, calcule o
tempo para a populao de A ultrapassar a populao da cidade B.
a. Aplicao do comando WHILE ... DO.
b. Sugesto para o formulrio Form1

c. Escrevendo o cdigo em Portugol. Transcreva-o para Lazarus, de acordo com


Form1 acima.

Free Pascal LAZARUS

Melo (2012)

56

Exerccio 09
Acrescente ao projeto anterior, o grfico que mostra a evoluo do
crescimento de ambas as populaes.

Free Pascal LAZARUS

Melo (2012)

57

Free Pascal LAZARUS

Melo (2012)

58

Free Pascal LAZARUS

Melo (2012)

59

Exerccio 10
Fazer um projeto em Lazarus para calcular a potncia de um ventilador
em sistemas de secagem de gros.

a. Aplicao do conceito de ARRANJO unidimensional, no caso VETOR: Utilizar o


mesmo Form do Exerccio 8, modificando apenas o seu cdigo. Os
parmetros a e b, na equao de perda de carga sero agora vetores, cujos
ndices se referem ao tipo de gro, de acordo com a seleo de entrada em
RgTipo.ItemIndex.
Entrada de Dados

Clculos

b. Sugesto para o formulrio Form1

Free Pascal LAZARUS

Melo (2012)

60

c. Escrevendo o cdigo em Portugol e no ambiente Lazarus, de acordo com


Form1 sugerido

Free Pascal LAZARUS

Melo (2012)

61

You might also like