...τι περιλαμβάνει αυτό το κεφάλαιο:
Στο κεφάλαιο αυτό θα δείτε τις εντολές συνθήκης και επανάληψης! Πολλές φορές ο κώδικας μας δεν είναι ένα κομμάτι που εκτελείται ολόκληρο...υπάρχουν περιπτώσεις(και μάλιστα πολλές) που χρειάζεται να ελέγξουμε μια μεταβλητή/παράσταση για να συνεχίσουμε και πιό συγκεκριμένα, συνήθως αν ισχύει κάνουμε κάτι και δε διαφορετική περίπτωση κάνουμε κάτι άλλο. Ακόμη, είναι σημαντικό να καταλάβετε και να χρησιμοποιείτε εντολές επανάληψης ή αλλιώς να κάνετε loop. Σε ένα πρόγραμμα υπάρχουν περιπτώσεις που θα πρέπει να επαναλάβετε ένα κομμάτι!
Πολλές φορές σε κάποιο πρόγραμμα, ίσως χρειαστεί να γράψετε το ίδιο κομμάτι κώδικα επαναληπτικά. Στην πραγματικότητα αυτό είναι κάπως βασανιστικό και κυρίως καταναλώνει άσκοπο χώρο μνήμης και πολύ χρόνο. Επίσης σε ένα πρόγραμμα δεν έχουν όλα μια σειρά μέχρι το τέλος. Υπάρχει, η πιθανότητα να υπάρχουν συνθήκες όπως, αν ισχύει κάτι θα γίνει αυτό αλλιώς θα γίνει το άλλο. Η C λοιπόν μας προσφέρει εντολές συνθήκης αλλα και επανάληψης! Στην αρχή ίσως σας δυσκολέψει αλλα και τα δύο, είναι ΠΟΛΥ χρήσιμα!
Εντολές Συνθήκης
Οι εντολές συνθήκης είναι δύο ειδών: Η εντολή if else και η switch. Στην ουσία δεν υπάρχει διαφορά απλά μερικές φορές διευκολύνει το switch λόγω αναγνωσιμότητας και χρόνου. Δείτε παρακάτω την βασική δομή:
- Κώδικας: Επιλογή όλων
if(συνθήκη){
... /* εντολές αν ισχύει η συνθήκη */
}else{
... /* εντολές αν δεν ισχύει η συνθήκη */
}
- Κώδικας: Επιλογή όλων
switch(μεταβλητή){
case τιμή1:
... /* εντολές αν η μεταβλητή είναι ίση με τη τιμή1 */
break;
case τιμή 1:
... /* εντολές αν η μεταβλητή είναι ίση με τη τιμή2 */
break;
...
default:
... /* εντολές αν η μεταβλητή δεν είναι ίση με τίποτα απο τα παραπάνω */
break;
}
Ποιό συγκεκριμένα την εντολή if else μπορούμε να την "σπάσουμε" με μερικές υποκατηγορίες ανάλογα με το πόσες περιπτώσεις υπάρχουν. Να σημειώσω πως μιλάμε για την ίδια εντολή απλά διαφοροποιείτε λίγο, δηλαδή,
Συνθήκη if μιας περίπτωσης,
- Κώδικας: Επιλογή όλων
if(συνθήκη){
... /* μπλόκ εντολών */
}
Εξήγηση: Μέσα στο πρόγραμμά μας κάποια στιγμή μπορεί να θέλουμε να πούμε αν ισχύει κάτι κάνε αυτό. Τίποτα παραπάνω. Προφανώς αν δεν ισχύει ο compiler το προσπερνά και συνεχίζει με τα παρακάτω.
Συνθήκη if else δύο περιπτώσεων,
- Κώδικας: Επιλογή όλων
if(συνθήκη){
... /* πρώτο μπλόκ εντολών */
}else{
... /* δεύτερο μπλόκ εντολών */
}
Εξήγηση: Σε αντίθεση με τα παραπάνω μπορεί να θέλουμε να πούμε αν ισχύει κάτι κάνε αυτό ΑΛΛΙΩΣ κάνε κάτι άλλο.
Συνθήκη if else πολλαπλών περιπτώσεων,
- Κώδικας: Επιλογή όλων
if(συνθήκη 1){
... /* πρώτο μπλόκ εντολών */
}else if(συνθήκη 2){
... /* δεύτερο μπλόκ εντολών */
}else if(συνθήκη 3){
... /* τρίτο μπλόκ εντολών */
}
else{
... /* τελικό μπλόκ εντολών (αν δεν ισχύει τίποτα απο τα παραπάνω) */
}
Εξήγηση: Πηγαίνοντας στα ποιό σύνθετα, αν έχουμε πολλές περιπτώσεις χρησιμοποιούμε πολλά else if. Δεν διαφέρει με την δεύτερη περίπτωση αλλα σαν δομή ίσως κάποιος να τα ξεχώριζε. Θα δώσω και ένα παράδειγμα για να καταλάβετε πως χρησιμποιείται. Ας υποθέσουμε πως θέλουμε να κάνουμε ένα απλό πρόγραμμα που δέχεται ως είσοδο έναν αριθμό και εκτυπώνει τι αριθμός είναι. Πως θα γίνει? Θα διαβάζουμε με κάποιον τρόπο τον αριθμό και θα εξετάζουμε σε ποιά περίπτωση ισχύει. Δηλαδή,
- Κώδικας: Επιλογή όλων
/* Το παρακάτω είναι γραμμένο σε ψευδοκώδικα */
if(x=0){
Εκτύπωσε "μηδέν";
}else if(χ=1){
Εκτύπωσε "ένα";
}else if(χ=2){
Εκτύπωσε "δύο";
...
}else{
Εκτύπωσε "Δεν υπάρχει η τιμή που δώσατε!";
}
η τελευταία περίπτωση όμοια με την παραπάνω αλλά ίσως λίγο ποιό βολική για ΠΟΛΛΑ else if είναι η,
switch case,
- Κώδικας: Επιλογή όλων
switch(μεταβλητή){
case τιμή1:
... /* εντολές αν η μεταβλητή είναι ίση με τη τιμή1 */
break;
case τιμή 1:
... /* εντολές αν η μεταβλητή είναι ίση με τη τιμή2 */
break;
...
default:
... /* εντολές αν η μεταβλητή δεν είναι ίση με τίποτα απο τα παραπάνω */
break;
}
Εξήγηση: Το switch case το χρησιμοποιούμε όταν έχομυε πολλά “else if” για λόγους συντήρησης του προγράμματος και ευκολίας στην ανάγνωση. Είναι σχετικά ποιό απλό και βολεύει.Για παράδειγμα το παραπάνω πρόγραμμα(ψευδοκώδικας) θα μπορούσαμε να το κάνουμε με switch case ως εξής:
- Κώδικας: Επιλογή όλων
/* Το παρακάτω είναι γραμμένο σε ψευδοκώδικα */
switch(x){
case 0:
Εκτύπωσε "μηδέν";
break;
case 1:
Εκτύπωσε "ένα";
break;
...
default:
Εκτύπωσε "Δεν υπάρχει η τιμή που δώσατε!";
break;
}
Εντολές Επανάληψης
Οι εντολές επανάληψης χρησιμοποιούνται όταν υπάρχει ένα κομμάτι κώδικα που μπορούμε να το γράψουμε μια φορά και με ένα loop να επαναλαμβάνεται! Είναι πολύ χρήσιμο γιατί γλιτώνουμε γραμμές κώδικα, μνήμη(αν και στην εποχή μας είναι ~άπειρη!), ευκολία ανάγνωσης κ.τ.λ. Στο μυαλό έχω 3 επαναλήψεις που θα ήταν καλό να αναφέρω. Κάνουν πάνω κάτω την ίδια δουλειά αλλα διαφέρουν σε κάποια λεπτά σημεία που θα τα δούμε παρακάτω.
For loop
Το for loop χρησιμοποιείται κυρίως για πίνακες. Με άλλα λόγια όταν έχετε πίνακα σε άσκηση => for loop χωρίς δεύτερη σκέψη! Στην ουσία μια επανάληψη κάνει με το σκεπτικό οτι υπάρχει ένας μετρητής που ξεκινά απο έναν αριθμό(απο το 0) και αυξάνεται κατα ένα "βήμα"(σταθερός αριθμός, συνήθως 1) και μόλις φτάσει ένα όριο τέλος! Δείτε πως συντάσεται παρακάτω:
- Κώδικας: Επιλογή όλων
for (<αρχική_τιμή> <συνθήκη_τερματισμού> <βήμα_επανάληψης> ) {
/* εντολές που εκτελούνται όσο ισχύει η συνθήκη! */
}
για παράδειγμα...
int sum=0;
for(i=0; i<10; i++) {
sum = sum + i;
}
αναμενόμενο αποτέλεσμα: 0+1+2+3+...+9
έγραψε:προσέξτε οτι ξεκινά απο το μηδέν και τελειώνει στο εννέα!!!
While loop
Το While loop και το Do while είναι σχεδόν ίδια απλά στο while loop οι εντολές εκτελούνται μέχρι η συνθηκη να γίνει ψευδής! Συντάσεται ως εξής:
- Κώδικας: Επιλογή όλων
while( <συνθήκη_επανάληψης> ) {
/* εντολές επανάληψης όσο η συνθήκη είναι αληθής:*/
}
για παράδειγμα...
- Κώδικας: Επιλογή όλων
int sum, i = 0;
while( i<10 ) {
sum = sum + i;
i++;
}
Do while loop
Όμοια με το παραπάνω μόνο που εκτελείαι όσο η συνθήκη είναι ψευδής! Το δεύτερο σημαντικό είναι οτι σε αντίθεση με τα παραπάνω θα μπούμε τουλάχιστον μια φορά στο loop αφού η συνθήκη είναι στο τέλος! Συντάσεται ως εξής:
- Κώδικας: Επιλογή όλων
do {
/* εντολές επανάληψης όσο η συνθήκη ψευδή; */
}while ( <συνθήκη > );
για παράδειγμα...
- Κώδικας: Επιλογή όλων
int sum =0;
int i=0;
do{
sum = sum + i;
i++;
}while (i >= 10);
Με όλα τα παραπάνω μπορούμε να επαναλαμβάνουμε κομμάτι απο τον κώδικά μας έχοντας μια βασική συνθήκη.Εγκυκλοπαιδικά, ένα κομμάτι κώδικα μπορεί να εκτελεστεί με άλλους δυο τρόπος(απο όσο γνωρίζω), ο πρώτος είναι με την χρήση συναρτήσεων καλώντας 2 η και 3 φορές τις ίδιες συναρτήσεις εκτελείται το ίδιο κομμάτι κώδικα. Δεύτερον είναι με χρήση συναρτήσεων συστήματος όπως η κλήση της fork(). δημιουργεί μια θυγατρική διεργασία και εκτελείται ψευδο-παράλληλα.

Ελπίζω να βοηθήσουν τα παραπάνω! Καλή συνέχεια...
