Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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) 3
A verso utilizada nesta apostila foi a Lazarus-1.0.2-fpc-2.6.0 para o sistema operacional Windows 32 bits.
Para mudar o idioma da interface para o portugus, deve-se acessar a aba Tools e depois Options, como mostrado na Figura 3.
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) 4
Para que a modificao tenha efeito preciso reiniciar o Lazarus. A interface do programa ficar como mostrada na Figura 5:
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.
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) 5
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.
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.
Melo (2012)
Melo (2012)
Melo (2012)
Melo (2012)
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
Melo (2012)
11
Melo (2012)
12
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
Melo (2012)
13
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 (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.
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.
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;
Melo (2012)
16
Melo (2012)
17
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.
Melo (2012)
19
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.
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.
Melo (2012)
21
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:
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.
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 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.
No procedimento vinculado ao boto SAIR deve-se digitar apenas o comando close (encerrar o programa), entre o begin e o end (Figura 25).
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).
Melo (2012)
26
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.
Melo (2012)
27
Melo (2012)
28
(a)
(b)
(c)
(d)
Figura 29 Janelas para projeto que calcula rea de tringulo
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.
O cdigo-fonte dos dois procedimentos, referentes aos botes, apresentado a seguir, na Figura 31.
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.
Melo (2012)
30
Na tabela a seguir, esto descritas as propriedades dos componentes, presentes no formulrio Form1, que foram alteradas 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
Melo (2012)
31
Os componentes usados no programa esto listados na tabela a seguir, que se correspondem ao Inspetor de Objetos na Figura 33.
Objeto Name Caption
Calcular
Figura 33 Inspetor de Objetos do Programa 6.1 Free Pascal LAZARUS Melo (2012) 32
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
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.
Melo (2012)
34
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.
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.
Melo (2012)
36
Os componentes usados no programa esto listados na tabela abaixo, seguido da Figura 41, que corresponde ao Inspetor de Objetos.
Objeto Name Caption
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.
Melo (2012)
38
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.
Melo (2012)
40
FPL
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:
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.
Melo (2012)
43
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:
Melo (2012)
45
Melo (2012)
46
Exerccio 04
Aplicar o componente temperaturas (C F) MainMenu ao projeto de transformao de
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:
Melo (2012)
47
Melo (2012)
48
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.:
Melo (2012)
50
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)
Melo (2012)
52
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:
Melo (2012)
54
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.
Melo (2012)
56
Exerccio 09
Acrescente ao projeto anterior, o grfico que mostra a evoluo do crescimento de ambas as populaes.
Melo (2012)
57
Melo (2012)
58
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
Melo (2012)
60
Melo (2012)
61