Συγκριτικό διάγραμμα
Βάση σύγκρισης | αν-αλλιώς | διακόπτης |
---|---|---|
Βασικός | Η εντολή που θα εκτελεστεί εξαρτάται από την έξοδο της έκφρασης εντός της δήλωσης. | Η εντολή που θα εκτελεστεί αποφασίζεται από το χρήστη. |
Εκφραση | if-else δήλωση χρησιμοποιεί πολλαπλές δηλώσεις για πολλαπλές επιλογές. | διακόπτης χρησιμοποιεί μια ενιαία έκφραση για πολλαπλές επιλογές. |
Δοκιμές | εάν-else δοκιμή δήλωσης για ισότητα καθώς και για λογική έκφραση. | switch statement test μόνο για ισότητα. |
Εκτίμηση | εάν η πρόταση αξιολογεί τον ακέραιο χαρακτήρα, τον χαρακτήρα, τον δείκτη ή τον τύπο κινητής υποδιαστολής ή τον τύπο boolean. | διακόπτη εκτίμησης μόνο αξία χαρακτήρα ή ακέραιος. |
Ακολουθία εκτέλεσης | Είτε εάν η εντολή θα εκτελεστεί είτε αλλιώς θα εκτελεστεί η δήλωση. | switch statement εκτελεί μία περίπτωση μετά την άλλη μέχρι να εμφανιστεί μια εντολή break ή να φτάσει στο τέλος της εντολής διακόπτη. |
Προεπιλεγμένη εκτέλεση | Εάν η συνθήκη εντός εάν οι δηλώσεις είναι ψευδείς, τότε από προεπιλογή η εντολή else εκτελείται αν δημιουργηθεί. | Εάν η κατάσταση εντός των εντολών διακόπτη δεν ταιριάζει με καμία από τις περιπτώσεις, για εκείνη την περίπτωση οι προεπιλεγμένες δηλώσεις εκτελούνται αν δημιουργηθούν. |
Επεξεργασία | Είναι δύσκολο να επεξεργαστείτε τη δήλωση if-else, εάν χρησιμοποιείται η ένθετη εντολή if-else. | Είναι εύκολο να επεξεργαστείτε τα κουτιά διακόπτη καθώς αυτά αναγνωρίζονται εύκολα. |
Ορισμός άλλου
Οι καταστάσεις if-else ανήκουν σε δηλώσεις επιλογής στο OOP. Η γενική μορφή των δηλώσεων if-else έχει ως εξής
εάν (έκφραση) {δήλωση (ες)} άλλο {δήλωση (ες)}
όπου "if" και "else" είναι οι λέξεις-κλειδιά, και οι δηλώσεις μπορούν να είναι μια ενιαία δήλωση ή ένα μπλοκ των δηλώσεων. Η έκφραση αξιολογείται ως "αληθής" για οποιαδήποτε μη μηδενική τιμή και για το μηδέν εκτιμάται ότι είναι "ψευδής".
Η έκφραση if statement μπορεί να περιέχει έναν ακέραιο, χαρακτήρα, δείκτη, πλωτό σημείο ή μπορεί να είναι ένας τύπος boolean. Η εντολή else είναι προαιρετική σε μια εντολή if-else. Εάν η έκφραση επιστρέψει αληθής, οι εντολές εντός if statement εκτελούνται και αν επιστρέψει ψευδείς οι δηλώσεις μέσα σε άλλη εντολή εκτελούνται και, σε περίπτωση που μια εντολή else δεν είναι δημιουργημένη, δεν εκτελείται καμία ενέργεια και ο έλεγχος του προγράμματος ξεπερνά μιας δήλωσης if-else.
Μας επιτρέπει να καταλάβουμε με ένα παράδειγμα.
int ί = 45, j = 34; αν (i == 45 & j == 34) {cout << "i jouou επιλέξτε σκοτεινή choclate"? Διακοπή; περίπτωση 2: cout << "επιλέγετε καραμέλα"? Διακοπή; περίπτωση 3: cout << "επιλέγετε lollypop"; Διακοπή; . . default cout << "δεν επιλέγετε τίποτα"; }}
Εδώ, η τιμή του "i" θα αποφασίσει ποια περίπτωση πρόκειται να εκτελεστεί, εάν ένας χρήστης δίδει την τιμή του "i" εκτός από 1, 2 ή 3, τότε εκτελείται η προεπιλεγμένη περίπτωση.
Βασικές διαφορές μεταξύ if-else και switch
- Η έκφραση μέσα εάν η δήλωση αποφασίζει αν θα εκτελέσει τις δηλώσεις μέσα εάν μπλοκάρει ή κάτω από άλλο μπλοκ. Από την άλλη πλευρά, η έκφραση μέσα στο διακόπτη διακόπτη αποφασίζει σε ποια περίπτωση να εκτελέσει.
- Μπορείτε να έχετε πολλαπλή if statement για πολλαπλές επιλογές δηλώσεων. Στον διακόπτη, έχετε μόνο μια έκφραση για τις πολλαπλές επιλογές.
- Η δήλωση if-esle ελέγχει την ισότητα καθώς και τη λογική έκφραση. Από την άλλη πλευρά, ο έλεγχος της αλλαγής μόνο για την ισότητα.
- Η εντολή if αξιολογεί τον ακέραιο τύπο, τον χαρακτήρα, τον δείκτη ή τον τύπο πλωτού σημείου ή τον τύπο boolean. Από την άλλη πλευρά, η εντολή διακόπτη αξιολογεί μόνο χαρακτήρα ή τύπο ακέραιου τύπου.
- Η ακολουθία εκτέλεσης είναι σαν οποιαδήποτε δήλωση κάτω από το εάν το μπλοκ θα εκτελεστεί ή θα εκτελεστούν οι δηλώσεις κάτω από το άλλο block statement. Από την άλλη πλευρά, η έκφραση στο statement switch αποφασίζει σε ποια περίπτωση θα εκτελεστεί και αν δεν εφαρμόσετε μια εντολή break μετά από κάθε περίπτωση θα εκτελεστεί μέχρι το τέλος της εντολής switch.
- Αν η έκφραση στο εσωτερικό, αν τα turns outs είναι ψευδής, θα εκτελεστεί δήλωση εντός άλλου μπλοκ. Αν η έκφραση μέσα σε μια εντολή διακόπτη αποδειχθεί λανθασμένη, τότε εκτελούνται προεπιλεγμένες δηλώσεις.
- Είναι δύσκολο να επεξεργαστείτε if-else δηλώσεις καθώς είναι κουραστικό να ανιχνεύσετε πού απαιτείται η διόρθωση. Από την άλλη πλευρά, είναι εύκολο να επεξεργαστείτε τις εντολές μεταγωγής, καθώς είναι εύκολο να εντοπιστούν.
Συμπέρασμα:
Η εντολή διακόπτη είναι εύκολο να επεξεργαστεί, καθώς έχει δημιουργήσει τις ξεχωριστές περιπτώσεις για διαφορετικές δηλώσεις, ενώ σε ένθετες if-else δηλώσεις καθίσταται δύσκολο να προσδιοριστούν οι δηλώσεις προς επεξεργασία.