Тема: Програмування. Основні етапи розробки прикладних програм

Вид материалаДокументы
Подобный материал:
1   ...   6   7   8   9   10   11   12   13   14
ТЕМА: СТАНДАРТНІ МОДУЛІ

Модуль – це бібліотека, яка містить константи, опис типів даних, змінні, процедури і функції. Кожний модуль транслюється відмінно і може використовуватися в програмі користувача. Турбо Паскаль включає 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 і вище).