Kvadratická rovnice
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