C Programlama C Programlama Alper Bayrak ¨ Abant ˙Izzet Baysal Universitesi Bolu 2014 C Programlama Sunuma Genel Bakı¸s Sunuma Genel Bakı¸s I 1 PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS¸ Kullanılacak Olan Derleyici A¸cıklamalar, Tanıtıcı S¨ ozc¨ ukler ve Anahtar S¨ozc¨ ukler De˘gi¸smezler Tamsayı De˘ gi¸smezleri Kayan Noktalı Sayı De˘ gi¸smezleri Karakter De˘ gi¸smezleri Karakter Dizisi De˘ gi¸smezleri Temel Veri Tipleri ve Tanımlar ¨ slemci Emirleri #define ve #include Oni¸ ˙I¸sle¸cler, Ifadeler ˙ ve Atama Deyimleri ¨ Oncelik ve Birle¸sme Kuralları ˙ De˘ gi¸smez Ifadeler C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Kullanılacak Olan Derleyici Kullanılacak Olan Derleyici Bu derste, Dev-C++ geli¸stirme ortamı kullanılacaktır. Dev C++, GNU GPL altında da˘ gıtılan bir t¨ umle¸sik geli¸stirme ortamıdır. Dev C++’ nin t¨ um arabirimi Delphi ile geli¸stirilmi¸stir ve u ¨cretsiz olarak da˘ gıtılmaktadır. Program, hem C hem de C++ ’ı desteklemektedir. Programın son s¨ ur¨ um¨ un¨ u http://www.bloodshed.net/dev/devcpp.html adresinden indirebilirsiniz. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Kullanılacak Olan Derleyici Kullanılacak Olan Derleyici Programın a¸cılı¸s ekranı a¸sa˘ gıda verilmi¸stir. Figure: Dev-C++ ekran g¨ or¨ unt¨ us¨ u C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Kullanılacak Olan Derleyici Kullanılacak Olan Derleyici ¨ C dilinde yazılan basit bir program (Ornek program 1) ¸su ¸sekildedir. #include <stdio.h> int main() { printf(”merhaba”); return 0; } Bu program ekrana ”merhaba” yazacak ve kapanacaktır. Burada printf(”merhaba”); dı¸sındaki kodlar zorunludur ve ilerleyen kısımlarda anlatılacaktır. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Kullanılacak Olan Derleyici Kullanılacak Olan Derleyici Programın ¸calı¸stırılabilmesi i¸cin ilk ¨ once derlenmesi gerekir. Bunun i¸cin men¨ uden ¸calı¸stır→derle komutu se¸cilir. Programın, hata vermemesi durumda a¸sa˘ gıdaki ekran ¸cıkar. Figure: Derleme sonu¸c ekranı C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Kullanılacak Olan Derleyici Kullanılacak Olan Derleyici Programda hata ¸cıkması durumunda, mevcut hatalar, programın alt kısmındaki ”derleyici” kısmında verilir. A¸sa˘gıda ¨ornek bir hata ekranı g¨ osterilmi¸stir. Figure: Derleyici hata ekranı C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Kullanılacak Olan Derleyici Kullanılacak Olan Derleyici Programın hata vermemesi durumunda, men¨ uden ¸calı¸stır→¸calı¸stır se¸cene˘ gi se¸cilir. A¸sa˘gıda c¸alı¸san programın ekran ¸cıktısı verilmi¸stir. Figure: ˙Ilk program ekran ¸cıktısı C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ A¸cıklamalar, Tanıtıcı S¨ ozc¨ ukler ve Anahtar S¨ ozc¨ ukler A¸cıklamalar B¨ol¨ u-yıldız (/*) ile ondan sonraki ilk yıldız-b¨ ol¨ u (*/) arasında bulunan herhangi bir karakter dizisi bir program a¸cıklamasıdır ve derleyici a¸cısından bir bo¸slu˘ ga e¸sde˘ ger olarak kabul edilir. Bir a¸cıklama grubunun ¸s¨ oyle yazılması ¨ onerilmektedir: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Buyuk bir aciklama obegi... * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ veya /* Daha kucuk bir aciklama obegi... */ veya //satır yorum C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ A¸cıklamalar, Tanıtıcı S¨ ozc¨ ukler ve Anahtar S¨ ozc¨ ukler Tanıtıcı S¨ozc¨ukler De˘gi¸skenler, deyim etiketleri, tip isimleri, fonksiyon isimleri gibi, programcı tarafından olu¸sturulan b¨ ut¨ un nesneleri isimlendirmek i¸cin tanıtıcı s¨ ozc¨ ukler, bir di˘ ger adıyla, program isimleri kullanılır. Tanıtıcı s¨ozc¨ ukler i¸cin ¸su kurallar ge¸cerlidir: Herhangi bir sayıda karakterlerden olu¸sur, ancak ilk 31 karakter dikkate alınır. 2 ˙Ilk karakter bir harf veya alt¸ cizgi ( ) olmalıdır. 3 Geri kalan b¨ ut¨ un karakterler bir harf, rakam veya alt¸cizgi olabilir. 1 C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ A¸cıklamalar, Tanıtıcı S¨ ozc¨ ukler ve Anahtar S¨ ozc¨ ukler Tanıtıcı S¨ozc¨ukler ¨ Ornek olarak, A12, a12, sayfa basi de˘ gi¸sken ismi olarak kullanılabilir. K¨ u¸cu ¨k ve b¨ uy¨ uk harflerin farklı oldu˘ guna dikkat ediniz, yani A12 ile a12 farklı tanıtıcı s¨ ozc¨ uklerdir. Ancak, bazı ortamlarda k¨ u¸cu ¨k b¨ uy¨ uk harf ayırımı yapılmayabilir. Bundan dolayı, aynı program i¸cinde, harf ayrımı dı¸sında, birbirine benzeyen iki farklı isim kullanmaktan ka¸cının. Ayrıca, bir tanıtıcı s¨ ozc¨ ukte, ilk karakter olarak alt¸cizgiden ka¸cınılması ¨onerilir, ¸cu ¨nk¨ u bu tip isimler derleyiciye ¨ozg¨ u bazı anahtar s¨ozc¨ ukler veya di˘ ger isimler i¸cin kullanılmaktadır. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ A¸cıklamalar, Tanıtıcı S¨ ozc¨ ukler ve Anahtar S¨ ozc¨ ukler Anahtar S¨ozc¨ukler C dilinde 32 adet anahtar s¨ ozc¨ uk vardır; hepsi k¨ uc¸u ¨k harfle yazılır. Anahtar s¨ozc¨ ukler tanıtıcı s¨ ozc¨ uk olarak kullanılamazlar; kendilerine ¨ozg¨ u kullanım alanları vardır. C dilindeki b¨ ut¨ un anahtar s¨ ozc¨ uklerin sınıflandırılmı¸s bir listesi a¸sa˘gıda verilmi¸stir. Program i¸cinde kullanaca˘ gınız isimlerin a¸sa˘ gıdaki listede olmamasına dikkat edin. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ A¸cıklamalar, Tanıtıcı S¨ ozc¨ ukler ve Anahtar S¨ ozc¨ ukler Anahtar S¨ozc¨ukler veri tipi char const double enum float int long short signed struct union unsigned void volatile bellek sınıfı auto extern register static typedef deyim break case continue default do else for goto if return switch while i¸sle¸c sizeof Table: C dilinde kullanılan anahtar s¨ ozc¨ ukler C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ De˘ gi¸smezler De˘gi¸smezler C dilinde, tamsayı, kayan noktalı, karakter ve karakter dizisi de˘gi¸smezleri bulunur. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ De˘ gi¸smezler Tamsayı De˘gi¸smezleri Tamsayı de˘gi¸smezleri, program i¸cinde, ondalık, sekizli veya onaltılı sayılar ¸seklinde belirtilebilirler ve derleyicinin tipine g¨ore, 16 bit veya 32 bit ¸seklinde saklanırlar. A¸sa˘gıdaki ¨orneklerde bazı tamsayı de˘ gi¸smezleri g¨or¨ ulmektedir: 123 ondalık 123 0123 sekizli 123 = ondalık 83 083 ge¸cersiz bir sayı 0x123 onaltılı 123 = ondalık 291 0XFF onaltılı FF = ondalık 255 Sayının ¨on¨ undeki bir sıfır rakamının, geri kalan rakamların sekizli (yani, 0-7) ve sayı ¨ on¨ undeki bir sıfırla onun arkasından gelen k¨ u¸cu ¨k veya b¨ uy¨ uk x harfinin, geri kalan rakamların onaltılı (yani, 0-9, A-F veya a-f) olması gerekti˘gini g¨osterdi˘gine dikkat edin. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ De˘ gi¸smezler Tamsayı De˘gi¸smezleri Sayının program i¸cindeki g¨ osterimi ne olursa olsun, makine i¸cinde her zaman bitler halinde ikili sistemde saklanır; ancak bu durum genelde programcıyı ilgilendirmez. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ De˘ gi¸smezler Tamsayı De˘gi¸smezleri Bir tamsayı de˘gi¸smezi, e˘ ger de˘ geri 16 bite sı˘ gıyorsa, kısa formda (16 bit) saklanır, aksi takdirde uzun formda (32 bit) saklanır. Tamsayı bir de˘ gi¸smezin uzun formda saklanmasını zorlamak i¸cin de˘gi¸smezin arkasına l veya L harfi eklenmelidir. 1 sayısı ile karı¸stırılmaması i¸cin, k¨ u¸cu ¨k l yerine b¨ uy¨ uk L harfinin kullanılması ¨ onerilir. 123, 16 bitte saklanır 123l, 32 bitte saklanır 123L, 32 bitte saklanır 077, 000077 ¸seklinde, 16 bitte saklanır 077L, 0...077 ¸seklinde, 32 bitte saklanır 0xFFFF, 16 bitte saklanır 0xFFFFL, 0000FFFF ¸seklinde, 32 bitte saklanır 0xFFFFF, 000FFFFF ¸seklinde, 32 bitte saklanır C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ De˘ gi¸smezler Tamsayı De˘gi¸smezleri Bir sekizli veya onaltılı tamsayı de˘ gi¸smezi, daha b¨ uy¨ uk bir bellek alanına yerle¸stirildi˘ gi zaman, soluna sıfır konur. Yani b¨oyle de˘gi¸smezlerin i¸saretsiz oldu˘ gu varsayılır. Ondalıklı bir tamsayı de˘ gi¸smezinin i¸saretsiz olarak i¸slem g¨ormesini sa˘glamak i¸cin arkasına u veya U eki konulmalıdır, ¨orne˘gin 65000U. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ De˘ gi¸smezler Kayan Noktalı Sayı De˘gi¸smezleri Kayan noktalı sayı de˘ gi¸smezleri ya tamsayı ile kesir kısmı arasına nokta konarak yada bilimsel g¨ osterimde belirtilirler. ˙Ikinci y¨ontem, genelde, ¸cok b¨ uy¨ uk veya c¸ok k¨ uc¸u ¨k sayılar i¸cin kullanılır. A¸sa˘gıda bazı ¨ornekler vardır: 1.123 1.23E20 = 1.23x10ˆ20 1.23e20 = 1.23x10ˆ20 (b¨ uy¨ uk veya k¨ uc¸u ¨k harf olabilir) 123E18 = 1.23x10ˆ20 1.23E-20 = 1.23x10ˆ-20 C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ De˘ gi¸smezler Kayan Noktalı Sayı De˘gi¸smezleri De˘gi¸smezin i¸cinde herhangi bir bo¸slu˘ gun olmaması gerekti˘gine dikkat edin. Normalde, kayan noktalı de˘ gi¸smezler 8 baytta, yani double (¸cift) duyarlıkta, saklanır. E˘ger kayan noktalı de˘ gi¸smezde f veya F eki bulunuyorsa, o zaman 4 baytta, yani tek duyarlıkta; e˘ ger l veya L eki kulanılırsa, o zaman long double (uzun c¸ift veya d¨ortl¨ u) duyarlıkta saklanır. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ De˘ gi¸smezler Karakter De˘gi¸smezleri Bir karakter de˘gi¸smezi, ’A’, ’a’, ’%’ gibi tırnak i¸saretleri arasına konulan tek bir karakter veya tek bir karaktere e¸sde˘ger olan bir ka¸cı¸s sırasıdır. char a=’z’ char b=’p’ Bir ka¸cı¸s sırası bir ters b¨ ol¨ u i¸sareti ile bir harf veya rakamlardan olu¸sur. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ De˘ gi¸smezler Karakter De˘gi¸smezleri C dilinde ¸su ka¸cı¸s sıraları kullanılır: ¨ Ozel karakter \n \b \r \t \f \v \a \’ \” \? \\ \ddd \xhhh a¸cıklaması yeni satır geri alma satırba¸sı durak (tab) sayfa ilerletme dikey durmak zil tek tırnak ¸cift tırnak soru i¸sareti ters b¨ ol¨ u sekizli kodu ddd olan karakter onaltılı kodu hhh olan karakter C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ De˘ gi¸smezler Karakter Dizisi De˘gi¸smezleri Bir karakter dizisi de˘ gi¸smezi ¸cift tırnaklar arasında yazılmı¸s herhangi bir sayıda karakter veya yukarıda listesi verilmi¸s ka¸cı¸s sırasından olu¸sur. ””: bo¸s karakter dizisi ”Merhaba”: 7 karakterlik bir karakter dizisi ”Isminizi girin,\n veya ENTER\’a basin” iki satırdan olu¸san bir karakter dizisi Bir karakter dizisi de˘ gi¸smezi bellekte saklandı˘gı zaman, dizinin sonuna otomatik olarak bo¸s karakter (\0) eklenir; bundan dolayı diziyi saklamak i¸cin kullanılan bayt sayısı dizinin uzunlu˘gundan bir fazladır C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ De˘ gi¸smezler Bir Sonraki Satıra Devam Etme Bir deyim veya karakter dizisi de˘ gi¸smezi programın tek bir satırına sı˘gmıyorsa ve bir sonraki satıra devam etmek gerekiyorsa, satırın sonuna ters b¨ ol¨ u (\) i¸sareti konup bir sonraki satıra devam edilebilir. Ayrıca, uzun bir karakter dizisi de˘gi¸smezi iki satırda iki ayrı karakter dizisi ¸seklinde de yazılabilir. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Temel Veri Tipleri ve Tanımlar Temel Veri Tipleri ve Tanımlar Bir de˘gi¸sken ismi, de˘ gi¸skenin alaca˘ gı de˘ gerlerin t¨ ur¨ u ve i¸slevini yansıtacak ¸sekilde dikkatlice se¸cilen bir tanıtıcı s¨ozc¨ ukt¨ ur. Genelde, kalan gunler veya kalanGunler ¸seklinde bir de˘gi¸sken ismi x132 gibi bir isme tercih edilmelidir. De˘gi¸sken isimlerinde b¨ uy¨ uk harfler yerine k¨ uc¸u ¨k harflerin kullanılması alı¸sılagelmi¸stir. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Temel Veri Tipleri ve Tanımlar Temel Veri Tipleri ve Tanımlar Bir C programında, kullanılmadan ¨ once, t¨ um de˘gi¸sken ve fonksiyonların tanımı veya bildirimi yapılmalıdır. Temel veri tiplerinin, yani tamsayı, kayan noktalı sayılar ve karakterlerin bildiriminde kullanılan anahtar s¨ ozc¨ ukler ¸sunlardır: De˘ gi¸sken int signed, unsigned short, long float, double char A¸cıklaması tamsayı i¸saretli veya i¸saretsiz tamsayılar kısa veya uzun tamsayılar tek veya ¸cift duyarlıklı kayan noktalı sayılar karakter C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Temel Veri Tipleri ve Tanımlar Temel Veri Tipleri ve Tanımlar Bir tanım, bir tip ismi ile tanımlanmakta olan nesnelerin virg¨ ulle ayrılmı¸s listesinden olu¸sur ve bir noktalı virg¨ ul ile sona erer. A¸sa˘gıda birka¸c ¨ornek tanım g¨ osterilmi¸stir: int x; int x1, y1, z1; long d, d1; char c; char c1, c2, c3; float a; float a1, a2, a3; int u[3]; float k[10*20]; Son iki tanımda, tek boyutlu ve u ¨c¸ elemanlı bir tamsayı dizisi ile tek boyutlu ve 200 elemanlı kayan noktalı sayılardan olu¸san bir dizi tanımlanmı¸stır. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Temel Veri Tipleri ve Tanımlar Temel Veri Tipleri ve Tanımlar A¸sa˘gıda g¨or¨ uld¨ u˘gu ¨ gibi, de˘ gi¸skenler tanımlandıkları zaman ilk de˘gerleri de verilebilir: int x = 0; int x1 = 10, x2 = 20, x3 = 30, x4 = 60 * 60; /* ilk deger degismez bir ifadedir */ char c1 = ’a’, c2 = ’z’; Buna ilkleme denmektedir. ˙Ilk de˘ger olarak bir ifadenin de yazılabilece˘ gine dikkat edilmelidir. Tanımlanan de˘gi¸skenlerin ilklenmesi iyi bir alı¸skanlıktır. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Temel Veri Tipleri ve Tanımlar Temel Veri Tipleri ve Tanımlar ˙Isimlendirilmi¸s de˘ gi¸smezler, yani de˘ gerleri de˘ gi¸stirilemeyecek olan de˘gi¸skenler, const tip niteleyicisi kullanılarak tanımlanırlar: int const x = 100; char const ys = ’\n’; float const a = 123.45; Bu tip de˘gi¸smez ”de˘ gi¸sken”lerin const ile tanımlanmasının en azından iki avantajı vardır: Programcı yanlı¸slıkla bu tip bir de˘ gi¸skene atama yapmaya kalkar veya de˘ gerini de˘ gi¸stirebilecek bir ¸sekilde kullanmaya kalkarsa, derleyici onu uyaracaktır. 2 C ¸ ok kullanıcılı sistemlerde bu tip de˘ gi¸skenlerin ortak ve de˘ gi¸stirilemez bir bellek kesimine y¨ uklenmesi sa˘glanabilir. 1 C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Temel Veri Tipleri ve Tanımlar Temel Veri Tipleri ve Tanımlar Aynı anda ba¸ska bir s¨ ure¸c (program) tarafından kullanılan veya de˘gi¸stirilebilen de˘ gi¸skenlerin, derleyicinin olası bir eniyileme yapmasını engellemek i¸cin, volatile tip niteleyicisi kullanılarak tanımlanması gerekmektedir. ¨ gin, ¸cok kullanıcılı ortamlarda iki de˘ Orne˘ gi¸sik s¨ ure¸c tarafından ortak kullanılan bir de˘ gi¸skenin volatile tanımlanması gerekir. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Temel Veri Tipleri ve Tanımlar Temel Veri Tipleri ve Tanımlar Tanımlanmı¸s bir de˘ gi¸sken, bir deyim i¸cinde ismi verilerek anılır. Dizi elemanlarına ula¸smak i¸cin c¸e¸sitli yollar olmasına ra˘gmen, ¸co˘gu zaman dizi isminin arkasına k¨ o¸seli parantezler i¸cinde indis belirtilerek kullanılırlar. Eleman sayısı BOY olan bir dizi i¸cin indisin alabilece˘gi de˘gerler 0’dan BOY-1’e kadar de˘ gi¸sir. Yani, ”int u[3]” ¸seklinde tanımlanmı¸s olan u tamsayı dizisinin elemanları u[0], u[1] veya u[2] ¸seklinde kullanılabilir. ˙Indisin her zaman de˘ gi¸smez bir tamsayı olmasına gerek yoktur; genelde bir ifade olur. Yani, u[x+5] ge¸cerli bir kullanımdır. Do˘ gal olarak, e˘ger ”x+5” ifadesinin de˘geri 0, 1 veya 2 de˘ gilse, beklenmeyen sonu¸clar elde edilebilir. Bu tip kullanımları kontrol altında tutmak tamamen programcının sorumlulu˘ gundadır. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Temel Veri Tipleri ve Tanımlar Temel Veri Tipleri ve Tanımlar De˘gi¸sik tiplerde tanımlanmı¸s de˘ gi¸skenler i¸cin, mevcut derleyiciler tarafından ayrılan bellek miktarı ile alt ve u ¨st limit de˘gerleri ¸s¨oyledir: Tip char short int long signed short signed signed long unsigned short unsigned unsigned long float double long double A¸cıklaması karakter veya 8 bitlik tamsayı i¸saretli tamsayı i¸saretli tamsayı i¸saretli tamsayı i¸saretli tamsayı i¸saretli tamsayı i¸saretli tamsayı i¸saretsiz tamsayı i¸saretsiz tamsayı i¸saretsiz tamsayı kesirli sayı geni¸s ve fazla duyarlıklı kesirli sayı geni¸s ve fazla duyarlıklı kesirli sayı Bayt sayısı 1 2 2 veya 4 4 2 2 veya 4 4 2 2 veya 4 4 4 8 8 veya 10 De˘ ger aralı˘ gı 0-255 -32768-32767 -2147483648 to 2147483647 -2147483648-2147483647 -32768-32767 -2147483648 to 2147483647 -2147483648 to 2147483647 0-65535 0-4294967295 0-4294967295 +/- 3.4e +/- 38 ( 7 basamak) 1.7e +/- 308 (15 basamak) 1.7e +/- 308 (15 basamak) Not: 16 bitlik bilgisayarlarda veya derleyicilerde (signed veya unsigned) int 16 bittir; 32 bitliklerde ise 32 bittir. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ Temel Veri Tipleri ve Tanımlar Temel Veri Tipleri ve Tanımlar Tam sayılar ve kayan noktalı sayılar i¸cin her bilgisayarda farklı olabilecek bu ¨ozellikler, tam olarak limits.h ve float.h adlı ba¸slık dosyalarında tanımlanmı¸stır. Daha do˘gru bilgiye ula¸smak i¸cin bu ba¸slık dosyalarında tanımlanmı¸s bulunan de˘ gi¸smezlerin kullanılması ¨ozellikle ¨onerilir. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ¨ slemci Emirleri #define ve #include Oni¸ ¨ slemci Emirleri #define ve #include Oni¸ Hemen b¨ ut¨ un C derleyicileri, ¨ ozel ¨ oni¸slemci emirlerini tanıyan bir ¨oni¸slemciyi yapılarında bulundururlar. ¨ slemci emirleri, bir bakıma, C derleyicisinin girdisini, yani Oni¸ kaynak kodu, kontrol etmede kullanılır. Bir ¨oni¸slemci emrinin ilk karakteri her zaman numara i¸saretidir (#) ve kaynak programda satırın ilk karakteri olmalıdır. Normalde, ¨oni¸slemci emirlerinin c¸o˘ gu, kaynak programın ba¸sına, bildirimlerden ¨ once yazılır. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ¨ slemci Emirleri #define ve #include Oni¸ ¨ slemci Emirleri #define ve #include Oni¸ #define emri ¸su ¸sekildedir: ozc¨ uk karakter dizisi #define tanıtıcı s¨ Bu t¨ ur bir #define emri, emirden sonra gelen program deyimlerinde tanıtıcı s¨ ozc¨ uk bulunan her yerde, onun yerine karakter dizisinin konulaca˘ gını g¨ osterir. ¨ gin, Orne˘ #define XYZ 100 emri, daha sonra, XYZ’nin her rastlandı˘ gı yerde 100 konulmasını sa˘glar. Program i¸cinde kullanılacak de˘ gi¸smezleri tanımlamanın yaygın bir yolu da budur. #define emirleriyle tanımlanan tanıtıcı s¨ ozc¨ uklerin b¨ uy¨ uk harfle yazılması alı¸sılagelmi¸stir. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ¨ slemci Emirleri #define ve #include Oni¸ ¨ slemci Emirleri #define ve #include Oni¸ #include emri ya #include ”dosya adı” yada #include <dosya adı> ¸seklinde olur ve ¨oni¸slemciye #include satırının yerini, belirtilen dosyanın alaca˘gını g¨ osterir. E˘ger dosya adı ¸cift tırnak i¸cine alınmı¸ssa, o zaman ¨oni¸slemci, dosyayı kaynak program dosyasının saklandı˘ gı altdizinde arar. E˘ger dosya adı a¸cılı parantezler i¸cinde ise, o zaman dosya, b¨oyle #include emirleri i¸cin aramaların yapıldı˘gı ”standart” altdizin(ler)de aranır. Normalde, bu \include altdizini olur. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ¨ slemci Emirleri #define ve #include Oni¸ ¨ slemci Emirleri #define ve #include Oni¸ #include emri, daha ¨ onceden hazırlanan, standart veya kullanıcı tarafından tanımlanan dosyalarda saklanan, sık kullanılan veri ve fonksiyon bildirimlerini programa dahil etmede kullanılır. B¨oyle dosyalara ba¸slık dosyaları adı verilir ve isimleri dosyaadi.h ¸seklinde olur. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri C dili, sa˘gladı˘gı i¸sle¸cler (i¸slem operat¨ orleri) a¸cısından ¸cok zengindir. ˙I¸sletilebilir C deyimlerinin c¸o˘ gu bir ifade ¸seklinde yazılır. Bu ifade belirli kurallara uygun olarak olu¸sturulmu¸s bir i¸slenenler ve i¸sle¸cler karı¸sımıdır. Di˘ger programlama dillerine kar¸sılık, C dilinde bir atama bile ¨ozel bir c¸e¸sit ifadedir. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri ˙I¸sle¸cler (i¸slem operat¨ orleri), aritmetik i¸slemler, atama, ba˘gıntısal ve mantıksal kar¸sıla¸stırmalar, bit i¸slemleri, adreslerle ilgili i¸slemler ve ba¸ska i¸slerde kullanılırlar. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri C’de kullanılan aritmetik i¸sle¸cler ve a¸cıklamaları a¸sa˘gıda verilmi¸stir: ˙sle¸c I¸ + * / % ++ -- A¸cıklaması Toplama veya tekli artı C ¸ ıkarma veya olumsuzlama C ¸ arpma B¨ olme Kalan, (5%2 ifadesinin de˘ geri, 5/2’den arta kalan, yani 1’dir. ˙I¸slenenler pozitif tamsayılar olmalıdır.) Anlamı, i¸slecin, i¸slenenin ¨ on¨ unde veya arkasında olmasına ba˘ glı olarak de˘ gi¸sir; ancak sonu¸cta i¸slenenin de˘ geri bir artırılır. Anlamı, i¸slecin, i¸slenenin ¨ on¨ unde veya arkasında olmasına ba˘ glı olarak de˘ gi¸sir; ancak sonu¸cta i¸slenenin de˘ geri bir azaltılır. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri Basit bir atama deyimi ¸su ¸sekildedir: de˘gi¸sken = ifade; ve ifadenin de˘gerinin hesaplandıktan sonra, de˘gi¸skenin de˘gerinin buna e¸sitlenece˘ gi anlamına gelir. ˙Ifadeden sonraki noktalı virg¨ ul, deyimi sonu¸clandırır. a = b + 10; c = d + c * e - f / g + h % j; x = y * sin(z - 3.14); z = u[2] * u[0]; u[1] = -123.45; x = 10; (x) = 10; C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri C dilinde, di˘ger programlama dillerine kar¸sılık, atamanın kendisi de bir ifadedir, bundan dolayı bir de˘ gere sahiptir. Bir atama ifadesinin de˘ geri, de˘ geri hesaplanarak sol taraftaki de˘gi¸skene atanan ifadenin de˘ geridir. Atama ifadesinin tipi ise soldaki i¸slenenin tipiyle aynıdır. ¨ gin, bir ifadenin de˘geri Bu olgu, C dilinde ¸cok kullanılır. Orne˘ aynı anda birden fazla de˘ gi¸skene, ¸su ¸sekilde, atanabilir: a = b = c = 0; c de˘gi¸skeni, 0’ın de˘ gerini, b, c’nin de˘ gerini ve a, b’nin de˘gerini alır; b¨oylece b¨ ut¨ un de˘ gi¸skenler 0’a e¸sitlenir. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri A¸sa˘gıda ++ ve - - i¸sle¸clerini a¸cıklamak i¸cin bazı ¨ornekler verilmi¸stir: ˙ Ifade x = y++ x = ++y x = y- x = - -y A¸cıklaması y’nin de˘ geri ¨ once,x’e atanır, sonra da bir artırılır. Bu ¸suna e¸sde˘ gerdir: x = y;,y = y+1; y’nin de˘ geri ¨ once bir artırılır, sonra da x’e atanır. Bu ¸suna e¸sde˘ gerdir: y = y+1;,x = y; y’nin de˘ geri ¨ once x’e atanır, sonra da bir azaltılır. Bu ¸suna e¸sde˘ gerdir: x = y;,y = y-1; y’nin de˘ geri ¨ once bir azaltılır, sonra da x’e atanır. Bu ¸suna e¸sde˘ gerdir: y = y-1;,x = y; C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri ++ ve - - i¸sle¸cleri yan etkisi olan i¸sle¸clerdir, c¸u ¨nk¨ u tek bir atama deyimi ile birden fazla de˘ gi¸skenin de˘ geri de˘gi¸stirilebilir. Programcıların bu i¸sle¸cleri karma¸sık ifadeler i¸cinde kullanmaları uygun de˘ gildir, c¸u ¨nk¨ u b¨ oyle bir kullanım nispeten daha zor anla¸sılabilir ve hataların daha zor d¨ uzeltildi˘gi programların ortaya ¸cıkmasına neden olur. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ˙I¸sle¸cler, ˙Ifadeler ve Atama Deyimleri Basit atama i¸sleci (=) dı¸sında, atamayı aritmetik i¸slemlerle birle¸stiren atama i¸sle¸cleri de vardır. Bunlar +=, -=, *=, /= ve %=’dır. ˙ Ifade x += y x -= y x *= y x /= y x %= y A¸cıklaması x’e y eklenir, bu da x = x + (y); anlamına gelir. x’ten y c¸ıkarılır, bu da x = x -(y); anlamına gelir. x, y ile ¸carpılır, bu da x = x * (y); anlamına gelir. x, y’ye b¨ ol¨ un¨ ur, bu da x = x / (y); anlamına gelir. x’e x’in y’e b¨ ol¨ um¨ unden arta kalan atanır, bu da x = x %(y); anlamına gelir. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ¨ Oncelik ve Birle¸sme Kuralları Bir ifade i¸cinde, i¸sle¸clerin i¸slenenleri ya C dili tarafından belirlenmi¸s bulunan i¸sle¸clerin ¨oncelik ve birle¸sme ¨ ozelliklerine, yada 2 i¸ slenen ifadelerini parantez i¸cine alarak 1 belirlenir. Parantezler, bir i¸slecin i¸slenenlerini, o i¸slecin ¨ onceli˘gine ba˘glı olmadan belirtmek veya i¸sle¸clerin i¸slenenlerini daha a¸cıklayıcı olacak ¸sekilde yazmak i¸cin kullanılırlar. ˙ Ikinci neden kolayca anla¸sılır ifadeler yazmak i¸cin ¨onemlidir, ¸cu ¨nk¨ u C dilinde ¨oncelik ve birle¸sme ¨ ozellikleri kolayca anımsanamayacak kadar ¸cok i¸sle¸c bulunmaktadır. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ¨ Oncelik ve Birle¸sme Kuralları ¨ gin Orne˘ a=b+c*d ifadesinde i¸sle¸cler ve i¸slenenler ¸s¨ oyledir: ˙sle¸c I¸ * + = ˙slenenler I¸ c ve d b ve (c * d)’nin de˘ geri a ve (b + (c * d))’nin de˘geri E˘ger ifade a = b + (c * d) ¸seklinde yazılırsa, i¸slenenler aynıdır, ancak parantezler i¸sle¸clerin i¸slenenlerini daha a¸cık hale getirirler. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ¨ Oncelik ve Birle¸sme Kuralları Fakat, ifade a = (b + c) * d ¸seklinde yazılırsa, i¸sle¸cler ve i¸slenenler ¸s¨oyle olur: ˙sle¸c I¸ ˙slenenler I¸ + b ve c * (b + c)’nin de˘ geri ve d = a ve ((b + c) * d)’nin de˘geri Bu ¨orneklerden de g¨ or¨ ulebilece˘ gi gibi, bir i¸slecin ¨oncelik d¨ uzeyi i¸sle¸clere atanacak olan i¸slenenlerin sırasını belirlemeye yarar. Daha y¨ uksek ¨onceli˘ gi olan bir i¸slecin i¸slenenleri daha d¨ u¸su ¨k olan bir i¸sle¸cten ¨once atanacaktır. E˘ger i¸sle¸clerin ¨oncelik d¨ uzeyleri aynıysa, o zaman birle¸sme kuralı i¸slenenlerin soldan sa˘ ga mı yoksa sa˘ gdan sola mı atanaca˘gını belirtir C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ¨ Oncelik ve Birle¸sme Kuralları A¸sa˘gıdaki c¸izelgede, ¸simdiye kadar anlatılmı¸s bulunan i¸sle¸clerin ¨oncelik d¨ uzeyleri ve birle¸sme ¨ ozellikleri verilmi¸stir. ˙sle¸c I¸ [] +,-,++,- *,/,% +,=, +=, vs A¸cıklama ˙Indisleme ˙I¸saret ve artı¸s C ¸ arpma, b¨ olme, mod Toplama, c¸ıkarma Atama ¨ Oncelik en y¨ uksek . . . en d¨ u¸su ¨k Birle¸sme → ← → → ← Burada, ”←” sa˘gdan sola ve ”→” soldan sa˘ ga birle¸smeyi g¨osterir. ¨ gin a/b/c ile (a/b)/c aynı anlama gelir ve a=b=c ile Orne˘ a=(b=c) aynı anlama gelir. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri ¨ Oncelik ve Birle¸sme Kuralları Bir ba¸ska ¨ornek olarak c=d+c*e-f/g+h%j ifadesi c = (((d + (c * e)) - (f / g)) + (h % j)) ¸seklinde, i¸sle¸clerin i¸slenenlerini ve ifadenin anlamını de˘gi¸stirmeden, parantezlenebilir. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri De˘gi¸smez ˙Ifadeler Bazı i¸sle¸cler-¨orne˘gin, atama ve ++ ile - - i¸sle¸cleri dı¸sında, ¸simdiye kadar ¨o˘grenmi¸s oldu˘ gumuz i¸sle¸cler-de˘gi¸smezlere (veya de˘gi¸smez ifadelere) uygulandıklarında de˘ gi¸smez ifadeler olu¸stururlar. De˘gi¸smez ifadelerin avantajı derleme sırasında hesaplanabilmeleridir. Derleyici de˘gi¸smez ifadenin de˘ gerini hesaplayıp yerine de˘gi¸smez de˘geri koyar. C Programlama PROGRAMLAMA ˙ILE ˙ILG˙IL˙I TEMEL KAVRAMLAR VE GENEL B˙IR BAKIS ¸ ˙sle¸cler, Ifadeler ˙ I¸ ve Atama Deyimleri De˘gi¸smez ˙Ifadeler De˘gi¸smez ifadeler bir de˘ gi¸smezin beklendi˘ gi yerlerde kullanılabilirler. ¨ gin, dizi boyları de˘ Orne˘ gi¸smez olmalıdır, bu durumda int a[MAXL*5+4]; tanımı, e˘ ger MAXL ¨ oni¸slemci tarafından ( #define ile) tanımlanmı¸s bir de˘ gi¸smez ise kabul edilebilecek, fakat e˘ger MAXL bir de˘ gi¸sken ise reddedilecektir. Programın, anla¸sılabilirli˘ gini geli¸stirebilece˘ gi i¸cin de˘gi¸smez ifadelerin kullanımından ka¸cınmamak gerekir.
© Copyright 2024 Paperzz