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

С# - Ватсон К.

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


string resultStrinoj if (mylnteger < 10)

resultString 3 'Меньше 10*; else

reauitstring = ’Больше или равно 10"i
Управление порядком выполнения

59

Такой код, хотя он и многословнее, гораздо проще читать и понимать, чем тот, в котором использовался тринарный оператор; к тому же такой код оказывается более гибким.

Давайте обратимся к примеру.

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

]. Создайте новое консольное приложение с именем ch04Ex02 в директории C:\BegCSharp\chapter4.

2. Добавьте следующий код в ciaesi.es:

static void Main(string!] args]

(

string comparjaoni

Console.WriteLine!'Enter a number:');

double varl - Convert-ToDouble(Console.ReadLine())t

Console.WriceLine{'Enter another number; ') i .

double var2 • Convert.ToDouble(Console.ReadLine())j '

if (varl < var2)

comparison 3 'less then') else

{ -

if (varl « var2) .

comparison ¦ 'equal to'} .

else r .

comparison ¦ 'greater than*;

J . ¦ ¦ .

Console. WriteLine ("Che first number is CO) the second number. *, comparison) ;

>

3. Запустите код н введите два числа в ответ на приглашения (см. рис. справа).

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

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

string comparison;

Console. WriteLine ('Enter a number-.');

double varl = Convert.ToDouble(Console.ReadLineО);

Console.WriteLine('Enter another number;'); double var2 ¦ Convert. ToDouble (Console. ReadLineO ) ;

Далее переменной comparison тнпа string, в зависимости от значений, полученных для varl и var2, присваивается строка:

if (varl < var2)

comparison = 'less than';

Еслн данное условие не выполняется, то это значит, что varl либо больше, либо равно var2. Тогда в разделе else первого сравнения делается еще одно, вложенное сравнение:

else

(

i? (varl *== var2)

comparison = 'equal to';
60 _______ Глава 4

Раздел else второго сравнения будет достигнут только в тон случае, если van больше, чем var2:

else

comparison “ 'greater than*;

>

В заключение происходит вывод значения переменной comparison на консоль: Console.WriteLine('The first number is (0) the eecond number.', comparison);

Использование вложенных операторов представляет собой лишь один из возможных путей решения этой задачи. С тем же успехом мы могли бы написать следующее:

if (varl < var2)

comparison ¦ 'less than'; if (varl var2)

comparison • 'equal to*; if [varl > var2)

. comparison = 'greater than*; . .

Недостатком такого способа является необходимость выполнять все три сравнения независимо от значении переменных varl и var2, В первом же случае выполняется только одно сравнение, если varl < var2 есть true, и два сравнения в противном случае (мы также выполняем сравнение van -= var2), т. е. выполняется меньшее число строк кода. Разница в быстродействии несущественна, однако она может иметь значение для тех приложений, для которых скорость выполнения является критичной.

Проверка большего количества условий с помощью оператора if

В предыдущем примере мы проверяли три условия для значения переменной varl, которые охватывали все возможные для нее значения. Однако в некоторых случаях может потребоваться выполнять проверку на какие-то конкретные значения, например, 1, 2, 3, 4 н т, д Используя тот же подход, мы получим неудобоваримый вложенный код вроде: .

if (varl « 1)

(

// выполнен» каких-либо действий

)

else

{

if (varl « 2)

{

// выполнение каких-либо других действий ,) * else (

if (varl ==*3 11 varl ¦¦ 4)

t

/ f выполнение каких-либо других действий

)

else

(

П выполнение хагнх-либо других действий

)

) *

} -
Управление порядком выполнения

61

Существует очень распространенная ошибка, когда условие в третьем сравнении записывается как if (varl == з it а.

В таком случае в полном соответствии со старшинством операторов сначала будет выполнен оператор в результате чего оператор || будет выполняться с операндами логического и численного типов.

Это приведет к ошибке.

В такой ситуации разумнее применить несколько иную систему отступов и объединения элементов кода для блоков else (т. е. использовать после блока else одну строку кода, а не целый блок кода). Если мы поступим таким образом, то получим следующую структуру, содержащую операторы else if:

if (varl =¦¦ 1) /
I П выполнение каких-либо действий ' \
else if (varl « 2) /г f •
i if выполнение каких-либо других действий,
/ ' ‘ - else if. (varl ¦¦ 3 11 varl 4) /
\ It выполнение каких-либо других действий
¦ else
(i выполнение каких-либо других действий

На самом деле операторы else if представляют собой два отдельных оператора, н вышеприведенный код идентичен первоначальному варианту. Однако такой код является более удобочитаемым.

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

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

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

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

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