14 Şubat 2014 Cuma

C STRUCT (Yapılar)


C STRUCT' LAR

Struct'lar C'den başlayarak C++, C#, Java gibi oop dillere de girebilmiş bir kavramdır. struct'lar için class'tan türemiş denemez, en fazla class'lar struct'lardan türemiştir.Çünkü struct, class'a göre daha primitif(ilkel) ancak belli başlı farklarıyla çoğu zaman kullanılması daha faydalı yapılardır.

Aralarında mantıksal bir ilişki bulunan farklı türden veriler “struct” lar içerisinde bir bütün olarak tanımlanabilirler. Bir örnek verecek olursak: Öğrencilere ait ad, soyad, vize notu, final notu gibi değişkenleri her öğrenci için ayrı ayrı tanımlaycağımızı düşünürsek iş, içinden çıkılmaz bir hal alır. C dilinde struct anahtar kelimesi ile programcılar kendi değişken tiplerini oluşturabilirler. Bunun için de struct vardır “Struct” lar diziler gibi bellekte sürekli kalırlar fakat dizilerin aksine değer tipindedirler ve

struct yapı-adı
{
tip adı değişken adı;
tip adı değişken adı;
};

şeklinde tanımlanırlar.

Kelime olarak Tükrçe karşılığı yapı anlamına gelen structler tek bir ad altında toplanmış bilgiyi bir arada tutmak için yol sunan bir koleksiyondur.

Yapıyı oluşturan öğelere member(üye) adı verilir.Örneği inceleyelim:

struct kisi{
char adi[15];
int yas;
};

struct kisi ahmet;
ahmet.yas=2;

Yukarıdaki şekilde bir yapı tanıtıldı ve bu yapıya ahmet adında bir değişken atandı.Bu değişkenin özellikleri yani yaş v.s gibi özelliklerine ise yani yapı üyelerine ise "."operatörü ile erişebiliriz.ahmet.yas=2; de olduğu gibi.Bu yapı üyelerinin ekrana yazdırılması ise şu şekilde yapılabilir:

printf("%d",ahmet.yas );

Yapılarda onemli bir husuta yapıların atanmasıdır.Aşağıdaki örneğimizi inceleyecek olursak bunu daha net bi şekilde görebiliriz.

strcut num{
int a;
int b;
}x,y ;
x.a=4; x.y=3;
y=x;
printf("%d %d",y.a,y.b );

Programın çıktısı sırası ile 4 ve 3 olacaktır.Bu gibi şekillderde yapıların tüm üyelerini birbirine eşitleyebilirsiniz.Aynı üeyelere sahip birden çok yapı değişkeni tanıtmak istediğinizde ise şu yontemi kullabilirsiniz:

struct kisi ahmet[100]; //Bu şeklilde 100 tane ahmet adında değişken tanımlanmış oldu.

printf("%d",ahmet[1].yas );//Bu şekilde ise yapıların üyelerine erişim sağlanabilir.

Bu konuda öenmli bir hususta tüm dizi değişkenleri gibi ,yapılarda 0 dan indexlemey başar.Yani ahmet[0] ile başlar.

10 kisilik bir hasta defteri hazırlanması:

#include <stdio.h>

int i,k;
int main(void ){
struct hasta{
char adi[];
int hastano;
char bolum[];
};
struct hasta kisi[10];

for(i=0; i<10; i++ ){
printf("Hastanin adi:" );
gets(kisi.adi );
printf(" Hasta numarasi:" );
scanf("%d",&kisi.hastano );
printf(" Hastanin Bolumu:" );
gets(kisi.bolum; );
printf(" Kayit islemi tamamlandi. " );
}
}

Bu örnekte basit bir hasta kayıt programı yaptık ama siz dilerseniz bu örneği dahada geliştirebilirsiniz.Kayıtları dosyaya yazan ve oradan alıp listeleyen programı yazabilirsiniz.







Hiç yorum yok :

Yorum Gönder