Εντολές ελέγχου |
Η C υποστηρίζει τις παρακάτω δομές ελέγχου:
Εντολή if-else:
Οι εντολές if και if-else υπάρχουν σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιούνται για να ελέγξουν να ισχύει ή όχι κάποια συνθήκη. Στην C η γενική σύνταξη της εντολής είναι:
if (<ΣΥΝΘΗΚΗ>)
Ενότητα -Α
else
Ενότητα-Β
Η <ΣΥΝΘΗΚΗ> μπορεί να είναι λογική έκφραση, έκφραση συσχετισμού, αποτέλεσμα κάποιας πράξης, είτε ακόμα και κάποια μεταβλητή. Η Ενότητα-Α και η Ενότητα-Β μπορεί να περιλαμβάνουν μία εντολή ή πολλές εντολές (block) που περικλείονται σε άγκιστρα ({,}). Οι εντολές (ή η εντολή) της Ενότητας-Α εκτελούνται αν η <ΣΥΝΘΗΚΗ> είναι αληθής (όχι 0), ενώ οι εντολές (ή η εντολή) της Ενότητας-Β εκτελείται αν η <ΣΥΝΘΗΚΗ> είναι ψευδής (0-μηδέν). Το else είναι προαιρετικό και όταν υφίσταται αναφέρεται στο πλησιέστερο πριν από αυτό if που δεν έχει else. Αν δεν υπάρχει else και η συνθήκη είναι ψευδής, τότε η εντολή if δεν κάνει τίποτα και το πρόγραμμα προχωρά στην εκτέλεση των επόμενων εντολών. Κάθε ενότητα είναι δυνατόν να περικλείει και άλλες if-else ενότητες (blocks) εντολών. Παραδείγματα:
Προγραμμα -Α: Έλεγχος ενός ακεραίου (μεταβλητή num) |
Προγραμμα -Β: Έλεγχος ενός ακεραίου (μεταβλητή num) με άλλο τρόπο |
int num; ....... if (num = = 2) printf("The num is now: 2\n"); if (num < 5) printf("The num is now %d, less than 5\n",num); else printf("The num is now %d, greater than 4\n",num); |
int num; ....... if (num = = 2) printf("The num is now: 2\n"); else if (num < 5) printf("the num is now less than 5\n"); else printf("the num is now greater than 4\n"); |
Προγραμμα -Γ: Εύρεση του μεγαλύτερου μεταξύ 3 ακεραίων (ένθετα if) |
Προγραμμα -Δ: Εύρεση του μεγαλύτερου μεταξύ 3 ακεραίων (λογικές προτάσεις) |
int a,b,c; .......... if (a>b) |
int a,b,c; .......... if (a>b && a>c) |
Σχολιάστε:
σε τι διαφέρουν τα προγράμματα Α και Β και
σε τι τα προγράμματα Γ και Δ.
Περίεργες συνθήκες:
Η έκφραση if (1) είναι πάντα αληθής.
Η έκφραση if (0) είναι πάντα ψευδής.
Η εκφραση if (a) είναι ισοδύναμη με την if (a !=0).
Η εκφραση if (!a) είναι ισοδύναμη με την if (a ==0).
Η εκφραση if(a=-2) είναι αληθής. Γενικά, η συνθήκη a= <τιμή> είναι αληθής αν η τιμή είναι ≠ 0. Αν η τιμή που αναθέτουμε είναι 0 τότε η συνθήκη είναι ψευδής.
Εντολή switch:
Η γενικευμένη μορφή της εντολής είναι:
switch (έκφραση)
{
case σταθερά-1:
Ενότητα εντολών - 1;
break;
case σταθερά-2:
Ενότητα εντολών - 2;
break;
case
..............
case σταθερά-n:
Ενότητα εντολών - n;
break;default:
Ενότητα εντολών;
break;}
Εκτελούνται οι εντολές των οποίων η σταθερά του case ταιριάζει με την τιμή της έκφρασης. Η εκτέλεση του προγράμματος μέσα σε ένα switch συνεχίζεται στο επόμενο case, εκτός αν δεν μεσολαβεί κάποια από τις εντολές break, exit ή return. Αν η τιμή της έκφρασης δεν ταιριάζει με καμία σταθερά, τότε εκτελείται η εντολή στο block της default (που είναι προαιρετικό).
Προγραμμα -Α: Ελέγχει αν ο χρήστης πλητρολόγησε από το 1 έως το 6 |
Προγραμμα -Β: Αριθμομηχανή με τη switch |
#include
<stdio.h> main() { int a; printf("Enter an integer: "); scanf("%d", &a); /* Check values of a */ switch (a) { case 1: puts("You entered 1"); break; case 2: puts("You entered 2"); break; case 3: puts("You entered 3"); break; case 4: puts("You entered 4"); break; case 5: puts("You entered 5"); break; case 6: puts("You entered 6"); break; default: puts("You enter an integer less than 1 or more than 6"); } } |
#include
<stdio.h> main() { char p; float x,y,result; int flag=0; printf("Enter operation: "); scanf("%c", &p); printf("Enter first operand: "); scanf("%f", &x); printf("Enter second operand: "); scanf("%f", &y); /* Check for operation symbol */ switch (p) { case '+': result = x + y; printf("%f %c %f = %f\n", x, p, y, result); break; case '-': result = x - y; printf("%f %c %f = %f\n", x, p, y, result); break; case '*': result = x * y; printf("%f %c %f = %f\n", x, p, y, result); break; case '/': if (y ==0) printf("Διαίρεση με 0 \n"); else printf("%f %c %f = %f\n", x, p, y, result); break; default: printf("Λάθος τελεστής\n"); } |
Εντολή break:
H εντολή break προκαλεί τον τερματισμό μιας εντολής switch ή και μιας επαναληπτικής διαδικασίας (που προκλήθηκε με εντολή for ή την while - δείτε την επόμενη ενότητα). Η εκτέλεση του προγράμματος συνεχίζεται μετά την εντολή switch ή την εντολή επανάληψης.
while(...)
{
. . .
break;
. . .
}
. . . /* H εκτέλεση του προγράμματος συνεχίζεται μετά το break */
Στην προηγούμενη ενότητα | ||
|
|
|
Κ.Βασιλάκης / ΤΕΙ Κρήτης |
|