• Nem Talált Eredményt

III. Kifejezések kiértékelése

N/A
N/A
Protected

Academic year: 2022

Ossza meg "III. Kifejezések kiértékelése"

Copied!
10
0
0

Teljes szövegt

(1)

Alapvető programozásnyelvi elemek C-ben és PHP-ban

Dr. Holló Csaba, SZTE TTIK, Szoftverfejlesztés Tanszék

III. Kifejezések kiértékelése

Programozási alapismeretek kurzus

Olvasási idő:

5 perc

A lecke célja A kifejezések kiértékelésének mélyebb megértése, és ennek következtében bizonyos

típushibák elkerülése

Tudás Ismeri a precedencia és az asszociativitás fogalma- kat, illetve a műveletek elvégzésének folyamatát.

Képesség Helyesen értékeli ki a kifejezéseket.

(2)

Alapvető programozásnyelvi elemek C-ben és PHP-ban

2

Kifejezések kiértékelése Két szempont szerint történik:

1. Műveletek prioritása

■ a műveletek prioritási (precedencia) halmazokba vannak sorolva

■ adott helyzetben (kifejezésben) a nagyobb prioritású műveletek hamarabb elvégződnek

■ pl. a vonatok közlekedésének is elsőbbsége van 2. Műveletek asszociativitása

■ egymás utáni műveletek milyen sorrendben

végződjenek el

Nézzük meg a műveletek precedenciáját és asszociativitását a következő oldalak valamelyikén:

■ Wikipédia, BME,

■ Aszódi Evangélikus Petőfi Gimnázium, Általános Iskola és Kollégium

https://pixabay.com/hu/photos/

auto-vonat-priorit%C3%A1s-3034401/

azonos prioritású

(3)

Alapvető programozásnyelvi elemek C-ben és PHP-ban

3

Kifejezések kiértékelése: példa C-ben Legyen int x, y;. Mi lesz az x = y = 7; eredménye?

A két = művelet precedenciája egyenlő, a műveletek sorrendjét az asszociativitás határozza meg.

Az = jobbról balra asszociatív, ezért x = y = 7; → x = (y = 7);, továbbá

y = 7 eredménye az értékül adott érték, ezért x = (y = 7); → x = 7;

Hogyha az = balról jobbra asszociatív lenne, akkor

■ először elvégeznénk az x = y; értékadást és

■ annak az eredményének (ami nem egy változó, hanem egy érték) szeretnénk értékül adni a 7-et → ami értelmetlen

lenne.

x = y = 7

= ( 7 = 7 )

7 = 7

( 7 )

(4)

Alapvető programozásnyelvi elemek C-ben és PHP-ban

4

Kifejezések kiértékelése PHP-ban

Míg C-ben minden műveletnek meg van adva az asszociativitása,

PHP-ban vannak olyan művelethalmazok,

melyeknél ez nem definiált, azaz „nem köthető”.

Nem köthető műveletek például: <, <=, >, >=, ==, !=

További részleteket a Sapiencia Egyetem oldalán találunk.

PHP-ban a nem köthető egymás utáni műveleteknél

hibajelzést kapunk.

(5)

Alapvető programozásnyelvi elemek C-ben és PHP-ban

5

Kifejezések kiértékelése PHP-ban: példa PHP-ban a változók nevét $-al kezdjük.

A következő programrészlet:

$x = 3;

if(4 < $x < 6) echo "OK";

else echo "Nem OK";

hibajelzést fog kiírni, melynek oka, hogy

■ a < művelet nem köthető, ezért

■ nem lehet két < művelet egymás után.

(6)

Alapvető programozásnyelvi elemek C-ben és PHP-ban

6

Kérdések, feladatok

1. Legyen int x = 3, y= 8; Mennyi lesz az x értéke az x *= y /= 2; kifejezés kiértékelése után?

Megoldás. Mivel az értékadó operátorok jobbról balra asszociatívak, ezért:

x *= y /= 2; → x *= (y /= 2); de y /= 2 → y = y / 2 → y = 4

