{"id":255,"date":"2015-02-01T01:06:11","date_gmt":"2015-01-31T23:06:11","guid":{"rendered":"http:\/\/ozenozkaya.com\/blog\/?p=255"},"modified":"2015-02-01T01:06:11","modified_gmt":"2015-01-31T23:06:11","slug":"gomulu-sistemler-19-kosullamalar","status":"publish","type":"post","link":"http:\/\/ozenozkaya.com\/blog\/?p=255","title":{"rendered":"G\u00f6m\u00fcl\u00fc C &#8211; 8 : G\u00f6m\u00fcl\u00fc C: Ko\u015fullamalar"},"content":{"rendered":"<p>Ko\u015fullamalar bildi\u011finiz \u00fczere program\u0131n ak\u0131\u015f\u0131n\u0131 kontrol eder. \u015eu d\u00fcnyada en g\u00fczel ak\u0131\u015fkan su oldu\u011fundan, bu yaz\u0131n\u0131n temas\u0131 su olacak.<\/p>\n<p><em><strong>KO\u015eULLAMALARIN D\u00dcZG\u00dcN KULLANILMASI<\/strong><\/em><\/p>\n<p>Su akar yolunu bulur demi\u015fler. G\u00fczel kod da\u00a0bu misal. \u0130yi yaz\u0131l\u0131m ak\u0131\u015f\u0131, iyi ko\u015fullamaya \u00e7ok ba\u011fl\u0131d\u0131r. Ko\u015fullamalar d\u00fczg\u00fcn yap\u0131lmad\u0131ysa, kodda mutlaka birtak\u0131n hatalar \u00e7\u0131kacak, o kodun ne yapaca\u011f\u0131n\u0131 <a href=\"http:\/\/tr.wikipedia.org\/wiki\/Laplace%27%C4%B1n_%C5%9Feytan%C4%B1\" target=\"_blank\">Laplace \u015eeytan\u0131<\/a> d\u0131\u015f\u0131nda kimse hesaplayamayacakt\u0131r. \u015eimdi ilk okul y\u0131llar\u0131m\u0131zdan tan\u0131d\u0131\u011f\u0131m\u0131z parantez ile ba\u015flayal\u0131m.<\/p>\n<p><strong>1. Parantez<\/strong><\/p>\n<p>Muhterem dostum, ko\u015fullamalar mutlaka ama mutlaka \u00e7engelli parantez ile kullan\u0131lmal\u0131d\u0131r. Parantezsiz if-else yapmak da m\u00fcmk\u00fcnd\u00fcr ama o kod su gibi akmaz, viskozitesi y\u00fcksek olur, katranla\u015f\u0131r. Bir kodun geni\u015fletilebilirli\u011fi, geli\u015ftirilebilirli\u011fi, parantez kullan\u0131lmad\u0131\u011f\u0131nda \u00e7ok azal\u0131r. Ayr\u0131ca hata \u00e7\u0131kma olas\u0131l\u0131\u011f\u0131 da artar.<\/p>\n<p><em>K\u00f6t\u00fc \u00d6rnek:<\/em><\/p>\n<pre class=\"lang:c decode:true\">if(isConnectedToUSB)\nsendTimeInfoOverUSB();\nchangeStateToNext();\n<\/pre>\n<p>\u015eimdi bu k\u00f6t\u00fc \u00f6rnekte acaba kodu yazan ki\u015fi, USB&#8217;ye ba\u011flan\u0131ld\u0131\u011f\u0131nda iki i\u015f de yap\u0131ls\u0131n istemi\u015f de hatal\u0131 m\u0131 yazm\u0131\u015f, yoksa birinci fonksiyon ko\u015fula ba\u011fl\u0131, di\u011feri her t\u00fcrl\u00fc yap\u0131ls\u0131n diye mi yaz\u0131lm\u0131\u015f belli de\u011fil. Belki de ilk a\u015famada ko\u015fulun i\u00e7inde yaln\u0131zca bir fonksiyon vard\u0131. Kodu g\u00fcncelleyen ki\u015fi, &#8220;aaa bu da yap\u0131ls\u0131n&#8221; diyerek di\u011fer sat\u0131r\u0131 ekledi\u011finde bir felaketle kar\u015f\u0131la\u015facakt\u0131r.<\/p>\n<p><em>\u0130yi \u00d6rnek:<\/em><\/p>\n<pre class=\"lang:c decode:true\">if(isConnectedToUSB)\n{\n sendTimeInfoOverUSB();\n changeStateToNext();\n}\n<\/pre>\n<p>Su gibi kod. \u0130ki tanecik parantezle, ko\u015fulun s\u0131n\u0131rlar\u0131 \u00e7izildi, akan su yolunu bulmu\u015f oldu.<\/p>\n<p><strong>2. Kar\u015f\u0131la\u015ft\u0131rma S\u0131ras\u0131<\/strong><\/p>\n<p>Hep s\u00f6yl\u00fcyorum, s\u00f6ylemeye de devam edece\u011fim ki, ko\u015fullamalarda en s\u0131k yap\u0131lan hatalardan biri de == yerine = yazmakt\u0131r. Bunun \u00e7\u00f6z\u00fcm\u00fc, yine s\u00f6yl\u00fcyorum basittir. Diyelim ki, be\u015fer \u015fa\u015far misali kodu yazarken bir hata yapt\u0131k if(deger == 3) diyecekken, if(deger = 3) dedik. Bu kod hata vermez ne yaz\u0131k ki ve degere 3 atan\u0131r, sular sel olur evleri barklar\u0131 y\u0131kar. Ama al\u0131\u015fkanl\u0131\u011f\u0131m\u0131z if(3 == deger) yazmak ise, hata yap\u0131p if(3=deger) yazsak bile derleyici bize hata verir. Bu da ev bark kurtar\u0131r. Tabi burada 3 say\u0131s\u0131n\u0131 da kullanmamak laz\u0131m. Magic number coding konusundan bahsetmi\u015ftik. \u015eimdi \u00f6rnekleri verelim&#8230;<\/p>\n<p><em>K\u00f6t\u00fc \u00d6rnek:<\/em><\/p>\n<pre class=\"lang:c decode:true \">if(ageOfDriver == ALLOWED_AGE_TO_DRIVE)\n{\nsayCongrats();\n}<\/pre>\n<p><em>\u00a0\u0130yi \u00d6rnek:<\/em><\/p>\n<pre class=\"lang:c decode:true\">if(ALLOWED_AGE_TO_DRIVE == ageOfDriver)\n{\nsayCongrats();\n}\n<\/pre>\n<p><strong>\u00a03. Ko\u015ful Derinli\u011fi<\/strong><\/p>\n<p>\u00c7ok derin olan her mevzu gibi, derin ko\u015fullamalar da k\u00f6t\u00fc olaylara delalet eder. \u0130nsan beyni ortalama 7 derinli\u011fe kadar ili\u015fki saklayabiliyormu\u015f, bundan fazlas\u0131 kafa kar\u0131\u015ft\u0131r\u0131yor ne yaz\u0131k ki. Suyu buland\u0131rman\u0131n anlam\u0131 yok, b\u00f6yle bir ili\u015fki varsa bile olay\u0131 basitle\u015ftirmeye \u00e7al\u0131\u015fmakta faideler var.<\/p>\n<p><em>K\u00f6t\u00fc \u00d6rnek:<\/em><\/p>\n<pre class=\"lang:c decode:true\">if(kosul1) \n{ \n if(kosul2)\n {\n   if(kosul3)\n   {\n     hadiBanaSakaYap();\n   }\n }\n}<\/pre>\n<p><em>\u00a0\u0130yi \u00d6rnek:<\/em><\/p>\n<pre class=\"lang:c decode:true\">if(kosul1 &amp;&amp; kosul2 &amp;&amp; kosul3) \n{ \n     hadiBanaSakaYap();\n}<\/pre>\n<p><strong>\u00a04. Ko\u015fullamalarda Makro Kullan\u0131m\u0131<\/strong><\/p>\n<p>Makrolarla ko\u015fullamalar\u0131 yanyana kullanmak ate\u015fle barutu yan yana tutmaya benzer. \u00c7ok \u00e7ok dikkatli olmak gerekir. Makrolar&#8217;\u0131n do, while ya da benzer bir yap\u0131da kullan\u0131lmas\u0131nda faideler vard\u0131r. Laf\u0131 \u00e7ok uzatmadan iki \u00f6rnekle a\u00e7\u0131klayaca\u011f\u0131m.<\/p>\n<p><em>K\u00f6t\u00fc \u00d6rnek:<\/em><\/p>\n<pre class=\"lang:c decode:true \">#define FUNC(X) f(x); g(x)\nif (isAllowedToRun)\n   FUNC(param);\nelse\n   exit();<\/pre>\n<p>Bu kod, derleyici taraf\u0131ndan a\u015fa\u011f\u0131daki \u015fekilde geni\u015fletilir:<\/p>\n<pre class=\"lang:c decode:true \">if (isAllowedToRun)\nf(param); g(param);\nelse\nexit();<\/pre>\n<p>Ki bu yaz\u0131m zaten dilin tabiat\u0131na yani do\u011fan\u0131n kanunlar\u0131na ayk\u0131r\u0131d\u0131r. Bu durumda, g\u00f6r\u00fclen else, art\u0131k if&#8217;e ait de\u011fildir. Bu da \u00f6ng\u00f6r\u00fclemez felaketlere sebep olabilir. If&#8217;de parantez kullan\u0131lmamas\u0131 da hatalara \u00e7anak tutmu\u015ftur.<\/p>\n<p><em>\u0130yi \u00d6rnek:<\/em><\/p>\n<pre class=\"lang:c decode:true \">#define FUNC(X) do{f(x); g(x);} while(0)\nif (isAllowedToRun)\n{\nFUNC(param);\n}\nelse\n{\nexit();\n}\n<\/pre>\n<p>Yukar\u0131daki kod ise, parantezler konmasa bile \u00e7al\u0131\u015facakt\u0131r. Kodu geni\u015fletti\u011fimizde hi\u00e7 bir hata olu\u015famayaca\u011f\u0131n\u0131 g\u00f6rmek m\u00fcmk\u00fcnd\u00fcr. Fonksiyonel makrolar\u0131n, do while i\u00e7inde tan\u0131mlanmas\u0131, su gibi aziz bir al\u0131\u015fkanl\u0131kt\u0131r.<\/p>\n<p><strong>\u00a05. Parametre D\u00f6n\u00fc\u015f\u00fcm\u00fc<\/strong><\/p>\n<p>Bazen ko\u015ful, ister istemez karma\u015f\u0131k olur ve \u00e7ok say\u0131da ko\u015fulun hikmetini \u00e7\u00f6zmek hakikaten zordur. Bu durumda parametre d\u00f6n\u00fc\u015f\u00fcm\u00fc yapmakta say\u0131s\u0131z feyizler vard\u0131r. Bu parametreler toplanarak anlaml\u0131 tek bir parametreye aktar\u0131labilmektedir.<\/p>\n<p><em>K\u00f6t\u00fc \u00d6rnek:<\/em><\/p>\n<pre class=\"lang:c decode:true \">if((age&gt;18 &amp;&amp; isLicenceAvailible &amp;&amp; isLicenceValid) || isPolice || (situation==URGENT))\n{\n{\n letHimGo();\n}\nelse\n{\n arrestHim();\n}<\/pre>\n<p><em>\u00a0\u0130yi \u00d6rnek:<\/em><\/p>\n<pre class=\"lang:c decode:true \">boolean isEligibleToDriveCar = (age&gt;18 &amp;&amp; isLicenceAvailible &amp;&amp; isLicenceValid) || isPolice || (situation==URGENT);\nif(true==isEligibleToDriveCar)\n{\n letHimGo();\n}\nelse\n{\n arrestHim();\n}\n<\/pre>\n<p>Art\u0131k o kadar ko\u015fulun ne i\u015fin gerekti\u011fini anlayabiliyoruz. Adam araba s\u00fcrebilir mi s\u00fcremez mi basit\u00e7e buna karar veriliyor.<\/p>\n<span class=\"su-highlight\" style=\"background:#ddff99;color:#000000\">&nbsp;Burada anla\u015f\u0131labilirlik u\u011fruna bir byte&#8217;\u0131n kurban edildi\u011finin bilincinde olmakta fayda var. De\u011fer mi? Bence de\u011fer.&nbsp;<\/span>\n<p>\u015eimdi devam!<\/p>\n<a href=\"http:\/\/ozenozkaya.com\/blog\/?p=248\" class=\"su-button su-button-style-3d\" style=\"color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:5px\" target=\"_self\"><span style=\"color:#FFFFFF;padding:6px 16px;font-size:13px;line-height:20px;border-color:#6cadf4;border-radius:5px;text-shadow:none\"><i class=\"sui sui-arrow-circle-o-left\" style=\"font-size:13px;color:#FFFFFF\"><\/i> \u00d6nceki Sayfa<\/span><\/a> \u00a0<a href=\"http:\/\/ozenozkaya.com\/blog\/?p=263\" class=\"su-button su-button-style-3d\" style=\"color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:5px\" target=\"_self\"><span style=\"color:#FFFFFF;padding:6px 16px;font-size:13px;line-height:20px;border-color:#6cadf4;border-radius:5px;text-shadow:none\"><i class=\"sui sui-arrow-circle-right\" style=\"font-size:13px;color:#FFFFFF\"><\/i> Sonraki Sayfa<\/span><\/a>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ko\u015fullamalar bildi\u011finiz \u00fczere program\u0131n ak\u0131\u015f\u0131n\u0131 kontrol eder. \u015eu d\u00fcnyada en g\u00fczel ak\u0131\u015fkan su oldu\u011fundan, bu yaz\u0131n\u0131n temas\u0131 su olacak. KO\u015eULLAMALARIN D\u00dcZG\u00dcN KULLANILMASI Su akar yolunu bulur demi\u015fler. G\u00fczel kod da\u00a0bu misal. \u0130yi yaz\u0131l\u0131m ak\u0131\u015f\u0131, iyi ko\u015fullamaya \u00e7ok ba\u011fl\u0131d\u0131r. Ko\u015fullamalar d\u00fczg\u00fcn yap\u0131lmad\u0131ysa, kodda mutlaka birtak\u0131n hatalar \u00e7\u0131kacak, o kodun ne yapaca\u011f\u0131n\u0131 Laplace \u015eeytan\u0131 d\u0131\u015f\u0131nda kimse hesaplayamayacakt\u0131r. <a class=\"read-more\" href=\"http:\/\/ozenozkaya.com\/blog\/?p=255\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_tr_post_content":"Ko\u015fullamalar bildi\u011finiz \u00fczere program\u0131n ak\u0131\u015f\u0131n\u0131 kontrol eder. \u015eu d\u00fcnyada en g\u00fczel ak\u0131\u015fkan su oldu\u011fundan, bu yaz\u0131n\u0131n temas\u0131 su olacak.\n\n<em><strong>KO\u015eULLAMALARIN D\u00dcZG\u00dcN KULLANILMASI<\/strong><\/em>\n\nSu akar yolunu bulur demi\u015fler. G\u00fczel kod da\u00a0bu misal. \u0130yi yaz\u0131l\u0131m ak\u0131\u015f\u0131, iyi ko\u015fullamaya \u00e7ok ba\u011fl\u0131d\u0131r. Ko\u015fullamalar d\u00fczg\u00fcn yap\u0131lmad\u0131ysa, kodda mutlaka birtak\u0131n hatalar \u00e7\u0131kacak, o kodun ne yapaca\u011f\u0131n\u0131 <a href=\"http:\/\/tr.wikipedia.org\/wiki\/Laplace%27%C4%B1n_%C5%9Feytan%C4%B1\" target=\"_blank\">Laplace \u015eeytan\u0131<\/a> d\u0131\u015f\u0131nda kimse hesaplayamayacakt\u0131r. \u015eimdi ilk okul y\u0131llar\u0131m\u0131zdan tan\u0131d\u0131\u011f\u0131m\u0131z parantez ile ba\u015flayal\u0131m.\n\n<strong>1. Parantez<\/strong>\n\nMuhterem dostum, ko\u015fullamalar mutlaka ama mutlaka \u00e7engelli parantez ile kullan\u0131lmal\u0131d\u0131r. Parantezsiz if-else yapmak da m\u00fcmk\u00fcnd\u00fcr ama o kod su gibi akmaz, viskozitesi y\u00fcksek olur, katranla\u015f\u0131r. Bir kodun geni\u015fletilebilirli\u011fi, geli\u015ftirilebilirli\u011fi, parantez kullan\u0131lmad\u0131\u011f\u0131nda \u00e7ok azal\u0131r. Ayr\u0131ca hata \u00e7\u0131kma olas\u0131l\u0131\u011f\u0131 da artar.\n\n<em>K\u00f6t\u00fc \u00d6rnek:<\/em>\n\n<pre class=\"lang:c decode:true\">if(isConnectedToUSB)\nsendTimeInfoOverUSB();\nchangeStateToNext();\n<\/pre>\n\n\u015eimdi bu k\u00f6t\u00fc \u00f6rnekte acaba kodu yazan ki\u015fi, USB'ye ba\u011flan\u0131ld\u0131\u011f\u0131nda iki i\u015f de yap\u0131ls\u0131n istemi\u015f de hatal\u0131 m\u0131 yazm\u0131\u015f, yoksa birinci fonksiyon ko\u015fula ba\u011fl\u0131, di\u011feri her t\u00fcrl\u00fc yap\u0131ls\u0131n diye mi yaz\u0131lm\u0131\u015f belli de\u011fil. Belki de ilk a\u015famada ko\u015fulun i\u00e7inde yaln\u0131zca bir fonksiyon vard\u0131. Kodu g\u00fcncelleyen ki\u015fi, \"aaa bu da yap\u0131ls\u0131n\" diyerek di\u011fer sat\u0131r\u0131 ekledi\u011finde bir felaketle kar\u015f\u0131la\u015facakt\u0131r.\n\n<em>\u0130yi \u00d6rnek:<\/em>\n\n<pre class=\"lang:c decode:true\">if(isConnectedToUSB)\n{\n sendTimeInfoOverUSB();\n changeStateToNext();\n}\n<\/pre>\n\nSu gibi kod. \u0130ki tanecik parantezle, ko\u015fulun s\u0131n\u0131rlar\u0131 \u00e7izildi, akan su yolunu bulmu\u015f oldu.\n\n<strong>2. Kar\u015f\u0131la\u015ft\u0131rma S\u0131ras\u0131<\/strong>\n\nHep s\u00f6yl\u00fcyorum, s\u00f6ylemeye de devam edece\u011fim ki, ko\u015fullamalarda en s\u0131k yap\u0131lan hatalardan biri de == yerine = yazmakt\u0131r. Bunun \u00e7\u00f6z\u00fcm\u00fc, yine s\u00f6yl\u00fcyorum basittir. Diyelim ki, be\u015fer \u015fa\u015far misali kodu yazarken bir hata yapt\u0131k if(deger == 3) diyecekken, if(deger = 3) dedik. Bu kod hata vermez ne yaz\u0131k ki ve degere 3 atan\u0131r, sular sel olur evleri barklar\u0131 y\u0131kar. Ama al\u0131\u015fkanl\u0131\u011f\u0131m\u0131z if(3 == deger) yazmak ise, hata yap\u0131p if(3=deger) yazsak bile derleyici bize hata verir. Bu da ev bark kurtar\u0131r. Tabi burada 3 say\u0131s\u0131n\u0131 da kullanmamak laz\u0131m. Magic number coding konusundan bahsetmi\u015ftik. \u015eimdi \u00f6rnekleri verelim...\n\n<em>K\u00f6t\u00fc \u00d6rnek:<\/em>\n\n<pre class=\"lang:c decode:true \">if(ageOfDriver == ALLOWED_AGE_TO_DRIVE)\n{\nsayCongrats();\n}<\/pre>\n\n<em>\u00a0\u0130yi \u00d6rnek:<\/em>\n\n<pre class=\"lang:c decode:true\">if(ALLOWED_AGE_TO_DRIVE == ageOfDriver)\n{\nsayCongrats();\n}\n<\/pre>\n\n<strong>\u00a03. Ko\u015ful Derinli\u011fi<\/strong>\n\n\u00c7ok derin olan her mevzu gibi, derin ko\u015fullamalar da k\u00f6t\u00fc olaylara delalet eder. \u0130nsan beyni ortalama 7 derinli\u011fe kadar ili\u015fki saklayabiliyormu\u015f, bundan fazlas\u0131 kafa kar\u0131\u015ft\u0131r\u0131yor ne yaz\u0131k ki. Suyu buland\u0131rman\u0131n anlam\u0131 yok, b\u00f6yle bir ili\u015fki varsa bile olay\u0131 basitle\u015ftirmeye \u00e7al\u0131\u015fmakta faideler var.\n\n<em>K\u00f6t\u00fc \u00d6rnek:<\/em>\n\n<pre class=\"lang:c decode:true\">if(kosul1) \n{ \n if(kosul2)\n {\n   if(kosul3)\n   {\n     hadiBanaSakaYap();\n   }\n }\n}<\/pre>\n\n<em>\u00a0\u0130yi \u00d6rnek:<\/em>\n\n<pre class=\"lang:c decode:true\">if(kosul1 &amp;&amp; kosul2 &amp;&amp; kosul3) \n{ \n     hadiBanaSakaYap();\n}<\/pre>\n\n<strong>\u00a04. Ko\u015fullamalarda Makro Kullan\u0131m\u0131<\/strong>\n\nMakrolarla ko\u015fullamalar\u0131 yanyana kullanmak ate\u015fle barutu yan yana tutmaya benzer. \u00c7ok \u00e7ok dikkatli olmak gerekir. Makrolar'\u0131n do, while ya da benzer bir yap\u0131da kullan\u0131lmas\u0131nda faideler vard\u0131r. Laf\u0131 \u00e7ok uzatmadan iki \u00f6rnekle a\u00e7\u0131klayaca\u011f\u0131m.\n\n<em>K\u00f6t\u00fc \u00d6rnek:<\/em>\n\n<pre class=\"lang:c decode:true \">#define FUNC(X) f(x); g(x)\nif (isAllowedToRun)\n   FUNC(param);\nelse\n   exit();<\/pre>\n\nBu kod, derleyici taraf\u0131ndan a\u015fa\u011f\u0131daki \u015fekilde geni\u015fletilir:\n\n<pre class=\"lang:c decode:true \">if (isAllowedToRun)\nf(param); g(param);\nelse\nexit();<\/pre>\n\nKi bu yaz\u0131m zaten dilin tabiat\u0131na yani do\u011fan\u0131n kanunlar\u0131na ayk\u0131r\u0131d\u0131r. Bu durumda, g\u00f6r\u00fclen else, art\u0131k if'e ait de\u011fildir. Bu da \u00f6ng\u00f6r\u00fclemez felaketlere sebep olabilir. If'de parantez kullan\u0131lmamas\u0131 da hatalara \u00e7anak tutmu\u015ftur.\n\n<em>\u0130yi \u00d6rnek:<\/em>\n\n<pre class=\"lang:c decode:true \">#define FUNC(X) do{f(x); g(x);} while(0)\nif (isAllowedToRun)\n{\nFUNC(param);\n}\nelse\n{\nexit();\n}\n<\/pre>\n\nYukar\u0131daki kod ise, parantezler konmasa bile \u00e7al\u0131\u015facakt\u0131r. Kodu geni\u015fletti\u011fimizde hi\u00e7 bir hata olu\u015famayaca\u011f\u0131n\u0131 g\u00f6rmek m\u00fcmk\u00fcnd\u00fcr. Fonksiyonel makrolar\u0131n, do while i\u00e7inde tan\u0131mlanmas\u0131, su gibi aziz bir al\u0131\u015fkanl\u0131kt\u0131r.\n\n<strong>\u00a05. Parametre D\u00f6n\u00fc\u015f\u00fcm\u00fc<\/strong>\n\nBazen ko\u015ful, ister istemez karma\u015f\u0131k olur ve \u00e7ok say\u0131da ko\u015fulun hikmetini \u00e7\u00f6zmek hakikaten zordur. Bu durumda parametre d\u00f6n\u00fc\u015f\u00fcm\u00fc yapmakta say\u0131s\u0131z feyizler vard\u0131r. Bu parametreler toplanarak anlaml\u0131 tek bir parametreye aktar\u0131labilmektedir.\n\n<em>K\u00f6t\u00fc \u00d6rnek:<\/em>\n\n<pre class=\"lang:c decode:true \">if((age&gt;18 &amp;&amp; isLicenceAvailible &amp;&amp; isLicenceValid) || isPolice || (situation==URGENT))\n{\n{\n letHimGo();\n}\nelse\n{\n arrestHim();\n}<\/pre>\n\n<em>\u00a0\u0130yi \u00d6rnek:<\/em>\n\n<pre class=\"lang:c decode:true \">boolean isEligibleToDriveCar = (age&gt;18 &amp;&amp; isLicenceAvailible &amp;&amp; isLicenceValid) || isPolice || (situation==URGENT);\nif(true==isEligibleToDriveCar)\n{\n letHimGo();\n}\nelse\n{\n arrestHim();\n}\n<\/pre>\n\nArt\u0131k o kadar ko\u015fulun ne i\u015fin gerekti\u011fini anlayabiliyoruz. Adam araba s\u00fcrebilir mi s\u00fcremez mi basit\u00e7e buna karar veriliyor.\n\n[su_highlight]Burada anla\u015f\u0131labilirlik u\u011fruna bir byte'\u0131n kurban edildi\u011finin bilincinde olmakta fayda var. De\u011fer mi? Bence de\u011fer.[\/su_highlight]\n\n\u015eimdi devam!\n\n[su_button url=\"http:\/\/ozenozkaya.com\/blog\/?p=248\" style=\"3d\"\u00a0icon=\"icon: arrow-circle-o-left\"]\u00d6nceki Sayfa[\/su_button] \u00a0[su_button url=\"http:\/\/ozenozkaya.com\/blog\/?p=263\" style=\"3d\" icon=\"icon: arrow-circle-right\"]Sonraki Sayfa[\/su_button]\n\n&nbsp;","_tr_post_name":"gomulu-sistemler-19-kosullamalar","_tr_post_excerpt":"","_tr_post_title":"G\u00f6m\u00fcl\u00fc C - 8 : G\u00f6m\u00fcl\u00fc C: Ko\u015fullamalar","_en_post_content":"","_en_post_name":"","_en_post_excerpt":"","_en_post_title":"","edit_language":"tr","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[2,3],"tags":[],"class_list":["post-255","post","type-post","status-publish","format-standard","hentry","category-elektronik","category-gomulu-sistemler"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5gWM6-47","jetpack-related-posts":[],"_links":{"self":[{"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=255"}],"version-history":[{"count":0,"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/255\/revisions"}],"wp:attachment":[{"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=255"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ozenozkaya.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}