Для каждой задачи составить программу с ветвящейся структурой используя оператор выбора select case

= Мир MS Excel/Статьи об Excel

МЕНЮ САЙТА
Информация о сайте
Развите сайта
Приемы работы
Инструменты и настройки
Интеграция
Готовые решения
Вопросы и решения
Работа и общение
Работа форума и сайта

Библиотека
Книги по Excel
Книги по VBA
Видеосалон
Справочники

Разработчик
КАТЕГОРИИ РАЗДЕЛА
Создание, поля, свойства, события, когда использовать
Создание надстроек для ексель на .net, вызов компонентов .net
Оператор ветвления «Select Case»

При создании сложных программ один из ключевых моментов — возможность предусмотреть несколько вариантов развития событий. Самый простой и классический пример — оператор «If . Then . Else . End», который позволяет выбрать одно из двух действий в зависимости от результатов проверки каких-либо значений.

Бывает, что в результате такой проверки необходимо выбрать из множества вариантов. Один из выходов: добавить множество «. ElseIf . «, что несколько усложняет синтаксис программы (лёгкость её чтения). Однако это очень мощный оператор, открывающий большие возможности. Подробнее о нём можно узнать здесь.

Язык Паскаль с нуля | #8 Зачем нужен оператор выбора case в паскаль?

Альтернативой оператору «If . End» служит оператор «Select Case» (с английского «Select Case» можно перевести как «Выбор Ситуации»), который упрощает восприятие кода «на глаз». И если «If . End» оператор в каждом своём «ElseIf» вынужден обращаться к проверяемым значениям снова и снова (допустим, выражение каждый раз одинаковое), то «Select Case» делает это только один раз, что позволяет последнему на больших массивах данных работать быстрее. Этот оператор позволяет удобно задать ветвление программы из одной точки в большое количество веток. То есть в основном применяется при множественных условиях проверки, когда проверяемых условий больше двух.

Структура оператора «Select Case».

Давайте посмотрим, как выглядит обобщённая структура оператора и разберём, что есть что (разные примеры частного использования кода будут приведены в конце статьи):

Select Case [Проверяемое Значение] Case [Конкретное Значение] [Некоторое Действие] Case Else [Некоторое Действие Х] End Select

В качестве куска [Значение] можно вставить любую переменную или свойство, значение которой или которого Вы можете проверить. Можно также проверять значение конкретной ячейки. При этом работать можно не только с числами, но и с текстами. И даже с булевыми значениями TRUE/FALSE («Правда» и «Ложь»), о чем знают не все.

[Конкретное Значение] — это то, с чем сравнивается [Проверяемое Значение]. И, если одно удовлетворяет другому, то выполняется [Некоторое Действие]. Есть несколько вариантов записи для блока [Конкретное Значение]. Для текстовых и числовых значений можно записывать разные значения через запятую:

Case 3, 4, 5, «да», «нет»

Для чисел можно выбирать диапазоны:

Case 3 to 10 ‘От 3-х до 10-ти, включая сами 3 и 10.

Также для чисел можно использовать логический оператор сравнения вместе с частицей «Is»:

Паскаль с нуля [ч9]. Оператор выбора case-of и решение задачи про дни недели


Case Is < 2 ‘Меньше 2, НЕ включая 2 Case Is = 3 ‘Равно 3-м. Избыточная запись, достаточно Case 3 Case Is >= 4 ‘Больше либо равно 4 Case Is <> 0 ‘Не равно нулю

Читайте также:
Ерп программа для бухгалтера отзывы

Допустимо использовать и логические операторы, что позволит предусматривать сложнейшие случаи и проводить параллельные сравнения с другими переменными. Кроме оператора «Or», который заменяется обычной запятой.

Case . And . Case Not .

[Некоторое Действие] может быть абсолютно любым. Если вы его пропускаете — то для данного случая программа будет бездействовать. «Case [Конкретное Значение]» вместе с частью [Некоторое Действие] складываются в один блок:

Case [Конкретное Значение] [Некоторое Действие]

Таких блоков может быть любое количество, которое уложится в предельные размеры процедуры (она должна весить не более 64 килобайт). Полезно знать, что VBA просматривает соответствие [Конкретного Значения] и [Проверяемого Значения] вдоль по блокам сверху вниз. То есть, у Вас может быть два блока с одинаковым «Case», но выполнится только тот, который будет раньше найден программой при просмотре кода сверху вниз.

Case Else — это все другие случаи, которые не подошли ни под одно другое [Конкретное Значение] во всех блоках оператора «Select Case». Если блок «Case Else» отсутствует и ни один другой блок не подошёл, то программа делает логичное «ничего». Case Else должен быть последним проверяемым случаем среди всех блоков проверки в операторе. После него других блоков быть не должно, иначе получим синтаксическую ошибку «Case without Select Case».

В конце оператора должен стоять «End Select», который служит «точкой» в «предложении» оператора.

Примеры использования.

Рассмотрим несколько примеров использования кода и начнём с самого простого. В первом примере в зависимости от значения Х выводится сообщение.

Sub SelectCase_example_1() Dim X As Long X = 1 ‘Можете изменять эту цифру и смотреть, что получится. Select Case X Case 1 MsgBox «Один» Case 2 MsgBox «Два» Case 3 MsgBox «Три» Case Else MsgBox «Выбрано что-то другое» End Select End Sub

Второй пример показывает некоторые виды записи проверяемого значения. В зависимости от количества листов в книге с макросом выводится разное сообщение. Обратите внимание, что если листов в книге 7, то первым сработает “Case 7”, хотя условие “Case 5 to 12” тоже подходит, но стоит позже.

Sub SelectCase_example_2() ‘Введём переменную и посчитаем количество листов в текущей книге: Dim X As Long X = ThisWorkbook.Sheets.Count Select Case X ‘В зависимости от количества листов в книге выведем сообщение. Case 1 ‘Если 1 лист, то.

MsgBox «Один лист в книге» Case 2, 3, 4 ‘Если листов 2 или 3 или 4 MsgBox «Несколько листов в книге» Case 7 ‘Если листов 7 MsgBox «Красивое количество листов» Case 5 To 12 ‘Если листов от 5 до 12 MsgBox «Почти брошюра» Case Is >= 14 ‘Если листов больше либо равно 14 MsgBox «Листов как в фолианте» Case Else ‘Все остальные случаи, а именно 13 MsgBox «Чёртова дюжина листов» End Select End Sub

Третий пример ориентируется на булево значение TRUE или FALSE. Проверяется, виден или скрыт последний лист в текущей книге с макросом. С помощью двоеточия может заменяться перенос строки для получения более изящного кода.

Sub SelectCase_example_3() ‘Введём переменную и привяжем её к последнему листу в книге: Dim shtX As Worksheet: Set shtX = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Select Case shtX.Visible ‘Проверим, скрыт ли лист или нет Case True: MsgBox «Последний лист в книге доступен» ‘Если последний лист виден Case False: MsgBox «Последний лист в книге скрыт» ‘Если последний лист скрыт End Select End Sub

Читайте также:
Файлы в программе имеют

Четвёртый пример показывает, что «Case» может ориентироваться и на другие переменные. В данном случае будем проверять равенство трёх переменных с помощью логического оператора «And»:

Sub SelectCase_example_4() ‘Введём несколько переменных: Dim X%, Y%, Z% ‘Приравняем всех к тройке: X = 3: Y = 3: Z = 3 Select Case True ‘Проверим равенство всех переменных Case Z = X And Y = X: MsgBox «Все равны» ‘Если все равны Case Else: MsgBox «Кто-то отличается» ‘Если хоть кто-то отличается End Select End Sub

Пятый пример показывает, как через запятую в проверяемом значении для «Case» можно указать целый набор чисел. Допустим, есть некоторая функция и мы проверяем, может ли наше число в этой функции использоваться. По условию, нас устраивают числа в диапазоне от 5 (не включая 5) до минус бесконечности, от 12 до 15 включая концы и от 20 (включая 20) до плюс бесконечности.

Sub SelectCase_example_5() ‘Введём переменную и дадим ей значение вручную Dim X As Double X = InputBox(«Введите числовое значение переменной Х») Select Case X ‘Проверим, подходит ли некоторой воображаемой функции наше значение Case Is < 5, Is >= 20, 12 To 15 ‘Диапазон подходящих значений MsgBox «Действительное значение для некоторой функции» Case Else ‘Не подходящие значения MsgBox «Значение не может быть использовано в некоторой функции» End Select End Sub

Подводя черту, замечу, что оператор «Select Case» по структуре довольно прост и удобен в использовании. Он менее гибок по сравнению с «If … End», если по ходу проверок требуется менять проверяемое значение, но значительно выигрывает при разнообразных проверках одного и того же выражения. Для чего собственно и был создан.

Источник: www.excelworld.ru

Оператор case. Оператор выбора case. Решение задач.

Ранее Вы познакомились с условным оператором If, который позволяет программе выполнять переходы на ту или иную ветвь по значению булева условия. Используя несколько операторов If, можно производить ветвление по последовательности условий. В приведенном фрагменте показано, как при помощи ряда операторов If можно преобразовать целое число (в диапазоне 0-9) к его словесному представлению:

