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: If and else
popis: A branch that runs only sometimes.
---

View file

@ -0,0 +1,43 @@
---
id: cs-2-if
nazev: If a else
popis: Větev, která se spustí jen někdy.
---
# Výklad
## Podmínka
*if*
- if (vek >= 18) spustí blok ve složených závorkách, jen když je podmínka true.
- else je větev pro opačný případ.
- else if přidá další podmínku mezi ně.
> Tip: Za if není středník. Středník by podmínku oddělil od bloku.
## Porovnání
*==*
- Čísla porovnávejte >, <, >=, <=, == a !=.
- Text se porovnává ==. "Anna" == "anna" je false.
- Do podmínky patří bool, ne přiřazení.
> Tip: Změňte vek a sledujte, která věta se vypíše.
# Kód
```
int vek = 17;
if (vek >= 18)
{
Console.WriteLine("plnoletý");
}
else if (vek >= 15)
{
Console.WriteLine("téměř");
}
else
{
Console.WriteLine("ještě ne");
}
```

View file

@ -0,0 +1,4 @@
---
nazev: Switch
popis: Several branches for one value.
---

View file

@ -0,0 +1,43 @@
---
id: cs-2-switch
nazev: Switch
popis: Víc větví podle jedné hodnoty.
---
# Výklad
## Větve
*case*
- switch vybere case, který se rovná hodnotě.
- break ukončí větev. Bez něj se překlad v klasickém zápisu zastaví.
- default je větev, když nesedí žádný case.
> Tip: Na známku 1 až 5 se switch hodí víc než řada else if.
## Nový zápis
*šipka*
- case 1 => "výborně" je krátká větev bez break.
- Výraz switch umí hodnotu rovnou vrátit.
- V lekci je klasický zápis, ať je vidět break.
> Tip: Přidejte case 5 a spusťte se znamkou 5.
# Kód
```
int znamka = 2;
switch (znamka)
{
case 1:
Console.WriteLine("výborně");
break;
case 2:
Console.WriteLine("chvalitebně");
break;
default:
Console.WriteLine("jiná známka");
break;
}
```

View file

@ -0,0 +1,4 @@
---
nazev: While
popis: Repeat while a condition holds.
---

View file

@ -0,0 +1,38 @@
---
id: cs-2-while
nazev: While
popis: Opakování, dokud podmínka platí.
---
# Výklad
## Smyčka
*while*
- Tělo se opakuje, dokud je podmínka true.
- Když podmínku nikdy nezměníte, smyčka neskončí.
- Aplikace dlouhý běh po chvíli zastaví.
> Tip: i = i + 1 nebo i++ posune čítač. Bez toho se i nemění.
## Součet
*1 až 4*
- Začněte součtem 0 a přičítejte i.
- 1+2+3+4 je 10.
- Podmínka i <= 4 pustí i číslo 4 dovnitř.
> Tip: Změňte 4 na 10. Součet 1 až 10 je 55.
# Kód
```
int i = 1;
int soucet = 0;
while (i <= 4)
{
soucet = soucet + i;
i++;
}
Console.WriteLine(soucet);
```

View file

@ -0,0 +1,4 @@
---
nazev: For
popis: A loop with its counter in one place.
---

View file

@ -0,0 +1,34 @@
---
id: cs-2-for
nazev: For
popis: Smyčka s čítačem na jednom místě.
---
# Výklad
## Tři části
*start; podmínka; krok*
- for (int i = 0; i < 3; i++) má začátek, podmínku a krok.
- i < 3 pustí 0, 1 a 2. Trojku už ne.
- Krok i++ se provede až po těle.
> Tip: Když potřebujete přesný počet opakování, for je přehlednější než while.
## Násobilka
*výpis*
- V těle můžete počítat i * 2.
- WriteLine v těle vypíše jeden řádek na každé opakování.
- Čítač nemusí začínat nulou.
> Tip: Přepište podmínku na i <= 5 a sledujte další řádek.
# Kód
```
for (int i = 1; i <= 3; i++)
{
Console.WriteLine($"{i} krát 2 je {i * 2}");
}
```

View file

