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 στην Java

Στην Java, ο βρόχος for χρησιμοποιείται όταν γνωρίζετε εκ των προτέρων πόσες φορές θέλετε να επαναλάβετε ένα μπλοκ κώδικα. Αντίθετα με τον βρόχο while, ο βρόχος for έχει μια συγκεκριμένη σύνταξη που αποτελείται από τρία στοιχεία.

Η δομή ενός βρόχου for είναι η εξής:

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

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

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

Παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for (int i = 0; i < 5; i++) {
System.out.println(i); // Εκτύπωση της τιμής του i
}
for (int i = 0; i < 5; i++) { System.out.println(i); // Εκτύπωση της τιμής του i }
for (int i = 0; i < 5; i++) {
    System.out.println(i); // Εκτύπωση της τιμής του i
}

Σε αυτόν τον κώδικα, χρησιμοποιείται η δομή επανάληψης for για να εκτελεστεί μια διάταξη επανάληψης πέντε φορές. Η δήλωση int i = 0 αρχικοποιεί τη μεταβλητή i με την αρχική τιμή 0. Η συνθήκη i < 5 ελέγχει αν η τιμή του i είναι μικρότερη από 5, και αν ναι, η επανάληψη συνεχίζεται. Μετά από κάθε επανάληψη, η εντολή i++ αυξάνει την τιμή του i κατά 1.

Μέσα στην επανάληψη, η εντολή System.out.println(i) εκτυπώνει την τρέχουσα τιμή του i στην κονσόλα. Έτσι, θα εκτυπωθούν οι αριθμοί 0, 1, 2, 3 και 4, καθώς η μεταβλητή i αυξάνεται μετά από κάθε επανάληψη.

Παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for (int i = 0; i < 5; i++) {
System.out.println(i); // Εκτύπωση της τιμής του i
}
for (int i = 0; i < 5; i++) { System.out.println(i); // Εκτύπωση της τιμής του i }
for (int i = 0; i < 5; i++) {
    System.out.println(i); // Εκτύπωση της τιμής του i
}

Σε αυτόν τον κώδικα, χρησιμοποιείται η δομή επανάληψης for για να εκτελεστεί μια διάταξη επανάληψης πέντε φορές. Η δήλωση int i = 0 αρχικοποιεί τη μεταβλητή i με την αρχική τιμή 0. Η συνθήκη i < 5 ελέγχει αν η τιμή του i είναι μικρότερη από 5, και αν ναι, η επανάληψη συνεχίζεται. Μετά από κάθε επανάληψη, η εντολή i++ αυξάνει την τιμή του i κατά 1.

Μέσα στην επανάληψη, η εντολή System.out.println(i) εκτυπώνει την τρέχουσα τιμή του i στην κονσόλα. Έτσι, θα εκτυπωθούν οι αριθμοί 0, 1, 2, 3 και 4, καθώς η μεταβλητή i αυξάνεται μετά από κάθε επανάληψη.

Μια εναλλακτική χρήση της δομής επανάληψης for είναι να επαναλάβετε μια συλλογή αντικειμένων, όπως πίνακες ή λίστες. Σε αυτήν την περίπτωση, μπορείτε να χρησιμοποιήσετε τη μέθοδο length για να πάρετε το μέγεθος της συλλογής και να το χρησιμοποιήσετε στη συνθήκη επανάληψης του βρόχου for.

Παρακάτω δίνεται ένα παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
int[] numbers = {2, 4, 6, 8, 10};
// Επανάληψη για κάθε στοιχείο του πίνακα numbers
for (int i = 0; i < numbers.length; i++) {
// Εκτύπωση του τρέχοντος στοιχείου
System.out.println(numbers[i]);
}
int[] numbers = {2, 4, 6, 8, 10}; // Επανάληψη για κάθε στοιχείο του πίνακα numbers for (int i = 0; i < numbers.length; i++) { // Εκτύπωση του τρέχοντος στοιχείου System.out.println(numbers[i]); }
int[] numbers = {2, 4, 6, 8, 10};

// Επανάληψη για κάθε στοιχείο του πίνακα numbers
for (int i = 0; i < numbers.length; i++) {
    // Εκτύπωση του τρέχοντος στοιχείου
    System.out.println(numbers[i]);
}

[adinserter block=”2″]

Τα σχόλια έχουν προστεθεί για να εξηγήσουν τον κώδικα και τα βήματα που ακολουθούνται. Πιο συγκεκριμένα:

  • Η γραμμή int[] numbers = {2, 4, 6, 8, 10}; δημιουργεί έναν πίνακα με ονομασία numbers που περιέχει τους αριθμούς 2, 4, 6, 8, και 10.
  • Η επανάληψη for χρησιμοποιείται για να προσπελάσει και να εκτυπώσει τα στοιχεία του πίνακα.
  • Η μεταβλητή i αρχικοποιείται με την τιμή 0 και αυξάνεται κατά 1 σε κάθε επανάληψη.
  • Η συνθήκη i < numbers.length ελέγχει αν η μεταβλητή i είναι μικρότερη από το μήκος του πίνακα numbers.
  • Η εντολή System.out.println(numbers[i]); εκτυπώνει το στοιχείο του πίνακα που βρίσκεται στη θέση i.

Έτσι, ο κώδικας εκτυπώνει τα στοιχεία του πίνακα numbers σε διαδοχικές γραμμές στην κονσόλα.

Το αποτέλεσμα που θα εμφανιστεί στην οθόνη είναι οι αριθμοί 2, 4, 6, 8, 10, ένας αριθμός ανά γραμμή, διότι η μέθοδος System.out.println() εκτυπώνει το περιεχόμενο στο παράθυρο της κονσόλας και στη συνέχεια προχωρά σε μια νέα γραμμή. Επομένως, το αποτέλεσμα θα είναι:

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

Κάθε αριθμός εμφανίζεται σε μια ξεχωριστή γραμμή της κονσόλας.

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

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

Η χρήση των βρόχων for είναι σημαντική για την αποτελεσματική και συμπαγή υλοποίηση των επαναλαμβανόμενων διεργασιών στην Java. Με τη σωστή χρήση των βρόχων for, ο κώδικας γίνεται πιο αναγνώσιμος, ευανάγνωστος και ευκολότερος στη συντήρηση.

Αυτό το παράδειγμα θα εκτυπώσει μόνο τις άρτιες τιμές από το 0 έως το 20:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for (int i = 0; i <= 20; i += 2) {
System.out.println(i); // Εκτύπωση της τρέχουσας τιμής της μεταβλητής i
}
for (int i = 0; i <= 20; i += 2) { System.out.println(i); // Εκτύπωση της τρέχουσας τιμής της μεταβλητής i }
for (int i = 0; i <= 20; i += 2) {
    System.out.println(i); // Εκτύπωση της τρέχουσας τιμής της μεταβλητής i
}

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

Μέσα στο σώμα της επανάληψης, η εντολή System.out.println(i); εκτυπώνει την τρέχουσα τιμή της μεταβλητής i στην κονσόλα. Έτσι, θα εκτυπωθούν οι αριθμοί 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 καθώς η i αυξάνεται κατά 2 με κάθε επανάληψη.

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 3; j++) {
System.out.println(i + " * " + j + " = " + (i*j));
}
}
for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 3; j++) { System.out.println(i + " * " + j + " = " + (i*j)); } }
for (int i = 1; i <= 5; i++) {
  for (int j = 1; j <= 3; j++) {
    System.out.println(i + " * " + j + " = " + (i*j));
  }
}

Αυτός ο κώδικας περιέχει δύο εμφωλευμένους βρόχους. Ο πρώτος βρόχος εκτελείται για τις τιμές του i από 1 έως 5. Ο δεύτερος βρόχος εκτελείται για τις τιμές του j από 1 έως 3. Συνεπώς, ο κώδικας μέσα στον εσωτερικό βρόχο θα εκτελεστεί συνολικά 15 φορές (5 φορές για το i και 3 φορές για το j). Συνεπώς, το παραπάνω παράδειγμα θα εκτυπώσει τον πίνακα πολλαπλασιασμού από το 1 έως το 5, όπως παρακάτω:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 5 * 1 = 5 5 * 2 = 10 5 * 3 = 15
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15

[adinserter block=”3″]

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

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

Στη Java, υπάρχει ένας “for-each” βρόχος, γνωστός και ως enhanced for loop, ο οποίος χρησιμοποιείται αποκλειστικά για να επαναλαμβάνει στοιχεία σε έναν πίνακα (array) ή μια συλλογή (collection).

Ο συντακτικός του “for-each” βρόχου είναι ο εξής:

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

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

Ο “for-each” βρόχος μας παρέχει μια πιο συνοπτική και ασφαλή σύνταξη για την επανάληψη στοιχείων ενός πίνακα ή μιας συλλογής, εξοικονομώντας μας από την ανάγκη για χειροκίνητη διαχείριση δεικτών ή αποθήκευσης μεταβλητών για την πρόοδο της επανάληψης.

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
String[] gpu = {"Nvidia", "AMD", "Intel"};
// Χρησιμοποιούμε την επανάληψη for-each για να πάρουμε κάθε στοιχείο του πίνακα gpu
// και το αποθηκεύουμε στη μεταβλητή i.
for (String i : gpu) {
// Εκτυπώνουμε το τρέχον στοιχείο του πίνακα στην κονσόλα.
System.out.println(i);
}
String[] gpu = {"Nvidia", "AMD", "Intel"}; // Χρησιμοποιούμε την επανάληψη for-each για να πάρουμε κάθε στοιχείο του πίνακα gpu // και το αποθηκεύουμε στη μεταβλητή i. for (String i : gpu) { // Εκτυπώνουμε το τρέχον στοιχείο του πίνακα στην κονσόλα. System.out.println(i); }
String[] gpu = {"Nvidia", "AMD", "Intel"};

// Χρησιμοποιούμε την επανάληψη for-each για να πάρουμε κάθε στοιχείο του πίνακα gpu
// και το αποθηκεύουμε στη μεταβλητή i.
for (String i : gpu) {
  // Εκτυπώνουμε το τρέχον στοιχείο του πίνακα στην κονσόλα.
  System.out.println(i);
}

Όταν εκτελέσετε τον παραπάνω κώδικα, θα προκύψει το ακόλουθο αποτέλεσμα στην οθόνη:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Nvidia
AMD
Intel
Nvidia AMD Intel
Nvidia
AMD
Intel

Κάθε γραμμή αντιστοιχεί σε ένα στοιχείο του πίνακα gpu και εκτυπώνεται ξεχωριστά στην κονσόλα λόγω της χρήσης της μεθόδου System.out.println().

Ο “for-each” βρόχος είναι χρήσιμος όταν θέλετε να επαναλάβετε μέσα σε έναν πίνακα όλα τα στοιχεία ή να εξετάσετε ή να επεξεργαστείτε κάθε στοιχείο ξεχωριστά. Είναι πιο συνοπτικός και ευανάγνωστος από τον κλασικό “for” βρόχο όταν χρησιμοποιείται για τη διαχείριση ενός πίνακα.

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