Подбельский учебник с++ / Подбельский - главы 10-12
.pdf496
Имяконстанты
DBL DIG
DBL_EPSILON
DBL_MANT_DIG
DBL MAX
DBL_MAX_EXP
DBL MAX 10 EXP
DBL_MIN
DBL_MIN_EXP
DBL_MIN_10_EXP
Язык Си++
Таблица П2.2 (продолжение)
Стандартное Смысл
значение
10Количество верных десятичных цифр для типа double
1E-9 |
Минимальное х, такое, что 1.0 + х * 1.0, где |
|
х принадлежит типу double |
|
Количество цифр по основанию |
|
FLT_RADIX в мантиссе для чисел типа |
|
double |
1E+37 Максимальное число с плавающей точкой
|
типа double |
|
Максимальное п, такое, что FLT_RADIX" - |
|
I представимо в виде числа типа double |
+37 |
Максимальное целое л, такое, что 10" пред- |
|
ставимо как double |
1E-37 |
Минимальное нормализованное число с |
|
плавающей точкой типа double |
|
Минимальное л, такое, что 10" представимо |
|
в виде нормализованного числа типа double |
- 37 |
Минимальное отрицательное целое л, такое, |
|
что 10" - в области определения чисел типа |
|
double |
ПРИЛОЖЕНИЕ 3
|
СТАНДАРТНАЯ БИБЛИОТЕКА ФУНКЦИЙ ЯЗЫКА СИ |
|
|
|
Таблица ПЗ. 1 |
|
|
Математические функции - файл math. h |
Функция |
Прототип и краткое описание действий |
|
|
|
|
abs |
int abs(int i); |
|
|
Возвращает абсолютное значение целого аргумента i. |
|
acos |
double acos(double x ) ; |
|
|
Функция арккосинуса. Значение аргумента должно находиться в |
|
|
диапазоне от-1 до +1. |
|
asin |
double asin(double ж); |
|
|
Функция арксинуса. Значение аргумента должно находиться в |
|
|
диапазоне от -1 до +1. |
|
atan |
double atan(double х); |
|
|
Функция арктангенса. |
|
atan2 |
double atan2(double у, double х); |
|
|
Функция арктангенса от значения у/х. |
|
cabs |
double cabs(struct complex znum); |
|
|
Вычисляет абсолютное значение комплексного числа znum. |
|
|
Определение структуры (типа) complex - в файле math. h. |
|
cos |
double cos(double x) ; |
|
|
Функция косинуса. Угол (аргумент) задается в радианах. |
|
cosh |
double cosh(double x); |
|
|
Возвращает значение гиперболического косинуса х. |
|
exp |
double exp(double x); |
|
|
Вычисляет значение е' (экспоненциальная функция). |
|
fabs |
double |
fabs(double x); |
|
Возвращает абсолютное значение вещественного аргумента х |
|
|
двойной точности. |
|
floor |
double |
floor(double x); |
|
Находит наибольшее целое, не превышающее значения х. Воз- |
|
|
вращает его в форме double. |
32-
498 |
Язык Си++ |
|
Таблица ПЗ. 1 (продолжение) |
Функция |
Прототипикраткоеописаниедействий |
fraod |
double fmod(double x, double y) ; |
|
Возвращает остаток от деления нацело х на у. |
hypot |
double hypot(double х, double у ) ; |
|
Вычисляет гипотенузу х прямоугольного треугольника по значе- |
|
ниям катетов х, у (г2 = х1 + у2) |
labs |
long labs(long x); |
|
Возвращает абсолютное значение целого аргумента long x. |
Idexp |
double Idexp(double v, int e) ; |
|
Возвращаетзначениевыраженияv•2". |
log |
double log(double x); |
|
Возвращает значение натурального логарифма (In x). |
log 10 |
double loglO(double x); |
|
Возвращает значениедесятичного логарифма (logio x). |
poly |
double poly(double x, int n, double с[ ] ) ; |
|
Вычисляет значение полинома: |
|
c[n]xn + c[n - ljx"" 1 + .. . + c [ l ] x + c[0] |
pow |
double pow(double x, double y); |
|
Возвращает значение xY, т.е. х в степени у. |
powlO |
double powlO(int p); |
|
Возвращает значение 1(F. |
sin |
double sin(double x); |
|
Функция синуса. Угол (аргумент) задается в радианах. |
sinh |
double sinh(double x); |
|
Возвращает значение гиперболического синуса для х. |
sqrt |
double sqrt(double x); |
|
Возвращает положительное значение квадратного корня vx . |
tan |
double tan(double x); |
|
Функция тангенса. Угол (аргумент) задается в радианах. |
tanh |
double tanh(double x); |
|
Возвращает значение гиперболического тангенса для х. |
Приложение 3. Стандартная библиотека функций языка Си |
499 |
|||
|
|
|
Таблица ПЗ. 2 |
|
Функции проверки и преобразования символов - файл ctype. h |
|
|||
Функция |
|
Прототип и краткое описание действий |
|
|
isalnum |
i n t |
isalnum(int |
с ) ; |
|
|
Дает значение не нуль, если с - код буквы или цифры (А + Z, а + |
|||
|
z, 0 + 9), и нуль - в противном случае. |
|
||
isalpha |
i n t |
isalpha(in t |
с ) ; |
|
|
Дает значение не нуль, если с - код буквы (А + Z, а + г), и нуль - |
|||
|
в противном случае. |
|
||
isascii |
i n t |
i s a s c i i ( i n t |
с ) ; |
|
|
Дает значение не нуль, если с есть код ASCII, т.е. принимает зна- |
|||
|
чение от 0 до 127, в противном случае - нуль. |
|
||
iscntrl |
i n t |
i s c n t r l ( i n t |
с ) ; |
|
|
Дает значение не нуль, если с - управляющий символ с кодами |
|
||
|
0x00 + OxOlF или 0x7F, и нуль - в противном случае. |
|
||
isdigit |
i n t |
i s d i g i t ( i n t |
с ) ; |
|
|
Дает значение не нуль, если с - цифра (0 + 9) в коде ASCII, и нуль |
|||
|
- в противном случае. |
|
||
isgraph |
in t |
isgraph(int |
с ) ; |
|
|
Дает значение не нуль, если с - видимый (изображаемый) символ |
|||
|
с кодом (0x21 + 0х7Е), и нуль - в противном случае. |
|
||
islower |
i n t |
islower(in t |
с ) ; |
|
|
Дает значение не нуль, если с - код символа на нижнем регистре |
|||
|
(а + z), и нуль - в противном случае. |
|
||
isprint |
int |
isprint(int |
с) ; |
|
|
Дает значение не нуль.если с - печатный символ с кодом (0x20 + |
|||
|
0х7Е), и нуль - в противном случае. |
|
||
ispunct |
int ispunct (i^.c с) ; |
|
||
|
Дает значение не нуль, если с - символ-разделитель |
|
||
|
(соответствует iscntrl или isspase), и нуль - в противном |
|
||
|
случае. |
|
|
|
isspace |
int |
isspace(int с); |
|
|
|
Дает значение не нуль, если с - обобщенный пробел: пробел, |
|
символ табуляции, символ новой строки или новой страницы, символ возврата каретки (0x09 + OxOD, 0x20), и нуль - в противном случае. .
32*
500 |
Язык Си++ |
|
Таблица П3.2 (продолжение) |
Функция |
Прототипикраткоеописаниедействий |
isupper |
i n t iaupper(int c ) ; |
|
Даег значение не нул?^, если с - код символа на верхнем регистре |
|
(А + Z), и нуль - в противном случае. |
isxdigit |
int iaxdigit(int с); |
|
Дает значение не нуль, если с - код шестнадцатеричной цифры (0 |
|
+ 9, А + F, а + f), и нуль - в противном случае. |
toascii |
in t t o a e o i i ( i n t с ) ; |
|
Преобразует целое число с в символ кода ASCII, обнуляя асе |
|
биты, кроме младших семи. Результат от 0 до 127. |
tolower |
i n t tolower(int с ) ; |
|
Преобразует код буквы с к нижнему регистру, остальные коды не |
|
изменяются. |
toupper |
in t toupper(int с ) ; |
|
Преобразует код буквы с к верхнему регистру, остальные коды |
|
не изменяются. |
Таблица П3.3
Функции ввода-вывода для стандартных файлов - файл • tdio . h
Функция Прототипикраткоеописаниедействий
getch |
in t getch(void); |
|
Считывает один символ с клавиатуры без отображения на экра- |
|
не. |
getchar |
i n t getchar(void); |
|
Считывает очередной символ из стандартного входного файла |
|
(stdin). |
gets |
char *gets(char *s) ; |
|
Считывает строку а из стандартного входного файла (stdin). |
printf |
in t printf(char «format [, argument, . . . ] ) ; |
|
Функция форматированного вывода в файл stdout. |
putchar |
i n t putchar(int с ) ; |
|
Записывает символ с в стандартный файл вывода (stdout). |
Приложение 3. Стандартная библиотека функций языка Си |
501 |
||
|
Таблица П3.3 |
(продолжение) |
|
Функция |
Прототипикраткоеописаниедействий |
||
puts |
in t put*(conat char ••); |
|
|
|
Записывает строку а в стандартный файл вывода (stdout). |
||
scanf |
in t acanf(char 'format[, argument, |
. . . ] ) ; |
|
|
Функция форматированного ввода га файла stdin. |
|
|
sprintf |
in t aprintf(char *a,char *format[, |
argument, |
|
|
...]); |
|
|
|
Функция форматированной записи в строку а. |
|
|
sscanf |
int secanf(char •в,char *format [, address, |
||
|
...]); |
|
|
|
Функция форматированного чтения из строки а. |
|
|
ungetch |
in t ungetch(int с ) ; |
|
|
|
Возвращает символ с в стандартный файл ввода stdin, заставляя |
||
|
его быть следующим считываемым символом. |
|
Таблица П3.4
Функции для работы со строками - файлы atring. h, atdlib. h
Прототипикраткоеописаниедействий
double atof(char *etr);
Преобразует строку atr в вещественное число типа double.
int atoi(char *atr);
Преобразует строку atr в десятичное целое число.
long atol(char *atr);
Преобразует строку atr в длинное десятичное целое число.
char *itoa(int v, char *atr, int baz);
Преобразует целое v в строку atr. При изображении числа используется основание baz (2 < baz < 36). Для отрицательного числа и baz = 10 первый символ - "минус" (-).
char +ltoa(long v, char *str, int baz); Преобразует длинное целое v в строку atr. При изображении числа используется основание baz (2 < baz < 36).
char *вtreat(char +ap, char *si);
Приписывает строку ai к строке ар (конкатенация строк).
502 |
Язык Си++ |
|
Таблица П3.4 (продолжение) |
Функция |
Прототип и краткое описание действий |
strchr |
char *strchr(char *str, int с); |
|
Ищет в строке str первое вхождение символа с. |
strcmp |
int strcmp(char *strl, char *str2); |
|
Сравнивает строки etrl и str2. Результат отрицателен, если |
|
strl < str2; равен нулю, если atrl = str2 и положителен, |
|
если strI > str2 (сравнение беззнаковое). |
strcpy |
char *strcpy(char *sp, char *si); |
|
Копирует байты строки si в строку ер. |
strcspn |
int strcspn(char *strl, char *str2); |
|
Определяет длину первого сегмента строки strl, содержащего |
|
символы, не входящие во множество символов строки str2. |
strdup |
char *strdup(const char *str); |
|
Выделяет память и переносит в нее копию строки str. |
strlen |
unsigned strlen(char *str); |
|
Вычисляет длину строки str. |
strlwr |
char *strlwr(char *str); |
|
Преобразует буквы верхнего регистра в строке в соответствую- |
|
щие буквы нижнего регистра. |
strncat |
char *strncat(char *sp, char *si, int kol); |
|
Приписывает kol символов строки si к строке sp |
|
(конкатенация). |
strncmp |
int strncrap(char *strl, char *str2, int kol); |
|
Сравнивает части строк strl и str2, причем рассматриваются |
|
первые kol символов. Результат отрицателен, если strl < |
|
str2; равен нулю, если strl = str2 и положителен, если |
|
strl > str2. |
strncpy |
char *strncpy(char *sp, char *si, int kol); |
|
Копирует kol символов строки si в строку sp ("хвост" отбрасы- |
|
вается или дополняется пробелами). |
strnicmp |
char *stricmp(char *strl, char *str2, int kol) ; |
|
Сравнивает не более kol символов строки strl и строки str2, |
|
не делая различия регистров (см. функцию strncmp ()). |
Приложение 3. Стандартная библиотека функций языка Си |
503 |
||
|
Таблица 173.4 (продолжение) |
||
Функция |
Прототипикраткоеописаниедействий |
|
|
strnset |
char *strnset(char *str, int c, int kol); |
|
|
|
Заменяет первые kol символов строки str символом с. |
||
strpbrk |
char *strpbrk(char *strl, char *str2); |
|
|
|
Ищет в строке strl первое появление любого из множества сим- |
||
|
волов, входящих в строку str2. |
|
|
strrchr |
char *strrchr(char *str, int c) ; |
|
|
|
Ищет в строке str последнее вхождение символа с. |
|
|
strset |
int street(char *str, int с); |
|
|
|
Заполняет строку str заданным символом с. |
|
|
strspn |
int strspn(char *strl, char *str2); |
|
|
|
Определяет длину первого сегмента строки strl, содержащего |
||
|
только символы, из множества символов строки str2. |
||
strstr |
char «strstr(const char *strl, const char |
*str2); |
|
Ищет в строке strl подстроки str2. Возвращает указатель на |
|||
|
|||
|
тот элемент в строке strl, с которого начинается подстрока |
||
|
str2. |
|
|
strtod |
double *etrtod(const char *str, char **endptr); |
||
Преобразует символьную строку str в число двойной точности. |
|||
|
|||
|
Если endptr не равен NULL, то *endptr возвращается как указа- |
||
|
тель на символ, при достижении которого прекращено чтение |
||
|
строки str. |
|
|
strtok |
char *strtok(char *strl, const char *str2); |
||
|
Ищет в строке strl лексемы, выделенные символами из второй |
||
|
строки. |
|
|
strtol |
long *strtol(const char *str, char **endptr, int |
||
|
baz) ; |
|
|
|
Преобразует символьную строку str к значению "длинное чис- |
||
|
ло" с основанием baz (2 < baz < 36). Если endptr не равен NULL, |
||
|
то •endptr возвращается как указатель на символ, при дости- |
||
|
жении которого прекращено чтение строки str. |
|
|
strupr |
char *strupr(char *str); |
|
|
|
Преобразует буквы нижнего регистра в строке str в буквы верх- |
||
|
него регистра. |
|
|
ultoa |
char *ultoa(unsigned long v, char *str, int baz); |
||
|
Преобразует беззнаковое длинное целое v в строку str. |
504 |
|
|
|
Язык Си++ |
||
|
|
|
|
|
|
Таблица ПЗ. 5 |
|
Функции для выделения и освобождения памяти — |
|||||
|
|
|
|
файлы s t d l i b . h, a l l o c . h |
||
Функция |
|
|
|
Прототип икраткоеописаниедействий |
||
calloc |
void |
*calloc(unsigned n, |
unsigned m) ; |
|||
|
Возвращает указатель на начало области динамически распреде- |
|||||
|
ленной памяти для размещения п элементов по ш байт каждый. |
|||||
|
При неудачном завершении возвращает значение NULL. |
|||||
coreleft |
unsigned |
coreleft (void) |
; |
- для моделей памяти tiny, small, |
||
|
medium. |
|
|
|
|
|
|
unsigned |
long coreleft (void) ; -для других моделей па- |
||||
|
мяти. |
|
|
|
|
|
|
Возвращает значение объема неиспользованной памяти, функция |
|||||
|
уникальная для DOS, где приняты упомянутые модели памяти. |
|||||
free |
void free (void *Ы) ; |
|
|
|||
|
Освобождает ранее выделенный блок динамически распределяе- |
|||||
|
мой памяти с адресом первого байта Ы. |
|||||
mailoc |
void *malloc(unsigned s ) ; |
|||||
|
Возвращает указатель на блок динамически распределяемой па- |
|||||
|
мяти длиной s байт. При неудачном завершении возвращает зна- |
|||||
|
чениеNULL. |
|
|
|
||
realloc |
void |
*realloc(void *bl, |
|
unsigned n s ) ; |
||
|
Изменяет размер ранее вьщеленнои динамической памяти с адре- |
|||||
|
сом начала Ы до размера ns байт.Если Ы равен NULL, то функ- |
|||||
|
ция выполняется как mailoc (). |
|||||
|
|
|
|
|
|
Таблица ПЗ. 6 |
Функции для работы с терминалом в текстовом режиме - файл c o n i o . h |
||||||
Функция |
|
|
Прототип и краткое описание действий |
|||
clreol |
|
void |
clreol(void); |
|
||
|
|
Стирает символы от позиции курсора до конца строки в |
||||
|
|
текстовом окне. |
|
|
||
clrscr |
|
void |
clrscr(void); |
|
||
|
|
Очищает экран. |
|
|
||
cgets |
|
char |
*cgets(char |
*str) ; |
||
|
|
Выводит на экран строку str. |
Приложение 3. Стандартная библиотека функций языка Си |
505 |
||||||
|
|
|
|
Таблица П3.6 (продолжение) |
|||
Функция |
|
Прототипикраткоеописаниедействий |
|
||||
cprintf |
i n t |
c p r i n t f |
( c h a r |
* f o r m a t [ , |
a r g u m e n t , |
. . . ] ) ; |
|
|
Выводит форматированную строку-в текстовое окно, соз- |
||||||
|
данное функцией window () . |
|
|
|
|||
cputs |
int cputs(char *str); |
|
|
|
|||
|
Считывает в символьный массив s t r строку с клавиатуры |
||||||
|
(консоли). |
|
|
|
|
|
|
cscanf |
i n t |
c s c a n f |
( c h a r * f o r m a t |
[ , |
a d d r e s s , . . . ] ) ; |
||
|
Функции ввода-вывода информации, которые используют- |
||||||
|
ся при работе с терминалом в текстовом режиме |
|
|||||
delline |
void delline(void); |
|
|
|
|||
|
Удаляет строку в текстовом окне (где находится курсор). |
||||||
gotoxy |
v o i d |
g o t o x y ( i n t x , |
i n t |
у ) ; |
|
|
|
|
Перемещает курсор в позицию текстового окна с коорди- |
||||||
|
натами (х, у). |
|
|
|
|
|
|
highvideo |
void highvideo(void); |
|
|
|
|||
|
Повышает яркость символов, выводимых после нее на эк- |
||||||
|
ран. |
|
|
|
|
|
|
movetext |
int movetext(int xO,int yO,int xl,int y2,int |
||||||
|
x,int y); |
|
|
|
|
|
|
|
Переносит текстовое окно в область экрана, правый верх- |
||||||
|
ний угол которой имеет координаты (х, у). Координаты |
||||||
|
угловых точек окна - (хО, уО), (xl, yl). |
|
|||||
normvideo |
void normvideo(void); |
|
|
|
|||
|
Устанавливает нормальную яркость выводимых на экран |
||||||
|
символов. |
|
|
|
|
|
|
textattr |
void textattr(int newattr); |
|
|
||||
|
Устанавливает атрибуты (фон, цвет) символов, выводимых |
||||||
|
на экран. |
|
|
|
|
|
|
textbackground |
void textbackground(int с); |
|
|
||||
|
Устанавливает цвет фона по значению параметра с. |
|
|||||
textcolor |
void textcolor(int с); |
|
|
|
|||
|
Устанавливает цвет символов по значению параметра с. |
||||||
textmode |
void textmode(int m); |
|
|
|
|||
|
1ереводит экран в текстовый режим по значению парамет- |
||||||
|
>ат. |
|
|
|
|
|
|
506
Функция wherex
wherey
Язык Си++
Таблица П3.6 (продолжение)
Прототип и краткое описание действий
i n t wherex(void);
Возвращает значение горизонтальной координаты курсора.
i n t wherey(void);
Возвращает значение вертикальной координаты курсора.
window |
void window(int xO,int yO,int xl,in t y l ) ; |
|
Создает текстовое окно по координатам угловых точек |
|
(xO,yO),(xl,yl). |
Функции из табл. П3.6 поддерживаются только на IBM PC и совместимых с ним компьютерах.
Таблица ПЗ.7
Специальные функции
Местона-
Функция Прототип и краткое описание действий хождение прототипа
delay |
void |
delay(unsigned |
x); |
|
dos . h |
|
|
Приостанавливаетвыполнение программы на х |
|
||||
|
мсек. |
|
|
|
||
kbhit |
i n t |
kbhit (void) ; |
|
|
conio.h |
|
|
Возвращает ненулевое целое, если в буфере кла- |
|
||||
|
виатуры присутствуют коды нажатия клавиш, в |
|
||||
|
противном случае - нулевое значение. |
|
||||
|
i n t |
memcmp(void *sl, void *s2, |
|
|||
memcmp |
unsigned n ) ; |
|
|
mem.h |
||
Сравнивает посимвольно две области памяти si и |
||||||
|
|
|||||
|
s2 длиной п байт. Возвращает значение меньше |
|
||||
|
нуля, если si < s2, нуль, если si |
»» s2 и |
|
|||
|
больше нуля, если si > |
s2. |
|
|
||
|
void |
*memcpy(const |
void *p, |
const void |
|
|
memcpy |
* i , |
unsigned n ) ; |
|
|
mem.h |
|
Копирует блок длиной п байт из области памяти i |
||||||
|
|
в область памяти р.
Приложение З. Стандартная библиотека функций языка Си |
507 |
Таблица ПЗ. 7 (продолжение)
|
|
|
|
|
Местона- |
Функция |
|
Прототип и краткое описание действий |
хождение |
||
|
|
|
|
|
прототипа |
memicmp |
int memicmp (void *sl, |
void *s2, |
mem.h |
||
|
unsigned n); |
|
|
|
|
|
Подобнаmemcmp, затем исключением, что игно- |
|
|||
|
рируются различия между буквами верхнего и |
|
|||
|
нижнегорегистра. |
|
|
|
|
memmove |
void |
*memmove (void *dest, const void |
mem.h |
||
|
*src, i n t n ) ; |
|
|
|
|
|
Копирует блок длиной п байтов из src в dest. |
|
|||
|
Возвращает указатель dest. |
|
|||
memset |
void |
*memset (void *s, |
int c, unsigned |
mem.h |
|
|
nj , |
|
|
|
|
|
Записывает во все байты области памяти s значе- |
|
|||
|
ние с. Длина области s равна п байт. |
|
|||
nosound |
void |
nosound(void); |
|
|
dos.h |
|
Прекращает подачу звукового сигнала, начатую |
|
|||
|
функцией sound(). |
|
|
|
|
peek |
i n t |
peek(unsigned s, |
unsigned c ) ; |
dos.h |
|
|
Возвращаетцелоезначение(слово), записанноев |
|
|||
|
сегменте s со смещением с. |
|
|
||
peekb |
char |
peekb(unsigned |
s, |
unsigned с ) ; |
dos.h |
|
Возвращает один байт, записанный в сегменте s |
|
|||
|
со смещением с, т.е. по адресу s: с. |
|
|||
poke ' |
void |
poke(unsigned s, |
unsigned с, i n t |
dos.h |
|
|
v) ; |
|
|
|
|
|
Помещает значение v в слово сегмента з со сме- |
|
|||
|
щением с, т.е. по адресу а: с. |
|
|||
pokeb |
void |
pokeb(unsigned |
s, |
unsigned с, |
dos.h |
|
char |
v); |
|
|
|
|
To же, что и poke, но помещает один байт v по |
|
|||
|
адресу s: с. |
|
|
|
|
rand |
int |
rand(void); |
|
|
stdlib.h |
Возвращает псевдослучайное целое число из диапазона 0 +215 - 1, может использовать s r a n d () .
508
Функция
signal
sound
srand
Язык Си++
Таблица ПЗ. 7 (продолжение)
Прототип икраткое описание действий
i nt signal(in t s i g ) ;
Вызывает программный сигнал с номером fig. Используется для обработки исключительных ситуаций в языке Си.
Местонахождение прототипа
signal.h
void sound(unsigned f) ; |
dos.h |
Вызьшает звуковой сигнал с частотой f Гц. |
|
void srand(unsigned seed); |
stdlib.h |
Функция инициализации генератора случайных |
|
чисел (rand); seed - любое беззнаковое целое |
|
число. |
|
ПРИЛОЖЕНИЕ 4
ГРАФИЧЕСКАЯ БИБЛИОТЕКА ВС++
Графические средства в языке Си++ и в его предшественнике - в языке Си полностью отсутствуют. Все возможности для работы с графикой конкретные реализации предоставляют в виде дополнительных библиотек графических функций. В нескольких местах книги были использованы в иллюстративных целях возможности графического представления объектов (принадлежащих классам, вводимым программистом). В качестве инструмента для работы с графикой была использована графическая библиотека под MS-DOS компиляторов фирмы Borland, так как эти компиляторы наиболее доступны в нашей стране, особенно на маломощных ПЭВМ,и чаще всего используются в учебном процессе. Никаких других причин для выбора именно этой графической библиотеки и этих компиляторов не было. Пояснения по отдельным функциям графической библиотеки даны в основном тексте соответствующих глав. Здесь приводится список библиотечных функций, которые могут быть полезными при самостоятельном решении задач, связанных с графикой. Приводиьюй информации иногда оказывается недостаточно для безошибочного применения той или иной функции, но возможность получения справок при работе с компилятором в диалоговом режиме обычно позволяет быстро устранить возникающие затруднения.
Для работы с графической библиотекой необходимо включить в программу заголовочный файл graphics .h.
Таблица П4.1
Функциидляуправленияграфическойсистемой
Функция |
Прототип и краткое описание действий |
i |
closegraph |
void far closegraph(void); |
|
|
Перевод системы в текстовый режим (из графического |
|
|
режима) |
|
graphdefaults |
void far graphdefaults(void); |
|
|
Устанавливает по умолчанию все параметры графической |
|
|
системы (параметры заполнения, палитру, правила вы- |
|
|
равнивания текста и т.п.) |
|
510
Функция
_graphfreemem
_graphgetmem
Язык Си++
Таблица П4.1 (продолжение)
Прототип икраткоеописание действий
void far _graphfreemem(void far *ptr, unsigned size);
Введение этой функции в программу позволяет программисту отслеживать запросы на освобождение size байт памяти функциями графической библиотеки
void far * far _graphgetmem(unsigned size); Введение этой функции в программу позволяет программисту отслеживать запросы на выделение size байт памяти функциями графической библиотеки
initgraph |
void far initgraph(int far |
*graphdriver, int |
|
far *graphmode, char far *pathtodriver); |
|
|
Перевод системы в графический режим (из текстового |
|
|
режима), инициализация графики |
|
installuserdriver |
int far installuserdriver(char far *name, |
|
|
int huge *detect)(void)); |
|
|
Добавляет новый графический драйвер name (.BGI) в таб- |
|
|
лицу драйверов BGI (BGI - Borland Graphics Interface) |
|
installuserfont |
int far installuserfont(char far *name); |
|
|
Устанавливает шрифты, содержащиеся в файле name |
|
|
(.CHR) |
|
registerbgidriver |
int registerbgidriver(void |
(*driver) (void)); |
|
Регистрирует драйвер driver, встроенный в текущую |
|
|
выполняемую программу |
|
registerbgifont |
int registerbgifont(void (*font)(void)); |
|
|
Регистрирует шрифт font, встроенный в текущую выпол- |
|
|
няемую программу |
|
restorecrtmode |
void far restorecrtmode(void); |
|
|
Временный переход в текстовый режим, из которого была |
|
|
вызвана функция initgraph () |
|
setgraphbufsize |
unsigned far setgraphbufsize(unsigned |
bufsize);
Устанавливает размер внутреннего буфера для графических функций
Приложение 4. Графическая библиотека ВС++ |
511 |
|
|
ТаблицаП4.2 |
|
|
Функции для установки параметров изображения |
|
Функция |
Прототип и краткое описание действий |
|
setactivepage |
void far setactivepage(int page); |
|
|
Устанавливает активной для вывода графики страницу |
|
|
page |
|
setallpalette
setaspectratio
setbkcolor
setcolor
_setcursortype (прототип содержится в файле couio.h)
setfdlpattern
setgraphmode
setfflbtyfe
setlinestyle
setpalette
void far setallpalette(struct palettetype far +palette);
Устанавливаетвсе цвета палитры
void far setaspectratio(int xasp, int yasp); Устанавливает коэффициент сжатия по координатам х и у
void far setbkcolor(int color); Установка цвета фона
void far setcolor(int color); Установка цвета точки (изображения)
void setcursortype(int cur_t);
Устанавливает тип отображения курсора для текстовых режимов
void far setfillpattern(char far *upattern, int color);
Установка заданного пользователем шаблона закраски экрана или области экрана
void far setgraphmode(int mode);
Переход к графическому режиму, отличному от установленного функцией ini tgraph () .
void far setfillstyle(int pattern, int color);
Установка одного из стандартных шаблонов заполнения экрана или области экрана
void far setlinestyle(int linestyle, unsigned upattern, int thickness); Установка толщины и типа изображаемой линии
void far setpalette(int colornum, int color);
Устанавливает один из цветов палитры
512 |
|
|
Язык Си++ |
|
|
|
|
|
|
Таблица П4.2 (продолжение) |
|
Функция |
|
Прототип и краткое описание действий |
|
||
|
|
|
|
|
|
setrgbpalette |
void far |
setrgbpalette(int colornum, int |
|
||
red, int green, int blue); |
|
||||
|
|
||||
|
Устанавливаетцветадля графического адаптера IBM 8514 |
||||
settextjustify |
void far settextjustify(int horiz, int |
|
|||
vert); |
|
|
|
||
|
|
|
|
||
|
Установка правил выравнивания текста при горизонталь- |
||||
|
ном или вертикальном выводе функцией o u t t e x t () |
||||
settextstyle |
void far settextstyle(int font, int |
|
|||
direction, int charsize); |
|
||||
|
|
||||
|
Установка стиля (шрифт, размеры символов) текста, вы- |
||||
|
водимого функцией outtext () |
|
|||
setusercharsize |
void far |
setuserchnrsize(int multx, int |
|
||
divx, |
int mult^, |
int divy); |
|
||
|
|
||||
|
Установка размеров символов, выводимых ц графическом |
||||
|
режиме |
|
|
|
|
setviewport |
void |
far |
setviewport(int left, int top, |
int |
|
righ, int bottom, int clip); |
|
||||
|
|
||||
|
Установка размеров текущего окна экрана для вывода |
||||
|
изображений илитекста |
|
|||
setvisualpage |
void far |
setvisualpage(int page); |
|
||
Делает видимой графическую страницу page |
|
||||
|
|
||||
setwriteraode |
void far |
setwritemode(int mode); |
|
||
|
Устанавливаетрежим вывода линий в графическом режиме |
||||
|
|
|
|
Таблица П4.3 |
|
|
Функции для получения изображения на экране |
|
|||
Функция |
|
|
Прототип и краткое описание действий |
|
|
|
|
|
|
|
|
arc |
void |
far |
arc(int |
x, int y, int stangle, |
int |
endangle, int radius); |
|
||||
|
|
||||
|
Вычерчивание дуги окружности с центром (х, у) |
||||
bar |
void far bar(int |
left, int top, int right, |
|||
int |
bottom); |
|
|
||
|
|
|
Вычерчивание закрашенного прямоугольника
Приложение 4. Графическая библиотека ВС++ |
513 |
Функция
bar3d
Таблица П4.3 (продолжение)
Прототип и краткое описание действий
void far bar3d(int left, int top, int right, int bottom, int depth, int topflag); Вычерчивание закрашенного параллелепипеда
circle |
void far circle(int x, |
int y, |
int radius); |
|
|
Вычерчивание окружности с центром (х, у) |
|||
cleardevice |
void far cleardevice(void); |
|
|
|
|
Очистка экрана цветом фона |
|
|
|
clearviewport |
void far clearviewport(void); |
|
|
|
|
Очистка ранее установленного окна графического экрана |
|||
drawpoly |
void far drawpoly(int numpoints, |
int far |
||
|
•polypoints); |
|
|
|
|
Вычерчивание контура многоугольника с numpoints |
|||
|
вершинами |
|
|
|
ellipse |
void far ellipse(int x, |
int y, |
int stangle, |
|
|
int endangle, int xradius, int yradius); |
|||
|
Вычерчивание дуги эллипса с центром (х, у) |
|||
fillellipse |
void far fillellipse(int x, int y, int |
|||
|
xradius, int yradius); |
|
|
|
|
Вычерчивание эллипса с центром в точке (х, у) и заполне- |
|||
|
ние его установленным ранее шаблоном закраски |
|||
fillpoly |
void far fillpoly(int numpoints, |
int far |
||
•polypoints); |
|
|
|
|
|
|
|
|
|
|
Вычерчивание закрашенного многругольника с |
|||
|
numpoints вершинами и заполнение его установленным |
|||
|
ранее шаблоном закраски |
|
|
|
floodflU |
void far floodfill(int x, int y, |
int |
||
border); |
|
|
|
|
|
|
|
|
|
|
Заполнение установленным ранее шаблоном закраски |
|||
|
ограниченной области экрана, в которую попадает точка с |
|||
|
координатами (х, у) |
|
|
|
line |
void far line(int xl, int yl, int |
x2, int |
||
|
y2); |
|
|
|
Вычерчивание линии от (xl, yl) до (х2, у2)
33"
514
Функция linerel
Язык Си++
Таблица П4.3 (продолжение)
Прототипикраткоеописаниедействий
void far linerel(in t dx, in t dy) ; Вычерчиваниелинии из текущей точки в точку, отстоящую от нее на величину (dx, dy)
lineto |
void far |
lineto(in t x, int y) ; |
|
|
||||
Проведениелинии из текущейточкив точку с абсолют- |
||||||||
|
||||||||
|
ными координатами х, у |
|
|
|
|
|||
moverel |
void far moverel(int dx, |
in t dy) ; |
|
|||||
Перемещениеуказателяпозицииизтекущейточкивточ- |
||||||||
|
||||||||
|
ку, отстоящую от нее на величину (dx, dy) |
|
||||||
moveto |
void far moveto(int x, int y ) ; |
|
|
|||||
|
Перемещение указателя позиции из текущей точки в точку |
|||||||
|
с абсолютными координатами х, у |
|
|
|
||||
outtext |
void far outtext(char far •textstring); |
|||||||
Вывод текстовой строки textstring, начиная с текущей |
||||||||
|
||||||||
|
позиции |
|
|
|
|
|
||
outtextxy |
void |
far |
outtextxy(int x, |
int y, |
char |
far |
||
*textstring); |
|
|
|
|
||||
|
|
|
|
|
||||
|
Вывод текстовой строки textstring, начиная с точки с |
|||||||
|
координатами х, у |
|
|
|
|
|||
pieslice |
void |
far |
pieslice(int x, |
int |
y, |
int stangle, |
||
int |
endangle, int radius); |
|
|
|
||||
|
|
|
|
|||||
|
Вычерчивание закрашенного сектора круга с центром в |
|||||||
|
точке (х,у) |
|
|
|
|
|||
putimage |
void far putimage(int left, |
int |
top, |
void |
||||
far |
*bitmap, int op); |
|
|
|
|
|||
|
|
|
|
|
||||
|
Вывод ранее сохраненного графического изображения в |
|||||||
|
окно экрана с левым верхним углом (left, top) |
|||||||
putpixel |
void far putpixel(int x, |
int |
y, |
int color); |
||||
Вычерчивание точки по координатам х, у |
|
|||||||
|
|
|||||||
rectangle |
void far rectangle(int left, |
int |
top, |
int |
||||
right, |
int bottom); |
|
|
|
|
|||
|
|
|
|
|
Вычерчивание прямоугольника с заданными вершинами
Приложение 4. Графическая библиотека ВС++ |
515 |
Функция sector
ТаблицаП4.3(продолжение)
Прототип икраткоеописаниедействий
void far sector(int x, int y, int stangle, int endangle, int xradius, int уradius);
Вычерчивание сектора эллипса с центром в точке (х, у) и заполнение его установленным ранее шаблоном закраски
|
|
|
ТаблицаП4А |
|
Функции для получения параметров изображения |
||
Функция |
|
Прототипикраткоеописаниедействий |
|
detectgraph |
void far |
detectgraph(int far *graphdriver, |
|
|
int |
far |
*graphmode); |
|
Функциявозвращаеттипвашегографическогоадаптера |
||
|
graphdriver и режим graphmode с разрешением, мак- |
||
|
симальновозможнымдляданногоадаптера |
||
getarccoords |
void far getarccoords(struct arccoordstype |
||
|
far |
*arccoords); |
|
|
Возвращает в структуре arccoords значения координат |
||
|
дуги, построенной при последнем обращении к arc () |
||
getaspectratio |
void |
far |
getaspectratio(int far +xasp, int |
|
far |
*yasp); |
|
|
Возвращает коэффициент сжатия (yasp/xasp) по коор- |
||
|
динатам хн у |
||
getbkcolor |
int |
far |
getbkcolor(void); |
|
Возвращает номер текущего цвета фона, |
||
getcolor |
int |
far |
getcolor(void); |
|
Возвращает номер текущего цвета изображения |
getdefaultpalette struct palettetype *far getdefaultpalette(void);
Возвращаетуказательнаструктурутипаpalettype,содержащуюинформациюопалитре(наборецветов),устанавливаемой по умолчанию функцией initgraph ()
getdrivername char *far getdrivername(void);
Возвращает указатель на строку, содержащую название текущего графического драйвера
33*