В Паскаль-программу можно ввести переменные какого-либо типа, несовпадающего со стандартным. Такой тип задается перечислением значений, которые может принимать переменная. Общая форма задания перечисляемого типа такова:
type T = (A1, A2, ..., AN);
Здесь Т - обозначение нового типа; A1,A2,...,AN - определяют константы нового типа данных. Последовательность значений, составляющая перечисляемый тип, упорядочена.
Например, новый скалярный тип color можно определить в такой способ:
type color = (red, green, white, blue);
Например, новый скалярный тип color можно определить следующим образом:
type color = (red, green, white, blue);
Для значений перечисляемых типов определены стандартные функции:
succ - получение следующего значения данного типа;
pred - получение предыдущего значения данного типа;
ord - получение порядкового номера данного типа (нумерация с нуля).
Ограниченные типы данных
Отрезок значений любого скалярного типа (кроме типа real) может быть определен как ограниченный тип.
Общий вид - type T = min..max;
Здесь Т - идентификатор типа; min, max - левая и правая границы диапазона. Тип min и max задает множество, которое определяет базовый тип переменной.
Например:
type den = 1..31;
god = 1900..2000;
var x: den; g:god; c:1..12;
Оператор выбора варианта
Оператор варианта служит для выбора одного из нескольких перечисленных в программе действий в зависимости от значения селекторного выражения.
Общий вид –
case N of
M1: P1;
........
Mn: Pn
else P
end;
Здесь N - селектор; М1,М2,...,Мn - метки; Р1,Р2,..., Рn,Р - операторы. Селектор и метки должны быть одного скалярного типа.
Например:
case K of
1 : y:=10;
2..5 : Y:=2*x+5;
6..9 : Y:=sqrt(x)+x;
else Y:= sqr(x)
end;
Примеры выполнения задания лабораторной работы
Пример 10. Определить сезон (зима, весна, лето, осень), на который приходится любой из двенадцати месяцев.
Программа решения данного примера имеет вид:
program pr10;
uses crt;
type cezon=(z,w,l,o);
mec=(j,f,m,a,ma,i,il,aw,c,ok,n,d);
var k:mec; s:cezon; p:char;
Begin clrscr;
FOR K:=J TO D DO
CASE K OF
J,F,D:BEGIN S:=Z; WRITELN(' ':10,'ЗИМА'); END;
M,A,MA:BEGIN S:=W; WRITELN(' ':20,'ВЕСНА'); END;
I,IL,AW:BEGIN S:=L; WRITELN(' ':30,'ЛЕТО'); END;
C,OK,N:BEGIN S:=O; WRITELN(' ':40,'ОСЕНЬ'); END;
end;
p:=readkey
End.
Пример 11. Для целочисленных значений аргумента вычислить таблицу значений функции
где Х1 - множество чисел интервала [0,8];
Х2 - множество нечетных чисел интервала [9,15];
Х3 - остальные числа интервала [-5,15].
Программа вычисления таблицы значений функции z имеет вид: