Η δομή επιλογής “if…else” στη γλώσσα C# χρησιμοποιείται για τον έλεγχο μιας συνθήκης και την εκτέλεση διαφορετικού κώδικα ανάλογα με την αληθή ή ψευδή τιμή της συνθήκης.
Ο γενικός τύπος της δομής είναι ο εξής:
if (condition) { // κώδικας που εκτελείται αν η συνθήκη είναι αληθής } else { // κώδικας που εκτελείται αν η συνθήκη είναι ψευδής }
Η συνθήκη είναι μια λογική έκφραση που εκτιμάται ως αληθής ή ψευδής. Αν η συνθήκη είναι αληθής, εκτελείται ο κώδικας που βρίσκεται μέσα στην περίπτωση του “if”. Αντίθετα, αν η συνθήκη είναι ψευδής, εκτελείται ο κώδικας που βρίσκεται μέσα στην περίπτωση του “else”.
Η δομή “if…else” επιτρέπει την εκτέλεση ενός κομματιού κώδικα ή ενός άλλου, ανάλογα με μια συνθήκη που ελέγχεται. Αυτό επιτρέπει την προσαρμογή της εκτέλεσης του προγράμματος βάσει διαφορετικών περιστάσεων ή καταστάσεων που μπορεί να προκύψουν κατά την εκτέλεση του προγράμματος.
Παράδειγμα:
using System; class Program { static void Main() { int a = 5; // Δημιουργία μεταβλητής a με τιμή 5 int b = 10; // Δημιουργία μεταβλητής b με τιμή 10 if (a < b) // Έλεγχος αν η μεταβλητή a είναι μικρότερη από τη μεταβλητή b { Console.WriteLine("Η μεταβλητή a είναι μικρότερη από τη μεταβλητή b."); } else if (a == b) // Έλεγχος αν οι μεταβλητές a και b είναι ίσες { Console.WriteLine("Οι μεταβλητές a και b είναι ίσες."); } else // Σε διαφορετική περίπτωση { Console.WriteLine("Η μεταβλητή a είναι μεγαλύτερη από τη μεταβλητή b."); } } }
Ο κώδικας εκτελεί μια απλή σύγκριση μεταξύ δύο ακεραίων μεταβλητών a
και b
. Ακολουθεί μια περίπτωση-περιορισμός (if-else if-else
) για να ελεγχθεί η σχέση μεταξύ των δύο μεταβλητών.
Αν η μεταβλητή a
είναι μικρότερη από τη μεταβλητή b
, τότε εκτυπώνεται το μήνυμα “Η μεταβλητή a
είναι μικρότερη από τη μεταβλητή b
.”.
Αν οι μεταβλητές a
και b
είναι ίσες, τότε εκτυπώνεται το μήνυμα “Οι μεταβλητές a
και b
είναι ίσες.”.
Σε όλες τις άλλες περιπτώσεις, που σημαίνει ότι η μεταβλητή a
είναι μεγαλύτερη από τη μεταβλητή b
, εκτυπώνεται το μήνυμα “Η μεταβλητή a
είναι μεγαλύτερη από τη μεταβλητή b
.”.
Ο κώδικας αυτός δείχνει πώς μπορούμε να χρησιμοποιήσουμε τη συνθήκη if-else
για να πάρουμε αποφάσεις με βάση τις συνθήκες στη γλώσσα προγραμματισμού C#.
Ας συνεχίσουμε με τη μετάφραση των υπόλοιπων παραδειγμάτων που παραθέσατε:
using System; class Program { static void Main() { int age = 25; // Έλεγχος της ηλικίας if (age < 18) { Console.WriteLine("Είστε ανήλικος."); } else { Console.WriteLine("Είστε ενήλικας."); } } }
Ο παραπάνω κώδικας ελέγχει την τιμή μιας μεταβλητής με όνομα “age” και εκτελεί διαφορετικές ενέργειες ανάλογα με την τιμή αυτής της μεταβλητής. Αρχικά, ορίζεται η μεταβλητή “age” με την τιμή 25.
Στη συνέχεια, χρησιμοποιείται η δομή ελέγχου “if-else” για να ελεγχθεί η τιμή της μεταβλητής “age”. Αν η τιμή είναι μικρότερη από 18, τότε εκτελείται η εντολή Console.WriteLine("Είστε ανήλικος.");
, η οποία εκτυπώνει το μήνυμα “Είστε ανήλικος.” στην οθόνη.
Αν η τιμή της μεταβλητής “age” δεν είναι μικρότερη από 18, τότε εκτελείται η εντολή Console.WriteLine("Είστε ενήλικας.");
, η οποία εκτυπώνει το μήνυμα “Είστε ενήλικας.” στην οθόνη.
Έτσι, ανάλογα με την τιμή της μεταβλητής “age”, ο κώδικας εκτελεί την αντίστοιχη εκτύπωση μηνύματος για το αν ο χρήστης είναι ανήλικος ή ενήλικας.
Όταν εκτελεστεί ο παραπάνω κώδικας και η μεταβλητή “age” έχει την τιμή 25, το αποτέλεσμα εκτέλεσης θα είναι η εκτύπωση του μηνύματος “Είστε ενήλικας.” στην οθόνη.
Αυτό συμβαίνει επειδή η τιμή της μεταβλητής “age” (25) είναι μεγαλύτερη από 18, οπότε εκτελείται η εντολή που βρίσκεται στο μπλοκ του else
, δηλαδή η εντολή Console.WriteLine("Είστε ενήλικας.");
που εκτυπώνει το μήνυμα “Είστε ενήλικας.” στην οθόνη.
Έτσι, το αποτέλεσμα εκτέλεσης του προγράμματος θα είναι:
Είστε ενήλικας.
[adinserter block=”2″]
Παράδειγμα:
using System; class Program { static void Main() { int number = 7; // Έλεγχος αν ο αριθμός είναι άρτιος ή περιττός if (number % 2 == 0) { Console.WriteLine("Ο αριθμός είναι άρτιος."); } else { Console.WriteLine("Ο αριθμός είναι περιττός."); } } }
Ο παραπάνω κώδικας ελέγχει αν ο αριθμός που αποθηκεύεται στη μεταβλητή number
είναι άρτιος ή περιττός. Ακολουθεί την εξής λογική:
- Αρχικοποιείται η μεταβλητή
number
με την τιμή 7. - Εκτελείται ο έλεγχος
if (number % 2 == 0)
, που ελέγχει αν ο αριθμόςnumber
διαιρείται ακριβώς με το 2 (δηλαδή είναι άρτιος). Αν η συνθήκη είναι αληθής, τότε εκτελείται ο κώδικας μέσα στο μπλοκ τουif
. - Αν η συνθήκη του
if
είναι ψευδής, τότε εκτελείται ο κώδικας μέσα στο μπλοκ τουelse
. - Στην περίπτωση μας, εφόσον ο αριθμός
number
είναι 7 και δεν διαιρείται ακριβώς με το 2, εκτελείται ο κώδικας μέσα στο μπλοκ τουelse
. - Εμφανίζεται το μήνυμα “Ο αριθμός είναι περιττός.” στην έξοδο της κονσόλας.
Συνολικά, ο κώδικας εκτυπώνει το κατάλληλο μήνυμα ανάλογα με το αν ο αριθμός number
είναι άρτιος ή περιττός.
Το αποτέλεσμα εκτέλεσης του παραπάνω κώδικα θα είναι:
Ο αριθμός είναι περιττός.
Καθώς ο αριθμός που έχει αποθηκευτεί στη μεταβλητή number
είναι 7, που είναι ένας περιττός αριθμός, η συνθήκη number % 2 == 0
είναι ψευδής. Συνεπώς, εκτελείται ο κώδικας μέσα στο μπλοκ του else
, και εμφανίζεται το μήνυμα “Ο αριθμός είναι περιττός.” στην έξοδο της κονσόλας.
[adinserter block=”4″]
Παράδειγμα:
using System; class Program { static void Main() { int score = 80; // Αρχικοποίηση της μεταβλητής score με την τιμή 80 if (score >= 90) // Έλεγχος αν η τιμή της μεταβλητής score είναι μεγαλύτερη ή ίση με 90 { Console.WriteLine("Εξαιρετική απόδοση!"); // Εκτύπωση μηνύματος "Εξαιρετική απόδοση!" } else if (score >= 70) // Έλεγχος αν η τιμή της μεταβλητής score είναι μεγαλύτερη ή ίση με 70 { Console.WriteLine("Καλή απόδοση."); // Εκτύπωση μηνύματος "Καλή απόδοση." } else { Console.WriteLine("Χρειάζεται βελτίωση."); // Εκτύπωση μηνύματος "Χρειάζεται βελτίωση." } } }
Ο παραπάνω κώδικας σε C# ελέγχει την τιμή της μεταβλητής score
και εκτυπώνει ανάλογα μηνύματα, ανάλογα με την τιμή που έχει η μεταβλητή.
Αρχικά, ορίζεται η μεταβλητή score
με την τιμή 80. Έπειτα, ξεκινάει η δομή ελέγχου if-else.
Αν η τιμή της μεταβλητής score
είναι μεγαλύτερη ή ίση με 90, τότε εκτελείται η εντολή Console.WriteLine("Εξαιρετική απόδοση!");
και εκτυπώνεται το μήνυμα “Εξαιρετική απόδοση!”.
Αν η τιμή της μεταβλητής score
είναι μεγαλύτερη ή ίση με 70 αλλά μικρότερη από 90, τότε εκτελείται η εντολή Console.WriteLine("Καλή απόδοση.");
και εκτυπώνεται το μήνυμα “Καλή απόδοση.”.
Αν η τιμή της μεταβλητής score
είναι μικρότερη από 70, τότε εκτελείται η εντολή Console.WriteLine("Χρειάζεται βελτίωση.");
και εκτυπώνεται το μήνυμα “Χρειάζεται βελτίωση.”.
Έτσι, ανάλογα με την τιμή της μεταβλητής score
, εκτυπώνεται ένα από τα τρία δυνατά μηνύματα.
Όταν εκτελεστεί ο παραπάνω κώδικας με την αρχική τιμή score = 80
, θα εμφανιστεί το μήνυμα “Καλή απόδοση.” στην έξοδο της κονσόλας. Αυτό συμβαίνει επειδή η συνθήκη score >= 70
είναι αληθής, αλλά η συνθήκη score >= 90
είναι ψευδής. Άρα η πρώτη else if
δομή εκτελείται και εκτυπώνεται το αντίστοιχο μήνυμα.
Με τη χρήση της δήλωσης else if
, μπορείτε να διαχωρίσετε πολλές περιπτώσεις ελέγχου και να εκτελέσετε διαφορετικό κώδικα ανάλογα με την ικανοποίηση συγκεκριμένων συνθηκών.
Στη γλώσσα C#, υπάρχει επίσης ένα συντομευμένο if…else, γνωστό και ως τριαδικός τελεστής (ternary operator), καθώς αποτελείται από τρεις τελεστέους. Χρησιμοποιείται για να αντικαταστήσει πολλαπλές γραμμές κώδικα με μία μόνο γραμμή. Συχνά χρησιμοποιείται για την αντικατάσταση απλών δηλώσεων if…else:
Η σύνταξη του τριαδικού τελεστή είναι η εξής:
variable = (condition) ? expression1 : expression2;
Αν η συνθήκη condition
είναι αληθής, τότε εκχωρείται η τιμή της expression1
στη μεταβλητή variable
. Αν η συνθήκη είναι ψευδής, τότε εκχωρείται η τιμή της expression2
στη μεταβλητή variable
.
Παράδειγμα:
int num = 7; string result = (num % 2 == 0) ? "Ο αριθμός είναι άρτιος." : "Ο αριθμός είναι περιττός."; Console.WriteLine(result);
Σε αυτό το παράδειγμα, χρησιμοποιούμε τον τριαδικό τελεστή για να ελέγξουμε εάν ο αριθμός num
είναι άρτιος ή περιττός. Η συνθήκη num % 2 == 0
αξιολογείται και αν είναι αληθής, εκχωρείται η τιμή “Ο αριθμός είναι άρτιος.” στη μεταβλητή result
. Αν η συνθήκη είναι ψευδής, εκχωρείται η τιμή “Ο αριθμός είναι περιττός.” στη μεταβλητή result
. Έπειτα, εμφανίζουμε την τιμή της μεταβλητής result
με τη χρήση της εντολής Console.WriteLine()
.
Ο τριαδικός τελεστής είναι χρήσιμος για απλές συνθήκες if…else, όπου η αντικατάσταση τους με μία μονή γραμμή κώδικα είναι πιο συμπαγής και απλούστερη για κατανόηση.