Programování C#
| Název školy | Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace | ||
| Adresa školky | Kostelní 134, 411 08 Štětí | ||
| IČ | 46773509 | ||
| Název operačního programu | OP Vzdělávání pro konkurenceschopnost | ||
| Registrační číslo | CZ.1.07/1.5.00/34.1006 | ||
| Označení vzdělávacího materiálu | VY_32_INOVACE_23_PRG_449 | ||
| Název tématické oblasti (sady) | Programování | ||
| Název materiálu | Vstup | ||
| Anotace | Text představuje možnost zadávání dat do běžící aplikace pomocí klávesnice. Zavádí pojem návratová hodnota. Rozebírá problematiku při ukládání textových dat a čistě číselných dat z klávesnice do proměnných. | ||
| Autor | Ivan Pomykacz | Jazyk | čeština |
| Očekávaný výstup | Načte stisknuté klávesy a uloží do proměnné. Jde-li o číslo, provede parsování hodnoty, tak aby mohl být použitý vhodný datový typ. | ||
| Klíčová slova | vstup z klávesnice, parsování řetězce, návratová hodnota | ||
| Druh výukového zdroje | Výklad | Věková skupina žáků | 15+ |
| Typ interakce | aktivita | Ročník | 1. |
| Speciální vzdělávací potřeby | žádné | ||
| Zhotoveno, (datum/období) | 23.09.2013 | Celková velikost | |
Obsah
Shrnutí
Pod vstupem u programu si můžeme představit cokoli, co se dostalo do našeho programu námi definovaným způsobem. Např. uživatel mohl napsat něco na klávesnici. Stisknuté klávesy se pak předaly do našeho programu a ten na jejich základě provedl nějakou akci. (Klávesnice je typickým vstupním zařízením)
Dalším vstupním zařízením by mohla být myš, nebo čtečka čárových (nebo QR) kódů, nebo i scanner. Jiným vstupem by mohl být soubor, ze kterého bude program načítat data. Dalším pak síťová komunikace, kde program přijímá data po síti (ať už z Internetu nebo lokální sítě).
Console
Zaměřme se na první popisovaný vstup, tj. vstup z klávesnice.
V C# je dostupný objekt Console, který obsahuje metodu ReadLine().
Metoda ReadLine() pozastaví běh programu a čeká, dokud uživatel stiskne klávesu Enter.
string jmeno; Console.Write("Napiš tvé jméno: "); jmeno = Console.ReadLine(); Console.WriteLine("Ahoj " + jmeno + "!"); Console.WriteLine("Bohužel neumím skloňovat ...");
Všimněte si, jak je v ukázce Console.Write() a Console.WriteLine().
Při použití Write() nedojde k odřádkování a uživatel pak zadává své jméno ihned za dvojtečku (v řetězci metody Write()).
Návratová hodnota
Co je kritické k pochopení u tohoto příkladu je to, že metoda ReadLine(), vůbec jako první námi použitá metoda, vrací nějakou hodnotu.
V tomto případě jde o text, který napsal uživatel na klávesnici.
Aniž bychom cokoli vysvětlili, automaticky je v příkladu použitá proměnná typu string.
Automaticky proto, že cokoli co napíšeme na klávesnici je vlastně text, a to i v případě, že napíšeme nějaké číslo.
Prostě vše, co napíšete na klávesnici je text, a tedy typ string.
Metody mohou, ale nemusí mít návratovou hodnotu.
Např. metoda WriteLine() nemá žádnou návratovou hodnotu (přesněji řečeno má, nazývá se void).
To, jestli a jakou má metoda návratovou hodnotu se lze dočíst v referenční příručce jazyka (hledejte klíčové slovo return.
Vstup a číslo
Z toho, co bylo právě popsáno není možné použít následující kód:
double cislo; Console.Write("Zadej číslo: "); cislo = Console.ReadLine();
Kompilátor okamžitě zahlásí chybu, že není možné přetypovat proměnnou string na typ int.
Jenomže mi potřebujeme pracovat s čísly, a chceme čísla zadávat z klávesnice.
Proto existují metody, které dokáží analyzovat textový řetězec, a pokud v něm rozpoznají číslo, tak provedou jakousi konverzi na požadovaný datový typ (int nebo double). Vizte následující ukázku:
int cislo; string text; Console.Write("Zadej celé číslo: "); text = Console.ReadLine(); cislo = int.Parse(text);
Nejprve jsme do proměnné text uložili řetězec, který pravděpodobně bude obsahovat číslo.
Následně jsme použili metodu int.Parse(), která má vstupní argument typu string a vrací typ int.
Celý příklad lze ještě zjednodušit o to, že nebudeme zbytečně deklarovat proměnnou typu string.
int cislo; Console.Write("Zadej celé číslo: "); cislo = int.Parse(Console.ReadLine());
Obdobně bychom mohli parsovat čísla na typ double.
V příkladu výše stačí nahradit int za double.
Pozor! Metoda Parse() může též tzv. "vyhodit (throw)" výjimku (exception).
To se může stát např. tehdy, zadáte-li takový řetězec, který neobsahuje číslo (nebo číslo jinak zkomolené).
Prozatím nechme tento stav neošetřený, a vrátíme se k němu později.

