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 επιτρέπει την εκτέλεση ενός από πολλά τμήματα κώδικα, ανάλογα με την τιμή μιας μεταβλητής ελέγχου. Αντί να χρησιμοποιείτε πολλαπλές δηλώσεις if..else, μπορείτε να αντικαταστήσετε αυτήν τη λογική με την δομή switch.

Η σύνταξη της δομής switch είναι:

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

Οι τιμές value1, value2, value3 κ.λπ. είναι οι πιθανές τιμές που μπορεί να έχει η μεταβλητή expression. Ο κώδικας που βρίσκεται μέσα σε κάθε case θα εκτελεστεί μόνο αν η expression έχει την αντίστοιχη τιμή. Αν η expression δεν έχει καμία από τις παραπάνω τιμές, τότε εκτελείται ο κώδικας που βρίσκεται μέσα στο default.

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
int month = 4;
char* weekday;
switch(month) {
case 1:
weekday = "Sunday";
break;
case 2:
weekday = "Monday";
break;
case 3:
weekday = "Tuesday";
break;
case 4:
weekday = "Wednesday";
break;
case 5:
weekday = "Thursday";
break;
case 6:
weekday = "Friday";
break;
case 7:
weekday = "Saturday";
break;
default:
printf("Invalid month\n"); // Εκτυπώνει μήνυμα για μη έγκυρο μήνα
return 1;
}
printf("The fourth month is %s\n", weekday); // Εκτυπώνει το όνομα της ημέρας για τον τέταρτο μήνα
return 0;
}
#include <stdio.h> int main() { int month = 4; char* weekday; switch(month) { case 1: weekday = "Sunday"; break; case 2: weekday = "Monday"; break; case 3: weekday = "Tuesday"; break; case 4: weekday = "Wednesday"; break; case 5: weekday = "Thursday"; break; case 6: weekday = "Friday"; break; case 7: weekday = "Saturday"; break; default: printf("Invalid month\n"); // Εκτυπώνει μήνυμα για μη έγκυρο μήνα return 1; } printf("The fourth month is %s\n", weekday); // Εκτυπώνει το όνομα της ημέρας για τον τέταρτο μήνα return 0; }
#include <stdio.h>

int main() {
    int month = 4;
    char* weekday;

    switch(month) {
        case 1:
            weekday = "Sunday";
            break;
        case 2:
            weekday = "Monday";
            break;
        case 3:
            weekday = "Tuesday";
            break;
        case 4:
            weekday = "Wednesday";
            break;
        case 5:
            weekday = "Thursday";
            break;
        case 6:
            weekday = "Friday";
            break;
        case 7:
            weekday = "Saturday";
            break;
        default:
            printf("Invalid month\n"); // Εκτυπώνει μήνυμα για μη έγκυρο μήνα
            return 1;
    }

    printf("The fourth month is %s\n", weekday); // Εκτυπώνει το όνομα της ημέρας για τον τέταρτο μήνα
    return 0;
}

Ο κώδικας αυτός χρησιμοποιεί έναν διακόπτη (switch) για να αντιστοιχίσει έναν μήνα με την αντίστοιχη ημέρα της εβδομάδας. Η μεταβλητή month παίρνει την τιμή 4, προσδιορίζοντας τον τέταρτο μήνα.

Ανάλογα με την τιμή της μεταβλητής month, ο κώδικας εκχωρεί το κατάλληλο όνομα ημέρας στη μεταβλητή weekday. Στη συγκεκριμένη περίπτωση, το weekday θα πάρει την τιμή “Wednesday” καθώς ο τέταρτος μήνας αντιστοιχεί στην Τετάρτη.

Τέλος, ο κώδικας εκτυπώνει το όνομα της ημέρας για τον τέταρτο μήνα χρησιμοποιώντας την εντολή printf. Αν η τιμή της μεταβλητής month δεν αντιστοιχεί σε κανέναν έγκυρο μήνα, τότε εκτυπώνεται το μήνυμα “Invalid month” και το πρόγραμμα τερματίζει με επιστροφή τιμής 1.

