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

   nika.blog.matfyz.sk

06 – znakový typ CHAR

Kúsok teórie:

 

Znakový typ char popisuje množinu 256 znakov (napr. ‘a’, ‘Z’, ‘ ‘(medzera), ‘(‘, ‘;’ (bodkočiarka),…). Tie sú usporiadané v ASCII tabuľke, pričom každý z nich má priradené číslo (od 0 do 255) => môžeme ich porovnávať. Zároveň je typ char ordinálnym typom (vieme určiť predchodcu a nasledovníka premennej typu char). Teda naň môžeme používať funkcie inc(znak) a dec(znak).

Nemá zmysel pamätať si celú ASCII tabuľku, niekoľko znakov sa však oplatí vedieť:

  • kód znaku ‘A’ je 65
  • kód znaku ‘a’ je 97
  • kód znaku ‘0’ je 48
  • kód znaku medzera ‘ ‘ je 32

 

Niektoré funkcie na prácu s typom char:

  • funkcia Ord(znak) vráti vnútorný kód znaku (ASCII kód), t.j. celé číslo z intervalu <0, 255>
  • funkcia Char(číslo) je opačná k Ord: ak je celé číslo z intervalu <0, 255>, tak vráti prislúchajúci znak (pre túto funkciu sa môžete stretnúť aj s názvom Chr)

Napr:

Ord(‘a’) = 97
Char(65) = ‘A’
Char(Ord(‘1’)+1) = ‘2’
Ord(‘ ‘) = 32

 

Ďalej:

  • znakovú konštantu môžeme zapísať aj pomocou #číslo – kde číslo je nejaký ASCII kód, napr. #65 označuje znak ‘A’, #32 je medzera;
  • funkcia UpCase z malého písmena abecedy spraví zodpovedajúce veľké (ostatné znaky sa pritom nemenia), napr.
    UpCase(‘e’) = ‘E’
    UpCase(‘M’) = ‘M’
    UpCase(‘%’) = ‘%’
    UpCase(#97) = ‘A’

 

Úlohy:

 

1. Vypíšte do grafickej plochy vedľa seba anglickú abecedu (veľké písmená).

 

2. Vypíšte do grafickej plochy takúto pyramídu malých písmen:

pyramida

 

3. Zamyslite sa, koľkokrát prejde telo týchto cyklov (pre I:Integer; B:Boolean; Z:Char):

  • for I := 1 to 100 do …
  • for I := -10 to 10 do …
  • for I := 20 to 20 do …
  • for Z := ‘A’ to ‘Z’ do …

 

4. Napíšte program, ktorý ukáže ASCII kódy niekoľkých znakov (napr. od ‘ ‘ (medzery) po ‘H’) vypísané takto pekne, ako na obrázku:

asciikody

 

Hint č. 1: použite trojicu príkazov:

Image1.Canvas.Font.Name := ‘Courier New’; // nastavenie fontu
Image1.Canvas.Font.Height := 23; //nastavenie veľkosti fontu
Image1.Canvas.Font.Style := [fsBold]; //nastavenie štýlu (môže byť aj [fsItalic, fsUnderline] alebo [] – zrušíme všetky štýly)

 

Hint č. 2 (syntaktické pravidlo): výpis apostrofu zabezpečíme takto: ‘ 4x apostrof – dva krajné (červené) hovoria, že ideme vypisovať znak, z dvoch vnútorných sa v skutočnosti vypíše iba jeden

 

5. Napíšte program, v ktorom bude na tlačidle Button1 jednoznakový text ‘A’. Po každom zatlačení tlačidla sa na tlačidle objaví nasledujúci znak abecedy. Po stlačení tlačidla so znakom ‘Z’ program skončí (príkaz Close).

 

6. Napíšte program, ktorý po zatlačení tlačidla vypíše na náhodnú pozíciu náhodné písmeno veľkej abecedy.

 

7. Napíšte program, ktorý vykreslí takúto pyramídu malých písmen:

faktpyramida

 

8. Doplňte predchádzajúcu úlohu tak, aby namiesto pyramídy vykreslil deltoid:

deltoid

 

Domáca úloha, deadline 2.4.2017 o 23:59

9. Napíšte program, ktorý vykreslí pravouhlý trojuholník zložený z písmen veľkej abecedy, ale tak, aby jeho pravý uhol bol v pravom hornom rohu (pre porovnanie: v úlohe č. 2 bol pravý uhol v ľavom dolnom rohu). Okrem toho zabezpečte, aby boli dodržané tieto pravidlá (kúsok si zopakujeme slovenčinu):

  • samohlásky sa vypíšu červenou farbou
  • všetky spoluhlásky, ktorých ASCII kód je deliteľný sedmičkou (teda napr. F) budú zelenou farbou.

BONUS za 4 body, deadline 2.4.2017 o 23:59

Napíšte program, ktorý prevedie zadané číslo (zo vstupného riadka) do 16-ovej sústavy. Využite znakový typ, pomocou ktorého viete jednoducho napr. cifru 10 previesť na znak ‘A’.

 

 

 

One Response so far.

  1. Edko Hromkovic píše:

    Deadline bz som dal aspon do 17teho

Pridaj komentár

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