You are on page 1of 17

Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών

Σχολή Θετικών Επιστημών

Τμήμα Τεχνολογιών Ψηφιακής Βιομηχανίας


Μάθημα: Εισαγωγή στον Προγραμματισμό

Τμήμα Αεροδιαστημικής Επιστήμης και Τεχνολογίας


Μάθημα: Αλγόριθμοι, Προγραμματισμός και Δομές Δεδομένων

Εισαγωγή στη γλώσσα C – Μέρος Β

Λάμπρος Σαράκης
Αναπληρωτής Καθηγητής
Ψαχνά 2023

1
Μέρος του υλικού των διαφανειών προέρχεται από
το βιβλίο «C: Από τη Θεωρία στην Εφαρμογή» των Γ.
Τσελίκη και Ν. Τσελίκα

2
Εντολή ελέγχου if-else
❑Η εντολή if-else χρησιμοποιείται για τη διατύπωση αποφάσεων (υπό συνθήκη εκτέλεση κώδικα)
❑Η εντολή συντάσσεται ως εξής:
if (συνθήκη)
{
μπλοκ εντολών #1
}
else
{
μπλοκ εντολών #2
}
❑Αν η συνθήκη είναι αληθής τότε εκτελούνται οι εντολές του μπλοκ εντολών #1, ενώ αν η συνθήκη είναι
ψευδής τότε εκτελούνται οι εντολές του μπλοκ εντολών #2
❑To τμήμα του else είναι προαιρετικό. Συνεπώς η απλούστερη σύνταξη της εντολής if είναι:
if (συνθήκη)
{
μπλοκ εντολών
}
❑Τα άγκιστρα, τα οποία περικλείουν το σώμα της εντολής if-else μπορούν και να παραλειφθούν όταν το
μπλοκ αποτελείται από μια μόνο εντολή

3
Εντολή ελέγχου if-else
❑Παράδειγμα:
int a = 4;
if (a > 0)
{
printf(“a is positive\n”);
}
else
{
printf(“a is negative or zero\n”);
}

❑Ο παραπάνω κώδικας μπορεί να γραφεί και ως:


int a = 4;
if (a > 0)
printf(“a is positive\n”);
else
printf(“a is negative or zero\n”);

4
Εντολή ελέγχου else-if
❑Η εντολή if-else μπορεί να συνδυαστεί με εντολές else-if. Η σύνταξη φαίνεται παρακάτω
if (συνθήκη 1) {
μπλοκ εντολών #1
}
else if (συνθήκη 2) {
μπλοκ εντολών #2
}
else if (συνθήκη 3) {
μπλοκ εντολών #3
}

else {
μπλοκ εντολών #4
}
❑Η παραπάνω ακολουθία είναι ο πιο γενικός τρόπος για να γραφτεί μια διακλαδωμένη
απόφαση
❑Οι συνθήκες υπολογίζονται με τη σειρά και αν κάποια είναι αληθής εκτελείται το
αντίστοιχο μπλοκ εντολών και η αλυσίδα τερματίζεται
❑Το τελευταίο τμήμα else χειρίζεται την περίπτωση του «τίποτα από τα παραπάνω»

5
Φωλιασμένες εντολές if
❑Τα μπλοκ εντολών των if και else επιτρέπεται να περιέχουν και άλλες if και
else εντολές, οι οποίες με τη σειρά τους μπορεί να περιέχουν και άλλες, κ.ο.κ.
❑Όταν υπάρχει μία if εντολή μέσα σε μία άλλη, τότε αυτή η if εντολή
ονομάζεται ένθετη ή φωλιασμένη (nested)

❑Παράδειγμα με δύο
ένθετες if εντολές

6
Η εντολή switch
❑Η εντολή switch χρησιμοποιείται όπως και η if-else if-else για υπό συνθήκη εκτέλεση κώδικα
όταν επιθυμούμε να ελέγξουμε μία έκφραση για όλες τις δυνατές τιμές που αυτή η έκφραση
μπορεί να πάρει και να χειριστούμε την κάθε περίπτωση με διαφορετικό τρόπο
❑Η εντολή switch ελέγχει την τιμή μιας ακέραιας μεταβλητής ή στη γενικότερη περίπτωση
μιας έκφρασης μόνο για ισότητα με ένα πλήθος σταθερών τιμών
❑Η εντολή switch συντάσσεται ως εξής
switch (έκφραση) {
case σταθερά_1:
Μπλοκ εντολών #1
break;
case σταθερά_2:
Μπλοκ εντολών #2
break;

default:
Μπλοκ εντολών #n
break;
}
❑ Η εντολή break μπορεί και να μην υπάρχει μετά από κάποια δήλωση case ή τη default. Σε
αυτή την περίπτωση συνεχίζεται η εκτέλεση των εντολών μέχρι να βρεθεί εντολή break ή να
τελειώσει το σώμα της switch

