Turkhackteam.net/org - Turkish Hacking & Security Platform...  
Geri git   Turkhackteam.net/org - Turkish Hacking & Security Platform... >
Programlama
> C/C++

C++ Struct Kullanımı (C++ Yapılar)

C/C++

Yeni Konu aç Cevapla
 
Seçenekler
Alt bir Hafta önce   #1
  • Online
  • Üsteğmen
  • Genel Bilgiler
Üyelik tarihi
Mar 2017
Nereden
010101
Mesajlar
Konular


  
C++ Struct Kullanımı (C++ Yapılar)



Data Structures & Algorithm (Veri Yapıları ve Algoritmalar) dersinde öğrendiğim herşeyi bir yazı dizisi halinde getirmeye an itibari ile karar verdim. Tabi ki her ders için birer yazı yazmaktansa, öğrendiğim her bir kavramı kullanabileceğimiz diğer kavramlar ile birleştirerek sizlere sunacağım.

İlk derslerde öğrendiğim kavramları günümüz yüksek seviyeli dilleri (Java ve C#) ile karşılaştırınca aslında amaçsız bir iş içinde olduğumuzu düşünmüştüm. Çünkü bu dillerde rahat bir şekilde istediğimiz classları, içlerinde propertyler ve methodlar olacak şekilde rahatça yazabiliyor ve hata alsak bile kolayca düzeltebiliyoruz. Gel gelelim benzer yapıyı C++ da struct'lar ile yapmaya çalışıyor ve ne kadarda ilkel olduğunu görüyoruz. Aslında bu noktada düşündüğüm tek şey şöyle oldu ;



Yüksek seviyeli dillerde kolayca yazmamızı sağlayan mimarinin altında yatan gerçekler ve zoru gördükten sonra kolay herşeyin daha anlamlı gelmesi
Belki olaya olması gerektiğinden fazlaca iyi yönden baktık, ama en azından artık yapacağımız işi biraz tanıdık.

Lafı fazla uzattık gibi, artık konumuza ve hazırladığım ufak senaryoya başlayabiliriz.

C++ sonrasını tamamiyle unutalım
Evet tıpkı yukarıda dediğim gibi artık C# ve Java elimizde yok ve C++ da kullandığımız temel veri tipleri yani int, float, string vs.'den başka elimizde bir tip yok ancak bizim yazacağımız öğrenci programı içinse öğrenciler için kullanabileceğimiz bir veri tipine ihtiyacımız var bu arada farkındamısınız senaryomuzunda öğrenci programı olduğunu söylemiş bulundum

Temel olarakda bir öğrencinin numarasını ve aldığı puanı içinde tutacak bir yapıya ihtiyacımız var. Tıpkı yüksek seviye dillerde bir class yazarmış gibi aşağıdaki kodu aynen C++ da yazıyor ve uygulama içersinde kullanacağımız structımızı tanımlamış oluyoruz.


Öğrenci Struct Yapısı ;
Kod:
struct Ogrenci{
    int No;
    int Puan;
};
Burda dikkat etmemiz gereken en önemli şey ise structın tanımlanmasında bizden istenen syntax kuralına dikkat etmemiz olacaktır.

Birde main methodumuzu yazalım ve içersinde 2 tane öğrenci tanımlayalım, hemen ardından numaralarını ve puanlarını girelim. Yalnız bundan önce uygulayacağımız senaryo gereği öyle bir methodumuz olsunki biz parametre olarak ona Ogrenci yollayalım o da bilgileri ekrana yazsın.


Parametre ile çalışan method ;
Kod:
**** ParametreIleYazdir(Ogrenci o)
{
    printf("\n%d. nolu ogrencinin puani : %d\n",o.No,o.Puan);
}
Neden pointer kullanmalıyız ?
Yukarıda parametre olarak aldığı öğrencinin bilgilerini ekrana yazdıran bir method yazdık fakat bu method bizim için performanslı olmayacaktır. Çünkü biz bu methodu çağırırken elimizde varolan bir öğrenciyi parametre olarak yollamış olsakda, içersindeki bilgilerin aynı olduğu bir öğrenci daha memory de yaratılacak yani bit by bit olarak tekrar oluşturulup methoda bu öğrenci verilecek. Bunun anlamını method içersinde gelen öğrencinin herhangi bir değerini değiştirmenize rağmen yolladığımız öğrencide aynı değişikliliğin yansımamış olduğunu inceleyerek öğrenebilirsiniz.

Başlığı yazdık fakat henüz ne yapcağımızdan bahsetmedik. Aslında amacımız yukarıda yazdığımız şeyi engellemek. Yani methodu çağırırken söz konusu öğrencinin kopyalanması yerine, direk bu öğrenciye ulaşmak olacaktır. Bunun içinde method parametre olarak bir öğrenci değil, öğrenciye ait bir adres alması olacaktır.

Diğer bir değişle parametre olarak elimizdeki öğrencinin adresini yollayıp, method içersinde adresi verilen öğrenciye ulaşıp bilgileri yazdırmak olacaktır. Tıpkı aşağıdaki kod gibi ;


Pointer ile çalışan method ;
Kod:
**** PointerIleYazdir(Ogrenci* o)
{
    printf("\n%d. nolu ogrencinin puani : %d\n",o->No,o->Puan);
}
Bahsettiğim senaryoyu yukarıdaki method tam istediğimiz gibi karşılayacaktır. Parametre olarak aldığı ogrencinin adresinden, öğrenciye ulaşıp içersindeki No ve Puan bilgilerini ekrana yazdıracaktır. Böylece methoda bir öğrenci yollamamış olacağız ki bu da uygulamamızdaki performansı düşürmeyecektir.

İlkel bir eşitlik bulduk sanırım

Pointer = Performans
Main methodumuzu yazalım
Elimizde 1 struct ve bunun üzerinde her ne kadar aynı işlemi gerçekleştirsede birinin daha performanslı olacağı 2 adet method var. Şimdi main methodumuzu yazalım ve elimizdeki yapıları kullanalım.



Uygulamamızı çağırdığımızda aşağıdaki gibi bir ekran ile karşılacağız.



    


__________________

~《 Ö N C E ● V A T A N 》~
~《 S O N R A 》~
~《 T Ü R K ¤ H A C K ¤ T E A M 》~


Online
 
Alıntı ile Cevapla
Alt bir Hafta önce   #2
  • Offline
  • Forumdan Uzaklaştırıldı
  • Genel Bilgiler
Üyelik tarihi
Jul 2009
Nereden
Başlayalım?
Mesajlar
Konular


  


Okudumda paylaşılan yazınızı Struct kullanımı için detaylı ön bilgi mevcuttur ilgili arkadaşlarımıza faydalı olucaktır.
    
Offline
 
Alıntı ile Cevapla
Cevapla

Bookmarks

Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks Kapalı
Pingbacks Kapalı
Refbacks Kapalı


Bilgilendirme Turkhackteam.net/org
Sitemizde yer alan konular üyelerimiz tarafından açılmaktadır.
Bu konular yönetimimiz tarafından takip edilsede gözden kaçabilen telif hakkı olan veya mahkeme kararı çıkmış konular sitemizde bulunabilir. Bu tür konuları bize turkhackteamiletisim [at] gmail.com adresine mail atarak bildirdiğiniz takdirde en kısa sürede konular hakkında gerekli işlemler yapılacaktır.
Please Report Abuse, DMCA, Harassment, Scamming, Warez, Crack, Divx, Mp3 or any Illegal Activity to turkhackteamiletisim [at] gmail.com


Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz.
Turkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Turkhackteam sorumlu değildir. Sitelerinize Turkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.



         

Powered by vBulletin® Copyright ©2000 - 2018

TSK Mehmetçik Vakfı

Türk Polis Teşkilatını Güçlendirme Vakfı



Google Links
instagram Takipçi Hilesi

wau

Search Engine Friendly URLs by vBSEO 3.6.0 ©2011, Crawlability, Inc.