ΕΙΣΑΓΩΓΗ
Στο σημερινό δωρεάν μάθημα 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
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
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
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
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
Output
9
7
5
3
1
Σε αυτό το
απλό παράδειγμα, ορίζουμε μια τοπική μεταβλητή i με αρχική τιμή 10. Για όσο το i παραμένει μεγαλύτερο του 0, θα
τυπώσουμε την τιμή του i. Αν όμως η τιμή του i διαιρείται ακριβώς με το 2, τότε δεν
θέλουμε να τυπώσουμε την τιμή αλλά να προχωρήσουμε στην επόμενη τιμή του i. Τελικό αποτέλεσμα είναι να
τυπώσουμε μόνο τους μονούς αριθμούς και όχι τους ζυγούς.
Μην ξεχάσετε να κάνετε ένα μικρό donation έτσι ώστε αυτό το blog να μεγαλώσει ακόμα πιο πολύ και να έχει περισσότερες δυνατότητες στην online παράδοση δωρεάν μαθημάτων.
0 Comments
Η γνώμη σας είναι σημαντική.