
- •9. Перечисляемый тип данных. Строковый тип. Множества. Записи. Файлы
- •9.1. Перечисляемый тип данных
- •Var days: week;
- •9.2. Строковые данные. Типы Char и String
- •Var s1 : String[40];
- •Var Str1, Str2: String[20]; Ch1, Ch2 :Char;
- •Var s: String[20]; I:integer;
- •Var I: byte; begin
- •Var Str_1, Str_2, Str_3:string[10];
- •Insert('any', Str_3,5);
- •9.3. Множества
- •9.3.1. Описание и инициализация множеств
- •9.3.2. Предметные операции с множествами
- •9.3.3. Операции сравнения над множествами
- •9.3.4. Цикл типа For..In. Вывод множеств и их элементов.
- •Var d: week;
- •9.4. Записи
- •Var p_Data: Pers_Data;
- •Var p_Data: record fam:string[20]; adr:string[40]; tel:string[15];
- •Var woker_alpha: woker_firm;
- •Var woker_alpha: array [1..30] of Pers_Data;
- •9.5. Файлы
- •9.5.1. Описание файловых переменных
- •9.5.2. Стандартные операции с файлами. Связывание логических и физических файлов
- •9.5.3. Ввод и вывод данных из физических файлов. Вспомогательные действия
- •9.5.4. Примеры решения задач по обработке текстовых файлов
- •Var I:byte;n:integer; ft:text; FileName,st:string;
- •Var I,Lmas:integer; ft:text; FileName:string;
- •Var n,I:integer; ft:text; FileName:string;
- •Var str,w_s:string;
9. Перечисляемый тип данных. Строковый тип. Множества. Записи. Файлы
9.1. Перечисляемый тип данных
Перечисляемый тип является простым и порядковым. Он позволяет объединить вместе, в рамках одного типа ограниченное и упорядоченное множество (список с разделителем запятая “,”) скалярных (одиночных) постоянных величин (констант), каждая их которых задается своим именем. Описание типа имеет следующий синтаксис:
type название типа = (список значений типа);
В имени типа и в списке его значений должны использоваться идентификаторы, образованные по правилам Паскаля. Так как в идентификаторах Паскаля нельзя использовать кириллицу, в названии и именах элементов списка нельзя использовать русские слова.
Пример 1. Описание типа с именем week (неделя):
type week = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday);
Упорядоченным в списке значений типа константам автоматически присваиваются возрастающие на единицу номера, начиная с нуля. Поэтому к перечисляемым переменным и константам могут быть применены все операции сравнения и стандартные функции из библиотеки системных функций pred(), succ(), ord():
ord(Е) – возвращает номер элемента Е в множестве;
succ(Е) – возвращает следующее значение для Е;
pred(Е) – возвращает предыдущее значение для Е.
Для введенного типа week будут справедливы следующие отношения элементов:
Sunday<Monday<Tuesday<Wednesday<Thursday<Friday<Saturday;
ord(Sunday)=0;
ord(Tuesday)=2;
succ(Friday)=Saturday;
pred(Saturday) = Friday;
Для перечисляемых типов, как и для других порядковых типов, определены функции Low()и High(), которые возвращают начальный и конечный объект типа. Например, для типа week : Low(week)= Sunday, High(week)=Saturday.
Перечисляемые типы описываются в разделе описания типов.
Рассмотренные выше стандартные типы, введенные для одиночных величин, также можно эквивалентно представить в виде перечисляемых типов. Например, для типов boolean, char и integer описание можно задать следующим образом (запись вида #xxx означает символ, чей код в таблице ASCII равен xxx):
type
Boolean= (false, true);
char= #0..#255;
integer= -32768..32767;
Каждая константа может входить только в один из типов. Поэтому, если в программе описан тип week, то в нем нельзя использовать тип day_off (выходные):
type
day_off = (Sunday, Saturday);
поскольку он содержит константы Sunday, Saturday, уже входящие в тип week.
Если тип описан, то он может быть присвоен другим переменным в разделе описания переменных, например:
Var days: week;
Также переменные любого перечисляемого типа можно объявлять без предварительного описания этого типа, например:
var days: (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday);
Вопросы для проверки знаний.
1. В чем заключается назначение и каков синтаксис перечисляемого типа ?
2. Как устанавливается порядок для элементов перечисляемого типа ?
3. Где помещаются описания перечисляемых типов ?
4. Может ли одна и та же величина входить в состав множеств элементов различных типов в одной программе ?
5. Как переменные перечисляемого типа можно объявлять без предварительного описания этого типа ?
6. Возможно ли описание типа следующего вида (ответ пояснить) ?
type выходные_дни = (Воскресенье, Суббота);
7. Чему равны значения следующих функций для типа week: ord(Wednesday);ord(Friday)?
8. Чему равны значения следующих функций для типа type day_off = (Sunday, Saturday): Low(day_off); High(day_off)?