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
2 rokmi
Aprílové vtípky: Výběr toho nejlepšího kolem počítačů, internetu a techniky
Výběr nejlepších aprílových vtípků 2019
2 rokmi
Fotky Google sa učia lepšie pracovať s dokumentmi
Spoločnosť Google prostredníctvom svojho účtu na sociálnej sieti Twitter oficiálne predstavila novú funkciu svojej aplikácie Fotky Google.
2 rokmi
Gmail dovoľuje naplánovať poslanie emailu neskôr
Spoločnosť Google dnes oznámila pridanie funkčnej novinky do svojej populárnej webmailovej služby Gmail, možnosť naplánovať poslanie emailu na neskôr.
3 rokmi
Používatelia Chrome začali prechádzať na nový rýchlejší Firefox, avizujú dáta Mozilly
Nový lepší a rýchlejší prehliadač Firefox 57 Quantum vyúsťuje zrejme do viac používateľov prechádzajúcich respektíve vracajúcich sa na tento prehliadač z iných prehliadačov, na osobných počítačoch aj smartfónoch.
3 rokmi
Briti dokončili kúpu SK-NIC-u. Nové .sk domény nechávajú za 8.4 eur
Predaj správcu slovenskej domény .sk, SK-NIC, bol dokončený a novým majiteľom po telekomunikačnej skupine Danubiatel, do ktorej patrí napríklad Swan a 4ka, je britská spoločnosť CentralNic.
Staršie novinky »TOP dlhšie
- 01 Farbičky v HTML a CSS, alebo? (851x)
- 02 Tiché COMBO Logitech MK295 (702x)
- 03 Kamery, cloud a bezpečnosť (696x)
- 04 Kingston uvádza 128GB verziu šifrovaného USB (675x)
- 05 Pochopte, ako vytvoriť virtuálny obchod v 6 krokoch (617x)
- Aj ty môžeš byť najčítanejší. Napíš článok »
TOP tento mesiac
- Aj ty môžeš byť najčítanejší. Napíš článok »
Nové články:
- 14.Kingston uvádza 128GB verziu šifrovaného USB
sep - 10.Tiché COMBO Logitech MK295
sep - 24.Farbičky v HTML a CSS, alebo?
aug - 23.Pochopte, ako vytvoriť virtuálny obchod v 6 krokoch
aug - 29.Kamery, cloud a bezpečnosť
jul - Viac »
- Aj ty môžeš byť najčítanejší. Napíš článok »
Pekné veci
Pekné veci
Pekné veci
Pekné veci
Posledné komentáre
- Pokiaľ používaš nejaký lepší bitmapový editor, napr. Photoshop, a chceš robiť retuše, ed...
- Veľmi dobrý článok a pre začiatočníka úplne odrazový mostík. https://ludwaismania1.blogs...
- Nova international a prima lus majú vysporiadané pravs ale aj CNN prima News
- Tv Joj nijako neobmedzuje šírenie médii, ktoré majú vysporiadané licenčné práva pre Slov...
- Nech televizie vrátia naspäť originál verzie a tie internationali nech zrušia. Každý si ...
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
· Jednoduché programy, ktoré vám ušetria čas
· Modelovanie webového sídla
· Nauč sa CodeIgniter [HD]
· Nauč sa jQuery [HD]
· Nette PHP framework
· OOP v Javascripte
· Programujeme v Jave
· Programujeme v Lazaruse
· Programujeme v Pythone
· Robíme Eshop v ASP.NET Web Pages
· Slovenskí iOS developeri
· Webdizajn krok po kroku
· 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.