Робота з датами та часом (модуль Dos)

Кожен комп'ютер має годинник та календар. Кожен користувач може запитати комп'ютера, скільки часу і яке сьогодні число, а за бажання і підправити те й інше. Для роботи з часом і датою на Паскалі необхідний новий для вас модуль DOS . Ми розглянемо чотири процедури цього модуля, які працюють з часом та датою:

Щоб скористатися цими процедурами, ви повинні придумати імена змінним, що означає дату та час:

God рік (з 1980 до 2099)

Den день місяця

Den_Ned номер дня тижня (від 0 (неділя) до 6 (субота))

Sotki соті частки секунди

Всі ці змінні повинні бути цілими, проте не типу Integer, до якого ви звикли, а типуWord. Такою є вимога згаданих процедур. Змінна типу Word має бути цілим числом з діапазону 0 – 65535.

Ось програма, яка дізнається біля комп'ютера, яке сьогодні число і скільки часу:

VARGod, Mes, Den, Den_Ned, Chas, Min, Sec, Sotki : Word;

GetDate(God, Mes, Den, Den_Ned);

WriteLn('Сьогодні', Den, '.', Mes, '', God, 'року');

WriteLn('Зараз', ​​Chas, 'год.', Min, 'хв. і ',Sec, 'сек.')

Можливо, вас не задовольнить роботаGetTimeу цій програмі. Спробуйте зробити визначник швидкості реакції, не пов'язуючись із процедурами модуля DOS. Наприклад, засікайте по секундоміру, скільки часу комп'ютер виконує порожній циклfor i:=1 to 10000000 do;і створіть на цій основі свою одиницю часу.

А ось як встановити дату та час:

SetDate(1997, 5, 22)-встановити дату 22 травня 1997 року

SetTime(23, 58, 32, 93)-встановити час 23 години 58 хв 32 сек і 93 сотих

Майте на увазі, що ці процедури встановлюють дату та час не тільки дляПаскаля, а всього комп'ютера. Будьте обережні, бо файли, збережені вами, матимуть невірний атрибут часу.

Завдання 134 «Визначник дня тижня»:Ви вводите будь-яку дату. Комп'ютер повинен визначити день тижня та надрукувати його у вигляді "понеділок", "вівторок" і т.д. При цьому ви не повинні зіпсувати календар, тобто після того, як ваша програма завершить роботу, календар комп'ютера повинен показувати правильну дату, а не ту, що ви запровадили.

Нерозглянуті можливості Паскаля

Ви дізналися про Паскала найголовніше і найпоширеніше. Однак це становить, дай боже, одну третину всіх багатств Паскаля. Решта 2/3 не викладені мною, оскільки вони менш часто вживаються, або занадто складні для вступного курсу. Ще одна причина - багато з них мають справу з низькорівневими та чутливими ресурсами комп'ютера, а сучасні комп'ютери та операційні системи мають тенденцію забороняти програмісту пряме звернення до цих ресурсів. Тому я обмежусь коротким оглядом цих можливостей. А тих, хто цікавиться, я відсилаю до книги Полякова, вказаної в списку літератури.

Модуль CRT.Подібно до модуля Graph, що організує графічні вікна, модуль CRT може організовуватитекстові вікна, може змінювати кількість літер у рядку з 80 на 40, розсувати і зрушувати текстові рядки, змінювати яскравість тексту або робити миготливим.

Модуль Overlay.Якщо в результаті компіляції вашої довгої паскалівської програми програма машинною мовою виходить дуже велика, вона може і не вміститися в оперативній пам'яті комп'ютера, а значить і не зможе виконатися. Модуль Overlay дозволяє відкомпілювати вашу програму частинами, кожну частину записавши в окремий файл. Тепер під час виконаннявідкомпільованої програми, якщо пам'ять забита, у ній не завантажуються ті частини програми, які на даний момент не потрібні, а коли в них виникає необхідність, з пам'яті вивантажуються, щоб звільнити їм місце, що відпрацювали частини.

Файли.Крім текстових файлів Паскаль розрізняє ще два типи файлів: типізовані та безтипові. Типізований файл Паскаль розглядає, як ланцюжок даних певного типу (наприклад, чисел типу Integer чи записів заданої структури). Безтиповий файл Паскаль розглядає, як довгий ланцюжок бітів, призначений для введення у певне місце оперативної пам'яті, або навпаки – отриманий в результаті запису певної області оперативної пам'яті на диск.

При роботі з файлами та каталогами Паскаль дозволяє:

створювати, перейменовувати та знищувати файли

створювати та знищувати каталоги

визначати поточний каталог

встановлювати поточний каталог

Модуль DOSзгідно зі своєю назвою дозволяє програмісту використовувати в паскалівській програмі багато можливостей та команди операційної системи MS-DOS, а саме:

визначати розмір дисків та вільного місця на диску

визначати їх атрибути

аналізувати повне ім'я файлу (доріжку)

працювати з перериваннями DOS

організовувати субпроцеси та резидентні програми

Ключі компіляції.У 4.2 ми вже розглядали ключ компіляції , який дозволяв включати в програму як фрагмент програмний текст з іншого файлу. Для інших цілей існують інші ключі компіляції, які називаються так тому, що використовуються Паскалем під час компіляції для налаштування роботи комп'ютера з програмою та налаштування режиму компіляції. Ці ключі можна дізнатися по конструкції,де замість стоїть латинська буква.

Процедури та функції.Паскаль дозволяє використовувати процедури та функції, написані мовою Асемблера та попередньо відкомпільовані.

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

Математичні можливості Паскаля включають дії над двійковим поданням даних.

Об'єкти.Введення процедур у програмування різко підвищило надійність створюваних великих програм та їх доступ до огляду, зробило сам процес програмування зручнішим. Наступним кроком на шляху вдосконалення програмування стало введення об'єктів. Об'єкт - це синтез даних і процедур, які ці дані обробляють. Структура об'єкта така ж, як і в запису (record), тільки до полів даних є поля для процедур і функцій. Ось приклад запису типу об'єкта:

Об'єкти у програмуванні нагадують об'єкти реального світу. Наприклад, щоб описати стінний годинник, ми повинні описати сукупність їх складових частин (шестерні, маятник та інше – загалом, «дані») плюс сукупність процесів взаємодії цих частин (як хитається маятник, як шестірня чіпляє шестірню і так далі – загалом) процедури та функції»).

Типовий приклад об'єкта у програмуванні – вікно у програмі Windows. Щоб змусити вікно на екрані функціонувати, як треба, програмісту довелося описати його розмір, колір, товщину рамки та інше (дані) плюс процеси перетягування його екраном, зміни розміру іінше (процедури та функції).

Низькорівневе програмування.Найефективніші програми пишуться мовою низького рівняAssembler, але цією мовою незручно створювати великі програми. Професійний програміст знає, яка ділянка його паскалівської програми найменш ефективна (наприклад, виконується повільно). Він може записати цю ділянку на Асемблері та вставити в паскалівську програму. Більше того, він може вставити в паскалівську програму ділянку машинною мовою.