nika.blog.matfyz.sk

Veronika Dropčová
veronika.dropcova(at)gmail.com

09 – cyklus s pevným počtom opakovaní

Už sme robili niekoľko programov, ktoré vykresľovali celkom zaujímavé veci: napr. sme napísali program, ktorý po zatlačení na tlačidlo nakreslil farebný kruh a keď sme toto tlačidlo zatlačili viackrát, nakreslil viac kruhov (a to už bolo celkom efektné). Alebo sme napísali program, ktorý po kliknutí na tlačidlo kreslil rôznofarebnú úsečku zhora nadol a keď sme tlačidlo zatlačili viackrát, vykreslilo sa tých úsečiek veľa (a tak sa nám postupne podarilo zaplniť celú plochu úsečkami).

 

Toto všetko je fajn, až na tú robotu… V záujme získať fakt zaujímavý obrázok sme aj v jednom, aj v druhom prípade museli na tlačidlo kliknúť veľakrát a myšky v škole a naše ukazováky tak celkom trpeli… Zišlo by sa nám teda mať niečo, čo to za nás viackrát zopakuje bez toho, aby sme museli viackrát klikať na tlačidlo.

 

To „niečo“ sa volá cyklus, odborne sa tomu hovorí aj programová konštrukcia. Je to príkaz, ktorého súčasťou sú nejaké iné príkazy. Tento príkaz hovorí, koľkokrát sa budú tie príkazy, ktoré sú jeho súčaťou, opakovať.

 

Poďme na príklad. Toto je program, ktorý kreslí náhodnú lomenú čiaru:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Canvas.LineTo(Random(400), Random(250));
end;

K nemu teraz pridáme cyklus, ktorý naraz nakreslí 50 náhodných lomených čiar:

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 1 to 50 do
    Image1.Canvas.LineTo(Random(400), Random(250));
end;

Vysvetlime si to:

  • prvá vec, ktorá nám pribudla, je premenná I. Voláme je riadiaca premenná (lebo riadi cyklus) alebo aj počítadlo (lebo vlastne počíta, koľkýkrát sa cyklus opakuje);
  • pribudol príkaz pre cyklus, ktorý si môžeme vysvetliť takto:
    • for premenná := dolná_hranica to horná_hranica do
      príkaz;
    • premenná je počítadlo cyklu
    • dolná a horná hranica cyklu sú dve celočíselné hodnoty, ktoré definujú interval hodnôt, pre ktorý sa bude postupne vykonávať zadaný príkaz
    • čiže úplne na začiatku bude do počítadla priradená dolná hranica cyklu, vykoná sa príkaz v cykle, potom sa hodnota v počítadle navýši o 1, zas sa vykoná príkaz v cykle, a tak ďalej až kým do počítadla nebude priradená hodnota, ktorá sa rovná hornej hranici a to bude poslednýkrát, kedy sa vykoná príkaz v cykle

 

1. úloha

Napíšte program, ktorý 30x vypíše nejaký text na náhodné pozície.

 

2. úloha

Napíšte program, ktorý pomocou hviezdičiek (znak *) nakreslí náhodnú nočnú oblohu. 🙂

 

3. úloha

Pomocou cyklu vieme napr. aj 30x zatlačiť iné tlačidlo. Napíšte program, ktorý bude mať dve tlačidlá:

  • to prvé bude kresliť jeden štvorec so stranou dĺžky 30 na náhodnej pozícii
  • a to druhé 30x „stlačí“ to prvé tlačidlo (príkaz na stlačenie vyzerá takto:
    Button1.Click;

 

4. úloha

Napíšte program, ktorý najprv nakreslí modrú krivku z 10 náhodných úsečiek a potom červenú z 10 náhodných úsečiek (pre oba cykly môžete použiť jednu a tú istú premennú).

 

5. úloha

Keď do grafickej plochy zapíšeme medzeru, pričom nastavíme pozadie (Brush.Color) napr. na modrú, tak sa vykreslí malý farebný obdĺžnik. Využite túto vlastnosť a nakreslite 100 malých modrých obdĺžnikov, 100 malých červených obdĺžnikov a 100 malých žltých obdĺžnikov.

 

Nepovinná domáca úloha, deadline pre:

– 3A1: 6.12.2015 o 22,00

– 3A2, 3B1: 20.12.2015 o 22,00

– 3B1: 21.12.2015 o 22,00

Napíšte program, ktorý najprv nakreslí modrú krivku z 10 náhodných úsečiek a potom červenú z 10 náhodných úsečiek (pre oba cykly môžete použiť jednu a tú istú premennú).