День добрый, товарищи! Сегодня мы узнаем еще один вариант выбора - конструкцию Case ... of. Конструкция, в целом, похожа по использованию на уже знакомый нам If но имеет ряд отличий. Предлагаю разобрать ее на примере, но для начала озвучу его:
Пользователь вводит цифру, от 1 до 12, программа должна выдать, какой это месяц в году. Если пользователь введет цифру вне допустимого диапазона - программа должна выдать сообщение об этом
1. Стандартное начало
Введем переменную, нам достаточно одной в данной задаче, тип данных - integer, так как не бывает месяца под номером, например, "2,5".
2. Представим, как бы это выглядело с использованием If
Как можно увидеть из примера выше - для каждого месяца придется использовать свой If. Зачем? Ведь программисты, как и математики, народ ленивый. Чем компактнее - тем лучше. Нехитрыми вычислениями можно посчитать что все эим Ифы в сумме займут аж 24 строчки кода. Да, по сравнению с программами из тысяч строк это конечно мало, но все, как говориться, относительно. Поэтому мы в данном случае используем конструкцию Case.
3. Конструкция Case ... of
Посмотрим на синтаксис. Case month of - это всего лишь список возможных значений для нашей переменной. Фактически это все 12 ифов, завернутые в более компактный вид. Несомненно, код можно сократить и еще больше, буквально до нескольких строк, но уже с использованием циклов, к теме которых мы неумолимо приближаемся.
Вроде бы почти вся, так? по заданию осталось лишь вывести сообщение - исключение, если набрана какая либо другая цифра, не принадлежащая промежутку 1 - 12.
4. Else в конструкции Case .. of
Да, в Кейсе, как и в Ифе тоже может применятся уже знакомый нам else - иначе. Исключение сработает, если пользователь введет, например -1, 0 или, может быть 14. Стоит сказать, что else по прежнему не защитит вас от неправильного типа данных, потому что переменная month по прежнему является целочисленной.
Так же в конце Case of необходим end;
...И даже полная программа меньше чем потребовалось бы на реализацию конструкций If.
5. ..И все же когда использовать If а когда Case of?
Отвечаю. В прошлом уроке были разобраны логические операции в ифе. Логические операции - важный и частоиспользуемый инструмент языка программирования. В условии кейса их нет, поэтому кейс не настолько универсален, в отличии от ифа, но тем не менее именно в таких примерах как этот его использовать наиболее целесообразно.
На сегодня все, товарищи.
Данный человек всегда открыт для обсуждения контента и общения с подписчиками, если найдутся какие либо вопросы то я обязательно постараюсь ответить на них.
По возможности я попросил бы подписаться. Сейчас это критически важно для развития канала. Так то!
Доброго вам всем здоровьица в эти трудные времена!