25-блог: JavaScript даўамы: Цикл (loop) дегенимиз не? 5-бөлим
JavaScript тилиндеги for, while ҳәм do...while цикллерин будильник, жулдыз санаў, асқабақ ҳәм қара шай мысаллары менен үйренемиз.
Цикл бул ең әҳмийетли программаластырыў түсиниклеринен бири. Бирақ, цикл деген сөздиң орнына loop деп инглизше терминди қолланыўды оңай көремен. Негизи, усы инглизше терминди пайдаланған әдеўир мақсетке муўапық.
Енди бағдарлама жазыўды үйренип, тәй-тәй қәдем басып киятырғанлар ушын loop-ты түсиниў қыйын болыўы мүмкин.
Loop не екенин аңсат етип түсиндириўге ҳәрекет етемен. Бирақ оғыры аңсатластырып жибериўге де болмайтуғынын билип қойыў лазым.
Мына жағдайды көз алдыңызға келтириң.
"Азанда ерте турыўым керек" деп, телефоныңызда будильникти қостыңыз.
Азанда будильник шыңғырлағаннан "және бес минут уйқылап алайын" деп "snooze" түймесин бастыңыз. Бес минуттан кейин будильник және шыңғырлайды. Және "snooze" түймесин бастыңыз.
Бес минуттан кейин және шыңғырлайды. Сиз және бес минут уйқылап алғыңыз келип тур.
"Snooze" түймесин басасыз. Уйқыңыз тояман дегенше "snooze" түймесин қайта-қайта басып, уйқылап алыўыңыз мүмкин. Ҳәзир, сиз бир исти тәкирар қылып атырсыз.

Және бир мысал келтирейик.
Қалтаңызда бир миллион сум бар. Сол пулдың барлығы таўсылғанша күнине жүз мың сум саўа аласыз. Күнде жүз мың сум саўатуғын ҳәрекетти 10 күн даўамында тәкирарлай аласыз.
Программаластырыўда да базы бир жумысларды тәкирар қылыўымыз керек болады. Сол ўақытта бизге loop жәрдемге келеди. Loop бул программаңыз ушын "қайталап исле" деген буйрықты беретуғын түймеге (кнопка) қусайды. Егер loop болмаса, сол тәкирар ҳәрекетлерди өзлеримиз бирме-бир жазып отырыўымызға туўры келетуғын еди.
Loop дегенимиз не?
Loop бул берилген көрсетпелерди белгили бир шәрт дурыс болып турғанша тәкирарлап әмелге асыратуғын программалық структура есапланады.
Негизи, компьютердиң ең шебер ҳәм өнимдарлы етип қылатуғын жумысы бул тапсырманы тәкирарлап қылыў. "Бирден баслап миллиардқа шекем биримлеп сана" десеңиз де наразылық билдирмей бирден баслап миллиардқа шекем биримлеп санап бере алады.

Бүгин loop деген түсиникти JavaScript мысалында түсиндиремен. Басқа программаластырыў тиллеринде де дерлик бирдей мәниске ҳәм дүзилиске ийе.
Loop түрлери қандай?
JavaScript тилинде бир неше loop түрлери бар:
- for loop
- while loop
- do...while loop
1. "for" loop дегенимиз не?
for loop ең көп қолланылатуғын loop түри. Ол белгили бир ҳәрекетти белгили бир дәрежеге шекем тәкирарлап беретуғын программалық структура есапланады.
Мәселен, аспандағы жулдызларды санағыңыз келип тур. Санап санына жете алмайтуғынымызды билгенимиз ушын, 100 дана жулдыз санап қояжақпыз.
Усы тәкирар қылатуғын ҳәрекетти код (коуд) пенен былай жаза аламыз:
for (let star = 1; star <= 100; star++) {
console.log("Sanag'an juldizim: ", star);
}Егер усы кодты браузер консолында жүргизип көрсек, мынандай нәтийжеге ерисемиз. Компьютер JavaScriptте жазылған кодты оқып, жулдызды жүзге шекем санап берди.

