Υποενότητα 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)