7
Η εντολή switch
❑Παραδείγματα

8
Ο τελεστής ?:
❑Ο τελεστής ?: επιτρέπει την εκτέλεση μίας από δύο ενέργειες, σύμφωνα με την τιμή
μίας έκφρασης
◦ Είναι ισοδύναμος με την απλή χρήση της if-else (δηλ. χωρίς else-if)

❑Η σύνταξη του τελεστή είναι


exp1 ? exp2 : exp3;
❑Σε μία εντολή με τον τελεστή ?: αν η έκφραση exp1 είναι αληθής, τότε θα
εκτελεστεί η έκφραση που ακολουθεί το ερωτηματικό ? (δηλαδή η exp2), αλλιώς θα
εκτελεστεί η έκφραση που ακολουθεί την άνω-κάτω τελεία : (δηλαδή η exp3)
❑Παράδειγμα

9
Βρόχος επανάληψης for
❑Η εντολή for χρησιμοποιείται όταν χρειάζεται να γίνει επαναληπτική εκτέλεση
κώδικα
❑Η εντολή συντάσσεται ως εξής
for (αρχική_έκφραση; συνθήκη; Τελική_έκφραση)
{
Μπλοκ εντολών
}
❑Τα βήματα εκτέλεσης της εντολής for είναι τα εξής
◦ Εκτελείται η αρχική_έκφραση. Αυτό γίνεται μόνο μια φορά πριν την αρχή του βρόχου.
Συνήθως είναι μια εντολή εκχώρησης τιμής σε μια μεταβλητή. Μπορεί να είναι και πολλές
εντολές οι οποίες διαχωρίζονται με κόμμα
◦ Γίνεται έλεγχος της τιμής της συνθήκης. Αν αυτή είναι ψευδής ο βρόχος τερματίζεται. Αν
είναι αληθής τότε εκτελείται το μπλοκ εντολών και στη συνέχεια εκτελείται η
Τελική_έκφραση
◦ Γίνεται επανέλεγχος της τιμής της συνθήκης. Αν η συνθήκη είναι ψευδής, ο βρόχος
επανάληψης for τερματίζεται. Αν είναι αληθής, επανεκτελείται το μπλοκ εντολών και στη
συνέχεια επανεκτελείται η Τελική_έκφραση. Το βήμα αυτό επαναλαμβάνεται έως ότου η
τιμή της συνθήκης να γίνει ψευδής

10
Βρόχος επανάληψης for
❑Παρατηρήσεις:
◦ Ο βρόχος for χρησιμοποιείται συνήθως όταν γνωρίζουμε εκ των
προτέρων τον αριθμό των επιθυμητών επαναλήψεων εκτέλεσης
κώδικα (ή τουλάχιστον τον μέγιστο αριθμό επαναλήψεων)
◦ Όταν το μπλοκ εντολών αποτελείται από μία μόνο εντολή, τα
άγκιστρα της for μπορούν και να παραλειφθούν
◦ Για άμεσο τερματισμό ενός βρόχου for χρησιμοποιείται η εντολή
break ή η εντολή goto (θα παρουσιαστούν στη συνέχεια)
◦ Η εκτεταμένη χρήση της εντολής goto μπορεί να περιπλέξει τη
ροή του προγράμματος και για αυτό πρέπει να αποφεύγεται
◦ Η χρήση της για άμεσο τερματισμό φωλιασμένων βρόγχων
επανάληψης θεωρείται ίσως η μοναδική πλέον ασφαλής
περίπτωση χρήσης της

11
Βρόχος επανάληψης while
❑Η εντολή while χρησιμοποιείται όταν χρειάζεται να γίνει επαναληπτική
εκτέλεση κώδικα (όπως και η for)
❑Η εντολή συντάσσεται ως εξής
while (συνθήκη)
{
Μπλοκ εντολών
}
❑Βήματα εκτέλεσης
◦ Γίνεται έλεγχος της τιμής της συνθήκης. Αν η συνθήκη είναι ψευδής, ο
βρόχος τερματίζεται. Αν είναι αληθής, τότε εκτελείται το μπλοκ εντολών
◦ Μετά την τελευταία εντολή του σώματος της while γίνεται επανέλεγχος της
τιμής της συνθήκης. Αν αυτή είναι ψευδής, ο βρόχος τερματίζεται. Αν είναι
αληθής, τότε επανεκτελείται το μπλοκ εντολών. Το βήμα αυτό
επαναλαμβάνεται έως ότου η τιμή της συνθήκης να γίνει ψευδής
❑Παρατήρηση:
◦ Ο βρόχος while χρησιμοποιείται συνήθως όταν δεν γνωρίζουμε εκ των
προτέρων τον αριθμό των επιθυμητών επαναλήψεων εκτέλεσης κώδικα
◦ Για άμεσο τερματισμό ενός βρόχου while χρησιμοποιείται η εντολή break (ή
η goto)

12
Βρόχος επανάληψης do-while
❑Η εντολή do-while χρησιμοποιείται όταν χρειάζεται να γίνει επαναληπτική
εκτέλεση κώδικα (όπως και οι for και while)
❑Η εντολή συντάσσεται ως εξής
do {
Μπλοκ εντολών
} while (συνθήκη);

❑Βήματα εκτέλεσης
◦ Εκτελούνται οι εντολές που βρίσκονται στο σώμα της do-while (μπλοκ εντολών)
◦ Γίνεται έλεγχος της τιμής της συνθήκης. Αν η συνθήκη είναι ψευδής, ο βρόχος
τερματίζεται. Αν είναι αληθής, τότε εκτελείται ξανά το μπλοκ εντολών. Το βήμα
αυτό επαναλαμβάνεται έως ότου η τιμή της συνθήκης να γίνει ψευδής

❑Παρατήρηση:
◦ Ο βρόχος do-while χρησιμοποιείται συνήθως όταν απαιτείται το μπλοκ εντολών
να εκτελεστεί τουλάχιστον μια φορά
◦ Για άμεσο τερματισμό ενός βρόχου while χρησιμοποιείται η εντολή break (ή η
goto)

13
Παραδείγματα βρόχων επανάληψης
Παράδειγμα 1:
int i;
for (i=0; i<5; i++) {
printf("give number\n");
scanf("%d", &number);
printf("the number is %d\n", number);
}
Παράδειγμα 2:
int j = 5;
while (j>0)
{
printf(“j is %d\n", j);
j = j - 1;
}

14
Φωλιασμένοι βρόγχοι επανάληψης
❑Τα μπλοκ εντολών των βρόγχων επανάληψης (είτε είναι βρόγχοι for, while ή do-while)
επιτρέπεται να περιέχουν και άλλες εντολές επαναληπτικής εκτέλεσης κώδικα, οι οποίες με τη
σειρά τους μπορεί να περιέχουν και άλλες, κ.ο.κ.
❑Όταν υπάρχει ένας βρόγχος επανάληψης μέσα σε έναν άλλο, π.χ. ένας βρόγχος for εντός ενός
άλλου βρόγχου for, τότε ο βρόγχος αυτός ονομάζεται φωλιασμένος βρόγχος (nested loop)
❑Παράδειγμα με δύο βρόγχους for

Έξοδος: One Two One Two

15
Η εντολή break
❑Η εντολή break χρησιμοποιείται για τον άμεσο τερματισμό ενός επαναληπτικού βρόχου (δηλ.
βρόγχου for, while ή do-while) ή για τον τερματισμό μίας εντολή switch
❑Η εντολή break τερματίζει μόνο τον βρόγχο στο σώμα του οποίου βρίσκεται
❑Στους επαναληπτικούς βρόχους, μετά την εκτέλεση της εντολής break το πρόγραμμα συνεχίζει
με την εκτέλεση της πρώτης εντολής μετά τον βρόχο
❑Παράδειγμα

Έξοδος:1 2 3 4
i = 5

16
Η εντολή goto
❑ Η εντολή goto χρησιμοποιείται με σκοπό να μεταφέρει την εκτέλεση του προγράμματος σε
κάποια άλλη εντολή (μέσα στην ίδια συνάρτηση), με την προϋπόθεση ότι η εντολή έχει μία
ετικέτα
❑ Σύνταξη
goto location;
❑Παράδειγμα χρήσης για τερματισμό φωλιασμένων βρόγχων (συνηθέστερη χρήση)

17

You might also like