Егер for loop болмағанда, жоқарыдағы кодты 100 рет бирме-бир жазып отырған болар едик:
console.log("Sanag'an juldizim: ", 1);
console.log("Sanag'an juldizim: ", 2);
console.log("Sanag'an juldizim: ", 3);
console.log("Sanag'an juldizim: ", 4);
console.log("Sanag'an juldizim: ", 5);
// ...
console.log("Sanag'an juldizim: ", 98);
console.log("Sanag'an juldizim: ", 99);
console.log("Sanag'an juldizim: ", 100);Ўайбу, онда программист болып не қыламыз? Жазыўшы бола қояйық 😆

for loop усылайынша "for" деген инглизше терминнен пайдаланып жазылады. Ол қарақалпақшасына "ушын" деген мәнисти береди. Сонда жоқарыдағы код не деп атыр?
for бул гилт сөз, ол тәкирар ҳәрекетти баслап бериўши арнаўлы термин.
for деген сөзден кейин қаўсырманың ишине неше рет, қалай, қайтип тәкирарлаўымыз керек екенин жазамыз. Қаўсырманың ишине жазатуғын кодты да белгили бир синтаксис қағыйдасына бойсынып жазамыз.
for қаўсырмасының ишине:
- Тәкирарланыўшы ҳәрекеттиң себепшиси/объекти:
let star = 1 - Неше рет тәкирарланыўы кереклиги ҳаққындағы шеклеў:
star <= 100 - Тәкирарланған ҳәрекетти белгилеп барыўшы есапшы:
star++
Қәлеген for loop коды усы дүзилиске ийе болады. Бул структураны ядлап алыўды мәсләҳат беремен.
Демек, жоқарыдағы кодты қарапайым тилде айтсақ, мынандай болады:
"Жулдызды жүзге шекем санап, ҳәр санағаныңда экранға санаған жулдызың нешинши екенин көрсетип бер."
Айтып өтиў керек, компьютер шынлап аспанға қарап жулдыз санап жүргени жоқ 🥲
Сиз сораған нәрсени тек 100 рет тәкирарлап берди. Жулдыздың орнына асқабақ санасаңыз да болады.
for (let asqabaq = 1; asqabaq <= 100; asqabaq++) {
console.log("Sanag'an asqabag'im: ", asqabaq);
}Жоқарыдағы кодты консолда иске қоссаңыз, мынандай көриниске ийе болады.

Жоқарыдағы код 3 тийкарғы бөлимнен ибарат:
- Алғашқы мәнис бөлими:
let asqabaq = 1деп, бирден баслап санаў ушын алғашқы мәнисти бердик. Егерlet asqabaq = 35деп алсақ, компьютер отыз бестен баслап санайды.
for (let asqabaq = 35; asqabaq <= 100; asqabaq++) {
console.log("Sanag'an asqabag'im: ", asqabaq);
}
-
Шәрт бөлими:
asqabaq <= 100деген бөлими бул шәрт бөлими. Яғный, жүзге шекем сана деп шәрт/шеклеў қойып атырмыз. Бул шәрт 100, 1000, 100 000 болыўы да мүмкин. Компьютер тек сол шәрттеги берилген мәниске шекем берилген көрсетпени тәкирарлап қылады. -
Өсиўши/азайыўшы бөлими:
asqabaq++дегенимиз өзи не? Еки плюс белгиси бул өсиўди билдиреди. Ол тәкирарлап қылған жумысымызды есапқа алыў ушын керек. Бир рет асқабақты санап болып, есапқа бирди қосамыз. Сол жерде асқабақтың өзине бирди қосып атырмыз.
"Шөжени гүзде санаймыз" деген мақал бар еди. 50 шөже санайтуғын for loop жазып көрейик.
for (let shoje = 1; shoje <= 50; shoje++) {
console.log("Sanag'an sho'jem: ", shoje);
}2. "while loop" дегенимиз не?
while loop та for loop деп түсиндиргенимиздиң айнымаған өзи. Бирақ бир-еки өзгешелиги бар.
Ол да белгили бир ҳәрекетти тәкирарлаў ушын қолланылатуғын программалық структура.
"while" деген инглизше терминнен пайдаланып жазылады. Қарақалпақша мәнисин "даўамында, қылғанша" деп алсақ болады.
Шайнекте 1 литр қара шай бар деп елестетип көрейик. Шайнек босайман дегенше бир кесе қара шай ишемиз. Бир пияла кесе менен 200 миллилитр қара шай ишиўге болады.
Демек, қара шай таўсылғанша қара шай ишемиз деген кодты while loop жәрдеминде былай жазсақ болады:
let qarashay = 1000;
while (qarashay > 0) {
console.log("Qara shay ishtim.");
qarashay = qarashay - 200;
}Усы жерде "Qara shay ishtim." деген жазыў неше рет тәкирарланады деп ойлайсыз?
Егер билмесеңиз, мына нәтийжеге қараң:

