
Цикл while (програмування)

Перейдіть на інший план, щоб отримати більше контенту
Правда чи неправда? Якщо ви хочете повторити код, ви можете використовувати цикл.
Лена написала програму для свого робота щоб вона могла подарувати Леону та Марії їхній улюблений шоколад. І це добре робить. Леон запускає робота. Воно підбирає шматочок шоколаду, дивиться на це і бачить, що це молочний шоколад і перевіряє, чи є в ньому горіхи. Ні. Без горіхів. Тому Марія отримує шматочок шоколаду. Леон не отримав жодного шоколаду. Отже, він перезапускає програму. Робот бере в руки новий шматочок шоколаду. Цього разу це темний шоколад. Робот дає той шоколад Леону. «Мені не турбує перезапуск програми». "Ні. Якщо нам доведеться перезапустити робота, ми могли б так само легко взяти шоколадки самі». Марія та Леон не хочуть раз у раз перезапускати програму. Як вони можуть уникнути цього? Марія хоче покращити програму Олени. Отже, спочатку їй потрібно подивитися, як написаний псевдокод. Інструкції такі: візьміть шматочок шоколаду і віддай Марії чи Леону або викинути шоколад. Інструкції виконуються лише один раз, але Марія хоче, щоб програма починалася спочатку і йти в циклі. Її вимога: поки в коробці є шоколадки, програму слід повторити: повторити. Вимога Марії — умова в циклі. Коли умова істинна, інструкції повторюються. Коли умова помилкова, програма продовжується в коді. Це цикл "while". Марія пише, що програма має поставити запитання користувачеві: Скільки цукерок у коробці? Відповідь зазначається у змінній під назвою шоколадні цукерки. Вимога «поки в коробці є шоколадки» є те саме, що і змінна "шоколадні цукерки більше 0". Якщо вказівки в циклі виконуються, шматочок шоколаду буде видалено. Потім потрібно ввести нове значення для змінної chocolates. Отже, Марія кладе в ряд внизу петлю. Шоколадних цукерок дорівнює шоколаду мінус 1. Тепер трохи важко побачити, які рядки належать до циклу і призначені для повторення. Як це може бути зрозумілішим у коді? Ну, Марія робить відступ у рядках так. Тепер Марія збирається протестувати програму. Вона починає... ...і входи є 10 шоколадок. Потім програма перевіряє умову в циклі while. Змінна шоколадка дорівнює 10. Це більше 0. Умова вірна. Якщо умова істинна, інструкції виконуються в циклі. Робот бере в руки шоколадку. Це молочний шоколад. Отже, перша умова циклу істинна. Наступна умова: чи є горіхи? Ніяких горіхів. Тоді вказівки викидати шоколад не будуть. Замість цього програма переходить до: «Інакше: подаруй Марії шоколад». Тепер кількість шматочків шоколаду менше, ніж раніше. І змінна chocolates отримує значення 10 мінус 1, тобто 9. Програма виконала всі інструкції в циклі і повертається до початку циклу. Чи умова все ще вірна? Так, цукерок 9. Він більше 0. Інструкції в циклі виконуються знову. Робот бере новий шоколад. А цукерок зменшується на 1 до 8. Програма знову перевіряє умову. 8 більше 0 і умова вірна а потім робот продовжує. Він повторює цикл доки умова істинна. Але коли коробка порожня, тоді кількість шоколадних цукерок дорівнює 0. Що потім? 0 не більше 0. Отже, умова хибна і робот не виконує інструкції в циклі. Програма триває, але рядків після циклу немає. Програма закінчується. За допомогою нової петлі, Леон і Марія можуть отримати від робота багато шоколаду без необхідності перезапускати програму. Це добре! Так, Леон і Марія?