7.3. Множественные типы
Множество – это совокупность однотипных элементов. Во многом оно похоже на типизованную константу, однако имеет от него принципиальное отличие. Это отличие состоит в том, что значениями множества являются все его допустимые подмножества.
Как и в массивах, следует различать множество-тип и множество-переменную.
Множество-тип. Синтаксис множества-типа:
<имя множества> = Set of <базовый тип >;
Пример:
Type
TSomeInts = 1..250;
TIntSet = set of TSomeInts;
создает тип множества с именем TIintSet, которое содержит множество целых чисел в диапазоне от 1 до 250. Это же множество могло быть описано явно:
type TIntSet = set of 1..250;
Множество-переменная. Синтаксис множества-переменной:
<имя множества> : Set of <базовый тип >;
В соответствии с вышеописанными типами можно объявить множества:
Var Set1, Set2: TIntSet;
а затем в операторной части задать эти множества:
...
Set1 := [1, 3, 5, 7, 9];
Set2 := [2, 4, 6, 8, 10];
Можно объявить множество явно, перечислив его элементы:
Var
MySet1 : set of 'a' .. 'z';
MySet2 : set of Byte
MySet3 : set of (Club, Diamond, Heart, Spade)
MySet4 : set of Char;
...
MySet 1:= ['a','b','c']; {оператор определения множества}
Операции над множествами. Допустимые операции над множествами приведены в следующей табл. 6:
Таблица 6
Опера-ция | Наименование операции | Тип операндов | Тип результата | Пример |
+ – * <= >= = <> in | Объединение Вычитание Пересечение Не меньше Не больше Равенство Неравенство Принадлежание | set set set set set set set элемент set | set set set boolean boolean boolean boolean boolean | Set1 + Set2 S - T S * T Q <= MySet S1 >= S2 S2 = MySet MySet <> S1 A in Set1 |
Объединение, вычитание и пересечение множеств.
Результатом любой из операций будет также множество.
Пример:
Var
S1, S2,S3 : set of Byte;
...
S1:= [1, 2 , 3, 4]; {оператор определения множества}
S2:= [3, 4, 5, 6, 78]; {оператор определения множества}
S3:= S1 + S2; {объединение множеств}
{результат S3 = [1, 2, 3, 4, 5, 6, 78] }
S3:= S2 - S1; {вычитание множеств}
{результат S3 = [1, 2, 5, 6, 78] }
S3:= S2 * S1; {пересечение множеств}
{результат S3 = [3, 4] }
Операции сравнения множеств.
Результатом любой из операций будет логическая константа True (истина) или False (ложь).
Пример:
Var
S1, S2, S3 : set of Byte;
B: boolean;
...
S1:= [3, 4]; {оператор определения множества}
S2:= [1, 3, 4]; {оператор определения множества}
S3:= [3, 4, 5, 6, 78]; {оператор определения множества}
B:= S1 <= S3; {True, т. к. S1 является подмножеством S3}
B:= S3 >= S2; {False, т. к. S2 не является подмножеством S2}
B:= S3 = S2; {False, т. к. мн-ва S2 и S3 не равны друг другу }
B:= S3 <> S2; {True, т. к. мн-ва S2 и S3 не равны друг другу }
Проверка вхождения элемента во множество. Результатом операции in будет логическая константа True (истина) или False (ложь). Пример:
Var
S1 : set of Integer;
B: boolean;
...
S1:= [3, 4, 18 .. 178, 3101, 4427]; {оператор определения множества}
B:= ( 4 in S1); {True, т. к. 4 является элементом множества S1}
B:= (200 in S1); {False, т. к. 200 не является элементом S1}
7.4. Файловые типы
В языке Object Pascal есть три типа файлов:
текстовые файлы,
файлы с типом,
файлы без типа.
Связь с файлом может быть установлена через файловую переменную, которая после описания, но до использования в программе должна быть связана с внешним файлом с помощью процедуры AssignFile.
Текстовой файл – это последовательность символьных строк перемен-ной длины. Всякая такая строка завершается маркером конца строки CR/LF. Текстовые файлы можно обрабатывать только последовательно. Ввод и вывод нельзя производить для открытого файла, используя одну файловую переменную. Текстовой файл имеет тип TextFile, или просто Text. Пример описания файловой переменной текстового типа:
Var Fi: TextFile;
Файлы без типа состоят из компонент одинакового размера, структура которых не известна или не имеет значения. Допустим прямой доступ к любой компоненте файла. Пример объявления файловой переменной файла без типа:
Var F: File;
Файлы c типом состоят из однотипных компонент известной структуры. Допустим прямой доступ к любой компоненте файла. Пример объявления файловых переменных для файлов с типом:
Type
TRec = Record
A: Real;
B: Integer;
C: Char;
End;
Var
F : File of Real;
Q : File of String[100];
Fr: File of TRec;
В этом примере F объявлена как файловая переменная вещественного типа. Это означает, что компонентами файла могут быть только вещественные значения. Файловая переменная Q предназначена для доступа к файлам, которые состоят из символьных строк длины 100. Файловая переменная Fr предназначена для работы с файлами, которые состоят из записей типа TRec, объявленного в секции Type.
... в среде Delphi). Задачи использовались как с данного сайта, так и из других источников – книг и семинарских занятиях по информатике в МГОУ. Курс завершается разработкой игры. Программное обеспечение: свободно распространяемая версия объектно-ориентированной среды программирования Delphi. Методы обучения: метод проектов, лекции, проблемный метод, частично-поисковый метод. Контроль знаний и умений ...
... // ... if(condition1) { j = 4; goto label1; } // ... for(j = 0; j < 10; j++) { // ... label1: // ... if(condition2) { i = 6; goto label2; } } // ... label2: // ... } 2.2 Разработка программы В среде программирования Borland Delphi создадим новое приложение (пункт меню File New Application). ...
... так называемые указатели. Указатель - это переменная, которая в качестве своего значения содержит адрес байта памяти. С помощью указателей можно размещать в динамической памяти любой из известных в Object Pascal типов данных. Лишь некоторые из них (Byte, Char, ShortInt, Boolean) занимают во внутреннем представлении один байт, остальные - несколько смежных. Поэтому на самом деле указатель адресует ...
... групп нулей и единиц. Каждая группа отделяется друг от друга одним или несколькими пробелами. Найти и вывести на экран группы с четным количеством символов. Лабораторная работа №6 Программирование АЛГОРИТМОВ с использованием записей Цель лабораторной работы: создать приложение, в котором используются данные типа запись. 6.1.Пример создания приложения Задание: создать Windows-приложение для ...
0 комментариев