Podmínky If jsou nejpoužívanějším způsobem větvení programu. Zapisují se následovně
if (podmínka)
{
příkaz;
příkaz;
a další příkazy;
}
Podmínka na první řádku je matematicky zapsaný výrok. Např. od uživatele získáme jméno v podobě textové proměnné. Když chceme zjistit, jestli je to jméno Martin, sestavíme podmínku následovně :
string a; // Proměnná, s níž budeme pracovat
if (a == "Martin")
{
MessageBox.Show("Uvedené jméno je Martin !");
}
Kdybychom tento kód zkompilovali, tak by samozřejmě buď vyhodil chybu, nebo by se nic neprovedlo. Proměnná a totiž nemá definovanou žádnou hodnotu. Buď bychom ji určili napevno, nebo ji získali od uživatele skrze komponentu (textBox, například).
Z příkladu výše je také doufám jasné, že kód, který je mezi složenými závorkami, se provede v případě, kdy podmínka (a == "Martin") platí. Velký pozor je také třeba dávat na to, že pro porovnání dvou hodnot se při rovnosti nepoužívá rovnítko (=), ale dvě rovnítka (==) a to ze zcela evidentního důvodu. Rovnítko jako takové už má definovanou funkci, přiřazování (viz. minulý díl).
Pokud dvě hodnoty porovnáváme, používáme k tomu běžně známou matematickou symboliku.
Při porovnávání také musíme dávat pozor na datové typy porovnávaných hodnot. Nemůžeme porovnávat např. text s číslem. Za předpokladu, že je textový řetězec tvořen prvky číslic, můžeme ho převést na číselný datový typ a ten potom porovnávat, ale jinak ne.
Složené podmínky se používají, pokud předpokládáme více různých výsledků. Pokud se vrátíme k našemu příkladu se jmény, můžeme například podmínku pro jméno Martin nechat vypsat text a pro jméno Milan jiný text.
K naší struktuře If jen přidáme strukturu else if, která se liší pouze v tom, že namísto if napíšeme else if.
string a; // Proměnná, s níž budeme pracovat
if (a == "Martin")
{
MessageBox.Show("Uvedené jméno je Martin !");
}
else if (a == "Milan")
{
MessageBox.Show("Uvedené jméno je Milan, ne Martin !");
}
Abychom mohli s pomocí podmínek ošetřit úplně všechny možnosti, které mohou nastat, potřebujeme ještě jednu konstrukci, která se postará o provedení kódu v případě, že neplatí žádná z výše uvedených podmínek. Tato konstrukce se značí else a nemá samozřejmě žádnou podmínku
Opět v interpretaci s našimi jmény bychom vytvořili nějaký takovýto zdrojový kód.
string a; // Proměnná, s níž budeme pracovat
if (a == "Martin")
{
MessageBox.Show("Uvedené jméno je Martin !");
}
else if (a == "Milan")
{
MessageBox.Show("Uvedené jméno je Milan, ne Martin !");
}
else
{
MessageBox.Show("Uvedené jméno není Milan, ani Martin !");
}
Dnešní příklad již nebude mít daleko k jednoduché hře. Budeme generovat náhodná čísla v rozhraní od 0 do 10 a uživatele necháme hádat, o jaké číslo se jedná.
Uživatelské rozhraní bude tvořit jedno tlačítko a jedno textové pole, do kterého uživatel bude zadávat jeho tipy. Vytvořme událostní proceduru kliknutí na tlačítko (onClick) a jdeme programovat.
Algoritmus není nikterak složitý. Nejdříve vygenerujeme náhodou hodnotu a uložíme si ji do proměnné (např. i). Potom porovnáme hodnoty textového pole (textBox1.Text) a naší proměnné a s pomocí vyskakovacího okna necháme uživateli vypsat, jestli se trefil, nebo ne.
int i = new Random().Next(0, 10);
if (Convert.ToInt32(textBox1.Text) == i)
{
MessageBox.Show("Trefa, dobrá práce !");
}
else
{
MessageBox.Show("To není ono, zkus to ještě jednou !");
}
K tomuto dílu je to vše. Za domácí úkol si můžete vyzkoušet například sestrojitelnost trojúhelníku, nebo vylepšit dnešní ukázkový příklad o zaznamenávání výsledků a na jejich základě sestavovat statistiky.