Miniúkoly

Cílem miniúkolů je poskytnout vám, studentům, sbírku jednoduchých příkladů, na kterých si můžete vyzkoušet základní koncepty prezentované na přednášce. Náročností jsou obvykle na úrovni příkladů ze cvičení.

Tyto úkoly nejsou hodnocené ani povinné. Můžete si je vypracovat kdykoliv.

Sady

Žádné miniúkoly zatím nebyly zveřejněné.

Informace

Popis adresářové struktury

Každá sada obsahuje kořenový CMakeLists.txt, který můžete otevřít ve svém oblíbeném IDE. Dále zde naleznete adresáře s příklady.

Adresáře s příklady obsahují následující soubory:

  • CMakeLists.txt

  • source.c — soubor se zadáním, vaše řešení pište zde

  • solution.c — vzorové řešení

Navíc tyto adresáře obsahují testovací sady. Každá testovací sada s názvem NAME je definována alespoň jedním z těchto souborů:

NAME.in

standardní vstup; pokud neexistuje, pak je vstup prázdný

NAME.out

očekávaný standardní výstup; pokud neexistuje, pak nesmí program na výstup vypsat nic

NAME.err

očekávaný chybový výstup; pokud neexistuje, pak nesmí program na chybový výstup vypsat nic

NAME.args

parametry pro program, na každém řádku jeden

Automatické testování (Aisa)

Pokud úkol vypracujete na stroji Aisa, můžete na testování použít skript test-miniukol, který zkontroluje vaše řešení proti dodaným testovacím sadám.

Pokud jste v adresáři s řešením (hledá se soubor source.c), pak zavolejte skript

aisa$ /home/kontr/test-miniukol

který sám nalezne všechny sady v aktuálním pracovním adresáři a spustí je. Skript má také další vlastnosti, vyzkoušejte:

aisa$ /home/kontr/test-miniukol --help
aisa$ /home/kontr/test-miniukol --diff NazevSady

Manuální testování (Linux)

Úkoly můžete vypracovat v libovolném pořadí. Pokud si nějaký úkol vyberete, můžete jej vypracovat následujícím způsobem:

  • nejdříve otevřete source.c vybraného příkladu a přečtěte si zadání,

  • podívejte se na příklady vstupů a argumentů v souborech .in a `.args`,

  • zkuste řešení vypracovat podle zadání.

Na systému Linux (např. Aise) můžete testovat sadu následujícím způsobem:

  • sada bez vstupu a argumentů

    program >stdout 2>stderr
    
    # pokud existuje SADA.out:
    diff -U0 SADA.out stdout
    
    # pokud existuje SADA.err:
    diff -U0 SADA.err stderr
  • sada se vstupem

    program <SADA.in >stdout 2>stderr
    
    # ...
  • sada s argumenty

    xargs -a SADA.args -d'\n' program >stdout 2>stderr
    
    # ...
  • ostatní kombinace snad jednoduše odvodíte z výše uvedených příkladů