Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

3.4 Η δομή επανάληψης For στην γλώσσα C

Η δομή επανάληψης for στη γλώσσα C χρησιμοποιείται για να εκτελέσει ένα σύνολο εντολών επαναληπτικά, με βάση έναν αριθμητή και ένα σύνολο κανόνων για την εκτέλεση των εντολών.

Η δομή της for αποτελείται από τρία μέρη: την αρχικοποίηση, τη συνθήκη ελέγχου και την ενημέρωση του αριθμητή. Κατά την εκτέλεση της for, αρχικοποιείται ο αριθμητής, ελέγχεται η συνθήκη και αν αυτή είναι αληθής, εκτελούνται οι εντολές μέσα στο σώμα της for. Στη συνέχεια, ο αριθμητής ενημερώνεται και η διαδικασία επαναλαμβάνεται. Η επανάληψη συνεχίζεται μέχρις ότου η συνθήκη γίνει ψευδής.

Η σωστή σύνταξη της for είναι η εξής:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for (αρχικοποίηση; συνθήκη; ενημέρωση) {
// εντολές που θα εκτελεστούν επαναληπτικά
}
for (αρχικοποίηση; συνθήκη; ενημέρωση) { // εντολές που θα εκτελεστούν επαναληπτικά }
for (αρχικοποίηση; συνθήκη; ενημέρωση) {
    // εντολές που θα εκτελεστούν επαναληπτικά
}

Η αρχικοποίηση αναφέρεται στην αρχική τιμή του αριθμητή, η συνθήκη είναι η συνθήκη ελέγχου που πρέπει να είναι αληθής για να συνεχιστεί η επανάληψη, και η ενημέρωση αναφέρεται στην ανανέωση του αριθμητή μετά από κάθε επανάληψη.

Η δομή της for επιτρέπει την εκτέλεση ενός συνόλου εντολών για έναν καθορισμένο αριθμό φορών ή μέχρις ότου μια συνθήκη να γίνει ψευδής.

Ένα παράδειγμα είναι το εξής:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
int i; // Δήλωση μεταβλητής i
for (i = 0; i < 5; i++) {
printf("%d ", i); // Εκτύπωση της τιμής της μεταβλητής i
}
return 0; // Επιστροφή της τιμής 0
}
#include <stdio.h> int main() { int i; // Δήλωση μεταβλητής i for (i = 0; i < 5; i++) { printf("%d ", i); // Εκτύπωση της τιμής της μεταβλητής i } return 0; // Επιστροφή της τιμής 0 }
#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 στη σειρά:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4

Σημειώνεται ότι η μεταβλητή i μπορεί να δηλωθεί εντός της αρχικοποίησης του βρόχου (for) και δεν απαιτείται να προηγηθεί η δήλωσή της πριν από τον βρόχο. Αυτό σημαίνει ότι μπορούμε να γράψουμε τη δήλωση της μεταβλητής i απευθείας μέσα στην εντολή for, στο τμήμα της αρχικοποίησης. Για παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for (int i = 0; i < 5; i++) {
printf("%d ", i);
}
for (int i = 0; i < 5; i++) { printf("%d ", i); }
for (int i = 0; i < 5; i++) {
    printf("%d ", i);
}

Με αυτόν τον τρόπο, η μεταβλητή i θα είναι ορατή μόνο μέσα στον βρόχο και δεν θα μπορεί να χρησιμοποιηθεί εκτός του περιορισμένου αυτού πεδίου ισχύος. Αυτή η προσέγγιση είναι χρήσιμη όταν η μεταβλητή i δεν χρειάζεται να έχει ευρύτερο πεδίο ισχύος και είναι συνηθισμένη στη γλώσσα C.

Για παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
for (int i = 0; i < 5; i++) {
printf("%d ", i); // Εκτύπωση της τιμής του i
}
return 0;
}
#include <stdio.h> int main() { for (int i = 0; i < 5; i++) { printf("%d ", i); // Εκτύπωση της τιμής του i } return 0; }
#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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#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 για ολοκλήρωση του προγράμματος
}
#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 για ολοκλήρωση του προγράμματος }
#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 στη σειρά:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
0 2 4 6 8 10
0 2 4 6 8 10
0 2 4 6 8 10

Μπορείτε να τροποποιήσετε το παραπάνω παράδειγμα για να εκτυπώνει μόνο τις άρτιες τιμές ανάμεσα στο 0 και το 10 με βήμα +2. Ακολουθεί η τροποποιημένη έκδοση του κώδικα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
int i; // Δήλωση μεταβλητής i
for (i = 0; i <= 10; i += 2) {
printf("%d ", i); // Εκτύπωση της τιμής της μεταβλητής i
}
return 0;
}
#include <stdio.h> int main() { int i; // Δήλωση μεταβλητής i for (i = 0; i <= 10; i += 2) { printf("%d ", i); // Εκτύπωση της τιμής της μεταβλητής i } return 0; }
#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 στη σειρά:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
0 2 4 6 8 10
0 2 4 6 8 10
0 2 4 6 8 10

Είναι επίσης δυνατόν να τοποθετήσετε ένα loop μέσα σε ένα άλλο loop. Αυτό ονομάζεται nested loop.

Το “εσωτερικό loop” θα εκτελεστεί μία φορά για κάθε επανάληψη του “εξωτερικού loop”:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#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;
}
#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; }
#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, ακολουθίας από μια κενή γραμμή, κ.ο.κ., όπως παρακάτω:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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 μπορεί να γίνουν πολύ περίπλοκοι και δύσκολοι στη διαχείριση, οπότε πρέπει να χρησιμοποιούνται με προσοχή.

19 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων