Глава 3
Заголовочный файл стандартной библиотеки | Объяснение |
<assert .h> | Содержит макросы и информацию для дополнительной диагностики, помогающей при отладке программы. |
<ctype .h> | Содержит прототипы функций, проверяющих некоторые свойства символов, и прототипы функций, которые могут быть использованы для преобразования строчных букв в заглавные и обратно. |
<errno.h> | Определяет макросы, полезные для получения сообщений об ошибках. |
<float.h> | Содержит ограничения на числа с плавающей запятой в системе. |
<limits .h> | Содержит общие ограничения системы. |
<locale.h> | Содержит прототипы функций и другую информацию, которая позволяет модифицировать программу в зависимости от места ее выполнения. Позволяет компьютерной системе в зависимости от географического места выполнения программы применять различные соглашения относительно формы представления таких данных, как даты, время, долларовые расчеты и большие числа в различных регионах мира. |
<math.h> | Содержит прототипы математических библиотечных функций. |
<setjmp.h> | Содержит прототипы функций, которые позволяют обходить обычную последовательность вызова функции и возврата из нее. |
<signal .h> | Содержит прототипы функций и макросы для обработки различных ситуаций, которые могут возникнуть во время выполнения программы. |
<stdarg.h> | Определяет макросы для работы со списком аргументов функции при неизвестном количестве и типе аргументов. |
<stddef .h> | Содержит объявления типов, используемых для выполнения некоторых вычислений. |
<stdio.h> | Содержит прототипы стандартных библиотечных функций ввода-вывода и используемую ими информацию. |
<stdlib.h> | Содержит прототипы функций, преобразующих числа в текст и текст в числа, ведающих выделением памяти, генерирующих случайные числа и осуществляющих другие полезные операции. |
<string.h> | Содержит прототипы функций, обрабатывающих строки. |
<time .h> | Содержит прототипы функций и типы для работы с временем и датами. |
Рис. 3.6. Заголовочные файлы стандартной библиотеки
Есть нечто такое в атмосфере казино с азартными играми, что подвигает людей любого склада проматывать деньги на плюшевых столах красного дерева или у одноруких бандитов. Это — элемент случайности, возможность превратить карманные деньги в истинное богатство. Элемент случайности может быть введен в компьютерные приложения с помощью функции rand из стандартной библиотеки С.
Рассмотрим следующий оператор:
i = rand() ;
Функция rand генерирует целое число в диапазоне между 0 и RAND_MAX (символическая константа, определенная в заголовочном файле <stdlib.h>). Значение RAND_MAX должно быть по меньшей мере равно 32767 — максимальное положительное значение двухбайтового (т.е. 16-би-
Функции
191
тового) целого числа. Программы, представленные в этом разделе, были проверены на системе с максимальным значением RAND_MAX, равным 32767. Если rand действительно вырабатывает случайные целые число, то при каждом вызове rand результирующее число имеет равную вероятность оказаться любым целым, лежащим между 0 и RAND_MAX.
Диапазон значений, которые вырабатываются непосредственно функцией rand, отличается от диапазонов, которые требуются в специальных приложениях. Например, программа, моделирующая бросание монеты, требует только двух значений: 0 для «орла» и 1 для «решки». Программе, моделирующей метание кости с шестью гранями, должны бы потребоваться случайные целые числа в диапазоне от 1 до 6. Программа, которая случайным образом определяет тип следующего космического корабля (из четырех возможных), пересекающего горизонт в видеоигре, должна требовать случайные целые числа в диапазоне от 1 до 4.
Чтобы продемонстрировать rand, давайте разработаем программу моделирования 20 бросаний шестигранной игральной кости с печатью результата каждого бросания. Прототип функции rand можно найти в <stdlib.h>. Для того, чтобы выработать целые числа в диапазоне от 0 до 5, используем операцию вычисления остатка % в сочетании с rand:
rand() % 6
Это называется масштабированием. Число 6 называется масштабирующим коэффициентом. Затем мы сдвигаем диапазон чисел, добавляя 1 к полученному результату. Рис. 3.7 подтверждает, что результаты находятся в диапазоне от 1 до 6.
// Сдвинутые, масштабированные целые числа, // полученные по закону 1 + rand() % 6
#include <iostream.h> #include <iomanip.h> #include <stdlib.h>
main () {
for (int i = 1; i <= 20; i++)
{
cout « setw(10} « 1 + rand() % 6;
if (i % 5 == 0) cout « endl; }
return 0;
5 | 5 | 3 | 5 | 5 |
2 | 4 | 2 | 5 | 5 |
5 | 3 | 2 | 2 | 1 |
5 | 1 | 4 | 6 | 4 |
Рис. 3.7. Сдвинутые масштабированные целые числа, полученные по закону 1 + rand() % 6
- 116 Глава 2
- 2.13. Основы повторения, управляемого счетчиком
- 2.14. Структура повторения for (цикл)
- 120 Глава 2
- 122 Глава 2
- 2.15. Пример использования структуры for
- 124 Глава 2
- 126 Глава 2
- 2.16. Структура множественного выбора switch
- Глава 2
- 130 Глава 2
- 132 Глава 2
- 2.17. Структура повторения do/while
- 134 Глава 2
- 2.18. Операторы break и continue
- Глава 2
- 2.19. Логические операции
- 138 Глава 2
- Глава 2
- 2.21. Заключение по структурному программированию
- IfcrpyKTypa (единственный выбор)
- Глава 2
- Глава 2
- 148 Глава 2
- Глава 2
- Глава 2
- Глава 2
- 156 Глава 2
- 158 Глава 2
- 160 Глава 2
- 2.1. А) следование, выбор и повторение, b) if/else. С) управляемым счет чиком или определенным заранее, d) Метку, сигнал, флаг или лож ный сигнал.
- 162 Глава 2
- 164 Глава 2
- 166 Глава 2
- 168 Глава 2
- 170 Глава 2
- 172 Глава 2
- 174 Глава 2
- 176 Глава 2
- 178 Глава 3
- Глава 3
- 3.3. Математические библиотечные функции
- 3.4. Функции
- Глава 3
- 3.5 Определения функций
- 184 Глава 3
- 186 ГлаваЗ
- 3.6. Прототипы функций
- 188 Глава 3
- 3.7. Заголовочные файлы
- 3.8. Генерация случайных чисел
- Глава 3
- 192 Глава 3
- 194 Глава 3
- 3.9. Пример: азартная игра
- Глава 3
- 198 Глава 3
- 3.10. Классы памяти
- 200 Глава 3
- 3.11. Правила, определяющие область действия
- 202 Глава 3
- 204 Глава 3
- 3.12 Рекурсия
- Глава 3
- 6) Значения, возвращаемые после каждого рекурсивного вызова
- 3.13. Пример использования рекурсии: последовательность чисел Фибоначчи
- Глава 3
- 3.14. Рекурсии или итерации
- 212 Глава 3
- Глава 3
- Глава 4
- Глава 5
- Глава 6
- 3.15. Функции с пустыми списками параметров
- 214 Глава 3
- 3.16. Встраиваемые функции