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

Відповіді на ДКР

  1. Структури, що можуть об’єднювати дані різних типів у мові Паскаль наз. записами. Запис складається з фіксованого числа даних, які наз. полями записів. На відміну від масиву поля можуть бути різного типу. Оголошення записів як типів даних описують у розділі Type. Після цього записи можна використовувати для оголошення змінних типів запису, це робиться в розділі змінних Var. Оголошення запису та змінної типу запису мають такий вигляд: type <ім’я типу>; record; <ім’я поля>; <тип>; <ім’я поля N>; <тип>; end. Var <ім’я змінної>; <ім’я типу>; Оголошення типу починається символом record і завершується словом end. Між цими словами міститься список оголошення полів. Імена полів мають бути унікальними в межах запису: type date= record year: integer; month:1..12; day:1..31; end; var a, b: date; begin a.year:=2002; b.month:=12; end. Доступ до елементів запису: звернення до полів запису здійснюється через складене ім’я, що має такий синтаксис: <ім’я змінної типу запису.ім’я компонента>. Крапку іноді наз. символом оператора доступу. В програмі можуть бути різні записи у яких поля можуть збігатися і такий спосіб доступу роблять поля унікальними.

  2. Модуль (UNIT) в Турбо Паскалі – це особливим способом оформлена бібліотека подпрограм. Модуль на відміну від програми не може бути запущений на вконання самостійно, він може тільки брати участь в побудові програм і інших модулів.

  3. Над компонентами записів можна здійснювати будь-які операції, що є допустимими для типів цих компонентів. Оператор приєднання дає змогу використовувати у програмі лише імена полів, загальний вигляд оператора with такий: with <ім’я змінної типу запис> do<команда>; У цьому операторі після слова with зазначають ім’я змінної типу запис, а в операторі пишуть лише назви полів відповідного запису До змінних можна звернутися так: with student1 do begin name:=’Шевченко’; surname:=’Ігор’; with birthday do begin year:=1980; month:=12 day:=28; sball:=4.9 end end; Для екземплярів запису як цілісних об’єктів допустима тільки одна операція – присвоєння. Операція присвоєння приведе до значення якоїсь змінної і виконається тільки в тому випадку коли обидва записи будуть мати однорідні змінні та одинаків склад компонентів та типів. Наприклад: var Z1, Z2:record str:string; number:real; end; begin Z1:=Z2; end.

  4. Модуль складається з наступних частин:

1. Заголовок модуля.

2. Интерфейсна частина. {опис видимих обєктів}

3. реалізаційна частина. { опис прихованих об’єктів}

4. ініціалізаційна частина.

Заголовок модуля складається з зарезервованого слова UNIT після якого записується ім'я модуля. Ім'я модуля, це звичайний ідентифікатор.

  1. У записах можуть використовуватись назви полів, які є унікальними в межах одного запису, але однаковими для кількох записів. Тому звернення до компонентів записів здійснюється через складене ім’я, яке містить ім’я змінної звпису.ім’я компонента. Якщо запис є підлеглим або складовою частиної іншого запису то доступ до полів підлеглого запису ускладнюється. Для спрощення доступу використ. оператор приєднання with, який має наступний синтаксис: with <список змінних типів запису> do begin <оператори> end. Щоб спростити доступ до полів задачі можна викор. оператор приєднання, і тоді можна записати так: with d do pp1:=’Roma’; with d do with pp2 do S1:=10; with d.pp2 do S2:=5,7;

  2. Щоб використовувати модуль, головна програма або інший модуль повинні імпортувати даний модуль, тобто містити оголошення про його використання. Це оголошення робиться за допомогою інструкції підключення модулів, що представляє собою ключове слово USES, за яким через кому йдуть імена модулів, які потрібно підключити. Інструкція підключення повинна випливати безпосередньо за заголовком програми, або після ключового слова INTERFACE, якщо підключення проводиться в модулі.

  3. 7. Оголошення запису з варіантами: type <ім’я типу>=record <фіксована частина; варіантра частина>; end; Фіксована частина оголошується у звичайний спосіб як перелік полів та їх типів. Варіантна частина формується за допомогою оператора case. Якщо він знаходиться в середині запису то наз. записом варіанту. У ньому зазначається ім’я та тип поля ознаки, а також міститься перелік наборів полів. Кожен набір полів супроводжується константою вибору. Якщо значення поля ознаки співпадає з деякою константою вибору та та активними стають поля, що відповідають цій константі. Синтаксис: case <ім’я поля ознаки: <тип of>; <константа вибору1>:(<список полів>); <константа вибору2>:(<список полів>); …… <константа виборуn>:(<список полів>); end. Список полів – це перелік полів конструкція яких: ім’я поля.тип відділених одна від одної «;».

  4. Модулі GRAPH.TPU, CRT.TPU, System, Dos і WinDos,Strings - Це стандартні модулі, внутрішня організація яких нам недоступна, але доступні для використання процедури, функції і інші елементи програмування входять в дані бібліотеки.

  5. Множиною в мові Pascal називається скінченний набір однотипних даних. Об'єкти, з яких складається множина, називаються її елементами. Число, що дорівнює кількості елементів множини, називається її потужністю. Від масиву множина відрізняється відсутністю індексації її елементів, а від запису — тим, що елементи множини є однотипними і не позначаються ідентифікаторами.

Оголошення: var <ім'я змінної>:set of <базовий тип>

  1. Модуль Crt призначений для організації ефективної роботи з екраном, клавіатурою і вбудованим динаміком. При підключенні модуля Crt виведена інформація надсилається в базову систему введення-виведення (ВIОS) або безпосередньо у відеопам'ять.

  2. 12) Модулі Dos і WinDos

Модулі Dos і WinDos містять підпрограми, що реалізують можливості операційної системи MS-DOS - наприклад, перейменування, пошук і видалення файлів, отримання і установку системного часу, виконання програмних переривань і так далі. Ці підпрограми в стандартному Паскалі не визначені. Для підтримки підпрограм в модулях визначено константи і типи даних.

  1. 14) Модуль Graph

Модуль забезпечує роботу з екраном в графічному режимі.

  1. Екран в графічному режимі представляється у вигляді сукупності точок - пікселів. Колір кожного пікселя можна задавати окремо. Початок координат знаходиться в лівому верхньому кутку екрану і має координати (0, 0). Кількість точок по горизонталі і вертикалі (дозвіл екрану) і кількість доступних кольорів залежать від графічного режиму. Графічний режим встановлюється за допомогою службової програми - графічного драйвера.

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

  3. Модуль Graph забезпечує:

висновок ліній і геометричних фігур заданим кольором і стилем;

зафарбовування областей заданим кольором і шаблоном;

висновок тексту різним шрифтом, заданого розміру та напрямки;

визначення вікон і відсікання по їх межі;

використання графічних спрайтів і роботу з графічними сторінками.

  1. Модуль Strings і Модуль System є додатковими модулями.

модуль Strings

Модуль призначений для роботи з рядками, що закінчуються нуль-символом, тобто символом з кодом 0 (їх часто називають ASCIIZ-рядки). Модуль містить функції копіювання, порівняння, злиття рядків, перетворення їх у рядки типу string, пошуку підрядка і символів.

Модуль System.

Модуль містить базові засоби мови, які підтримують введення-виведення, роботу з рядками, операції з плаваючою точкою і динамічний розподіл пам'яті. Цей модуль автоматично використовується у всіх програмах, і його не потрібно вказувати в операторі uses. Він містить всі стандартні і вбудовані процедури, функції, константи і змінні Паскаля.

18. Дані структурованого типу запису складаються з фіксованої кількості компонентів. Фіксована структура обмежує область застосування записів. Тому у мові Паскаль є різновид записів, що об’єднюють довільну кількість компонентів. Припустимо створимо запис про інф. Викладачів та студентів. Для викладачів характеристиками є : науковий ступінь, стаж роботи… для студентів суттєвими ознаками є: форма навчання, середній бал… Водночас викладач і студент мають спільні характеристики. Спільні поля наз. фіксованими, поля, що відрізняються наз. варіантною частиною. Доступ до полів варіантної частини здійснюється при умовах. Запис містить спеціальне поле ознаки значення якого і вказує які поля варіантної частини будуть активними.

20. Оголошення запису з варіантами: type <ім’я типу>=record <фіксована частина; варіантра частина>; end; Фіксована частина оголошується у звичайний спосіб як перелік полів та їх типів. Варіантна частина формується за допомогою оператора case. Якщо він знаходиться в середині запису то наз. записом варіанту. У ньому зазначається ім’я та тип поля ознаки, а також міститься перелік наборів полів. Кожен набір полів супроводжується константою вибору. Якщо значення поля ознаки співпадає з деякою константою вибору та та активними стають поля, що відповідають цій константі. Синтаксис: case <ім’я поля ознаки: <тип of>; <константа вибору1>:(<список полів>); <константа вибору2>:(<список полів>); …… <константа виборуn>:(<список полів>); end. Список полів – це перелік полів конструкція яких: ім’я поля.тип відділених одна від одної «;».

22. Обєднання а+б - всі множини а і б без повторень.

24. Різниця а-б- множина яка складається з елементів яка є у а але нема у б.

Перетин а*б - ті елементи які є спільні як до а так і до б Порівняння а<>б - результат тру або фолс

29.  Оголошення змінних множинного типу Оголошення змінної типу масиву або типу запису може бути відокремленим від оголошення відповідного типу або поєднаним із ним. Таку саму ситуацію маємо і зі змінною множинного типу даних: існує два різних синтаксиси її оголошення. А саме: var <ім'я змінної>:set of <базовий тип>; та var <ім'я змінної>:<ім'я множинного типу>; При оголошенні множинної змінної першим способом неявно оголошується неіменований множинний тип даних, а другий спосіб потребує попереднього оголошення множинного типу в розділі type.

