
- •Глава 2. Основные понятия языка
- •2.1. Алфавит
- •2.2. Базовые элементы языка
- •2.3. Структура программы
- •2.4. Синтаксические диаграммы
- •2.5. Вопросы для самоконтроля
- •Глава 3. Данные
- •3.1. Данные целого типа
- •Var имя1, имя2,...: integer;
- •Var a,zet,z1 : integer;
- •3.2. Данные вещественного типа
- •Var имя1, имя2,...: real;
- •3.3. Данные логического типа
- •Var имя1, имя2,...: boolean;
- •3.4. Данные символьного типа
- •Var имя1, имя2, ... : char;
- •3.5. Данные перечислимого типа
- •3.6. Данные ограниченного типа
- •3.7. Вопросы для самоконтроля
- •Глава 4. Выражения
- •4.1. Стандартные функции
- •4.2. Арифметические выражения
- •4.2.1. Правила записи арифметических выражений
- •4.2.2. Порядок вычисления арифметических выражений
- •4.3. Логические выражения
- •4.3.1. Операции отношения
- •4.3.2. Запись логических выражений
- •4.3.3. Последовательность вычисления логических выражений
- •4.4. Вопросы для самоконтроля
3.5. Данные перечислимого типа
Язык TurboPascal предоставляет программисту широкие возможности для создания нестандартных типов данных. Одним из таких типов является перечислимый тип, который можно определить путем перечисления всех его возможных констант, значения которых могут принимать переменные этого типа. Арифметические, логические и символьные константы объектами перечисляемого типа быть не могут.
Список перечисляемых констант заключается в круглые скобки, а элементы списка отделяются друг от друга запятыми.
Пример 3.14
( blue,red,green,black )
( mon,tue,wed,thu,fri,sat,sun )
( Tom,John,Nick,Mary,Ann )
Каждая перечисляемая константа в списке имеет свой номер. Первый элемент списка всегда имеет номер 0, второй - номер 1 и т. д. Это дает возможность применять к ним операции отношения, а также использовать их в качестве аргументов функций ord, pred и succ.
Все переменные перечисляемого типа, используемые в программе, должны быть описаны либо в разделе описания переменных, либо в двух разделах - описания типов и описания переменных.
В первом случае структура описания такова:
var имя : (список перечисляемых констант)
Во втором случае описание имеет вид:
type имя типа = (список перечисляемых констант)
var имя : имя типа
Пример 3.15
var
color : ( blue, red, green, black, yellow );
Переменная перечисляемого типа color описана в разделе описания переменных программы. Она может принять одно из пяти значений, указанных в списке.
Пример 3.16
type
week = ( mon, tue, wed, thu, fri, sat, sun );
var
day1,day2 : week;
Сначала перечисляемый тип задан с помощью имени week в разделе описания типов, а затем в разделе описания переменных переменные day1 и day2 объявлены принадлежащими типу week. Каждая из переменных может принять только одно из семи значений, перечисленных в списке.
Внимание! Если в программе описаны несколько перечисляемых типов, то имя константы, указанное в каком-либо конкретном списке, не должно присутствовать в других списках.
Пример 3.17
Описание типов
type a = ( one, two, three );
b = ( two, four, five, six );
ошибочно, так как два разных списка перечислимых констант содержат одинаковое имя two.
Использование перечисляемого типа делает программу более наглядной и облегчает контроль допустимых значений переменных. К недостаткам перечисляемого типа следует отнести невозможность ввода его значений с клавиатуры, а также вывода их на экран монитора или принтер.
3.6. Данные ограниченного типа
Все данные скалярного типа, кроме вещественных, являются упорядоченными. Тип integer, например, упорядочен по своей природе, данные типа char - по соглашению, константы перечисляемого типа получают свои номера в процессе описания типа программистом.
Если
возникает необходимость сузить допустимый
диапазон значений, принимаемых данными
некоторого скалярного типа, то это
можно сделать, наложив на них ограничения.
Таким образом, можно создать новый тип
данных, называемый ограниченным
(интервальным или
диапазоном). По отношению к ограниченному
тип, на значения которого наложены
ограничения, называется базовым.
Ограничение множества значений базового типа осуществляется путем указания левой и правой границ, определяющих подмножество значений, которые могут принимать данные ограниченного типа. Границы эти отделяются друг от друга двумя подряд стоящими точками, причем левая граница не должна быть больше правой.
Пример 3.18
1..10 – возможные значения констант ограниченного типа 1, 2, …, 10; базовый тип - integer;
’А’ .. ’ K ’- значениями, которые могут принимать константы ограниченного типа, являются символы алфавита от А до К включительно; базовый тип - char.
Ограниченные переменные любого базового типа могут принимать значения из указанного для них диапазона, включая его границы. Они должны быть описаны либо только в разделе описания переменных программы, либо в двух разделах - описания типов и описания переменных. Второй способ описания является предпочтительным.
Пример 3.19
type
Year = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug,
Sep, Oct, Nov, Dec);
Summer = (Jun .. Aug);
var month : summer;
a, b : (1.. 100);
Сначала в разделе описания типов программы с помощью имени year введен перечисляемый тип, состоящий из 12 констант, затем ограниченный тип задан именем summer и, наконец, в разделе описания переменных переменная month объявлена принадлежащей типу summer. Таким образом, ограниченная переменная перечисляемого типа month может принимать значения из диапазона Jun .. Aug, т.е. Jun, Jul или Aug. Кроме того, в разделе описания типов описаны две переменные ограниченного типа a и b.