Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

_TPLab_My_Посібник

.pdf
Скачиваний:
20
Добавлен:
08.06.2015
Размер:
1.85 Mб
Скачать

{розділових знаків. Яким ще способом можна це перевірити } { не використовуючи множини? }

Then inword NO {поточний символ поза словом }

Else

If inword=NO Then Begin inword YES; nw nw+1;

End;

End;

Writeln ('nc=',nc,'nw=',nw)

End.

Розглянемо приклад програми, яка переставляє символи в заданому тексті з кінця на початок, не використовуючи додатковий рядок.

Program Palindrom; Uses CRT;

Var Slovo: String;

Bukva: Char; len, i : Integer;

Begin Clrscr;

Writeln (' Задайте текст або число ');

Readln (slovo); len length (slovo);

For i To len div 2 Do Begin

bukva slovo[i]; slovo[i] slovo[len-i+1]; slovo[len-i+1] bukva;

End;

Writeln (slovo);

Readln;

End.

Примітка. Словом будемо називати групи символів, розділені пробілами (одним або декількома), які не містять пробілів всередині себе.

КОНТРОЛЬНІ ЗАПИТАННЯ:

1.Для чого використаються текстові дані?

2.Як можна звернутися до окремого символу рядка WORD?

3.Нехай W1 - рядок, W2 - пiдрядок. Вкажіть, яка команда записана правильно:

Insert (W2,W1,6);

Insert (W1,W2, 6); W1:=Copy(W2, 4, 8);

4.Визначите призначення і порядок роботи функції POS.

5.Вкажіть два способи заміни символів у рядку - з використанням процедур і функцій роботи з рядками та без використання процедур і функцій.

6.Визначите призначення й порядок роботи процедури Val.

7.Як можна визначити поточну довжину рядка?

8.Як можна скопіювати фрагмент одного рядка в другий?

9.Як можна вставити літеру в слово?

10.Як можна замінити літеру в слові?

11.Як можна видалити фрагмент рядка?

12.Як можна перетворити текст в число і навпаки?

13.Як можна отримати код символу?

14.Як можна отримати символ за його кодом?

15.Як порівнюються рядки?

61

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

ЗАВДАННЯ ДЛЯ САМОСТІЙНОГО ВИКОНАННЯ.

Завдання 1:

Ввести своє прізвище, ім'я та по батькові як одну рядкову змінну. Визначити довжину рядка і кількість слів у ньому та вивести слова у стовпець із вказівкою довжини кожного слова.

Завдання 2:

Виконати завдання свого варіанту двома способами: а) розглядаючи рядок як масив символів; б) застосовуючи функції та процедури опрацювання рядків.

1.Запис цілого числа має непарну кількість цифр. Вивести на екран середню цифру.

2.У заданому натуральному N-розрядному числі впорядкувати цифри так, щоб одержати найменше число, записане тими ж цифрами.

3.У заданому натуральному N-розрядному числі впорядкувати цифри так, щоб одержати найбільше число, записане тими ж цифрами.

4.З'ясувати, чи є задане натуральне число, записане парною кількістю цифр, номером «щасливого квитка». Тобто, з'ясувати, чи рівна сума цифр лівої половини числа сумі цифр правої половини числа.

5.Задано рядок, у якому записані дійсні та натуральні числа через пробіл. Виділити тільки натуральні числа і вивести їх на екран.

6.Видалити із запису натурального числа N всі парні цифри, залишивши незмінним порядок проходження непарних цифр. Наприклад, із числа 25677494 буде отримане число 5779.

7.Замінити пропуски (пробіли) між словами в рядку символом – (дефіс).

8.Видалити з рядка всі символи після заданого.

9.Визначити кількість символів у рядку, які стоять перед заданим символом.

10.Перевірити чи задане довге ціле число є числом-паліндромом.

11.Замінити у реченні першу літеру кожного слова на велику.

12.У заданому довгому цілому числі саму більшу цифру поставити на перше місце, саму меншу – на останнє, залишивши незмінним порядок проходження інших цифр.

13.Перевірити, чи є введений з клавіатури рядок цілим числом.

14.Перевірити, чи введений з клавіатури рядок є двійковим числом.

15.Перетворити у введеному з клавіатури рядку малі літери латинського алфавіту у великі.

