Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Лабораторна робота №4. 4.1 Стислі теоретичні відомостіЗаписи у мові Pascal 4.1 Стислі теоретичні відомості Запис – структура різнотипових даних, аналогічно таблиці, в якої є ім’я і є ім’я у кожного її поля. Тип запис визначається конструкцією: Record Поле1:ТипПоля1; Поле2:ТипПоля2; ПолеN:ТипПоляN; End;
Якщо декілька полів мають однаковий тип, то їх можна перелічити в одному блоці. Можна, наприклад, ввести тип даних, аналогічний анкеті:
Type Person=Record F_I_O_: String; Ves, Rost: Real; Telephone: LongInt; End;
Тут пара Record…End конструює тип запис. Тип Person задає таблицю із рядка F_I_O, двох чисел з дробовою частиною Ves, Rost і одного цілого числа Telephone. Після об’яви в програмі змінної типу запис до кожного її поля можна звернутися, вказав спочатку ідентифікатор змінної-запису, а потім, через крапку ім’я поля (вказівка тільки ідентіфікатора змінної-запису – вже комбінація двох значень). Тобто якщо ввести в попередньому прикладі змінну Nekto типу Person, під ім’ям Nekto буде розумітися анкета-таблиця з конкретними значеннями, та доступ до полів таблиці буде вироблятись дописуванням до імені всієї таблиці імені потрібного поля:
Nekto.F_I_O – значення рядка з прізвищем, ім’ям та по батькові; Nekto.Ves – значення поля Ves.
Порядок опису полів у визначенні запису відповідає порядку їх зберігання у пам’яті. Поле запису може мати будь-який тип (масив, множина, інший запис і т. п.). Для доступу до елемента таких структур застосовується правило:
Змінна_СкладнийЗапис.ЙогоПоле_Запис.ПолеПоляЗапису або Змінна_З_полем_масивом.ПолеМасив[і] Запис може мати варіантну частину, тобто в межах одного типу можна задавати декілька різних структур та безпосередній вибір однієї із них визначається контекстом або сигнальним значенням. Варіантні поля вказуються після полів фіксованих та оформлюються, наприклад, наступним чином:
Type RecType= Record; Number:Byte; Case Massa:Char of ‘т’, ’Т’:(tonna: Word); ‘г’, ’Г’:(gram: LongInt) ‘?’:(Comment1, Comment2: String[16]) End; Тут у запису є звичайне (фіксоване) поле Number і таке ж поле Massa (обрамоване словами Case і Of), яке виконує паралельно роль селектора (поле тега). За полем-селектором перераховуються варіанти третього поля, взятого у круглі дужки. Значення селектора повинно бути визначено до його використовування у запису (також, як і в операторі вибору Case). В будь-який час доступні поля тільки одного з можливих варіантів, описаних у типу. Ці варіанти знаходяться при зберіганні в одному і тому ж місці пам’яті, розмір якого визначається самим об’ємним із варіантів. Наприклад, приведений вище запис типу RecType зберігається як 366 байт: 1 байт (Number) + 1 байт (Massa) + 2 (16+1) байт (Comment1, Comment2). Можна, ігноруючи поле-селектор, звертатися до будь-якого із полів варіантів, але оскільки значення для всіх варіантів одне, воно трактується по-різному, відповідно типу кожного поля. Поле-селектор можна замінити ім’ям будь-якого перелічувального типу (в тому числі і введеного), тільки б він утримував елементів не менше, ніж варіантів запису. У випадку двох варіантів у Case можна вписувати тип Boolean зі значенням False і True. Змінна типу запис може брати участь тільки в операціях привласнення. Поле запису може приймати участь у будь-яких операціях, які звертаються до його типу. Для роботи з полями запису у мові введений оператор приєднання:
With Ім’яЗмінної_Запису Do Оператор; Тепер у середині оператора (він може бути складним) звертання до полів запису проводжується без вказання ідентифікатора самої змінної, наприклад:
Var XYRec:Record x,y:Integer; End; BEGIN ...
|