Vstup aplikace

Vstupem aplikace se rozumí veškerá data, která aplikace přijímá z vnějšího prostředí za účelem zpracování. Může se jednat o interakci s uživatelem (například zadání textu v konzoli nebo kliknutí v GUI), o data z externích zdrojů (soubory, databáze, webové služby) nebo o strojové vstupy (například signály ze senzorů).

Vstupní data jsou často ve formátu, který není přímo vhodný pro další zpracování. Proto je nutné provádět jejich převod (parsování) do potřebných datových typů.

Formáty vstupu

Vstup může mít různou podobu v závislosti na prostředí a způsobu interakce:

  • Textový vstup – běžný ve webových formulářích, konzolových aplikacích, konfiguracích.
  • Binární vstup – například při čtení datových souborů nebo komunikačních protokolů.
  • Strukturovaný vstup – jako JSON, XML, CSV – běžné při práci s API nebo uloženými daty.
  • Interaktivní vstup – události z GUI, jako kliknutí nebo pohyb myši.

Vstup v konzolové aplikaci

V konzolových aplikacích je základní metodou pro načtení vstupu uživatele metoda Console.ReadLine(), která vrací textový řetězec (string):

Console.Write("Zadejte věk: ");
string vstup = Console.ReadLine();

Hodnota načtená z konzole je vždy typu string, a proto je v některých případech nutné ji převést na jiný datový typ, například int, double, bool atd. Tomuto procesu převodu na jiný datový typ se říká parsování.

Kromě metody ReadLine() je možné využít i metodu ReadKey(), která čte stisknutí klávesy. Tedy je možné odchytit, kterou klávesu uživatel stiskl.

ConsoleKeyInfo key = Console.ReadKey(intercept: true); // nezobrazí znak v konzoli
Console.WriteLine($"Stisknuto: {key.Key}");
 
if (key.Key == ConsoleKey.Q)
{
	Console.WriteLine("Program ukončen.");
	break;
}

Parsování

Parsování je proces převodu vstupních (často textových) dat do odpovídajících datových typů, které lze efektivně zpracovávat.

Například při zadání čísla do konzole, je číslo uloženo jako řetězec, který je nutné převést na číselný typ (int, float atd.), aby bylo možné s hodnotou provádět aritmetické operace.

V .NET existuje několik běžně používaných způsobů parsování:

Convert.To...

string vstup = "123";
int cislo = Convert.ToInt32(vstup);
  • Výhody: Jednoduchá syntaxe, funguje i s hodnotou null (vrací 0).
  • Nevýhody: Při neplatném formátu vyhazuje výjimku FormatException.

int.Parse

Metoda pro zparsování řetězce na číslo. Existuje ve více variantách i double.Parse atd.

Syntax

data_type output = data_type.Parse(input);

Ukázka:

string vstup = "123";
int cislo = int.Parse(vstup);
  • Výhody: Rychlé a přímočaré. Vhodné tam, kde je vstup validní.
  • Nevýhody: Neumí pracovat s null ani neplatnými formáty – vyhazuje výjimku FormatException nebo ArgumentNullException.

int.TryParse

Metoda pro zparsování řetězce na číslo. Existuje ve více variantách i double.TryParse, atd.

Metoda vrací true/false v závislosti na úspěchu zparsování vstupu. Ve výstupním parametru (označeným out) lze po úspěšném zparsování nalézt výsledek.

Syntax

bool is_success = data_type.TryParse(input, out data_type output);
string vstup = "123";
if (!int.TryParse(vstup, out int cislo))
{
	Console.WriteLine("Neplatný vstup."); }
	return;
}
 
Console.WriteLine($"Zadané číslo: {cislo}");
  • Výhody: Bezpečný způsob bez výjimek, vhodný pro práci s nedůvěryhodnými vstupy.
  • Nevýhody: Vyžaduje použití výstupního parametru a větší množství kódu.

Important

Tento způsob je jako jediný 100% bezpečný a nikdy jeho použitím nevznikne chyba.

Práce se soubory

Načítání vstupu může probíhat i ze souborů. To je běžné u konfiguračních dat, vstupních datových sad nebo trvalého uložení předchozích vstupů.

Více o práci se soubory zde: Práce se soubory.