Программирование >>  Программирование с использованием ajax 

1 ... 21 22 23 [ 24 ] 25 26 27 ... 396


Описание полученных результатов

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

Console.WriteLine( Enter an integer: );

int mylnt = Convert.ToInt32(Console.ReadLine 0) ;

Для получения целого числа из введенной строки используется команда Convert. То Int 32 (), которая является просто еще одной командой из того же семейства, что и уже демонстрировавшаяся ранее Convert. ToDouble ().

В трех остальных строках кода выполняются различные операции над полученным числом и отображаются их результаты. В данном случае предполагается, что пользователь ввел число 6 (см. рис. 4.1).

Первым выводится результат выполнения операции mylnt < 10. Если в mylnt содержится значение 6, которое меньше 10, тогда в качестве результата выводится true, которое и видно на приведенном снимке экрана. В случае если mylnt имеет значение 10 или выше, в качестве результата выводится false.

Вторым выводится результат такого более сложного выражения, как

(О <= mylnt) && (mylnt <= 5)

Это выражение подразумевает выполнение двух операций сравнения (для выяснения того, является ли значение mylnt большим и равным нулю и меньшим или равным 5), а также выполнение над полученными после них результатами булевской операции И. В случае значения 6 операция (О <= mylnt) возвращает true, а операция (mylnt <= 5) - false. В результате этого получается выражение (true) && (false), которое в итоге дает значение false, что опять-таки видно на приведенном снимке экрана.

Напоследок над значением mylnt выполняется поразрядная операция И. В роли второго операнда в этой операции выступает 10, которое в двоичном представлении выглядит как 1010. Если значением mylnt является число 6, двоичное представление которого - 110, тогда в результате этой операции возвращается значение 10, которое в десятичном представлении соответствует числу 2, как показано ниже.

0 110 6

& 1 О 1 О & 10

0 0 10

Дополнение таблицы приоритетов операций

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

Эта таблица содержит немало новых уровней, но зато позволяет четко уяснить, каким образом будут вычисляться выражения вроде того, что показано ниже и в котором операция && обрабатывается после операций <= и >=:

varl = var2 <= 4 && var2 >= 2;

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

varl = (var2 <= 4) && (var2 >= 2);

устранит такую проблему за счет явного указания порядка вычислений.



Таблица 4.12. Дополненная таблица приоритетов операций

Приоритет

Операции

Высший

++, ~ (префиксные формы); (),+,- (унарная); !, -

*, /, %

+, -

,

<, >, <=, >=

&

ScSc

=, *=, /=. %=. +=, =. =. &=. 1 =

Низший

++, -- (постфиксные формы)

Оператор goto

Язык С# позволяет снабжать строки кода метками и затем переходить сразу же к ним с помощью оператора goto. У такого подхода имеются как преимущества, так и недостатки. Главным его преимуществом является то, что он предоставляет простой способ для управления тем, какой код должен выполняться и когда, а главным недостатком - то, что чрезмерное применение оператора goto может делать код запутанным и трудным для восприятия.

Оператор goto используется следующим образом:

goto <имя метки>;

Метки определяются следующим образом:

<имя метки>:

Например, рассмотрим такой код:

int mylnteger = 5; goto myLabel; mylnteger += 10; myLabel:

Console.WriteLine( mylnteger = {0} , mylnteger);

Выполнение этого кода будет происходить так, как описано ниже.

□ Сначала объявляется переменная mylnteger с типом int, которой затем присваивается значение 5.

□ Далее оператор goto прерывает обычный ход выполнения кода и передает управление строке, помеченной myLabel:.

□ После этого сразу же осуществляется вывод в окно консоли значения mylnteger.



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

int mylnteger = 5; goto myLabel; mylnteger += 10;

myLabel:

Console.WriteLine( mylnteger = {0} , mylnteger);

Ha самом деле, после добавления данного кода в приложение и попытки скомпилировать его, в окне Error List (Список ошибок) появится предупреждением с соответствующим заголовком Unreachable code detected (Обнаружен недостижимый код) и деталями о местонахождении проблемного кода. Кроме того, под недостижимой строкой кода будет также отображаться и волнистая линия зеленого цвета.

Операторы goto имеют свои случаи применения, но на самом деле могут сильно все запутать. Ниже показан пример такого запутанного кода:

start:

int mylnteger = 5; goto addVal; writeResult:

Console.WriteLine( mylnteger = {0} , mylnteger);

goto start;

addVal:

mylnteger += 10; goto writeResult;

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

Ветвление

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

В настоящем разделе описаны три доступных в С# методики разветвления:

□ тернарная операция;

а оператор if;

а оператор switch.

Тернарная операция

Самый простой способ выполнить сравнение - это воспользоваться тернарной (или условной) операцией, о которой упоминалось в предыдущей главе. Унарные операции, работающие с одним операндом, уже встречались, бинарные операции, работающие с двумя операндами - тоже, поэтому совершенно не должно показаться удивительным то, что существует еще и операция, работающая с тремя операндами. Синтаксис этой операции выглядит следующим образом:

<проверка> ? <результат если Тгие> : <результат если Еа1зе>



1 ... 21 22 23 [ 24 ] 25 26 27 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика