Készítette: Nagy Tibor István

Hasonló dokumentumok
Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

Kifejezések. A programozás alapjai előadás. Operátorok. Kifejezések. Operátorok precedenciája. Operátorok precedenciája

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Szoftvertervezés és -fejlesztés I.

Kifejezések. Kozsik Tamás. December 11, 2016

Készítette: Nagy Tibor István

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Objektumorientált Programozás II.

Programozás I gyakorlat

Programozás I. C# bevezető. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 17.

Aritmetikai kifejezések lengyelformára hozása

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

A C# PROGRAMOZÁSI NYELV

A C# programozási nyelv alapjai

Operátorok, házi feladat adatszerkezetek

Java II. I A Java programozási nyelv alapelemei

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Programozás 3. Dr. Iványi Péter

Raszteres elemzés végrehajtása QGIS GRASS moduljával 1.7 dr. Siki Zoltán

3 A C programozási nyelv szintaktikai egységei

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Programozási technológia I 1. gyakorlat. A Java nyelvi alapjai, a NetBeans környezet

GYAKORLATIAS JAVA MINTA

A C# nyelv alapelemei

C# gyorstalpaló. Készítette: Major Péter

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Kifejezések. Kozsik Tamás. December 11, 2016

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Információs Technológia

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Vezérlési szerkezetek

Szoftvertervezés és -fejlesztés I.

LEGO robotok. XII. rész

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Pénzügyi algoritmusok

Java II. I A Java programozási nyelv alapelemei

OOP II. A C# nyelv alapelemei I.

Absztrakt adatstruktúrák A bináris fák

OOP II. A C# nyelv alapelemei I.

OOP II. A C# nyelv alapelemei

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

1. Alapok. #!/bin/bash

Imperatív és procedurális programozás a Javában

4. Fejezet : Az egész számok (integer) ábrázolása

A PHP nyelv. 4. óra Az alkotóelemek 5. óra Vezérlési szerkezetek 6. óra Függvények. 8. óra Objektumok

Programozás II gyakorlat. 8. Operátor túlterhelés

Verilog HDL ismertető 2. hét : 1. hét dia

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

OOP II. A C# nyelv alapelemei I.

Programozási nyelvek (ADA)

az Excel for Windows programban

Egész számok. pozitív egész számok: 1; 2; 3; 4;... negatív egész számok: 1; 2; 3; 4;...

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

Adatok, műveletek és vezérlés

Szoftvertechnológia alapjai Java előadások

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

Adattípusok. Numerikus adatok. A numerikus adatok különböző típusú számértékek. Logikai érték

Negatív alapú számrendszerek

Vezérlési szerkezetek. Szelekció Ciklusok

Hardver leíró nyelvek (HDL)

Lekérdezések az SQL SELECT utasítással

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA

Alkalmazott Modul III 2. előadás. Procedurális programozás: adattípusok, elemi programok. A procedurális programozás Koncepciója

M veletek és kifejezések

Alkalmazott Modul III 2. előadás. Procedurális programozás: adattípusok, elemi programok

Globális operátor overloading

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Programozás II. Segédlet az első dolgozathoz

Bevezetés a programozásba

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Bodlaki Tamás. Programozás C nyelven. Távoktatási segédlet

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

2. Fejezet : Számrendszerek

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Java programozási nyelv

Egész számok értelmezése, összehasonlítása

I. A FELADATMEGOLDÁS LÉPÉSEI ÉS MÓDSZEREI

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Bevezetés az informatikába Tételsor és minta zárthelyi dolgozat 2014/2015 I. félév

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

10-es számrendszer, 2-es számrendszer, 8-as számrendszer, 16-os számr. Számjegyek, alapműveletek.

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

Algoritmusok. Dr. Iványi Péter

Apple Swift kurzus 3. gyakorlat

Mutatók és mutató-aritmetika C-ben március 19.

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

Bevezetés a C++ programozásba

Objektumorientált Programozás I.

ködös határ (félreértés, hiba)

C programozási nyelv Pointerek, tömbök, pointer aritmetika

A C programozási nyelv III. Pointerek és tömbök.

Átírás:

Készítette: Nagy Tibor István

Operátorok Műveletek Egy (vagy több) műveleti jellel írhatók le A műveletet operandusaikkal végzik Operátorok fajtái operandusok száma szerint: egyoperandusú operátorok (pl.: előjel, ++, --) kétoperandusú operátorok (pl.: +, -, *, /) háromoperandusú operátor (? : ) Operandus lehet: literál, változó, függvényhívás, vagy egy összetett kifejezés

Kifejezések A kifejezés tetszőleges számú operátorból és azok operandusaiból áll Példa: (1 + 8 a) * (25 + b) / int.parse(console.readline()) A kifejezésben lévő műveletek elvégzése (kifejezés kiértékelése) után kiszámolt eredmény a kifejezés értéke (1 + 9) / 2 2 = 3 A kiszámolt eredmény típusa az operandusoktól függ (1 + 9) / 2 2 = 3. Típusa: int.

Kifejezés kiértékelése A kifejezés értékének kiszámítása A kifejezésben található műveletek megfelelő sorrendben történő elvégzése az operátorok precedenciája határozza meg a magasabb precedenciájú operátor előbb értékelődik ki azonos precedenciájú operátoroknál balról jobbra történik a kiértékelés a precedencia módosítható zárójelezéssel Az operátor és operandusai minden lépésben helyettesítődnek az operátor eredményével 3 + 4 * 5 2. 1. 3 + 2 1 1. 2. (3 + 4) * 5 1. 2.

Kifejezés kiértékelése Egy operátor kiértékelése az operandusaiból a megfelelő művelet elvégzésével történik Ez csak konkrét értékekkel lehetséges, ezért: ha az operandus egy változó, akkor a neve a változóban tárolt értékkel helyettesítődik int i = 4; int j = 3 + 2 * i int j = 3 + 2 * 4; ha az operandus egy függvényhívás, akkor a függvény neve helyettesítődik a végrehajtása után előállított értékkel double j = 10 * Math.Sin(3.14); double j = 10 * 0;

Kifejezés kiértékelése Példa int a = 8; int b = 6; a 12 * (b + 2) + 25 3. 2. 1. 4. a 12 * (6 + 2) + 25 a 12 * 8 + 25 a 96 + 25 8 96 + 25-88 + 25-63 int a = 8; double b = 1.57; a 12 * Math.Sin(b) / 10 3. 1. 2. a 12 * Math.Sin(1.57) / 10 a 12 * 1 / 10 a 12 / 10 a 1.2 8 1.2 6.8

Kifejezés típusa A kifejezésben található operandusok típusa közül a legbővebb Típusok viszonya: valós bővebb, mint az egész nagyobb helyfoglalású típus bővebb, mint a kisebb helyfoglalású byte + sbyte = int short + ushort = int int + uint = long long + ulong = x decimal + float = x decimal + double = x

Operátorok (aritmetikai) Operátor Kifejezés Precedencia Jelentés ++ x++ 1 Postinkrementálás -- x-- 1 Postdekrementálás ++ ++x 2 Preinkrementálás -- --x 2 Predekrementálás + +x 2 Pozitív előjel - -x 2 Negatív előjel * x * y 3 Szorzás / x / y 3 Osztás % x % y 3 Maradékképzés + x + y 4 Összeadás - x y 4 Kivonás

Inkrementáló / dekrementáló operátorok Változók értékének eggyel növelése (++), illetve eggyel csökkentése (--) Operandusuk csak változó (vagy tulajdonság, vagy indexelő) lehet Változataik: Prefix: ++x, --x A művelet eredménye x növelt (csökkentett) értéke Postfix: x++, x-- A művelet eredménye x növelés (csökkentés) előtti értéke Mindkét változat esetén x változó tartalma eggyel nő (csökken)