16.Підрахувати в рядку кількість слів, які починаються з літери а.

17.Знайти довжину самого короткого слова в рядку.

18.Створити перекладач для «Задзеркалля»: слово, введене користувачем, перекладається на «Задзеркальну» мову (Оля→Яло).

19.Виключити з рядка символів всі групи символів, розташовані між дужками () і самі дужки. Передбачається, що всередині кожної пари дужок немає інших дужок.

20.Підрахувати в рядку кількість слів, які закінчуються літерою б.

21.Знайти довжину самого довгого слова в рядку.

22.Переставити місцями перше й останнє слова в рядку.

23.Вилучити з рядка всі символи, що збігаються із заданим символом.

24.Скласти програму, яка визначає, чи введена фраза є паліндромом.

25.За введеним рядком ’прізвище ім’я по-батькові’ вивести ініціали з крапками.

26.Відшукати всі N-розрядні натуральні числа, які діляться на кожну зі своїх цифр.

27.Підрахувати кількість входжень заданого слова в заданий текст.

28.Розробити програму-шифрувальник тексту, що замінює кожну його літеру наступною по порядку в абетці. Останню літеру абетки необхідно замінити першою.

29.Видалити з рядка всі символи до заданого.

30.Подвоїти в рядку всі символи, що збігаються із заданим символом.

62

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

ЛАБОРАТОРНА РОБОТА № 6 Проектування та відлагодження програм опрацювання записів

МЕТА РОБОТИ: Навчитись проектувати алгоритми та програми опрацювання даних типу запис з використанням вивчених операторів (присвоєння, розгалуження, циклу), вбудованих функцій та оператора приєднання.

ЗАВДАННЯ:

Спроектувати алгоритми та програми розв’язання задач опрацювання даних типу запис за варіантами завдань, номери яких визначає викладач.

МЕТОДИЧНІ ВКАЗІВКИ

1.Перед виконанням роботи необхідно пригадати:

логічну структуру програми на мові Turbo Pascal;

правила опису простих типів даних, масивів та рядків;

правила запису виразів;

синтаксис основних операторів;

синтаксис опису та правила застосування стандартних (бібліотечних) процедур і функцій.

2.Перед виконанням цієї роботи необхідно вивчити:

правила опису даних типу запис;

способи ініціалізації записів;

правилами посилання на окремі поля запис;

допустимі операції над записами;

3.Перевірка правильності роботи програми здійснюється шляхом аналізу отриманих результатів на основі порівняння вхідних і виведених даних.

ВІДОМОСТІ З ТЕОРІЇ.

Означення 1. Запис - це комбінована структура даних, що складається з фіксованого числа логічно зв’язаних компонент, які називаються полями запису.

Компоненти (поля) запису можуть бути різного типу (на відміну, наприклад, від масиву) і кожне з них визначається своїм іменем. Поля запису можуть бути будь-якого типу, допустимого в Turbo Pascal. Іменуються поля запису для забезпечення можливості посилання (доступу) на них. Адреса компонент

Формат опису типу запис та змінних типу запис наступний:

Type <ім’я_типу> = Record

<поле_1> : <тип_поля_1>;

<поле_N> : <тип_поля_N>;

End;

Var <ім’я_змінної> = Record

<поля_1>: <тип_поля_1>;

<поля_N>: тип_поля_N>;

End;

Наприклад:

Type BirthDay = Record

day, month: Byte; year: Word

End; Var Student: Record

FIO: String [20]; Data: BirthDay;

End;

a, b : Birthday;

Примітка: Після опису останнього поля (перед End) крапку з комою можна не ставити.

Для посилання на поле запису використовується конструкція <ім’я_змінної> . <ім’я_поля>

63

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

Таким чином, доступ до кожної компоненти (поля) запису можна одержати, використавши складене ім’я:

Student.FIO = ' Петренко Петро '; а.day 27;

b.year 1939;

Так як компонентою запису може бути також запис, то в такому випадку складене ім’я буде містити не два, а більше імен. Для вкладених полів необхідно продовжувати уточнення:

Student.Data.year = 1990;

Щоб спростити доступ до полів запису, використається оператор приєднання WІTH:

With <ім’я_змінної_типу_запис> Do <оператор>;

де <оператор> - будь-який оператор мови Turbo Pascal, в межах якого до полів змінної можна звертатися просто по імені.

Наприклад:

With Student.Data Do Begin day 10; month 9; End;

Це еквівалентно

With Student Do With Data Do Begin day 10; month 9; End;

або With Student.Data Do Begin day 10; month 9; End;

або Student.Data.day 10; Student.Data.month 9;

Записи з варіантами.

Записи, описані вище, мають строго визначену структуру. Але дуже часто виникає необхідність опрацьовувати споріднені, схожі, але не ідентичні за формою записи. Тому в Turbo Pascal передбачена можливість задавати тип запису з довільною кількістю варіантів структури. Такі записи називаються записами з варіантами. Вони містять фіксовану і варіантну частину. Використання фіксованої частини не відрізняється від описаного вище. Варіантна частина утворюється за допомогою оператора Case, формат якого подібний до формату оператора вибору. Оператор Case задає спеціальне поле запису – селектор (ключ вибору, поле ознаки), значення якого визначає, який із варіантів буде активізований в даний момент. Значенням селектора в будь-який момент виконання програми є одна із констант вибору, яка задає відповідний варіант запису. Компоненти кожного варіанту (ідентифікатори полів та їх типи) вказуються після відповідної константи вибору через двокрапку і в круглих дужках. Кількість полів кожного з варіантів необмежена. У будь-якому записі може бути тільки одна варіантна частина, і, якщо вона є, то повинна розташовуватися за всіма фіксованими полями.

Формат опису запису з варіантами:

Type <ім’я_типу> = Record

{фіксована частина}

Case <селектор>: <тип_селектора> Of

<константа_1> : (<варіант_1>);

<константа_K>: (<варіант_K>)

End;

<варіант_K> - це список ідентифікаторів полів та їх типів, тобто, конструкція виду: (<список_1>: <тип_1>; ...; <список_L>: <тип_L>);

Наприкінці варіантної частини не слід ставити End як пару до Case...Of. Оскільки варіантна частина завжди остання в записі, за нею все-таки стоїть End, але лише як пара до Record.

Селектор (ключ вибору) в інструкції Case...Of фактично ігнорується компілятором: єдина вимога до нього полягає в тому, щоб селектор визначав деякий стандартний або попередньо оголошений порядковий тип. Причому сам цей тип ніяк не впливає ні на кількість наступних нижче варіантних полів, ні навіть на характер констант вибору.

Імена полів мають відрізнятись один від одного хоча б одним символом, навіть, якщо вони зустрічаються в різних варіантах.

Якщо варіант для деякої константи вибору є порожнім, то він описується наступним чином: <константа_K>: ();

64

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

Чудовою особливістю варіантної частини є та обставина, що всі задані в ній варіанти ніби «накладаються» один на одного, тобто кожному з них виділяється одна і та ж сама область пам’яті, яка обчислюється за найбільшим варіантом.

Розглянемо фрагмент опису записів, якщо залежно від значення поля «стать» (чоловічий або жіночий), необхідно зберігати дані про:

рік проходження військових зборів;

рід військ, у яких проходив військовий збір; або ж: улюблені квіти:

Type BirthDay = Record

day, month : Byte; year : Word

End; personsex = (male, female); person = Record

name, secondname, surname: String[20]; date: birthday;

Case sex: personsex Of

male: (army1: word; army2: String [20]); female: (flower: String [20])

End;

У цьому прикладі тип person визначає запис з чотирма фіксованими полями і варіантною частиною, яка складається з двох варіантів: male і female.

Операції, допустимі над записами.

1.Селекція компонент запису здійснюється за допомогою складених імен або оператора With…Do.

2.Значення змінних типу запису можна привласнювати іншим змінним того ж типу, наприклад, а := b;

3.Для змінних одного типу можна перевірити виконання відношення рівності або нерівності. Як і у випадку масивів, допустимі операції порівняння = і <> .

Ініціалізація записів здійснюється безпосереднім присвоєнням значень кожній компоненті (полю) або допомогою типізованих констант. Оголошення (опис) константи типу запис містить ідентифікатор константи і значення кожного поля запису. Поля мають бути визначені в тому ж порядку, що і при опису типу запис в розділі Type. Якщо запис містить поля файлового типу, то константи такого типу не можуть бути оголошені.

Type RecType= Record

x, y : Word; ch : Char;

dim : Array[1..3] of Byte

End;

Const Rec: RecType = ( x: 127; y: 255; ch: 'A'; dim: (2, 4, 8) );

КОНТРОЛЬНІ ЗАПИТАННЯ:

1.Чому записи називають комбінованими типами?

2.Які типи даних можуть зберігатися в записах?

3.Якого типу можуть бути компоненти записів?

4.Як здійснюється доступ до окремих компонент запису?

5.Яке призначення (функція) оператора приєднання (Wіth_Do )?

6.Які операції можна виконувати над записами?

7.Які операції можна виконувати над полями запису?

8.Як присвоїти значення всім полям запису?

9.Чи можуть записи бути компонентами інших записів?

10.Наведіть приклади областей застосування записів.

Приклад програми для обчислення середнього балу студента та групи.

Program PR;

65

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

Const n1=30; {максимальне число студентів}

Type student=Record

prizv : String[10]; fiz, mat, inf : Integer;

ss : Real; { середній бал студента}

End;

Var ved: Array [1..n1] Of student;

i, n : Integer;

{середній бал групи}

sg: Real;

Begin Read (n);

For i 1 To n Do

With ved[i] Do Begin

Read (prizv); Read (fiz, mat, inf)

End;

sg 0;

For i 1 To n Do

With ved[i] Do Begin

ss (fiz + mat + inf)/3; sg sg + ss;

End;

sg sg/n; {обчислення середнього балу групи}

For i 1 To n Do

With ved[i] Do Begin

Write (prizv:10,fiz:10,mat:10,inf:10);

Writeln (ss:10:2);

End;

Writeln (' середній бал в групі = ',sg);

End.

ЗАВДАННЯ ДЛЯ САМОСТІЙНОГО ВИКОНАННЯ.

Завдання 1: Ввести інформацію про результати складання іспитів (кількість дисциплін не менше 3), враховуючи окрему дисципліну для жінок (наприклад, шиття) та чоловіків (наприклад, теслярство) та використавши записи з варіантами. Реалізувати сценарій пошуку інформації в цьому наборі даних за заданим варіантом. Результати роботи програми (включаючи вхідні дані) вивести на екран.

Варіанти завдання 1.

1.Вивести прізвища відмінників в алфавітному порядку (за першою літерою).

2.Вивести дані про студентів, які не отримали трійок.

3.Вивести дані про студентів, середній бал у яких >=4.

4.Вивести дані про студентів, середній бал у яких >=4 і немає трійок.

5.Вивести дані про студентів, середній бал у яких >=3 і <=4,5.

6.Вивести дані про двох студентів з найвищим середнім балом.

7.Вивести дані про студента з найменшим середнім балом.

8.Змінити на «3» всі незадовільні оцінки у студента з найменшим середнім балом.

9.Вивести назви дисциплін, іспити з яких студенти склали на «відмінно».

10.Змінити всі незадовільні оцінки (якщо такі є) на «3» у студента з найменшим середнім балом.

11.Вивести назву дисципліни, іспит з якої студенти склали найкраще.

12.Вивести назву дисципліни, іспит з якої студенти склали найгірше.

13.Обчислити середній бал всіх студентів з кожної дисципліни.

14.Обчислити середній бал групи за сесію.

66

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

Завдання 2:

Спроектувати свою структуру запису з деякої предметної області та реалізувати сценарій пошуку інформації за власними критеріями.

Наприклад:

1.Телефонний довідник - запис про абонента містить прізвище, ім’я, дату народження, адресу, номер телефону, захоплення (хобі). Вивести прізвища абонентів, які проживають на заданій вулиці.

2.Довідник хімічних елементів – запис про елемент містить назву елемента, символьне позначення, атомну масу, та ін. Вивести назву елемента за заданим символьним позначенням.

3.Довідник характеристик моделей комп’ютерів – модель, тактова частота процесора, об’єм оперативної пам’яті тощо.

67

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

ЛАБОРАТОРНА РОБОТА № 7 Проектування та відлагодження програм опрацювання множин

МЕТА РОБОТИ: Навчитись проектувати алгоритми та програми опрацювання множин даних з використанням вивчених операторів (присвоєння, розгалуження, циклу), та вбудованих функцій.

ЗАВДАННЯ:

Спроектувати алгоритми та програми розв’язання задач опрацювання множин даних за варіантами завдань, номери яких визначає викладач.

МЕТОДИЧНІ ВКАЗІВКИ

1.Перед виконанням роботи необхідно пригадати:

логічну структуру програми на мові Turbo Pascal;

правила опису простих типів даних, масивів та рядків;

правила запису виразів;

синтаксис основних операторів;

синтаксис опису та правила застосування стандартних (бібліотечних) процедур і функцій.

2.Перед виконанням цієї роботи необхідно вивчити:

правила опису даних типу множина;

способи ініціалізації множин;

допустимі операції над множинами;

стандартні процедури для роботи з множинами;

способи та прийоми виведення значень елементів множини.

3.Перевірка правильності роботи програми здійснюється шляхом аналізу отриманих результатів на основі порівняння вхідних і виведених даних.

ВІДОМОСТІ З ТЕОРІЇ.

Множина – це одне з основних аксіоматичних понять сучасної математики, тобто поняття, яке не зводиться до інших понять, а тому не має строгого означення. Але може бути дано інтуїтивне означення множини як сукупності об'єктів довільної природи, яка розглядається як одне ціле.

Поняття «множина» в мові Turbo Pascal дещо вужче, чим традиційне математичне поняття.

Означення 1. Множина - це структурований тип даних, який визначає невпорядкований скінченний набір унікальних однорідних логічно зв’язаних об’єктів.

За Н.Віртом, множина є однією з фундаментальних структур даних.

Об’єкти, об’єднані в множину, називаються елементами множини. Всі елементи множини повинні бути одного базового типу, в якості якого може бути використаний будь-який порядковий тип, крім Word, Integer, Longint. Порядкові значення нижньої та верхньої границі базового типу мають бути в діапазоні від 0 до 255. Отже, кількість елементів множини може змінюватись від 0 до 256 і називається потужністю множини (множина, яка не містить елементів, називається порожньою).

У внутрішній пам’яті множина подається наступним чином: кожному елементу множини ставиться у відповідність один двійковий розряд (1 біт), який має значення 1, якщо елемент належить множині, і 0 в протилежному випадку. Для множини максимальної потужності (256 елементів) компілятор виділить 16 суміжних байт.

Примітка 1. Так як мінімальною одиницею пам’яті, яка розподіляється, є 1 байт, то для множини потужністю 1 компілятор виділить 1 байт, тобто 8 біт. Таким чином, потужність даної множини стане рівною 8.

Елементи множин не мають унікальних ідентифікаторів, на зразок полів у записах чи індексів в масивах. Отже, доступу до окремих елементів множини немає. Саме змінною кількістю своїх елементів та їх невпорядкованістю множини відрізняються від масивів та записів.

Характер зв’язків між об’єктами розуміється тільки програмістом і ніяк не контролюється Turbo Pascal, а їх унікальність означає їх неповторність в даній множині.

Формат опису множинного типу:

Type <ім’я_множини> = Set Of <базовий_тип>;

68

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

де ім’я_множини – правильний ідентифікатор нового множинного типу даних, який вводиться користувачем, а базовий_типу – ідентифікатор будь-якого порядкового типу, крім Word, Integer, Longint.

Найчастіше в якості базового типу використовується інтервальний цілий тип (тип-діапазон) з мінімальною границею 0 і максимальною 255 та перелічений тип з максимальним числом елементів 256 (нагадуємо, що максимальна потужність переліченого типу– 65 536 елементів).

Опис множинного типу можна здійснити і наступним способом – спочатку описати базовий для нього тип, а потім сам множинний тип:

Type <ім’я_типу> = <базовий_тип>;

Type <ім’я_множини> = Set Of <ім’я_типу>;

Формат опису змінних множинного типу:

Var <список_імен_змінних> : <ім’я_множини>;

Var <список_імен_змінних> : Set Of <базовий_тип>;

де список_імен_змінних – список ідентифікаторів змінних множинного типу, розділених комою.

Наприклад:

Type Sport = (sambo, judo, volleyball); Hobby = Set Of Sport;

Proste = Set Of (three, five, seven); Chisl = Set Of 0..177;

DigitChar = Set Of ‘0’..’9’; Var s1,s2,s3 : Hobby;

s3,s4,s5 : Proste;

