nika.blog.matfyz.sk

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

11 – Využitie počítadla v tele cyklu

Na tejto hodine sa zameriame na riadiacu premennú. Doteraz sme s ňou robili akurát to, že sme ju deklarovali a potom raz použili v definovaní for cyklu. Skúsme si rovno takúto úlohu:

Program nakreslí 10 náhodných čiar, pričom prvá bude mať hrúbku čiary 1, druhá bude mať hrúbku čiary 2, tretia 3, atď.:

var I: Integer;
begin
  for I := 1 to 10 do begin
    Image1.Canvas.Pen.Width := I;
    Image1.Canvas.LineTo(Random(350), Random(250));
  end;
end;

Vo vnútri cyklu teda môžeme hodnotu riadiacej premennej (počítadla) používať – môžeme ju priradiť, môže byť v nejakom výraze, ale nesmieme do tejto premennej v tele cyklu nič priraďovať.

 

Ďalší program vypíše čísla 1 až 10 na náhodné pozície:

var I: Integer;
begin
  Image1.Canvas.Font.Height := 30;
  for I := 1 to 10 do
    Image1.Canvas.TextOut(Random(350), Random(250), IntToStr(I));
end;

Predchádzajúci program vylepšíme tak, aby nevypisoval čísla na náhodné pozície, ale do jedného riadku:

var I: Integer;
begin
  Image1.Canvas.Font.Height := 30;
  for I := 1 to 10 do
    Image1.Canvas.TextOut(I*20, 20, IntToStr(I));
end;

Teda počítač bude vypisovať čísla na takýchto súradniciach:

Image1.Canvas.TextOut(20, 20, ‚1‘);
Image1.Canvas.TextOut(40, 20, ‚2‘);
Image1.Canvas.TextOut(60, 20, ‚3‘);
Image1.Canvas.TextOut(80, 20, ‚4‘);
Image1.Canvas.TextOut(100, 20, ‚5‘);
Image1.Canvas.TextOut(120, 20, ‚6‘);
Image1.Canvas.TextOut(140, 20, ‚7‘);
Image1.Canvas.TextOut(160, 20, ‚8‘);
Image1.Canvas.TextOut(180, 20, ‚9‘);
Image1.Canvas.TextOut(200, 20, ’10‘);

 

Úlohy

1. Napíšte program, ktorý nakreslí terč zložený z 8 sústredných kružníc, pričom najväčšia bude vykreslená na súradniciach (10,10,200,200) a každá ďalšia bude mať polomer o 10 menší.

 

2. Napíšte program, ktorý nakreslí vedľa seba 256 úsečiek, ktorých farby budú v odtieňoch modrej (od čiernej po modrú).

modra

Skúste potom poexperimentovať s farbami a nastaviť im takéto parametre:

Image1.Canvas.Pen.Color := RGB(255-I, 0, I);
Image1.Canvas.Pen.Color := RGB(0, 255-I, I);
Image1.Canvas.Pen.Color := RGB(160, 255-I, I);
Image1.Canvas.Pen.Color := RGB(255-I, 255-I, I);

3. Vypíšte postupne pod seba čísla od 11 do 30.

 

4. Vypíšte postupne pod seba čísla od 11 do 30 a ku každému pripíšte jeho druhú mocninu.

 

5. Napíšte program, ktorý kreslí úsečky, v ktorých sa prvý bod pohybuje po zvislej priamke (sú to body (0,0), (0,10), (0,20), (0,30), …) a druhý bod po vodorovnej priamke na spodnom okraji plochy (napr. body (0,300), (10,300), (20,300), …).

 

6. Napíšte program, ktorý najprv náhodne vygeneruje bod X,Y, a potom ho postupne bude spájať s bodmi na spodnej hrane plochy, napr. (0,300), (10,300), (20,300),…

 

7. Napíšte program, ktorý vyšrafuje celý image vodorovnými úsečkami, medzi ktorými je vzdialenosť 10 bodov.

 

8. Napíšte program, ktorý vypíše postupne sa zväčšujúci text pre veľkosti od 8 do 30 a zároveň sa bude meniť aj Y-ová súradnica výpisu (najskôr je 0, potom 10, potom 20, …). Odporúčam vypnúť vypĺňanie plochy pod textom pomocou image1.canvas.brush.style:=bsClear;.

 

Nepovinná úloha, deadline pre:

  • 3A1: 20.12.2015 o 22,00

  • 3B2: 11.1.2016 o 22,00

  • 3B1, 3A2: 19.1.2016 o 22,00

Vypíšte postupne pod seba čísla od 11 do 30.

 

Ďalšia nepovinná úloha, deadline pre:

  • 3A1: 10.1.2016 o 22,00

  • 3B2: 18.1.2016 o 22,00

  • 3B1, 3A2: 19.1.2016 o 22,00

Napíšte program, ktorý vyšrafuje celý image vodorovnými úsečkami, medzi ktorými je vzdialenosť 10 bodov.

Bonusová úloha za extra 3 body!, deadline rovnaký ako pre nepovinnú úlohu

Napíšte program, ktorý kreslí úsečky, v ktorých sa prvý bod pohybuje po zvislej priamke (sú to body (0,0), (0,10), (0,20), (0,30), …) a druhý bod po vodorovnej priamke na spodnom okraji plochy (napr. body (0,300), (10,300), (20,300), …).