1. KvadratickaRovnice

1.2. C# kód

Následující zdrojový kód hlavní statické metody v C# pro konzolovou aplikaci je transformací algoritmu KvadratickaRovnice - viz Kód 1.  V těle hlavní metody jsou deklarovány parametry ve formě reálných čísel (typ double - nemusíme uvádět literál), představující koeficient kvadratického, lineárního a absolutního členu a také diskriminantu. Po výzvě k zadání prvního koeficientu kvadratického členu a načtení číslic je proveden test konverze na reálné číslo. Pokud tento test je neúspěšný (návrat metody TryParse ve formě logické hodnoty je false), je proveden výpis o chybě. Metoda TryParse je však deklarována jako metoda s výstupním parametrem, tím je zajištěno, že i v případě neúspěchu při provádění konverze, bude výstupní parametr inicializován počáteční hodnotou, která pro typ double je 0.0d. Stejně je postupováno i o ostatních parametrů - lineárního a absolutního členu. Pokud je koeficient kvadratického členu roven 0, je volána metoda bez návratu s názvem LinearniRovnice se skutečnými parametry b a c. Pokud a není rovno nule, jedná se o výpočty kořenů kvadratické rovnice. U výpočtu diskriminantu d je použito umocnění na druhou pomocí metody Pow třídy Math. Tato metoda přijímá dva reálné parametry - první je reálné číslo, které má být umocněno (základ mocniny - mocněnec), a druhý reálný parametr vyjadřuje exponent (mocnitel). Pokud není diskriminant roven 0, je dále testován na hodnotu větší než 0. Pokud je d > 0, je volána metoda RealneKoreny pro výpočet reálných kořenů. Tato metoda přijímá hodnoty uložené v parametrech a, b a d. Pokud je diskriminant menší než nula, je volána metoda bez návratu s názvem KomplexniKoreny. Tato metoda přijímá taktéž parametry a, b a d. V případě, že je diskriminant nulový, je volána metoda DvojityKoren pro výpočet dvojitého kořenu kvadratické rovnice. Této metodě k výpočtu dvojitého kořene stačí pouze parametry a a b.

static void Main(string[] args)
{
    /* Deklarace: 'a' ... koeficient v kvadratickém členu;  'b' ... koeficient 
     * v lineárním členu; 'c' ... absolutní člen; * 'd' ... diskriminant */
    double a, b, c, d;
 
    // Informace o výpočtu kvadratické rovnice
    Console.WriteLine("Výpočet kořenů kvadratické rovnice ax^2 + bx + c = 0:");
 
    // Výzva pro zadání koeficientu v kvadratickém členu
    Console.Write("Zadejte a :");
    // Pokud nedojde ke konverzi textu na číslo
    if (!double.TryParse(Console.ReadLine(), out a))
        // Vypsání chybové hlášky v konzole
        Console.WriteLine("Špatně zadaná hodnota A, program počítá s 0");
 
    // Výzva pro zadání koeficientu v lineárním členu
    Console.Write("Zadejte b :");
    // Pokud nedojde ke konverzi textu na číslo
    if (!double.TryParse(Console.ReadLine(), out b))
        // Vypsání chybové hlášky v konzole
        Console.WriteLine("Špatně zadaná hodnota B, program počítá s 0");
 
    // Výzva pro zadání absolutního členu
    Console.Write("Zadejte c :");      
    // Pokud nedojde ke konverzi textu na číslo
    if (!double.TryParse(Console.ReadLine(), out c))
        // Vypsání chybové hlášky v konzole
        Console.WriteLine("Špatně zadaná hodnota C, program počítá s 0");
 
    // Pokud koeficient kvadratického členu je roven nule potom...
    if (a == 0)
        // Volání metody pro výpočet lineárni rovnice
        LinearniRovnice(b, c);
    // Jinak...                            
    else
    {
        // Výpočet diskriminantu
        d = Math.Pow(b, 2) - 4 * a * c;
        // Pokud diskriminant není roven nule, potom...
        if (d != 0)
            // Pokud diskriminant je větší než nula, potom...
            if (d > 0)
                // Volání metody pro výpočet reálných kořenů kvadr. rovnice - předání parametrů
                RealneKoreny(a, b, d);
            // Jinak...
            else
                // Voláni metody pro výpočet komplexně sdružených kořenů kvadr. rovnice
                KomplexniKoreny(a, b, d);
        // Jinak...
        else
            // Zavoláni metody pro výpočet dvojitého kořenu
            DvojityKoren(a, b);
    }
 
    // Čekání na stisk klávesy -> ukončení programu
    Console.ReadKey();
}

Kód 1: Program KvadratickaRovnice - deklarace hlavní statické metody Main 

Metoda bez návratu LinearniRovnice využívá formálních parametrů b (koeficient v lineárním členu) a c (absolutní člen) pojmenovaných stejně, jako názvy skutečných parametrů předávaných z hlavní statické metody - viz Kód 2. Tyto parametry jsou předány hodnotou - fungují tedy jako vstupní parametry. V těle metody jsou dvě podmínky na nulovost obou parametrů b a c, na kterých je závislý způsob výpočtu kořene.

//--- Specifikace metody bez návratu pro výpočet lineární rovnice 'bx + c = 0'
/* Vstupní parametry (předány hodnotou): 'b' ... koeficient v lineárním
 * členu; 'c' ... absolutní člen */ 
static void LinearniRovnice(double b, double c)
{
    // Pokud první parametr je roven nule potom...
    if (b == 0)
        // Pokud druhý parametr je roven 0 potom...
        if (c == 0)
            // Nekonečně mnoho řešení - vypsání textu v konzole
            Console.WriteLine("Nekonečně mnoho řešení - každé x");
        // Jinak... 
        else
            // Žádné řešení - vypsání textu v konzole
            Console.WriteLine("Žádné řešení - žádné x");
    // Jinak...                                                                                                   
    else
        // Vypočtení hodnoty kořenu - vypsání textu v konzole
        Console.WriteLine("Lineární rovnice - kořen je: x = " + (-c / b));   
}

Kód 2: Deklarace statické metody bez návratu s názvem LinearniRovnice

Další deklarovanou metodou bez návratu je metoda RealneKoreny určená pro výpočet reálných kořenů kvadratické rovnice. V metodě jsou deklarovány dvě lokální proměnné do nichž se uloží vypočtené hodnoty kořenů. Ve výpočtu je využit příkaz Sqrt (Square Root) pro výpočet druhé odmocniny diskriminantu, implementovaná ve třídě Math.  Tyto vypočtené hodnoty kořenů jsou následně využity ve výpisu. Ve výpisu je použito řádkování pomocí řídící posloupnosti \n - viz Kód 3. 

//--- Specifikace metody bez návratu pro výpočet reálných kořenů kvadr. rovnice
/* Vstupní parametry (předány hodnotou): 'a' ... koeficient v kvadratickém členu;  
 * 'b' ... koeficient v lineárním členu; 'd' ... diskriminant */
 
static void RealneKoreny(double a, double b, double d)
{
    /* Deklarace: 'x1' ... první reálný kořen kvadr. rovnice; 
     * 'x2' ... druhý reálný kořen kvadr. rovnice */
    double x1, x2;
    // Výpočet prvního kořenu
    x1 = (-b + Math.Sqrt(d)) / (2 * a);
    // Výpočet druhého kořenu
    x2 = (-b - Math.Sqrt(d)) / (2 * a);
    // Vypočtení hodnot kořenů - vypsání textu v konzole ('\n' - zařádkování)
    Console.WriteLine("Kořeny jsou:\n  x1 = " + x1.ToString() +
        "\n  x2 = " + x2.ToString()); 
}

Kód 3: Deklarace statické metody bez návratu s názvem RealneKoreny

Další deklarovanou metodou bez návratu je metoda KomplexniKoreny. Metoda využívá dvě lokální reálné proměnné re představující reálnou složka kořenu kvadratické rovnice a im, která představuje imaginární složku kořenu kvadratické rovnice. Tyto složku jsou připojeny do výpisu hodnot kořenů - viz Kód 4.

//--- Specifikace metody bez návratu pro výpočet komplexně sdružených kořenů kvadr. rovnice
/* Vstupní parametry (předány hodnotou): 'a' ... koeficient v kvadratickém členu;  
 * 'b' ... koeficient v lineárním členu; 'd' ... diskriminant */
static void KomplexniKoreny(double a, double b, double d)
{
    /* Deklarace: 're' ... reálná složka kořenu kvadr. rovnice; 
     * 'im' ... imaginární složka kořenu kvadr. rovnice */
    double re, im;
    // Výpočet reálné složky kořenu kvadr. rovnice
    re = -b / (2 * a);
    // Výpočet imaginární složky kořenu kvadr. rovnice
    im = Math.Sqrt(Math.Abs(d)) / (2 * a);
    // Výpis hodnot komplexních kořenů - vypsání textu v konzole ('\n' - zařádkování)
    Console.WriteLine("Kořeny jsou komplexní: \n  x1 = " + re.ToString() + " + " + 
        im.ToString() + "i\n  x2 = " + re.ToString() + " - " + im.ToString() + "i");
}

Kód 4: Deklarace statické metody bez návratu s názvem KomplexniKoreny

Poslední metodou bez návratu je metoda DvojityKoren. Tato metoda přijímá pouze dva parametry a a b, ze kterých je vypočten dvojitý reálný kořen - viz Kód 5. 

//--- Specifikace metody bez návratu pro výpočet dvojitého reálné kořenu kvadr. rovnice
/* Vstupní parametry (předány hodnotou): 'a' ... koeficient v kvadratickém členu;  
 * 'b' ... koeficient v lineárním členu */
static void DvojityKoren(double a, double b)
{
    /* Deklarace: 'x' ... dvojitý reálný kořen kvadr. rovnice */
    double x;
    // Výpočet dvojitého reálného kořenu
    x = -b / (2 * a);
    // Vypočtení hodnoty dvojitého reálného kořenu - vypsání textu v konzole
    Console.WriteLine("Dvojitý reálný kořen je:\n  x = " + x.ToString());
}

Kód 5: Deklarace statické metody bez návratu s názvem DvojityKoren