08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

YAPILAR<br />

Yapı nedir<br />

Yapılar (structures) programcının birden fazla nesne yaratmasına izin veren bir araçtır.<br />

Yapıların kullanılmasıyla bellekte birbirini izleyecek şekilde yer alan birden fazla nesne<br />

yaratılabilir. Bellekte bitişik olarak yer alan nesnelerin dizi tanımlamalarıyla da<br />

yaratılabileceğini biliyorsunuz. Ancak yapıların dizilerden bazı farklılıkları vardır: Diziler<br />

aynı türden nesneleri içinde tutabilirken, yapılar farklı türlerden nesneleri tutabilir.<br />

Yapıların kullanılmasının ana nedeni budur. Çoğu zaman, türleri farklı bir takım nesneler,<br />

mantıksal olarak bir bütün oluşturabilir. İsim, yaş, cinsiyet, departman, ücret, öğrenim<br />

durumu gibi bilgileri farklı türden nesneler içinde saklanabilir. Bunların tamamı bir<br />

işyerinde çalışan bir kişiye ait bilgiler olabilir. Aralarında mantıksal ilişki olan farklı türden<br />

veriler yapılar içinde saklanabilir.<br />

int türden 10 elemanlı bir dizi tanımlandığını düşünelim:<br />

int a[10];<br />

Kullanılan sistemde int türünün 4 byte yer kapladığını düşünürsek bu dizi için bellekte 40<br />

byte'lık bir blok ayrılır değil mi? Programcı bu dizinin elemanlarına köşeli ayraç işleci ile<br />

ulaşarak, eleman olan nesneler üzerinde doğrudan işlemler yapabilir. Ancak dizinin<br />

tamamı bir nesne olarak kullanılamaz. Yani C dili bir dizinin tamamını bir nesne olarak<br />

görmez. Dizi isimlerinin, C'de dizinin ilk elemanı olan nesnenenin adreslerine<br />

dönüştürüldüklerini hatırlayalım. Yapılarda durum biraz daha farklıdır. Yapı kullanılmasıyla<br />

da birden fazla nesne için ardışıl bir blok ayrılır. Ancak bu kez bloğun tamamı da bir<br />

nesne olarak kullanılabilir. Yapının elemanı olan nesneler üzerinde işlemler<br />

yapabileceğimiz gibi, bu nesnelerin oluşturduğu bloğun tamamı üzerinde de doğrudan<br />

bazı işlemler yapabiliriz.<br />

Programcının Tanımladığı Bir Tür Olarak Yapı<br />

Yapıların kullanılmasıyla programcı yeni bir tür yaratabilir. C'nin var olan doğal veri<br />

türlerinin yanında, mantıksal bir anlamı soyutlayan yeni türler yaratılabilir. Örneğin değeri<br />

bir tarih bilgisi olan bir tür ya da değeri bir kompleks sayı olan bir tür oluşturulabilir.<br />

Böylece programlama ile bir çözüm oluşturmak istediğimiz problem düzlemi daha iyi<br />

modellenebilir. Yapıların iyi bir şekilde öğrenilmesi, ileride nesne bazlı(object based) ve<br />

nesneye yönelimli (object oriented) programlama tekniklerinin iyi bir biçimde<br />

anlaşılabilmesine yardımcı olur.<br />

Yapı Bildirimi<br />

Yapı ile programcının yeni bir tür yaratmasına olanak verilir. Yapıların kullanılabilmesi için<br />

yapılması gereken ilk işlem bu yeni türü derleyiciye tanıtmaktır. Tanıtma işlemi yapı<br />

bildirimi ile olur. Yapı bildirimini gören derleyici, bu yeni tür hakkında bilgi edinmiş olur.<br />

Bu bildirimle derleyiciye aşağıdaki bilgiler verilir:<br />

- türün ismi<br />

- türün bellekte ne kadar yer kapladığı<br />

- elemanların isimleri<br />

Derleyici bir yapı bildirimini gördükten sonra, bu türden bir nesne tanımlandığında nesne<br />

için bellekte ne kadar yer ayıracağını öğrendiği gibi, bu nesnenin programcı tarafından<br />

kullanımına ilişkin ifadelere ilişkin derleme zamanında bazı sınamalar yapabilir.<br />

Yapı bildiriminin belirli bir sentaksı vardır.<br />

359

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

Saved successfully!

Ooh no, something went wrong!