Kifejezések, operandusok, operátorok

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

Koordináták, függvények
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Adatbázis rendszerek I Relációs kalkulus Általános Informatikai Tsz. Dr. Kovács László.
LEgyméretű tömbök, vektorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./0. lVektorok definiálása lVektorok definiálása kezdőértékekkel.
Típusok, változók, konstansok
LFüggvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 20./0. lFüggvények deklarációja és prototípusa lA függvénydefiníció lHivatkozás.
LRendezés minimális elem kiválasztással Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 19./0. lAz algoritmus működése lRávezető feladat.
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
2009 Bevezetés a programozásba Krankovits Melinda.
Programozási nyelvek.
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Mutatók, tömbök, függvények
C Kifejezések.
Borland C/C++ mintapéldák
Jt Java Kifejezések,precedencia. jt 2 Egy kifejezés operandusokból és operátorokból (műveletekből) áll. A kifejezésben szerepelhet egy vagy több operandus,
Készítette: Rummel Szabolcs Elérhetőség:
Java programozási nyelv 2. rész – Vezérlő szerkezetek
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1 Programozó matematikus szak 2003/2004-es tanév II. félév.
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1.5 Programozó matematikus szak 2003/2004-es tanév II. félév.
LDinamikus tömbök, kétdimenziós tömbök Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 21./0. lVektorok létrehozása futásidőben, dinamikusan.
Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
PHP Webprogramozás alapjai
Programozás I Függvények általános jellemzői
dr Póder Margit f. docens Rendszer- és Szoftvertechnológia Tanszék
Vizuális és web programozás II.
További vektor, mátrix algoritmusok
Excel Hivatkozások, függvények használata
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Programozás C# -ban Ciklusok.
Programozás Operátorok C# -ban.
C nyelv utasításai.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
A JavaScript bemutatása
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Megszámlálás, kiválasztás alapalgoritmusok
Ismétlés.
Kifejezések a Pascalban Páll Boglárka. Ismétlés: Ahogy algoritmikából láttuk, a kifejezések a Pascal nyelvben is operátorokból és operandusokból állnak.
Kifejezések. Algoritmus számol; Adott összeg; összeg:=0; Minden i:=1-től 5-ig végezd el Ha 2 | i akkor összeg:=összeg+2*i Ha vége Minden vége Algoritmus.
Összetett adattípusok
Operátorok Értékadások
PHP nyelv. PHP Interpreteres nyelv → parancsértelmező szükséges hozzá Rasmus Lerdorf 1995 → személyes felhasználás (internetes önéletrajzának megtekintésének.
Készítette: Csíki Gyula
Copyright, 1999 © Szlávi Péter Sor típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
1 Mivel foglalkoz(t)unk a laborokon? 1.hét: Word dokumentumok 1.hét: Word dokumentumok tagolása, tartalomjegyzék, ábrák számozása, hivatkozások, egyenlet-szerkesztő.
Fontos tudnivalók A MATLAB egy fajta objektummal dolgozik (Mátrix)
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
Algoritmizálás, adatmodellezés
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok: 1.Labor: Word alapok: dokumentum tagolása, tartalomjegyzék, ábrák számozása, hivatkozások 2.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
a programegységek között
Kifejezések C#-ban.
Gépészeti informatika (BMEGEMIBXGI)
Programozási nyelvek típusossága.
A C++ programozási nyelv
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatikai gyakorlatok 11. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Algoritmus készítés.
Típusok, változók, konstansok
Előadás másolata:

Kifejezések, operandusok, operátorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./0. Kifejezések, operandusok, operátorok Kifejezések a C nyelvben Operátorok típusai, kiértékelési sorrendje Aritmetikai operátorok Értékadó operátorok Léptető operátorok Relációoperátorok Logikai operátorok A feltételes operátor A címe és a mutató operátor A sizeof operátor A vessző operátor Típuskonvertáló operátor

Kifejezések a C nyelvben Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./1. Kifejezések a C nyelvben Kifejezés lehet : operátorokkal összekapcsolt operandusok, vagy egyetlen operandus. Egy kifejezés kiértékelésének eredménye általában egy érték. Operandus, amelyen az operátor hatása érvényesül, lehet : konstans, változó, függvény, vagy egy kifejezés. Operátorok, műveleti jelek : meghatározzák az operandusokkal végzendő műveleteket. Megkülönböztethetünk egy operandusra ható előrevetett (prefix) és hátravetett (postfix) operátorokat, közbeírt (infix) kétoperandusos operátorokat és létezik egy három operandusos operátor is.

Az értékadó kifejezés értéke: az eltárolt érték. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./2. Értékadó kifejezés A C nyelv jellegzetessége, hogy értékadó kifejezés is létezik, amelyből, bármely más kifejezéshez hasonlóan, egy ; utánaírásával utasítást kapunk. Az értékadó kifejezés alakja: balérték = jobbérték ahol a balérték (lvalue) egy tárolóhelyet jelölő kifejezés, mely egyértelműen beazonosítja a tárolóhely memóriacímét. Pl.: valt1 , vekt [ i ] , rekord.mezo . A jobbérték (rvalue) egy kifejezés, amelynek kiértékelésével adódó értéket a balértéknek megfelelő tárolóhelyre kell eltárolni. Pl.: 0.625 , const1, valt1, vekt [ i ] + 7 . Az értékadó kifejezés értéke: az eltárolt érték.

Operátorok típusai, kiértékelési sorrendje Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./3. Operátorok típusai, kiértékelési sorrendje

Operátorok részletezése Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./4. Operátorok részletezése ( ) A zárójelek alkalmazásával az operátorok precedenciája által meghatározott kiértékelési sorrend módosítható: 5+7*2  19 (5+7) * 2  24 [ ] A tömbök indexének megadására szolgáló zárójelekről a tömbök témakörénél szólunk bővebben. . -> A struktúratagokra való hivatkozás operátorait, a pontot és a nyílat a struktúrák témájánál részletezzük.

Aritmetikai operátorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./5. Aritmetikai operátorok előjelváltás (negálás) Pl.: v = 6; w = -v; /* w értéke -6 lesz */ összeadás Pl.: unsigned int v ; /* 0 <= v <= 65535 */ v = 5+3; /* v értéke 8 lesz */ v = 65535 + 4; /* v értéke 3 lesz !! */ kivonás Pl.: unsigned int v ; /* 0 <= v <= 65535 */ v = 125 - 43; /* v értéke 82 lesz */ v = 43 - 125; /* v értéke 65454 lesz! */

Aritmetikai operátorok .. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./6. Aritmetikai operátorok .. szorzás Pl.: unsigned int v; /* 0 <= v <= 65535 */ v = 257 * 256; /* v értéke 256 lesz!! */ osztás, egész típusú operandusok esetén egészosztás Pl.: f = 42.6 / 5; /* v értéke 8.52 lesz */ v = 42 / 5; /* v értéke 8 lesz */ osztás maradéka egész jellegű (egészek, char és enum) értékekre értelmezett. Pl.: v = 42 % 5; /* v értéke 2 lesz */

Pl.: terulet = (magassag = 6) * (szelesseg = 9); Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./7. Értékadó operátorok A balérték és a jobbérték operandusok az értékadó operátorok egyikével összekapcsolva értékadó kifejezést alkotnak. Ebből következik, hogy a C nyelvben kifejezésekben is kaphatnak új értéket a változók. Pl.: terulet = (magassag = 6) * (szelesseg = 9); Ennél a nehezen olvasható programszöveget eredményező tömör megoldásnál hasznosabb a jobbról balra történő kiértékelésből eredő többszörös értékadás lehetősége: Pl.: alfa = beta = 90;  alfa = (beta = 90) ;

Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./8. Értékadó operátorok .. A további összetett értékadó műveletek, melyek gyorsabb programot eredményeznek, az alábbi értékadások egyszerűsített formái: valt = valt + kif ;  valt += kif ; valt = valt - kif ;  valt -= kif ; valt = valt * kif ;  valt *= kif ; valt = valt / kif ;  valt /= kif ; valt = valt % kif ;  valt %= kif ;

++valt ;  valt = valt + 1;  valt++; Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./9. Léptető operátorok A léptető operátorok változók (balértékek) értékének eggyel történő növelésére (inkrementálás, ++), illetve csökkentésére (dekrementálás, - -) alkalmasak. ++valt ;  valt = valt + 1;  valt++; - -valt ;  valt = valt - 1;  valt- -; Eredmény: könnyebben olvasható, gyorsabb program.

Pl.: z = ++x * - -y ;  ++x ; - -y ; z = x * y ; Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./10. Léptető operátorok .. Összetett kifejezésbe ágyazva az operátorokat, figyelembe kell vennünk azt, hogy hatásukat vagy a kifejezés kiértékelése előtt (prefix, előrevetett alak), vagy után (postfix, hátravetett alak) fejtik ki. Pl.: z = ++x * - -y ;  ++x ; - -y ; z = x * y ; z = x++ / y - -;  z = x / y ; x++; y- -; z = x- - + ++y ;  ++y ; z = x + y ; x- -; z = -x- - - - -y ;  - -y ; z = -x - y ; x- -; z += ++x + y++  ++x ; z += (x+y); y++; z -= - -x - y- -;  - -x ; z -= (x-y); y- -; A kifejezésbe ágyazott léptető operátorok mellékhatásaként (side effect) a kifejezés kiértékelése előtt, vagy után megváltozik a léptetett változók értéke. Használjunk szóközös tagolást, kétség esetén zárójelet!

A C nyelvben nincs logikai típus. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./11. Relációoperátorok A C nyelvben nincs logikai típus. Bármely kifejezés szerepelhet logikai feltételben, ilyenkor a kifejezés nulla értéke a hamis, attól eltérő értéke az igaz értéknek felel meg. Ennek megfelelően a relációk teljesülése 1, hamis volta 0 értéket ad. Az egyenlőség relációjele az = = , a nemegyenlő relációoperátor pedig a ! = . Pl.: 25 < 3  0, hamis 45 != 12  1, igaz

Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./12. Logikai operátorok A logikai tagadás operátora a ! , az és művelet operátora az && , a vagy műveleté a || . Igazságtábláik: b 1 a && b a a || b !a Relációkifejezések logikai operátorral történő összekapcsolásánál nem szükséges zárójelezni, mert a relációk magasabb preceden-ciájúak. Pl.: 25 +3 < 45 && 12 > valt1 Logikai kifejezések rövid, csak az egyértelmű döntéshez szükséges hosszban való kiértékelése megakadályozhatja a nem kiértékelt részben található művelet, vagy mellékhatású operátor működését (rövidzár). Pl.: a || (v = 3) .

Zárójelezéssel áttekinthetőbb formát kapunk. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./13. A feltételes operátor Az egyetlen háromoperandusos operátor az első operandusként megadott feltételkifejezés igaz (nem nulla), vagy hamis (nulla) értékétől függően a : előtti, vagy utáni kifejezés értékét adja a feltételes kifejezés értékeként. A feltételes kifejezés típusa a kettő közül a nagyobb pontosságúéval egyezik. Pl.: x > 0 ? y : -y minab = (a < b) ? a : b ; Zárójelezéssel áttekinthetőbb formát kapunk.

A címe és a mutató operátor Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./14. A címe és a mutató operátor A címe & operátorból és általában egy balérték operandusból álló kifejezés értéke az operandus memóriabeli címe. A mutató * operátorból és egy memóriacímet meghatározó pointerből álló kifejezés értéke a memóriacímen található objektum értéke. Pl.: int valt1, *mut1 ; /* mut1 mutató definiálása */ valt1 = 28 ; /* értékadás a változónak */ mut1 = &valt1; /* értékadás a mutatónak */ *mut1 = *mut1 + 2; /* hivatkozás a mutatott változó értékére és a módosított érték eltárolása a mutatott objektumban */

Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./15. A sizeof operátor A sizeof operátor operandusa egy egyszerű, vagy összetett változó neve, vagy egy zárójelek között megadott típusnév lehet. A kifejezés értéke a változó, vagy a típus memóriabeli helyfoglalását adja meg byte-okban. Pl.: int x, x_merete, szohossz, helyfogl ; unsigned int szo; x_merete = sizeof x ; /* x_merete 2 lesz */ szohossz = sizeof szo ; /* szohossz 2 lesz */ helyfogl = sizeof (long int ); /* helyfogl 4 lesz */

Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./16. A vessző operátor A vesszővel elválasztott két operandusból álló kifejezés értéke és típusa a jobboldali operandus értékével és típusával egye-zik. A vessző operátorral több kifejezést sorolhatunk fel és értékeltethetünk ki olyan helyen, ahol egyébként csak egy kife-jezés állhatna. Előnyösen használható pl. for ciklusban kezdőértékadásra. Pl.: kerulet = ( r = 23.5 , 2 * r * PI ); Megjegyzés: A deklarációkban, ill. függvényargumentum-felsorolásban alkalmazott vessző nem operátor, hanem elválasztó karakter.

Típuskonvertáló operátor Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./17. Típuskonvertáló operátor Automatikus (implicit) típuskonverzió A C nyelv típusai eltérhetnek az adatábrázolás pontosságában, értéktartományában, de azonos memóriafoglalású és értékkész-letű típusok is lehetnek eltérő nevűek, mint pl. a short int és az int, vagy az alapértelmezett char és a signed char. Különösen érvényes ez az eltérő adattípusokra mutató pointerek esetében. Olyan eset is előfordulhat, amikor az egyik típus értékkészlete részhalmaza egy másik típus értékkészletének, pl. az int a long int típusnak. Az eltérő típusú értékek közötti műveletek elvégzése előtt a típusokat azonos típussá kell konvertálni. Ez a típusátalakí-tás az esetek nagy részében a beépített automatikus (implicit) típuskonverzió következtében észrevétlenül zajlik. A kisebb értéktartományú és pontosságú típusok automatikus konverziója probléma nélkül végbemegy, pl. float típusról double típusra. Azonban a konvertált adat pontossága, vagy akár értéke is romolhat, vagy definiálatlanná is válhat, pl. float típusról int-re történő átalakításnál.

Típuskonvertáló operátor Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./18. Típuskonvertáló operátor Programozott (explicit ) típuskonverzió Szükséges lehet a típuskonverzió operátorával programozott típuskonverzió olyan esetben, ha felül akarjuk bírálni az automatikus konverziót pl. a program gyorsítása céljából, vagy a típuseltérés hibájának elkerülésére, ha egy függvény adott típusú paramétert vár, továbbá programozott konverziót igényel eltérő típusra mutató pointerek címtartalmának átadása. Ilyen esetben az átalakítandó típusú kifejezésre alkalmazzuk a típuskonverzió operátorát : (típus) kifejezés alakban. Az eredményül kapott kifejezésérték a zárójelben megadott típusú lesz.

Típuskonvertáló operátor .. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 15./18. Típuskonvertáló operátor .. Pl.: int fok ; double v ; int * egeszremutato ; char * karakterremutato ; fok = 85; v = sin( (double) fok ); egeszremutato = &fok ; karakterremutato = (char*) egeszremutato ;