121
--- 1 --- [email protected] Programação Orientada a Eventos FreePascal + Lazarus Armando Jorge Sousa ([email protected]) Professor Auxiliar Depart. de Engenharia Electrotécnica e de Computadores FEUP Versão 9, 30 Março 2008

Lazarus g

Embed Size (px)

DESCRIPTION

Lazarus

Citation preview

--- 1 --- [email protected] Orientada a EventosFreePascal + LazarusArmando Jorge Sousa [email protected]!Professor "u#iliar$epart. de Engen%aria Electrot&cnica e de 'omputadoresFE(PVerso 9, 30 Maro 2008--- ) --- [email protected]*ndice+ntroduo POE,oluo FP'-Lazarus.esen%a /ist0rica12sicos de FreePascal O34ect Pascal!Lazarus +$E e primeiro programa!Lazarus +$E avanado incluindo de3ugger e navegao em programas longos!FP' avanado e algumas configura5es do +$E!'ontrolos visuais padro! mais fre6uentes'omponentes adicionais--- 7 --- [email protected]+ntroduo--- 8 --- [email protected] 9Programao Orientada a Eventos: POE!O ,O fornece um sistema de processamento de eventos em ciclo Eventos podem ser clic;s do rato< mensagens de rede< etc. " linguagem cola3ora mapeando call3ac;s "dicionando eventos = filaOs programas do utilizador so c%amados pelo ,O Processam o evento comunicado pelo ,O e retornam O sistema operativo com interface gr2fica distri3ui eventos pelos diversos programas!- >ulti ?anela @ "s AformsB 4anelas pertencem a diferentes programas @Estes conceitos integram 3em com >ulti-Processo - >ulti-(ser--- C --- [email protected] da Programao Orientada a Eventos POE!,O e linguagem cola3oram no sentido deE Optimizar o desempen%o - eliminar polling +dentificar +dle Fime "tender eventos na lista de forma ade6uada $iminuir mudanas de conte#to foradas! Fornar transparentes os acessos remotos ou ao %ardGare Facilitar a programao gr2fica - interactiva--- H --- [email protected]'onceitos a a3andonar 6uando se faz POE"3ordagem procedimental pura" noo dos microcontroladores de Atempo para 96ueimar:BLoops de esperaOpera5es de polling"3andonar em definitivo a noo de 6ue o programa tem um ciclo principal< comea aD e aD aca3a --- I --- [email protected] de programao modernasFuncionalidades acrescidas +ndependJncia de ,O e ao %ardGare"3ordagem ?"K"E >26uina Kirtual 1Lte 'ode a interpretar-?+F 'ompile! & port2vel Lento ...!Outra a3ordagem FP'-Lazarus!E O am3iente de desenvolvimento e a linguagem asseguram a correcta implementao das mesmas funcionalidades em am3ientes diferentes Portar para outro am3iente ,O-/M implica recompilar '0digo e#ecut2vel convencional r2pido!--- N --- [email protected] de camadasK'L O $elp%i'LP O $elp%iQRH e SLli#F'L e L'L - Lazarus,.O. MindoGs - ,.O. Linu#F'L + L'L - K'L - 'LPLazarus - $elp%i - SLli#Funcionalidades 'ross-Platform = custa de diversas camadas de softGareAFootprintB grandeTo mais lentos por causa disso.../ardGare>aiores Funcionali-dades--- U --- [email protected]'-Lazarus--- 1V --- [email protected](ma ,oluo PossDvelE Lazarus + FreePascalW AFreeGareB Git% sourceW ,em roLalties - XPL 1i3liotecas LXPLY pode lin;ar estaticamente!W ."$ .apid "pplication $evelopment!W X(+ altera c0digo fonte ap0s edio (2 way tool)W 'ross PlatformW F2cil ligao a diversos ,X1$W Facilmente E#tensDvelE pacotes e componentesW Permite POE ou no + facilidade de instalar servidoresW Linguagem OO< moderna< simples mas poderosa +nclui e#cep5es< variantes e operator overloading !--- 11 --- [email protected] cross-platformFP'+Lazarus portado paraEProcessadoresE+ntel #NH< "mdH8-#NH H8< PoGerP'< ,parc< ...,istemas OperativosEMindoGs 7)< Linu#< Free1,$< >ac O, P-$arGin< >ac O, classic< $O,< O,-)< TetGare li3c and classic!< >orp%O,< ...--- 1) --- [email protected]/ist0rico--- 17 --- [email protected]/ist0ria do L2zarusW 1orlandE Fur3o Pascal - 1. Pascal + $elp%i + SLli#W +nternetE Free Pascal + LazarusW Lazarus eito e! Lazarus " #$%, &auto'o!pil(vel) *--- 18 --- [email protected]/ist0ria do L2zarusW Pascal 1UI1!E ,implificao do "lgol 1UHV! Xen&rica Educativa ponteiros< AER vs RRBudar nome de componente muda c0digo todo ...!--- 7) --- [email protected] 77 --- [email protected] 78 --- [email protected] File< ,ave "LLE unitZola< pro4ectZola>udar ATameB da Form para AFormZOlaBA'aptionB vem mudada ver no editor!'olocar F1utton na Form >udar ATameB para 1Pro#imo1ot5es devem comear com letra A1B>udar A'aptionB para APr0#imoB--- 7C --- [email protected] Fazendo $ou3le 'lic; no 3oto da form 6ue estamos a desen%ar< o +$E leva-nos at& ao c0digo 6ue ser2 e#ecutado 6uando em run3ti!e! o utilizador premir o 3oto uma vez evento AOn'lic;B!procedure !form9Ola.28ro/imo3lic: #6en,er: !Ob;ect$;begin |end;--- 7H --- [email protected]'0digo do Pro4ecto Elementar de Festeprocedure !form9Ola.28ro/imo3lic:#6en,er: !Ob;ect$;begin28ro/imo.3aption:=enu .un< Opo .un para compilar o c0digo e e#ecut2-lo de seguida $epois de compilar sem pro3lemas< o programa gerado & e#ecutado e aparece a 4anela 6ue desen%amos $epois de carregar no 3oto< o te#to inscrito no 3oto 'aption & alterado e passa mostrar AOl2 >undoB ,aia da aplicao carregando no # do canto da form--- 7I --- [email protected]'0digo do Pro4ecto de teste )--- 7N --- [email protected],nap,%ots do pro4ecto de teste ) GindoGs e linu#!--- 7U --- [email protected] para iniciadosPara facilidade de localizao dos fic%eiros importantes< criar uma directoria para cada pro4ecto novo'riar o pro4ecto e logo depois gravar todos os fic%eiros ,ave "ll!\ gravar todos os fic%eiros da aplicao na mesma directoriaTo alterar c0digo 6ue no foi feito por n0s @@@Ligar logo as op5es de verificaoE Pro4ect< 'ompilerZOptions< 'odeE--- 8V --- [email protected]+$E "vanado--- 81 --- [email protected]"4udas = codificaoE 'ode Femplatesfor (premir CTRL+J)for | :=todobeginend;forb (premir CTRL+J)--- 8) --- [email protected]"4udas = codificaoE 'ode Femplates+f< CTRL+J RQ menu de templatesif3ouse'lic;,altar de volta! para ponto anterior de edioE 'F.L /--- 8C --- [email protected]"4uda = codificaoE Tavegao entre 4anelasF1)E troca entre form e c0digoF11E O34ect +nspector'F.L+F1)E KieG (nits ,%ift+F1)E KieG Forms--- 8H --- [email protected]$e3ugging--- 8I --- [email protected]$e3uggingBreakpoint--- 8N --- [email protected]$e3uggingPremir 'trl+"lt+L para listar todas as vari2veis locaisPara o cursor do rato em cima de uma vari2vel para ver o seu valor funcionalidade em mel%oramento!Premir FI-FN para single steppingPremir F8 para ir at& ao cursor--- 8U --- [email protected]/elp de conte#toPremir F1 leva a activar o 3roGser para levar a uma p2gina de conte#t sensitive %elp< ie< leva a um %elp associado ao te#to onde o cursor est2procedure !form9Ola.28ro/imo3lic:#6en,er: !Ob;ect$;begin28ro/imo.3aption|:= : integer;begin!emp6tr:=@0 then for I:=6i> downto 5 do!emp6tr:=!emp6trA6BIC;Inerte6tring:=!emp6tr;end;!--- C) --- [email protected] e tipos de parcmetros// %"nc5 passa param ,e entra,a na f"n-Do por c0pia// )",ar 6 ,entro ,a f"n-Do nDo altera 6 fora ,a f"n-Dofunction f"nc5 # 6 : string $ : string;// ...// %"nc2 passa param por en,ere-o #param. ,e entra,a e saE,a$function f"nc2 # var 6 : string $ : string;// ...// %"ncF passa param const G@ compila,or nDo ,ei/a alterar// E 69o"t H parImetro ,e saE,aprocedure f"ncF # const 69in : string ; out 69o"t : string $;// ...!--- C7 --- [email protected] multi parcmetrosprocedure f"ncJ #const 65(62 : string; out 6F : string$ ;function f"ncK # i(;(: : integer ; s : string ) : string ;--- C8 --- [email protected],%oG>essage 6?oL)essage#