Шаг 39.
Язык программирования C#. Начала
Управляющие инструкции. Цикл while (окончание)

    На этом шаге мы рассмотрим модификайию программы предыдущего шага.

    Мы могли реализовать программу для вычисления суммы нечетных чисел немного иначе. Как минимум мы могли бы обойтись без индексной переменной 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 (первое слагаемое в сумме).


К моменту завершения цикла значение переменной n равно 0. Таким образом, начальное значение переменной n "теряется". В версии программы с индексной переменной (см. предыдущий шаг) значение переменной n оставалось неизменным.

    На следующем шаге мы рассмотрим цикл do-while.




Предыдущий шаг Содержание Следующий шаг