Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 37

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 31 32 33 34 35 36 < 37 > 38 39 40 41 42 43 .. 404 >> Следующая


¦ do f

, Console.WriteLine(*[01*, i++)i

) while ti <• I0S)

В данном случае мы использовали оператор + + в виде суффикса, который увеличивает значение i на единицу после его вывода на экран; поэтому необходимо выполнять проверку i <= ю, чтобы число 10 попало в набор выводимых чисел.
66

Глава 4

Теперь давайте применим этот цикл в приведенной выше программе, определяющей накопления на банковском счете за 10 лет. С его помощью мы подсчитаем, сколько лет потребуется, чтобы на счету накопилась определенная сумма денег, прн заданных начальной сумме н процентной ставке.

Практикум: использование циклов do

1. Создайте новое консольное приложение с именем ch04Ex04 В директории С;\BegCSharp\Chapter4.

2. Добавьте следующий код в ciaaai.es: static void Main(string[] args)

{__________________________________________________________________

double balance, interest Rate, targetBalancet Console. WriteLine ('What is your current balance?'); balance ¦ Convert. ToDouble (Console.ReadLineO ) j

Console .WriteLine ('What is your current annual interest rate (in %)?*); interestRate = 1 + Convert.ToDouble(Conaola.ReadLine()) / 100.0; Console. WriteLine ('What balance would you like to have?'); targetBelance = Convert .ToDouble (Console.ReadLine 0) f

int totalyears do

0;

balance *“ interestRatej ++totalVeare>

>

While (balance < torgetBalance);

Console. WriteLine ('In (0> year(l) you'll have a balance of (2).',

totalYeara, totalYeare “11" ! 's', balance);

3. Запустите программу и введите какие-нибудь значения:

. 1 H"t6eijt?ihdtpVChjiipbtF'J‘.Ch0 h т'.П i.’-bu.i' П I.NFmOZ1 кЕ

|U1fcCl« I уши» I h.i Г .i in t: ?

Lium

UI--I " 111" i ¦ ¦ ............... ¦ г 11П l ¦ I ^ I-11 r 1 I ¦ С in

Л.А

(jh.i1 I I lull-::............ lit ^z'li \ i ||i liAin-f"

I UfMtll

III '.Ii iJ: ul" ij ill' I J 11. * U i ,i linl ¦ i 11 ¦: ¦ > i 11ТЙ 1 J . L^li Tim - - my htj i .¦ uni. Hi».

hi.

j-

Как это работает

. Эта программа повторяет вычисление ежегодного баланса с фиксированной процентной ставкой столько раз, сколько потребуется для того, чтобы баланс начал удовлетворять условию завершения. Мы используем счетчик лет, увеличивая его на единицу при каждом проходе по циклу:

int totalYears = 0; do

{

balance *= interestRate; ++totalYears;

while (balance < targetBalance);
Управление порядком выполнения_______________'_________________________________________67

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

Console.WritaLine('In (0) year(l) you'll have a balance of (2).',

totalYears, totalYeara == 1 ? " : *a', balance);

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

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

К сожалению, эта программа не является оптимальной. Рассмотрим ситуацию, когда баланс, который требуется получить, оказывается меньше текущего баланса. Вот какой выходной поток получится в &том случае:

? $ (I:\Se(jtShiirp';t:hdjittir4\ChQ-1?н03\Ып\О('!>нд

'.J li.Lt ¦ ¦ J¦ ¦ I I- ¦ : rn;iN. ¦1 ¦1 1.1 llE¦ -V

iflEtag "

Uhac iycmi’ cuvi'tfiit; I trim itsI rn.i С щ ¦

4.2

t/hrft LiaJ..4ici. oi ¦ 11 i №Q J L I ::-tyiT!L

L 0ОЙ

In J ^FftaV2 УЙи -4 Или с ji I -t-i;:-

V'г.- . .ni i; Lifjf .i i ¦ ¦ ij¦.

UL

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

int totalYeara =0; _

if (balance < targetBalance)

(

do

(

balance *= interestRatej ++totalYears;

)

while (balance < targetBalance);

m

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

totalYeara, totalYears == 1 ? '* : 'a', balance);

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

Цикл while

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

Глава 4

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

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

С

<жая. выполняющийся я цикле» .

НВИНН^НЯНННВГ

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

int i ¦ lj_ while li <ж 10)

(

Console.WriteLine('(0)', i++) j .

>

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

Давайте изменим программу так, чтобы в ней использовался цикл while.
Предыдущая << 1 .. 31 32 33 34 35 36 < 37 > 38 39 40 41 42 43 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.