Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

3.2 Η δομή επιλογής switch στην γλώσσα C++

Η δομή επιλογής switch στην γλώσσα C++ είναι μια δομή που επιτρέπει την εκτέλεση ενός συνόλου εντολών βάσει της τιμής μιας μεταβλητής ή εκφράσεως. Η σύνταξη της δομής switch περιλαμβάνει έναν έλεγχο (switch) ακολουθούμενο από μια σειρά περιπτώσεων (case). Κάθε περίπτωση περιλαμβάνει μια τιμή ή μια εκφραστική σχέση που συγκρίνεται με την τιμή του ελέγχου. Όταν μια περίπτωση ταιριάζει με την τιμή του ελέγχου, οι σχετικές εντολές μέσα στην περίπτωση εκτελούνται. Αν δεν υπάρχει ταιριαστή περίπτωση, μπορεί να υπάρχει μια περίπτωση default που περιέχει εντολές που θα εκτελεστούν όταν δεν ταιριάζει καμία άλλη περίπτωση.

Η δομή switch είναι χρήσιμη όταν υπάρχει η ανάγκη να γίνει πολλαπλή επιλογή βάσει μιας τιμής, αντί να χρησιμοποιηθούν πολλαπλά if-else statements. Η χρήση της δομής switch μπορεί να καθιστά τον κώδικα πιο απλό και αποδοτικό.

