- •Основные математические библиотечные функции.
- •Библиотечные функции генерации случайных чисел.
- •Объявление функций (прототипы функций). Описание функций. Вызов функций. Понятие формальных и фактических параметров функции.
- •Способы передачи параметров в функцию. Возвращение результатов.
- •Передача в функцию одномерных массивов.
- •Передача в функцию двумерных массивов.
- •Понятие рекурсивной функции. Пример рекурсивной функции.
- •Перегрузка функций.
- •Шаблоны функций.
- •Понятие структуры. Объявление и инициализация структур.
- •Файлы и их назначение. Логическое и физическое имя файла.
- •Открытие файлов.
- •Способы доступа к файлам.
- •Спецификаторы класса памяти.
- •Операция :: .
- •Функции препроцессора. Основные директивы препроцессора
- •Директива include. Ее назначение. Правила использования.
- •Директива #define. Ее назначение. Символьные константы и макросы. Правила использования директивы.
- •Директива #undef.
- •Условная компиляция файлов.
- •Управление выполнением директив.
- •Понятие динамической структуры. Виды динамических структур. Их отличие друг от друга.
- •Организация списка на основе массива.
- •Возможная структура элемента связного списка.
- •Однонаправленные и двунаправленные связные списки.
- •Добавление узлов в разные части связного списка.
- •Удаление узлов из разных частей связного списка.
- •Поиск элемента связного списка, содержащего указанную пользователем информацию.
Программа подготовки к экзамену по дисциплине «Алгоритмические языки и программирование» (2 семестр)
-
Модульная структура программы на языке С++. Понятие функции, ее назначение. Библиотечные функции и функции пользователя.
-
Функция – именованная последовательность операторов, выполняющая определенные действия.
-
Функции в С++ подразделяются на 2 большие группы:
-
Библиотечные функции – позволяют решать типовые задачи, содержатся в стандартных библиотеках, их много, математические функции, функции работы со строками, функции обработки ошибок.
-
Функции, разрабатываемые самим программистом(функции пользователя) – решают специфические задачи, которые не запрограммированы в библиотечных функциях.
-
-
Причины построения программы на основе функций:
-
Подход «Разделяй и властвуй» делает разработку программы более управляемой.
-
Использование существующих функций, как стандартных блоков для создания новых программ, т.е для повторного использования.
-
желание избежать в программе повторения каких либо фрагментов(код, оформленный в виде функции может быть выполнен в
-
-
-
Основные математические библиотечные функции.
-
Библиотека <math.h>
-
sqrt(x) - корень из x(sqrt(25.0)=5.0)
-
exp(x) - экпоненциальная функция(exp(1.0)=2.718282)
-
log(x) – натуральный логарифм x(log(2.718282)=1.0)
-
log10(x) – десятичный логарифм x(log10(10.0)=1.0)
-
fabs(x) - модуль x
-
ceil(x) – округление x до наименьшего целого, не меньшего чем x(ceil(8.2)=9.0 ceil(-8.2)=-8.0)
-
floor(x) – округление x до наибольшего целого, не большего, чем x(floor(8.2)=8.0 floor(-8.2)=-9.0)
-
pow(x, y) – возведение x в степень y(pow(9, 0.5)=3 pow(2,8)=256.0)
-
fmod(x, y) – остаток от x/y, как число с плавающей точкой (fmod(13.657, 2.333)=1.992)
-
sin(x), cos(x), tan(x) – синус, косинус, тангенс x(x в радианах) (sin(0.0)=0.0, cos(0.0)=1.0, tan(0.0)=0.0)
-
-
Все математические библиотечный функции возвращают значение типа double
-
-
Библиотечные функции генерации случайных чисел.
-
i=rand(); генерация случайного числа в диапазоне 0->RAND_MAX
-
Определяется в заголовочном файле <stdlib.h>
-
Диапазон может отличаться от (0-Rand_Max)
Для этого используется масштабирование и сдвиг.
Масштабирование задает максимальный диапазон выбора случайного числа
i=rand()%макс.диапазон;
будет выбирать случайное число от 0 до макс.диапазон-1
Сдвиг задает начальное число диапазона выбора случайных чисел.
i=число сдвига+(-)rand()%макс.диапазон;
будет выбирать случайное число от 0+число сдвига до
(макс.диапазон-1)+число сдвига.
-
Объявление функций (прототипы функций). Описание функций. Вызов функций. Понятие формальных и фактических параметров функции.
-
Прототип функции указывает значение какого типа функция должна возвращать, какие она имеет аргументы, их количество тип и последовательность передачи.
-
Прототип ф-й является одной из наиболее важной особенностью С++.
Компилятор используют информацию в прототипе для проверки правильности вызова функции.
Другой важной особенностью прототипа функции является приведение типов аргументов, то есть задание аргументов подходящего типа.
тип возвр.значения имя функции(список типов аргументов);
-
Функция активизируется путем ее вызова. В вызове указывается ее имя и список аргументов.
имя функции(список аргументов);
либо переменная=имя функции(список аргументов);
-
Тело функции(описание функции) располагается сразу под заголовком и заключено в фигурные скобки. В теле функции может содержаться сколько угодно операторов. Но обязательно должен присутствовать оператор return. Оператор return возвращает значение. Если тип возвр. значения-void, то оператор return не пишется.
-
Формальные параметры используются непосредственно в функции.
-
Фактические параметры используются при вызове функции, то есть это имена переменных, которые использовались в основной(или любой другой) функции до вызова искомой функции.
-
Способы передачи параметров в функцию. Возвращение результатов.
-
Существует 3 способа передачи параметров в функцию: по ссылке, по значению и через указатель.
-
По значению:
-
В функцию просто передается значение переменной, на входе в функцию фактические параметры подставляются на место формальных в том же порядке.
int f(int a, int b);
f(x, y);
-
По ссылке:
Ссылка-синоним имени некоторого объекта, и в то же время она содержит адрес объекта, поэтому ссылку, в отличие от указателя не требуется разыменовывать, если передаем в функцию ссылку. (double &x), а при вызове подставляем на ее место аргумент, тем самым мы передаем в функцию адрес аргумента. Позволяет передавать значение из функции в вызывающую программу.
-
Через указатель:
Можно передавать в функцию данные через указатель, для этого применяется разадресация и взятие адреса явным образом.
int f(int a, int *b);
f(a, &b);
-
У передачи по значению есть один недостаток. Для размещения в стеке копии параметров большого размера требуется время и память, стек может переполниться. Более безопасно и эффективно передавать по ссылке, да не по простой, а по константной.
int f(const int &a, int &b);
y=f(a, b);