Cvičení 2 - Datové typy
V předešlém cvičení, Cvičení 1 - Spojování textu, jsme si procvičili nabyté zkušenosti z předchozích lekcí.
Zdravím Vás u dalšího Cvičení, kde si ukážeme práci s celými čísly a také si objasníme jaký datový typ použít a následně jak ho využít při programování aplikace.
Základní datové typy
Datový typ definuje v programování druh nebo význam hodnot, kterých smí nabývat proměnná (nebo konstanta).

Je nutné si uvědomit, že počítačové zpracování dat rozlišuje mezi textem a číslem. Pokud zadáte číslo do textového pole, program jej považuje za text. Z matematických operací se text může jenom sčítat, takže pokus vynásobit jeden text druhým skončí chybou.

» Vytvoření celočíselného datového typu
V tomto příkladě si vytvoříme datový typ integer (celočíselný), který si pojmenujeme cislo. Dalším řádkem je naplnění proměnné cislo a to číslem 25. A poslední řádek vypíše cislo do labelu (popisku) Vysledek. Tudíž po stisknutí tlačítka Vypis se zobrazí v labelu číslo 25.
Komponenty:
- 1x Button (Vypis)
- 1x Label (Vysledek)

Zdrojový kód:
private void Vypis_Click(object sender, EventArgs e) { int cislo; cislo = 25; Vysledek.Text = cislo.ToString(); }
.ToString() – Metoda, která převádí číslo na text.
cislo je proměnná, stejně jako v matematice x nebo y. Proměnná znamená, že může obsahovat různé hodnoty, a ty se mohou v průběhu práce s programem měnit. Různé neznamená jakékoliv. Naše proměnná má přiřazeno klíčové slovo int, což znamená, že může obsahovat pouze celá čísla.
» Vstup čísla do proměnné + matematické operace
Tato aplikace podobná jako ta předchozí jen s jedním rozdílem, že uživatel definuje své číslo pomocí textového pole.
Komponenty:
- 1x Button (Vypocet)
- 2x TextBox (pocetKusu, cenaKus)
- 1x Label (Vysledek)

Zdrojový kód:
private void Vypocet_Click(object sender, EventArgs e) { int vypocet; vypocet = int.Parse(pocetKusu.Text) * int.Parse(cenaKus.Text); Vysledek.Text = "Celková cena je " + vypocet + " ,-Kč"; }
int.Parse(String) - je popis funkce, která převádí text na celé číslo. String je textový řetězec, zatím jsme používali jen označení text. Pokud chcete použít funkci int.Parse, nesmíte zapomenout do kulatých závorek zapsat název proměnné, ve které je uložený text, převáděný na číslo.
» Pro zvídavé
Pokud se vám povedla aplikace vytvořit a je funkční, přece to má jeden háček. Pokud vyplníme obě pole (pocetKusu, cenaKus) tak aplikace vynásobí obě čísla a výsledek zobrazí v labelu Vysledek. Ale co se stane když uživatel nevyplní ani jedno pole a nebo jen jedno? Bohužel aplikace spadne. Této události se můžeme vyhnout více způsoby, ale dočasným nejideálnějším řešením budou podmínky a nova funkce int.TryParse.

Int.TryParse – je popis funkce, která se pokouší převést text na celé číslo. Do kulatých závorek zapisujme zdroj textu. V našem případě to jsou 2 textové pole. Do závorek nesmíme zapomenout výstup (out) po převedení (out nazev_promenne_typu_int)
Zdrojový kód:
//Vytvoření proměnných typu int (pk = počet kusů; ck = cena za kus) int pk, ck; //Vytvoření logického typu vstup1 a funkce TryParse pro pk bool vstup1 = int.TryParse(pocetKusu.Text, out pk); //Vytvoření logického typu vstup2 a funkce TryParse pro ck bool vstup2 = int.TryParse(cenaKus.Text, out ck); //Vytvoří podmínku pro textové pole pocetKusu. Když bude v textovém poli něco jiného než celé číslo a nebo když v poli nebude nic, tak se vypíše hláška resp. MessageBox. if (!vstup1) { MessageBox.Show("Nezadali jste číslo nebo číslo je ve špatném formátu !"); } //Vytvoří podmínku pro textové pole cenaKus. if (!vstup2) { MessageBox.Show("Nezadali jste číslo nebo číslo je ve špatném formátu !"); } //Pokud budou vyplněna všechna pole a v polích bude celé číslo, tak se přeskočí předchozí podmínky a vykoná se část zdrojového kódu v sekci else. else { int vypocet; vypocet = pk * ck; Vysledek.Text = "Celková cena je " + vypocet + " ,-Kč"; }
Pokud bychom chtěli, aby do textových polí šli zadávat i čísla s desetinným rozvojem, pak stačí namísto int vložit double. Také pak nesmíme zapomenout změnit datový typ u funkcí int.TryParse.
Zdrojový kód:
double pk, ck; bool vstup1 = double.TryParse(pocetKusu.Text, out pk); bool vstup2 = double.TryParse(cenaKus.Text, out ck); if (!vstup1) { MessageBox.Show("Nezadali jste číslo nebo číslo je ve špatném formátu !"); } if (!vstup2) { MessageBox.Show("Nezadali jste číslo nebo číslo je ve špatném formátu !"); } else { double vypocet; vypocet = pk * ck; Vysledek.Text = "Celková cena je " + vypocet + " ,-Kč"; }
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 272x (1.5 MB)
Aplikace je včetně zdrojových kódů v jazyce C#
K absolvování tohoto cvičení prosím splň všechny příklady tím, že je úspěšně odevzdáš k otestování.