КАТЕГОРИИ: Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |