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

1 ... 18 19 20 [ 21 ] 22 23 24 ... 396



Управление потоком выполнения

У всех приводимых до сих пор примеров кода С# имелась одна общая черта. В каждом случае выполнение программы переходило от одной строки к следующей в порядке сверху вниз, без всяких пропусков. Если бы все приложения работали подобным образом, тогда разработчики были бы очень ограничены в своих возможностях. В этой главе описываются две таких методики для управления потоком выполнения программы (т.е. порядком выполнения строк кода С#), как ветвление (branching) и организация циклов (looping). Первая позволяет обеспечивать выполнение кода на основании условия, т.е. в зависимости от результата вычисления этого условия, которое может требовать, к примеру, выполнять код только в том случае, если значение переменной myVal меньше 10. Вторая методика обеспечивает повторное выполнение одних и тех же операторов (либо определенное количество раз, либо до тех пор, пока не будет соблюдено проверочное условие).

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

В частности, в настоящей главе рассматриваются следующие основные темы.

□ Булевская логика и способы ее применения.

□ Способы управления исполнением кода.

Булевская логика

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



ОТ этого результата далее могло выполняться то или иное действие. В частности, тип bool часто используется для сохранения результата такой операции, как сравнение.

Историческая справка: источником происхождения булевской логики являются труды английского математика Джорджа Буля (George Boole), жившего в середине девятнадцатого столетия.

Например, предположим (как уже предлагалось во вводной части данной главы), что требуется сделать так, чтобы код выполнялся только в том случае, если значение переменной myVal меньше 10. Это требует каким-то образом узнать о том, ложным или истинным является утверждение myVal меньше 10 , т.е. получить булевский результат сравнения.

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

Таблица 4.1. Операции сравнения

Операция

Категория

Пример

Результат

Бинарная

varl =

var2 == var3;

varl присваивается значение true, если var2 равна var3, в противном случае varl присваивается значение false

Бинарная

varl =

var2 != var3;

varl присваивается значение true, если var2 не равна var3, в противном случае varl присваивается значение false

<

Бинарная

varl =

var2 < var3;

varl присваивается значение true, если var2 меньше var3, в противном случае varl присваивается значение false

>

Бинарная

varl =

var2 > var3;

varl присваивается значение true, если var2 больше var3, в противном случае varl присваивается значение false

<=

Бинарная

varl =

var2 <= var3;

varl присваивается значение true, если var2 меньше или равна var3, в противном случае varl присваивается значение false

>=

Бинарная

varl =

var2 >= var3;

varl присваивается значение true, если var2 больше или равна var3, в противном случае varl присваивается значение false

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

bool isLessThanlO; isLessThanlO = myVal < 10;

Эта строка кода будет приводить к присваиванию IsLessThanlO значения true в том случае, если в переменной хранится значение меньше 10, и значения false в противном случае.

Эти операции также могут применяться и в отношении других типов, например, строк:

bool isKarli;

isKarli = myString == Karli ;



Здесь isKarli будет присваиваться значение true только в том случае, если в переменной myString хранится строка Karli .

Операции сравнения могут использоваться и в отношении исключительно булевских значений, например:

bool isTrue;

isTrue = myBool == true;

В таком случае, однако, применять разрешено только операции == и ! =.

Типичная ошибка в коде часто возникает, когда разработчик неумыгиленно предполагает, что если vail < val2 возвращает false, значит, vail > val2 будет возвращать true. Если vail == val2, тогда false будут возвращать оба этих оператора.

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

Таблица 4.2. Операции, предназначенные специально для работы с булевскими значениями

Операция

Категория

Пример

Результат

Унарная

varl = !var2;

varl присваивается значение true, если var2 равна false, или значение false, если var2 равна true. (Логическое HE.)

&

Бинарная

varl = var2 & var3;

varl присваивается значение true, если и var2, и var3 равны true; в противном случае varl присваивается значение false. (Логическое И.)

Бинарная

varl = var2 I var3;

varl присваивается значение true, если либо var2, либо var3 (либо и var2 и var3) равна true; в противном случае varl присваивается значение false. (Логическое ИЛИ.)

Бинарная

varl = var2 var3;

varl присваивается значение true, если либо только var2, либо только var3 (т.е. не и var2 и var3 одновременно) равна true; в противном случае varl присваивается значение false. (Логическое исключающее ИЛИ, либо просто исключающее ИЛИ.)

Следовательно, получается, что приведенный выше фрагмент кода может быть представлен и так:

bool isTrue;

isTrue = myBool & true;

У операций & и I еще имеются две похожие операции, которые называются условными булевскими операциями и показаны в табл. 4.3.

Результат этих операций выглядит точно так же, как и у операций & и , но их важным отличием является способ, по которому этот результат получается, поскольку он может обеспечивать более высокую производительность. Обе они смотрят на значение своего первого операнда (var2 в табл. 4.3) и на его основании могут вообще не переходить к обработке второго операнда (var3 в табл. 4.3).



1 ... 18 19 20 [ 21 ] 22 23 24 ... 396

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