Дарси 3 · JavaScript
Шартҳо ва мантиқ
То ҳол барнома сатр ба сатр иҷро мешуд, мисли дастури пухтан бе вариантҳо. Аммо сайти воқеӣ доимо қарор қабул мекунад: корбарро ба дарун роҳ диҳад ё не, пул дар тавозун кифоя аст ё не, кадом тахфифро диҳад, кадом саҳифаро нишон диҳад. Имрӯз шумо ба барнома саволҳои «ҳа ё не» додан ва интихоб кардани корҳои минбаъдаро меомӯзед.
Қиматҳоро бо операторҳои >, <, >=, <= муқоиса кунед ва фарқи == ва ===-ро бифаҳмед
Муайян кунед, ки JavaScript кадом қиматҳоро «дурӯғ» (falsy) ва кадомро «рост» (truthy) мешуморад
Шартҳоро аз &&, ||, ! ҷамъ кунед ва бидонед, ки онҳо воқеан чиро бозпас мегардонанд
Шохаҳои if / else if / else, оператори сегона ва switch-ро нависед
GitHub Copilot-ро ҳамчун ёрдамчӣ истифода баред ва ба «мусофир»-и он табдил наёбед
Аввалин ҳисобкунаки консолии худро созед
Бо ин саҳифа чӣ тавр кор кардан лозим аст
Тамоми код дар заминаи торик бо тугмаи ▶ Иҷро кардан — зинда аст. Онро бевосита дар ин ҷо тағйир додан ва натиҷаро дарҳол дар консоли поёни он дидан мумкин аст. Вайрон кардед — ↺ Аз нав -ро пахш кунед. Ишораҳои вазифаҳо пинҳон шудаанд: аввал худатон кӯшиш кунед, ишораро танҳо вақте кушоед, ки монд шудед. Дар ин дарс мо ҳанӯз функсияҳо ва давраҳо наменависем — танҳо тағйирёбандаҳо ва шартҳо. Маълумоти барномаҳоро бо тағйирёбандаҳо дар аввали код медиҳем: қиматҳоро тағйир диҳед ва бубинед, ки барнома чӣ тавр вокуниш нишон медиҳад.
01 Операторҳои муқоиса
Ҳар қарор дар барнома бо савол оғоз мешавад: «ин синну сол аз ҳаждаҳ калон аст?», «парол мувофиқат кард?», «пул кифоя аст?». Савол дар JavaScript бо оператори муқоиса дода мешавад, ҷавоб бошад ҳамеша яке аз ду: true («ҳа») ё false («не»). Ин навъи boolean аст, ки шумо аз дарси навъҳои маълумот аллакай медонед.
Оператор Маъно Мисол Натиҷа >калонтар 5 > 3true<хурдтар 5 < 3false>=калонтар ё баробар 5 >= 5true<=хурдтар ё баробар 4 <= 3false===қатъиян баробар 5 === 5true!==қатъиян баробар не 5 !== 6true
Муқоисаҳо true ё false бозпас мегардонанд · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const age = 17 ;
const price = 35 ;
const balance = 120 ;
console.log (age >= 18 ); // → false: то синни баркамолӣ як сол мондааст
console.log (balance >= price); // → true: пул кифоя аст
console.log (balance - price); // → 85: арифметика низ кор мекунад
console.log (age !== 17 ); // → false
Хатои маъмул: як аломати «=»
Як аломати = — ин таъинот («қиматро дар тағйирёбанда гузор») аст, на муқоиса. Саволи «баробар аст?»-ро === медиҳад. Онҳоро омехта кардан хеле осон аст, бинобар ин бо овоз бихонед: = — «мешавад», === — «баробар аст?».
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
let score = 5 ;
console.log (score === 7 ); // → false: танҳо савол, score тағйир намеёбад
score = 7 ; // таъинот: акнун дар score 7 аст
console.log (score === 7 ); // → true
Муқоисаи сатрҳо: аз рӯи алифбо, вале бо истиснохо
Сатрҳо «аз рӯи луғат», ҳарф ба ҳарф муқоиса мешаванд. Аммо компютер на ҳарфҳоро, балки рақамҳои дохилии онҳоро (кодҳоро) дар ҷадвали Unicode муқоиса мекунад. Бинобар ин ду дом ҳаст: ҳарфҳои калон аз хурдҳо «хурдтар» -анд, рақам-сатрҳо бошанд мисли матн муқоиса мешаванд, на мисли рақам.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log ("Аня" < "Бахтиёр" ); // → true: «А» дар алифбо пештар аз «Б» меистад
console.log ("а" < "Б" ); // → false: «а»-и хурд дар ҷадвал пас аз «Б»-и калон меояд
console.log ("Z" < "a" ); // → true: ҳамаи калонҳо пештар аз хурдҳо меоянд
console.log ("10" < "9" ); // → true: мисли матн «1» пештар аз «9», мисли луғат
console.log (10 < 9 ); // → false: аммо мисли рақам
Ташбеҳ аз зиндагӣ
Рақамҳои маршруткаҳо дар истгоҳи Душанбе. Агар онҳоро мисли рақам хонем, «9» пештар аз «10» меояд. Аммо агар лавҳаҳоро аз рӯи алифбо, мисли ҷузвдонҳо дар ҷевон гузорем, «10» пеш аз «9» меафтад: рақами аввал муқоиса мешавад, ва он дар «1» хурдтар аст. Сатрҳо дар JavaScript маҳз мисли лавҳаҳо дар ҷевон муқоиса мешаванд, рақамҳо — мисли рақамҳо.
Муқоисаи навъҳои гуногун
Вақте ки дар як тарафи > ё < сатр, дар тарафи дигар рақам аст, JavaScript сатрро ба рақам табдил медиҳад (шумо инро дар дарси табдили навъҳо дидед) ва танҳо баъд муқоиса мекунад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log ("10" > 9 ); // → true: сатри "10" рақами 10 шуд
console.log ("abc" > 1 ); // → false: "abc" NaN шуд, ҳар муқоиса бо NaN false медиҳад
console.log (NaN === NaN); // → false: NaN ҳатто ба худаш баробар нест
console.log (null > 0 ); // → false
console.log (null === 0 ); // → false
console.log (null >= 0 ); // → true — ғаройиби забон, ба он дар бахши оянда бармегардем
Бештар хонед: learn.javascript.ru: Операторҳои муқоиса · MDN: Муқоиса ва баробарӣ
Амалия: мустаҳкам мекунем
Се вазифаи зуд: аввал муқоисаҳоро худамон менависем, баъд рафтори сатрҳоро пешбинӣ мекунем.
ВАЗИФАИ 1.1 Билет ба кино осон
Синну соли тамошобин бо тағйирёбандаи age дода шудааст. Ба консол чор ҷавоби «ҳа/не» бароред, ба ҳар сатр як ҷавоб: 1) оё филми 18+-ро дидан мумкин аст (синну сол аз 18); 2) оё филми 12+-ро дидан мумкин аст (аз 12); 3) оё дуруст аст, ки тамошобин аз 6-сола хурд аст; 4) оё дуруст аст, ки синну сол ба 17 баробар нест.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const age = 17 ;
// чор сатри console.log бо оператори муқоиса дар ҳар кадом
Натиҷаи интизоршаванда false
true
false
false
Ишора 1 Ба дохили console.log худи муқоисаро гузоштан мумкин аст: console.log(age > 5) true ё false мебарорад.
Ишора 2 «Аз 18» маънои «18 ва бештар»-ро дорад — аз ҷумла, бинобар ин оператори >= лозим аст, на >. Барои саволи чорум !== мувофиқ аст.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 1.2 Баромадро пешбинӣ кунед: сатрҳо осон
Бе иҷрои код дар prediction натиҷаи ҳар кадоме аз панҷ муқоисаро нависед ("true" ё "false"). Код пешбиниро бо воқеӣ муқоиса мекунад. Ҳар ихтилофро ба худ бо овоз шарҳ диҳед: чиро аз назар гузарондед?
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: true ё false барои ҳар муқоиса (ҳар қимат — бо матн, чунон ки консол нишон медиҳад)
const prediction = ["" , "" , "" , "" , "" ];
const actual = [
"Фарход" < "Шахром" ,
"яблоко" < "арбуз" ,
"Dushanbe" < "dushanbe" ,
"100" < "20" ,
100 < 20 ,
].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 Сатрҳо аз рӯи аввалин ҳарфи фарқкунанда муқоиса мешаванд: аввал мебинем, ки кадоме аз онҳо дар алифбо пештар меистад.
Ишора 2 Дар сатри чорум матнҳо муқоиса мешаванд (нохунакҳо!): аломатҳои аввал «1» ва «2», ва «1» пештар аст. Дар панҷум нохунак нест — ин рақамҳо мебошанд.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 1.3 Барои хӯроки нисфирӯзӣ кифоя мекунад ё не миёна
Шумо бо дӯстон ба чойхона омадед. Дар ҳисоби шумо balance сомонӣ ҳаст, самбуса price сомонӣ меарзад, count дона мегиред. Ду сатр бароред: Хватает: true (ё false) ва Остаток: .... Бақияро ҳамчун тавозун минус арзиши фармоиш ҳисоб кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const balance = 120 ;
const price = 35 ;
const count = 3 ;
// console.log("Хватает:", ...);
// console.log("Остаток:", ...);
Натиҷаи интизоршаванда Хватает: true
Остаток: 15
Ишора 1 Арзиши фармоиш — ин price * count аст. Онро бевосита дар дохили муқоиса навиштан мумкин аст: balance >= price * count. Зарб пештар аз муқоиса иҷро мешавад.
Ишора 2 console.log якчанд қиматро бо вергул мепазирад ва онҳоро бо фосила чоп мекунад: console.log("Хватает:", balance >= price * count).
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
02 Баробарии қатъӣ ва ғайриқатъӣ
Дар JavaScript ду навъи «баробар» ҳаст. Онҳо ба ҳам монанд менамоянд, вале комилан гуногун рафтор мекунанд.
=== — баробарии қатъӣ . Ҳам қимат ва ҳам навъро муқоиса мекунад. Агар навъҳо гуногун бошанд — фавран false, бе кӯшиши чизеро табдил додан.
== — баробарии ғайриқатъӣ . Агар навъҳо гуногун бошанд, аввал қиматҳоро ба навъи умумӣ меорад ва танҳо баъд муқоиса мекунад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (5 === 5 ); // → true: рақам ва рақам
console.log (5 === "5" ); // → false: рақам ва сатр, навъҳо гуногунанд
console.log (5 == "5" ); // → true: == сатри "5"-ро ба рақам табдил дод ва муқоиса кард
Ташбеҳ аз зиндагӣ
===-и қатъӣ — посбон дар даромадгоҳи донишгоҳ аст: шиносномаро пурра месанҷад — ҳам ном ва ҳам ҳуҷҷат. ==-и ғайриқатъӣ — шиноси меҳрубон аст: «Хуб, шумо ба Фарход монанд ҳастед, гузаред». Баъзан тахмин мекунад, вале баъзан нодурустро мегузаронад. Дар код мо пешбинишавандагиро мехоҳем, бинобар ин посбон беҳтар аст.
Ҷадвал: бо == чӣ мешавад
Муқоисаи ғайриқатъӣ ба рӯйхати дарози қоидаҳо итоат мекунад. Ҳамаи онҳоро дар хотир доштан лозим нест, вале як бор дидан муфид аст, ки онҳо ба чӣ меоранд:
Ифода =====Чӣ рӯй дод 5 == "5"truefalseсатр рақам шуд 0 == falsetruefalsefalse ба рақами 0 табдил ёфт"" == 0truefalseсатри холӣ ба рақами 0 табдил ёфт "" == falsetruefalseҳар дуи онҳо ба 0 табдил ёфтанд "0" == falsetruefalseҳар дуи онҳо ба 0 табдил ёфтанд "1" == truetruefalseҳар дуи онҳо ба 1 табдил ёфтанд "2" == truefalsefalsetrue ба 1 табдил ёфт, на ба 2null == undefinedtruefalseқоидаи махсус: онҳо «баробар»-анд танҳо ба ҳамдигар null == 0falsefalsenull ҳангоми == ба рақам табдил намеёбадnull >= 0trueнобаробариҳо null-ро ба 0 меоранд, == бошад — не NaN == NaNfalsefalseNaN ба ҳеҷ кас баробар нест, ҳатто ба худаш
Ҷадвалро худатон санҷед · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (0 == false ); // true
console.log ("" == 0 ); // true
console.log ("0" == false ); // true
console.log ("2" == true ); // false
console.log (null == undefined ); // true
console.log (null == 0 ); // false
console.log (null >= 0 ); // true
console.log (NaN == NaN); // false
Қоидаи курс
Ҳамеша === ва !== менависем. Ягона чизе, ки дар бораи == дар хотир доштан меарзад: хондани он дар коди дигарон ва фаҳмидани он ки чаро хатарнок аст. Агар рақамро аз шакл бо сатр муқоиса кардан лозим бошад — ошкоро табдил диҳед: Number(input) === 5. Ошкоро беҳтар аз ниҳонӣ: код якмаъно хонда мешавад.
Ин бад аст «Тасодуфан» кор мекунад ва вақте ки корбар сатри холӣ ворид кунад, вайрон мешавад.
Чӣ тавр НАБОЯД кард
const answer = "" ;
if (answer == 0 ) {
console.log ("Ответ — ноль!" ); // бароварда мешавад, ҳарчанд корбар чизе ворид накардааст
}
Ин хуб аст Навъ ошкоро табдил дода мешавад, сатри холӣ нашуда ба сифр табдил намеёбад.
JavaScript
const answer = "" ;
if (answer !== "" && Number (answer) === 0 ) {
console.log ("Ответ — ноль!" ); // бароварда намешавад
}
Бештар хонед: learn.javascript.ru: Муқоисаи навъҳои гуногун, муқоисаи қатъӣ · MDN: Муқоиса ва баробарӣ
Амалия: мустаҳкам мекунем
Пешбинӣ мекунем, ислоҳ мекунем, таҳлил менамоем.
ВАЗИФАИ 2.1 Баромадро пешбинӣ кунед: == ва === осон
Барои ҳар кадоме аз шаш муқоиса пешбиниро ("true" ё "false") дар prediction нависед ва танҳо баъд иҷро кунед. Сатрҳоеро, ки дар онҳо хато кардед, бо сабаб дар конспект сабт кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: true ё false барои ҳар муқоиса (ҳар қимат — бо матн, чунон ки консол нишон медиҳад)
const prediction = ["" , "" , "" , "" , "" , "" ];
const actual = [
5 == "5" ,
5 === "5" ,
0 == false ,
null == undefined ,
null === undefined ,
NaN == NaN,
].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 Аз худ бипурсед: оё навъи қиматҳо яксон аст? Агар ҳа — муқоисаи ғайриқатъӣ ва қатъӣ як натиҷа медиҳанд.
Ишора 2 Бо ҷадвали боло муқоиса кунед. Алоҳида ду ҳолати «махсус»-ро дар хотир доред: null == undefined ва NaN.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 2.2 PIN-код мувофиқ нест миёна
Банкомат PIN-ро ҳамчун сатри "1234" нигоҳ медорад, корбар бошад рақами 1234-ро ворид кард. Коди зерин қатъӣ муқоиса мекунад ва бинобар ин корбарро намегузаронад. Операторро тағйир надода ва entered-ро ба сатр табдил надода, барномаро ислоҳ кунед: pin-ро ошкоро ба рақам оред.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const pin = "1234" ;
const entered = 1234 ;
if (pin === entered) {
console.log ("Доступ разрешён" );
} else {
console.log ("Доступ запрещён" );
}
Натиҷаи интизоршаванда Доступ разрешён
Ишора 1 Сатр ва рақам — навъҳои гуногунанд, бинобар ин === false бозпас гардонд. Қиматҳои як навъро муқоиса кардан лозим аст.
Ишора 2 Функсияи Number("1234") рақами 1234-ро бозпас мегардонад. pin-ро бевосита дар шарт бо он печонед: Number(pin) === entered.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 2.3 Шикори аҷоибиҳо душвор
Ҳашт ифода, ки ақаллан се то аз онҳо шуморо ҳайрон мекунанд. Пешбиниҳоро ба prediction ("true" ё "false") нависед ва иҷро кунед. Баъд барои сатрҳое, ки хато кардед, дар код дар паҳлӯ шарҳи якхатта илова кунед: кадом қоида амал кард.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: true ё false барои ҳар ифода (ҳар қимат — бо матн, чунон ки консол нишон медиҳад)
const prediction = ["" , "" , "" , "" , "" , "" , "" , "" ];
const actual = [
"" == 0 ,
"0" == false ,
null == 0 ,
null >= 0 ,
undefined == null ,
undefined == 0 ,
"1" == 1.0 ,
"abc" == NaN,
].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 Ҳангоми == сатрҳо ва қиматҳои булӣ ба рақам табдил меёбанд. Аммо null ва undefined ба қоидаи алоҳида итоат мекунанд.
Ишора 2 Сатри чорум >=-ро истифода мебарад, на ==-ро. Операторҳои <, >, <=, >= null-ро ба 0 меоранд, бинобар ин 0 >= 0 true медиҳад.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
03 Қиматҳои рост ва дурӯғ (truthy / falsy)
Шарт ҳатман муқоиса будан лозим нест. Ба if ҳар қиматро гузоштан мумкин аст ва JavaScript худаш онро ба true ё false табдил медиҳад. Ин ҳамон табдили ниҳонӣ ба boolean аст, ки дар дарси навъҳо сухан рафт.
Дар ҳамагӣ ҳашт қимати «дурӯғ», боқӣ — рост
Қиматҳоеро, ки ба false табдил меёбанд, falsy («дурӯғнамо») меноманд. Панҷтои асосиро дар хотир доред — онҳо ҳар рӯз вомехӯранд:
Қимати falsy Ин чист falseхуди қимати дурӯғ 0 (инчунин -0, 0n)рақами сифр ""сатри холӣ null«қасдан холӣ» undefined«қимат таъин нашудааст» NaN«рақам не»
Боқӣ ҳама — truthy («рост»): ҳар рақами ғайрисифр (аз ҷумла манфӣ), ҳар сатри ғайриҳолӣ, аз ҷумла "0" ва "false". Ҳар қиматро тавассути Boolean(...) ё инкори дукаратаи !! санҷидан мумкин аст:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (Boolean (0 )); // → false
console.log (Boolean ("" )); // → false
console.log (Boolean (null )); // → false
console.log (Boolean (NaN)); // → false
console.log (Boolean (1 )); // → true
console.log (Boolean (-5 )); // → true: рақами манфӣ низ рост аст
console.log (Boolean ("Мадина" )); // → true
console.log (Boolean (" " )); // → true: фосила — аломат аст, сатр холӣ нест!
console.log (Boolean ("0" )); // → true: сатри "0" холӣ нест
console.log (Boolean ("false" )); // → true: сатр бо матни false — танҳо матн
Ташбеҳ аз зиндагӣ
Стакани холӣ, ҳамёни холӣ, ҷойи холӣ дар истгоҳ — ин «не» аст. Аммо ҳамёне, ки дар он як танга ҳаст, — аллакай «ҳаст», ҳарчанд ночиз. Вале ба як ғаройиб диққат диҳед: 0 — ин «холӣ» аст, сатри "0" — «ҳаст», зеро дар он аломат-рақам ҷойгир аст.
Ин чӣ тавр истифода мешавад
Сабаби аз ҳама маъмули нигоҳ кардан ба truthy/falsy — санҷиши «оё корбар умуман қимат додааст»:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const username = "" ; // корбар чизе ворид накард
if (username) {
console.log ("Добро пожаловать, " + username);
} else {
console.log ("Введите имя" );
}
Дом: сифр низ қимати софдилона аст
Санҷиши if (value) ҳам «таъин нашуда» ва ҳам 0-и воқеиро дурӯғ мешуморад. Агар сифр барои шумо мумкин бошад (тахфифи 0%, тавозуни 0 сомонӣ, баҳои 0), санҷиши if (discount) нодуруст кор мекунад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const discount = 0 ; // тахфифи 0% — қимати муқаррарӣ аст
if (discount) {
console.log ("Скидка:" , discount + "%" );
} else {
console.log ("Скидки нет" ); // ✖ хатои мантиқ: 0% низ тахфиф аст
}
// дуруст: маҳз «оё қимат таъин шудааст» мепурсем
if (discount !== undefined ) {
console.log ("Скидка:" , discount + "%" );
}
Бештар хонед: MDN: Falsy · MDN: Truthy · learn.javascript.ru: Операторҳои мантиқӣ
Амалия: мустаҳкам мекунем
ВАЗИФАИ 3.1 Чӣ дурӯғ аст, чӣ рост осон
Дар prediction натиҷаи Boolean(…)-ро барои ҳар кадоме аз ҳашт сатр ("true" ё "false") нависед ва иҷро кунед. Диққати махсус — ба қиматҳои 4, 6 ва 8.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: true ё false барои ҳар қимат (ҳар қимат — бо матн, чунон ки консол нишон медиҳад)
const prediction = ["" , "" , "" , "" , "" , "" , "" , "" ];
const actual = [
Boolean (0 ),
Boolean ("0" ),
Boolean ("" ),
Boolean (" " ),
Boolean (null ),
Boolean ("false" ),
Boolean (-1 ),
Boolean (undefined ),
].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 Қиматҳои дурӯғ кам аст: false, 0, "", null, undefined, NaN. Ҳар чизе, ки дар ин рӯйхат нест, — рост.
Ишора 2 Сатр бо фосила " " ва сатри "false" холӣ нестанд, пас ростанд: JavaScript ба дарозии сатр менигарад, на ба маънои он.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 3.2 Салом, меҳмон миёна
Барои ҳар кадоме аз се тағйирёбанда салом бароред: агар қимат таъин шуда бошад (truthy) — Привет, имя!, вагарна — Привет, гость!. if / else-ро бе муқоиса, бевосита бо худи тағйирёбанда истифода баред.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const name1 = "Мадина" ;
const name2 = "" ;
let name3; // қимат таъин нашудааст
// барои ҳар тағйирёбанда сохтори if / else-и худаш
Натиҷаи интизоршаванда Привет, Мадина!
Привет, гость!
Привет, гость!
Ишора 1 Ба қавсҳои if худи тағйирёбандаро гузоштан мумкин аст: if (name1) { ... } else { ... }.
Ишора 2 Сатри холӣ ва undefined — ҳар дуи онҳо falsy, бинобар ин барои номи дуюм ва сеюм шохаи else кор мекунад. Барои салом сатри қолабӣ қулай аст: `Привет, ${name1}!`.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 3.3 Тахфифи сифр фоиз миёна
Мағоза менависад «Скидки нет», вақте ки тахфиф таъин нашудааст, вале «Скидка: 0%» ва «Скидка: 15%», вақте ки таъин шудааст (ҳатто агар сифр бошад). Ҳоло барнома дар сифр хато мекунад. Хаторо ёбед ва шартро ислоҳ кунед, қимати discount-ро тағйир надода.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const discount = 0 ;
if (discount) {
console.log ("Скидка: " + discount + "%" );
} else {
console.log ("Скидки нет" );
}
Натиҷаи интизоршаванда Скидка: 0%
Ишора 1 Сифр — falsy, бинобар ин if (discount) барномаро ба else мефиристад. Мо бояд на «рост будан», балки «оё қимат таъин шудааст»-ро санҷем.
Ишора 2 Бо undefined қатъӣ муқоиса кунед: if (discount !== undefined). Инчунин кӯшиш кунед, ки 0-ро бо undefined иваз намоед ва боварӣ ҳосил кунед, ки баромад «Скидки нет» мешавад.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
04 Операторҳои мантиқӣ: &&, ||, !
Як савол аксар вақт кам аст. «Ба клуб рафтан мумкин аст, агар шумо 18 ё бештар доред ва шиноснома доред». Барои муттаҳид кардани саволҳо се оператори мантиқӣ истифода мешавад:
&& — «ва»Рост аст, танҳо агар ҳар ду шарт рост бошанд.
|| — «ё»Рост аст, агар ақаллан як аз шартҳо рост бошад.
! — «не»Қиматро баръакс мекунад: !true — ин false аст ва баръакс.
aba && ba || b!atruetruetruetruefalsetruefalsefalsetruefalsefalsetruefalsetruetruefalsefalsefalsefalsetrue
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const age = 20 ;
const hasTicket = true ;
console.log (age >= 18 && hasTicket); // → true: ҳар ду шарт иҷро шудаанд
console.log (age < 18 || hasTicket); // → true: билет кифоя аст
console.log (!hasTicket); // → false
console.log (age >= 18 && !hasTicket); // → false
Ташбеҳ аз зиндагӣ
Барои баромадан ба роҳи ресмонӣ билет ва обу ҳавои хуб лозим аст (&&). Ба чойхона даромадан мумкин аст ё аз даромадгоҳи асосӣ, ё аз ҳавлӣ (||). Аломати «не» — лавҳаи «Кор намекунад» аст: ҷавобро баръакс мекунад.
Афзалият ва қавсҳо
Тартиби иҷро мисли риёзиёт аст: аввал !, баъд &&, сонитар ||. Чунон ки зарб пештар аз ҷамъ меояд, «ва» низ пештар аз «ё» меояд. Барои тахмин накардан ва хонандаро саргардон накардан, дар шартҳои мураккаб қавсҳо гузоред.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const isStudent = true ;
const hasCard = false ;
const isWeekend = false ;
// бе қавсҳо: аввал &&, баъд ||
console.log (isStudent || hasCard && isWeekend); // → true
// бо қавсҳо: тартиб тағйир меёбад
console.log ((isStudent || hasCard) && isWeekend); // → false
Қонуни «не» (қонунҳои де Морган)
Шарти «не (А ё Б)» ҳамон маъноро дорад, ки «не А ва не Б». Ва баръакс: «не (А ва Б)» — ин «не А ё не Б» аст. Ин ба соддасозии шартҳои печида кумак мекунад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const isClosed = false ;
const isFull = true ;
// «Даромадан мумкин аст, агар на (баста ё ҷой нест)»
console.log (!(isClosed || isFull)); // → false
// ҳамон: «на баста ВА на пур»
console.log (!isClosed && !isFull); // → false
Қатъи кӯтоҳ ва қиматҳои бозпасгардонидашаванда
Ҳамин ҷо ҷолибтарин қисм оғоз мешавад. Операторҳои && ва || дар асл на true / false, балки яке аз қиматҳоеро, ки муқоиса мекунанд , бозпас мегардонанд. Ва онро «танбалона», аз чап ба рост мекунанд, баробари он ки ҷавоб равшан шуд, қатъ мешаванд. Инро қатъи кӯтоҳ (short-circuit) меноманд.
a || b — аввалин қимати ростро мегирад. Агар ростҳо набошанд — охиринро бозпас мегардонад.
a && b — аввалин қимати дурӯғро мегирад. Агар дурӯғҳо набошанд — охиринро бозпас мегардонад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
console.log (0 || 10 ); // → 10: 0 дурӯғ аст, ба пеш меравем
console.log ("Алиша" || "гость" ); // → Алиша: қимати аввал аллакай рост аст, минбаъд намебинем
console.log (null || undefined || "запасной" ); // → захира
console.log (1 && 2 && 3 ); // → 3: ҳама рост, охиринро бозпас гардонд
console.log (1 && 0 && 3 ); // → 0: дар аввалин дурӯғ истод
console.log (null && "не дойдём" ); // → null
Ташбеҳ аз зиндагӣ
|| — санҷиши вариантҳои эҳтиётӣ аст: «ба чойхонаи назди хона меравем, агар баста бошад — ба ҳамсоя, агар он ҳам баста бошад — ба хона». Аввалин варианти кордорро мегирем. && — занҷири санҷишҳо дар фурудгоҳ аст: шиноснома, билет, бор. Баробари он ки як санҷиш нагузашт — дигар намегузоранд ва мо медонем, ки дар чӣ истодем.
Инро дар амал истифода мебаранд. Қимати пешфарз:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const nickname = "" ; // корбар чизе ворид накард
const shown = nickname || "Гость" ; // агар холӣ бошад — «Гость»-ро ҷойгузин мекунем
console.log ("Привет," , shown); // → Привет, Гость
Ва «танҳо агар»-и бехатар: қисми рости && танҳо вақте ҳисоб карда мешавад, ки чап рост бошад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const isAdmin = true ;
isAdmin && console.log ("Открываем панель администратора" ); // иҷро мешавад
const isGuest = false ;
isGuest && console.log ("Это сообщение не появится" ); // қисми рост ҳатто ҳисоб карда нашуд
Оператори ?? — «агар холӣ» танҳо барои null ва undefined
|| камбудие дорад, ки шумо аллакай дидед: 0 ва сатри холиро дурӯғ мешуморад. Барои қиматҳои пешфарз ин аксар вақт нофорам аст: овози 0 — танзими софдилона аст, на «қимат таъин нашудааст». Оператори ?? («якҷоякунии тиҳӣ») қимати эҳтиётиро танҳо вақте ҷойгузин мекунад, ки дар чап null ё undefined бошад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const volume = 0 ; // корбар садоро хомӯш кард
console.log (volume || 50 ); // → 50 ✖ садои хомӯшшуда худ аз худ фаъол шуд
console.log (volume ?? 50 ); // → 0 ✔ сифр нигоҳ дошта шуд
let theme; // танзим таъин нашудааст (undefined)
console.log (theme ?? "светлая" ); // → светлая
Қимат дар чап x || "запас"x ?? "запас""Мадина"Мадина Мадина 0запас 0"" (сатри холӣ)запас (сатри холӣ) null ё undefinedзапас запас
Қоидаи интихоб содда аст: ҷойгузин барои «холӣ» умуман (аз ҷумла 0 ва "") лозим аст — ||-ро мегирем; ҷойгузин танҳо барои «таъин нашудааст» лозим аст — ??-ро мегирем.
Бештар хонед: learn.javascript.ru: Операторҳои мантиқӣ · MDN: Оператори якҷоякунии тиҳӣ ??
Амалия: мустаҳкам мекунем
ВАЗИФАИ 4.1 Даромад ба клуб осон
Барои даромадан лозим аст: синну сол аз 18 ва мавҷудияти билет. Дар се сатр бароред: 1) оё ҳар ду шарт иҷро шудаанд; 2) оё ақаллан яке аз ду иҷро шудааст: «синну сол аз 18» ё «билет ҳаст»; 3) оё дуруст аст, ки билет нест.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const age = 16 ;
const hasTicket = true ;
// се сатри console.log
Натиҷаи интизоршаванда false
true
false
Ишора 1 Сатри аввал: age >= 18 && hasTicket. «Ва» талаб мекунад, ки ҳар ду шарт иҷро шаванд.
Ишора 2 Барои «ақаллан яке» оператори || лозим аст, барои «билет нест» — инкори !hasTicket.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 4.2 Баромадро пешбинӣ кунед: қатъи кӯтоҳ осон
Дар prediction натиҷаи ҳар кадоме аз ҳашт сатрро (бо матн) нависед ва иҷро кунед. Алоҳида ба худ шарҳ диҳед, ки чаро дар ду сатри аввал ҷавобҳо гуногунанд.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
// Пешбиниро ворид кунед: натиҷаи ҳар ифода бо тартиб (ҳар қимат — бо матн, чунон ки консол нишон медиҳад)
const prediction = ["" , "" , "" , "" , "" , "" , "" , "" ];
const actual = [
0 || 10 ,
0 ?? 10 ,
"Алиша" || "гость" ,
null && "текст" ,
1 && 2 && 3 ,
1 && 0 && 3 ,
null || undefined || "последний" ,
null ?? "пусто" ,
].map (String);
console.log (actual.join ("|" ) === prediction.join ("|" ) ? "Верно!" : "Не угадали, подумайте ещё" );
Натиҷаи интизоршаванда Верно!
Ишора 1 || аввалин қимати ростро бозпас мегардонад, && — аввалин қимати дурӯғро. Агар мувофиқ набошад, қимати охирини занҷир бозпас гардонида мешавад.
Ишора 2 0 ?? 10: дар чап на null ва на undefined аст, пас ?? қисми чапро — сифрро — мегузорад.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 4.3 Билет ба осорхона миёна
Дар осорхона қоидаҳо чунинанд: ройгон — кӯдакон то 7 сола (7 дохил нест) ё одамони аз 65 сола. Тахфиф — донишҷӯён ё онҳое, ки аз 18 хурданд. Барои ду меҳмон ба ҳар кадом як сатр дар формати А: бесплатно: true, скидка: false бароред (қиматҳоро тавассути сатри қолабӣ гузоред).
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const ageA = 70 ;
const studentA = false ;
const ageB = 16 ;
const studentB = true ;
// ду сатр бо сатрҳои қолабӣ ва ифодаҳои мантиқӣ
Натиҷаи интизоршаванда А: бесплатно: true, скидка: false
Б: бесплатно: false, скидка: true
Ишора 1 Дар дохили ${ } ҳар ифодаро навиштан мумкин аст, аз ҷумла ageA < 7 || ageA >= 65.
Ишора 2 Барои тахфиф: studentA || ageA < 18. Натиҷаи || дар ин ҷо қимати булӣ аст, зеро дар чап тағйирёбандаи булӣ, дар рост муқоиса истодааст.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 4.4 Танзимоти профил миёна
Корбар як қисми танзимотро пур накардааст. Се сатр бо ҷойгузини қиматҳои пешфарз нависед, дар ҳар кадом оператори дурустро интихоб карда: овози 0-ро нигоҳ доштан лозим аст; лақаби холиро ба Гость иваз кардан лозим аст; мавзӯи таъиннашударо — ба светлая.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const volume = 0 ;
const nickname = "" ;
let theme;
// console.log("Громкость:", ...);
// console.log("Ник:", ...);
// console.log("Тема:", ...);
Натиҷаи интизоршаванда Громкость: 0
Ник: Гость
Тема: светлая
Ишора 1 Барои овоз оператор лозим аст, ки танҳо null ва undefined-ро «холӣ» мешуморад — он гоҳ сифр сифр мемонад.
Ишора 2 volume ?? 50 0-ро нигоҳ медорад, nickname || "Гость" бошад сатри холиро иваз мекунад. Барои мавзӯъ ҳар ду оператор мувофиқанд, вале ?? ғояи «таъин нашудааст»-ро дақиқтар баён мекунад.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
05 Оператори шартӣ if / else if / else
Акнун, ки саволҳо доданро медонем, ба барнома интихоби роҳ -ро меомӯзонем. Барои ин оператори if («агар») хизмат мекунад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const temperature = 35 ;
if (temperature > 30 ) {
console.log ("Жарко, берите воду" );
}
console.log ("Программа продолжается" );
Код дар қавсҳои фигурӣ танҳо вақте иҷро мешавад, ки шарт дар қавсҳои мудаввар рост бошад. Агар дурӯғ бошад — блок танҳо гузаронида мешавад ва барнома пеш меравад.
if (temperature > 30) { console.log("Жарко"); } else { console.log("Нормально"); }
Анатомияи if / else
else — «дар ҳолатҳои дигар»
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const balance = 8 ;
const fare = 3 ; // роҳкиро дар маршрутка
if (balance >= fare) {
console.log ("Проезд оплачен" );
} else {
console.log ("Недостаточно средств" );
}
else if — якчанд вариант
Агар вариантҳо аз ду зиёд бошанд, байни if ва else ҳар қадар else if илова мекунанд. Шартҳо аз боло ба поён, то аввалин рост санҷида мешаванд; боқӣ дигар санҷида намешаванд.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const score = 72 ;
if (score >= 86 ) {
console.log ("Оценка: 5" );
} else if (score >= 71 ) {
console.log ("Оценка: 4" );
} else if (score >= 56 ) {
console.log ("Оценка: 3" );
} else {
console.log ("Оценка: 2" );
}
Ташбеҳ аз зиндагӣ
Чароғаки роҳнамо дар хиёбони Рӯдакӣ. Ронанда бо тартиб месанҷад: сурх? — меистем. Не? Зард? — омода мешавем. Не? Пас, сабз — меравем. Баробари он ки як банд мувофиқ омад, ронанда боқиро дигар ба назар намегирад. Занҷири if / else if / else ҳамин тавр кор мекунад.
Тартиби шартҳо муҳим аст
Азбаски танҳо аввалин шохаи мувофиқ иҷро мешавад, шартҳоро аз сахттаринҳо ба нармтаринҳо гузоштан лозим аст. Агар score >= 56-ро аввал гузоред, 90 балл ҳам баҳои «3» мегирад — зеро 90 низ аз 56 калон аст.
Хато: тартиби нодуруст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const score = 90 ;
if (score >= 56 ) {
console.log ("Оценка: 3" ); // аллакай дар ин ҷо кор мекунад
} else if (score >= 71 ) {
console.log ("Оценка: 4" ); // ҳеҷ гоҳ нахоҳем расид
} else if (score >= 86 ) {
console.log ("Оценка: 5" ); // ва ба ин ҷо ҳам
}
Шартҳои таркибӣ ва дарунҷоӣ
Дар дохили шарт &&, || ва !-ро истифода бурдан мумкин аст. Ва ба дохили блок — if-ҳои дигарро гузоштан. Аммо сатҳҳои зиёди дарунҷоиро хондан душвор аст: бештар осонтар аст, ки шартҳоро тавассути && муттаҳид кунем.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const hour = 14 ;
const isWorkDay = true ;
if (isWorkDay && hour >= 9 && hour < 18 ) {
console.log ("Офис открыт" );
} else {
console.log ("Офис закрыт" );
}
Маслиҳат: қавсҳои фигурӣ ва санҷишҳои барвақт
Агар дар блок танҳо як сатр бошад, қавсҳоро нанавиштан мумкин аст, вале ин тавр кардан мувофиқ нест: ҳангоми илова кардани сатри дуюм қавсҳоро фаромӯш кардан ва хато гирифтан осон аст. Ҳамеша { } нависед. Ғайр аз ин, санҷишҳои мураккабро «аз поён ба боло» гузоштан қулайтар аст: аввал ҳолати аз ҳама истисноӣ (score > 100, «воридкунии нодуруст»), баъд муқаррариҳо.
Бештар хонед: learn.javascript.ru: Шохабандии шартӣ · MDN: if...else
Амалия: мустаҳкам мекунем
ВАЗИФАИ 5.1 Чароғаки роҳнамо осон
Тағйирёбандаи color рангии чароғаки роҳнаморо нигоҳ медорад. Занҷири if / else if / else-ро нависед: "red" → Стоп, "yellow" → Приготовьтесь, "green" → Идите, ҳар қимати дигар → Светофор сломан. Барномаро дар ҳар чор вариант санҷед, color-ро тағйир дода. Дар коди ниҳоӣ "yellow"-ро монед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const color = "yellow" ;
// занҷири if / else if / else
Натиҷаи интизоршаванда Приготовьтесь
Ишора 1 Ҳар шарт — муқоисаи қатъии сатр: color === "red".
Ишора 2 Сохтор: if (...) { ... } else if (...) { ... } else if (...) { ... } else { ... }. else-и охирин — «барои ҳама чизи дигар».
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 5.2 Ҷуфт ё тоқ осон
Адад бо тағйирёбандаи n дода шудааст. Сатри намуди 17 — нечётное ё 18 — чётное-ро бароред. Ишора дар бораи оператор аз дарси гузашта: бақияи тақсим ба 2 барои ададҳои ҷуфт ба сифр баробар аст.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const n = 17 ;
// if (...) { ... } else { ... }
Натиҷаи интизоршаванда 17 — нечётное
Ишора 1 Бақияи тақсимро оператори % медиҳад: n % 2 — ин 0 барои ҷуфтҳо ва 1 барои тоқҳост.
Ишора 2 Шарт: n % 2 === 0. Сатрро бо қолаб ҷамъ кунед: `${n} — чётное`.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 5.3 Тахфиф аз рӯи маблағи фармоиш миёна
Мағозаи интернетӣ аз рӯи маблағи фармоиши total тахфиф медиҳад: то 100 сомонӣ — бе тахфиф; аз 100 то 299 — 5%; аз 300 то 499 — 10%; аз 500 — 15%. Ду сатр бароред: Скидка: 10% ва К оплате: .... Андозаи тахфифро дар тағйирёбандаи discount (фоиз) нигоҳ доред, натиҷаро аз рӯи он ҳисоб кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const total = 480 ;
let discount = 0 ;
// discount-ро тавассути if / else if муайян кунед
// console.log("Скидка: " + discount + "%");
// console.log("К оплате: " + ...);
Натиҷаи интизоршаванда Скидка: 10%
К оплате: 432
Ишора 1 Аз остонаи калон ба хурд санҷед: аввал total >= 500, баъд >= 300, баъд >= 100. Тағйирёбандаи discount аллакай тавассути let эълон шудааст, бинобар ин дар шохаҳо ба он қимати наверо таъин кардан мумкин аст.
Ишора 2 Барои пардохт: total - total * discount / 100. Ҳангоми total = 480 ва discount = 10 432 мешавад.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 5.4 Хаторо ёбед: баҳои 90 балл миёна
Донишҷӯ 90 балл гирифт ва бояд «5» гирад, вале барнома чизи дигар мебарорад. Сабабро ёбед ва танҳо тартиби санҷишҳоро ислоҳ кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const score = 90 ;
if (score >= 56 ) {
console.log ("Оценка: 3" );
} else if (score >= 71 ) {
console.log ("Оценка: 4" );
} else if (score >= 86 ) {
console.log ("Оценка: 5" );
} else {
console.log ("Оценка: 2" );
}
Натиҷаи интизоршаванда Оценка: 5
Ишора 1 Аввалин шарти рост кор мекунад. Кадом шарт барои 90 мувофиқ аст? Якбора се то мувофиқ аст, вале танҳо болоӣ иҷро мешавад.
Ишора 2 Санҷишҳоро аз сахттарин остона ба нармтарин гузоред: >= 86, >= 71, >= 56, баъд else.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 5.5 Кадом секунҷа душвор
Се тараф a, b, c дода шудаанд. Аввал санҷед, ки чунин секунҷа вуҷуд дорад ё не: маҷмӯи ҳар ду тараф бояд қатъиян аз сеюм калон бошад. Агар вуҷуд надошта бошад — Такого треугольника нет-ро бароред ва қатъ шавед. Агар вуҷуд дошта бошад — Треугольник существует-ро бароред ва бо сатри дуюм навъи онро: Равносторонний (ҳамаи тарафҳо баробар), Равнобедренный (маҳз ду то баробар) ё Разносторонний. Барномаро дар қиматҳои (3, 4, 5), (2, 2, 2), (1, 2, 10) санҷед; дар коди ниҳоӣ (5, 5, 8)-ро монед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const a = 5 ;
const b = 5 ;
const c = 8 ;
// if-и дарунҷоӣ: вуҷуд дорад ё не, баъд навъ
Натиҷаи интизоршаванда Треугольник существует
Равнобедренный
Ишора 1 Вуҷуд доштан: a + b > c && a + c > b && b + c > a. Агар он дурӯғ бошад — ин шохаи else-и if-и берунӣ аст.
Ишора 2 Дар дохили if-и берунӣ — занҷир: аввал «ҳар се баробаранд» (a === b && b === c), баъд «ақаллан ду то баробаранд» (a === b || b === c || a === c), вагарна — гуногунтараф. Тартиб муҳим аст: баробартараф ба «ду то баробар» низ мувофиқ аст.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
06 Оператори сегона ? :
Вақте ки танҳо яке аз ду қиматро интихоб кардан лозим аст, сохтори if / else хеле ҷой мегирад. Барои чунин ҳолатҳо навишти кӯтоҳ ҳаст — оператори сегона (тернарӣ). Он дар JavaScript ягонаест, ки се қисм дорад («тернарӣ» маънои «се»-ро дорад).
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const age = 20 ;
// навишти дароз
let status1;
if (age >= 18 ) {
status1 = "взрослый" ;
} else {
status1 = "ребёнок" ;
}
// навишти кӯтоҳ: шарт ? қимат_агар_ҳа : қимат_агар_не
const status2 = age >= 18 ? "взрослый" : "ребёнок" ;
console.log (status1); // → взрослый
console.log (status2); // → взрослый
age >= 18 ? "взрослый" : "ребёнок"
Се қисм: савол , ҷавоби «ҳа» , ҷавоби «не»
Ташбеҳ аз зиндагӣ
Лавҳа дар дари чойхона: «Кушода / Баста». Соҳиб бо як нигоҳ ба соат интихоб мекунад, ки лавҳаро бо кадом тараф овезон кунад. Оператори сегона маҳз ҳамин корро мекунад: аз рӯи шарт яке аз ду қимати тайёрро интихоб мекунад.
Дар куҷо қулай аст
Натиҷаи оператори сегона — қимат аст, бинобар ин онро бевосита ба сатри қолабӣ ё ба аргументи console.log гузоштан мумкин аст:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const items = 0 ;
console.log (`В корзине: ${items === 0 ? "пусто" : items + " шт."}` );
const hour = 7 ;
console.log ("Чойхона:" , hour >= 9 && hour < 22 ? "открыта" : "закрыта" );
Занҷири операторҳои сегона
Операторҳои сегонаро ба ҳам пайваст кардан мумкин аст, ин else if-ро иваз мекунад. Кор мекунад, вале бо ду сатҳ хондан аллакай душвор аст.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const temp = 22 ;
const feel = temp >= 30 ? "жарко"
: temp >= 15 ? "тепло"
: "прохладно" ;
console.log (feel); // → тепло
Аз ҳад зиёд Операторҳои сегонаи дарунҷоӣ дар як сатр — дарди сар барои хонанда.
Чӣ тавр НАБОЯД кард
const x = a ? b ? 1 : 2 : c ? 3 : d ? 4 : 5 ;
if / else-и софдилона Агар вариантҳо аз ду зиёд ё шартҳо мураккаб бошанд — if / else if ё switch-ро гиред.
JavaScript
let label;
if (temp >= 30 ) {
label = "жарко" ;
} else if (temp >= 15 ) {
label = "тепло" ;
} else {
label = "прохладно" ;
}
На барои амалҳо, балки барои қиматҳо
Оператори сегона барои гирифтани қимат лозим аст. Агар шумо бояд амалҳои гуногун иҷро кунед (яке барорад, дигареро захира кунад), if-и оддиро истифода баред. Ифодае чун cond ? console.log("a") : console.log("b") кор мекунад, вале бад хонда мешавад.
Бештар хонед: learn.javascript.ru: Оператори шартии «?» · MDN: Оператори шартӣ (сегона)
Амалия: мустаҳкам мекунем
ВАЗИФАИ 6.1 Ба сегона аз нав нависед осон
if / else-и зеринро дар як сатр бо оператори сегона аз нав нависед. Натиҷа набояд тағйир ёбад.
Буд (танҳо хондан)
const age = 20 ;
let status;
if (age >= 18 ) {
status = "Совершеннолетний" ;
} else {
status = "Несовершеннолетний" ;
}
console.log (status);
Варианти шумо · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const age = 20 ;
// оператори сегонаи шумо: status-ро эълон кунед ва натиҷаро дар он гузоред
console.log (status);
Натиҷаи интизоршаванда Совершеннолетний
Ишора 1 Акнун тағйирёбандаро тавассути const эълон кардан ва фавран натиҷаро дар он гузоштан мумкин аст: const status = шарт ? ... : ...;
Ишора 2 Нақша: age >= 18 ? "Совершеннолетний" : "Несовершеннолетний".
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 6.2 Кушода ё баста миёна
Чойхона аз 9:00 то 22:00 кор мекунад (22:00 аллакай баста аст). Барои ду лаҳзаи вақти hour1 ва hour2 бо ёрии оператори сегона ба ҳар кадом як сатр бароред: Чойхона: открыта ё Чойхона: закрыта.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const hour1 = 7 ;
const hour2 = 14 ;
// ду сатр: console.log("Чойхона:", ...)
Натиҷаи интизоршаванда Чойхона: закрыта
Чойхона: открыта
Ишора 1 Шарти «вақти корӣ» — ду муқоиса, ки бо && пайваст шудаанд: hour >= 9 && hour < 22.
Ишора 2 Шарти таркибиро бевосита пеш аз аломати савол гузоштан мумкин аст: hour1 >= 9 && hour1 < 22 ? "открыта" : "закрыта".
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 6.3 Занҷир: гарм, тафсон, салқин душвор
Барои се ҳарорати t1, t2, t3 бо ёрии занҷири операторҳои сегона тавсифро интихоб кунед: аз 30 ва боло — Жарко, аз 15 то 29 — Тепло, аз 15 паст — Прохладно. Занҷирро бо сатрҳо нависед, мисли мисоли боло. Баъд софдилона аз худ бипурсед: кадомаш осонтар хонда мешавад — он ё else if?
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const t1 = 31 ;
const t2 = 20 ;
const t3 = 5 ;
// const d1 = ...
// const d2 = ...
// const d3 = ...
console.log (d1);
console.log (d2);
console.log (d3);
Натиҷаи интизоршаванда Жарко
Тепло
Прохладно
Ишора 1 Занҷир аз чап ба рост хонда мешавад: t >= 30 ? "Жарко" : t >= 15 ? "Тепло" : "Прохладно". Саволи дуюм танҳо вақте дода мешавад, ки ҷавоби аввал «не» бошад.
Ишора 2 Ҳар як аз се собитро занҷири алоҳида ҳисоб кунед: t1, t2, t3-ро ба ҷои t гузоред.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
07 Сохтори switch
Агар як тағйирёбандаро бо қиматҳои мушаххаси зиёд муқоиса кардан лозим бошад, занҷири даҳ else if печида мешавад. Барои ин switch («гузаронанда») ихтироъ шудааст.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const day = 3 ;
switch (day) {
case 1 :
console.log ("Понедельник" );
break ;
case 2 :
console.log ("Вторник" );
break ;
case 3 :
console.log ("Среда" );
break ;
default :
console.log ("Другой день" );
}
Ифода ҳисоб мекунад дар қавсҳо пас аз switch — дар ин ҷо day.
Қимат қатъиян муқоиса мешавад (мисли ===) бо ҳар case аз боло ба поён.
Аввалин мувофиқат ёфта мешавад — ва код аз ҳамин ҷо ба поён иҷро мешавад.
break аз switch мебарояд. Агар break набошад — иҷро идома меёбад.
default — «ҳеҷ чиз мувофиқ наомад», ҳамонанди else. Онро дар охир менависанд.
Ташбеҳ аз зиндагӣ
Меню дар чойхона: официант «курутоб»-ро мешунавад ва бевосита ба сатри лозимаи меню меравад, на ҳамаи хӯрокҳоро бо тартиб мехонад. default — ин «чунин хӯрок дар мо нест». Ва агар break-ро фаромӯш кунед, официант ҳам курутоб ва ҳам ҳар он чиро, ки дар поёни меню навишта шудааст, меорад.
break-ро фаромӯш кардем: «афтидан» (fall-through)
Маъруфтарин дом дар switch. Бе break JavaScript case-и лозимаро меёбад ва ҳар он чи дар поён аст иҷро мекунад, то даме ки ба break ё охири switch бирасад.
break-ро фаромӯш кардем · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const n = 2 ;
switch (n) {
case 1 :
console.log ("Один" );
case 2 :
console.log ("Два" );
case 3 :
console.log ("Три" );
default :
console.log ("Неизвестно" );
}
// мебарорад: Два, Три, Неизвестно — ҳар он чи дар поёни case-и мувофиқ аст
Афтидани муфид: якчанд case — як амал
Тарафи муфид ҳам ҳаст. Агар барои якчанд қимат амал яксон бошад, онҳоро пай дар пай навиштан мумкин аст, break-ро бошад танҳо пас аз коди умумӣ гузоштан:
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const month = 4 ;
switch (month) {
case 12 :
case 1 :
case 2 :
console.log ("Зима" );
break ;
case 3 :
case 4 :
case 5 :
console.log ("Весна" );
break ;
case 6 :
case 7 :
case 8 :
console.log ("Лето" );
break ;
case 9 :
case 10 :
case 11 :
console.log ("Осень" );
break ;
default :
console.log ("Такого месяца нет" );
}
Муқоисаи қатъӣ
switch қиматҳоро мисли ===, бе табдили навъҳо муқоиса мекунад. Бинобар ин рақами 1 ва сатри "1" — қиматҳои гуногунанд:
Навъ мувофиқат накард · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const choice = "1" ; // сатр, мисли аз майдони шакл
switch (choice) {
case 1 :
console.log ("Число один" );
break ;
case "1" :
console.log ("Строка «1»" );
break ;
default :
console.log ("Не нашли" );
}
Кай чиро интихоб кардан Абзор Як саволи «ҳа / не» if / elseЯке аз ду қиматро интихоб кардан оператори сегона Диапазонҳо («аз 71 то 85»), шартҳои мураккаб if / else ifЯк тағйирёбанда бо қиматҳои мушаххас (1, 2, 3 ё "+", "-") муқоиса мешавад switch
Маслиҳат
Ҳамеша default-ро нависед, ҳатто агар «ин буда наметавонад». Корбар, хатои имлоӣ ё маълумот аз шабака дер ё зуд қимати ғайричашмдоштро меандозад ва шумо дар ин бора фавран аз паём мефаҳмед, на аз вайроншавии хомӯшона.
Бештар хонед: learn.javascript.ru: Сохтори switch · MDN: switch
Амалия: мустаҳкам мекунем
ВАЗИФАИ 7.1 Рӯзи ҳафта осон
Рақами рӯзи ҳафта дар day нигоҳ дошта мешавад (1 — душанбе, ..., 7 — якшанбе). switch-ро нависед, ки номи рӯзро мебарорад. Барои ҳар қимати дигар Нет такого дня-ро бароред. Дар қиматҳои 1, 7 ва 9 санҷед; дар коди ниҳоӣ 5-ро монед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const day = 5 ;
// switch (day) { ... }
Натиҷаи интизоршаванда Пятница
Ишора 1 Ҳар case рақами худ ва console.log-и худро дорад, ки пас аз он ҳатман break истодааст.
Ишора 2 Барои ҳафт рӯз ҳафт case лозим аст: аз case 1: то case 7:. Шохаи default — дар охирин.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 7.2 Рӯзҳои ҳафта: корӣ ё истироҳат миёна
Бо истифода аз «афтидани муфид» чунин кунед, ки барои рӯзҳои 1–5 Рабочий день, барои 6 ва 7 — Выходной, барои боқӣ — Некорректный номер бароварда шавад. Як console.log-и яксонро дар якчанд ҷой такрор накунед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const day = 6 ;
// switch (day) { ... }
Натиҷаи интизоршаванда Выходной
Ишора 1 Панҷ case пай дар пай (case 1: case 2: ...), баъд як console.log-и умумӣ ва break.
Ишора 2 Сохтор: case 1: case 2: case 3: case 4: case 5: ... break;, баъд case 6: case 7: ... break;, баъд default.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 7.3 Хаторо ёбед: break-ҳои фаромӯшшуда миёна
Барнома бояд номи танҳо як навъи нонро барорад, вале якчанд сатр мебарорад. Аввал иҷро кунед ва бубинед, ки чӣ бароварда мешавад. Ба худ шарҳ диҳед, ки чаро, баъд кодро ислоҳ кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const bread = "tandir" ;
switch (bread) {
case "lavash" :
console.log ("Лаваш — тонкий" );
case "tandir" :
console.log ("Тандыр — круглая лепёшка" );
case "non" :
console.log ("Нон — домашний" );
default :
console.log ("Неизвестный хлеб" );
}
Натиҷаи интизоршаванда Тандыр — круглая лепёшка
Ишора 1 case "tandir" мувофиқат кард ва иҷро ба поён «афтид» — тавассути "non" ва default.
Ишора 2 Пас аз ҳар console.log break; илова кунед (дар шохаи охирин он ҳатмӣ нест, вале барои тартиб гузоштан беҳтар аст).
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 7.4 Таҳвил аз рӯи шаҳрҳо душвор
Хидмати курерӣ мӯҳлатҳоро аз рӯи шаҳрҳо номбар мекунад. Душанбе — 1 день; Бохтар ва Ваҳдат — 2 дня; Хуҷанд ва Кулоб — 3 дня; Хоруғ — 5 дней; шаҳрҳои дигар — Уточняйте у оператора. Шаҳрҳои бо мӯҳлати яксонро муттаҳид кунед. Сатри Доставка: ...-ро бароред. Баъд худатон фикр кунед: агар дар city "бохтар" бо ҳарфи хурд бошад, чӣ мешавад?
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const city = "Бохтар" ;
// switch (city) { ... }
Натиҷаи интизоршаванда Доставка: 2 дня
Ишора 1 Шаҳрҳои бо мӯҳлати яксон — ин case-ҳои пай дар пай бе break дар байни онҳо, console.log-и умумӣ ва break бошад — пас аз охирини онҳо.
Ишора 2 Муқоиса дар switch қатъӣ ва ба регистр ҳассос аст: "бохтар" бо "Бохтар" мувофиқат намекунад ва ба default меафтад. Ин барои дарси мо муқаррарӣ аст; баъдтар шумо сатрҳоро ба як регистр овардан меомӯзед.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
08 Блоки ЗС: GitHub Copilot дар VS Code
Ишораи ЗС
Copilot — ин омӯзгор не, балки ҳамкори хеле тез ва хеле худбовар аст. Он коди шуморо мебинад ва тахмин мекунад, ки шумо минбаъд чӣ навиштанӣ ҳастед. Аксар вақт дуруст тахмин мекунад, вале баъзан бо боварӣ коди хатодорро пешниҳод мекунад. Мақсади мо дар курс — он аст, ки шумо ҳар сатри пешниҳодкардаи онро бифаҳмед. Бинобар ин имрӯз на танҳо фаъол кардани Copilot, балки хомӯш кардани он -ро низ меомӯзем.
Қоидаҳои курсро ёдовар мешавем: аввал 15 дақиқа худатон кӯшиш кунед, кодеро, ки сатр ба сатр шарҳ дода наметавонед, нагузоред ва ҳолатҳои канориро ҳамеша бо даст санҷед. Copilot-ро дар амалия фаъол мекунем ва дар вазифаҳои назоратӣ хомӯш мекунем.
1. Copilot дар муҳаррир чӣ тавр кор мекунад
То даме ки шумо чоп мекунед, Copilot матни рангпаридаи «шабаҳӣ»-ро нишон медиҳад — пешниҳоди идома додан. Онро пурра, калима ба калима қабул кардан ё рад кардан мумкин аст. Клавишаҳо дар тарҳбандии стандартии VS Code:
Амал Клавишаҳо Пешниҳодро пурра қабул кардан TabТанҳо калимаи оянда қабул кардан Ctrl (дар Mac Cmd) + →Пешниҳодро рад кардан Esc ё танҳо чопи худатонро идома диҳедВарианти оянда / қаблӣ Alt (дар Mac Option) + ] / [Inline chat: савол додан бевосита дар код Ctrl (дар Mac Cmd) + I
Дар inline chat шумо порчаи кодро ҷудо мекунед, Ctrl/Cmd + I-ро пахш мекунед ва дархостро бо калимаҳои оддӣ менависед. Фармонҳои кӯтоҳ низ ҳаст: /explain — шарҳ додани код, /fix — ёфтани хато, /tests — пешниҳоди тестҳо. Барои навомӯз аз ҳама арзишмандаш — маҳз /explain ва саволи «кадом ҳолатҳои канориро ба назар нагирифтам?» аст.
2. Copilot дар куҷо кумак мекунад
Корҳои мунтазам: сатрҳои такроршаванда, қавсҳо, коди қолабӣ. Дастҳо хаста намешаванд, сар барои мантиқ озод аст.
Синтаксиси фаромӯшшуда: «switch-ро чӣ тавр навиштан мумкин аст?» — аз ҷустуҷӯ дар ҳуҷҷатнигорӣ зудтар аст.
Шарҳи коди дигарон: нофаҳморо ҷудо кардед, /explain-ро пахш кардед.
Маълумот барои санҷиш: «10 қимати санҷишӣ барои санҷидани синну сол пешниҳод кун».
Нигоҳи дуюм: «ҳолатҳои сарҳадиро дар шарти ман ёб» пас аз он ки худатон код навиштед.
3. Copilot дар куҷо ба омӯзиш халал мерасонад
Шартҳо ва мантиқ — маҳз ҳамон мавзӯест, ки дар он тафаккур аз чопкунӣ муҳимтар аст. Мағз вақте меомӯзад, ки меғалтад : шумо худатон ҳал мекунед, кадом оператор ва бо кадом тартиб. Агар шумо танҳо Tab пахш кунед, дар шумо хаёли фаҳмидан пайдо мешавад: код ҳаст, вале дар сар холӣ. Дар кори назоратӣ ва мусоҳиба шумо танҳо мемонед.
Ташбеҳ аз зиндагӣ
Copilot — мисли навигатор дар таксӣ. Агар шумо ҳамеша бо навигатор савор шавед, пас аз як сол ҳам намедонед, ки дар Душанбе чӣ тавр рафтан лозим: «ба чап гардидан» — ин харита дар сар нест. Аммо агар аввал худатон масир созед, баъд бо навигатор муқоиса кунед, шаҳрро ба хотир мегиред — ва ҷойҳоеро меёбед, ки навигатор аҷиб мебарад.
Хатои маъмули Copilot дар шартҳо Чӣ тавр менамояд Чӣ тавр доштан Сарҳад: ба ҷои >= — > if (age > 18), ҳол он ки қоида «аз 18»Қиматҳоро дар сарҳад санҷед: 17, 18, 19 ==-и ғайриқатъӣif (answer == 0)Қоидаи курс: танҳо === Сифр ҳамчун «холӣ» if (balance) — тавозуни 0 ҳамчун «қимат нест» ҳисоб мешавадҚимати 0 ва сатри холиро санҷед break-и фаромӯшшудаЯкбора якчанд шохаи switch бароварда мешавад Барои ҳар case иҷро кунед Тартиби нодурусти шартҳо Шарти «нарм» болотар аз «сахт» истодааст Калонтарин ва хурдтарин қиматро гузаронед Воридкунии «зиёдатӣ» ба назар гирифта нашудааст Шохаи default / тақсим ба сифр нест Бипурсед: «агар чизи бемаъно ворид шавад, чӣ мешавад?»
4. Интизоми «Copilot off»
Одати кор, ки мо дар курс ба он риоя мекунем:
Вазифаро бихонед ва ҳалро бо калимаҳо ё нақша дар дафтар нависед: кадом ҳолатҳо ҳастанд, бо кадом тартиб онҳоро санҷидан лозим аст.
Copilot-ро хомӯш кунед ва кодро худатон нависед. Нишонаи Copilot-ро дар сатри ҳолати поёни VS Code пахш кунед ва «Disable Completions» (хомӯш кардани ишораҳо)-ро интихоб намоед — барои ҳамаи файлҳо ё танҳо барои JavaScript.
Иҷро кунед ва санҷед дар қиматҳои сарҳадӣ ва дар маълумоти «бад».
Танҳо баъд Copilot-ро фаъол кунед ҳамчун тақризнависанда: код ҷудо кунед, Ctrl/Cmd + I, «ҳолатҳои сарҳадиро ёб, ки ман ба назар нагирифтам».
Муқоиса кунед бо ҳалли худатон. Он чиро пешниҳод кард, ки шумо намедонистед? Дар конспект як сатр нависед.
Қоида
Дар корҳои назоратӣ (дарсҳои 6 ва 18) ЗС пурра хомӯш аст, аз ҷумла Copilot. Агар шумо малакаро бе ишора машқ накарда бошед, кори назоратӣ инро фавран нишон медиҳад. Ҳар ҳафта як қисми вазифаҳоро дар ҳолати «Copilot off» иҷро кунед — мисли варзишгар бе кафшҳои шипдор дар машқ.
5. Промптҳо барои дарси имрӯза
Формуларо дар хотир доред: контекст → вазифа → маҳдудиятҳо → формати ҷавоб → санҷиш.
калкулятор барои js нависедНусха бардоштан
Контекст: ман JavaScript-ро аз сифр меомӯзам, дарси 3-юм, тағйирёбандаҳо, операторҳо, if/else ва switch-ро медонам. Функсияҳо ва давраҳоро ҳанӯз намедонам.
Вазифа: ба тартиб додани ҳисобкунаки консолӣ кумак кун: ду тағйирёбандаи рақамии a ва b, тағйирёбандаи operation бо аломати амал (+, -, *, /), натиҷа тавассути console.log бароварда мешавад.
Маҳдудиятҳо: танҳо switch ва if, бе функсияҳо, давраҳо ва китобхонаҳои беруна; барои тақсим ба сифр ва амали номаълум паёми хато бароред.
Формати ҷавоб: аввал нақша аз 4 қадам бо калимаҳо, баъд код, баъд шарҳи ҳар сатр.
Санҷиш: 3 маҷмӯи маълумоти вурудиро номбар кун, ки барномаи ман дар онҳо метавонад вайрон шавад.Нусха бардоштан
Ин коди ман: [код гузоред]. Ман ҳоло намедонам, оё шартҳоро дуруст гузоштаам. Кодро аз нав нанавис. Бигӯ, ки дар кадом қиматҳо нодуруст рафтор мекунад (қиматҳои сарҳадӣ, сифр, сатри холӣ, навъи нодуруст), ва ин қиматҳоро бо рӯйхат нишон деҳ.Нусха бардоштан
Мисли навомӯз бо сатр-ба-сатр шарҳ деҳ, ки ин switch чӣ мекунад: [код]. Агар ҳамаи break-ҳоро гирем, чӣ бароварда мешавад? Ҷавоб — қадам ба қадам, дар қимати мушаххаси тағйирёбанда.Нусха бардоштан
Барои навомӯз 5 вазифа оид ба if / else ва switch деҳ: аз содда ба душвор, дар бораи зиндагӣ дар Душанбе (маршруткаҳо, чойхона, мағоза). Бе ҳал. Барои ҳар кадом — 3 маҷмӯи санҷишии маълумот бо баромади интизорӣ, то худамро санҷида тавонам.Нусха бардоштан
Акнун ду машқ: «пешниҳодҳо»-и монанди Copilot, ки ба ростӣ монанданд, вале хато мекунанд. Кори шумо — хаторо мисли тақризнависанда доштан.
Амалия: ишораҳои ЗС-ро месанҷем
ВАЗИФАИ 8.1 Роҳкирои ройгон: сарҳад миёна
Қоида: кӯдакон то 12-солагӣ аз ҷумла (яъне 12-солаҳо низ) ройгон мераванд. Ин кодро «Copilot пешниҳод кард». Онро дар сарҳад (11, 12, 13) санҷед, хаторо ёбед ва ислоҳ кунед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const age = 12 ;
// пешниҳоди Copilot:
if (age < 12 ) {
console.log ("Бесплатно" );
} else {
console.log ("Платно" );
}
Натиҷаи интизоршаванда Бесплатно
Ишора 1 «То 12 аз ҷумла» маънои онро дорад, ки 12 низ ройгон аст. Барои 12 12 < 12 чиро бозпас мегардонад?
Ишора 2 <-ро бо <= иваз кунед. Баъд қиматҳои 11, 12 ва 13-ро санҷед: ройгон, ройгон, пулакӣ.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 8.2 Тавозуни телефон: сифр холигӣ нест миёна
Коди «аз Copilot» бояд хабар диҳад: Баланс: ... сомони, агар тавозун маълум бошад (аз ҷумла 0!), ва Баланс неизвестен, агар қимат таъин нашуда бошад. Дар тавозуни сифр хато мекунад. Ислоҳ кунед, қимати balance-ро тағйир надода.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const balance = 0 ;
// пешниҳоди Copilot:
if (balance) {
console.log ("Баланс: " + balance + " сомони" );
} else {
console.log ("Баланс неизвестен" );
}
Натиҷаи интизоршаванда Баланс: 0 сомони
Ишора 1 Қимати balance чист — «таъин нашудааст» ё «таъин шудааст, ба сифр баробар аст»? Ва if сифрро чӣ тавр мепазирад?
Ишора 2 Маҳз дар бораи «таъин шудааст» бипурсед: if (balance !== undefined). Инчунин кӯшиш кунед, ки 0-ро бо undefined иваз кунед ва боварӣ ҳосил кунед, ки «Баланс неизвестен» бароварда мешавад.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
09 Амалия дар дарс: ҳисобкунаки консолӣ
Аввалин барномаи воқеиро месозем. Ин ҳисобкунак аст: ду рақам ва аломати амалро мегирад, ҳисоб мекунад ва ҷавобро ба консол мебарорад. Воридкунии интерактивӣ (тавассути prompt) дар ин саҳифа нест, бинобар ин маълумотро бо тағйирёбандаҳо дар боло медиҳем: a, b ва operation. Онҳоро тағйир диҳед ва иҷро кунед — ҳамин тавр шумо барномаро месанҷед.
Нақшаи дарс ва ҳолатҳои Copilot
Вазифаҳои 9.1–9.2 — ҳисобкунак. Copilot фаъол аст : аз ишораҳо истифода баред, вале ҳар сатри пазируфтаро ба ҳамнишин шарҳ диҳед.
Вазифаҳои 9.3–9.4 — вазифаҳо оид ба мантиқ. Copilot хомӯш аст (интизомро дар бахши 8 бинед). Танҳо шумо, дафтар ва консол.
Пас аз он — Copilot-ро фаъол кунед ва аз ӯ хоҳиш кунед, ки ҳолатҳои сарҳадии ҳалҳои 9.3–9.4-и шуморо санҷад. Дар конспект як ёфтаро нависед.
Қолаби ҳисобкунак
Маълумот: ду рақами a, b ва сатри operation бо аломат.
Интихоби амал: switch (operation) бо вариантҳои "+", "-", "*", "/".
Натиҷа: сатри намуди 12 * 4 = 48-ро бароред.
Ҳимоя: тақсим ба сифр — хатои алоҳида; амали номаълум — шохаи default.
Қолаб: ду амал аз чор · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const a = 12 ;
const b = 4 ;
const operation = "+" ;
switch (operation) {
case "+" :
console.log (`${a} + ${b} = ${a + b}` );
break ;
case "-" :
console.log (`${a} - ${b} = ${a - b}` );
break ;
// дар ин ҷо "*" ва "/" мешаванд
default :
console.log ("Неизвестная операция" );
}
Амалия: ҳисобкунакро месозем
ВАЗИФАИ 9.1 Ҳисобкунак: чор амал миёна
Copilot фаъол аст. Ҳисобкунакро пур кунед: +, -, *, /. Баромад — сатри намуди 12 * 4 = 48. Барои амали номаълум — Неизвестная операция. Ҳар чор аломатро санҷед, operation-ро тағйир дода. Дар коди ниҳоӣ "*"-ро монед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const a = 12 ;
const b = 4 ;
const operation = "*" ;
// switch (operation) { ... }
Натиҷаи интизоршаванда 12 * 4 = 48
Ишора 1 Як case барои ҳар аломат. Дар дохили ҳар кадом — console.log бо сатри қолабӣ ва break.
Ишора 2 Аломатҳо — сатрҳоанд, бинобар ин дар case онҳо дар нохунакҳоянд: case "*":.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 9.2 Ҳисобкунак: ҳимоя аз хатоҳо миёна
Copilot фаъол аст. Ба ҳисобкунак ҳимоя илова кунед: ҳангоми тақсим ба сифр ба ҷои ҷавоб Ошибка: на ноль делить нельзя бароварда мешавад. Ба ғайр аз ин ду амали нав: % (бақия) ва ** (дараҷа). Дар коди ниҳоӣ тақсими 10 / 0-ро монед. Инчунин 7 % 3 (ҷавоб 1) ва 2 ** 5 (ҷавоб 32)-ро санҷед.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const a = 10 ;
const b = 0 ;
const operation = "/" ;
// switch (operation) { ... }
Натиҷаи интизоршаванда Ошибка: на ноль делить нельзя
Ишора 1 Дар дохили case "/" if / else-и худаш лозим аст: агар b === 0 — паёми хато, вагарна — ҳисоб.
Ишора 2 Бақияи тақсим ба сифр низ муайян нест (NaN мешавад), бинобар ин ҳамин гуна санҷишро ба case "%" низ илова кардан лозим аст.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 9.3 Ҳадди ақал аз се (Copilot off) миёна
Copilot хомӯш аст. Се нархи як нон дар мағозаҳои гуногун: p1, p2, p3. Нархи аз ҳама пастро дар намуди Минимум: 6 бароред. Math.min-ро истифода бурдан мумкин нест — бо шартҳо ҳал кунед. Барномаро санҷед, вақте ки нархи аввал, дуюм, сеюм ҳадди ақал аст ва вақте ки нархҳои яксон ҳастанд.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const p1 = 9 ;
const p2 = 6 ;
const p3 = 7 ;
// if / else if / else ва &&
Натиҷаи интизоршаванда Минимум: 6
Ишора 1 Ҳадди ақал — ин рақаме аст, ки аз ҳар ду дигар бештар нест. Масалан, p1 ҳадди ақал аст, агар p1 <= p2 && p1 <= p3.
Ишора 2 Агар p1 мувофиқ нашавад ва p2 мувофиқ нашавад, пас ҳадди ақал — p3 аст. Ин шохаи else аст. Аломати <= (на <) лозим аст, то ҳангоми нархҳои яксон ҳама чиз кор кунад.
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
ВАЗИФАИ 9.4 Fizz, Buzz ё FizzBuzz (Copilot off) душвор
Copilot хомӯш аст. Классикаи мусоҳибаҳо. Барои адади n бароред: FizzBuzz, агар он ҳам ба 3 ва ҳам ба 5 тақсим шавад; Fizz — агар танҳо ба 3; Buzz — агар танҳо ба 5; вагарна худи адад. Қиматҳои 15, 9, 10, 7-ро санҷед; дар коди ниҳоӣ 15-ро монед. Фикр кунед, санҷишҳоро бо кадом тартиб гузоштан лозим аст, то 15 танҳо «Fizz» нашавад.
Таҳрир кардан мумкин аст · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const n = 15 ;
// if / else if / else
Натиҷаи интизоршаванда FizzBuzz
Ишора 1 Тақсимшавӣ бо бақия санҷида мешавад: n % 3 === 0. «Ҳам ба 3, ҳам ба 5» — ин ду чунин муқоиса тавассути && аст.
Ишора 2 Шарти аз ҳама сахтро (ҳар ду тақсимкунанда) аввал мегузорем, баъд «танҳо 3», баъд «танҳо 5», дар охир else бо console.log(n).
○ Ҳалшуда қайд кардан 💬 Дар бораи ин вазифа пурсидан
★ Вазифаи хонагӣ: се барномаи консолӣ
Се барнома, ҳар кадом дар файли худ. Онҳоро дар консоли браузер (DevTools аз дарси аввал) ё дар ин саҳифа иҷро кардан мумкин аст. Маълумотро бо тағйирёбандаҳо дар аввали файл диҳед. Бе функсияҳо ва давраҳо: танҳо тағйирёбандаҳо, if / else, оператори сегона ва switch.
Барномаи 1. Ҳисобкунак
Рушди кори синфӣ: a, b, operation.
☐ Амалҳои +, -, *, /, %, ** тавассути switch.
☐ Тақсим ва бақия ба сифр — паёми хато ба ҷои натиҷа.
☐ Амали номаълум — паёми хато (default).
☐ Санҷиши навъҳо: агар a ё b рақам набошанд (typeof a !== "number"), Ошибка: нужны числа-ро бароред ва ҳисоб накунед.
☐ Баромад дар намуди 12 * 4 = 48.
Барномаи 2. Муайянкунандаи соли кабиса
Сол бо тағйирёбандаи year дода шудааст. Қоида: сол кабиса аст, агар ба 4 тақсим шавад, вале ба 100 тақсим нашавад, ба истиснои солҳое, ки ба 400 тақсим мешаванд.
Сол Ҷавоби интизоршаванда Чаро 2024 високосный ба 4 тақсим мешавад, ба 100 тақсим намешавад 2023 не високосный ба 4 тақсим намешавад 1900 не високосный ба 100 тақсим мешавад, вале ба 400 не 2000 високосный ба 400 тақсим мешавад 2100 не високосный ба 100 тақсим мешавад, вале ба 400 не
☐ Баромад: 2024 — високосный год ё 2023 — не високосный год.
☐ Шарт бо як ифодаи таркибӣ бо && ва || ва қавсҳо навишта шудааст, ё бо занҷири if / else if — интихоб кунед ва интихобро шарҳ диҳед.
☐ Дар шарҳ дар аввали файл — ҷадвали солҳои санҷидашуда (ҳадди ақал панҷ, ҳама аз ҷадвали боло).
☐ Ин барномаро бо Copilot-и хомӯш нависед. Онро танҳо дар охир, барои санҷидани ҳолатҳои сарҳадӣ фаъол кунед.
Барномаи 3. Табдилдиҳандаи асъор
Қурбҳо дар барнома собит карда шудаанд: 1 USD = 10.5 сомонӣ, 1 RUB = 0.12 сомонӣ. Маблағи amount, асъори аслӣ from ва мақсадӣ to (сатрҳои "TJS", "USD", "RUB") дода шудаанд. Ғоя: аввал маблағро ба сомонӣ гузаронед («махраҷи умумӣ»), баъд аз сомонӣ ба асъори лозимӣ.
Қолаби табдилдиҳанда · Ctrl + Enter ↺ Аз нав ▶ Иҷро кардан
const amount = 100 ;
const from = "USD" ;
const to = "TJS" ;
const USD_RATE = 10.5 ; // 1 доллар чанд сомонӣ меарзад
const RUB_RATE = 0.12 ; // 1 рубл чанд сомонӣ меарзад
let inSomoni;
switch (from) {
case "TJS" :
inSomoni = amount;
break ;
case "USD" :
inSomoni = amount * USD_RATE;
break ;
// дар ин ҷо "RUB" мешавад
default :
console.log ("Неизвестная исходная валюта" );
}
console.log (inSomoni); // → 1050
// баъд: switch (to)-и дуюм натиҷаро аз inSomoni ҳисоб мекунад
Вуруд Баромади интизоршаванда 100 USD → TJS 100 USD = 1050 TJS1050 TJS → RUB 1050 TJS = 8750 RUB1000 RUB → TJS 1000 RUB = 120 TJS500 TJS → USD 500 TJS = 47.62 USD (мудаввар кардан то 2 рақами пас аз нуқта)200 USD → RUB 200 USD = 17500 RUB
☐ Ҳамаи ҷуфтҳои се асъор кор мекунанд, аз ҷумла USD ↔ RUB тавассути сомонӣ.
☐ Агар from === to — маблағро бе ҳисобкунии аз нав бароред.
☐ Асъори номаълум (дар ҳар майдон) ё маблағи манфӣ — паёми хато.
☐ Натиҷа то 2 рақам мудаввар карда мешавад: Math.round(x * 100) / 100.
☐ Бонус: асъори чорумро (масалан, EUR) илова кунед ва нишон диҳед, ки дар код чанд ҷойро тағйир додан лозим омад.
Чӣ супоридан лозим аст
Се файл: calculator.js, leap-year.js, converter.js дар ҷузвдони lesson-03-и репозиторийи GitHub (ё бойгонӣ ба гурӯҳи Telegram).
Дар аввали ҳар файл — шарҳ бо қиматҳои санҷишӣ: кадом маълумоти вурудиро санҷидед ва чӣ шуд.
Файли README.md аз се сатр: дар кадом вазифаҳо Copilot-ро истифода бурдед; он чиро пешниҳод кард; шумо чиро ислоҳ ё рад кардед.
Ҳангоми санҷиш омода бошед, ки ҳар сатрро шарҳ диҳед: муаллим метавонад хоҳиш кунад.
Чӣ тавр баҳо медиҳем (0–10)
Меъёр Баллҳо Ҳисобкунак: ҳамаи амалҳо кор мекунанд, ҳимоя аз тақсим ба сифр ва амали номаълум 3 Ҳисобкунак: санҷиши навъҳо ва баромади саранҷом 1 Соли кабиса: ҷавобҳои дуруст барои ҳар панҷ соли ҷадвал 2 Табдилдиҳанда: ҳамаи ҷуфтҳои асъор ва мудаввар кардани дуруст 2 Табдилдиҳанда: ҳимоя аз маълумоти нодуруст 1 Коди тоза (===, фосилаҳо, номҳои фаҳмо) ва тестҳо дар шарҳҳо 1
Ишора оид ба вақт
2 соат ҷудо кунед. Аз соли кабиса оғоз кунед: он кӯтоҳ аст, вале аз ҳама «мантиқӣ». Агар монд шудед — аввал 15 дақиқа худатон, баъд савол дар чати гурӯҳ (бо код ва он чи интизор будед ва он чи гирифтед), баъд ЗС аз рӯи формулаи промпт.
✓ Варақаи хулосаи дарс
Муқоиса: > < >= <= true / false бозпас мегардонанд. Як = — таъинот, на муқоиса. Сатрҳо аз рӯи ҷадвали Unicode муқоиса мешаванд: «Z» аз «a» хурдтар аст, "10" < "9" бошад.
=== ва !== — муқоисаи қатъӣ (қимат ва навъ). == навъҳоро ба ҳам меорад ва ба ғайричашмдошт меоварад (0 == "", null == undefined). Дар код танҳо === менависем; NaN ба ҳеҷ кас баробар нест.
Falsy: false, 0, "", null, undefined, NaN. Боқӣ ҳама — truthy, аз ҷумла "0", " ", "false". Сифр — қимати воқеӣ аст: !== undefined-ро санҷед, вақте ки сифр мумкин аст.
Мантиқ: && — ва, || — ё, ! — не. Афзалият: !, баъд &&, баъд ||; шубҳа дошта бошед — қавс гузоред.
Қатъи кӯтоҳ: || аввалин ростро бозпас мегардонад, && — аввалин дурӯғро (ё қимати охирини занҷирро). nick || "Гость" — қимати пешфарз. ?? танҳо null ва undefined-ро иваз мекунад: 0 ?? 50 0 медиҳад.
if / else if / else: шартҳо аз боло ба поён то аввалин рост санҷида мешаванд, аз сахт ба нарм. Ҳамеша бо қавсҳои фигурӣ.
Оператори сегона: шарт ? агар_ҳа : агар_не — барои интихоби яке аз ду қимат . Занҷирҳои аз ду сатҳ ва бештарро тавассути if навиштан беҳтар аст.
switch: муқоисаи қатъӣ бо case, break ҳатмӣ (вагарна «афтидан» ба поён), default — барои ҳама чизи дигар. case-ҳои пай дар пай бе break — як амал барои якчанд қимат.
Copilot: Tab — қабул кардан, Esc — рад кардан, Ctrl/Cmd + I — inline chat. Ба корҳои мунтазам ва шарҳ кумак мекунад, агар ишораҳоро бе фикр қабул кунед, ба омӯзиш халал мерасонад. Аввал худатон бо Copilot-и хомӯш, баъд он ҳамчун тақризнависанда. Сарҳадҳо (> ва >=), сифр ва break-ҳои фаромӯшшударо санҷед.