Blokové programování IV (proměnné)
| Typický ročník | 8. |
| Interval vhodných ročníků | 7. – 1. SŠ |
| Učivo | proměnné (princip a použití), výrazy s proměnnými, proměnné v cyklech a podmínkách, pojmenování a typy proměnných |
| Předcházející modul | Blokové programování III (cykly a podmínky) |
| Navazující modul | Blokové programování V (funkce) |
| Bezprostřední výsledky učení |
|
| Související RVP výsledky učení |
|
Modul rozšiřuje základy blokového programování o klíčový koncept proměnných – jejich zavádění, použití, pojmenování i datové typy. Žáci se učí vytvářet programy, které uchovávají a mění hodnoty během běhu programu, a využívat proměnné v podmínkách i cyklech. Důraz je kladen také na čitelnost kódu a ladění chyb. Modul obsahuje úlohy se strukturovaným zadáním a lze jej vhodně doplnit otevřenějšími projekty nebo programováním fyzických robotů. Jako nezbytná prerekvizita pro tento modul je Blokové programování II (podmínky, ladění). Vhodné je i předchozí zařazení modulu Blokové programování III (cykly a podmínky), to ale není nezbytně nutné.
Hodnoty a proměnné lze kombinovat do výrazů pomocí operátorů. Například podmínka x + 5 ≥ y obsahuje operátory + a ≥. Většina programovacích jazyků výrazy rovnou vyhodnocuje. Po provedení příkazu x ← 1 + 1 bude v proměnné x číslo 2, nikoliv nevyhodnocený výraz nebo dokonce text 1 + 1.
Aritmetické výrazy
S číselnými hodnotami a proměnnými můžeme počítat pomocí aritmetických operátorů + (sčítání), − (odčítání), * (násobení) a / (dělení). Priorita operací je stejná jako v matematice (tj. násobení a dělení má přednost před sčítáním a odčítáním) a stejně jako v matematice můžeme ovlivnit pořadí vyhodnocení pomocí závorek (např. 1 + 2 * 3 = 7, zatímco (1 + 2) * 3 = 9).
Porovnávání
Číselné hodnoty a proměnné můžeme porovnávat pomocí relačních operátorů < (menší než), ≤ (menší rovno), > (větší než), ≥ (větší rovno), = (rovno), ≠ (nerovno). Výsledkem porovnávání je logická hodnota (pravda/nepravda), kterou můžeme vypsat, ale většinou ji využíváme v rámci podmínek. Relační operátory mají typicky nižší prioritu než aritmetické, tj. napřed se vyhodnotí výrazy na levé a pravé straně relačního operátoru a teprve poté se provede porovnání (např. 1 + 3 < 2 + 4 se nejprve částečně vyhodnotí na 4 < 6, což je pravda).
Relační operátory v programovacích jazycích
Různé programovací jazyky využívají odlišné zápisy některých operátorů, často proto, aby se daly snadno napsat na klávesnici. Běžné je například x >= 3 místo x ≥ 3 a x != 3 místo x ≠ 3. Pro rovnost se typicky využívají dvě rovnítka (x == 3), protože jedním rovnítkem (x = 3) se často zapisuje přiřazovací příkaz.
Během opakování příkazů se nám někdy hodí vědět, v kolikátém opakování (iteraci) právě jsme. K tomu lze využít následující konstrukci, v programovacích jazycích označovanou jako for cyklus:

Proměnnou, která se během cyklu automaticky mění (v tomto případě označenou k) nazýváme řídící proměnná cyklu. Řídící proměnné lze využít v libovolných výrazech uvnitř cyklu. For cykly lze do sebe vnořovat. Všimněte si pořadí, ve kterém se řídící proměnné mění:

Proměnné lze využít také v rámci podmínek cyklu opakuj dokud:

V tomto případě si musíme dávat obzvlášť pozor na zacyklení – situaci, kdy podmínka cyklu nikdy nepřestane platit a cyklus se tedy bude opakovat donekonečna. To se může stát například tehdy, když zapomeneme v těle cyklu měnit hodnotu proměnné, která figuruje v podmínce, když příkaz měnící proměnnou chybně odsadíme (takže nebude součástí cyklu), nebo když nevhodně formulujeme podmínku tak, že nepřestane platit navzdory změně proměnné:
Jména proměnných neovlivňují chování počítače při vykonávání programu, jsou však důležitá pro čitelnost kódu. Pokud pojmenujeme proměnnou celková_cena, neznamená to, že v ní bude automaticky uložený součet cen položek (to musíme zajistit vhodnými příkazy), je ale jasnější, co má proměnná reprezentovat, než když ji pojmenujeme c.
Velikost písmen hraje roli
Většina programovacích jazyků rozlišuje velká a malá písmena ve jménech, např. Cena a cena jsou dvě různé proměnné.
Povolená jména
Proměnné nelze pojmenovat libovolně. Konkrétní omezení se mezi programovacími jazyky mírně liší. Typická omezení jsou následující:
- Jména mohou obsahovat pouze písmena, číslice a podtržítka. Kdyby se proměnná jmenovala a+b, nešlo by ji odlišit od operace sčítání. Číslicí ale nesmí jméno začínat. Kdyby se proměnná jmenovala 12, nešlo by ji odlišit od hodnoty 12.
- Jména nemohou obsahovat mezery. Kdyby se proměnná jmenovala cena mrkve, nešlo by snadno poznat, zda nejde o dvě proměnné (cena a mrkve). Pokud chceme více slov, můžeme použít například podtržítko (cena_mrkve).
- Jako jméno nelze použít tzv. „rezervovaná slova“, které už mají v programovacím jazyce určený význam (např. opakuj, nebo, pravda).
Povolená jména v blokových jazycích
Každá proměnná má svůj datový typ. Datový typ určuje, jaké hodnoty může proměnná obsahovat a které operace s ní lze provádět. Některé programovací jazyky požadují, aby byl typ proměnné uveden v programu, jiné odvozují typ automaticky podle přiřazené hodnoty. Programovací jazyky se liší také v tom, které datové typy nabízejí. Mezi nejběžnější datové typy patří:
- celé číslo (123, −7) – s čísly lze provádět aritmetické operace (1 + 2) a porovnávat je (1 < 2)
- desetinné číslo (1,23, –0,05) – typicky se používá tzv. „pohyblivá řádová čárka“, což umožňuje ukládat i velmi velká nebo malá čísla, ale s omezenou přesností (např. s 5 platnými číslicemi lze uložit 123 450 000 i 0,000 012 345, nikoliv však 123,456)
- logická (pravdivostní) hodnota (pravda, nepravda) – reprezentuje informaci o pravdivosti, lze s nimi provádět logické operace (neplatí x, x nebo y, x a y). (Tento typ se často označuje jako „bool“ nebo „boolean“ podle George Boola, který popsal pravidla pro výpočty s logickými hodnotami.)
- textový řetězec (“slovo”, “více slov”) – reprezentuje text libovolné délky. Pro odlišení od názvů proměnných se typicky vymezují pomocí “uvozovek” či ‘apostrofů’. Je potřeba rozlišovat mezi řetězcem obsahujícím číslo a číslem – “123” není 123. (Tento typ se často označuje jako „string“, z anglického slova pro řetězec.)
- seznam (pole) ([1, 2, 3], [‘x’, ‘y’, ‘z’]) – umožňuje uložit více souvisejících hodnot do jedné proměnné. (Často jsou k dispozici i další typy pro ukládání různých kolekcí dat.)
Existují další typy pro specifické účely (např. čas, datum, soubor). Většinou je také možné definovat si vlastní typy. Výčtový typ umožňuje definovat proměnné, které mohou nabývat pouze několika předem určených hodnot (např. světový směr, den v týdnu). Záznamy umožňují definovat složené proměnné, které se skládají z několika pojmenovaných položek (např. záznam o zákazníkovi by mohl obsahovat jeho jméno, věk a datum posledního nákupu).
Náměty na doplňkové aktivity
Kreslení s proměnnýmiNávrh vlastního vizuálního vzoru, kde velikost, poloha nebo barva závisí na hodnotě proměnné – realizace v želví grafice nebo prostředí jako Scratch.




