Η δομή επιλογής if
στη γλώσσα C χρησιμοποιείται για να εκτελέσει ένα κομμάτι κώδικα μόνο αν μια συγκεκριμένη συνθήκη είναι αληθής. Η σύνταξη της δομής if
είναι η εξής:
if (συνθήκη) { // Κώδικας που εκτελείται αν η συνθήκη είναι αληθής }
Αν η συνθήκη είναι αληθής, τότε ο κώδικας μέσα στις αγκύλες {}
εκτελείται. Αν η συνθήκη είναι ψευδής, τότε ο κώδικας παραλείπεται και η εκτέλεση συνεχίζεται από το επόμενο σημείο μετά το if
.
Επιπλέον, μπορεί να χρησιμοποιηθεί και η δομή else
για να εκτελεστεί διαφορετικό κομμάτι κώδικα αν η συνθήκη είναι ψευδής. Η σύνταξη με τη χρήση της δομής else
είναι η εξής:
if (συνθήκη) { // Κώδικας που εκτελείται αν η συνθήκη είναι αληθής } else { // Κώδικας που εκτελείται αν η συνθήκη είναι ψευδής }
Με τη χρήση της δομής if
μπορούμε να καθορίσουμε τη ροή του προγράμματος μας με βάση την αξιολόγηση μιας ή περισσότερων συνθηκών.
Σύμβολο | Σημασία |
---|---|
== | Ίσον με |
!= | Διαφορετικό από |
< | Μικρότερο από |
> | Μεγαλύτερο από |
<= | Μικρότερο ή ίσο από |
>= | Μεγαλύτερο ή ίσο από |
Οι συνθήκες συνήθως χρησιμοποιούνται μαζί με δηλώσεις if
στον κώδικα. Μια δήλωση if
ελέγχει μια συνθήκη και αν η συνθήκη είναι αληθής, τότε εκτελείται ένα κομμάτι κώδικα. Αν η συνθήκη δεν είναι αληθής, το πρόγραμμα προχωράει στην επόμενη δήλωση μετά τη δήλωση if
. Αυτό επιτρέπει τον έλεγχο της ροής του προγράμματος με βάση την αξιολόγηση μιας συνθήκης.
Παράδειγμα κώδικα:
int x = 10; if (x < 20) { printf("x είναι μικρότερο από 20\n"); }
Σε αυτό το παράδειγμα, η συνθήκη ελέγχει εάν η μεταβλητή x είναι μικρότερη από 20. Αν αυτό είναι αληθές, το πρόγραμμα εκτυπώνει το κείμενο “x είναι μικρότερο από 20”. Αν η συνθήκη είναι ψευδής, το πρόγραμμα προχωράει στη δήλωση μετά τη δήλωση If.
Μπορείτε να χρησιμοποιήσετε αυτές τις συνθήκες για να εκτελέσετε διαφορετικές ενέργειες για διαφορετικές αποφάσεις.
Η C έχει τις ακόλουθες συνθήκες δήλωσης:
Χρησιμοποιήστε τη δήλωση if για να καθορίσετε ένα μπλοκ κώδικα που θα εκτελεστεί, εάν μια συγκεκριμένη συνθήκη είναι αληθής.
Χρησιμοποιήστε τη δήλωση else για να καθορίσετε ένα μπλοκ κώδικα που θα εκτελεστεί, εάν η ίδια συνθήκη είναι ψευδής.
Χρησιμοποιήστε τη δήλωση else if για να καθορίσετε μια νέα συνθήκη που θα δοκιμαστεί, εάν η πρώτη συνθήκη είναι ψευδής.
Χρησιμοποιήστε τη δήλωση switch για να καθορίσετε πολλά εναλλακτικά μπλοκ κώδικα που θα εκτελεστούν.
Η δήλωση if
Χρησιμοποιήστε τη δήλωση if για να καθορίσετε ένα μπλοκ κώδικα που θα εκτελεστεί εάν μια συνθήκη είναι αληθής.
[adinserter block=”2″]
Σύνταξη
if (condition) { // κώδικας που θα εκτελεστεί εάν η συνθήκη είναι αληθής }
Η συνθήκη είναι μια λογική έκφραση που εκτιμάται ως αληθής ή ψευδής. Εάν η συνθήκη είναι αληθής, ο κώδικας που βρίσκεται μέσα στην παρένθεση { } εκτελείται. Εάν η συνθήκη είναι ψευδής, ο κώδικας μέσα στην παρένθεση { } αγνοείται και η εκτέλεση του προγράμματος συνεχίζεται από την επόμενη δήλωση μετά το μπλοκ if.
Στο παράδειγμα παρακάτω, ελέγχουμε δύο τιμές για να δούμε αν το 20 είναι μεγαλύτερο από το 18. Εάν η συνθήκη είναι αληθής, εκτυπώνουμε κάποιο κείμενο:
#include <stdio.h> int main() { // Έλεγχος αν ο αριθμός 20 είναι μεγαλύτερος από τον αριθμό 18 if (20 > 18) { // Εμφάνιση μηνύματος στην οθόνη αν η συνθήκη είναι αληθής printf("20 is greater than 18\n"); } return 0; }
Ο παραπάνω κώδικας γράφεται στη γλώσσα C και περιέχει σχόλια που περιγράφουν τη λειτουργία του κάθε μέρους του κώδικα. Το #include <stdio.h>
εισάγει τη βιβλιοθήκη stdio.h
, η οποία περιλαμβάνει τις δηλώσεις και τις συναρτήσεις που χρησιμοποιούνται για την επεξεργασία εισόδου/εξόδου.
Η συνάρτηση main
είναι η κύρια συνάρτηση του προγράμματος και ξεκινάει την εκτέλεση του κώδικα. Εντός της συνάρτησης, χρησιμοποιείται η δομή ελέγχου if
για να ελεγχθεί αν η συνθήκη 20 > 18
είναι αληθής.
Αν η συνθήκη είναι αληθής, τότε εκτελείται η εντολή printf
, η οποία εμφανίζει το μήνυμα “20 is greater than 18” στην οθόνη.
Τέλος, η συνάρτηση main
επιστρέφει την τιμή 0, υποδηλώνοντας ότι το πρόγραμμα ολοκληρώθηκε με επιτυχία.
Μπορούμε επίσης να ελέγξουμε μεταβλητές:
#include <stdio.h> int main() { int x = 20; // Δήλωση μεταβλητής x με τιμή 20 int y = 18; // Δήλωση μεταβλητής y με τιμή 18 if (x > y) { // Έλεγχος αν η τιμή της μεταβλητής x είναι μεγαλύτερη από την τιμή της μεταβλητής y printf("x is greater than y\n"); // Εκτύπωση μηνύματος ότι η x είναι μεγαλύτερη από την y } return 0; // Επιστροφή της τιμής 0 ως ένδειξη επιτυχούς ολοκλήρωσης του προγράμματος }
Ο παραπάνω κώδικας σε C πραγματοποιεί την εξής λειτουργία:
- Περιλαμβάνει τη βιβλιοθήκη
stdio.h
, η οποία παρέχει τις βασικές συναρτήσεις εισόδου/εξόδου της C, όπως ηprintf
. - Ορίζει τη συνάρτηση
main
ως την κύρια συνάρτηση του προγράμματος. - Δηλώνει και αρχικοποιεί δύο μεταβλητές
x
καιy
, με τιμές 20 και 18 αντίστοιχα. - Εκτελεί έναν έλεγχο χρησιμοποιώντας τη δομή ελέγχου
if
, για να ελέγξει αν η τιμή της μεταβλητήςx
είναι μεγαλύτερη από την τιμή της μεταβλητήςy
. - Αν η συνθήκη του ελέγχου είναι αληθής, τότε εκτελείται η εντολή
printf
για να εκτυπωθεί το μήνυμα “x is greater than y”. - Το πρόγραμμα επιστρέφει την τιμή 0 με την εντολή
return 0
, προκειμένου να υποδηλωθεί ότι το πρόγραμμα ολοκλήρωσε την εκτέλεσή του με επιτυχία.
Αν εκτελέσετε τον παραπάνω κώδικα σε ένα πρόγραμμα C, το αποτέλεσμα που θα εμφανιστεί στην οθόνη θα είναι:
x is greater than y
Αυτό συμβαίνει επειδή η συνθήκη x > y
είναι αληθής, καθώς η τιμή της μεταβλητής x
(20) είναι μεγαλύτερη από την τιμή της μεταβλητής y
(18). Έτσι, η εντολή printf
εκτελείται και εμφανίζει το μήνυμα “x is greater than y” στην οθόνη.
Η δήλωση else
Χρησιμοποιήστε τη δήλωση else για να καθορίσετε ένα μπλοκ κώδικα που θα εκτελεστεί εάν μια συνθήκη είναι ψευδής.
Σύνταξη:
if (condition) { // κώδικας που θα εκτελεστεί εάν η συνθήκη είναι αληθής } else { // κώδικας που θα εκτελεστεί εάν η συνθήκη είναι ψευδής }
Η else ακολουθεί αμέσως μετά την αγκύλη } του προηγούμενου μπλοκ κώδικα και πρέπει να βρίσκεται στην ίδια σειρά με το τέλος του μπλοκ κώδικα. Όταν η συνθήκη στη δήλωση if είναι ψευδής, ο κώδικας μέσα στην παρένθεση { } μετά τη δήλωση else εκτελείται αντί για τον κώδικα που βρίσκεται στη δήλωση if.
[adinserter block=”3″]
Παράδειγμα:
#include <stdio.h> int main() { int time = 22; // Δήλωση μεταβλητής 'time' και αρχικοποίησή της με την τιμή 22 if (time < 10) { // Έλεγχος αν η μεταβλητή 'time' είναι μικρότερη από 10 printf("Good morning.\n"); // Εκτύπωση του κειμένου "Good morning." στην οθόνη } else { printf("Good evening.\n"); // Εκτύπωση του κειμένου "Good evening." στην οθόνη } return 0; // Επιστροφή της τιμής 0 για να υποδηλώσει επιτυχή ολοκλήρωση του προγράμματος }
Ο παραπάνω κώδικας σε γλώσσα C εκτελεί μια απλή συνθήκη ελέγχου και εκτύπωσης μηνύματος ανάλογα με την τιμή της μεταβλητής ‘time’.
Συγκεκριμένα, ο κώδικας ακολουθεί τα παρακάτω βήματα:
- Δηλώνει μια μεταβλητή με όνομα ‘time’ τύπου int και της αρχικοποιεί με την τιμή 22.
- Έπειτα, εκτελεί μια συνθήκη ελέγχου. Αν η τιμή της μεταβλητής ‘time’ είναι μικρότερη από 10, τότε εκτελείται ο κώδικας που βρίσκεται μέσα στην πρώτη παρένθεση. Αυτός ο κώδικας εκτυπώνει το μήνυμα “Good morning.” στην οθόνη.
- Αν η συνθήκη της πρώτης παρένθεσης δεν ισχύει, τότε εκτελείται ο κώδικας που βρίσκεται μέσα στη δεύτερη παρένθεση. Αυτός ο κώδικας εκτυπώνει το μήνυμα “Good evening.” στην οθόνη.
- Τέλος, το πρόγραμμα επιστρέφει την τιμή 0, υποδηλώνοντας ότι ολοκλήρωσε την εκτέλεσή του με επιτυχία.
Ουσιαστικά, ανάλογα με την τιμή της μεταβλητής ‘time’, το πρόγραμμα εκτυπώνει διαφορετικό μήνυμα, είτε “Good morning.” εάν η τιμή είναι μικρότερη από 10, είτε “Good evening.” σε διαφορετική περίπτωση.
Όταν εκτελεστεί ο παραπάνω κώδικας, το αποτέλεσμα που θα εμφανιστεί στην οθόνη θα εξαρτηθεί από την αρχική τιμή της μεταβλητής ‘time’.
Αν η αρχική τιμή της μεταβλητής ‘time’ είναι μικρότερη από 10, τότε θα εκτυπωθεί το μήνυμα “Good morning.” στην οθόνη.
Αν η αρχική τιμή της μεταβλητής ‘time’ είναι μεγαλύτερη ή ίση με 10, τότε θα εκτυπωθεί το μήνυμα “Good evening.” στην οθόνη.
Σε αυτήν την περίπτωση, εφόσον η αρχική τιμή της μεταβλητής ‘time’ είναι 22, θα εκτυπωθεί το μήνυμα “Good evening.” στην οθόνη.
Η δήλωση else if
Χρησιμοποιήστε τη δήλωση else if για να καθορίσετε μια νέα συνθήκη εάν η πρώτη συνθήκη είναι ψευδής.
Σύνταξη:
if (condition_1) { // κώδικας που θα εκτελεστεί εάν η συνθήκη1 είναι αληθής } else if (condition_2) { // κώδικας που θα εκτελεστεί εάν η συνθήκη1 είναι ψευδής και η συνθήκη2 είναι αληθής } else { // κώδικας που θα εκτελεστεί εάν η συνθήκη1 είναι ψευδής και η συνθήκη2 είναι ψευδής }
Η δήλωση else if μπορεί να επαναληφθεί όσες φορές χρειαστεί μέσα σε ένα if statement. Η else if ακολουθεί αμέσως μετά την αγκύλη } του προηγούμενου μπλοκ κώδικα και πρέπει να βρίσκεται στην ίδια σειρά με το τέλος του μπλοκ κώδικα.
Παράδειγμα:
#include <stdio.h> int main() { int time = 22; if (time < 10) { printf("Good morning.\n"); // Εκτύπωση καλημέρας αν η ώρα είναι πριν τις 10 } else if (time < 20) { printf("Good day.\n"); // Εκτύπωση καλημέρας αν η ώρα είναι μεταξύ 10 και 20 } else { printf("Good evening.\n"); // Εκτύπωση καλημέρας αν η ώρα είναι μετά τις 20 } return 0; }
Ο παραπάνω κώδικας σε C ελέγχει την τιμή της μεταβλητής time
και εκτυπώνει ανάλογα με την τιμή την αντίστοιχη καλημέρα. Αν η ώρα είναι πριν τις 10, τότε εκτυπώνεται “Good morning.”. Αν η ώρα είναι μεταξύ 10 και 20, τότε εκτυπώνεται “Good day.”. Σε κάθε άλλη περίπτωση, δηλαδή αν η ώρα είναι μετά τις 20, εκτυπώνεται “Good evening.”.
Αν τρέξετε τον παραπάνω κώδικα σε ένα πρόγραμμα σε C, το αποτέλεσμα που θα εμφανιστεί στην οθόνη θα εξαρτάται από την τρέχουσα τιμή της μεταβλητής time
. Αν η τιμή της time
είναι μικρότερη από 10, τότε θα εμφανιστεί το μήνυμα “Good morning.”. Αν η τιμή είναι μεταξύ 10 και 20, τότε θα εμφανιστεί το μήνυμα “Good day.”. Αν η τιμή είναι μεγαλύτερη από 20, τότε θα εμφανιστεί το μήνυμα “Good evening.”. Το ακριβές αποτέλεσμα εξαρτάται από την τρέχουσα τιμή της μεταβλητής time
.
Παράδειγμα:
#include <stdio.h> int main() { int number; // Δήλωση μιας μεταβλητής με το όνομα "number" τύπου int printf("Enter a number: "); // Εμφάνιση μηνύματος στην οθόνη scanf("%d", &number); // Ανάγνωση τιμής από το χρήστη και αποθήκευση στη μεταβλητή "number" if (number >= 0) { // Έλεγχος αν ο αριθμός είναι μεγαλύτερος ή ίσος με το μηδέν printf("%d is a positive number.\n", number); // Εμφάνιση μηνύματος για θετικό αριθμό } else { printf("%d is a negative number.\n", number); // Εμφάνιση μηνύματος για αρνητικό αριθμό } return 0; // Επιστροφή της τιμής 0 από τη συνάρτηση main }
Ο παραπάνω κώδικας σε γλώσσα C ρωτάει τον χρήστη να εισάγει έναν αριθμό. Στη συνέχεια, ελέγχει εάν ο αριθμός είναι θετικός ή αρνητικός με τη χρήση μιας συνθήκης (if
). Αν ο αριθμός είναι μεγαλύτερος ή ίσος με το μηδέν, εμφανίζει ένα μήνυμα στην οθόνη ότι ο αριθμός είναι θετικός. Αν ο αριθμός είναι μικρότερος του μηδέν, εμφανίζει ένα μήνυμα ότι ο αριθμός είναι αρνητικός.
Ανάλογα με την τιμή που εισήγαγε ο χρήστης, θα εμφανιστεί ένα από τα παρακάτω μηνύματα:
- Αν ο αριθμός είναι θετικός ή ίσος με το μηδέν: “Ο αριθμός X είναι θετικός.”
- Αν ο αριθμός είναι αρνητικός: “Ο αριθμός X είναι αρνητικός.”
Στη συνέχεια, το πρόγραμμα τερματίζει και επιστρέφει την τιμή 0, που υποδηλώνει ότι το πρόγραμμα ολοκληρώθηκε με επιτυχία.
[adinserter block=”4″]
Ο τελεστής τριών παραμέτρων, γνωστός και ως τελεστής τριών συνθηκών ή ternary operator στα αγγλικά, είναι ένας συντομογραφημένος τρόπος για την αντικατάσταση πολλαπλών γραμμών κώδικα με μία μόνο γραμμή. Χρησιμοποιείται συχνά για να αντικαταστήσει απλές δηλώσεις if-else.
Η σύνταξη του τελεστή τριών παραμέτρων είναι η εξής:
condition ? expression1 : expression2
Ο τελεστής αξιολογεί τη συνθήκη (condition
). Αν η συνθήκη είναι αληθής, επιστρέφεται η τιμή της expression1
. Αν η συνθήκη είναι ψευδής, επιστρέφεται η τιμή της expression2
.
Ένα παράδειγμα χρήσης του τελεστή τριών παραμέτρων στον παραπάνω κώδικα θα μπορούσε να είναι:
printf("%d is a %s number.\n", number, number >= 0 ? "positive" : "negative");
Αν η συνθήκη number >= 0
είναι αληθής, τότε θα εκτυπωθεί το μήνυμα “positive”, διαφορετικά θα εκτυπωθεί το μήνυμα “negative”. Με αυτόν τον τρόπο, αντικαθίστανται οι δύο δηλώσεις printf
με μία μόνο γραμμή κώδικα.
Παράδειγμα:
#include <stdio.h> int main() { // Δηλώνουμε μια μεταβλητή με την ηλικία int age = 18; // Χρησιμοποιούμε την printf για να εμφανίσουμε το κείμενο // Χρησιμοποιούμε τον τερναριανό τελεστή ?: για να επιλέξουμε το κατάλληλο κείμενο ανάλογα με την ηλικία printf("You are %s.\n", (age >= 18) ? "an adult" : "a minor"); return 0; }
Ο παραπάνω κώδικας σε γλώσσα C εκτυπώνει το κείμενο “You are an adult.” ή “You are a minor.” ανάλογα με την τιμή της μεταβλητής age
. Αν η τιμή της age
είναι μεγαλύτερη ή ίση με 18, τότε εκτυπώνεται το κείμενο “You are an adult.”. Αν η τιμή της age
είναι μικρότερη του 18, τότε εκτυπώνεται το κείμενο “You are a minor.”.
Αυτό επιτυγχάνεται χρησιμοποιώντας τον τερναριανό τελεστή ?:
, ο οποίος είναι ένας συντομευμένος τρόπος για να εκφράσουμε μια συνθήκη if-else. Η σύνταξη (condition) ? expression1 : expression2
χρησιμοποιείται εδώ για να ελέγξει αν η age
είναι μεγαλύτερη ή ίση με 18. Αν η συνθήκη είναι αληθής, τότε επιστρέφεται η τιμή της expression1
, δηλαδή το κείμενο “an adult”. Αν η συνθήκη είναι ψευδής, τότε επιστρέφεται η τιμή της expression2
, δηλαδή το κείμενο “a minor”.
Στο παράδειγμα αυτό, η τιμή της age
είναι 18, άρα η συνθήκη (age >= 18)
είναι αληθής. Έτσι, εκτυπώνεται το κείμενο “You are an adult.” στην οθόνη.