результатов в файле: I= 36 J= 25
ST= PASCAL
Var CHF : Text;
I,J : integer;
ST : string;
...
I:=36; J:=25; ST:=’PASCAL’;
Assign(CHF,’A:\File2.Dat’);
Rewrite(CHF);
Writeln(CHF,’ Файлсрезультатами’);
Writeln(CHF,’ I=’, I:3, ‘ J=’, J:3);
Writeln(CHF,‘ ST= ’, ST);
Close(CHF);
С процедурами, обеспечивающими чтение и запись информации в файлы, тесно связаны две функции:
12 Множества. Описание множества
Множество - произвольный набор однотипных элементов, понимаемых как единое целое ([1, 3, 5, 7, 9] - множество нечетных цифр). В среде Turbo-Pascal 7.0 существует ряд ограничений на тип и количество элементов составляющих множество:
- тип элементов может быть любой ординальный, но целый задается диапазоном значений;
- количество элементов в множестве не более 256, а порядковые номера лежат в диапазоне 0..255.
Определение типа
TypeMN=setof<тип компонент>;
где Х – идентификатор множества;
VarX: MN; MN- новое имя типа;}
Пример:
VarLET1 : setofchar;{множество символов в диапазоне 0..255}
LET2: setof ‘A’..’Z’;{множество заглавных латинских букв}DAY : setof 1..31;{множество целых чисел, заданных диапазоном}
MONTH: set of (FEB, MAR, APR, MAY);{множество, заданное
перечислением элементов}
...
LET1:=[‘0’, ‘2’, ‘A’, ‘C’];
LET2:=[‘A’, ‘B’, ‘C’, ‘D’];
MONTH:=[MAR,MAY];
DAY:=[ ]; {пустоемножество}
13 Операции над множествами
Рассмотрим допустимые в среде Turbo-Pascal 7.0 операции над множествами, воспользовавшись следующим описанием:
Type MN=set of (‘0’..’9’, ‘A’..’F’);
Var CHIS, CHIS16, LET, RMN : MN;
B: boolean;
X: ‘A’..’F’;
...
S1+S2 | Результат объединения - множество, которое содержит элементы, либо принадлежащие множеству S1, либо S2 либо тому и другому. |
CHIS:=[‘0’..’9’];
LET:=[‘A’..’F’];
RMN:=CHIS + LET; {[‘0’..’9’, ‘A’..’F’]}
Пересечение множеств
S1*S2 | Результирующее множество содержит элементы, которые принадлежат как множеству S1,так и множеству S2. |
CHIS:=[‘0’..’9’];
CHIS16:=[‘0’..’9’, ‘A’..’F’];
RMN:=CHIS * CHIS16; {[‘0’..’9’]}
LET:=[‘A’..’F’];
RMN:=CHIS * LET; {[ ] -пустоемножество}
Разность множеств
S1-S2 | Результирующее множество содержит те элементы множества S1, которые не принадлежат S2. |
CHIS:=[‘0’..’9’];
CHIS16:=[‘0’..’9’, ‘A’..’F’];
RMN:=CHIS16 - CHIS; {[‘A’..’F’]}
Равенство - неравенство множеств
S1=S2S1<>S2 | Множества S1=S2 тогда и только тогда, когда все элементы множества S1 равны элементам множества S2,иначе S1<>S2. Результат операции Boolean. |
CHIS:=[‘0’..’9’];
LET:=[‘A’..’F’];
B:=CHIS = LET; { False }
B:=CHIS<>LET; { True }
Включение множества
S1<=S2 | Результат операции True, когда все элементы множества S1 входят в множество S2, в остальных случаях результат операции False. |
CHIS:=[‘0’..’9’];
LET:=[‘A’..’F’];
CHIS16:=[‘0’..’9’, ‘A’..’B’];
B:=CHIS<=CHIS16; { True }
B:=LET<=CHIS; { False }
Проверка принадлежности
X in S1 | Результат операции True, если Х принадлежит множеству S1 и Falseв противном случае. Тип Х должен совпадать с типом элементов множества S1. |
X:=’C’;
CHIS:=[‘0’..’9’];
LET:=[‘A’..’F’];
B:= X in CHIS; { False }
B:= X in LET; { True }
Пример:
{Дан текст из заглавных латинских букв, за которым следует точка. Напечатать первые вхождения букв в текст, сохраняя порядок}
VarLET: setof ‘A’..’Z’;
C : char;
Begin
LET:=[ ]; {множество букв, встречающихся в тексте}
Read(C);
WhileC <> ‘.’ do{ цикл до конца текста}
Begin
if not (C in LET) then { первоевхождение}
Begin
Write(C);
LET:=LET + [C]
end;
Read(C)
end;
Writeln;
end.
Заключение
В процессе выполнения работы мы ознакомились:
- с описанием типизированных файлов;
- с принципами работы с файлами;
- с созданием и открытием на запись нового файла;
- с чтением из файла;
- с открытием существующего файла на чтение;
- с распознаванием конца файла;
- с определением имени файла;
- с закрытием файла;
- с описанием текстовых файлов;
- с чтением из текстовых файлов;
- с записью в текстовый файл;
- с множествами и описанием множества;
- с операциями над множествами;
- приведено множество примеров.
Литература
1. Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. - М.: Наука, 1987;
2. Абрамов С.А., Зима Е.В. Начала информатики. - М.: Наука, 1988;
3. Довгаль С.И., Литвинов Б.Ю., Сбитнев А.И. Персональные ЭВМ: Турбо-Паскаль V7.0, Объектное программирование, Локальные сети. (Учебное пособие).- Киев, «Информсистема сервис», 1993;
4. Епанешников А.М., Епанешников В.А. Программирование в среде Turbo-Pascal 7.0 .- М.:, Диалог МИФИ, 1993;
5. Йенсен К., Вирт Н. Паскаль: Руководство для пользователя. /Пер. с англ. М.Л.Сальникова, Ю.В.Сальниковой. - М.:, Компьютер, 1993;
6. Перминов О.Н. Программирование на языке Паскаль. - М.: Радио и связь, 1988;
7. Поляков Д.Б., Круглов Н.Ю. Программирование в среде Турбо-Паскаля. - изд.МАИ., М.:, 1992;
8. Прайс Д. Программирование на языке Паскаль. Практическое руководство. /Пер. с англ. - М.:, Мир, 1987;
9. Семашко Г.Л., Салтыков А.И. Программирование на языке Паскаль. - М.: Наука. Гл. ред. физ.-мат. лит.,1993;
10. Фаронов В.В. Турбо-Паскаль. Начальный курс – 1 кн. Практика программирования –2 кн. Учебное пособие. - М.: «Нолидж»,1997;
11. Эрбс Х.-Э., Штольц О. Введение в программирование на языке Паскаль./Пер. с нем. - М.:, Мир, 1989;