A programok egyszerűsítve úgy működnek, hogy a kapott, előállított vagy öröklött adatokat bizonyos feltételek alapján kiértékelnek, majd a kiértékelés eredménye függvényében valamit csinálnak ezekkel az adatokkal. Valójában a mindennapi életünk során folyamatosan apró programokat futtatunk a fejünkben - akkor is, ha nem veszünk róla tudomást. Például: "ha reggel van, felkelünk az ágyból". Egyszerű, magától értetődő eseményláncolat, mégis valójában ez egy program, amit végrehajtottunk. Hogy nézne ki ez PHP-ban?
--------------------
<?php
$felkeltem_az_agybol = false; // Még mindig az ágyban fekszem
$napszak = "reggel"; // A napszakot reggelre állítjuk
if ($napszak === "reggel") { // Ha a napszak értéke "reggel", akkor...
$felkeltem_az_agybol = true; // Felkeltem az ágyból!
}
var_dump($felkeltem_az_agybol); // Kiírja: bool(true)
?>
--------------------
A fenti példában láthatjuk a HA (if) elem szerkezetét és működését: az if szócska után a feltétel következik zárójelbe téve, majd kapcsos zárójelben ({ ... } ) az esemény, amely akkor következik be, ha a feltétel kiértékelése igaz. Egyszerűsítve így néz ki:
if (feltétel) {
következmény;
}
Nézzünk egy másik példát! "Ha éhes vagyok, eszem, ha szomjas, iszom, ha egyik sem, akkor sétálok!". Milyen változóink lesznek? Először kell egy állapot jelző, majd egy cselekvést leíró:
--------------------
<?php
$allapot = "éhes"; // Változtassuk "éhes", "szomjas", "bármi más" értékekre a tesztelés során!
$cselekves = NULL; // Még nem csinálunk semmit, csak előkészülünk!
if ($allapot === "éhes") { // Ha igaz, hogy éhes vagyok...
$cselekves = "eszem"; // eszem!
} elseif ($allapot === "szomjas") { // Ha igaz, hogy szomjas vagyok...
$cselekves = "iszom"; // iszom!
} else { // bármi más esetben...
$cselekves = "sétálok"; // sétálok!
}
echo "Ha $allapot vagyok, $cselekves!"; /* Felhasználva az előzőekben tanultakat, mondatot alkotunk a változók értékei segítségével!
Figyeljük meg az idézőjeleket is! */
?>
--------------------
Megjegyzés
A fenti szerkezetnek létezik egy másfajta felirata is, ahol az esemény kettőspont és endif; kifejezés közé esik, ami így néz ki:
if (feltétel):
esemény;
elseif (másik feltétel):
másik esemény;
else:
egyéb esemény;
endif;
Mindkét változatot szabadon használhatjuk, tetszés szerint, a további tananyagokban viszont az első, kapcsos zárójeles változatot fogjuk preferálni egyrészt a C nyelvvel való azonosság miatt, másrészt, mert a zárójelpárok vizuálisan jobban körülhatárolják az egyes részeket. Az elseif utasítás C stílusban külön írva is helyes:
if (feltétel) {
esemény;
} else if (másik feltétel) {
másik esemény;
} else {
egyéb esemény;
}
Mivel a PHP nyelv a formázással szemben nem támaszt különös igényeket (szemben a Python nyelvvel például, ahol a behúzási szintek kötik össze az összetartozó részeket), a kapcsos zárójelek helye valamint a sorok behúzása egyéni ízlés kérdése. Akár egy sorba írva is használhatjuk, ha úgy akarjuk:
if (feltétel) { esemény; } elseif (másik feltétel) { másik esemény; } else { egyéb esemény; }
Programozás közben néha előfordulhatnak olyan röviden leírható szerkezetek, ahol olvashatóbb egy sorba írva, mint tagolva. Ez is egyéni stílus - esetleg csapatban dolgozva formázási előírás - kérdése csupán.
Tanácsok
Mivel elérkeztünk ahhoz a ponthoz, hogy immár működő és hasznos programocskát is el tudunk készíteni, tartsunk szem előtt pár fontos szabályt:
- Mindig tervezzük meg előre a programot, és építsük fel a logikai szerkezetet! Mondjuk el magyarul, hogy mit kell tennie a programnak. Ha feltétel - következtetés szóban működőképes, akkor nagy valószínűséggel program formájában is működni fog.
- Csak annyi változót használjunk, amennyi feltétlenül szükséges, és mindig hozzuk őket létre úgy, hogy kiindulóértékkel látjuk el. Sok bosszúságtól kíméljük meg magunkat!
- Legyünk következetesek a kód formázása során! Úgy írjuk meg, hogy bármelyik másik programozó is át tudja látni és fel tudja fogni a logikáját.
- Törekedjünk a kód tömörségére és átláthatóságára! Ne bonyolódjunk fölösleges kódrészletek megírásába, amelyek nem vezetnek sehová!
- Gondoljunk a bővíthetőségre! Úgy tervezzük meg a programunkat, hogy bármikor folytatni, bővíteni lehessen!
-----------------------------------------------------------------------------------------------------
Feladatok
1. Tamás 2 éves. Ha tudjuk, hogy 18 évesen lesz a törvény szerint nagykorú, addig viszont kiskorú, vizsgáljuk meg és írjuk ki, hogy most minek tekinti a törvény!
2. Írjunk egy programot, amely megvizsgálja, hogy egy nullánál nagyobb egész szám páros, vagy páratlan! (Emlékezzünk a maradékos osztás operátorra, valamint arra a szabályra, hogy egy szám páros, ha osztható kettővel!)
3. Írjunk egy programot, amely esernyőt ajánl, ha esik az eső, napernyőt, ha süt a nap, valamint kalapot más esetekre!