Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Реализация ссылочной семантики




 

Контейнерные классы STL поддерживают семантику значений, но не поддерживают ссылочную семантику. Они создают внутренние копии вставляемых элементов и затем возвращают эти копии. Следовательно, если вам потребуется ссылочная семантика в контейнерах STL (например, из-за того, что копирование элементов обходится слишком дорого или же элементы должны совместно использоваться несколькими коллекциями), воспользуйтесь классом умного указателя для предотвращения потенциальных ошибок. Ниже приведено одно из возможных решений проблемы. В нем задействован вспомогательный класс умного указателя с подсчетом ссылок на объекты, на которые ссылается указатель:

 

#include "stdafx.h"

#include <iostream>

#include <list>

#include <deque>

#include <algorithm>

using namespace std;

 

/* Класс, обеспечивающий семантику подсчёта ссылок.

* Объект, на который ссылается указатель, автоматически

* уничтожается при удалении последнего экземпляра CountedPtr

* для данного объекта.

*/

template <class T>

class CountedPtr {

private:

T* ptr;      // Указатель на значение

long* count; // Количество владельцев (общие данные)

public:

// Инициализация объекта существующим указателем

// - указатель p должен быть получен в результате вызова new

explicit CountedPtr(T* p = 0)

      : ptr(p), count(new long(1)) {

}

 

// Копирующий указатель (увеличивает счётчик владельцев)

CountedPtr(const CountedPtr<T>& p) throw()

      : ptr(p.ptr), count(p.count) {

       ++*count;

}

// Деструктор (уничтожает объект, если владелец был последним)

~CountedPtr() throw() {

       dispose();

}

// Присваивание (перевод указателя на новый объект)

CountedPtr<T>& operator= (const CountedPtr<T>& p) throw() {

       if (this!= &p) {

             dispose();

             ptr = p.ptr;

             count = p.count;

             ++*count;

       }

       return *this;

}

// Доступ к объекту, на который ссылается указатель

T& operator*() const throw() {

       return *ptr;

}

T* operator->() const throw() {

       return ptr;

}

private:

void dispose() {

       if (--*count == 0) {

             delete count;

             delete ptr;

       }

}

};

 

 

Предполагается, что значения, которыми инициализируются умные указатели, были возвращены оператором new. Класс CountedPtr позволяет копировать умные указатели так, чтобы оригинал и копия оставались действительными. Объект уничтожается только после удаления последнего указателя, ссылающегося на него.

Класс CountedPtr можно усовершенствовать, например реализовать в нем автоматическое преобразование типов или возможность передачи права владения от умного указателя вызывающей стороне.

Ниже приведен пример использования класса CountedPtr:

 

 

void printCountedPtr(CountedPtr<int> elem)

{

cout << *elem << ' ';

}

 

int main()

{

// Массив целых чисел (для совместного использования

// в разных контейнерах)

static int values[] = { 3, 5, 9, 1, 6, 4 };

 

// Две разные коллекции

typedef CountedPtr<int> IntPtr;

deque<IntPtr> coll1;

list<IntPtr> coll2;

 

/* Вставка общих объектов в коллекции

* - исходный порядок в coll1

* - обратный порядок в coll2

*/

for (int i = 0; i<sizeof(values) / sizeof(values[0]); ++i) {

       IntPtr ptr(new int(values[i]));

       coll1.push_back(ptr);

       coll2.push_front(ptr);

}

 

// Вывод содержимого обеих коллекций

for_each(coll1.begin(),coll1.end(),printCountedPtr);

cout << endl;

for_each(coll2.begin(), coll2.end(),printCountedPtr);

cout << endl << endl;

 

/* Модификация значений в разных коллекциях

* - возведение в квадрат третьего значения в coll1

* - изменение знака первого значения в coll1

* - обнуление первого значения в coll2

*/

*coll1[2] *= *coll1[2];

(**coll1.begin()) *= -1;

(**coll2.begin()) = 0;

 

// Повторный вывод содержимого обеих коллекций

for_each(coll1.begin(), coll1.end(),printCountedPtr);

cout << endl;

for_each(coll2.begin(), coll2.end(),printCountedPtr);

cout << endl;

}

Результат выполнения программы выглядит так:

 

3 5 9 1 6 4

4 6 1 9 5 3

 

-3 5 81 1 6 0

0 6 1 81 5 -3

 

Если вызвать вспомогательную функцию, сохраняющую элемент коллекции (IntPtr) где-то в другом месте, то значение, на которое ссылается указатель, остается действительным даже после уничтожения коллекций или удаления из них всех элементов.

В архиве Boost библиотек C++ (http://www.boost.org/) хранятся различные классы умных указателей, расширяющие стандартную библиотеку C++.

 

СПИСОК ЛИТЕРАТУРЫ

1. В.В. Подбельский Язык Си++: Учебное пособие. - 5-е изд. - М.: Финансы и статистика, 2000. - 560с. ил.

2. Ален И. Голуб. Си и Си++ правила программирования. - М.: БИНОМ, 1996. - 272с. 

3. Бьерн Страуструп Язык программирования Си++. 3-е изд. /Пер. с англ. - СПб.; М.: «Невский диалект» - «Издательство БИНОМ», 1999. - 991с. ил.

4. Дональд Э. Кнут Искусство программирования. 3-е изд.: Пер. с англ.: Уч.пос. - М.: Издательский дом "Вильяс", 2000. - с., ил.

5. Влах И., Сингхал К. Машинные методы анализа и проектирования электронных схем: Пер. с англ. – М.: Радио и связь, 1988. – 560 с. ил.

 

 

ПРИЛОЖЕНИЕ 1

Таблицы кодов ASCII

Таблица П1.1

Коды управляющих символов (0 - 31)

Символ Код 10 Код 08 Код 16 Клавиши Значение
nul 0 0 00 ^@ Нуль
soh 1 1 01 ^A Начало заголовка
stx 2 2 02 ^B Начало текста
etx 3 3 03 ^C Конец текста
eot 4 4 04 ^D Конец передачи
enq 5 5 05 ^E Запрос
ack 6 6 06 ^F Подтверждение
bel 7 7 07 ^G Сигнал (звонок)
bs 8 10 08 ^H Забой (шаг назад)
ht 9 11 09 ^I Горизонтальная табуляция
lf 10 12 ^J Перевод строки
vt 11 13 0B ^K Вертикальная табуляция
ff 12 14 ^L Новая страница
cr 13 15 0D ^M Возврат каретки
so 14 16 ^N Выключить сдвиг
si 15 17 0F ^O Включить сдвиг
dle 16 20 10 ^P Ключ связи данных
dc1 17 21 11 ^Q Управление устройством 1
dc2 18 22 12 ^R Управление устройством 2
dc3 19 23 13 ^S Управление устройством 3
dc4 20 24 14 ^T Управление устройством 4
nak 21 25 15 ^U Отрицательное подтверждение
syn 22 26 16 ^V Синхронизация
etb 23 27 17 ^W Конец передаваемого блока
can 24 30 18 ^X Отказ
em 25 31 19 ^Y Конец среды
sub 26 32 ^Z Замена
esc 27 33 1B ^ [ Ключ
fs 28 34 ^ \ Разделитель файлов
gs 29 35 1D ^ ] Разделитель группы
rs 30 36 1E ^ ^ Разделитель записей
us 31 37 1F ^_ Разделитель модулей

В графе "клавиши" обозначение ^ соответствует нажатию клавиши Ctrl, вместе с которой нажимается соответствующая "буквенная" клавиша, формирующая код символа.

Таблица П 1.2

Символы с кодами 32 – 127

Символ Код 10 Код 08 Код 16   Символ Код 10 Код 08 Код 16
пробел 32 40 20   = 61 75 3D
! 33 41 21   > 62 76 ЗЕ
" 34 42 22   ? 63 77 3F
# 35 43 23   @ 64 100 40
$ 36 44 24   А 65 101 41
% 37 45 25   В 66 102 42
£ 38 46 26   С 67 103 43
' 39 47 27   D 68 104 44
( 40 50 28   Е 69 105 45
) 41 51 29   F 70 106 46
* 42 52   G 71 107 47
+ 43 53   Н 72 108 48
, 44 54 2C   I 73 111 49
- 45 55 2D   J 74 112 4A
. 46 56   K 75 113. 4B
/ 47 57 2F   L 76 114 4C
0 48 60 30   М 77 115 4D
1 49 61 31   N 78 116 4E
2 50 62 32   О 79 117 4F
3 51 63 33   Р 80 120 50
4 52 64 34   Q 81 121 51
5 53 65 35   R 82 122 52
6 54 66 36   S 83 123 53
7 55 67 37   Т 84 124 54
8 56 70 38   U 85 125 55
9 57 71 39   V 86 126 56
: 58 72 ЗА   W 87 127 57
; 59 73 ЗВ   X 88 130 58
< 60 74 ЗС   Y 89 131 59
Z 90 132 5A   m 109 155 6D
[ 91 133 5B   n 110 156 6E
\ 92 134 5C   о 111 157 6F
] 93 135 5D   p 112 160 70
^ 94 136 5E   q 113 161 71  
_ 95 137 5F   г 114 162 72
` 96 140 60   s 115 163 73
a 97 141 61   t 116 164 74
b 98 142 62   u 117 165 75
c 99 143 63   v 118 166 76
d 100 144 64   w 119 167 77
e 101 145 65   x 120 170 78
f 102 146 66   Y 121 171 79
g 103 147 67   z 122 172
h 104 150 68   { 123 173
i 105 151 69   | 124 174
j 106 152 6A   } 125 175 7D
k 107 153 6B   ~ 126 176
1 108 154 6C   del 127 177 7F

 


Таблица П1.3

Символы с кодами 128 - 255 (Кодовая таблица 866 - MS-DOS)

 

Символ Код 10 Код 08 Код 16   Символ Код 10 Код 08 Код 16
А 128 200 80   Ь 156 234
Б 129 201 81   Э 157 235 9D
В 130 202 82   Ю 158 236
Г 131 203 83   Я 159 237 9F
Д 132 204 84   а 160 240 АО
Е 133 205 85   б 161 241 А1
Ж 134 206 86   в 162 242 А2
З 135 207 87   г 163 243 A3
И 136 210 88   д 164 244 А4
Й 137 211 89   е 165 245 А5
К 138 212   ж 166 246 А6
Л 139 213   з 167 247 А7
М 140 214   и 168 250 А8
Н 141 215 8D   й 169 251 А9
О 142 216   к 170 252 АА
П 143 217 8F   л 171 253 АВ
Р 144 220 90   м 172 254 АС
С 145 221 91   н 173 255 AD
Т 146 222 92   о 174 256 АЕ
У 147 223 93   п 175 257 AF
Ф 148 224 94   176 260 ВО
X 149 225 95   177 261 В1
Ц 150 226 96   178 262 В2
Ч 151 227 97   | 179 263 ВЗ
Ш 152 230 98   180 264 В4
Щ 153 231 99   181 265 В5
Ъ 154 232   182 266 В6
Ы 155 233   183 267 В7
184 270 В8   214 326 D6
185 271 В9   215 327 D7
186 272 ВА   216 330 D8
187 273 ВВ   ┘   217 331 D9
188 274 ВС   218 332 DA
189 275 BD   219 333 DB
190 276 BE   220 334 DC
191 277 BF   221 335 DD
192 300 СО   222 336 DE
193 301 С1   223 337 DF
194 302 С2   Р 224 340 ЕО
195 303 СЗ   С 225 341 Е1
196 304 С4   Т 226 342 Е2
+ 197 305 С5   У 227 343 ЕЗ
198 306 С6   ф 228 344 Е4
199 307 С7   X 229 345 Е5
200 310 С8   Ц 230 346 Е6
201 311 С9   Ч 231 347 Е7
202 312 СА   Ш 232 350 Е8
203 313 СВ   Щ 233 351 Е9
204 314 СС   Ъ 234 352 ЕА
205 315 CD   : Ы 235 353 ЕВ
206 316 СЕ   Ь 236 354 ЕС
207 317 CF   Э 237 355 ED
208 320 DO   Ю 238 356 ЕЕ
209 321 D1   Я 239 357 EF
210 322 D2   ≡ илиЁ 240 360 F0
211 323 D3   ± или ё 241 361 F1
212 324 D4   242 362 F2
213 325 D5   243 363 F3
244 364 F4   . 250 372 FA
245 365 F5   251 373 FB
÷ 246 366 F6   n 252 374 FC
247 367 F7   z 253 375 FD
· 248 370 F8   254 376 FE
249 371 F9     255 377 FF

 

 

Таблица П1.4

Символы с кодами 128 - 255 (Кодовая таблица 1251 – MS Windows)

Символ Код 10 Код 08 Код 16   Символ Код 10 Код 08 Код 16
Ђ 128 200 80   ״ 148 224 94
Ѓ 129 201 81   149 225 95
, 130 202 82   - 150 226 96
Ѓ 131 203 83   151 227 97
,, 132 204 84   152 230 98
133 205 85   тм 153 231 99
134 206 86   Љ 154 232
135 207 87   > 155 233
136 210 88   Њ 156 234
137  211 89   Ќ 157 235 9D
Љ 138 212   Ћ 158 236
< 139 213   Џ 159 237 9F
Њ 140 214     160 240 АО
Ќ 141 215 8D   Ў 161 241 А1
Ћ 142 216   Ў 162 242 А2
Џ 143 217 8F   J 163 243 A3
Ŋ 144 220 90   ¤ 164 244 А4
` 145 221 91   Ґ 165 245 А5
' 146 222 92   ¦ 166 246 А6
`` 147 223 93   § 167 247 А7
Ё 168 250 А8   3 199 307 С7
© 169 251 А9   И 200 310 С8
Є 170 252 АА   Й 201 311 С9
« 171 253 АВ   К 202 312 СА
  172 254 АС   Л 203 313 СВ
- 173 255 AD   М 204 314 СС
® 174 256 АЕ   Н 205 315 CD
Ї 175 257 AF   О 206 316 СЕ
° 176 260 В0   П 207 317 CF
± 177 261 В1   Р 208 320 D0
І 178 262 В2   С 209 321 D1
і  179 263 ВЗ   Т 210 322 D2
ґ 180 264 В4   У 211 323 D3
μ 181 265 В5   Ф 212 324 D4
182 266 В6   X 213 325 D5
. 183 267 В7   Ц 214 326 D6
ё 184 270 В8   Ч 215 327 D7
??? 185 271 В9   Ш 216 330 D8
є 186 272 ВА   Щ 217 331 D9
» 187 273 ВВ   Ъ 218 332 DA
j 188 274 ВС   Ы 219 333 DB
S 189 275 BD   Ь 220 334 DC
s 190 276 BE   Э 221 335 DD
ï 191 277 BF   Ю 222 336 DE
А 192 300 С0   Я 223 337 DF
Б 193 301 C1   А 224 340 Е0
В 194 302 С2   Б 225 341 Е1
Г 195 303 СЗ   В 226 342 Е2
Д 196 304 С4   Г 227 343 ЕЗ
Е 197 305 С5   Д 228 344 Е4
Ж 198 306 С6   Е 229 345 Е5
 Ж 230 346 Е6   у 243 363 F3
З 231 347 Е7   ф 244 364 F4
И 232 350 Е8   х 245 365 F5
й 233 351 Е9   ц 246 366 F6
к 234 352 ЕА   ч 247 367 F7
л 235 353 ЕВ   ш 248 370 F8
м 236 354 ЕС   щ 249 371 F9
н 237 355 ED   ъ 250 372 FA
о 238 356 ЕЕ   ы 251 373 FB
п 239 357 EF   ь 252 374 FC
р 240 360 F0   э 253 375 FD
с 241 361 F1   ю 254 376 FE
т 242 362 F2   я 255 377 FF

 

 

ПРИЛОЖЕНИЕ 2

 Стандартная библиотека функций языка Си

Таблица П2.1

Математические функции - файл math. h

Функция Прототип и краткое описание действий
Abs int abs(int i); Возвращает абсолютное значение целого аргумента I
Acos double асоs (double х); Функция арккосинуса. Значение аргумента должно находиться в диапазоне от -1 до +1
Asin double asin(double х); Функция арксинуса. Значение аргумента должно находиться в диапазоне от -1 до +1
atan double atan(double x); Функция арктангенса
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); Вычисляет значение еx (экспоненциальная функция)
fabs double fabs(double x); Возвращает абсолютное значение вещественного аргумента х двойной точности
floor double floor(double x); Находит наибольшее целое, не превышающее значения х. Возвращает его в форме double
fmod double fmod(double x, double y); Возвращает остаток от деления нацело х на у
hypot double hypot(double x, double у); Вычисляет гипотенузу z прямоугольного треугольника по значениям катетов х, у (z2 = х2 + у2)
 labs long labs(long х); Возвращает абсолютное значение целого аргумента long x
ldexp double ldexp(double v, int e); Возвращает значение выражения v•2e
 log double log(double x); Возвращает значение натурального логарифма (In x)
log10 double log10(double x); Возвращает значение десятичного логарифма (log10 х)
 poly double poly(double x, int n, double c[ ]); Вычисляет значение полинома: c[n]xn + c[n - 1]хn-1 +... + c[l]x + c[0]
 pow double pow(double x, double у); Возвращает значение xy, т.е. х в степени у
pow10 double pow10(int p); Возвращает значение 10p
 sin double sin(double x); Функция синуса. Угол (аргумент) задается в радианах
 sinh double sinh(double x); Возвращает значение гиперболического синуса для х
 sqrt double sqrt(double x); Возвращает положительное значение квадратного корня
 tan double tan(double x); Функция тангенса. Угол (аргумент) задается в радианах
 tanh double tanh(double x); Возвращает значение гиперболического тангенса для х

Таблица П2.2

 

Функции проверки и преобразования символов - файл ctype. h

Функция Прототип и краткое описание действий
isalnum int isalnum(int с); Дает значение не нуль, если с - код буквы или цифры (А - z, a - z,0 - 9), и нуль - в противном случае
isalpha int isalpha(int с);  Дает значение не нуль, если с - код буквы (А - Z, а - z), и нуль - в противном случае
isascii int isascii(int с); Дает значение не нуль, если с есть код ASCII, т.е. принимает зна­чение от 0 до 127, в противном случае – нуль
iscntrl int iscntrl(int с); Дает значение не нуль, если с - управляющий символ с кодами 0x00 - 0x0lF или 0x7F, и нуль - в противном случае
isdigit int isdigit(int с); Дает значение не нуль, если с - цифра (0 - 9) в коде ASCII, и нуль - в противном случае
isgraph int isgraph(int с); Дает значение не нуль, если с - видимый (изображаемый) символ с кодом (0x21 - 0х7Е), и нуль - в противном случае
islower int islower(int с); Дает значение не нуль, если с - код символа на нижнем регистре (а - z), и нуль - в противном случае
isprint int isprint(int с); Дает значение не нуль, если с - печатный символ с кодом (0x20 - 0х7Е), и нуль - в противном случае
ispunct int ispunct(int с); Дает значение не нуль, если с - символ-разделитель (соответствует iscntrl или isspase), и нуль - в противном случае
isspace int isspace(int с); Дает значение не нуль, если с -обобщенный пробел: пробел, символ табуляции, символ новой строки или новой страницы, символ возврата каретки (0x09 - 0х0D, 0x20), и нуль - в противном случае

