Představení jazyka C#
V následujících kapitolách se seznámíme se základní konstrukcí jazyka C#, základními pojmy a principy, které jsme již poznali v předchozích kapitolách týkající se algoritmizace. Tyto a další principy implementujeme pomocí tohoto programovacího jazyka.
11. Zjednodušený příkaz výstupu
V předchozí kapitole jsme si ukázali, jak načíst hodnotu do proměnné. Jelikož vytvářená aplikace by měla být uživatelsky přívětivá, je vhodné při načítání nějaké vstupní hodnoty, vyzvat uživatele k zadání této hodnoty. Pro výzvu využijeme příkaz Write do jehož kulatých závorek, které představují seznam vstupů, napíšeme text v horních dvojitých uvozovkách (takto se definuje textový řetězec – datový typ string). Příkaz Write nám zajistí, že kurzor se neumístí na nový řádek, ale bude umístěn za vypsaným textem (oproti příkazu WriteLine, který po vypsání textu umístí kurzor na nový řádek).
Výpis textu
Pro demonstraci principu výpisu využijeme již dříve vytvořený základní algoritmus HelloWorld. V tomto jednoduchém programu pouze vypíšeme text "Hello, World!".
Ilustrativní příklad HelloWorld
Algoritmus HelloWorld- Popis: Vývojový diagram výpisu textu "Hello, World!"
- Zadání: Zkuste vymyslet, jak byste zaznamenali výpis textu pomocí vývojového diagramu, včetně komentáře, který popisuje, co daná značka výpisu provádí
Program HelloWorld
- Popis: Program pro výpis textu
- Zadání: Na základě algoritmu HelloWorld vymyslete, jak byste v hlavní metodě Main naprogramovali výpis textu "Hello, World!" pomocí konzolové aplikace v C#, včetně komentáře který popisuje, co příkaz zajišťuje
- Řešení: Bude postupně probráno v následujícím textu
Následující značka definuje, jak bychom ve vývojovém diagramu zaznamenali výpis textu – viz Obrázek 1.
![]()
Obrázek 1: Příklad výpisu textu - algoritmus HelloWorld
V tomto případě se jedná o výpis textu (v C# datový typ string) v hlavním programu konzolové aplikace pomocí příkazu načtení WriteLine, který je definován ve třídě Console, tzn., že pokud budeme chtít zavolat tento příkaz, musíme napsat Console.WriteLine (po výpisu textu umístí kurzor na další řádek) - viz Kód 1. Všimněte si, že textový řetězec umístěný v dvojitých uvozovkách (datový typ string) je umístěn do kulaté závorky za příkaz výpisu. Příkaz se od jiného příkazu odděluje středníkem!
Další verzí příkazu výpisu je příkaz Write, ten ale na rozdíl od příkazu WriteLine neumístí kurzor na další řádek.
//Výpis textu Console.WriteLine("Hello, World!");
Kód 1: Příklad výpisu textu - program HelloWorld
Pokud chceme vypsat v konzoli text a využíváme jmenný prostor System, můžeme pak pouze napsat příkaz Console.WriteLine namísto zdlouhavého System.Console. WriteLine.
Vzhledem k tomu, že pracujeme s konzolovou aplikací, využili jsme ve zdrojovém kódu příkaz Console.ReadKey(). Tento příkaz jsme umístili před koncovou složenou závorku } těla hlavní metody, která značí konec provádění kódu v metodě. Příkaz zajistí, že program bude čekat, až uživatel stiskne nějakou klávesu. Náš kompilovaný program by bez tohoto příkazu totiž skončil a my bychom si ani nestihli přečíst výsledek, pokud by byl v programu vypisován. Celý kód hlavního programu by vypadal následovně - viz Kód 2.
static void Main(string[] args) { //Výpis textu Console.WriteLine("Hello, World!"); //Čekání na stisk klávesy -> ukončení programu Console.ReadKey(); }
Kód 2: Deklarace hlavní metody Main a výpis textu - program HelloWorld
Na následujícím výpisu v konzoli (výstupy programu budou formátovány tímto způsobem) vidíme, že textový řetězec byl vypsán v konzole naší aplikace – viz Výstup programu - Kód 2. Po výpisu program čeká na stisknutí nějaké klávesy (znaku, nebo funkční klávesy). Po stisknutí klávesy bude program ukončen (ve skutečnosti si program načte znak, nebo funkční klávesu, ale není definováno, kam má hodnotu uložit, tudíž je hodnota zapomenuta a nastane další krok programu, což je konec programu).
Hello, World!Výstup programu - Kód 2: Výpis textu
Výpis hodnoty v proměnné
Jak je to s výpisem načtené hodnoty uložené v proměnné? To nám osvětlí další program HelloWorldNacteni, který je modifikací základního algoritmu HelloWorld.
Ilustrativní příklad HelloWorldNacteni
Algoritmus HelloWorldNacteni
- Popis: Vývojový diagram výpisu proměnné v níž je uložen text zadaný uživatelem
- Zadání: Zkuste vymyslet, jak byste zaznamenali výpis hodnoty zadané uživatelem uložené v proměnné s názvem osloveni pomocí vývojového diagramu, včetně komentářů, které popisují, co jednotlivé značky zajišťují
- Řešení: https://phix.zcu.cz/moodle/pluginfile.php/286373/mod_book/chapter/61236/Algoritmus_HelloWorldNacteni.png?time=1577571268914
Na základě vývojového diagramu HelloWorldNacteni vytvoříme v konzolové aplikaci program, na kterém si vysvětlíme základní příkaz výstupu - výpisu.
Program HelloWorldNacteni
- Popis: Program pro výpis textu
- Zadání: Na základě algoritmu HelloWorldNacteni vymyslete, jak byste v hlavní metodě Main naprogramovali výpis načteného hodnoty (textu) zadané uživatelem uložené do proměnné s názvem osloveni pomocí konzolové aplikace v C#, včetně komentářů, které popisují, co jednotlivé příkazy zajišťují
- Řešení: Bude postupně probráno v následujícím textu
![]()
Obrázek 2: Příklad
výpisu textu v proměnné osloveni - algoritmus HelloWorldNacteni
Následující výřez zdrojového kódu ukazuje, jak bychom nechali program vypsat načtenou hodnotu do proměnné oslovení, která je datového typu string - viz Kód 3. Identifikátor proměnné stačí pouze napsat do kulaté závorky za příkaz.
//Výpis hodnoty uložené v proměnné Console.WriteLine(osloveni);
Kód 3: Příklad výpisu textu - program HelloWorld
Pojďme si ale nejprve celý program sestrojený na základě algoritmu projít postupně. Nejprve musíme deklarovat proměnnou osloveni, do které budeme načítat hodnotu - text (datový typ string). Aby uživatel věděl, že má zadat nějaký text, musíme uživatele o této skutečnosti informovat pomocí výpisu v konzoli. Po výpisu bude provedeno načtení hodnoty z klávesnici a její uložení (přiřazení) do proměnné osloveni. Uživatelem zadaný text pomocí klávesnice, bude po stisknutí klávesy Enter načten do proměnné osloveni a program v konzoli umístí kurzor na nový řádek. Pomocí příkazu WriteLine tuto načtenou hodnotu vypíšeme. Nezapomeňte na příkaz ReadKey, abychom si vypsanou hodnotu stihli přečíst. Celý hlavní program - metoda Main - by vypadal následovně - viz Kód 4.
static void Main(string[] args) { //Deklarace proměnné string osloveni; //Oslovení uživatele pro zadání textu Console.WriteLine("Zadejte text:"); //Načtení hodnoty (textu) do proměnné osloveni = Console.ReadLine(); //Výpis hodnoty uložené v proměnné Console.WriteLine(osloveni); //Čekání na stisk klávesy -> ukončení programu Console.ReadKey(); }
Kód 4: Deklarace hlavní metody Main a výpis načteného textu uloženého v proměnné osloveni - program HelloWorldNacteni
Na následujícím výpisu v konzoli vidíme, že uživatel zadal na druhé řádce v konzoli textový řetězec, který byl následně vypsán v další řádce naší konzolové aplikace – viz Výstup programu - Kód 4.
Zadejte text:
Toto je zadaný text
Toto je zadaný text
Výstup programu - Kód 4: Výpis načtené textu uloženého v proměnné
A jak je to s výpisem čísel? U předchozího ilustrativního příkladu Kalkulacka víme, jak načíst do proměnné celé číslo (proměnná kod byla deklarována jako datový typ int). Museli jsme provést konverzi textového řetězce na celé číslo pomocí příkazu Parse. Obdobným způsobem, ale obráceně, musíme postupovat i výpisu obsahu číselné proměnné. Více již v následujícím příkladu.
Ilustrativní příklad Kalkulacka
Algoritmus Kalkulacka
- Popis: Vývojový diagram pro řešení aritmetických operací u dvou zadaných čísel
- Zadání: Zkuste navrhnout algoritmus, který řeší základní aritmetické operace podle zadaného číselného kódu (1 … sčítání, 2 … odečítání, 3 … násobení a 4 … dělení) u dvou uživatelem zadaných čísel a a b
- Řešení: https://phix.zcu.cz/moodle/pluginfile.php/286676/mod_book/chapter/62102/Algoritmus_Kalkulacka.png
Na následujícím výřezu zdrojového kódu implementovaného v hlavní metodě Main podle algoritmu Kalkulacka vidíme, že na začátku jsou deklarovány tři proměnné, do kterých budeme ukládat desetinná čísla. Jedná se o typ double (o datových typech se více dozvíme později) - viz Kód 5.
Pro výpis textu "Výsledek C:" spojeného s hodnotou uloženou v proměnné c (spojení je pomocí operátoru +) použijeme znovu příkaz WriteLine jehož vstupní argumenty jsou umístěny do kulaté závorky.
//Deklarace reálných proměnných - datový typ double double a, b, c; //... //Výpis textu s hodnotou výsledku Console.WriteLine("Výsledek C: " + c);
Kód 5: Příklad výpisu textu a hodnoty uložené v proměnné c
Asi si říkáte, jak to, že příkaz WriteLine, který požaduje jako vstupní argument text, dokáže vypsat jak text, tak i hodnotu reálné proměnné, která text není. Výhodou konzolové aplikace, že tuto konverzi provede za nás (datový typ double konvertovala na datový typ string). Pokud bychom chtěli postupovat zcela správně, měli bychom využít metodu konverze např. příkaz ToString - viz Kód 6. Metodu vybereme pomocí tečkové notace, tzn. uvedeme tečku za identifikátorem proměnné a vybereme příslušnou metodu. Tato metoda nemá žádné vstupní argumenty, proto za ToString uvedeme prázdné závorky.
//Výpis textu + konverze reálného čísla na text Console.WriteLine("Výsledek C: " + c.ToString());
Kód 6: Příklad výpisu textu a konvertované hodnoty uložené v proměnné c
Obdobně bychom mohli využít metody třídy Convert, které dokáží provádět konverze i do jiných datových typů - viz Kód 7.
//Výpis textu + konverze reálného čísla na text Console.WriteLine("Výsledek C: " + Convert.ToString(c));
Kód 7: Příklad výpisu textu a konvertované hodnoty uložené v proměnné c - třída Convert
Další možností jako vypsat hodnotu uložené
v proměnné je za použití operátoru $.
Tento symbol na začátku tzv. interpolovaného
textového řetězce (anglicky „String
Interpolation“)
označuje, že se jedná o řetězec, jehož výrazy uzavřené ve složených závorkách, by měly být nejprve vyhodnoceny a následně vráceny jako text. Interpolace
řetězce je lépe čitelná, méně náchylná k chybám a také méně náročnější na
paměť, než použití operátoru +, se
kterým pracuje .NET Framework.
//Interpolace řetězce Console.WriteLine($"Výsledek C: {c}");
Kód 8: Příklad výpisu textu a konvertované hodnoty uložené v proměnné c - interpolace řetězce
My budeme zejména využívat pro výpis hodnoty proměnné (nebo více proměnných) příkaz WriteLine (lze použít i příkaz Write) takovým způsobem, že do závorky za tento příkaz umístíme text, který chceme vypsat včetně indexu proměnné uzavřeného ve složených závorkách (index první proměnné má hodnotu 0). Za čárku v kulatých závorkách umístíme název proměnné, jejíž aktuální hodnotu chceme vypsat – viz Kód 9. Výpis v konzoli je stejný jako v předchozím případě (kromě prázdného řádku s kurzorem).
//Výpis textu + konverze celého čísla na text Console.WriteLine("Výsledek C: {0}", c);
Kód 8: Příklad výpisu textu a konvertované hodnoty uložené v proměnné c
Všechny předchozí by vypadaly totožně (za předpokladu, že budeme vypisovat stejnou hodnotu v proměnné) - viz Výstup programu - Kód 5, 6, 7, 8. Ve výstupu vidíme, že se reálné číslo formátuje podle místních zvyklostí, tzn., že pokud je v operačním systému nastavena česká lokalizace, tak se vypíše česká desetinná čárka, namísto americké desetinné tečky. To samé platí i pro vstup, tj. zadávání reálného čísla jako vstup do programu, budeme zadávat číslo s desetinnou čárkou.
Výsledek C: 2,5Výstup programu - Kód 5, 6, 7, 8: Příklad výpisu textu a konvertované hodnoty 2.5 uložené v proměnné c
Abychom ukázali případ výpisu více proměnných, použijeme dvě číselné proměnné x a y. První celočíselnou proměnnou x (datový typ int) inicializujeme hodnotou 0. Druhou reálnou proměnnou b (datový typ double), inicializujeme hodnotu 1.5. Kód pro výpis hodnot v těchto proměnných by byl následující – viz Kód 9.
//Deklarace celočíselné proměnné včetně inicializace - datový typ int int x = 0; //Deklarace reálné proměnné včetně inicializace - datový typ double double y = 1.5; //Výpis textu + konverze více proměnných Console.Write("Aktuální hodnota x: {0} a y: {1}", x, y);
Kód 9: Příklad výpisu textu a hodnot čísel uložených v celočíselné a reálné proměnné
Výpisu textu a hodnot proměnných v konzoli by vypadal následovně – viz Výstup programu - Kód 9.
Aktuální hodnota x: 0 a y: 1,5
Výstup programu - Kód 9: Příklad výpisu textu a hodnot čísel uložených v celočíselné a reálné proměnné