@ -0,0 +1,4 @@
---
nazev: Arrays
popis: Several values of one type under one name.
---

View file

@ -0,0 +1,35 @@
---
id: cs-2-pole
nazev: Pole
popis: Víc hodnot stejného typu pod jedním jménem.
---
# Výklad
## Index
*od nuly*
- new int[] { 2, 4, 6 } je pole tří čísel.
- První prvek je znamky[0], poslední znamky[2].
- Length je počet prvků, ne index posledního.
> Tip: znamky[3] u pole délky 3 spadne. Poslední index je 2.
## Zápis
*prvku*
- Do prvku se dá uložit nová hodnota: znamky[1] = 5.
- Ostatní prvky zůstanou.
- Pole má pevnou délku. Přidat čtvrtý prvek nejde, na to je později List.
> Tip: Vyměňte první známku a spusťte znovu.
# Kód
```
int[] znamky = { 1, 3, 2 };
Console.WriteLine(znamky[0]);
Console.WriteLine(znamky.Length);
znamky[1] = 5;
Console.WriteLine(znamky[1]);
```

View file

@ -0,0 +1,4 @@
---
nazev: Foreach
popis: Visit every item without an index.
---

View file

@ -0,0 +1,35 @@
---
id: cs-2-foreach
nazev: Foreach
popis: Projít každý prvek bez indexu.
---
# Výklad
## Projítí
*foreach*
- foreach (int z in znamky) vezme prvky od prvního po poslední.
- z je kopie hodnoty. U int se zápisem do z pole nezmění.
- Když index nepotřebujete, foreach je kratší než for.
> Tip: Součet ve smyčce přičítá aktuální z.
## Texty
*string[]*
- Pole může být i ze stringů.
- Stejný foreach funguje pro oba typy, jen se liší typ prvku.
- Pořadí je pořadí v závorce při vytvoření.
> Tip: Přidejte do pole třetí jméno.
# Kód
```
string[] jmena = { "Anna", "Eva", "Jan" };
foreach (string jmeno in jmena)
{
Console.WriteLine(jmeno);
}
```

View file

@ -0,0 +1,4 @@
---
nazev: Methods
popis: A named piece of the program you can call.
---

View file

@ -0,0 +1,37 @@
---
id: cs-2-metody
nazev: Metody
popis: Pojmenovaný kus programu, který lze zavolat.
---
# Výklad
## Volání
*jméno()*
- static void Pozdrav() je metoda bez výsledku.
- Zavolá se Pozdrav(); včetně závorek.
- Bez závorek by to bylo jen jméno, ne volání.
> Tip: Metodu lze zavolat víckrát a pokaždé udělá totéž.
## Proč
*jednou*
- Kód, který se opakuje, patří do metody.
- Jméno metody říká, co dělá: Pozdrav, ne Metoda1.
- void znamená, že nevrací hodnotu.
> Tip: Přidejte druhé volání Pozdrav().
# Kód
```
Pozdrav();
Pozdrav();
static void Pozdrav()
{
Console.WriteLine("Ahoj");
}
```

View file

@ -0,0 +1,4 @@
---
nazev: Parameters and return
popis: A method receives values and can return one.
---

View file

@ -0,0 +1,38 @@
---
id: cs-2-navrat
nazev: Parametry a návrat
popis: Metoda dostane hodnoty a může jednu vrátit.
---
# Výklad
## Parametr
*vstup*
- int a v závorce je parametr. Volající dodá argument.
- Součet(2, 5) uloží 2 do a a 5 do b.
- Jména parametrů platí jen uvnitř metody.
> Tip: Změňte argumenty a výsledek se změní, metoda ne.
## return
*výstup*
- int před jménem je typ výsledku.
- return hodnotu vrátí a metodu ukončí.
- Volající si výsledek může uložit: int s = Soucet(2, 5);
> Tip: return 0 omylem na začátku by zbytek metody nespustil.
# Kód
```
int s = Soucet(2, 5);
Console.WriteLine(s);
Console.WriteLine(Soucet(10, 1));
static int Soucet(int a, int b)
{
return a + b;
}
```