Η δομή της εντολής switch στη γλώσσα C++ έχει την ακόλουθη σύνταξη:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
switch (expression) {
case constant1:
// κώδικας που εκτελείται αν η έκφραση έχει την τιμή της σταθεράς constant1
break;
case constant2:
// κώδικας που εκτελείται αν η έκφραση έχει την τιμή της σταθεράς constant2
break;
default:
// κώδικας που εκτελείται αν η έκφραση δεν έχει την τιμή καμίας από τις σταθερές που δηλώνονται στον switch
break;
}
switch (expression) { case constant1: // κώδικας που εκτελείται αν η έκφραση έχει την τιμή της σταθεράς constant1 break; case constant2: // κώδικας που εκτελείται αν η έκφραση έχει την τιμή της σταθεράς constant2 break; default: // κώδικας που εκτελείται αν η έκφραση δεν έχει την τιμή καμίας από τις σταθερές που δηλώνονται στον switch break; }
switch (expression) {
  case constant1:
    // κώδικας που εκτελείται αν η έκφραση έχει την τιμή της σταθεράς constant1
    break;
  case constant2:
    // κώδικας που εκτελείται αν η έκφραση έχει την τιμή της σταθεράς constant2
    break;
  default:
    // κώδικας που εκτελείται αν η έκφραση δεν έχει την τιμή καμίας από τις σταθερές που δηλώνονται στον switch
    break;
}

Η δομή επιλογής switch στη γλώσσα προγραμματισμού αξιολογεί μια έκφραση και συγκρίνει την τιμή της με τις τιμές σταθερών που ορίζονται στις εντολές case. Όταν βρίσκει μια σταθερά που έχει την ίδια τιμή με την έκφραση, εκτελείται ο κώδικας που βρίσκεται στο μπλοκ της αντίστοιχης εντολής case. Η εντολή break χρησιμοποιείται για να διακόψει την εκτέλεση του switch statement και να αποφευχθεί η εκτέλεση των εντολών που ακολουθούν. Αν δεν υπάρχει εντολή break, η εκτέλεση συνεχίζεται στην επόμενη εντολή case χωρίς να γίνεται έλεγχος των υπόλοιπων case. Τέλος, η εντολή default χρησιμοποιείται για να παρέχεται μια προκαθορισμένη ενέργεια που θα εκτελεστεί αν η τιμή της έκφρασης δεν αντιστοιχεί σε καμία από τις σταθερές των εντολών case.

Η δομή switch είναι ένα χρήσιμο εργαλείο για την πολλαπλή επιλογή με βάση μια τιμή και μπορεί να βελτιστοποιήσει τον κώδικα, εξαλείφοντας την ανάγκη για πολλαπλά if-else statements. Επίσης, είναι σημαντικό να χρησιμοποιείται η εντολή break για να αποφεύγονται παρεμβολές στην εκτέλεση του κώδικα και να διασφαλίζεται η σωστή λειτουργία της δομής switch.

Στο παρακάτω παράδειγμα χρησιμοποιούμε τον αριθμό του μήνα για να υπολογίσουμε το όνομα του μήνα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <iostream>
int main() {
int month = 8; // Αριθμητική μεταβλητή που αντιπροσωπεύει τον μήνα
std::string monthName; // Κενή συμβολοσειρά για την αποθήκευση του ονόματος του μήνα
switch (month) {
case 1:
monthName = "January";
break;
case 2:
monthName = "February";
break;
case 3:
monthName = "March";
break;
case 4:
monthName = "April";
break;
case 5:
monthName = "May";
break;
case 6:
monthName = "June";
break;
case 7:
monthName = "July";
break;
case 8:
monthName = "August";
break;
case 9:
monthName = "September";
break;
case 10:
monthName = "October";
break;
case 11:
monthName = "November";
break;
case 12:
monthName = "December";
break;
default:
monthName = "Invalid month number"; // Προκαθορισμένη τιμή για μη έγκυρο αριθμό μήνα
break;
}
std::cout << "The month is " << monthName << std::endl; // Εκτύπωση του ονόματος του μήνα
return 0;
}
#include <iostream> int main() { int month = 8; // Αριθμητική μεταβλητή που αντιπροσωπεύει τον μήνα std::string monthName; // Κενή συμβολοσειρά για την αποθήκευση του ονόματος του μήνα switch (month) { case 1: monthName = "January"; break; case 2: monthName = "February"; break; case 3: monthName = "March"; break; case 4: monthName = "April"; break; case 5: monthName = "May"; break; case 6: monthName = "June"; break; case 7: monthName = "July"; break; case 8: monthName = "August"; break; case 9: monthName = "September"; break; case 10: monthName = "October"; break; case 11: monthName = "November"; break; case 12: monthName = "December"; break; default: monthName = "Invalid month number"; // Προκαθορισμένη τιμή για μη έγκυρο αριθμό μήνα break; } std::cout << "The month is " << monthName << std::endl; // Εκτύπωση του ονόματος του μήνα return 0; }
#include <iostream>

int main() {
  int month = 8; // Αριθμητική μεταβλητή που αντιπροσωπεύει τον μήνα

  std::string monthName; // Κενή συμβολοσειρά για την αποθήκευση του ονόματος του μήνα

  switch (month) {
    case 1:
      monthName = "January";
      break;
    case 2:
      monthName = "February";
      break;
    case 3:
      monthName = "March";
      break;
    case 4:
      monthName = "April";
      break;
    case 5:
      monthName = "May";
      break;
    case 6:
      monthName = "June";
      break;
    case 7:
      monthName = "July";
      break;
    case 8:
      monthName = "August";
      break;
    case 9:
      monthName = "September";
      break;
    case 10:
      monthName = "October";
      break;
    case 11:
      monthName = "November";
      break;
    case 12:
      monthName = "December";
      break;
    default:
      monthName = "Invalid month number"; // Προκαθορισμένη τιμή για μη έγκυρο αριθμό μήνα
      break;
  }

  std::cout << "The month is " << monthName << std::endl; // Εκτύπωση του ονόματος του μήνα

  return 0;
}

[adinserter block=”2″]

Το πρόγραμμα δέχεται έναν αριθμό μήνα από τον χρήστη και εμφανίζει το αντίστοιχο όνομα του μήνα.

Αρχικά, δηλώνονται οι απαραίτητες μεταβλητές, όπως η μεταβλητή month που αποθηκεύει τον αριθμό του μήνα και η μεταβλητή monthName που θα αποθηκεύσει το όνομα του μήνα.

Στη συνέχεια, χρησιμοποιείται η δομή επιλογής switch για να ελεγχθεί η τιμή της μεταβλητής month. Ανάλογα με την τιμή της month, αντιστοιχίζεται το αντίστοιχο όνομα του μήνα στη μεταβλητή monthName. Αν η τιμή της month είναι 1, η μεταβλητή monthName θα πάρει την τιμή “January”. Αν η τιμή είναι 2, η monthName θα γίνει “February”, και ούτω καθεξής. Αν η month δεν αντιστοιχεί σε κάποια από τις έγκυρες τιμές 1 έως 12, τότε η μεταβλητή monthName θα πάρει την τιμή “Invalid month number”.

Τέλος, το πρόγραμμα εκτυπώνει το όνομα του μήνα που αποθηκεύτηκε στη μεταβλητή monthName χρησιμοποιώντας τη συνάρτηση std::cout.

Έτσι, αν ο χρήστης εισάγει την τιμή 8, το πρόγραμμα θα εμφανίσει το μήνα “August” στην οθόνη.

Το “break” χρησιμοποιείται για να διακόψει την εκτέλεση ενός “switch statement” όταν εκτελείται ένα συγκεκριμένο “case” που ταιριάζει με την τιμή της έκφρασης που αξιολογείται.

Αν δεν χρησιμοποιηθεί το “break”, ο κώδικας θα συνεχίσει να εκτελείται στα επόμενα “cases” μέχρι να συναντήσει μια εντολή “break” ή να φτάσει στο τέλος του “switch statement”.

Παρακάτω παρατίθενται δύο παραδείγματα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// Χωρίς keyword break
switch (dayOfWeek) {
case 0:
std::cout << "Sunday" << std::endl;
case 1:
std::cout << "Monday" << std::endl;
case 2:
std::cout << "Tuesday" << std::endl;
case 3:
std::cout << "Wednesday" << std::endl;
case 4:
std::cout << "Thursday" << std::endl;
case 5:
std::cout << "Friday" << std::endl;
case 6:
std::cout << "Saturday" << std::endl;
}
// Με keyword break
switch (dayOfWeek) {
case 0:
std::cout << "Sunday" << std::endl;
break;
case 1:
std::cout << "Monday" << std::endl;
break;
case 2:
std::cout << "Tuesday" << std::endl;
break;
case 3:
std::cout << "Wednesday" << std::endl;
break;
case 4:
std::cout << "Thursday" << std::endl;
break;
case 5:
std::cout << "Friday" << std::endl;
break;
case 6:
std::cout << "Saturday" << std::endl;
break;
}
// Χωρίς keyword break switch (dayOfWeek) { case 0: std::cout << "Sunday" << std::endl; case 1: std::cout << "Monday" << std::endl; case 2: std::cout << "Tuesday" << std::endl; case 3: std::cout << "Wednesday" << std::endl; case 4: std::cout << "Thursday" << std::endl; case 5: std::cout << "Friday" << std::endl; case 6: std::cout << "Saturday" << std::endl; } // Με keyword break switch (dayOfWeek) { case 0: std::cout << "Sunday" << std::endl; break; case 1: std::cout << "Monday" << std::endl; break; case 2: std::cout << "Tuesday" << std::endl; break; case 3: std::cout << "Wednesday" << std::endl; break; case 4: std::cout << "Thursday" << std::endl; break; case 5: std::cout << "Friday" << std::endl; break; case 6: std::cout << "Saturday" << std::endl; break; }
// Χωρίς keyword break
switch (dayOfWeek) {
  case 0:
    std::cout << "Sunday" << std::endl;
  case 1:
    std::cout << "Monday" << std::endl;
  case 2:
    std::cout << "Tuesday" << std::endl;
  case 3:
    std::cout << "Wednesday" << std::endl;
  case 4:
    std::cout << "Thursday" << std::endl;
  case 5:
    std::cout << "Friday" << std::endl;
  case 6:
    std::cout << "Saturday" << std::endl;
}

// Με keyword break
switch (dayOfWeek) {
  case 0:
    std::cout << "Sunday" << std::endl;
    break;
  case 1:
    std::cout << "Monday" << std::endl;
    break;
  case 2:
    std::cout << "Tuesday" << std::endl;
    break;
  case 3:
    std::cout << "Wednesday" << std::endl;
    break;
  case 4:
    std::cout << "Thursday" << std::endl;
    break;
  case 5:
    std::cout << "Friday" << std::endl;
    break;
  case 6:
    std::cout << "Saturday" << std::endl;
    break;
}

Στο πρώτο παράδειγμα, δεν χρησιμοποιείται το keyword break, έτσι όταν η μεταβλητή dayOfWeek είναι ίση με 0, εκτυπώνεται το μήνυμα “Sunday”, αλλά συνεχίζει να εκτελείται και ο κώδικας στο case 1 (“Monday”), case 2 (“Tuesday”) και ούτω καθεξής, εμφανίζοντται στην οθόνη όλα τα μηνύματα από την πρώτη σταθερά που ταιριάζει μέχρι το τέλος του switch statement.

Στο δεύτερο παράδειγμα, χρησιμοποιείται το keyword break, έτσι όταν η μεταβλητή dayOfWeek είναι ίση με 0, εκτυπώνεται το μήνυμα “Sunday”, και η εκτέλεση διακόπτεται και δεν εκτελούνται οι υπόλοιπες εντολές του switch statement. Το ίδιο συμβαίνει και για τις υπόλοιπες σταθερές.

[adinserter block=”3″]

Το λέξεις-κλειδιά “break” και “default” χρησιμοποιούνται στη γλώσσα προγραμματισμού για τη διαχείριση του “switch statement”.

Το “break” είναι χρήσιμο για να διακοπεί η εκτέλεση του “switch statement” και να εξοικονομηθεί χρόνος εκτέλεσης κώδικα, όταν δεν απαιτείται να συνεχίσει η εκτέλεση των εντολών μετά από μια επιτυχημένη αντιστοίχιση.

Το “default” χρησιμοποιείται για να καθορίσει μια ενέργεια που θα εκτελείται όταν δεν υπάρχει αντιστοίχιση με τις σταθερές που έχουν δηλωθεί στις εντολές “case”. Δηλαδή, αν καμία από τις σταθερές που ελέγχονται στο “switch” δεν ταιριάζει, η εκτέλεση θα μεταφερθεί στο τμήμα “default” και οι εντολές που έχουν δηλωθεί εκεί θα εκτελεστούν.

Στο παρακάτω παράδειγμα, η μεταβλητή dayOfWeek έχει τιμή 10, η οποία δεν αντιστοιχεί σε καμία από τις σταθερές που έχουν δηλωθεί στις εντολές case. Στη συνέχεια, εκτελείται η εντολή που δηλώνεται στο default block, δηλαδή εμφανίζεται το μήνυμα “Invalid day of week”:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <iostream>
int main() {
int dayOfWeek = 2; // Ορίζουμε μια μεταβλητή dayOfWeek για να αντιπροσωπεύει την ημέρα της εβδομάδας
switch (dayOfWeek) {
case 0:
std::cout << "Sunday" << std::endl; // Αν η dayOfWeek είναι 0, εκτυπώνουμε "Sunday"
break;
case 1:
std::cout << "Monday" << std::endl; // Αν η dayOfWeek είναι 1, εκτυπώνουμε "Monday"
break;
case 2:
std::cout << "Tuesday" << std::endl; // Αν η dayOfWeek είναι 2, εκτυπώνουμε "Tuesday"
break;
case 3:
std::cout << "Wednesday" << std::endl; // Αν η dayOfWeek είναι 3, εκτυπώνουμε "Wednesday"
break;
case 4:
std::cout << "Thursday" << std::endl; // Αν η dayOfWeek είναι 4, εκτυπώνουμε "Thursday"
break;
case 5:
std::cout << "Friday" << std::endl; // Αν η dayOfWeek είναι 5, εκτυπώνουμε "Friday"
break;
case 6:
std::cout << "Saturday" << std::endl; // Αν η dayOfWeek είναι 6, εκτυπώνουμε "Saturday"
break;
default:
std::cout << "Invalid day of week" << std::endl; // Αν η dayOfWeek δεν αντιστοιχεί σε καμία από τις προηγούμενες περιπτώσεις, εκτυπώνουμε "Invalid day of week"
break;
}
return 0;
}
#include <iostream> int main() { int dayOfWeek = 2; // Ορίζουμε μια μεταβλητή dayOfWeek για να αντιπροσωπεύει την ημέρα της εβδομάδας switch (dayOfWeek) { case 0: std::cout << "Sunday" << std::endl; // Αν η dayOfWeek είναι 0, εκτυπώνουμε "Sunday" break; case 1: std::cout << "Monday" << std::endl; // Αν η dayOfWeek είναι 1, εκτυπώνουμε "Monday" break; case 2: std::cout << "Tuesday" << std::endl; // Αν η dayOfWeek είναι 2, εκτυπώνουμε "Tuesday" break; case 3: std::cout << "Wednesday" << std::endl; // Αν η dayOfWeek είναι 3, εκτυπώνουμε "Wednesday" break; case 4: std::cout << "Thursday" << std::endl; // Αν η dayOfWeek είναι 4, εκτυπώνουμε "Thursday" break; case 5: std::cout << "Friday" << std::endl; // Αν η dayOfWeek είναι 5, εκτυπώνουμε "Friday" break; case 6: std::cout << "Saturday" << std::endl; // Αν η dayOfWeek είναι 6, εκτυπώνουμε "Saturday" break; default: std::cout << "Invalid day of week" << std::endl; // Αν η dayOfWeek δεν αντιστοιχεί σε καμία από τις προηγούμενες περιπτώσεις, εκτυπώνουμε "Invalid day of week" break; } return 0; }
#include <iostream>

int main() {
    int dayOfWeek = 2; // Ορίζουμε μια μεταβλητή dayOfWeek για να αντιπροσωπεύει την ημέρα της εβδομάδας

    switch (dayOfWeek) {
        case 0:
            std::cout << "Sunday" << std::endl; // Αν η dayOfWeek είναι 0, εκτυπώνουμε "Sunday"
            break;
        case 1:
            std::cout << "Monday" << std::endl; // Αν η dayOfWeek είναι 1, εκτυπώνουμε "Monday"
            break;
        case 2:
            std::cout << "Tuesday" << std::endl; // Αν η dayOfWeek είναι 2, εκτυπώνουμε "Tuesday"
            break;
        case 3:
            std::cout << "Wednesday" << std::endl; // Αν η dayOfWeek είναι 3, εκτυπώνουμε "Wednesday"
            break;
        case 4:
            std::cout << "Thursday" << std::endl; // Αν η dayOfWeek είναι 4, εκτυπώνουμε "Thursday"
            break;
        case 5:
            std::cout << "Friday" << std::endl; // Αν η dayOfWeek είναι 5, εκτυπώνουμε "Friday"
            break;
        case 6:
            std::cout << "Saturday" << std::endl; // Αν η dayOfWeek είναι 6, εκτυπώνουμε "Saturday"
            break;
        default:
            std::cout << "Invalid day of week" << std::endl; // Αν η dayOfWeek δεν αντιστοιχεί σε καμία από τις προηγούμενες περιπτώσεις, εκτυπώνουμε "Invalid day of week"
            break;
    }

    return 0;
}

Ο παραπάνω κώδικας χρησιμοποιεί έναν διακόπτη (switch) για να ελέγξει την τιμή της μεταβλητής dayOfWeek και να εκτελέσει ανάλογες ενέργειες ανάλογα με την τιμή αυτής της μεταβλητής. Αφού η τιμή της dayOfWeek οριστεί σε 2, ο κώδικας θα εκτελέσει τον κώδικα που βρίσκεται στην περίπτωση (case) 2.

Το αποτέλεσμα στην οθόνη θα είναι:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Tuesday
Tuesday
Tuesday

Αυτό συμβαίνει επειδή η τιμή της μεταβλητής dayOfWeek είναι 2 και ο κώδικας εκτελεί την εντολή std::cout << "Tuesday" << std::endl;, που εκτυπώνει το κείμενο “Tuesday” στην οθόνη. Ο κώδικας συνεχίζει να εκτελείται μετά το switch και η main συνάρτηση επιστρέφει την τιμή 0.

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