Οι δομές (struct) στη γλώσσα C++ είναι ένας τρόπος οργάνωσης και αποθήκευσης διαφορετικών τύπων δεδομένων σε έναν συνδυασμό. Μια δομή είναι ένα συλλογικός τύπος δεδομένων που μπορεί να περιέχει μεταβλητές διαφορετικών τύπων, όπως ακέραιες, δεκαδικές, χαρακτήρες και ακόμα και άλλες δομές.

Για να ορίσουμε μια δομή στη C++, χρησιμοποιούμε την λέξη-κλειδί struct ακολουθούμενη από το όνομα της δομής και την περιγραφή των μεταβλητών που περιέχει μέσα σε άγκιστρα {}.

Ένα παράδειγμα ορισμού μιας δομής στη C++ είναι το εξής:

struct Person {
    std::string name;
    int age;
    char gender;
};

Στο παραπάνω παράδειγμα, δημιουργούμε μια δομή με το όνομα Person, η οποία περιέχει τρεις μεταβλητές: μια συμβολοσειρά name για το όνομα του ατόμου, έναν ακέραιο age για την ηλικία και έναν χαρακτήρα gender για το φύλο.

Οι δομές στη C++ μπορούν να χρησιμοποιηθούν για να δημιουργήσουμε πολλά αντικείμενα από μια δομή, τα οποία μπορούν να περιέχουν διαφορετικές τιμές για τις μεταβλητές που περιέχονται σε αυτήν. Η χρήση δομών μας επιτρέπει να οργανώνουμε και να διαχειριζόμαστε περίπλοκα δεδομένα με έναν ευανάγνωστο τρόπο.

Πρόσβαση στα μέλη μιας δομής

Ας υποθέσουμε ότι έχουμε την ακόλουθη δομή που αναπαριστά ένα προϊόν:

struct Product {
    int id;
    char name[100];
    float price;
};

Για να έχουμε πρόσβαση στα μέλη αυτής της δομής, μπορούμε να χρησιμοποιήσουμε τη σύνταξη τελείας (.). Ας δούμε ένα παράδειγμα:

#include <stdio.h>

// Ορισμός της δομής "Product"
struct Product {
    int id;
    char name[100];
    float price;
};

int main() {
    struct Product prod;

    // Ανάθεση τιμών στα μέλη της δομής
    prod.id = 1; // Ανάθεση τιμής 1 στο μέλος "id"
    strcpy(prod.name, "Κινητό τηλέφωνο"); // Αντιγραφή της συμβολοσειράς "Κινητό τηλέφωνο" στο μέλος "name"
    prod.price = 299.99; // Ανάθεση τιμής 299.99 στο μέλος "price"

    // Εκτύπωση των μελών της δομής
    printf("ID: %d\n", prod.id); // Εκτύπωση της τιμής του μέλους "id"
    printf("Όνομα: %s\n", prod.name); // Εκτύπωση της τιμής του μέλους "name"
    printf("Τιμή: %.2f\n", prod.price); // Εκτύπωση της τιμής του μέλους "price"

    return 0;
}

Σε αυτό το παράδειγμα, δημιουργούμε μια μεταβλητή prod τύπου struct Product. Έπειτα, χρησιμοποιούμε τη σύνταξη τελείας για να αναθέσουμε τιμές στα μέλη της δομής. Τέλος, εκτυπώνουμε τα μέλη της δομής χρησιμοποιώντας πάλι τη σύνταξη τελείας.

Παραδείγματα δομών στη C++

Ας δούμε ένα παράδειγμα δομής στη C++ που ορίζει ένα βιβλίο με τα χαρακτηριστικά του τίτλου, του συγγραφέα, της εκδόσης και του αριθμού σελίδων:

#include <iostream>
#include <string>
using namespace std;

struct Book {
  string title;
  string author;
  int edition;
  int pages;
};

int main() {
  // Δημιουργία ενός αντικειμένου τύπου Book
  Book myBook;

  // Ανάθεση τιμών στα πεδία του αντικειμένου myBook
  myBook.title = "The Catcher in the Rye";
  myBook.author = "J.D. Salinger";
  myBook.edition = 1;
  myBook.pages = 224;

  // Εκτύπωση των πεδίων του αντικειμένου myBook
  cout << "Title: " << myBook.title << endl;
  cout << "Author: " << myBook.author << endl;
  cout << "Edition: " << myBook.edition << endl;
  cout << "Pages: " << myBook.pages << endl;

  return 0;
}

[adinserter block=”2″]

Ο κώδικας αυτός δημιουργεί έναν δομημένο τύπο δεδομένων με όνομα Book, ο οποίος περιέχει τέσσερα πεδία: title (τίτλος), author (συγγραφέας), edition (έκδοση) και pages (σελίδες).

Στη συνέχεια, στη συνάρτηση main, δημιουργείται ένα αντικείμενο myBook τύπου Book. Οι τιμές των πεδίων του αντικειμένου ανατίθενται μεμονωμένα. Έπειτα, τα πεδία του αντικειμένου εκτυπώνονται στην οθόνη χρησιμοποιώντας την εντολή cout.

Η έξοδος του προγράμματος θα είναι:

Title: The Catcher in the Rye
Author: J.D. Salinger
Edition: 1
Pages: 224

Μία δομή σε πολλές μεταβλητές

Μπορείτε να χρησιμοποιήσετε το κόμμα (,) για να χρησιμοποιήσετε μια δομή σε πολλές μεταβλητές:

Person person1, person2, person3;
person1.name = "John Smith";
person2.name = "Mary Johnson";
person3.name = "Bob Johnson";

Στο παραπάνω παράδειγμα, δημιουργούμε τρεις μεταβλητές δομής με το όνομα person1, person2 και person3. Χρησιμοποιούμε το κόμμα για να ορίσουμε πολλές μεταβλητές της ίδιας δομής στην ίδια γραμμή κώδικα. Στη συνέχεια, χρησιμοποιούμε τη σύνταξη τελείας για να έχουμε πρόσβαση στο όνομα της κάθε μεταβλητής δομής και να τους δώσουμε τιμές.

Αυτό το παράδειγμα δείχνει πώς να χρησιμοποιήσετε μια δομή σε δύο διαφορετικές μεταβλητές:

#include <iostream>
#include <string>
using namespace std;

struct Person {
  string name;
  int age;
};

int main() {
  Person person1; // Δημιουργία αντικειμένου τύπου Person με το όνομα person1
  person1.name = "John Smith"; // Ανάθεση τιμής "John Smith" στη μεταβλητή name του αντικειμένου person1
  person1.age = 25; // Ανάθεση τιμής 25 στη μεταβλητή age του αντικειμένου person1

  Person person2 = person1; // Δημιουργία νέου αντικειμένου person2 και ανάθεση των τιμών του person1

  cout << "Person 1" << endl; // Εκτύπωση μηνύματος "Person 1" στην οθόνη
  cout << "Name: " << person1.name << endl; // Εκτύπωση της μεταβλητής name του person1
  cout << "Age: " << person1.age << endl << endl; // Εκτύπωση της μεταβλητής age του person1, με κενή γραμμή μετά

  cout << "Person 2" << endl; // Εκτύπωση μηνύματος "Person 2" στην οθόνη
  cout << "Name: " << person2.name << endl; // Εκτύπωση της μεταβλητής name του person2
  cout << "Age: " << person2.age << endl; // Εκτύπωση της μεταβλητής age του person2

  return 0; // Επιστροφή της τιμής 0 για ομαλή ολοκλήρωση του προγράμματος
}

Ο παραπάνω κώδικας σε C δημιουργεί δύο αντικείμενα τύπου Person και τα εκτυπώνει στην οθόνη. Ας αναλύσουμε τα βήματα:

  1. Πρώτα, περιλαμβάνονται οι κατάλληλες βιβλιοθήκες, iostream και string, για την επεξεργασία των εισόδων/εξόδων και των αλφαριθμητικών αντίστοιχα.
  2. Ορίζεται η δομή Person που περιλαμβάνει δύο μεταβλητές, τη name τύπου string και τη age τύπου int. Η δομή αυτή περιέχει πληροφορίες για ένα άτομο.
  3. Στην συνάρτηση main, δημιουργείται ένα αντικείμενο person1 τύπου Person. Αναθέτουμε στη μεταβλητή name του person1 την τιμή “John Smith” και στη μεταβλητή age την τιμή 25.
  4. Έπειτα, δημιουργείται ένα δεύτερο αντικείμενο person2 τύπου Person και του ανατίθενται οι τιμές του person1.
  5. Τέλος, εκτυπώνονται στην οθόνη τα περιεχόμενα των αντικειμένων person1 και person2, που περιλαμβάνουν τα ονόματα και τις ηλικίες των ατόμων.

