На этом шаге мы рассмотрим модификайию программы предыдущего шага.
Мы могли реализовать программу для вычисления суммы нечетных чисел немного иначе. Как минимум мы могли бы обойтись без индексной переменной k. Программа с "уменьшенным" количеством переменных приведена ниже.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr39_1 { class Program { static void Main() { // Количество слагаемых в сумме и значение суммы: int n=10, s=0; // Отображение сообщения: Console.Write ("Сумма 1 + 3 + 5 +...+ {0} = ", 2*n - 1); // Конструкция цикла: while( n > 0 ) { s += 2 * n - 1; // Добавляем слагаемое в сумму n--; // Новое значение переменной п } // Отображение вычисленного значения: Console.WriteLine(s); Console.ReadLine(); } } }
Результат выполнения этой программы точно такой же, как и в программе предыдущего шага. Но код немного изменился. Как отмечалось выше, мы больше не используем переменную k. В некотором смысле ее "роль" играет переменная n. Теперь в цикле проверяется условие n>0, а в теле цикла выполняются команды s+=2*n-l и n--. Фактически здесь вычисляется сумма (2n - 1) + (2n - 3) + ... + 5 + 3 + 1, которая, очевидно, равна сумме 1 + 3 + 5 + ... + (2n - 3) + (2n - 1). Другими словами, мы вычисляем ту же сумму, но слагаемые добавляем в обратном порядке. При начальном значении переменной n выражение 2*n-1 дает значение последнего слагаемого в сумме. После уменьшения значения переменной n на единицу выражение 2*n-1 дает значение предпоследнего слагаемого в сумме, и так далее, пока при единичном значении переменной n в соответствии с выражением 2*n-1 не получим значение 1 (первое слагаемое в сумме).
На следующем шаге мы рассмотрим цикл do-while.