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

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

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

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 μπορεί να καθιστά τον κώδικα πιο απλό και ευανάγνωστο, ειδικά όταν έχουμε πολλές πιθανές τιμές προς ελέγχο.

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

#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, όπως στο παράδειγμα που παρουσιάζεται παρακάτω:

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.

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

#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 !!
Μετάβαση σε γραμμή εργαλείων