B02.8 Bölüm Değerlendirmeleri ve Özet 57 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Şimdiye kadar C programlama dilinin, verileri ekrana yazdırma, kullanıcıdan verileri alma, işlemler yapma ve kararlar verme gibi önemli bir çok özelliğini inceledik-deneyimledik. İlerleyen derslerde yapısal programlamayı öğrendikçe bu tekniklerin üzerine devam edeceğiz. İçeriden başlatma tekniklerini daha yakından tanıyacak ve ifadelerin hangi sırada çalıştırılacaklarına ( buna akış kontrolü denir) nasıl karar vereceğimizi çalışacağız.
B02.8 Bölüm Değerlendirmeleri ve Özet 58 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Yorumlar /* ile başlar ve */ ile biter. Programcılar yorumları, okunulabilirliği arttırmak amacıyla ve programlarını daha açık bir hale getirmek için kullanırlar. Yorumlar program çalışırken bilgisayara bir iş yaptırmazlar. #include <stdio.h> önişlemci komutu, derleyiciye standart giriş/çıkış öncü dosyasını programa eklemesini söyler. Bu dosya, derleyicinin scanf ve printf gibi giriş ve çıkış fonksiyonlarının doğru bir biçimde çağrıldıklarını onaylamasını sağlayan bilgiler içerir. C programları biri main olan fonksiyonlar içerir. Her C programı main fonksiyonunu çalıştırarak başlar. printf fonksiyonu tırnak içindeki dizeleri ve deyimlerin değerlerini yazdırmak için kullanılabilir. Tamsayı değerlerini yazdırırken, printf fonksiyonunun ilk argümanı (biçim kontrol dizesi) %d dönüşüm belirtecini ve yazdırılacak diğer karakterleri içerir, ikinci argüman ise değeri yazdırılacak deyimdir. Eğer birden fazla tamsayı yazdırılacaksa, biçim kontrol dizesi her tamsayı için bir %d içerir ve biçim kontrol dizesini takip eden, virgüllerle ayrılmış argümanlar, değerleri yazdırılacak deyimleri içerir.
B02.8 Bölüm Değerlendirmeleri ve Özet 59 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) scanf fonksiyonu, kullanıcının klavyeden girdiği değerleri alır. Bu fonksiyonun ilk argümanı, kullanıcı tarafından girilecek verinin tipinin ne olacağını bilgisayara söyleyen biçim kontrol idzesidr. %d dönüşüm belirteci, verinin bir tamsayı olacağını belirtir. Geriye kalan tüm argümanlar için biçim kontrol dizesi içinde ilgili bir dönüşüm belirteci vardır. Bütün değişken isimlerinden önce adres operatörü adı verilen & kullanılır. Adres operatörü, değişken ismi ile birleştiğinde, bilgisayara verinin saklanacağı hafıza konumunu söyler. Sonra bilgisayar veriyi bu adreste saklar. C de bütün değişkenler, programda kullanılmadan önce bildirilmelidirler. C de bir değişken ismi, geçerli herhangi bir tanıtıcı olabilir. Bir tanıtıcı harf, rakam ve alt çizgi (_) içerebilen karakter serileridir. Tanıtıcılar, rakamla başlayamaz. Tanıtıcılar her uzunlukta olabilir ancak ANSI standardına göre yalnızca ilk 31 karakter önemlidir. C büyük/küçük harf duyarlıdır. Hesaplamaların büyük bir kısmı atama ifadeleriyle gerçekleştirilirler.
B02.8 Bölüm Değerlendirmeleri ve Özet 60 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Bilgisayarın hafızasında depolanan her değişkenin bir ismi, bir değeri ve tipi vardır. Yeni bir değer hafıza konumuna yerleştirildiğinde o konumda daha önceden bulunan değerin üzerine yazılır. Daha önceki bu bilgi kaybolduğundan, hafıza konumuna bilgi yazma süreci destructive read-in olarak adlandırılır. Hafızadan bir değer okuma işlemine nondestructive read-out denir. C de aritmetik deyimler, matematikte kullanılan bazı özel yazımlardan farklı bir biçimde yazılır. C, aritmetik deyimleri, operatör önceliği ve operatörlerin işleyişi gibi özel kurallarla hesaplar.
B02.8 Bölüm Değerlendirmeleri ve Özet 61 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) if ifadesi, programcının kesin bir koşul ile karşılaştığında karar vermesini sağlar. if ifadesinin biçimi if ( koşul ) ifade şeklindedir. Eğer koşul doğru ise, if ifadesinin gövdesi içerisindeki ifade çalışır. Eğer durum yanlış ise gövdedeki ifade atlanır.
B02 Ek-A: Genel Programlama Hataları 62 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Yorum satırının sonuna */ işaretini koymayı unutmak Yorum satırına */ ile başlamak ve / veya yorum satırını /* ile bitirmek. printf yerine print yazmak hatadır. Küçük harf kullanılması gereken bir yerde büyük harf kullanılması hatadır.örneğin, main yerine Main yazmak hatadır. Değişken bildirimlerini çalıştırılabilir ifadelerden sonra yapmak hatadır. Atama ifadelerinde hesaplama, = operatörünün sağ tarafında bulunmalıdır. Hesaplama operatörün solunda yapılırsa yazım hatası ortaya çıkar. printf ya da scanf içindeki biçim kontrol dizesinde tırnak karakterlerinden birini ya da ikisini birden unutmak. printf ya da scanf içindeki biçim kontrol dizesinde % dönüşüm belirleme karakterini unutmak.
B02 Ek-A: Genel Programlama Hataları 63 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) printf ya da scanf içindeki \n çıkış sırasını biçim kontrol dizesi dışına yerleştirmek. Dönüşüm belirteçleri içeren bir printf ifadesi içine değerleri yazdırılacak ifadeleri dahil etmeyi unutmak. Bir ifade yazdırılacağında, printf biçim kontrol dizesi içinde bir dönüşüm belirteci yazmamak. Biçim kontrol dizesini yazdırılacak ifadelerinden ayırmak için kullanılması gereken virgül (, ) karakterini biçim kontrol dizesi içine yazmak. scanf ifadesi içinde bir değişkenin başına & operatörü konması gerekirken bu karakteri unutmak. printf ifadesi içinde bir değişkenin başına & yazmak.
B02 Ek-A: Genel Programlama Hataları 64 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Bir sayıyı 0'a bölmek bilgisayar sistemlerinde tanımlı değildir ve genellikle ölümcül bir hatadır. Ölümcül hatalar, programın çalışmasının aniden durmasına ve başarılı bir sonuç vermemesine sebep olur. Ölümcül olmayan hatalar, programın yanlış sonuçlar vermesine sebep olur. ==,!=, >= ve <= operatörlerinin arasında boşluk kullanılması yazım hatasına sebep olur.!=, >=, <= operatörlerinin ters çevrilerek =!, =>, =< şeklinde kullanılması dizim hatasına sebep olur. = = operatörünün = ile karıştırılması. if yapısının koşulunu belirten parantezlerin sağına noktalı virgül ( ; ) koymak scanf ifadesi içindeki dönüşüm belirteçleri arasına (asla gerekmemesine rağmen) virgül yerleştirmek.
B02 Ek-A: Genel Programlama Hataları 65 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) <stdio.h> öncü dosyasının eklenmesi tercihe bağlıdır fakat standart giriş /çıkış fonksiyonlarının kullanıldığı programlara eklenmelidir. Bu sayede, derleyici, hataları derleme anında bulabilecektir.aksi takdirde, hatalar programın çalıştırıldığı anda ortaya çıkar. Bu tür hataların düzeltilmesi oldukça güç olur. Her fonksiyondan sonra fonksiyonu anlatan bir yorum satırı yazılmalıdır. Yazdırma işlemi yapan bir fonksiyon tarafından yazdırılan son karakter ( \n ) olmalıdır. Bu sayede, fonksiyonun ekran imlecini yeni satırın başlangıcına götürmesi sağlanır. Bu tarz bize, yazılım geliştirme ortamlarında temel amaç olan yazılımın yeniden kullanılabilirliğini artırma fırsatı verir.
B02 Ek-B: İyi Program Yazma Teknikleri 66 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) <stdio.h> öncü dosyasının eklenmesi tercihe bağlıdır fakat standart giriş /çıkış fonksiyonlarının kullanıldığı programlara eklenmelidir. Bu sayede, derleyici, hataları derleme anında bulabilecektir.aksi takdirde, hatalar programın çalıştırıldığı anda ortaya çıkar. Bu tür hataların düzeltilmesi oldukça güç olur. Her fonksiyondan sonra fonksiyonu anlatan bir yorum satırı yazılmalıdır. Yazdırma işlemi yapan bir fonksiyon tarafından yazdırılan son karakter ( \n ) olmalıdır. Bu sayede, fonksiyonun ekran imlecini yeni satırın başlangıcına götürmesi sağlanır. Bu tarz bize, yazılım geliştirme ortamlarında temel amaç olan yazılımın yeniden kullanılabilirliğini artırma fırsatı verir.
B02 Ek-B: İyi Program Yazma Teknikleri 67 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Fonksiyon bloklarının içini yazarken, küme parantezlerinden içeride başlamak (3 boşluk bırakarak) fonksiyonun gövdesini daha belirgin hale getirir.bu sayede programımız daha okunur hale gelecektir. Kendinize göre bir girinti miktarı belirleyin ve gerekli tüm yerlerde bu girinti miktarını kullanın. Girintiler yaratmak için tab tuşu kullanılabilir ancak kimi zaman tab başlangıçları sorun yaratabilir. Virgülden hemen sonra bir boşluk bırakmak programın okunurluğunu arttırır. Anlamlı değişken isimleri kullanmak, programda daha az yorum satırı yazmamız demektir. Basit bir değişken olarak kullanılacak tanıtıcılar küçük harfle başlamalıdır. İleride büyük harfle başlayacak ya da tüm harfleri büyük harf olan, özel öneme sahip değişkenlerden bahsedeceğiz.
B02 Ek-B: İyi Program Yazma Teknikleri 68 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Bir çok kelimeden oluşan değişken isimleri programı daha okunabilir yapar.ancak kelimeleri birleşik yazmaktan kaçının.bunun yerine kelimelerin arasında alt çizgi kullanın.eğer kelimeleri birleşik yazmak istiyorsanız, ikinci kelimeden sonrasını büyük harfle başlatın. toplamkomisyon yerine toplam_komisyon ya da toplamkomisyon yazın. Bildirimlerle, çalıştırılabilir ifadeler arsında boş bir satır bırakmak bildirimlerin sona erdiğini vurgulamaya yarar. Operatörün her iki tarafına da bir boşluk bırakılmalıdır. Bu sayede program daha okunabilir olur. if yapısının gövdesi içindeki ifadeleri içeriden başlatmak. Programlarda her kontrol yapısından önce ve sonra boş bir satır kullanmak programın okunulabilirliğini arttırır.
B02 Ek-B: İyi Program Yazma Teknikleri 69 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Bir satırda birden fazla ifade bulunmamalıdır. Uzun bir ifade birden çok satır sürebilir.eğer bir ifade birden fazla satır sürecekse,ifadeyi mantıklı noktalardan ayırmak(örneğin virgüllerle ayrılmış bir listede virgülden sonra) gerekir. Eğer bir ifade birden çok satır sürüyorsa, ifadenin sürdüğü tüm satırlar içeriden başlatılmalıdır. Birden fazla operatör içeren deyimler yazdığınızda operatör önceliklerini gösteren tabloya bakınız. Deyimin içindeki operatörlerin uygun biçimde kullanıldığından emin olunuz. Eğer karmaşık bir deyim içinde hesaplama sırasından emin olamazsanız,sırayı istediğiniz şekle getirmek için (matematikte olduğu gibi) parantezleri kullanın. C nin bazı operatörlerinin (örneğin atama operatörü (=) gibi ) soldan sağa değil de, sağdan sola doğru işlediğini gözden kaçırmayın.