21-блог: JavaScript даўамы: If/else дегенимиз не? 4-бөлим
"JavaScript деген теманы созып жибермедиңбе?" деп ойлaп қалыўыңыз мүмкин. Бирақ, программа жазыўды үйрениў бул бир дана блогты оқыў менен питетуғын иc емес. Әсиресе, бағдарламa жазыўды енди үйренип баслап атырғанлар көп нәрселерге итибар берип үйрениўи керек болады.
Ҳәзирше, усындай етип, мен жазған блогларды бирме-бир оқып дәслепки билимди қурып алыўдың өзи жетерли.
Бүгин үйренетуғын тема программа жазыўдың ең керекли бөлимлеринен бири.
Инглизшесине "control flow" деп атайды. Русшасына управляющая логика деп алсақ болады.
Ал, қарақалпақшасына, 'программаны жүргизиў логикасы/ ағымы" деп алайық. Бирақ, мен control flow деген инглизше терминнен пайдаланыўды қолай көремен.
Демек, control flow бул не?
Программаластырыўда, control flow дегенимиз бул көрсетпелердиң яки функциялардың орынлаў избе-излигин анықлап беретүғын логикалық қосымша болады.
Алдыңғы блогларымда түсиндирген едим: Компьютер кoудты жоқарыдан төменге қарап, избе-из оқыйды. Ол "Аааа, мына бөлекти ең ақырында оқып, иске асырсам да болады екенғо" деген нәрсени билмейди.
Компьютер ушын бизлер control flowдан пайдаланып, кoудты амелге асырыў тәртибин/ бағдарын өзгертиў мүмкин.
Сонда қалайынша?
Әлбетте, мысаллар менен жақсылап түсинип алыў мүмкин. Келиң, control flow не екенин JavaScript мысалында көрип шығайық. Басқа тиллерде де дерлик бирдей мәниске ийе.
JavaScript тилинде control flow төмендегише бөлимлерден қуралады:
1. Шәртлер (Conditional statements) - if, else, else if, switch
2. Цикл (Loops) - for, while, do...while, for...in, for...of
3. Логикалық операторлар - && (AND), || (OR), ! (NOT)
Бүгинги блогымызда шәртлер не екенин үйренемиз. Conditional statements деп аталады инглизшесине. "Шәрт" яки "жағдай" деп аталатуғын сөзлердин мәнисин билетуғын шығарсыз.
Мәселен, адамлар мәмлекет басшысын сайлаўда даўыс жыйнайтуғын программа жаратпақшымыз деп алайық. Ҳәмме даўыс бериўи мүмкин...
бирақ...
егер даўыс бериўшиниң жасы 18 жастан төмен болса даўыс бериўге ҳаққысы жоқ!!!
Нызамда солай белгиленген емес пе?
Демек, "даўыс бериўшиниң жасы 18 жастан асқан болыўы керек" деген қағыйда бул шәрт.
"Мәрхамат, даўыс бериўиң мүмкин егер жасың он сегизден жоқары болса (егер ересек адам болсаң)!"
Демек, бизлер даўыс жыйнайтуғын программамызға әҳмийетли бир control flow қосыўымыз керек болады. Ол төмендеги көриниске ийе:
if (age < 18) {
console.log("Сиздин даўыс бериўге жасыңыз жетпейди!");
}if деп аталатуғын шәрттен пайдаланып кoуд жаздық. If бул инглизше сөз, қарақалпақшасына "егер" деген мәнисти береди. Жоқарыдағы кoудты жалпақ тилде айтсақ, мынандай болады:
"Егер жасың он сегизден төмен болса, даўыс бере алмайсаң."
Программамыз усы жерде тоқтап, пайдаланыўшыны (user) басқа бөлимлерге киритпейди. Неге? Себеби, пайдаланыўшы ересек адам емес. Жоқарыдағы if пенен жазған шәртимиз программамыздың процес барысын өзгертти.
Мине, усыны control flow, яғный программаны жүргизиў логикасы/ ағымы деп атайды.
Control flow қалай жазамыз?
Бүгинги блогымызда шәртлер не екенин үйренемиз деп айтқан едик. Оған if, else, else if, switch деген терминлер киреди. Ҳәр бириниң мәнисин қарап шығайық.
if
if деген gilt сөз бенен төмендегише кoуд жазамыз.
if (шәрт жазамыз) {
// мына жерге кoуд жазамыз
}Мысал менен түсиндирейик. Адамның жасына қарап, ересек яки өспирим екенин анықлап беретүғын программа жазайық. Егер жасымыз он сегизден кишкене болса, демек жас өспирим екенбиз.
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("Сиз ересек жастағы адамсыз.");
}Жоқарыдағы кoудты қарапайым тилде айтып берсем былай болады:
"Егер жасың он сегизден төмен болса, сен жас өспиримсең. Ямаса ересек адамсаң."
Усы "яки болмаса, ямаса" деген мәнисти беретүғын сөз бул "else" деген. Else инглизше сөз, қарақалпақша мәниси "басқасы, яки болмаса". Әпиўайы етип түсиндирсек, "қалған басқа мәнислер ушын" дегенге тең.
Демек, компьютер 30 деп "age" деген айныўшының ишине мәнис қояды.
Биринши шәртти оқыйди, отыз он сегизден үлкен. "Сиз жас өспиримсиз" деген жазыўды экранға шығармайды. Себеби отыз он сегизден үлкен. Сол кoуд блокты оқымайды.
Кейин, "else" деген кoуд бөлимине келеди.
"Демек, он сегизден киши болса 'жас өспиримсең' деўим керек еди, бирақ отыз он сегизден үлкен демек 'ересек адамсаң' деп айтыўым керек екенғо" деп түсинеди компьютер.
Сөйтип, экранда "Сиз ересек жастағы адамсыз" деген жазыў пайда болады.
else if
"Ал, яқшы онда, айныўшыға үш (3) жасты берсек не қылады?" деп сораўыңыз мүмкин. Енди үш жасар адам әле жас өспирим емес. Алты жасқа шекем нәресте есапланады.
Бирақ ҳәзир бизлердиң жазған программамыз 3 жасты да "жас өспиримсең" деп белгилеп кетеди. Себеби 3 саны 18ден төмен. Соның ушын бизлерге және бир шәрт тури керек болады. Ол "else if". Қарақалпақшасына "егер, яки болмаса" деген мәниске жақын.
Бағана айтып өткен if, else ҳәм else if ҳәммесин бирге жазыў мүмкин,
if (шәрт жазамыз) {
// мына жерге кoуд жазамыз
} else if (шәрт жазамыз) {
// мына жерге кoуд жазамыз
} else {
// мына жерге кoуд жазамыз
}Демек, жоқарыдағы алты жастан төмен адамлар ушын да бир шәрт қосайық. Созып отыра бермей, шәртлеримиздиң ҳәммесин дурыслап қойып алайық.
- Егер 1 жасқа тең болса ---> нәресте
- Егер 6 жастан кишкене болса ---> нәресте
- Егер 7 жастан 12 жасқа шекем болса ---> жас бала
- Егер 13 жастан 18 жасқа шекем болса ---> өспирим
- Яки 19 жастан үлкен болса ---> ересек адам
Усы шәртлерди кoуд пенен қалай жаза аламыз?
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" деген шәрт жазатуғын термин бар. Одан қалай пайдаланыўды төмендеги силтемеге кирип оқып алсаңыз болады.
https://purpleschool.ru/blog/JS-switch
https://learn.javascript.ru/switch
Енди, үйренгенимизди мысал менен беккемлеп алайық.
Оқыўшының алған балынa (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 болса, жоқарыдағы кoуд бойынша неше баҳа берген болар едиңиз?
Егер жуўабыңыз беске (5) тең болмаса, усы блогты қайтадан бир оқып шығыўды мәсләҳат беремен.





