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

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

Σύνταξη:

for (initialization; condition; increment/decrement) {
  // block of code to be executed
}

Η δομή του for loop αποτελείται από τρία μέρη:

  • Η αρχικοποίηση της μεταβλητής (initialization) που θα χρησιμοποιηθεί για τον έλεγχο της συνθήκης του loop.
  • Η συνθήκη (condition) που καθορίζει πότε θα σταματήσει ο loop.
  • Η αύξηση ή μείωση της μεταβλητής (increment/decrement) σε κάθε επανάληψη του loop.

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

Παράδειγμα:

#include <iostream>

int main() {
    for (int i = 1; i <= 5; i++) {
        std::cout << i << " "; // Εκτύπωση της τιμής της μεταβλητής i και ενός κενού διαστήματος
    }

    return 0;
}

Ο παραπάνω κώδικας εκτυπώνει τους αριθμούς από 1 έως 5 στην οθόνη. Χρησιμοποιεί έναν βρόχο for για να εκτελέσει τον κώδικα επαναληπτικά για κάθε τιμή της μεταβλητής i από 1 έως 5.

Σε κάθε επανάληψη, η τιμή της μεταβλητής i εκτυπώνεται χρησιμοποιώντας τη συνάρτηση std::cout, η οποία ανήκει στη βιβλιοθήκη <iostream>. Έπειτα, εκτυπώνεται ένα κενό διάστημα μετά τον αριθμό.

Τελικά, ο κώδικας επιστρέφει την τιμή 0, υποδηλώνοντας ότι η εκτέλεση του προγράμματος ολοκληρώθηκε με επιτυχία.

Το αποτέλεσμα που θα εμφανιστεί στην οθόνη είναι η σειρά των αριθμών από 1 έως 5, χωρισμένων από ένα κενό διάστημα μεταξύ τους. Συγκεκριμένα, η έξοδος θα είναι:

1 2 3 4 5

Ένα ακόμη παράδειγμα, που θα εκτυπώσει μόνο τις άρτιες τιμές από το 0 έως το 10:

#include <iostream>

int main() {
  for (int i = 0; i <= 10; i++) { // Επανάληψη από το 0 έως το 10
    if (i % 2 == 0) { // Έλεγχος αν το i είναι άρτιο
      std::cout << i << std::endl; // Εκτύπωση του άρτιου αριθμού
    }
  }
  return 0;
}

Ο παραπάνω κώδικας εκτελεί την ακόλουθη λειτουργία:

  1. Αρχικοποιείται η μεταβλητή i με την τιμή 0.
  2. Ξεκινά μια for επανάληψη που εκτελείται μέχρι το i να γίνει μεγαλύτερο από 10.
  3. Εντός της επανάληψης, γίνεται έλεγχος αν το i είναι διαιρέσιμο με το 2 (δηλαδή αν είναι άρτιος αριθμός).
  4. Αν το i είναι άρτιος, εκτυπώνεται η τιμή του στην οθόνη μέσω της εντολής std::cout << i << std::endl;.
  5. Η μεταβλητή i αυξάνεται κατά 1 μετά από κάθε επανάληψη.
  6. Όταν το i γίνει μεγαλύτερο από 10, η επανάληψη τερματίζει.
  7. Το πρόγραμμα επιστρέφει την τιμή 0, υποδηλώνοντας ότι ολοκληρώθηκε χωρίς σφάλματα.

Συνολικά, ο κώδικας εκτυπώνει τους άρτιους αριθμούς από το 0 έως το 10 στην οθόνη. Στην περίπτωση αυτή, θα εκτυπωθούν οι αριθμοί 0, 2, 4, 6, 8 και 10.

[adinserter block=”2″]

Μπορούμε να χρησιμοποιήσουμε τον όρο “εμφωλευμένο loop” ή “nested loop” για να αναφερθούμε στην τοποθέτηση ενός βρόχου μέσα σε έναν άλλο βρόχο. Αυτό σημαίνει ότι ο εσωτερικός βρόχος θα εκτελείται μια φορά για κάθε επανάληψη του εξωτερικού βρόχου.

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

Ο εμφωλευμένος βρόχος μπορεί να χρησιμοποιηθεί για να επαναλάβει μια συγκεκριμένη διαδικασία πολλές φορές μέσα σε μια επανάληψη του εξωτερικού βρόχου. Αυτή η τεχνική είναι χρήσιμη όταν χρειάζεται να επαναλάβουμε μια συγκεκριμένη ενέργεια για κάθε στοιχείο ή συνδυασμό στοιχείων που επεξεργαζόμαστε στον εξωτερικό βρόχο.

Αυτός ο τρόπος δομής των βρόχων μας επιτρέπει να εκτελέσουμε πολύπλοκες και συνεκτικές επαναλήψεις στον

κώδικα, επιτρέποντάς μας να επεξεργαστούμε δεδομένα και να εκτελέσουμε ενέργειες με πολλαπλά επίπεδα εμβέλειας.

Παράδειγμα:

#include <iostream>

int main() {
    // Εξωτερική επανάληψη για τη μεταβλητή i
    for (int i = 0; i < 3; i++) {
        // Εσωτερική επανάληψη για τη μεταβλητή j
        for (int j = 0; j < 2; j++) {
            std::cout << "i: " << i << ", j: " << j << std::endl;
        }
    }
    return 0;
}

Ο παραπάνω κώδικας εκτελεί μια διπλή επανάληψη για τις μεταβλητές i και j. Αρχικά, η μεταβλητή i αρχικοποιείται στο 0 και ελέγχεται αν είναι μικρότερη από 3. Αν η συνθήκη είναι αληθής, η εσωτερική επανάληψη εκτελείται. Η μεταβλητή j αρχικοποιείται στο 0 και ελέγχεται αν είναι μικρότερη από 2. Αν η συνθήκη είναι αληθής, εκτελείται ο κώδικας μέσα στην εσωτερική επανάληψη, ο οποίος εκτυπώνει τις τιμές των μεταβλητών i και j στην οθόνη.

Ο κώδικας επαναλαμβάνει αυτήν την διαδικασία για όλες τις πιθανές τιμές των i και j. Έτσι, θα εμφανιστεί το μήνυμα “i: [τιμή του i], j: [τιμή του j]” έξι φορές, με όλους τους συνδυασμούς των τιμών i και j από το 0 έως το 2 και από το 0 έως το 1 αντίστοιχα.

Η έξοδος του προγράμματος θα είναι:

i: 0, j: 0
i: 0, j: 1
i: 1, j: 0
i: 1, j: 1
i: 2, j: 0
i: 2, j: 1

Αυτός είναι ο τρόπος με τον οποίο ο κώδικας εμφανίζει τις τιμές των μεταβλητών i και j μέσω της χρήσης της συνάρτησης std::cout της βιβλιοθήκης <iostream>.

Υπάρχει επίσης ένα “for-each loop” (εισήχθη στην έκδοση C++ 11 (2011), το οποίο χρησιμοποιείται αποκλειστικά για τη διάσχιση των στοιχείων σε έναν πίνακα (ή άλλα σύνολα δεδομένων):

Σύνταξη

for (type var : array) {
  // code to be executed for each element
}

Η μεταβλητή “var” παίρνει τιμές από τον πίνακα “array”, και το block κώδικα εκτελείται μία φορά για κάθε στοιχείο του πίνακα. Ο τύπος των στοιχείων του πίνακα πρέπει να συμφωνεί με τον τύπο της μεταβλητής “var”.

Το παρακάτω παράδειγμα εκτυπώνει όλα τα στοιχεία ενός πίνακα, χρησιμοποιώντας ένα “for-each loop”:

Παράδειγμα:

#include <iostream>

int main() {
  int arr[] = {1, 2, 3, 4, 5};
  for (int i : arr) {
    std::cout << i << std::endl;  // Εκτύπωση του τρέχοντος στοιχείου του πίνακα
  }
  return 0;
}

Ο παραπάνω κώδικας εκτυπώνει τα στοιχεία ενός πίνακα στην οθόνη. Αρχικά, δημιουργείται ο πίνακας arr με τιμές 1, 2, 3, 4, 5. Έπειτα, χρησιμοποιώντας μια for βρόγχο με τη συντακτική δομή for (int i : arr), κάθε στοιχείο του πίνακα arr αντιστοιχίζεται στη μεταβλητή i. Εν συνεχεία, με την εντολή std::cout << i << std::endl; γίνεται η εκτύπωση της τιμής του i στην οθόνη, ακολουθούμενη από έναν χαρακτήρα νέας γραμμής για να μεταβεί στην επόμενη γραμμή εξόδου. Η διαδικασία επαναλαμβάνεται για κάθε στοιχείο του πίνακα, έτσι ώστε να εκτυπωθούν όλα τα στοιχεία του πίνακα στη σειρά τους. Τέλος, η main συνάρτηση επιστρέφει την τιμή 0, υποδηλώνοντας ότι το πρόγραμμα ολοκληρώθηκε με επιτυχία.

Το αποτέλεσμα στην οθόνη θα είναι η εκτύπωση των στοιχείων του πίνακα arr σε διαδοχικές γραμμές. Αν υποθέσουμε ότι ο πίνακας arr έχει τις τιμές {1, 2, 3, 4, 5}, τότε το αποτέλεσμα στην οθόνη θα είναι:

1
2
3
4
5

Κάθε τιμή του πίνακα θα εμφανίζεται σε μια ξεχωριστή γραμμή, λόγω της εντολής std::cout << i << std::endl; που προκαλεί μια αλλαγή γραμμής μετά την εκτύπωση κάθε τιμής.

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