Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Інформатика програма 9 класу.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
529.92 Кб
Скачать

§ 12. Множини

        1. Множина (set) — це структурований тип даних, елементи якого скла­дають­ся зі скінченого набору до 255 даних одного типу, значення яких запи­сують через кому в квадратних дужках. За допомогою множин розв’язують задачі, де потрібно визначити, чи деякий елемент належить певному набору даних чи ні тощо.         Для множин існують операції об'єднання, перетину, різниці, порів­­няння, а також операція визна­чення, чи деякий елемент нале­жить множині.

a + b (об'єднання) — множина, яка містить усі елементи мно­жин a i b без повторень; a * b (перетин) — множина, яка містить елементи, які є спіль­ними для множин a i b; ab (різниця) — множина, яка складається з елементів, які є у множині а, але немає у множині b; =, <>, <=, >= (порівняння) — результатом порівняння є дане логічного типу.

        Приклад. Нехай задано множини а=[1,2,3,4,5,6] та b=[1,2,3,4]. Тоді a+b=[1,2,3,4,5,6]; a–b=[5,6]; a*b=[1,2,3,4]. Порівняння цих множин дає такі результати: a=b — false; a<>b — true; a>=b – true; a<=b — false.         Порядок розташування елементів у множині значення не має: [1, 2, 3, 4] і [2, 4, 1, 3] – це одна й та ж множина. Множина без елементів називається порожньою: [ ].         Загальний вигляд конструкції опису типу множини такий:

            type <назва типу>=set of <базовий тип>;

        Базовим типом може бути символьний, перерахований, діапазон­ний тип даних потужністю до 255 елементів.         Приклад. Задамо сталу множину а, опишемо тип множини sym­bol і оголосимо змінні number, s та y відповідних типів:

const a = [1,2,5,9]; type symbol = set of char; var number : set of 1..100; s : symbol; y : set of (green, black, red);

{Задаємо сталу множину} {Описуємо множину символів} {Оголошуємо змінні number, s, y} {відповідних множинних типів}

        Значення змінній типу множина надають за допомо­гою команди присвоєнн

            <ім'я змінної> := <вираз>;

        Типи множин, з яких складається вираз, мають збі­га­тися.         Приклад. Оголошеним вище змінним можна надати таких значень:

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:=[ ], де [ ] — порожня множина.

        2. Пошук даних у множині. Потрібний елемент у множині можна знайти за допомогою опера­ції in. Для визначення чи елемент належить множині використо­вують таку конструк­цію

            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, ' у множині немає');

        Приклад. Складемо процедуру, яка визначає число n – кількість цифр у деякий множині символів s типу symbol.

procedure Poshuk(s: symbol; var n : integer); var cyfra: '0'..'9'; begin    n:=0;    for cyfra:= '0' to '9' do       if cyfra in s then n:=n+1 end;

        Задача 1. Менеджер комп’ютерного магазину-салону регулярно отримує інформацію про техніку, яка надходять на склади A, B, C. Українським назвам виробів поставлено у відповідність номери 1–9 та англійські назви t1–t9. Англійські назви описані за допомогою перерахованого типу tovary. Скласти програму, яка дає інформацію про вироби, що є на складах A або B, але немає на складі C.

program Sklady; uses Crt; type tovary = (t1, t2, t3, t4, t5, t6, t7, t8, t9); {це інформація про наявність товарів на складах} const A: set of tovary = [t1, t3, t4, t5, t6, t9];    B: set of tovary = [t1, t2, t3, t5, t6, t8, t9];    C: set of tovary = [t3, t5, t6, t8]; var tovar : tovary; begin    clrscr;    writeln('У нас є такі товари:');    for tovar := t1 to t9 do    if tovar in A + B – C then    case ord (tovar)+1 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 та 5PM');       6 : writeln('Сканер Epson GT9000');       7 : writeln('Дисковід CD-ROM');       8 : writeln('Дискети Verbatim 1.44Мб');       9 : writeln('Дискети Polaroid 1.44Мб') end; writeln; writeln('Ми чекаємо на вас!'); end.

        Після виконання програми на екрані отримаємо:

У нас є такі товари: Комп'ютери Dell Dimension Комп'ютери IBM PC 300 Принтери Epson серій LX, LQ Дискети Polaroid 1.44Мб Ми чекаємо на вас!

        Завдання. Розв’яжіть задачу № 22 свого варіанта.