Υποενότητα 8.2: Επαναληπτικές δομές
while loop
Χρησιμοποιούμε τον βρόχο "όσο" - while loop όταν δεν ξέρουμε πόσες φορές θέλουμε να τρέξει.
Ο βρόχος while έχει την ακόλουθη σύνταξη:
while (condition) {
code block to be executed
}
Ο while loop, εκετελείται όσο ο έλεγχος - condition είναι true
.
Παράδειγμα 1
/* add consectuive integers until we get to 100*/
var i = 0, sum = 0;
while(sum <= 100){
/*here we increment i, then add it to sum*/
i = i + 1;
sum = sum + i;
}
/*the loop exits when sum reaches or exceeds 100*/
console.log("We added up to "+i+" to get to 100");
Αυτό το παράδειγμα χρησιμοποιεί έναν βρόχο while για να προσθέσει διαδοχικούς ακέραιους αριθμούς έως ότου το άθροισμα εξισωθεί ή υπερβεί το 100. Όσο ο έλεγχος έχει αληθές αποτέλεσμα αυξάνεται η μεταβλητή i κατά 1 και προστίθεται στο άθροισμα. Ο βρόχος while λειτουργεί καλά εδώ, αφού δεν γνωρίζουμε πόσες φορές θα τρέπει να τρέξει ο βρόχος.
Tip: Αντιγράψτε το παραπάνω κομμάτι κώδικα και επικολλήστε το απευθείας στην κονσόλα, για να δείτε πώς λειτουργεί.
Παράδειγμα 2
Η μέθοδος string.indexOf("e", x)
μας δίνει τη θέση του πρώτου "e
" στη συμβολοσειρά - string
αρχίζοντας την αναζήτηση από τη θέση x
.
Η μέθοδος επιστρέφει -1
όταν δεν υπάρχει το επιζητούμενο στοιχείο.
/*we're going to count the 'e' characters in a string s:*/
var s = "everything is gonna be ok!";
/* let's suppose that 'e' doesn't exist. */
var count = 0, position = -1; finished = false;
while (!finished){
/* We use the "position+1" to continue searching for 'e' from where we were left*/
position = s.indexOf('e', position+1);
console.log(position);
if (position != -1){ /*'e' is found*/
count++;
}
else {
finished = true; /*'e' is not found, so finished becomes true*/
}
}
console.log("there are "+count+" 'e's in the string" );
Tip: Αντιγράψτε το παραπάνω κομμάτι κώδικα και επικολλήστε το απευθείας στην κονσόλα, για να δείτε πώς λειτουργεί.
Περισσότερες πληροφορίες: https://www.w3schools.com/js/js_loop_while.asp
Άσκηση
Προσθέσε διαδχικούς περιττούς αιθμούς μέχρι το άθροισμα τους να εξισωθεί ή υπερβεί το 1000. Ποιος είναι ο τελευταίος αριθμος που προστέθηκε;
var j = 0;
var sum = 0;
while (sum < 1000) {
j = j + 1;
if (j % 2 == 1){
sum = sum + j;
};
};
console.log(j)