Көрип турғаныңыздай, "Qara shay ishtim." деген жазыў 5 рет қайталанған.
1 литр қара шай 1000 миллилитрге тең. Ҳәр ишкенимизде 200 миллилитр ишсек, бес рет қара шай ише аламыз. Енди бул жағы әпиўайы арифметика 😇
Жоқарыда жазылған кодты жалпақ тилде айтсақ, мынандай болады:
"Қара шайдың көлеми нөл литрден жоқары болып турғанша, бир кесе қара шай ишип, 'Qara shay ishtim.' деп айт!"
Итибар берген болсаңыз, "while" деген loop термининиң қаўсырмасына тек шәрт/шеклеў жазылады.
while loop та 3 тийкарғы бөлимнен ибарат болады:
- Алғашқы мәнис бөлими:
qarashay = 1000; - Шеклеў/шәрт бөлими:
qarashay > 0 - Өсиўши/азайыўшы бөлими:
qarashay = qarashay - 200;
Егер кодымыздан азайтыўшыны алып тасласақ, код шексиз "Qara shay ishtim." деп айтады.
Себеби, қара шайдың көлеми 1 литрден азаймайды. Ҳәм qarashay > 0 деген шәртимиз ҳәр дайым дурыс болады.
let qarashay = 1000;
while (qarashay > 0) {
console.log("Qara shay ishtim.");
}Мына кодты браузер консолында жүргизсек, компьютер "Qara shay ishtim." деген жазыўды қайта-қайта басып шығара береди. Мениң тексериўимде ол еки миллион үш жүз мыңнан аслам рет басылып шықты. Компьютер тоқтаўды билмейди. Браузер яки компьютер қыйналып, программа қәте келтирип шығарыўы мүмкин 🤪
Соның ушын loop пенен ислегенимизде итибарлы болыўымыз керек.
- Алғашқы мәнисти дурыс қойыў,
- Шеклеў/шәрт бөлимин дурыс жазыў,
- Өсиўши ямаса азайтыўшыны дурыс жазыў да әҳмийетли.
Ҳәм булардың ҳәммесин код жазып, практика қылып үйренип кетесиз.
3. "do...while loop" дегенимиз не?
do...while loop та алдынғы loop түрлерине қусайды. Төмендеги силтемеге кирип, үйренип алыўыңызды мәсләҳат беремен:
Қайсысын қашан қолланамыз?
Ҳәр бир loop түрин өз зәрүрлигиңизге, қәлеўиңизге қарап пайдалансаңыз болады.
Кейинги блогларда JavaScript жәрдеминде код жазғанымызда loop-тан пайдаланып көбирек мысаллар келтирип жазамыз.
Бүгинги блогта loop не екенин, қалай қолланылатуғынын билиўдиң өзи жетерли!