Таблица П2.3

Функции ввода-вывода для стандартных файлов – файл stdio.h

Функция Прототип и краткое описание действий
getch Int getch(void); Считывает один символ с клавиатуры без отображения на экране
getchar Int getchar (void); Считывает очередной символ из стандартного входного файла (stdin)
gets char * gets(char *s); Функция инициализации генератора случайных чисел (rand); seed - любое беззнаковое целое число
printf Int printf(char * format [, argument,…]); Функция форматированного вывода в файл stdout
putchar Int putchar (int f); Записывает символ f в стандартный файл вывода (stdout)
Puts Int puts(const char *s); Записывает строку s в стандартный файл вывода (stdout)
scanf Int scanf(char* format[, argument, …]); Функция форматированного ввода из файла stdin
sprintf  i nt sprintf(char*s, char* format [, argument, …]); Функция форматированной записи в строку s
sscanf int sscanf(char*s, char * format [, address, …]); Функция форматированного чтения из строки
ungetch Int ungetch(int f); Возвращает символ f в стандартный файл ввода stdio, заставляя его быть следующим считываемым символом

 

Таблица П2.4

Функции для работы со строками – файлы string.h stdlib.h

Функция Прототип и краткое описание действий
Atof Double atof (char* str); Преобразовать строку str в вещественное число типа double
Atoi Int atoi(char* str); Преобразовать строку str в десятичное целое число
itoa Char * itoa (long v, char*str, int baz); Преобразовать целое v в строку str. При изображении числа используется основание baz (2£ baz£ 36). Для отрицательного числа и baz = 10 первый символ – «минус»
 ltoa char * ltoa (long v, char*str, int baz); Преобразовать целое v в строку str. При изображении числа используется основание baz (2£ baz£ 36)
