21-блог: JavaScript даўамы: If/else дегенимиз не? 4-бөлим / JavaScript dawamı: If/else degenimiz ne? 4-bólim
JavaScript тилиндеги control flow, if, else ҳәм else if шәртлерин әпиўайы мысаллар менен үйренемиз.
"JavaScript деген теманы созып жибермедиңбе?" деп ойлап қалыўыңыз мүмкин. Бирақ, программа жазыўды үйрениў бул бир дана блогты оқыў менен питетуғын ис емес. Әсиресе, бағдарлама жазыўды енди үйренип баслап атырғанлар көп нәрселерге итибар берип үйрениўи керек болады.
Ҳәзирше, усындай етип, мен жазған блогларды бирме-бир оқып дәслепки билимди қурып алыўдың өзи жетерли.
Бүгин үйренетуғын тема программа жазыўдың ең керекли бөлимлеринен бири.
Инглизшесине control flow деп атайды. Русшасына управляющая логика деп алсақ болады.
Ал, қарақалпақшасына, "программаны жүргизиў логикасы/ағымы" деп алайық. Бирақ, мен control flow деген инглизше терминнен пайдаланыўды қолай көремен.
Демек, control flow бул не?
Программаластырыўда, control flow дегенимиз бул көрсетпелердиң яки функциялардың орынланыў избе-излигин анықлап беретуғын логика.
Алдыңғы блогларымда түсиндирген едим: компьютер кодты (коудты) жоқарыдан төменге қарап, избе-из оқыйды. Ол "Аааа, мына бөлекти ең ақырында оқып, иске асырсам да болады екенғо" деген нәрсени билмейди.
Компьютер ушын бизлер control flowдан пайдаланып, кодтың (коудтың) әмелге асырылыў тәртибин/бағдарын өзгертиўимиз мүмкин.

Сонда қалайынша?
Әлбетте, мысаллар менен жақсылап түсинип алыў мүмкин. Келиң, control flow не екенин JavaScript мысалында көрип шығайық. Басқа тиллерде де дерлик бирдей мәниске ийе.
JavaScript тилинде control flow төмендегише бөлимлерден қуралады:
- Шәртлер (Conditional statements):
if,else,else if,switch - Цикллер (Loops):
for,while,do...while,for...in,for...of - Логикалық операторлар:
&&(AND),||(OR),!(NOT)
Бүгинги блогымызда шәртлер не екенин үйренемиз. Инглизшесине conditional statements деп аталады. "Шәрт" яки "жағдай" деп аталатуғын сөзлердиң мәнисин билетуғын шығарсыз.
Мәселен, адамлар мәмлекет басшысын сайлаўда даўыс жыйнайтуғын программа жаратпақшымыз деп алайық. Ҳәмме даўыс бериўи мүмкин...
Бирақ...
Егер даўыс бериўшиниң жасы 18 жастан төмен болса, даўыс бериўге ҳаққысы жоқ!!!
Нызамда солай белгиленген емес пе?
Демек, "даўыс бериўшиниң жасы 18 жасқа толған болыўы керек" деген қағыйда бул шәрт.
"Мәрхамат, даўыс бериўиң мүмкин, егер жасың он сегизге толған болсаң (егер ересек адам болсаң)!"
Демек, бизлер даўыс жыйнайтуғын программамызға әҳмийетли бир control flow қосыўымыз керек болады. Ол төмендеги көриниске ийе:
if (age < 18) {
console.log("Сиздиң даўыс бериўге жасыңыз жетпейди!");
}
if деп аталатуғын шәрттен пайдаланып код (коуд) жаздық. if бул инглизше сөз, қарақалпақшасына "егер" деген мәнисти береди. Жоқарыдағы кодты (коудты) жалпақ тилде айтсақ, мынандай болады:
"Егер жасың он сегизден төмен болса, даўыс бере алмайсаң."
Усы шәрт дурыс болса, if ишиндеги код орынланады. Пайдаланыўшыны (user) басқа бөлимлерге киргизбеў ушын программада қосымша return яки басқа логикадан пайдаланыў керек болады.
Жоқарыдағы if пенен жазған шәртимиз программамыздың процес барысын өзгертти. Мине, усыны control flow, яғный программаны жүргизиў логикасы/ағымы деп атайды.
Control flow қалай жазамыз?
Бүгинги блогымызда шәртлер не екенин үйренемиз деп айтқан едик. Оған if, else, else if, switch деген терминлер киреди. Ҳәр бириниң мәнисин қарап шығайық.
if
if деген гилт сөз бенен төмендегише код (коуд) жазамыз.
if (шәрт жазамыз) {
// мына жерге код жазамыз
}Мысал менен түсиндирейик. Адамның жасына қарап, ересек яки өспирим екенин анықлап беретуғын программа жазайық. Егер жасымыз он сегизден кишкене болса, демек жас өспирим екенбиз.

let age = 14;
if (age < 18) {
console.log("Сиз жас өспиримсиз");
}Усы жерде жасты айныўшының ишине жайладық. Себеби, кейин ала және басқа биреўдиң жасын тексермекши болсақ, тек айныўшының ишиндеги мәнисти жаңартып отырсақ болады.
let age = 10;
if (age < 18) {
console.log("Сиз жас өспиримсиз");
}let age = 7;
if (age < 18) {
console.log("Сиз жас өспиримсиз");
}else
Жақсы, енди айныўшыға 30 санын берип көрейик. Программа ҳеш нәрсе шығармай қалады. Не ушын?
Себеби, программа тек 18 ден киши жасты ғана анықлап, "Сен еле жас өспиримсең" дей алады. Бирақ одан жоқарысын не қылыўды билмейди...
Соның ушын бизлер және бир дана шәртимизди қоса аламыз. Негизи қанша шәрт айтсаң да көтере беретуғын ең ақкөкиреги бул компьютер. Ҳәзил 😆

let age = 30;
if (age < 18) {
console.log("Сиз жас өспиримсиз");
} else {
console.log("Сиз ересек жастағы адамсыз.");
}Жоқарыдағы кодты (коудты) қарапайым тилде айтып берсем былай болады:
"Егер жасың он сегизден төмен болса, сен жас өспиримсең. Ямаса ересек адамсаң."
Усы "яки болмаса, ямаса" деген мәнисти беретуғын сөз бул else деген. else инглизше сөз, қарақалпақша мәниси "басқасы, яки болмаса". Әпиўайы етип түсиндирсек, "қалған басқа мәнислер ушын" дегенге тең.
Демек, компьютер 30 деп age деген айныўшының ишине мәнис қояды.
Биринши шәртти оқыйды. Отыз он сегизден үлкен. "Сиз жас өспиримсиз" деген жазыўды экранға шығармайды. Себеби, отыз он сегизден үлкен. Сол код блогын оқымайды.
Кейин, else деген код бөлимине келеди.
"Демек, он сегизден киши болса, 'жас өспиримсең' деўим керек еди. Бирақ, отыз он сегизден үлкен. Демек, 'ересек адамсаң' деп айтыўым керек екенғо" деп түсинеди компьютер.
Сөйтип, экранда "Сиз ересек жастағы адамсыз" деген жазыў пайда болады.
else if
"Ал, жақсы онда, айныўшыға үш (3) жасты берсек не қылады?" деп сораўыңыз мүмкин. Енди үш жасар адам еле жас өспирим емес. Алты жасқа шекем нәресте есапланады.
Бирақ, ҳәзир бизлердиң жазған программамыз 3 жасты да "жас өспиримсең" деп белгилеп кетеди. Себеби, 3 саны 18 ден төмен. Соның ушын бизлерге және бир шәрт түри керек болады. Ол else if. Қарақалпақшасына "егер, яки болмаса" деген мәниске жақын.
Бағана айтып өткен if, else ҳәм else if ҳәммесин бирге жазыў мүмкин.
if (шәрт жазамыз) {
// мына жерге код жазамыз
} else if (шәрт жазамыз) {
// мына жерге код жазамыз
} else {
// мына жерге код жазамыз
}Демек, жоқарыдағы алты жастан төмен адамлар ушын да бир шәрт қосайық. Созып отыра бермей, шәртлеримиздиң ҳәммесин дурыслап қойып алайық.
- Егер 1 жасқа тең болса → нәресте
- Егер 6 жастан киши болса → нәресте
- Егер 7 жастан 12 жасқа шекем болса → жас бала
- Егер 13 жастан 18 жасқа шекем болса → өспирим
- Яки 19 жастан үлкен болса → ересек адам
Усы шәртлерди код (коуд) пенен қалай жаза аламыз?
if (age === 1) {
console.log("Сиз нәрестесиз");
} else if (age < 6) {
console.log("Сиз нәрестесиз");
} else if (age <= 12) {
console.log("Сиз жас баласыз");
} else if (age <= 18) {
console.log("Сиз жас өспиримсиз");
} else {
console.log("Сиз ересек жастағы адамсыз.");
}Усы жерде математикалық шегинис қылайық. Мына белгилер (<=, >=) қандай мәнисти аңлататуғынын билген шығарсыз.
7 <= age→ жасы жетиден үлкен яки жетиге тең7 >= age→ жасы жетиден киши яки жетиге тең
Ал, мына белги === тең деген мәнисти береди. JavaScript тилинде усылай 3 дана тең белгисинен пайдаланып, еки мәнистиң тең яки тең емес екенин тексеремиз.
Және басқа switch деген шәрт жазатуғын термин бар. Оннан қалай пайдаланыўды төмендеги силтемелерге кирип оқып алсаңыз болады:
Енди, үйренгенимизди мысал менен беккемлеп алайық.
Оқыўшының алған балына (score) қарап, оған баҳасын айтып беретуғын программа жазажақпыз деп алайық.
let score = 85;
if (score >= 90) {
console.log("Алған баҳаңыз: 5+");
} else if (score >= 80) {
console.log("Алған баҳаңыз: 5");
} else if (score >= 70) {
console.log("Алған баҳаңыз: 4");
} else if (score >= 60) {
console.log("Алған баҳаңыз: 4-");
} else {
console.log("Алған баҳаңыз: 3");
}Енди өзиңизди компьютер деп ойлап көриң. Егер адамның алған очкосы/балы 85 болса, жоқарыдағы код (коуд) бойынша неше баҳа берген болар едиңиз?
Егер жуўабыңыз беске (5) тең болмаса, усы блогты қайтадан бир оқып шығыўды мәсләҳат беремен.