для чего используется оператор case

Pascal: Занятие №2. Часть 2: Оператор выбора в паскале

Оператор выбора в Паскале

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

Особенность: Выбор не из двух, а из нескольких вариантов в зависимости от отметки.

Результат выполнения с использованием условного оператора if:

var otmetka:integer; begin writeln(‘Отметка?’); readln(otmetka); if (otmetka=1) or (otmetka=2) then writeln (‘кошмар!’) else if otmetka=3 then writeln(‘плохо’) else if otmetka=4 then writeln(‘неплохо’) else if otmetka=5 then writeln(‘отлично!’) else writeln(‘таких отметок не бывает’); end.

Данный пример демонстрирует нерациональную работу программиста и слишком запутанный код. Гораздо лаконичнее выглядит код при использовании оператора выбора.

Результат выполнения с использованием оператора выбора case:

var otmetka:integer; begin writeln(‘отметка?’); readln(otmetka); case otmetka of 1,2 : writeln (‘кошмар!’); 3: writeln(‘плохо’); 4: writeln(‘неплохо’); 5: writeln(‘отлично!’); else writeln(‘таких отметок не бывает’); end end.

Блок-схема, соответствующая оператору выбора:
для чего используется оператор case. Смотреть фото для чего используется оператор case. Смотреть картинку для чего используется оператор case. Картинка про для чего используется оператор case. Фото для чего используется оператор case

[Название файла: L2task9.pas ]

для чего используется оператор case. Смотреть фото для чего используется оператор case. Смотреть картинку для чего используется оператор case. Картинка про для чего используется оператор case. Фото для чего используется оператор case

Перечисление или диапазон

для чего используется оператор case. Смотреть фото для чего используется оператор case. Смотреть картинку для чего используется оператор case. Картинка про для чего используется оператор case. Фото для чего используется оператор case

для чего используется оператор case. Смотреть фото для чего используется оператор case. Смотреть картинку для чего используется оператор case. Картинка про для чего используется оператор case. Фото для чего используется оператор case

[Название файла: L2task10.pas ]

Детально разобраться в том, как работает оператор выбора Case в Паскале, можно просмотрев видеоурок:

Символьный тип char в Паскале

Для решения следующей задачи пригодится тип char — символьный.
Переменная данного типа объявляется так:
c: char;
и присваивает значения следующим образом:
c:=’a’;

Источник

Выражение CASE (Transact-SQL)

Оценка списка условий и возвращение одного из нескольких возможных выражений результатов.

Выражение CASE имеет два формата:

простое выражение CASE для определения результата сравнивает выражение с набором простых выражений;

поисковое выражение CASE для определения результата вычисляет набор логических выражений.

Оба формата поддерживают дополнительный аргумент ELSE.

Выражение CASE может использоваться в любой инструкции или предложении, которые допускают допустимые выражения. Например, выражение CASE можно использовать в таких инструкциях, как SELECT, UPDATE, DELETE и SET, а также в таких предложениях, как select_list, IN, WHERE, ORDER BY и HAVING.

для чего используется оператор case. Смотреть фото для чего используется оператор case. Смотреть картинку для чего используется оператор case. Картинка про для чего используется оператор case. Фото для чего используется оператор caseСинтаксические обозначения в Transact-SQL

Синтаксис

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

input_expression
Выражение, полученное при использовании простого формата функции CASE. input_expression — это любое допустимое выражение.

WHEN when_expression
Простое выражение, с которым сравнивается input_expression при использовании простого формата CASE. when_expression — это любое допустимое выражение. Типы данных аргумента input_expression и каждого из выражений when_expression должны быть одинаковыми или неявно приводимыми друг к другу.

THEN result_expression
Выражение, возвращаемое, когда равенство input_expression и when_expression имеет значение TRUE или Boolean_expression имеет значение TRUE. result expression — это любое допустимое выражение.

ELSE else_result_expression
Это выражение, возвращаемое, если ни одна из операций сравнения не дает в результате TRUE. Если этот аргумент опущен и ни одна из операций сравнения не дает в результате TRUE, функция CASE возвращает NULL. else_result_expression — это любое допустимое выражение. Типы данных аргумента else_result_expression и каждого из выражений result_expression должны быть одинаковыми или неявно приводимыми друг к другу.

WHEN Boolean_expression
Логическое выражение, полученное при использовании поискового формата функции CASE. Boolean_expression — это любое допустимое логическое выражение.

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Типы возвращаемых данных

Возвращает тип с наивысшим приоритетом из набора типов в выражении result_expressions и необязательном выражении else_result_expression. Дополнительные сведения см. в разделе Приоритет типов данных (Transact-SQL).

Возвращаемые значения

Простое выражение CASE

Простое выражение CASE сравнивает первое выражение с выражением в каждом предложении WHEN. Если эти выражения эквивалентны, то возвращается выражение в предложении THEN.

Допускается только проверка равенства.

В указанном порядке сравнивает значения выражений input_expression и when_expression для каждого предложения WHEN.

Возвращает выражение result_expression, соответствующее первой операции input_expression = when_expression, равной TRUE.

Если ни одна из операций input_expression = when_expression не дает значения TRUE, Компонент SQL Server Database Engine возвращает выражение else_result_expression, если указано предложение ELSE, или значение NULL, если предложение ELSE не указано.

Поисковое выражение CASE

Вычисляет в указанном порядке выражения Boolean_expression для каждого предложения WHEN.

Возвращает выражение result_expression, соответствующее первому выражению Boolean_expression, которое имеет значение TRUE.

Если ни одно выражение Boolean_expression не равно TRUE, Компонент Database Engine возвращает выражение else_result_expression, если указано предложение ELSE, или значение NULL, если предложение ELSE не указано.

Remarks

SQL Server допускает применение в выражениях CASE не более 10 уровней вложенности.

Выражение CASE нельзя использовать для управления потоком выполнения инструкций Transact-SQL, блоков инструкций, определяемых пользователем функций и хранимых процедур. Список методов управления потоком см. в статье Язык управления потоком (Transact-SQL).

Выражение CASE последовательно оценивает свои условия и останавливается, когда находит первое выполнимое условие. В некоторых ситуациях выражение оценивается до того, как выражение CASE получает результаты выражения в качестве входных данных. При оценке этих выражений возможны ошибки. Агрегатные выражения в аргументах WHEN выражения CASE вначале оцениваются, после чего передаются выражению CASE. Например в следующем запросе создается ошибка деления на ноль при вычислении значения агрегата MAX. Это происходит до оценки выражения CASE.

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

Примеры

A. Использование инструкции SELECT с простым выражением CASE

При использовании в инструкции SELECT простое выражение CASE позволяет выполнить только проверку на равенство. Другие проверки не выполняются. В следующем примере выражение CASE используется для изменения способа отображения категорий линейки продуктов с целью сделать их более понятными.

Б. Использование инструкции SELECT с поисковым выражением CASE

При использовании в инструкции SELECT поисковое выражение CASE позволяет заменять значения в результирующем наборе в зависимости от результатов сравнения. В следующем примере отображается список цен в виде текстового комментария, основанного на диапазоне цен для продукта.

В. Использование выражения CASE в предложении ORDER BY

Г. Использование выражения CASE в инструкции UPDATE

В следующем примере выражение CASE используется в инструкции UPDATE, чтобы определить значение, установленное в столбце VacationHours для сотрудников, у которых столбец SalariedFlag имеет значение 0. Если при вычитании 10 часов из VacationHours получается отрицательное значение, VacationHours увеличивается на 40 часов. В противном случае значение VacationHours увеличивается на 20 часов. С помощью предложения OUTPUT отображаются исходная и обновленная продолжительности отпуска.

Д. Использование выражения CASE в инструкции SET

Е. Использование выражения CASE в предложении HAVING

Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)

Ж. Использование инструкции SELECT с выражением CASE

