2. NejvetsiZe2CiselVcetneRovnosti

2.3. Výsledný kód

Následující zdrojový kód je kompletací předešlých kódů programu NejvetsiZe2CiselVcetneRovnosti, který je umístěn v souboru Program.cs - viz Kód 1.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace NejvetsiZe2CiselVcetneRovnosti
{
    class Program
    {
        static void Main(string[] args)
        {
            /* Deklarace: 'a' ... první zadané celé číslo; 'b' ... druhé zadané celé číslo;
             * 'max' ... hodnota většího čísla  */
            int a, b, max;
            // Deklarace: 'text' ... textový řetězec pro uložení prvního výstupu metody se 2 výstupy  
            string nazevMax;
 
            // Výzva k zadání prvního celého čísla
            Console.Write("Zadejte a: ");
            /* Načtení druhého celého čísla a test, zda proběhla konverze celého 
             * čísla (návrat metody konverze je boolean) */
            bool konverze = int.TryParse(Console.ReadLine(), out a);
            // Pokud neproběhla konverze
            if (konverze == false)
            {
                // Výpis chyby při konverzi
                Console.WriteLine("Chyba při konverzi na celé číslo");
                // Čekání na stisk klávesy
                Console.ReadKey();
                // Ukončení programu
                return;
            }
 
            // Výzva k zadání druhého celého čísla
            Console.Write("Zadejte b: ");
            // Test, zda neproběhla konverze celého čísla (návrat metody konverze je boolean)
            if (int.TryParse(Console.ReadLine(), out b) == false)
            {
                // Výpis chyby při konverzi
                Console.WriteLine("Chyba při konverzi na celé číslo");
                // Čekání na stisk klávesy
                Console.ReadKey();
                // Ukončení programu
                return;
            }
 
            // Výpis textu pro oddělení porovnání v hlavním programu
            Console.WriteLine("Porovnání dvou čísel v hlavním programu:");
            // Test, zda první číslo je větší než druhé
            if (a > b)
            {
                // První číslo je větší než druhé
                Console.WriteLine("Největší je a = {0}", a);
            }
            else
            {
                // Test, zda zadaná čísla jsou si rovny
                if (a == b)
                {
                    // Rovnost obou zadaných čísel
                    Console.WriteLine("Největší je a = b = {0}", b);
                }
                else
                {
                    /* První zadané číslo 'a' není rovné druhému číslu 'b' 
                     * a zároveň druhé číslo 'b' je větší než první 'a' */
                    Console.WriteLine("Největší je b = {0}", b);
                }
            }
 
            // Výpis textu pro oddělení porovnání provedeného pomocí zavolání metody s návratem
            Console.WriteLine("Porovnání dvou čísel pomocí metody s návratem:");
 
            // Vypsání textu spolu s návratem funkce (výsledek porovnání)
            Console.WriteLine("Největší je {0}", VetsiRovno(a, b, "a", "b"));
 
            // Výpis textu pro oddělení porovnání provedeného pomocí zavolání metody se dvěma návraty
            Console.WriteLine("Porovnání dvou čísel pomocí metody s dvěma návraty:");
 
            // Volání metody se 2 návraty a přiřazení do proměnných
            (nazevMax, max) = VetsiRovno2Vystupy(a, b, "a", "b");
 
            // Vypsání textu spolu s návratem názvu proměnné a její hodnoty (výsledek porovnání)
            Console.WriteLine("Největší je {0}{1}", nazevMax, max);
 
            // Výpis textu pro oddělení porovnání provedeného pomocí zavolání metody s výstupními parametry
            Console.WriteLine("Porovnání dvou čísel pomocí metody s výstupními parametry:");
 
            // Volání metody se 2 návraty a přiřazení do proměnných
            VetsiRovno(a, b, "a", "b", out nazevMax, out max);
 
            // Vypsání textu spolu s návratem názvu proměnné a její hodnoty (výsledek porovnání)
            Console.WriteLine("Největší je {0}{1}", nazevMax, max);
 
            // Čekání na stisk klávesy -> ukončení programu
            Console.ReadKey();
        }
 
        // Metoda s celočíselným návratem
        /* 'x' ... hodnota prvního celého čísla; 'y' ... hodnota druhého celého čísla;
         * 'identifikatorPrvniCislo' ... identifikátor prvního celého čísla uloženého 
         * do formálního parametru metody; 'y' ... identifikátor druhého celého čísla; */
 
        static string VetsiRovno(int x, int y, string identifikatorPrvniCislo, 
            string identifikatorDruheCislo)
        {
            string identifikatorHodnotaVetsiho;
 
            // Test, zda první číslo je větší než druhé
            if (x > y)
            {
                // První číslo je větší než druhé číslo
                identifikatorHodnotaVetsiho = identifikatorPrvniCislo + " = " + x;
            }
            else
            {
                // Test, zda zadaná čísla jsou si rovny
                if (x == y)
                {
                    // Rovnost obou zadaných čísel
                    identifikatorHodnotaVetsiho = identifikatorPrvniCislo + " = " + identifikatorDruheCislo + " = " + y;
                }
                else
                {
                    // První zadané číslo není rovné druhému číslu (a zároveň druhé číslo je větší než první)
                    identifikatorHodnotaVetsiho = identifikatorDruheCislo + " = " + y;
                }
            }
 
            // Návrat názvu a hodnoty většího čísla
            return identifikatorHodnotaVetsiho;
        }
 
        // Přetížená metoda s výstupními parametry
        static void VetsiRovno(int x, int y, string identifikatorPrvniCislo,
            string identifikatorDruheCislo, out string identifikatorMax, out int max)
        {
            // Test, zda první číslo je větší než druhé
            if (x > y)
            {
                // Přiřazení názvu ve formálnímu parametru výstupnímu parametru 
                identifikatorMax = identifikatorPrvniCislo + " = ";
                // Přiřazení hodnoty většího čísla výstupnímu parametru (první číslo je větší)
                max = x;
            }
            else
            {
                // Test, zda zadaná čísla jsou si rovnym
                if (x == y)
                {
                    // Přiřazení názvu ve formálnímu parametru výstupnímu parametru 
                    identifikatorMax = identifikatorPrvniCislo + " = " + identifikatorDruheCislo + " = ";
                    // Přiřazení hodnoty většího čísla výstupnímu parametru (obě čísla jsou si rovna)
                    max = y;
                }
                else
                {
                    // Přiřazení názvu ve formálnímu parametru výstupnímu parametru 
                    identifikatorMax = identifikatorDruheCislo + " = ";
                    // Přiřazení hodnoty většího čísla výstupnímu parametru (první číslo je větší)
                    max = y;
                }
            }
        }
 
        //Metoda se dvěma návraty
        static (string, int) VetsiRovno2Vystupy(int x, int y, string identifikatorPrvniCislo,
            string identifikatorDruheCislo)
        {
            // Test, zda první číslo je větší než druhé
            if (x > y)
            {
                // Návrat názvu a hodnoty většího čísla(první číslo je větší)
                return (identifikatorPrvniCislo + " = ", x);
            }
            else
            {
                // Test, zda zadaná čísla jsou si rovny
                if (x == y)
                {
                    // Návrat názvu a hodnoty většího čísla (rovnost obou zadaných čísel)
                    return (identifikatorPrvniCislo + " = " + identifikatorDruheCislo + " = ", y);
                }
                else
                {
                    // Návrat názvu a hodnoty většího čísla (druhé číslo je větší)
                    return (identifikatorDruheCislo + " = ", y);
                }
            }
        }
    }
}

Kód 1: Program NejvetsiZe2CiselVcetneRovnosti - deklarace hlavní statické metody Main včetně deklarací dalších metod


Výstup programu

Na následujícím výstupu programu vidíme výpis největší hodnoty z obou porovnaných hodnot - viz Výstup programu 1 - Kód 1. Jednotlivá porovnání jsou rozdělena do různých sekcí, abychom věděli, zda porovnání bylo provedeno v hlavní metodě, pomocí metody s návratem, metody se dvěma návraty, nebo pomocí metody s výstupními parametry. Po provedení výpisu konzolová aplikace čeká na stisk klávesy, aby po stisku klávesy byla následně ukončena. Na prvním výstupu v konzole vidíme, že největší číslo je druhé zadané číslo. 


Výstup programu 1 - Kód 1: Ukázka výpisu větší hodnoty v hlavní statické metodě programu NejvetsiZe2CiselVcetneRovnosti

Pokud bylo zadáno stejné číslo, je vypsána rovnost obou čísel - viz Výstup programu 2 - Kód 1.


Výstup programu 2 - Kód 1: Ukázka výpisu stejných hodnot v hlavní statické metodě programu NejvetsiZe2CiselVcetneRovnosti

Pokud uživatel zadal špatný číselný vstup (např. text "bflm") návrat metody TryParse nabývá hodnoty false a je spuštěn příkaz výpisu chybové hlášky. Abychom si mohli přečíst chybovou hlášku, je za příkaz výpisu v kódu umístěn příkaz pro načtení znaku. Po stisku klávesy následuje ukončení programu pomocí příkazu return - viz Výstup programu 3 - Kód 1.


Výstup programu 3 - Kód 1: Ukázka výpisu chyby při konverzi v hlavní statické metodě programu NejvetsiZe2CiselVcetneRovnosti