Оператор варианта case
Конструкция case позволяет эффективно реализовать множественные разветвления в тех случаях, когда выбор определяется значениями переменной порядкового типа (integer, char, boolean).
Синтаксис оператора case представлен на рисунке 4.7.
Рисунок 4.36 – Синтаксис оператора case
В этом описании <селектор> - это выражение, значение которого определяет дальнейшее выполнение инструкции. В частном случае <селектор> может быть просто переменной. В языке Object Pascal селектор может быть только порядкового типа, например, целое число или символ.
<Список > – это список констант, задающий значения селектора при которых выполняется оператор, следующий после списка. В списке может быть и одно значение. Если в списке несколько значений, то они отделяются друг от друга запятыми. Допускается использовать интервальный тип, в котором записываются границы интервала разделенные двумя точками. Список отделяется от оператора двоеточием.
Оператор определяет действия, которые должны быть выполнены, если селектор принимает одно из значений списка. В качестве оператора может использоваться и составной оператор.
Порядок выполнения инструкции case описан ниже.
-
Сначала вычисляется значение выражения-селектора.
-
Далее, полученное значение последовательно сравнивается со значениями констант в списках.
-
Если значение селектора совпадает с одной из констант списка, то выполняется оператор, идущий после этого списка.
-
Если значение селектора не найдено ни в одном из списков, то выполняется оператор после слова else.
В качестве примера рассмотрим процедуру, которая проверяет вводимые символы на принадлежность к множеству символов, допустимых для вещественных чисел. Такими символами являются цифры, один десятичный разделитель (точка или запятая, в зависимости от настройки Windows) и знак минус в первой позиции.
Анализируемый символ, который относится к типу char, передается в процедуру как параметр. Этот параметр, названый symbol, передается по наименованию, следовательно, его можно не только анализировать, но и изменять. Процедура использует эту возможность.
Если вводимый символ является цифрой, то процедура ничего не делает и символ не меняется. Пропускается без изменений символ «Забой» с кодом #8. Это позволяет удалять введенные символы с помощью клавиши «BackSpace». Пропускается и символ «Возврат каретки» с кодом #13.
Символы запятая и точка преобразуются в символ DecimalSeparator, который может быть точкой или запятой, в зависимости от настройки Windows.
procedure testRealKey(var symbol:char; text:String);
begin
case symbol of
'0'..'9', #8, #13 : ; //Эти символы пропускаются, никаких действий нет
',', '.' : // Запятая и точка преобразуются в десятичный разелитель,
begin // но не более одного раза
symbol:=DecimalSeparator;
if pos(DecimalSeparator,text)<>0 then symbol:= #0;
end;
'-': // Минус допустим только в начале
if length(text)<>0 then symbol:=#0;
else {case symbol}
symbol:=#0;
end {case symbol};
end;
Десятичный разделитель может появиться в любом месте, но только один раз. Для того, чтобы можно было осуществить такую проверку, в процедуру передаются уже набранные символы числа в виде параметра text. Поиск символа DecimalSeparator в набранном тексте производится с помощью стандартной функции pos(), определяющей позицию символа в строке. Функция вернет ноль, если символ не будет найден. Если же функция возвращает не ноль, то вводимый символ заменяется пустым, который имеет код #0.
Символ «минус» может появиться только в начале текста, то есть длина текста при появлении минуса быть рана нулю. Для определения длины строки используется стандартная функция length(). Если длина строки не равна 0, то минус заменяется пустым символом.
Все остальные символы, процедура меняет на пустой символ.
Процедуру можно включить в состав дополнительного модуля и использовать для коррекции ввода числовых данных в текстовые поля.
- Ответственный за выпуск: Бивойно п.Г. , декан факультета электронных и информационных технологий, канд. Техн. Наук, доцент
- Содержание
- 4.1.4 Разработка интерфейса проекта 66
- 5.1.7 Разработка интерфейса проекта 81
- Введение
- Лабораторная работа № 1. Знакомство с интегрированой средой разработки (иср)“Delphi 7”
- Краткие теоретические сведения о иср “Delphi 7”
- Конструктор стартовой формы
- Главное окно иср “Delphi 7”
- Главное меню
- Панели инструментов
- Палитра компонентов
- Окно просмотра дерева объектов
- Окно редактора кода
- Закладка редактора кода модуля
- Закладка редактора кода файла проекта
- Окно Object Inspector
- Закладка описания свойств объекта
- События и процедуры обработки событий
- Создание простейшего проекта
- Разработка интерфейса проекта
- Создание процедуры инициализации приложения
- Создание процедуры вычисления результата
- Улучшение проекта
- Сохранение проекта
- Продолжение работы с проектом на другом компьютере
- Содержание отчета
- Контрольные вопросы и задания
- Рекомендованая литература
- Лабораторная работа № 2. Вещественный тип данных. Расчеты по формулам
- Краткие теоретические сведения
- Язык программирования Object Pascal
- Объекты, переменные и константы
- Классы и типы
- Объявление объектов и переменных
- Вещественный тип данных
- Выражение
- Стандартные функции для данных вещественного типа
- Инструкция присваивания
- Форматирование результатов расчетов
- Создание проекта «Расчет по формуле»
- Создание интерфейса
- Компонент ole-контейнер
- Компонент Group Box
- Компонент Memo
- Завершение работы над интерфейсом
- Создание процедур обработки событий Процедура очистки протокола
- Процедура инициализации формы
- Процедура выполнения расчета по формуле
- Контольный пример
- Трассировка процедуры
- Содержание отчета
- Контрольные вопросы
- Рекомендованая литература
- Лабораторная работа № 3. Подпрограммы Краткие теоретические сведения
- Правила написания подпрограмм
- Описание процедуры
- Вызов процедуры
- Описание функции
- Вызов функции
- Способы передачи параметров в подпрограммы
- Передача параметров по значению
- Передача параметров по наименованию
- Расположение подпрограмм
- Подпрограммы обработки событий класса формы
- Другие подпрограммы класса формы
- Размещение подпрограмм в модуле
- Размещение подпрограмм в других модулях
- Размещение подпрограмм внутри других подпрограмм
- Область действия имен
- Реализация проекта «Процедуры и функции»
- Создание процедур и функций Процедуры инициализации
- Процедура считывания коэффициентов уравнения
- Функция для расчета по формуле
- Использование дополнительного модуля
- Завершение работы над проектом
- Исследование созданного приложения
- Анализ передачи параметров по наименованию
- Анализ передачи параметров по значению
- Содержание отчета
- Контрольные вопросы
- Операции над логическими данными
- Логические выражения
- Разветвляющиеся алгоритмы
- Программирование разветвлений Условный оператор if…then…else
- Оператор варианта case
- Реализация проекта «Организация разветвлений»
- Разработка интерфейса проекта
- Компоненты для работы со списками
- Процедуры обработки событий выбора из списка
- Процедуры обработки событий onKeyPress
- Решение квадратного уравнения
- Содержание отчета
- Контрольные вопросы
- Лабораторная работа № 5. Построение циклов с инструкциями „while” и „repeat”
- Краткие теоретические сведения
- Циклические алгоритмы
- Инструкция while…do
- Инструкция repeat…until
- Прерывание цикла
- Итерационные алгоритмы
- Пример итерационного алгоритма для вычисления кубического корня
- Задание для самостоятельной работы
- Алгоритмы вычисления сумм бесконечных рядов
- Задание для самостоятельной работы
- Создание проекта WhileRepeat
- Разработка интерфейса проекта
- Компоненты PageControl и TabSheet
- Компонент CheckBox
- Создание закладки для вычисления корня
- Создание закладки для вычисления синуса
- Создание процедур и функций Процедура для контроля ввода данных
- Процедура вычисления кубического корня
- Процедура вычисления синуса
- Задания для расчетно-графической работы № 2
- Содержание отчета
- Контрольные вопросы
- Целые типы данных
- Символьные типы данных
- Ограниченный тип данных.
- Применение инструкции цикла for
- Табулирование значений функций
- Форматирование результатов при выводе таблиц
- Строки символов
- Операции над строками
- Процедура Delete
- Процедура Insert
- Функция Pos
- Функции Trim, TrimLeft, TrimRight
- Создание проекта «Применение цикла for»
- Разработка формы «Табулирование функции» Разработка интерфейса
- Создание вспомогательных процедур и функций
- Создание процедуры табулирования функции
- Разработка формы «Таблица “символ-код”» Разработка интерфейса
- Создание процедуры вывода таблицы символ-код
- Разработка формы «Обработка последовательностей целых чисел»
- Разработка интерфейса
- Создание процедуры обработки последовательности целых чисел
- Создание многодокументной (mdi)формы
- Задание для самостоятельной работы
- Содержание отчета
- Контрольные вопросы
- Рекомендованая литература