strcat  char * strcat(char* sp, char *si); Преписывает строку si к строке sp (конкатенация строк)
strchr  char* strchr(char* str, int c); Ищет в строке str первое вхождение символа с
 strcmp  strcmp(char* str1, char* str2); Сравнивает строки str1 и str2. Результат отрицателен, если str1 < str2; равен нулю, если str1 == str2 и положителен, если str1> str2 (сравнение беззнаковое)
strcpy char* strcpy(char* sp, char* si); Копирует байты строки si в строку sp
strcspn  int strcspn (char * str1, char* str2); Определяет длину первого сегмента строки str1, содержащего символ, не входящие во множество символов строки str2 
strdup  char* strdup(const char* str); Выделяет память и переносит в неё копию строки str
strlen  Unsigned int strlen (char *str); Вычисляет длину строки str без учёта нулевого символа.
strlwr Char* strlwr(char*str); Преобразует буквы верхнего ригистра в строке в соответствующие буквы нижнего регистра
strncat char * strncat(char*sp, shar* si, int kol); Приписывает kol символов строки si к строке sp (конкатенация)
strupr  Char * strupr(char* str); Преобразует буквы нижнего регистра в строке str в буквы верхнего регистра
Ultoa Char* ultoa (unsigned long v, char* str, int baz); Преобразует беззнаковое длинное целое в строку str

 

