Programování
Procedury, Funkce
Pro lidské oko je stravitelnější zdrojový kód členěný do menších úseků; funkce se podobně jako v matematice používají pro získání jedné návratové hodnoty (a jejich volání tak může být výrazem), procedury jsou určeny pro ostatní účely (jejich volání je příkazem); v každém případě se chod programu po vykonání funkce a procedury vrací zpět k místu volání.

Mnoho tzv. standardních (vnitřních) funkcí a procedur je už součástí programovacího jazyka. S volající programovou jednotkou procedura (vše platí i pro funkce) komunikuje jednak prostřednictvím svého rozhraní, tj. svých parametrů (argumentů), jednak prostřednictvím dat známých oběma jednotkám (globálních dat).

Data deklarovaná v proceduře jsou vně procedury nedostupná (lokální data). Předání parametru proceduře se děje buď kopírováním datové hodnoty (předání hodnotou) nebo poskytnutím její adresy, tj. ukazatele (předání odkazem).

Procedury odvolávající se na sebe se nazývají rekurzivní , procedury s týmž jménem, ale různým rozhraním se nazývají přetížené. Procedury pro příbuzné účely se často sdružují do modulů (knihoven).

Knihovna je například entityFramework, boostrap
Motivace za vytvářením
  • strukturované programování: návrh shora dolů, stavebnicovost, čitelnost
  • opakování částí programu
  • rozmnožení standardních procedur a funkcí
Rozdíly
Funkce
- Má definovanou návratovou hodnotu. Po vykonání funkce je vracena hodnota zpět do místa, odkud byla funkce volána.
- Často se používají pro výpočet hodnoty na základě vstupních parametrů. Mohou být součástí výrazů a jsou vhodné pro situace, kde potřebujete výsledek nějakého výpočtu.
Procedure
- Obvykle nemá návratovou hodnotu nebo může mít pouze vedlejší efekty, ale nevrací žádnou hodnotu explicitně.
- Často se používají pro provádění určitých akcí nebo operací, které nevyžadují návrat hodnoty.
V našem oblíbeném jazyce C# je možné vytvářet procedury a funkce. Ale není v nich žádný rozdíl, jelikož pokud chceme proceduru vracíme void, který vlastně prázdno.
Proto je nazýváme metody.
Příklady
            
      public int GetKola(int pocetAut)
      {
            int pocetKolNaAuto = 4;
            int pocetKol = pocetAut * pocetKolNaAuto;

            return pocetKol
      }

            
        
Výpočet kol
public - Modifikátor přístupu
int - Návratová proměnná
GetKola - Náš vlastní název (nesmí být systémový)
int pocetAut - Náš jeden parametr, který vyžaduje int
Více informací: w3Schools
Ukončení methody
return
Nejlehčí způsob ukončení metody je pomocí klíčového slova return.
Vrátí to hodnotu zpět do místa, odkud byla metoda volána.
Pokud je návratová hodnota void tak se používá pro předčasné ukončení metody.

throw new
Pokud chcete ukončit metodu a vyvolat výjimku, můžete použít klíčové slovo throw.
Toto je užitečné, pokud chcete zastavit metodu, pokud se vyskytne chyba.
Lze vyrobit vlastní chybu pomocí kódu níže. Když budeme dědit z SystemException
            
                public class MacikToPo_ral : SystemException
                {
                    public MacikToPo_ral()
                    {

                    }

                    public MacikToPo_ral(string zprava) : base(zprava)
                    {

                    }
                }

            
        
continue, break
continue se používá pro přeskočení kódu a pokračování v cyklu.
break se používá pro ukončení cyklu.

yield return
pokud vracíme hodnotu z foreach cyklu, používáme yield return.
funguje pouze pokud vracíme IEnumerator nebo IEnumerable.
bude to jednoduše vracet hodnotu z cyklu.
        
            public IEnumerable<int> GetInt(int[] arr)
            {
                foreach (var i in arr)
                {
                    yield return i;
                }
            }

            
        

Ref / Out
Rád bych začal tím, že je nikdy nepoužívejte.
Pokud je to možné, vždy používejte návratovou hodnotu. Pokud ne tak jen ref
Obě hodnoty přidáváme vždy k parametru a při volání methody.
Na první pohled fungují stejně, ale out se musí deklarovat, jinak bude chyba.
ref
ref se používá pro předání hodnoty odkazem.
    
    static void AddFive(ref int num)
    {
        num += 5;

    }

    static void Main(string[] args)
    {
      int x = 10;
      AddFive(ref x);
      Console.WriteLine(x);
    }

    //Vysledek je 15

            
        
out
out se používá pro předání hodnoty, která je inicializována v metodě.
    
    static void SetFive(out int num)
    {
        num = 5;
    }

    static void Main(string[] args)
    {
      int x;
      SetFive(out x);
      Console.WriteLine(x);
    }

    //Vysledek je 15

            
        
Více informací: w3Schools
Doporučené informace
Přetížení method
www.programiz.com
Extension methody
www.tutorialsteacher.com