Apostila Lazarus
Upcoming SlideShare
Loading in...5
×
 

Apostila Lazarus

on

  • 6,634 views

 

Statistics

Views

Total Views
6,634
Views on SlideShare
6,585
Embed Views
49

Actions

Likes
2
Downloads
212
Comments
1

3 Embeds 49

http://labdoalgoritmo.blogspot.com.br 45
http://labdoalgoritmo.blogspot.com 3
http://labdoalgoritmo.blogspot.pt 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • http://lazbr.net
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Apostila Lazarus Apostila Lazarus Document Transcript

  • Universidade Federal de Viçosa Departamento de Engenharia AgrícolaFree Pascal Lazarus Ambiente Windows ENG 390 Prof. Evandro de Castro Melo, DS 03 de setembro de 2012 http://wiki.lazarus.freepascal.org/Main_Page/pt
  • 1. INTRODUÇÃO O Projeto Lazarus surgiu em 1 de fevereiro de 1999 com três pessoas: Cliff Baeseman,Shane Miller e Michael A. Hess. Em agosto de 1999 se junta ao grupo Marc Weustinkseguido por Mattias Gaertner, que aderiu em setembro de 2001. O Projeto Lazarus desdeentão só vem crescendo com cada vez mais componentes e recursos. O Lazarus é uma alternativa de código aberto (open source) ao Delphi®, com a grandevantagem de ser multiplataforma. Trata-se de um Ambiente Integrado de Desenvolvimento(IDE) com base na linguagem Pascal e no compilador Free Pascal, que há décadas sãoutilizados no meio acadêmico. O Free Pascal (FPC) é um compilador de código fonte aberto com duas notáveiscaracterísticas: um grau elevado de compatibilidade com Delphi e com capacidade para serexecutado em Windows, Mac e Linux.Free Pascal LAZARUS Melo (2012) 2
  • 2. AMBIENTE LAZARUS2.1 Prefácio Lazarus é um ambiente (E) integrado (I) de desenvolvimento (D) - IDE Lazarus -gratuito e de código aberto para o compilador Free Pascal. O ambiente Lazarus é estável e rico para criação de aplicações gráficas e de console(antigo DOS dentro do Windows). Ele atualmente funciona nos sistemas operacionais: Linux,FreeBSD, Win32 e Win64. Possui um editor de código e um ambiente visual para criação deformulários, acompanhado de um gerenciador de pacotes, depurador de erros e uma completaintegração 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 opçãoDownloads como mostrado na Figura 1. Figura 1 – Imagem parcial do sítio oficial do Projeto Lazarus na Internet Existem duas versões para o Windows: 32 e 64 bits. Se o PC, onde for instalado oprograma, possuir processador de dois núcleos (AMD ou Intel) e 4 Gb de memória RAM,pode-se optar pela versão 64 bits. A versão que se trabalhou nesta apostila foi a Lazarus-0.9.30-fpc-2.4.2 para o sistemaoperacional Windows 32 bits. Em agosto de 2012 foi anunciada a versão Lazarus-1.0-fpc-2.6.0, deixando assim de ser beta.Free Pascal LAZARUS Melo (2012) 3
  • 2.3 Modificando o idioma do Lazarus Depois de instalar o Lazarus no computador, roda-se o programa. Então irão aparecerna área de trabalho do computador uma série 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 português, deve-se acessar a aba Environmente depois Options, como mostrado na Figura 3. Figura 3 - Mudando de idiomaFree Pascal LAZARUS Melo (2012) 4
  • Então aparecerá a seguinte tela, onde se escolhe a opção Desktop, optando peloportuguês, como mostra a Figura 4, finalizando com o botão OK. Figura 4 – Parte da Janela para modificar o idioma Para que a modificação tenha efeito é preciso reiniciar o Lazarus. A interface doprograma ficará como mostrada na Figura 5: Figura 5 – Parte da janela do ambiente Lazarus no idioma português.2.4 O Editor Quando se ativa o ambiente de programação Lazarus pela primeira vez, uma série dejanelas flutuantes, separadas entre si, irão 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 mudança no nome do projeto em que se estátrabalhando). Esta é a principal janela de controle de projetos e contém o Menu Principal, aBarra de Botões 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 Botões, que são atalhospara diversos itens do Menu Principal. E à direita, a Paleta de Componentes.Free Pascal LAZARUS Melo (2012) 5
  • Sob a janela do Editor do Lazarus irá aparecer, à esquerda, a janela do Inspetor deObjetos e, à direita, o Editor de Código. Pode-se ter outra janela menor, indicada comoForm1, sobre a janela do editor de código. Se esta janela não é visível imediatamente,aciona-se a tecla F12 e ela aparecerá. Essa tecla alterna entre o Editor de Código e o Editorde Formulário. Nesta janela de formulário, será construída a interface gráfica da aplicaçãodesejada. Esta janela somente funciona se estiver editando um formulário. Figura 7 – Editor de Códigos e Inspetor de Objetos no ambiente Lazarus Quando se inicia um novo projeto (ou quando se ativa o Lazarus), por padrão, irá serconstruído um formulário 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 contém os usuais botões de janelas do Windows: Minimizar, Maximizar e Fechar. Seclicar com o mouse dentro desta caixa, ver-se-ão as propriedades deste formulário no Inspetorde Objeto, no lado esquerdo do desktop. Caso o Inspetor de Objetos não esteja visível, deve-se pressionar a tecla F11. Outras janelas que podem ser visíveis durante o trabalho: o Inspetor de Projeto, quecontém detalhadamente os arquivos incluídos no projeto em que se está trabalhando. A janelaMensagens, que exibe as mensagens do compilador, erros ou relatórios de progresso noprojeto.Free Pascal LAZARUS Melo (2012) 6
  • 2.5 O Menu Principal O Menu Principal contém as seguintes entradas, como indicado na Figura 8 comalguns 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 LazarusFree Pascal LAZARUS Melo (2012) 7
  • 2.6 A Barra de Botões Uma pequena barra de ferramentas à esquerda da janela principal do editor, logoabaixo do Menu Principal e à esquerda da Paleta de Componentes, contém um conjunto debotões que repetem as opções que são frequentemente mais usadas no menu principal. VerFigura 10. Figura 10 – Barra de Botões do Ambiente Lazarus2.7 A Paleta de Componentes É uma barra de ferramentas organizada em abas com um grande número de íconescomumente 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 sobrequalquer um dos ícones, sem clicar nele, o nome do componente será mostrado em umapequena janela. É importante observar que cada título inicia-se com T, que significa Type, ou maisprecisamente Class do componente. Quando um componente é selecionado para inclusão emum Form, a Class é adicionada à seção Type da interface da Unit (geralmente como parte deTForm1). Qualquer método projetado para ser usado pelo Form ou componentes (isto é,Procedures ou Functions) serão colocados após o item Implementation da unidade. A seguir estão relacionados os nove componentes da paleta.12Free Pascal LAZARUS Melo (2012) 8
  • 3456789 Figura 11 – Detalhamento das abas da paleta de componentes.Free Pascal LAZARUS Melo (2012) 9
  • 2.8 Como usar a Paleta Para usar a Paleta deve haver um Form aberto no editor. Aciona-se um ícone docomponente na aba apropriada e, depois, outro clique no Form, na posição desejada onde ocomponente deve aparecer. Quando o componente desejado aparecer, pode-se selecioná-loclicando no mesmo com o mouse e arrastando-o para o local exato do Form. Podem ser feitosajustes na aparência do componente, alterando a figura do objeto no Form ou alterando aspropriedades correspondentes do componente no Inspetor de Objetos. Se componentes adicionais forem instalados, criados pelo programador ou que veemem um pacote de outra fonte, abas extras, com ícones relevantes irão aparecer na Paleta deComponentes. Esses componentes podem ser selecionados e usados nos Forms da mesmaforma que os componentes padrões.2.9 Os arquivos do Lazarus Quando se salva um projeto no ambiente Lazarus, como mínimo, dois arquivosbásicos serão gravados no disco, cujas extensões são *.pas (arquivo da Unit) e *.lpr (arquivodo Project). Mais arquivos serão gravados, mas apenas estes dois requerem que sejamnomeados pelo usuário. É importante ressaltar que esses dois arquivos devem ter nomesdiferentes: isto é uma exigência 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 são iguais. Depoisde modificado o nome da unidade para testeu.pas, os seguintes arquivos serão gerados:teste.exe: O programa principal em formato binário executável.teste.lpi: Arquivo principal do projeto Lazarus (Lazarus Project Information), que equivaleno Delphi à extensão *.dpr. É armazenado no formato XML.teste.lpr: Arquivo fonte do programa principal no formato Pascal.testeu.lfm: Desenho do formulário. O Lazarus utilizará este arquivo para gerar um arquivofonte, que está incluído na seção de inicio da Unit testeu.pas. Equivale no Delphi à extensão*.dfm.teste.lrs: Este é o arquivo fonte gerado. Note que não é um arquivo fonte de Windows.testeu.pas: Arquivo da Unit que contém o código-fonte do formulário (unidade).teste.ppu: Arquivo da Unit compilada.ppas.bat: Arquivo que contém um script para criar o executável. Se a compilação tiversucesso, este arquivo é removido pelo compilador.Free Pascal LAZARUS Melo (2012) 10
  • Programas escritos em Delphi (unidades, projetos e pacotes) podem ser convertidospara o ambiente Lazarus, empregando-se a opção Ferramentas do Menu Principal, segundoa Figura 12, onde o usuário irá optar pela conversão que lhe for a mais adequada. Figura 12 – Opção Ferramentas do Menu Principal com as opções de conversão de arquivos tipo Delphi para tipo LazarusFree Pascal LAZARUS Melo (2012) 11
  • 3. CONCEITOS SOBRE O FREE PASCAL LAZARUS (FPL) O Lazarus é um sistema de desenvolvimento de código aberto que adiciona um AmbienteIntegrado de Desenvolvimento (IDE) ao compilador Free Pascal, onde está incluído umeditor de códigos, um editor visual de formulários, uma biblioteca de componentes (LCL),altamente compatível com a biblioteca de componentes visuais do Delphi (VCL). Tanto o Free Pascal como o Lazarus é escrito em Pascal. O código fonte completo estádisponível não somente para o compilador Free Pascal e Lazarus IDE, mas também paratodas as unidades feitas a partir do Free Pascal RTL e Lazarus LCL. O Free Pascal tem compatibilidade com o Delphi incluindo suporte para programação emlinguagem Object Pascal, além das mesmas bibliotecas de rotinas e classes conhecidas doDelphi. Isto inclui as unidades System, SysUtils, StrUtils, DateUtils, Classes, Variants, Math,IniFiles e Registry. O Free Pascal também possui unidades como Windows, ShellAPI,BaseUnix, Unix e DynLibs para acessar capacidades específicas do sistema operacional local.Estas unidades são a parte inicial da biblioteca de tempo de execução ou run-time library(RTL) do Free Pascal. Semelhantemente ao Delphi, o Free Pascal e o Lazarus são ferramentas de programaçãode uso geral, significando que se pode desenvolver com eles uma variedade de programas, ouseja, aplicações de console, bibliotecas dinâmicas e aplicações com interface gráficas (GUI). Dado estas explicações, o ambiente Lazarus de programação também pode ser chamadode linguagem de programação FPL, isto é, Free Pascal Lazarus.3.1 Tipos de dados, variáveis e constantes O objetivo no desenvolvimento de um programa é que o mesmo processe uma série decomandos e dados, que podem representar nomes de pessoas, datas, valores monetários ouequações matemáticas. Na linguagem FPL, as variáveis e as constantes precisam ser declaradas antes deserem usadas. Quando se declara uma variável ou uma constante, há a necessidade de seespecificar seu tipo, ou seja, o conjunto de valores que ela pode armazenar na memória docomputador.Free Pascal LAZARUS Melo (2012) 12
  • 3.2 Tipos de dados na linguagem FPL A base ou tipos simples do FPL são os tipos da linguagem Delphi: Ordinais – Define um conjunto de valores, onde cada valor desse conjunto, com exceção do primeiro e do último, tem um valor anterior e posterior. Os tipos ordinais na linguagem FPL são: Integer, Character, Boolean e Enumerated. Integer – Representa um subconjunto de números inteiros. Segue na tabela os limites e formatos para armazenamento. Tipo Faixa Tamanho em bytes Byte 0 .. 255 1 Shortint -128 .. 127 1 Smallint -32768 .. 32767 2 Word 0 .. 65535 2 Integer smallint ou longint tamanho 2 ou 4 Cardinal longword 4 Longint -2147483648 .. 2147483647 4 Longword 0 .. 4294967295 4 Int64 -9223372036854775808 .. 9223372036854775807 8 QWord 0 .. 18446744073709551615 8 Caractere – Um caractere pode ser qualquer símbolo que possa ser representado (um número, uma letra ou símbolos especiais) Boolean – Este tipo de dado é o responsável pela representação de valores lógicos e ocupa 1 byte de memória. 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 números que podem ser representados com notação de ponto flutuante. Tipo Faixa Dígitos significativos Tamanho Real depende da plataforma ??? 4 ou 8 Single 1.5E-45 .. 3.4E38 7-8 4 Double 5.0E-324 .. 1.7E308 15-16 8 Extended 1.9E-4932 .. 1.1E4932 19-20 10 Comp -2E64+1 .. 2E63-1 19-20 8 Currency -922337203685477.5808 922337203685477.5807 8Free Pascal LAZARUS Melo (2012) 13
  • 3.3 Estruturas Básicas de um Programa em FPL Para se declarar variáveis, constantes, procedures e functions de maneira correta emqualquer linguagem, são necessários o conhecimento de sua estrutura e a identificação dospontos onde elas podem ser declaradas.Estrutura básica de uma Unit Uma Unit é, na maioria das vezes, associada a um formulário (Form) que contém seucódigo, ou seja, as declarações de variáveis, os componentes utilizados e as rotinas definidas.É possível verificar que, à medida que componentes são inseridos, são também adicionadosautomaticamente linhas de código na Unit relacionada. A Unit tem áreas predefinidas e quedevem ser respeitadas para que a programação tenha êxito. São elas: unit xxxx – Representa o nome físico do arquivo onde está o código da referida unidade. Por meio desse nome, units podem usar outras units. interface – A seção interface começa com a palavra reservada interface e termina no inicio da seção implementation. Nessa seção, são declarados constantes (const), tipos (types), variáveis (var), procedures e functions, que estão disponíveis para outras units ou outros programas. Essas declarações são chamadas de públicas (public), indicando que asFree Pascal LAZARUS Melo (2012) 14
  • mesmas podem ser usadas por quaisquer outras unidades dentro do mesmo programa. A declaração de procedure e function, na seção interface, refere-se apenas ao cabeçalho das mesmas. O seu conteúdo será descrito na seção implememntation. uses – É a lista de outras units que estão ligadas ao programa atual. type – Esta declaração especifica um identificador que denotará um novo tipo que, normalmente, não é oferecido pelo FPL. var - Nessa área, são declaradas todas as variáveis que podem ser acessadas em qualquer lugar do programa, portanto, consideradas públicas. implementation - Esta seção começa com a palavra reservada implementation e termina em initialization. Neste local estão descritas todas as procedures e functions do programa. {$mode objfpc}{$H+} e {$R *.lfm} – estes códigos são diretivas de compilação, que têm a função de passar informações ao compilador no instante de se criar o arquivo executável do aplicativo.3.4 Estrutura Básica de um Arquivo de Projeto em FPL O arquivo de projeto também é conhecido como Lazarus Project (LPR). OLPR tem os seguintes pontos em sua estrutura:Estrutura básica de um arquivo de projeto begin/end. – estas duas palavras reservadas indicam inicio e fim do projeto.Free Pascal LAZARUS Melo (2012) 15
  •  Application.Initialize; – Inicitialize é o primeiro método chamado pelo arquivo-fonte do projeto que, por padrão, simplesmente inicializa a aplicação. Application.CreateForm(TForm1, Form1); – cria um objeto formulário da classe TForm1. Aqui são listados todos os formulários criados pela aplicação. Application.Run; - quando um projeto é criado, o IDE insere automaticamente a linha de código com o método Application.Run, responsável pela execução da aplicação.3.5 Funções (Functions) e Procedimentos (Procedures) Funções são rotinas que recebem valores, passados como parâmetros, a partir daunidade ou fora dela, e retornam apenas um valor como resultado. As funções são definidasobedecendo à seguinte sintaxe:Function NomeDaFunção (Parâmetro1: Tipo; ParâmetroN: Tipo): Tipo do valor de retorno; var {declaração de variáveis locais à função quando necessárias} begin {bloco de instruções} end; Procedimentos são semelhantes às funções, porém não retornam um valor como partede sua definição. Os procedimentos obedecem à seguinte sintaxe:Procedure NomeDoProcedimento (Parâmetro1: Tipo; ParâmetroN : Tipo); var {declaração de variáveis locais á função quando necessárias} begin {bloco de instruções} end;3.6 Declarando Variáveis Quando se atribui nomes às variáveis, faz-se necessário seguir algumas regrasgenéricas às linguagens:  O primeiro caractere deve ser uma letra;  Não se pode usar espaço em branco e nem hífen para declaração de variável;  O FPL não distingue letra maiúscula de minúscula no nome da variável;Free Pascal LAZARUS Melo (2012) 16
  •  Não se podem usar palavras reservadas da linguagem como nome de variável.3.7 Entrada e Saída de Dados Numéricos A entrada de dados em ambientes visuais normalmente se dá através de componentes(objetos visuais), porém as linguagens também possuem funções responsáveis pela entrada dedados a partir de “janelas de diálogo com o usuário”. É importante frisar que dados numéricos são apresentados sob o tipo caracteres(string) em um formulário do ambiente Lazarus. Assim sendo, em aplicações de engenharia,estes dados numéricos, antes de serem repassados ao programa, devem ser transformados decaracteres para numérico. E o contrário, quando forem apresentados no formulário, deve-se,antes, serem transformados de numéricos para caracteres. As funções do FPL que fazemessas tarefas são: StrToFloat e StrToInt – Transforma de caractere (string) para numérico (real e inteiro respectivamente). FloatToStr e IntToStr - Transforma de numérico (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 aplicação, o primeiro programa, executado no ambiente FPL, será umprojeto que calcule a soma de dois números. Portanto, o programa deverá solicitar ao usuárioos dois números e apresentar na tela o resultado da soma. Neste exemplo, o programa seráexecutado em ambiente console ( ), ou seja, fora do ambiente gráfico doWindows. As instruções do algoritmo serão: Algoritmo Soma Inicio Escrever (‘Digite o primeiro número’) Ler (num1) Escrever (‘Digite o segundo número’) 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 número’); readln (num1); writeln (‘Digite o segundo número’); 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, orespectivo projeto será criado acessando-se Arquivo – Novo / Projeto / Programa, deacordo com a Figura 13: Figura 13 – Janelas do FPL para criar um projeto Irá aparecer a seguinte janela, à qual se deve responder com um Não. Figura 14 –Janela do FPL que aparece após a solicitação de criação de um projeto Em seguida aparecerá a janela com o Editor de Código, onde se escreverão os comandosdo primeiro programa como indicado nas Figuras 15 e 16. As variáveis (var) deverão serdescritas acima da palavra begin e o restante do programa, após a mesma, finalizando antesda palavra end, seguida de um ponto em vermelho. Deve-se observar que na aba referente aoprojeto existe um asterisco antes de project1.lpr: isto indica que o presente arquivo ainda nãofoi gravado no disco.Free Pascal LAZARUS Melo (2012) 19
  • Figura 15 – Editor de código do FPL Transcrevendo o programa no Editor de Código, o mesmo ficará assim: Figura 16 – Janela do Editor de Código do FPL com o programa proprosto já transcritoFree Pascal LAZARUS Melo (2012) 20
  • Para rodar o programa aciona-se a tecla Executar, que se parece a um triângulo verdecomo mostrado na Figura 17. Figura 17 - Botão 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 duaslinhas. A função das mesmas é permitir a visualização do resultado do programa na janela doprompt. Sem as mesmas, o programa seria executado e a sua janela será fechadaimediatamente, sem que o usuário pudesse ver os resultados.Free Pascal LAZARUS Melo (2012) 21
  • 5. O PRIMEIRO PROGRAMA EM FPL EM AMBIENTE WINDOWS5.1 Criando o formulário Como o programa proposto anteriormente foi desenvolvido para ambiente console, omesmo não apresenta as tradicionais janelas do Windows, que tornam a interação comusuário mais agradável e bonita. Para que isto aconteça é preciso montar o projeto de outramaneira. Primeiramente deve-se estruturar o formato da janela, através da qual o programairá interagir com o usuário. O programa deverá ser escrito em uma janela do FPL chamada deformulário 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á disponível, para o programador, um formulário Form1 do projetoProject1, onde se montará a interface com o usuário. Tem-se à frente, a janela Form1 e, pordetrás, a janela Editor de Código. À medida que componentes do FPL são adicionados aoFom1, instruções ou linhas de comando, referentes a esses componentes, serão acrescentadasautomaticamente no Editor de Código. A tecla F12 faz a alternância entre o Formulário e oEditor de Código.Free Pascal LAZARUS Melo (2012) 22
  • Como exemplo de aplicação, para ser o primeiro programa FPL executado no ambientegráfico do Windows, desenvolver-se-á um projeto que calcule a área de um triângulo.Portanto, a interface com o usuário deverá solicitar-lhe os dados numéricos referentes à alturae à base desse triângulo. Recomenda-se, como boa norma de programação em FPL, antes de iniciar qualquerprograma ou projeto para ambiente Windows, criar um diretório específico. Então, o passoseguinte é gravar o projeto no disco. Cada projeto, com seus formulários e unidades, deveráser gravado no disco em pasta própria, sendo recomendado ainda não se aceitar os diretóriossugeridos pelo ambiente FPL. Os arquivos de unidade e de projeto não podem ter nomesiguais. Sugerem-se os nomes u_triangulo.pas (unidade) e p_triangulo.lpr (projeto). O projeto será criado acessando-se Arquivo – Novo / Projeto / Aplicação, de acordocom a Figura 20: Figura 20 – Janela para criação de um novo Projeto/Aplicação. A partir desse ponto, passa-se à montagem da interface com o usuário, fazendo-seinclusões de componentes ou objetos no formulário, disponibilizados no ambiente FPL.5.2 Escrevendo no formulário Para atender ao que se solicita como Primeiro Programa, cálculo de área de triângulo,no ambiente FPL, propõe-se a seguinte interface com o usuário:Free Pascal LAZARUS Melo (2012) 23
  • Figura 21 – Interface com o usuário do Primeiro Programa Serão inseridos no Form1 os seguintes componentes presentes na Paleta deComponentes Standard: Dois componentes Label - sendo um para Altura e outro para Base; Três componentes Edit - sendo um para o valor da altura, um para o valor da Base e outro para exibir o resultado do cálculo da área; Dois componentes Button - sendo um para calcular a área e outro para permitir sair do programa. Para colocar tais componentes no formulário, deve-se clicar na Paleta deComponentes (Standard neste caso), no componente desejado e depois clicar no formulário.As propriedades desses componentes são modificadas no Inspetor de Objetos, desde que ocomponente esteja selecionado no formulário. O texto relativo a um componente, que aparece no formulário, é modificado noInspetor de Objetos na propriedade Caption. As variáveis vinculadas aos componentespodem ter seus nomes alterados no código-fonte pela propriedade Name.Free Pascal LAZARUS Melo (2012) 24
  • Figura 22 – Inspetor de Objetos mostrando a propriedade Caption de três componentes5.3 Escrevendo o código-fonte De acordo com o formulário Form1 proposto na Figura 21, o usuário deve fornecerdois valores das dimensões do triângulo e depois acionar o botão ÁREA. Os componentesEdit são como caixas que recebem os dados digitados na tela (Edit1, Edit2) ou queapresentam resultados do programa (Edit3). Para terminar o programa, o usuário deveráacionar o botão SAIR. Os dois componentes Button1 e Button2 estão vinculados a procedimentos específicosdentro do programa ou projeto, ou seja, quando se faz um duplo clique no botão, dentro doformulário, aparecerá no Editor de Código um procedimento (Procedure) onde devem serescritas todas as ações ou comandos referentes ao componente Button. Observa-se na Figura23 que cada Button tem um procedimento associado ao mesmo. Figura 23 – Procedures vinculadas aos componentes ButtonFree Pascal LAZARUS Melo (2012) 25
  • É importante verificar que o nome dos procedimentos, inseridos automaticamentepelo Editor de Códigos (Figura 23), leva o nome do objeto a que ela pertence. O primeironome (TForm1) é o objeto principal (formulário - form), separado pelo operador ponto,seguido do nome do objeto inserido, acrescido de uma palavra referente à ação (Button1Clickou Button2Click), que no caso, é click, referindo-se a ação de clicar no botão. Para saber aação referente ao procedimento, deve-se ler o seu o nome de trás para frente: clicar nobotão1 do formulário1 e executar as ações dentro do procedimento. Ou seja, pulsando cadaum desses botões, o programa dispara uma seqüência de comandos contidos no respectivoprocedimento. No procedimento do botão ÁREA, deverá ser introduzida a palavra var, após a qualserão definidas duas varáveis para receber os dados digitados na tela do programa,previamente transformados de caracteres para numérico (StrToFloat, ver item 3.7) e umaterceira variável para receber o valor calculado da área, que deverá ser transformado denumérico para caracteres (FloatToStr, ver item 3.7), antes de ser apresentado na mesma tela. Figura 24 – Procedimento que calcula a área de um triângulo No procedimento vinculado ao botão 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 título do programa, segundo aFigura 26, deve-se selecionar o Form1 com um clique no seu título e alterar o texto napropriedade Caption no Inspetor de Objetos (Figura 27).Free Pascal LAZARUS Melo (2012) 26
  • Figura 26 – Barra de título do programa ou projeto Figura 27 – Alterando a propriedade Caption do Form1 no Inspetor de Objetos Analisando o Editor de Código, depois de pulsar a tecla F12, tem-se a Figura 28,com parte do código referente ao projeto que se está desenvolvendo. Na referida unidade,abaixo de { TForm1 } estão relacionados todos os objetos (Button, Edit, Label, procedure)presentes no formulário Form1 do programa.Free Pascal LAZARUS Melo (2012) 27
  • Figura 28 – Editor de código contendo parte da codificação do projetoFree Pascal LAZARUS Melo (2012) 28
  • 5.4 Escrevendo outro código-fonte para o mesmo projeto O projeto anterior será alterado para o seguinte layout de interface com o usuário,como mostrado na Figura 29a. (a) (b) (c) (d) Figura 29 – Janelas para projeto que calcula área de triânguloFree Pascal LAZARUS Melo (2012) 29
  • Neste novo layout será empregado o componente BitBtn, disponível na Paleta deComponentes Additional, que está em destaque amarelo na Figura 30. Figura 30 – Componente BitBtn da Paleta Additional O código-fonte dos dois procedimentos, referentes aos botões, é apresentado a seguir,na Figura 31. Figura 31 – Código-fonte dos procedimentos O comando InputBox (Digite a altura, Valor:, ) abre uma janela para leitura dedados, cujo título será o primeiro texto entres aspas e o segundo texto entre aspas será exibidoacima da caixa que recebe o dado (Figura 29b e 29c). O terceiro texto entre aspas está embranco porque não se quer exibir um valor inicial na referida caixa.Free Pascal LAZARUS Melo (2012) 30
  • Na tabela a seguir, estão descritas as propriedades dos componentes, presentes noformulário 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 opção Carregar irá buscar no PC um ícone, não necessariamente a mesma imagem que se vê. Se não existir no PC, deve-se buscar na Internet. O ícone será apresentado dentro do botão, conforme a Figura 29a. BitBtn1 Button1Free Pascal LAZARUS Melo (2012) 31
  • 6. DESENVOLVENDO OUTROS PROGRAMAS EM FPL6.1 Programa sobre cálculo de idade O objetivo desse programa é calcular a idade de uma pessoa, informando o ano denascimento e o ano atual e assumindo, obrigatoriamente, que o primeiro valor será menor queo segundo. A solução do mesmo será o formulário com o seguinte layout, mostrado na Figura 32: Figura 32 – Formulário do Programa Os componentes usados no programa estão listados na tabela a seguir, que secorrespondem ao Inspetor de Objetos na Figura 33. Objeto Name Caption Form1 Form1 Calculando Idade Label1 Label1 Ano de Nascimento Label2 Label2 Ano Atual Label3 Label3 Idade Edit1 edNasc Edit2 edAtual Edit3 edIdade BitBtn1 bbCalcular Calcular Figura 33 – Inspetor de Objetos do Programa 6.1Free Pascal LAZARUS Melo (2012) 32
  • O evento vinculado ao botão bbCalcular é o procedimento apresentado na Figura 34. Figura 34 – Procedimento vinculado ao objeto bbCalcular6.2 Programa sobre cálculo da idade completa Este programa irá calcular a idade em anos, meses e dias da pessoa em função da datade nascimento e da data atual. O layout proposto para o formulário desse programa seapresenta na Figura 35. O campo Data Atual deverá ser inicializado com a data do sistemaoperacional, para que o usuário não tenha que informá-la. Figura 35 – Formulário proposto para o programa Idade CompletaFree Pascal LAZARUS Melo (2012) 33
  • Os componentes usados no programa estão listados na tabela abaixo e na Figura 36,que se corresponde ao Inspetor de Objetos. Objeto Name Caption Form1 Form1 Idade Completa Label1 Label1 Data Atual Label2 Label2 Data de Nascimento GroupBox1 GroupBox1 Idade MaskEdit meNasc VER Figura 37 Label3 Label3 Anos Label4 Label4 Meses Label5 Label5 Dias Edit1 edAnos Edit2 edAtual Edit3 edIdade Button btCalcular Calcular a Idade Figura 36 – Inspetor de Objetos do Programa 6.2 O componente meNasc receberá a Data de Nascimento do usuário na forma _/_/__,que é uma máscara, que deve ser informada na Inspetor de Objetos, na PropriedadeMaskEdit, segundo a Figura 37, onde, para cada campo, deve-se digitar #, separado por /, nocampo Entrar Máscara.Free Pascal LAZARUS Melo (2012) 34
  • Figura 37 – Informando a máscara para a Data Atual no componente MaskEdit Os procedimentos vinculados ao formulário do projeto proposto estão na Figura 38, aseguir: Figura 38 – Procedimentos do projeto Idade CompletaFree Pascal LAZARUS Melo (2012) 35
  • A captura da data do sistema, que inicializa o campo edAtual (Data Atual), se realizano procedimento TForm1.FormCreate, cujo código é gerado quando se escolhe, no Inspetorde Objetos, no Evento OnCreate do Form1, a opção FormCreate (Figura 39). Realizada estaopção, aparecerá no Editor de Códigos, o referido procedimento. Entre o begin e o enddigita-se: edAtual.text:= DateToStr (Date);onde Date retorna a data do sistema operacional e DateToStr transforma esse valor em stringpara ser apresentado na tela do programa. Já o comando StrToDate reverte a conversão destring para formato de data. Este evento é usado para atribuir valores iniciais a componentesde formulário (como este caso), verificar e habilitar (desabilitar) componentes. Figura 39 – Procedimento de inicialização de componente com o evento OnCreateFree Pascal LAZARUS Melo (2012) 36
  • Exercícios Resolvidos Sobre FPLFree Pascal LAZARUS Melo (2012) 37
  • Exercício 01Faça um projeto em Lazarus para transformar escalas de temperaturas em °Ce em °F, de acordo com o formulário sugerido. a. Sugestão para o formulário Form1: b. Escrevendo o código vinculado aos dois botões: c. Colocar um botão SAIR e outro botão LIMPAR no formulário do item a.Free Pascal LAZARUS Melo (2012) 38
  • Exercício 02Faça um projeto em Lazarus que leia os três lados de um triângulo e verifiquese realmente eles formam um triângulo. Caso afirmativo, classificar o tipo detriângulo. a. Aplicação dos componentes: Label, Edit, Button, Memo b. Sugestão para o formulário Form1: TMemo - este componente é semelhante ao Edit, com a diferença de permitir aeditoração de várias linhas. Ele pode ser usado, por exemplo, para mostrar os resultados.Depois de inserir o componente Memo no formulário Lazarus, pode-se alterar a suapropriedade Name para Mresultado. A propriedade que controla o que será escrito noMemo é a Lines. Para iniciar este componente vazio, ou seja, sem nada escrito ao iniciar umprograma, deve-se clicar em (...) ao lado de Lines (TStrings) e apagar o texto contido noMemo. Além disso, é importante que o usuário não consiga alterar o texto apresentado.Então, deve-se alterar a propriedade ReadOnly do Memo para True. Finalmente, éinteressante adicionar barras de rolamento ao Memo, alterando a propriedade ScrollBarspara ssBoth.Free Pascal LAZARUS Melo (2012) 39
  • c. Escrevendo o código vinculado aos botões do Form1 :Free Pascal LAZARUS Melo (2012) 40
  • Exercício 03 Faça um projeto em Lazarus para reajuste salarial: a. Aplicação dos componentes: Label, Edit, Button, Memo b. Sugestão para o formulário Form1:Free Pascal LAZARUS Melo (2012) 41
  • c. Escrevendo o código vinculado aos botões do Form1 :Free Pascal LAZARUS Melo (2012) 42
  • Exercício 04Aplicar o componente MainMenu ao projeto de transformação detemperaturas (°C →°F) a. Aplicação do componente MainMenu TMainMenu - Este componente permite criar barras de menus contendo vários níveis (comoo menu principal dos aplicativos Windows). Para usá-lo, basta inserir a figura que o representa noFormulário do seu Projeto, localizando-o, por exemplo, no canto superior direito. Para inserir asopções necessárias ao seu projeto, clique duas vezes no símbolo do MainMenu. Aparecerá o Editorde Menu. Para alterar seu nome, de acordo com o menu proposto, deve-se alterar a sua propriedadeCaption no Inspetor de Objetos. Para criar outros tópicos, pressiona-se o botão direito do mouse em cima do item eaparecerá a seguinte janela, com as opções para edição de itens no seu menu:Free Pascal LAZARUS Melo (2012) 43
  • b. Sugestão para o formulário Form1:Free Pascal LAZARUS Melo (2012) 44
  • c. Escrevendo o código vinculado às opções do MainMenu no Form1:Free Pascal LAZARUS Melo (2012) 45
  • Exercício 05 Fazer um projeto no ambiente Lazarus para calcular o índice de massacorporal (IMC) e classificar a pessoa segundo a tabela da O.M.S.: a. Aplicação do componente RadioGroup: TRadioGroup - Apresenta vários RadioButtons agrupados, sendo que apenas um deles poderá ser selecionadp por vez. O RadioGroup conterá as opções 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 opções Feminino e Masculino (uma em cada linha do editor de itens). Cada opção conterá um índice, iniciando- se do zero. Quando o sexo for selecionado, o valor de seu índice será atribuído à propriedade Itemindex do RgSexo. O programa deve ser iniciado com uma opção já selecionada. Para tal, basta atribuir à propriedade Itemindex do Rgsexo o valor 0 (índice da primeira opção). Quando o usuário alterar a seleção a propriedade ItemIndex será modificada automaticamente. b. Sugestão para o formulário Form1:Free Pascal LAZARUS Melo (2012) 46
  • c. Escrevendo o código vinculado às opções no Form1:Free Pascal LAZARUS Melo (2012) 47
  • Exercício 06 Fazer um projeto em Lazarus que calcula a Média das Provas de umadisciplina em que não se conhece de antemão o número de notas. a. Uso do componente InputBox (ver item 5.4) b. Sugestão para o formulário Form1:Free Pascal LAZARUS Melo (2012) 48
  • c. Escrevendo o código vinculado ao Form1:Free Pascal LAZARUS Melo (2012) 49
  • Exercício 07 Queda de pressão em camada de grãos – Equação de Shedd – Usandoesta equação, fazer um projeto em Lazarus com opção para arroz, milho, sojae trigo. Os dados de entrada são os parâmetros Q e hg. a. Aplicação do comando CASE: b. Sugestão para o formulário Form1Free Pascal LAZARUS Melo (2012) 50
  • c. Escrevendo o código vinculado ao Form1:Free Pascal LAZARUS Melo (2012) 51
  • Exercício 08 Faça um projeto em Lazarus para resolver o seguinte problema: têm-seduas cidades A e B com populações iniciais diferentes e taxas de crescimentotambém diferentes. A cidade A tem menor população inicial que B, porémuma taxa de crescimento percentual ao ano maior que B. Então, calcule otempo para a população de A ultrapassar a população da cidade B. a. Aplicação do comando WHILE ... DO. b. Sugestão para o formulário Form1 c. Escrevendo o código em Portugol. Transcreva-o para Lazarus, de acordo com Form1 acima.Free Pascal LAZARUS Melo (2012) 52
  • Exercício 09 Acrescente ao projeto anterior, o gráfico que mostra a evolução docrescimento de ambas as populações.Free Pascal LAZARUS Melo (2012) 53
  • Free Pascal LAZARUS Melo (2012) 54
  • Free Pascal LAZARUS Melo (2012) 55
  • Exercício 10 Fazer um projeto em Lazarus para calcular a potência de um ventiladorem sistemas de secagem de grãos. a. Aplicação do conceito de ARRANJO unidimensional, no caso VETOR: Utilizar o mesmo Form do Exercício 8, modificando apenas o seu código. Os parâmetros a e b, na equação de perda de carga serão agora vetores, cujos índices se referem ao tipo de grão, de acordo com a seleção de entrada em RgTipo.ItemIndex. Entrada de Dados Cálculos b. Sugestão para o formulário Form1Free Pascal LAZARUS Melo (2012) 56
  • c. Escrevendo o código em Portugol e no ambiente Lazarus, de acordo com Form1 sugeridoFree Pascal LAZARUS Melo (2012) 57