Inkrementáló / dekrementáló operátorok példa kifejezés (prefix) a kifejezés (postfix) a ++a + 7 + a 3 ++a + 7 + a 4 4 + 7 + a 4 11 + a 4 11 + 4 4 15 4 a++ + 7 + a 3 3 + 7 + a 3 3 + 7 + a 4 10 + a 4 10 + 4 4 14 4

Inkrementáló / dekrementáló operátorok (mi a kifejezés eredménye?) int a = 3; int b = ++a + 7; int a = 3; int b = a++ + ++a; int a = 3; int b = a++ + 7; int a = 3; int b = ++a + a++; int a = 3; int b = 2; int b = ++b * 12 + b * (a++ / 3) a

Operátorok (relációs) Operátor Kifejezés Precedencia Jelentés < x < y 6 Kisebb > x > y 6 Nagyobb <= x <= y 6 Kisebb egyenlő >= x >= y 6 Nagyobb egyenlő == x == y 7 Egyenlő!= x!= y 7 Nem egyenlő Eredményük logikai típusú

Operátorok (logikai) Operátor Kifejezés Precedencia Jelentés!!x 2 (logikai NEM) && x && y 11 (rk. * logikai ÉS) x y 12 (rk. * logikai VAGY) x y x x y x y F F T F F F T T F T T F F F T T T F T T * Rövidzár-kiértékeléses: ha az első operandusból egyértelműen kiderül a végeredmény, a második operandussal nem foglalkozik

Rövidzár-kiértékelés Ha az első operandusból egyértelműen kiderül a végeredmény, a második operandussal nem foglalkozik ÉS operátornál ha az első operandus hamis, a másodikkal nem érdemes foglalkozni, az eredmény mindenképp hamis lesz VAGY operátornál ha az első operandus igaz, a másodikkal nem érdemes foglalkozni, az eredmény mindenképp igaz lesz x y x y x y F F F F F T F T T F F T T T T T

Rövidzár-kiértékelés (melyik kód okoz futási hibát?) int i = 0; if(i!= 8 & 2 / i == 0) Console.WriteLine(i); int i = 0; if(i!= 8 && 2 / i == 0) Console.WriteLine(i); int[] t = {2, 4, 6, 8}; for(int i=0; i<4 & t[i]>0; ++i) Console.WriteLine(t[i]); int[] t = {2, 4, 6, 8}; for(int i=0; i<4 && t[i]>0; ++i) Console.WriteLine(t[i]); int[] t = {2, 4, 6, 8}; for(int i=0; t[i]>0 & i<4; ++i) Console.WriteLine(t[i]); int[] t = {2, 4, 6, 8}; for(int i=0; t[i]>0 && i<4; ++i) Console.WriteLine(t[i]);

Operátorok (bitenkénti) Operátor Kifejezés Precedencia Jelentés ~ ~x 2 (bitenkénti NEM) << x << y 5 Eltolás balra y helyiértékkel >> x >> y 5 Eltolás jobbra y helyiértékkel & x & y 8 (bitenkénti ÉS, nrk. * logikai ÉS) ^ x ^ y 9 (bitenkénti KIZÁRÓ VAGY) x y 10 (bitenkénti VAGY, nrk. * logikai VAGY) x y x x y x y x y 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 0 0 * Nem rövidzár-kiértékeléses

Eltolás (shift) operátorok Eltolás balra: x << y ( x * 2 y ) 4. 3. 2. 1. 0. 4. 3. 2. 1. 0. 0 1 0 1 0 0 1 0 1 0 0 10 20 Eltolás jobbra: x >> y ( x / 2 y ) 4. 3. 2. 1. 0. 4. 3. 2. 1. 0. 0 0 1 0 1 0 0 0 1 0 1 10 5

Operátorok (értékadó) Operátor Kifejezés Precedencia Jelentés = x = y 14 Értékadás += x += y 14 x = x + y -= x -= y 14 x = x y *= x *= y 14 x = x * y /= x /= y 14 x = x / y %= x %= y 14 x = x % y &= x &= y 14 x = x & y ^= x ^= y 14 x = x ^ y = x = y 14 x = x y <<= x <<= y 14 x = x << y >>= x >>= y 14 x = x >> y