Neprogramátor/Kouzelné lektvary: spustitelné soubory a testy

Kouzelný lektvar vytvoří pro čaroděje kouzelná hůlka z dopisu, který pro kouzelnou hůlku čaroděj napsal. Dokumentace kouzelného jazyka Racket popisuje, jak vytvořit spustitelné soubory, tedy kouzelné lektvary, které stačí spustit, tedy vypít, aby se vykonaly čarodějem sepsané kouzelné věty. Spustitelné soubory lze samozřejmě vytvořit i ve vývojovém prostředí DrRacket.

Čarodějové se při psaní dopisů mohou splést. Vlastně se pletou dost často, a to i když se snaží sebevíce. Otázkou tedy není, jestli kouzelný dopis obsahuje chyby, protože odpověď je "ano". Ta správná, důležitá otázka zní jak snadno se chyby objeví a hlavně jak rychle se dají opravit. S hledáním a opravováním chyb pomáhá testování. Dokumentace kouzelného jazyka Racket popisuje, jak lze testy začlenit do kouzelného dopisu.

Je větší 20 nebo číslo? editovat

Problém, pro jehož řešení napsaném v kouzelném jazyce vytvoří kouzelná hůlka kouzelný lektvar, tedy spustitelný soubor, může být:

Podstatné jméno (číslo) 20 je pojmenované jako dvacet a nové kouzelné sloveso větší-než pracuje s jedním podstatným jménem (parametrem) číslo: jestli je číslo větší než dvacet, kouzelné sloveso větší-než vrátí nové podstatné jméno (text) "Větší je číslo.", kde číslo v textu je nahrazené konkrétní aktuální hodnotou; jinak vrátí "Větší je 20.".

Řešením takového problému zapsaném kouzelným jazykem v dopisu pro kouzelnou hůlku může být třeba:

; Je větší 20 nebo číslo?
(define dvacet 20)
(define (větší-než číslo)
  (if (> číslo dvacet)
    (string-append "Větší je " (number->string číslo) ".")
    (string-append "Větší je " (number->string dvacet) ".")))
(větší-než 11)
(větší-než 27)

Výsledek vykonání dopisu je potom:

"Větší je 20."
"Větší je 27."

Z minulé kapitoly lze proto s výhodou použít postup řešení:

$ git log
commit c25ad0493e6d4d51d789da51055014def4ae7bb1 (HEAD -> master)
Author: Jméno Čaroděje <email@carodeje.xyz>
Date:   Sun Jan 21 00:19:39 2024 +0100

    Přidej řešení "Je větší 20 nebo číslo?"

commit 8af19a8bafa550e7f8f49770e3d230a114b26d6c
Author: Jméno Čaroděje <email@carodeje.xyz>
Date:   Sat Jan 20 23:47:27 2024 +0100

    Přidej licenci a readme

Je tedy potřeba:

git add LICENSE README
git commit -m"Přidej licenci a readme"
git add vetsi-nez.rkt
git commit -m"Přidej řešení 'Je větší 20 nebo číslo?'"

A dohoda je, že v názvech souborů a adresářů se diakritika nepoužívá.

Vytvoření spustitelného souboru editovat

Spustitelný soubor se v DrRacket vytvoří kliknutím na Racket v menu a potom na Create Executable..., čímž se otevře dialogové okno, kde stačí ponechat výchozí nastavení a kliknout na Create.

V repozitáři vetsi-nez se kromě souborů LICENSE, README a vetsi-nez.rkt objeví i soubor vetsi-nez. Ten lze potom spustit z příkazové řádky:

$ ./vetsi-nez
"Větší je 20."
"Větší je 27."

Testy v kouzelném dopisu editovat

Repozitář s testy editovat

Repozitář s testy lze prozkoumat pomocí git:

$ git clone https://codeberg.org/Neprogramator/tested-greater-than.git
◄ Neprogramátor/Čarodějnické řemeslo: zdrojové kódy a repozitář Kouzelné lektvary: spustitelné soubory a testy