11.07.2015 Views

Prenos vízií do reality bolí. - Vitajte na stránkach www.einsty ...

Prenos vízií do reality bolí. - Vitajte na stránkach www.einsty ...

Prenos vízií do reality bolí. - Vitajte na stránkach www.einsty ...

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

P R O G R A M U J E M EProgramujeme v jazyku C# / 10. èasV desiatej èasti seriálu o programovaní v jazyku C# sa bu−deme venova základným syntaktickým èrtám jazyka, akosú kontrolné štruktúry a operátory.PREPÍNAÈ SWITCH. Prepí<strong>na</strong>è switch umoòuje vetve−nie programu <strong>na</strong> základe podmienky po<strong>do</strong>bne ako if s týmrozdielom, e umoòuje porov<strong>na</strong>nie s viacerými hodnota−mi <strong>na</strong>raz. Ide teda v podstate o zloený if. Jeho všeobec−nú syntax by sme mohli zapísa takto:switch (výraz) {case konštanta1: príkaz1;príkaz2;...príkazN;break;case konštanta2: príkaz1;príkaz2;...príkazN;break;case konštanta3: príkaz1;príkaz2;...príkazN;break;default: príkaz1;príkaz2;...príkazN;break;}Riadiaca hodnota výrazu v zátvorkách je vyhodnotenáiba raz – hneï pri vstupe <strong>do</strong> tela prepí<strong>na</strong>èa. Nasleduje skok<strong>na</strong> to návestie case, ktorého uvedená konštanta sa zhodu−je s hodnotou výrazu. V prípade, e také návestie neexis−tuje, je riadenie programu o<strong>do</strong>vzdané vetve default. Poskoku sú vykonávané postupne príkazy a <strong>do</strong>vtedy, kým sanevyskytne príkaz break. Ten zabezpeèí ukonèenie èinnos−ti prepí<strong>na</strong>èa a pokraèovanie programu za jeho telom.Oproti iným programovacím jazykom je tu jed<strong>na</strong> maláodlišnos – za kadým blokom príkazov pre dané návestiemusí <strong>na</strong>sle<strong>do</strong>va príkaz break. Tým sa zabránilo monémuzabudnutiu <strong>na</strong> príkaz break a nechcenému vyko<strong>na</strong>niuïalších príkazov, ktoré u k danému návestiu nepatria. Dô−sledkom je však aj fakt, e nie je moné zdruova viaceronávestí case spolu, teda <strong>na</strong>príklad takto:switch (výraz) {case konštanta1:case konštanta2: príkaz1;príkaz2;...príkazN;break;case konštanta3: príkaz1;príkaz2;...príkazN;break;}V prípade, e <strong>na</strong> príkaz break zabudnete, upozorní vás<strong>na</strong> to u prekladaè. Blok príkazov default, ktorý sa vykonáv prípade, e nie je nájdené nijaké vyhovujúce návestie, jenepovinný. Ako riadiaci výraz prepí<strong>na</strong>èa switch a konštan−ty v návestiach case je moné poui iba primitívne dátovétypy (pozri predchádzajúcu èas).Ïalej sa budeme venova iteraèným kontrolným štruk−túram.CYKLUS WHILE. Tento cyklus je moné oz<strong>na</strong>èi aj akocyklus s podmienkou <strong>na</strong> zaèiatku. Jeho syntax je <strong>na</strong>sledu−júca:while (výraz) {príkazy;}Výraz v zátvorkách musí by logický, teda jeho vyhod−notením musí by hodnota true alebo false. Príkazy v telecyklu sú vykonávané tak dlho, kým je riadiaci výraz vyhod−notený ako true. Výraz je vyhodnocovaný vdy pred ka−<strong>do</strong>u iteráciou, z èoho vyplýva, e príkazy v tele cyklu ne−musia by vyko<strong>na</strong>né ani raz (v prípade, e hneï pred prvouiteráciou je riadiaci výraz vyhodnotený ako false). Je po−trebné zabezpeèi, aby po urèitom poète iterácií vrátil ria−diaci výraz hodnotu false, teda aby sa cyklus niekedy skon−èil. Niekedy programátori cyklus úmyselne zacyklia, aby hoprerušili príkazom break v jeho tele:while (true) {príkazy;if (podmienka) break;príkazy;}CYKLUS DO..WHILE. Tento cyklus je v podstate obrá−tením cyklu while. Má podmienku <strong>na</strong> konci a má <strong>na</strong>sledu−júcu syntax:<strong>do</strong> {príkazy;} while (výraz);Opä platí, e výraz v zátvorkách musí by logický. Telotohto cyklu je vykonávané tak dlho, kým je riadiaci výraz<strong>na</strong> konci kadej iterácie vyhodnotený ako true. Z tohovyplýva, e telo tohto cyklu je vyko<strong>na</strong>né vdy aspoò raz,pretoe k prvému vyhodnoteniu výrazu dôjde a po prvejiterácii. Tento cyklus je moné takisto zacykli, prípadnekedyko¾vek preruši jeho beh a súèasnú iteráciu príkazombreak.ZLOENÉ OPERÁTORY. Prv ne sa budeme venovaïalšiemu typu cyklu, uvedieme si niektoré aritmetickéoperátory, ktoré by mohli by pre tento cyklus uitoèné.Operátory inkrementácie a dekrementácie majú <strong>na</strong>sledu−júci tvar:i++i−−Tieto zápisy sú ekvivalentné zápisomi = i + 1i = i − 1Pouitie operátorov inkrementácie a dekrementácie jerýchlejšie ako ich ob<strong>do</strong>bný zápis. Tieto operátory existujúv prefixovej i postfixovej po<strong>do</strong>be. My sme uviedli postfixo−vú (operátor je uvedený za premennou). Prefixový tvar jeteda <strong>na</strong>sledujúci:++i−−iRozdiel medzi postfixovou a prefixovou verziou spoèívav pouití vo výrazoch. Pokia¾ pouijete postfixový operá−tor, je vo výraze <strong>na</strong>jprv vrátená hodnota premennej a apotom je inkrementovaná. Na objasnenie uvádzam <strong>na</strong>sle−dujúci príklad:int i;i = 10;Console.WriteLine(i++);i = 10;Console.WriteLine(++i);Výstupom <strong>na</strong> konzole by boli postupne hodnoty1011z èoho vyplýva, e v prvom prípade bola <strong>na</strong>jprv vrátenáhodnota 10 a a potom bola hodnota premennej inkre−mentovaná, zatia¾ èo v druhom prípade bolo toto poradieopaèné.Na koniec tejto sekcie si ešte povieme nieèo o zloenýchoperátoroch priradenia. Majme <strong>na</strong>sledujúci zápis:i = i + 10;Ten je moné <strong>na</strong>hradi takto:i += 10;Opä ide o kratší a rýchlejší zápis. Zloený operátor pri−radenia je moné kombinova so všetkými aritmetickýmioperátormi:Operátor Dlhý zápis Skrátený zápis Výz<strong>na</strong>m+ i = i + hodnota i += hodnota prièítanie hodnoty− i = i − hodnota i −= hodnota odèítanie hodnoty* i = i * hodnota i *= hodnota vynásobeniehodnotou/ i = i / hodnota i /= hodnota vydelenie hodnotou% i = i % hodnota i %= hodnota zvyšok po deleníhodnotouCYKLUS FOR. Cyklus for patrí medzi komplexnejšie cyklya umoòuje zápis ve¾mi jednoduchého kódu, pokia¾ je jehojadrom práve iterovanie polokami. Jeho syntax je po<strong>do</strong>b−ná syntaxi v jazyku C alebo Java:for (inicializácia; logický výraz; iteraèný výraz) {príkazy;}Pred samotným spustením cyklu for je vdy vyko<strong>na</strong>náinicializaèná èas. Tá môe obsahova <strong>na</strong>príklad príkazypriradenia a deklarácie (èo vo väèšine prípa<strong>do</strong>v aj obsahu−je). Druhý výraz v zátvorkách je logický a jeho splneniepodmieòuje ukonèenie cyklu. Ide teda o riadiaci výraz a jevyhodnocovaný pred ka<strong>do</strong>u iteráciou. Pokia¾ <strong>na</strong><strong>do</strong>budnehodnotu true, je vyko<strong>na</strong>ná ïalšia iterácia, v opaènom prí−pade je beh celého cyklu ukonèený.Tretí výraz je vyhodnotený pred ka<strong>do</strong>u iteráciou a jehohodnota je vyhodnotená a platná pre celú iteráciu. V prí−pade, e pouijete <strong>na</strong>pr. prefixový operátor inkrementácieo 1, bude <strong>na</strong>jprv príslušná premenná inkrementovaná anásledne bude vrátená hodnota tejto premennej. Ak všakpouijete postfixový operátor, bude vrátená hodnota pre−mennej a a potom bude táto premenná inkrementovaná.Pre iteráciu však bude plati pôvodná hodnota premennej.Syntax cyklu for umoòuje vynechanie ktorejko¾vek ztroch menovaných èastí. Je moné <strong>do</strong>konca poui zápisfor (;;) {príkazy;}Tento zápis je ekvivalentný s nekoneèným cyklom, a pre−to by sa v tele tohto cyklu mal <strong>na</strong>chádza príkaz break.Ako bený príklad pouitia cyklu for uvádzam:for (int i = 0; i < 10; i++) {Console.WriteLine("Ria<strong>do</strong>k c. " + i);}Tento cyklus vypíše 10 riadkov (èíslovaných od 0 po 9).Pokia¾ telo cyklu pozostáva iba z jedného príkazu èi volaniametódy (ako v tomto prípade), je moné ho skombinova siteraèným výrazom. Nasledujúci kód bude ma teda rov<strong>na</strong>kýefekt, ale bude o nieèo rýchlejší, keïe neobsahuje nijaké telo:for (int i = 0; i < 10; Console.WriteLine("Ria<strong>do</strong>k c. " + i++));V cykle for je však moné vykonáva rôzne zloité kon−štrukcie, <strong>na</strong>príklad:for (int i = 0, j = 0; i < 10 && j < 5; ++i, j++) {príkazy;}Ako vidíte, monosti vyuitia cyklu for sú <strong>na</strong>ozaj ve¾kéa v koneènom dôsledku môe <strong>do</strong>brý zápis tohto cykluzlepši váš program èo <strong>do</strong> rýchlosti alebo preh¾adnosti.Iteraèný výraz nemusí vdy obsahova aktualizáciu ria−diacej premennej. Môe obsahova akýko¾vek výraz, pri−èom aktualizova riadiacu premennú je moné aj v samot−nom tele cyklu.PRÍKAZ CONTINUE. Príkaz continue patrí spolu s príka−zom break medzi príkazy <strong>na</strong> explicitné riadenie cyklu. No za−tia¾ èo príkaz break beh cyklu preruší, príkaz continue prerušíiba práve prebiehajúcu iteráciu. Týmto príkazom teda reali−zujete skok <strong>na</strong> zaèiatok cyklu a spustenie novej iterácie s tým,e sú opä vyhodnotené všetky riadiace a v prípade cyklu foraj iteraèné výrazy. Pokia¾ ide o cyklus <strong>do</strong>..while (s podmienkou<strong>na</strong> konci), je príkazom continue realizovaný skok <strong>na</strong> konieccyklu a takisto opätovné vyhodnotenie riadiaceho výrazu.ZÁVER. V tejto èasti sme ukonèili rozprávanie o kon−trolných štruktúrach jazyka C# a povedali sme si aj nieèoo zloených aritmetických a priraïovacích operátoroch.V <strong>na</strong>sledujúcom pokraèovaní sa budeme venova pouíva−te¾sky definovaným typom – záz<strong>na</strong>mom a zoz<strong>na</strong>mom.Andrej Chu110 PC REVUE 7/2003

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!