Učební výstupy podávají zhuštěný souhrn základních konceptů a dovedností, které byste měli umět vysvětlit a/nebo použít po každém cvičení.
1. cvičení
Základy C#: proměnné, podmínky, cykly
- vytvořit nový projekt v C#
- za použití vámi zvoleného editoru (Visual Studio, VS Code, Rider, …)
- z příkazové řádky (příkaz
dotnet new)
- spustit program v C#
- za použití vámi zvoleného editoru (Visual Studio, VS Code, Rider, …)
- z příkazové řádky (příkaz
dotnet run)
- umět definovat proměnnou
- uvědomovat si, že C# je staticky typovaný (každá proměnná má určený datový typ)
- umět definovat pole (seznam hodnot) a nastavit jeho velikost (počet prvků)
- zapsat v jazyce C# základní operace, které už znáte z Pythonu
- načíst řádek vstupu (
Console.ReadLine()) - vypsat hodnotu proměnné nebo výsledek výpočtu na výstup (
Console.WriteLine()) - umět převést textový řetězec na číslo (
int.Parse)
- načíst řádek vstupu (
- zapsat v C# základní řídící struktury
- podmínky (
if,else) - cykly (
for,foreach,while)
- podmínky (
- umět definovat funkci (včetně parametrů a návratové hodnoty)
2. cvičení
C#: textové řetězce (
string), základní datové struktury (List,Dictionary)
- pracovat v C# s textovými řetězci (
string)- znát základní metody (např.
IndexOf,Split)
- znát základní metody (např.
- pracovat v C# s poli (
Array)- projít pole po prvcích
- zjistit délku pole
- znát základní metody (např.
Array.IndexOf,Array.Sort) - umět definovat vícerozměrné pole (např.
int[,])
- použít v C# základní datové struktury, které už znáte z Pythonu
List– seznam (list)Dictionary– slovník (dict)Stack– zásobníkQueue– fronta
3. cvičení
Kvalita a čitelnost kódu – refaktorování, DRY
Třídy, objekty, rozhraní (interface)
- uvědomovat si, že napsaný program má být pochopitelný nejen pro počítač, ale i pro člověka, který ho bude číst po nás, a tedy záleží na čitelnosti kódu
- pojmenovávat proměnné a funkce co nejpřesněji
- dodržovat zásadu DRY: snažit se zbytečně neopakovat stejný kód
- …
- umět refaktorovat kód; je vhodné využívat k tomu funkce vašeho IDE (znát klávesové zkratky)
- přejmenovat proměnnou
- extrahovat část kódu do funkce
- …
- používat třídy a objekty pro seskupení souvisejících dat (a operací s nimi)
- chápat význam rozhraní (
interface)- pomocí rozhraní definujeme funkcionalitu ("co má třída dělat"), konkrétní implementace ("jak to dělá") pak může být v každé třídě jiná
- umět v jazyce C# zapsat, že třída implementuje rozhraní (
class ImplementationClass : ISampleInterface)
4. cvičení
Zapouzdření (
public,private), dokumentační komentáře, properties
Porovnávání, třídění – rozhraníIComparable,IEquitable
- používat třídy a objekty pro omezení přístupu k datům a povolení jen vybraných operací – rozlišovat veřejné (
public) a privátní (private) datové položky a metody - umět zdokumentovat třídy, funkce a jejich parametry pomocí dokumentačních komentářů
- vědět o existenci nástrojů pro generování dokumentace
- chápat význam klíčového slova
staticpro označení metod a dat, které patří přímo typu (třídě) a ne konkrétním instancím (objektům) - pro vlastní třídy umět definovat rovnost (
IEquatable) – návod - pro vlastní třídy umět definovat porovnání (
IComparable); umět definovat i více způsobů porovnávání (pomocí porovnávacích funkcí nebo rozhraníIComparer) - uvědomovat si, že některé operace můžou záviset na jazykovém prostředí (např. porovnávání textových řetězců, formát desetinných čísel), a umět nastavit jazykové prostředí (viz výše)
5. cvičení
Soubory
- Číst a zapisovat textové soubory pomocí
StreamReaderaStreamWriter- Použít konstrukci
usingpro automatické zavření souboru - Při práci se soubory využít
try/catchblok pro odchycení výjimek
- Použít konstrukci
- Vědět, že různé způsoby spuštění programu můžou pracovat s různou “working directory” – pak se může lišit relativní cesta k souborům
- Umět ve vašem IDE nastavit “working directory”
- Umět číst argumenty předané programu při spuštění (
argsvMainmetodě)- Umět na příkazové řádce a ve vašem IDE nastavit argumenty programu
6. cvičení
Grafické uživatelské rozhraní – WinForms
- Vytvořit v C# aplikaci s uživatelským rozhraním.
- Vytvořit ovládací prvky UI (tlačítka, …) a nastavit jejich pozici a vlastnosti.
- Zpracovávat události ovládacích prvků (kliknutí na tlačítko).
7. cvičení
Dědičnost, virtuální metody
Diskrétní simulace
- chápat význam klíčových slov
virtualaoverridev kontextu virtuálních metod- umět vysvětlit, jak jsou virtuální metody implementované pomocí tabulky virtuálních metod (VMT)
- umět vysvětlit pojmy “dědičnost” a “kompozice” v objektově orientovaném programování
- umět implementovat diskrétní simulaci (discrete event simulation) podle zadaného popisu
- vhodně reprezentovat události a jejich kalendář
- vytvořit model zadaného problému (jeho reprezentaci pomocí programu)
8. cvičení
Generické typy (typové parametry)
Úvod do funkcionálního programování
Enumerátory (generátory)
- Umět definovat generické metody a třídy (s typovými parametry)
- Pomocí klíčového slova
whereupřesnit (omezit) typový parametr.
- Pomocí klíčového slova
- Umět v C# definovat proměnnou pro uložení funkce. Můžete použít klíčové slovo
delegatenebo předpřipravené delegátyFunc<T, TResult>,Action<T>,Predicate<T>, atd.
9. cvičení
Dynamické programování
- pomocí memoizace (cache) zrychlit výpočet rekurzivních funkcí (neopakovat víckrát stejný výpočet)
- využít techniku dynamické programování pro odstranění rekurze (vyplňovat cache popořadě pomocí cyklu)
10. cvičení
Objektová dekompozice
Unit testy
- dekompozice úlohy do objektů (tříd) a jejich metod
- chápat význam testů pro ověření funkčnosti programu
- umět napsat testy v C# pomocí vhodného frameworku (např. xUnit, MSTest)
- umět spustit existující unit testy a z výstupu poznat, které testy prošly a které ne
11. cvičení
ukázková zkoušková úloha (žádná nová látka)
12. cvičení
zápočtový test (žádná nová látka)