Цикл For
Цикл дозволяє виконувати фрагмент коду стільки разів, скільки потрібно. Існують різні типи циклів. У C#, якщо потрібно виконати фрагмент коду певну кількість разів, використовується for loop
-цикл.
Шаблон (синтаксис) 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
— initialization
, condition
та operation
— є необов'язковими. Можна пропустити будь-яку з них, але це може змінити поведінку циклу.
Хоча це не рекомендується, змінну циклу можна оголосити поза циклом і залишити частину initialization
порожньою. У такому випадку цикл все одно працюватиме, але слід бути обережним, оскільки це може призвести до неочікуваних результатів, якщо не контролювати цей процес.
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); } } } }
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain more about the different types of loops in C#?
What happens if I omit all three components in the for loop?
Can you show an example of a for loop that runs infinitely?
Awesome!
Completion rate improved to 1.59
Цикл For
Свайпніть щоб показати меню
Цикл дозволяє виконувати фрагмент коду стільки разів, скільки потрібно. Існують різні типи циклів. У C#, якщо потрібно виконати фрагмент коду певну кількість разів, використовується for loop
-цикл.
Шаблон (синтаксис) 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
— initialization
, condition
та operation
— є необов'язковими. Можна пропустити будь-яку з них, але це може змінити поведінку циклу.
Хоча це не рекомендується, змінну циклу можна оголосити поза циклом і залишити частину initialization
порожньою. У такому випадку цикл все одно працюватиме, але слід бути обережним, оскільки це може призвести до неочікуваних результатів, якщо не контролювати цей процес.
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); } } } }
Дякуємо за ваш відгук!