- •Лекция №1. Структура программы на Паскале.
- •Раздел описаний
- •Основные стандартные функции, определенные в Паскале.
- •Стандартные типы переменных и
- •3.Символьный тип.
- •Лекция №2. Разветвляющиеся вычислительные процессы.
- •1. Условного if
- •2.Оператор выбора case
- •Блок – схемы операторов if и case.
- •Лекция №3. Циклические вычислительные процессы (иттерационные).
- •1.Общая форма записи оператора цикла while:
- •2. Общая форма записи repeat.
- •Операторы цикла могут быть вложены один в другой:
- •3. Общая форма записи оператора цикла for.
- •Отличие цикла for от while и repeat.
- •Лекция №4. Массивы.
- •Двумерные массивы.
- •Ввод и вывод двумерного массива.
- •Определение одно- и двумерного массива, как типизированной константы.
- •Типовые алгоритмы обработки массивов.
- •Лекция №5. Процедуры и функции.
- •Функции.
- •Лекция №6. Строковые переменные.
- •Стандартные процедуры и функции для работы со строковыми переменными.
- •Лекция №7. Множества.
- •Формирование множеств.
- •Отношения и операции над множествами.
- •Лекция №8. Записи.
Лекция №7. Множества.
Наряду с численными типами множества являются фундаментальным понятием в математике (конечные, бесконечные, состоящие из разных (произвольных) элементов). В Pascal рассматриваются только конечные множества, состоящие из небольшого числа элементов имеющие один и тот же тип.
Определение: Множества в Pascal – это ограниченный, упорядоченный набор различных элементов одного базового типа.
Базовый тип – это совокупность значений из которых могут быть образованы множества. Всего может быть не более 256 различных элементов. (Идет то же самое расширение, что и по строке.)
Значение переменной множественного типа может содержать любое количество элементов базового типа (от 0 до всех возможных значений базового типа) и в качестве базового может использоваться любой тип, кроме вещественного.
Постоянные множества и в Pascal и в математике задаются путем их перечисления.
-
Математика
Pascal
0
[]
{1, 2, 3}
[1, 2, 3]
{A, B, C, D}
['A', 'B', 'C', 'D']
{1, 2, …, N}
[1..N]
В квадратных скобках могут указываться не только константы, но и выражения типа элементов множества.
Множества в Pascal описываются:
TYPE имя типа = SET OF базовый тип;
VAR имя переменной: имя типа;
или
VAR имя переменной: SET OF базовый тип;
или
CONST имя переменной = [элементы множества];
Пример:
VAR A: SET OF INTEGER;
B: SET OF 'A'..'Z';
C:SETOFCHAR;
В отличие от массивов к элементам множества нет прямого доступа, поэтому ввод и вывод элементов множества осуществляется:
Ввод с помощью операции сложения (объединения)
Вывод с помощью проверки принадлежности IF.
Формирование множеств.
Если элементы множества идут подряд друг за другом, то можно использовать диапазон. Например, множество описанное: VAR A: SET OF 1..5; может принимать значения:
A = [];
A[1], [2], [3], [4], [5]
A[1, 2], [1, 3], [1, 4], [1, 5]…
A[1, 2, 3]…
A[1, 2, 3, 4]…
A[1, 2, 3, 4, 5]
Отношения и операции над множествами.
Отношения рассматриваются, как операции, вырабатывающие логическое выражение.
-
Математика
Pascal
В Pascal определены три операции над множествами:
1. Операция объединения.
Математика:
B A
Объединением двух множеств называется множество элементов принадлежащих обоим множествам.
Пример:
['A', 'B'] + ['C', 'D'] = ['A', 'B', 'C', 'D']
2. Пересечение
Математика:
Pascal:
Пересечением двух данных множеств называется множество элементов принадлежащих одновременно и первому и второму множеству, общие элементы.
Пример:
['A', 'B']*['C', 'D'] = [];
3. Математика:
Pascal:
Вычитанием двух множеств называется множество, состоящее из тех элементов первого множества, которые не являются элементами второго множества.
Пример:
['A', 'B'] – ['C', 'D'] = ['A', 'B'];
Над элементами множества определены операции сравнения (=, ,). Над элементами допустим оператор присваивания.
Пример:
VAR A,B: SET OF 1..10;
BEGIN
A:=[1, 5, 7];
B:=A;
Оператор B:=A означает, что переменнойB-типа множество присваивается текущее значение множества А и вместо А может использоваться выражение типа множество.
Ввод элементов во множество:
A:=[];
READ (C); {C базовому типу}
WHILE C<>0 DO
BEGIN
A:=A+C;
READ (C); END;
Пример:Пусть дана строка символов с точкой в конце строки. Необходимо определить число различных букв входящих в эту строку.
PROGRAM MNO;
VAR M: SET OF CHAR;
STR: STRING;
C: CHAR;
I,N: INTEGER;
BEGIN
M:=[ ]; N:=0;
READLN (STR);
FOR I:=1 TO LENGTH (STR) DO
M:=M+STR[ I ];
FOR C:='A' TO 'Я' DO
IF C IN M THEN N:=N+1;
WRITELN (N);
END.