Pro správný chod programu je vhodné (většinou nutné) komunikovat s uživatelem. K tomuto účelu lze jako nejjednodušší možnost využít konzoli.
Pro vypsání informací na konzoli můžeme využít dvou základních příkazů a to Console.WriteLine() a Console.Write(). Příkaz Console.WriteLine() za vypsaných text vloží prázdný řádek, zatímco příkaz ConsoleWrite() vypíše text na pozici ukazatele na obrazovce. Text k vypsání se zapisuje do kulatých závorek za oběma příkazy jako parametr do kulatých závorek
Pokud chceme vypsat text uvádíme ho do uvozovek. Pokud chceme vypsat proměnnou uvádíme pouze její identifikátor (její jméno).
Console.WriteLine("prostý text k vypsání"); //vypsání prostého textu
Console.WriteLine(pom); //vypsání hodnoty proměnné pom
Pokud bychom chtěli jedním příkazem vypsat text i hodnotu proměnné, mohl by zápis vypadat následovně.
Console.WriteLine("Výsledek operace je: " + vysledek); //1
Console.WriteLine($"Výsledek operace je: {vysledek}"); //2
Console.WriteLine("Výsledek operace je: {0}", vysledek); //3
Všechny výše uvedené způsoby na konzoli vypíší stejný text. První způsob je nejjednodušší. Mezi proměnnými a a řetězci je uvedeno znaménko +. Druhá možnost uvádí přímo do textu proměnné, které se mají na danou pozici vypsat. Proměnná je zapsána do složených závorek. Před samotným řetězcem je potřeba napsat znak dolaru. Třetí uvedený způsob využívá formátovacího řetězce/formátovacích značek {0}. Ve složených závorkách se uvadí pařadí proměnné (nebo hodnoty) ze seznamu, který je uveden za čárkou za řetězcem (číslujeme od 0). Výpis lze upravit o formátovací značky.
Těmito značkami lze například předem definovat počet znaků na který se hodnota vypíše.
//Formatovany vypis
//Obecny zapis: Console.WriteLine("text k formatovani", parametry);
//{0,10} - parametr s indexem 0 uvedeny za formatovanym textem je
//vypsan na 10mist konzole zarovnany k pravemu okraji
Console.WriteLine("|{0,10}|", promenna/hodnota);
//{0,10} - parametr s indexem 0 uvedeny za formatovanym textem je
//vypsan na 10mist konzole zarovnany k levemu okraji
Console.WriteLine("|{0,-10}|", promenna/hodnota);
Nejen, že je možné zarovnávat text na určitý počet znaků na levou nebo pravou stranu, ale navíc je v případě výpisu čísel možné definovat i například počet desetinných míst nebo formát v jakém se mají vypsat. Formátové specifikace se uvádí za dvojtečku. Níže jsou uvedeny některé základní formátové specifikace.
V základu je v jazyku C# implementováno několik základních způsobů formátování číselných hodnot. viz tabulka níže:
| Specifikátor | Popis | Formát |
|---|---|---|
| c | měna | {0:c} |
| d | celé číslo | {0:d} |
| e | vědecký zápis | {0:e} |
| n | celé číslo s mezerami po tisících | {0:n} |
| x | hexadecimální hodnota | {0:x} |
Praktické ukázky použití těchto formátů jsou uvedeny níže. Je potřeba si uvědomit, že je možné skládat delší řetězce s použitím více parametrů, které nemusí být uvedeny jako hodnoty (jak je ukázáno níže) ale můžou být zapsány i jako proměnné.
//MĚNA
Console.WriteLine("{0:c}", 123456.7898); //1
Console.WriteLine("{0:c1}", 123456.78); //2
Console.WriteLine("{0:c5}", 123456.78); //3
/*
123 456,79 Kč 1 - standardně je desetinná část uvedena na dvě desetinná místa
123 456,8 Kč 2 - pokud chceme uvádět konkrétní počet desetinných míst,
stačí za písmeno **c** uvést počet požadovaných desetinných míst.
Číslo je zaokrouhleno.
123 456,78000 Kč 3 - pokud je počet desetinných míst větší než reálný počet
desetinných míst je číslo doplněno nulami.
*/
//CELÉ ČÍSLO
Console.WriteLine("{0:d}", 123456); //1
Console.WriteLine("{0:d10}", 123456); //2
/*
123456 1 - v základu se takto formátované číslo výpiše bez jakékoli úpravy
0000123456 2 - pokud uvedeme číslo za písmenem **d** je číslo doplněno na požadovanou
délku nulami. Pokud je číslo udávající počet míst menší než
celková délka, je požadavek na počet míst ignorován.
*/
//VĚDECKÝ ZÁPIS
Console.WriteLine("{0:e}", 12.3456789); //1
Console.WriteLine("{0:e}", 12.34); //2
Console.WriteLine("{0:e1}", 123456.23456); //3
Console.WriteLine("{0:e3}", 123456.23456); //4
/*
1,234568e+001 1 - stadnardní délka desetinného rozvoje je 6 cifer, zbytek je zaokrouhlen
1,234000e+001 2 - v případě, že je desetinný rozvoj kratší než 6 cifer je doplněn o 0
1,2e+005 3 - číslo za písmenem **e** definuje počet desetinných míst. číslo je zaokrouhleno
1,235e+005 4 - --//--
*/
//CELÉ ČÍSLO S MEZERAMI PO TISÍCÍCH
Console.WriteLine("{0:n}", 1234567.456789); //1
Console.WriteLine("{0:n3}", 1234567.4567); //2
Console.WriteLine("{0:n6}", 1234567.2345); //3
/*
1 234 567,46 1 - standardní délka řetězce jsou dvě cifry za desetinnou čárkou
1 234 567,457 2 - číslo za písmenem **n** udává počet cifer za desetinnou čárkou.
Pokud je délka desetinné části delší je zaokrouhlen.
1 234 567,234500 3 - číslo za písmenem **n** udává počet cifer za desetinnou čárkou.
Pokud je délka desetinné části kratší je doplněna 0.
*/
//HEXADECIMÁLNÍ HODNOTA
Console.WriteLine("{0:x}", 1234); //1
Console.WriteLine("{0:x4}", 1234); //2
Console.WriteLine("{0:x16}", 1234567); //3
/*
4d2 1 - hexadecimální zápis vstupní hodnoty
04d2 2 - hexadecimální zápis vstupní hodnoty, doplněný 0 na délku 4
000000000012d687 3 - hexadecimální zápis vstupní hodnoty, doplněný 0 na délku 16
*/
Stejně jako vypisování informací na konzoli, je často potřeba načíst informace od uživatele. Tyto informace poté ukládáme do proměnné a následně s nimi můžeme pracovat. K tomuto účelu využíváme příkaz Console.ReadLine(), který jako výsledek vrací textový řetězec načtený od uživatele zakončený „entrem“ (symbolem prázdného řádku „\n“).
V tomto se ale skrývá problém, který musíme vyřešit. Pokud načítáme hodnoty od uživatele získáme vždy jen textový řetězec. Pokud bychom tento text chtěli ukládat jako číslo, bude nám spuštěný program hlásit chybu. Je tedy nejprve nutné tento text „převést“ do podoby čísla, pomocí „příkazu“ Parse.
promInt = int.Parse(Console.ReadLine());
promDouble = double.Parse(Console.ReadLine());
string promRetezec = Console.ReadLine();