V sobotu 14. novembra poobede nám v rámci ĎVUI začal nový predmet – Programovanie 2. Môj dnešný príspevok priblíži v skratke jeho priebeh.
Hneď na úvod sme opäť dostali študijné materiály – prehľadné, zrozumiteľné, názorné, farebné. Vysoko oceňujem ich kvalitu, výborne sa mi z nich učí. Výber najdôležitejších poznatkov zosumarizovaný na 20-tich stranách textu nepreťažuje, ale naopak pomáha ľahko si osvojiť najpodstatnejšie fakty a súvislosti.
Docentka Andrejková urobila v sobotu malý prieskum - zisťovala, či je medzi nami niekto, kto ešte neprogramoval, kto z nás má skúsenosti s programovaním v Delphi, v akých programovacích jazykoch sme doposiaľ programovali a pod. Keďže sme všetci učitelia informatiky, každý z nás má skúsenosti s programovaním. Starší z nás, ktorí učíme na SOŠ, však začíname oprašovať svoje skúsenosti spred niekoľkých (v niektorých prípadoch aj 20-tich) rokov. Každý z nás má skúsenosti s iným programovacím jazykom a vývojovým prostredím – Fortran, Turbo Pascal, C++, Comenius Logo, atď. Myslím si, že nikto z nás nemá problém s algoritmami. Problémy podľa môjho názoru vznikajú s ich rôznymi zápismi v rôznych programovacích jazykoch, teda s ich syntaxou.
V prvej časti sobotňajšieho 4-hodinového bloku sme sa zoznamovali s vývojovým prostredím
Lazarus, učili sme sa pracovať s komponentami, spúšťať programy a vytvárať prvé aplikácie s tlačidlami, ktoré spúšťajú príkazy s grafickou plochou, ktorá zobrazuje výstup programu. Chvíľu mi trvalo, kým som sa vo vývojovom prostredí zorientovala. Od prostredí niektorých iných, napr. kancelárskych aplikačných programov sa líši tým, že má až 4 časti:
- hlavná ponuka,
- inšpektor objektov,
- editor kódu, čiže okno s programom,
- formulár.
V prvej časti sa mi podarilo úspešne zvládnuť svoj prvý projekt – vytvorila som svoju prvú aplikáciu s piatimi procedúrami.
V druhej časti sme sa učili používať generátor náhodných čísel, meniť vlastnosti komponentov, spoznávať lokálne a globálne premenné, typy hodnôt, získavať vstupné údaje od používateľa pomocou editovacieho políčka a napokon používať podmienené príkazy, cykly s pevným počtom opakovaní a cykly s podmienkou. Celkom vhod by mi bola prišla kartička s príkazmi. Vo svojej sivej kôre mozgovej som potrebovala nahradiť príkazy písané „staropaskalovčinou“ za „novopaskalovčinu“, napr. namiesto Writeln používať TextOut.
V tejto druhej časti som si pripadala ako bežec Košického maratónu mieru, ktorý musí zvládnuť prebehnúť dlhú trať za čo najkratšiu dobu. Výber úloh bol výborne zostavený, ale vymedzený čas na ladenie vytváraných programov sa mi zdal krátky. Sledovať výklad, robiť si poznámky, tvoriť oknovú aplikáciu a hlavne hľadať chybu, ak sa pomýlim (urobím preklep v príkaze, vynechám zátvorku, bodkočiarku, či voľajaký parameter príkazu) a začne vyskakovať chybové hlásenie, pretože správne je canvas a nie canvast a pod., bolo pomerne náročné. Povedané športovou terminológiou, musím intenzívne trénovať, aby sa moje časy potrebné na prekonávanie „bežeckých“ tratí postupne skracovali...
Pri zoznamovaní sa s novými prostrediami potrebujem dostatok času na utriedenie, zosumarizovanie a zafixovanie nových informácií. Keď ho mám k dispozícii, potom už ide všetko hravo. Našťastie na odovzdanie vypracovaného záverečného zadania máme k dispozícii 2 týždne, takže to (metódou „step by step“) v pohode zvládnem.
Záverečné zadanie znie:Naprogramujte projekt, v ktorom budete pomocou tlačidla a editovacieho políčka kresliť obrázok lesa. Po stlačení tlačidla sa z editovacieho políčka načíta hodnota N a na náhodných pozíciách sa vykreslí N stromov. Korunu stromu vykresľujte ako zelenú elipsu a kmeň ako hnedý obdĺžnik. Veľkosti strán všetkých obdĺžnikov generujte náhodne z intervalu od 30 do 70.
Rozdelenie úlohy na dielčie úlohy:Úlohu som rozdelila na 3 menšie úlohy...
- Nakresliť hnedý kmeň stromu. Tvorba editovacieho políčka, používanie podmieneného príkazu, kreslenie obdĺžnika ľubovoľnej veľkosti, vypĺňanie obdĺžnika zvolenou farbou.
- Nakresliť celý strom - kmeň s korunou stromu podľa zadania. Generovanie náhodného čísla z určitého intervalu, kreslenie elipsy.
- Nakresliť N stromov na náhodných pozíciách, všetko skompletizovať. Používanie príkazu cyklu.
Začínam úlohou č. 1:- Načítaj dĺžky strán a, b obdĺžnika.
- Výške kmeňa stromu priraď väčšiu z dvoch dĺžok, šírke kmeňa stromu priraď menšiu z dvoch dĺžok.
- Nakresli obdĺžnik, vyplň ho hnedou farbou.
Prelúskať sa tuctom stránok študijného materiálu mi nerobí žiaden problém, takže obdĺžnik je čoskoro hotový. Treba ho ešte vyplniť hnedou farbou. Skúšam použiť príkaz Image1.Canvas.Brush.Color:=ClBrown; nesprávne - objavilo sa mi chybové hlásenie. Ako sa zadáva hnedá farba? Skúsim opäť „zaloviť“ v študijnom materiáli. Strana 7, mená farieb: clBlack, clRed, clGreen, clBlue, clWhite, clYellow, clAqua, clCream, clDark, clDkGray, clFuchsia, clGray, clLime, clLtGray, clMaroon, clMedGray, clNavy, clOlive, clPurple, clSilver, clSkyBlue. Nepoznám clMaroon a clNavy, tak si ich nechávam preložiť v anglicko-slovenskom lexikóne. Navy je námornícka modrá,
maroon je
gaštanovohnedá.
Procedúra na kreslenie kmeňa stromu je hotová:
// hlavička procedúryprocedure TForm1.Button1Click(Sender: TObject); var a, b: integer;// telo procedúrybegin a:=StrToInt(Edit1.Text); b:=StrToInt(Edit2.Text); Image1.Canvas.Pen.Color:=ClBlack; Image1.Canvas.Brush.Color:=ClMaroon; // podmienený príkaz if a>b then Image1.Canvas.Rectangle(0,0,b,a) else Image1.Canvas.Rectangle(0,0,a,b);end;Na dnes hádam stačí, pokračovanie nabudúce...
Úplne na záver ešte malá rekapitulácia použitých príkazov, zosumarizovanie nových poznatkov:
Var – deklarácia premennýchInteger – celé čísloBegin – začiatok
:= – priradenie hodnotyStrToInt – zmena textového reťazca na celé čísloPen.Color – farba pera (farba, ktorou sa vykreslí obrys geometrického útvaru)Brush.Color – farba štetca (farba, ktorou sa vyplní plocha)Rectangle (x1, y1, x2, y2) – obdĺžnik so súradnicami dvoch bodov, medzi ktoré sa obdĺžnik nakreslí; (x1, y1) sú súradnice prvého vrcholu obdĺžnika, (x2, y2) sú súradnice protiľahlého vrcholu obdĺžnikaIf podmienka then príkaz1 else príkaz2 – ak je podmienka splnená, tak sa vykoná príkaz1, ak podmienka nie je splnená, tak sa vykoná príkaz2Button1Click je názov procedúry, ktorá sa vykoná vtedy, keď v spustenom programe stlačíme komponent tlačidlo.Aplikácie sa vytvárajú z komponentov, čiže stavebných prvkov,
koré slúžia na:
- interakciu používateľa s programom
- zadávanie vstupných hodnôt
- zobrazovanie výstupných hodnôt
- riadenie behu aplikácie
Komponenty sa nachádzajú na palete komponentov a umiestňujú sa do formulára.
Medzi najpoužívanejšie komponenty patrí:- editovacie políčko (Edit)
- obrázok (Image)
- ponukový list, zoznam (ListBox)
- výberové políčko (RadioButton)
- tlačidlo (Button)
- textová plocha (Memo)
- zaškrtávacie políčko (CheckBox)