s6,s7 : Chisl;

s8,s9 : DigitChar

s10,s11 : Set Of (1..7); bukva : Set Of Char;

operac : Set Of (plus, minus, mult, dil); litera : Set Of ‘p’..’z’;

Примітка 2: Множина з базовим типом Char включає всі 256 символів клавіатури за таблицею ASCII. Примітка 3: Передавати множину в процедуру/функцію можна тільки як змінну множинного типу, описаного в розділі опису типів.

Властивості множини.

1.Дві множини є еквівалентними тоді і тільки тоді, коли всі їх елементи однакові, причому порядок слідування елементів в множині не має значення.

2.Якщо всі елементи однієї множини входять також і в другу, то говорять про включення першої множини в другу.

3.Порожня множина включається в будь-яку іншу.

Операції над множинами.

Нехай A і B – множини. Тоді:

1.А*В – перетин множин; результат містить елементи, спільні для обох множин;

2.А+В – об’єднання множин; результат містить елементи обох множин (без повторень);

3.А-В – різниця множин; результат містить усі елементи множини А, які не входять в В;

4.А=В – перевірка еквівалентності; результат рівний true, якщо А і В еквівалентні;

5.А<>В – перевірка нееквівалентності; результат рівний true, якщо А і В нееквівалентні;

6.А<=В – перевірка включення; результат рівний true, якщо ;

7.А>=В – перевірка включення; результат рівний true, якщо ;

8.<вираз> in A – перевірка належності; результат true, якщо значення виразу належить А;

Пріоритет операцій над множинами (в порядку зменшення):

1.*

2.+, –

69

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

3.in, =, < >, < =, > =

Всьомій версії Turbo Pascal введені дві стандартні процедури для заміни операцій об’єднання і різниці множин: Include та Exclude. Синтаксис операторів виклику цих процедур такий:

Include (Var A: Set Of <тип>; elem : <тип>);

Exclude (Var A: Set Of <тип>; elem : <тип>); ,

де <тип> - базовий тип для множини А.

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

Ініціалізація множин здійснюється за допомогою конструктора множини.

Означення 2. Конструктор множини – це список специфікацій елементів множини, замкнений в квадратні дужки.

Специфікації елементів в списку розділяються комами. Специфікаціями елементів можуть бути вирази базового типу і тип-діапазон того ж базового типу. Конструктор [ ] ініціалізує порожню множину, сумісну з множиною будь-якого типу.

Наприклад (для описів попереднього прикладу):

Begin

s1 [sambo, judo];

s3 [five];

s6 [7,(17+3) div 2,27..77,90+7];

s8 [‘0’..’5’,’9’];

s9 [‘4’..’9’];

s10 [1..5, 1+5]; bukva [‘a’ .. ’m’]; operac [plus, minus];

End.

Задати (ініціалізувати) множину можна також за допомогою констант:

Type Digits = Set Of 0..9; Letters = Set Of 'A'..'Z';

Const EvenDigits : Digits = [0, 2, 4, 6, 8];

Vowels : Letters = ['A', 'E', 'I', 'O', 'U', 'Y']; HexDigits : Set Of '0'..'z' = ['0'..'9', 'A'..'F', 'a'...f'];

Введення-виведення елементів множин.

Особливістю множин є те, що неможливо реалізувати введення-виведення значень їх елементів безпосередньо процедурами Read та Write, так як немає доступу до окремих елементів множини. Введення елементів множини. Щоб ввести значення елементів множини, наприклад, з клавіатури, необхідно ввести допоміжну змінну того ж типу, що і базовий тип множини, ввести її значення і включити цю змінну в множину.

Наприклад:

Write (‘х =’);

Read (х); { x = ‘volleyball’}

Include (s1, x); { або s1 s1+[x]}

Для введення першого елемента потрібно попередньо ініціалізувати порожню множину: s1 [ ]. Всі наступні елементи можна вводити в циклі, задавши умову виходу з циклу.

Виведення елементів множини. Щоб вивести значення елементів множини, необхідно ввести допоміжну змінну того ж типу, що і базовий тип множини, та виводити її в циклі, змінюючи її значення так, щоб вона набувала всіх можливих значень, і перевіряючи її належність множині.

Наприклад: Виведення елементів множини символів.

For i 0 To 255 Do

70

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)