C# - 4. diel
Podmienky if - else
Tento diel by vám mal ukázať, ako sa vetví program.
Príkazy if-else
Spomeňte si na všetko, čo doteraz viete o programovaní v jazyku C#. Predstavte si, že by ste mali z týchto vedomostí poskladať program, čiže proste nejakú jednoduchú aplikáciu. Ak máte teda nejakú myšlienkovú predstavu o programe a jeho fungovaní, pokračujte čítaním ďalej.
Pomyslite na ten kód. Všetko prebieha lineárne, rad za radom. Vypíše sa uvítacia správa, zadá sa meno, pozdraví sa daná osoba a tak ďalej...
Avšak takto normálne väčšie aplikácie nefungujú. Budete tam cítiť niečo iné. To čo sa už viac približuje ľudskej logike. Človek nepracuje tak, že príde, pozdraví sa, opýta sa na meno, opýta sa na vek a podobne. Nie. Na základe spoločnosti a okolností v ktorých sa nachádza zvolí vhodnú frázu pre začiatok diskusie. Ďalej hodnotí človeka na základe mena, prízvuku, výslovnosti a rýchlosti reči, aby zistil z ktorej oblasti slovenska je (ak je zo slovenska) a do akej spoločenskej vrstvy asi patrí. Na základe rýchlosti vydávania informácií zistí či je človek viac introvertný alebo extrovertný... Overuje, zaraďuje na základe zozbieraných skúseností. Toto lineárne fungujúci program nedokáže. A preto sa programy vetvia.
Takzvané vetvenie programov zabezpečujú hlavne príkazy if a else. Príkaz if overí, či sú podmienky zadané v kóde splnené a na základe toho vykoná nejakú činnosti. Inak normálne pokračuje alebo vykoná náhradnú činnosť a až tak pokračuje.
Samotný príkaz if pracuje len s hodnotami typu bool, čiže true a false.
Na to, aby sme tieto hodnoty dostali musíme my alebo naše či cudzie metódy vykonať operáciu porovnávania. Operácia porovnávania má šesť základných operátorov. Ak podmienka daná operátormi platí, operátor vracia true. V opačnom prípade vracia false.
| Operátor | Popis |
|---|---|
| == | Overí, či sa dva operandy rovnajú |
| != | Overí, či sa dva operandy nerovnajú |
| < | Overí, či je ľavý operand menší |
| > | Overí, či je ľavý operand väčší |
| <= | Overí, či sa dva operandy rovnajú alebo či je ľavý operand menší |
| >= | Overí, či sa dva operandy rovnajú alebo či je ľavý operand väčší |
Poznámka: Nemýľte si operátor '>=' s operátorom '=>'! Jedná sa o dva úplne rozdielne operátory, pričom prvý slúži na porovnávanie a druhý na predanie argumentov lambda výrazu. (O lambda výrazoch bude reč neskôr)
Kedže operátory porovnávania vracajú výslednú hodnotu Booleanu, ide ich výsledok priradiť premennej tohoto typu.
int cislo = 10; bool vysledokPorovnavania = 11 == cislo;
Toto využitie operátoru vráti hodnotu false. Využitie operátoru != by zase vrátilo hodnotu true, pretože sa hodnoty operandov nerovnajú.
Porovnávanie ale nie je samotným vetvením programu. Vetvenie zabezpečujú, ako už bolo povedané vyššie, príkazy if a else.
Syntax:
if(podmienka)
//vykonaj nejakú akciu.
else
//vykonaj nejakú inú akciu.
alebo
if(podmienka)
{
//vykonaj nejakú dlhšiu akciu.
}
else
{
//vykonaj nejakú inú dlhšiu akciu.
}
Poznámka: To, že uzavrieme dlhšiu akciu (viac ako jedno syntaxné použitie bodkočiarky) do bloku príkazu if alebo else neznamená, že v ňom musí byť aj akcia druhého bloku, ak samozrejme nespadá do podmienok využitia bloku.
Viac ako všetká teória na niekoľko strán bude praktická ukážka. Následujúci program si vypýta vek a zistí, či môže osoba s takým vekom požívať alkoholické nápoje.
int hranicaDospelosti = 18;
Console.WriteLine("Zadajte prosím váš vek: ");
string vek = Console.ReadLine();
int zadanyVek = Int32.Parse(vek);
if (zadanyVek < hranicaDospelosti)
Console.WriteLine("V serióznej krčme ti nenalejú, bohužiaľ.");
else if (zadanyVek < 100)
Console.WriteLine("V seróznej krčme vám nalejú.");
else
Console.WriteLine("V takom veku alkohol?");
Console.Read();
Test prvý:
Zadajte prosím váš vek: 10 V serióznej krčme ti nenalejú, bohužiaľ.
Test druhý:
Zadajte prosím váš vek: 18 V seróznej krčme vám nalejú.
Test tretí:
Zadajte prosím váš vek: 101 V takom veku alkohol?
Za povšimnutie určite stoja dve veci:
- Na štvrtom riadku je volaná metóda Parse z typu Int32 (alias int). Táto metóda preberá reťazec a vracia celé 32 bitové číslo. Je to jedna z podporných metód .NET frameworku. Nájdete ju aj v iných číselných typoch. Metódu je možné volať aj skrz alias, čiže volanie by mohlo vyzerať aj takto:
int.Parse(vek);
- Na siedmom riadku sme napojili na príkaz else (patriaci prvej podmienke) druhú podmienku. Jedná sa o oddelený príkaz, takže varianty 'elseif', 'elif' a pod. v jazyku C# nefungujú. Posledný príkaz else na riadku 9 už ale nepatrí prvej podmienke, ale druhej. Jedná sa o zlepšovák ktorý sa dobre číta a výborne slúži.
Vyhodnotenie porovnávania je možné vykonať ešte pred tým, než sa začne overovanie.
int a = 10; int b = 15; bool porovnaj = a == b; ... //kód pracujúci s premennými 'a' a 'b'. ... if(porovnaj) //akcia, ak sa čísla rovnajú else //akcia, ak sa čísla nerovnajú
Tento spôsob je výhodný v prípade, že pred vetvením programu potrebujete pracovať s operandmi.
Kedže podmienka if pracuje s booleanovskou hodnotou, je možné zapísať aj tento kód:
if (true) Console.WriteLine(true); else Console.WriteLine(false); Console.Read();
Avšak využitie tohoto kódu nemá žiadny význam.
Niekedy je zase potrebné vetviť program v prípadoch keď platí viac podmienok. Na to existujú v jazyku C# logické operátory.
- &&: Logické AND spája dva výrazy a vracia true iba ak platia obidve podmienky.
- ||: Logické OR spája dva výrazy a vracia true ak platí jedna z podmienok či jedna zo skupín podmienok.
Príklad využitia:
int vek = 22;
int dospelost = 18;
int soferak = 17;
if(vek < soferak && vek < dospelost)
Console.WriteLine("Nemôžeš riadiť auto, piť alkohol a fajčiť.");
else if(vek < dospelost)
Console.WriteLine("Môžeš riadiť auto, ale nemôžeš piť ani fajčiť.");
else
{
Console.WriteLine("Môžeš riadiť auto, piť a fajčiť.");
if(vek == 50 || vek % 10 == 0)
Console.WriteLine("Blahoželám k životnému jubileu!");
}
Momentálne ste zoznámení so základným vetvením programu v jazyku C#.
Môžete pokračovať čítaním ďalšieho dielu, v ktorom sa dozviete niečo o poliach.
12 komentárov k článku:
Komentovať môžu iba prihlásení
Zaregistruj sa cez bezplatnú registráciu alebo použi login cez Facebook (FB Connect)
Prihlás sa tu, ak už máš profil na Zajtra.sk:
bunka: ked uz, v kurze je Objective C a C.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
btw: C# a C++ je natom skoro rovnako, ale stale viac vyuzivane ako PHP, JS, Ruby etc ... klasicke webove technologie.
dobrý článok a doteraz aj seriál celkovo ;] na polia budem zvedavý, keďže C# som sa už nedávno venoval, ale k nim som sa nedostal... len tak ďalej! ;]
v prvej podmienke stačí toto:
if (vek < soferak)
a potom:
else if (vek < dospelost)
nie som developer, takze sa to snazim len citat podla mojej logiky, ale myslim si ze toto nie je spravne zapisane:
else if(vek < dospelost)
Console.WriteLine("Môžeš riadiť auto, ale nemôžeš piť ani fajčiť.");
malo by byt:
if(vek < dospelost && vek >= soferak)
ak sa mylim tak ma opravte
Novinky
21 hod.
Překvapivě jednoduché: brýle Glass rozebrané do posledního šroubku
Blogerka Star Simpson rozebrala Google Glass, aby zjistila, co je uvnitř, o jak složité a modifikovatelné zařízení se jedná, případně jestli se uvnitř skrývá hardwarové překvapení.
21 hod.
Platforma Intel Halo pre desktop: Osem jadier a podpora DDR4
Už sme písali, že spoločnosť Intel sa chystá predĺžiť život procesorom Haswell až do roku 2014. Vtedy ale išlo len o mainstreamovú platformu pre päticu LGA1150, pričom do konca tohto roka budú uvedené aj procesory Ivy Bridge-E pre najvýkonnejší segment.
21 hod.
Platforma Intel Halo pre desktop: Osem jadier a podpora DDR4
Už sme písali, že spoločnosť Intel sa chystá predĺžiť život procesorom Haswell až do roku 2014. Vtedy ale išlo len o mainstreamovú platformu pre päticu LGA1150, pričom do konca tohto roka budú uvedené aj procesory Ivy Bridge-E pre najvýkonnejší segment.
1 dňom
Google spustil poskytovanie Internetu cez stratosferické balóny
Spoločnosť Google dnes ohlásila a zároveň spustila nový projekt Project Loon, poskytovanie internetového pripojenia cez stratosferické balóny.
1 dňom
BlackBerry se začíná dařit: Prodeje modelů Z10 a Q10 nejsou vůbec špatné
Pomalu se blíží oznámení výsledků BlackBerry za další fiskální čtvrtletí a prosakující informace vypadají pozitivně. Andy Perkins, analytik u Societe Generale, řekl, že jeho informace ukazují, že BlackBerry Z10 a Q10 se prodávaly nad očekávání.
Staršie novinky »TOP dlhšie
- 01 3 jednoduché kroky ako spraviť responzibilný dizajn webu (4361x)
- 02 Prečo sa chcem naučiť programovať web stránky? (3824x)
- 03 PayPerPost.sk - zarábajte s webom na článkoch (3768x)
- 04 5 užitočných jQuery tipov (3197x)
- 05 Súťaž o návrh Loga (2833x)
- Aj ty môžeš byť najčítanejší. Napíš článok »
TOP tento mesiac
- 01 HTML WebSocket - chat v node.js za 5 minút (1778x)
- 02 Prečo potrebuje programátor psa (1192x)
- 03 Aplikácie na Facebook-u pre obchoďákov (1014x)
- 04 Ingnite Bratislava vol. 3 (723x)
- 05 Jelly Meeting #20 s Marcelou Liptajovou: Ty ako nová značka na trhu (77x)
- Aj ty môžeš byť najčítanejší. Napíš článok »
Nové články:
- 10.Nový 13,3” tablet pro Váš domov - Point Of View Mobii 1325
jún - 6.Prečo potrebuje programátor psa
jún - 5.ZALMAN FX100 – pasivní chlazení CPU ve tvaru kostky
jún - 1.Aplikácie na Facebook-u pre obchoďákov
jún - 31.Jelly Meeting #20 s Marcelou Liptajovou: Ty ako nová značka na trhu
máj - Viac »
- Aj ty môžeš byť najčítanejší. Napíš článok »
Pekné veci
Pekné veci
Pekné veci
Pekné veci
Posledné komentáre
Kritika
Vieš ako robiť veci lepšie? Pomôž našim odvážnejším členom a skritizuj im projekty!
Reklama
Slovenská IT komunita
Seriály zo Zajtra.sk
· Ako písať blog
· Ako sa stať PHP ninja s Yii Frameworkom
· Aplikácie pre Facebook
· CSS triky
· iOS vývojára príhody a skúsenosti
· Modelovanie webového sídla
· Nauč sa CodeIgniter [HD]
· Nauč sa jQuery [HD]
· Nette PHP framework
· OOP v Javascripte
· Slovenskí iOS developeri
· Yablkov TurboTip [HD]



















http://www.simple-talk.com/blogs/2012/03/28/net-vs-windows-8/
K tomu, Microsoft naďalej plánuje pokračovať v .NET a nové Visual Studio ma v sebe naďalej zabudovanú podporu. Takže Win8 ešte nerobí kompletnú bodku na .NET.