Вправа – створення циклів ітерації
- 10 хв.
На поверхні і do-while інструкції є while ітераційним оператором, який дозволяє ітерувати через блок коду і тим самим змінити потік виконання коду. Однак, як тільки ми розглянемо, як кожен працює, ми можемо краще визначити нюанси кожного ітераційного положення і коли їх використовувати.
Що таке інструкція do-while?
Інструкція do-while виконує оператор або блок інструкцій, а вказаний логічний вираз повертає значення true. Оскільки цей вираз обчислюється після кожного виконання циклу, цикл виконання виконується один або кілька разів.
do
{
// This code executes at least one time
} while (true);
Потік виконання починається всередині фігурної дужки. Код виконується принаймні один раз, а потім обчислюється логічний вираз поруч із while ключовим словом. Якщо повертається trueлогічний вираз , блок коду виконується знову.
За допомогою логічного виразу з жорстким кодуванням trueми створили безкінечний цикл – цикл, який ніколи не закінчиться, принаймні, не так, як написано зараз. Нам потрібен спосіб вийти з циклу всередині блоку коду. Ми трохи обговоримо умови виходу do-while .
Гаразд, тепер давайте підготуємо наше середовище кодування та почнемо нашу експертизу зразків коду, які реалізують do-while твердження.
Підготовка середовища кодування
Цей модуль містить практичні дії, які допоможуть вам побудувати та запустити демонстраційний код. Ми рекомендуємо вам виконати ці дії, використовуючи Visual Studio Code як середовище розробки. Використання коду Visual Studio для цих дій допоможе вам стати більш зручним написанням і виконанням коду в середовищі розробників, яке використовують професіонали по всьому світу.
Відкрийте Код Visual Studio.
Щоб відкрити код Visual Studio, можна скористатися меню "Пуск" Windows (або еквівалентним ресурсом для іншої ОС).
У меню Код Visual Studio Файл виберіть Відкрити папку.
У діалоговому вікні Відкрити папку перейдіть до папки "Робочий стіл Windows".
Якщо у вас є інше розташування папки, де зберігаються проекти коду, натомість можна використовувати це розташування папки. Для цього навчання важливо мати розташування, яке легко знайти та запам'ятати.
У діалоговому вікні Відкрити папку виберіть Вибрати папку.
Якщо з'явиться діалогове вікно безпеки з запитанням, чи довіряєте ви авторам, виберіть Так.
У меню коду Visual Studio Code виберіть Новий термінал.
Зверніть увагу, що в командному рядку на панелі терміналів відображається шлях до папки для поточної папки. Приклад.
C:\Users\someuser\Desktop>Примітка
Якщо ви працюєте на власному ПК, а не в ізольованому середовищі або в розміщеному середовищі, а завершили інші модулі Microsoft Learn у цій серії C# , можливо, ви вже створили папку проекту для зразків коду. У такому разі можна пропустити наступний крок, який використовується для створення консолі в папці TestProject.
У командному рядку термінала, щоб створити нову програму консолі в указаній папці, введіть такий запит:
dotnet new console -o ./CsharpProjects/TestProjectЦя команда .NET CLI використовує шаблон програми .NET для створення нового проекту програми консолі C# у вказаному розташуванні папки. Ця команда створює папки CsharpProjects і TestProject і використовує TestProject як ім'я
.csprojфайлу.Якщо відображається повідомлення про те, що файли вже існують, виконайте наступні кроки. Ви повторно використовуватимете наявні файли проекту.
У поданні EXPLORER розгорніть папку CsharpProjects .
Має відобразитися папка TestProject і два файли, файл програми C# з іменем Program.cs і файл проекту C# з іменем TestProject.csproj.
У меню Код Visual Studio Файл виберіть Відкрити папку.
У діалоговому вікні Відкрити папку виберіть папку CsharpProjects , а потім натисніть кнопку Вибрати папку.
У поданні EXPLORER розгорніть папку TestProject і виберіть Program.cs.
Видалення наявних рядків коду.
Ви використовуватимете цей проект консолі C# для створення, створення та виконання зразків коду під час цього модуля.
Закрийте панель терміналів.
Напишіть інструкцію do-while, щоб розірвати, коли створюється певне випадкове число
Давайте напишемо код, який буде продовжувати генерувати випадкові числа від 1 до 10, доки не згенеруємо число 7. Це може зайняти лише одну ітерацію, щоб отримати 7, або це може зайняти десятки ітерацій.
Переконайтеся, що на панелі "Редактор" відкрито код Visual Studio Code і Program.cs.
Примітка
Program.cs має бути пустим. Якщо це не так, виберіть і видаліть усі рядки коду.
Введіть наведений нижче код у редактор коду Visual Studio.
Random random = new Random(); int current = 0; do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7);У меню Файл код Visual Studio Code виберіть Зберегти.
Перед створенням або запуском коду необхідно зберегти файл Program.cs.
На панелі EXPLORER, щоб відкрити термінал у розташуванні папки TestProject, клацніть правою кнопкою миші TestProject , а потім виберіть Відкрити в інтегрованому терміналі.
Відкриється панель терміналів. Термінал має містити командний рядок, який показує, що термінал відкрито в папці TestProject.
У командному рядку термінала, щоб запустити код, введіть dotnet виконати і натисніть клавішу Enter.
Примітка
Якщо відображається повідомлення "Не вдалося знайти проект для запуску", переконайтеся, що в командному рядку термінала відображається очікуване розташування папки TestProject. Наприклад:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Перегляньте результати.
Оскільки створені числа випадкові, результати будуть різними. Однак значення
7буде останнім числом, яке буде надруковано, оскільки логічний вираз буде обчисленоfalse, коли створюється 7, а потік виконання вийде з блоку коду.2 5 8 2 7Знайдіть хвилинку, щоб переглянути код.
Ключове навчання для цього першого завдання полягає в тому, що блок
do-whileкоду циклу буде виконуватися принаймні один раз. Це може ітерувати велику кількість разів, і навряд чи ми заздалегідь знаємо, скільки ітерацій буде.Важливо також помітити, що код у блоці коду впливає на те, чи слід продовжувати ітерувати через блок коду чи ні. Блок коду, який впливає на умови виходу, є основною причиною вибору
do-whileабоwhileоператорів, а не однієї з інших ітерацій. І факториforeach, зовнішні для блоку коду, іforзалежать від кількості ітерацій блокування коду.
Напишіть деякий час інструкції, що ітеративне лише тоді, коли випадкове число більше за певне значення
Тепер давайте розглянемо заяву while .
Скористайтеся редактором коду Visual Studio, щоб оновити код, як показано нижче.
Random random = new Random(); int current = random.Next(1, 11); /* do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7); */ while (current >= 3) { Console.WriteLine(current); current = random.Next(1, 11); } Console.WriteLine($"Last number: {current}");Примітка
У цьому випадку ми розташуємо
whileключове слово та логічний вираз перед блоком коду. Це змінює значення коду та діє як "ворота", щоб дозволити потоку виконання вводити, лише якщо логічний вираз повертає значення true.Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код.
Введіть у
dotnet runкомандному рядку термінала, щоб запустити код.Перегляньте вказані значення виводу.
Оскільки числа випадкові, тому код створить іншу послідовність.
9 7 5 Last number: 1Знайдіть хвилинку, щоб переглянути код.
У верхньому коді ми використовуємо
randomдля ініціалізації нашоїintзмінної з іменемcurrent. Наш наступний активний рядок коду – це нашаwhileінструкція.Наша
whileінструкція ітеруватиметься на основі логічного виразу(current >= 3). Ми не знаємо, яке значення буде призначеноcurrent, але існують можливості, які впливають на нашwhileцикл:- Якщо
currentініціалізовано значення, більше або рівне3, повертаєтьсяtrueлогічний вираз , а потік виконання – блок коду. У блоці коду перше, що ми робимо, це написати значенняcurrentконсолі. Далі, як і раніше всередині блоку коду, ми оновлюємо значенняcurrentз новим випадковим значенням. На цьому етапі елемент керування повертається на початокwhileінструкції, де обчислюється логічний вираз. Цей процес триває, доки не повернетьсяfalseлогічний вираз, а потік виконання розривається з блоку коду. - Якщо
currentініціалізовано (у верхній частині коду) значення, менше3за , повертаєтьсяfalseлогічний вираз , і блок коду ніколи не виконуватиметься.
Остаточний рядок коду записує значення
currentконсолі. Цей код запускається незалежно від того, чи було виконано блок коду ітерації, і є нашим шансом написати остаточнеcurrentзначення консолі.- Якщо
Використайте інструкцію продовження, щоб перейти безпосередньо до логічного виразу
У деяких випадках ми хочемо замикати залишок коду в блоці коду та перейти до наступної ітерації. Це можна зробити за допомогою оператора continue .
Скористайтеся редактором коду Visual Studio, щоб оновити код, як показано нижче.
Random random = new Random(); int current = random.Next(1, 11); do { current = random.Next(1, 11); if (current >= 8) continue; Console.WriteLine(current); } while (current != 7); /* while (current >= 3) { Console.WriteLine(current); current = random.Next(1, 11); } Console.WriteLine($"Last number: {current}"); */Знайдіть хвилинку, щоб переглянути код.
Зверніть увагу, що ми повернулися до
do-while. Аdo-whileгарантує, що цикл ітеруватиметься принаймні один раз.Перше, що ми робимо всередині блоку коду, – призначити нове випадкове значення
current. Далі ми перевіряємо, чиcurrentбільше або дорівнює8. Якщо цей вираз повертаєтьсяtrue,continueключове слово передасть елемент керування в кінець блоку коду та оцінитьwhile(current != 7). Таким чином, цикл буде продовжувати ітерувати до тих пір, поки значенняcurrentне дорівнює7.Ключем до цього кроку вправи є рядок коду,
continueщо містить ключове слово:if (current >= 8) continue;Оскільки код, який записує значення
currentконсолі, знаходиться післяif (current >= 8) continue;, наш код гарантує, що значенняcurrent, яке більше або дорівнює8, ніколи не буде записано у вікно виводу.Давайте спробуємо.
Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код.
Введіть у
dotnet runкомандному рядку термінала, щоб запустити код.Перегляньте вказані значення виводу.
5 1 6 7Швидше за все, ви побачите інші результати, ніж показано нижче. Однак у вікні виводу не відображатимуться значення
8або більше, перш ніж виконання коду завершиться значенням7.Розгляньте різницю між операторами та
continueоператорамиbreak.Як ви бачили на цьому останньому кроці,
continueінструкція передає виконання до кінця поточної ітерації. Така поведінка відрізняється від поведінки, що ми бачили з інструкцієюbreak. Операторbreakприпиняє ітерацію (абоswitch) і передає елемент керування оператору, який слідує за перерваною інструкцією. Якщо після перерваної інструкції немає інструкції, керування передається в кінець файлу або методу.
Коротко
Є кілька важливих ідей, які слід відняти від цієї одиниці:
- Оператор
do-whileітерує через блок коду принаймні один раз і може продовжувати ітерувати на основі логічного виразу. Обчислення логічного виразу зазвичай залежить від певного значення, створеного або отриманого всередині блоку коду. - Інструкція
whileспочатку обчислює логічний вираз і продовжує ітерувати через блок коду, якщо логічний вираз повертає значенняtrue. - Ключове
continueслово, яке потрібно відразу перейти до логічного виразу.
Перевірка знань
Зворотний зв’язок
Чи була ця сторінка корисна?
Ні
Потрібна допомога із цією темою?
Хочете скористатися Ask Learn, щоб отримати пояснення чи інструкції із цієї теми?