Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні ОП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
569.47 Кб
Скачать

Лабораторна робота №6 Записи. Множини в мові Borland Pascal

Мета: Засвоєння навичок опису та використання структур даних типу ,,запис"(гесогd)

Обладнання: ПК, програмне забезпечення Turbo Pascal, методичні вказівки та завдання до лабораторної роботи.

Теоретичні відомості

Опис фіксованого запису:

Record

<поле1>, <поле2>:<тип>;

<полеN!>: <тип> ;

End;

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

Приклад:{тип -запис}

Type Student=Record

Name:string;

Year:1900. .2000;

End;

{змінна-запис} vаг price:record

Grivni,Kopijki:Word;

end;

S, {один студент}

G52_:.array[1. . 30] of Student; {група (масив) студентів}

F:file of Student; {файл із студентів}

Доступ до полів запису:

здійснюється за допомогою кваліфікованих ідентифікаторів: <ім'я змінної>.<поле> Для спрощення роботи з записами можна використовувати спеціальний оператор приєднання WITH

Варіантні записи включають дві частини: перша-фіксований запис; друга варіантний запис що складається з поля ознаки та одного чи декількох варіантних компонентів які записуються після ключового слова case

Приклад опису варіантного запису, в якому, в залежності від семестру(Semestr-варіантний запис), вибирається список відповідних предметів:

Type Tseml=record

Matem :byte;

History:byte;

End;

Tsem2=record

Algor :byte;

Phisic :byte;

End;

Student=Record

Name:string;

Case Semestr:byte of

1: (Markl:Tseml) ;

2: (Mark2:Tsem2) ;

End;

Множиною в мові Pascal називається скінченний набір однотипних даних. Об'єк­ти, з яких складається множина, називаються її елементами. Число, що дорівнює кількості елементів множини, називається її потужністю. У мові Pascal порожня множина позначається як порожній перелік, тобто символами [].

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

Множинний тип — це структурований тип даних, допустимими значеннями якого є деякі множини. Синтаксис оголошення множинного типу даних:

type <ім'я типу> = set of <базовий тип>;

Оголошення множинного типу даних вимагає визначення для ньо­го деякого базового типу. Базовим може бути будь-який перелічуваний тип, крім Integer та Longint, а значенням множинного типу може стати довільний набір зна­чень базового типу. Наве­демо приклади. Припустимо, є таке оголошення множинного типу ТуреА:

type ТуреА = set of 2..4;

Оголошення змінної типу масиву або типу запису може бути відокремленим від оголошення відповідного типу або поєднаним із ним. Таку саму ситуацію маємо і зі змінною множинного типу даних: існує два різних синтаксиси її оголошення. А саме:

var <ім'я змінної>:set of <базовий тип>;

та

var <ім'я змінної>:<ім'я множинного типу>;

При оголошенні множинної змінної першим способом неявно оголошується неіменований множинний тип даних, а другий спосіб потребує попереднього ого­лошення множинного типу в розділі type. Наведемо приклади оголошення кон­стант і змінних множинного типу, означуючи самі типи явно, в розділі type, або неявно, в розділі var:

Приклад

type

Digits = set of 0..9; {тип множини цифр }

Letters = set of 'A'..'Z'; {тип множини латиниці}

Day = (Sun, Mon, Tue, Wed, Thu, Fri, Sat); {тип множини днів }

WorkDay = Mon..Fri; {тип діапазону }

const

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

Vowels: Letters = ['A. ‘E’. ‘I’, ‘0’, ‘U’, ‘Y’];

HexDigits; set of 'O'./z' = ['0 і.. '9'. 'A'.. 'F'. 'a'.. 'f ];

var

symbol:set of char; {множина символів }

week:set of Day; {множина днів від Sun до Sat }

WorkWeek:set of WorkDay: {множина днів від Mon до Fri }

number:set of byte; {множина цілих однобайтових чисел}

intset:set of 0..100; {множина чисел від 0 до 100 }

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

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

IncludeCvar S;i); Exclude(var S;i);

Тут S — це змінна множинного типу; і — елемент, який включають до множини S або видаляють з неї. Тип і повинен бути базовим типом множини S.

Як і змінним усіх інших типів мови Pascal, змінній деякого множинного типу можна присвою­вати значення виразів того самого типу. Слід зауважити, що одноелементна мно­жина може бути утворена і шляхом запису імені цієї змінної базового типу у квад­ратних дужках. Тому коректним є таке присвоєння:

<ім'я змінної типу множини>:=[<ім'я змінної базового типу>];

Приклад демонструє застосування операцій над множинами. У програмі формуються дві множини: множина символів ensemble та множина чисел Digit. Множина ensemble спочатку є порожньою, введені користувачем символи дода­ються до неї доти, доки не буде введено символу ' п'. При цьому введені знаки пи­тання замінюються знаками оклику. З множини Digit, яка спочатку містить цілі числа від 1 до 10, введені користувачем елементи вилучаються доти, доки не буде вилучено одиниці.

Приклад 1.

var ensemblerset of char;

Digit:set of byte;

ch:char;

number:byte;

begin

ensemble:=[];

repeat

writeln('Enter symbol. Enter "n" to finish');

readln(ch);

ensemble:=ensemble+[ch];

if ch='?' then ensemble:=ensemb1e+['!'];

until 'n' in ensemble;

repeat

writeln('Enter number. Enter 1 to finish');

readln(number);

Digit:=Digit-[number];

until not d in Digit);

end.