Программирование >>  Проектирование интерфейса пользователя 

1 ... 20 21 22 [ 23 ] 24 25 26 ... 153


Листинг 5.2. Пример вложенных выражений If

1: Sub NestedlfTest i

13 :

17 :

Const PROMPT = Введите имя пользователя:

Const TITLE = пользователя Dim UserName As String

UserName = InputBox( PROMPT, TITLE, UserName If (UserName = Admin ) Then

одна или несколько строк кода

Else

If (UserName = ADMIN ) Then

одна или несколько строк кода

Else

(UserName = guest ) Then

одна или несколько строк кода End If End If End If End Sub

Строки листинга демонстрируют применение вложенных условных выражений, анализирующих содержимое переменной UserName. Хотя по существу ничего сложного в этом коде нет, увлекаться им не стоит. А если вас все-таки угораздило написать что-то подобное, по крайней мере, позаботьтесь о выравнивании соответствующих слов If, Else и End If по горизонтали. Отметим, что такой стиль программирования нельзя назвать положительным, поэтому нужно избавляться от него всеми возможными средствами.

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

Будьте аккуратны

Код, приведенный в листинге 5.2, заслуживает внимания, но это, вероятно, простейший пример программ, содержащих вложенные выражения If. Если конструкция усложняется, она превращается в ребус, недоступный для понимания.

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

В следующем разделе будет рассказано об использовании выражения на основе служебного слова Case. Мы также рассмотрим приемы упрощения кода, расположенного внутри условной конструкции - в промежутках между словами If и Else; Else и End If с помощью вынесения его в отдельные функции. Чтобы детальнее ознакомиться с функциями, обратитесь к главе 8.

Листинг 5.2 - прекрасная иллюстрация того, как может выглядеть код, упорядоченный с помощью функций. Достаточно только вместо строк комментариев, обозначенных оператором апострофа (), вставить вызовы соответствующих функций. (Напомним - более подробные сведения о функциях приведены в главе 8-й час. Декомпозиция



Как избавиться от вложенных условных выражений

ЕСЛИ программа содержит несколько вложенных конструкций If, подумайте о замене их условным выражением Select Case. (Далее для краткости будем называть его выражением Select либо Case.) Конструкция Select имеет следующий синтаксис.

Select Case значение Case условие!

код для Casel Case условие 2

код для Case2

о ▲

Case условие N

код для CaseN

[Case Else]

необязательный код для Case Else

End Select

Конструкция Select начинается со служебных слов Select Case, за которыми следует наименование переменной любого простого типа данных, например string, integer или Double. В последней строке содержится словосочетание End Select. Между первой и последней строками может находиться произвольное число строк вида Case Значение, где в качестве значения используется именованная или литеральная константа того же типа, что и тестируемая переменная. Каждая такая строка обозначает ситуацию равенства переменной и указанной здесь константы. Далее приводится набор строк

кода, отвечающий конкретному случаю равенства. Частный случай конструкции Select

с единственной строкой Case в точности аналогичен выражению If. После

перечисления всех случаев равенства разрешается включить в выражение необязательный раздел Case Else (факт ее необязательности отмечен в описании синтаксиса квадратными скобками). Этот раздел - рекомендуем всегда особо изучать целесообразность его использования - отвечает тому случаю, когда содержимое переменной не равно ни одному из значений, явно оговоренных выше посредством выражений Case.

Листинг 5.3 демонстрирует пример упрощения кода, рассмотренного нами ранее

(см. листинг 5.2). Многочисленные выражения If заменены единой доходчивой конструкцией Select.

Листинг 5.3. Пример замены вложенных выражений If конструкцией Select

1: Sub SelectCaseTest ( )

2: Const PROMPT Введите имя пользователя:

3: Const TITLE = 1я пользователя

4: Const WELCOME ADMIN USER = Администратор, добро пожаловать!

5: Const WELCOME GUEST OSER = Гость, добро пожаловать!

6: Const WELCO!ylE SUPER USER = Суперпользователь, добро пожаловать!

7: Const BAD USER = А ьам сюда нельзя!

8: Dim UserName As String

9: UserName = guest

10: UserName = InputBox ( PROMPT, TITLE, UserName )

11: UserName = UCase( UserName )

12: Select Case UserName



13: Case ADMIN

14: MsgBox WELCOME ADMIN USER

15: Case GUEST

16: MsgBox WELCOME GUEST USER

17: Case pkiramel

18: MsgBox WELCOME SUPER USER

19: Case Else

20: MsgBox BAD USER, vbExclamation

21: End Select 22: End Sub

В строках с 2-7 объявляются и инициализируются именованные кон-1 мты, которые будут использованы далее. Строка 8 содержит объявление переменной UserName типа String, а строка 9 - выражение ее инициализации значением guest . Рекомендуется по возможности инициализировать переменные сразу же после их объявления. Строка 10 содержит вызов функции InputBox, которая открывает диалоговое окно запроса. В строке 11 используется стандартная функции se, служащая для преобразования символов строки аргумента к верхнему регистру - это позволит ограничиться сопоставлением значения переменной со строковыми литералами, набранными в верхнем регистре. В строке 12 берет начало выражение Select Case, которое предназначено для анализа содержимого переменной UserName. Программа будет последовательно проверять каждое Case-условие равенства до тех пор, пока не найдет совпадения; в противном случае выполнится код секции Case Else. Если UserName равна ADMIN , откроется окно сообщения, отображающее значение константы WELCOME ADMIN USER. Если UserName равна GUEST , в окне появится приветствие гостю. Если же введенное пользователем имя не совпадает ни с ADMIN , ни с GUEST , ни с pkimmel , тогда выполнится код раздела Case Else, т.е. откроется окно, отображающее значение константы BADUSER (рис. 5.2).


Рис. 5.2. Пример окна сообщения, вызванного посредством процедуры MsgBox с указанием имен стандартной пиктограммы предупреждения

Access предоставляет в ваше распоряжение обширную библиотеку стандартных подпрограмм и функций. Многие из них, включая знакомую вам процедуру MsgBox, предусматривают возможность задания большого числа дополнительных необязательных параметров. Если вы внимательно изучите код листинга 5.3, то обратите внимание, что MsgBox дважды вызывается с указанием единственного параметра типа String, а в строке 18 ей передается уже два параметра. Второй из них - это предопределенная константа vbExclamation, обозначающая одну из многочисленных стандартных пиктограмм (ее легко заметить в левой части рис. 5.2). Чтобы научиться пользоваться встроенными процедурами и функциями, необходима практика работы с материалами оперативной справочной системы Access. Если бы в моем распоряжении было не менее тысячи страниц книги, я рассказал бы обо всем гораздо подробнее, хотя, вероятно, это лишено особого смысла, поскольку запомнить такой объем информации почти невозможно. Нельзя запастись впрок знаниями такого характера - почаще обращайтесь с вопросами к справочной системе Microsoft Office.



1 ... 20 21 22 [ 23 ] 24 25 26 ... 153

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