1. Duyuruyu Kapat

C++ Dersleri - 29)DATA STRUCTURES [ÇEVİRİ]

'C/C++' forumunda Hattab tarafından 10 Şubat 2016 tarihinde açılan konu

  1. Hattab

    Hattab New Member

    Katılım:
    22 Ekim 2015
    Mesaj:
    550
    Beğeniler:
    4
    Ödül Puanları:
    0
    Bu konular üniversitede çok sıkıntı çektirir adama.(Yani ben karşılaşmadım ama duyuyoruz [​IMG] )
    Data Structures and Algorithm önemlidir tabii.Ama bu derste algorima kısmına girmeyeceğiz.Neyse konuya geçelim:

    Bir Not Daha:Bu dersten sonra Basic konuları bitirmiş olacağız ve daha ileri düzeyler için C++'da OOP(nesne tabanlı programlama) konusuna gireceğim ama o konular ve daha sonrasını farklı bir şekilde paylaşmayı düşünüyorum.

    *Ha bu arada structures, yapılar demektir.Bundan sonra ingilizcesiyle kullanabilirim.Öbür türlü anlamı bozuluyor.

    C/C++ aynı tipte fakat aynı yapıda olmayan türlerin veri elemanlarının bir kaçını bir arada tanımlamamıza izin verir.

    Structures, kayıtları temsil eder.Bunu , kitaplarınızı bir kitaplıkta saklamak gibi düşünebilirsiniz.Belki kitaplığınızın raflarına belli özellikler vermek isteyebilirsiniz.Aşağıda ver bir kitap hakkındaki özellikler(attributes) verilmiştir:
    -Başlık
    -Yazar
    -Konu
    -Kitap ID

    Structure Tanımlama

    Structure tanımlamak için "struct" ifadesini kullanmalısınız.struct ifadesi,programınız için bir üyeden fazlası olan yeni bir veri tipi tanımlar.Örnek struct kullanımı:
    struct [structure tag]
    {
    member definition;
    member definition;
    ...
    member definition;
    } [one or more structure variables];

    *Structure tag = structure etiketidir.

    Structure tagı(etiketi)'nı her üyede kullanmak zorunlu değildir.Structure tanımlamasının sonunda, son noktalı virgülden önce, bir veya daha fazla yapı olduğunu belirtebilirsiniz.Aşağıdak Book structure'ı deklare edilmesi örneği verilmiştir:
    struct Books
    {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
    }book;

    Structure Üyelerine Erişim

    Structure'ın herhangi bir üyesine erişmek için, üye erişim operatörü olan (.) kullanırız.Üye erişim opratörü, yapı değişken adı ve yapı üyesi adının arasında kodlanır(yazılır).Structure tipinden değişkenlere erişmek için struct anahtar kelimesi kullanılırçAşağıda structure kullanımı ile ilgili örnek verilmiştir:

    [HASHTAG]#include[/HASHTAG] <iostream>
    [HASHTAG]#include[/HASHTAG] <cstring>

    using namespace std;

    struct Books
    {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
    };

    int main( )
    {
    struct Books Book1; // Declare Book1 of type Book
    struct Books Book2; // Declare Book2 of type Book

    // book 1 specification
    strcpy( Book1.title, "Learn C++ Programming");
    strcpy( Book1.author, "Chand Miyan");
    strcpy( Book1.subject, "C++ Programming");
    Book1.book_id = 6495407;

    // book 2 specification
    strcpy( Book2.title, "Telecom Billing");
    strcpy( Book2.author, "Yakit Singha");
    strcpy( Book2.subject, "Telecom");
    Book2.book_id = 6495700;

    // Print Book1 info
    cout << "Book 1 title : " << Book1.title <<endl;
    cout << "Book 1 author : " << Book1.author <<endl;
    cout << "Book 1 subject : " << Book1.subject <<endl;
    cout << "Book 1 id : " << Book1.book_id <<endl;

    // Print Book2 info
    cout << "Book 2 title : " << Book2.title <<endl;
    cout << "Book 2 author : " << Book2.author <<endl;
    cout << "Book 2 subject : " << Book2.subject <<endl;
    cout << "Book 2 id : " << Book2.book_id <<endl;

    return 0;
    }

    Yukardaki kodu çalıştırdığınızda aşağıdaki gibi bir sonuç verir:
    Book 1 title : Learn C++ Programming
    Book 1 author : Chand Miyan
    Book 1 subject : C++ Programming
    Book 1 id : 6495407
    Book 2 title : Telecom Billing
    Book 2 author : Yakit Singha
    Book 2 subject : Telecom
    Book 2 id : 6495700

    Fonksiyon Argümanı olarak Structures

    Bir fonksiyona parametre olarak bir structure gönderebilirsiniz.Aşağıdaki örnekte, structure değişkenine eriştiğimiz gibi aynı yoldan erişim sağlayabilirisiniz:

    [HASHTAG]#include[/HASHTAG] <iostream>
    [HASHTAG]#include[/HASHTAG] <cstring>

    using namespace std;
    **** printBook( struct Books book );

    struct Books
    {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
    };

    int main( )
    {
    struct Books Book1; // Declare Book1 of type Book
    struct Books Book2; // Declare Book2 of type Book

    // book 1 specification
    strcpy( Book1.title, "Learn C++ Programming");
    strcpy( Book1.author, "Chand Miyan");
    strcpy( Book1.subject, "C++ Programming");
    Book1.book_id = 6495407;

    // book 2 specification
    strcpy( Book2.title, "Telecom Billing");
    strcpy( Book2.author, "Yakit Singha");
    strcpy( Book2.subject, "Telecom");
    Book2.book_id = 6495700;

    // Print Book1 info
    printBook( Book1 );

    // Print Book2 info
    printBook( Book2 );

    return 0;
    }
    **** printBook( struct Books book )
    {
    cout << "Book title : " << book.title <<endl;
    cout << "Book author : " << book.author <<endl;
    cout << "Book subject : " << book.subject <<endl;
    cout << "Book id : " << book.book_id <<endl;
    }

    Yukardaki kodu çalıştırdığınızda , aşağıdaki sonucu verir:
    Book title : Learn C++ Programming
    Book author : Chand Miyan
    Book subject : C++ Programming
    Book id : 6495407
    Book title : Telecom Billing
    Book author : Yakit Singha
    Book subject : Telecom
    Book id : 6495700

    Pointer'lardan Structure'lara

    Bir structure'a aşağıdaki basit yolla pointer tanımlayabilirsiniz:
    struct Books *struct_pointer;

    Şimdi, Yapı değişkenlerinin adresini yukardaki pointer değişkeninde depolayabilirsiniz.Yapı değişkeninin adresini bulmak için & operatörünü koyarız:
    struct_pointer = &Book1;

    Yapının üyelerine erişmek için, o structure'a pointer kullanırız:
    struct_pointer->title;

    Hadi, yukardaki structure pointer'ını tekrar yazalım ve anlamanızın daha kolay olacağını umalım:

    [HASHTAG]#include[/HASHTAG] <iostream>
    [HASHTAG]#include[/HASHTAG] <cstring>

    using namespace std;
    **** printBook( struct Books *book );

    struct Books
    {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
    };

    int main( )
    {
    struct Books Book1; // Declare Book1 of type Book
    struct Books Book2; // Declare Book2 of type Book

    // Book 1 specification
    strcpy( Book1.title, "Learn C++ Programming");
    strcpy( Book1.author, "Chand Miyan");
    strcpy( Book1.subject, "C++ Programming");
    Book1.book_id = 6495407;

    // Book 2 specification
    strcpy( Book2.title, "Telecom Billing");
    strcpy( Book2.author, "Yakit Singha");
    strcpy( Book2.subject, "Telecom");
    Book2.book_id = 6495700;

    // Print Book1 info, passing address of structure
    printBook( &Book1 );

    // Print Book1 info, passing address of structure
    printBook( &Book2 );

    return 0;
    }
    // This function accept pointer to structure as parameter.
    **** printBook( struct Books *book )
    {
    cout << "Book title : " << book->title <<endl;
    cout << "Book author : " << book->author <<endl;
    cout << "Book subject : " << book->subject <<endl;
    cout << "Book id : " << book->book_id <<endl;
    }

    Yukardaki kodu derleyip çalıştırdığınızda, aşağıdaki sonucu üretir:
    Book title : Learn C++ Programming
    Book author : Chand Miyan
    Book subject : C++ Programming
    Book id : 6495407
    Book title : Telecom Billing
    Book author : Yakit Singha
    Book subject : Telecom
    Book id : 6495700


    typedef Anahtar Kelimesi


    Structs tanımlamak için basit bir yol vardır.Örnek:

    typedef struct
    {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
    }Books;

    Artık, Book'u Book tipinde değişken tanımlamak için direk olarak kullanabilirsiniz ve struct anahtar kelimesi kullanmanız gerekmez.Örnek:

    Book Book1, Book2;

    typedef anahtar kelimesini aşağıdaki örnekteki gibi, struct olmayan yapılar için de kullanabilirsiniz:
    typedef long int *pint32;

    pint32 x, y, z;

    *x,y ve z 'nin hepsi long int tipinde değişkenleri gösteren pointerlardır.

    WinnerMan Kardeşime teşekkürü bir borç bilirim. Allah ondan razı olsun.
     

Bu Sayfayı Paylaş

Share