Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Цикл while. Цикл— это участок кода, в котором операторы выполняются по несколько раз




Do

Do

Do

Do

Do

Цикл do

Организация циклов

Цикл — это участок кода, в котором операторы выполняются по несколько раз. Такой способ в ряде случаев бывает чрезвычайно удобным, поскольку позволяет повторять необходимые действия столько раз, сколько требуется (тысячи и даже миллионы), без необходимости выписывать соответствующий код такое же количество раз.

Пример программы, которая вычисляет количество денег, которое окажется в банке по истечении десятилетнего срока, исходя из предположения, что проценты насчитываются ежегодно и никакие суммы не добавляются и не снимаются со счета:

double balance = 1000;

double interestRate= 1.ds // 5% годовых

balance *= interestRate;

balance *= interestRate;

balance *= interestRate;

balance *= interestRate;

balance *= interestRate;

balance *= interestRate;

balance *= interestRate;

balance *= interestRate;

balance *= interestRate;

balance *= interestRate;

Поэтомунет необходимости писать десять строк с одинаковыми операторами, необходимо воспользоваться операторами цикла.

Цикл do работает таким образом. Код помеченный в цикле, выполняется один раз, а затем проверяется некоторое логическое условие, если значение результата равно true, то этот код выполняется еще раз и т.д. Цикл заканчивается тогда, когда условие станет равным False. Цикл имеет следующую структуру:

{

<код, выполняющийся в цикле>

} while (<условие>);

где в результате вычисления <условие> получается логическое значение.

 

!!! Точка после оператора while является обязательной.

Пример: вывод 10 чисео в столбик от 1 до 10

int i=1;

{

Console.WriteLine(“{0}”, i++)

} while (i<=10);

Оператор ++ используется для увеличения значения і на единицу после вывода его на экран, поэтому надо выполнять проверку i<=10.

Пример программы:

Добавьте следующий код в class1.cs:

static void Main (string [] args)

{

double balance, interestRate, targetBalance;

Console.WriteLine(“What is your current balance?");

balance = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("What is your current annual interest rate (in %)?");

interestRate = 1 + Convert.ToDouble(Console.ReadLine()) / 100.0;

Console.WriteLine("What balance would you like to have?");

targetBalance = Convert.ToDouble(Console.ReadLine());

int totalYears = 0;

{

balance *= interestRate;

++totalYears;

}

while (balance < targetBalance);

Console.WriteLine(In {0} year{1} you'll have a balance of {2}. ",

totalYears, totalYears = = 1? ‘‘ ‘‘: “s", balance);

}

 

Мы используем счетчик лет, увеличивая его на единицу при каждом проходе по циклу:

int totalYears = 0;

{

balance *= interestRate;

++totalYears;

}

while (balance < targetBalance);

Затем мы используем значение переменной totalYears в качестве одной из составляющих выходного потока:

Console.WriteLine(In {0} year{1} you'll have a balance of {2}. ",

totalYears, totalYears = = 1? ‘‘ ‘‘: “s", balance);

Такой способ использования оператора?: (тринарного), пожалуй, является наиболее распространенным: он форматирует текст по условию с использованием минимального количества кода. Здесь мы применяем этот оператор для вывода символа “s” после слова "year" в том случае, если значение переменной totalYears не равно единице.

Буква "s" в английском языке служит для образования множественного числа имени существительного.

Цикл do всегда выполняется хотя бы один раз. Иногда, как в нашей ситуации, это

не является правильным решением. Естественно, мы можем добавить оператор if:

int totalYears = 0;

if (balance < targetBalance).

{

{

balance *= interestRate;

++totalYears;

}

while (balance < targetBalance);

}

Console.WriteLine(In {0} year{l} you'll have a balance of {2}.",

totalYears, totalYears == 1? ": “s”, balance);

Однако это усложнение программы, которого можно избежать. Лучшим решением будет использование цикла while.

Цикл while очень похож на цикл do, однако у него имеется одно важное отличие: вычисление логического условия в цикле while происходит в начале цикла, а не в конце. Если в результате проверки условия будет получено значение false, то цикл while вообще не будет выполняться и управление передается коду, расположенному после этого цикла.

Цикл while оформляется следующим образом:

while {<условие>)

Он может использоваться практически так же, как и цикл do. Например:

int i = 1;

while (i <= 10)

{

Console.WriteLine(“{0}", i++);

}

Выполнение этого кода приведет к тому же результату: числа от 1 до 10 будут выведены в столбец.

Давайте изменим программу так, чтобы в ней использовался цикл while.

Пример:

 

static void Main (string [] args)

{

double balance, interestRate, targetBalance;

Console.WriteLine(“What is your current balance?");

balance = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("What is your current annual interest rate (in %)?");

interestRate = 1 + Convert.ToDouble(Console.ReadLine()) / 100.0;

Console.WriteLine(“What balance would you like to have?");

targetBalance = Convert.ToDouble(Console.ReadLine());

int totalYears = 0;

while (balance < targetBalance)

{

balance *= interestRate;

++totalYears;

}

Console.WriteLine(“In {0} year{1} you'll have a balance of {2}.",

totalYears, totalYears == 1? “ “: “s”, balance);

}

Осуществляем проверку вводимой пользователем информации, чтобы убедиться в превышении начальной суммы конечным балансом. Для этого поместим в цикл соответствующий код:

Console.WriteLine(“What balance would you like to have?”);

{

targetBalance = Convert.ToDouble(Console.ReadLine());

if (targetBalance <= balance)

Console.WriteLine(“You must enter an amount greater than “ +

“your current balance:\nPlease enter another value.”);

}

while (targetBalance <= balance);




Поделиться с друзьями:


Дата добавления: 2015-04-29; Просмотров: 403; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.