Зміст курсу
Основи C#
Основи C#
Цикл For
Цикл дозволяє виконувати шматок коду стільки разів, скільки ми хочемо. Існують різні типи циклів. У C#, якщо ми хочемо виконати шматок коду певну кількість разів, ми використовуємо цикл for.
Шаблон (синтаксис) циклу for виглядає наступним чином:
Приклад:
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Примітка
i++
те саме, що йi = i + 1
. Це збільшує значення змінної на1
.i–
зменшує значення на1
.
int i = 0
є частиною ініціалізації. Ініціалізація виконується, коли цикл починається. Отже, на початку циклу створюється нова тимчасова змінна під назвоюi
і ініціалізується значенням0
;i < 10
є умовою. Умова перевіряється на кожній ітерації (повторенні) циклу. Цикл продовжує виконувати вкладений блок коду, поки умова є істинною;i++
є операцією, яка виконується після кожної ітерації. Операція зазвичай є збільшенням або зменшенням. Оскільки значенняi
збільшується після кожної ітерації, умоваi < 10
стає хибною після 10 ітерацій, і цикл зупиняється;
Наступна діаграма пояснює потік циклу for візуально:
Важливо зазначити, що всі три компоненти initiation
, condition
та operation
є необов'язковими, і тому будь-який з них може бути пропущений, але цикл може поводитися по-різному залежно від змін.
Це не рекомендована практика, але ми можемо оголосити змінну циклу поза циклом і залишити частину initiation
порожньою.
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
Ми також можемо видалити частину operation
і помістити її в кінці блоку коду циклу. Цикл буде поводитися так само, як і раніше, оскільки змінна i
все ще збільшується після кожної ітерації.
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }
Зверніть увагу, що в наведеному вище коді ми все ще поставили крапку з комою (;
) у синтаксисі циклу, де очікувалося int i = 0
. Ця крапка з комою повинна завжди бути там, незалежно від того, чи створюємо ми змінну циклу чи ні.
Видалення умови циклу також можливе, але це робить цикл нескінченним, якщо його не завершити вручну (про що ми дізнаємося більше в наступних розділах).
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }
Зверніть увагу, що ми все ще включили обидві крапки з комою в синтаксисі циклу for(;;)
, вони є необхідними, інакше компілятор покаже помилки.
Оскільки значення i
змінюється з кожною ітерацією, ми можемо використовувати це на свою користь. Щоб зрозуміти це, давайте розглянемо просту програму, яка виводить значення i
з кожною ітерацією:
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
Зверніть увагу, що він закінчується на 9
, тому що починається з цифри 0
. Загальна кількість ітерацій була десять. Ми можемо змінити ініціалізацію, умову та операцію, щоб вивести десять парних чисел від 2 до 20.
Примітка
Парні числа - це числа, які діляться на
2
. Наприклад, 2, 4, 6, 8, 10 і т.д. Парні числа також включають число0
, але в цих прикладах ми будемо розглядати лише парні числа вище0
.
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }
Примітка
i += 2
є коротшим способом записуi = i + 2
. Цей синтаксис також дійсний для інших операторів, наприкладi -= 2
,i *= 2
,i /= 2
,i %= 2
тощо.
Цикл починається з 0
і збільшує значення i
на 2
кожну ітерацію. Ми змінили умову на i <= 20
, щоб цикл зупинився на 20
.
Вищезазначена логіка була для розуміння роботи циклу for. Ми можемо використовувати набагато простішу логіку для виведення перших десяти парних чисел:
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }
У цьому випадку умова набагато простіша. Наприклад, якщо ми хочемо перші 27 парних чисел, нам потрібно знати, яке число є 27-м парним, щоб сформувати умову для попереднього методу, однак у цьому випадку нам просто потрібно змінити умову на i <= 27
:
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Дякуємо за ваш відгук!