lazarus manuál 1

Upload: madlej111

Post on 07-Jul-2018

252 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 Lazarus Manuál 1

    1/21

    LAZARUS

    Obsah:

    Kapitola 1 Začíname.......................................................................2Vytvorenie a spustenie novej aplikácie .....................................................2Viac o vvojovom prostre!í....................................................................2"rv pro#ram.....................................................................................$

    %ypy ho!n&t......................................................................................'Kapitola 2: Kreslenie #eometrickch (tvarov .........................................'

    "ísma .............................................................................................'"ora!ie príka)ov ................................................................................*"ou+ívame viac tlači!iel........................................................................*Kreslenie ob!,+nikov a -tvorcov ..............................................................*Kreslenie elíps a kruhov .......................................................................Kreslenie (sečiek .............................................................................../0arba obrysu a vplne ........................................................................../áho!n čísla .................................................................................../

    Kapitola $: Komponenty a ich vlastnosti ...............................................3Kapitola 4: "remenn ...................................................................11Kapitola ': "ríka) cyklu .................................................................14

    5yklus 6or .......................................................................................147lavička cyklu .................................................................................1'%elo cyklu .......................................................................................1'5yklus v cykle ..................................................................................1*

    Kapitola *: "o!mienen príka) ........................................................1"o!mienen príka) i6 then else .............................................................1Kombinácia po!mienench príka)ov a cyklov .............................................1/8o#ick vra)y a lo#ick ho!noty ...........................................................13

    Zlo+en po!mienky ...........................................................................13Kapitola : 5yklus s po!mienkou ......................................................29

    1 8Z;

  • 8/18/2019 Lazarus Manuál 1

    2/21

    LAZARUS

    > prostre!ie? v ktorom sa pro#ramuje v pro#ramovacom ja)yku Objektov "ascal @Object"ascalA.

    Kapitola 1 Začíname

    Bnoh pro#ramy v s(časnch operačnch systmoch Cin!oDs aj 8inuE komunikuj( s po>

    u+ívateFom prostre!níctvom okien. apríkla!? v okne #ra6ickho e!itora sa )obra)ujeponuka @menuA? papier a tlači!lá s nástrojmi na kreslenie. j my bu!eme vytváraGpo!obn mo!ern oknov aplikácie.

    Vytvorenie a spustenie novej aplikácie

    1. =pustíme prostre!ie 8a)arus.

     

    "rostre!ie má tieto časti: 7lavná ponuka? Hn-pektor objektov? 0ormulár? "ro#ram2. Vytvoríme nov pro#ram @aplikáciuA príka)om ) ponuky: Súbor ► Nový ► Projekt-Ap-likácia$. %(to aplikáciu spustíme povelom tlači!lom alebo ) ponuky: Spustiť ► Spustiť.@resp. 03A4. a obra)ovke uvi!íme prá)!ne okno s nápisom 0orm1. a li-te be+iacich pro#ramov vo

    Cin!oDs uvi!íme? +e pribu!ol pro#ram s ná)vom project1.'. =pusten pro#ram ukončíme tak? ako in pro#ramy I kliknutím na 

    Viac o vývojovom prostreí 

    Vo vývojovom prostreí bu!eme vytváraG aplikácie tak? +e:• navrhneme v!"#a aplikácie? te!a? ako má vy)eraG okno ná-ho pro#ramu?• bu!eme pro#ramovaG v ja)yku "ascal @presnej-ie Object "ascalA?• bu!eme sp(-GaG a lai$? či+e testovaG a opravovaG? na-e pro#ramy.

    V!"#a aplikácie vytvoríme tm? +e ) palety komponentov postupne umiestnime kom%ponenty !o &ormulára @pripomína to skla!anie stavby ) kociek 8e#aA:1. Komponent vyberieme ) palety kliknutím my-ou na ikonu komponentu.2. Vybran komponent potom umiestnime !o 6ormulára? kliknutím my-i alebo Gahanímmy-i vo 6ormulári.

    2 8Z;

  • 8/18/2019 Lazarus Manuál 1

    3/21

    Komponenty s( stavebn prvky? ) ktorch vytvárame aplikácie. =l(+ia na interakciu po>u+ívateFa s pro#ramom? na )a!ávanie vstupnch a )obra)ovanie vstupnch ho!n&t alebona ria!enie behu aplikácie.

    ajčastej-ie bu!eme pou+ívaG komponenty tlačilo -2utton0? o)rá!ok -'ma,e0? eitova%cie políčko -3it0? te4tová ploc"a -5emo0? !a(krtávacie políčko -6"eck2o40.

    0ormulár pre!stavuje bu!(ce okno na-ej aplikácie. %ak? ako tera) komponenty umiestni>me !o 6ormulára? tak bu!e vy)eraG na-a aplikácia po spustení.

    %era) vlo+íme !o 6ormulára komponenty Button @tlačiloA a Ia!e @o)rá!okA. %lači!lombu!eme sp(-GaG príka)y pro#ramu. Obrá)ok bu!e sl(+iG ako vstup pro#ramu.

    "oponent Button #tla$i%lo& 'o 'álo(k) Stan%ar%.

    "oponent Ia!e #obrá'ok& 'o 'álo(k) A%%itionalKomponenty? ktor s( u+ polo+en vo 6ormulári m&+eme pomocou my-i pres(vaG a meniGim veFkosG.

    *orulár s tla$i%lo a obrá'koplikáciu spustíme. ko sa správa tlači!lo v spustenom pro#rameJ "o spustení pro#ramum&+eme na tlači!lo klikaG? ale )atiaF sa nič nestane. k chceme? aby pro#ram niečo)myslupln vykonal? musíme )ačaG pro#ramovaG.

    7rvý pro,ramV okne s pro#ramom je u+ napísan k(sok pro#ramu? ktor vy#enerovalo vvojov pro>stre!ie automaticky. "ostupne sa !o)vieme? čo je!notliv slová )namenaj(. %era) v-ak)reali)ujme tieto pokyny:1. Vo 6ormulári !vojklikneme na tlači!lo @po)or? nie v be+iacom pro#rameA. k 6ormulárnevi!íme? stlačíme 012. ;ovnako ho skryjeme.

    2. Zobra)í sa okno s pro,ramom? pričom sa !o automaticky !opísal Lal-í teEt.

    +ena v okne s pro!rao$. Mo ria!ka? k!e bliká kur)or? me!)i slová )e,in en? napí-eme príka!:

    Hma#e1.5anvas.%eEtOut@199?'9?NhojNA4. "ro#ram spustíme a v okne )e8iace"o pro,ramu stlačíme tlači!lo.

    "ríka)? ktor sme !opisovali !o pro#ramu? je s(časGou tak)vanej proce9ry:

     procedure Tform1.Button1Click(Sender:TObject); HLAVI!A beginIm"#e1.C"n$"%.Te&tOut(1'' *' +A,oj+); T-LO

    end ;

    $ 8Z;

  • 8/18/2019 Lazarus Manuál 1

    4/21

    "rá)!nu proce!(ru Button1Click vy#enerovalo vvojov prostre!ie automaticky.=talo sa tak vte!y? keL sme !vojklikli na tlači!lo vo 6ormulári @viL. 1. bo! postupuA.%mto (konom sme )árove )abe)pečili? +e príka)y ) proce!(ry Button1Click sa vy>konaj( vte!y? keL v spustenom pro#rame stlačíme tlači!lo.

    "ríka) Im"#e1.C"n$"%.Te&tOut(1'' *' +A,oj+) )obra)í teEt? preto ho bu!emena)vaG príka! pre výpis te4tu:"ríka) čítame takto Pobrá)ok 1? !o svojej #ra6ickej plochy napí- na s(ra!nice 199? '9

    teEt NhojQ.Zátvorky vyme!)uj( parametre príka)u I E>ov(? y>ov( po)íciu a teEt.%eEt pí-eme me!)i apostro6y @ltR$3A tak? ako pí-eme priamu reč !o (vo!)oviek.

    "o)námka: pri práci v prostre!í 8a)arus sa v na-om spustenom pro#rame )a6arbí plochana čierno. k chceme? aby mal obrá)ok biele po)a!ie? musíme ho !ma!a$:1. Mvojklikneme !o 6ormulára @keL ná- pro#ram nie je spustenA?2. V okne s pro#ramom v)nikne Lal-ia proce!(ra? !o ktorej vpí-eme príka):

     procedure Torm1.ormCre"te(Sender: Tobject); begin  Im"#e1.C"n$"%.ill/ect(Im"#e1.Client/ect);

    en!

    Sra6ick( plochu bu!eme takto ma)aG aj v bu!(cnosti? keL bu!eme v prostre!í 8a)arus

    vytváraG #ra6ick projekty.Komponenty? ktor vkla!áme !o 6ormulára !ostávaj( svoje je!no)načn mená. apríkla!obrá)ok !ostal meno Hma#e1? tlači!lo Tutton1.

    7očítačová s9ranicová s9stava je iná? ako sme boli )vyknutí v matematike:

     procedure Torm1.Button1Click(Sender: TObject); begin  Im"#e1.C"n$"%.Te&tOut(' ' +A,oj+);end ;

    k takto pro#ram )novu spustíme? uvi!íme? +e bo! so s(ra!nicami 9? 9 le+í v Favomhornom rohu obrá)ka. Os , >ová rastie smerom vpravo? ) >ová smerom na!ol. Mo #ra6ickejplochy m&+eme vypisovaG na r&)ne miesta aj viac teEtov:

     procedure Torm1.Button1Click(Sender: TObject); begin  Im"#e1.C"n$"%.Te&tOut(0' *' +A,oj+);  Im"#e1.C"n$"%.Te&tOut(*' ' +Ako %" m234+);end ;

    V ja)yku "ascal o!!eFujeme !va príka)y ; @bo!kočiarkouA. 7oci )a posle!nm príka)omje bo!kočiarka )bytočná? bu!eme ju tam písaG pre prípa!? +e by sme chceli na koniectela proce!(ry !opisovaG e-te Lal-ie príka)y.

    4 8Z;

  • 8/18/2019 Lazarus Manuál 1

    5/21

    :ypy "on;t

    "rv !va parametre v príka)e vpisu musia byG cel. čísla. %retí? posle!n parame>ter musí byG teEt? presnej-ie? teEtov re$a!ec. V )ápisoch v pro#rame o!lí-ime teEtovreGa)ce o! čísel alebo príka)ov tm? +e )naky teEtovho reGa)ca napí-eme me!)i apos%tro&y.

    Uísla a teEty s( pre počítač ro)!ielne typy 9ajov. = ka+!m vykonávame in(kony? inak s nimi manipulujeme. "reto napríkla! v príka)e vpisu nem&+eme na miesteteEtovho parametra napísaG číslo:

    • nesprávne< Im"#e1.C"n$"%.Te&tOut(' ' 156) ... 156 je číslo

    • správne< Im"#e1.C"n$"%.Te&tOut(' ' +156+) ...+156+ je reGa)ec

    ieke!y v-ak bu!eme chcieG )obra)iG vsle!ky vpočtov:• toto je nesprávne< Im"#e1.C"n$"%.Te&tOut(' ' *7891);

    • !o)ra!í '4R1< Hm"#e1.C"n$"%.Te&tOut(' ' +*7891+) 

    • vypí(e =1: Im"#e1.C"n$"%.Te&tOut(' ' IntToStr(*7891)) 

    IntToStr je skratka )o slov Inte!er o Strin! W )me el/ $0slo Na eťa'ec. Zmenaprebehne v pamXti počítača? k!e sa najprv vyho!notí aritmetick vra) a potom sa )jeho vsle!ku @či+e ) čísla 51) vytvorí postupnosG ci6ier? te!a reGa)ec +51+. 7o!notaniektorch vra)ov v-ak m&+e byG aj esatinn. číslo:

    • nesprávne: Im"#e1.C"n$"%.Te&tOut(' ' IntToStr(15))

    • správne: Im"#e1.C"n$"%.Te&tOut(' ' lo"tToStr(15))

    "omocou lo"tToStr )meníme !esatinn číslo na teEt I ) čísla '.* v)nikne +'.*+.lo"tToStr je skratka )o slov *loatin! point nuber o Strin! W )me 0slo s %esatin-nou bo%kou Na eťa'ec.j !esatinn a cel čísla s( !va ro)!ielne typy. 7o!nota vra)u? v ktorom sa !elí pomo>cou /? bu!e v8y esatinn. číslo. to aj vte!y? keby sme !elili 1'5:

    nesprávne< Im"#e1.C"n$"%.Te&tOut(' ' IntToStr(1'5));správne< Im"#e1.C"n$"%.Te&tOut(' ' lo"tToStr(1'5));

    V ja)yku "ascal sa ro)li-uje esatinn. a celočíseln. elenie. 5eločíseln !elenie sa rea>li)uje pomocou operátora iv:vypí(e >< Im"#e1.C"n$"%.Te&tOut(' ' IntToStr(1' div 5));vypí(e ?< Im"#e1.C"n$"%.Te&tOut(' ' IntToStr(1' div 6));

    = celočíselnm !elením s(visí aj !vy(ok? ktor v)nikne po elení voc" celýc" čísel.%en vieme )istiG pomocou operátora mo:vypí(e 1< Im"#e1.C"n$"%.Te&tOut(' ' IntToStr(6 mod 5));

    vypí(e @< Im"#e1.C"n$"%.Te&tOut(' ' IntToStr(18 mod *));

    V pro#ramoch tie+ m&+eme pou+ívaG niektor matematick 6unkcie. apríkla! %rt po>číta omocninu ) čísla. Vsle!ok bu!e !esatinn číslo:Im"#e1.C"n$"%.Te&tOut(' ' lo"tToStr(%rt(

  • 8/18/2019 Lazarus Manuál 1

    6/21

    príkla!? takto vypí-eme červen teEt:

     procedure Torm1.Button1Click(Sender: Tobject); begin  Im"#e1.C"n$"%.ont.Color:>cl/ed;  Im"#e1.C"n$"%.Te&tOut(*' 0' +?ro#r"mo$"nie+);end ;

    V pro#rame sme pou+ili pre nastavenie 6arby písma nov príka! priraenia. %ento príka)obsahuje symboly :W @!vojbo!ka rovná saA. a pravej strane o! by cl/ed @cl W skratka )o slova color? ;e! W červenáA. "ríka) pre nastavenia 6arby m&+e>me čítaG nasle!ovne: 3obrá'ok 14 tvoja !ra5ická ploc6a4 tvoje p0so4 je6o 5arba nastavna $ervenú7. Zákla!n 6arby s( pomenovan: clBl"ck cl/ed cl@reen clBluecl,ite clello clAu" clCre"m clD"rk clDk@r"E cluc,%i"cl@r"E clLime clLt@r"E clF"roon clFed@r"E clG"$E clOli$e

    cl?urle clSil$er clSkEBlue.

    Yal-ími príka)mi m&+eme nastaviG typ alebo veFkosG písma: procedure Torm1.Button1Click(Sender: Tobject); begin

    Im"#e1.C"n$"%.ont.Color:>cl/ed;Im"#e1.C"n$"%.ont.G"me:>+Time% Ge /om"n+;

      Im"#e1.C"n$"%.ont.Hei#,t:>58;Im"#e1.C"n$"%.Te&tOut(6' 0' +?ro#r"mo$"nie+);

    end;

    Vlastnosti písma? a nesk&r uvi!íme? +e aj in vlastnosti? nastavujeme pomocou príka)uprira!enia takto:

    meno vlastnosti )ov:Im"#e1.C"n$"%.Te&tOut(5'' 1'' +?ro#r"mo$"nie+); Im"#e1.C"n=$"%.ont.Color:>cl/ed; 

    kou 6arbou sa vypí-e teEt po prvom a po !ruhom stlačení tlači!laJ "o prvom sa vypí-eteEt čiernou 6arbou? preto+e 6arbu teEtu nastavujeme a+ potom? ako sa vykonal príka)pre vpis teEtu. Nastavenie 5arb) sa e%'i stla$eniai tla$i%la pa8tá. "reto sa a+ po!ruhom stlačení vypí-e teEt červenou 6arbou.

    7ou8ívame viac tlačiiel

    Mo 6ormulára m&+eme vlo+iG Lal-ie tlači!lo. V-imnime si? +e prv tlači!lo má nápis But=ton1  a !ruh Button5. Mvojkliknite na !ruh tlači!lo. V teEte pro#ramu pribu!neproce!(ra Button5Click. Mo nej bu!eme !opisovaG príka)y? ktor sa vykonaj(? ak po>čas behu pro#ramu stlačíme !ruh tlači!lo. "o!obnm sp&sobom m&+eme pri!ávaG area#ovaG na stlačenie Lal-ích tlači!iel.

    Kreslenie o)B8nikov a (tvorcov

    Mo #ra6ickej plochy sa !aj( kresliG r&)ne je!no!uch #eometrick (tvary. apríkla! o)%B8nik nakreslíme takto:

     procedure Torm1.Button5Click(Sender: TObject);

     beginIm"#e1.C"n$"%./ect"n#le(1'' 1'' 6'' 5'');

    end ;

    * 8Z;

  • 8/18/2019 Lazarus Manuál 1

    7/21

    "ríka) má 4 parametre. =( to s(ra!nice !voch bo!ov? me!)i ktor sa nakreslí ob!,+nik.

    "rv !ve čísla 199? 199[ s( s(ra!nice prvho vrcholu? tretie a -tvrt číslo $99? 299[ s(s(ra!nice protiFahlho vrcholu ob!,+nika. Ob!,+nik sa nakreslí tak? +e bu!e maG stranyrovnobe+ne so stranami #ra6ickej plochy.

    \tvorce tie+ kreslíme pomocou príka)u na kreslenie ob!,+nikov. Ctvorec je -peciálnyprípa! ob!,+nika? ktorho strany maj( )ho!n( !,+ku. apríkla! -tvorec? so stranou !,+ky199 nakreslíme takto:

     procedure Torm1.Button5Click(Sender: TObject); begin  Im"#e1.C"n$"%./ect"n#le(*' 5' *'91'' 5'91'');end ; 

    "arametre m&+u byG aj vra)y? ktor sa najsk&r vyho!notia.

    akreslite:

    Kreslenie elíps a kru"ov

    "ríka) na kreslenie elipsy sa po!obá príka)u na kreslenia ob!,+nika:

     procedure Torm1.Button6Click(Sender: Tobject); begin  Im"#e1.C"n$"%.-lli%e(1'' 1'' 6'' 5'');end ;

    ]lipsa sa vpí-e !o pomyselnho ob!,+nika?ktorho s(ra!nice sme uvie!li ako parametrepríka)u.

    Kru" je opXG -peciálny prípa! elipsy. ko nakreslíme kruh so stre!om v bo!e '9? '9 apolomerom 19J "re príka) -lli%e musíme vypočítaG s(ra!nice !voch protiFahlch vr>cholov -tvorca? !o ktorho sa elipsa I vlastne u+ kruh? vpí-e.

     procedure Torm1.Button6Click(Sender: Tobject); begin

      Im"#e1.C"n$"%.-lli%e(*'=1' *'=1' *'91' *'91');end ;

    8Z;

  • 8/18/2019 Lazarus Manuál 1

    8/21

    akreslite:

    Kreslenie 9sečiek 

    ^sečku nakreslíme pomocou !vojice príka)ov: procedure Torm1.Button8Click(Sender: Tobject); begin  Im"#e1.C"n$"%.Fo$eTo(1'' *');  Im"#e1.C"n$"%.LineTo(5'' 0');end ;

    "ríka) Im"#e1.C"n$"%.Fo$eTo presunie nevi!iteFn !ra5ick/ pero !o )a!anho bo!u."ríka) Im"#e1.C"n$"%.LineTo nakreslí s #ra6ickm perom čiaru.

    *ar)a o)rysu a výplne 

    "ri kreslení ob!,+nikov a kruhov m&+eme nastaviG 6arbu výplne @vn(traA a 6arbu o)rysu@obvo!uA. Kruh so +ltou vplou a červenm obrysom nakreslíme takto:

     procedure Torm1.Button*Click(Sender: Tobject); begin  Im"#e1.C"n$"%.Bru%,.Color:>clello;  Im"#e1.C"n$"%.?en.Color:>cl/ed;  Im"#e1.C"n$"%.-lli%e(1' 1' ' ');end ;

    Vysvetlenie:•   ?en.Color )namená 6arba pera a určuje 6arbu čiaru? obrys (tvaru

    •   Bru%,.Color )namená 6arba -tetca? ktorou sa vymaFuje? vyplní plocha

    0arba pera má vplyv aj pri kreslení (sečiek. 

    akreslite:

    Dá"on. čísla

    a-e pro#ramy sa )atiaF správali veFmi presne I v+!y nakreslili rovnak (tvar? preto+es(ra!nice #eometrickho (tvaru sa ne)menili. "o)rime sa ale na tento príkla!:

     procedure Torm1.Button

  • 8/18/2019 Lazarus Manuál 1

    9/21

    Vi!íme? +e po stlačení tlači!la sa kreslí v+!y iná (sečka. Random )namená ná6o%ný :•   /"ndom(8'') )volí niektor číslo spome!)i čísel o! 9 po $33.

    •   /"ndom(6'') )volí niektor číslo spome!)i čísel o! 9 po 233.

    Obi!ve náho!ne )volen čísla sa pou+ij( ako s(ra!nice bo!u? !o ktorho sa nakreslí(sečka @úse$ka 'a$0na v bo%e #949&A. k stlačíme tlači!lo !ruh krát? vy#eneruj( sa innáho!n čísla? tak+e sa nakreslí (sečka !o inho koncovho bo!u.

    "arameter? ktor uvá!)ame pre vy,enerovanie ná"on."o čísla u!áva ro)sah náho!>nch čísel: /"ndom(n) náho!ne )volí číslo spome!)i čísel o! ' po n=1.

    k čísla m&+e vypísaG pro#ramJ

     procedure Torm1.ButtonClick(Sender: Tobject); begin  Im"#e1.C"n$"%.Te&tOut(' ' IntToStr(19/"ndom(. k k vy#enerovanmu číslu pripočítame 1?ho!nota vra)u bu!e v ro)sahu o! 1 po *.

    k čísla sa vy#eneruj(J• 1Rran!om@19A

    • ran!om@21A>19

    ko vy#enerujete čísla:• o! 9 po 199• o! 29 po $9

    • o! >' po R'J

    Kapitola ?< Komponenty a ic" vlastnosti

    k !o 6ormulára vlo+íme tlači!lo? pomocou my-i nastavíme jeho polohu alebo veFkosG."oloha aj veFkosG s( vlastnosti tlači!la. %lači!lo má aj in vlastnosti @ propertiesA. aprí>kla!? aj nápis na tlačile Button6 je vlastnosG? ktorá sa !á )meniG. B&+eme to urobiGv okne In:pektor ;bjektov .

    V okne Hn-pektor Objektov s( tera) )obra)en

    vlastnosti tlači!la Button1.Ka+!á vlastnosG má svoje meno a "onotu. aprí>kla! vlastnosG:

    •   Left a To určuj( po)íciu tlači!lav)hFa!om na okraje 6ormuláraLeft ... v)!ialenosG o #av."o okraja

      @vo!orovná? E>ová s(ra!nicaATo ... v)!ialenosG o "orn."o okraja

    @)vislá? y>ová s(ra!nicaA.•   idt, a Hei#,t určuj( (írku a vý(ku

    tlači!la•   C"tion je nápis na tlači!le.

    3 8Z;

  • 8/18/2019 Lazarus Manuál 1

    10/21

  • 8/18/2019 Lazarus Manuál 1

    11/21

    "omocou komponentu eitovacie políčko #>%itA )a!ávame vstupn (!aje pro#ramu:

    >%itovacie pol0$ko na palete koponentov

    ]!itovacie políčko 6un#uje ako veFmi je!no!uch te4tový eitor.

    1. Vlo+me je!no e!itovacie políčko !o 6ormulára.2. k pro#ram spustime? m&+eme !o e!itovacieho políčka písaG krátke teEty.$. Zatvorme a ukončime be+iaci pro#ram.

    Vi!íme? +e po spustení pro#ramu u+ je v políčku napísan te4t. %en m&+eme )meniG:

    1. Vo 6ormulári o)načíme e!itovacie políčko @klikneme naA.2. V in-pektore objektov náj!eme vlastnosG Te&t$. Zmeníme teEt vo vlastnosti Te&t na K"d"j %$oje meno.

    %eEt? ktor napísal pou+ívateF !o e!itovacieho políčka? )istíme ) vlastnosti Te&t. %á

    na!ob(!a ho!notu typu string @teEtov reGa)ecA? ktor( m&+eme v pro#rame je!no!u>cho )istiG a vypísaG:

     procedure Torm1.Button8Click(Sender: Tobject); begin  Im"#e1.C"n$"%.Te&tOut(1' 1' +DobrJ de+);  Im"#e1.C"n$"%.Te&tOut(' 1' -dit1.Te&t);end;

    Kapitola @< 7remenn.

    "ri počítaní na kalkulačke )vykneme po+ívaG pamXG kalkulačky BR na to? aby sme !o nejo!lo+ili !očasn vsle!ok. esk&r? keL chceme o!lo+en( ho!notu pou+iG? vyvoláme ju )pamXti pomocou tlači!la B;. j v pro#ramoch si bu!eme potrebovaG )apamXtaG vsle!kyvpočtov? ktor nesk&r pou+ijeme. bu!eme si tie+ musieG pamXtaG aj veFa Lal-ích (!a>jov? ktor v pro#rame spracovávame. V pro#ramovacích ja)ykoch sa na tento (čel pou+í>vaj( premenn.

    7remennou v pro#ramovaní ro)umieme miesto v pamXti počítača:• !o premennej? či+e !o pamXGovho miesta? m&+eme (!aje !apísa$?• posle!ná )apísaná ho!nota sa v premennej uchová? pamGtá sa?• )apamXtan( ho!notu m&+eme nesk&r vyu+iG? prečítaG? !isti$.

    Vi!íme? +e v pro#ramovaní má pojem preenná in v)nam? ako v matematike.V matematike pou+ívame pojem  preenná na o)načenie parametra alebo ne)námejho!noty. apríkla!? !,+ka (sečky je a? obsah -tvorca S?a2 alebo hFa!áme rie-ene rovnice1 @ , ? . v-ak premenn v matematickch vra)och a v pro#ramoch maj( spoločn to?+e nám umo+uj( popísaG v-eobecnej-ie pravi!lá alebo platn v)Gahy.

    V ja)yku "ascal m&+eme pou+ívaG veFa premennch @be+ná kalkulačka má iba je!no pa>mXGov miesto BA. "re! pou+itím treba premenn( najsk&r !aeklarova$. Meklarácia pre>mennej je )ápis? v ktorom pre)ra!íme:

    • meno premennej W ako premenn( pomenujeme? ako sa bu!e volaG?• typ premennej W ak ho!noty? ) akej mno+iny m&+e premenná na!ob(!aG.

    11 8Z;

  • 8/18/2019 Lazarus Manuál 1

    12/21

    "remenn !eklarujeme pre! slovom begin. %akto )a!eklarujeme tri premenn:

     procedure Torm1.Button1Click(Sender: Tobject);var A B Sucet: Inte#er; begin end ;

    Meklaráciou sme vyhra!ili v pamXti počítača miesto pre tri celočíseln premenn:

    • !eklarácia )ačína slovom var @skratka )o slova variable ? preennáA• premenn maj( svoje mená A? B? Sucet

    • ka+!á ) nich? te!a aj premenná A si !oká+e )apamXtaG je!no FubovoFn cel čísloI hovoríme? +e premenn A  je t)pu cel/ $0slo.

    Obsah premennch bu!eme )ná)orovaG pomocou pomenovanch -katuliek:

    "remennej nastavíme nov( ho!notu pomocou príka)u prira!enia:

     procedure Torm1.Button1Click(Sender: Tobject);var A B Sucet: Inte#er; begin  A:>5;  B:>A96;  Sucet:>A9B;  Im"#e1.C"n$"%.Te&tOut(' ' IntToStr(Sucet));end ;

    "remennm sme postupne prira!ili ho!noty:

    :W2

    T:WR$

    =ucet:WRT

    Mo #ra6ickej plochy nakreslíme -tvorce so stranou? takej veFkosti? ak( )a!al pou+ívateF!o e!itovacieho políčka:

     procedure Torm1.Button5Click(Sender: Tobject);var A: Inte#er; begin  A:>StrToInt(-dit1.Te&t);  Im"#e1.C"n$"%./ect"n#le(' ' A A);end ;

    Mo celočíselnej premennej smieme prira!iG iba cel číslo @t.j. ho!notu typu Inte#erA."reto teEt ) e!itovacieho políčka )meníme na číslo pomocou StrToInt.

    12 8Z;

  • 8/18/2019 Lazarus Manuál 1

    13/21

    a náho!nej po)ícii v #ra6ickej ploche nakreslíme kruh s polomerom 1':

     procedure Torm1.Button6Click(Sender: Tobject);var M : Inte#er; begin  M:>r"ndom(Im"#e1.idt,);  :>r"ndom(Im"#e1.Hei#,t);  Im"#e1.C"n$"%.Bru%,.Color:>cl/ed;

      Im"#e1.C"n$"%.-lli%e(M=1' =1' M91' 91');end ;

    akreslite na náho!n miesto -tvorec náho!nej veFkosti:

    %ip: idt, @-írkaA a Hei#,t @v-kaA s( vlastnosGami obrá)ka?ktor vieme nastavovaG aj v pro#rame a vieme sa na nev pro#rame aj o!volávaG.

    "reto príka): M:>r"ndom(Im"#e1.idt,) vy#enerujenáho!n( E>ov( s(ra!nicu v ro)sahu o! 9 po -írku obrá)ka>1.

    "remenn ` a na)vame lokálne premenn.. V pamXti počítača eEistuj( iba počas vy>konávania proce!(ry Button6Click. j preto príka)y ) tejto proce!(ry ne!oká+u po>u+ívaG lokálnu premenn( A ) proce!(ry Button5Click. 8okálne premenn s( viite#n.

    iba pre príka)y tej proce!(ry? v ktorej s( !eklarovan.

    Vypí-te na náho!n miesto tieovan nápis:

    %ip: ak chceme? aby sa teEty písali be) bieleho po)a!ia? vypneme výplH: Brush.Style:=bslear

    %ento príka) pou+ijeme aj vte!y? keL chceme kresliG (tvary be) vplne.

    "remenn( m&+eme !eklarovaG aj mimo tela proce!(ry. asle!uj(ci pro#ram počíta klik>

    nutia na tlači!lo:

    var G: Inte#er>'; procedure Torm1.Button8Click(Sender: Tobject); begin  G:>G91;  Button8.C"tion:>IntToStr(G);end ;

    "remenná G je ,lo)álna premenná. Vho!ou #lobálnej premennej je? +e eEistuje a pa>

    mXtá si nastaven( ho!notu počas behu celho pro#ramu. Slobálna premenná je vi!iteFnáaj pre príka)y v proce!(rach? ale iba o! miesta svojej !eklarácie. avy-e? #lobálnej pre>mennej m&+eme pri !eklarácii nastaviG počiatočn( ho!notu.

    1$ 8Z;

  • 8/18/2019 Lazarus Manuál 1

    14/21

    "ou+ívaniu #lobálnych premennch sa v-ak sna+íme čo mo+no najviac vyhbaG. e to pre>to? lebo #lobálne premenn s( !o určitej miery nebe)pečn I !o #lobálnej premennejm&+e )asahovaG príli- veFa príka)ov ) r&)nych proce!(r? a tak m&+u jej obsah neprehFa!>nm sp&sobom meniG.

    Kapitola >< 7ríka! cyklu

    e!nu (sečku s náho!ne umiestnenm koncom sme kreslili takto:Im"#e1.C"n$"%.LineTo(/"ndom(8'') /"ndom(6''));

    k chceme nakresliG viac? napríkla! $ (sečky? m&+eme príka) skopírovaG:

     procedure Torm1.Button1Click(Sender: Tobject); begin  Im"#e1.C"n$"%.LineTo(/"ndom(8'') /"ndom(6''));  Im"#e1.C"n$"%.LineTo(/"ndom(8'') /"ndom(6''));

    Im"#e1.C"n$"%.LineTo(/"ndom(8'') /"ndom(6''));end ;

    Keby sme chceli kresliG 199 (sečiek? museli by sme veFa kopírovaG. "ritom by sme sa ne>smeli pomliG v počte skopírovanch príka)ov. nej 6arby:

    %ip: Vlastnosti #ra6ickho pera Color m&+eme priraLovaGaj číseln ho!noty. a vy#enerovanie náho!nej 6arby m&+e>me pou+iG napríkla! aj príka)

    Im"#e1.C"n$"%.?en.color:>r"ndom(5*

  • 8/18/2019 Lazarus Manuál 1

    15/21

    V kon-trukcii cyklu !or ro)po)návame !ve časti I "lavičku a telo cyklu:

    for I:>1 to 6 do HLAVI!AIm"#e1.C"n$"%.LineTo(/"ndom(8'') /"ndom(6'')); T-LO

    "ríka) čítame: 3nastavuj preennú I  postupne na 6o%not) o% 1 po a v)konávaj kres-lenie ná6o%nej úse$k)7.

    Keby sme v hlavičke cyklu )menili číslo $ na 199? nakreslilo by sa 199 (sečiek.

    "remenn( I na)vame riaiacou premennou cyklu. 7o!nota v premennej I sa postup>ne )vXč-uje o 1. B&+eme to vi!ieG aj na nasle!uj(com príkla!e? v ktorom postupne vypí>-eme !o #ra6ickej plochy čísla o! 1 po 1'.

     procedure Torm1.Button6Click(Sender: Tobject);var I: Inte#er; begin  !or I:>1 to 1' do

      Im"#e1.C"n$"%.Te&tOut(' I75' IntToStr(I));end ;

    Kreslite na náho!n miesta s(stre!n kru+nice vyplnennáho!nou6arbou.

    lavička cyklu 

    V hlavičke cyklu napí-eme meno ria!iacej premennej? ktorá sa bu!e postupne )vXč-ovaGo ho!notu 1.

  • 8/18/2019 Lazarus Manuál 1

    16/21

    =lová begin a end 6un#uj( ako je!en !lo8ený príka! alebo pro#ramov )átvorky.O)načuj( skupinu príka)ov?? ktor sa maj( spoločne opakovaG:

    • na )ačiatku cyklu sa !o premennej I prira!í ho!nota 1◦ vykoná sa príka)? ktor vypí-e číslo 1?◦ potom sa vykoná príka)? ktor vypí-e !ruh( mocninu čísla 1?

    • obsah premennej I sa )vXč-í o 1? te!a I>5◦ opXG sa vykoná príka) pre vpis I? te!a sa vypí-e číslo 2◦

    Lalej sa vykoná príka)? ktor vypí-e !ruh( mocninu čísla? te!a 8• obsah premennej I sa )vXč-i o 1? te!a I>6? atL.

    akreslite pyramí!u ) r&)no6arebnch ob!,+nikov:

    6yklus v cykle

    ko )obra)íme mal( násobilku I te!a tabuFku s číslami:

    %abuFka má 19 ria!kov a 19 st,pcov. k je v premennej I číslo ria!ku a v premennej Pčíslo st,pca? vsle!n( ho!notu? ktor( vypisujeme? )ískame s(činom I7P. procedure Torm1.Button*Click(Sender: Tobject);var I P: Inte#er; begin

    !or I:>1 to 1' do!or P:>1 to 1' doIm"#e1.C"n$"%.Te&tOut(P76' I75' IntToStr(I7P));

    end ; 

    %elo cyklu m&+e v sebe obsahovaG aj in príka) cyklu I t)v. vnorený cyklus.

    Moká+ete nakresliG -achovnicuJ

    1* 8Z;

  • 8/18/2019 Lazarus Manuál 1

    17/21

    Kapitola I< 7omienený príka! 

    V +ivote často vyho!nocujeme r&)ne situácie a ro)ho!ujeme sa? ak( činnosG Lalejvykonáme. apríkla!: ak je vonku teplo? ve)meme si tričko? inak si ve)meme sveter."o!obn sp&sob ro)ho!ovania bu!eme pou+ívaG aj v na-ich pro#ramoch.

    =k(sme napísaG pro#ram? ktor nám po!Fa )a!anej teploty t pora!í? ako sa obliecG.

    "otrebovali by sme? aby pro#ram pracoval nasle!ovne:

    ak tQ55 potom zobraz text 'obleč si tričko'inak

    zobraz text 'obleč si sveter'

    7omienený príka! i! then else

    "re!chá!)aj(ci slovn )ápis vieme priamo prepísaG !o ja)yka "ascal:

     procedure Torm1.Button1Click(Sender: TObject);var t: Inte#er; begin

    t:>StrToInt(-dit1.Te&t);i! tQ55 then Im"#e1.C"n$"%.Te&tOut(' ' +ObleR %i triRko+)else

    Im"#e1.C"n$"%.Te&tOut(' ' +ObleR %i %$eter+);end ;

    "o)or? pre! vyhra!enm slovom else nepí-eme ; @bo!kočiarkuA.

    k pro#ram vysk(-ame pre r&)ne vstupn ho!noty a uvi!íme? +e:• %eEt PObleč si tričko sa vypí-e pre čísla 56? 58? ... alebo aj 1 ''' '''.• aopak? teEt PObleč si sveter sa vypí-e pre čísla 55? 51? ... alebo =1''.

    "ro#ramov( kon-trukciu i! ... then ... else ... na)vame pomienený príka!:

    i& podmienka t"en  príkaz1 else  príkaz2;

    V príka)e i! then else vi!íme !ve vetvy I !ve alternatívne mo+nosti? ktor sa

    vykonaj( v )ávislosti na tom? či je po%ienka splnená alebo nie:• ak je po!mienka splnená? vykoná sa vetva )a slovom then I príkaz1?

    • ak po%ienka nie je splnená? vykoná sa vetva )a slovom else I príkaz2.

    1 8Z;

  • 8/18/2019 Lazarus Manuál 1

    18/21

    k potrebujeme v niektorej vetve vykonaG viac príka)ov? pou+ijeme pro#ramov)átvorky begin a end . apríkla!? v nasle!uj(com pro#rame kreslíme náho!ne buLčerven -tvorec alebo mo!r kruh:

     procedure Torm1.Button5Click(Sender: TObject);var M : Inte#er; begin

    M:>/"ndom(Im"#e1.idt,);

    :>/"ndom(Im"#e1.Hei#,t);i! /"ndom(5)>' then begin

    Im"#e1.C"n$"%.Bru%,.Color:>cl/ed;Im"#e1.C"n$"%./ect"n#le(M=1' =1' M91' 91');

      endelse

     beginIm"#e1.C"n$"%.Bru%,.Color:>clBlue;Im"#e1.C"n$"%.-lli%e(M=1' =1' M91' 91');

    end ;

    end ; 

    Kreslite náho!ne buL -tvorce alebo ob!,+niky:

    Kom)inácia pomienenýc" príka!ov a cyklov

    akreslíme 19 strie!avo čiernych a bielych -tvorcov:

     procedure Torm1.Button6Click(Sender: TObject);var I: Inte#er; begin

    !or I:>' to do begin

    i! I mod 5>' thenIm"#e1.C"n$"%.Bru%,.Color:>clBl"ckelse

    Im"#e1.C"n$"%.Bru%,.Color:>cl,ite;Im"#e1.C"n$"%./ect"n#le(I75' ' I75'95' 5');

    end ;end ;

    "re párne I nastavujeme čiernu 6arbu vplne a prenepárne I nastavujeme bielu 6arbu. ásle!nekreslíme -tvorec na s(ra!nice? ktor o!vo!íme o!ho!noty premennej I.

    1/ 8Z;

  • 8/18/2019 Lazarus Manuál 1

    19/21

    Lo,ick. výra!y a lo,ick. "onoty

    Po%ienka? ktor( pí-eme v príka)e i!? je v skutočnosti lo,ický výra!. %en m&+ena!obu!n(G ho!notu buL true @prav!aA alebo !alse @neprav!aA. =plnená po!mienkamá ho!notu true a nesplnená po!mienka má ho!notu !alse.

    7o!noty true a !alse s( typu Boole"n. Boole"n je mno+ina? ktorá obsahuje ibatieto !va prvky. "remenná typu Boole"n si !oká+e )apamXtaG vsle!n( ho!notu

    lo#ickho vra)u.

    e je!no!uch-ie nakresliG -achovnicu? keL po)náme príka) H0J

    Zlo8en. pomienky

    MoposiaF sme pou+ívali je!no!uch po!mienky? ktor boli)alo+en na porovnávaní ho!n&t. "omocou lo#ickch operátorov? ktor po)náme aj )

    matematiky? m&+eme po!mienky skla!aG a vytváraG )lo+en po!mienky.V ja)yku "ascal pou+ívame operátory not? and ? or:

    v)svetlenie 'ápis pr0kla% výsle%ok

    ne#ácia V not " not (#=$) = true

    lo#ick ` a M and   (1>5) and (56) = !alse

    lo#ick M alebo M or  (1>5) or (56) = true

    a obra)ovku vypí-eme v-etky nepárne čísla !o 199? ktor s( !eliteFn . "re tak čísloG platí pre!pis? +e (G mod 5Q') and (G mod >') procedure Torm1.Button8Click(Sender: TObject);var G : Inte#er; begin

    :>';!or G:>1 to 1'' doi! (G mod 5Q') and (G mod >') then begin

    Im"#e1.C"n$"%.Te&tOut(' IntToStr(G));:>95';

    end ;end ;

    V cykle postupne sk(-ame čísla G o! 1 po 1''. Vypí-eme tie? ktor maj( nenulov)vy-ok po !elení 5? ale nulov po !elení . Ostatn čísla nás ne)aujímaj(? preto vpro#rame pou+ívame príka) i! be) vetvy else. V premennej si pamXtáme y>ov(s(ra!nicu? kam vypí-eme vsle!ky.

    Kreslite kr(+ky na náho!nch po)íciách v kruhovej oblasti :

    13 8Z;

  • 8/18/2019 Lazarus Manuál 1

    20/21

    Kapitola J< 6yklus s pomienkou

    "ríka) cyklu !or pou+ívame vte!y? keL !opre!u po)náme alebo vieme vypočítaGhranice cyklu? počet opakovaní. ieke!y ich v-ak nevieme je!no!ucho vypočítaG aleboani nevieme pove!aG? !oke!y treba príka)y opakovanevykonávaG. apríkla!? chceme písaG )vXč-uj(ci sa teEt.5hcem v-ak napísaG iba toFko nápisov? koFko sa )mestí !o

    #ra6ickej plochy:

    Tu!eme potrebovaG !ve premenn: v premennej H si pamXtáme v-ku písma a vpremennej s(ra!nicu? kam vypí-eme Lal-í teEt. l#oritmus by sme mohli napísaGtakto:H:>8;

    :>'; kJm 3sa te,t 'est0 %o !ra5ickej ploc6)7 $Ekon2$"j rNk"EIm"#e1.C"n$"%.ont.Hei#,t:>H;Im"#e1.C"n$"%.Te&tOut(' +A,oj+);

    :>9H;  H:>H98;

    ko )istíme? +e sa teEt 'est0 !o #ra6ickej plochyJ apríkla!? po!Fa toho? +e je splnenápo!mienka 9H>Im"#e1.Hei#,t.

    "otom pre!chá!)aj(ci al#oritmus )apí-eme v ja)yku "ascal takto:

     procedure Torm1.Button1Click(Sender: TObject);var H : Inte#er; begin

    Im"#e1.C"n$"%.ont.G"me:>+Ari"l+;

    H:>8;:>'; %hile 9H>Im"#e1.Hei#,t do begin

    Im"#e1.C"n$"%.ont.Hei#,t:>H;Im"#e1.C"n$"%.Te&tOut(' +A,oj+);:>9H;H:>H98;

    end ;end ; 

    V pro#rame sme pou+ili nov( pro#ramov( kon-trukciu I cyklus %hile:

    "ile podmienka o  príkaz;

    5yklus %hile opakuje príkaz? km platí po%ienka. %elo cyklu? te!a príkaz? m&+ebyG je!in príka) alebo skupina príka)ov u)avretch me!)i begin a end .

    esprávne pou+itie cyklu %hile sp&sobí? +e cyklus nik!y neskončí. =tane sa taknapríkla! vte!y? keL napí-eme )a slovom do ; @bo!kočiarkuA:

     %hile 9H>Im"#e1.Hei#,t do ; begin

    V takom prípa!e by telo cyklu neobsahovalo +ia!en príka)? lebo bo!kočiarkou sme

    ukončili prá)!ny príka). "reto by sa nemenila ani ho!nota v premennej . "o!mienka9H>Im"#e1.Hei#,t by )ostala nav+!y splnená? tak+e cyklus by sa vykonával!onekonečna. V)nikol by nekonečný cyklus a ná- pro#ram by )amr)ol.

    29 8Z;

  • 8/18/2019 Lazarus Manuál 1

    21/21

    o sme sa naučili

    aučili sme sa )ákla!y pro#ramovania v ja)yku "ascal s tm? +e sme vyu+ívali vvojovprostre!ie 8a)arus. aučili sme sa príka)y pre kreslenie #eometrickch tvarov?vypisovanie teEtu alebo nastavovanie vlastností pomocou príka)u prira!enia.;o)li-ovali sme r&)ne typy (!ajov: cel čísla? !esatinn čísla? teEty? lo#ick ho!noty."remenn sme pou+ívali na to? aby si pro#ram pamXtal (!aje? vsle!ky r&)nychvpočtov alebo počet opakovaní. Okrem postupnosti príka)ov sme sa naučili pou+ívaGaj )ákla!n pro#ramov kon-trukcie? ktormi ria!ime vykonávanie pro#ramu. "omocoucyklov !or a %hile sme )abe)pečili? aby sa v pro#rame niekoFkokrát opakovanevykonal príka) alebo skupina príka)ov. "o!mienen príka) i! sme pou+ili pri vberealternatívy? ktor ) príka)ov sa Lalej vykoná. "ritom sme sa sna+ili pre!viesG sp&sobuva+ovania? te!a? ako ro)m-Fame na! rie-ením problmov? a ako sa k vsle!nmurie-eniu !opracujeme @často aj po malch krokochA.

    Záverečný projekt<

    apro#ramujte projekt? v ktorom bu!ete pomocou tlači!la a e!itovacieho políčkakresliG obrá)ok lesa. "o stlačení tlači!la sa ) e!itovacieho políčka načíta ho!nota ana náho!nch po)íciách sa vykreslí stromov. Korunu stromu vykresFujte ako )elen(elipsu a kme ako hne! ob!,+nik. VeFkosti strán v-etkch ob!,+nikov #enerujtenáho!ne ) intervalu o! $9 !o 9.