|
Программирование >> Программирование с использованием ajax
Управление потоком выполнения У всех приводимых до сих пор примеров кода С# имелась одна общая черта. В каждом случае выполнение программы переходило от одной строки к следующей в порядке сверху вниз, без всяких пропусков. Если бы все приложения работали подобным образом, тогда разработчики были бы очень ограничены в своих возможностях. В этой главе описываются две таких методики для управления потоком выполнения программы (т.е. порядком выполнения строк кода С#), как ветвление (branching) и организация циклов (looping). Первая позволяет обеспечивать выполнение кода на основании условия, т.е. в зависимости от результата вычисления этого условия, которое может требовать, к примеру, выполнять код только в том случае, если значение переменной myVal меньше 10. Вторая методика обеспечивает повторное выполнение одних и тех же операторов (либо определенное количество раз, либо до тех пор, пока не будет соблюдено проверочное условие). Обе этих методики подразумевают применение булевской логики. В предыдущей главе тип bool встречался, но почти никак не использовался. В этой главе он будет использоваться очень много, поэтому глава начинается с описания того, что собой представляет булевская логика, чтобы в последующих примерах управления исполнением ее применение не вызывало никаких вопросов. В частности, в настоящей главе рассматриваются следующие основные темы. □ Булевская логика и способы ее применения. □ Способы управления исполнением кода. Булевская логика Тип bool, о котором уже вкратце упоминалось в предыдущей главе, может содержать только одно из следующих двух значений: true или false. Этот тип часто применяется для фиксирования результата какой-нибудь операции, чтобы в зависимости ОТ этого результата далее могло выполняться то или иное действие. В частности, тип bool часто используется для сохранения результата такой операции, как сравнение. Историческая справка: источником происхождения булевской логики являются труды английского математика Джорджа Буля (George Boole), жившего в середине девятнадцатого столетия. Например, предположим (как уже предлагалось во вводной части данной главы), что требуется сделать так, чтобы код выполнялся только в том случае, если значение переменной myVal меньше 10. Это требует каким-то образом узнать о том, ложным или истинным является утверждение myVal меньше 10 , т.е. получить булевский результат сравнения. Для осуществления булевских сравнений необходимо использовать булевские операции сравнения, которые еще также называются операциями отношения и перечислены в табл. 4.1. В этой таблице во всех случаях предполагается, что varl является переменной типа bool, в то время как типы переменных var2 и var3 могут варьироваться. Таблица 4.1. Операции сравнения
Перечисленные операции могут применяться в коде в отношении числовых значений, например: 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. Операции, предназначенные специально для работы с булевскими значениями
Следовательно, получается, что приведенный выше фрагмент кода может быть представлен и так: bool isTrue; isTrue = myBool & true; У операций & и I еще имеются две похожие операции, которые называются условными булевскими операциями и показаны в табл. 4.3. Результат этих операций выглядит точно так же, как и у операций & и , но их важным отличием является способ, по которому этот результат получается, поскольку он может обеспечивать более высокую производительность. Обе они смотрят на значение своего первого операнда (var2 в табл. 4.3) и на его основании могут вообще не переходить к обработке второго операнда (var3 в табл. 4.3).
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |