Kapitola 7: Formulace úlohy, vstup, výstup, podmínky řešení
Vstup a výstup - co vložíme, to zpracujeme
1. Úvod: Jak řešíme problémy?
Každý den řešíme spoustu úkolů a problémů. Od jednoduchých, jako je uvaření čaje, až po složitější, jako je naplánování výletu. Abychom jakýkoli problém vyřešili, musíme si ho nejdřív pořádně promyslet. V informatice je to stejné. Než počítač něco udělá, musíme mu přesně říct, co má dělat. A k tomu nám pomáhají pojmy jako formulace úlohy, vstup, výstup a podmínky řešení.
2. Formulace úlohy: Co vlastně chceme?
První a nejdůležitější krok je přesně si říct, co je naším cílem. Co chceme, aby počítač (nebo my sami) udělal?
Definice: Formulace úlohy
Formulace úlohy je jasné a přesné popsání toho, co chceme vyřešit nebo čeho chceme dosáhnout.
Proč je to důležité?
Když nevíš, co chceš, nemůžeš to najít. Když si přesně neřekneme, co je úkolem, můžeme dělat něco úplně jiného, než je potřeba.
Příklad: Uvaření čaje
Špatná formulace: "Udělej něco s vodou a sáčkem." (Co s tím? Uvařit? Vylít?)
Správná formulace: "Uvař čaj." (Jasné, co se má stát.)
3. Vstup: Co k tomu potřebujeme?
Když víme, co chceme udělat, musíme zjistit, co k tomu budeme potřebovat. To jsou naše vstupy.
Definice: Vstup
Vstup jsou všechna data, informace nebo suroviny, které potřebujeme k tomu, abychom mohli úlohu začít řešit.
Proč je to důležité?
Bez správných vstupů nemůžeme začít. Kuchař bez ingrediencí neuvaří. Počítač bez dat nic nespočítá.
Když úlohu vyřešíme, dostaneme nějaký výsledek. To je náš výstup.
Definice: Výstup
Výstup je výsledek, který získáme po dokončení úlohy nebo po zpracování vstupů.
Proč je to důležité?
Výstup je to, co jsme chtěli získat. Je to hotová polévka, vypočítaný příklad, nebo hotový referát.
Příklad: Uvaření čaje
Výstup: Horký čaj v hrnku.
5. Podmínky řešení: Jak to máme udělat?
Někdy nestačí jen vědět, co chceme a co k tomu potřebujeme. Musíme také vědět, jaké jsou pravidla nebo omezení. To jsou podmínky řešení.
Definice: Podmínky řešení
Podmínky řešení jsou pravidla, omezení nebo požadavky, které musíme dodržet při řešení úlohy.
Proč je to důležité?
Podmínky nám říkají, jak má být výsledek přesný, jak rychle se má něco udělat, nebo jaké nástroje můžeme použít.
Příklad: Uvaření čaje
Podmínky:
Čaj musí být sladký (použít cukr).
Voda musí být horká (uvařit vodu).
Čaj nesmí být moc silný (nechat sáček jen 3 minuty).
6. Všechno dohromady: Příklad z počítačového světa
Pojďme si to ukázat na příkladu, který by mohl řešit počítač.
Kalkulačka - vstup čísel, výstup výsledku
Úloha: Sečíst dvě čísla
Formulace úlohy: Vytvořit program, který sečte dvě zadaná čísla.
Vstup: Dvě čísla (např. 5 a 3).
Výstup: Součet těchto dvou čísel (např. 8).
Podmínky řešení: Čísla musí být celá a kladná.
Když počítači řekneme všechny tyto věci, může začít pracovat.
Člověk a digitální svět
Schopnost jasně formulovat úlohy, identifikovat vstupy, výstupy a podmínky je základem nejen pro programování, ale i pro efektivní komunikaci a řešení problémů v digitálním světě. Pomáhá nám to lépe se domluvit s počítačem i s lidmi, vyhnout se nedorozuměním a dosáhnout požadovaných výsledků.
Otázky k zamyšlení
Představ si, že chceš poslat SMS kamarádovi. Co je v tomto případě formulace úlohy, vstup, výstup a podmínky řešení?
Proč je důležité přesně vědět, co je vstupem, než začneme něco dělat?
Může mít jedna úloha více možných výstupů? Zkus vymyslet příklad.
Úkoly pro praxi
Plánování snídaně: Vyber si svou oblíbenou snídani (např. míchaná vajíčka). Popiš:
Formulace úlohy: Co je tvým cílem?
Vstup: Jaké suroviny a nástroje potřebuješ?
Výstup: Jak bude vypadat hotová snídaně?
Podmínky řešení: Jaké jsou pravidla (např. nesmíš použít mikrovlnku, musí to být hotové do 10 minut)?
Hledání cesty: Představ si, že jsi v neznámém městě a chceš se dostat na nádraží. Popiš:
Formulace úlohy: Co je tvým cílem?
Vstup: Jaké informace máš k dispozici (např. mapa, mobil s GPS, zeptáš se kolemjdoucích)?
Výstup: Co je výsledkem tvého snažení?
Podmínky řešení: Jaké jsou omezení (např. nesmíš použít taxi, musíš tam být do 30 minut)?
* Rozšíření pro pokročilé
Specifikace požadavků
V profesionální praxi se formulace úlohy nazývá specifikace požadavků. Obsahuje:
Funkční požadavky: Co má program dělat (funkce, vstupy, výstupy).
Nefunkční požadavky: Jak má program fungovat (rychlost, bezpečnost, spolehlivost).
Omezení: Technická omezení (operační systém, programovací jazyk, hardware).
Datové typy vstupů a výstupů
V programování musíme přesně specifikovat, jaký typ dat očekáváme:
Celé číslo (integer): 1, 42, -7
Desetinné číslo (float): 3.14, -0.5
Text (string): "Ahoj", "Petr Novák"
Pravdivostní hodnota (boolean): true/false (ano/ne)
Seznam (array/list): [1, 2, 3, 4, 5]
Validace vstupů
Program by měl ověřit, že vstupy jsou správné, než s nimi začne pracovat:
Je hodnota ve správném rozsahu? (např. věk 0-150)
Má správný formát? (např. e-mail obsahuje @)
Není prázdná?
Struktura programu - vstup, zpracování, výstup
* Úkoly pro pokročilé
Word – Specifikace požadavků: Vytvoř dokument "Specifikace" pro jednoduchou aplikaci (např. kalkulačka). Rozděl na sekce: Účel, Funkční požadavky (sčítání, odčítání...), Vstupy, Výstupy, Omezení.
Excel – Validační pravidla: Vytvoř tabulku pro registraci uživatele. Sloupce: Jméno, E-mail, Věk, Heslo. Použij Ověření dat (Data → Ověření) pro omezení: Věk 13-100, Heslo min. 8 znaků.
Scratch – Validace vstupu: Vytvoř program, který se zeptá na věk uživatele. Pokud je věk menší než 0 nebo větší než 150, zobraz chybovou zprávu "Neplatný věk!". Jinak zobraz "Tvůj věk je [věk] let."
Scratch – Kalkulačka: Vytvoř ve Scratchi jednoduchou kalkulačku: zeptej se na dvě čísla a operaci (+, -, *, /). Zobraz výsledek. Ošetři dělení nulou!
** Rozšíření pro maturitní obory
Úvod do nástroje Flowgorithm
Flowgorithm je bezplatný program pro tvorbu vývojových diagramů (flowcharts). Je ideální pro učení algoritmizace, protože:
Vytváříš algoritmy graficky pomocí bloků.
Program můžeš spustit a sledovat, jak funguje krok za krokem.
Stáhni a nainstaluj: Navštiv www.flowgorithm.org a stáhni program (je zdarma).
Spusť program: Po spuštění uvidíš prázdný diagram se symbolem START a END.
Přidej bloky: Klikni na šipku mezi START a END a vyber typ bloku:
Declare: Vytvoření proměnné (např. celé číslo, text).
Input: Načtení vstupu od uživatele.
Output: Zobrazení výstupu.
Assign: Přiřazení hodnoty do proměnné.
If: Větvení (podmínka).
While/For: Cyklus (opakování).
Spusť: Klikni na tlačítko "Play" (▶) a sleduj, jak program běží.
Příklad: Kontrola věku
Vytvoříme algoritmus, který zkontroluje, zda je uživatel plnoletý:
Postup ve Flowgorithm:
1. Declare → proměnná "vek" typu Integer
2. Output → "Zadej svůj věk:"
3. Input → vek
4. If → podmínka: vek >= 18
→ True: Output "Jsi plnoletý!"
→ False: Output "Nejsi plnoletý."
5. END
Funkce jako černá skříňka - abstrakce
Podrobně: Specifikace požadavků
V praxi se používá strukturovaný dokument zvaný SRS (Software Requirements Specification):
Účel: Co má software dělat a proč.
Uživatelé: Kdo bude software používat.
Funkční požadavky: Seznam funkcí (např. "Systém umožní přihlášení uživatele").
Rozhraní: Jak bude vypadat UI, s čím bude systém komunikovat.
** Úkoly pro maturitní obory
Flowgorithm – První algoritmus: Nainstaluj Flowgorithm. Vytvoř algoritmus, který se zeptá na jméno uživatele a pozdraví ho: "Ahoj, [jméno]!". Spusť a otestuj.
Flowgorithm – Kontrola věku: Vytvoř algoritmus podle příkladu výše (kontrola plnoletosti). Přidej ještě výpis: "Za X let budeš plnoletý" pro neplnoleté.
Flowgorithm – Kalkulačka: Vytvoř algoritmus kalkulačky: načti dvě čísla a operaci (+, -, *, /). Pomocí If rozpoznej operaci a vypočítej výsledek. Ošetři dělení nulou!
Word – SRS dokument: Napiš profesionální dokument "Specifikace požadavků" pro mobilní aplikaci počasí. Zahrň: účel, uživatele, 5 funkčních požadavků, 3 nefunkční požadavky, náčrt rozhraní.
# Můj první program v Pythonu
print("Ahoj, světe!")
Spusť v terminálu: python hello.py
Základní příkazy Pythonu
# VÝSTUP - zobrazení textu
print("Ahoj!")
print("Mám", 15, "let")
# VSTUP - načtení od uživatele
jmeno = input("Jak se jmenuješ? ")
print("Ahoj,", jmeno)
# PROMĚNNÉ - uložení hodnoty
vek = 15 # celé číslo (int)
vyska = 175.5 # desetinné číslo (float)
jmeno = "Jan" # text (string)
je_student = True # pravda/nepravda (boolean)
# MATEMATICKÉ OPERACE
soucet = 5 + 3 # 8
rozdil = 10 - 4 # 6
soucin = 6 * 7 # 42
podil = 20 / 4 # 5.0
celociselny_podil = 20 // 3 # 6
zbytek = 20 % 3 # 2
mocnina = 2 ** 10 # 1024
# KOMENTÁŘE - poznámky v kódu
# Jednořádkový komentář
"""
Víceřádkový
komentář
"""
Podmínky (if/else)
vek = int(input("Kolik ti je let? "))
if vek >= 18:
print("Jsi dospělý.")
elif vek >= 15:
print("Jsi mladistvý.")
else:
print("Jsi dítě.")
Cykly (for/while)
# FOR cyklus - opakuj n-krát
for i in range(5):
print(f"Opakování číslo {i}")
# FOR cyklus - procházení seznamu
jmena = ["Anna", "Bob", "Cyril"]
for jmeno in jmena:
print(f"Ahoj, {jmeno}!")
# WHILE cyklus - opakuj dokud platí podmínka
cislo = 1
while cislo <= 10:
print(cislo)
cislo = cislo + 1
*** Praktické úkoly pro IT obory
Instalace: Nainstaluj Python a VS Code na svůj počítač. Vytvoř první program "hello.py", který vypíše tvé jméno.
Kalkulačka: Napiš program, který načte dvě čísla a vypíše jejich součet, rozdíl, součin a podíl.
Pozdrav: Napiš program, který se zeptá na jméno a věk. Pak vypíše personalizovaný pozdrav a kolik let zbývá do plnoletosti.
Násobilka: Napiš program, který pomocí cyklu for vytiskne celou násobilku zvoleného čísla (1×N až 10×N).
Hádání: Napiš jednoduchý program, kde si uživatel myslí číslo a počítač hádá (nebo naopak).