Η δομή επανάληψης for
στη γλώσσα C χρησιμοποιείται για να εκτελέσει ένα σύνολο εντολών επαναληπτικά, με βάση έναν αριθμητή και ένα σύνολο κανόνων για την εκτέλεση των εντολών.
Η δομή της for
αποτελείται από τρία μέρη: την αρχικοποίηση, τη συνθήκη ελέγχου και την ενημέρωση του αριθμητή. Κατά την εκτέλεση της for
, αρχικοποιείται ο αριθμητής, ελέγχεται η συνθήκη και αν αυτή είναι αληθής, εκτελούνται οι εντολές μέσα στο σώμα της for
. Στη συνέχεια, ο αριθμητής ενημερώνεται και η διαδικασία επαναλαμβάνεται. Η επανάληψη συνεχίζεται μέχρις ότου η συνθήκη γίνει ψευδής.
Η σωστή σύνταξη της for
είναι η εξής:
for (αρχικοποίηση; συνθήκη; ενημέρωση) { // εντολές που θα εκτελεστούν επαναληπτικά }
Η αρχικοποίηση
αναφέρεται στην αρχική τιμή του αριθμητή, η συνθήκη
είναι η συνθήκη ελέγχου που πρέπει να είναι αληθής για να συνεχιστεί η επανάληψη, και η ενημέρωση
αναφέρεται στην ανανέωση του αριθμητή μετά από κάθε επανάληψη.
Η δομή της for
επιτρέπει την εκτέλεση ενός συνόλου εντολών για έναν καθορισμένο αριθμό φορών ή μέχρις ότου μια συνθήκη να γίνει ψευδής.
Ένα παράδειγμα είναι το εξής:
#include <stdio.h> int main() { int i; // Δήλωση μεταβλητής i for (i = 0; i < 5; i++) { printf("%d ", i); // Εκτύπωση της τιμής της μεταβλητής i } return 0; // Επιστροφή της τιμής 0 }
Ο παραπάνω κώδικας σε C εκτυπώνει τους αριθμούς από 0 έως 4 στη σειρά. Αρχικά, δηλώνεται και αρχικοποιείται μια μεταβλητή i
τύπου int
με την τιμή 0. Έπειτα, χρησιμοποιείται ένας βρόχος for
για να επαναληφθεί η εκτέλεση ενός τμήματος κώδικα. Η εντολή printf
χρησιμοποιείται για να εκτυπωθεί η τρέχουσα τιμή της μεταβλητής i
μέσω της χρήσης του %d
που αντιστοιχεί σε ακέραιο αριθμό. Ο βρόχος επαναλαμβάνεται 5 φορές, αυξάνοντας την τιμή της i
κατά 1 σε κάθε επανάληψη. Έτσι, θα εκτυπωθούν οι αριθμοί 0, 1, 2, 3, 4. Τέλος, ο κώδικας επιστρέφει την τιμή 0, υποδηλώνοντας ότι το πρόγραμμα ολοκληρώθηκε επιτυχώς.
[adinserter block=”2″]
Το αποτέλεσμα του παραπάνω παραδείγματος θα είναι η εκτύπωση των αριθμών 0 έως 4 στη σειρά:
0 1 2 3 4
Σημειώνεται ότι η μεταβλητή i
μπορεί να δηλωθεί εντός της αρχικοποίησης του βρόχου (for
) και δεν απαιτείται να προηγηθεί η δήλωσή της πριν από τον βρόχο. Αυτό σημαίνει ότι μπορούμε να γράψουμε τη δήλωση της μεταβλητής i
απευθείας μέσα στην εντολή for
, στο τμήμα της αρχικοποίησης. Για παράδειγμα:
for (int i = 0; i < 5; i++) { printf("%d ", i); }
Με αυτόν τον τρόπο, η μεταβλητή i
θα είναι ορατή μόνο μέσα στον βρόχο και δεν θα μπορεί να χρησιμοποιηθεί εκτός του περιορισμένου αυτού πεδίου ισχύος. Αυτή η προσέγγιση είναι χρήσιμη όταν η μεταβλητή i
δεν χρειάζεται να έχει ευρύτερο πεδίο ισχύος και είναι συνηθισμένη στη γλώσσα C.
Για παράδειγμα:
#include <stdio.h> int main() { for (int i = 0; i < 5; i++) { printf("%d ", i); // Εκτύπωση της τιμής του i } return 0; }
Ο παραπάνω κώδικας σε C περιέχει έναν απλό βρόχο (for loop) που επαναλαμβάνεται 5 φορές. Κάθε φορά που επαναλαμβάνεται, η τιμή της μεταβλητής i
εκτυπώνεται στην οθόνη χρησιμοποιώντας τη συνάρτηση printf()
. Το %d
στη συνάρτηση printf()
χρησιμοποιείται για την εκτύπωση ενός ακεραίου. Έτσι, ο κώδικας θα εκτυπώσει τα αριθμητικά ψηφία από 0 έως 4, χωρίς κενό διάστημα ανάμεσά τους.
Αυτό το παράδειγμα θα εκτυπώσει μόνο τις άρτιες τιμές ανάμεσα στο 0 και το 10:
#include <stdio.h> int main() { int i; for (i = 0; i <= 10; i++) { // Επανάληψη από το 0 έως το 10 if (i % 2 == 0) { // Έλεγχος εάν το i είναι ζυγός printf("%d ", i); // Εκτύπωση του i } } return 0; // Επιστροφή της τιμής 0 για ολοκλήρωση του προγράμματος }
Σε αυτόν τον κώδικα, χρησιμοποιείται η γλώσσα C για να εμφανίσει τους ζυγούς αριθμούς από το 0 έως το 10. Ο κώδικας περιλαμβάνει τα εξής σημεία:
- Ορισμός της κεφαλίδας
#include <stdio.h>
που εισάγει τη βιβλιοθήκηstdio.h
για τη χρήση της συνάρτησηςprintf
. - Ορισμός της συνάρτησης
main
ως την κύρια συνάρτηση του προγράμματος. - Δήλωση της μεταβλητής
i
τύπουint
που θα χρησιμοποιηθεί για την επανάληψη. - Χρήση της δομής επανάληψης
for
για να επαναλάβει τον κώδικα από το 0 έως το 10. - Εσωτερική δομή ελέγχου
if
που ελέγχει εάν ο αριθμόςi
είναι ζυγός. - Χρήση της συνάρτησης
printf
για να εκτυπωθεί ο ζυγός αριθμός. - Επιστροφή της τιμής 0 για να υποδείξει ότι το πρόγραμμα ολοκληρώθηκε με επιτυχία.
Το αποτέλεσμα του παραπάνω παραδείγματος θα είναι η εκτύπωση των αριθμών 0, 2, 4, 6, 8 και 10 στη σειρά:
0 2 4 6 8 10
Μπορείτε να τροποποιήσετε το παραπάνω παράδειγμα για να εκτυπώνει μόνο τις άρτιες τιμές ανάμεσα στο 0 και το 10 με βήμα +2. Ακολουθεί η τροποποιημένη έκδοση του κώδικα:
#include <stdio.h> int main() { int i; // Δήλωση μεταβλητής i for (i = 0; i <= 10; i += 2) { printf("%d ", i); // Εκτύπωση της τιμής της μεταβλητής i } return 0; }
Ο παραπάνω κώδικας σε C πραγματοποιεί έναν απλό βρόχο επανάληψης για να εκτυπώσει τους αριθμούς 0, 2, 4, 6, 8 και 10. Αρχικά, η μεταβλητή i
δηλώνεται και αρχικοποιείται με την τιμή 0. Στη συνέχεια, ο βρόχος for
εκτελείται όσο η τιμή της i
είναι μικρότερη ή ίση του 10. Με κάθε επανάληψη, η τιμή της i
αυξάνεται κατά 2 (i += 2), και η τιμή της εκτυπώνεται χρησιμοποιώντας τη συνάρτηση printf
. Τελικά, ο κώδικας επιστρέφει την τιμή 0, υποδηλώνοντας επιτυχή ολοκλήρωση του προγράμματος.
Το αποτέλεσμα του παραπάνω παραδείγματος θα είναι η εκτύπωση των αριθμών 0, 2, 4, 6, 8 και 10 στη σειρά:
0 2 4 6 8 10
Είναι επίσης δυνατόν να τοποθετήσετε ένα loop μέσα σε ένα άλλο loop. Αυτό ονομάζεται nested loop.
Το “εσωτερικό loop” θα εκτελεστεί μία φορά για κάθε επανάληψη του “εξωτερικού loop”:
#include <stdio.h> int main() { int i, j; for (i = 0; i < 5; i++) { // Επανάληψη για τη μεταβλητή i από 0 έως 4 for (j = 0; j < 3; j++) { // Επανάληψη για τη μεταβλητή j από 0 έως 2 printf("%d,%d ", i, j); // Εκτύπωση των τιμών των μεταβλητών i και j } printf("\n"); // Εκτύπωση μιας νέας γραμμής για να διαχωρίσει τις επαναλήψεις } return 0; }
Ο παραπάνω κώδικας χρησιμοποιεί έναν εμφωλευμένο βρόχο for για να εκτελέσει μια σειρά εντολών επαναληπτικά. Κάθε φορά που η μεταβλητή i αυξάνεται από το 0 έως το 4, ο εσωτερικός βρόχος εκτελείται επίσης, αυξάνοντας τη μεταβλητή j από το 0 έως το 2. Κατά τη διάρκεια κάθε επανάληψης, εκτυπώνονται οι τιμές των μεταβλητών i και j, χρησιμοποιώντας τη συνάρτηση printf. Στο τέλος κάθε επανάληψης, εκτυπώνεται μια νέα γραμμή για να διαχωρίσει τις τιμές των j για κάθε τιμή της i. Ο κώδικας επιστρέφει την τιμή 0 για να υποδηλώσει ότι η εκτέλεση ολοκληρώθηκε με επιτυχία.
Το αποτέλεσμα του παραπάνω παραδείγματος θα είναι η εκτύπωση των αριθμών 0,0 0,1 0,2, ακολουθούμενων από μια κενή γραμμή, και στη συνέχεια των αριθμών 1,0 1,1 1,2, ακολουθίας από μια κενή γραμμή, κ.ο.κ., όπως παρακάτω:
0,0 0,1 0,2 1,0 1,1 1,2 2,0 2,1 2,2 3,0 3,1 3,2 4,0 4,1 4,2
Σημειώστε ότι μπορείτε να ενσωματώσουμε όσους βρόχους χρειάζεστε μέσα σε άλλους βρόχους, δίνοντας σας μεγαλύτερη ευελιξία στη γραφή του κώδικα σας. Ωστόσο, πρέπει να θυμάστε ότι οι nested loops μπορεί να γίνουν πολύ περίπλοκοι και δύσκολοι στη διαχείριση, οπότε πρέπει να χρησιμοποιούνται με προσοχή.