- •1 Завдання контрольної роботи
- •1.1 Завдання 1. Робота з елементами одномірного масиву
- •1.2 Завдання 2. Робота з цілочисельною прямокутною матрицею
- •2 Основні теоретичні відомості алгоритмічної мови паскаль
- •2.1 Склад мови
- •2.2 Основні поняття алгоритмічної мови Pascal
- •2.2.1 Основні символи
- •2.2.2 Елементарні конструкції
- •2.2.3 Концепція типу для даних
- •2.2.4 Стандартні типи даних
- •2.2.5 Змінні. Ініціалізація змінних
- •2.2.6 Вирази
- •2.3 Структура програми
- •2.4 Основні оператори
- •2.4.1 Оператор присвоювання
- •2.4.2 Оператори введення і виведення
- •2.4.3 Оператор переходу
- •2.4.4 Умовний оператор
- •2.4.5 Організація циклу
- •2.4.5.1 Безпосередня організація циклу
- •2.4.5.2 Цикл із параметром
- •2.4.5.3 Цикл із передумовою
- •2.4.5.4 Цикл із післяумовою
- •2.4.6 Оператори завершення циклу
- •2.4.7 Оператор варіанту
- •2.4.8 Оператори виходу
- •2.5 Вбудовані функції
- •2.6 Бітова арифметика
- •2.7 Завдання типів даних
- •2.7.1 Тип даних, які перелічуються
- •2.7.2 Інтервальний тип даних
- •2.7.3 Масиви
- •2.7.4 Рядки
- •2.8 Обробляння рядків
- •2.9 Процедури і функції
- •2.10 Модулі
- •2.11 Множини
- •2.12 Записи
- •2.13 Файли
- •2.13.1 Текстові файли
- •2.13.2 Компонентні файли
- •2.13.3 Безтипові файли
- •2.13.4 Послідовний і прямий доступ
- •2.14 Показники
- •3 Варіанти завдань на контрольну роботу
- •3.1 Завдання №1 на контрольну роботу
- •3.2 Завдання №2 на контрольну роботу
- •Література
2.11 Множини
Поняття множини в мові ПАСКАЛЬ ґрунтується на математичному представленні про множини: - це обмежена сукупність різних елементів. Для побудови конкретного множинного типу використовується тип, що перелічується чи інтервальний тип даних. Тип елементів, що складають множину, називається базовим типом.
Множинний тип описується за допомогою службових слів Set of, наприклад:
type M= Set of B;
Тут М - множинний тип, В - базовий тип.
Приклад опису змінної множинного типу:
type
M= Set of 'A'..'D';
var
MS: M;
Приналежність змінних до множинного типу може бути визначена прямо в розділі опису змінних:
var
C: Set of 0..7;
Константи множинного типу записуються у виді укладеної в квадратні дужки послідовності чи елементів інтервалів базового типу, розділених комами, наприклад:
['A', 'C'] [0, 2, 7] [3, 7, 11..14].
Константа виду [ ] означає порожню підмножину.
Множина містить у собі набір елементів базового типу, усі підмножини даної множини, а також порожня підмножину. Якщо базовий тип, на якому будується множина, має К елементів, то число підмножин, що входять у цю безліч, дорівнює 2 у ступені К. Нехай мається змінна Р интервального типу:
var P: 1..3;
Ця змінна може приймати три різних значення - або 1, або 2, або 3. Змінна Т множинного типу
var T: Set of 1..3;
може приймати вісім різних значень:
[ ] [1,2]
[1] [1,3]
[2] [2,3]
[3] [1,2,3]
Порядок перерахування елементів базового типу в константах може бути будь-яким.
Значення змінної множинного типу може бути задано конструкцією виду [T], де T - змінна базового типу.
До змінних і констант множинного типу застосовують операції присвоювання (:=), об'єднання (+), перетинання (*) і різниці (-):
['A','B'] + ['A','D'] дасть ['A','B','D']
['A'] * ['A','B','C'] дасть ['A']
['A','B','C'] - ['A','B'] дасть ['C'].
Результат виконання цих операцій є величина множинного типу.
До множинних величин можуть застосовуватись операції: тотожність (=), нерівність (<>), міститься в (<=), містить (>=). Результат виконання цих операцій має логічний тип, наприклад:
['A','B'] = ['A','C'] дасть FALSE
['A','B'] <> ['A','C'] дасть TRUE ['B'] <= ['B','C'] дасть TRUE ['C','D'] >= ['A'] дасть FALSE.
Крім цих операцій для роботи з величинами множинного типу в мові ПАСКАЛЬ використовується операція
in,
яка перевіряє приналежність елемента базового типу, що стоїть ліворуч від знака операції, множини, що стоїть праворуч від знака операції. Результат виконання цієї операції – булевський. Операція перевірки належності елемента множини часто використовується замість операцій відношення, наприклад:
A in ['A', 'B'] дасть TRUE,
2 in [1, 3, 6] дасть FALSE.
При використанні в програмах даних множинного типу виконання операцій відбувається над бітовими рядками даних. Кожному значенню множинного типу в пам'яті ЕОМ відповідає один двійковий розряд. Наприклад, множина
['A','B','C','D']
представлена в пам'яті ЕОМ бітовим рядком
1 1 1 1.
Підмножини цієї множини представлені рядками:
['A','B','D'] 1 1 0 1
['B','C'] 0 1 1 0
['D'] 0 0 0 1
Величини множинного типу не можуть бути елементами списку вводу - виводу.
У кожній конкретній реалізації транслятора з мови ПАСКАЛЬ кількість елементів базового типу, на якому будується множина, обмежена. У TURBO PASCAL кількість базових елементів не повинна перевищувати 256.
Ініціалізація величин множинного типу виробляється за допомогою типізованих констант:
const seLit: Set of 'A'..'D'= [];
Проілюструємо застосування даних множинного типу на прикладі. Приклад. Скласти програму, що виробляє і виводить на дисплей набори випадкових чисел для гри в "Спортлото 5 з 36". Для заповнення кожної картки спортлото необхідно одержати набір
з п'яти псевдовипадковихх чисел. До цих чисел пред'являються дві вимоги:
-числа повинні знаходитися в діапазоні 1..36;
-числа не повинні повторюватися.
Program Lotto;
var
nb, k: Set of 1..36;
kol, l, i, n: Integer;
begin
Randomize;
WriteLn('ВВЕДІТЬ kol');
ReadLn(kol); nb:=[1..36];
for i:=1 to kol do
begin
k:=[];
for l:=1 to 5 do
begin
repeat
n:=Random(36)
until (n in nb) and not (n in k);
k:=k+[n];
Write(n:4)
end;
WriteLn
end
end.
