{"id":466,"date":"2020-02-02T09:29:11","date_gmt":"2020-02-02T07:29:11","guid":{"rendered":"http:\/\/kalfaoglu.com\/?page_id=466"},"modified":"2021-09-18T12:44:54","modified_gmt":"2021-09-18T10:44:54","slug":"c-dili-4-konu","status":"publish","type":"page","link":"https:\/\/kalfaoglu.com\/wp\/c-dili-programlama\/c-dili-4-konu\/","title":{"rendered":"C Dili &#8211; 4. Konu"},"content":{"rendered":"\n<p><b>TAM SAYI ATAMA<\/b><\/p>\n<pre>TAMSAYI.C:<br \/>================================================================<br \/>main()<br \/>{<br \/>   int a,b,c;<br \/>   a = 12;<br \/>   b = 3;<br \/>   c = a+b;<br \/>   c = a-b;<br \/>   c = a*b;<br \/>   c = a\/b;<br \/>   c = a%b;<br \/>   c = 12*a+b\/2-a*b*2\/(a*c+b*2);<br \/>   a = a + 1;      \/* artt\u0131rma i\u015flemleri *\/<br \/>   b = b * 5;<br \/>   a = b = c = 20; \/* \u00c7oklu atamalar *\/<br \/>   a = b = c = 12*13\/4;<br \/>}<br \/>================================================================<br \/> <\/pre>\n<p>Bu programda \u00fc\u00e7 tam say\u0131 de\u011fi\u015fkeni tan\u0131ml\u0131yoruz (a,b,c), ve bunlara de\u011ferler at\u0131yoruz. \u0130lk iki sat\u0131rda a ve b ye say\u0131sal de\u011ferler veriyoruz. Daha sonraki d\u00f6rt sat\u0131rda, basit i\u015flemler g\u00f6r\u00fcyorsunuz.<\/p>\n<p>Besinci sat\u0131rda ise, modulo operat\u00f6r\u00fcn\u00fc g\u00f6r\u00fcyorsunuz. Modulo, iki de\u011fi\u015fken birbirine b\u00f6l\u00fcnd\u00fc\u011f\u00fcnde, kalan de\u011feri verir. Modulo, sadece integer ve char de\u011fi\u015fken tipleri ile kullan\u0131labilir.<br \/>\u00d6rne\u011fin 10%3 i\u015flemi 1 d\u00f6nd\u00fcrecektir, \u00e7\u00fcnk\u00fc 10&#8217;u 3&#8217;e b\u00f6l\u00fcnce 1 kalacakt\u0131r.<\/p>\n<p>Daha sonra gelen iki artt\u0131rma i\u015flemleri ise, bu \u015fekilde derleyici taraf\u0131ndan kabul edilir, fakat bunlar\u0131 yazman\u0131n daha kestirme bir sekli vard\u0131r &#8211; bunu daha sonra g\u00f6rece\u011fiz.<\/p>\n<p>Son iki sat\u0131ra gelince, bunlar \u00e7ok tuhaf g\u00f6r\u00fcnebilir g\u00f6ze. C derleyicisi, atama sat\u0131rlar\u0131n\u0131, sa\u011fdan sola do\u011fru okur. Bunun sayesinde, \u00e7oklu atamalar gibi, \u00e7ok faydal\u0131 i\u015flemler yap\u0131labilir. Bu \u00f6rnekte, derleyici, yirmiyi al\u0131p, c ye at\u0131yor. Sola do\u011fru devam ederken, b yi g\u00f6r\u00fcp, en son elde edilen sonucu (20) b ye at\u0131yor Ayni \u015fekilde a ya da, b nin de\u011feri veriliyor.<\/p>\n<p>Bu program\u0131 derleyip, \u00e7al\u0131\u015ft\u0131rmak son derece s\u0131k\u0131c\u0131 olabilir. Bu program\u0131n hi\u00e7bir \u00e7\u0131kt\u0131s\u0131 yoktur. Dilerseniz, \u00f6\u011frendi\u011finiz printf fonksiyonu ile, program\u0131n yapt\u0131klar\u0131n\u0131 daha yak\u0131ndan inceleyebilirsiniz.<\/p>\n<p>C de veri tan\u0131mlar\u0131, program bloku i\u00e7inde, islenecek komutlardan \u00f6nce gelir. \u015eayet tan\u0131mlar\u0131 program\u0131n ortas\u0131na yerle\u015ftirmeye \u00e7al\u0131\u015f\u0131rsan\u0131z, derleyici bir hata verecektir.<\/p>\n<p><b>VERI TIPLERI<\/b><\/p>\n<pre>main()<br \/>{<br \/>   int a,b,c;              \/* -2147483647 den 2147483647 ye; tamsayi olarak *\/<br \/>   char x,y,z;             \/* 0 dan 255 e ... tamsayi olarak *\/<br \/>   float num,toy,thing;    \/* 10e-38 den 10e+38 e ... ondal\u0131kl\u0131 olarak *\/<br \/>   a = b = c = -27;<br \/>   x = y = z = 'A';<br \/>   num = toy = thing = 3.6792;<br \/>   a = y;          \/* a nin de\u011feri simdi 65 (karakter A) *\/<br \/>   x = b;          \/* x simdi tuhaf bir say\u0131 olacak *\/<br \/>   num = b;        \/* num simdi -27.00 olacak *\/<br \/>   a = toy         \/* a simdi 3 olacak *\/<br \/>}<br \/> <\/pre>\n<p>g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, birka\u00e7 integer daha tan\u0131mlad\u0131k Fakat, bundan ba\u015fka, iki yeni tip daha kattik. &#8220;Char&#8221; ve &#8220;float&#8221;.<\/p>\n<p>&#8220;Char&#8221; tipi, neredeyse integer ile ayni manada. Fakat, sadece 0 ila 255 aras\u0131ndaki say\u0131lar\u0131 alabilir, ve genellikle haf\u0131zada bir bytelik bir yerde saklan\u0131r Bu tip veri, genellikle ya tek bir harfi, veya kelime dizilerini (&#8220;string&#8221; ler) saklamakta kullan\u0131l\u0131r.<\/p>\n<p><b>DATA TIPLERININ KARISTIRILMASI<\/b><\/p>\n<p>Bu anda, C nin &#8220;int&#8221; ve &#8220;char&#8221; i nas\u0131l kulland\u0131\u011f\u0131n\u0131 g\u00f6rmenin tam zaman\u0131 C deki &#8220;int&#8221; tipi ile \u00e7al\u0131\u015fan \u00e7o\u011fu fonksiyonlar, karakter tip veri ile de ayni \u015fekilde \u00e7al\u0131\u015fabilir, \u00e7\u00fcnk\u00fc karakter tipi, bir cins integer&#8217;dir.<br \/>&#8220;char&#8221; ve &#8220;int&#8221; tiplerini neredeyse istedi\u011finiz gibi kar\u0131\u015ft\u0131rmak m\u00fcmk\u00fcnd\u00fcr.<br \/>Derleyicinin akl\u0131 kar\u0131\u015fmaz, ama sizin kar\u0131\u015fabilir. Bunun i\u00e7in do\u011fru tip veriyi kullanmakta fayda vard\u0131r<\/p>\n<p><b>FLOAT<\/b><\/p>\n<p>\u0130kinci yeni tip veri, &#8220;float&#8221; tipidir. Kayar nokta da denilen bu tipin s\u0131n\u0131rlar\u0131 \u00e7ok geni\u015ftir. \u00c7o\u011fu bilgisayarlarda, float tipi 32 bit olarak yani -3.4E+38 den +3.4E+38 e kadard\u0131r.<br \/>Bunun daha da yetmedi\u011fi durumlarda &#8220;double&#8221; da kullan\u0131labilir. Bu ise 64 bit olarak saklan\u0131r ve\u00a0 -1.7E+308 to +1.7E+308\u00a0 aras\u0131ndaki rakamlar\u0131 ta\u015f\u0131yabilir.<\/p>\n<p><b>YENI VERI TIPLERINI NASIL KULLANALIM?<\/b><\/p>\n<p>Bu program\u0131n ilk \u00fc\u00e7 sat\u0131r\u0131nda, dokuz tane de\u011fi\u015fkene de\u011fer atan\u0131yor.<\/p>\n<p>* Daha \u00f6nce g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, &#8220;char&#8221; tipi, asl\u0131nda bir &#8220;integer&#8221; tipi oldu\u011fundan, bir &#8220;char&#8221; in &#8220;int&#8221; e \u00e7evrilmesinde hi\u00e7bir sorun yoktur.<br \/>* Fakat, bir integer&#8217;i &#8220;char&#8221; a \u00e7evirmek i\u00e7in, bir standart yoktur. Bu nedenle, \u015fayet tamsayi de\u011fi\u015fkeninin de\u011feri, &#8220;char&#8221; sahas\u0131ndan b\u00fcy\u00fckse, \u00e7\u0131kan sonu\u00e7 \u00e7ok \u015fa\u015f\u0131rt\u0131c\u0131 olabilir.<br \/>* \u00fc\u00e7\u00fcnc\u00fc sat\u0131rda ise, bir tamsayiyi, &#8220;float&#8221; a at\u0131yoruz Bu durumda, derleyici, bu ceviriyi bizim i\u00e7in yapar.<br \/>* Fakat tersini yapmak ise, biraz daha kar\u0131\u015f\u0131kt\u0131r Derleyici \u015fayet varsa, de\u011fi\u015fkenin ondal\u0131k de\u011ferini ne yapaca\u011f\u0131na karar vermek zorundad\u0131r Genellikle de, ondal\u0131k kesimi gozardi eder.<\/p>\n<p>Bu program\u0131n da hi\u00e7bir \u00e7\u0131kt\u0131s\u0131 yok. Hem zaten karakter ve float tiplerinin nas\u0131l ekrana yaz\u0131labilece\u011fini g\u00f6rmedik. Bundan sonraki programa kadar sab\u0131r.<\/p>\n<p>COKVERI.C:<br \/>================================================================<\/p>\n<pre>main()<br \/>   {<br \/>   int a;              \/* basit tamsayi tipi              *\/<br \/>   long int b;         \/* uzun tamsayi tipi               *\/<br \/>   short int c;        \/* k\u0131sa tamsayi tipi               *\/<br \/>   unsigned int d;     \/* i\u015faretsiz (+ - siz) tamsayi     *\/<br \/>   char e;             \/* karakter tipi                   *\/<br \/>   float f;            \/* kayar nokta (ondal\u0131kl\u0131) tipi    *\/<br \/>   double g;           \/* \u00e7ift hassasiyet kayar nokta     *\/   <br \/>   a = 1023;<br \/>   b = 2222;<br \/>   c = 123;<br \/>   d = 1234;<br \/>   e = 'X';<br \/>   f = 3.14159;<br \/>   g = 3.1415926535898;<br \/>   printf(\"a = %d\\n\",a);      \/* desimal (10 tabanl\u0131)     *\/<br \/>   printf(\"a = %o\\n\",a);      \/* oktal (8 tabanl\u0131)        *\/<br \/>   printf(\"a = %x\\n\",a);      \/* heksadesimal (16 tabanl\u0131)*\/<br \/>   printf(\"b = %ld\\n\",b);     \/* uzun desimal             *\/<br \/>   printf(\"c = %d\\n\",c);      \/* k\u0131sa desimal             *\/<br \/>   printf(\"d = %u\\n\",d);      \/* i\u015faretsiz                *\/<br \/>   printf(\"e = %c\\n\",e);      \/* karakter                 *\/<br \/>   printf(\"f = %f\\n\",f);      \/* kayar nokta              *\/<br \/>   printf(\"g = %g\\n\",g);      \/* \u00e7ift hassasiyet k.n.     *\/<br \/>   printf(\"\\n\");<br \/>   printf(\"a = %d\\n\",a);      \/* basit 'int' \u00e7\u0131kt\u0131           *\/<br \/>   printf(\"a = %7d\\n\",a);     \/* 7 uzunlukta bir saha kullan *\/<br \/>   printf(\"a = %-7d\\n\",a);    \/* sola dayal\u0131 7 lik saha      *\/<br \/>   printf(\"\\n\");<br \/>   printf(\"f = %f\\n\",f);      \/* basit kayan nokta     *\/<br \/>   printf(\"f = %12f\\n\",f);    \/* 12 lik bir saha kullan*\/<br \/>   printf(\"f = %12.3f\\n\",f);  \/* noktadan sonra 3 hane *\/<br \/>   printf(\"f = %12.5f\\n\",f);  \/* noktadan sonra 5 hane *\/<br \/>   printf(\"f = %-12.5f\\n\",f); \/* sola yap\u0131\u015f\u0131k 12 hane  *\/<br \/>}<br \/> <\/pre>\n<p>================================================================<\/p>\n<p>Bu program, C dilinde bulunan b\u00fct\u00fcn standart basit veri tiplerini kaps\u0131yor. Ba\u015fka tiplerde var, fakat bunlar basit tiplerin bir araya gelmesi ile olu\u015furlar. Bunlardan daha sonra bahsedece\u011fiz.<\/p>\n<p>Program\u0131 inceleyin. \u0130lk \u00f6nce basit &#8216;int&#8217;, sonra &#8216;long int&#8217; ve &#8216;short int&#8217; g\u00f6r\u00fcn\u00fcyor. &#8216;unsigned&#8217; tipi, yine integer kadar bir sahada saklan\u0131r, fakat art\u0131 yada eksi i\u015fareti ta\u015f\u0131mad\u0131\u011f\u0131ndan, genellikle s\u0131n\u0131r\u0131 0 ila <span class=\"texhtml\">4,294,967,295 aras\u0131ndad\u0131r.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/kalfaoglu.com\/c-dili\/tip.png\" alt=\"\" width=\"43\" height=\"48\" \/>\u015eayet long, short, yada unsigned deyimi kullan\u0131lm\u0131\u015fsa, sonuna &#8216;int&#8217; yaz\u0131lmas\u0131 gereksizdir.<\/p>\n<p>Daha \u00f6nce char ve float u g\u00f6rm\u00fc\u015ft\u00fck. Bunlar d\u0131\u015f\u0131nda kalan &#8216;double&#8217; tipi, &#8216;float&#8217; a nazaran daha buyuk bir sahada saklan\u0131r, ve daha hassas sonu\u00e7lar verebilir.<\/p>\n<p>\u00c7o\u011fu derleyicilerin matematik fonksiyonlar\u0131, float tipini kullanmaz, double tipini kullan\u0131r. Bu nedenle verdi\u011finiz float de\u011feri, size transparan olarak (=size \u00e7akt\u0131rmadan) double&#8217;a \u00e7evirir.<\/p>\n<p>PRINTF&#8217;IN CEVIRIM KARAKTERLERI<\/p>\n<p>Printf fonksiyonunda kullan\u0131lan karakterler \u015funlard\u0131r:<\/p>\n<p>d\u00a0 desimal<br \/>o\u00a0 oktal<br \/>x\u00a0 heksadesimal<br \/>u\u00a0 unsigned (i\u015faretsiz)<br \/>c\u00a0 karakter<br \/>s\u00a0 string (karakter katar\u0131)<br \/>f\u00a0 float (kayar nokta)<\/p>\n<p>Bu harfler, bir y\u00fczde i\u015faretinden sonra kullan\u0131rlar. Bu iki harf aras\u0131na \u015funlar ilave edilebilir:<\/p>\n<p>&#8211;\u00a0\u00a0 \u00a0\u00a0\u00a0 sahas\u0131n\u0131n i\u00e7inde sola dayanm\u0131\u015f<br \/>(n) \u00a0\u00a0\u00a0 minimum saha uzunlu\u011funu belirler<br \/>.\u00a0\u00a0 \u00a0\u00a0\u00a0 n ile m yi birbirinden ay\u0131r\u0131r<br \/>(m) \u00a0\u00a0\u00a0 float tipi i\u00e7in noktadan sonraki hane say\u0131s\u0131<br \/>l\u00a0 \u00a0\u00a0\u00a0 &#8216;long&#8217; tipi oldu\u011funu belirtmek i\u00e7in<\/p>\n<p>Bu program\u0131 derleyip sonu\u00e7lar\u0131n\u0131 inceleyin. Diledi\u011finiz gibi de\u011fi\u015ftirerek, sonu\u00e7lar\u0131 inceleyin.<\/p>\n<p>MANTIKSAL KARSILASTIRMALAR<\/p>\n<p>KARSILAS.C:<br \/>================================================================<\/p>\n<pre>main()  \/* Bir suru kar\u015f\u0131la\u015ft\u0131rma *\/<br \/>   {<br \/>   int x = 11,y = 11,z = 11;<br \/>   char a = 40,b = 40,c = 40;<br \/>   float r = 12.987,s = 12.987,t = 12.987;<br \/>\/* Birinci grup *\/<br \/>    if (x == y) z = -13;   \/* z = -13 olacak                *\/<br \/>   if (x &gt; z)  a = 'A';   \/* a = 65  olacak                *\/<br \/>   if (!(x &gt; z)) a = 'B'; \/* bu hi\u00e7bir \u015fey yapmayacak *\/<br \/>   if (b &lt;= c) r = 0.0;   \/* r = 0.0 olacak                *\/<br \/>   if (r != s) t = c\/2;   \/* t = 20  olacak                *\/<br \/>\/* \u0130kinci grup   *\/<br \/>    if (x = (r != s)) z = 1000; \/* x pozitif olacak, ve<br \/>   z = 1000 olacak       *\/<br \/>   if (x = y) z = 222;   \/* bu, x = y, ve z = 222 yapar *\/<br \/>   if (x != 0) z = 333;  \/* z = 333 olacak   *\/<br \/>   if (x) z = 444;       \/* z = 444 olacak *\/<br \/>\/* \u00fc\u00e7\u00fcnc\u00fc grup *\/<br \/>    x = y = z = 77;<br \/>   if ((x == y) &amp;&amp; (x == 77)) z = 33; \/* z = 33 olur   *\/<br \/>   if ((x &gt; y) || (z &gt; 12))   z = 22; \/* z = 22 olacak *\/<br \/>   if (x &amp;&amp; y &amp;&amp; z) z = 11;           \/* z = 11 olur   *\/<br \/>   if ((x = 1) &amp;&amp; (y = 2) &amp;&amp; (z = 3)) r = 12.00; \/* Bu ise,<br \/>   x = 1, y = 2, z = 3, r = 12.00 yapar *\/<br \/>   if ((x == 2) &amp;&amp; (y = 3) &amp;&amp; (z = 4)) r = 14.56; \/* Bir \u015fey de\u011fi\u015ftiremez! *\/<br \/>\/* d\u00f6rd\u00fcnc\u00fc grup *\/<br \/>    if (x == x); z = 27.345;  \/* z daima de\u011fer de\u011fi\u015ftirir *\/<br \/>   if (x != x)  z = 27.345;   \/* Hi\u00e7 bir \u015fey de\u011fi\u015fmez     *\/<br \/>   if (x = 0)   z = 27.345;   \/* x = 0 olur, z de\u011fi\u015fmez!! *\/<br \/>}<\/pre>\n<p>================================================================<\/p>\n<p>Karsilas.C isimli programa l\u00fctfen bakin. \u0130lk ba\u015f\u0131nda dokuz tane <br \/>de\u011fi\u015fken haz\u0131rl\u0131yoruz. Daha \u00f6nce yapmad\u0131\u011f\u0131m\u0131z \u015fekilde, bunlar\u0131 hem <br \/>tan\u0131mlay\u0131p, hem ilk de\u011ferlerini veriyoruz.<\/p>\n<p>g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi if ile komutlar aras\u0131nda bir sat\u0131r b\u0131rakmam\u0131z gerekmiyor. Program\u0131n daha okunabilir olmas\u0131 i\u00e7in arada sat\u0131r b\u0131rakmak \u015fart de\u011fildir.<\/p>\n<p>Birinci gruptaki kar\u015f\u0131la\u015ft\u0131rmalar, iki de\u011fi\u015fkeni kar\u015f\u0131la\u015ft\u0131rd\u0131klar\u0131 i\u00e7in, en basit olanlar\u0131. \u0130lk sat\u0131rda, x in y ye e\u015fit olup olmad\u0131\u011f\u0131na bak\u0131yoruz. Burada iki e\u015fit i\u015fareti yerine (==) tek e\u015fit de kullan\u0131labilirdi, fakat manas\u0131 de\u011fi\u015firdi. (tek e\u015fit i\u015fareti ATAMA yapar, kar\u015f\u0131la\u015ft\u0131rma de\u011fil)<\/p>\n<p>\u00fc\u00e7\u00fcnc\u00fc sat\u0131rda, NOT i\u015faretini g\u00f6r\u00fcyorsunuz. Bu \u00fcnlem i\u015fareti, herhangi bir kar\u015f\u0131la\u015ft\u0131rman\u0131n sonucunu de\u011fi\u015ftirmek i\u00e7in kullan\u0131labilir.<\/p>\n<p>DAHA ZOR KAR\u015eILA\u015eTIRMALAR<br \/>\u00a0<\/p>\n<p>\u0130kinci grupta yer alan kar\u015f\u0131la\u015ft\u0131rmalar daha zor. \u0130lk \u00f6nce parantezler aras\u0131nda tuhaf bir ifade yer al\u0131yor.. Bunu anlamak i\u00e7in C dilindeki &#8216;EVET&#8217; ve &#8216;HAYIR&#8217; kavramlar\u0131n\u0131 bilmemiz gerekiyor. C de &#8216;HAYIR&#8217;, 0 de\u011ferindedir. &#8216;EVET&#8217; ise, s\u0131f\u0131rdan de\u011fi\u015fik herhangi bir \u015feydir. Bir EVET\/HAYIR testinin sonucu herhangi bir integer yada karakter de\u011fi\u015fkenine atanabilir.<\/p>\n<p>\u0130lk \u00f6rne\u011fe bakin: r!=s deyimi, r nin de\u011feri 0.0 a atand\u0131\u011f\u0131ndan, &#8216;EVET&#8217; bir sonu\u00e7 verecektir. Bu sonu\u00e7, s\u0131f\u0131rdan de\u011fi\u015fik bir rakam, ve herhalde 1 olacakt\u0131r. Olu\u015fan bu sonu\u00e7, x de\u011fi\u015fkenine atan\u0131r. \u015eayet x den sonra iki e\u015fit i\u015fareti olsa idi (x == (r!=s) gibi) bu durumda bu 1 de\u011feri, x ile kar\u015f\u0131la\u015ft\u0131r\u0131l\u0131rd\u0131. Fakat tek bir i\u015faret oldu\u011fundan, r ile s yi kar\u015f\u0131la\u015ft\u0131rman\u0131n sonucu, x e atan\u0131r. Ayr\u0131ca bu atama i\u015fleminin sonucu da s\u0131f\u0131rdan de\u011fi\u015fik oldu\u011fundan, z de 1000 e e\u015fitlenir.<\/p>\n<p>\u0130kinci \u00f6rnekte ise, x de\u011fi\u015fkeni, y nin de\u011ferini al\u0131r, \u00e7\u00fcnk\u00fc arada tek e\u015fit i\u015fareti vard\u0131r. Ayr\u0131ca sonu\u00e7 11 oldu\u011fundan, z de 222 ye e\u015fitlenir.<\/p>\n<p>\u0130kinci grubun \u00fc\u00e7\u00fcnc\u00fcs\u00fcnde, x i s\u0131f\u0131ra kar\u015f\u0131la\u015ft\u0131r\u0131yoruz. \u015eayet sonu\u00e7 &#8216;EVET&#8217; ise, yani x s\u0131f\u0131r de\u011filse, z ye 333 de\u011ferini at\u0131yoruz. Bu grubun en son \u00f6rne\u011finde ise, \u015eayet x in de\u011feri s\u0131f\u0131r de\u011fil ise, z ye 444 at\u0131yoruz. <br \/>Yani \u00fc\u00e7\u00fcnc\u00fc ve D\u00f6rd\u00fcnc\u00fc \u00f6rnekler, birbirine e\u015ftirler.<\/p>\n<p>\u00fc\u00e7\u00fcnc\u00fc gruptaki kar\u015f\u0131la\u015ft\u0131rmalar, yeni deyimler sunuyor. Yani &#8216;AND&#8217; ve &#8216;OR&#8217; deyimleri. \u0130lk \u00f6nce 3 de\u011fi\u015fkene de 77 de\u011ferini at\u0131yoruz ki, i\u015flemlere bilinen de\u011ferlerle baslayabilelim. Buradaki ilk \u00f6rnekte, yeni kontrol i\u015faretimiz &#8216;&amp;&amp;&#8217; i g\u00f6r\u00fcyoruz. Bu satirin okunu\u015fu ise:<br \/>&#8216;\u015eayet x, y ye e\u015fit ise, vede x, 77 ye e\u015fit ise, z nin de\u011ferini 33 yap.&#8217; <br \/>Yani, AND operand\u0131 i\u00e7in, iki taraftaki i\u015flemlerin EVET (TRUE) sonu\u00e7 vermesi gereklidir.<\/p>\n<p>Bundan sonraki \u00f6rnek ise, &#8216;||&#8217; (OR) i\u015faretini g\u00f6steriyor. Bu sat\u0131r ise, &#8216;\u015eayet x, y den buyuk ise, YADA z, 12 den buyuk ise, z nin de\u011ferini 22 yap.&#8217; z nin de\u011feri 12 den buyuk oldu\u011fu i\u00e7in, x in y den buyuk olup olmamas\u0131 \u00f6nemli de\u011fildir. \u00e7\u00fcnk\u00fc OR operand\u0131 i\u00e7in ikisinden birinin EVET olmas\u0131 yeterlidir.<\/p>\n<p>D\u0130KKAT: Bir\u00e7ok k\u0131s\u0131mdan olu\u015fan bir mant\u0131ksal kar\u015f\u0131la\u015ft\u0131rma yaparken, kar\u015f\u0131la\u015ft\u0131rma soldan sa\u011fa do\u011fru yap\u0131l\u0131r, ve sonu\u00e7 garantilendi\u011finde, bu satirin islenmesi durur. Mesela, bir AND kar\u015f\u0131la\u015ft\u0131rmas\u0131nda, \u015fayet AND in sol taraf\u0131ndaki islem HAYIR (FALSE) sonu\u00e7 verirse, sa\u011f taraf\u0131ndaki islem yap\u0131lmaz. Yada, bir OR i\u015fleminde, sol taraf\u0131ndaki islem EVET (TRUE) sonu\u00e7 verirse, i\u015flemin OR dan sonras\u0131na bak\u0131lmaz.<\/p>\n<p>OPERANDLARIN \u0130\u015eLEM SIRASI<\/p>\n<p>Hangi operand ilk \u00f6nce islenir? Bu konuda bir\u00e7ok kural vard\u0131r, ve derleyicinin kitabini bunlar\u0131 uzun uzun anlat\u0131r. Fakat, benim tavsiyem, bunlarla u\u011fra\u015fmak yerine, \u00f6nce islenmesini istedi\u011finiz k\u0131s\u0131m\u0131n \u00e7evresine parantez koyman\u0131zd\u0131r.<\/p>\n<p>\u00fc\u00e7\u00fcnc\u00fc gruptaki \u00f6rneklere devam ederek, D\u00f6rd\u00fcnc\u00fc \u00f6rnekte, \u00fc\u00e7 tane basit de\u011fi\u015fkenin birbiri ile AND edildi\u011fini g\u00f6r\u00fcyoruz. Ucunun de de\u011ferleri s\u0131f\u0131rdan de\u011fi\u015fik oldu\u011fundan, sonu\u00e7 EVET oluyor, ve z nin de\u011feri 11 e e\u015fitlenir.<\/p>\n<p>Bundan sonraki \u00f6rnekte ise, \u00fc\u00e7 tane atama i\u015flemi g\u00f6r\u00fcn\u00fcyor. \u015eayet daha \u00f6nceki \u00f6rnekleri anlad\u0131ysan\u0131z, bu &#8216;if&#8217; komutunun d\u00f6rt tane de\u011feri de\u011fi\u015ftirdi\u011fini g\u00f6rebilirsiniz.<\/p>\n<p><b>B\u0130R H\u0130LE<\/b><\/p>\n<p>\u00dc\u00e7\u00fcnc\u00fc grubun en son \u00f6rne\u011finde ise, bir hile var. \u0130lk \u00f6nce, (x==2) nin HAYIR la sonu\u00e7 verdi\u011fini g\u00f6r\u00fcyoruz. Ve daha \u00f6nce g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, C dili, sonu\u00e7tan emin oluncaya kadar if komutunu isler. Yani, hepsi AND oldu\u011fu i\u00e7in, vede ilk ifade HAYIR (FALSE) oldu\u011fu i\u00e7in, i\u015flemi o noktada keser,\u00a0 ve y,z ve r nin de\u011ferleri de\u011fi\u015fmez.<\/p>\n<p>D\u00f6rd\u00fcnc\u00fc gruptaki \u00f6rneklerin hi\u00e7biri \u00e7al\u0131\u015fmaz. Bu grup, ba\u015f\u0131n\u0131z\u0131 derde sokabilecek komutlard\u0131r. ilk \u00f6rnekte, x == x komutu daima do\u011frudur, fakat hemen arkas\u0131ndan gelen noktal\u0131 virg\u00fcl y\u00fcz\u00fcnden, bundan sonra gelen z=27.345 komutu ayr\u0131 bir komut olarak her zaman i\u015flenir.<\/p>\n<p>ikincisi daha kolay &#8211; x daima x e e\u015fit olaca\u011f\u0131ndan, denklem daima yanl\u0131\u015f olacakt\u0131r. Son olarak, x e s\u0131f\u0131r de\u011feri atan\u0131r, ve parantezin sonucu s\u0131f\u0131r oldu\u011fundan, z ye atama yap\u0131lmaz.<\/p>\n<p><b>C N\u0130N \u00c7ABUK TARAFLARI<\/b><\/p>\n<p>C de 3 tane, bak\u0131nca hi\u00e7bir \u015feye benzemeyen, fakat programlarken h\u0131z sa\u011flayan kestirme yol vard\u0131r. Bu metotlar iyi C programc\u0131lar\u0131 taraf\u0131ndan \u00e7ok s\u0131k kullan\u0131ld\u0131\u011f\u0131ndan, \u00f6\u011frenmenizde fayda vard\u0131r.<\/p>\n<p>KESTIRME.C:<br \/>================================================================<\/p>\n<pre>main()<br \/>{<br \/>   int x = 0,y = 2,z = 1025;<br \/>   float a = 0.0,b = 3.14159,c = -37.234;<br \/>\/* artt\u0131rma     *\/<br \/>   x = x + 1;       \/* Bu x i bir artt\u0131r\u0131r *\/<br \/>   x++;             \/* Bu da..           *\/<br \/>   ++x;             \/*        Bu da..    *\/<br \/>   z = y++;         \/* z = 2, y = 3 *\/<br \/>   z = ++y;         \/* z = 4, y = 4 *\/<br \/>\/* Azaltma      *\/<br \/>   y = y - 1;       \/* Bu y nin de\u011ferini bir azalt\u0131r *\/<br \/>   y--;             \/* Bu da..           *\/<br \/>   --y;             \/*          Buddah.. *\/<br \/>   y = 3;<br \/>   z = y--;         \/* z = 3, y = 2 *\/<br \/>   z = --y;         \/* z = 1, y = 1 *\/<br \/>\/* aritmetik i\u015flemler *\/<br \/>   a = a + 12;      \/* a ya 12 eklemek        *\/<br \/>   a += 12;         \/* 12 daha eklemek..      *\/<br \/>   a *= 3.2;        \/* a yi 3.2 ile \u00e7arpmak   *\/<br \/>   a -= b;          \/* b yi a dan \u00e7\u0131karmak    *\/<br \/>   a \/= 10.0;       \/* a yi ona b\u00f6lmek        *\/<br \/>\/* \u015fartl\u0131 i\u015flemler        *\/<br \/>   a = (b &gt;= 3.0 ? 2.0 : 10.5 );     \/* Bu islem.......     *\/<br \/>  if (b &gt;= 3.0)                      \/* ve bu i\u015flemler..    *\/<br \/>        a = 2.0;                       \/* birbiri ile aynidir *\/<br \/>  else                               \/* ve ayni sonucu      *\/<br \/>        a = 10.5;                      \/* sa\u011flarlar.          *\/<br \/>  c = (a &gt; b?a:b);        \/* c, a yada b nin max ini alir   *\/<br \/>  c = (a &gt; b?b:a);        \/* c, a yada b nin min ini alir.  *\/<br \/>}<br \/>   ================================================================<br \/> <\/pre>\n<p>KESTIRME.C ye bakin. Bu programda, ilk komutta, x in de\u011feri bir tane artt\u0131r\u0131l\u0131yor. \u0130kinci ve \u00fc\u00e7\u00fcnc\u00fc komutlar da ayni \u015feyi yaparlar. Yani, iki tane art\u0131 i\u015fareti, de\u011fi\u015fkenin de\u011ferini bir artt\u0131r\u0131r. Ayr\u0131ca, \u015fayet ++<br \/>i\u015fareti de\u011fi\u015fkenin \u00f6n\u00fcnde ise, de\u011fi\u015fken kullan\u0131lmadan \u00f6nce de\u011feri artt\u0131r\u0131l\u0131r, \u015fayet ++ i\u015fareti de\u011fi\u015fkenin arkas\u0131nda (sa\u011f\u0131nda) ise, kullan\u0131ld\u0131ktan sonra de\u011feri artt\u0131r\u0131l\u0131r.<\/p>\n<p>D\u00f6rd\u00fcnc\u00fc komutta ise, y nin de\u011feri, z ye atan\u0131r, ve daha sonra da y nin de\u011feri bir artt\u0131r\u0131l\u0131r. Bundan sonraki komutta ise, y nin de\u011feri ilk \u00f6nce artt\u0131r\u0131l\u0131r, daha sonra bu de\u011fer z ye verilir.<\/p>\n<p>\u0130kinci grupta, azalt\u0131c\u0131 operat\u00f6rleri g\u00f6r\u00fcyoruz. Ayni artt\u0131r\u0131c\u0131 operat\u00f6rler gibi, bu gruptaki \u00f6rnekler de bir \u00f6ncekiler ile aynidir.<\/p>\n<p>\u00fc\u00e7\u00fcnc\u00fc grupta, aritmetik kestirme metodlari g\u00f6r\u00fcyoruz. ilk \u00f6rnekte, a ya12 eklenir. Bunun alt\u0131ndaki sat\u0131rda ise, tekrar ayni \u015fey yap\u0131l\u0131r Yani, += operat\u00f6r\u00fc, soldaki de\u011fi\u015fkene, sa\u011f taraf\u0131n sonucunun eklenece\u011fini belirtir. <br \/>Yine ayni \u015fekilde, bu is \u00e7arpma, \u00e7\u0131karma, ve b\u00f6lme i\u015flemleri i\u00e7in de yap\u0131labilir<\/p>\n<p>D\u00f6rd\u00fcnc\u00fc grupta ise, a ya, karma\u015f\u0131k bir de\u011ferin atand\u0131\u011f\u0131n\u0131 g\u00f6r\u00fcyoruz Bunun hemen alt\u0131ndaki if&#8230; sat\u0131rlar\u0131 ise, bu tek sat\u0131r ile es anlamdad\u0131r Bu kar\u015f\u0131la\u015ft\u0131rma operat\u00f6r\u00fc, \u00fc\u00e7 par\u00e7adan olu\u015fmu\u015ftur Bu par\u00e7alar birbirinden soru, ve iki nokta i\u015faretleri ile ayr\u0131l\u0131rlar \u0130lk \u00f6nce soru i\u015faretinden \u00f6nceki k\u0131s\u0131m de\u011ferlendirilir, sonu\u00e7 EVET \u00e7\u0131kar ise, soru i\u015faretinden hemen sonraki de\u011fer, dondurulur, \u015fayet sonu\u00e7 HAYIR \u00e7\u0131kar ise, <br \/>iki nokta i\u015faretinden sonraki de\u011fer dondurulur.<\/p>\n<p>Bundan sonra ise, bu kar\u015f\u0131la\u015ft\u0131rma operat\u00f6r\u00fcn\u00fcn c ye atama yapmakta kullan\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6r\u00fcyoruz \u0130lk \u00f6nce, a ile b nin hangisinin de\u011feri b\u00fcy\u00fckse, o de\u011fere c ye atan\u0131r, ve ikincide ise, hangisi daha k\u00fc\u00e7\u00fck ise, o c ye <br \/>atan\u0131r<\/p>\n<p><b>\u00d6dev:<\/b><\/p>\n<p>1. Birden on ikiye sayacak bir program yaz\u0131n. Bu program, sayarken rakamlar\u0131 <br \/>ve bu rakamlar\u0131n karelerini ekrana yazs\u0131n<\/p>\n<p>1 1<br \/>2 4<br \/>3 9 <br \/>gibi..<\/p>\n<p>2. Birden on ikiye sayan program\u0131 biraz de\u011fi\u015ftirerek , say\u0131m\u0131 yazan, ve 1 in <br \/>inversini, be\u015f haneli alan bir program yaz\u0131n. Yani:<\/p>\n<p>1 1.00000<br \/>2 .50000<br \/>3 .33333<br \/>4 .25000 <br \/>gibi..<\/p>\n<p>3. Birden y\u00fcze kadar sayan, fakat 32 ila 39 aras\u0131ndaki de\u011ferleri yazan bir <br \/>program yaz\u0131n. Her sat\u0131ra bir rakam yaz\u0131ls\u0131n..<\/p>\n<p><a href=\"https:\/\/kalfaoglu.com\/wp\/c-dili-programlama\/c-dili-5-konu\/\">Bir Sonraki Konu<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TAM SAYI ATAMA TAMSAYI.C:================================================================main(){ int a,b,c; a = 12; b = 3; c = a+b; c = a-b; c = a*b; c = a\/b; c = a%b; c = 12*a+b\/2-a*b*2\/(a*c+b*2); a = a + 1; \/* artt\u0131rma i\u015flemleri *\/ b &hellip; <a href=\"https:\/\/kalfaoglu.com\/wp\/c-dili-programlama\/c-dili-4-konu\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":11,"featured_media":0,"parent":458,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-466","page","type-page","status-publish","hentry"],"jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/pages\/466","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/comments?post=466"}],"version-history":[{"count":5,"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/pages\/466\/revisions"}],"predecessor-version":[{"id":615,"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/pages\/466\/revisions\/615"}],"up":[{"embeddable":true,"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/pages\/458"}],"wp:attachment":[{"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/media?parent=466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}