A Java a strukturált programozási nyelvekben elérhető vezérlési szerkezetekkel rendelkezik. A strukturált programozás alap vezérlési szerkezetei a szekvencia, a szelekció és az iteráció.
A szekvencia a különféle utasítások, utasítás blokkok sorban történő végrehajtása. Az utasításokat a Java-ban is a ; (pontosvessző) karakter zárja. Több utasítást a { és } jelek között tudunk egy utasításblokkba foglalni.
A szelekció valamilyen feltétel szerinti vezérlésátadást valósít meg.
Az if-then-else szerkezet Java-ban is létezik. Általános szintaktikája:
if (logikai kifejezés)
<utasítás, vagy utasítás blokk ha a kifejezés igaz>
else
<utasítás, vagy utasítás blokk ha a kifejezés nem igaz>
Az else rész elhagyható.
A logikai kiértékelésnek van egy a C nyelvben is megvalósított, háromoperandusú kifejezés formája.
<feltétel> ? <kifejezés ha igaz> : <kifejezés ha hamis>;
Nézzünk egy példát! Ha x és y megegyezik, akkor a szorzatuk, különben az összegük legyen az eredmény:
z = ((x==y) ? x*y : x+y) ; // a zárójelezés megkönnyíti a kód olvashatóságát
Ugyan ez a példa if szerkezettel:
if (x==y) {
z = x*y;
} else {
z = x+y;
}
A példában a fenti példában a {} jelek elhagyhatók, mivel az utasításblokk egyetlen kifejezést tartalmaz. Ennek ellenére én szeretem kitenni, mivel szintén olvashatóbb kódot kapunk (szerintem).
Még egy dologra hívom fel a figyelmet! Gyakori kezdő kódolási hiba (azért gyakorlottak is elkövetik néha) hogy a feltételben megfogalmazott kifejezésben egyenlőséget szeretnének vizsgálni (==), ehelyett értékadást használnak (=). Figyeljünk rá, hiszen az x=y és az x==y is érvényes kifejezés. Az első esetben egy értékadást (x megkapja y értékét), a másodikban pedig egy logikai kifejezést láthatunk.
Amennyiben többágú szelekciót kell megvalósítanunk, használhatunk egymásba ágyazott if szerkezetet is, de létezik a többágú szelekció azaz a switch() utasítás. Én magam úgy gondolom hogy két if egymásba ágyazva még olvasható, ha ennél több kell akkor már a switch()-et használom.
switch(<String vagy egész kifejezés>) {
case <konstans_1>:
<utasítás>;
break; //hogy kilépjen és ne hajtsa végre a többi ágat
case <konstans_2>: <utasítás>
<utasítás>;
break;
...
case <konstans_n>: <utasítás>
<utasítás>;
break;
default
<utasítás>;
}
A Java 7 verziótól kezdve van lehetőség a switch() utasításban String kifejezés kiértékelésére. A korábbi verziókban az úgynevezett sorszámozható típusok (char, byte, int, short, long) volt megengedett.
A kiértékelést követően az a case ág hajtódik végre, ahol a kiértékelt kifejezés megegyezik a case-ben megadott konstanssal. Ha nincs egyezés akkor a default utáni utasítás hajtódik végre. Amennyiben az egyik case ágba betalál a vezérlés, akkor onnantól kezdve végigcsinálja, minden utána lévő ág utasításait. Ezért amennyiben ezt nem akarjuk, úgy a break utasítással tudunk "kiugrani" a switch()-t záró blokk utáni pontra.
Nincsenek megjegyzések:
Megjegyzés küldése