Rövidzáras kifejezés-kiértékelés

Innen: Programozás Wiki
A lap korábbi változatát látod, amilyen Sting (vitalap | szerkesztései) 2012. január 7., 17:40-kor történt szerkesztése után volt. (Új oldal, tartalma: „A rövidzáras kifejezés-kiértékelés egy számos programozási nyelvben jelenlévő, a logikai kifejezések kiértékelésében szerepet játsz…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhozUgrás a kereséshez

A rövidzáras kifejezés-kiértékelés egy számos programozási nyelvben jelenlévő, a logikai kifejezések kiértékelésében szerepet játszó módszer, amelynek lényegét azt képezi, hogy az összetett kifejezések mindig csak az eredmény biztos eldöntésének szintjéig kerülnek kiértékelésre - ezáltal potenciálisan jelentős feldolgozási időt megspórolva, ugyanakkor a végrehajtott műveletek sorát és halmazát feltételes elágazás nélkül is változóvá téve.

A módszer alapját az képezi, hogy bizonyos több-operandusos logikai műveletek eredménye már az első operandusuk alapján egyértelműen eldönthető. Például ha két egymással ÉS logikai kapcsolatban lévő operandus közül az elsőről kiderül, hogy az 'hamis', a második operandust már nem érdemes kiértékelni, mert az őket befoglaló (rész)kifejezés értéke mindenképpen 'hamis' lesz. Hasonló módon logikai VAGY kapcsolat esetében ha az első operandus 'igaz', a második operandus kiértékelése már nem szükséges a (rész)kifejezés eredményének megállapításához, mert az mindenképpen 'igaz' lesz.

A rövidzáras kifejezés-kiértékelést a program működésének gyorsítása mellett rejtett feltételes elágaztatásra is fel lehet használni. Ezen kívül különösen hasznos lehet olyan halmozott feltételek egyetlen feltételbe történő összefűzésére, amelyek érvényessége csak progresszív módon garantált. Például az if (length(array)>0) then if (array[1]<>0) then x; halmozott feltételes elágazás rövidzáras kifejezés-kiértékelés esetében biztonságosan összevonható egyetlen if ((length(array)>0) and (array[1]<>0)) then x; elágazássá; erre azonban a teljes logikai kifejezés-kiértékelés esetében nincs mód, ott ugyanis a második részfeltétel is mindenképpen kiértékelésre kerül az első eredményétől függetlenül, ami azonban a példában üres tömb esetén kivételt vagy futásidejű hibát okoz. Ez utóbbi rövidzáras kifejezés-kiértékelés esetében nem következik be, hiszen a második részfeltétel csakis akkor kerül kiértékelésre, ha az első igaznak bizonyult, azaz a tömb nem volt üres.