Zamiluj sa s nami do IT! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

3. diel - Textový výstup do okna konzoly a zložené formátovanie

V predchádzajúcej lekcii, Analýza dát zo vstupu z klávesnice , sme sa dozvedeli, čo všetko možno zistiť zo zadávaných dát z klávesnice a ukázali sme si postupy, ako možno tieto informácie získať a nakladať s nimi.

V dnešnom C# tutoriálu si ukážeme, ako pomocou metód triedy Console vypisovať text do okna konzoly o niečo efektívnejšie, než sme tak robili doteraz. Čo sa týka výstupu, tak pre konzolové aplikácie platí jedno zásadné obmedzenia. Okno konzoly dokáže vypísať iba text. Väčšinu užívateľov taký výstup v dnešnej dobe neuspokojí, však pre testovanie jednoduchých konzolových aplikácií je to postačujúce.

Pomocou metód a vlastností triedy Console, určených pre výstup, môžeme našim aplikáciám umožniť:

  • písať do okna konzoly znaky rôznych znakových sád
  • meniť farbu vypisovaného textu aj pozadie
  • posúvať kurzor po ploche okna, a tiež meniť jeho vlastnosti

Pre samotný výpis existujú v zásade dve metódy, a to Write() a WriteLine(). S oboma sme sa už v predchádzajúcich lekciách zameraných na vstup znakov z klávesnice stretli, avšak zatiaľ sme ich používali v ich najjednoduchšej forme. V dnešnom tutoriálu sa pozrieme na vypisovanie textu pomocou metódy Write().

Ako už vieme z kurzu Základná konštrukcia jazyka C #. NET, metóda Write() vypíše do okna konzoly to, čo špecifikujeme v zátvorkách. Môže to byť:

  • reťazec znakov, ktorý uzavrieme do úvodzoviek
  • premenná
  • kombinácia oboch

Pre zopakovanie uveďme príklad kombinácie výpisu reťazcov znakov a premenných. Všimnime si, že jednotlivé položky výpisu sa prepájajú znamienkom +:

