Бо давраҳои дарунҷоӣ ҷадвал ва шаклҳо кашед ва давраи беохирро бишносед
Бо ин саҳифа чӣ тавр кор кардан лозим аст
Тамоми код дар заминаи торик бо тугмаи ▶ Иҷро кардан — зинда аст. Онро бевосита дар ин ҷо тағйир диҳед ва натиҷаро дарҳол дар консоли поёни он бинед. Вайрон кардед — ↺ Аз нав-ро пахш кунед. Ишораҳои вазифаҳо пинҳон шудаанд: аввал худатон кӯшиш кунед, ишораро танҳо вақте кушоед, ки монд шудед. Имрӯз мо танҳо аз он чи аллакай медонем, истифода мебарем: тағйирёбандаҳо, навъҳо ва шартҳо. Функсияҳо ва массивҳо ҳоло нестанд — онҳо дар дарсҳои 5 ва 6 мебошанд.
01 Давраҳо барои чӣ лозиманд. Давраи while
Тасаввур кунед, ки шумо дар остонаи MakeFirstStep панҷ меҳмонро пешвоз мегиред. Бе давраҳо код чунин менамояд:
Бе давра: сатрҳоро нусха мекунем · Ctrl + Enter
console.log("Гость №1, добро пожаловать!");
console.log("Гость №2, добро пожаловать!");
console.log("Гость №3, добро пожаловать!");
console.log("Гость №4, добро пожаловать!");
console.log("Гость №5, добро пожаловать!");
Панҷ сатр — ҳанӯз тоқатфарсо нест. Аммо агар меҳмонон 500 бошанд? Ва агар шумораи онҳо пешакӣ маълум набошад? Дар ин ҷо давра ба кумак меояд — сохторе, ки блоки кодро то даме ки шарт иҷро мешавад, такрор мекунад. Соддатарин давра — while («то даме ки»):
Бо давраи while · Ctrl + Enter
let i = 1; // 1. оғоз: ҳисобкунак аз 1 сар мешавадwhile (i <= 5) { // 2. шарт: то даме ки true аст, такрор мекунем
console.log(`Гость №${i}, добро пожаловать!`);
i++; // 3. қадам: ҳисобкунакро иваз мекунем
}
console.log("Все гости встречены");
Ташбеҳ аз зиндагӣ
Шумо дар тӯй ошӣ палав тақсим мекунед. Қоида содда: то даме ки дар қазон палав ҳаст — боз як табақ мекашем. Пеш аз ҳар табақ ба қазон менигаред (шартро месанҷед). Палав ҳаст — мекашед (бадани давраро иҷро мекунед). Қазон холӣ — тамом. Чанд табақ мешавад, пешакӣ намедонед: ин аз қазон вобаста аст.
while қадам ба қадам чӣ тавр кор мекунад
Санҷиши шарт. JavaScript ифодаро дар қавсҳо пас аз while ҳисоб мекунад. Ин ҳамон ифодаест, ки дар if: true ё false.
Агар true — ҳар он чи дар қавсҳои фигурӣ аст, иҷро мешавад. Ин бадани давра аст.
Шумо барои гӯшмонакҳо ба маблағи 30 сомонӣ ғулак мекунед. Ҳар рӯз 5 сомонӣ ҷудо мекунед. Барои ҳар рӯз як сатр бароред: День 1: накоплено 5 сомони, то даме ки маблағ ба мақсад нарасад. Ду тағйирёбанда — day ва saved-ро эълон кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter
const goal = 30;
let saved = 0;
let day = 0;
// давра: то даме ки saved аз goal хурд аст
Натиҷаи интизоршаванда
День 1: накоплено 5 сомони
День 2: накоплено 10 сомони
День 3: накоплено 15 сомони
День 4: накоплено 20 сомони
День 5: накоплено 25 сомони
День 6: накоплено 30 сомони
Ишора 1
Дар давра ду тағйирёбанда тағйир меёбад: day++ ва saved += 5. Шарт ба saved нигоҳ мекунад.
Ишора 2
Аввал day ва saved-ро зиёд кунед, баъд сатрро бароред — он гоҳ дар он фавран рақамҳои дуруст мешаванд.
02 Давраи for
Дар давраи while се қисми муҳим — оғоз, шарт ва қадам — дар код пароканда шудаанд: оғоз болотар аз давра, қадам дар охири бадан. Чизеро фаромӯш кардан осон аст. Давраи for ҳамаи инро дар як сатр ҷамъ мекунад:
Таҳрир кардан мумкин аст · Ctrl + Enter
for (let i = 1; i <= 5; i++) {
console.log(`Гость №${i}, добро пожаловать!`);
}
Натиҷа ҳамон аст, ки дар while-и бахши гузашта, вале код камтар аст ва ҳар се қисм фавран намоён мебошад.
for (let i = 1; i <= 5; i++) { console.log(i); }
Се қисм дар қавсҳо бо нуқтаву вергул ҷудо мешаванд
Ташбеҳ аз зиндагӣ
Маршруткаи №8 аз болои истгоҳҳо мегузарад. Сарлавҳаи for — ҷавоб ба се савол аст: дар кадом истгоҳ нишастӣ (let i = 1), то кадом истгоҳ меравӣ (i <= 5) ва чӣ тавр меравӣ — яктогӣ ё як истгоҳ гузашта (i++). Бадани давра — ин он аст, ки дар ҳар истгоҳ мекунӣ: ба тиреза менигарӣ, мебароӣ, пул медиҳӣ.
Ҳама чиз бо кадом тартиб иҷро мешавад
Оғозlet i = 1як бор, аз ҳама аввал иҷро мешавад.
Шартi <= 5 пеш аз ҳар давр санҷида мешавад. false — баромадан аз давра.
Бадан пурра иҷро мешавад.
Қадамi++пас аз бадан иҷро мешавад. Баъд боз қадами 2.
Вариантҳои гуногуни сарлавҳа
Се қисмро тағйир дода, ҳар тавр ҳисоб кардан мумкин аст: аз сифр, бо қадам, ба қафо.
Чӣ лозим аст
Сарлавҳа
Қиматҳои i
аз 1 то 5
for (let i = 1; i <= 5; i++)
1 2 3 4 5
аз 0 то 4 (панҷ давр)
for (let i = 0; i < 5; i++)
0 1 2 3 4
бо қадами 2
for (let i = 2; i <= 10; i += 2)
2 4 6 8 10
ба қафо
for (let i = 5; i >= 1; i--)
5 4 3 2 1
Таҳрир кардан мумкин аст · Ctrl + Enter
console.log("--- с шагом 5 ---");
for (let i = 0; i <= 20; i += 5) {
console.log(i);
}
console.log("--- назад ---");
for (let i = 3; i >= 1; i--) {
console.log(`Осталось ${i}`);
}
Маслиҳат: while ё for?
Пешакӣ медонед, ки чанд давр аст («5 меҳмон», «аз 1 то 100») — for-ро гиред. Давр задан лозим аст «то даме ки чизе рух диҳад» (пул кифоя аст, воридкунӣ тамом нашудааст) — while-ро гиред. Ҳар for-ро ба while аз нав навиштан мумкин аст ва баръакс: ин масъалаи қулайӣ аст.
Дом: ба як хато кардан
Маъмултарин хато дар давраҳо — «хато ба як» (off-by-one). Фарқи байни i < 5 ва i <= 5 — як даври пурраи зиёдатӣ аст. Агар аз сифр ҳисоб кунед, < нависед; агар аз як — <=. Ва ҳамеша қимати якум ва охирин-ро санҷед.
Таҳрир кардан мумкин аст · Ctrl + Enter
for (let i = 1; i < 5; i++) {
console.log(`Урок ${i}`); // дарси 5-ум гум шуд!
}
Тағйирёбандаи давра танҳо дар дохил зинда аст
Ин код хато медиҳад · Ctrl + Enter
for (let i = 1; i <= 3; i++) {
console.log(i);
}
console.log(i); // ✖ i берун аз давра вуҷуд надорад
Ин муқаррарӣ аст ва ҳатто қулай: ҳар давра i-и худро дорад ва давраҳо ба ҳамдигар халал намерасонанд. Агар қимат пас аз давра лозим бошад, тағйирёбандаро то он эълон кунед. Чаро ин тавр сохта шудааст — дар дарс дар бораи функсияҳо мегӯем.
for (let i = 0; i < 5; i++) {
console.log(`Урок ${i}`);
}
Натиҷаи интизоршаванда пас аз ислоҳ
Урок 1
Урок 2
Урок 3
Урок 4
Урок 5
Ишора 1
Ҳисобкунак ҳоло аз кадом қимат оғоз мешавад ва аз кадом бояд оғоз шавад?
Ишора 2
Ду қисмро иваз кардан мумкин аст: оғозро ба 1 ва шартро ба <= 5. Ё i < 5-ро монед, вале i + 1-ро бароред — ҳар роҳ мувофиқ аст, танҳо ҳар дуро якбора не.
ВАЗИФАИ 2.3
Баромадро пешбинӣ кунед ва илова намоед
миёна
Аввал бе иҷрои код дар дафтар нависед, ки ду давра чӣ мебароранд. Баъд иҷро кунед ва муқоиса намоед. Баъд давраи сеюмро илова кунед, ки C10, C7, C4, C1-ро барорад (аз 10 ба поён бо қадами 3 меравем).
Таҳрир кардан мумкин аст · Ctrl + Enter
for (let i = 3; i > 0; i--) {
console.log("A" + i);
}
for (let i = 0; i < 10; i += 4) {
console.log("B" + i);
}
// давраи сеюм дар ин ҷо
Натиҷаи интизоршаванда
A3
A2
A1
B0
B4
B8
C10
C7
C4
C1
Ишора 1
Оғоз — 10, шарт — то даме ки i аз 1 хурд нест (i >= 1).
Ишора 2
Қадами «ба поён ба 3» бо i -= 3 навишта мешавад.
03 Давраи do..while
while бародари дугоник дорад: do..while («кун, то даме ки»). Фарқ ягона, вале муҳим аст: шарт пас аз бадан санҷида мешавад, бинобар ин бадан ҳадди аққал як бор иҷро мешавад, ҳатто агар шарт аз аввал дурӯғ бошад.
Таҳрир кардан мумкин аст · Ctrl + Enter
let attempt = 0;
do {
attempt++;
console.log(`Попытка входа №${attempt}`);
} while (attempt < 3);
Ба нуқтаву вергул пас аз while (…) диққат диҳед — дар do..while он лозим аст. Акнун ҳар ду давраро муқоиса кунед, вақте ки шарт фавран дурӯғ аст:
while муқобили do..while · Ctrl + Enter
let cups = 0;
while (cups > 0) {
console.log("while: тело выполнилось");
}
do {
console.log("do..while: тело выполнилось");
} while (cups > 0);
Ташбеҳ аз зиндагӣ
Дар чойхона чойникро бо чой фавран, напурсида меоваранд, баъд мепурсанд: «Боз?». Ин do..while аст: аввал амал, баъд савол. Дар муассисаи дигар аввал мепурсанд: «Чой биёрам?» — ва танҳо пас аз «ҳа» меоваранд. Ин while аст: аввал санҷиш, баъд амал.
while
do..while
Шарт кай санҷида мешавад
пеш аз бадан
пас аз бадан
Ҳадди ақали давр
0
1
Нуқтаву вергул пас аз шарт
лозим нест
лозим аст
Кай интихоб кардан
қариб ҳамеша
амал ҳатман ҳадди аққал як бор иҷро шудан лозим аст: менюро нишон додан, пул гирифтан, воридкуниро хостан
Маслиҳат
do..while хеле камтар аз for ва while вомехӯрад. Донистани он барои саргум нашудан дар коди дигарон лозим аст, вале дар барномаҳои худ одатан аввалин ду кифоя аст.
for (let i = 1; i <= 8; i++) {
if (i % 2===0) {
continue; // ҷуфтҳоро мегузаронем
}
console.log(`Нечётное число: ${i}`);
}
break
continue
Чӣ мекунад
Тамоман аз давра мебарояд
Бақияи давраро мегузаронад
Баъд чӣ
Коди пас аз давра
Давраи оянда (қадами i++ ва санҷиши шарт)
Ҳолати маъмул
Чизеро меҷӯстем ва ёфтем
Як қисми қиматҳоро коркард кардан лозим нест
Усул: while (true) ва break
Мешавад, ки пешакӣ фаҳмо нест, кай қатъ шудан лозим. Он гоҳ шарти true («абадӣ» давра) менависанд ва вақте ки вақташ расид, тавассути break мебароянд. Ин ягона ҳолатест, ки давраи «абадӣ» бошуурона аст, зеро баромад барои он пешбинӣ шудааст.
Таҳрир кардан мумкин аст · Ctrl + Enter
let n = 1;
while (true) {
n *= 2; // дучанд мекунем
console.log(n);
if (n > 50) {
break; // баромад пешбинӣ шудааст
}
}
console.log("Остановились на", n);
Дом: continue дар while
Дар for қадами i++ худаш иҷро мешавад. Дар while бошад, он дар бадан истодааст — ва агар continueпештар аз он кор кунад, ҳисобкунак тағйир намеёбад, шарт рост мемонад, давра овезон мешавад. Ин кодро иҷро кардан лозим нест:
Хатарнок: иҷро накунед, ин давраи беохир аст
let i = 0;
while (i < 5) {
if (i ===2) {
continue; // i++-ро ҷаҳида гузаштем — i то абад ба 2 баробар мемонад
}
console.log(i);
i++;
}
Дар вақти худ аз давра мебароем, зиёдатиро мегузаронем ва хатои маккорро меёбем.
ВАЗИФАИ 4.1
Пул ба самбуса кифоя аст ё не
осон
Дар ҳамён 100 сомонӣ, самбуса 15 меарзад. Давраи for харидани самбусаҳоро бо рақамҳои 1 то 10 кӯшиш мекунад. Агар арзиши умумии i * 15 аз 100 зиёд шавад — Денег больше нет-ро бароред ва тавассути break аз давра бароед. Вагарна Самбуса №…: всего … сомони-ро бароред.
Таҳрир кардан мумкин аст · Ctrl + Enter
const wallet = 100;
const price = 15;
// for (let i = 1; i <= 10; i++) { ... }
Натиҷаи интизоршаванда
Самбуса №1: всего 15 сомони
Самбуса №2: всего 30 сомони
Самбуса №3: всего 45 сомони
Самбуса №4: всего 60 сомони
Самбуса №5: всего 75 сомони
Самбуса №6: всего 90 сомони
Денег больше нет
Ишора 1
Аввал санҷиш: if (i * price > wallet). Дар дохили он — console.log("Денег больше нет") ва break.
Ишора 2
Сатри дар бораи самбусаро пас аз if нависед: ба он танҳо давраҳое мерасанд, ки пул кифоя буд.
ВАЗИФАИ 4.2
Бе ададҳои чандкаратаи се
осон
Ададҳоро аз 1 то 10 бароред, вале ададҳоеро, ки ба 3 тақсим мешаванд, бо ёрии continue гузаронед.
Таҳрир кардан мумкин аст · Ctrl + Enter
for (let i = 1; i <= 10; i++) {
// чандкаратаҳои серо гузаронед
console.log(i);
}
Натиҷаи интизоршаванда
1
2
4
5
7
8
10
Ишора 1
Адад ба 3 бутун тақсим мешавад, агар бақияи тақсим ба 3 ба сифр баробар бошад: i % 3 === 0.
Давра бояд ададҳоро аз 1 то 5 барорад ва дар панҷ қатъ шавад. Аммо он танҳо якро мебарорад. Иҷро кунед, фикр кунед, ки = ва === аз ҳам чӣ фарқ доранд (дарси шартҳоро ба ёд оред), ва як хаторо ислоҳ кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter
for (let i = 1; i <= 10; i++) {
console.log(i);
if (i = 5) {
break;
}
}
Натиҷаи интизоршаванда пас аз ислоҳ
1
2
3
4
5
Ишора 1
Як аломати = — ин таъинот аст, на муқоиса. Шарти i = 5 дар i рақами 5-ро сабт мекунад ва натиҷа (5) «рост» ҳисобида мешавад.
Ишора 2
Барои муқоиса се аломат лозим аст: i === 5.
05 Аз назар гузаронидани сатр: for..of
Давраро на танҳо аз болои рақамҳо, балки аз болои ҳарфҳои сатр низ иҷро кардан мумкин аст. Барои ин шакли қулайи for..of («барои ҳар … аз …») ҳаст:
Таҳрир кардан мумкин аст · Ctrl + Enter
for (const letter of"Душанбе") {
console.log(letter);
}
Дар ҳар давр ба тағйирёбандаи letter ҳарфи оянда меафтад. На ҳисобкунак, на шарт, на қадам лозим аст — JavaScript худаш ба охири сатр мерасад. const-ро менависем, зеро дар ҳар давр тағйирёбандаи нав сохта мешавад, дар дохили давр бошад мо онро тағйир намедиҳем.
Ташбеҳ аз зиндагӣ
Тасбеҳ: шумо донаҳоро яккайякӣ, аз аввалин то охирин мегузаронед. for..of — «барои ҳар дона фалон корро кун». Ба шумо муҳим нест, ки он аз рӯи рақам кадом аст, шумо танҳо донаи оянда мегиред, то ресмон тамом шавад.
Ҳамон аз назар гузаронӣ тавассути for-и оддӣ
Ҳар ҳарф дар сатр рақам — индекс дорад. Ададшуморӣ аз сифр оғоз мешавад. Ҳарфро аз рӯи рақам тавассути қавсҳои мураббаъ гирифтан мумкин аст: city[0]. Шумораи ҳарфҳо дар city.length нигоҳ дошта мешавад. Бинобар ин индекси охирин — length - 1 аст.
Таҳрир кардан мумкин аст · Ctrl + Enter
const city = "Хорог";
console.log(city.length); // → 5
console.log(city[0]); // → Х
console.log(city[4]); // → гfor (let i = 0; i < city.length; i++) {
console.log(`${i}: ${city[i]}`);
}
Вақте ки танҳо худи аломат лозим аст — for..of-ро мегирем, ин содда аст. Вақте ки боз рақам низ лозим аст (масалан, ҳарфи аввал ва охиринро муқоиса кардан) — for-и оддиро бо индекс мегирем.
Вазифаҳои маъмул оид ба сатрҳо
Ҳисоб кардан, ки ҳарф чанд маротиба вомехӯрад:
Таҳрир кардан мумкин аст · Ctrl + Enter
const word = "самбуса";
let count = 0;
for (const ch of word) {
if (ch ==="с") {
count++;
}
}
console.log(`Букв «с»: ${count}`); // → Букв «с»: 2
Сатри нав ҷамъ кардан — масалан, калимаро баръакс кардан. Ҳар ҳарфи навро ба чап ба сатри аллакай ҷамъшуда мечаспонем:
Бо ҳарфҳо кор мекунем: мебарорем, ҳисоб мекунем, баръакс мекунем ва ба палиндром месанҷем.
ВАЗИФАИ 5.1
Шаҳр ҳарф ба ҳарф
осон
Ҳар ҳарфи калимаи Хуҷанд-ро дар сатри алоҳида дар формати Буква: Х бароред. for..of-ро истифода баред.
Таҳрир кардан мумкин аст · Ctrl + Enter
const city = "Хуҷанд";
// for (const ... of ...)
Натиҷаи интизоршаванда
Буква: Х
Буква: у
Буква: ҷ
Буква: а
Буква: н
Буква: д
Ишора 1
Сарлавҳа: for (const ch of city).
Ишора 2
Дар бадан: console.log(`Буква: ${ch}`).
ВАЗИФАИ 5.2
Ҳарфи «а» чанд маротиба
осон
Ҳисоб кунед, ки ҳарфи хурди а дар матн чанд маротиба вомехӯрад. Ҳисобкунак созед, матнро тавассути for..of аз назар гузаронед ва ҳангоми ёфтани ҳарфи лозимӣ ҳисобкунакро зиёд кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter
const text = "Душанбе — столица Таджикистана";
// ҳисобкунак, давра, баровардан
Натиҷаи интизоршаванда
Букв «а»: 5
Ишора 1
Пеш аз давра: let count = 0;. Дар дохил: if (ch === "а") { count++; }.
Ишора 2
Баровардан — пас аз давра: console.log(`Букв «а»: ${count}`). «Т»-и калон ва «a»-и лотинӣ — аломатҳои дигаранд, онҳоро ҳисоб намекунем.
ВАЗИФАИ 5.3
Калима баръакс
миёна
Калимаи MakeFirstStep-ро бо ёрии for..of ва сатри холии ҷамъкунанда баръакс кунед. Натиҷаро бароред.
Таҳрир кардан мумкин аст · Ctrl + Enter
const word = "MakeFirstStep";
// let result = "";
Натиҷаи интизоршаванда
petStsriFekaM
Ишора 1
Ҳар ҳарфи оянда бояд пеш аз сатри аллакай ҷамъшуда илова шавад: result = ch + result.
Ишора 2
Баровардан — пас аз давра, бо як сатр: console.log(result).
ВАЗИФАИ 5.4
Палиндром ё не
душвор
Палиндром аз чап ба рост ва аз рост ба чап яксон хонда мешавад («шалаш»). Калимаро бо for-и оддӣ бо индекс санҷед: ҳарфро бо рақами i ва ҳарфро бо рақами word.length - 1 - i муқоиса кунед. Тағйирёбандаи isPalindrome = true-ро созед ва вақте номувофиқатӣ ёфтед, false гузоред ва тавассути break бароед. Ҳоло дар код калимаи «Душанбе» ҳаст — барои он бояд «не палиндром» шавад. Баъд «шалаш»-ро гузоред ва боварӣ ҳосил кунед, ки код палиндромро муайян мекунад.
Таҳрир кардан мумкин аст · Ctrl + Enter
const word = "Душанбе";
let isPalindrome = true;
// давраи for аз рӯи индексҳо
console.log(`${word} — ${isPalindrome ? "палиндром" : "не палиндром"}`);
Натиҷаи интизоршаванда
Душанбе — не палиндром
Ишора 1
Муқоиса: if (word[i] !== word[word.length - 1 - i]). Барои калимаи 5-ҳарфа ин ҷуфтҳо (0 ва 4), (1 ва 3), (2 ва 2) мебошанд.
То давра тағйирёбандаро бо қимати оғозӣ месозем (ҷамъкунанда).
Дар бадани давра онро дар ҳар давр нав мекунем.
Пас аз давра натиҷаро истифода мебарем.
Ташбеҳ аз зиндагӣ
Касса дар мағоза дар Бозори Сабз. Субҳ дар он 0 сомонӣ — ин оғоз аст. Ҳар харидор пул мегузорад — ин бадани давра аст. Бегоҳ кассир натиҷаро ҳисоб мекунад — ин коди пас аз давра аст. Касса пас аз ҳар харидор сифр намешавад: вагарна бегоҳ шумо танҳо пули охиринро медидед.
Чиро ҳисоб мекунем
Оғоз
Дар ҳар давр
Маблағ
let sum = 0
sum += x
Ҳосили зарб
let product = 1
product *= x
Ҳисобкунаки «чанд то мувофиқ аст»
let count = 0
if (шарт) { count++ }
Ҳадди аксар
let best = 0
if (x > best) { best = x }
Сатр
let line = ""
line += "матн"
Маблағ
Ғулак: ҳар рӯз 10 сомонӣ бештар · Ctrl + Enter
let total = 0; // оғоз — холӣfor (let day = 1; day <= 5; day++) {
total += day * 10; // дар рӯзи N N × 10 ҷудо мекунем
console.log(`День ${day}: +${day * 10}, всего ${total}`);
}
console.log(`Накоплено: ${total} сомони`);
Хато: ҷамъкунанда дар ҳар давр аз нав мешавад · Ctrl + Enter
for (let i = 1; i <= 3; i++) {
let total = 0; // ← ҳар давр аз сифр оғоз мекунем!
total += i;
console.log(`total = ${total}`); // 1, 2, 3 ба ҷои 1, 3, 6
}
Ишораи ЗС
Вақте ки ЗС дар ҷавоб ҳалли «зебо»-и вазифа дар бораи маблағ ё ҷустуҷӯи ҳадди аксарро пешниҳод мекунад, аксар вақт reduce, Math.max ва чизҳои дигареро мебинед, ки мо ҳоло нагузаштаем. Агар ҳалли маҳз тавассути давра лозим бошад, дар промпт ошкоро нависед: «танҳо давраи for, бе усулҳои массив ва бе функсияҳо».
Маблағ, миёна, ҳосили зарб ва аввалин вазифаи «молиявӣ».
ВАЗИФАИ 6.1
Маблағ аз 1 то 10
осон
Ҳамаи ададҳои бутунро аз 1 то 10 ҷамъ кунед ва натиҷаро бароред.
Таҳрир кардан мумкин аст · Ctrl + Enter
// let sum = 0;
Натиҷаи интизоршаванда
Сумма: 55
Ишора 1
Давраи for (let i = 1; i <= 10; i++), дар дохил sum += i.
Ишора 2
Баровардан — як бор, пас аз давра: console.log(`Сумма: ${sum}`).
ВАЗИФАИ 6.2
Даромади ҳафта
миёна
Мағоза дар Шоҳмансур дар рӯзи бо рақами dd * 20 сомонӣ ба даст меорад (рӯзи 1 — 20, рӯзи 2 — 40 ва ҳамин тавр то 7). Даромади ҳафта ва даромади миёнаи рӯзро ҳисоб кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter
// ҷамъкунанда, давра аз рӯи рӯзҳои 1..7, ду баровардан
Натиҷаи интизоршаванда
Итого: 560 сомони
В среднем за день: 80 сомони
Ишора 1
Ҷамъ мекунем total += day * 20. Миёна — ин натиҷа тақсимшуда ба шумораи рӯзҳо (7).
Ишора 2
Ҳар ду баровардан — пас аз давра. 20 + 40 + … + 140 = 560, ва 560 / 7 = 80.
ВАЗИФАИ 6.3
Хаторо ёбед: факториали сифрӣ
миёна
Барнома бояд 5! = 120-ро барорад, вале сифр мебарорад. Сабабро ёбед ва як сатрро ислоҳ кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter
let result = 0;
for (let i = 1; i <= 5; i++) {
result *= i;
}
console.log(`5! = ${result}`);
Натиҷаи интизоршаванда пас аз ислоҳ
5! = 120
Ишора 1
Ҳар адад, ки ба сифр зарб карда шавад, — сифр аст. Ҷамъкунанда ҳангоми зарб аз чӣ оғоз шавад?
Ишора 2
let result = 0-ро ба let result = 1 иваз кунед.
ВАЗИФАИ 6.4
Амонат кай дучанд мешавад
душвор
Шумо ба бонк 1000 сомониро бо 10% солона гузоштед. Ҳар сол маблағ ба 1.1 зарб мешавад. Пас аз чанд соли пурра амонат на камтар аз 2000 мешавад? Давраи while ва ҳисобкунаки солҳоро истифода баред. Дар охир шумораи солҳо ва маблағи ниҳоиро, ки бо функсияи Math.round(...) то бутун мудаввар карда шудааст, бароред.
Таҳрир кардан мумкин аст · Ctrl + Enter
let balance = 1000;
let years = 0;
// то даме ки balance аз 2000 хурд аст
Натиҷаи интизоршаванда
Вклад удвоится через 8 лет: 2144 сомони
Ишора 1
Шарт — balance < 2000. Дар бадан: balance *= 1.1; ва years++;.
Ишора 2
Баровардан пас аз давра: `Вклад удвоится через ${years} лет: ${Math.round(balance)} сомони`. Маблағ бо қисми касрӣ нигоҳ дошта мешавад, мудаввар кардан танҳо ҳангоми баровардан аст.
07 Давраҳои дарунҷоӣ
Дар дохили давра давраи дигар шуда метавонад. Инро давраҳои дарунҷоӣ меноманд. Онҳо дар ҳама ҷое лозиманд, ки «аз назар гузаронии дукарата» ҳаст: рӯзҳо ва ҷуфтҳо дар ҷадвали дарсҳо, сатрҳо ва сутунҳо дар ҷадвал, қаторҳо ва ҷойҳо дар толор.
Ҷадвали дарсҳо: рӯзҳо × ҷуфтҳо · Ctrl + Enter
for (let day = 1; day <= 2; day++) {
for (let lesson = 1; lesson <= 3; lesson++) {
console.log(`День ${day}, пара ${lesson}`);
}
}
Ташбеҳ аз зиндагӣ
Соат. Ақрабаки соатӣ як қадам мегузорад, ақрабаки дақиқагӣ дар ин вақт тамоми сафҳаро — 60 қадамро мегардад. Давраи беруна — ақрабаки соатӣ, дохилӣ — дақиқагӣ. То даме ки беруна як давр мезанад, дохилӣ ҳамаи даврҳои худро аз аввал то охир мегузарад.
Ин чӣ тавр иҷро мешавад
Давраи беруна давр оғоз мекунад: day = 1.
Давраи дохилӣ аз худи аввал оғоз мешавад ва ҳамаи даврҳои худро мегузарад: lesson = 1, 2, 3.
Дохилӣ тамом шуд. Беруна қадам мегузорад: day = 2.
Дохилӣ боз аз сифр оғоз мешавад ва боз ҳамаи даврҳоро мегузарад.
Давраҳои for (let row = 0; row < 4; row++) ва for (let col = 0; col < 4; col++).
Ишора 2
Дар дохил: if ((row + col) % 2 === 0) { line += "#"; } else { line += "."; }. Дар бораи line барои ҳар сатр фаромӯш накунед.
08 Давраи беохир: чӣ тавр овезон нашудан
Давра танҳо вақте қатъ мешавад, ки шарти он ягон вақт false шавад. Агар шарт ҳамеша рост бошад, давра ҳеҷ гоҳ тамом намешавад. Ин давраи беохир аст ва ин маъруфтарин хатои барномасозони навкор (ва на танҳо онҳо) мебошад. Саҳифа бо чунин давра «овезон мешавад»: тугмаҳо пахш намешаванд, ҷадвал ҷавоб намедиҳад.
Ташбеҳ аз зиндагӣ
Таксирон ҳисобкунакро фаъол кард ва хомӯш кардани онро фаромӯш намуд. Мусофир кайҳо баромадааст, рақамҳо бошанд меафзоянд — ва то даме ки касе мошинро қатъ накунад, ҳамин тавр аст. Давра бе ҳисобкунаки тағйирёбанда — ҳамон таксии «фаромӯшшуда» аст.
Ин дар саҳифаи мо чӣ тавр менамояд
Иҷрокунандаи ин саҳифа муҳофизат шудааст: агар код аз чанд сония зиёд «хомӯш» бошад, он маҷбуран қатъ мешавад ва паёми сурх менависад. ▶ Иҷро кардан-ро пахш кунед ва тақрибан се сония интизор шавед:
Давраи беохир: худаш пас аз ~3 сония қатъ мешавад · Ctrl + Enter
let i = 1;
while (i <= 5) {
// i++-ро навиштанро фаромӯш кардем — шарт ҳамеша true аст
}
console.log("Эта строка никогда не выполнится");
FizzBuzz, ҷадвали зарб, ададҳои оддӣ ва пирамида — барномаҳое, ки дар мусоҳибаҳо талаб мекунанд ва ҳамаи барномасозони навкор дар ҷаҳон бо онҳо меомӯзанд. Бо тартиб меравем, барои ҳар кадом — таҳлил ва баъд вазифа бо санҷиш. Кодро худатон чоп кунед, нусха накунед.
1. FizzBuzz
Шарт: ададҳоро аз 1 то 15 бароред. Аммо агар адад ба 3 тақсим шавад — ба ҷои он калимаи Fizz, агар ба 5 — Buzz, агар якбора ҳам ба 3 ва ҳам ба 5 — FizzBuzz.
Нақша: давра аз рӯи ададҳо, дар дохил занҷири if / else if / else. Маъмултарин дом — тартиби санҷишҳо. Бубинед, агар «ба 3»-ро аввал санҷед, чӣ мешавад:
Тартиби нодуруст: барои 15 Fizz бароварда мешавад, на FizzBuzz · Ctrl + Enter
for (let i = 1; i <= 15; i++) {
if (i % 3===0) {
console.log("Fizz");
} elseif (i % 5===0) {
console.log("Buzz");
} elseif (i % 15===0) {
console.log("FizzBuzz"); // то ин шоха кор намерасад
} else {
console.log(i);
}
}
Қоидаи умумии занҷири if / else if: шарти аз ҳама танг — аввал. Ададе, ки ҳам ба 3 ва ҳам ба 5 тақсим мешавад, — нодиртарин ҳолат аст.
ВАЗИФАИ 10.1
FizzBuzz
миёна
FizzBuzz-и дурустро барои ададҳо аз 1 то 15 нависед.
Таҳрир кардан мумкин аст · Ctrl + Enter
for (let i = 1; i <= 15; i++) {
// занҷири if / else if / else
}
Сатри тайёрро пас аз ҳар ду давраи дохилӣ мебарорем.
ВАЗИФАИ 10.4
Пирамида
душвор
Пирамидаро бо баландии 5 аз аломати symbol кашед. Баъд symbol-ро ба # ва height-ро ба 3 иваз кунед — боварӣ ҳосил кунед, ки код барои ҳар қимат кор мекунад.
Таҳрир кардан мумкин аст · Ctrl + Enter
const symbol = "*";
const height = 5;
for (let row = 1; row <= height; row++) {
let line = "";
// фосилаҳо// аломатҳо
console.log(line);
}
Натиҷаи интизоршаванда
*
***
*****
*******
*********
Ишора 1
Фосилаҳо: for (let s = 1; s <= height - row; s++) { line += " "; }.
Ишора 2
Аломатҳо: for (let k = 1; k <= 2 * row - 1; k++) { line += symbol; }. Фосилаҳо бо давраи аввал, аломатҳо — бо дуюм меоянд.
Хулосаи амалия
Дар чор вазифа ҳамаи абзорҳои дарс вомехӯранд: for ва шарт, давраҳои дарунҷоӣ, парчами true/false бо break, ҷамъкунандаи сатр. Ҳамин усулҳо дар асоси қариб ҳар вазифа оид ба давраҳо дар кори хонагӣ мебошанд.
11 Вазифаи хонагӣ: loops.js
Натиҷаи кори хонагӣ — як файли loops.js бо ҳалли ҳашт вазифа ва файли алоҳидаи explain.md бо таҳлили ҳалли бегона якҷоя бо ЗС. Вазифаҳо танҳо бо он чи мо гузаштем, ҳал мешаванд: тағйирёбандаҳо, шартҳо, for, while, for..of, break, continue. Функсияҳо ва массивҳо нестанд.
8 вазифа
Ҳар вазифаро бо блоки алоҳида ороиш диҳед: шарҳ бо рақам ва ном, баъд код. Ҳалро бо иҷро санҷед — баромад бояд ҳамон бошад, ки тавсиф шудааст.