You are on page 1of 53

Universidade Federal de Viosa

Departamento de Engenharia Agrcola

Free Pascal Lazarus


Ambiente Windows

ENG 390
Prof. Evandro de Castro Melo, DS

13 de abril de 2011
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 se junta ao grupo Marc Weustink seguido por Mattias Gaertner, que aderiu em setembro de 2001. O Projeto Lazarus desde ento s vem crescendo com cada vez mais 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 (2011)

2. AMBIENTE LAZARUS
2.1 Prefcio
Lazarus um ambiente (E) integrado (I) de desenvolvimento (D) - IDE Lzarus gratuito e de cdigo aberto para o compilador Free Pascal. 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 na Internet


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

Figura 1 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 (2011)

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 Environment e depois Options, como mostrado na Figura 3.

Figura 3 - Mudando de idioma Free Pascal LAZARUS Melo (2011) 4

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

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 mostrado 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.28.2 beta - 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 Free Pascal LAZARUS Melo (2011) 5

O Menu Principal composto das seguintes entradas: Arquivo, Editar, Localizar, Vizualizar, 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 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

Free Pascal LAZARUS

Melo (2011)

Mensagens, que exibe as mensagens do compilador, erros ou relatrios de progresso no projeto.

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 (2011)

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 (2011)

Figura 11 Detalhamento das abas da paleta de componentes.

Free Pascal LAZARUS

Melo (2011)

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 (2011) 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 (2011)

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). Tanto o Free Pascal como o Lazarus escrito em Pascal. O cdigo fonte completo est disponvel no somente para o compilador Free Pascal e Lazarus IDE, mas tambm para todas as unidades feitas a partir do Free Pascal RTL e Lazarus LCL. 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 o que o mesmo processe uma srie de dados, que podem representar nomes de pessoas, datas, valores monetrios ou quantidades. 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 (2011)

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

Free Pascal LAZARUS

Melo (2011)

13

3.3 Estrutura Bsica 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
Melo (2011) 14

Free Pascal LAZARUS

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. Sua sintaxe : ????????? 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 {$I unit1.lrs} 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 (2011)

15

begin/end. estas duas palavras reservadas indicam inicio e fim do projeto. 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.

Ateno: a linha {$IFDEF WINDOWS}{$R project1.rc}{$ENDIF} deve ser sempre excluda do corpo do projeto, porque a presena da mesma causar erro na execuo do mesmo. Esta linha foi divulgada na Internet como um bug.

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;

3.6 Declarando Variveis


Quando se atribui nomes s variveis, faz-se necessrio seguir algumas regras genricas s linguagens:
Free Pascal LAZARUS Melo (2011) 16

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 (2011)

17

4. O PRIMEIRO PROGRAMA EM FREE PASCAL LAZARUS


Como exemplo de aplicao, para ser 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 ( grfico do Windows. 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

), ou seja, fora do ambiente

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 (2011) 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 (2011) 19

Figura 15 Editor de cdigo do FPL

Ateno: a linha {$IFDEF WINDOWS}{$R project1.rc}{$ENDIF} deve ser excluda do corpo do projeto, porque a sua presena causar erro na execuo do programa. 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 (2011)

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 fechada imediatamente, sem que o usurio pudesse ver os resultados.

Free Pascal LAZARUS

Melo (2011)

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 (2011) 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 computador. 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). Caso o usurio deseje executar o programa acima, que contm apenas o Form1, sem antes grav-lo, ocorrer uma mensagem de erro, de acordo com a Figura 20. Este erro ocorre porque, no Projec1, est presente a linha {$IFDEF WINDOWS}{$R project1.rc}{$ENDIF} (Figura 21a). Eliminando-se a referida linha e executando novamente o programa, aparecer uma janela vazia de nome Form1 (Figura 21b). importante verificar que o Fom1 da Figura 19 est cheio de pontos, o que no ocorre na Figura 20, porque este Form1 se refere a um projeto em execuo.

Figura 20 Mensagem de erro fornecida pelo ambiente FPL

(a)

(b)

Figura 21 A linha em amarelo deve ser eliminada e Janela Form1 vazia

Free Pascal LAZARUS

Melo (2011)

23

O projeto ser criado acessando-se Arquivo Novo / Projeto / Aplicao, de acordo com a Figura 22:

Figura 22 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:

Figura 21 Interface com o usurio do Primeiro Programa

Free Pascal LAZARUS

Melo (2011)

24

Sero inseridos no Form1 os seguintes componentes presentes na Paleta de Componentes Standard:

Dois componentes Label - sendo um para Altura e outro para Base; Trs componentes Edit - 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 - 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.

Figura 22 Inspetor de Objetos mostrando a propriedade Caption de tr s componentes

Free Pascal LAZARUS

Melo (2011)

25

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

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.

Free Pascal LAZARUS

Melo (2011)

26

Figura 24 Definio de trs variveis aps a palavra reservada var

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

Figura 26 Barra de ttulo do programa ou projeto

Free Pascal LAZARUS

Melo (2011)

27

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 (2011)

28

Figura 28 Editor de cdigo contendo parte da codificao do projeto

Free Pascal LAZARUS

Melo (2011)

29

5.4 Escrevendo outro cdigo-fonte para o mesmo projeto


O projeto anterior ser alterado para o seguinte lay-out de interface com o usurio, como mostrado na Figura 29.

(a)

(b)

(c)

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

Free Pascal LAZARUS

Melo (2011)

30

Neste novo lay-ou 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 (2011)

31

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

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

Button1

Free Pascal LAZARUS

Melo (2011)

32

Exerccios sobre FPL

Free Pascal LAZARUS

Melo (2011)

33

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 (2011)

34

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 (2011)

35

c. Escrevendo o cdigo vinculado aos botes do Form1 :

Free Pascal LAZARUS

Melo (2011)

36

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 (2011)

37

c. Escrevendo o cdigo vinculado aos botes do Form1 :

Free Pascal LAZARUS

Melo (2011)

38

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 (2011)

39

b. Sugesto para o formulrio Form1:

Free Pascal LAZARUS

Melo (2011)

40

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

Free Pascal LAZARUS

Melo (2011)

41

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 (2011)

42

c. Escrevendo o cdigo vinculado s opes no Form1:

Free Pascal LAZARUS

Melo (2011)

43

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 (2011)

44

c. Escrevendo o cdigo vinculado ao Form1:

Free Pascal LAZARUS

Melo (2011)

45

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 (2011)

46

c. Escrevendo o cdigo vinculado ao Form1:

Free Pascal LAZARUS

Melo (2011)

47

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 (2011)

48

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

Free Pascal LAZARUS

Melo (2011)

49

Free Pascal LAZARUS

Melo (2011)

50

Free Pascal LAZARUS

Melo (2011)

51

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 da 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 (2011)

52

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

Free Pascal LAZARUS

Melo (2011)

53