Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade Blokları............... 14 2.4 C Dilinde Fonksiyonlar......................... 14 2.5 scanf Fonksiyonu............................. 15 2.6 printf Fonksiyonu............................ 16 2.7 Atama Operatörü............................ 17 2.8 Veri Tipleri................................ 17 2.1 Sabitler ve Değişkenler Bir programlama dilinde değişkenler, sabitler ve operatörler bilinmeden o dilde etkin bir program yazmak mümkün değildir. Değişkenler (variables), bellekte bilginin saklandığı gözelere verilen özel isimlerdir. Her değişken bir tip, ad ve değere sahiptir. Değişkenlerin değerleri ile oynamak mümkündür, sabit bir değer tutmazlar. Program çalıştırığı sürece değerlerini değiştirmek mümkündür. Değişkenlerin isimlendirilmelerinde ilki harf olmak üzere diğerleri harf, sayı ve alt çizgi olabilen birçok karakterden oluşabilir. Kullanılacak isimlerin C ye ait standart 13
kütüphanedeki fonksiyon isimleri kullanıcının tanımladığı fonksiyon isimleri ile aynı olmamalıdır. Sabitler, ise değişkenlerin aksine durağan bilgileri tutmak için kullanılır. Program çalıştırıldığı sürece değerleri kesinlikle değişmez. Operatörler, bir eyleme işaret eden karakterlerdir. Aritmetik operatörler +, -, *, / ve % 1 karakterlerinden oluşmaktadır. Çarpma, bölme ve bölümden kalanı veren operatörler önce işleme sokulur. Eğer toplama ve çarpma işlemlerinin önce yapılmasını istiyorsanız parantezler kullanarak bunlara öncelik verebilirsiniz. 2.2 Açıklamalar (Expresions) Açıklama sabit, değişken ve operatörlerden oluşan bir bütündür. Bir örnek ile açıklanacak olursak, (2 + 3) 10 ifadesi bir açıklamadır. Bu açıklamada ilk önce 2 ve 3 sayısı toplanır, sonuç 10 ile çarpılır. Bu açıklamının sonucunun 50 dir. 2.3 İfadeler (Statements) ve İfade Blokları C de ; karakteri ile sonlanan herbir satır ifade, deyim olarak adlandırılır. C de { ve } karakterleri arasında kalan yapı deyim blokları olarak adlandırılır. C derleyici bu deyim bloğunu tek bir deyim olarak algılar. for(...) { s3 = s1 + s2; mul = s3 * c; remainder = sum % c; } 2.4 C Dilinde Fonksiyonlar C dili fonksiyonlardan oluşmuş bir dildir. C dilinin standart kütüphanesinde tanımlı olan fonksiyonların dışında (printf, scanf, main) kullanıcının da kendisine özel fonksiyon oluşturma, kullanma ve hatta oluşturduğu fonksiyonların kütüphanelerini yaratma olanağı vardır. Bu nedenle C dili son derece esnek ve yapısal bir dildir. 1 Bölümden kalanı veren operatör 14 gulsen@be.itu.edu.tr
Bir foksiyonun mutlaka tipi, adı ve argümanları olmalıdır. Fonksiyonlara isim verilirmesi değişkenlere isim verilmesi ile aynıdır. Yukarıda sözünü ettiğimiz noktalara dikkat etmek gerekmektedir. Fonksiyonları çalıştırabilmek için bir takım ön bilgilere ihtiyaç vardır. Bu ön bilgiler C dilinde fonksiyonun argümanları olarak isimlendirilirler. Fonksiyonların başlangıç ve bitişleri de önemlidir. C dilinde başlangıcı { karakteri, bitişi ise } karakteri belirler. Fonksiyonların içeriğine ise yani asıl yaptıkları bölüme ise fonksiyonların gövdesi adı verilir ve bu bölüm { ve } karakterleri arasında kalan bölümdür. Bu bölüm değişken bildirimleri ve bir birden fazla ifadelerden (statements) oluşmaktadır. Tüm bu söylenenlere göre aşağıda kullanıcı tarafından oluşturulmuş ve iki sayının toplamını hesaplayan C fonksiyonunu tekrar inceleyiniz. /* This function adds two integers and returns the result */ int integer_add( int x, int y ) { int result; result = x + y; return result; Fonksiyonlar ilerleyen bölümlerde daha ayrıntılı olarak incelenecektir. 2.5 scanf Fonksiyonu Çoğu derleyicide klavyeye atanmış olan standart girişten (stdin) veri okumak için kullanılır. Farklı tipte veriler scanf ile okunup adresleri arguman olarak gönderilen değişkenlere atanabilir. Fonksiyonun ilk parametresi bir format olup klavyeden girilen karakteri nasıl yorumlayacağını belirler. Daha sonra girilen parametre ise klavyeden alınan bu değeri tutatcak değişkenin adresi olacaktır. Sözgelimi, scanf("%d",&a); denildiğinde, kullanıcıdan %d formatına uygun bir parametre girmesi istenir. Girilen bu parametre a isimli değişkenin adresine atanır. Yani artık a değişkenin tuttuğu değer, kullanıcının girdiği sayıdır. Sözgelimi, kullanıcı 5 girirse, a sayısı 5 olacaktır. Burada dikkat edilmesi gereken çok önemli noktalar vardır. Bunlar; simgeleri arasına format yazılır., den hemen sonra değişkenin adresi verilir. & simgesi kesinlikle kullanılacaktır. Kaç adet format varsa o sayıda değişken adresi kullanılacaktır. 15 gulsen@be.itu.edu.tr
Birden fazla değişken tek bir scanf fonksiyonu ile alınacaksa, Sözgelimi 2 değişken scanf("%d%d",&a,&b); şeklinde olacaktır. Burada 2 adet format var, dolayısı ile 2 adet de değişken adresi kullanılacaktır. Formatlar değişken tipleri bölümünde ayrıntılı olarak anlatılacaktır. 2.6 printf Fonksiyonu Daha önceki bölümlerde printf fonksiyonun simgeleri arasında gördüğü tüm ifadeyi ekrana yazdığından söz etmiştik. printf fonksiyonu değişkenlerin değerlerini ekrana yazdırmak için de kullanılır. Böyle bir durumda kullanımı biraz farklıdır. int a = 5 ; printf ("a sayısının degeri %d dir\n",a); şeklinde bir program düşünelim. Burada a değişkeni integer tipinde bir değişken ve değeri de 5 dir. printf fonksiyonu şöyle çalışır. Yine aynı şekilde simgeleri arasında ne görürse yazacak, ANCAK %d gördüğü yere,, karakterlerinden sonra gelen a degiskenin degerini yazacak. Yani, a sayısının degeri 5 dir şeklinde ekrana yazacak. Başka bir deyişle format ile değişken eşleştiriliyor. Önemli noktalar; arasında kaç adet format varsa, çift tırnak bitiminin hemen ardından gelen, den sonra da o sayıda değişken adı olacaktır. Bu değişkenler birden fazla ise araları, karakteri ile ayrılmalıdır. printf fonksiyonunda değişkenlerin adresleri yazılmaz, kendileri yazılır. Dolayısı ile & simgesi kullanılmaz. printf fonksiyonunda format tipini belirlemek için değişken tipine bakmak gerekir. Kullanılan değişken tipi ne ise format tipi de o olacaktır. printf fonksiyonunda printf fonksiyonunda arasında ne varsa BOŞLUKLAR da dahil HERŞEY ne varsa aynen GÖRÜLDÜĞÜ gibi ekrana yazılır. 16 gulsen@be.itu.edu.tr
2.7 Atama Operatörü a = k + m ; ifadesi bir atama işlemidir. Atama işlemi= operatörü ile yapılmaktadır. k ve m değerleri toplanır ve elde edilen sonuç a değişkenin içeriğine atanır. Bu işlem de atama işlemi olarak isimlendirilir. 2.8 Veri Tipleri C dilinde 4 ana veri tipi vardır. Bunlar; integer, char, float ve double değişken tipleridir. INTEGER Tam sayılara integer sayılar adı verilir. Başka bir deyişle INTEGER sayılar hiçbir kesirli yan içermeyen sayılardır. tamsayı (integer) bir bölme işlemi yapıldığında sonuç kesirli dahi olsa, elde edilen sonuç kesilir. integer kısmı alınır. integer bir değişkenin bildirimi aşağıdaki gibidir. int a; a=5; int a = 5; Tam sayı bölme işleminin sonucunun kesirli sayılardan oluşmasını istiyorsak int a, b; float c; c = a/b; Burada c değişkeni float olarak tanımlansa bile sonuç integer olacaktır. Bu nedenle bu işlem yerine int a, b; a= 5, b=2; float c; c = (float) a/b; 17 gulsen@be.itu.edu.tr
işlemi yapılmalıdır. integer veri tipinin format belirteci (format specifier) %d ile gösterilmektedir. Bu değişken tipi bellekte 2 4 byte yer işgal eder 2. FLOAT Ondalıklı sayıların gösteriliminde float değişken tipi kullanılır. C dili içerisinde kullanımı aşağıdaki şekillerde olabilir. float a; a=5.27; float a = 4.34; Float değişken tipinin formatı ise %f ile gösterilir. Kullanımı, float a = 4.34; printf("a = %f\n",a); Float değişken tipi bellekte 4 byte yer işgal eder. DOUBLE Yine ondalıklı sayıların gösteriliminde kullanılır. Long Float olarak da bilinir. Float değişkenden farkı. dan sonra daha fazla hane tutabilmesidir. Bu durumda bellekte de daha fazla yer işgal ederler. Double tipinden bir değişken bellekte 8 byte yer işgal eder. Kullanımı, double a; a=5.27125325; double = 212E+7; 2 ne kadar yer işgal ettiği sizeof fonksiyonu ile öğrenilebilir 18 gulsen@be.itu.edu.tr
Double değişken tipinin formatı ise %lf ile gösterilir. Kullanımı, float a = 4.34; printf("a = %lf\n",a); CHARACTER İki adet tek tırnak arasında verilen bilgi karaktertir. Klavyedeki her bir simge karakterdir ve bu karakterlerin ASCII tablosunda sayısal karşılıkları vardır. Kullanımı, char a; a = a ; char a = 3 ; Karakter değişken tipinin formatı ise %c ile gösterilir. Kullanımı, char a = 4 ; printf("a = %c\n",a); Dikkat edilmesi gereken en önemli nokta Karakter değişkenler simgeleri arasında verilirler. Birden fazla karakterden söz edilecekse C dilinde katar (string) yapıları kullanılır. Karakter tanımı yapılmaz. ESC CHARACTER C dilinde \ karakteri ESC karakter olarak kullanılır. Özel bir karakter anlamında kullanılır. Bu karakterlerden bazıları, \b : backspace karakteridir. İmleçi bir karakter sola taşır. \n : newline karakteridir. Satır atlatır. \f : form-feed karakteridir. Yeni sayfanın en başına atlatır. \t : tab karakteridir. Tab tuşu kadar boşluk yaratır. 19 gulsen@be.itu.edu.tr