You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/sr/2-js-basics/3-making-decisions/README.md

21 KiB

Основе JavaScript-а: Доношење одлука

Основе JavaScript-а - Доношење одлука

Скетч од Tomomi Imura

Да ли сте се икада запитали како апликације доносе паметне одлуке? Као, на пример, како навигациони систем бира најбржи пут или како термостат одлучује када да укључи грејање? Ово је основни концепт доношења одлука у програмирању.

Као што је Аналитички мотор Чарлса Бебиџа био дизајниран да прати различите секвенце операција на основу услова, савремени JavaScript програми морају да праве изборе на основу различитих околности. Ова способност гранања и доношења одлука је оно што трансформише статички код у одзивне, интелигентне апликације.

У овом лекцији, научићете како да имплементирате условну логику у својим програмима. Истражићемо условне изразе, операторе поређења и логичке изразе који омогућавају вашем коду да процени ситуације и одговара на одговарајући начин.

Квиз пре предавања

Квиз пре предавања

Способност доношења одлука и контролисања тока програма је основни аспект програмирања. Овај део покрива како да контролишете пут извршења ваших JavaScript програма користећи Булове вредности и условну логику.

Доношење одлука

🎥 Кликните на слику изнад за видео о доношењу одлука.

Ову лекцију можете проћи на Microsoft Learn!

Кратак преглед Булових вредности

Пре него што истражимо доношење одлука, хајде да се подсетимо Булових вредности из претходне лекције. Назване по математичару Џорџу Булу, ове вредности представљају бинарна стања или true или false. Нема двосмислености, нема средине.

Ове бинарне вредности чине основу све рачунарске логике. Свака одлука коју ваш програм донесе на крају се своди на Булову процену.

Креирање Булових променљивих је једноставно:

let myTrueBool = true;
let myFalseBool = false;

Ово креира две променљиве са експлицитним Буловим вредностима.

Булове вредности су назване по енглеском математичару, филозофу и логичару Џорџу Булу (18151864).

Оператори поређења и Булове вредности

У пракси, ретко ћете ручно постављати Булове вредности. Уместо тога, генерисаћете их процењивањем услова: "Да ли је овај број већи од оног?" или "Да ли су ове вредности једнаке?"

Оператори поређења омогућавају ове процене. Они упоређују вредности и враћају Булове резултате на основу односа између операнда.

Симбол Опис Пример
< Мање од: Упоређује две вредности и враћа true ако је вредност са леве стране мања од оне са десне 5 < 6 // true
<= Мање или једнако: Упоређује две вредности и враћа true ако је вредност са леве стране мања или једнака оној са десне 5 <= 6 // true
> Веће од: Упоређује две вредности и враћа true ако је вредност са леве стране већа од оне са десне 5 > 6 // false
>= Веће или једнако: Упоређује две вредности и враћа true ако је вредност са леве стране већа или једнака оној са десне 5 >= 6 // false
=== Строга једнакост: Упоређује две вредности и враћа true ако су вредности са десне и леве стране једнаке И истог типа података. 5 === 6 // false
!== Неједнакост: Упоређује две вредности и враћа супротну Булову вредност од оне коју би вратио оператор строге једнакости 5 !== 6 // true

Проверите своје знање тако што ћете написати нека поређења у конзоли вашег претраживача. Да ли вас неки добијени подаци изненађују?

If израз

if израз је као постављање питања у вашем коду. "Ако је овај услов тачан, онда уради ову ствар." Вероватно је то најважнији алат који ћете користити за доношење одлука у JavaScript-у.

Ево како функционише:

if (condition) {
  // Condition is true. Code in this block will run.
}

Услов иде унутар заграда, и ако је true, JavaScript извршава код унутар витичастих заграда. Ако је false, JavaScript једноставно прескаче цео блок.

Често ћете користити операторе поређења за креирање ових услова. Хајде да видимо практичан пример:

let currentMoney = 1000;
let laptopPrice = 800;

if (currentMoney >= laptopPrice) {
  // Condition is true. Code in this block will run.
  console.log("Getting a new laptop!");
}

