C# COMPLETE COURSE
ΕΝΟΤΗΤΑ 8 - CONDITIONAL CONTROL STATEMENTS (IF-ELSE)
INTRODUCTION
Σε αυτό το δωρεάν μάθημα C#, θα προσθέσουμε την ικανότητα στο πρόγραμμα μας να εκτελεί ένα μέρος του κώδικα μόνο όταν ικανοποιείται μια συγκεκριμένη συνθήκη. Αυτή η ικανότητα του κώδικα να ελέγχει τη ροή εκτέλεσης των εντολών περιγράφεται από το if-else statement και ανήκει στην γενικότερη κατηγορία των conditional control statements.
SIMPLE - if
Ας υποθέσουμε λοιπόν ότι θέλουμε να δημιουργήσουμε ένα πρόγραμμα το οποίο, αν ο μαθητής έχει πάρει καλό βαθμό στο exam, εμφανίζει ένα έξτρα μήνυμα, ενώ αν δεν έχει πάρει καλό βαθμό δεν εμφανίζει το έξτρα μήνυμα και απλά συνεχίζεται κανονικά η εκτέλεση του υπόλοιπου κώδικα.
Στην παραπάνω περιγραφή, καταλαβαίνουμε ότι ο κώδικας μας θα πρέπει να πάρει μια απόφαση (αν θα δείξει το μήνυμα ή όχι) βασιζόμενο σε μια συνθήκη (αν ο βαθμός του μαθητή είναι υψηλός ή όχι). Αν το αποτέλεσμα της συνθήκη μέσα στην οποία ελέγχεται ο βαθμός του exam είναι true τότε θα εμφανιστεί το έξτρα μήνυμα ειδάλλως αν είναι false δεν θα εκτελεστεί αυτό το μέρος του κώδικα.
Αυτός ο τρόπος γραφής του κώδικα ανήκει στην κατηγορία των conditional control statements και αντιπροσωπεύεται πρακτικά με την εντολή if.
Όπως ήδη έχετε παρατηρήσει από την παραπάνω εικόνα, ξεκινάμε με την εντολή if και αμέσως μετά ακολουθεί, μέσα σε παρενθέσεις, η συνθήκη της οποίας το αποτέλεσμα θα κρίνει την ροή εκτέλεσης του κώδικα. Αν το αποτέλεσμα της συνθήκης είναι true τότε ο κώδικας που υπάρχει ανάμεσα στα άγκιστρα θα εκτελεστεί, ειδάλλως, αν η συνθήκη μας επιστρέψει την τιμή false, ο κώδικας μέσα στα άγκιστρα θα αγνοηθεί. Ας δούμε ένα απλό παράδειγμα που υλοποιεί αυτή την απλή λογική.
Program.cs
Output
Αν αλλάξετε την τιμή της μεταβλητής σε ένα αριθμό χαμηλότερο του 90 τότε δεν θα εμφανιστεί το μήνυμα γιατί η συνθήκη μέσα στην παρένθεση θα είναι false οπότε αγνοείται εντελώς ο κώδικας που ανήκει στο if.
if - else STATEMENT
Η απλή μορφή του if μας έδωσε μια πρώτη και χρήσιμη γεύση ελέγχου της ροής ενός προγράμματος. Όμως τις περισσότερες φορές επιθυμούμε να έχουμε πλήρη έλεγχο της ροής εκτέλεσης εκτελώντας κώδικα όχι μόνο όταν η συνθήκη είναι true αλλά και όταν η συνθήκη είναι false. Με άλλα λόγια, θα επιθυμούσαμε ο τελικός χρήστης να λάβει ένα μήνυμα και στα δύο αποτελέσματα που μπορεί να επιστρέψει η συνθήκη. Φυσικά το μήνυμα θα είναι διαφορετικό για κάθε περίπτωση. Επειδή το if εκτελεί τον κώδικα μόνο όταν η συνθήκη είναι true, πρέπει να προσθέσουμε ένα ακόμα statement που θα εκτελεί κώδικα όταν η συνθήκη είναι false. Αυτό το statement είναι το else και δηλώνεται αμέσως μετά από το if.
Στο παρακάτω παράδειγμα, έχουμε προσθέσει και το else statement οπότε ο τελικός χρήστης θα λάβει, ανάλογα αν η βαθμολογία του είναι υψηλότερη ή χαμηλώτερη από το 90, διαφορετικό μήνυμα για κάθε μια από τις δύο περιπτώσεις.
Program.cs
Output
else - if MULTIPLE STATEMENTS
Έχουμε ενισχύσει αρκετά τον κώδικα μας, όμως ακόμα υπάρχει ένα κενό στην λογική μας - πως μπορούμε να ελέγξουμε περισσότερες από δύο τιμές? Για παράδειγμα, θέλουμε να αντιπροσωπεύσουμε τον βαθμό που έχει πάρει ο μαθητής στο exam με ένα γράμμα. Σε αυτή την περίπτωση θα πρέπει να κάνουμε πολλαπλούς ελέγχους γιατί θα πρέπει να ελέγξουμε αν η βαθμολογία είναι μεγαλύτερη του 90, εάν όχι εάν είναι μεγαλύτερη του 80 κτλ. Για να το υλοποιήσουμε αυτό δεν έχουμε παρά να συνδυάσουμε πολλαπλά if-else statements. Το θετικό αυτής της προσέγγισης είναι ότι όλα τα if-else αντιμετωπίζονται σαν μια κοινή ομάδα ελέγχου. Όταν μια από τις συνθήκες είναι true τότε θα εκτελεστεί ο κώδικα της εκάστοτε συνθήκης και το πρόγραμμα θα βγει έξω από όλο αυτό το σύμπλεγμα των if-else συνεχίζωντας με τον υπόλοιπο κώδικα.
Στο παρακάτω παράδειγμα θα συνεχίσουμε να δουλεύουμε στην έννοια του μαθητή και τους βαθμούς του σαν σενάριο για τον απλούστατο λόγο ότι είναι εύκολο σαν έννοια να το ακολουθήσετε. Ένα ακόμη σημείο που θα πρέπει να προσέξετε είναι η χρήση του τελευταίου else. Αυτό καλύπτει οποιαδήποτε άλλη περίπτωση που δεν έχουμε ελέγξει από τα if-else statements πριν από αυτό. Με άλλα λόγια, για οποιαδήποτε άλλο αριθμό που είναι μικρότερος από το 60 ο μαθητής θα λάβει την ίδια βαθμολογία που είναι F.
Program.cs
Output
nested if STATEMENTS
Το τελευταίο σημείο που μας έχει μείνει να καλύψουμε είναι όταν έχουμε μια if-else λογική μέσα σε μια άλλη. Αυτό το είδος σύνταξης ονομάζεται nested-if και μπορεί σε κάποιες περιπτώσεις να μας φανεί χρήσιμο.
Program.cs
Output
ΕΙΣΗΓΗΤΗΣ
Μιχάλης Κασάπογλου
Ο Μιχάλης Κασάπογλου, είναι ένας από τους πιο έμπειρους τεχνικούς εκπαιδευτές στον χώρο του προγραμματισμού με πάνω από 20 χρόνια εμπειρία. Έχει εργαστεί σαν IT Operations Manager, Senior Programmer, και Training Team Leader ενώ κατέχει και αρκετές πιστοποιήσεις που καλύπτουν ένα μεγάλο φάσμα τεχνολογιών στο προγραμματισμό, σε βάσεις δεδομένων και cloud. Στον ελεύθερο του χρόνο διατηρεί ένα τεχνολογικό blog στο οποίο θα βρείτε αρκετά δωρεάν μαθήματα προγραμματισμού για αρχάριους.