Add a C# course with a side-by-side code runner.

Each lesson explains a topic and runs the edited program next to the text through the local .NET SDK.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
pepaskopec-blip 2026-10-11 14:37:14 +02:00
commit 333085ee53
86 changed files with 2482 additions and 5 deletions

View file

@ -0,0 +1,4 @@
---
nazev: Hello, world
popis: The first program: writing to the console.
---

View file

@ -0,0 +1,42 @@
---
id: cs-1-ahoj-svete
nazev: Ahoj světe
popis: První program: výpis na konzoli.
---
# Výklad
## Výpis
*WriteLine*
- Console.WriteLine vypíše text a odřádkuje.
- Console.Write vypíše text a zůstane na stejném řádku.
- Text se píše do uvozovek. Středník ukončuje příkaz.
> Tip: Bez středníku se program nepřeloží.
## Krátký a dlouhý zápis
*Main*
- Starší učebnice mají třídu Program a metodu Main.
- Nový projekt stejný program zapíše několika řádky bez třídy.
- Obojí spustí stejný výpis. V lekcích používáme krátký zápis.
> Tip: Krátký zápis je pořád C#. Není to jiný jazyk.
## Vyzkoušejte
*Editor*
- Vpravo je kód. Upravte ho a stiskněte Spustit.
- Výstup se objeví hned vedle.
- Obnovit ukázku vrátí původní program.
> Tip: Změňte text v uvozovkách a spusťte znovu.
# Kód
```
Console.WriteLine("Ahoj světe");
Console.Write("Toto je ");
Console.WriteLine("C#");
```

View file

@ -0,0 +1,4 @@
---
nazev: Comments
popis: Notes the program does not run.
---

View file

@ -0,0 +1,35 @@
---
id: cs-1-komentare
nazev: Komentáře
popis: Poznámky, které se nespouštějí.
---
# Výklad
## Jednořádkový
*//*
- Vše za // na stejném řádku počítač přeskočí.
- Komentář vysvětluje, proč tam řádek je, ne co je vidět.
- Kód bez komentáře pořád běží stejně.
> Tip: Komentář není výpis. Na konzoli se neobjeví.
## Více řádků
*/* */*
- Blok začíná /* a končí */.
- Hodí se, když chcete dočasně vypnout několik řádků.
- Zapomenuté */ rozbije zbytek souboru.
> Tip: Nevnořujte blokové komentáře do sebe.
# Kód
```
// Tohle se nespustí.
Console.WriteLine("Tento řádek ano");
/*
Console.WriteLine("A tento ne");
*/
```

View file

@ -0,0 +1,4 @@
---
nazev: Variables
popis: A named value you can change.
---

View file

@ -0,0 +1,36 @@
---
id: cs-1-promenne
nazev: Proměnné
popis: Pojmenovaná hodnota, kterou lze změnit.
---
# Výklad
## Deklarace
*typ jméno*
- Nejdřív typ, pak jméno, pak hodnota: int vek = 17;
- Jméno začíná písmenem. Mezery v něm být nesmí.
- Do stejné proměnné lze později uložit novou hodnotu stejného typu.
> Tip: int drží celé číslo. string drží text.
## Čtení
*jméno*
- Jméno bez uvozovek je proměnná. Uvozovky by z něj udělaly text.
- WriteLine umí vypsat proměnnou i text spojený plusem.
- Hodnota se dosadí až při běhu, ne při psaní.
> Tip: Změňte vek na 18 a spusťte znovu.
# Kód
```
string jmeno = "Anna";
int vek = 17;
jmeno = "Eva";
Console.WriteLine(jmeno);
Console.WriteLine(vek);
Console.WriteLine(jmeno + " má " + vek + " let");
```

View file

@ -0,0 +1,4 @@
---
nazev: Data types
popis: int, double, bool, char and string.
---

View file

@ -0,0 +1,40 @@
---
id: cs-1-typy
nazev: Datové typy
popis: int, double, bool, char a string.
---
# Výklad
## Čísla
*int a double*
- int je celé číslo: 42.
- double je číslo s desetinnou tečkou: 3.14.
- V kódu je desetinná tečka, ne čárka.
> Tip: 3,14 by C# přečetl jako dva údaje oddělené čárkou.
## Text a ano/ne
*string, char, bool*
- string je text v uvozovkách.
- char je jeden znak v apostrofech: 'A'.
- bool je jen true nebo false.
> Tip: Apostrof a uvozovky nejsou totéž. 'A' je znak, "A" je text.
# Kód
```
int cele = 42;
double desetinne = 3.14;
bool prsi = false;
char pismeno = 'A';
string text = "ahoj";
Console.WriteLine(cele);
Console.WriteLine(desetinne);
Console.WriteLine(prsi);
Console.WriteLine(pismeno);
Console.WriteLine(text);
```

View file

@ -0,0 +1,4 @@
---
nazev: Type conversion
popis: From double to int and from text to a number.
---

View file

@ -0,0 +1,36 @@
---
id: cs-1-prevody
nazev: Převody typů
popis: Z double na int a z textu na číslo.
---
# Výklad
## Ořez desetin
*(int)*
- (int)3.9 je 3. Desetinná část se odřízne, nezaokrouhlí.
- Opačně int do double ztrátu nemá: 3 se stane 3.0.
- Převod napište před hodnotu do závorky.
> Tip: Když potřebujete zaokrouhlit, (int) na to není.
## Text na číslo
*Parse*
- int.Parse("20") udělá z textu číslo 20.
- Když text číslo není, program spadne. To později chytíme výjimkou.
- Číslo na text udělá ToString nebo zápis do řetězce.
> Tip: Vstup z konzole je vždy text, i když uživatel napíše číslici.
# Kód
```
double cena = 19.9;
int cele = (int)cena;
Console.WriteLine(cele);
string vstup = "20";
int cislo = int.Parse(vstup);
Console.WriteLine(cislo + 1);
```

View file

@ -0,0 +1,4 @@
---
nazev: Operators
popis: Arithmetic, remainder, comparison and logic.
---

View file

@ -0,0 +1,37 @@
---
id: cs-1-operatory
nazev: Operátory
popis: Počítání, zbytek, porovnání a a zároveň.
---
# Výklad
## Počet
*+ - * / %*
- Sčítání, odčítání a násobení fungují, jak čekáte.
- Dělení dvou int je celočíselné: 17 / 5 je 3.
- % je zbytek po dělení: 17 % 5 je 2.
> Tip: Když chcete desetinný podíl, jedno číslo udělejte double: 17 / 5.0.
## Porovnání
*true a false*
- == je rovnost. = je uložení. Nejsou totéž.
- && znamená a zároveň. || znamená nebo.
- ! otočí bool: !true je false.
> Tip: Jedno = v podmínce je častá chyba. Podmínka chce ==.
# Kód
```
int a = 17;
int b = 5;
Console.WriteLine(a + b);
Console.WriteLine(a / b);
Console.WriteLine(a % b);
Console.WriteLine(a > b);
Console.WriteLine(a > 10 && b < 10);
```

View file

@ -0,0 +1,4 @@
---
nazev: Strings
popis: Joining text, length and a slice.
---

View file

@ -0,0 +1,36 @@
---
id: cs-1-retezce
nazev: Řetězce
popis: Skládání textu, délka a výřez.
---
# Výklad
## Interpolace
*$*
- $"Ahoj, {jmeno}" dosadí hodnotu do složených závorek.
- Je přehlednější než spojování plusem.
- Do závorek může i výpočet: {vek + 1}.
> Tip: Bez dolaru před uvozovkami se {jmeno} vypíše doslova.
## Metody textu
*Length*
- Length je počet znaků.
- ToUpper vrátí velká písmena a původní text nezmění.
- Substring(0, 2) vezme dva znaky od začátku.
> Tip: První znak má index 0, ne 1.
# Kód
```
string jmeno = "Anna";
int vek = 17;
Console.WriteLine($"Ahoj, {jmeno}. Za rok ti bude {vek + 1}.");
Console.WriteLine(jmeno.Length);
Console.WriteLine(jmeno.ToUpper());
Console.WriteLine(jmeno.Substring(0, 2));
```

View file

@ -0,0 +1,4 @@
---
nazev: Console input
popis: Console.ReadLine reads a line.
---

View file

@ -0,0 +1,34 @@
---
id: cs-1-vstup
nazev: Vstup z konzole
popis: Console.ReadLine přečte řádek.
---
# Výklad
## ReadLine
*text*
- ReadLine počká na řádek a vrátí ho jako string.
- V této lekci řádek napište do pole Vstup a pak Spustit.
- Každé další ReadLine vezme další řádek vstupu.
> Tip: Když vstup necháte prázdný, ReadLine dostane konec a program může spadnout.
## Číslo ze vstupu
*Parse*
- ReadLine nikdy nevrací int. Vrací text.
- int.Parse z něj číslo udělá.
- Napište do vstupu třeba 17.
> Tip: Zkuste ve vstupu Anna a uvidíte chybu. Parse čeká číslo.
# Kód
```
Console.WriteLine("Kolik ti je?");
string radek = Console.ReadLine();
int vek = int.Parse(radek);
Console.WriteLine($"Za rok ti bude {vek + 1}.");
```