Podmínky - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Java

Podmínky

java

19. září 2002, 00.00 | K základním dovednostem v každém jazyce patří používání podmínek. Tomuto tématu věnujeme i dnešní díl výuky programování v javě.

Již jsme se s podmínkami mohli několikrát setkat, a proto nám nezbývá nic jiného než se na ně podívat detailněji.

Základně se podmínky vyhodnocují přes příkaz if, který je následován vyhodnocovanou podmínkou (v závorkách), za kterou následuje příkaz resp. blok příkazů, které se mají provést v případě jejího naplnění.

     if  (podmínka)
          příkaz

Např.

     if  (x == 10)
          System.out.println("je deset");

Celá podmínka nemusí být nutně na jedné řádce, jak ji mám já, ale jak se vám zlíbí.

Podívejme se blíže na to co může být jako vyhodnocovaná podmínka. Obecně platí, že to musí být boolean výraz tj. výsledná hodnota musí být typu boolean neboli true či false. V našem případě jsem se ptal jestli x je rovno 10, což je právě takový výraz.

Jako vyhodnocovaný výraz také může být uvedena pouze proměnná typu boolean např. if (b) { ... }. To je pak interpretováno jako if (b == true) { ... }.

Pascalisty by mohlo zaskočit to, že negace výrazu se neprovádí přes not, ale přes vykřičník, který ho nahrazuje.

     if  (x != 10)
          System.out.println("neni rovno deseti");

Dále se jako výraz může objevit skupina výrazů a jestliže bude vyhodnocování výrazů složitější dají se zde používat závorky.

     if  (x == 10 && y != 10)
          System.out.println("je a neni deset");
// nebo
     if  ((x != 10 || y != 10) && z != 10)
          System.out.println("x nebo y je rozdilne od deseti a z neni deset");

Ve výrazu je také možné přiřazovat resp. měnit hodnoty proměnných. To se pascalistům může stát nechtěně, když zapomenou napsat dvě rovná se.

     if  ((++x * 10 >= 1000) || (y = x *7 -12 < 90))
          System.out.println("x+1 × deset je vetsi rovno 1000 nebo y rovna se x × 7 -12 je mensi nez 90");

V podstatě se tam může vyskytovat jakýkoliv příkaz nebo volání metody, které vrací požadovaný typ tj. boolean, pro vyhodnocení podmínky.

Jak jsem řekl za podmínkou nemusí být pouhý jeden příkaz, ale celý blok, ten se samozřejmě uzavírá do begin-end tj. { }. V něm pak může být nespočetně dalších příkazů.

     if  (x == 10) {
          System.out.println("je deset");
          x = 0;
          ...
     }

V tomto bloku se samozřejmě může také vyskytnout jiná další podmínka a to klidně s dalším blokem atd. Pokud by ovšem za obyčejnou podmínkou byla další obyčejná podmínka, tak by to nemělo smysl, protože to lze zapsat jako více vyhodnocovaných výrazů do jedné podmínky.

     if  (x == 10) {
          System.out.println("je deset");
          if  (y == 5) System.out.println("y je 5");
          x = 0;
          ...
     }
if-else

To o čem jsem až doposud mluvil byli tzv. neúplné podmínky. Těmi je až if-else jakož to příkaz, který provede nějaký příkaz, ať již ji podmínka vyhodnocena kladně nebo záporně. Pascalisty by mohlo zmást, že za příkazem musí být středník i když je za ním else.

     if  (x == 10)
          System.out.println("je deset");
     else  System.out.println("neni deset");

Tento zápis je ovšemže platný, ale doporučil bych jednu radu. Často se stává, že příkaz za podmínkou se postupem času rozroste na více příkazů a když se při takovéto změně zapomene přidat begin-end, tak je chyba na světě. Proto téměř vždy používám, a to i u neúplných podmínek, begin-end neboli { }, čímž takovéto triviální chybě zamezím.

     if  (x == 10) {
          System.out.println("je deset");
     } else  {
           System.out.println("neni deset");
          }

Je zcela zřejmé, že ze else nutně nemusí být jen nějaký blok či příkaz. Ale mohla by to být i další podmínka, což je také dost časté. Přičemž se může jednat jak o úplnou podmínku tak neúplnou.

     if  (x == 10) {
          System.out.println("je deset")
     } else  if  (x != 7) {
          System.out.println("x neni rovno deseti a neni rovno sedmi");
          }

Tento blok teoreticky může stále pokračovat do nekonečna — if-else-if-else-if-else-if...else

Příště se podíváme na cykly for, while aj.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Java  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: