{"id":391,"date":"2014-04-28T12:13:36","date_gmt":"2014-04-28T10:13:36","guid":{"rendered":"http:\/\/www.webotlet.hu\/?p=391"},"modified":"2020-04-14T22:11:09","modified_gmt":"2020-04-14T20:11:09","slug":"java-programozas-8-operatorok","status":"publish","type":"post","link":"https:\/\/www.webotlet.hu\/?p=391","title":{"rendered":"Java programoz\u00e1s 6. &#8211; Oper\u00e1torok"},"content":{"rendered":"<h1>Oper\u00e1torok \u00e9s operandusok, avagy m\u0171veleti jelek \u00e9s szenved\u0151 alanyaik<\/h1>\n<p>A programoz\u00e1si nyelvek fontos r\u00e9sz\u00e9t k\u00e9pezik az oper\u00e1torok. Nevezz\u00fck \u0151ket m\u0171veleti jeleknek, hab\u00e1r nem a sz\u00f3 matematikai \u00e9rtelm\u00e9ben. Programoz\u00e1s sor\u00e1n sokszor \u00fagynevezett kifejez\u00e9sekkel dolgozunk, amelyek valamilyen \u00e9rt\u00e9kek \u00e9s k\u00f6z\u00f6tt\u00fck \u00e9rtelmezett m\u0171veletek. Megn\u00f6vel\u00fcnk egy sz\u00e1mot, \u00f6sszeadunk k\u00e9t v\u00e1ltoz\u00f3t, hogy egy harmadiknak megkapjuk az \u00e9rt\u00e9k\u00e9t, \u00f6sszehasonl\u00edtunk egy v\u00e1ltoz\u00f3t egy sz\u00e1mmal, hogy egyenl\u0151ek-e, stb. Oper\u00e1tornak mag\u00e1t a m\u0171veletet nevezz\u00fck, operandusnak pedig a kifejez\u00e9s azon r\u00e9sz\u00e9t, amit v\u00e1ltoztatni akarunk vagy amit felhaszn\u00e1lunk a sz\u00e1m\u00edt\u00e1shoz. Az operandus lehet egy megadott liter\u00e1l (egy direkt \u00e9rt\u00e9k), v\u00e1ltoz\u00f3 vagy kifejez\u00e9s.<\/p>\n<ul>\n<li>a <span style=\"color: #ff0000;\">=<\/span> b;<\/li>\n<li>b <span style=\"color: #ff0000;\">==<\/span> 2<\/li>\n<li>c <span style=\"color: #ff0000;\">=<\/span> a <span style=\"color: #ff0000;\">+<\/span> b;<\/li>\n<li>i<span style=\"color: #ff0000;\">++<\/span>;<\/li>\n<li>a <span style=\"color: #ff0000;\">+=<\/span> b <span style=\"color: #ff0000;\">*<\/span> 2;<\/li>\n<li>c <span style=\"color: #ff0000;\">=<\/span> a <span style=\"color: #ff0000;\">==<\/span> 3 <span style=\"color: #ff0000;\">?<\/span> 0 <span style=\"color: #ff0000;\">:<\/span> a;<\/li>\n<\/ul>\n<p>Az el\u0151z\u0151 p\u00e9ld\u00e1kban pirossal emeltem ki az oper\u00e1torokat, a marad\u00e9kok pedig az operandusok. Igyekeztem min\u00e9l t\u00f6bb p\u00e9ld\u00e1t felsorolni, de oper\u00e1tor enn\u00e9l sokkal t\u00f6bb van \u00e9s ezeket t\u00f6bbf\u00e9le elv ment\u00e9n csoportos\u00edthatjuk.<\/p>\n<p>Csoportos\u00edthatjuk az oper\u00e1torokat annak megfelel\u0151en, hogy h\u00e1ny operandust k\u00f6tnek \u00f6ssze. Ennek megfelel\u0151en megk\u00fcl\u00f6nb\u00f6ztet\u00fcnk:<\/p>\n<ul>\n<li>egyoperandus\u00fa,<\/li>\n<li>k\u00e9toperandus\u00fa,<\/li>\n<li>t\u00f6bboperandus\u00fa oper\u00e1tort.<\/li>\n<\/ul>\n<p>Logikusabb azonban aszerint csoportos\u00edtani \u0151ket, hogy milyen jelleg\u0171 m\u0171veletet hajtanak v\u00e9gre, b\u00e1r vannak olyanok, amelyek nem sorolhat\u00f3k be egy\u00e9rtelm\u0171en m\u0171velet alapj\u00e1n egy csoportba sem.<\/p>\n<ul>\n<li>Aritmetikai oper\u00e1torok<\/li>\n<li>Rel\u00e1ci\u00f3s oper\u00e1torok<\/li>\n<li>\u00c9rt\u00e9kad\u00f3 oper\u00e1torok<\/li>\n<li>Logikai oper\u00e1torok<\/li>\n<li>Inkrement\u00e1l\u00f3 (n\u00f6vel\u0151) oper\u00e1torok<\/li>\n<li>Felt\u00e9teles oper\u00e1tor<\/li>\n<li>Bitl\u00e9ptet\u0151 \u00e9s bitenk\u00e9nti oper\u00e1torok (esetleg k\u00e9s\u0151bb kifejtem)<\/li>\n<\/ul>\n<h4>Aritmetikai oper\u00e1torok<\/h4>\n<p>Ezek jellemz\u0151en valamilyen matematikai m\u0171veletet hajtanak v\u00e9gre k\u00e9t sz\u00e1m\u00e9rt\u00e9ken. Ezek az oper\u00e1torok a k\u00f6vetkez\u0151k:<\/p>\n<ul>\n<li>+<\/li>\n<li>&#8211;<\/li>\n<li>*<\/li>\n<li>\/<\/li>\n<li>%<\/li>\n<\/ul>\n<p>Az els\u0151 h\u00e1rmat nem kell nagyon megmagyar\u00e1zni, ezek matematikai alapm\u0171veletek, de az utols\u00f3 kett\u0151 m\u00e1r \u00e9rdekesebb. V\u00e1ltoz\u00f3kb\u00f3l, mint az 5. leck\u00e9ben m\u00e1r olvashattad l\u00e9teznek eg\u00e9sz \u00e9s lebeg\u0151pontos t\u00edpusok. A \/ jel az oszt\u00e1s jele, azonban ez k\u00e9tf\u00e9lek\u00e9ppen m\u0171k\u00f6dik.<\/p>\n<p><strong>Eg\u00e9sz oszt\u00e1s<\/strong><\/p>\n<p>Amennyiben a m\u0171veletet k\u00e9t eg\u00e9sz sz\u00e1m k\u00f6z\u00f6tt hajtjuk v\u00e9gre, akkor eg\u00e9sz oszt\u00e1sr\u00f3l besz\u00e9l\u00fcnk. Ez azt jelenti, hogy h\u00e1nyszor van meg az egyik sz\u00e1m a m\u00e1sikban \u00e9s a marad\u00e9kkal nem foglalkozunk.<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nint a = 10;\r\nint b = 3;\r\nSystem.out.println(a \/ b);\r\na = 12;\r\nb = 5;\r\nSystem.out.println(a \/ b);\r\n<\/pre>\n<p>Az els\u0151 ki\u00edrat\u00e1s 3-at, a m\u00e1sodik 2-\u0151t fog ki\u00edrni, \u00e9s nem \u00e9rdekel minket a marad\u00e9k.<\/p>\n<p><strong>Val\u00f3s oszt\u00e1s<\/strong><\/p>\n<p>Az \/ oper\u00e1tor haszn\u00e1latakor m\u00e1sfajta eredm\u00e9nyt kapunk akkor, ha a k\u00e9t sz\u00e1m k\u00f6z\u00fcl legal\u00e1bb az egyik nem eg\u00e9sz:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nint a = 10;\r\ndouble d = 3.0;\r\nSystem.out.println(a \/ d);\r\n<\/pre>\n<p>Az eredm\u00e9ny 3.3333333&#8230;<br \/>\nNa de mi van akkor, ha k\u00e9t eg\u00e9sz sz\u00e1munk van, de a teljes val\u00f3s eredm\u00e9ny \u00e9rdekel minket? Az nem el\u00e9g, hogy 10\/3, mert az oper\u00e1tor csak a k\u00e9t sz\u00e1m t\u00edpusa alapj\u00e1n tudja eld\u00f6nteni, hogy eg\u00e9sz vagy val\u00f3s oszt\u00e1st szeretn\u00e9nk. Ehhez egy kis tr\u00fckk\u00f6t kell alkalmazni:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nSystem.out.println(10 \/ 3.0);\r\n\/\/ vagy\r\nSystem.out.println(10.0 \/ 3);\r\n<\/pre>\n<p>L\u00e9nyegtelen melyiket b\u0151v\u00edtem ki lebeg\u0151pontos sz\u00e1mm\u00e1, a l\u00e9nyeg, hogy legal\u00e1bb az egyik az legyen. De v\u00e1ltoz\u00f3k haszn\u00e1lata eset\u00e9n ezt nem tehetem meg, mert annak semmi \u00e9rtelme, hogy a.0\/b. Mit tehet\u00fcnk ilyenkor?<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nint a = 10;\r\nint b = 3;\r\nSystem.out.println(a \/ (b + 0.0));\r\n<\/pre>\n<p>Egyszer\u0171en az egyik v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9hez hozz\u00e1adunk 0.0-t. Ett\u0151l az \u00e9rt\u00e9ke nem v\u00e1ltozik meg, csak a t\u00edpusa, teh\u00e1t val\u00f3s oszt\u00e1s lesz bel\u0151le. \u00c9s minek a z\u00e1r\u00f3jel? Pr\u00f3b\u00e1ld ki n\u00e9lk\u00fcle:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nint a = 10;\r\nint b = 3;\r\nSystem.out.println(a \/ b + 0.0);\r\n<\/pre>\n<p>Mi is matematik\u00e1ban a m\u0171veletek sorrendje? El\u0151sz\u00f6r elv\u00e9gzi az oszt\u00e1st, ami eg\u00e9sz oszt\u00e1s lesz, annak eredm\u00e9nye 3. Majd ehhez hozz\u00e1ad 0.0-t, ami miatt 3.0 lesz \u00e9s nem 3.33333. Nagyon sokszor el\u0151fordul ez a hiba, amikor az a feladat, hogy \u00e1tlagot kell sz\u00e1molni. Figyelj\u00fcnk oda, hogy eg\u00e9sz oszt\u00e1sra vagy val\u00f3s oszt\u00e1sra van sz\u00fcks\u00e9g\u00fcnk, \u00e9s ha val\u00f3s oszt\u00e1sra van sz\u00fcks\u00e9g\u00fcnk eg\u00e9sz sz\u00e1mok k\u00f6z\u00f6tt, akkor ne maradjon le a +0.0<\/p>\n<p><strong>Marad\u00e9kos oszt\u00e1s<\/strong><\/p>\n<p>Amikor k\u00e9t sz\u00e1m oszt\u00e1sakor nem a h\u00e1nyados, hanem a marad\u00e9k \u00e9rdekel minket, akkor van sz\u00fcks\u00e9g\u00fcnk a % oper\u00e1torra. Haszn\u00e1lni is egyszer\u0171:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nint a = 10;\r\nint b = 3;\r\nSystem.out.println(a % b);\r\na = 12;\r\nb = 5;\r\nSystem.out.println(a % b);\r\n<\/pre>\n<p>Az els\u0151 ki\u00edrat\u00e1s 1, a m\u00e1sodik 2 lesz. Az oszt\u00e1s elv\u00e9gz\u00e9se ut\u00e1n ennyi a marad\u00e9k. A marad\u00e9kos oszt\u00e1st sz\u00e1mok oszt\u00f3inak keres\u00e9sekor szoktuk haszn\u00e1lni. Ha egy sz\u00e1m p\u00e9ld\u00e1ul 5-tel osztva nulla marad\u00e9kot ad, akkor mit tudtunk meg a sz\u00e1mr\u00f3l? Hogy oszthat\u00f3 5-tel. Ha a sz\u00e1m % 3 null\u00e1val egyenl\u0151? Akkor 3-mal oszthat\u00f3. Ez k\u00e9s\u0151bb m\u00e9g t\u00f6bbsz\u00f6r el\u0151fordul, eml\u00e9kezz\u00fcnk r\u00e1. A marad\u00e9kos oszt\u00e1s egy\u00e9bk\u00e9nt nem csak eg\u00e9sz sz\u00e1mok k\u00f6z\u00f6tt m\u0171k\u00f6dik, akkor is helyes eredm\u00e9nyt ad, ha nem eg\u00e9sz mindk\u00e9t sz\u00e1m. A l\u00e9nyeg, hogy ha az egyik sz\u00e1m nem eg\u00e9sz, akkor az eredm\u00e9ny is a nem eg\u00e9sz t\u00edpusnak megfelel\u0151 lesz. A k\u00f6vetkez\u0151 p\u00e9ld\u00e1kat \u00e9rdemes kipr\u00f3b\u00e1lni:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n10 % 3\r\n10.0 % 3\r\n10 % 3.0\r\n10.0 % 3.0\r\n10.5 % 3\r\n10 % 3.5\r\n10.0f % 3.0\r\n<\/pre>\n<h4>Rel\u00e1ci\u00f3s oper\u00e1torok<\/h4>\n<p>Az oper\u00e1torok k\u00f6vetkez\u0151 csoportja a rel\u00e1ci\u00f3s oper\u00e1torok. Ezek a matematik\u00e1ban is ismeretes rel\u00e1ci\u00f3k, melyek a k\u00f6vetkez\u0151k:<\/p>\n<table>\n<tbody>\n<tr>\n<th width=\"50%\">Rel\u00e1ci\u00f3<\/th>\n<th>Jele<\/th>\n<\/tr>\n<tr>\n<td width=\"50%\">kisebb<\/td>\n<td>&lt;<\/td>\n<\/tr>\n<tr>\n<td width=\"50%\">nagyobb<\/td>\n<td>&gt;<\/td>\n<\/tr>\n<tr>\n<td width=\"50%\">kisebb vagy egyenl\u0151<\/td>\n<td>&lt;=<\/td>\n<\/tr>\n<tr>\n<td width=\"50%\">nagyobb vagy egyenl\u0151<\/td>\n<td>&gt;=<\/td>\n<\/tr>\n<tr>\n<td width=\"50%\">egyenl\u0151<\/td>\n<td>==<\/td>\n<\/tr>\n<tr>\n<td width=\"50%\">nem egyenl\u0151<\/td>\n<td>!=<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>A rel\u00e1ci\u00f3k els\u0151 4 fajt\u00e1j\u00e1t nem nagyon kell kifejteni, ellenben az == m\u00e1r magyar\u00e1zatra szorul. Ez semmik\u00e9ppen nem keverend\u0151 a = jellel. Nagyon sokszor keverik a kezd\u0151 Java programoz\u00f3k ezt a k\u00e9t oper\u00e1tort. Az == a k\u00e9t oldalon szerepl\u0151 liter\u00e1l, v\u00e1ltoz\u00f3 vagy kifejez\u00e9s egyenl\u0151s\u00e9g\u00e9t vizsg\u00e1lja. Az = pedig az \u00e9rt\u00e9kad\u00e1st jelenti, amit lejjebb ismertetek. A rel\u00e1ci\u00f3k, \u00edgy az egyenl\u0151s\u00e9gvizsg\u00e1lat is, egy logikai \u00e9rt\u00e9ket adnak eredm\u00e9ny\u00fcl, ami igaz, vagy hamis lehet. Megjegyz\u00e9sbe oda\u00edrtam a ki\u00edrat\u00e1sok mell\u00e9 az eredm\u00e9nyt is.<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nSystem.out.println( 5 &gt;= 6 ); \/\/ false\r\nSystem.out.println( 4 == 4 ); \/\/ true\r\nSystem.out.println( 4 == 6 ); \/\/ false\r\nSystem.out.println( 4 != 3 ); \/\/ true\r\nSystem.out.println( 4 &lt;= 5 ); \/\/ true\r\nSystem.out.println( 6 &lt; 3 );  \/\/ false\r\n<\/pre>\n<h4>\u00c9rt\u00e9kad\u00f3 oper\u00e1torok<\/h4>\n<p>Ezek az oper\u00e1torok valamilyen v\u00e1ltoz\u00f3nak adnak \u00e9rt\u00e9ket. Az \u00e9rt\u00e9kad\u00e1s alapform\u00e1ja:<\/p>\n<p>v\u00e1ltoz\u00f3 = kifejez\u00e9s;<\/p>\n<p>Az \u00e9rt\u00e9kad\u00e1s bal oldal\u00e1n mindenk\u00e9ppen egy v\u00e1ltoz\u00f3nak kell szerepelnie, jobb oldalon pedig egy liter\u00e1l, v\u00e1ltoz\u00f3, vagy olyan kifejez\u00e9s (oper\u00e1torok \u00e9s operandusok \u00f6sszess\u00e9ge), amely egy \u00e9rt\u00e9ket hat\u00e1roz meg, amit elt\u00e1rolunk az \u00e9rt\u00e9kad\u00e1s bal oldal\u00e1n l\u00e9v\u0151 v\u00e1ltoz\u00f3ban. Az \u00e9rt\u00e9kad\u00f3 kifejez\u00e9sben maga a bal oldali v\u00e1ltoz\u00f3 is szerepelhet. A kiemelt sorban egy olyan \u00e9rt\u00e9kad\u00e1s l\u00e1that\u00f3, ahol a kifejez\u00e9sben is megtal\u00e1lhat\u00f3 a bal oldali v\u00e1ltoz\u00f3, ebben a l\u00e9p\u00e9sben val\u00f3j\u00e1ban a v\u00e1ltoz\u00f3t 1-gyel megn\u00f6velj\u00fck. Fontos, hogy a kezd\u0151\u00e9rt\u00e9k megad\u00e1sakor (inicializ\u00e1ci\u00f3) ilyen nem lehets\u00e9ges, mert addig nem haszn\u00e1lhat\u00f3 fel egy v\u00e1ltoz\u00f3 egy kifejez\u00e9sben, am\u00edg nincs kezd\u0151\u00e9rt\u00e9ke! Itt a kiemelt sor el\u0151tt a kezd\u0151\u00e9rt\u00e9k megad\u00e1sa megt\u00f6rt\u00e9nt, teh\u00e1t ut\u00e1na m\u00e1r n\u00f6velhetem ilyen \u00e9rt\u00e9kad\u00e1ssal.<\/p>\n<pre class=\"brush: java; highlight: [2]; title: ; notranslate\" title=\"\">\r\nint a = 0;\r\na = a + 1;\r\n<\/pre>\n<p>\u00c9rt\u00e9kad\u00f3 oper\u00e1torb\u00f3l azonban t\u00f6bb is van. Ezek t\u00f6bbs\u00e9ge valamilyen matematikai m\u0171velettel van \u00f6sszekapcsolva:<\/p>\n<ul>\n<li>+=<\/li>\n<li>-=<\/li>\n<li>*=<\/li>\n<li>\/=<\/li>\n<li>%=<\/li>\n<\/ul>\n<p>Ezek a t\u00edpusok a m\u00e1r tanult aritmetikai oper\u00e1torokkal kapcsolja \u00f6ssze a m\u0171veletet. Ilyen oper\u00e1tor haszn\u00e1latakor ki\u00e9rt\u00e9kel\u00e9sre ker\u00fcl a jobb oldal, \u00e9s a bal oldali v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t az \u00e9rt\u00e9kad\u00e1shoz kapcsolt m\u0171veletnek megfelel\u0151en v\u00e9gzi el. Megn\u00f6veli a v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t a jobb oldallal, cs\u00f6kkenti a v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t a jobb oldallal, szorozza a v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t a jobb oldallal, osztja a v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t a jobb oldallal, stb. Itt is igaz az, hogy ha a k\u00e9t oldalon eg\u00e9sz \u00e9rt\u00e9kek szerepelnek akkor a \/= eg\u00e9sz oszt\u00e1st jelent, ha legal\u00e1bb az egyik lebeg\u0151pontos \u00e9rt\u00e9k, akkor val\u00f3s oszt\u00e1s. Az utols\u00f3 t\u00edpus a bal oldali v\u00e1ltoz\u00f3 eredeti \u00e9rt\u00e9k\u00e9t osztja a jobb oldallal \u00e9s a marad\u00e9kot t\u00e1rolja el a bal oldali v\u00e1ltoz\u00f3 \u00faj \u00e9rt\u00e9k\u00e9nek. Az utols\u00f3 esetben nem azonos t\u00edpusok eset\u00e9n tizedesjegy csonkol\u00e1sok is el\u0151fordulhatnak.<\/p>\n<h4>Logikai oper\u00e1torok<\/h4>\n<p>A logikai oper\u00e1torok felt\u00e9teleket kapcsolnak \u00f6ssze. Ezek a felt\u00e9telek rendszerint a m\u00e1r el\u0151z\u0151leg ismertetett rel\u00e1ci\u00f3khoz kapcsol\u00f3dnak. Programoz\u00e1sban k\u00f6z\u00e9piskolai szinten jellemz\u0151en 3 logikai m\u0171veletet haszn\u00e1lunk:<\/p>\n<ul>\n<li>neg\u00e1l\u00e1s (tagad\u00e1s)<\/li>\n<li>logikai \u00e9s<\/li>\n<li>logikai vagy<\/li>\n<\/ul>\n<p>Ezek k\u00f6z\u00fcl az els\u0151 k\u00fcl\u00f6nb\u00f6zik a m\u00e1sik kett\u0151t\u0151l, mert \u0151 nem felt\u00e9teleket kapcsol \u00f6ssze, csak egy logikai kifejez\u00e9s eredm\u00e9ny\u00e9t v\u00e1ltoztatja meg az ellenkez\u0151j\u00e9re.<\/p>\n<p><strong>Neg\u00e1l\u00e1s:<\/strong><\/p>\n<p>A neg\u00e1l\u00e1s (tagad\u00e1s) egy logikai kifejez\u00e9s \u00e9rt\u00e9k\u00e9t az ellenkez\u0151j\u00e9re v\u00e1ltoztatja. Ami igaz volt, az hamis lesz, ami hamis volt, az igaz lesz. Vagy egy eld\u00f6ntend\u0151 k\u00e9rd\u00e9st ford\u00edthatunk meg vele. A sz\u00e1m <strong>NEM<\/strong> p\u00e1ros? (teh\u00e1t p\u00e1ratlan, mivel m\u00e1s lehet\u0151s\u00e9g nincs)<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n!(szam % 2 == 0) \/\/ nem p\u00e1ros\r\n!(szam &gt; 5) \/\/ nem nagyobb, mint 5\r\n!true \/\/ nem igaz, teh\u00e1t hamis\r\n<\/pre>\n<p>Programoz\u00e1s sor\u00e1n azonban a felt\u00e9telek sokszor nem \u00f6nmagukban \u00e1llnak, hanem t\u00f6bbet \u00f6ssze kell kapcsolni. Ezeket \u00f6sszetett felt\u00e9teleknek nevezz\u00fck. Ha t\u00f6bb felt\u00e9tel\u00fcnk van, de azok egy\u00fctt \u00e9rtend\u0151k, akkor azokat \u00f6ssze kell kapcsolni valamilyen logikai m\u0171velettel, erre szolg\u00e1l a <strong>logikai \u00e9s<\/strong>, valamint a <strong>logikai vagy<\/strong> m\u0171velet.<\/p>\n<ol>\n<li>a sz\u00e1m p\u00e1ros <strong>\u00e9s<\/strong> pozit\u00edv?<\/li>\n<li>a sz\u00e1m nagyobb, mint 10 <strong>\u00e9s<\/strong> p\u00e1ratlan?<\/li>\n<li>a sz\u00e1m nagyobb, mint 10 <strong>\u00e9s<\/strong> kisebb, mint 30?<\/li>\n<li>a sz\u00e1m oszthat\u00f3 3-mal <strong>vagy<\/strong> 7-tel?<\/li>\n<li>a sz\u00e1m nem negat\u00edv <strong>vagy<\/strong> p\u00e1ros?<\/li>\n<\/ol>\n<p>Itt l\u00e1that\u00f3an \u00f6sszetett felt\u00e9tellel dolgozunk, de nem mindegy, hogy azokat mi kapcsolja \u00f6ssze. R\u00e1ad\u00e1sul a felt\u00e9telek sz\u00e1ma nem csak 2 lehet, b\u00e1rmennyi felt\u00e9telt \u00f6sszekapcsolhatunk.<\/p>\n<p><strong>Logikai \u00e9s<\/strong>:<\/p>\n<p>A logikai \u00e9s k\u00e9t vagy t\u00f6bb felt\u00e9telt kapcsol \u00f6ssze egyetlen \u00f6sszetett logikai kifejez\u00e9ss\u00e9. Ha azt mondom, hogy a piros \u00e9s gyors aut\u00f3kat szeretem, akkor sz\u00f3ba sem j\u00f6hetnek a k\u00e9kek, z\u00f6ldek, lass\u00faak, stb, de egy t\u0171zpiros Jaguar igen. A k\u00e9t felt\u00e9telnek egyszerre kell teljes\u00fclnie. Defin\u00edci\u00f3 szerint ez a k\u00f6vetkez\u0151t jelenti: <strong>A logikai \u00e9s m\u0171velettel \u00f6sszek\u00f6t\u00f6tt r\u00e9szfelt\u00e9telek akkor adnak egy\u00fctt igaz \u00e9rt\u00e9ket, ha a kifejez\u00e9s minden r\u00e9szfelt\u00e9tele igaz.<\/strong> Ebb\u0151l k\u00f6vetkezik, hogy ha egy r\u00e9szfelt\u00e9tel hamis, akkor hamis az eg\u00e9sz kifejez\u00e9s. Term\u00e9szetesen t\u00f6bb felt\u00e9telt is megadhatok. Piros, gyors, Ferrari. Ett\u0151l kezdve az el\u0151z\u0151 t\u0171zpiros Jaguar is kiesett a kos\u00e1rb\u00f3l, m\u00edg az el\u0151z\u0151 k\u00e9t r\u00e9szfelt\u00e9teles esetben m\u00e9g megfelelt volna. Min\u00e9l t\u00f6bb felt\u00e9telt k\u00f6t\u00f6k \u00f6ssze, ann\u00e1l kev\u00e9sb\u00e9 kapok v\u00e9geredm\u00e9nyk\u00e9nt igaz \u00e9rt\u00e9ket. A logikai \u00e9s m\u0171velet jele: &amp;&amp;<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nszam &gt; 5 &amp;&amp; szam % 2 == 0 \/\/ a sz\u00e1m 5-n\u00e9l nagyobb \u00c9S p\u00e1ros\r\nsz\u00e1m &lt; 0 &amp;&amp; szam % 2 != 0 \/\/ a sz\u00e1m negat\u00edv \u00c9S p\u00e1ratlan\r\nszam &gt; 10 &amp;&amp; szam &lt; 20    \/\/ a sz\u00e1m 10 \u00c9S 20 k\u00f6z\u00f6tt van\r\n<\/pre>\n<p><strong>Logikai vagy:<\/strong><\/p>\n<p>A logikai vagy szint\u00e9n k\u00e9t vagy t\u00f6bb felt\u00e9telt kapcsol \u00f6ssze egyetlen \u00f6sszetett logikai kifejez\u00e9ss\u00e9. Ha azt mondom, hogy a piros vagy gyors aut\u00f3kat szeretem, akkor ez j\u00f3val megenged\u0151bb, mint az el\u0151z\u0151 p\u00e9lda. Sz\u00f3ba j\u00f6het a fekete Ferrari \u00e9s a t\u0171zpiros Trabant is, de term\u00e9szetesen a t\u0171zpiros Ferrari is. A k\u00e9t felt\u00e9telnek nem kell egyszerre teljes\u00fclnie ahhoz, hogy az \u00f6sszetett felt\u00e9tel igaz legyen. <strong>A logikai vagy m\u0171velettel \u00f6sszek\u00f6t\u00f6tt r\u00e9szfelt\u00e9telek akkor adnak egy\u00fctt igaz \u00e9rt\u00e9ket, ha a kifejez\u00e9s legal\u00e1bb egy r\u00e9szfelt\u00e9tele igaz.<\/strong> Vagyis ha b\u00e1rmi igaz benne, akkor igaz az eg\u00e9sz egy\u00fctt is. Ha minden hamis, csak akkor hamis az eg\u00e9sz kifejez\u00e9s. A logikai vagy m\u0171velet jele: ||<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nszam &gt; 0 || szam &lt; 0 \/\/ a sz\u00e1m 0-n\u00e1l nagyobb, VAGY 0-n\u00e1l kisebb\r\nszam &gt; 10 || szam &lt; 0 \/\/ a sz\u00e1m 10-n\u00e9l nagyobb vagy negat\u00edv\r\n<\/pre>\n<p><strong>Kiz\u00e1r\u00f3 vagy:<\/strong><\/p>\n<p>Nem eml\u00edtettem meg egy logikai m\u0171veletet, ami m\u00e9g el\u0151fordulhat a programoz\u00e1si feladatokban, igaz ritk\u00e1n. Ez a kiz\u00e1r\u00f3 vagy. Nem gy\u0151z\u00f6m eleget hangs\u00falyozni:<\/p>\n<p><span style=\"color: #ff0000;\">logikai vagy != kiz\u00e1r\u00f3 vagy<\/span><\/p>\n<p>Az igazi probl\u00e9ma a magyar nyelvvel van. Szeretem, haszn\u00e1lom, im\u00e1dom, de a programoz\u00e1sban haszn\u00e1latos gondolkod\u00e1sm\u00f3ddal sokszor sz\u00f6ges ellent\u00e9tben \u00e1ll:<\/p>\n<ul>\n<li>Moziba menjek <strong>vagy<\/strong> tanuljak?<\/li>\n<li>N\u00e9gyes <strong>vagy<\/strong> \u00f6t\u00f6s lesz a dolgozatom?<\/li>\n<li>Fej <strong>vagy<\/strong> \u00edr\u00e1s?<\/li>\n<li>Fej <strong>vagy<\/strong> gyomor?<\/li>\n<\/ul>\n<p>A magyar nyelvben nagyon sokszor a kiz\u00e1r\u00f3 vagy m\u0171veletet haszn\u00e1ljuk. Vagy moziba megyek, vagy tanulok, a kett\u0151 egy\u00fctt nem igaz\u00e1n m\u0171k\u00f6dik. A dolgozatom vagy n\u00e9gyes vagy \u00f6t\u00f6s lesz, de csak az egyik (jobb esetben). <strong>A kiz\u00e1r\u00f3 vagy akkor igaz, ha pontosan egy r\u00e9szfelt\u00e9tele igaz.<\/strong> Vagyis a k\u00e9t vagy t\u00f6bb felt\u00e9telb\u0151l nem teljes\u00fclhet t\u00f6bb egyszerre. De hogy a magyar nyelvben melyik vagy m\u0171veletet kell \u00e9rteni a vagy sz\u00f3csk\u00e1n ezt mindig a sz\u00f6vegk\u00f6rnyezet \u00e9s a feladat t\u00edpusa hat\u00e1rozza meg. <strong>Ha a k\u00e9t dolog egyszerre nem fordulhat el\u0151, akkor csak a kiz\u00e1r\u00f3 vagy j\u00f6het sz\u00f3ba.<\/strong> De ha a barna haj\u00fa vagy szem\u00fcveges n\u0151k tetszenek, akkor a barna haj\u00fa \u00e9s szem\u00fcveges is val\u00f3sz\u00edn\u0171leg megfelel. A kiz\u00e1r\u00f3 vagy m\u0171velet jele: ^<\/p>\n<h4><a name=\"relaciok_problemaja\"><\/a>Rel\u00e1ci\u00f3k probl\u00e9m\u00e1ja<\/h4>\n<p>T\u00e9rj\u00fcnk vissza kicsit a rel\u00e1ci\u00f3kra. A tagad\u00e1s, mint m\u00e1r eml\u00edtettem, megford\u00edt valamit. Egy logikai \u00e9rt\u00e9ket az ellenkez\u0151j\u00e9re v\u00e1ltoztat, de a rel\u00e1ci\u00f3kra is hat\u00e1ssal van. Ez nem igaz\u00e1n a logikai kifejez\u00e9sekhez kapcsol\u00f3d\u00f3 t\u00e9mak\u00f6r, ink\u00e1bb logikai-sz\u00f6veg\u00e9rt\u00e9si feladat, amivel kapcsolatban az a tapasztalat, hogy nagy probl\u00e9m\u00e1k vannak ezzel a ter\u00fclettel.<\/p>\n<p>Vegy\u00fck p\u00e9ld\u00e1ul a k\u00f6vetkez\u0151t: Mit jelent az, hogy nem nagyobb? A tipikus v\u00e1lasz: kisebb. NEM! A nem nagyobb azt jelenti, hogy kisebb vagy egyenl\u0151. Hiszen, ha valami nem nagyobb, att\u00f3l m\u00e9g vele egyenl\u0151 is lehet! Hasonl\u00f3an a nem kisebb jelent\u00e9se: nagyobb vagy egyenl\u0151. L\u00e1ssuk akkor, hogy melyik rel\u00e1ci\u00f3nak melyik a tagad\u00e1sa:<\/p>\n<table>\n<tbody>\n<tr>\n<th>Rel\u00e1ci\u00f3<\/th>\n<th>Tagad\u00e1sa<\/th>\n<\/tr>\n<tr>\n<td>kisebb<\/td>\n<td>nagyobb vagy egyenl\u0151<\/td>\n<\/tr>\n<tr>\n<td>nagyobb<\/td>\n<td>kisebb vagy egyenl\u0151<\/td>\n<\/tr>\n<tr>\n<td>kisebb vagy egyenl\u0151<\/td>\n<td>nagyobb<\/td>\n<\/tr>\n<tr>\n<td>nagyobb vagy egyenl\u0151<\/td>\n<td>kisebb<\/td>\n<\/tr>\n<tr>\n<td>egyenl\u0151<\/td>\n<td>nem egyenl\u0151<\/td>\n<\/tr>\n<tr>\n<td>nem egyenl\u0151<\/td>\n<td>egyenl\u0151<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>Inkrement\u00e1l\u00f3 oper\u00e1torok<\/h4>\n<p>L\u00e9tezik k\u00e9t speci\u00e1lis oper\u00e1tor, mely egy v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9nek 1-gyel val\u00f3 n\u00f6vel\u00e9s\u00e9re \u00e9s cs\u00f6kkent\u00e9s\u00e9re szolg\u00e1l:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nv\u00e1ltoz\u00f3++;\r\nv\u00e1ltoz\u00f3--;\r\n<\/pre>\n<p>\u00dagy t\u0171nik, hogy maga a n\u00f6vel\u00e9s vagy cs\u00f6kkent\u00e9s a k\u00f6vetkez\u0151 utas\u00edt\u00e1st helyettes\u00edti teljes eg\u00e9sz\u00e9ben:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nv\u00e1ltoz\u00f3 = v\u00e1ltoz\u00f3 + 1;\r\nv\u00e1ltoz\u00f3 = v\u00e1ltoz\u00f3 - 1;\r\n<\/pre>\n<p>Ez a k\u00e9t eset val\u00f3j\u00e1ban 4 esetet jelent, a p\u00e9ld\u00e1kb\u00f3l egy\u00e9rtelm\u0171 lesz, mire gondolok. Ezek az oper\u00e1torok rendk\u00edv\u00fcl sokszor fordulnak el\u0151, \u00e9s a k\u00f3d \u00e1tl\u00e1that\u00f3s\u00e1g\u00e1t sem rontja akkora m\u00e9rt\u00e9kben, hogy ez gondot jelentene. Ez a 4 eset a k\u00f6vetkez\u0151k\u00e9pp n\u00e9z ki v\u00e1ltoz\u00f3 n\u00f6vel\u00e9s\/cs\u00f6kkent\u00e9s eset\u00e9n:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nv\u00e1ltoz\u00f3++;\r\n++v\u00e1ltoz\u00f3;\r\nv\u00e1ltoz\u00f3--;\r\n--v\u00e1ltoz\u00f3;\r\n<\/pre>\n<p>Az alaphelyzet teh\u00e1t az, hogy a ++ oper\u00e1tor megn\u00f6veli eggyel a v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t, m\u00edg a &#8212; cs\u00f6kkenti azt. Ezek a p\u00e9ld\u00e1k \u00f6n\u00e1ll\u00f3 utas\u00edt\u00e1sk\u00e9nt m\u0171k\u00f6dnek, ez\u00e9rt z\u00e1rtam le ezeket ; jellel.<\/p>\n<p>L\u00e1that\u00f3 azonban, hogy mindk\u00e9t oper\u00e1tor szerepelhet a v\u00e1ltoz\u00f3 el\u0151tt \u00e9s ut\u00e1n. Amikor az oper\u00e1tor a v\u00e1ltoz\u00f3 m\u00f6g\u00f6tt szerepel, azt postfix alaknak nevezz\u00fck, ha el\u0151tte, akkor prefix alakr\u00f3l besz\u00e9l\u00fcnk. Nyilv\u00e1n nem csak eszt\u00e9tikai jelent\u0151s\u00e9ge van, l\u00e1ssuk a gyakorlati haszn\u00e1t. Az els\u0151 k\u00e9t p\u00e9ld\u00e1ban mivel ebben a sorban csak annyi szerepel, hogy a v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t n\u00f6velj\u00fck meg, ez\u00e9rt nincs a k\u00e9t megold\u00e1s k\u00f6z\u00f6tt k\u00fcl\u00f6nbs\u00e9g. Azonban amikor a n\u00f6vel\u00e9s vagy cs\u00f6kkent\u00e9s egy ki\u00edrat\u00e1s vagy \u00f6sszetettebb kifejez\u00e9s r\u00e9sze, akkor m\u00e1r fontos k\u00fcl\u00f6nbs\u00e9g ad\u00f3dik:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nint a = 10;\r\nSystem.out.println(a++); \/\/ 10\r\nSystem.out.println(a); \/\/ 11\r\n<\/pre>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nint a = 10;\r\nSystem.out.println(++a); \/\/ 11\r\nSystem.out.println(a); \/\/ 11\r\n<\/pre>\n<p>Az els\u0151 p\u00e9ld\u00e1ban a n\u00f6vel\u00e9s, mint m\u0171velet, a v\u00e1ltoz\u00f3 ut\u00e1n tal\u00e1lhat\u00f3. Ez a gyakorlatban azt jelenti, hogy a ki\u00edrat\u00e1s el\u0151sz\u00f6r felhaszn\u00e1lja a v\u00e1ltoz\u00f3 eredeti \u00e9rt\u00e9k\u00e9t (10), majd ha minden m\u0171velet lezajlott ebben a sorban, ut\u00e1na megn\u00f6veli a v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t (11), vagyis a k\u00f6vetkez\u0151 sorban, ahol m\u00e1r m\u0171velet n\u00e9lk\u00fcl \u00edrjuk ki, m\u00e1r a megn\u00f6velt \u00e9rt\u00e9k\u00e9t l\u00e1thatjuk.<\/p>\n<p>A m\u00e1sodik p\u00e9ld\u00e1ban a n\u00f6vel\u00e9s, mint m\u0171velet, a v\u00e1ltoz\u00f3 el\u0151tt tal\u00e1lhat\u00f3. Ez azt eredm\u00e9nyezi, hogy ebben a sorban el\u0151sz\u00f6r megn\u00f6veli a v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t, majd a v\u00e1ltoz\u00f3 m\u00e1r megn\u00f6velt \u00e9rt\u00e9k\u00e9t \u00edrja ki. A k\u00f6vetkez\u0151 sorban is ugyanazt az \u00e9rt\u00e9ket \u00edrja ki, mivel itt szint\u00e9n az el\u0151z\u0151leg megn\u00f6velt \u00e9rt\u00e9ket haszn\u00e1lhatjuk. Ugyanez igaz a cs\u00f6kkent\u00e9sre is.<\/p>\n<p>Ezek \u00f6sszetettebb kifejez\u00e9sben is \u00edgy m\u0171k\u00f6dnek. Amennyiben a v\u00e1ltoz\u00f3 el\u0151tt szerepelnek az inkrement\u00e1l\u00f3 oper\u00e1torok, akkor ezeket hajtja v\u00e9gre, majd a megn\u00f6velt \u00e9rt\u00e9kekkel dolgozik tov\u00e1bb. Ezek a m\u0171veletek keverhet\u0151k az aritmetikai oper\u00e1torokkal is, teh\u00e1t ennek is van \u00e9rtelme: a++ + ++b<\/p>\n<p>A k\u00f6vetkez\u0151 p\u00e9ld\u00e1kat tess\u00e9k tesztelni, ezeken kereszt\u00fcl vil\u00e1gos lesz ezen oper\u00e1torok m\u0171k\u00f6d\u00e9se. Sz\u00e1mold ki a tesztel\u00e9s el\u0151tt, hogy melyik sorban mit kellene l\u00e1tnod eredm\u00e9ny\u00fcl. Ha els\u0151re nem siker\u00fclt, gyakorolj m\u00e9g egy kicsit.<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nint i = 4;\r\nint j = 3;\r\nSystem.out.println( i + ++j );\r\nSystem.out.println( i++ + j++ );\r\nSystem.out.println( ++i + j++ );\r\nSystem.out.println( i + j );\r\n<\/pre>\n<p>Az ilyen oper\u00e1torok gyakorlati felhaszn\u00e1l\u00e1sa azonban jellemz\u0151en m\u00e9gis ink\u00e1bb a ciklusokhoz kapcsol\u00f3dik. Fontos azonban megjegyeznem, hogy haszn\u00e1latuk sok esetben ink\u00e1bb \u00f6n\u00e1ll\u00f3 utas\u00edt\u00e1sk\u00e9nt \u00e9rdemes, mert a k\u00f3d \u00e1tl\u00e1that\u00f3s\u00e1g\u00e1t nagyban rontj\u00e1k, ami\u00a0programoz\u00e1skor az egyik legfontosabb szab\u00e1ly!<\/p>\n<h4>Felt\u00e9teles oper\u00e1tor<\/h4>\n<p>Ezt az oper\u00e1tort egyel\u0151re nem fejten\u00e9m ki r\u00e9szletesen. Abb\u00f3l a szempontb\u00f3l egyedi, hogy egyed\u00fcl \u0151 kapcsol \u00f6ssze 3 operandust. Alakja:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nfelt\u00e9tel ? ha_igaz : ha_hamis;\r\n<\/pre>\n<p>Ez a forma \u00edgy \u00f6nmag\u00e1ban nem is fordulhat el\u0151, ez valamilyen kifejez\u00e9s r\u00e9sze, legyen az egy \u00e9rt\u00e9kad\u00e1s, vagy egy sz\u00f6veg \u00f6sszef\u0171z\u00e9s. Ez annyit jelent, hogy egy \u00e1ltalunk megadott felt\u00e9tel ha teljes\u00fcl, akkor a ? ut\u00e1ni ha_igaz eredm\u00e9nyt kapja a kifejez\u00e9s, ellenkez\u0151 esetben a ha_hamis helyre \u00edrtat. A felt\u00e9telvizsg\u00e1latkor majd l\u00e1tni fogod, hogy ez voltak\u00e9pp egy egyszer\u0171 if-else szerkezet j\u00f3val t\u00f6m\u00f6rebb form\u00e1ja is lehet. Nem haszn\u00e1lhat\u00f3 minden if-else szerkezet kiv\u00e1lt\u00e1s\u00e1ra, \u00e9s nem haszn\u00e1ljuk gyakran. \u00c1ltal\u00e1ban egysoros utas\u00edt\u00e1sok r\u00f6vid\u00edt\u00e9s\u00e9n\u00e9l fordul el\u0151, de bonyolultabb kifejez\u00e9sekben szinte mindig \u00e9rdemes kiker\u00fclni. Vannak olyan programfejleszt\u00e9ssel foglalkoz\u00f3 csapatok, ahol kifejezetten tiltj\u00e1k a haszn\u00e1lat\u00e1t \u00e1tl\u00e1that\u00f3s\u00e1gi probl\u00e9m\u00e1k miatt.<\/p>\n<h2>Oper\u00e1torprecedencia &#8211; v\u00e9grehajt\u00e1si sorrend<\/h2>\n<p>Oper\u00e1torb\u00f3l ett\u0151l az\u00e9rt sokkal t\u00f6bb van, de ezeket a legfontosabb megeml\u00edteni ahhoz, hogy \u00e9rts\u00fck a m\u0171k\u00f6d\u00e9s\u00fcket, \u00e9s a programoz\u00e1st elkezdhess\u00fck. Fontos azonban megeml\u00edteni azt, hogy az oper\u00e1torok k\u00f6z\u00f6tt is l\u00e9tezik egyfajta er\u0151sorrend, csak\u00fagy, mint a matematikai m\u0171veletek k\u00f6z\u00f6tt. Ezt h\u00edvjuk az oper\u00e1torok precedenci\u00e1j\u00e1nak, m\u00e1s n\u00e9ven ki\u00e9rt\u00e9kel\u00e9si sorrendj\u00e9nek. A lista tetej\u00e9n a v\u00e9grehajt\u00e1si sorban el\u0151bb v\u00e9grehajtand\u00f3 m\u0171veletek vannak. Az \u00f6sszes \u00e9rt\u00e9kad\u00f3 oper\u00e1torok a lista legalj\u00e1n van, ahol a &#8220;leggyeng\u00e9bb&#8221; m\u0171veletek helyezkednek el. A lista nem teljes, ett\u0151l t\u00f6bb oper\u00e1tor is l\u00e9tezik, de alapnak ezek teljesen elegend\u0151k.<\/p>\n<table>\n<tbody>\n<tr>\n<th>Oper\u00e1tor le\u00edr\u00e1s<\/th>\n<th>Oper\u00e1torok<\/th>\n<\/tr>\n<tr>\n<td>postfix oper\u00e1torok<\/td>\n<td>v\u00e1ltoz\u00f3++ \u00a0v\u00e1ltoz\u00f3- &#8211;<\/td>\n<\/tr>\n<tr>\n<td>prefix oper\u00e1torok, el\u0151jel<br \/>\noper\u00e1torok, neg\u00e1l\u00e1s<\/td>\n<td>++v\u00e1ltoz\u00f3 \u00a0&#8211; -v\u00e1ltoz\u00f3 \u00a0+v\u00e1ltoz\u00f3 \u00a0-v\u00e1ltoz\u00f3 \u00a0!<\/td>\n<\/tr>\n<tr>\n<td>Aritmetikai oper\u00e1torok<br \/>\n(multiplikat\u00edv)<\/td>\n<td>* \u00a0\/ \u00a0%<\/td>\n<\/tr>\n<tr>\n<td>Aritmetikai oper\u00e1torok (addit\u00edv)<\/td>\n<td>+ \u00a0&#8211;<\/td>\n<\/tr>\n<tr>\n<td>Rel\u00e1ci\u00f3s oper\u00e1torok<\/td>\n<td>&lt; \u00a0&gt; \u00a0&lt;= \u00a0&gt;=<\/td>\n<\/tr>\n<tr>\n<td>Rel\u00e1ci\u00f3s oper\u00e1torok<br \/>\n(egyenl\u0151s\u00e9gvizsg\u00e1lat)<\/td>\n<td>== \u00a0!=<\/td>\n<\/tr>\n<tr>\n<td>Kiz\u00e1r\u00f3 vagy<\/td>\n<td>^<\/td>\n<\/tr>\n<tr>\n<td>Logikai \u00e9s<\/td>\n<td>&amp;&amp;<\/td>\n<\/tr>\n<tr>\n<td>Logikai vagy<\/td>\n<td>||<\/td>\n<\/tr>\n<tr>\n<td>Felt\u00e9teles oper\u00e1tor<\/td>\n<td>? :<\/td>\n<\/tr>\n<tr>\n<td>\u00c9rt\u00e9kad\u00f3 oper\u00e1torok<\/td>\n<td>= \u00a0+= \u00a0-= \u00a0*= \u00a0\/= \u00a0%=<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ha jobban megn\u00e9zed, akkor a precedencia nagyr\u00e9szt megegyezik a matematikai m\u0171veletek sorrendj\u00e9vel, valamint itt is igaz az, hogy z\u00e1r\u00f3jelez\u00e9ssel fel\u00fcl lehet, \u00e9s sokszor fel\u00fcl is kell b\u00edr\u00e1lni azt. Egyetlen fontos szab\u00e1lyt hagytunk csak ki. Mi van akkor, ha azonos szinten l\u00e9v\u0151 oper\u00e1torok szerepelnek a kifejez\u00e9sben? Akkor mi a sorrend? Ebben az esetben mindig a balr\u00f3l-jobbra ki\u00e9rt\u00e9kel\u00e9si sorrend az \u00e9rv\u00e9nyes.<\/p>\n<p>Itt is van azonban egy kakukktoj\u00e1s, igaz, ez ink\u00e1bb elm\u00e9leti dolog. Eml\u00e9kszel, hogy az \u00e9rt\u00e9kad\u00f3 oper\u00e1torokn\u00e1l mi a ki\u00e9rt\u00e9kel\u00e9si sorrend? Hiszen az is k\u00e9t operandust k\u00f6t \u00f6ssze. A bal oldalon egy v\u00e1ltoz\u00f3, a jobb oldalon pedig liter\u00e1l, v\u00e1ltoz\u00f3 vagy kifejez\u00e9s \u00e1llhat. Na de a k\u00e9t operandus k\u00f6z\u00fcl melyiket kell el\u0151sz\u00f6r haszn\u00e1lni? A jobb oldalit, mert annak az eredm\u00e9nye ker\u00fcl a bal oldali v\u00e1ltoz\u00f3ba. Akkor j\u00f6jj\u00f6n az elm\u00e9leti p\u00e9lda:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nint a, b;\r\na = b = 2;\r\n<\/pre>\n<p>Mi lesz ennek az eredm\u00e9nye? Minden v\u00e1ltoz\u00f3 2 lesz. De az el\u0151bb eml\u00edtettem, hogy azonos precedencia szint\u0171 oper\u00e1torok eset\u00e9n a v\u00e9grehajt\u00e1si sorrend balr\u00f3l jobbra halad. Igen, kiv\u00e9ve az \u00e9rt\u00e9kad\u00e1sn\u00e1l. Itt mindig a jobb oldal ker\u00fcl el\u0151sz\u00f6r ki\u00e9rt\u00e9kel\u00e9sre. Vagyis:<\/p>\n<ol>\n<li>az a v\u00e1ltoz\u00f3 \u00e9rt\u00e9ket kap: a = b = 2;<\/li>\n<li>a jobb oldalon megint egy \u00e9rt\u00e9kad\u00e1s szerepel: b = 2;<\/li>\n<li>a b v\u00e1ltoz\u00f3 jobb oldal\u00e1n l\u00e9v\u0151 \u00e9rt\u00e9k beker\u00fcl a b v\u00e1ltoz\u00f3ba (teh\u00e1t a b = 2 eredm\u00e9nye 2 lesz)<\/li>\n<li>a b = 2 kifejez\u00e9s eredm\u00e9nye (2) beker\u00fcl az a v\u00e1ltoz\u00f3ba<\/li>\n<\/ol>\n<p>Vagyis: jobbr\u00f3l balra haladva \u00e9rt\u00e9kelte ki a t\u00f6bbsz\u00f6r\u00f6s \u00e9rt\u00e9kad\u00e1st. Ritka, de el\u0151fordulhat \u00e9s m\u0171k\u00f6dik. \u00c9s term\u00e9szetesen, mivel az \u00e1tl\u00e1that\u00f3s\u00e1got rontja, ker\u00fclend\u0151 \ud83d\ude42<\/p>\n<h4>K\u00f6vetkez\u0151 lecke: <a title=\"Java programoz\u00e1s 7. \u2013 Logikai m\u0171veletek, logikai kifejez\u00e9sek\" href=\"http:\/\/www.webotlet.hu\/?p=282\">Logikai m\u0171veletek, logikai kifejez\u00e9sek<\/a><\/h4>\n","protected":false},"excerpt":{"rendered":"<p>Oper\u00e1torok \u00e9s operandusok, avagy m\u0171veleti jelek \u00e9s szenved\u0151 alanyaik A programoz\u00e1si nyelvek fontos r\u00e9sz\u00e9t k\u00e9pezik az oper\u00e1torok. Nevezz\u00fck \u0151ket m\u0171veleti jeleknek, hab\u00e1r nem a sz\u00f3 matematikai \u00e9rtelm\u00e9ben. Programoz\u00e1s sor\u00e1n sokszor \u00fagynevezett kifejez\u00e9sekkel dolgozunk, amelyek valamilyen \u00e9rt\u00e9kek \u00e9s k\u00f6z\u00f6tt\u00fck \u00e9rtelmezett m\u0171veletek. <a class=\"more-link\" href=\"https:\/\/www.webotlet.hu\/?p=391\">Tov\u00e1bb <span class=\"screen-reader-text\">  Java programoz\u00e1s 6. &#8211; Oper\u00e1torok<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[99],"tags":[144,71,70,73,72],"class_list":["post-391","post","type-post","status-publish","format-standard","hentry","category-java-alap-leckek","tag-java_programozas","tag-muveleti-jel","tag-operator","tag-precedencia","tag-programozasm"],"_links":{"self":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/391","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=391"}],"version-history":[{"count":83,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/391\/revisions"}],"predecessor-version":[{"id":3104,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/391\/revisions\/3104"}],"wp:attachment":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=391"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=391"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}