ForumAlem
Would you like to react to this message? Create an account in a few clicks or log in to continue.
forum kurmak | ©phpBB | Bedava yardımlaşma forumu | Suistimalı göstermek | Son tartışmalar
ForumAlem

ForumAlem
 
AnasayfaAnasayfa  Latest imagesLatest images  AramaArama  Kayıt OlKayıt Ol  Giriş yapGiriş yap  

 

 C'de Yapısal Veri Tipleri

Aşağa gitmek 
YazarMesaj
KaoS
Admin
Admin
KaoS


Mesaj Sayısı : 170
Kayıt tarihi : 02/08/08
Yaş : 35
Nerden : KONYA

C'de Yapısal Veri Tipleri Empty
MesajKonu: C'de Yapısal Veri Tipleri   C'de Yapısal Veri Tipleri Icon_minitimePerş. Ağus. 14, 2008 10:19 pm

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.
_________________
Sayfa başına dön Aşağa gitmek
https://forumalem.hareketforum.net
 
C'de Yapısal Veri Tipleri
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
ForumAlem :: Programlama Dilleri :: C / C++ / C#-
Buraya geçin: