nika.blog.matfyz.sk

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

07 – zadávanie vstupu

Doteraz sme programovali pomerne nudné programy. Kreslilo, či vypisovalo to iba to, čo bolo zadané priamo v kóde, ak ste niekomu chceli ukázať, ako rôzne sa správa váš program pri rôznych vstupných údajoch (napr. veľkosť štvorca, vypisovaný text a pod.), museli ste to meniť v zdrojovom kóde.

 

Teraz sa naučíme, ako meniť vstupné údaje bez toho, aby sme museli program vypínať a nanovo zapínať.

 

Začneme používať nový komponent – Edit. Nájdete ho základnej ponuke komponentov. Je to orámované políčko, do ktorého sa dá písať počas behu programu.

 

A ako to funguje?

 

  • umiestnime Edit niekde do formulára
  • po zatlačení tlačidla (napr. Button1) má náš program možnosť zistiť text zapísaný v Edite a ďalej ho spracovať, napr. tak, že z neho spraví číslo (prekonvertuje) a priradí do nejakej premennej
  • vďaka tomuto môžeme pred každým zatlačením tlačidla zadať nejaký nový text a program bude zakaždým pracovať s nejakou inou hodnotou

K tomu, čo je vpísané do Editu, sa vieme dostať cez takúto premennú: Edit1.text. Za týmto sa „schováva“ to, čo je aktuálne vpísané do políčka vo vašom bežiacom programe. Pochopiteľne, Edity sa môžu volať rôzne (môžeme im meniť mená v inšpektore objektov), preto časť názvu tejto premennej, ktorá je pred bodkou, meníme podľa názvu konkrétneho Editu.

Skúsme si na začiatok veľmi jednoduchú úlohu (bez nejakého hlbšieho významu):

 

1. Naprogramujte program, ktorý po kliknutí na tlačidlo vypíše do Image-u text, ktorý vpíšete do Editu.

 

Veľmi často (skutočne veľmi často) nám Edit poslúži ako priestor na zadávanie čísel (veľkosť štvorca, ktorého obsah, obvod chceme vyrátať, počet kružníc, ktoré sa majú vykresliť, a pod.). Do Editu teda budeme zadávať číslo, s ktorým aj chceme pracovať ako s číslom (nebudem s ním pracovať ako s textom – napríklad vypisovať ho, ale budeme ho používať napr. v matematických výpočtoch). Ale niečo takéto:

var cislo: integer;

begin

 cislo := edit1.text;

end;

 

nebude fungovať. Prečo? Za premennou edit1.text sa vždy schováva text. Pascal proste neráta s tým, že vy tam chcete mať číslo, on je pripravený tak, že tam vždy vidí text. Ale existuje spôsob, ako z textu urobiť číslo…

 

Spomínate si, ako sa robí z čísla text? Keď sme napr. hodnotu nejakej integerovskej premennej chceli vypisovať do Image-u: čo sme museli pridať do kódu? Konverziu IntToStr(premenná)!

 

Máte už teraz nápad, ako z textu spravíme číslo? … Stále nič?

 

Odpoveď je jednoduchá: použijeme konverziu StrToInt(text). Pozor ale! Text, ktorý chcete takto zmeniť na číslo, musí byť správne napísaný, môže obsahovať iba číslice a žiadne iné znaky (ani medzery na začiatku, či na konci).

 

Tak napríklad takáto úloha:

 

2. Napíšte program, ktorý po kliknutí na tlačidlo nakreslí štvorec, vypočíta a vypíše jeho obsah a obvod, pričom dĺžku strany štvorca budeme zadávať do Editu.

 

3. Napíšte program, ktorý bude kresliť sústredné kružnice so stredom v bode [100;100] a s rôznym polomerom zadaným do Editu.

 

Hint: isto zistíte, že kružnice sa kreslia aj s bielou výplňou, čo je na nič, keď chceme vidieť všetky kružnice, ktoré sme nakreslili. Vtip je v tom, že vykresľovanie výplne treba vypnúť, docielite to týmto príkazom:

Image1.Canvas.Brush.Style := bsClear;

Ak budete potom potrebovať kresliť kružnice s výplňou, musíte si to naspäť zapnúť, a to pomocou tohto príkazu:

Image1.Canvas.Brush.Style := bsSolid;

 

4. Napíšte program, ktorý z dvoch vstupných riadkov načíta dĺžky strán obdĺžnika a vykreslí ho.

 

5. Napíšte program, ktorý z jedného vstupného riadku prečíta nejaký text, z druhého číslo, ktoré vyjadruje posunutie tieňa. Potom vypíše tento text aj s bledošedým tieňom, ktorý je posunutý aj v x-ovom aj v y-ovom smere o zadané číslo.

 

Nepovinná omáca úloha, deadline pre:

  • 3A1: 15.11.2015 o 22,00

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

  • 3B2: 30.11.2015 o 22,00

Napíšte program, ktorý z jedného vstupného riadku načíta dĺžku strany štvorca. Potom vykreslí tri štvorce s touto dĺžkou strany vedľa seba tak, aby mali spoločnú vždy jednu stranu (pozri obrázok):

edit

 

 

BONUSová úloha za 2 okamžité body, deadline rovnaký ako vyššie

Napíšte program, ktorý z dvoch vstupných riadkov načíta hranice intervalu, z ktorého potom vygeneruje a vypíše náhodné číslo. Teda ak zadáme dolnú hranicu intervalu napr. 50 a hornú 100, program vygeneruje a vypíše napríklad číslo 74.

 

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *