Funkce, procedury, parametry, hodnotové vs referenční typy, rekurze, lambda, closure

Formát: 30 min praktická úloha, 15 min obhajoba + teorie. Praktika je v C# (.NET) a podle informací z minulých let obsahuje 4 části: faktoriál rekurze vs iterace s měřením, hodnotové vs referenční typy, lambda každý-s-každým, a closure.


Část 1: Teorie

Co je podprogram

Podprogram je pojmenovaný blok kódu, který vykoná určitý úkol a lze ho opakovaně volat z různých míst programu. Synonyma: funkce, procedura, metoda (v OOP).

Skládá se z:

Proč používat podprogramy:


Funkce vs procedura

Funkce Procedura
Návratová hodnota Ano (např. int, string) Ne (void)
Klíčové slovo Datový typ návratu void
Použití ve výrazu Ano (x = Plus(2, 3)) Ne
Typický účel Výpočet, transformace Akce, výpis, modifikace
Příklady Math.Sqrt, int.Parse Console.WriteLine
// Funkce: vrací hodnotu
int Plus(int a, int b)
{
    return a + b;
}

int vysledek = Plus(3, 5);          // 8
Console.WriteLine(Plus(2, 67));     // 69, výsledek lze rovnou použít

// Procedura: provede akci, nevrací
void Vypis(string text)
{
    Console.WriteLine(text);
    // žádný return s hodnotou
}

Vypis("Ahoj");

Historicky: v Pascalu byly function a procedure oddělené klíčové slovo. V C#/Java/Pythonu jsou procedury jen funkce s void návratem. Formálně všechny jsou "metody" (pokud jsou v třídě).