Питання та відповіді
до іспитів В-1 (1999)
1. Алгоритм.
Властивості алгоритму. Способи запису алгоритму
(заг.) Алгоритм - це система формальних правил однозначно призводить до вирішення
поставленого завдання. p>
(ПК.) Алгоритм-це послідовність арифметичних і логічних дій над даними, що призводить до отримання рішення поставленого завдання. p>
Властивості: p>
А) Дискретність - алгоритм складається з окремих пунктів або кроків p>
Б) Визначеність - кожен крок алгоритму має бути строго сформульоване. p>
(мати точний сенс) p>
В) зв'язаність - на кожному наступному кроці використовуються результати попереднього. p>
Г) Кінцівка - алгоритм повинен завершуватися після кінцевого числа кроків p>
Д) Результативність - алгоритм повинен призводити до отримання кінцевих результатів p>
Е) Масовість - придатність для розв'язання широкого класу задач. p>
Ж) Ефективність - застосування а. має давати будь-то позитивний тимчасової результат (тимчасової) p>
Спосіб запису: p>
А) Словесно-формульний p>
Б) Структурна схема та алгоритм (ССА) p>
В) Спец. мови (алгоритмічні та псевдокоду) p>
(псевдокод - штучний неформальний мова, звичайно складається з елементів звичайного мови з
елементами програмування) p>
Г) Графічний спосіб p>
2. Лінійні і
розгалужуються алгоритми. Cтруктурние
схема алгоритмів. Правила виконання.
CCA-при записі у вигляді структурної схеми алгоритм представляється графічно у вигляді послідовності блоків
виконують певні функції і блоки з'єднуються лініями можливо зі стрілками. Всередині блоків операції. Блоки нумеруються по порядку. За способом
організації алгоритмів ССА блоки поділяються на лінійні, розгалужуються і циклічні. p>
У лінійних алгоритмах результат виходить після виконання однієї послідовності дій. p>
Початок-ряд операторів-кінець. p>
розгалужуються алгоритм передбачає вибір однієї з декількох послідовностей дій у
Залежно від вихідних даних або проміжних результатів. p>
3. Циклічні
алгоритми. Класифікація. Обчислення
сум, творів.
Циклічний алгоритм - це алгоритм забезпечує рішення задачі шляхом багаторазового повторення
послідовності дій. Ділянки, які багаторазово повторюються - називаються циклами. P>
Цикли за кількістю повторень поділяються на цикли з заданим числом повторень і ітераційні. p>
ЦИКЛИ p>
задане ЧИСЛО Ітераційні p>
з лічильником УПР. УМОВА p>
ПОСТ. УМОВА Передумови p>
Загальне зауваження: вхід тільки в початок циклу, а вихід внаслідок закінчення циклу, оператором GOTO, процедурами прерхода і виходу, знаходяться в тілі
циклу. p>
4. Циклічні
алгоритми. Ітераційні цикли. Вкладені цикли.
Циклічний алгоритм - це алгоритм забезпечує рішення задачі шляхом багаторазового повторення
послідовності дій. Ділянки, які багаторазово повторюються - називаються циклами. P>
Цикли за кількістю повторень поділяються на цикли з заданим числом повторень і ітераційні. p>
У ітераційних циклах виконання циклу закінчується при виконанні загального умови, пов'язаного з перевіркою монотонно змінюється
величини. p>
Вкладені цикли - це, коли певний цикл повторюється багато разів в іншому циклі що охоплює даний. p>
5. Масиви.
Алгоритми обробки масивів. Процедура BREAK
Масив - це впорядкована послідовність величин, що позначається одним ім'ям.
Положення кожного елемента в масиві визначається його індексом (індексами). У цьому й полягає впорядкованість. Індекси прийнято вказувати в дужках після
імені масиву. p>
Приклад: В [2] означає другий елемент масиву В. p>
Нехай є деяка послідовність величин 1, 2, 4, 8, 3. Всі елементи цієї послідовності
мають одне ім'я А. Відрізняються вони один від одного індексами, наприклад, A [1] = 1, A [2] = 2, A [3] = 4, A [5] = 8, A [6] = 3.
При описі масиву вказується кількість його елементів, і це число залишається постійним при виконанні програми. Кожен елемент масиву має явне
позначення, і до нього можливо безпосереднє звернення. p>
Кількість індексів в позначенні елемента масиву визначає розмірність масиву. Масив
може бути одновимірною (один індекс S [4]), двовимірним (два індекси N [2,4]), трьох мірним (три індекси Y [2,4,1]) і т.д. p>
Масив описується в розділі опису змінних, при цьому опис масиву включає
опис типу масиву (тип його елементів, тобто які значення вони можуть приймати) і типу індексів. Наприклад, масив речовинного типу з ім'ям vector може бути описаний таким чином: var vector: array [1 .. 50] of real p>
Цей опис означає, що одновимірний масив vector має 50 елементів типу real зі значеннями індексу 1,2, ..., 50. Елементи цього
масиву будуть мати позначення: vector [1], vector [2], ..., vector [50] p>
Двовимірний масив matrix, з цілочисельними компонентами можна визначити наступним чином: p>
var matrix [1 .. 10,1 .. 15] of integer p>
Двовимірний масив часто називають матрицею. Перший індекс цього масиву (номер рядка
матриці) приймає значення з відрізка 1 .. 10, а другий (номер стовпця) - з відрізка 1 .. 15. Компоненти масиву можуть мати позначення: matrix [1,5], matrix [8,8], matrix [i, j] і т.п. p>
Приклади: p>
program p2; p>
var matrix: array [1 .. 3, 1 .. 4] of integer; (визначається двовимірний масив в 3 рядки і 4 стовпця з іменем matrix) p>
i, j: integer; p>
begin p>
for i: = 1 to 3 do p>
for j: = 1 to 4 do p>
read (matrix [i, j]); (заповнення двовимірного масиву на 3 рядки і 4 стовпця) p>
for i: = 1 to 3 do p>
begin p>
writeln; p>
for j: = 1 to 4 do write (matrix [i, j]); (висновок елементів двовимірного масиву у вигляді таблиці) p>
end; p>
6.
Структуризація. Сонце, що програмування.
Проектування алгоритму
перекладу чисел з однієї системи числення в іншу (2,8,10,16).
Сонце, що проектування - використовується для нескладних завдань, коли заздалегідь відомі всі підзадачі або
функції, які виконувати програма. Розробляється алгоритм для кожної підзадачі, а потім вони збираються в єдину підпрограму. P>
7. Спадний
програмування. Проектування
алгоритму виконання арифметичних
(+,-,*,/) операцій над числами з пл. точкою.
При низхідному програмуванні зверху вниз спочатку розробляється загальна структурна схема
алгоритму, а потім розробляються етапи її деталізації (структурування). p>
8. Мова TURBO
PASCAL. Алфавіт мови. Ідентифікатори TURBO PASCAL.
ТП - єдність двох самостійних почав компілятора та інструментів програмної оболонки. Це потужна сучасна процедурна система
програмування p>
Алфавіт: букви латинського від a до z, знак _. (якщо не char A = a) p>
Цифри - арабські 0-9, спец. символи +-*/=.,:;[]{}()^&$@#%! p>
Прогалини (ASCII від 0 до 32) обмежувачі ідентифікаторів p>
Зарезервовані слова та параметри (не використовуються в якості ідентифікаторів). Стандартні директиви absolute, assembler, external, far, forward,
near і т.д. . p>
Ідентифікатори: імена констант, var'них, міток, типів, obg-ів, процедур, функцій (можуть мати довільну довжину,
але означають тільки перші 63 символи, починаються тільки з букви або цифри). p>
9. Оператор
умовного переходу IF. Складовою і порожньою оператори.
IFTHEN ELSE; p>
10. Оператор
циклу з лічильником.
FOR: = TO DO p>
FOR: = DOWNTO DO p>
11. Оператор
циклу з передумовою.
Цикл ДО p>
WHILEDO p>
12. Оператор
циклу з постусловіем.
Цикл ПОКИ p>
REPEAT p>
Оператор; p>
UNTIL; p>
13. Підготовка
і налагодження програм в середовищі TurboPascal.
Меню run p>
Run-запуск на виконання p>
Step over-послідовне виконання програми p>
Trace into-послідовне виконання програми тільки підпрограми виконуються оператор за оператором p>
Go to cursor - виконання до курсору p>
Program reset-завершення процесу налагодження p>
Parameters-вікно для введення параметрів для налагодження p>
Меню compile p>
Compile-компіляція файлу, що знаходиться в активному вікні редагування. p>
Make - умовна компіляція змінених модулів в ЕХЕ файл p>
Build-безумовна компіляція багатомодульним програми зі створенням ЕХЕ файлу p>
Target ...-вибір у вікні таргет цільової платформи для програми p>
Primary file ...-відкриває вікно для вказівки головного файлу, модульна програми. p>
Меню Debug: p>
Breakpoints-установка точок умовного та безумовного переходу p>
Call stack - показує процедури виконувалися раніше. p>
Register - інформація про регістрах процесора p>
Watch - вікно значень змінних p>
Output - вікно результатів роботи програми p>
User screen - перегляд результатів включаючи графіком p>
Evaluate/modify .. - Вікно зміни значень виразів p>
Add watch - вікно значень і змінних вчасно налагодження p>
Add breakpoint .. - Вікно установки точок переривання програми p>
14. Константи
в TURBO PASCAL (цілі, речові, 16-ковий, логічні, символьні, рядкові константи,
конструктор безлічі)
Константи - можуть використовуватися цілі, дійсні, шістнадцяткові числа, логічні
константи, символи, рядки, множини і ознака невизначеного покажчика NIL. p>
Цілі числа: від -2147483648 до 2147483647 p>
Речові числа: (Експоненціальна частина) 3.14E5 p>
16-ковий число: $ (код 36 в ASCII) $ 00000000 - $ F ... $ F (8) p>
Логічна константа: True, False. p>
Символьна константа: будь-який символ в '', або покажчик усередині коду # 83 = 'S' p>
Конструктор множини - список елементів множини в []. p>
[1,2,3,4], [red, blue], [true, false]. У ТП дозволяється оголошення констант p>
const a = 12/343; p>
15.
Типізовані константи.
типізовані константи фактично є змінними із статичним класом пам'яті. На відміну від простих констант, в описі
типізованих вказується як значення константи, так і її тип. p>
Існують типи: p>
Константа, константа-адресу, константа-масив, константа-запис, константа-об'єкт, константа-безліч. p>
Вказівний тип: p>
Type ptr = ^ integer; p>
Conct intptr: ptr = nil; p>
Структурований тип: p>
1 масив (array) p>
2 безліч (set of 1 .. 4) p>
3 запис (record) p>
4Об'ектного типу (object) p>
16. Оператор
привласнення. Пріоритет операцій. Стандартні функції.
:=; p>
арифметичні логічні відносини інші p>
1 NOT @-адресний перетворення p>
2 *, /, DIV, MOD AND, SHL, SHR p>
3 +, - OR, XOR p>
4; =; IN p>
Для підвищення пріоритету використовуються (). p>
Стандартні функції ТП. p>
ABS (X) SQR (X) SQRT (X) TRUNG (X) ROUND (X) p>
COS (X) SIN (X) TG (X) ARCTANG (X) EXP (X) p>
LN (X) PRED (X) SUCE (X) ORD (X) CHR (X) p>
ODD (X) INT (X) FRAG (X) +,-,*,/ (X) DIV (Y) p>
MOD (X) NOT AND OR XOR p>
= <> I_SHL_J I_SHR_J p>
17. Оператори та функції
безумовного
переходу (goto, continue, exit, halt).
EXIT; - вихід з програми або підпрограми p>
HALT (COD); - (COD) - необов'язковий параметр, що визначає код p>
HALT; - безумовна зупинка програми p>
ERRORLEVEL; - вниз p>
BREAK; - достроковий вихід з циклу p>
CONTINUE; - перериває виконання поточної операції в циклі, передає управління наступного оператора p>
18. Структури
простої та складної програм у Турбо-Паскалі.
PROGRAM; p>
USES; p>
TYPE; p>
LABEL; p>
CONST; p>
VAR; p>
FUNCTION (ім'я змінної: тип) p>
BEGIN p>
оператори p>
END; p>
PROCEDURE (параметри) p>
BEGIN p>
оператори p>
END; p>
BEGIN p>
Текст основної програми p>
END. p>
19.
Підпрограми. Застосування. Структура опису. Відмінність процедури від функції.
Самостійні, закінчені фрагменти програми, оформлені особливим чином, забезпечені ім'ям - називаються
підпрограмами p>
Використання підпрограм дозволяє розбити програму на ряд незалежних частин. p>
Підпрограми використовуються: p>
1Для економії пам'яті, коли певна послідовність дій зустрічається неодноразово на різних
ділянках програми. Кожна підпрограма існує в од. примірнику, але звертатися до неї можна неодноразово з різних точок програми. p>
2. У складних програмах при модульному проектуванні. P>
Підпрограми поділяються на процедури та функції p>
Результатом виконання функції є єдине значення простого, строкового чи вказівного
типу. Тому звернення до функції можна використовувати виражене поряд з константою і змінні. p>
Процедура зазвичай повертає кілька значень, підпрограма складається із заголовка і тіла підпрограми. p>
Тіло підпрограми складається із розділу описів і розділу операторів. p>
Структура: PROCEDURE; p>
FUNCTION (параметр: тип); p>
USES; p>
LABEL; p>
CONST; p>
TYPE; p>
VAR; p>
BEGIN p>
Тіло підпрограми p>
END; p>
20. Вкладені
підпрограми. Принципи локалізації імен (локальні та глобальні змінні).
вкладень є підпрограми, що викликаються з інших підпрограм. p>
Якщо яка небудь програма використовує деякі змінні підпрограми, p>
Те дані змінні повинні бути описані не в підпрограмі, а в самій програмі. Ці змінні
називаються глобальними, а змінні, оголошені в модулі або підпрограмі є локальними, і значення
цих тимчасових не можна використовувати в головній програмі. p>
21. Виклик
підпрограм (формальні і фактичні параметри).
Підпрограми можуть бути викликані як з тіла основної програми, так і з тіла іншої підпрограми. Для
виклику необхідно написати ім'я процедури або функції, а також, якщо треба, ряд змінних переданих в підпрограму. p>
Приклад: p>
PROCEDURE [()]; p>
FUNCTION [()]: p>
Відразу за заголовками може слідувати один стандартних директив: ASSEMBLER, EXTERNAL, FAR, FORWARD, INLINE, INTERRUPT, NEAR. p>
PROCEDURE SB (a: real); p>
Фактичні параметри - це глобальні змінні підставлені у формальні p>
ТИП ФАКТ = ТИП ФОРМ. p>
22. Процедури
без параметрів і з параметрами.
PROCEDURE p>
Begin p>
p>
end; p>
23. Передача в
підпрограму параметрів регулярного типу (масивів, рядків).
Типом будь-якого формального параметра може бути тільки стандартний або раніше оголошений тип. p>
Приклад: p>
TYPE TYPE p>
ATYPE = ARRAY [1 .. 10] OF REAL; INTYPE = STRING [15]; p>
PROCEDURE S (A: ATYPE); OUTTYPE = STRING [30]; p>
FUNCTION ST (S: INTYPE): OUTTYPE p>
Інший спосіб для передачі параметрів змінних відключенням контролю компіляції. p>
Відкритий масив PROCEDURE I (A: ARRAY OF REAL); p>
24. Опції.
Опис. Виклик функції.
FUNCTION [()]: p>
Відразу за заголовками може слідувати один стандартних директив: ASSEMBLER, EXTERNAL, FAR, FORWARD, INLINE, INTERRUPT, NEAR. p>
FUNCTION (параметр: тип); p>
Begin p>
p>
end; p>
25. Рекурсії.
Пряма і непряма рекурсія. Директива FORWARD.
Рекурсія - це такий спосіб організації обчислювального процесу при якому програма в ході виконання
складових її операторів звертається сама до себе. p>
Для уникнення переповнення стека, слід розміщувати проміжні результати в допоміжній змінній. p>
Begin p>
... ... ... ... ... ... ... ... ... ... p>
F: = fac (n-1); - допоміжна мінлива p>
... ... ... ... ... ... ... ... .... p>
End; p>
Рекурсивний виклик може бути непрямим, який дозволяється випереджаючим описом: p>
Procedure b (j: byte); p>
Forward; p>
Procedure a (i: byte); p>
Begin p>
B (i); p>
End; p>
26.
Тип-діапазон. Структуровані типи. Масиви.
Будь-який з структурованих типів (а в ТП їх 4: масиви, записи, множини, файли) характеризується множинністю які складають цей тип
елементів. У ТП p>
Допускається нескінченна глибина вкладеності типів, однак Сумою == перевірка входження (TRUE, якщо друга безліч входить до перших; p>
in - перевірка приналежності. Структура цієї бінарної операції: p>
in; повертає TRUE, якщо вираз має значення, що належить безлічі. p>
приклад: p>
3 in S6 TRUE; [] in [0 .. 5] [] in S5 p>
2 * 2 in S4 FALSE; p>
Безліч мають компактне машинне подання. Недолік: неможливість виведення множини на екран,
тому що відсутній механізм вилучення елемента з безлічі. Введення безлічі можливий тільки поелементно. P>
приклад: Можна тип оголошувати при описі змінних p>
VAR S: SET of char; (мінлива-безліч) p>
C: char; (елемент безлічі) p>
Begin p>
S :=[]; S: = # 0; (обнулення значень) p>
while C '.' do (цикл до введення "."} p>
begin p>
readln (C); (читання символу в с) p>
S: = S + [C];?? (Додавання його до S) p>
end; ... p>
S: = S-['.']; (виключення точки) p>
End. (Дивись завдання на Л.Р. N 12) p>
34. Оператор
вибору CASE (варіанти). Коментарі.
CASE OF p>
Const1: оператор; p>
Const2: оператор; p>
ELSE: оператор; p>
END; p>
35. Записи.
Вкладені запису. Записи з варіантами.
Запис - це структура даних, що складається з фіксованого числа компонентів, які називаються полями запису.
На відміну від масиву компоненти можуть бути різного типу. Поля іменуються: p>
= RECORDEND. p>
Type p>
Bd = record p>
D, m: byte; p>
Y: word p>
Var a, b: bd; p>
a:: = 8; p>
a.day: = 27;-доступ до компоненту p>
Для спрощення доступу до полів запису використовують оператор запису With p>
Withdo; p>
With c.bp do month: = 9; p>
With c do with bp do month: = 9; p>
c.bp.month: = 9; p>
Варіантні поля p>
Type f = record p>
N: string; p>
Case byte of p>
0: (bp: string [30 ]); p>
1: (c: string [10], e: string [20], ed: 1 .. 31) p>
end; p>
Імена повинні бути унікальні, хоча можливо повторення на різних рівнях p>
Вкладені поля: p>
Type bd = record p>
D, m: byte; p>
X: word; p>
End; p>
Var c: record; p>
Name: string; p>
Db: bd; p>
Begin if c.db.year = 1939 then ... ... ... .. p>
End. p>
Як ключ мінлива: p>
Type rec2 = record p>
C: LongInt; p>
Case x: byte of p>
1: (d: word); p>
2: (e: record p>
case boolean of p>
3: (f: real); p>
3: (g: single); p>
'3 ': (c: word); p>
end; p>
end; p>
p>
36.
Речовий тип. Операції та функції для речового типу.
Речовий тип визначає число з деякою кінцевою точністю, яка залежить від внутрішнього формату числа p>
Довжина назва кількість знакових цифр діапазон десяткового порядку p>
байт p>
6 real 11 .. 12 -39 .. 38 p>
8 couble 15 .. 16 -324 .. 308 p>
10 extended 19 .. 20 -4951 .. 4932 p>
8 comp 19 .. 20 -2 * 10 ^ 63 +1 .. 2 * 10 ^ 63-1 p>
функції p>
ABS (X), ARCTAN (x), COS (X), EXP (X), FRAC (X), INT (X), LN (X), SIN (X), ROUND (X), SQR ( X), SQRT (X) І Т.Д. p>
37. 38.
39. Файловий тип. Файли. Вимоги до
імені. Зв'язування. Текстові файли. Введення (висновок) інформації з файлу (у файл,
пристрій) типізовані файли і нетипізовані файли.
Загальні процедури для роботи з файлами p>
_____________________________________________________________ p>
| Assign (Var f, FileName: String) - Cвязиваніе ф.п.f з файлом FileName p>
| RESET (Var f) | Відкриття файлу з логічним ім'ям f для читання | p>
| REWRITE (Var f) Відкриття файлу з лог. ім'ям f для запису | p>
| CLOSE (f) | Закриття файлу з лог. ім'ям f | p>
| Erase (Var f) | Видалення файлу (стирання) з диска | p>
| Rename (f, NewName: String) | перейменовує фізичний файл | p>
| EOF (f) | Функція тестування кінця файлу | p>
| FLUSH () | Очищає внутрішній буфер файлу | p>
----------------------------------------------- -------------- p>
ТЕКСТОВИЙ файл p>
Це файли послідовного доступу. p>
Вони призначені для зберігання текстової інформації. Компоненти (запи- p>
сі) текстового файлу можуть мати змінну довжину. p>
Для доступу до записів файла застосовуються процедури p>
READ, READLN, WRITE, WRITELN. p>
Текст-орієнтовані процедури та функції p>
____________________________________________________________ p>
| процедури | пояснення | p>
| та функції | (дії) | p>
|-------------|-------------------------------- --------------| p>
| Append | Процедура відкриває вже існуючий файл f | p>
| () | для дозапису в кінець файлу | p>
| пр: Append (f) | (для його розширення) | p>
| SeekEOLN | Функція пропускає всі пробіли та знаки табула-| p>
| () | ції до першого ознаки EOLN або перша зна-| p>
| логіч.тіпа | чащего символу. Повертає значення TRUE, якщо | p>
пр: SeekEOLN (f) | виявлений маркер кінця файлу або маркер кінця | p>
| | рядка. Якщо Ф.П. опущена, | p>
| | функція перевіряє стандартний файл INPUT. | p>
| | | p>
| SeekEOF | Функція пропускає всі пропуски, знаки табуляції | p>
| () | і маркери кінця строк до маркера кінця файлу | p>
| пр: SeekEOF (f) | або першого значущого символу. Якщо маркер об-| p>
| | назовні, повертає значення TRUE. | p>
| EOLN () | Функція повертає значення TRUE, якщо у вхід-| p>
| логіч.тіпа | ном фото f досягнуто маркер EOLN або | p>
| пр: EOLN (f) | EOF; FALSE - в іншому випадку. | p>
|_____________|______________________________________________| p>
типізовані файли p>
дозволяють організувати прямий доступ до кожної з компонент (за його по- p>
рядкове номером). Опис файлової змінної p>
Var ft: file of; p>
Перед першим зверненням до процедур введення-виведення покажчик файлу p>
стоїть на його початку і вказує на 1-у компоненту з номером 0. Після p>
кожного читання або запису покажчик зсувається з наступного компоненту p>
файлу. Змінні в списках в/в повинні мати той же тип, що і компо- p>
нентов файлу. p>
Процедури та функції для роботи з файлами типізований p>
____________________________________________________________ p>
| процедури | пояснення | p>
| та функції | (дії) | p>
|-------------|-------------------------------- --------------| p>
READ (,); Процедура p>
Забезпечує читання чергових компонентів файлу p>
WRITE (,) використовується для запису нових p>
компонент у файл; як елементи виводу p>
м.б. вираз. p>
SEEK (,) - зміщує покажчик p>
файлу до компоненту с; p>
- вираз типу LONGINT. p>
(До текстовим файлу застосовувати не можна.) p>
FILESIZE) Функція повертає кількість компонент, p>
що містяться у файлі. (Типу LongInt) p>
Функція FILEPOS () повертає порядковий номер компо- p>
нентов файлу, доступною для читання чи запису p>
(який буде оброблятися наступною операцією в/в). p>
(Процедура CLOSE () - закриття файлу.) p>
|-------------|-------------------------------- --------------| p>
- містить одну або більше змінних такого p>
ж типу, що й компоненти файлу, p>
- файлова змінна д.б.н. оголошена пропозицією FILE OF p>
і пов'язана з ім'ям файлу процедурою ASSIGN. Файл необхідно відкрити p>
процедурою RESET для читання. p>
Якщо файл вичерпаний, звернення до READ викличе помилку В/В p>
Щоб перемістити вказівник у кінець файлу можна написати p>
Пр. Seek (f, FileSize (f)); де f - файлова змінна p>
нетипізований файли p>
оголошує без вказівки типу файла: p>
TYPE ftype = file; або VAR fn: file; p>
Для даних файлів не вказується тип компонентів, що робить їх сов- p>
местімимі з будь-якими іншими файлами. Дозволяє організувати високоско- p>
ростной обмін даними між диском і пам'яттю. p>
При ініціалізації нетипізований файлів процедурами RESET і p>
REWRITE вказується довжина запису нетипізований файлу в байтах. p>
приклад: VAR f: file; ... p>
ASSIGN (f, 'a.dat'); p>
RESET (f, 512); p>
довжина запису p>
Довжина файлу може бути представлена виразом типу WORD; якщо пара- p>
метр довжини пропущено, мається на увазі довжина 128 байт; максимальна довжина p>
65535 байт. p>
Для забезпечення максимальної швидкості обміну даними слід за- p>
давати довжину, кратну довжині фізичного сектора дискового носія p>
(512 байт). Крім того, фактично простір на диску виділяється p>
будь-якого файлу порціями - кластерами, які залежно від типу дис- p>
ка можуть займати 2 і більше суміжних секторів. Як правило, кластер p>
м.б. прочитаний або записаний за один оборот диска, тому найвищу ско- p>
зростання обміну даними можна отримати, якщо вказати довжину запису, що дорівнює p>
довжині кластеру. p>
При роботі з нетипізований файлами Можуть застосовуватися всі p>
розглянуті процедури та функції, доступні типізований файлів, за p>
винятком READ і WRITE, які для читання і запису замінюються соот- p>
льної високошвидкісними процедурами BlockREAD і BlockWRITE. p>
BlockREAD (,,,[, Var]) p>
BlockWRITE (,,,[, Var]) p>
де - ім'я змінної, яка буде брати участь в обміні дан- p>
нимі з дисками; p>
- кількість записів, які д.б.н. прочитані або записані за одне p>
звернення до диска; p>
- необов'язковий параметр, що містить при виході з процедури ко- p>
лічество фактично оброблених записів. p>
За одне звернення до процедур м.б. передано N * r байт, де r - p>
довжина запису нетипізований файлу. Передача йде, починаючи з 1-го p>
байти змінної. p>
Після завершення процедури вказівник зміщується на записів. p>
Процедурами SEEK, FilePos і FileSize можна забезпечити доступ до будь-якої p>
запису нетипізований файлу. p>
40.
Бібліотечний модуль GRAPH. Графічні можливості ТП.
GRAPH - являє собою бібліотеку підпрограм, що забезпечує повне управління графічними режимами для різних адаптерів дисплеїв:
CGA, EGA, VGA ... Містить 78 процедур і функцій (як базових - малювання точок, ліній, кіл, прямокутників),
так і розширюють можливості базових (багатокутники, сектору, дуги, зафарбовування фігур, виведення тексту і т.д.). p>
Для запуску програми з використанням модуля GRAPH необхідно, p>
щоб у робочому каталозі знаходилися графічні драйвери з розширенням. BGI, також повинен бути доступний
компілятору модуль GRAPH.TPU. p>
Файл BGI - графічний інтерфейс. Він забезпечує взаємодію p>
програм з графічними пристроями. p>
На початку програми модуль GRAPH повинен бути підключений p>
PROGRAM p>
USES GRAPH; p>
опис міток, змінних програми, зокрема p>
VAR driver, Mode: integer; p>
Begin p>
Далі ініціалізується графічний режим роботи процедурою p>
InitGraph (,: integer; p>
: string); p>
Графічна інформація на екрані відображається сукупністю p>
світяться точок - ПІКСЕЛІВ. p>
Режим по вертикалі: 0 - 200 пікселів (4 сторінки), p>
1 - 350 пікселів (2 сторінки), 2 - 480 пікселів (1 сторінка). p>
Режим 2 (640х480, 16 кольорів, 1 сторінка) p>
У текстовому режимі координати верхнього кута (1,1). p>
центр (319,239) p>
нижнього (639,479) p>
Тип драйвера допускається вказувати = 0, тоді він встановлюється p>
за результатами тестування (авто визначення). Шлях визначає маршрут пошуку графічного драйвера. p>
Приклад: p>
USES GRAPH; p>
Const driver, mode: intGRAPH - являє собою бібліотеку підпрограм, що забезпечує повне управління графічними режимами для різних
адаптерів дисплеїв: CGA, EGA, VGA ... Містить 78 процедур і функцій (як базових - малювання точок, ліній,
кіл, прямокутників), так і розширюють можливості базових (багатокутники, сектору, дуги,
зафарбовування фігур, виведення тексту і т.д.). p>
Для запуску програми з використанням модуля GRAPH необхідно, p>
щоб у робочому каталозі знаходилися графічні драйвери з розширенням. BGI, також повинен бути доступний
компілятору модуль GRAPH.TPU. p>
Файл BGI - графічний інтерфейс. Він забезпечує взаємодію p>
програм з графічними пристроями. p>
На початку програми модуль GRAPH повинен бути підключений p>
PROGRAM p>
USES GRAPH; p>
опис міток, змінних програми, зокрема p>
VAR driver, Mode: integer; p>
Begin p>
Далі ініціалізується графічний режим роботи процедурою p>
InitGraph (,: integer; p>
: string); p>
Графічна інформація на екрані відображається сукупністю p>
світяться точок - ПІКСЕЛІВ. p>
Режим по вертикалі: 0 - 200 пікселів (4 сторінки), p>
1 - 350 пікселів (2 сторінки), 2 - 480 пікселів (1 сторінка). p>
Режим 2 (640х480, 16 кольорів, 1 сторінка) p>
У текстовому режимі координати верхнього кута (1,1). p>
центр (319,239) p>
нижнього (639,479) p>
Тип драйвера допускається вказувати = 0, тоді він встановлюється p>
за результатами тестування (авто визначення). Шлях визначає маршрут пошуку графічного драйвера. p>
Приклад: p>
USES GRAPH; p>
Const driver, mode: integer; p>
Begin p>
driver: = VGA; (9) p>
mode: = VGAH; (2) p>
InitGraph (driver, mode, 'e: TPBGI'); тип string. p>
DetectGraph (var Diver, Mode: integer) - повертає тип драйвера і поточний режим його роботи. p>
Основні кольори задаються від 0 до 15: p>
0 - чорний 8 - темно-синій p>
1 - синій 9 - яскраво-синій p>
2 - зелений 10 - яскраво-зелений p>
3 - блакитний 11 - яскраво-блакитний p>
4 - червоний 12 - рожевий p>
5 - фіолетовий 13 - малиновий p>
6 - коричневий 14 - жовтий p>
7 - світло-сірий 15 - білий. p>
Якщо Х і У речові, то їх потрібно перетворити до цілих координатами (у межах розділу екрану). Для
цього використовуються функції ROUND або TRUNC прямого перетворення до цілого значенням LineTo (trunc (x), trunc (y )); p>
Також необхідно стежити, щоб значення не виходили за межі p>
екрана (розраховуйте коефіцієнти збільшення або зменшення і пара- p>
метри зсуву) p>
ПРОЦЕДУРИ І ФУНКЦІЇ модуля GRAPH p>
настановні p>
ClearDevice - Очищає екран і поміщає курсор у точку (0,0); p>
SetViewPort (x1, y1, x2, y2: integer; Clip: boolean) - Встановлює p>
поточне вікно для графічного виводу. X1, y1 - координата верхнього лівого кута; x2, y2 - координата нижнього
правого кута. Якщо Clip = true, то всі зображення відсікаються на кордонах висновку; p>
ClearViewPort - Очищає поточне вікно; p>
GetMax X: integer - повертає максимальну горизонтальну координату p>
графічного екрану; p>
GetMax Y: integer - повертає максимальну вертикальну координату p>
графічного екрану; p>
Get X: integer - повертає координату Х поточного покажчика у вікні; p>
Get Y: integer - повертає координату Y курсора у вікні; p>
SetLineStyle (Line, Pattern, Thickness: word) - Встановлює стиль p>
(0 .. 4), шаблон штрихування (0 .. 12) і товщину (1-стандартам, 3-утpоенная); p>
SetFillStyle (Pattern, Color: word) - встановлює зразок штрихування і p>
колір (0 .. 15 і 128-меpцаніе); p>
SetGraphMode (Mode: integer) - встановлює новий графічний режим і p>
очищає екран; p>
SetColor (Color: word) - встановлює основний колір, яким виконується малювання (0 .. 15); p>
SetBkColor (Color: word) - Установка кольору фону. p>
Гpафіческіе примітиви p>
PutPixel (X, Y: integer; Color: word) - Виводить точку кольором Color з координатою X, Y; p>
LineTO (X, Y: integer) - Малює лінію від поточного покажчика до точки з координатою Х, У; p>
LineRel (DX, DY: integer) - Малює лінію від поточного покажчика до точки, заданої збільшенням координат; p>
Line (X1, Y1, X2, Y2: integer) - Малює лінію від точки (X1, Y1) до точки з p>
координатою Х2, У2; p>
MoveTO (X, Y: integer) - зміщує поточний покажчик до точки з координатою Х, У; p>
MoveRel (DX, DY: integer) - зміщує поточний покажчик до точки, заданої p>
збільшенням координат; p>
Rectangle (X1, Y1, X2, Y2: integer) - Малює прямокутник, використовуючи p>
поточний колір і тип лінії з верхньої лівої та правої нижньої точок; p>
Bar (X1, Y1, X2, Y2: integer) - Малює зафарбований прямокутник, використовуючи установку SetFillStyle; p>
Bar3D (X1, Y1, X2, Y2: integer; Depth: word; Top: Bolean) - Малює зафарбований паpаллеліпіпед. Depth - глибина в Pixel (1/4 ширини). P>
Якщо Тор = True, то малюється верхня грань пеpеллеліпіпеда; p>
Circle (X, Y: integer; R: word) - Малює коло радіуса R, використовуючи p>
X, Y як координати центру; p>
Fillellipse (X, Y: integer; XR, YR: word) - Малює защтpіхованний еліпс, p>
використовуючи X, Y як центр і XR, YR як горизонтальний і p>
вертикальний радіуси. p>
RestorCRTMode - Відновлює текстовий режим роботи екрану; p>
OutText (Text: string) - Виводить текстовий рядок на екран. p>
OutTextXY (X, Y: integer; Text: string) - Виводить текст в заданий p>
місце екрана. p>
Приклад програми побудови графіка функції у = 2 + х * х. p>
program graphik; (файл grafikf.pas) p>
uses graph; (підключення модуля GRAPF) p>
var a, b, x, y: integer; (a, b-змінні, що визначають тип драйвера і p>
відеорежим відповідно) p>
begin p>
detectgraph (a, b); (авто визначення типу драйвера і відеорежиму) p>
initgraph (a, b, 'E: TPBGI'); (Ініціалізація графічного режиму) p>
setgraphmode (2); (встановлення нового режиму (2), очищення екрана) p>
setBKcolor (0); (основний колір фону - чорний) p>
setcolor (4); (основний колір малювання - червоний) p>
moveTO (100,100); (зміщує курсор) p>
lineRel (50,50); (креслення лінії по збільшенню від поточного p>
покажчика) p>
readln; (пауза до натискання клавіші) p>
setcolor (2); (основний колір малювання - зелений) p>
line (100,100,100,50); (малює лінію від т.Х1, У2 до т.Х2, У2) p>
readln; (пауза до натискання) p>
setcolor (5); (основний колір малювання - фіолетовий) p>
putPixel (0,0,12); (виводить точку кольором 12 з координатою 0,0) p>
readln; (пауза до натискання) p>
moveTO (1,2); (зміщує курсор до точки з координатою 1,2) p>
for x: = 0 to 20 do p>
begin p>
y: = 2 + x * x; p>
lineTO (x, y); (малює лінію від поточного p>
покажчика до точки з координатою Х, У) p>
end; p>
readln; (пауза до натискання введення) p>
Settextstyle (1,0,5); p>
OutTextXY (50,400, 'графік функції у = 2 + х * х'); (виводить текст в p>
задане місце екрану) p>
readln; (пауза до натискання) p>
putPixel (639,479,14); (виводить точку кольором 14 з координатою 639,479) p>
readln; (пауза до натискання) p>
closegraph; (закриває графічно?? режим і відновлює текстовий) p>
end. p>
Begin p>
driver: = VGA; (9) p>
mode: = VGAH; (2) p>
InitGraph (driver, mode, 'e: TPBGI'); тип string. p>
DetectGraph (var Diver, Mode: integer) - повертає тип драйвера і поточний режим його роботи. p>
Основні кольори задаються від 0 до 15: p>
0 - чорний 8 - темно-синій p>
1 - синій 9 - яскраво-синій p>
2 - зелений 10 - яскраво-зелений p>
3 - блакитний 11 - яскраво-блакитний p>
4 - червоний 12 - рожевий p>
5 - фіолетовий 13 - малиновий p>
6 - коричневий 14 - жовтий p>
7 - світло-сірий 15 - білий. p>
Якщо Х і У речові, то їх потрібно перетворити до цілих координатами (у межах розділу екрану). Для
цього використовуються функції ROUND або TRUNC прямого перетворення до цілого значенням LineTo (trunc (x), trunc (y )); p>
Також необхідно стежити, щоб значення не виходили за межі p>
екрана (розраховуйте коефіцієнти збільшення або зменшення і пара- p>
метри зсуву) p>
ПРОЦЕДУРИ І ФУНКЦІЇ модуля GRAPH p>
настановні p>
ClearDevice - Очищає екран і поміщає курсор у точку (0,0); p>
SetViewPort (x1, y1, x2, y2: integer; Clip: boolean) - Встановлює p>
поточне вікно для графічного виводу. X1, y1 - координата p>
верхнього лівого кута; x2, y2 - координата нижнього правого кута. p>
Якщо Clip = true, то всі зображення відсікаються на кордонах висновку; p>
ClearViewPort - Очищає поточне вікно; p>
GetMaxX: integer - повертає максимальну горизонтальну координату p>
графічного екрану; p>
GetMaxY: integer - повертає максимальну вертикальну координату p>
графічного екрану; p>
GetX: integer - повертає координату Х поточного покажчика у вікні; p>
GetY: integer - повертає координату Y курсора у вікні; p>
SetLineStyle (Line, Pattern, Thickness: word) - Встановлює стиль p>
(0 .. 4), шаблон штрихування (0 .. 12) і товщину (1-стандартам, 3-утpоенная); p>
SetFillStyle (Pattern, Color: word) - встановлює зразок штрихування і p>
колір (0 .. 15 і 128-меpцаніе); p>
SetGraphMode (Mode: integer) - встановлює новий графічний режим і p>
очищає екран; p>
SetColor (Color: word) - встановлює основний колір, яким виконується малювання (0 .. 15); p>
SetBkColor (Color: word) - Установка кольору фону. p>
Гpафіческіе примітиви p>
PutPixel (X, Y: integer; Color: word) - Виводить точку кольором Color з координатою X, Y; p>
LineTO (X, Y: integer) - Малює лінію від поточного покажчика до точки з координатою Х, У; p>
LineRel (DX, DY: integer) - Малює лінію від поточного покажчика до точки, заданої збільшенням координат; p>
Line (X1, Y1, X2, Y2: integer) - Малює лінію від точки (X1, Y1) до точки з p>
координатою Х2, У2; p>
MoveTO (X, Y: integer) - зміщує поточний покажчик до точки з координатою Х, У; p>
MoveRel (DX, DY: integer) - зміщує поточний покажчик до точки, заданої p>
збільшенням координат; p>
Rectangle (X1, Y1, X2, Y2: integer) - Малює прямокутник, використовуючи p>
поточний колір і тип лінії з верхньої лівої та правої нижньої точок; p>
Bar (X1, Y1, X2, Y2: integer) - Малює зафарбований прямокутник, використовуючи установку SetFillStyle; p>
Bar3D (X1, Y1, X2, Y2: integer; Depth: word; Top: Bolean) - Малює зафарбований паpаллеліпіпед. Depth - глибина в Pixel (1/4 ширини). P>
Якщо Тор = True, то малюється верхня грань пеpеллеліпіпеда; p>
circle (X, Y: integer; R: word) - Малює коло радіуса R, використовуючи p>
X, Y як координати центру; p>
Fil