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 είναι η εξής:

Σύνταξη:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for (initialization; condition; increment/decrement) {
// block of code to be executed
}
for (initialization; condition; increment/decrement) { // block of code to be executed }
for (initialization; condition; increment/decrement) {
  // block of code to be executed
}

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

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

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

Παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <iostream>
int main() {
for (int i = 1; i <= 5; i++) {
std::cout << i << " "; // Εκτύπωση της τιμής της μεταβλητής i και ενός κενού διαστήματος
}
return 0;
}
#include <iostream> int main() { for (int i = 1; i <= 5; i++) { std::cout << i << " "; // Εκτύπωση της τιμής της μεταβλητής i και ενός κενού διαστήματος } return 0; }
#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, χωρισμένων από ένα κενό διάστημα μεταξύ τους. Συγκεκριμένα, η έξοδος θα είναι:

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#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;
}
#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; }
#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” για να αναφερθούμε στην τοποθέτηση ενός βρόχου μέσα σε έναν άλλο βρόχο. Αυτό σημαίνει ότι ο εσωτερικός βρόχος θα εκτελείται μια φορά για κάθε επανάληψη του εξωτερικού βρόχου.

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

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

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

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

Παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#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;
}
#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; }
#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 αντίστοιχα.

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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: 0, j: 0 i: 0, j: 1 i: 1, j: 0 i: 1, j: 1 i: 2, j: 0 i: 2, j: 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), το οποίο χρησιμοποιείται αποκλειστικά για τη διάσχιση των στοιχείων σε έναν πίνακα (ή άλλα σύνολα δεδομένων):

Σύνταξη

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for (type var : array) {
// code to be executed for each element
}
for (type var : array) { // code to be executed for each element }
for (type var : array) {
  // code to be executed for each element
}

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

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

Παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <iostream>
int main() {
int arr[] = {1, 2, 3, 4, 5};
for (int i : arr) {
std::cout << i << std::endl; // Εκτύπωση του τρέχοντος στοιχείου του πίνακα
}
return 0;
}
#include <iostream> int main() { int arr[] = {1, 2, 3, 4, 5}; for (int i : arr) { std::cout << i << std::endl; // Εκτύπωση του τρέχοντος στοιχείου του πίνακα } return 0; }
#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}, τότε το αποτέλεσμα στην οθόνη θα είναι:

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

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

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