3.5 Η δομή επιλογής Switch στην γλώσσα C#

Η δήλωση switch (switch statement) χρησιμοποιείται για να επιλέξει έναν από πολλούς κώδικες που θα εκτελεστούν. Σας επιτρέπει να εκτελέσετε διαφορετικό κώδικα ανάλογα με την τιμή μιας μεταβλητής ή μια έκφραση.

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

switch (expression)
{
    case value1:
        // Κώδικας που εκτελείται αν η expression έχει την τιμή value1
        break;
    case value2:
        // Κώδικας που εκτελείται αν η expression έχει την τιμή value2
        break;
    case value3:
        // Κώδικας που εκτελείται αν η expression έχει την τιμή value3
        break;
    default:
        // Κώδικας που εκτελείται αν η expression δεν ταιριάζει με καμία από τις παραπάνω τιμές
        break;
}

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

Παράδειγμα:

using System;

class Program
{
    static void Main()
    {
        int day = 3; // Ορισμός μιας μεταβλητής day και ανάθεση της τιμής 3

        switch (day) // Έναρξη δομής switch με βάση τη μεταβλητή day
        {
            case 1: // Αν η τιμή της day είναι 1
                Console.WriteLine("Δευτέρα"); // Εκτύπωση του κειμένου "Δευτέρα"
                break; // Έξοδος από τη δομή switch
            case 2: // Αν η τιμή της day είναι 2
                Console.WriteLine("Τρίτη"); // Εκτύπωση του κειμένου "Τρίτη"
                break; // Έξοδος από τη δομή switch
            case 3: // Αν η τιμή της day είναι 3
                Console.WriteLine("Τετάρτη"); // Εκτύπωση του κειμένου "Τετάρτη"
                break; // Έξοδος από τη δομή switch
            case 4: // Αν η τιμή της day είναι 4
                Console.WriteLine("Πέμπτη"); // Εκτύπωση του κειμένου "Πέμπτη"
                break; // Έξοδος από τη δομή switch
            case 5: // Αν η τιμή της day είναι 5
                Console.WriteLine("Παρασκευή"); // Εκτύπωση του κειμένου "Παρασκευή"
                break; // Έξοδος από τη δομή switch
            default: // Αν η τιμή της day δεν αντιστοιχεί σε καμία από τις προηγούμενες περιπτώσεις
                Console.WriteLine("Σαββατοκύριακο"); // Εκτύπωση του κειμένου "Σαββατοκύριακο"
                break; // Έξοδος από τη δομή switch
        }
    }
}

[adinserter block=”2″]

Ο παραπάνω κώδικας εκτελεί την ακόλουθη λειτουργία:

  1. Δημιουργείται μια μεταβλητή day και της ανατίθεται η τιμή 3.
  2. Έπειτα, χρησιμοποιείται η δομή επιλογής switch για να ελεγχθεί η τιμή της μεταβλητής day.
  3. Αν η τιμή της day είναι 1, εκτυπώνεται το κείμενο “Δευτέρα”.
  4. Αν η τιμή της day είναι 2, εκτυπώνεται το κείμενο “Τρίτη”.
  5. Αν η τιμή της day είναι 3, εκτυπώνεται το κείμενο “Τετάρτη”.
  6. Αν η τιμή της day είναι 4, εκτυπώνεται το κείμενο “Πέμπτη”.
  7. Αν η τιμή της day είναι 5, εκτυπώνεται το κείμενο “Παρασκευή”.
  8. Αν η τιμή της day δεν αντιστοιχεί σε καμία από τις προηγούμενες περιπτώσεις, εκτυπώνεται το κείμενο “Σαββατοκύριακο”.
  9. Η εκτέλεση του προγράμματος ολοκληρώνεται.

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

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

Όταν η γλώσσα C# φτάνει σε μια δήλωση break, διακόπτει την εκτέλεση του block switch.

Αυτό έχει ως αποτέλεσμα τη διακοπή της εκτέλεσης επιπλέον κώδικα και των δοκιμών case μέσα στο block.

Όταν βρεθεί μια αντιστοιχία (match) και ολοκληρωθεί η εργασία, είναι καιρός για μια δήλωση break. Δεν υπάρχει ανάγκη για περισσότερες δοκιμές.

Η λέξη-κλειδί default είναι προαιρετική και καθορίζει κάποιον κώδικα που θα εκτελεστεί αν δεν υπάρχει αντιστοιχία (match) στα case:

Όταν η γλώσσα C# δεν βρίσκει καμία αντιστοιχία (match) στα case εντός της δήλωσης switch, τότε η εκτέλεση μεταφέρεται στο μπλοκ default, αν υπάρχει. Ο κώδικας μέσα στο μπλοκ default εκτελείται και μπορεί να περιλαμβάνει τις απαραίτητες ενέργειες που θέλουμε να πραγματοποιήσουμε σε αυτήν την περίπτωση.

Παράδειγμα:

using System;

class Program
{
    static void Main()
    {
        int day = 7;

        // Χρησιμοποιούμε την εντολή switch για να ελέγξουμε την τιμή της μεταβλητής day
        switch (day)
        {
            case 1:
                Console.WriteLine("Δευτέρα");
                break;
            case 2:
                Console.WriteLine("Τρίτη");
                break;
            case 3:
                Console.WriteLine("Τετάρτη");
                break;
            case 4:
                Console.WriteLine("Πέμπτη");
                break;
            case 5:
                Console.WriteLine("Παρασκευή");
                break;
            default:
                Console.WriteLine("Μη έγκυρη ημέρα");
                break;
        }

    }
}

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

  1. Αρχικά, ορίζεται η μεταβλητή day και της ανατίθεται η τιμή 7.
  2. Στη συνέχεια, χρησιμοποιείται η εντολή switch για να ελεγχθεί η τιμή της μεταβλητής day.
  3. Έχουμε πέντε πιθανές περιπτώσεις (case) για τις τιμές 1, 2, 3, 4 και 5, που αντιστοιχούν στις καθημερινές της εβδομάδας.
  4. Αν η τιμή της day ταιριάζει με ένα από τα case, τότε εκτελείται η αντίστοιχη εντολή εκτύπωσης με τη χρήση της Console.WriteLine(). Για παράδειγμα, αν η τιμή της day είναι 1, θα εκτυπωθεί το μήνυμα “Δευτέρα”.
  5. Αν η τιμή της day δεν ταιριάζει με κανένα από τα case, τότε εκτελείται η εντολή default, η οποία εκτυπώνει το μήνυμα “Μη έγκυρη ημέρα”.

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

Όταν εκτελέσετε τον παραπάνω κώδικα, αν η τιμή της μεταβλητής day είναι 7, τότε θα εμφανιστεί το ακόλουθο αποτέλεσμα:

Μη έγκυρη ημέρα

Αυτό συμβαίνει διότι η τιμή 7 της μεταβλητής day δεν αντιστοιχεί σε καμία από τις περιπτώσεις (case) που ορίστηκαν στην switch δομή. Έτσι, εκτελείται η εντολή default, η οποία εκτυπώνει το μήνυμα “Μη έγκυρη ημέρα”.

Σημείωση: Η δήλωση default μπορεί να είναι παρούσα σε μια δήλωση switch, αλλά δεν είναι υποχρεωτική. Εάν δεν παρέχεται κάποια δήλωση default και δεν υπάρχει αντιστοιχία με κανένα case, τότε η εκτέλεση του switch θα προχωρήσει στο επόμενο κομμάτι κώδικα μετά το switch.

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