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 />

NUMARALANDIRMALAR<br />

Yazılan birçok programda, yalnızca belirli anlamlı değerler alabilen değişkenler kullanma<br />

gereksinimi duyulur. Örneğin bir "Boolean" değişkeni, yalnızca iki değere sahip olabilir:<br />

"Doğru" ve "Yanlış". Haftanın bir gününü tutacak bir değişken, haftanın yedi günü<br />

olduğuna göre yedi farklı değerden birini alabilir.<br />

Başka bir örnek olarak bir oyun kağıdının rengini tutacak bir değişkeni verilebilir. Böyle<br />

bir değişken yalnızca 4 değişik değer alabilir: Sinek, Karo, Kupa, Maça.<br />

Böyle değişkenler tamsayı türlerinden tanımlanabilir:<br />

int renk;<br />

renk = 1;<br />

Yukarıdaki örnekte renk isimli değişken bir oyun kağıdının renk bilgisini tutuyor. Bu<br />

değişkene 1 değerinin atanması renk değerinin Karo olduğunu gösteriyor.<br />

Böyle bir teknik uygulamalarda pekala kullanılabilir. Ancak bu tekniğin bazı sakıncaları<br />

vardır.<br />

1. Kodu okuyan renk isimli değişkene yapılan atamalarda kullanılan tamsayı<br />

değişmezlerinin neyi temsil ettiği konusunda doğrudan bilgi alamaz. Kodun okunabilirliği<br />

azalır. Örneğin<br />

renk = 1;<br />

şeklinde bir atama doğrudan renk değişkenine "karo" değerinin verilmiş olduğu biçiminde<br />

de anlamlandıramaz.<br />

2. Derleyici renk değişkeni ile ek bir kontrol yapamaz. Derleyici renk değişkeninin<br />

yalnızca 4 farklı değerden birini alması gerektiğinin farkında değildir. Derleyiciye böyle<br />

bir bilgi verilmemiştir. Örneğin böyle bir değişkene 10 gibi bir değerin atanması<br />

anlamsızdır. Ancak derleyici derleme sırasında bu yanlışlığı bulamaz, bir hata ya da bir<br />

uyarı iletisiyle veremez.<br />

C dili, isimlendirilmiş belirli tamsayı değerlerini alabilen, bir tür yaratılmasına olanak<br />

veren bir araca sahiptir. Bu araca numaralandrırma (enumaration) ve bu araçla ilişkili<br />

kullanılan değişmezlere (enumaration constants) "numaralandırma değişmezleri" denir.<br />

Bir numaralandırma türünün ve bir numaralandırma türüne ilişkin değişmezlerin bildirimi<br />

aşağıdaki gibi yapılır:<br />

enum [enum türünün isimi] {değişmez1,değişmez2, ......};<br />

enum bir anahtar sözcüktür. Derleyici küme ayraçları arasında isimlendirilmiş<br />

değişmezleri 0 değerinden başlayarak artan tamsayı değerleriyle eşler. Örnek :<br />

enum Renk {Sinek, Karo, Kupa, Maca};<br />

Yukarıdaki bildirimle Sinek değişmezi 0, Karo değişmezi 1, Kupa değişmezi 2, Maca<br />

değişmezi ise 3 değerini alır.<br />

enum Bool {TRUE, FALSE};<br />

burada TRUE değişmezi 0 FALSE değişmezi ise 1 değerini alır.<br />

enum Months {January, February, March, April, May, June, July, August,<br />

September, Oktober, November, December};<br />

421

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

Saved successfully!

Ooh no, something went wrong!