Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Цикл For | Цикли
Основи C#
course content

Зміст курсу

Основи C#

Основи C#

1. Початок роботи
3. Структури управління
4. Цикли
5. Масиви
6. Методи

bookЦикл For

Цикл дозволяє виконувати шматок коду стільки разів, скільки ми хочемо. Існують різні типи циклів. У C#, якщо ми хочемо виконати шматок коду певну кількість разів, ми використовуємо цикл for.

Шаблон (синтаксис) циклу for виглядає наступним чином:

Приклад:

cs

main

copy
123456789101112131415
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 порожньою.

cs

main

copy
12345678910111213141516
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 все ще збільшується після кожної ітерації.

cs

main

copy
1234567891011121314151617
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. Ця крапка з комою повинна завжди бути там, незалежно від того, чи створюємо ми змінну циклу чи ні.

Видалення умови циклу також можливе, але це робить цикл нескінченним, якщо його не завершити вручну (про що ми дізнаємося більше в наступних розділах).

cs

main

copy
1234567891011121314151617
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 з кожною ітерацією:

cs

main

copy
123456789101112131415
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.

cs

main

copy
123456789101112131415
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. Ми можемо використовувати набагато простішу логіку для виведення перших десяти парних чисел:

cs

main

copy
1234567891011121314
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:

cs

main

copy
1234567891011121314
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
Яким буде результат виконання наступної програми? Значення `sum` збільшується кожну ітерацію на `i`, тому його значення під час перших чотирьох ітерацій буде: `1`, `3`, `6`, `10`.

Яким буде результат виконання наступної програми? Значення sum збільшується кожну ітерацію на i, тому його значення під час перших чотирьох ітерацій буде: 1, 3, 6, 10.

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 1
some-alt