08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

pos_flag = ON;<br />

validiy_flag = INVALID;<br />

switch kontrol deyimindeki case ifadeleri de çoğunlukla simgesel değişmezlerle<br />

oluşturulur. Bu konuyu switch kontrol deyiminde inceleyeceğiz.<br />

Simgesel Değişmezler Yoluyla Programın Değiştirlmesi<br />

Bir değişmezin program içinde pek çok yerde kullanıldığı durumlarda, bu değişmeze<br />

yönelik bir değiştirme işlemi tek yerden yapılabilir. Böylece söz konusu program, bir<br />

simgesel değişmeze bağlı olarak yazılıp daha sonra simgesel değişmezin değiştirilmesiyle<br />

farklı parametrik değerler için yeniden derlenerek çalıştırılabilir. Örneğin kullanıcının<br />

belirli sayıda tahmin yaparak bir sayıyı bulmasına dayanan bir oyun programını<br />

yazdığımızı düşünelim. Programda, oyuncu 10 tahmin hakkına sahip olsun. Bu durumda<br />

kaynak kodun birçok yerinde 10 değeri kullanılmış olur, değil mi? Daha sonra oyun<br />

programında oyuncunun tahmin sayısının 20'ye çıkarılmak istendiğini varsayalım.<br />

Kaynak kod içinde oyuncunun tahmin sayısını gösteren 10 değişmezlerinin değiştirilerek<br />

20 yapılması gerekir. Bu değiştirme işleminin programcı tarafından tek tek yapılması hem<br />

zor hem de hataya açıktır. Kaynak kodda kullanılmış olan her 10 değişmezi, oyuncunun<br />

tahmin hakkını göstermeyebilir. Oysa oyuncunun hakkını gösteren değer yerine bir<br />

simgesel değişmez tanımlanıp<br />

#define NO_OF_GUESS 10<br />

program bu simgesel değişmez kullanılarak yazılırsa, bu simgesel değişmez tanımında<br />

yapılacak değişiklikle tüm program içinde 10 değerleri kolayca 20 değerine<br />

dönüştürülebilir.<br />

Gerçek Sayı Değişmezleri Yerine Kullanılan Simgesel Değişmezler<br />

Simgesel değişmezlerin kullanımı, özellikle gerçek sayı değişmezlerin kullanılmasında<br />

olası tutarsızlıkları, yazım yanlışlarını engeller.<br />

Örneğin matematiksel hesaplamalar yapan bir programda, pi sayısının sık sık<br />

kullanıldığını düşünelim. pi sayısı yerine<br />

#definePI 3.14159<br />

simgesel değişmezi kullanılabilir. Her defasında pi sayısı, bir değişmez olarak yazılırsa,<br />

her defasında aynı değer yazılamayabilir. Örneğin kaynak kodun bir yerinde 3.14159<br />

değişmezi yazılmışken kaynak kodun bir başka noktasında yanlışlıkla 3.15159 gibi bir<br />

değer de yazılabilir. Derleyici programın böyle tutarsızlıklar için mantıksal bir uyarı<br />

iletmesi olanağı yoktur. Simgesel değişmez kullanımı bu tür hataları ortadan kaldırır.<br />

Yine derleyicilerin çoğu, math.h başlık dosyası içinde de pek çok matematiksel değişmez<br />

tanımlar.<br />

Taşınabilirlik Amacıyla Tanımlanan Simgesel Değişmezler<br />

Bazı simgesel değişmezler hem taşınabilirlik sağlamak hem de ortak arayüz oluşturmak<br />

amacıyla tanımlanır. Standart başlık dosyalarından limits.h içinde kullanılan tamsayı<br />

türlerinin sistemdeki sınır değerlerini taşıyan standart simgesel değişmezler<br />

tanımlanmıştır:<br />

Simgesel Olabilecek En Küçük<br />

Anlamı<br />

Değişmez<br />

Değer<br />

CHAR_BIT 8 char türündeki bit sayısı<br />

SCHAR_MİN -127 signed char türünün en küçük değeri<br />

SCHAR_MAX 127 signed char türünün en büyük<br />

değeri<br />

UCHAR_MAX 255 unsigned char türünün en büyük<br />

değeri<br />

172/529

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!