if Ziphra = 0 then write (‘Нуль‘); if Ziphra = 1 then write (‘Единица‘); if Ziphra = 2 then write (‘Два‘);

Вы уже, наверное, представили, насколько этот подход однообразный и утомительный. Язык Паскаль предоставляет для этих целей другую управляющую структуру (оператор выбора case), которая позволяет построить ветвление по ряду условий в форме, более удобной для чтения программ.

Оператор выбора позволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит так называемый ключ выбора (или селектор) — выражение любого типа (кроме типов REAL и STRING).

Общая форма записи следующая:

case выражение of значение1 : оператор (группа операторов); значение2 : оператор (группа операторов); . . . . . . . . . . . . . . . . . . . . . . значениеN : оператор (группа операторов) else оператор (группа операторов); end;

Читайте также:
Программа сканировать чеки из магазина и получать за это деньги какая лучше

Оператор выбора работает следующим образом. Сначала вычисляется значение выражения, стоящее после зарезервированного слова case, а затем выполняется оператор (или составной оператор), соответствующий результату вычисления выражения.

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

case NUMBER mod 2 of 0 : writeln (NUMBER, ‘- число четное‘) else : writeln (NUMBER, ‘- число нечетное‘); end;

Если один оператор выполняется при нескольких значениях, то их можно перечислить через запятую.

case MONTH of 1, 2, 3 : writeln (‘Первый квартал‘); 4, 5, 6 : writeln (‘Второй квартал‘); 7, 8, 9 : writeln (‘Третий квартал‘); 10, 11, 12 : writeln (‘Четвёртый квартал‘); end;

Оператором может являться не только простой оператор, но также составной и пустой операторы.

case CODE of 1 : for i := 1 to 5 do writeln (‘*******‘); 2 : begin x:=sqr(y-1); writeln (x); end; 3 : end;

Любому заданному значению селектора соответствует лишь один вход в списке операторов. Константы должны принадлежать тому же типу, что и селектор. Если селектор принимает значение, которому не соответствует ни один вход, то будет выполняться оператор, следующий за словом else. Если же этого оператора нет, то никакие альтернативы не будут выполняться.

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

case Chislo of 0..9 : write (‘Это число является цифрой‘);

Посмотрите, в каких вариантах еще можно использовать оператор выбора при решении задачи.

Задача. Написать программу преобразования цифр в слова.

Program Number1; Var a, b, c : integer; Begin writeln(‘Введите цифру ‘); readln(a); if (a<0) or (a>9) then writeln (‘Это число не является цифрой‘) else case a of 0 : writeln (‘ноль‘); 1 : writeln (‘один‘); 2 : writeln (‘два‘); 3 : writeln (‘три‘); 4 : writeln (‘четыре‘); 5 : writeln (‘пять‘); 6 : writeln (‘шесть‘); 7 : writeln (‘семь‘); 8 : writeln (‘восемь‘); 9 : writeln (‘девять‘); end; readln; End.

Program Number2; Var a, b, c : integer; Begin writeln(‘Введите цифру ‘); readln(a); case a of 0 : writeln (‘ноль‘); 1 : writeln (‘один‘); 2 : writeln (‘два‘); 3 : writeln (‘три‘); 4 : writeln (‘четыре‘); 5 : writeln (‘пять‘); 6 : writeln (‘шесть‘); 7 : writeln (‘семь‘); 8 : writeln (‘восемь‘); 9 : writeln (‘девять‘) else writeln (‘Это число не является цифрой‘); end; readln; End.

Источник: studfile.net

Решение задач с использованием оператора select case

Программирование на языке Python (§ 54 - § 61)

Цель работы:
Учащиеся должны знать:
• — логический тип данных, логические величины, логические
операции;
• — правила записи и вычисления логических выражений;
• — условный оператор IF;
• — оператор выбора select case.
Учащиеся должны уметь:
• программировать ветвящиеся алгоритмов с использованием
условного оператора и оператора ветвления

3.

4.

Задача 1. Составить программу по которой
выводиться
название
школьного
звена
в
зависимости от класса

5.

Задача 2. С помощью конструкции case сравните
значение переменной ch с различными диапазонами
значений.
В
случае
совпадения
выводится
соответствующая надпись (цифра, английская буква,
русская буква).

6.

Задача 3. В зависимости от введенного символа L, S,
V программа должна вычислять длину окружности;
площадь круга; объем цилиндра.

Источник: ppt-online.org

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru