lazarus manuál 1
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.