При использовании в инструкции SELECT выражение CASE позволяет заменять значения в результирующем наборе в зависимости от результатов сравнения. В приведенном ниже примере выражение CASE используется для изменения способа отображения категорий линейки продуктов с целью сделать их более понятными. Если значение отсутствует, выводится текст «Not for sale».

З. Использование выражения CASE в инструкции UPDATE

В следующем примере выражение CASE используется в инструкции UPDATE, чтобы определить значение, установленное в столбце VacationHours для сотрудников, у которых столбец SalariedFlag имеет значение 0. Если при вычитании 10 часов из VacationHours получается отрицательное значение, VacationHours увеличивается на 40 часов. В противном случае значение VacationHours увеличивается на 20 часов.

Источник

Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть третья

Предыдущие части

О чем будет рассказано в этой части

Выражение CASE – условный оператор языка SQL

Данный оператор позволяет осуществить проверку условий и возвратить в зависимости от выполнения того или иного условия тот или иной результат.

Оператор CASE имеет 2 формы:

Первая форма:Вторая форма:
CASE
WHEN условие_1
THEN возвращаемое_значение_1

WHEN условие_N
THEN возвращаемое_значение_N
[ELSE возвращаемое_значение]
END
CASE проверяемое_значение
WHEN сравниваемое_значение_1
THEN возвращаемое_значение_1

WHEN сравниваемое_значение_N
THEN возвращаемое_значение_N
[ELSE возвращаемое_значение]
END

В качестве значений здесь могут выступать и выражения.

Разберем на примере первую форму CASE:

IDNameSalarySalaryTypeWithELSESalaryTypeWithoutELSE
1000Иванов И.И.5000ЗП >= 3000ЗП >= 3000
1001Петров П.П.1500ЗП 3000».

для чего используется оператор case. Смотреть фото для чего используется оператор case. Смотреть картинку для чего используется оператор case. Картинка про для чего используется оператор case. Фото для чего используется оператор case

Т.е. здесь в первую очередь происходит группировка и вычисляются данные по всем отделам:

А уже к этим данным применяется условие указанно в блоке HAVING:

В HAVING-условии так же можно строить сложные условия используя операторы AND, OR и NOT:

для чего используется оператор case. Смотреть фото для чего используется оператор case. Смотреть картинку для чего используется оператор case. Картинка про для чего используется оператор case. Фото для чего используется оператор case

Как можно здесь заметить агрегатная функция (см. «COUNT(*)») может быть указана только в блоке HAVING.

Соответственно мы можем отобразить только номер отдела, подпадающего под HAVING-условие:

Пример использования HAVING-условия по полю включенного в GROUP BY:

Это только пример, т.к. в данном случае проверку логичнее было бы сделать через WHERE-условие:

Т.е. сначала отфильтровать сотрудников по отделу 3, и только потом сделать расчет.

Примечание. На самом деле, несмотря на то, что эти два запроса выглядят по-разному оптимизатор СУБД может выполнить их одинаково.

Думаю, на этом рассказ о HAVING-условиях можно окончить.

Подведем итоги

Сведем данные полученные во второй и третьей части и рассмотрим конкретное месторасположение каждой изученной нами конструкции и укажем порядок их выполнения:

Конструкция/БлокПорядок выполненияВыполняемая функция
SELECT возвращаемые выражения4Возврат данных полученных запросом
FROM источник0В нашем случае это пока все строки таблицы
WHERE условие выборки из источника1Отбираются только строки, проходящие по условию
GROUP BY выражения группировки2Создание групп по указанному выражению группировки. Расчет агрегированных значений по этим группам, используемых в SELECT либо HAVING блоках
HAVING фильтр по сгруппированным данным3Фильтрация, накладываемая на сгруппированные данные
ORDER BY выражение сортировки результата5Сортировка данных по указанному выражению

Конечно же, вы так же можете применить к сгруппированным данным предложения DISTINCT и TOP, изученные во второй части.

Эти предложения в данном случае применятся к окончательному результату:

SalaryAmount
5000

SalaryAmount
2000
2500
5000

Как получились данные результаты проанализируйте самостоятельно.

Заключение

Основная цель которую я ставил в данной части – раскрыть для вас суть агрегатных функций и группировок.

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

Здесь я намеренно стараюсь показывать только основы, чтобы сосредоточить внимание начинающих на самых главных конструкциях и не перегружать их лишней информацией. Твердое понимание основных конструкций (о которых я еще продолжу рассказ в последующих частях) даст вам возможность решить практически любую задачу по выборке данных из РБД. Основные конструкции оператора SELECT применимы в таком же виде практически во всех СУБД (отличия в основном состоят в деталях, например, в реализации функций – для работы со строками, временем, и т.д.).

Если вы делаете первые шаги в SQL, то сосредоточьтесь в первую очередь, именно на изучении базовых конструкций, т.к. владея базой, все остальное вам понять будет гораздо легче, и к тому же самостоятельно. Вам в первую очередь, как бы нужно объемно понять возможности языка SQL, т.е. какого рода операции он вообще позволяет совершить над данными. Донести до начинающих информацию в объемном виде – это еще одна из причин, почему я буду показывать только самые главные (железные) конструкции.

Удачи вам в изучении и понимании языка SQL.

Источник

Условные операторы

Бывает, что в процессе выполнения программы требуется реализовать разный набор команд в зависимости от произошедших до этого событий. В языках программирования это достигается с помощью специальных конструкций – условных операторов.

Чаще всего в качестве условного оператора в языках программирования используется конструкция if-else или ее сокращенный вариант if. Также существует оператор выбора case, который имеет более специфичное применение.

для чего используется оператор case. Смотреть фото для чего используется оператор case. Смотреть картинку для чего используется оператор case. Картинка про для чего используется оператор case. Фото для чего используется оператор case

Оператор if-else

Когда выполнение основной ветки программы доходит до условного оператора if-else, то в зависимости от результата логического выражения в его заголовке выполняются разные блоки кода. Если логическое выражение вернуло true, то выполняется один блок (в Паскале начинается со слова then), если false – то другой (начинается со слова else). После выполнения одного из вложенных блоков кода, ход программы возвращается в основную ветку. Другой вложенный блок не выполняется.

Например, программа должна определять, ввел пользователь четное или нечетное число, и выводить на экран сообщение. Тогда программный код на языке Pascal может быть таким:

Бывают неполные формы условных операторов. В таком случае вложенный в if блок кода выполняется только в случая true логическом выражении заголовка. В случае false выполнение программы сразу передается в основной блок. Понятно, что ветка else в таком случае отсутствует.

В примере ниже, если переменная имеет значение меньше нуля, то ее значение изменяется (находится модуль числа). Если же значение переменной изначально больше нуля, то блок кода при операторе if вообще не выполняется, т.к. не соблюдено условие (n Добавить комментарий

Источник

Для чего используется оператор case

значение1: оператор1;
значение2: оператор2;
значение3: оператор3;
..
else операторN
end;

для чего используется оператор case. Смотреть фото для чего используется оператор case. Смотреть картинку для чего используется оператор case. Картинка про для чего используется оператор case. Фото для чего используется оператор case

Значение «выражения» и значения констант («значение1» и т.д.) должны быть порядкового типа.
Выполнение оператора Case:
В заголовке оператора case вместо логического выражения фигурирует переменная или выражение порядкового типа, которую называют селектором. До этого в программе ей присваивается какое-либо значение. По ходу выполнения оператора case, значение переменной-селектора (значение выражения) сравнивается с различными, описанными в нем альтернативами (метками-значениями). Как только совпадение будет найдено, то выполняется блок кода при данной метке и происходит выход в основную ветку программы. Значения-метки являются константами, которые может принимать селектор. Их тип и тип селектора должны быть совместимы по присваиванию.

Если совпадений не будет, то выполняется блок else. Если блок else отсутствует (он является не обязательным), то никакой блок кода в операторе case не выполняется.
Если для разных переменных-селекторов требуется выполнить один и тот же оператор, то можно эти константы перечислить через запятую и после двоеточия указать этот оператор.
Пример 1:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *