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 Zapouzdření (
public,private), dokumentační komentáře
- 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 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
4. cvičení
Třídy, objekty, rozhraní (
interface), properties Porovnávání, třídění – rozhraníIComparable,IEquitable
- 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)
- 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í
5. cvičení
Dědičnost a kompozice
Diskrétní simulace
- umět vysvětlit pojmy “dědičnost” a “kompozice” v objektově orientovaném programování
- umět implementovat diskrétní simulaci (zatím bez událostí, jen diskrétní časové kroky) podle zadaného popisu
- vytvořit model zadaného problému (jeho reprezentaci pomocí programu)
6. 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 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)
7. 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).
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í
Ukázková zkoušková úloha (žádná nová látka)
11. cvičení
Procvičování na zápočtový test (žádná nová látka)
12. 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
13. cvičení
Zápočtový test (žádná nová látka)