Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

polevoy_cpp_2012_spring_lecture_12

.pdf
Скачиваний:
11
Добавлен:
20.04.2015
Размер:
203.05 Кб
Скачать

Генерация псеводслучайных чисел в диапазоне

от 0 до n - 1 rand() % n

от n1 до n2 - 1

n1 + (rand() % (n2 – n1))

28.04.2012

cppNewb.ru

31

Инициализация генератора псевдослучайных чисел

определяет начальное значение (seed) для последовательности

используется для улучшения качества

псевдослучайной последовательности

в качестве начального значения используется некоторое “случайное” значение

28.04.2012

cppNewb.ru

32

Текущее время (time)

time_t time(time_t* timer);

текущее время

число секунд с 00:00, 1 января 1970 UTC

аргумент м.б. 0

пример:

srand(static_cast<unsigned int>(time(0)));

28.04.2012

cppNewb.ru

33

Рекурсия

вызов функции из неё же самой, непосредственно (простая рекурсия) или через другие функции

(сложная или косвенная рекурсия)

в С++ « использует» стек вызова

может заменятся циклом

возможно с использованием стека

28.04.2012

cppNewb.ru

34

Рекурсия (плюсы и минусы)

естественный способ (вычислений)

простота организации и наблюдения

зацикливания и переполнения стека

сложность соблюдения допустимой « глубины»

сложность косвенной рекурсии

использовать не рекомендуется

28.04.2012

cppNewb.ru

35

Пример использования рекурсии

/**

рекурсивное вычисление факториала

*/

int factorial(const int n)

{

return n ? (n * factorial(n - 1)) : 1;

}

28.04.2012

cppNewb.ru

36

Указатель на функцию

ТипВозврата (*имя)(список_аргументов)

пример:

bool (*pCmp)(const int, const int)(0); pCmp = compareByIdx;

pCmp(i1, i2); // или (*pCmp)(i1, i2)

28.04.2012

cppNewb.ru

37

Функция обратного вызова

(call back function)

передача исполняемого кода в качестве одного из параметров другого кода

позволяет

исполнять в функции код, который задаётся в аргументах при её вызове

определять конкретный алгоритм на этапе выполнения (а не компиляции) программы

28.04.2012

cppNewb.ru

38

Функция обратного вызова (назначение)

подзадача, которая используется для обработки данных внутри некоторой функции

“ телефонная связь”, используемая для того, чтобы “связываться” с тем, кто вызвал процедуру, при наступлении какого-то события

28.04.2012

cppNewb.ru

39

Сортировка (qsort)

void qsort(void* base, size_t num,

size_t size,

int (*cmp)(const void*, const

void*));

сортировка num блоков памяти размера size в массиве base

для сравнения используется функция cmp

28.04.2012

cppNewb.ru

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]