BİL 112 Programlamaya Giriş: C Temel Kavramlar ve C’ye Giriş Öğrt. Gör. Dr. Ahmet Cengizhan Dirican Enformatik
Atom Kavramı (1/2) Bir programlama dili için anlam taşıyan en küçük birime atom denir. Atomlar programlama dillerinin daha fazla anlamlı parçaya bölünemeyen en yalın elemanlarıdır. Derleyiciler derleme işleminin ilk aşamasında çözümleme amacıyla kaynak kodu atomlarına ayırır. Örn:
Atom Kavramı (2/2) Atomları kendi aralarında gruplara ayırabiliriz. Anahtar Sözcükler (Keywords, Reserved words): Bunlar dil için belirli bir anlam taşıyan ve başka yerde (değişken olarak) kullanılması yasaklanmış sözcüklerdir. Örn: include, int, for Değişkenler (Identifiers, Variables): Bellekte bir adres belirten ve ismi belirlenen kurallara göre verilen atomlardır. Örn: main, n, k, printf Operatörler (Operators): Önceden tanımlanmış bir takım işleri yapan atomlardır. Örn: +, -, *, /, <, >, ^ Sabitler (Constants): Doğrudan işleme sokulan, değişken bilgi içermeyen atomlardır. Örn: c= a + 10 ifadesinde 10 sabittir. Karakter Katarları (Strings): İki tırnak arasında karakterlerden oluşan atomlardır. “LÜTFEN BİR SAYI GİRİNİZ”, “%d”, “%d\n” Ayraçlar ve Noktalama İşaretleri (Seperators, Punctuators): Ayraç ve sonlandırıcı olarak kullanılan atomlardır. Örn: {, ; , }
Nesne Bellekte yer kaplayan ve içeriklerine erişilebilen alanlara nesne denir. Nesnelere isimleri kullanılarak erişilir. Aşağıda verilen prgramda a, b, c, d ve e birer nesnedir. a = b + c; d = 100; e[1] = 500; Nesne İsmi Değeri Türü Faaliyet Alanı Ömrü
İfade (Expression) Değişken, operatör ve sabitlerin kombinasyonlarına ifade denir. Örn: a + b / 2 g* b[i] – 25 k = l + m * 9
Sol Taraf Değeri (Left Value) Nesne gösteren ifadeler denir. Bir ifadenin sol taraf değeri olabilmesi için bellekte yer göstermesi, gerekir. Aşağıdaki örnekler her zaman sol taraf değeridir. Fakat bunlardan oluşturulan ifadeler sol taraf değeri olmazlar. Değişkenler a, b, adet, ad, soyad, no, i, j, … Dizi elemanları g[i], t[j], … Göstericiler *p, **k,…
Sağ Taraf Değeri (Right Value) Nesne göstermeyen ifadeler sağ taraf değerdir. Örn: a+ b g[i] + 5 Sabitler her zaman sağ taraf değerdirler. 10, 100, 5.05 Örn: Bu örnekte “10” ve “a + 10” sağ taraf değeriyken “a” ve “b” tek başlarına sol taraf değerleridir. a = 10; b = a + 10;
C’ye Merhaba “Stdio.h” isimli dosyayı derlemeye dahil et. “main” fonksiyonu. Bu programın çalışmaya başladığı ana fonksiyondur. Diğer fonksiyonlardan başka bir farkı yoktur. Ekrana yazdırma fonksiyonu. Blok (…) fonksiyon operatörüdür. “main” tanımlanmış “printf” ise çağırılmış bir fonksiyondur. Bunu “main” isimden sonra gelen “{}” blok işaretlerinden ve fonksiyon operatöründen sonrda gelen “;” işaretlerinden anlıyoruz.
Fonksiyon Tanımlanması ve Çağırılması Tanımlanmış fonksiyonlar bizim tarafımızdan yazılmış fonksiyonlardır. Fonksiyonu çağırılması onun yapısına göre parametreli veya parametresiz olarak çalıştırılması manasına gelir. Fonksiyonlar her zaman tanımlanmış fonksiyonlar içerisinde çağırılabilir.
C’de Genel Yazım Kuralları En iyi C programı birkaç sene sonra bakıldığında hemen anlaşılabilendir. C büyük küçük harf duyarlılığına sahiptir (case sensitive). sum, Sum, sUm, suM, SUm, sUM, SuM ve SUM hesp farklı olarak ele alınır. Üç çeşit boşluk karakteri vardır. Ara tuşu (space), desimal 32 Tab tuşu (tab), desimal 9 Enter (carriage return + line feed): carriage return (CR), desimal 13, line feed LF, desimal 10 C’de programlar atomlar arası istenildiği kadar boşluk bırakılarak veya bitişik (#’li ifadeler hariç) yazılabilir.
Kod Yazarken Dikkat Edilecek Husular İsim verme: Özellikle değişkenlere ve fonksiyonlara program uzadığında ayırt edilmelerini sağlayacak veya koda daha sonra bakıldığında kolay hatırlanacak mantıklı isimler verilmelidir. Açıklama yazma: Programın gereken yerlerine açıklayıcı notlar düşülmelidir. İndent yazma: Her yeni { ile birlikte kod bir tab içe yazılmalıdır. Bölümlere Ayırma: kodunuzu yazarken mantıksal veya mümkünse fiziksel bölümlere ayırmak çalışmayı kolaylaştırır. Fonksiyon Kullanma: Fonksiyonlar kodu küçültür, güncellenmesini kolaylaştırır, hata kontrolü daha kolay yapılır.. Tutarlı olmak: İsimlendirmelerde, dilde, büyük küçük harf kullanmada tutarlı olunmalıdır. Belirli bir tarzda hareket edilmelidir.
Veri ve Nesne Türleri Hafızadaki herhangi bilgi veridir. Temelde iki çeşit veri vardır: Sabitler ve Nesneler Bir nesnenin türü deyince, o nesne içerisinde tutulan bilginin derleyici tarafından yorumlanış biçimi anlaşılmaktadır. Türü aynı zamanda nesnenin bellekte kapladığı alanla ilgili bize bilgi verir. Gerçek Sayı Türler
Bildirim ve Tanımlama Nesneler kullanılmadan önce derleyiciye tanıtılır. Kullanılmadan önce nesnelerin özellikleri hakkında derleyiciye bilgi verilmesi işlemine bildirim (declaration) denir. Nesnenin bellekte oluşturulmasını sağlayan bildirimlere tanımlama (definition) denir. Tanımlama nesneyi oluşturan bildirim işlemidir. Nesne İsmi Değeri Türü Faaliyet Alanı Ömrü
Bildirim İşleminin Genel biçimi Genel biçim: <tür> nesne1 [, nesne2, nesne3,…] Örnek bildirimler: int a,b,c; float kilo; char ch; long int x, y, y; double d1, d2;
Noktalı Virgülün İşlevi C’de noktalı virgül “;” sonlandırıcı olarak görev yapar. Tüm ifadeler birbirinden “;” ile ayrılır. Örn: a = f + 1; l = a- 5; Noktalı virgül olmazsa ifadeler birlikte anlamlandırılmaya çalışılır. Örn: a = f + 1 l = a- 5; ???? Diğer diller de benzer kullanımlar vardır. BASIC’te Enter (CR/LF) sonalndırı olarak kullanılır bu sebeple her satıra bir ifade yazılabilir.
Değişken İsimlendirme Kuralları Büyük küçük harf duyarlılığına dikkat edilmelidir. toplam ve Toplam iki farklı değişken olarak ele alınır. Değişken isimleri nümerik bir karakterle başlayamaz. 1toplam yanlıştır. toplam1 olabilir. Değişken isimleri boşluk içermez. Bunun yerine genelde “_” kullanılır. ana_Toplam, tutar_1 Değişken uzunlukları sistemden sisteme değişir. Ancak çoğunda ilk 32 karakter dikkate alınmaktadır.
Bildirimlerin Yanlış Yerleri (1/2) C’de bildirim üç yerde yapılabilir. Blokların başında Bütün blokların dışında Fonksiyon parametresi olarak, fonksiyon parametrelerinin içinde yada fonksiyon parantezlerinden sonra.
Bildirimlerin Yanlış Yerleri (2/2) Blokların Başında: C’de bildirimler blok içerisinde yapılacaksa, blokların başında yapılır. Diğer bir deyişle bir bloğun ilk işlemi olurlar. Doğru Örnek: Yanlış Örnek:
Sabitler (1/2) Veriler ya nesnelerin içerisinde yada doğrudan sabit biçiminde bulunurlar. Sabitler nesne biçiminde olmayan verilerdir. c = a + 100’de c ve a nesne iken “100” sabittir. Sabitlerinde türleri vardır. Peki bu tür nasıl belirlenir? C’de nesne türü kadarda sabit türü vardır. int sınırlarını aşan ve long sınırları içinde kalan her tam sayı derleyici tarafından long sabiti olarak ele alınır. int sabitler: -100, 5500, -12000 long sabitler: L, l -4000L, 10L, 2000000L float sabitler: F, f 1.31f, -35.9F, 2.f Long double sabitler:L, l 2.789L, -3.96L, 20.5L Sonuna “f” getirilmemiş noktalı sayılar double sabit olarak ele alınır.
Sabitler (2/2) char Sabiti: İki çeşittir. İstenilen karakterin tek tırnak (single quote) içerisine yazılmasıyla elde edilen sabitler. Bu işlem verilen karakterin ASCII kodunu gösteren bir sayı verir. ‘a’, ‘q’, ‘<‘, ‘$’ Char ch; ch =‘a’; Bu durumda ch’nin değeri 97’dir Önceden tanımlanmış ters bölü karakter sabitleri: Ekrana basılmayan (non printable) karakterlerin yerlerini tutarlar.
“printf” Fonksiyonu (1/2) Printf fonksiyonu verilen bir verinin ekrana yazılmasını sağlar. İlk parametresi her zaman string olmak zorundadır. Bu string’i oluşturan karakterler % işareti dışında ekrana aynen yazılırlar. % işareti diğer parametre değerlerini ekrana yazdırmak için kullanılır. String içindeki % işaretleri verilen diğer parametrelerle birebir eşlenir. Parametre değerlenin ne biçimde ekrana yazılacağı ise % karakterinden sonra gelen önceden tanımlanmış format karakterlerine bağlıdır.
“printf” Fonksiyonu (2/2) Önceden Tanımlanmış Format Karakterleri Örnek Program: Programın çıktısı: printf (“a = %d ch =%c\n”, a, ch );