Neprogramátor/Podstatná jména: primitivní datové typy

Začít jednoduchým příkladem je složité, protože jednoduché příklady nejsou žádné čáry. Sečíst první číslo s druhým je snadné, na to člověk nemusí být čaroděj. Jenže když se učíme nový jazyk, začínáme s jednoduchými slovy a jednoduchými větami. Kouzelný jazyk není výjimkou.

(+ 0 3.14)

(+ 0 3.14) je věta kouzelného jazyka, která sečte 0 a 3.14. Podstatná jména této kouzelné věty se nemusí překládat, čísla jsou v cizích jazycích (většinou) stejná.

Sloveso se přeložit musí, ale (zase naštěstí) je sloveso z kouzelné věty, +, hodně podobné symbolu, který používáme v matematice. Zatím to vypadá, že naučit se kouzelný jazyk bude hračka.

Slovesa pro čísla

editovat

Pro podstatná jména kouzelného jazyka, která uchovávají nějakou číselnou informaci, se ještě hodí následující slovesa kouzelného jazyka: -, *, /, nebo min, max, a abs.

 
Kolik papíru je potřeba na obalení krabice?

Neprogramátora občas trápí, kolik papíru je potřeba na obalení krabice, která je 20 centimetrů dlouhá, 10 centimetrů široká a 2 centimetry vysoká. Třeba když jsou Vánoce. Vezme si pak tužku a papír a informaci vypočítá: Shora a zdola je to dvakrát 20 krát 10 centimetrů. Zboku je to 20 krát 2 a 10 krát 2 centimetry a zase 20 krát 2 a 10 krát 2 centimetry. Dohromady je tedy potřeba 520 centimetrů čtverečních papíru!

Čaroděj v kouzelném jazyce popíše kouzelné hůlce, co jej trápí:

  • Shora a zdola je to dvakrát (* 20 10), tedy (* 2 (* 20 10)).
  • Zboku je to (* 20 2) a (* 10 2), tedy (+ (* 20 2) (* 10 2)).
  • Pak ještě jednou to samé (+ (* 20 2) (* 10 2)).
  • A všechno tohle dohromady.

Čarodějova mocná věta tedy zní:

(+ (* 2 (* 20 10)) (+ (* 20 2) (* 10 2)) (+ (* 20 2) (* 10 2)))
 
Kolik stuhy je potřeba na zavázání krabice?

Když je neprogramátor hotový s balením, zase vezme tužku a papír a spočítá, kolik bude třeba centimetrů stuhy: Od středu krabice je to polovina 20 centimetrů (polovina délky), pak 2 centimetry, pak celých 20 centimetrů, znova 2 a nakonec zas půlka 20 centimetrů. K tomu přidá ještě (opět od středu krabice) polovinu 10 centimetrů (polovina šířky), pak 2 a 10 a 2 a zase polovinu 10 centimetrů. Dohromady 68 centimetrů stuhy!

Co by popsal čaroděj kouzelné hůlce?

(+ (+ (/ 20 2) 2 20 2 (/ 20 2)) (+ (/ 10 2) 2 10 2 (/ 10 2)))

Jestli je neprogramátor matematik, vypočítá těch 520 centimetrů čtverečních jinak. Krabice se skládá ze tří párů obdélníků. Elegantní řešení je tedy sečíst dvojnásobky obsahů těchto obdélníků.

Jestli je čaroděj matematik, svěří kouzelné hůlce kouzelnou větu:

(+ (* 2 20 10) (* 2 20 2) (* 2 10 2))

Stejně tak neprogramátor matematik vypočítá jinak i délku stuhy. Jak? A co na to čaroděj matematik?

Stuha je dlouhá dvě délky, dvě šířky a čtyři výšky krabice.

(+ (* 2 20) (* 2 10) (* 4 2))

Slovesa pro text

editovat

Nejdůležitější slovesa kouzelného jazyka pro práci s textem jsou: string-length, substring, string-append, number->string a string->number.

 

Teď je čas zjistit, jak dlouhé je slovo Neprogramátor. To čaroděj zjistí celkem jednoduše:

(string-length "Neprogramátor")

A také celkem jednoduše nechá kouzelnou hůlku odpovědět celou větou:

(string-append "Délka slova " "Neprogramátor" " je "
               (number->string (string-length "Neprogramátor")))

Pro každý typ podstatného jména se hodí trochu jiná slovesa. Také se očekává, že slovesa kouzelného jazyka se budou používat se správným typem podstatných jmen. Byla by proto chyba použít pro sloveso string-append podstatné jméno získané z vyhodnocení (string-length "Neprogramátor"). Protože string-append se hodí na text, jenže výsledek vykonání (string-length "Neprogramátor") je číslo.

To ale neznamená, že sloveso kouzelného jazyka očekává pořád stejný typ podstatných jmen!

(substring "Neprogramátor" 2 (string-length "Neprogramátor"))

Pravdivostní hodnoty

editovat

Podstatná jména #t a #f jsou pravdivostní hodnoty. Pravda a nepravda. K těm se hodí slovesa and, or a not. Větami kouzelného jazyka složených z takových podstatných jmen a sloves se zabývá Logika.

Kouzelné větě začínající slovesem and se říká konjunkce. Taková věta je pravdivá (vyhodnocení kouzelnou hůlkou má výsledek #t) pouze tehdy, pokud jsou všechna podstatná jména ve větě také #t. Jestliže je alespoň jedno podstatné jméno ve větě #f, výsledek takové věty je #f.

Věty kouzelného jazyka popisující pravdivostní hodnoty konjunkce jsou:

(and #f #f)
(and #f #t)
(and #t #f)
(and #t #t)

Kouzelné větě začínající slovesem or se říká disjunkce. Taková věta je nepravda (vyhodnocení kouzelnou hůlkou má výsledek #f) pouze tehdy, pokud jsou všechna podstatná jména ve větě také #f. Jestliže je alespoň jedno podstatné jméno ve větě #t, výsledek takové věty je #t.

Věty kouzelného jazyka popisující pravdivostní hodnoty disjunkce jsou:

(or #f #f)
(or #f #t)
(or #t #f)
(or #t #t)

Kouzelné větě začínající slovesem not se říká negace. Výsledek negace pro podstatné jméno #t je #f. Výsledek negace pro podstatné jméno #f je #t.

Věty kouzelného jazyka popisující pravdivostní hodnoty negace jsou:

(not #f)
(not #t)

Slovníček kouzelného jazyka

editovat

Podstatná jména:

  • čísla jako třeba 0 nebo 3.14
  • text jako třeba "Neprogramátor"
  • pravdivostní hodnoty #t a #f

Slovesa pro čísla:

  • + sečti čísla
  • - odečti čísla
  • * vynásob čísla
  • / vyděl čísla
  • min najdi nejmenší číslo
  • max najdi největší číslo
  • abs absolutní hodnota čísla

Slovesa pro text:

  • string-length počet znaků textu
  • substring část textu od do
  • string-append spojení textů
  • number->string číslo na text
  • string->number text na číslo

Slovesa pro pravdivostní hodnoty:

  • and konjunkce
  • or disjunkce
  • not negace
Podstatná jména: primitivní datové typy Neprogramátor/Pojmenování informací: definice proměnných ►