14.2. Модуль syst.H
Бібліотечний модуль syst.h був створений одним з авторів посібника з метою підвищення продуктивності робіт при програмуванні задач в області обробки даних, комп'ютерного моделювання, задач, пов'язаних зі складними обчисленнями. Досить продуктивним є використання цього модуля при виконанні навчальних завдань, пов'язаних із самостійним програмуванням, і науково-дослідних робіт.
Файл syst.h містить у собі підключення найбільше часто використовуваних стандартних бібліотечних модулів, а також ряд макросів, визначень, функцій і процедур загального призначення. Він є простим і зручним засобом для проблемного програмування в області комп’ютерного моделювання, наукових і інженерних розрахунків. Він адаптований до роботи з потоками й бібліотекою шаблонів STL . Призначений він для роботи з компіляторами, сумісними зі стандартними бібліотеками ANSI/C++, у тому числі для роботи в середовищі Borland C++ 5.x, Borland C++ Builder.
Файл syst.h не має свого файлу реалізації, він містить повні визначення функцій і процедур, а не тільки їхні прототипи. Модуль syst.h являє непоганий зразок для створення власних модулів. Уважно його вивчивши, Ви можете за цим зразком створювати свої власні бібліотечні модулі, які можуть суттєво підвищити продуктивність програмування у Вашій предметній області.
Для роботи з модулем syst.h необхідно провести певну підготовчу роботу. Насамперед необхідно файл syst.h розмістити у системному підкаталозі ..\ INCLUDE. Якщо Ви плануєте використати функцій мікросекундного таймера runstimer і mcstimer, необхідно в підкаталог ..\ BIN помістити файл tasm32.exe з пакета програмування на асемблері TASM 5.0. Після виконання цих нескладних маніпуляцій модуль syst.h буде готовий до роботи.
Підключається до програми модуль syst.h звичайною директивою
#include <syst.h>
Цю директиву можна записувати й у такий спосіб:
#include <syst>
Для того, щоб не підбурювати використовувану оболонку до виведення деяких непотрібних попереджень, бажано встановити наступні опції:
Options Project Compiler Code Generation unsigned characters ,
Options Project Compiler Precompiled Headers Use but do not generate .
Далі в тексті, при описі процедур і функцій модуля syst.h, слово Type буде позначати деякий довільний тип.
Нижче приводиться фрагмент тексту модуля syst.h, завданням якого є підключення декількох стандартних бібліотечних модулів (h-файлів), які використовуються найбільш часто при виконанні розрахунків. Короткі коментарі пояснюють призначення кожного з підключаємих файлів.
#include <dos.h> // системні функції
#include <stdio.h> // функції введення/виведення
#include <stdlib.h> // стандартні функції
#include <conio.h> // консольне введення/виведення
#include <time.h> // операції з часом
#include <math.h> // математичні функції
#include <string> // робота з рядками STL
#include <fstream.h> // робота з потоками
using namespace std; // розширює простір імен для робо- // ти з бібліотекою шаблонів STL
Модуль syst.h містить ряд макровизначень #define. Приведемо найбільш важливі з них.
pi - константа . Це ім'я діє поряд із системним ім'ям цієї константи M_PI, яка визначена в стандартному заголовковому файлі math.h . Значення цієї константи (також, як і інших) представлено з точністю, що відповідає дійсному типу long double (це приблизно 21 десяткова цифра).
sqr(x) - макрос-функція для піднесення числа у квадрат;
cub(x) - така ж макрос-функція для піднесення в куб;
ln(x) - більш звичне ім'я функції - натурального логарифма (системне ім'я log(x));
lg(x) - логарифм десятковий (те ж, що й log10(x));
tg(x) - тангенс (те ж, що й tan(x));
pause - макровизначення, може використовуватися для створення паузи до натискання довільної клавіші. Пауза створюється шляхом виклику функції getkey() з модуля syst.h . Наприклад, оператор
pause;
створить паузу до натискання будь-якої клавіші. Цей оператор часто використовують при запуску програм з інструментальної оболонки для утримання робочого екрану після завершення роботи програми. Це є зручним при налагодженні програм.
За допомогою оператора typedef визначені більш короткі імена (byte, word, ulong) для цілих беззнакових типів:
typedef unsigned char byte;
typedef unsigned short word;
typedef unsigned int uint;
typedef unsigned long ulong;
Модуль syst.h містить визначення декількох глобальних змінних та констант:
double CPU_Frequency = 2600.0; // частота процесора в МГц
Значення цієї змінної використовується функціями мікросекундного таймера.
const ulong RAND_MAXL = 0x80000000;
Ця константа використовується для генерації випадкових чисел (функції frand).
clock_t START_TIME;
Системна змінна, використовуються функціями простого таймера (runtimer, timer).
Yandex.RTB R-A-252273-3
- Запоріжжя знту 2008
- Глава 1
- 1.1. Історія та сучасність
- 1.2. Загальна структура програми. Два простих приклади
- Void main()
- Void main()
- Глава 2 Об’єкти та ідентифікатори
- 2.1. Об'єкти та їхні атрибути
- 2.2. Алфавіт мови та лексеми
- 2.3. Ідентифікатори
- Void main() // (рівень 0)
- 2.4. Вправи
- Глава 3
- 3.1. Поняття виразу. Вирази Lvalue та Rvalue
- 3.2. Операції. Пріоритети та асоціативність
- Void main()
- Void main()
- Void main()
- 3.3. Вправи
- Глава 4
- 4.1. Види операторів
- 4.2. Стандартні оператори
- If (лв) опер_1; [ else опер_2; ]
- Void main()
- If (лв1) опер_1;
- Void main()
- Void main()
- Void main()
- Void main()
- Void main()
- 4.3. Оголошення змінних та ініціалізація
- Int number(125);
- Int number(125);
- 4.4. Константи і константні об'єкти
- Void main()
- 4.5. Вправи
- Глава 5
- 5.1. Типи та їхні різновиди
- 5.2. Службове слово void
- Int a[small], a[large];
- 5.4. Перетворення типів
- 5.5. Вправи
- Void main()
- Глава 6 покажчики і посилання
- 6.1. Покажчики
- Void main()
- Void strcpy(char* s1, char* s2)
- Void* pv;
- 6.2. Посилання
- 6.3 Вправи
- Void main()
- Глава 7 масиви і динамічні об'єкти
- 7.1. Масиви
- Void main()
- 7.2. Рядки символів
- Int strlen(char* s);
- Int strcmp(char* s1, char* s2);
- Int len(char *s)
- 7.3. Динамічні об'єкти й масиви
- Void main()
- Void main()
- Void main()
- Void main()
- 7.4. Вправи
- Глава 8 функції та процедури
- 8.1. Загальні відомості
- Void main()
- Void c_mul(double a_re, double a_im,
- Void swap1(long *px, long *py)
- Void swap2(long &X, long &y)
- Void main()
- Int fun(int, float*, double&);
- Void fun(int n)
- Void main()
- Void swap(int& a, int& b)
- 8.2. Функція main
- Void або int main(int n, char** p, char** q);
- Void main(int n, char** p, char** q)
- 8.3. Функції зі змінною кількістю параметрів
- Void main()
- 8.4. Покажчики на функції
- Int (*pf[3])(float X, float y);
- Void main()
- 8.5. Функції з шаблонами
- Void swap(string& s1, string& s2)
- Void main()
- Inline t abs(t X)
- Void create(type* &a, int n)
- Void del(type* &a)
- 8.6. Вправи
- Глава 9 консольне вВедення / вИведення
- 9.1. Засоби бібліотеки с
- Void main()
- Void main()
- Void main()
- 9.2. Використання потоків
- Void main()
- Void main()
- 9.3. Вправи
- Глава 10 операції з файлами
- 10.1. Види файлів і режими роботи з ними
- 10.2. Бібліотека с
- Void fprint(file* f, &X)
- Void rewind(file* f);
- Void main()
- Void main(int n, char** f)
- Void main(int n, char** fnam)
- 10.3. Застосування потоків
- Ifstream fin;
- Void open(char* filename, int mode, int access);
- Ifstream fin("a.Dat");
- Void main()
- Ifstream fa("a.Dat");
- If (fa.Eof()) break;
- Void main(int n, char** fnam)
- Void main(int n, char** f)
- Ifstream fa(f[1]);
- Void main(int n, char** fnam)
- Void main()
- Ifstream in("example.Cpp");
- Void main()
- Ifstream in("name.Dat",ios::binary);
- Void main()
- Ifstream fa("a.Dat");
- Int descr(fstr& f)
- Void main()
- Ifstream ina(infa);
- Ifstream inb(infb);
- 10.4. Вправи
- Глава 11 компіляція програми. Директиви і макроси
- 11.1. Фази компіляції
- 11.2. Директиви режиму компіляції
- 11.3. Директиви препроцесора
- 11.4. Вправи
- Глава 12 змішане програмування. Використання ассемблерного коду
- 12.1. Засоби використання асемблера
- Void main()
- 12.2. Вправи
- Глава 13 програмна реалізація алгоритмів
- 13.1. Алгоритм Евкліда пошуку найбільшого загального дільника двох цілих чисел
- 13.2. Обчислення факторіала
- 13.3. Пошук простих чисел. Решето Ератосфена
- Void main()
- 13.4. Генерація підмножин
- Void main()
- 13.5. Сортування масивів
- Void main()
- Void main()
- Int flag;
- 13.6. Пошук у масиві
- Void main()
- Void main()
- 13.7. Операції з матрицями
- Void ObrMatr (double** a, double** b, unsigned n )
- Void Minv(double** a, double** b, unsigned n )
- Void Gauss(double** a, double* b, double* X, unsigned n)
- 13.8. Лінійна інтерполяція даних
- 13.9. Лінійна апроксимація
- Void linappr(int n, double* X, double* y, double& a0, double& a1)
- 13.10. Розв’язування нелінійних рівнянь
- Void Bisec(funx f, double a, double b, double eps, double& X)
- Void Bisec(funx f, double a, double b,
- Void main()
- 13.11. Пошук заданої послідовності символів у файлі
- Void push(char* s, int n, char X)
- Void main()
- 13.12. Вправи
- Глава 14 створення й використання бібліотечних модулів. Модуль syst.H
- 14.1. Створення бібліотечних модулів
- 14.2. Модуль syst.H
- 14.3. Системні функції та макрооперації
- Void runtimer();
- Void main()
- Void runstimer();
- Void main()
- Void swp(Type& a, Type& b);
- Void main()
- Int cmp(int nx, int ny, Type* X, Type* y);
- Void errhalt(bool ex, char* mes);
- Void errhalt(bool ex, char* mes, file* f);
- 14.4. Операції введення/виведення
- Void flushkey();
- Void main()
- Int getyes();
- Void main()
- Void main()
- Int weight(type X);
- Void main()
- Int hamdist(Type a, Type b)
- 14.6. Спеціальні класи. Клас Spline для інтерполяції даних сплайнами
- Void main()
- 14.7. Вправи
- Глава 15 графІчне виведення. Модуль rgraph.H
- 15.1. Модуль rgraph.H. Загальні відомості
- 15.2. Глобальні змінні й константи
- 15.3. Класи й покажчики на функції
- 15.4. Функції й процедури класів
- Void main()
- Void main()
- Void main()
- Void main()
- 15.7. Вправи
- Глава 16 Життєвий цикл програмного продукту. Питання стилю запису програм
- 16.1. Життєвий цикл програми
- Int n, alfa, col;
- Void draw();
- Void rotate(int delta);
- 16.3. Вправи
- Література