Таблица П2.5

Функции для выделения и освобождения памяти – файлы stdlib.h, alloc.h

Функция Прототип и краткое описание действий
calloc void *calloc(unsigned n, unsigned m); Возвращает указатель на начало области динамически распределенной памяти для размещения n элементов по m байт каждый. При неудачном завершении возвращает значение NULL
free void free(void *b1); Освобождает ранее выделенный блок динамически распределяемой памяти с адресом первого байта b1
malloc void* malloc (unsigned s); Возвращает указатель на блолк динамически распределяемой памяти длиной s байт. При неудачном завершении возвращает значение NULL 
realloc void* realloc (void* bl, unsigned ns); Изменяет размер ранее выделенной динамической памяти с адресом начала bl до размера ns байт. Если bl равен NULL, то функция выполняется как malloc()    

 

Таблица П2.6

Функции для работы с терминалом в текстовом режиме – файл conio.h

Функция Прототип и краткое описание действий
clreol void clreol(void); Стирает символы от позиции курсора до конца строки в текстовом окне.
clrscr  void clrscr (void); Очищает экран
Gotoxy void gotoxy(int x, int y); Перемещает курсор в позицию текстового окна с координатами (x, y)
highvideo  void highvideo(void); Повышает яркость символов, выводимых после неё на экран
normvideo void normvideo (void); Устанавливает нормальную яркость выводимых на экран символов
textattr void textattr (int newattr); Устанавливает атрибуты (фон, цвет) символов, выводимых на экран
textbackground void textbackground(int с); Устанавливает цвет фона по значению параметра с
textcolor  void textcolor(int c); Устанавливает цвет символов по значению параметра с
textmode void textmode (int m); Переводит экран в текстовый режим по значению параметра m;
whrex  int wherex(void); Возвращает значение горизонтальной координаты курсора
whrery  int wherey(void); Возвращает значение вертикальной координаты курсора
window void window (int x0, int y0, int x1, int y1); Создаёт текстовое окно по координатам угловых точек

 

 

Таблица П2. 7

Специальные функции

Функция Прототип и краткое описание действий Местонахождение прототипа
delay  void delay (unsigned x); Приостанавливает выполнение программы на х мсек dos.h
kbhit  int kbhit (void); Возвращает ненулевое целое, еслив буфере клавиатуры присутствуют коды нажатия клавиш, в противном случае – нулевое значение   conio.h
nosound  void nosound(void); Прекращает подачу звукового сигнала, начатую функцией sound()  dos.h
rand  int rand(void); Возвращает псевдослучайное целое число из диапазона от 0 до 2е15, может использовать srand() stdlib.h
sound void sound(unsigned f); Вызывает звуковой сигнал с частотой f Гц dos.h
srand void srand(unsigned seed); Функция инициализации генератора случайных чисел (rand); seed - любое беззнаковое целое число stdlib.h

 





Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 261 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Чтобы получился студенческий борщ, его нужно варить также как и домашний, только без мяса и развести водой 1:10 © Неизвестно
==> читать все изречения...

2651 - | 2545 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.015 с.