
- •Министерство общего и профессионального образования Российской Федерации Уральский государственный технический университет Основы программирования на языке Паскаль
- •Структура программы на паскале
- •Типы данных
- •Правила программирования арифметических операций
- •Арифметические функции
- •Операции отношения (сравнения)
- •Логические операции
- •Приоритет операций
- •Операторы турбо-паскаля ввод и вывод данных
- •Составной оператор
- •Условный оператор
- •Оператор выбора
- •Операторы повторений (циклов) счетный цикл
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Использование массивов
- •Процедуры и функции
- •Описание и использование функций
- •Описание и использование процедур
- •Взаимодействие подпрограмм
- •Стандартные модули
- •Использование модуля crt
- •Практический пример. Программа "меню"
- •Использование модуля graph
- •Установка цветов
- •Изображение точек и линий
- •Практический пример. Построение графика функции
- •Работа с текстом
- •Практический пример. Построение спирали
- •Программирование с использованием нестандандартных типов данных перечисляемый тип
- •Множества
- •Основы программирования на языке Паскаль
Множества
МНОЖЕСТВОМ называется набор неупорядоченных элементов одного типа. Повторяющихся элементов в множестве быть не может. В Паскале элементами множеств могут быть данные целых типов, символьные и некоторых других типов. Массивы или действительные числа элементами множеств быть не могут.
Максимальное количество элементов в множестве 256, минимальное - ноль (такое множество называют ПУСТЫМ). Множества имеют имена, правила образования которых такие же, как и для всех идентификаторов.
Два множества А и В называют ЭКВИВАЛЕНТНЫМИ, когда они состоят из одинаковых элементов. Если все элементы какого-либо множества А входят в другое множество В, говорят, что А является ПОДМНОЖЕСТВОМ В.
Естественно, что при использовании множеств в программе их нужно описывать. Как это часто бывает, Паскаль позволяет описать множества несколькими способами, но в любом случае признаком описания множества является зарезервированное слово SET. Например,
TYPE
D = Set of 0..9;
Day = Set of (Mo,Tu,We,Th,Fr,Sa,Su);
Liter = Set of char;
Здесь определены три типа-множества: D - целые числа от нуля до девяти, Day - дни недели, Liter - все символы. После определения типа-множества мы можем далее определить и конкретные переменные-множеста. Например,
TYPE
D = Set of 0..9;
VAR
S,S4,S5,S6: D;
Здесь определены четыре множества типа D, которые могут состоять из целых чисел от нуля до девяти. Вместо указания типа мы могли бы использовать и такое описание тех же множеств:
VAR
S: Set of 0..9;
S4: Set of 0..9;
S5: Set of 0..9;
S6: Set of 0..9;
В данных примерах мы только определили множества (точнее переменные множественного типа). Их конкретные значения - это последовательность элементов, разделенных запятыми, и заключенная в квадратные скобки. Конкретные значения переменных-множеств задаются в разделе описаний программы с помощью так называемого КОНСТРУКТОРА множеств, например:
S4:=[0..3,6];
S5:=[4,5];
S6:=[3..9];
Над пременными-множествами определены специальные операции. Некоторые из них обозначаются известными нам знаками “+”, “-“, “*”, но их смысл не тот, к которому мы привыкли. Знак “*” обозначает операцию ПЕРЕСЕЧЕНИЯ множеств. Ее результат - общие элементы двух множеств. Например,
S:=S4*S6; ¦ [3,4]
S:=S4*S5; ¦ []
Знак "+" обозначает операцию ОБЪЕДИНЕНИЯ множеств. Ее результат - элементы первого множества, дополненные элементами второго. Например,
S:=S4+S5; ¦ [0,1,2,3,4,5,6]
S:=S5+S6; ¦ [3,4,5,6,7,8,9]
Знак "-" обозначает разность множеств. Ее результат содержит элементы из первого множества, которые не принадлежат второму.
S:=S6-S5; ¦ [3,6,7,8,9]
S:=S4-S5; ¦ [0,1,2,3,6]
Над множествами определены операции отношения (сравнения). Пусть имеется два множества А и В. Тогда логическое выражение
А=В
является истинным, если множетсва эквивалентны. Выражение
А<>В
является истинным, если множества неэквивалентные. Выражения
А<=В и В>=А
истинны, если А является подмножеством В. Для проверки принадлежности какого-либо отдельного элемента к множеству используется операция IN. Ее формат
<выражение> IN <имя множества>
Например, для рассматриваемых множеств выражение
3 in S6
является истинным, а
2*2 in S4
ложным. Заметим, что при проверке принадлежности выражение и множество должны быть одного типа.
Тип “множество” используется при программировании на Паскале довольно часто. Это во многом обусловлено именно тем, что сам Паскаль следит, чтобы в множестве не было одинаковых элементов. Практическое использование этого свойства иллюстрирует следующий пример. Пусть имеется массив целых чисел. Требуется напечатать только те его элементы, которые повторяются хотя бы дважды. Для поиска повторяющихся элементов может использоваться такая программа:
Program No17;
USES CRT;
CONST N=15;
VAR
D: array[1..N] of integer;
S: Set of 0..N;
i,j: integer;
BEGIN
ClrScr;
S:=[];
For i:=1 To N Do
begin
D[i]:=Random(N+1); Write(D[i],' ')
end;
For i:=1 To N Do
For j:=i+1 to N Do
If D[i]=D[j] Then S:=S+[D[i]];
Writeln;
For i:=0 To N Do
If (i IN S) Then Write(i,' ');
Readln;
END.
Здесь N - количесто элементов массива D, а S - некоторая служебная переменная множественного типа.