Klikni pre editáciu
  •             int vek = 25;
                int vaha = 86;
                int vyska = 178;
                Console.Write("Jan má " + vek + " rokov, váži " + vaha + " kg a meria " + vyska + " cm.");
    
    • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

    výstup:

    Konzolová aplikácia
    Jan má 25 rokov, váži 86 kg a meria 178 cm.

    Zložené formátovanie

    V lekcii Typový systém druhýkrát: Dátové typy v C# .NET sme sa zoznámili s jednoduchou formou zloženého formátovania. Ukážme si teda, ako docieliť rovnaký výsledok ako v predchádzajúcom prípade pomocou zloženého formátovania:

    Klikni pre editáciu
    •           int vek = 25;
                int vaha = 86;
                int vyska = 178;
                Console.Write("Jan má {0} rokov, váži {1} kg a meria {2} cm.", vek, vaha, vyska);
      
      • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

      výstup:

      Konzolová aplikácia
      Jan má 25 rokov, váži 86 kg a meria 178 cm.

      Vidíme, že výsledok je zhodný, avšak použitím zloženého formátovanie je kód kratšie a prehľadnejšie.

      Ešte väčšie prehľadnosti môžeme docieliť nahradením funkcie zloženého formátovania interpolovaným reťazcom:

      int vek = 25;
      int vaha = 86;
      int vyska = 178;
      Console.Write($"Jan má {vek} rokov, váži {vaha} kg a meria {vyska} cm.");

      výstup:

      Konzolová aplikácia
      Jan má 25 rokov, váži 86 kg a meria 178 cm.

      Interpolovaný reťazec je dostupný od verzie C# 6.0.

      Zástupné značky

      Princípom zloženého formátovanie je vkladanie takzvaných zástupných značek do reťazca, namiesto ktorých sa pri výpise zobrazia hodnoty premenných, ktoré sú vypísané za reťazcom v danom poradí. Zástupné značky sa píšu do zložených zátvoriek a vždy začínajú nulou. V predchádzajúcom príklade prislúcha teda premenné vek zástupná značku {0}, vaha má zástupnú značku {1} a vyska má zástupnú značku {2}. Zástupné značky sa ale nemusí vypisovať v tom poradí, v akom sú očíslované. Napr. {2} môže byť volaná pred {1}, a tiež sa na jednu premennú môžu odkazovať v textovom reťazci viackrát, napríklad:

      Klikni pre editáciu
      •           string zena = "Eva";
                  string muz = "Jan";
                  string zvire = "kone";
                  Console.Write("{1} má {2}, {0} má taky {2}.", muz, zena, zvire);
        
        • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

        výstup:

        Konzolová aplikácia
        Eva má koňa, Jan má taky kone.

        Požiadavka na zarovnanie

        V zložených zátvorkách môže byť okrem samotnej pozície zástupné značky aj požiadavka na zarovnanie, ktorý je oddelený čiarkou. Ten sa udáva ako celé číslo, ktoré reprezentuje počet znakov, na ktorý sa vypisovanie premenná doplní medzerami. Ak je číslo záporné, premenná sa zarovná doľava, ak je kladné, zarovná sa doprava. Toho využívame v tabuľkových výpisoch.

        Napríklad v nasledujúcom príklade vyhradíme pre názov nákladu 11 znakov a zarovnáme ho doľava, pre hmotnosť vyhradíme 5 znakov a zarovnáme ju doprava:

        Klikni pre editáciu
        •           string[] naklad = { "uhlie", "zemiaky", "drevo", "piesok" };
                    int[] hmotnost = { 20, 8, 34, 154 };
                    for (int i = 0; i < 4; i++)
                      Console.Write("{0,-11} {1,5} ton\n", naklad[i], hmotnost[i]);
          
          • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

          výstup:

          Konzolová aplikácia
          uhlie          20 tun
          zemiaky       8 tun
          drevo         34 tun
          piesok        154 tun

          Požiadavka na formát

          Okrem požiadavky na zarovnanie môžeme pridať do zložených zátvoriek zástupných značiek aj požiadavka na formát, v akom sa má daná premenná zobraziť. Akékoľvek číslo tak môžeme zobraziť v hexadecimálne (Špecifikátor formátu X), vo vedeckom formáte ako číslo × 10^n (Špecifikátor formátu E), alebo v desiatkovej sústave (Špecifikátor formátu N).

          Špecifikátor formáte sa oddeľuje dvojbodkou. V nasledujúcom príklade sa vypíše jedno a to isté číslo reprezentovanej zástupnú značkou {0} vo formáte X, E a N:

          Klikni pre editáciu
          •           int cislo = 56;
                      Console.Write("Číslo {0} vo formáte X={0:X}, E={0:E} a N={0:N}", cislo);
            
            • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

            výstup:

            Konzolová aplikácia
            Číslo 56 vo formáte X=38, E=5,600000E+001 a N=56,00

            Všimnime si, že číslo v desiatkovej sústave môžeme priamo zobraziť v šestnástkovej sústave bez toho aby sme ich museli prevádzať. Samotné číslo sa nemení a zostáva uložené v desiatkovej sústave.

            Špecifikátor formátu N pre desiatkovú sústavu môže byť nasledovaný celým číslom, ktoré udáva počet zobrazovaných desatinných čísel, pričom pri zobrazovaní sa zaokrúhľuje. Opäť ale platí, že hodnota v premennej cislo sa nemení. napríklad:

            Klikni pre editáciu
            • double cislo = 56.2356894;
              Console.Write("Číslo {0} vo formáte N1={0:N1}, N2={0:N2}, N3={0:N3}, N4={0:N4}", cislo);
              
              • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

              výstup:

              Konzolová aplikácia
              Číslo 56,2356894 ve formátu N1=56,2, N2=56,24, N3=56,236, N4=56,2357

              Úplné zložené formátovanie

              Samozrejme, že zástupné značky môžu obsahovať ako požiadavka na zarovnanie, tak aj požiadavka na formát. To je výhodné pri výpise hodnôt napr. Do tabuľky. Ak má číslo menej desatinných miest, doplní sa na požadovaný počet desatinných miest nuly. Ak má číslo viac desatinných miest, zaokrúhli sa.

              V nasledujúcom príklade pre každé zobrazované číslo reprezentovanej zástupnú značkou {1} vyhradíme 8 znakov, zarovnáme je doprava a vypíšeme je s presnosťou na dve desatinné miesta:

              Klikni pre editáciu
              •           double[] cislo = { 25.3, 189, 2.56698, 1896.356 };
                          for (int i = 0; i < 4; i++)
                            Console.Write("číslo {0} = {1,8:N2}\n", i, cislo[i]);
                
                • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

                výstup:

                Konzolová aplikácia
                číslo 0 =    25,30
                číslo 1 =   189,00
                číslo 2 =     2,57
                číslo 3 = 1 896,36

                Ostatné špecifikátory formáte

                Špecifikátorov formátu je samozrejme viac, než sme zatiaľ uviedli. Sú to napríklad C - Špecifikátor pre menu, P - Špecifikátor pre percenta, alebo celá skupina formátovacích značiek pre dátum a čas.

                Ukážeme si, ako je možné vypísať aktuálny čas v dlhom formáte hh:mm:ss (formátovacie značka T) a v krátkom formáte hh:mm (formátovacie značka t):

                Klikni pre editáciu
                •           Console.Write("Aktuálny čas T je: {0:T}", DateTime.Now);
                            Console.Write("\nAktuálny čas t je: {0:t}", DateTime.Now);
                  
                  • Skontroluj, či výstupy programu zodpovedajú predlohe. S inými textami testy neprejdú.

                  výstup:

                  Konzolová aplikácia
                  Aktuálny čas T je: 17:41:36
                  Aktuálny čas t je: 17:41

                   

                  Ako sa ti páči článok?
                  Pred uložením hodnotenia, popíš prosím autorovi, čo je zleZnakov 0 z 50-500
                  Ako sa ti kurz páči?
                  Tvoje hodnotenie kurzuZnakov 0 z 50-500
                  Predchádzajúci článok
                  Analýza dát zo vstupu z klávesnice
                  Všetky články v sekcii
                  Konzoly C # .NET a jej možnosti
                  Článok pre vás napísal Luděk Novotný
                  Avatar
                  Užívateľské hodnotenie:
                  Ešte nikto nehodnotil, buď prvý!
                  Autor je technik, má rád stručné a jasné texty, a tak se také snaží psát články pro vás.
                  Aktivity