WEBVTT 00:00:01.049 --> 00:00:03.326 Ось де ми зупинились з нашою грою "підкидання монети" 00:00:03.326 --> 00:00:06.596 Ми розпочинали з генерування випадкового числа між 0 та 1 00:00:06.596 --> 00:00:08.876 і тоді заокруглюємо це число до найближчого цілого. 00:00:08.877 --> 00:00:12.213 Отже. це дало нам число, що було 0 або 1. 00:00:12.214 --> 00:00:15.908 І тоді ми проілюстрували нашу надреалістичну монету цим еліпсом, 00:00:15.909 --> 00:00:18.908 що був фіолетовим або жовтим, в залежності яким було число. 00:00:18.909 --> 00:00:20.567 І ось код в якому ми зробили це. 00:00:20.567 --> 00:00:24.258 Отже, ми ввели "If integer" рівний 0 Додали код заливки, для фіолетовго кольору 00:00:24.258 --> 00:00:25.738 в іншому випадку встановили жовтий. 00:00:25.738 --> 00:00:27.916 і тоді ми малюємо монету ось тут. 00:00:27.917 --> 00:00:30.924 Але тепер я вирішила, що насправді моя монета має 3 сторони. 00:00:30.925 --> 00:00:32.454 Саме так, тристороння монета. 00:00:32.455 --> 00:00:34.189 Отже, додадмо третю сторону. 00:00:34.190 --> 00:00:37.108 Я планую почати з того щоб дадати число між 0 та 2, 00:00:37.109 --> 00:00:41.532 тому, після його округлення я отримаю ціле число, що є 0, 1 або 2. 00:00:41.533 --> 00:00:45.608 Але якщо поглянемо на наш код візуалізації то ми обчислюємо тільки 2 випадки тут. 00:00:45.609 --> 00:00:48.814 Отже, "if integer" рівне 0, то фіолетовий в іншому випадку, жовтий. 00:00:48.815 --> 00:00:51.884 Але зараз "інший випадок" може означати 1 або 2. 00:00:51.885 --> 00:00:54.930 Але зачекайте, а що якщо я зроблю те саме, що ми робили раніше. 00:00:54.931 --> 00:00:56.674 але всередині цього "else" блоку? 00:00:56.675 --> 00:01:00.748 Отже, я просто зараз введу: "if integer" рівне 1 00:01:00.749 --> 00:01:04.933 тоді встановити жовту заливку як і було раніше. 00:01:05.668 --> 00:01:09.877 "else" ми встановимо колір нехай буде червоний. 00:01:09.853 --> 00:01:11.043 Червоний досить хороший. 00:01:11.043 --> 00:01:12.318 Отже, це означає, що 00:01:12.318 --> 00:01:15.477 "if integer" рівне 0 тоді встановимо фіолетовий колір 00:01:15.478 --> 00:01:18.594 в іншому випадку якщо 1 то жовтий 00:01:18.594 --> 00:01:20.330 в іншому випадку, що означає 00:01:20.331 --> 00:01:24.610 якщо число не 0, і не 1. тоді це повинно бути 2, ми зробимо червоний колір. 00:01:24.626 --> 00:01:28.585 Я нажму перезапустити декілька разів. Це працює! 00:01:28.566 --> 00:01:30.865 Отже, якщо б я хотіла додати більше сторін до моєї монети 00:01:30.866 --> 00:01:35.676 я можу повернутись сюди, і ввести від 0 до 3, а тоді далі до блоку "else" 00:01:35.677 --> 00:01:37.986 і додати більше "if else" і так далі аж 00:01:37.987 --> 00:01:40.157 до того поки матиму незліченну кількість таких блоків. 00:01:40.158 --> 00:01:44.703 І тільки тоді я зрозумію, що цей код огидний! Тобто неохайний! 00:01:44.704 --> 00:01:48.760 Код повинен читатись легко і бути красивим а не потворним на скільки це можливо. 00:01:48.761 --> 00:01:50.729 Отже, ось, що ми збираємось зробити: 00:01:50.730 --> 00:01:52.904 Кожний раз коли у вас є тільки один оператор "if" 00:01:52.905 --> 00:01:55.674 або "if/else" оператор всередині "else" блоку, 00:01:55.675 --> 00:01:58.533 це означатиме, що ми не збираємось щось робити за межами цих блоків 00:01:58.533 --> 00:02:00.196 ми не встановимо колір для обведення, 00:02:00.196 --> 00:02:04.765 ми не маємо більше "if" операторів зовсім нічого. 00:02:04.766 --> 00:02:08.443 Все, що ми маємо це один "if" оператор і можливо він йде разом з "else" блоком. 00:02:08.443 --> 00:02:12.755 Потім ми можемо поєднати цю умову з попреденім рядком 00:02:12.756 --> 00:02:17.072 і ввести, "else if integer" рівний 1 то задати заливку жовтим кольором. 00:02:17.073 --> 00:02:19.948 І тоді цей останній "else" блок ніде не приставлений, 00:02:19.949 --> 00:02:22.318 і функціонує сам по собі в самому кінці. 00:02:22.319 --> 00:02:24.586 Чудово! Отже, те що тепер це означає, це 00:02:24.587 --> 00:02:27.326 якщо "integer" рівний 0 задати фіолетовий колір, 00:02:27.327 --> 00:02:30.234 в іншому випадку якщо "integer" рівний 1 задати жовтий 00:02:30.235 --> 00:02:34.084 в ще іншому випадку, якщо значення цих двох не істинні, тоді задати червоний. 00:02:34.084 --> 00:02:37.597 я нажимаю перезапустити декілька разів, і ви можете бачити, що вона все ще працює. 00:02:37.597 --> 00:02:41.823 Блискуче! І класно те, що ми можемо мати стільки "else-if" скільки захочемо 00:02:41.824 --> 00:02:44.702 що дозволяє мені дуже просто додати більше сторін до моєї монети. 00:02:44.703 --> 00:02:48.008 Отож, давайте зробимо це зараз: я зроблю число між 0 та 3, 00:02:48.000 --> 00:02:50.210 і тоді додамо ще один "else" блок, 00:02:50.210 --> 00:02:55.865 в якому введемо: "else if (integer === 2)" 00:02:55.865 --> 00:02:59.258 і задамо колір, червоний як і раніше, отже можемо його таким і залишити. 00:02:59.258 --> 00:03:03.287 І тоді цей останній блок коли "integer" буде рівним 3. 00:03:03.288 --> 00:03:07.529 І зробимо цю сторону синьою. Чудово! 00:03:08.169 --> 00:03:09.056 Окей. 00:03:09.056 --> 00:03:13.115 Отже. для того щоб зробити це, вам завжди потрібно починати з оператора "if" 00:03:13.116 --> 00:03:16.360 і тоді ви можете мати стільки "else-if" скільки захочете 00:03:16.360 --> 00:03:18.408 і тоді цей останній рядок коду необов'язковий 00:03:18.408 --> 00:03:19.568 Ми можемо зробити це без нього, 00:03:19.568 --> 00:03:22.249 і тоді це є можливим, що всі ці будуть не істинними 00:03:22.250 --> 00:03:24.161 то жоден з цих блоків не буде виконуватись 00:03:24.162 --> 00:03:27.203 Але до тих пір поки ми маємо це там, 00:03:27.204 --> 00:03:30.483 тоді один з цих блоків точно запуститься. 00:03:30.484 --> 00:03:34.016 Класно? Тепер це той варіант в якому не має великого значення 00:03:34.017 --> 00:03:37.016 якщо ви введете "if else-if else-if else," 00:03:37.017 --> 00:03:41.579 або просто використаємо звичайний старий оператор "if" як ми це робили спочатку. 00:03:41.579 --> 00:03:45.808 Отже, якщо "integer" рівний 3. 00:03:45.808 --> 00:03:47.727 І це через те, що це неможливо 00:03:47.728 --> 00:03:51.197 щоб "integer" було рівне 0, а тоді також 1, 2, або 3. 00:03:51.198 --> 00:03:54.222 Чудово. Таким чином, ці умови взаємновиключні. 00:03:54.223 --> 00:03:56.608 Тільки один з цих блоків буде запущений у будь якому випадку 00:03:56.609 --> 00:03:58.277 Але це не завжди так. 00:03:58.278 --> 00:04:01.635 А, якщо ми постараємось зробити гру як ця без округлення до цілого числа? 00:04:01.636 --> 00:04:04.484 Тому, я планую позбутись цієї частини де ми округлюємо число, 00:04:04.485 --> 00:04:06.019 та іншу частину, де ми виводимо це на екран. 00:04:07.030 --> 00:04:09.014 І зробімо декілька нових правил до моєї гри. 00:04:09.014 --> 00:04:12.636 Отже, я все ще генерую число між 0 та 3, 00:04:13.247 --> 00:04:15.315 додам більше міток на нашу числову пряму. 00:04:16.545 --> 00:04:22.778 Отже, введемо, що якщо число опиняється між 0 та 1, то зробимо її фіолетовим. 00:04:23.128 --> 00:04:26.642 Ой, вона не виглядає як "ф" взагалі. Ви зрозуміли суть. Гаразд. 00:04:26.643 --> 00:04:30.503 І тоді якщо воно між 1 та 2, ми зробимо її жовтою. 00:04:31.104 --> 00:04:35.063 І тоді якщо воно між 2 та 3, ми зробимо її червоною. 00:04:35.063 --> 00:04:39.290 Чудово. Отже, поглянемо, що ми можемо зробити з "if" та "else-if". 00:04:39.291 --> 00:04:43.881 Тому, ми можемо почати вводити якщо число менше за 1, 00:04:43.882 --> 00:04:46.166 отже, якщо воно менше за 1, 00:04:46.166 --> 00:04:50.116 і я знаю, що воно між 0 та 3, то число повинне бути в цьому діапазоні, 00:04:50.726 --> 00:04:53.126 тоді я задам фіолетову заливку. 00:04:55.676 --> 00:05:00.182 В іншому випадку, якщо число менше за 2. 00:05:00.704 --> 00:05:05.324 Я можу задати жовтий колір заливки, 255 00:05:06.132 --> 00:05:12.183 Та в іншому випадку задам заливку червоним. 00:05:12.883 --> 00:05:16.255 Чудово! І все працює так як задумано. 00:05:16.256 --> 00:05:19.267 Отже, якщо число було меншим за 1, тоді знову, у цьому діапазоні. 00:05:19.267 --> 00:05:23.602 В іншому випадку, воно більше або рівне 1 але також менше 2. 00:05:23.603 --> 00:05:26.731 отже, число знаходиться у цьому діапазоні, тому ми задамо жовтий колір 00:05:26.732 --> 00:05:29.859 В іншому випадку, воно повинно бути більшим чи рівним 2. 00:05:29.860 --> 00:05:31.750 Тоді число попадє в цей діапазон. 00:05:31.750 --> 00:05:32.557 А ось випадок 00:05:32.557 --> 00:05:36.167 в якому ми не можемо просто сказати, якщо число менше 2, 00:05:36.167 --> 00:05:39.430 і якщо число менше 3 00:05:39.430 --> 00:05:42.642 тому, що якщо число менше за 1, то воно точно менше за два 00:05:42.642 --> 00:05:44.246 і воно точно буде меншим за 3. 00:05:44.246 --> 00:05:46.701 Отже наша монета в кінцевому підсумку буде червоною. 00:05:46.701 --> 00:05:49.981 І ось чому в даному випадку, це дійсно корисно використати "else-if"