Пошто 1000 >= 800 процењује на true, код унутар блока се извршава, приказујући "Купујем нови лаптоп!" у конзоли.

If..Else израз

Али шта ако желите да ваш програм уради нешто друго када услов није испуњен? Ту долази else то је као да имате резервни план.

else израз вам даје начин да кажете "ако овај услов није тачан, уради нешто друго."

let currentMoney = 500;
let laptopPrice = 800;

if (currentMoney >= laptopPrice) {
  // Condition is true. Code in this block will run.
  console.log("Getting a new laptop!");
} else {
  // Condition is false. Code in this block will run.
  console.log("Can't afford a new laptop, yet!");
}

Сада, пошто је 500 >= 800 false, JavaScript прескаче први блок и уместо тога извршава else блок. У конзоли ћете видети "Још увек не могу да приуштим нови лаптоп!"

Тестирајте своје разумевање овог кода и следећег кода тако што ћете га покренути у конзоли претраживача. Промените вредности променљивих currentMoney и laptopPrice да бисте променили враћени console.log().

Switch израз

Понекад је потребно упоредити једну вредност са више опција. Иако бисте могли да повежете неколико if..else израза, овај приступ постаје незграпан. switch израз пружа чистију структуру за руковање више различитих вредности.

Концепт подсећа на механичке системе прекидача који су се користили у раним телефонским централама једна улазна вредност одређује који специфичан пут извршење следи.

switch (expression) {
  case x:
    // code block
    break;
  case y:
    // code block
    break;
  default:
    // code block
}

Ево како је структурисан:

  • JavaScript процењује израз једном
  • Прегледа сваки case да пронађе подударност
  • Када пронађе подударност, извршава тај блок кода
  • break каже JavaScript-у да престане и изађе из switch-а
  • Ако ниједан случај не одговара, извршава default блок (ако га имате)
// Program using switch statement for day of week
let dayNumber = 2;
let dayName;

switch (dayNumber) {
  case 1:
    dayName = "Monday";
    break;
  case 2:
    dayName = "Tuesday";
    break;
  case 3:
    dayName = "Wednesday";
    break;
  default:
    dayName = "Unknown day";
    break;
}
console.log(`Today is ${dayName}`);

У овом примеру, JavaScript види да је dayNumber 2, проналази одговарајући case 2, поставља dayName на "Уторак", и затим излази из switch-а. Резултат? "Данас је уторак" се приказује у конзоли.

Тестирајте своје разумевање овог кода и следећег кода тако што ћете га покренути у конзоли претраживача. Промените вредности променљиве a да бисте променили враћени console.log().

Логички оператори и Булове вредности

Комплексне одлуке често захтевају процену више услова истовремено. Као што Булова алгебра омогућава математичарима да комбинују логичке изразе, програмирање пружа логичке операторе за повезивање више Булових услова.

Ови оператори омогућавају сложену условну логику комбиновањем једноставних процена true/false.

Симбол Опис Пример
&& Логичко И: Упоређује два Булова израза. Враћа true само ако су обе стране тачне (5 > 3) && (5 < 10) // Обе стране су тачне. Враћа true
|| Логичко ИЛИ: Упоређује два Булова израза. Враћа true ако је бар једна страна тачна (5 > 10) || (5 < 10) // Једна страна је нетачна, друга је тачна. Враћа true
! Логичко НЕ: Враћа супротну вредност Буловог израза !(5 > 10) // 5 није веће од 10, па "!" чини да буде true

Ови оператори вам омогућавају да комбинујете услове на користан начин:

  • И (&&) значи да оба услова морају бити тачна
  • ИЛИ (||) значи да бар један услов мора бити тачан
  • НЕ (!) обрће true у false (и обрнуто)

Услови и одлуке са логичким операторима

Хајде да видимо ове логичке операторе у акцији са реалнијим примером:

let currentMoney = 600;
let laptopPrice = 800;
let laptopDiscountPrice = laptopPrice - (laptopPrice * 0.2); // Laptop price at 20 percent off

if (currentMoney >= laptopPrice || currentMoney >= laptopDiscountPrice) {
  // Condition is true. Code in this block will run.
  console.log("Getting a new laptop!");
} else {
  // Condition is false. Code in this block will run.
  console.log("Can't afford a new laptop, yet!");
}

У овом примеру: израчунавамо цену са попустом од 20% (640), затим процењујемо да ли наша расположива средства покривају или пуну цену ИЛИ цену са попустом. Пошто 600 испуњава праг цене са попустом од 640, услов се процењује као тачан.

Оператор негације

Понекад је лакше размишљати о томе када нешто НИЈЕ тачно. Као, уместо да питате "Да ли је корисник пријављен?", можда желите да питате "Да ли корисник НИЈЕ пријављен?" Узвичник (!) оператор обрће логику за вас.

if (!condition) {
  // runs if condition is false
} else {
  // runs if condition is true
}

Оператор ! је као да кажете "супротно од..." ако је нешто true, ! га чини false, и обрнуто.

Тернарни изрази

За једноставне условне доделе, JavaScript пружа тернарни оператор. Овај концизан синтакс омогућава вам да напишете условни израз у једном реду, корисно када треба да доделите једну од две вредности на основу услова.

let variable = condition ? returnThisIfTrue : returnThisIfFalse;

Чита се као питање: "Да ли је овај услов тачан? Ако јесте, користи ову вредност. Ако није, користи ону вредност."

Испод је конкретнији пример:

let firstNumber = 20;
let secondNumber = 10;
let biggestNumber = firstNumber > secondNumber ? firstNumber : secondNumber;

Одвојите минут да прочитате овај код неколико пута. Да ли разумете како ови оператори функционишу?

Ево шта овај ред каже: "Да ли је firstNumber већи од secondNumber? Ако јесте, стави firstNumber у biggestNumber. Ако није, стави secondNumber у biggestNumber."

Тернарни оператор је само краћи начин да напишете овај традиционални if..else израз:

let biggestNumber;
if (firstNumber > secondNumber) {
  biggestNumber = firstNumber;
} else {
  biggestNumber = secondNumber;
}

Оба приступа дају идентичне резултате. Тернарни оператор нуди концизност, док традиционална структура if-else може бити читљивија за сложене услове.


🚀 Изазов

Направите програм који је прво написан са логичким операторима, а затим га препишите користећи тернарни израз. Која синтакса вам више одговара?


Изазов GitHub Copilot Agent 🚀

Користите режим Agent да бисте завршили следећи изазов:

Опис: Направите свеобухватан калкулатор оцена који демонстрира више концепата доношења одлука из ове лекције, укључујући if-else изразе, switch изразе, логичке операторе и тернарне изразе.

Задатак: Напишите JavaScript програм који узима нумеричку оцену ученика (0-100) и одређује њихову словну оцену користећи следеће критеријуме:

  • A: 90-100
  • B: 80-89
  • C: 70-79
  • D: 60-69
  • F: Испод 60

Захтеви:

  1. Користите if-else израз за одређивање словне оцене
  2. Користите логичке операторе да проверите да ли је ученик положио (оцена >= 60) И има похвале (оцена >= 90)
  3. Користите switch израз да пружите специфичне повратне информације за сваку словну оцену
  4. Користите тернарни оператор да одредите да ли је ученик квалификован за следећи курс (оцена >= 70)
  5. Укључите проверу уноса како бисте осигурали да је оцена између 0 и 100

Тестирајте свој програм са различитим оценама, укључујући граничне случајеве као што су 59, 60, 89, 90 и неважећи уноси.

Сазнајте више о режиму агента овде.

Квиз после предавања

Квиз после предавања

Преглед и самостално учење

Прочитајте више о многим операторима доступним кориснику на MDN.

Прегледајте диван преглед оператора од Josha Comeau-а!

Задатак

Оператори


Одрицање од одговорности:
Овај документ је преведен помоћу услуге за превођење вештачке интелигенције Co-op Translator. Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматизовани преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода.