Пожалуй, самая основная часть программирования. Цикл for - это автоматический перебор каких-либо действий, проверок, запросов, вывода. Автоматизация. Это то, для чего компьютеры вообще были созданы. Автоматизация ручного процесса.
Пример 1. Вывести все однозначные числа, т.е. от 0 до 9
[code]
for (int x = 0; x <= 9; x++) Console.WriteLine(x);
[/code]
Результат:
Пример 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]
Результат:
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]
Результат:
Введите 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]
Результат:
Цикл может содержать другой цикл. В этом случае перебор внутреннего цикла будет начинаться с начала столько раз, сколько указано во внешнем цикле.
Например, вывести таблицу умножения от 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]
Результат (есть полоса прокрутки у этого окна):
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]
Результат:
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