Visual Basic .NET для чайников - У. Вонг. Visual Basic .NET для чайников - У. Диалектикамосква СанктПетербург Киев
Скачать 7.1 Mb.
|
Глава 22. Условные операторы 237 Посредством данного кода программа говорит компьютеру: "Проверь, соответствует ли переменной или выражению Условие логическое значение True, и если соответствует, вы- полни все инструкции, указанные между словами Then и End If". Рассмотрим пример: If True = True = "Отличный р е з у л ь т а т ! " End If Вот как Visual Basic интерпретирует эти колы. 1. Первая строка дает указание: значение переменной Отзет. Если оно совпадает со значением True, переходи к выполнению сле- дующей строки, а если не переходи к строке End I 2. Вторая строка: '"Присвой значение True". 3. Третья строка: "Присвой свойству Text объекта значение От- личный результат". 4. Наконец, четвертая строка сообщает: "На этом выполнение оператора Then-End заканчивается". Условные операторы и If выполняют какие-либо инструкции только в том случае, если переменной или выражению соответствует логическое значение True (т.е. проверяемое условие выполняется). А как быть, если нужно, чтобы при невыпол- нении условия также происходили определенные действия? В этом случае вам нужно воспользоваться оператором Выглядит он сле- дующим образом: If Условие Then E l s e Икструкции2 End If Оператор говорит компьютеру: "Если переменной или выражению Условие соответству- ет значение True, выполни набор команд В противном случае, если пере- менной или выражению Условие соответствует значение F a l s e , выполни набор команд Вообще можно ограничиться использованием обычного оператора и набрать примерно такой код: If Курс > Then = "Проливайте а к ц и и ! " If Курс <= 15 Then = "Подождите еще." Данный код работает корректно, но все же выглядит несколько и непрофес- сионально. Чтобы поправить такое воспользуйтесь оператором Курс > 15 Then = "Продавайте 238 Часть V. Создание разветвлений и циклов Else = "Подождите еще." End I f Выражение Курс > 15 можно заменить противоположным (Курс <= и набрать такой кол: If Курс <= 15 Then txtBoxl.Text = "Подождите еще." Else = "Продавайте п Т Оба кода с операторами выполняют одни и те же действия, и не имеет какой из них вы наберете. Между строками и E l s e , а также E l s e и End If можно ввести любое количество инструкций. Единственный возможный недостаток условного оператора I f - T h e n - E l s e заключается в том, что при невыполнении условия второй набор инструкций реализуется автоматически. Если же вы хотите, чтобы ваше условие проверялось для каждого набора инструкций, вос- пользуйтесь оператором Синтаксис этого оператора таков: If Then УслоЕие2 Then End If Этот код дает компьютеру такие указания: выражению или переменной 1 соответствует значение True, выполни набор команд И н с т р у к ц и и ! . Если выражению или переменной У с л о в и е 1 соответствует значение F a l s e , проверь, какое значение соответству- ет или выражению У с л о в и е 2 . Если T r u e — выполни набор команд И н с т р у к - ции2, если F a l s e — не делай ничего, т.е. заканчивай выполнение данного оператора". При использовании оператора I f - T h e n - E l s e в любом случае будет выполнен какой-то набор команд. Если же вы используете оператор I f - T h e n - E l s e l f и ни одному проверяемых условий не соответствует значение T r u e , никакие коман- ды выполняться не будут. Рассмотрим такой пример: If Курс > 15 Then "Продавайте акции!" Elself Курс > 10 Then txtBoxl.Text = "Подождите еще." End Вот что произойдет, если переменная Курс будет иметь значение 12. Глава 22. Условные операторы If-Then 239 1. Visual Basic проверит первое условие и установит, что ему соответствует логическое значение F a l s e (так как выражение > 15 неправильно). 2. Затем Visual Basic проверит второе условие. Ему будет соответствовать значение Т > а потому будет выполнена вторая инструкция и свойству Text объекта будет присвоено текстовое значение Подож- дите еще. А теперь посмотрим что произойдет, если переменная Курс получит значение 5. Visual Basic проверит первое условие и определит, что оно не выполня- ется (так как выражение 5 > не соответствует действительности). 2. Затем Visual Basic проверит второе условие, которое тоже не выполня- ется (поскольку 5 не может быть 10), а потому вторая инструкция также будет проигнорирована. 3. Далее следует строка End If, свидетельствующая об окончании работы это- го условного оператора. Таким образом, ни одна из инструкций не будет вы- полнена. Нужно отметить, что возможности оператора не ограничиваются про- веркой только двух условий. Об этом читайте в следующем разделе. Если вариантов должно быть много Если необходимо учесть сразу несколько возможных вариантов, просто добавьте не- сколько строк Then Условие2 Then Инструкции,? УсловиеЗ Then End If Этот код говорит компьютеру: "Если выражению или переменной соответст- вует значение True, выполни набор команд Инструкции!. Если или перемен- ной соответствует значение F a i s e , проверь, какое значение соответствует пере- менной или выражению Условие2. Если выполни набор команд F a l s e — проверяй УсловиеЗ. Если ему соответствует значение выполняй набор команд ИнструкцииЗ. Но если ни одно из условий не ничего не делай и пере- ходи к следующим кодам программы." На общее количество строк использованных одним и тем же огра- ничений не поэтому их можно добавить столько, сколько нужно для учета всех возможных вариантов. Но не усложняйте себе жизнь и занимайтесь построением слишком больших логических конструкций (если не выполняется условие номер 27, тогда...) Помните; все гениальное — просто. Если должен быть выбран хотя бы один вариант Даже если вы используя оператор I t , целое множество возмож- ных вариантов, в соответствии с которыми будут выполняться те или иные действия, рав- 240 Часть V. Создание разветвлений и циклов но может случиться так, что ни одно из действий выполнено не будет (если не будет выпол- няться ни одно из предложенных условий). Если же вы хотите быть уверены, что хоть какие- то инструкции обязательно будут выполнены, наберите их последними и поставьте перед ни- ми ключевое слово E l s e : If Then Условие2 Then Инструкции2 E l s e ИнструкцииЗ End If Этот код говорит компьютеру: выражению или переменной соответст- вует значение выполни набор команд Инструкции!. Если выражению или перемен- ной соответствует значение F a l s e , проверь, какое значение соответствует пере- менной или выражению Если выполни набор команд если — набор команд ИнструкцииЗ". вложенных Если какой-либо действия должны быть предприняты только в случае выполнения сразу нескольких условий, можно вложить несколько операторов один в другой и после- довательно проверить каждое из условий. Например: If Возраст > 15 Then If ID > 120 Then нам подходите" End If Else = "Извини, малыш, эта работа не для тебя" End If Посмотрим, что произойдет, если переменная Возраст будет иметь значение а менная 147. 1. Visual Basic проверит условие первой строки, определит, что оно вы- полняется (18 > 15), и перейдет ко второй строке. 2. Второе условие также будет выполняться (147 > поэтому свойству Text объекта t x t M e s s a g e будет присвоено текстовое значение Вы нам дите. Теперь рассмотрим ситуацию, когда значению переменной В о з р а с т будет соответство- вать число а переменной число 110. 1. Visual Basic проверит условие первой строки, определит, что оно вы- полняется > 15), и перейдет ко второй строке. 2. Второе условие выполняться не будет (выражению > 120 соответствует логическое значение F a l s e ) , поэтому ничего не произойдет и свойству Text объекта t x t M e s s a g e никакое новое значение присвоено не будет. Глава 22. Условные операторы 241 И наконец, рассмотрим ситуацию, когда переменная Возраст будет иметь значение 14, а переменная значение 1. Visual Basic проверит условие первой строки, определит, что оно не вы- полняется (13 меньше 15) и перейдет к строке с ключевым словом Else. 2. Свойству Text объекта txtMessage будет присвоено текстовое значение Извини, малыш, эта работа пока не для тебя, и выполнение ус- ловного оператора на этом будет закончено. Обратите внимание, что в случае невыполнения первого условия, второе условие даже на проверяется. Очень внимательно относитесь к вложенным друг в друга условным операторам, поскольку набранный код может работать не совсем так, как вы себе это представ- ляете. Например, вы наверняка могли бы упустить из виду второй рассмотренный вариант, при котором свойству Text объекта txtMessage не присваивается ника- кое значение. 1. на проверку полученных вами знаний Это такие значения, которые поддаются нормальной б. вы можете понять, что означает то или иное значение, значит, оно логично. в. компьютер может что вы для него набрали, считается логическим. г. Это значения й F a l s e , которые используются при проверке условий ус- ловными операторами. 2. Какой из предложенных вариантов идентичен коду = False Then? If Проблемы Then "А у кого их •не б. Проблемы Then "Продайте их в. If Not Проблемы Then If Проблемы = False And True "Ребята, не создавайте таким кодом проблему для ком- пьютера 242 Часть V. Создание разветвлений и циклов Глава 23 Оператор выбора Select Case > Знакомство с оператором S e l e c t Case Как того, чтобы программа выполнила хотя бы одну из возможных инструкций > Использование вложенных условных операторов сновным недостатком рассмотренных в предыдущей главе условных операторов является их громоздкая структура и сложность для написания, чтения и понимания. Попробуйте понять смысл, скажем, этих инструкций: If = 5 Then = "Отлично" Оценка = 4 Then = "Хорошо, но можно лучше" E l s e l f Оценка = 3 Then = способны на еще р а з " Elself Оценка = 2 Then = "Нет, сегодня не Ваш день" End I f Вы спросите, есть ли какая-то альтернатива этой конструкции и можно ли вместо опера- тора использовать нечто более понятное и наглядное? Конечно, альтернатива есть, и не одна. Можно, в частности забросить Visual Basic и попробовать изучить какой-нибудь другой язык программирования. Но разумней будет про- сто воспользоваться оператором выбора S e l e c t C a s e . использование Select Case Оператор S e l e c t Case выглядит следующим образом: Select Case Case X Case Y Case Z End Данный оператор говорит Visual Basic "Проверь значение переменной меннсй. Ехли оно совпадает со значением X, выполни набор команд Инструкции!, если со значением Y набор команд Инструкции2, если со значением Z — набор команд Инст- Глава 23. Оператор выбора Select Case 243 Если в рассмотренном в начале главы примере заменить условный оператор оператором выбора S e l e c t Case, код программы будет выглядеть намного проще: Select Case Оценка Case 5 = "Отлично" Case 4 = "Хорошо, но можно лучше" Case 3 = "Вы способны на большее,_ попробуйте еще раз" Case 2 = "Нет, сегодня не Ваш день" End Select Обратите внимание, что здесь уже не нужно каждый раз повторять такие слова, как Then. В операторе S e l e c t Case нет ограничения на количество строк C a s e , поэтому вы мо- жете создать их столько, сколько нужно для учета всех возможных вариантов. использование Select Case с Обычно оператор S e l e c t C a s e проверяет точное совпадение значения перемен- ной с несколькими заданными значениями. Но если использовать его совместно с операторами сравнения, такими как <, <= и о, можно проверять принадлежность значения переменной к разным диапазонам значений. Чтобы оператор S e l e c t Case и операторы сравнения можно было использовать вместе, перед каждым оператором сравнения нужно добавить ключевое слово i s : Select Case Показатель Case is > 20 = "Хороший результат" Case is > 10 = "Попробуйте еще раз" End Select Этому коду эквивалентен код с использованием оператора If Показатель > 20 Then = "Хороший результат" Elself Показатель > 10 Then = "Попробуйте еще раз" End If Если Может случиться так, что значение переменной не будет совпадать ни с одним из пред- ложенных значений или что оно не будет относиться ни к одному из предложенных диапазо- 244 Часть V. Создание разветвлений и циклов нов. Но как быть, если нужно, чтобы хотя бы какой-то один набор инструкций был выполнен в любом случае. Тогда, как и при использовании оператора следует вве- сти ключевое слово Else: S e l e c t Case Показатель Case 1 Case 2 Case 3 Case El.se End S e l e c t Этот код говорит компьютеру: значение переменной Показатель совпада- ет с числом 1, выполни набор команд если с числом набор команд а если с числом 3 — набор команд ИнструкцииЗ. Если значение переменной Показатель не совпадает ни с одним из этих трех чисел, выполни последний набор команд". Маленькие дети очень любят играть с матрешками. Когда они открывают одну матрешку, внутри находят другую, во второй — еще одну, потом еще одну. И так они доходят до самой маленькой, которая уже не открывается. Оператор S e l e c t Case обычно включает в себя несколько наборов простых инструкций: S e l e c t Case ID Case 123 = True Case 124 = True Case 125 = True End S e l e c t Это простейший вариант. Но он, подобно матрешкам, может содержать несколько вло- женных друг в друга операторов S e l e c t Case и Рассмотрим такой пример: S e l e c t Case ID Case Case Возраст is <= 9 = "У Вас очень умный ребенок" End S e l e c t End S e l e c t Вот как этот код будет воспринят компьютером. Глава 23. Оператор выбора Select Case 245 1. Первая строка говорит: "Проверь значение переменной ID и переходи на вто- рую строку". 2. Вторая строка: "Если значение переменной ID совпадает с числом 120, пере- ходи на третью строку. Если переменная имеет любое другое значение или 3 4), переходи сразу на седьмую строку". 3. Третья строка: "Проверь значение переменной Возраст и переходи на чет- вертую строку". 4. Четвертая строка: "Если значение переменной Возраст равно или меньше числа 9, переходи на пятую строку, в противном случае переходи сразу на шестую строку". 5. Пятая строка: "Присвой свойству Text объекта значение У Вас очень умный ребенок". 6. Шестая строка: "Этой строкой заканчивается выполнение вложенного опера- тора S e l e c t Case". 7. Седьмая строка: "Этой строкой заканчивается выполнение первого оператора S e l e c t Case". Visual Basic предоставляет полную свободу в использовании условных операторов и операторов выбора, позволяя применять операторы внутри операторов S e l e c t Case, а операторы S e l e c t Case операторов Теоретически использовать можно любое количество вложенных друг в друга опе- раторов, но чем меньше вы их задействуете, тем проще будут коды вашей про- граммы для чтения и понимания. В общем случае считается, что если кто-то ис- пользует больше трех вложенных друг в друга операторов, то, скорее всего, этот человек просто не понимает, что делает. В случае применения нескольких вложенных операторов добавляйте отступы, что- бы легче было понять, где каждый из операторов начинается и заканчивается. Ведь разобраться в кодах, набранных без отступов, очень непросто: S e l e c t Case Баллы Сазе 1200 If Имя = "Джон" Then = "Да, сегодня ты не в форме" Имя "Джессика" Then = "Поздравляю! Ты делаешь успехи" End If End S e l e c t А вот те же коды, но с отступами в начале строк: Select Case Баллы Case 120G If Имя = "Джон" Then "Да, брат, сегодня ты не в форме" Elself Имя = "Джессика" Then = "Поздравляю! Ты делаешь успехи" End If End Select Часть V. Создание разветвлений и циклов Для компьютера оба эти фрагмента абсолютно одинаковы. Но с точки зрения программи- ста, как и любого другого человека, второй вариант намного удобней и понятней. Существует ли ограничение на количество в друга операторов и Select Case? Тест на проверку полученных вами знаний 2. Что нужно сделать, чтобы коды вложенных друг в друга операторов стали легче для чте- ния и понимания? а. Нужно вообще отказаться от использова- ния вложенных операторов, тогда все бу- дет предельно просто и понятно. б. Все команды следует набрать на русском языке, и картина несколько прояснится, в. Нужно использовать минимальное количе- ство вложенных операторов и добавлять отступы для выделения каждого из них. г. Необходимо составить краткий конспект этой главы и добавить к коду програм- мы в качестве комментария. а. Да. не имеющим двухлет- него стажа работы, запрещается вклады- вать более 200 операторов в день (Минздрав запрещает). б. Рекомендуется использовать не более 300 вложенных в друга операторов, так как замечено, что попытки написать код с большим числом вложенных операторов превращаются в пагубную привычку, в. Нет. Их можно вкладывать хоть до двух ча- сов ночи. г. Такого ограничения не существует, но если используется слишком много вложенных операторов, код программы становится трудно читаемым и малопонятным. |