- Μπορούμε να εκτελέσουμε ορισμένες εντολές υπό συνθήκη με τη
δομή ελέγχου if.
- Αυτή χρησιμοποιείται ως εξής:
if (συνθήκη)
εντολή;
- Όπως και με τις εντολές while και do όταν θέλουμε να εκτελέσουμε πάνω
από μια εντολή υπό συνθήκη περικλείουμε όλες τις αντίστοιχες εντολές μέσα σε
αγκύλες "{" και "}":
if (συνθήκη) {
εντολή1;
εντολή2;
εντολή3;
}
- Οι εντολή που ακολουθεί το if εκτελείται αν η συνθήκη είναι
αληθής, δηλαδή έχει τιμή διάφορη του 0.
Παράδειγμα (υπολογίζει και τυπώνει την απόλυτη τιμή των αριθμών που διαβάζει
μέχρι να συναντήσει το 0):
#include <stdio.h>
main()
{
int num;
do {
scanf("%d", &num);
if (num < 0)
num = -num;
printf("%d\n", num);
} while (num != 0);
}
- Η δομή ελέγχου if μπορεί να ακολουθηθεί και από τη δομή else
για να προσδιορίσουμε εντολές που θα εκτελεστούν αν η συνθήκη δεν
ισχύει.
Παράδειγμα:
if (grade >= 5)
printf("Περνάει\n");
else
printf("Απορρίπτεται\n");
- Χρειάζεται προσοχή όταν η else ακολουθεί δύο συνεχόμενες if.
Στην περίπτωση αυτή, η else συσχετίζεται με την κοντινότερη if.
Για να εκφράσουμε διαφορετική συσχέτιση πρέπει να χρησιμοποιήσουμε
αγκύλες { }.
Παράδειγμα (τυπώνει μόνο όταν η μεταβλητή printed είναι ψευδής):
if (exam >= 5) {
if (!printed)
printf("Περνάει\n");
} else
if (!printed)
printf("Απορρίπτεται\n");
printed = 1;
Το παρακάτω παράδειγμα (χωρίς αγκύλες) δεν εκτελείται σύμφωνα με τον
τρόπο που είναι στοιχισμένο
if (exam >= 5)
if (!printed)
printf("Περνάει\n");
else
if (!printed)
printf("Απορρίπτεται\n");
printed = 1;
αλλά ως εξής (δεν τυπώνει ποτέ "Απορρίπτεται"):
if (exam >= 5)
if (!printed)
printf("Περνάει\n");
else
if (!printed)
printf("Απορρίπτεται\n");
printed = 1;
- Μπορούμε να συνδυάσουμε συνεχόμενα else if για πολλαπλούς
ελέγχους. Παράδειγμα:
if (grade >= 9)
printf("'Αριστα!\n");
else if (grade >= 7)
printf("Λίαν καλώς\n");
else if (grade >= 5)
printf("Καλώς\n");
else
printf("Κακώς\n");