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
editovatPro 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
.
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)))
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
editovatNejdů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
editovatPodstatná 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
editovatPodstatná jména:
- čísla jako třeba
0
nebo3.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 číslamin
najdi nejmenší číslomax
najdi největší čísloabs
absolutní hodnota čísla
Slovesa pro text:
string-length
počet znaků textusubstring
část textu od dostring-append
spojení textůnumber->string
číslo na textstring->number
text na číslo
Slovesa pro pravdivostní hodnoty:
and
konjunkceor
disjunkcenot
negace
Podstatná jména: primitivní datové typy | Neprogramátor/Pojmenování informací: definice proměnných ► |