- •Тема 1. Основи алгоритмізації процесів оброблення інформації
- •Алгоритм і його властивості
- •Схеми алгоритмів
- •Графічне зображення різних видів обчислювальних процесів
- •Тема 2. Інстрментальні мови та системи програмування
- •Покоління та класифікація мов програмування
- •Компоненти інструментальних систем
- •Історія розвитку мови програмування Паскаль
- •Інтегрована інструментальна оболонка Турбо Паскаль 7.0
- •Етапи створення програми
- •Тема 3. Мова програмування Турбо Паскаль 7.0
- •Алфавіт мови Турбо Паскаль 7.0
- •Структура Паскаль-програми
- •Система типів даних мови програмування Паскаль
- •Тема 4. Лінійні програми в мові Паскаль
- •Оператор присвоєння
- •Оператор введення
- •Оператор виведення
- •Операції та вирази в мові паскаль
- •Стандартні функції мови Паскаль
- •Тема 5. Умовний оператор в мові паскаль
- •Умовний оператор
- •Оператор варіанту
- •Тема 6. Оператори Циклу в мові паскаль
- •Оператор безумовного переходу
- •Оператор_циклу «з передумовою»
- •Оператори циклу « з післяумовою»
- •Оператор циклу «з параметром»
- •Тема 7. Обробка масивів у Турбо Паскалі
- •Одновимірні масиви
- •Багатовимірні масиви
- •Тема 8. Підпрограми в мові Турбо Паскаль
- •Процедури
- •Функції
- •Тема 8. Стандартні засоби обробки файлів
- •Обробка типізованих файлів
- •Послідовний та прямий доступ до файлу
- •Робота з текстовими файлами
- •Обробка безтипових файлів
- •Тема 9. Робота з рядковими типами даних в середовищі Турбо Паскаль
- •Тема 10. Множини в мові паскаль
- •Тема 11. Записи в мові Паскаль
- •Тема 12. Комп'ютерна графіка
- •ЛАБОРАТОРНИЙ ПРАКТИКУМ
- •Лабораторна робота №1
- •Лабораторна робота №9
- •ДОВІДНИК
- •Типові помилки компіляції та виконання програми
- •Процедури модуля Graph
- •функції модуля Graph
- •Кольори модуля Graph
«Turbo Pascal » |
Значенко О.П. |
ТЕМА 10. МНОЖИНИ В МОВІ ПАСКАЛЬ
Поняття множини, як і числа, відноситься до фундаментальних понять математики. На теорії множин базується більшість математичних моделей, і Паскаль
еодною з мов програмування , де існує відповідний тип даних.
Вматематиці множиною називається будь-яку сукупність об’єктів (наприклад множина чисел 1..10 ). Математична множина має довільну кількість елементів.
1. Множина (set)—це структурований тип даних, елементи якого складаються зі скінченого набору до 255 даних одного типу.
Значення елементів записують через кому в квадратних дужках. Так як у множині допускається тільки такі елементи, порядкові значення яких не виходять за межі відрізка 0..255 то для цілочислових множин це означає, що в них можуть знаходитися числа не менше 0 та не більше 255. Отже від’ємні числа, як елементи множин у Турбо Паскалі недопустимі. За допомогою множин розв'язують задачі, де потрібно визначити, чи деякий елемент належить певному набору даних чи ні тощо.
Основні правила роботи з множинами
Постійні множини в Паскалі задаються перерахуванням елементів: [1,2,3], [‘A’, ‘B’, ‘C’, ‘D’], [1..N]
Порядок розташування елементів у множині значення не має: [1, 2, 3, 4] і [2, 4, 1, 3] - це одна й та ж множина.
Множина без елементів називається порожньою: [ ].
Множина може складатися лише із різних елементів.
Загальний вигляд конструкції опису типу множини такий:
type <назва Tипy>=set of <базовий тип>;
Базовим типом може бути символьний, перерахований, діапазонний тип даних потужністю до 255 елементів.
55
«Turbo Pascal » Значенко О.П.
Приклад. Задамо сталу множину а, опишемо тип множини symbol і оголосимо змінні number, s та у відповідних типів:
const a = [1,2,5,9]; {Задаємо сталу множину}
type symbol = set of char;{Описуємо множину символів} var number : set of 1..100; {Оголошуємо змінні number, s, y} s : symbol; {відповідних множинних типів}
у : set of (green, black, red);
Операції над множинами
Для множин існують операції об'єднання, перетину, різниці, порівняння, а також операція визначення, чи деякий елемент належить множині.
Операція обєднання (+) Результатом даної операції буде множина, яка складається з елементів які належать хоча б одній з множин.
a+ b (об'єднання)— множина, яка містить усі елементи множин а і b без повторень.
Перетин множин (*) – Результатом буде множина яка складається з елементів які належать кожній з множин.
a*b (перетин) - множина, яка містить елементи, які є спільними для множин
а і b.
Різниця двох множин ( - ) – множина, яка складається з елементів
56
«Turbo Pascal » |
Значенко О.П. |
першої множини, які не належать другій.
a - b (різниця) - множина, яка складається з елементів, які є у множині а, але немає у множині b;
Порівняння (=, <> , <=, >= ) — результатом порівняння є дане логічного
типу.
Приклад.
Нехай задано множини а=[1,2,3,4,5,6] та b=[1,2,3,4]. Тоді а +b=[1,2,3,4,5,6]; a-b=[5,6]; а*Ь=[1,2,3,4]. Порівняння цих множин дає такі результати: а=b, — false; a<>b — true; a>=b - true; a<=b — false.
Значення змінній типу множина надають за допомогою команди присвоєння
<ім'я змінної> := <вираз>;
Типи множин, з яких складається вираз, мають збігатися.
Приклад.
Оголошеним вище змінним можна надати таких значень: number := [ ]; number := [15, 12, 7, 99];
number := number + [1,2, 6, 7] * [3, 4, 6, 7] - [4, 7]; s:=['s’,’g’, 'T’, '5', '$', '*']; s := [‘a’, ‘b’, 'd'] * [‘d'] + ['1', ‘r’]; y:=[red]; y:=[ ], де [ ] — порожня множина.
Пошук даних у множині
Потрібний елемент у множині можна знайти за допомогою операції іn. Для визначення чи елемент належить множині використовують таку конструкцію:
if <елемент> in <множина> then <команда 1> else <команда 2>;
Приклад. Перевірити чи є число 25 у множині а=[21, 4, 12, 25]. n := 25; а := [21, 4, 12, 25];
if n in a then write('Число ', n, ‘ є у множині') else write(‘Числа ', n, ' у множині немає');
57
«Turbo Pascal » |
Значенко О.П. |
Приклад. Менеджер комп'ютерного магазину-салону регулярно отримує інформацію про техніку, яка надходять на склади А, В, С. Українським назвам виробів поставлено у відповідність номери 1—9 та англійські назви tl-t9. Англійські назви описані за допомогою перерахованого типу tovary. Скласти програму, яка дає інформацію про вироби, що є на складах А або В, але немає на складі С.
program Sklady; uses Crt;
type tovary = (tl, t2, t3, t4, t5, t6, t7, t8, t9);{це інформація про наявність товарів на складах}
const A: set of tovary = [tl, t3, t4, t5, t6, t9];
B:set of tovary = [tl, t2, t3, t5, t6, t8, t9];
C:set of tovary = [t3, t5, t6, t8];
var tovar : tovary; begin
clrscr;
Writeln(‘y нас є такі товари:'); for tovar := tl to t9 do
if tovar in A + В - C then case ord (tovar)+l of
1: writeln ('Комп"ютери Dell Dimension');
2: writeln('Комп"ютери IBM PC 300');
3: writeln (‘Комп"ютери Celebris XL, GL');
4: writeln('Принтери Epson серій LX, LQ');
5:writeln('Принтери HP LJ 5L та 5РМ');
6: writeln ('Сканер Epson GT9000');
7: writeln('Дисковід CD-ROM');
8: writeln('Дискети Verbatim 1.44M6');
9:writeln('Дискети Polaroid 1.44M6') end;
writeln('MH чекаємо на вас!');
end.
{Після виконання програми на екрані отримаємо: У нас є такі товари: Комп'ютери Dell Dimension Комп'ютери IBM PC 300 Принтери Epson серій LX, LQ Дискети Polaroid 1.44Мб Ми чекаємо на вас}
58