32. Множинний тип  описується  за  допомогою  службових слів Set of, наприклад: type  M= Set of B; Тут М – множинний тип, B – базовий тип. Приклад опису змінної множинного типу: Type    M= Set of 'A'..'D'; Var    MS: M; Приналежність змінних до множинного типу може бути визначена прямо в розділі опису змінних: var C: Set of 0..7; Константи множинного  типу  записуються  у виді вкладеної в квадратні дужки по¬слі-дов¬ності елементів чи інтервалів базового типу, розділених комами, наприклад:  ['A', 'C'], [0, 2, 7], [3, 7, 11..14]. Константа виду [ ] означає порожню підмножину. Множина містить у собі набір елементів базового типу, усі підмножини даної множини, а також порожня підмножину. Якщо базовий тип, на якому будується множина, має K елементів, то число підмножин, що входять у цю множину, дорівнює 2k . Нехай є змінна Р інтервального типу: var P: 1..3; Ця змінна може приймати три різних значення – або 1, 2, або 3.  Змінна Т множинного типу  var T: Set of 1..3; може приймати вісьмох різних значень:   [ ] [1] [2][3][1,2][1,3][2,3] [1,2,3] Порядок перерахування елементів базового типу в константах безладний. Значення змінної множинного типу  може бути задане конструкцією виду [T], де T – змін¬на базового типу. До змінного і константам множинного типу  застосовні  операції присвоювання(:=), об'єд¬нання(+), перетин(*) і різниця (-): ['A','B'] + ['A','D']     дасть  ['A','B','D'] ['A'] * ['A','B','C']     дасть ['A'] ['A','B','C'] - ['A','B'] дасть  ['C']. Результат виконання  цих  операцій є величина множинного типу. До множинних величин застосовні операції: тотожність (=), нетотожність (<>), міс¬тить-ся  в (<=), містить (>=).  Результат виконання цих операцій має логічний тип, наприклад: ['А','В'] = ['А','С']  дасть FALSE ['А','В']<>['А','С'] дасть TRUE ['В']<=['В','С']     дасть TRUE ['С','D']>=['А']     дасть FALSE. Крім цих операцій для роботи з величинами множинного типу в мові ПАСКАЛЬ ви¬ко-ри¬стовується операція in – приналежність елемента, що перевіряється, базового типу, стоїть лі¬во¬руч від знака операції, до множини, що стоїть праворуч від знака операції. Результат ви-ко¬нан¬ня цієї операції – булевий. Операція перевірки належності елемента множині часто ви-ко¬ристовується замість операцій відношень, наприклад: A in ['А', 'В'] дасть  TRUE, 2 in [1, 3, 6]  дасть  FALSE. При використанні в програмах даних множинного типу виконання операцій відбувається над бітовими рядками даних.  Кожному значенню множинного типу в пам'яті ЕОМ відповідає один двійковий розряд. Наприклад, множина ['А','В','С','D'] представлена в пам'яті ЕОМ бітовим рядком 1 1 1 1. Підмножини цієї множини представлені рядками: ['A','B','D']   1 1 0 1 ['B','C']       0 1 1 0 ['D']           0 0 0 1 Величини множинного типу не можуть бути елементами виведення. У кожній  конкретній  реалізації транслятора з мови ПАСКАЛЬ кількість елементів ба-зо¬вого типу,  на якому будується множина, обмежена. У  TURBO PASCAL кількість базових еле¬ментів не повинна перевищувати 256. Ініціалізація величин  множинного  типу виробляється за допомогою типізованих кон-стант: const  seLit: Set of 'A'..'D'= []; Проілюструємо застосування  даних множинного типу на прикладі. Приклад. Скласти програму, що виконує і виводить на екран дисплея набори ви¬пад¬ко-вих чисел для гри в "Спортлото 5 з 36". Для заповнення кожної картки спортлото необхідно одержати набір з п'яти випадкових ч謬сел. До цих чисел пред'являються дві вимоги: –    числа повинні знаходитися в діапазоні 1..36; –    числа не повинні повторюватися.

33. Синтаксис: case <ім’я поля ознаки: <тип of>; <константа вибору1>:(<список полів>); <константа вибору2>:(<список полів>); …… <константа виборуn>:(<список полів>); end. Список полів – це перелік полів конструкція яких: ім’я поля.тип відділених одна від одної «;». Оголошення записів з варіантами має відповідати таким синтаксичним правилам: 1. Запис може мати тільки один оператор case. 2. Варіантна частина іде після фіксованої. 3. У варіантній частині може бути довільна кількість варіантів. 4. Слово «end» завершує оголошення всього типу а не тільки варіантної частини. 5. Список полів кожного варіанту записується в круглих дужках. 6. Усі ідентифікатори полів всередині одного запису мають бути унікальними. 7. Тип поля ознаки має бути перелічуваним. 8. Константа вибору може мати тільки значення, які має тип поля значення.

35. Типовані файли- це послідовність змінних певного скалярного або структурного (але не

файлового) типу. Тип задають виразом вигляду fileof тип. Наведемо приклади.

type Flchar = fileof char;

Student = record Name : String; Number : Integer;

end;

fStudent = fileof Student;

var Fi, Fo : fStudent;

FF : Flchar;

Текстові файли — це послідовність символів, які поділено на рядки. У мові Турбо Паскаль для

файлів*текстів означено спеціальний тип з іменем text. Елементами цих файлів є символи,

проте тип text відрізняється від типу fileof char. У текстах є спеціальні символи, що задають184

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

можна застосовувати до типізованих файлів, наприклад, readln та writeln.

Нетиповані -файли розглядаються як послідовності байтів і оголошуються за допомогою

службового слова file. Наприклад, var Fi, Fo : file. Для них також означено спе*

цифічні підпрограми.

• Описанівищетрирізновидифайліввідрізняютьсянеможливим

представленнямданих, анаборамипідпрограм, застосовнихдоних.

Елементи масивів і записів можуть мати файлові типи. Наприклад, припустимі такі ого*

лошення типів.

type Arrfil = array [1..2] offileof Student;

type Rcrfil = record data : text; temp : char end;

Типами елементів типізованих файлів не можуть бути файлові типи і типи, що містять

файлові. Наприклад, такі оголошення типів недопустимі.

type FF = fileoffileof ...; {???}

type FF = fileof text; {???}

type FF = fileofarray [1..2] offileof ...; {???}

37. Типовані файли- це послідовність змінних певного скалярного або структурного (але не

файлового) типу. Тип задають виразом вигляду fileof тип. Наведемо приклади.

type Flchar = fileof char;

Student = record Name : String; Number : Integer;

end;

fStudent = fileof Student;

Var Fi, Fo : fStudent;

FF : Flchar;

39. Текстові файли — це послідовність символів, які поділено на рядки. У мові Турбо Паскаль для

файлів*текстів означено спеціальний тип з іменем text. Елементами цих файлів є символи,

проте тип text відрізняється від типу fileof char. У текстах є спеціальні символи, що задають184

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

можна застосовувати до типізованих файлів, наприклад, readln та writeln.

41. Нетиповані -файли розглядаються як послідовності байтів і оголошуються за допомогою

службового слова file. Наприклад, var Fi, Fo : file. Для них також означено спе*

цифічні підпрограми.

• Описанівищетрирізновидифайліввідрізняютьсянеможливим

представленнямданих, анаборамипідпрограм, застосовнихдоних.

Елементи масивів і записів можуть мати файлові типи. Наприклад, припустимі такі ого*

лошення типів.

type Arrfil = array [1..2] offileof Student;

type Rcrfil = record data : text; temp : char end;

Типами елементів типізованих файлів не можуть бути файлові типи і типи, що містять

файлові. Наприклад, такі оголошення типів недопустимі.

type FF = fileoffileof ...; {???}

type FF = fileof text; {???}

type FF = fileofarray [1..2] offileof ...; {???}

44. Модуль — це оформлена за деякими правилами сукупність визначень типів, констант, змінних та підпрограм. Спочатку складається текст модуля, потім він компілюється і записується на диск у вигляді tpu-файла. Такий файл неможливо викона­ти, як самостійну програму. Його використовують, як допоміжний файл у процесі розробки головної програми.

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

Другий напрямок - конструювання програм великого розміру. В зв'язку з сегментною організацією пам'яті персональних ЕОМ існують обмеження на розмір програми (не більше як 64К). Очевидно, що цього замало для розв'язання реальних виробничих задач.

Для виконання програми на Pascal в оперативній пам'яті комп’ютера виділяється місце після пам'яті зайнятої системними програмами MS-DOS. Вся доступна пам'ять розподіляється на сегменти, в кожному з яких розміщується певна інфор­мація. В кодовому сегменті розміщена головна про­грама зі своїми підпрограмами. Всі дані, описані в головній програмі, займають окремий сегмент да­них. Кожен з модулів, що підключається, також займає один сегмент (незалежно від того, чи є цe модуль системної бібліотеки Turbo.tpl чи особистої біб­ліотеки).

На етапі проектування великої програми треба розподілити всі підпрограми між головною програмою та модулями. Частіше в модуль об’єднують логічно зв'язані підпрограми, наприклад, всі додаткові процедури та функції для роботи з рядками.

Структура модуля:

 

Unit ім'я; {заголовок модуля}