Цикл For
Цикл дозволяє виконувати шматок коду стільки разів, скільки ми хочемо. Існують різні типи циклів. У C#, якщо ми хочемо виконати шматок коду певну кількість разів, ми використовуємо цикл for.
Шаблон (синтаксис) циклу for виглядає наступним чином:
for(initiation; condition; operation) {
// code to execute
}
Приклад:
main.cs
123456789101112131415using 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.cs
12345678910111213141516using 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.cs
1234567891011121314151617using 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.cs
1234567891011121314151617using 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.cs
123456789101112131415using 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.cs
123456789101112131415using 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.cs
1234567891011121314using 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.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 1.59
Цикл For
Свайпніть щоб показати меню
Цикл дозволяє виконувати шматок коду стільки разів, скільки ми хочемо. Існують різні типи циклів. У C#, якщо ми хочемо виконати шматок коду певну кількість разів, ми використовуємо цикл for.
Шаблон (синтаксис) циклу for виглядає наступним чином:
for(initiation; condition; operation) {
// code to execute
}
Приклад:
main.cs
123456789101112131415using 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.cs
12345678910111213141516using 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.cs
1234567891011121314151617using 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.cs
1234567891011121314151617using 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.cs
123456789101112131415using 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.cs
123456789101112131415using 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.cs
1234567891011121314using 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.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Дякуємо за ваш відгук!