Učení se novému programovacímu jazyku může být zábavné. Kdykoli se snažím naučit nějaký nový, zaměřuji se na definici proměnných, zápis příkazu a vyhodnocování výrazů. Jakmile tyto pojmy obecně pochopím, na zbytek už většinou přijdu sám. Většina programovacích jazyků má určité podobnosti, takže jakmile se naučíte jeden programovací jazyk, učení dalšího je otázkou zjištění jedinečných detailů a rozpoznání rozdílů v něm.

Abych si nový programovací jazyk procvičil, rád napíšu několik testovacích programů. Jedním z ukázkových programů, které často píšu, je jednoduchý program „uhodni číslo“, kde počítač vybere číslo mezi 1 a 100 a požádá mě, abych číslo uhodl. Program se opakuje ve smyčce, dokud neuhodnu správně.

Program „uhodni číslo“ procvičuje několik pojmů z programovacích jazyků: jak přiřazovat hodnoty proměnným, jak psát příkazy a jak provádět podmíněné vyhodnocování a smyčky. Je to skvělý praktický experiment pro výuku nového programovacího jazyka.

Uhádni číslo v jazyce Bash

Bash je standardní shell pro většinu systémů Linux. Kromě toho, že poskytuje bohaté uživatelské rozhraní příkazového řádku, podporuje Bash také kompletní programovací jazyk v podobě skriptů.

Pokud Bash neznáte, doporučuji tyto úvody:

  • Co je Bash?
  • Začínáme s programováním v jazyce Bash
  • Začínáme se skriptováním v jazyce Bash pro sysadminy
  • Jak psát funkce v jazyce Bash
  • Přečtěte si více o jazyce Bash

Můžete prozkoumat jazyk Bash napsáním verze hry „uhodni číslo“. Zde je moje implementace:

Rozdělení skriptu

První řádek skriptu #!/bin/bash říká Linuxu, aby tento skript spustil pomocí shellu Bash. Každý skript začíná dvojicí znaků #!, která označuje, že se jedná o skript shellu. To, co následuje bezprostředně za #!, je shell, který se má spustit. V tomto případě je /bin/bash shell Bash.

Chcete-li proměnné přiřadit hodnotu, vypište její název následovaný znakem =. Například příkaz guess=0 přiřadí proměnné guess nulovou hodnotu.

Pomocí příkazu read můžete také vyzvat uživatele k zadání hodnoty. Pokud napíšete read guess, Bash počká, až uživatel zadá nějaký text, a pak tuto hodnotu uloží do proměnné guess.

Chcete-li se odkázat na hodnotu proměnné, použijte před názvem proměnné příkaz $. Po uložení hodnoty do proměnné guess ji tedy můžete načíst pomocí $guess.

Pro proměnné můžete používat libovolné názvy, ale Bash si pro sebe vyhrazuje několik speciálních názvů proměnných. Jednou ze speciálních proměnných je RANDOM, která při každém odkazu na ni generuje velmi velké náhodné číslo.

Pokud chcete současně s uložením hodnoty provést nějakou operaci, musíte příkaz uzavřít do speciálních závorek. Tím Bashi řeknete, aby nejprve provedl daný příkaz, a = výslednou hodnotu uloží do proměnné. Chcete-li vyhodnotit matematický výraz, použijte kolem příkazu $(( )). Dvojité závorky označují aritmetický výraz. V mém příkladu number=$(( $RANDOM % 100 + 1 )) vyhodnotí výraz $RANDOM % 100 + 1 a poté uloží hodnotu do proměnné number.

Použijí se standardní aritmetické operátory, jako jsou + (plus), - (minus), * (násobení), / (dělení) a % (modulo).

To znamená, že příkaz number=$(( $RANDOM % 100 + 1 )) vygeneruje náhodné číslo v rozsahu od jedné do sta. Operátor modulo (%) vrací zbytek po dělení dvou čísel. V tomto případě Bash vydělí náhodné číslo číslem 100 a ponechá zbytek v rozsahu nula až 99. Přičtením jedničky k této hodnotě získáte náhodné číslo mezi 1 a 100.

Bash podporuje podmíněné výrazy a řízení toku jako smyčky. Ve hře „uhodni číslo“ pokračuje Bash ve smyčce tak dlouho, dokud se hodnota v guess nerovná number. Pokud je odhad menší než náhodné číslo, Bash vypíše „Příliš nízké“, a pokud je odhad větší než číslo, Bash vypíše „Příliš vysoké“.

Jak to funguje

Teď, když jste napsali skript Bash, můžete ho spustit a zahrát si hru „Hádej číslo“. Pokračujte v hádání, dokud nenajdete správné číslo:

Guess a number between 1 and 100
50
Too high
30
Too high
20
Too high
10
Too low
15
Too high
13
Too low
14
That's right!

Při každém spuštění skriptu Bash vybere jiné náhodné číslo.

Tato hra „hádej číslo“ je skvělým úvodním programem při výuce nového programovacího jazyka, protože procvičuje několik běžných programovacích pojmů poměrně jednoduchým způsobem. Implementací této jednoduché hry v různých programovacích jazycích můžete demonstrovat některé základní pojmy a porovnat detaily v jednotlivých jazycích.

Máte nějaký oblíbený programovací jazyk? Jak byste v něm napsali hru „Uhádni číslo“? Sledujte tuto sérii článků a podívejte se na příklady dalších programovacích jazyků, které by vás mohly zajímat.