Ο κώδικας αυτός επιδεικνύει τη χρήση δομής (struct) για την οργάνωση δεδομένων και τη δημιουργία αντικειμένων από αυτήν τη δομή.

Το αποτέλεσμα που εμφανίζεται στην οθόνη είναι το εξής:

Person 1
Name: John Smith
Age: 25

Person 2
Name: John Smith
Age: 25

Ο κώδικας εκτυπώνει τις πληροφορίες των δύο αντικειμένων τύπου Person. Τόσο ο person1 όσο και ο person2 έχουν τις ίδιες τιμές για το όνομα και την ηλικία, καθώς ο person2 ανατίθεται με βάση τις τιμές του person1.

Παράδειγμα

#include <iostream>
#include <string>
using namespace std;

// Δήλωση της δομής Person που περιέχει το όνομα και την ηλικία
struct Person {
  string name;
  int age;
} person1, person2;

int main() {
  // Ανάθεση τιμών στις μεταβλητές των αντικειμένων person1 και person2
  person1.name = "John Smith";
  person1.age = 25;

  person2.name = "Mary Johnson";
  person2.age = 32;

  // Εκτύπωση πληροφοριών για το πρόσωπο 1
  cout << "Person 1" << endl;
  cout << "Name: " << person1.name << endl;
  cout << "Age: " << person1.age << endl << endl;

  // Εκτύπωση πληροφοριών για το πρόσωπο 2
  cout << "Person 2" << endl;
  cout << "Name: " << person2.name << endl;
  cout << "Age: " << person2.age << endl;

  return 0;
}

Ο παραπάνω κώδικας πραγματοποιεί τις παρακάτω ενέργειες:

  1. Αρχικά, γίνεται η συμπερίληψη των απαραίτητων βιβλιοθηκών <iostream> και <string>. Η βιβλιοθήκη <iostream> παρέχει την πρόσβαση στις δυνατότητες εισόδου/εξόδου της γλώσσας C++, ενώ η βιβλιοθήκη <string> παρέχει τη δυνατότητα χρήσης των αλφαριθμητικών της C++.
  2. Στη συνέχεια, ορίζεται μια δομή με όνομα Person, η οποία περιέχει δύο μέλη: ένα αλφαριθμητικό name και έναν ακέραιο age.
  3. Δημιουργούνται δύο αντικείμενα της δομής Person με τα ονόματα person1 και person2.
  4. Ορίζονται και αναθέτονται τιμές στα μέλη των αντικειμένων person1 και person2 με χρήση του τελεστή ..
  5. Εκτυπώνονται πληροφορίες για κάθε πρόσωπο, όπως το όνομα και η ηλικία, χρησιμοποιώντας τη συνάρτηση cout και τον τελεστή <<.
  6. Το πρόγραμμα τελειώνει και επιστρέφει την τιμή 0, με την εντολή return 0, υποδεικνύοντας ότι το πρόγραμμα ολοκληρώθηκε επιτυχώς.

Συνολικά, ο κώδικας δημιουργεί και εμφανίζει πληροφορίες για δύο πρόσωπα.

Όταν εκτελέσετε τον παραπάνω κώδικα, θα προκύψει το ακόλουθο αποτέλεσμα στην οθόνη:

Person 1
Name: John Smith
Age: 25

Person 2
Name: Mary Johnson
Age: 32

Ο κώδικας εκτυπώνει το όνομα και την ηλικία των δύο προσώπων σε διαδοχικές γραμμές, με κατάλληλες κενές γραμμές για αρθρώσεις μεταξύ των πληροφοριών κάθε προσώπου.

23 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων