Důležité!

Pozorně si přečtěte pokyny k výuce během rektorského volna!

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

Úkoly pro týden 1 1 úkol
hello_world

Stáhnout

Úkoly pro týden 2 10 úkolů
task01-alphanumeric task02-interval task03-sizeof task04-closestLeapYear task05-verticesDistance task06-PPAP task07-digit task08-powersOfTwo task09-rightTriangle task10-workOrWeekend

Stáhnout

Úkoly pro týden 3 10 úkolů
task1-array_basics task10-min_max_functions task2-very_simple_functions task3-pointer_basic task4-array_pointers task5-function_madness task6-unit_conversions task7-pointer_arguments task8-pointer_jumper task9-loaders

Stáhnout

Úkoly pro týden 4 14 úkolů
arrayMax changeValue funcPtr matrixMin matrixSum median ortogonal pointerArray printOdd reverseArray scalarProduct splitArray swap vectorLength

Stáhnout

Úkoly pro týden 5 11 úkolů
ctype_counts_table cvs_nth_column palindrome replace_substring rotate sort_strings string_stat substring_count trim_whitespace words_split write_lower_upper

Stáhnout

Úkoly pro týden 6 15 úkolů
array2D calloc2 malloc256 mallocByteArray mallocByteArray2 mallocByteArray3 mallocBytePtrArray mallocBytePtrArray2 mallocBytePtrArray3 mallocIntPtrArray ptrUp256 realloc2D up256 up256a up256b

Stáhnout

Úkoly pro týden 7 8 úkolů
task01 task02 task03 task04 task05 task06 task07 task08

Stáhnout

Úkoly pro týden 8 10 úkolů
fileio-01 fileio-02 fileio-03 fileio-04 fileio-05 fileio-06 stdio-01 stdio-02 stdio-03 stdio-04

Stáhnout

Úkoly pro týden 9 8 úkolů
areaof avgntree caesar fibonacci levelsum postorder qsort transform

Stáhnout

Úkoly pro týden 10 10 úkolů
absolute-value debuging implication-equivalence min-max obfuscation odd-even overwrite-sabotage powerTwo-divTwo-square range sum-diff-multiply

Stáhnout

Úkoly pro týden 11 10 úkolů
task01 task02 task03 task04 task05 task06 task07 task08 task09 task10

Stáhnout

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ů