Papatyam Forum - Tekil Mesaj gösterimi - C Dökümanları
Konu Başlıkları: C Dökümanları
Tekil Mesaj gösterimi
Alt 20 January 2009, 15:50   Mesaj No:8

CoNQueRoR_61

Papatyam Usta Üyesi
Avatar Otomotik
Durumu:CoNQueRoR_61 isimli Üye şimdilik offline konumundadır
Papatyam No : 1397
Üyelik T.: 20 January 2009
Arkadaşları:0
Cinsiyet:
Memleket:istanbul
Yaş:35
Mesaj: 131
Konular:
Beğenildi:
Beğendi:
Takdirleri:10
Takdir Et:
Konu Bu  Üyemize Aittir!
Standart Ynt: C Dökümanları

Temel C Dokümanları 8 (Structer'lar[Yapılar])

Bu dokumana kadar C nin temelleri hakkında bir cok şey ogrendik. Benim ogretmeyi dusundugum tek bir ana konu kaldı: Structure lar…
Structure ın turkce deki anlamı yapı demek. C de yapılar olusturmak mumkun. Yapı kelimesinden kasıtın tam olarak ne oldugunu ancak bir ornekle anlatabilirim sanırım:
Mesela ogrenci diye bir yapı belirleyelim. Bu yapının elemanları olacaktır. Zaten structure ların olayı kendi elemanları olmasıdır. Bu elemanları biz istedigimiz sekilde belirleyebiliriz..
Bu elemanlar C deki degiskenler den olusacak. Ogrenci yapımızın elemanlarını belirleyelim:
İsim
Soyisim
Okul
Numara
Bunlar ogrenci structer inin elemanları olsun. Simdi bu isi C de nasıl yapacagımız bakalım:
struct ogrenci

{

char isim[10];

char soyisim[20];

char okul[20];

int numara;

} ;



yukardaki kodlarla struct tanımını kullanarak ogrenci adında bir structer tag ı yapmıs olduk. Bu tag ın icinde istedigimiz elemanları belirledik. buradan sonra ogrenci, bir cesit tanım oldu.

Mesela int, bir tanımdır. Tamsayıları tanımlar.

int x;

yazarsak x diye bir tam sayı belirlemis oluruz int tanımını kullanarak. Aynı sekilde yukarda belirledigimiz ogrenci tanımını kullanarak ogrenci tanımına uygun bir structure degiskeni belirleyebiliriz. Su sekilde:



ogrenci Ali;



Bu satırla Ali adında bir ogrenci structure ı yapmıs olduk. Ali nin bazı ozellikleri var. İsim, soyisim, okul, numara gibi. Simdi bu ozellikleri belirleyelim. Ali nin icindeki bir ozelliğe (elemana) ulasabilmek icin nokta isaretini kullanacaz.:



Ali.numara=567;



Bu satırla Ali yapısının numara elemanını 567 olarak atadık. Şimdi ismini ve diger ozelliklerini belirleyelim. Diger degiskenler string oldugu icin kolay bir eşitlikle belirlenemiyor. Bu işi strcpy fonksiyonu ile yapazac. Onceki derslerimizde strcpy'nin kullanımından bahsetmistik.



strcpy(Ali.isim,”Ali”);

strcpy(Ali.soyisim,”Ozturk”);

strcpy(Ali.okul,”Mehmetcik ilkokulu”);



Boylelikle Ali structure ının tum elemanlarını belirledik. Şimdi bu kodları birlestirip bir program yapalım ve programımız en sonunda Ali yapısının tum ozelliklerini ekrana yazdırsın.



#include<stdio.h>

#include<string.h>



main()

{

struct ogrenci

{

char isim[10];

char soyisim[10];

char okul[25];

int numara;

};

ogrenci Ali;

Ali.numara=567;

strcpy(Ali.isim,"Ali"

strcpy(Ali.soyisim,"Ozturk"

strcpy(Ali.okul,"Mehmetcik ilkokulu"



printf("Ali'nin numarasi : %d\n",Ali.numara);

printf("Ali'nin ismi : %s tabiki \n",Ali.isim);

printf("Ali'nin soyismi : %s\n",Ali.soyisim);

printf("Ali'nin okulu : %s",Ali.okul);

scanf("%d",&Ali.numara);

return 0;

}






Peki niye ogrendik bu structer ları ? Bu yapılar neye yarıyor ? Bu structure denen melet duzenli, daha kullanışlı ve daha kolay programlar yazmaya yarıyor. Mesela bir telefon rehberi yapacaz. Rehberdeki her kayıt icin isim soyisim numara adres alacaz. Bunların hepsi değiskenlere kaydedilmek zorunda. Her kayıt icin 4 tane degisken belirlersek. 30 kisilik bir rehber olusturmak icin 30*4= 120 tane degisken belirlemek gerekir. Ama biz array kullanarak bu degiskenlerin sayısını biraz azaltabiliriz. Ama genede cok sayıda ve karısık olur. Ama structure kullanırsak sadece bir structure arrayi ile tum kayıtları alabiliriz.



struct rehber

{

char isim[10];

char soyisim[25];

int TelNo;

char adres[255];

} ;



rehber kayıtlar[30];



yukardaki kodlarla; kayıtlar adında, 30 tane elemanı olan rehber yapısı arrayi olusturduk. Artık bir iki loop kurarak tum kayıtları kaydedebilir okutabiliriz. İşte bu kadar duzenli ve kolaylastırıcı bir etkisi var bu structure ların. Simdi 3 tane kayıt alan ve bu kayıtları aldıktan sonra ekrana yazdıran bir telefon rehberi similasyonu yazalım Kolaylık olsun diye adres ozelligini de iptal ediyorum:







#include<stdio.h>

#include<string.h>



main()

{



struct rehber

{

char isim[10];

char soyisim[10];

char adres[25];

int TelNo;

};



int i;

char buf[255];

rehber kayit[3];



for(i=0;i<3;i++)

{

printf("%d. kayit icin telefon numarasini gir:",i+1);

scanf("%d",&kayit.TelNo);

gets(buf);

printf("%d. kayit icin isim gir:",i+1);

gets(kayit.isim);

printf("%d. kayit icin soyisim gir:",i+1);

gets(kayit.soyisim);

}

puts("kayitlar alindi"

puts("kayitlar ekrana geri veriliyor:"

for(i=0;i<3;i++)

{

printf("%d. Kayit:\n",i+1);

puts("------------"

printf("isim: "

puts(kayit.isim);

printf("soyisim: "

puts(kayit.soyisim);

printf("Telefon numarasi: %d\n",kayit.TelNo);

puts("*******************************"

}

return 0;

}






Structer mantıgını anlamak onemli bir şey. Cunku bu mantıgın gelistirilmisi obje yonelimli programlama oluyor. C++ a gecerken Obje yonelimli programlamayı iyi anlamamız lazım.

Structure mantıgı dogrultusunda ilerde obje yonelimli programlamaya da gececez.



Odev: Kendinize gercek bir telefon rehberi yapın .Bir text dosyasına katıtları yazsın ve orda saklasın. Gerektiginde gene o dosyadan okusun. Programınızı gelistirebildiginiz kadar gelistirin. Bir telefon rehberinin sahip olabilecegi tum ozellikleri zamanla eklemeye calısın. İsime gore sıralama, isim yazınca o isme ait telefonu bulma gibi felan… Artık C ye dair ana hatlarıyla hemen herseyi biraz biliyorsunuz…

Bu Temel C derslerinin sonuncusuydu… Benim temel olarak ögretmek istediklerim bu kadar. Bu işin bir sürü teferruatı var tabiki. Bu temel ile tüm teferruatları kendiniz öğrenebilirsiniz diye düşünüyorum.


Her dersin sonunda bir ödev var ve diğer derste bir önceki dersin ödevinin cevabı var bakmıyarak kendinizi geliştirebilirsiniz...
__________________
Biz Bu Hallere Düşecek Adammıydık ???
Alıntı ile Cevapla