Στη γλώσσα προγραμματισμού C, όταν η εκτέλεση του κώδικα φτάσει στη δήλωση break εντός ενός block switch, τότε διακόπτεται η εκτέλεση του block και συνεχίζεται με την επόμενη εντολή μετά το block switch.

Οι δηλώσεις break χρησιμοποιούνται συνήθως σε κάθε case block εντός της switch statement, όπως στο παράδειγμα που παρουσιάζεται παρακάτω:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
switch (x) {
case 1:
// κάποιος κώδικας
break;
case 2:
// κάποιος άλλος κώδικας
break;
default:
// καμία από τις παραπάνω περιπτώσεις
}
switch (x) { case 1: // κάποιος κώδικας break; case 2: // κάποιος άλλος κώδικας break; default: // καμία από τις παραπάνω περιπτώσεις }
switch (x) {
    case 1:
        // κάποιος κώδικας
        break;
    case 2:
        // κάποιος άλλος κώδικας
        break;
    default:
        // καμία από τις παραπάνω περιπτώσεις
}

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

Στη γλώσσα προγραμματισμού C, η δήλωση default στη switch statement ορίζει ένα block κώδικα που θα εκτελείται εάν δεν υπάρχει αντιστοιχία σε κάποιο από τα cases.

Αν υπάρχει αντιστοιχία σε κάποιο case, τότε το block κώδικα που ορίζεται στο αντίστοιχο case εκτελείται. Αν δεν υπάρχει αντιστοιχία με κάποιο case, τότε εκτελείται το block κώδικα που ορίζεται στο default.

Ένα παράδειγμα είναι το εξής:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
int day = 8; // Μεταβλητή που αντιστοιχεί στην ημέρα της εβδομάδας
switch(day) { // Δομή επιλογής switch για τον έλεγχο της τιμής της μεταβλητής day
case 1: // Αν η τιμή της μεταβλητής day είναι 1
printf("Monday\n"); // Εκτύπωση του μηνύματος "Monday"
break; // Έξοδος από τη δομή switch
case 2: // Αν η τιμή της μεταβλητής day είναι 2
printf("Tuesday\n"); // Εκτύπωση του μηνύματος "Tuesday"
break; // Έξοδος από τη δομή switch
case 3: // Αν η τιμή της μεταβλητής day είναι 3
printf("Wednesday\n"); // Εκτύπωση του μηνύματος "Wednesday"
break; // Έξοδος από τη δομή switch
case 4: // Αν η τιμή της μεταβλητής day είναι 4
printf("Thursday\n"); // Εκτύπωση του μηνύματος "Thursday"
break; // Έξοδος από τη δομή switch
case 5: // Αν η τιμή της μεταβλητής day είναι 5
printf("Friday\n"); // Εκτύπωση του μηνύματος "Friday"
break; // Έξοδος από τη δομή switch
default: // Αν η τιμή της μεταβλητής day δεν ταιριάζει με καμία από τις προηγούμενες περιπτώσεις
printf("Weekend\n"); // Εκτύπωση του μηνύματος "Weekend"
}
return 0; // Επιστροφή της τιμής 0 για να υποδηλώσει την επιτυχή ολοκλήρωση του προγράμματος
}
#include <stdio.h> int main() { int day = 8; // Μεταβλητή που αντιστοιχεί στην ημέρα της εβδομάδας switch(day) { // Δομή επιλογής switch για τον έλεγχο της τιμής της μεταβλητής day case 1: // Αν η τιμή της μεταβλητής day είναι 1 printf("Monday\n"); // Εκτύπωση του μηνύματος "Monday" break; // Έξοδος από τη δομή switch case 2: // Αν η τιμή της μεταβλητής day είναι 2 printf("Tuesday\n"); // Εκτύπωση του μηνύματος "Tuesday" break; // Έξοδος από τη δομή switch case 3: // Αν η τιμή της μεταβλητής day είναι 3 printf("Wednesday\n"); // Εκτύπωση του μηνύματος "Wednesday" break; // Έξοδος από τη δομή switch case 4: // Αν η τιμή της μεταβλητής day είναι 4 printf("Thursday\n"); // Εκτύπωση του μηνύματος "Thursday" break; // Έξοδος από τη δομή switch case 5: // Αν η τιμή της μεταβλητής day είναι 5 printf("Friday\n"); // Εκτύπωση του μηνύματος "Friday" break; // Έξοδος από τη δομή switch default: // Αν η τιμή της μεταβλητής day δεν ταιριάζει με καμία από τις προηγούμενες περιπτώσεις printf("Weekend\n"); // Εκτύπωση του μηνύματος "Weekend" } return 0; // Επιστροφή της τιμής 0 για να υποδηλώσει την επιτυχή ολοκλήρωση του προγράμματος }
#include <stdio.h>

int main() {
    int day = 8; // Μεταβλητή που αντιστοιχεί στην ημέρα της εβδομάδας

    switch(day) { // Δομή επιλογής switch για τον έλεγχο της τιμής της μεταβλητής day
        case 1: // Αν η τιμή της μεταβλητής day είναι 1
            printf("Monday\n"); // Εκτύπωση του μηνύματος "Monday"
            break; // Έξοδος από τη δομή switch
        case 2: // Αν η τιμή της μεταβλητής day είναι 2
            printf("Tuesday\n"); // Εκτύπωση του μηνύματος "Tuesday"
            break; // Έξοδος από τη δομή switch
        case 3: // Αν η τιμή της μεταβλητής day είναι 3
            printf("Wednesday\n"); // Εκτύπωση του μηνύματος "Wednesday"
            break; // Έξοδος από τη δομή switch
        case 4: // Αν η τιμή της μεταβλητής day είναι 4
            printf("Thursday\n"); // Εκτύπωση του μηνύματος "Thursday"
            break; // Έξοδος από τη δομή switch
        case 5: // Αν η τιμή της μεταβλητής day είναι 5
            printf("Friday\n"); // Εκτύπωση του μηνύματος "Friday"
            break; // Έξοδος από τη δομή switch
        default: // Αν η τιμή της μεταβλητής day δεν ταιριάζει με καμία από τις προηγούμενες περιπτώσεις
            printf("Weekend\n"); // Εκτύπωση του μηνύματος "Weekend"
    }

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

Ο παραπάνω κώδικας σε C ελέγχει την τιμή της μεταβλητής day και εκτελεί διάφορες ενέργειες ανάλογα με την τιμή που έχει η μεταβλητή.

Ανάλυση του κώδικα:

  • Η μεταβλητή day έχει τιμή 8.
  • Η δομή επιλογής switch ελέγχει την τιμή της μεταβλητής day.
  • Αν η τιμή της day είναι 1, εκτυπώνεται το μήνυμα “Monday”.
  • Αν η τιμή της day είναι 2, εκτυπώνεται το μήνυμα “Tuesday”.
  • Αν η τιμή της day είναι 3, εκτυπώνεται το μήνυμα “Wednesday”.
  • Αν η τιμή της day είναι 4, εκτυπώνεται το μήνυμα “Thursday”.
  • Αν η τιμή της day είναι 5, εκτυπώνεται το μήνυμα “Friday”.
  • Σε περίπτωση που η τιμή της day δεν ταιριάζει με καμία από τις προηγούμενες περιπτώσεις, εκτυπώνεται το μήνυμα “Weekend”.
  • Το πρόγραμμα ολοκληρώνεται με την επιστροφή της τιμής 0.

Έτσι, στην προκειμένη περίπτωση, καθώς η τιμή της μεταβλητής day είναι 8 και δεν ταιριάζει με καμία από τις προηγούμενες περιπτώσεις, εκτυπώνεται το μήνυμα “Weekend”.

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