You are on page 1of 21

LAZARUS

Obsah:
Kapitola 1 Zaname.......................................................................2
Vytvorenie a spustenie novej aplikcie .....................................................2
Viac o vvojovom prostred....................................................................2
Prv program.....................................................................................3
Typy hodnt......................................................................................5

Kapitola 2: Kreslenie geometrickch tvarov .........................................5


Psma .............................................................................................5
Poradie prkazov ................................................................................6
Pouvame viac tlaidiel........................................................................6
Kreslenie obdnikov a tvorcov ..............................................................6
Kreslenie elps a kruhov .......................................................................7
Kreslenie seiek ...............................................................................8
Farba obrysu a vplne ..........................................................................8
Nhodn sla ...................................................................................8

Kapitola 3: Komponenty a ich vlastnosti ...............................................9


Kapitola 4: Premenn ...................................................................11
Kapitola 5: Prkaz cyklu .................................................................14
Cyklus for .......................................................................................14
Hlavika cyklu .................................................................................15
Telo cyklu .......................................................................................15
Cyklus v cykle ..................................................................................16

Kapitola 6: Podmienen prkaz ........................................................17


Podmienen prkaz if then else .............................................................17
Kombincia podmienench prkazov a cyklov .............................................18
Logick vrazy a logick hodnoty ...........................................................19
Zloen podmienky ...........................................................................19

Kapitola 7: Cyklus s podmienkou ......................................................20

LAZARUS

LAZARUS
- prostredie, v ktorom sa programuje v programovacom jazyku Objektov Pascal (Object
Pascal).

Kapitola 1 Zaname
Mnoh programy v sasnch operanch systmoch Windows aj Linux komunikuj s pouvateom prostrednctvom okien. Naprklad, v okne grafickho editora sa zobrazuje
ponuka (menu), papier a tlaidl s nstrojmi na kreslenie. Aj my budeme vytvra
podobn modern oknov aplikcie.
Vytvorenie a spustenie novej aplikcie
1. Spustme prostredie Lazarus.

Hlavn ponuka

Formulr

Inpektor
objektov

Okno s programom
(editor zdrojovho kdu)

Prostredie m tieto asti: Hlavn ponuka, Inpektor objektov, Formulr, Program


2. Vytvorme nov program (aplikciu) prkazom z ponuky: Sbor Nov Projekt-Aplikcia
3. Tto aplikciu spustme povelom tlaidlom
alebo z ponuky: Spusti Spusti.
(resp. F9)
4. Na obrazovke uvidme przdne okno s npisom Form1. Na lite beiacich programov vo
Windows uvidme, e pribudol program s nzvom project1.
5. Spusten program ukonme tak, ako in programy kliknutm na
Viac o vvojovom prostred
Vo vvojovom prostred budeme vytvra aplikcie tak, e:

navrhneme vzhad aplikcie, teda, ako m vyzera okno nho programu,

budeme programova v jazyku Pascal (presnejie Object Pascal),

budeme spa a ladi, ie testova a opravova, nae programy.


Vzhad aplikcie vytvorme tm, e z palety komponentov postupne umiestnime komponenty do formulra (pripomna to skladanie stavby z kociek Lega):
1. Komponent vyberieme z palety kliknutm myou na ikonu komponentu.
2. Vybran komponent potom umiestnime do formulra, kliknutm myi alebo ahanm
myi vo formulri.
2

LAZARUS

Komponenty s stavebn prvky, z ktorch vytvrame aplikcie. Slia na interakciu pouvatea s programom, na zadvanie vstupnch a zobrazovanie vstupnch hodnt alebo
na riadenie behu aplikcie.
Najastejie budeme pouva komponenty tlaidlo (Button), obrzok (Image), editovacie polko (Edit), textov plocha (Memo), zakrtvacie polko (CheckBox).
Formulr predstavuje budce okno naej aplikcie. Tak, ako teraz komponenty umiestnime do formulra, tak bude vyzera naa aplikcia po spusten.
Teraz vlome do formulra komponenty Button (tlaidlo) a Image (obrzok). Tlaidlom
budeme spa prkazy programu. Obrzok bude sli ako vstup programu.

Komponent Button (tlaidlo) zo zloky Standard.

Komponent Image (obrzok) zo zloky Additional

Komponenty, ktor s u poloen vo formulri meme pomocou myi presva a meni


im vekos.

Formulr s tlaidlom a obrzkom

Aplikciu spustme. Ako sa sprva tlaidlo v spustenom programe? Po spusten programu


meme na tlaidlo klika, ale zatia sa ni nestane. Ak chceme, aby program nieo
zmyslupln vykonal, musme zaa programova.
Prv program
V okne s programom je u napsan ksok programu, ktor vygenerovalo vvojov prostredie automaticky. Postupne sa dozvieme, o jednotliv slov znamenaj. Teraz vak
zrealizujme tieto pokyny:
1. Vo formulri dvojklikneme na tlaidlo (pozor, nie v beiacom programe). Ak formulr
nevidme, stlame F12. Rovnako ho skryjeme.
2. Zobraz sa okno s programom, priom sa do automaticky dopsal al text.
Zmena v okne s programom
3. Do riadka, kde blik kurzor, medzi slov begin end, napeme prkaz:
Image1.Canvas.TextOut(100,50,'Ahoj');
4. Program spustme a v okne beiaceho programu stlame tlaidlo.
Prkaz, ktor sme dopisovali do programu, je sasou takzvanej procedry:
procedure Tform1.Button1Click(Sender:TObject);
begin
Image1.Canvas.TextOut(100, 50, 'Ahoj');
end;

HLAVIKA
TELO

LAZARUS

Przdnu procedru Button1Click vygenerovalo vvojov prostredie automaticky.


Stalo sa tak vtedy, ke sme dvojklikli na tlaidlo vo formulri (vi. 1. bod postupu).
Tmto konom sme zrove zabezpeili, e prkazy z procedry Button1Click sa vykonaj vtedy, ke v spustenom programe stlame tlaidlo.
Prkaz Image1.Canvas.TextOut(100, 50, 'Ahoj') zobraz text, preto ho budeme
nazva prkaz pre vpis textu:
Prkaz tame takto obrzok 1, do svojej grafickej plochy nap na sradnice 100, 50
text 'Ahoj.
Ztvorky vymedzuj parametre prkazu x-ov, y-ov pozciu a text.
Text peme medzi apostrofy (Alt+39) tak, ako peme priamu re do vodzoviek.

Poznmka: pri prci v prostred Lazarus sa v naom spustenom programe zafarb plocha
na ierno. Ak chceme, aby mal obrzok biele pozadie, musme ho zmaza:
1. Dvojklikneme do formulra (ke n program nie je spusten),
2. V okne s programom vznikne alia procedra, do ktorej vpeme prkaz:
procedure TForm1.FormCreate(Sender: Tobject);
begin
Image1.Canvas.FillRect(Image1.ClientRect);
end;
Grafick plochu budeme takto maza aj v budcnosti, ke budeme v prostred Lazarus
vytvra grafick projekty.
Komponenty, ktor vkladme do formulra dostvaj svoje jednoznan men. Naprklad
obrzok dostal meno Image1, tlaidlo Button1.
Potaov sradnicov sstava je in, ako sme boli zvyknut v matematike:
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Canvas.TextOut(0, 0, 'Ahoj');
end;
Ak takto program znovu spustme, uvidme, e bod so sradnicami 0, 0 le v avom
hornom rohu obrzka. Os x-ov rastie smerom vpravo, y-ov smerom nadol. Do grafickej
plochy meme vypisova na rzne miesta aj viac textov:
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Canvas.TextOut(80, 50, 'Ahoj');
Image1.Canvas.TextOut(50, 70, 'Ako sa m?');
end;
V jazyku Pascal oddeujeme dva prkazy ; (bodkoiarkou). Hoci za poslednm prkazom
je bodkoiarka zbyton, budeme ju tam psa pre prpad, e by sme chceli na koniec
tela procedry dopisova ete alie prkazy.

LAZARUS

Typy hodnt
Prv dva parametre v prkaze vpisu musia by cel sla. Tret, posledn parameter mus by text, presnejie, textov reazec. V zpisoch v programe odlime textov
reazce od sel alebo prkazov tm, e znaky textovho reazca napeme medzi apostrofy.
sla a texty s pre pota rozdielne typy dajov. S kadm vykonvame in
kony, inak s nimi manipulujeme. Preto naprklad v prkaze vpisu nememe na mieste
textovho parametra napsa slo:
nesprvne: Image1.Canvas.TextOut(0, 0, 123) ... 123 je slo

sprvne: Image1.Canvas.TextOut(0, 0, '123') ...'123' je reazec

Niekedy vak budeme chcie zobrazi vsledky vpotov:


toto je nesprvne: Image1.Canvas.TextOut(0, 0, 5*4+1);
zobraz 5*4+1: Image1.Canvas.TextOut(0, 0, '5*4+1');
vype 21: Image1.Canvas.TextOut(0, 0, IntToStr(5*4+1));
IntToStr je skratka zo slov Integer To String = zme Cel slo Na Reazec. Zmena
prebehne v pamti potaa, kde sa najprv vyhodnot aritmetick vraz a potom sa z
jeho vsledku (ie z sla 21) vytvor postupnos cifier, teda reazec '21'. Hodnota
niektorch vrazov vak me by aj desatinn slo:
nesprvne: Image1.Canvas.TextOut(0, 0, IntToStr(1/2));

sprvne: Image1.Canvas.TextOut(0, 0, FloatToStr(1/2));

Pomocou FloatToStr zmenme desatinn slo na text z sla 0.5 vznikne '0.5'.
FloatToStr je skratka zo slov Floating point number To String = zme slo s desatinnou bodkou Na Reazec.
Aj desatinn a cel sla s dva rozdielne typy. Hodnota vrazu, v ktorom sa del pomocou /, bude vdy desatinn slo. A to aj vtedy, keby sme delili 10/2:
nesprvne: Image1.Canvas.TextOut(0, 0, IntToStr(10/2));
sprvne: Image1.Canvas.TextOut(0, 0, FloatToStr(10/2));
V jazyku Pascal sa rozliuje desatinn a celoseln delenie. Celoseln delenie sa realizuje pomocou opertora div:
vype 5: Image1.Canvas.TextOut(0, 0, IntToStr(10 div 2));
vype 3: Image1.Canvas.TextOut(0, 0, IntToStr(10 div 3));
S celoselnm delenm svis aj zvyok, ktor vznikne po delen dvoch celch sel.
Ten vieme zisti pomocou opertora mod:
vype 1: Image1.Canvas.TextOut(0, 0, IntToStr(3 mod 2));
vype 4: Image1.Canvas.TextOut(0, 0, IntToStr(14 mod 5));
V programoch tie meme pouva niektor matematick funkcie. Naprklad sqrt pota odmocninu z sla. Vsledok bude desatinn slo:
Image1.Canvas.TextOut(0, 0, FloatToStr(sqrt(64)));
Image1.Canvas.TextOut(0, 0, FloatToStr(sqrt(5*5-4*4)));

Kapitola 2: Kreslenie geometrickch tvarov


Naume sa prkazy, ktor nm umonia kresli rzne geometrick tvary, akmi s
kruhy, tvorce alebo seky a naume sa pracova s farbami.
Psma
Texty, ktor peme do grafickej plochy, meme psa farebne a rznymi psmami. Na5

LAZARUS

prklad, takto vypeme erven text:


procedure TForm1.Button1Click(Sender: Tobject);
begin
Image1.Canvas.Font.Color:=clRed;
Image1.Canvas.TextOut(50, 80, 'Programovanie');
end;
V programe sme pouili pre nastavenie farby psma nov prkaz priradenia. Tento prkaz
obsahuje symboly := (dvojbodka rovn sa). Na pravej strane od := je nzov ervenej farby clRed (cl = skratka zo slova color, Red = erven). Prkaz pre nastavenia farby meme ta nasledovne: obrzok 1, tvoja grafick plocha, tvoje psmo, jeho farba nastav
na erven. Zkladn farby s pomenovan: clBlack, clRed, clGreen, clBlue,
clWhite, clYellow, clAqua, clCream, clDark, clDkGray, clFuchsia,
clGray, clLime, clLtGray, clMaroon, clMedGray, clNavy, clOlive,
clPurple, clSilver, clSkyBlue.
almi prkazmi meme nastavi typ alebo vekos psma:
procedure TForm1.Button1Click(Sender: Tobject);
begin
Image1.Canvas.Font.Color:=clRed;
Image1.Canvas.Font.Name:='Times New Roman';
Image1.Canvas.Font.Height:=24;
Image1.Canvas.TextOut(30, 80, 'Programovanie');
end;
Vlastnosti psma, a neskr uvidme, e aj in vlastnosti, nastavujeme pomocou prkazu
priradenia takto:
meno vlastnosti := nov hodnota
Poradie prkazov
Poradie prkazov v programe bva vemi dleit. Sksme zmeni poradie prkazov:
Image1.Canvas.TextOut(200, 100, 'Programovanie'); Image1.Canvas.Font.Color:=clRed;
Akou farbou sa vype text po prvom a po druhom stlaen tlaidla? Po prvom sa vype
text iernou farbou, pretoe farbu textu nastavujeme a potom, ako sa vykonal prkaz
pre vpis textu. Nastavenie farby sa medzi stlaeniami tlaidla pamt. Preto sa a po
druhom stlaen vype text ervenou farbou.
Pouvame viac tlaidiel
Do formulra meme vloi alie tlaidlo. Vimnime si, e prv tlaidlo m npis Button1 a druh Button2. Dvojkliknite na druh tlaidlo. V texte programu pribudne
procedra Button2Click. Do nej budeme dopisova prkazy, ktor sa vykonaj, ak poas behu programu stlame druh tlaidlo. Podobnm spsobom meme pridva a
reagova na stlaenie alch tlaidiel.
Kreslenie obdnikov a tvorcov
Do grafickej plochy sa daj kresli rzne jednoduch geometrick tvary. Naprklad obdnik nakreslme takto:
procedure TForm1.Button2Click(Sender: TObject);
begin
Image1.Canvas.Rectangle(100, 100, 300, 200);
end;
6

LAZARUS

[100,100]

[300,200]
Prkaz m 4 parametre. S to sradnice dvoch bodov, medzi ktor sa nakresl obdnik.
Prv dve sla [100, 100] s sradnice prvho vrcholu, tretie a tvrt slo [300, 200] s
sradnice protiahlho vrcholu obdnika. Obdnik sa nakresl tak, e bude ma strany
rovnobene so stranami grafickej plochy.
tvorce tie kreslme pomocou prkazu na kreslenie obdnikov. tvorec je pecilny
prpad obdnika, ktorho strany maj zhodn dku. Naprklad tvorec, so stranou dky
100 nakreslme takto:
procedure TForm1.Button2Click(Sender: TObject);
begin
Image1.Canvas.Rectangle(50, 20, 50+100, 20+100);
end;
Parametre mu by aj vrazy, ktor sa najskr vyhodnotia.
Nakreslite:

Kreslenie elps a kruhov


Prkaz na kreslenie elipsy sa podob prkazu na kreslenia obdnika:
procedure TForm1.Button3Click(Sender: Tobject);
begin
Image1.Canvas.Ellipse(100, 100, 300, 200);
end;
Elipsa sa vpe do pomyselnho obdnika,
ktorho sradnice sme uviedli ako parametre
prkazu.

Kruh je op pecilny prpad elipsy. Ako nakreslme kruh so stredom v bode 50, 50 a
polomerom 10? Pre prkaz Ellipse musme vypota sradnice dvoch protiahlch vrcholov tvorca, do ktorho sa elipsa vlastne u kruh, vpe.
procedure TForm1.Button3Click(Sender: Tobject);
begin
Image1.Canvas.Ellipse(50-10, 50-10, 50+10, 50+10);
end;

LAZARUS

Nakreslite:

Kreslenie seiek
seku nakreslme pomocou dvojice prkazov:
procedure TForm1.Button4Click(Sender: Tobject);
begin
Image1.Canvas.MoveTo(100, 50);
Image1.Canvas.LineTo(200, 80);
end;
Prkaz Image1.Canvas.MoveTo presunie neviditen grafick pero do zadanho bodu.
Prkaz Image1.Canvas.LineTo nakresl s grafickm perom iaru.
Farba obrysu a vplne
Pri kreslen obdnikov a kruhov meme nastavi farbu vplne (vntra) a farbu obrysu
(obvodu). Kruh so ltou vplou a ervenm obrysom nakreslme takto:
procedure TForm1.Button5Click(Sender: Tobject);
begin
Image1.Canvas.Brush.Color:=clYellow;
Image1.Canvas.Pen.Color:=clRed;
Image1.Canvas.Ellipse(10, 10, 90, 90);
end;
Vysvetlenie:
Pen.Color znamen farba pera a uruje farbu iaru, obrys tvaru
Brush.Color znamen farba tetca, ktorou sa vymauje, vypln plocha
Farba pera m vplyv aj pri kreslen seiek.
Nakreslite:

Nhodn sla
Nae programy sa zatia sprvali vemi presne vdy nakreslili rovnak tvar, pretoe
sradnice geometrickho tvaru sa nezmenili. Pozrime sa ale na tento prklad:
procedure TForm1.Button6Click(Sender: Tobject);
begin
Image1.Canvas.LineTo(Random(400), Random(300));
end;
8

LAZARUS

Vidme, e po stlaen tlaidla sa kresl vdy in seka. Random znamen nhodn:


Random(400) zvol niektor slo spomedzi sel od 0 po 399.

Random(300) zvol niektor slo spomedzi sel od 0 po 299.

Obidve nhodne zvolen sla sa pouij ako sradnice bodu, do ktorho sa nakresl
seka (seka zana v bode (0,0)). Ak stlame tlaidlo druh krt, vygeneruj sa in
nhodn sla, take sa nakresl seka do inho koncovho bodu.
Parameter, ktor uvdzame pre vygenerovanie nhodnho sla udva rozsah nhodnch sel: Random(n) nhodne zvol slo spomedzi sel od 0 po n-1.
Ak sla me vypsa program?
procedure TForm1.Button7Click(Sender: Tobject);
begin
Image1.Canvas.TextOut(0, 0, IntToStr(1+Random(6)));
end;
Random(6) generuje sla od 0 po 5. Ak k vygenerovanmu slu pripotame 1,
hodnota vrazu bude v rozsahu od 1 po 6.
Ak sla sa vygeneruj?
1+random(10)
random(21)-10
Ako vygenerujete sla:
od 0 po 100
od 20 po 30
od -5 po +5?

Kapitola 3: Komponenty a ich vlastnosti


Ak do formulra vlome tlaidlo, pomocou myi nastavme jeho polohu alebo vekos.
Poloha aj vekos s vlastnosti tlaidla. Tlaidlo m aj in vlastnosti (properties). Naprklad, aj npis na tlaidle Button3 je vlastnos, ktor sa d zmeni. Meme to urobi
v okne Inpektor Objektov.
V okne Inpektor Objektov s teraz zobrazen
vlastnosti tlaidla Button1.
Kad vlastnos m svoje meno a hodnotu. Naprklad vlastnos:
Left a Top uruj pozciu tlaidla
vzhadom na okraje formulra
Left ... vzdialenos od avho okraja
(vodorovn, x-ov sradnica)
Top ... vzdialenos od hornho okraja
(zvisl, y-ov sradnica).
Width a Height uruj rku a vku
tlaidla
Caption je npis na tlaidle.
9

LAZARUS

Vlastnos s menom Caption m hodnotu Button1. Tto hodnotu meme v Inpektore


objektov prepsa, naprklad na Klikni na ma. Vimnime si aj, e pozcia tlaidla sa
d nastavi dvomi spsobmi: pomocou myi, ale aj pomocou Inpektora objektov. Ak
zmenme tlaidlu vlastnos Left na hodnotu 0, tlaidlo sa presunie k avmu okraju
formulra.
Vlastnosti komponentov sa daj meni aj poas behu programu, pomocou prkazu
priradenia:
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Caption:='Kuk';
end;
Alebo aj:
procedure TForm1.Button2Click(Sender: TObject);
begin
Button2.Left:=random(400);
Button2.Top:=random(300);
end;
K vlastnostiam komponentov pristupujeme pomocou . (bodky) takto:
komponent.vlastnos
Vlastnos meme nielen nastavova, ale aj zisova jej hodnotu:
procedure TForm1.Button3Click(Sender: TObject);
begin
Button3.Left:=Button3.Left+50;
end;
Na pravej strane od := sa teraz nachdza zloitej vraz, ktor hovor: k sasnej xovej pozcii tlaidla pripotaj 50. Vsledok bude slo o 50 vie, ako je sasn x-ov
pozcia tlaidla. Toto slo sa pouije pre nastavenie vlastnosti Left. Preto tlaidlo posko a vzdiali sa od avho okraja formulra o 50 bodov. Znamen to, e na pravej
strane prkazu priradenia me by aj pomerne komplikovan vraz. Pri vykonan prkazu
priradenia program postupuje nasledovne:
1. Najskr sa vyhodnot vraz na pravej strane od :=.
2. Potom sa vsledn hodnota prirad avej strane od :=.
Na zaiatku sme spomnali, e sla a texty s rzne typy dajov. Musme na to pamta
aj pri prci s vlastnosami:
seln hodnoty: Button1.Left:=100;

textov hodnoty: Button1.Caption:='Nov nadpis';

farby: Image1.Canvas.Font.Color:=clRed;

Rzne typy dajov meme chpa ako rzne mnoiny. Tie maj v jazyku Pascal svoje
pomenovanie:
cel slo je typu (je z mnoiny) Integer

desatinn slo: Real

textov reazec: string

farba: TColor

obrzok: TImage ... aj obrzky a tlaidl s pre pota daje!

tlaidlo: TButton
10

LAZARUS

Pomocou komponentu editovacie polko (Edit) zadvame vstupn daje programu:

Editovacie polko na palete komponentov


Editovacie polko funguje ako vemi jednoduch textov editor.
1. Vlome jedno editovacie polko do formulra.
2. Ak program spustime, meme do editovacieho polka psa krtke texty.
3. Zatvorme a ukonime beiaci program.
Vidme, e po spusten programu u je v polku napsan text. Ten meme zmeni:
1. Vo formulri ozname editovacie polko (klikneme na).
2. V inpektore objektov njdeme vlastnos Text
3. Zmenme text vo vlastnosti Text na Zadaj svoje meno.
Text, ktor napsal pouvate do editovacieho polka, zistme z vlastnosti Text. T
nadobda hodnotu typu string (textov reazec), ktor meme v programe jednoducho zisti a vypsa:
procedure TForm1.Button4Click(Sender: Tobject);
begin
Image1.Canvas.TextOut(10, 10, 'Dobr de');
Image1.Canvas.TextOut(70, 10, Edit1.Text);
end;

Kapitola 4: Premenn
Pri potan na kalkulake zvykneme pova pam kalkulaky M+ na to, aby sme do nej
odloili doasn vsledok. Neskr, ke chceme odloen hodnotu poui, vyvolme ju z
pamti pomocou tlaidla MR. Aj v programoch si budeme potrebova zapamta vsledky
vpotov, ktor neskr pouijeme. A budeme si tie musie pamta aj vea alch dajov, ktor v programe spracovvame. V programovacch jazykoch sa na tento el pouvaj premenn.
Premennou v programovan rozumieme miesto v pamti potaa:
do premennej, ie do pamovho miesta, meme daje zapsa,
posledn zapsan hodnota sa v premennej uchov, pamt sa,
zapamtan hodnotu meme neskr vyui, preta, zisti.
Vidme, e v programovan m pojem premenn in vznam, ako v matematike.
V matematike pouvame pojem premenn na oznaenie parametra alebo neznmej
hodnoty. Naprklad, dka seky je a, obsah tvorca S=a2 alebo hadme rieene rovnice
1 + x = 3. Avak premenn v matematickch vrazoch a v programoch maj spolon to,
e nm umouj popsa veobecnejie pravidl alebo platn vzahy.
V jazyku Pascal meme pouva vea premennch (ben kalkulaka m iba jedno pamov miesto M). Pred pouitm treba premenn najskr zadeklarova. Deklarcia premennej je zpis, v ktorom prezradme:

meno premennej = ako premenn pomenujeme, ako sa bude vola,


typ premennej = ak hodnoty, z akej mnoiny me premenn nadobda.
11

LAZARUS

Premenn deklarujeme pred slovom begin. Takto zadeklarujeme tri premenn:


procedure TForm1.Button1Click(Sender: Tobject);
var A, B, Sucet: Integer;
begin
end;
Deklarciou sme vyhradili v pamti potaa miesto pre tri celoseln premenn:
deklarcia zana slovom var (skratka zo slova variable = premenn)

premenn maj svoje men A, B, Sucet

kad z nich, teda aj premenn A si doke zapamta jedno ubovon cel slo
hovorme, e premenn A je typu cel slo.

Obsah premennch budeme znzorova pomocou pomenovanch katuliek:


A
B
Sucet
Premennej nastavme nov hodnotu pomocou prkazu priradenia:
procedure TForm1.Button1Click(Sender: Tobject);
var A, B, Sucet: Integer;
begin
A:=2;
B:=A+3;
Sucet:=A+B;
Image1.Canvas.TextOut(0, 0, IntToStr(Sucet));
end;
Premennm sme postupne priradili hodnoty:
A
B
Sucet
A:=2;
2
B:=A+3;

A
2

B
5

Sucet

Sucet:=A+B;

A
2

B
5

Sucet
7

Do grafickej plochy nakreslme tvorce so stranou, takej vekosti, ak zadal pouvate


do editovacieho polka:
procedure TForm1.Button2Click(Sender: Tobject);
var A: Integer;
begin
A:=StrToInt(Edit1.Text);
Image1.Canvas.Rectangle(0, 0, A, A);
end;
Do celoselnej premennej smieme priradi iba cel slo (t.j. hodnotu typu Integer).
Preto text z editovacieho polka zmenme na slo pomocou StrToInt.

12

LAZARUS

Na nhodnej pozcii v grafickej ploche nakreslme kruh s polomerom 10:


procedure TForm1.Button3Click(Sender: Tobject);
var X, Y: Integer;
begin
X:=random(Image1.Width);
Y:=random(Image1.Height);
Image1.Canvas.Brush.Color:=clRed;
Image1.Canvas.Ellipse(X-10, Y-10, X+10, Y+10);
end;
Nakreslite na nhodn miesto tvorec nhodnej vekosti:
Tip: Width (rka) a Height (vka) s vlastnosami obrzka,
ktor vieme nastavova aj v programe a vieme sa na ne
v programe aj odvolva.
Preto prkaz: X:=random(Image1.Width) vygeneruje
nhodn x-ov sradnicu v rozsahu od 0 po rku obrzka-1.

Premenn X a Y nazvame loklne premenn. V pamti potaa existuj iba poas vykonvania procedry Button3Click. Aj preto prkazy z tejto procedry nedoku pouva loklnu premenn A z procedry Button2Click. Loklne premenn s viditen
iba pre prkazy tej procedry, v ktorej s deklarovan.
Vypte na nhodn miesto tieovan npis:
Tip: ak chceme, aby sa texty psali bez bieleho pozadia, vypneme vpl:
Brush.Style:=bsClear
Tento prkaz pouijeme aj vtedy, ke chceme kresli tvary bez vplne.
Premenn meme deklarova aj mimo tela procedry. Nasledujci program pota kliknutia na tlaidlo:
var N: Integer=0;
procedure TForm1.Button4Click(Sender: Tobject);
begin
N:=N+1;
Button4.Caption:=IntToStr(N);
end;
Premenn N je globlna premenn. Vhodou globlnej premennej je, e existuje a pamt si nastaven hodnotu poas behu celho programu. Globlna premenn je viditen
aj pre prkazy v procedrach, ale iba od miesta svojej deklarcie. Navye, globlnej premennej meme pri deklarcii nastavi poiaton hodnotu.
13

LAZARUS

Pouvaniu globlnych premennch sa vak sname o mono najviac vyhba. Je to preto, lebo globlne premenn s do uritej miery nebezpen do globlnej premennej
me zasahova prli vea prkazov z rznych procedr, a tak mu jej obsah neprehadnm spsobom meni.

Kapitola 5: Prkaz cyklu


Jednu seku s nhodne umiestnenm koncom sme kreslili takto:
Image1.Canvas.LineTo(Random(400), Random(300));
Ak chceme nakresli viac, naprklad 3 seky, meme prkaz skoprova:
procedure TForm1.Button1Click(Sender: Tobject);
begin
Image1.Canvas.LineTo(Random(400), Random(300));
Image1.Canvas.LineTo(Random(400), Random(300));
Image1.Canvas.LineTo(Random(400), Random(300));
end;
Keby sme chceli kresli 100 seiek, museli by sme vea koprova. Pritom by sme sa nesmeli pomli v pote skoprovanch prkazov. U tume, e takto spsob vytvrania
programov nie je ani elegantn ani efektvny. Pritom potrebujeme dosiahnu, aby sa v
programe opakovane vykonal rovnak prkaz.
Keby sme chceli nakresli 3 seky, slovne by sme algoritmus zapsali nasledovne:
opakuj 3 krt prkaz:
Image1.Canvas.LineTo(Random(400), Random(300));
Nakreslite na nhodn miesta zadan poet tvorcov nhodnej farby:
Tip: Vlastnosti grafickho pera Color meme priraova
aj seln hodnoty. Na vygenerovanie nhodnej farby meme poui naprklad aj prkaz
Image1.Canvas.Pen.color:=random(256*256*256);
Cyklus for
V jazyku Pascal by sme predchdzajci algoritmus zapsali
takto:
procedure TForm1.Button2Click(Sender: Tobject);
var I: Integer;
begin
for I:=1 to 3 do
Image1.Canvas.LineTo(Random(400), Random(300));
end;
V programe najskr deklarujeme celoseln premenn I. T bude sli ako potadlo,
koko seiek sa nakreslilo. Potom v programe pouijeme kontrukciu cyklu, ktor zabezpe opakovan kreslenie seky.
14

LAZARUS

V kontrukcii cyklu for rozpoznvame dve asti hlaviku a telo cyklu:


for I:=1 to 3 do
Image1.Canvas.LineTo(Random(400), Random(300));

HLAVIKA
TELO

Prkaz tame: nastavuj premenn I postupne na hodnoty od 1 po 3 a vykonvaj kreslenie nhodnej seky.
Keby sme v hlavike cyklu zmenili slo 3 na 100, nakreslilo by sa 100 seiek.
Premenn I nazvame riadiacou premennou cyklu. Hodnota v premennej I sa postupne zvuje o 1. Meme to vidie aj na nasledujcom prklade, v ktorom postupne vypeme do grafickej plochy sla od 1 po 10.
procedure TForm1.Button3Click(Sender: Tobject);
var I: Integer;
begin
for I:=1 to 10 do
Image1.Canvas.TextOut(0, I*20, IntToStr(I));
end;
Kreslite na nhodn miesta sstredn krunice vyplnen
nhodnou
farbou.

Hlavika cyklu
V hlavike cyklu napeme meno riadiacej premennej, ktor sa bude postupne zvova
o hodnotu 1. Uvedieme hranice cyklu, teda poiaton hodnotu, ktor sa prirad do
riadiacej premennej a koncov hodnotu, po ktor sa bude obsah riadiacej premennej
zvova.
for premenn := poiaton to koncov do prkaz;
Ak by poiaton hodnota bola via ako koncov hodnota, prkaz z tela cyklu by sa ani
raz nevykonal.
Telo cyklu
Telo cyklu me obsahova aj viac prkazov:
procedure TForm1.Button4Click(Sender: Tobject);
var I: Integer;
begin
for I:=1 to 10 do
begin
Image1.Canvas.TextOut(0, I*20, IntToStr(I));
Image1.Canvas.TextOut(100, I*20, IntToStr(I*I));
end;
end;

15

LAZARUS

Slov begin a end funguj ako jeden zloen prkaz alebo programov ztvorky.
Oznauj skupinu prkazov,, ktor sa maj spolone opakova:
na zaiatku cyklu sa do premennej I prirad hodnota 1
vykon sa prkaz, ktor vype slo 1,
potom sa vykon prkaz, ktor vype druh mocninu sla 1,
obsah premennej I sa zv o 1, teda I=2
op sa vykon prkaz pre vpis I, teda sa vype slo 2
alej sa vykon prkaz, ktor vype druh mocninu sla, teda 4
obsah premennej I sa zvi o 1, teda I=3, at.
Nakreslite pyramdu z rznofarebnch obdnikov:

Cyklus v cykle
Ako zobrazme mal nsobilku teda tabuku s slami:

Tabuka m 10 riadkov a 10 stpcov. Ak je v premennej I slo riadku a v premennej J


slo stpca, vsledn hodnotu, ktor vypisujeme, zskame sinom I*J.
procedure TForm1.Button5Click(Sender: Tobject);
var I, J: Integer;
begin
for I:=1 to 10 do
for J:=1 to 10 do
Image1.Canvas.TextOut(J*30, I*20, IntToStr(I*J));
end;
Telo cyklu me v sebe obsahova aj in prkaz cyklu tzv. vnoren cyklus.
Dokete nakresli achovnicu?

16

LAZARUS

Kapitola 6: Podmienen prkaz


V ivote asto vyhodnocujeme rzne situcie a rozhodujeme sa, ak innos alej
vykonme. Naprklad: ak je vonku teplo, vezmeme si triko, inak si vezmeme sveter.
Podobn spsob rozhodovania budeme pouva aj v naich programoch.
Sksme napsa program, ktor nm poda zadanej teploty t porad, ako sa obliec.
Potrebovali by sme, aby program pracoval nasledovne:
ak t>22 potom zobraz text 'oble si triko'
inak
zobraz text 'oble si sveter'
Podmienen prkaz if then else
Predchdzajci slovn zpis vieme priamo prepsa do jazyka Pascal:
procedure TForm1.Button1Click(Sender: TObject);
var t: Integer;
begin
t:=StrToInt(Edit1.Text);
if t>22 then Image1.Canvas.TextOut(0, 0, 'Oble si triko')
else
Image1.Canvas.TextOut(0, 0, 'Oble si sveter');
end;
Pozor, pred vyhradenm slovom else nepeme ; (bodkoiarku).

Ak program vyskame pre rzne vstupn hodnoty a uvidme, e:


Text Oble si triko sa vype pre sla 23, 24, ... alebo aj 1 000 000.
Naopak, text Oble si sveter sa vype pre sla 22, 21, ... alebo -100.
Programov kontrukciu if ... then ... else ... nazvame podmienen prkaz:
if podmienka then prkaz1 else prkaz2;
V prkaze if then else vidme dve vetvy dve alternatvne monosti, ktor sa
vykonaj v zvislosti na tom, i je podmienka splnen alebo nie:
ak je podmienka splnen, vykon sa vetva za slovom then prkaz1,
ak podmienka nie je splnen, vykon sa vetva za slovom else prkaz2.
17

LAZARUS

Ak potrebujeme v niektorej vetve vykona viac prkazov, pouijeme programov


ztvorky begin a end. Naprklad, v nasledujcom programe kreslme nhodne bu
erven tvorec alebo modr kruh:
procedure TForm1.Button2Click(Sender: TObject);
var X, Y: Integer;
begin
X:=Random(Image1.Width);
Y:=Random(Image1.Height);
if Random(2)=0 then
begin
Image1.Canvas.Brush.Color:=clRed;
Image1.Canvas.Rectangle(X-10, Y-10, X+10, Y+10);
end
else
begin
Image1.Canvas.Brush.Color:=clBlue;
Image1.Canvas.Ellipse(X-10, Y-10, X+10, Y+10);
end;
end;
Kreslite nhodne bu tvorce alebo obdniky:

Kombincia podmienench prkazov a cyklov


Nakreslme 10 striedavo iernych a bielych tvorcov:
procedure TForm1.Button3Click(Sender: TObject);
var I: Integer;
begin
for I:=0 to 9 do
begin
if I mod 2=0 then
Image1.Canvas.Brush.Color:=clBlack
else
Image1.Canvas.Brush.Color:=clWhite;
Image1.Canvas.Rectangle(I*20, 0, I*20+20, 20);
end;
end;
Pre prne I nastavujeme iernu farbu vplne a pre
neprne I nastavujeme bielu farbu. Nsledne
kreslme tvorec na sradnice, ktor odvodme od
hodnoty premennej I.

18

LAZARUS

Logick vrazy a logick hodnoty


Podmienka, ktor peme v prkaze if, je v skutonosti logick vraz. Ten me
nadobudn hodnotu bu true (pravda) alebo false (nepravda). Splnen podmienka
m hodnotu true a nesplnen podmienka m hodnotu false.
Hodnoty true a false s typu Boolean. Boolean je mnoina, ktor obsahuje iba
tieto dva prvky. Premenn typu Boolean si doke zapamta vsledn hodnotu
logickho vrazu.
Je jednoduchie nakresli achovnicu, ke poznme prkaz IF?

Zloen podmienky
Doposia sme pouvali jednoduch podmienky, ktor boli
zaloen na porovnvan hodnt. Pomocou logickch opertorov, ktor poznme aj z
matematiky, meme podmienky sklada a vytvra zloen podmienky.
V jazyku Pascal pouvame opertory not, and, or:
vysvetlenie:

zpis:

prklad:

vsledok:

negcia V

not V

not (1=2)

= true

logick X a Y

X and Y

(1=2) and (2<3)

= false

logick X alebo Y

X or Y

(1=2) or (2<3)

= true

Na obrazovku vypeme vetky neprne sla do 100, ktor s deliten 7. Pre tak slo
N plat predpis, e (N mod 2<>0) and (N mod 7=0)
procedure TForm1.Button4Click(Sender: TObject);
var N, Y: Integer;
begin
Y:=0;
for N:=1 to 100 do
if (N mod 2<>0) and (N mod 7=0) then
begin
Image1.Canvas.TextOut(0, Y, IntToStr(N));
Y:=Y+20;
end;
end;
V cykle postupne skame sla N od 1 po 100. Vypeme tie, ktor maj nenulov
zvyok po delen 2, ale nulov po delen 7. Ostatn sla ns nezaujmaj, preto v
programe pouvame prkaz if bez vetvy else. V premennej Y si pamtme y-ov
sradnicu, kam vypeme vsledky.
Kreslite krky na nhodnch pozcich v kruhovej oblasti :

19

LAZARUS

Kapitola 7: Cyklus s podmienkou


Prkaz cyklu for pouvame vtedy, ke dopredu poznme alebo vieme vypota
hranice cyklu, poet opakovan. Niekedy ich vak nevieme jednoducho vypota alebo
ani nevieme poveda, dokedy treba prkazy opakovane
vykonva. Naprklad, chceme psa zvujci sa text.
Chcem vak napsa iba toko npisov, koko sa zmest do
grafickej plochy:
Budeme potrebova dve premenn: v premennej H si pamtme vku psma a v
premennej Y sradnicu, kam vypeme al text. Algoritmus by sme mohli napsa
takto:
H:=4;
Y:=0;
km sa text zmest do grafickej plochy vykonvaj prkazy
Image1.Canvas.Font.Height:=H;
Image1.Canvas.TextOut(0, Y, 'Ahoj');
Y:=Y+H;
H:=H+4;
Ako zistme, e sa text zmest do grafickej plochy? Naprklad, poda toho, e je splnen
podmienka Y+H<=Image1.Height.
Potom predchdzajci algoritmus zapeme v jazyku Pascal takto:
procedure TForm1.Button1Click(Sender: TObject);
var H, Y: Integer;
begin
Image1.Canvas.Font.Name:='Arial';
H:=4;
Y:=0;
while Y+H<=Image1.Height do
begin
Image1.Canvas.Font.Height:=H;
Image1.Canvas.TextOut(0, Y, 'Ahoj');
Y:=Y+H;
H:=H+4;
end;
end;
V programe sme pouili nov programov kontrukciu cyklus while:
while podmienka do prkaz;
Cyklus while opakuje prkaz, km plat podmienka. Telo cyklu, teda prkaz, me
by jedin prkaz alebo skupina prkazov uzavretch medzi begin a end.
Nesprvne pouitie cyklu while spsob, e cyklus nikdy neskon. Stane sa tak
naprklad vtedy, ke napeme za slovom do ; (bodkoiarku):
while Y+H<=Image1.Height do ; begin
V takom prpade by telo cyklu neobsahovalo iaden prkaz, lebo bodkoiarkou sme
ukonili przdny prkaz. Preto by sa nemenila ani hodnota v premennej Y. Podmienka
Y+H<=Image1.Height by zostala navdy splnen, take cyklus by sa vykonval
donekonena. Vznikol by nekonen cyklus a n program by zamrzol.
20

LAZARUS

o sme sa nauili
Nauili sme sa zklady programovania v jazyku Pascal s tm, e sme vyuvali vvojov
prostredie Lazarus. Nauili sme sa prkazy pre kreslenie geometrickch tvarov,
vypisovanie textu alebo nastavovanie vlastnost pomocou prkazu priradenia.
Rozliovali sme rzne typy dajov: cel sla, desatinn sla, texty, logick hodnoty.
Premenn sme pouvali na to, aby si program pamtal daje, vsledky rznych
vpotov alebo poet opakovan. Okrem postupnosti prkazov sme sa nauili pouva
aj zkladn programov kontrukcie, ktormi riadime vykonvanie programu. Pomocou
cyklov for a while sme zabezpeili, aby sa v programe niekokokrt opakovane
vykonal prkaz alebo skupina prkazov. Podmienen prkaz if sme pouili pri vbere
alternatvy, ktor z prkazov sa alej vykon. Pritom sme sa snaili predvies spsob
uvaovania, teda, ako rozmame nad rieenm problmov, a ako sa k vslednmu
rieeniu dopracujeme (asto aj po malch krokoch).

Zveren projekt:
Naprogramujte projekt, v ktorom budete pomocou tlaidla a editovacieho polka
kresli obrzok lesa. Po stlaen tlaidla sa z editovacieho polka nata hodnota N a
na nhodnch pozcich sa vykresl N stromov. Korunu stromu vykresujte ako zelen
elipsu a kme ako hned obdnik. Vekosti strn vetkch obdnikov generujte
nhodne z intervalu od 30 do 70.

21

LAZARUS

You might also like