4.5. Υπό συνθήκη διακλάδωση switch

Υπό συνθήκη διακλάδωση switch

Αν και η κλίμακα if – else – if μπορεί να πραγματοποιεί ελέγχους διαφόρων ειδών, είναι δύσχρηστη καθώς δεν παρέχει εποπτεία στον προγραμματιστή και καθυστερεί στην εκτέλεση. Για τις περιπτώσεις πολλαπλής διακλάδωσης η C διαθέτει την πολυκλαδική εντολή switch, η οποία έχει την ακόλουθη σύνταξη:

 

switch(έκφραση) 
{  
     case (σταθ.-έκφρ. 1): 
         προτάσεις; 
     break; case (σταθ.-έκφρ. 2): 
         προτάσεις; 
     break; 
. . . . . . 
     case (σταθ.-έκφρ. Ν): 
         προτάσεις; 
     break; default: 
         προτάσεις; 
     break; 
}

 

Διαφήμιση

 

Η πρόταση switch επιτρέπει τον προσδιορισμό απεριόριστου αριθμού διαδρομών, ανάλογα με την τιμή της έκφρασης. Υπολογίζεται η έκφραση και η τιμή της συγκρίνεται διαδοχικά με τις σταθερές εκφράσεις (σταθ.-έκφρ. 1, σταθ.-έκφρ. 2, …). Ο έλεγχος μεταφέρεται στις προτάσεις που είναι κάτω από τη σταθ.-έκφρ. με την οποία ισούται η τιμή της έκφρασης. Εάν δεν ισούται με καμία από τις σταθερές εκφράσεις, ο έλεγχος μεταφέρεται στις προτάσεις που ακολουθούν την ετικέτα default, εάν βέβαια αυτή υπάρχει, αλλιώς στην πρόταση που ακολουθεί το σώμα της switch.

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

 

Διαφήμιση

 

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

Η λειτουργία της switch διέπεται από το ακόλουθο σύνολο κανόνων:

  • Κάθε case πρέπει να έχει μία int ή char σταθερά έκφραση.
  • Δύο case δεν μπορούν να έχουν την ίδια τιμή.
  • Οι προτάσεις κάτω από την ετικέτα default εκτελούνται όταν δεν ικανοποιείται καμία από τις case ετικέτες.
  • Η default δεν είναι απαραίτητα η τελευταία ετικέτα.

 

Διαφήμιση
SEE ALL Add a note
YOU
Add your Comment
 
error: Το περιεχόμενο προστατεύεται!!
X