Перечислимые и ограниченные типы данных
Перечислимый тип данных Перечислимый тип данных задаётся списком констант (объектов), которые могут принимать переменные этого типа. Каждый объект имеет своё имя. Числа, логические и символьные константы не могут являться объектами перечислимых типов. Применение перечислимого типа повышает наглядность программы и даёт возможность автоматически контролировать допустимость значений переменных. Перечислимый тип задаётся в виде перечисления в строго определённом порядке и строго ограниченном количестве всех значений, которые могут принимать данные рассматриваемого типа. Описание перечисляемого типа имеет вид: TYPE <имя_типа> = (список констант); VAR <имя_пер>: <имя_типа>; Например. TYPE DAY = (MO, TU, WE, TH, FR, SA, SU); VAR D1, D2, D3: DAY; Переменные D1, D2, D3 типа DAY при выполнении программы могут принимать только одно из семи указанных значений. Для перечисляемого типа данных существенен порядок указанных объектов, каждая константа имеет свой порядковый номер, счёт начинается с нуля. Упорядоченность констант позволяет применять к ним операции отношения, а также функции PRED, SUCC, ORD, имеющих тот же смысл, что и для стандартных скалярных типов. Например, TYPE COLOR = (RED, BLUE, BLACK); VAR C1, C2, C3: COLOR; Результатом функции SUCC(RED) является значение BLUE, PRED(BLACK)=BLUE, ORD(BLUE)=1. Примечание. Непосредственно вводить и выводить на внешние устройства значения перечисляемых типов в языке Паскаль недопустимо. Ограниченный тип данных Множество значений стандартных скалярных типов данных и перечисляемых скалярных типов упорядочено и конечно (кроме вещественного типа). Если необходимо сузить диапазон значений, принимаемых некоторым объектом скалярного типа, то осуществляется это наложением ограничений на стандартный или перечислимый скалярный тип, называемый в данном случае базовым.
Описание ограниченного типа имеет вид: TYPE <имя_типа> = константа..константа; Обе граничные константы должны быть одного типа, в качестве базового типа можно использовать любой простой тип, кроме действительного (REAL). Начальное значение для определения ограниченного типа не должно быть больше конечного. Переменные ограниченного типа должны быть описаны в разделе переменных с помощью имён этих типов. К переменным ограниченного типа применимы все операции и стандартные функции, допустимые при работе с переменными соответствующего базового скалярного типа. Например. TYPE DAY = (MO, TU, WE, TH, FR, SA, SU); NOM = 10..25; SSS = ‘C’..'X'; WD = FR..SU; Для ограниченного типа NOM базовым является целый тип, для SSS – символьный, для WD – определённый ранее перечислимый тип DAY. Из примера видно, что для определения ограниченного типа указываются начальное и конечное значения, которые может принимать константа базового типа на этом отрезке, разделённые двумя точками (..). 6.3. Оператор выбора (варианта) Характерной чертой многих алгоритмов является широкая разветвляемость, задаваемых ими вычислительных процессов. Для задания таких разветвлений используют условный оператор, по которому выбирается ход вычисления в зависимости от выполнения одного, двух условий. Но на практике часто встречаются случаи, когда вычислительный процесс надо разветвить не по двум, а по К (К>2) возможным путям. Это можно сделать и при помощи условного оператора, но в этом случае структура программы будет громоздкой: IF B1 THEN S1 ELSE IF B2 THEN S2 ELSE … IF BK THEN SK ELSE В языке Паскаль предусмотрен производный от условного оператор, называемый оператором варианта или выбора. Позволяет выбрать одно из нескольких возможных продолжений программы. Этот оператор относится к сложным.
Полный формат оператора: CASE <ключ_выбора> OF константа1: оператор1; константа2: оператор2; … константаN: операторN; else оператор; end; Краткий формат оператора: CASE <ключ_выбора> OF константа1: оператор1; константа2: оператор2; … константаN: операторN; end;
Здесь CASE (в случае), OF (из), END (конец) – служебные слова. <ключ_выбора> - является селектором, значение которого может быть целого, литерного, логического типа, либо типом, определяемым пользователем (за исключением действительного типа REAL). Константы должны быть того же типа, что и селектор. Выбор оператора определяется совпадением значений селектора и константы, стоящей перед оператором: если значение выражения равно одной из констант, то выполняется соответствующий ей оператор, а управление передаётся за пределы оператора выбора. Если значение выражения не совпадает ни с одной константой, то управление передаётся за пределы оператора. Пример 6.1. CASE I MOD 3 OF 0: M:=0; 1: M:=2; 2: M:=3; end; Пример 6.2. CASE S OF ‘=’, ‘*’, ‘/’, ‘+’: K:=1; ‘!’, ‘-’: K:=2; ‘A’: K:=; end; Задача 6.1. Ввести с клавиатуры букву, в ответ на мониторе будет выведена фамилия, начинающаяся на эту букву. Листинг программы PROGRAM FAM; USES CRT; VAR OP: CHAR; BEGIN CLRSCR; WRITELN (‘Введите букву’); OP:= READKEY; CASE OP OF ‘A’:WRITELN (‘Анисимов’); ‘B’:WRITELN (‘Владимиров’); ELSE WRITELN (‘Фамилии на данную букву нет’); END; END. Задача 6.2. Написать программу, имитирующую работу калькулятора. Листинг программы PROGRAM CALC; USES CRT; VAR OP:CHAR; X, Y, Z: REAL; STOP: BOOLEAN; BEGIN CLRSCR; STOP:= FALSE; WRITELN (‘Введите X, Y’); READLN (X, Y); OP:= READKEY; CASE OP OF ‘+’: Z:= X+Y; ‘-’: Z:= X-Y; ‘*’: Z:= X*Y; ‘/’: Z:= X/Y; ELSE STOP:= TRUE; END; IF NOT STOP THEN WRITELN (‘Результат = ’, Z:6:2); END. Задача 6.3. Использовать оператор варианта для ввода и вывода значений перечислимых скалярных типов. Листинг программы PROGRAM CAS; USES CRT; TYPE COLOR = (RED, BLUE, BLACK); VAR CLR: COLOR; N: 0..2; BEGIN CLRSCR; WRITELN ('ENTER THE NUMBER OF COLOR 0..2'); READLN (N); CASE N OF 0: CLR:= RED; 1: CLR:= BLUE; 2: CLR:= BLACK; END; WRITELN ('THE LIST OF COLORS:'); CASE CLR OF RED: WRITELN ('RED'); BLUE: WRITELN ('BLUE'); BLACK: WRITELN ('BLACK'); END; READLN; END. Задача 6.4. Использовать оператор выбора (варианта) для определения принадлежности буквы и латинскому и русскому алфавиту. Листинг программы PROGRAM TASK1; USES CRT;
VAR S: 'A'..'G'; BEGIN CLRSCR; READLN (S); CASE S OF 'A', 'B', 'C', 'E': WRITELN ('THE WORD TO BELONG BOTH ALPHABETS'); 'D', 'E', 'F', 'G': WRITELN ('THE WORD TO BELONG LATIN ALPHABET'); END; END. Задача 6.5. Использовать оператор выбора для определения чётности/ нечётности числа на промежутке 1..9. Листинг программы PROGRAM TASK2; USES CRT; VAR I: 1..9; BEGIN CLRSCR; READLN (I); CASE I OF 2, 4, 6, 8: WRITELN ('THE NUMBER IS EVEN'); 1, 3, 5, 7, 9: WRITELN ('THE NUMBER IS UNEVEN'); END; END. Вопросы для самопроверки 1. Дайте определение перечисляемого типа данных? Какова структура перечисляемого типа? Привести пример. 2. Какие можно использовать функции на данных перечисляемого типа? 3. Каков формат объявления типа данных «диапазон»? Привести пример. 4. Каков формат оператор выбора (варианта)? Какова структура краткой формы оператора варианта? Привести пример. 5. Какова структура полной формы оператора варианта? Привести пример. Лабораторная работа №6
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|