VirQ. Цикл (for) в C#
Язык C# входит в ТОП-5
самых популярных языков
программирования
Главная /
Учебник
/
Цикл (for)
Статей на сайте: 61

Цикл (for)


Пожалуй, самая основная часть программирования. Цикл for - это автоматический перебор каких-либо действий, проверок, запросов, вывода. Автоматизация. Это то, для чего компьютеры вообще были созданы. Автоматизация ручного процесса.

Пример 1. Вывести все однозначные числа, т.е. от 0 до 9
[code] for (int x = 0; x <= 9; x++) Console.WriteLine(x); [/code]
Результат:
Console
×
0
1
2
3
4
5
6
7
8
9


Пример 2. Вывести все нечётные числа от 10 до 30
[code] //Вариант 1. С наличием условия for (int x = 10; x <= 30; x++) if (x % 2 == 1) Console.WriteLine(x); //Вариант 2. Без условия. С указанием шага в цикле for (int x = 11; x <= 29; x += 2) Console.WriteLine(x); [/code]
Результат:
Console
×
11
13
15
17
19
21
23
25
27
29


Пока на этом моменте разберём то, что написано.
for (<один>;<два>;<три>)
Под "один", "два" и "три" подразумевается следующее:
<один> - начальное значение переменной
<два> - условие, при котором цикл продолжается
<три> - шаг изменения переменной
[code] for (int x = 1; x <= 5; x++) [/code]
В данной записи означает, что стартовое значение x = 1. С каждым шагом его значение будет увеличиваться на 1, т.к. записано "x++". И цикл будет работать до тех пор, пока x не станет равным 6. Когда x = 6, содержимое цикла не выполнится.

В цикле не обязательно может быть вывод чисел. Например, это может быть созданием 5 папок.
Давайте создадим 5 папок в диске D с номерами 10,20,30,40
Тут сразу в ряду видно "начальное" значение, "конечное" значение и "шаг"
[code] for (int a = 10; a <= 40; a += 10) Directory.CreateDirectory("D:\\" + a); [/code]

Цикл for может содержать блок команд. Например, сделаем программу, которая 5 раз спрашивает число у пользователя и выводит квадрат этого числа:
[code] for (int n = 1; n <= 5; n++) { Console.Write("Введите " + n + " число: "); string s = Console.ReadLine(); int k = int.Parse(s); Console.WriteLine(s + " в квадрате = " + k * k); Console.WriteLine(""); } Console.ReadKey(); [/code]
Результат:
Console
×
Введите 1 число: 12
12 в квадрате = 144

Введите 2 число: 4
4 в квадрате = 16

Введите 3 число: 10
10 в квадрате = 100

Введите 4 число: 60
60 в квадрате = 3600

Введите 5 число: 5
5 в квадрате = 25


Более подрробно:
[code] Console.Write("Введите " + n + " число: "); //Вывести фразу, какое число по счёту надо ввести string s = Console.ReadLine(); //В текстовую переменную s сохраняем результат int k = int.Parse(s); //Конвертируем в число Console.WriteLine(s + " в квадрате = " + k * k); //Выводим результат k * k (k в квадрате) Console.WriteLine(""); //Вертикальный отступ в 1 строку [/code]
И так повторить 5 раз.

Цикл можно запустить в обратную сторону:
[code] for (int n = 5; n >= 0; n--) Console.WriteLine(n); [/code]
Результат:
Console
×
5
4
3
2
1
0


Цикл может содержать другой цикл. В этом случае перебор внутреннего цикла будет начинаться с начала столько раз, сколько указано во внешнем цикле.
Например, вывести таблицу умножения от 1 до 3 для первого числа и от 1 до 5 для второго числа. Такое задание специально для того, чтобы видеть разницу между переменными.
[code] for (int a = 1; a <= 3; a++) { for (int b = 1; b <= 5; b++) Console.WriteLine(a + " x " + b + " = " + a * b); Console.WriteLine(""); //Сделать отступ после каждого блока } [/code]
Результат (есть полоса прокрутки у этого окна):
Console
×
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10

3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15


Если есть список чисел, то в цикле для указания окончания списка нужно использовать свойства Length или Count в зависимости от переменной.
Например, у нас есть список чисел, которые мы хаотично запишем:
[code] List<int> x = new List<int>() { 5, 67, 12, -5, 4, 884, -35, -105, 15, 1000, -9, 27 }; for (int a = 0; a < x.Count; a++) Console.WriteLine(x[a]); [/code]
Результат:
Console
×
5
67
12
-5
4
884
-35
-105
15
1000
-9
27

Как видим, не нужно подставлять конкретное количество цифр и считать их вручную. В условии продолжения цикла пишем "a < x.Count".
Почему "<", а не "<="? Потому что счёт начинается с 0.
И для 12 элементов последним будет 11-ый элемент.
Значит, когда будет выведен последний 11 элемент, сработает a++. Изменится на 12 и цикл закончится, так и не обратившись к 12-ому элементу.
Если же всё-таки будет записно так (меняем < на <=):
[code] List<int> x = new List<int>() { 5, 67, 12, -5, 4, 884, -35, -105, 15, 1000, -9, 27 }; for (int a = 0; a <= x.Count; a++) Console.WriteLine(x[a]); [/code]
то все числа выведутся и выйдет вот такая ошибка:



Дополнительная информация о том, как вывести результат в консоли или WinForm