C'de Yapısal Veri Tipleri

Cansiz

New member
Herkese merhaba. Aşağıda sizlere C de küme oluşturma hadisesinin basit mantığını verdim. Yararlı olması umuduyla....

Struct Yapı deyimi; tek bir ad altında farlı çeşit tiplerde birden fazla değişkenler kümesidir denilebilir. Struct deyimi birbiriyle mantıksal olarak bağlantılı değişkenleri tutmak için iyi bir yoldur. Mesela bir öğrenci kümesi oluşturalım. Bu kümenin içinde adı, soyadı, sınıfı, numarası, veli adı, adresi, ... gibi veriler tutulmak istenir. Mantıksal bağlantı sözünden bu kastedilmektedir. Şimdi bu öğrenci kümesi örneğini işleyelim:


Struct ogrenci {
Char Ad[20];
Char Soyad[40];
Char Sinif[4];
İnt No[6];
Char Veliadi[20];
Char Adres[100];
} ;
Gördüğünüz gibi struct deyiminden sonra kümeye bir isim verdik. Değişken tipini ve adını belirterek küme parantezini kapattık ve noktalı virgülle bitirdik. Bunu sanki bir değişken tanımlıyormuşuz gibi düşünürseniz anlaması daha kolay olur. Yani nasıl ki Char Ad[20]; tip bildirimini noktalı virgülle sonlandırdık burdaki mantık da aynı. Ama yanlış anlaşılmasın bir küme oluşturmakla bir değişken değil yanlızca toplu bir tip tanımı yapılıyor demektir.
Henüz şu haliyle kümemiz kullanıma hazır değil. Kullanabilmek için bir değişken atamamız gerekli. Bunu iki şekilde kotarabiliriz. Birincisi küme tanımladıktan sonra ;

Struct ogrenci okul1;
Struct ogrenci okul2;
..
..

Görüldüğü üzere önce struct sonra kümemizin ismi daha sonra keyfi bir değişken atıyoruz ki bu değişken vasıtasıyla küme içinde oluşturduğumuz değişkenlere ulaşabilelim.

İkinci yol ise küme tanımlama esnasında gerçeklenebilir:


Struct ogrenci {
Char Ad[20];
Char Soyad[40];
Char Sinif[4];
İnt No[6];
Char Veliadi[20];
Char Adres[100];
}

okul1, okul2; Kümemizi oluşturduk. Sıra küme elemanlarına erişmeye geldi. Bunu :

...
Puts(“Öğrenci İsmi Giriniz”);
Gets(okul1.Ad);
....

Burada okul1 için Ad kısmına kullanıcıdan gelecek isimi atadık. Şimdi aynısını okul2 için yapalım: ...

Puts(“Öğrenci İsmi Giriniz:”);
Gets(okul2.Ad);
...

Burada okul1 ve okul2 için adlar farklıdır. Farklı belleklerde tutulurlar. Biz bu örnekte iki adet okul değişkeni yaptık. Yani kümelerin istediğiniz kadar kopyasını çıkarabilirsiniz. Kısaca atama yapısı nesne_adi.üyeadi şeklindedir.(nesne_adi ve üye_adi arasında . (nokta) işareti vardır.) Diğer üye adlarına da aynı şekilde >> okul1.No=164570; gibi yapılır. Bu numarayı ekrana basmak için :

Printf(“%1u”,okul1.No); kodunu yazmalısınız.

Buraya kadar basit bir küme tanımladık ve üyelerine eriştik. Fakat üstteki örneği okuyanların aklına bir soru takılmıştır mutlaka. Ya biz koskoca okulda sadece bir öğrenci için küme üyelerine eriştik. Yani gets(okul1.Ad); dediğimiz zaman koskoca okul1 adlı okulda sadece 1 öğrenci varmış gibi kabul ettik. Peki çoklu kayıt durumunda ne yapmalı? İşte bunun için Küme dizilerini kullanacağız. Yapıları bir dizi içinde belirmek bu iş için çok kullanışlıdır. Bir örnekle açılayalım. 50 öğrencili okul1 isimli bir okulumuz olsun. Biz bu okula küme olayını kullanarak basit bir program yazmak istiyoruz. Yukarıdaki gibi kümeyi tanımladıktan sonra ;

Struct ogrenci okul1liste[50];

Bu ifade yukarda tanımladığımız kümeden 50 kopya oluşturdu. Belirli bir üyeye erişim

Okul1liste[0].No=164570;

Şeklinde yapılırsa ilk küme elemanının (yani ilk öğrencinin) numara hanesine 164570 sayısını atar. Aynı şekilde:

gets(okul1liste[0].Ad); gibi Ad dizisine komple bir atama yapılabilir veya okul1liste[0].Ad[0]=’O’; gibi Ad dizisine karakterleri tek tek atayabiliriz.

Alıntdır.Yardım edeceği düşündüm size konuların!!!​
 

Cansiz

New member
cliper1907' Alıntı:
öğretmen olursam bunu kullancam eline sağlık
işallah olursun da güzel yerlere gelirsin!:):)Bişey deil!​
 

HTML

Üst