Повернувшись до тями, Етік виявила три неприємні сюрпризи.
Перший: тюремна камера.
Другий: цілковита втрата пам'яті.
Третій: таємничий незнайомець застряг,
намагаючись проштовхнутись через ґрати на віконечку в її камеру.
Його звати Гедж, і він прийшов, аби допомогти Етік врятувати світ.
Та перш за все, їм необхідно втекти з в'язниці.
Гедж перетворює його руку на ключик й коротко описує задачу.
Кожен замок у в'язниці працює в однаковий незвичайний спосіб.
Усередині замка є червоний диск, що може повертатись і приймати 100 позицій
від 1 до 100.
Ключ до певної камери повертає диск так, що той стає у правильну позицію,
тоді диск загорається зеленим кольором і відчиняє двері.
Зрозуміло, вкрасти ключі від охоронців - непосильна задача.
Але у Геджа є краща ідея.
Гедж може виконувати команди Етік.
Якщо Етік скаже йому пройти 5 кроків уперед,
повернути направо, а потім пройти ще 5 кроків,
то Гедж зробить саме це.
Однак йому необхідні точні інструкції.
Якщо Етік скаже: "Підбери ключа" або "Спробуй кожну комбінацію",
то команда буде незрозумілою, але "поверни диск на 5 позицій вперед" спрацює.
Як тільки вони вийдуть із камери, у Геджа й Етік буде лише кілька хвилин,
щоб відчинити ще й зовнішні двері в'язниці до того, як охоронці їх спіймають.
Тож, які інструкції дозволять Геджу відкрити будь-які двері?
Постав, будь ласка, відео на паузу, щоб розібратися.
Перед тим, як ми пояснимо рішення, ось тобі підказка.
Ключова концепція програмування, яка допоможе відкрити двері, зветься циклом.
Це може бути одна чи кілька інструкцій, які Гедж повторить
задану кількість разів.
Наприклад, "стрибни вгору та вниз 100 разів".
Або інструкція, яку Гедж повторюватиме, допоки не виконається задана умова,
така як "продовжуй стрибати вгору-вниз до сьомої години".
Будь ласка, зараз постав відео на паузу, щоб розібратись.
По-перше, зрозуміло, що тобі треба знайти спосіб, за допомогою якого
Гедж зможе перебирати усі комбінації, допоки одна з них не спрацює.
Трошки більше зусиль потрібно, щоб зрозуміти, як же ти можеш це зробити.
Рішення №1: сказати Геджу спробувати усі комбінації по черзі.
Спробуй кобінацію 1 і перевір колір.
Якщо диск зелений, відкрий двері; якщо ні, спробуй комбінацію 2.
Якщо вона не спрацює, спробуй 3. І так аж до 100.
Однак розписувати дії покроково в такому обсязі дуже нудно.
Навіщо писати більше, ніж 100 рядків коду,
якщо можна досягти потрібного результату за допомогою 3 рядків?
Саме тут з'являється цикл.
Існує декілька способів, якими можна скористатись.
У замка є 100 позицій,
тож Етік може сказати "Перевір колір диска, а потім прокрути його один раз,
і повтори цю команду 100 разів.
Запам'ятай, коли диск зелений, і повернись до того номера у кінці".
Подібний цикл, в якому ти зазначаєш кількість повторень,
називається цикл 'for'.
Але ще ефективніше було б
сказати Геджу прокручувати диск на одну позицію, доки він не стане зеленим,
і коли це станеться, нехай він зупиниться і відкриє двері.
Таким чином, якщо двері відчиняться на 1,
Геджу не доведеться перевіряти інші номери.
Це цикл "until".
Він передбачає виконання дії доти, доки умова не буде виконаною.
Схожий підхід - це крутити диск, поки він червоний,
а потім зупинитись.
Цей цикл називається while (поки).
Повертаємось до пригод!
Гедж пробирається через комбінації цифр, і камера відчиняється на 41.
Етік та Гедж чекають зручного моменту при ротації вартових
і тікають.
Згодом, Етік постає перед вибором: заховатись усередині таємничого кристалу
чи спробувати зламати зовнішні двері й утекти.
Етік вирішує тікати.
Другі двері займуть більше часу, бо Геджу потрібно прокрутити диск до 93.
Але йому вдається відчинити двері,
і Гедж отримує можливість пояснити, навіщо він врятував Етік.
Світ поринув у хаос:
влада тепер у руках роботів, і тільки Етік може все виправити.
Щоб це зробити,
їм знадобиться зібрати три могутніх артефакти,
які використовують у дуже поганих цілях в усіх куточках планети.
Тільки тоді Етік зможе повернутись до світової машини - кристала-гіганта -
і виправити становище.
Етік вдалося втекти з в'язниці...
але у що вона вплуталась?