■ az értékadás eredménye az értékül adott érték, azaz 4

x *= (y /= 2); → x *= 4; → x = x * 4; → x = 12;

(7)

Alapvető programozásnyelvi elemek C-ben és PHP-ban

7

Kérdések, feladatok

2. Mit fog kiírni a megfelelő programrészlet C- ben?

int x = 3;

if(4 < x < 6) printf("OK");

else printf("Nem OK");

De miért? Azért, mert (4 < x < 6):

■ nem azt vizsgálja, hogy x értéke 4 és 6 között van-e, hanem

■ egymás után két < műveletet végez el.

(8)

Alapvető programozásnyelvi elemek C-ben és PHP-ban

8

Kérdések, feladatok

A < művelet asszociativitásának megfelelően (4 < x < 6) kiértékelése ((4 < x) < 6)

(4 < x), ez hamis, ami C-ben 0,

tehát ((4 < x) < 6) → (0 < 6), ami igaz, tehát x = 3-ra: (4 < x < 6) IGAZ!

De akkor hogyan vizsgáljuk, hogy x értéke

4 és 6 között van-e? (4<x && x< 6)

(9)

Alapvető programozásnyelvi elemek C-ben és PHP-ban

9

Kérdések, feladatok

3. Milyen x értékekre lesz igaz C-ben a (4 > x > -1) kifejezés kiértékelése?

Megoldás

■ Minden 4 vagy annál nagyobb x értékre a 4 > x

hamis, tehát 0, ezért arra (4 > x > -1) → (0 > -1) igaz.

■ 4-nél kisebb x értékekre a 4 > x igaz, így (4 > x > -1)

→ (igaz > -1), tehát a végeredmény attól függ, hogy az igaz implementálása nagyobb-e, mint -1.

■ Az igaz implementálása többnyire 1 szokott lenni, ha ez nálunk is így van, akkor tehát a (4 > x > -1)

kifejezés bármilyen x esetén igazra értékelődik ki.

(10)

EFOP-3.4.3-16-2016-00014

AP1 HALLGATÓI DIPLOMA-SZERZÉST SEGÍTŐ SZOLGÁLTATÁSOK

10

AP1 Hallgatói diploma-szerzést segítő szolgáltatások

Jelen tananyag a

Szegedi Tudományegyetemen készült az

Európai Unió támogatásával.

Projekt azonosító:

EFOP-3.4.3-16-2016-00014

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

— Szintaktikai jellem zők: minden szohoz felvettük annak szintaktikai cím- kejet, tovabba főnevek eseteben megvizsgaltuk, hogy rendelkezik-e nevelovel, illetve igek

A Minden kalóz kibékült néhány indiánnal mondat elemzése után a nucleus és a comps tartalmazzák a logikai kifejezés magját és a kvantorok listáját, a tág hatókörű

Stuf ffofjer See. @t befißt feine große ©eleffrfamfeit. DaS jüttgffe ©erißt. Sunt Teufel, ¿um genfer geffen. DaS ffalf, baS füfflte er. »ei iffm gefft affeS fo fßfäfrig.

szerkezetekre utal, az ige-vonzat viszony pedig olyan tagmondatokra, ahol a metaforikus kifejezés az ige, a metaforicitást jelz szó pedig az ige nyelvtani alanya (8a), tárgya

A kategorizálás forgatókönyv tesztelése eddig a kategóriasemleges definitív kifejezések figyelembevételével történt, azaz azt teszteltük, hogy az algoritmus, illetve

A Minden kalóz kibékült néhány indiánnal mondat elemzése után a nucleus és a comps tartalmazzák a logikai kifejezés magját és a kvantorok listáját, a tág hatókör

(11) A metaforikus kifejezések szerveződésének köztes kombinált tézise: a metaforikus jelentés nyelvi megformálásában a kollokálódó kifejezések nagyobb

Példa: [8] Páros gráf – dokumentumok, kifejezések Kifejezések előfordulási gyakorisága adja az élsúlyokat... Az objektumok egymáshoz