Niekoľko jednoduchých programátorských úloh

V počiatkoch programovania, kedysi, v časoch predchodcov operačného systému DOS, neexistovali okná a rôzne grafické ovládacie prvky. Teda to, čo sa dnes označuje ako GUI (Graphical User Interface - grafické užívateľské rozhranie) neexistovalo. Základným komunikačným prostriedkom na komunikáciu s programom bola konzola. Jednoduché programy s vstupom a výstupom na konzolu patria k tomu najjednoduchšiemu, čo svet programovania pozná. Dnes vďaka prostriedkom RAD a najmä editoru formulárov je možné vytvoriť veľmi jednoducho užívateľsky a vizuálne prívetivý program, ktorý efektívnejšie rieši problém interakcie programu s užívateľom než to robila konzola. 

Napriek tomu existuje celá trieda programátorských úloh, kde konzola dodnes nestratila svoj význam. Príkladom využitia je príkazový riadok Windowsu (command prompt), Windows Power Shell, či rôzne shelly Linuxu (bash, dash, ksh, tcsh) alebo akékoľvek interpretované jazyky.  

Aj toto je jeden z dôvodov, prečo si tu dovolím uviesť niekoľko jednoduchých cvičebných príkladov pre programovanie s výstupom pre konzolu. Prosím, keďže ide o veľmi jednoduché príklady (hlavne prvé dva), mohli napadnúť aj niekoho iného. Ak to zistíte, dajte mi vedieť.

Príklad 1:

Vstupom je číslo N. Program vypíše na obrazovku štvorec pozostávajúci z hviezdičiek (symbol *) rozmerov N x N. 

Obmena môže spočívať v tom, že k číslu pribudnú dva ďalšie vstupy. Jeden bude predstavovať znak nahrádzajúci medzeru (napríklad písmeno malé o) a druhý znak nahrádzajúci hviezdičku (napríklad znak plus +)

---

Príklad 2:

Vstupom je číslo N a reťazec pozostávajúci z dvoch znakov a znak nahrádzajúci hviezdičku a znak nahrádzajúci medzeru. Jeden z množiny {u, d} a druhý z množiny  {l,c,r}. Výstupom bude trojuholník rozmeru N, ktorý môže byť obrátený základňou hore (písmeno u), alebo dole (písmeno d). Tiež môže byť zarovnaný vľavo (písmeno l), pravo (písmeno r), alebo na stred (písmeno c). Aby to fungovalo správne, je potrebné, aby za každým znakom hviezdička nasledovala medzera. Pre skomplikovanie úlohy je dôležité, aby sa znaky zadávali ako reťazec, nie samostatne.

Ukážky pre sady vstupov [ 4, 'dl', '*', ' ' ], [4, 'uc', '*', ' ' ], [4, 'dr', '*', ' ' ]

*

* *

* * *

* * * *

---

* * * *

 * * *

  * *

   *

---

      *

    * *

  * * *

* * * *

---

Príklad 2a:

Ako obmena Príkladu 2 jednoduchšie základné tvary ako kosoštvorec N x N s vrcholmi na najvrchnejšom a najspodnejšom riadku a pokusom o reguláciu uhla skosenia medzerami - teda ďalší parameter do programu. Kto si trúfne môže skúsiť aj kosodĺžnik či lichobežník.

------------------------

Príklad 3:

Program svoj vstup bude načítavať zo súboru vstup.txt. Spracovávať sa bude riadok po riadku. Jeden riadok tvorí reťazec tvorený postupnosťou čísel nasledovaných znakom, prípadne viacerými znakmi. Keď program narazí na číslo N, vie, že nasledujúci sériu znakov, až po najbližšie ďalšie číslo má zopakovať N krát. Keď príde na koniec riadku, prejde pri vypisovaní na ďalší riadok.

---

Príklad 4:

Program vypíše šachovnicu rozmerov N x M, pričom tmavé aj svetlé pole má rozmer K x K. Teda vstupom sú čísla N, M, a K.

---

Príklad 5:

Program z príkladu 4 bude postupovať tak, že najskôr vytvorí súbor vstup.txt, ktorý predá programu z príkladu 3 a až ten vykreslí šachovnicu požadovaných parametrov.

---

Príklad 6:

Toto je príklad na prácu s poliami. Program načíta svoj vstup zo súboru vstup.txt .

Prvý riadok súboru predstavuje rozmery dvojrozmerného poľa znakov, ktoré sa bude vypisovať na obrazovku. Teda čísla M a N.

Tentoraz ale jeden riadok bude predstavovať inštrukciu na zapísanie dvojrozmernej informácie do poľa znakov. Prvé číslo v riadku predstavuje x-ovú súradnicu v poli, druhé číslo nasledované medzerou predstavuje y-ovú súradnicu. Po nich nasleduje medzera a reťazec čísel a znakov, Len tentoraz narozdiel od príkladu 3 platí, že prvé číslo zapisuje znaky do poľa na pozíciu (x,y), druhé číslo už na pozíciu (x, y+1) a tak ďalej. 

Sú možné dve implementácie algoritmu programu. Jedna využíva spomínané dvojrozmerné pole znakov, druhá jednorozmerné pole premenných typu reťazec. 

Keď program príde na koniec súboru vstup.txt, vypíše pole znakov na obrazovku.

Pozor !!! Treba správne spravovať problém pretečenia. Pri pretečení sa objekt orezáva tak, aby sa vtesnal do požadovaného rozmeru daného prvým riadkom súboru vstup.txt .  

Toto sú jednoduché úlohy a ako som spomínal, mohli napadnúť (a pravdepodobne aj napadli) aj niekoho iného. Práve dnes som pri prehliadaní obchodu Google play natrafil na aplikaciu C++ pattern program free. Táto aplikácia obsahuje 619 rôznych geometrických vzorov textovej grafiky. Takže pokiaľ niekomu nestačia mnou uvedené základné tvary, nájde ďalšie v tejto aplikácii aj so zdrojovym kódom v jazyku C++. Myšlienka čítania kódu zo súboru, ktorý generuje ten ktorý textový obrazec v tej aplikácii zatiaľ nebola implementovaná.

Komentáre

Obľúbené príspevky