Четверг, 18.04.2024, 20:04
Приветствую Вас Гость | RSS

Лекции

Меню сайта
Форма входа
Категории раздела
ТАУ (Теория автоматического управления) [31]
лекции по ТАУ
Экология [151]
учебник
Бухгалтерский учет и налогообложение в строительстве [56]
Дементьев А.Ю. - Практическое пособие
Психология [104]
Пип
информатика [80]
с# Карли Ватсон
современные стулья [0]
новинки
Поиск

Главная » 2010 » Февраль » 11 » Организация циклов
00:02
Организация циклов
Организация циклов
Цикл — это участок кода, в котором операторы выполняются по несколько раз.
Такой способ в ряде случаев бывает чрезвычайно удобным, поскольку позволяет
повторять необходимые действия столько раз, сколько требуется (тысячи и даже
миллионы), без необходимости выписывать соответствующий код такое же количе-
ство раз.
Управление ппрядком выппя„о„, „
65
. ^ ^ ^ r ^ r s ^ грамму- выч~ю
Дя из предположения, что проТенты 1 И С Л " Д е с я т И л е™е™ № исхо-
снимаются и не добавляются насчет: Н а Ч И С Л Я Ю Т С Я е Ж е Г О Д Н 0 и ™™™ суммы не
double balance = Ю00;
balance *. interestRate;
balance *- interestRate;
balance *= interestRate;
balance *= interestRate;
balance *= interestRate;
balance *= interestRate;
balance *= interestRate;
к о д о „
ме»ее П М е з н ы ) ,
Цикл do
Д о с т а т о ч н о
если
и ^
имеет следующую структуру:
Л р 0 М [ 1 я е т с я »«О Т°Р~ ™ги,еское
do
} while (<условле>) ;
.Ж в результате вычисления <уСЛОВИЯ> п о л у ч а е т с я
л о г и ч е с к о е з н а ч е ш е
- ' Т 0 Г 0 - ч - б ы вывести в стол-
mt i = 1;
do
Console.WriteLine(-{0}•,
) while (i <= 10) ;
выполнять проверрккуу Г<=хю , ччтоб^ыГ чисслло
попало в набор выводимых чисел.
66 Глава 4
Теперь давайте применим этот цикл в приведенной выше программе, определя-
ющей накопления на банковском счете за Шлет. С его помощью мы подсчитаем,
сколько лет потребуется, чтобы на счету накопилась определенная сумма денег,
при заданных начальной сумме и процентной ставке.
Практикум: использование циклов do
1. Создайте новое консольное приложение с именем chO4ExO4
В директории C:\BegCSharp\Chapter4.
2. Добавьте следующий код в ciassi.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 ;
do
{
balance *= interestRate; '
++totalYears;
>
while (balance < targetBalance);
Console.WriteLineCIn {0} year{l} you'll have a balance of {2} . ",
totalYears, totalYears = = ! ? • * : *s", balance);
3. Запустите программу и введите какие-нибудь значения:
bXBegCSharp BflSHE&Ws-
\Hmt is your current balance?
1888
Ufoat is your current annual interest rate <io КУ?
!4.2
УЬа1: balance would *;ou like to ba^e?
110088
In 56 years you'll lw^ a balance of 10013.6466385922-
Press any &еУ fc& continue m
Как это работает
Эта программа повторяет вычисление ежегодного баланса с фиксированной
процентной ставкой столько раз, сколько потребуется для того, чтобы баланс на-
чал удовлетворять условию завершения. Мы используем счетчик лет, увеличивая
его на единицу при каждом проходе по циклу:
int totalYears = 0;
do
{
balance *= interestRate;
++totalYears;
}
while (balance < targetBalance);
Управление порядком выполнения 67
Затем мы используем значение переменной totalYears в качестве одной из со-
ставляющих выходного потока:
Console.WriteLineCIn {0} уеаг{1} you'll have a balance of {2}.',
totalYears, totalYears == 1 ? »" : "s', balance);
Такой способ использования оператора ?: (тринарного),
пожалуй, является наиболее распространенным:
он форматирует текст по условию с использованием
минимального количества кода. Здесь мы применяем этот
оператор для вывода символа тз" после слова "year" в том
случае, если значение переменной totalYears не равно единице.
(Буква "s" в английском языке служит для образования
множественного числа имени существительного.— Прим. пер.)
К сожалению, эта программа не является оптимальной. Рассмотрим ситуацию,
когда баланс, который требуется получить, оказывается меньше текущего баланса.
Вот какой выходной поток получится в этом случае:
ИC:\BeQCSharp\Chapter4\Ch04EK03\bin\Debiig\Ch04l:H03.eHe
I'fbat is у о it i* current fea lance?
10080 в
What Is your current annual interest rate <in И
4«2
yii&t balance would you like to fiaue?
1008
Inrl years you' 11 .Jiave a balance of 18428*
Press any key to Continue
Цикл do всегда выполняется хотя бы один раз. Иногда, как в нашей ситуации, это
не является правильным решением. Естественно, мы можем добавить оператор if:
int totalYears = 0;
if (balance < targetBalance) .
{ " ' ' ' ' ' . • ': ' ' • • '
do
{
balance *= interestRate;
++totalYears;
>
while (balance < targetBalance);
}
Console.WriteLineCIn {0} year{l} you'll have a balance of {2}.",
totalYears, totalYears == 1 ? *" : 's*, balance);
Однако это усложнение программы, которого можно избежать. Лучшим решением
будет использование цикла while.


















Категория: информатика | Просмотров: 1388 | Добавил: basic | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Календарь
«  Февраль 2010  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

krutoto.ucoz.ru
Бесплатный конструктор сайтов - uCoz