JAVA ΕΝΟΤΗΤΑ 11 – WHILE, DO-WHILE, FOR LOOP

 


ΕΙΣΑΓΩΓΗ

Στο σημερινό δωρεάν μάθημα Java θα αναλύσουμε τα loops - δηλαδή τον τρόπο με τον οποίο μπορούμε να εκτελέσουμε πολλαπλές φορές ένα μέρος του προγράμματος μας

γράφοντας κώδικα μόνο μια φορά. Η Java μας προσφέρει τρία διαφορετικά είδη loops για να μπορούμε να καλύψουμε όλες τις περιπτώσεις: while loop, do-while loop και for loop.

WHILE LOOP

Το while loop έχει το χαρακτηριστικό να εκτελεί ένα κομμάτι κώδικα για όσο η συνθήκη του παραμένει true. Αν η συνθήκη, την οποία ελέγχει το while loop, επιστρέψει αποτέλεσμα false τότε το while loop σταματάει την εκτέλεση του κώδικα του και προχωράει στην εκτέλεση του υπόλοιπου προγράμματος.

Η γενική μορφή που ορίζει συντακτικά το while loop είναι η εξής:

While(Boolean_expression)

{

//Statements

}

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

Ας δούμε ένα απλό while loop παράδειγμα πριν μιλήσουμε για μια ακόμα σημαντική λεπτομέρεια.

App.java

package com.example;

public class App {

    public static void main(String[] args) {
        int x = 1;
        while (x <= 10) {
            System.out.println(x);
            x++;
        }
    }
}

Output

1

2

3

4

5

6

7

8

9

10

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

Ο παρακάτω κώδικας είναι ένα δείγμα ενός infinite loop.

int i = 1;

while(i > 0)

{

            System.out.println(i++);

}


DO WHILE LOOP

Το do-while loop συμπεριφέρεται σχεδόν σαν το while loop αλλά διαφέρει στη χρονική στιγμή που ελέγχει τη συνθήκη. Ενώ το while loop πρώτα κάνει τον έλεγχο της συνθήκης, το do-while loop εκτελεί τον έλεγχο στο τέλος αφού έχει ήδη εκτελεστεί ο κώδικας. Αυτό είναι ένα θετικό στοιχείο, γιατί υπάρχουν περιπτώσεις στις οποίες χρειαζόμαστε να εκτελεστεί ο κώδικας του loop τουλάχιστον μια φορά.

Η γενική δομή ενός do-while loop είναι η εξής:

do

{

            //Statements

}while(Boolean_expression);

Ας δούμε ένα απλό παράδειγμα ενός do-while loop.

App.java

package com.example;

public class App {

    public static void main(String[] args) {
        int y = 10;
        do {
            System.out.println(y);
            y += 10;
        } while (y <= 100);
    }
}

Output

10

20

30

40

50

60

70

80

90

100

FOR LOOP

Τα δύο προηγούμενα loops (while και do-while) επαναλαμβάνουν την εκτέλεση ενός συγκριμένου κώδικα για όσο η συνθήκη που τα καθορίζει είναι true. Αυτό σημαίνει ότι δεν εξαρτιόμαστε από κάποιο συγκεκριμένο αριθμό επαναλήψεων γιατί μπορεί να μην μας είναι γνωστός εξ αρχής. Για αυτό ακριβώς το λόγο υπάρχει το τρίτο loop – το for loop. Αυτό έρχεται να καλύψει το κενό των δύο πρώτων loop, δηλαδή να εκτελείται ένα μέρος του κώδικα για ένα συγκεκριμένο αριθμό επαναλήψεων ο οποίος είναι γνωστός πριν την εκτέλεση του loop.


 

Η γενική δομή ενός for loop ορίζεται ως εξής:

for(initialization; Boolean_expression; step)

{

// Statements

}

 Πριν δούμε ένα απλό παράδειγμα, ας εξηγήσουμε τις παραμέτρους που πρέπει να ορίσουμε:

initialization – Ορίζουμε τη μεταβλητή ή μεταβλητές που θα χρησιμοποιηθούν από το for loop.

Boolean_expression – Η συνθήκη που όσο παραμένει true το for loop θα συνεχίσει να εκτελείται.

step – Η αριθμητική πράξη που θα επηρεάζει τη μεταβλητή που ορίστηκε στο initialization.

Ας δούμε τώρα ένα απλό παράδειγμα με το for-loop.

App.java

package com.example;

public class App {

    public static void main(String[] args) {
        for (int j = 1; j <= 1024; j = j * 2) {
            System.out.println(j);
        }
    }
}

Output

1

2

4

8

16

32

64

128

256

512

1024


BREAK  AND CONTINUE

Υπάρχει μεγάλη πιθανότητα, όταν ψάχνετε στο Internet για κάποιο παράδειγμα κώδικα, να δείτε τις εντολές break και continue να περιέχονται μέσα στα loops.

Το break το έχουμε ήδη συναντήσει στο switch. Στα loops έχει ακριβώς την ίδια λειτουργία – να σταματάει τα loop ανά πάσα στιγμή και η εκτέλεση του προγράμματος να συνεχίζεται με κώδικα που ανήκει εκτός loop.

Ας δούμε ένα απλό παράδειγμα ενός while loop που χρησιμοποιεί το break.

App.java

package com.example;

public class App {

    public static void main(String[] args) {
        int k = 1;
        while (k <= 10) {
            System.out.println(k);
            if (k == 6) {
                break;
            }
            k++;
        }
        System.out.println("The final value of k is " + k);
    }
}

Output

1

2

3

4

5

6

The final value of k is 6

Η λογική που μόλις υλοποιήσαμε είναι πολύ απλή. Ορίζουμε εξ αρχής μια μεταβλητή k με αρχική τιμή 1. Για όσο η τιμή του k παραμένει μικρότερη ή ίση του 10, τότε θέλουμε να τυπώσουμε στο terminal την τιμή του k. Στη περίπτωση όπου το k έχει τιμή ίση με 6, τότε θέλουμε να βγούμε εντελώς έξω από το loop και να συνεχίσουμε με το υπόλοιπο πρόγραμμα που στη δική μας περίπτωση απλά τυπώνει την τελική τιμή της μεταβλητής k.

Το continue έχει την ιδιότητα, όποτε ενεργοποιείται για κάποια τιμή, να παραβλέπει την τρέχουσα εκτέλεση του loop και να συνεχίζει στην επόμενη εκτέλεση.

Ας δούμε ένα απλό παράδειγμα ενός for loop που χρησιμοποιεί το continue.

App.java

package com.example;

public class App {

    public static void main(String[] args) {
        for (int i = 10; i > 0; i--) {
            if (i % 2 == 0) {
                continue;
            }
            System.out.println(i);
        }
    }
}

Output

9

7

5

3

1

Σε αυτό το απλό παράδειγμα, ορίζουμε μια τοπική μεταβλητή i με αρχική τιμή 10. Για όσο το i παραμένει μεγαλύτερο του 0, θα τυπώσουμε την τιμή του i. Αν όμως η τιμή του i διαιρείται ακριβώς με το 2, τότε δεν θέλουμε να τυπώσουμε την τιμή αλλά να προχωρήσουμε στην επόμενη τιμή του i. Τελικό αποτέλεσμα είναι να τυπώσουμε μόνο τους μονούς αριθμούς και όχι τους ζυγούς.   

Μην ξεχάσετε να κάνετε ένα μικρό donation έτσι ώστε αυτό το blog να μεγαλώσει ακόμα πιο πολύ και να έχει περισσότερες δυνατότητες στην online παράδοση δωρεάν μαθημάτων.


full-width

Post a Comment

0 Comments