Korduslaused
Õpieesmärgid
Selle peatüki lõpuks peaks õppija:
- mõistma, miks programmis kasutatakse korduseid
- oskama kirjutada
forjawhiletsükleid - mõistma tsüklimuutuja, tingimuse ja sammu rolli
- oskama kasutada tsüklit massiivi väärtuste läbimiseks
- oskama märgata lõpmatu tsükli ja ühe võrra eksimise vigu
Miks tsükleid vaja on?
Programmid töötavad tihti nimekirjadega. Näiteks klassi hinded, ostukorvi tooted, kasutajate nimekiri või sõnumid vestluses. Kui väärtuseid on palju, ei taha me sama koodi käsitsi mitu korda kirjutada.
Ilma tsüklita:
console.log("Tere, Mari");
console.log("Tere, Joonas");
console.log("Tere, Kati");Tsükliga:
const names = ["Mari", "Joonas", "Kati"];
for (let i = 0; i < names.length; i++) {
console.log(`Tere, ${names[i]}`);
}Tsükkel lubab ühte tegevust korrata seni, kuni tingimus kehtib.
for tsükkel
for tsükkel sobib siis, kui teame, mitu korda tahame midagi korrata või kui läbime massiivi indeksite abil.
for (let i = 0; i < 5; i++) {
console.log(i);
}Selle tsükli kolm osa on:
let i = 0loob tsüklimuutujai < 5ütleb, millal tsükkel jätkubi++suurendab muutujat iga ringi lõpus
Massiivi läbimisel kasutatakse sageli length omadust:
const grades = [5, 4, 3, 5];
for (let i = 0; i < grades.length; i++) {
console.log(grades[i]);
}for...of
Kui indeksit pole vaja, on for...of algajale loetavam.
const grades = [5, 4, 3, 5];
for (const grade of grades) {
console.log(grade);
}Seda kasutatakse siis, kui tahame iga massiivi elemendiga midagi teha.
while tsükkel
while tsükkel töötab seni, kuni tingimus on tõene.
let attempts = 0;
while (attempts < 3) {
console.log("Proovi uuesti");
attempts++;
}while sobib olukordadesse, kus me ei tea täpselt, mitu korda tsükkel käivitub. Näiteks mängus võib kasutaja arvata numbrit seni, kuni vastus on õige.
break ja continue
break lõpetab tsükli täielikult.
const names = ["Mari", "Joonas", "Kati"];
for (const name of names) {
if (name === "Joonas") {
break;
}
console.log(name);
}continue jätab ühe ringi vahele ja liigub järgmise juurde.
const grades = [5, 2, 4, 1, 3];
for (const grade of grades) {
if (grade < 3) {
continue;
}
console.log(`Positiivne hinne: ${grade}`);
}Päris näide: keskmise hinde arvutamine
const grades = [4, 5, 3, 5];
let total = 0;
for (const grade of grades) {
total = total + grade;
}
const average = total / grades.length;
console.log(`Keskmine hinne on ${average}`);Siin kasutatakse tsüklit, et kõik hinded kokku liita. Seejärel jagatakse summa hinnete arvuga.
Levinud vead
Ühe võrra eksimine on väga tavaline viga:
const names = ["Mari", "Joonas", "Kati"];
for (let i = 0; i <= names.length; i++) {
console.log(names[i]); // viimane väärtus on undefined
}Õige tingimus on i < names.length, sest indeksid algavad nullist.
for (let i = 0; i < names.length; i++) {
console.log(names[i]);
}Teine viga on lõpmatu tsükkel:
let count = 0;
while (count < 5) {
console.log(count);
// count ei muutu, seega tsükkel ei lõpe
}Harjutused
- Väljasta tsükliga arvud 1 kuni 10.
- Loo massiiv õpilaste nimedega ja tervita iga õpilast.
- Arvuta massiivis olevate hindede summa.
- Leia massiivist ainult positiivsed hinded ja väljasta need.
- Kirjuta
whiletsükkel, mis loendab kolmest nullini.