Оператор Select Case
Оператор Select Case идеально подходят для проверки одного и того же значения, которое нужно много раз сравнить с разными выражениями. Синтаксис его очень прост:
Select Case sDayOfWeek
MsgBox «Салат из шпината»
MsgBox «Салат из морской капусты»
MsgBox «На этот день у нас ничего не предусмотрено»
Некоторые замечания по поводу Select Case:
· строка Case «Понедельник» на самом деле означает Case sDayOfWeek = «Понедельник», просто такое равенство подразумевается по умолчанию. Но вам ничего не мешает использовать другой оператор сравнения или целый набор таких операторов:
Case 0 To 5, 15, Is > 55
MsgBox «Напомнить о прививках»
- · Слово Is при этом можно пропустить — компилятор VBA добавит это ключевое слово за Вас. Несколько критериев в Case объединяются аналогично операторы OR — то есть выполнение пойдет по этой ветви, если тестируемое значение будет удовлетворять хотя бы одному из критериев. Критерии для сравнения разделяются запятыми.
- · при использовании диапазона (0 To 5) включаются и границы диапазона (в данном случае 0 и 5).
Оператор GoTo
Оператор GoTo в VBA, ситуации применения GoTo
Оператор GoTo — это оператор безусловного перехода, когда ход выполнения программы без проверки каких-либо условий перепрыгивает на метку в коде. Пример применения GoTo может выглядеть так:
MsgBox «Едем на метро»
EngineNotStarted: — это метка, для нее используется имя (выбираемое по правилам назначения имен для переменных), которое оканчивается на двоеточие.
Иногда использование GoTo очень удобно — например, когда нам нужно добиваться от пользователя ввода правильного значения неизвестное число раз. Однако использование GoTo категорически не рекомендуется, потому что код становится трудночитаемым. Чаще всего GoTo можно заменить на конструкцию Do While или на вызов функции из самой себя.
Урок 8. Оператор Select … Case и списки ListBox
На этом занятии будет описан элемент управления ListBox (список). Вы научитесь обрабатывать выбор пользователя из списка.
В Visual Basic.net для того, чтобы предоставить пользователю список вариантов, можно отобразить список в элементах управления ListBox(список) или ComboBox (комбинированный список). Каждый из них мы рассмотрим отдельно.
В этом уроке остановимся на элементе управления ListBox. На одном из следующих уроков будет описан элемент ComboBox.
Для обработки выбора пользователя из списка можно использовать условный оператор if или оператор выбора Select . . . Case. В этом уроке для этой цели будет показано применение оператора Select . . . Case.
Краткая справочная информация
Элемент управления ListBox (список) отображает список элементов, в котором пользователь может выбрать один или несколько элементов. Прямое редактирование списка невозможно. Когда пользователь выбирает элемент, он выделяется в списке. .
Элемент управления ComboBox представляет собой комбинацию текстового поля и списка. По умолчанию поле со списком отображается как текстовое поле, но если пользователь щелкнет стрелку раскрывающегося списка, то появится список. Позволяет выбирать из списка заранее определенную строку или вводить новое значение.
Процедуры добавления элементов в списки и поля со списком похожи.
Записи в список добавляются одним из способов:
- в режиме конструктора с помощью коллекции Items из окна Свойства;
- в программном коде с помощью метода ADD.
Итак, вернемся к нашей задаче. На этом уроке мы рассмотрим только первый вид списка — список ListBox.
В проекте будет использоваться свойства объекта ListBox, которые не включены в список свойств (не могут быть определены на этапе разработки формы), но которые можно применять этапе разработки программного кода.
Перечислим эти свойства.
Свойства | Описание |
SelectedIndex | Номер выбранного элемента списка. Нумерация ведется от нуля. |
SelectedItem | Значение выбранного элемента |
ItemsCount | Число элементов в списке |
Items | Позволяет создать список во время разработки. |
SelectionMode | Определяет, сколько элементов списка можно выбрать одновременно. |
Для обработки выбора пользователя будет использоваться оператор выбора Select Case.
Краткие сведения об операторе Select Case
Оператор Select Case используется тогда, когда на основе значения одной переменной или свойства производится выбор из трех или более ветвей алгоритма. В этом случае он обычно гораздо яснее, чем вложенная структура If…Then, и более эффективен.
Однако когда выбор зависит от значений нескольких различных переменных, то нужно использовать структуру выбора If…Then.
В этом уроке показано использование оператора выбора Select Case для обработки ввода из поля списка ListBox.
Оператор Select . . . Case
Синтаксис оператора выбора Select . . .Case на языке Visual Basic.NET:
Select Case переменная Case значение1 Операторы, исполняемые, если значение переменной совпадает со значением1 Case значение2 Операторы, исполняемые, если значение переменной совпадает со значением2 Case Else Операторы, исполняемые, если со значением переменной не совпадает ни один из вариантов End Select
Переходим к практическим заданиям.
Проект «Приветствие»
Создайте проект, который отображает приветствие на языке той страны, которую выбирают из списка. Для выбора одного из пяти языков использовать структуру Select Case.
- Создайте новый проект c именем «Приветствие».
- Создайте интерфейс по образцу.
- Установите свойства объектов в соответствии со следующей таблицей.
Объект Свойство Значение Form1 Text «Приветствие» Label1 Text «Выберите страну» Label2 Text пусто Label3 BorderStyle Fixed3D ForeColor Red Text пусто Button1 Text «Выход» - Теперь нужно написать программный код для заполнения списка.Сделайте двойной щелчок мышью на форме. В Редакторе кода появится процедура события Form1_Load.Для заполнения списка введите следующий код:
ListBox1.Items.Add("Англия") ListBox1.Items.Add("Германия") ListBox1.Items.Add("Мексика") ListBox1.Items.Add("Италия") ListBox1.Items.Add("Россия")
Label2.Text = ListBox1.Text Select Case ListBox1.SelectedIndex Case 0 Label3.Text = "Hello, programmer" Case 1 Label3.Text = "Hallo, programmierer" Case 2 Label3.Text = "Hola, programador" Case 3 Label3.Text = "Ciao, programmatore" Case 4 Label3.Text = "Здравствуй, программист" End Select
Первая строка кода отображает текст выбранного элемента списка в надписи Label2 (присваивает свойству Label2.Text значение свойства ListBox1.Text, которое содержит текст элемента, выбранного в списке.) Остальные строки являются частью оператора выбора Select Case. Оператор Select Case тестирует значение свойства ListBox1.SelectedIndex (номер выбранного элемента списка), определяет, порядковый номер строки, которую выбрал пользователь, и выводит соответствующее приветствие в надписи Label3 (изменяет значение свойства Label3.Text).
На этом уроке было показано, как использовать элемент управления ListBox (список) для обработки выбора пользователя.
Кроме того, на этом уроке закончилось описание оператора ветвления If…Then и оператора выбора Select Case.
Однако у вас будет еще несколько возможностей поработать с ними. If…Then и Select Case — это два из наиболее важных и ключевых механизмов Visual Basic, и вы обнаружите, что будете использовать их почти в каждой программе.
На следующем занятии вы узнаете, как обработать событие MouseHover (наведение указателя мыши) для списка ListBox.
Когда следует использовать оператор select case
If condition Then command1
Однострочный оператор «If» состоит из одной строки и используется для выполнения только одной из двух команд в зависимости от условия.
Здесь condition представляет собой любое выражение или функцию, истинность которой будет оцениваться:
· Условие, построенное с помощью операторов сравнения.
· Переменная логического типа.
· Любая функция логического типа.
«Command1» – команда, которую необходимо выполнить, если «condition» будет иметь значение «True» (истина). А «command2» – команда, выполняющаяся при «condition» равным «False» (ложь). При этом обе команды никогда не выполнятся одновременно!
Если возникает необходимость выполнить не одну, а сразу несколько команд, то пользуются блочным оператором «If» (см. табл. 8). Принцип действия блочного оператора условия полностью аналогичен работе однострочного оператора. Единственное отличие – наличие в каждом из блоков нескольких команд.
Помимо этого существует краткая форма оператора «If». Она заключается в том, что блок «Else» является необязательным (см. табл. 8). При этом принцип работы остается неизменным. При «condition» равным «False» управление будет передано следующему оператору, стоящему следом за оператором «If».
Если нужно проверить какое-либо условие при выполнении другого условия, используют вложенные операторы «If»:
If condition Then
If condition Then
4.2. Оператор «Select Case»
Принять решение можно и с помощью оператора «Select C ase». Он позволяет выбрать одну из нескольких групп команд в зависимости от значения некоторой переменной:
Select Case TestValue
Вначале в операторе «Select Case» указывается выражение, значение которого будет проверяться « TestValue ». Затем в наборе операторов «Case» указываются возможные значения (Value1 и др.). Если вычисленное значение выражения совпадет со значением, указанным в конкретном операторе «Case», выполнятся команды, следующие за этим оператором. Операторы «Case» будут перебираться последовательно, до первого совпадения. Если не произойдет ни одного совпадения, то выполнятся команды, стоящие после оператора «Case Else», который обязательно должен стоять последним в списке. Тем не менее, этот оператор является необязательным, и при отсутствии совпадений работа будет передана следующему, ниже стоящему оператору.
В операторе «Select Case» можно использовать и операторы сравнения. В этом случае необходимо использовать ключевое слово «Is»:
Select Case TestValue
Case Is >= Value2
или можно использовать диапазоны значений (ключевое слово «To»):
Select Case TestValue%
Case 100 To 200
Расширить возможность всех условных операторов можно с помощью логических выражений, являющихся полными аналогами условий (см. раздел «Математические и логические операторы»). Такие условия принято называть составными. Применение составных и вложенных условий позволяет решать самые запутанные задачи.
Контрольные вопросы для самопроверки
- Какие условные операторы вы знаете?
- В чем вы видите разницу операторов « If » и « Select Case »?
- Какие формы записи оператора « If » вы знаете?
- Какие формы записи оператора « Select Case » вы знаете?
- Что такое «вложенное» и «составное условие»? Приведите примеры.
- Составьте условие для проверки принадлежности точки А( x , y ) приведенной ниже фигуре. Какими условиями вы пользовались и почему?
Оператор Case в Си
Изучая операторы в Си, нужно учитывать, что их очень много. Все они имеют одну цель – управление операндами (объектами, которыми можно управлять в процессе обработки имеющегося кода). При работе с потоками и крупными приложениями нужно использовать конструкцию типа case. Чаще встречается связка «switch-case». Именно о ней зайдет речь далее. Информация будет одинаково полезна и новичкам, и опытным разработчикам.
Определение
Оператор switch case в C работает подобно if…else. Это – своеобразная конструкция выбора. Используется как механизм потока управления, определяющий дальнейшее исполнение кода, отталкиваясь от значений переменных или выражений.
Switch дает возможность организации тестирования нескольких прописанных условий. Тот или иной блок будет выполняться, если значение, полученное на «выходе» является истиной. Работает как if…else, хотя имеет более простой синтаксис. Switch Case – конструкция, которая обладает более простой системой управления. Используется в СИ-семействе достаточно часто.
Инструкция – общий вид
If else и switch c – операторы, схожие между собой по действию. Это – своеобразный цикл, который будет проверять достоверность условия, выполняя заданную операцию. Структура Switch Case в Си будет такой:
Switch (желаемое выражение)
case 1 контекст: операторы
case 2 контекст: операторы
case 3 контекст: операторы
Структура состоит из двух элементов:
- заголовка switch;
- тела инструкции, которое записано в составном операторе (после фигурных скобок, внутри).
В зависимости от значения соответствующего выражения будет меняться выполняемая ветка кода. Выражение должно содержать только целочисленные параметры (число) или символьные данные. Это – единственное ограничение, накладываемое на оператор switch case c.
Принцип работы
Рассматриваемое выражение базируется на простой логике оценки каждого блока case. Начинается процесс с вычисления выражения, прописанного внутри блока переключателя. Далее сравнивается значение из имеющегося блока с каждым case.
При обнаружении совпадений происходит реализация кода, написанного в «кейсе». Происходит это до тех пор, пока система не встретит ключевое слово. Это – оператор break.
Если совпадений в конструкции switch-case нет, код переходит к оператору по умолчанию, выполняя условия, предусмотренные им. Компонент изначально не является обязательным. Его можно исключить, если нет определенных инструкций для несоответствующего сценария.
Чтобы использование «множественного выбора» (рассматриваемой конструкции) функционировало нормально, внутри каждого case прописывают break. Это поможет избежать выполнения всех инструкций после соответствующего «истинного» блока.
Примеры заголовков и ветки case
Далее – примеры записи switch case default c, которые являются правильными и неправильными. Эта информация поможет избежать ошибок, when новичок осваивает соответствующий функционал языка:
switch (c) – правильно;
switch (g) – неправильно, речь идет о вещественной переменной;
switch (s) – неправильно, символьная переменная;
switch ((a+c)+2) – правильно, выражение целочисленного характера.
В фигурных скобках можно записывать несколько блоков. Там может быть далеко не одна функция (или две), а значительно больше. Каждая такая команда – это определенный выбор. Из-за этого соответствующая запись носит название «множественного».
При составлении case существует одно ограничение – константы ветки должны отличаться. When в коде встречаются сходства, он выдает ошибку. Поэтому перед запуском программы проводят проверку значений case.
Вложенность
In Switch выражении структура предусматривает вложенность. Это – переключение внутри конструкции. Функция работает, если switch-запись будет привязываться к значениям of внешнего переключателя.
Вот – example of множественного выбора, где можно использовать вложенность:
- Реализовываются конструкторы. Интересующий «множественный» цикл нужно использовать два раза.
- Предложенный синтаксис первой записью в functions проводит проверку равенства dept 1.
- Если выражение имеет «истину», следуют переходы ко второму блоку. Там происходит проверка of действительности кода доступа.
- When dept имеет значение false, код будет пользоваться function default (условием по умолчанию).
Использование записи switch case int даже с вложениями – несколько условий в одном, легко реализуемых. Особенно если изучить конструкцию if else и наглядные примеры множественной выборки.
Пример с отделами доступа
Ниже – examples использования рассмотренного ранее примера с правильным и неправильным кодом отдела доступа:
Первый цикл – в нем верен и отдел, и код доступа. Выполнение приложение никогда не достигнет cases по умолчанию. Всегда будет обрабатываться команда. Применение ключа Break здесь помогает остановить приложение при необходимости.
Второй пример – ситуация, при которых и код доступа, и отдел неверные. Цикл switch case break c перейдет к первому блоку по умолчанию.
Рекомендации – как лучше использовать
Для того, чтобы не запутаться в записи оператора, рекомендуется:
- Разобраться in syntax конструкции switch c. Он прост.
- Присваивать «кейсам» уникальные значения. Иначе цикл не будет обработан in codes.
- Каждый блок заканчивать ключевым словом break. Этот прием позволит избежать образования петель.
- Использовать int и иные целочисленные параметры (включая zero) в процессе. Также допускаются символы. Остальные типы данных не поддерживаются.
Для сокращения объема кода подходит оператор switch в Си с вложениями. Поддерживается многоуровневая вложенность. Образцом послужит пример выше.
А еще программист должен подумать, что делать, если ни одно условие цикла не истинно. В данном случае рекомендуется предусмотреть оператор по умолчанию.
Быстрое изучение
Switch Case d c – запись, которая известна не всем новичкам. Чтобы лучше разобраться в ней, можно посмотреть туториалы. Пример – тут .
Быстро разобраться в switch case int и иных операторах помогут специализированные компьютерные курсы. Организовываются дистанционно. Подойдут новичкам и опытным программистам. В конце программы выдается электронный сертификат.
Интересует разработка на C? Обратите внимание на курс «Программист C» в Otus.