Тема: Програмування. Основні етапи розробки прикладних програм
Вид материала | Документы |
- Текст програми це набір інструкцій (команд), які можуть бути виконані комп'ютером., 221.57kb.
- Тема: Робота в середовищі програмування. Запуск програм на виконання, 202.65kb.
- 1. Мови програмування (процедурні, візуальні, специфікацій). Концепція інструментального, 757.76kb.
- Програма Комплексного вступного іспиту на окр «Спеціаліст», 814.3kb.
- Називається комплекс програмних та мовних засобів, які використовуються для створення, 149.17kb.
- План лекції Тема І основні питання. Актуальність теми Лекційний матеріал Педіатрія, 473.4kb.
- Тема. Основні етапи розв’язування прикладної задачі з використанням комп’ютера. Інформаційна, 85.92kb.
- Розробка програми (робочого плану) моніторингу світового ринку готельних та ресторанних, 33.83kb.
- Структуризація програми. Поле, метод, класс, файл, проект. Об’єктне програмування., 327.95kb.
- Рекомендації з розробки навчальних та робочих програм (зі змінами І доповненнями) львів, 500.26kb.
Модуль – це бібліотека, яка містить константи, опис типів даних, змінні, процедури і функції. Кожний модуль транслюється відмінно і може використовуватися в програмі користувача. Турбо Паскаль включає 10 модулів для реального режиму DOS. Найчастіше модулі, які використовуються, знаходяться в файлі TURBO.TPL. останні модулі містяться в файлах з розширенням .TRU.
Файл TURBO.TPL містить модулі System, Overlay, Dos, CRT і Printer. Останні модулі (Graph, String, WinDos, Turbo3 і Graph3) розміщуються в окремих файлах з розширенням .TRU. Також в Турбо Паскаль є модулі бібліотеки Turbo Vision.
Модуль System – це бібліотека підтримки Турбо Паскаля. Модуль забезпечує виконання програм низького рівня підтримки для всіх вбудованих можливостей, таких як файловий ввід-вивід, обробка рядків, операції з плаваючою комою і роботи з динамічною пам’яттю. Всі модулі і програми автоматично використовують модуль System.
Модулі Dos і WinDos підтримують більшість найбільш часто використовуваних функцій операційної системи і функцій обробки файлів. На відмінну від Dos модуль WinDos використовує особливий тип рядків – рядки з завершуючим нулем – і призначений для написання програм, які взаємодіють з Windows.
Модуль CRT містить підпрограми управління екранним режимом, читання розширених кодів клавіатури, використання кольорів, вікон і звуку. Він дозволяє писати програми, які направляють вивід на екран, безпосередньо в BIOS чи відео пам’ять. Модуль CRT можна використовувати тільки в програмах, призначених для роботи на комп’ютерах IBM PC і сумісних з ними.
Модуль Printer дозволяє перенапрямляти стандартний вивід Турбо Паскаля на принтер, використовуючи оператори Write і Writeln.
Модуль Overlay містить процедури, функції і змінні, які використовує програма управління оверлеями Турбо Паскаль. Він дозволяє зменшити об’єм пам’яті, яка потребується програмам, які виконуються в реальному режимі Dos. Фактично, він дозволяє писати програми, яким треба більше пам'яті, чім реально доступно на машині, оскільки під час роботи програми в пам'яті буде знаходитися тільки її частина.
Модуль Strings дає можливість програмі використовувати рядки з останнім нулем, що разом з розширеним синтаксисом дозволяє писати програми, сумісні з Windows-додатками.
Модуль Graph являє собою бібліотеку швидких і потужних підпрограм універсального призначення для роботи з графікою. Модуль містить апаратно-незалежні графічні майстри обробки, які підтримують найбільш поширені графічні адаптери IBM- сумісних персональних комп’ютерів, такі як CGI, EGA, VGA, Hercules, AT&T 400, MCGA, 3270 PC і IBM-8514. для роботи модуля також потрібен набір файлів автономних драйверів графічного адаптера (BGI-файли), а у випадку використання штрихових шрифтів – файли з цими шрифтами ( CHR-файли).
ТЕМА: МОДУЛЬ SYSTEM
ПРОЦЕДУРИ УПРАВЛІННЯ ВИКОНАННЯМ ПРОГРАМ
Процедури, які дозволяють змінювати порядок виконання програми:
Назва | Призначення |
Break | вимушений вихід з циклу for, while чи repeat |
Continue | Перехід до виконання наступної операції циклів for, while, repeat |
Exit | негайний вихід з поточної програми чи завершення основної програми |
Halt | Зупинка виконання програми і передача управління в операційну систему |
RunError | Зупинка виконання програми і генерація повідомлення про помилку виконання |
ФУНКЦІЇ ПЕРЕТВОРЕННЯ ТИПІВ
В Турбо Паскалі реалізовані наступні функції перетворення типів:
Назва | Призначення |
Chr | Повертає символ з заданим порядковим номером |
High | Повертає верхню границю діапазону значень аргументу |
Low | Повертає нижню границю діапазону значень аргументу |
Ord | Повертає порядковий номер значення порядкового типу |
Round | Округлює значення дійсного типу до найближчого цілого |
Trunk | відрізує значення дійсного типу до значення типу longint шляхом відкидання дробової частини |
ПРОЦЕДУРИ І ФУНКЦІЇ ДЛЯ ЗМІННИХ ПОРЯДКОВОГО ТИПУ
Дані процедури працюють з змінними порядкового типу:
Назва | Призначення |
Dec | зменшує значення змінної на задану величину |
Inc | збільшує значення змінної на задану величину |
Odd | перевіряє, чи являється аргумент непарним числом |
Pred | Повертає попередній елемент з списку значень порядкового типу |
Succ | Повертає наступний елемент зі списку значень порядкового типу |
МАТЕМАТИЧНІ ФУНКЦІЇ
Математичні функції використовуються для виконання математичних операцій. При компіляції в режимі використання співпроцесора чи його емуляції ($N+) такі функції повертають значення типу EXTENDED, інакше – REAL.
Назва | Призначення |
Abs | Повертає модуль аргументу |
ArcTan | Повертає арктангенс аргументу |
Cos | Повертає косинус аргументу |
Exp | Повертає результат піднесення е до степеня аргументу |
Frac | Повертає дробову частину аргументу |
Int | Повертає цілу частину аргументу |
Ln | Повертає натуральний логарифм аргументу |
Pi | Повертає значення числа пі (3.1415926535897932385) |
Sin | Повертає синус аргументу |
Sqr | Повертає результат піднесення аргументу до квадрату |
Sqrt | Повертає квадратний корінь аргументу |
Аргументи всіх функцій, крім Pi, яка не має аргументів, являються значеннями типу REAL.
ПРОЦЕДУРИ ТА ФУНКЦІЇ РОБОТИ З РЯДКАМИ
Дані процедури і функції роботи з рядками (на відмінну від процедур і функцій модуля string) використовують стандартні рядки мови Pascal.
Назва | Призначення |
Concat | виконує конкатенацію декількох рядків |
Copy | Повертає підрядок з рядка |
Delete | видаляє підрядок з рядка |
Insert | Вставляє підрядок у рядок |
Length | Повертає поточну довжину рядка |
Pos | Здійснює пошук підрядка в рядку |
Srt | перетворює числове значення аргументу в його рядкове представлення |
Val | перетворює рядковий аргумент в його числове представлення |
ПРОЦЕДУРИ ТА ФУНКЦІЇ УПРАВЛІННЯ ДИНАМІЧНОЮ ПАМ’ЯТТЮ
Ці процедури та функції використовуються для управління кучею (Heap-областю) – так називають частину вільної пам'яті, яка залишається при виконанні програми.
Назва | призначення |
Dispose | видаляє динамічну змінну |
Freemem | видаляє динамічну змінну заданого розміру |
Getmem | створює нову динамічну змінну заданого розміру |
MaxAvail | повертає розмір найбільшого неперервного вільного блоку кучі, відповідного розміру найбільшої динамічної змінної, яка може бути розміщена в кучі в час виклику функції |
Mark | фіксує поточний стан кучі |
MemAvail | повертає кількість вільних байтів кучі, доступних для використання |
New | створює нову динамічну змінну |
Release | Повертає кучу в стан, збережений процедурою mark |
ФУНКЦІЇ РОБОТИ З ВКАЗІВНИКАМИ І АДРЕСНІ ФУНКЦІЇ
Ці функції дозволяють отримувати адреси змінних, процедур і функцій програми, а також здійснюють доступ до вмісту ряду регістрів процесора.
Назва | призначення |
Addr | Повертає адресу заданого об’єкта |
Assigned | Визначає чи рівний вказівник чи процедурна змінна nil |
CSeg | Повертає поточне значення регістра cs |
DSeg | Повертає поточне значення регістра ds |
Ofs | Повертає зміщення заданого об’єкту |
Ptr | перетворює базову сегментну адресу і зміщення в значення типу pointer |
Seg | Повертає сегментну адресу заданого об’єкту |
SPtr | Повертає поточне значення регістра sp |
SSeg | Повертає поточне значення регістру ss |
ПРОЦЕДУРИ ВВОДУ-ВИВОДУ І РОБОТИ З ФАЙЛАМИ І КАТАЛОГАМИ
В модулі System визначені слідуючи процедури і функції управління вводом-виводом і роботи з файлами і каталогами:
Назва | Призначення |
Append | відкриває існуючий файл для доповнення |
Assign | Зв’язує ім’я зовнішнього файлу з файловою змінною |
BlockRead | читає один чи декілька записів з нетипізованого файлу |
BlockWrite | Записує один чи декілька записів в не типізований файл |
ChDir | встановлює поточний каталог |
Close | закриває поточний файл |
EOF | повертає ознаку кінця файлу |
EOLn | повертає ознаку кінця рядка текстового файлу |
Erase | Видаляє зовнішній файл |
FilePos | повертає поточну позицію в типізованому чи не типізованому файлі |
FileSize | повертає поточний розмір файлу; не використовується для текстових файлів |
Flush | звільняє буфер вводу-виводу текстового файлу |
GetDir | повертає поточний каталог вказаного диску |
IOResult | повертає ціле значення, яке визначає стан останньої виконаної операції вводу-виводу |
MkDir | Створює підкаталог |
Read | зчитує одне чи декілька значень з файлу в одну чи декілька змінних відповідно |
ReadLn | виконує ті ж дії, що і read, і переходить на початок слідую чого рядка текстового файла |
Rename | перейменування зовнішнього файлу |
Reset | відкриває існуючий файл для читання |
Rewrite | створює і одкриває новий файл |
RmDir | видаляє пустий каталог |
Seek | встановлює поточну позицію в типізованому чи не типізованому файлі на вказаний елемент; не використовується в текстових файлах |
SeekEOF | повертає ознаку кінця текстового файлу |
SeekEOLn | повертає ознаку кінця рядка текстового файлу |
SetTextBuf | призначає буфер вводу-виводу текстового файлу |
Truncate | обмежує розмір типізованого чи нетипізованого файлу поточною позицією у файлі |
Write | записує в текстовий файл одну чи декілька змінних |
WriteLn | виконує ті ж дії, що і write, а потім добавляє у файл маркер кінця рядка |
ІНШІ ПРОЦЕДУРИ І ФУНКЦІЇ
В модулі System визначене також велике число процедур і функцій, які не можна віднести не до однієї з груп, описаних мною раніше.
Назва | призначення |
Exclude | Видаляє елемент з множини |
FillChar | заповнює задану кількість послідовних байтів змінною вказаного значення (виразом будь-якого порядкового типу) |
Hi | повертає старший байт аргументу |
Include | включає елемент в множину |
Lo | повертає молодший байт аргументу |
Move | копіює задану кількість послідовних байтів з вихідної області пам'яті в назначену область |
ParamCount | повертає число параметрів, переданих в програму з командного рядка |
ParamStr | повертає вказаний параметр командного рядка |
Random | повертає псевдо-випадкове число |
Randomize | прив’язує стартове значення функції random до поточного системного часу |
SizeOf | повертає число байтів, які займає аргумент |
Swap | Міняє місцями старший і молодший байти двохбайтного аргументу |
TypeOf | повертає вказівник на таблицю віртуальних методів аргументу типу object |
UpCase | перетворює рядкову букву в прописну |
ЗМІННІ ТА КОНСТАНТИ МОДУЛЯ
Крім процедур і функцій в модулі System описаний ряд раніше оголошених змінних:
Змінна | Тип | Опис |
Input | TEXT | стандартна файлова змінна, яка визначає прилад вводу. По замовчуванню таким приладом являється клавіатура |
Output | TEXT | стандартна файлова змінна, яка визначає прилад виводу. По замовчуванню таким приладом являється екран |
SaveInt00 | POINTER | змінна для збереження вектора переривання $00 |
SaveInt02 | POINTER | Те ж, що $02 |
SaveInt1B | POINTER | Те ж, що $1B |
SaveInt21 | POINTER | Те ж, що $21 |
SaveInt23 | POINTER | Те ж, що $23 |
SaveInt24 | POINTER | Те ж, що $24 |
SaveInt34 | POINTER | Те ж, що $34 |
SaveInt35 | POINTER | Те ж, що $35 |
SaveInt36 | POINTER | Те ж, що $36 |
SaveInt37 | POINTER | Те ж, що $37 |
SaveInt38 | POINTER | Те ж, що $38 |
SaveInt39 | POINTER | Те ж, що $39 |
SaveInt3A | POINTER | Те ж, що $3A |
SaveInt3B | POINTER | Те ж, що $3B |
SaveInt3C | POINTER | Те ж, що $3C |
SaveInt3D | POINTER | Те ж, що $3D |
SaveInt3E | POINTER | Те ж, що $3E |
SaveInt3F | POINTER | Те ж, що $3F |
SaveInt75 | POINTER | Те ж, що $75 |
В момент завантаження середовища Turbo Pascal змінює значення 18 векторів переривання. В змінних SaveIntXX зберігається старі значення цих векторів.
Крім змінних, в модулі System також міститься ряд типізованих констант.
Константа | Тип | початкове значення | Опис |
ErrorAddr | POINTER | NIL | адреса помилки виконання |
ExitCode | INTEGER | 0 | код завершення |
ExitProc | POINTER | NIL | адреса процедури завершення |
FileMode | BYTE | 2 | Режим доступу до файлу |
FileList | POINTER | NIL | вказівник списку вільних блоків кучі |
FreeZero | POINTER | NIL | зарезервована |
HeapEnd | POINTER | NIL | вказівник на кінець кучі |
HeapError | POINTER | NIL | вказівник на функцію обробки помилок кучі |
HeapOrg | POINTER | NIL | вказівник на початок кучі |
HeapPtr | POINTER | NIL | вказівник кучі |
InOutRes | INTEGER | 0 | буфер результату операції вводу-виводу |
OvrCodeList | WORD | 1 | список оверлейних сегментів |
OvrDebugPtr | POINTER | NIL | вказівник відладчика оверлеєв |
OvrDosHandle | WORD | 0 | параметр зв’язку оверлеєв з DOS |
OvrEmsHandle | WORD | $FFFF | параметр зв’язку оверлеєв з EMS |
OvrHeapEnd | WORD | 0 | кінець оверлейного буфера |
OvrHeapOrg | WORD | 0 | початок оверлейного буферу |
OvrHeapPtr | WORD | 0 | вказівник оверлейного буферу |
OvrHeapSize | WORD | 0 | початковий розмір оверлейного буферу |
OvrLoadList | WORD | 0 | список завантажених оверлеєв |
PrefixSeg | WORD | 0 | префікс програмного сегменту |
RandSeed | LONGINT | 0 | параметр ініціалізації генератора випадкових чисел |
Seg0040 | WORD | $0040 | селектор сегменту $0040 |
SegA000 | WORD | $A000 | селектор сегменту $A000 |
SegB000 | WORD | $B000 | селектор сегменту $B000 |
SegB800 | WORD | $B800 | селектор сегменту $B800 |
SelectorInc | WORD | $1000 | перетворення селектора |
StackLimit | WORD | 0 | границя стеку |
Test8086 | BYTE | 0 | результат тестування процесора 80х86 |
Test8087 | BYTE | 0 | результат тестування процесора 80х87 |
Змінні OvrCodeList, OvrDebugPtr, OvrDosHandle, OvrEmsHandle, OvrHeapEnd, OvrHeapOrg, OvrHeapPtr, OvrHeapSize і OvrLoadList використовуються модулем Overlay для роботи адміністратора оверлеєв.
Змінні FreeList, HeapEnd, HeapError, HeapOrg, HeapPtr використовується адміністратором кучі для реалізації розподілу динамічної пам'яті.
Змінні ErrorAddr, ExitCode і ExitProc використовується процедурами виходу.
Змінна PrefixSeg являє собою змінну довжиною в слово, яка містить адресу префікса програмного сегменту (PSP), яка створюється при виконанні програми системою DOS.
Змінна InOutRes використовується вбудованими програмами вводу-виводу для збереження значення, яке повертається при наступному виклику функції IOResult.
В RandSeed зберігається початкове значення для вбудованого генератора випадкових чисел. Якщо присвоювати цій змінній певне значення, то функція Random буде генерувати задану послідовність випадкових чисел.
Змінна FileMode дозволяє змінити режим доступу до відкритих типізованих чи нетипізованих файлів (0 – тільки читання, 1 – тільки запис, 2 – читання і запис).
Змінна StackLimit містить мінімальне допустиме зміщення вказівника стеку.
В змінній Test8086 вноситься значення, яке визначає тип процесора (0 – процесор 8086, 1 – 80286, 2 – 80386 і вище).
В змінну Test8087 записується результат тестування співпроцесора, якщо він використовується в програмі (0 – немає співпроцесора, 1 – співпроцесор 8087, 2 – співпроцесор 80287, 3 – співпроцесор 80387 і вище).