- •Лекция 1 Создание консольного приложения
- •2. Консоль. Построение консольного проекта
- •3. Запуск приложения
- •4. Сохранение и редактирование проекта
- •Лекция 2
- •4. Функции форматированного ввода и вывода
- •4.1. Функция форматированного ввода с клавиатуры
- •4.2. Функция форматированного вывода на экран
- •5. Математические функции
- •Лекция 3 Линейные вычислительные процессы
- •1. Алгоритм. Управляющие структуры
- •2. Линейные вычислительные алгоритмы
- •Лекция 4 Разветвляющиеся вычислительные процессы
- •1. Управляющая структура «развилка». Логические операции и операции отношения
- •2.1. Условный оператор if()
- •2.2. Условное выражение
- •2.3. Оператор выбора switch()
- •Лекция 5 Программирование разветвляющихся вычислительных процессов
- •Лекция 6 Циклические вычислительные процессы.
- •1. Типы циклов
- •3. Операторы безусловного перехода
- •Лекция 7 Вычисление последовательностей
- •4. Примеры вычисления последовательностей
- •5. Структура алгоритмов вычисления рекуррентных последовательностей
- •Лекция 8 Одномерные массивы
- •1. Массивы
- •1.1. Примеры программ обработки одномерных массивов
- •Лекция 9 Алгоритмы сортировки одномерных массивов
- •1. Сортировка одномерных массивов
- •1.1. Метод пузырька (метод обменной сортировкой с выбором)
- •1.2. Сортировка выбором
- •1.3. Сортировка простыми вставками
- •Лекция 10 Двухмерные массивы
- •1. Двухмерные массивы
- •Лекция 11 Алгоритмы матричной алгебры
- •1. Алгоритмы матричной алгебры
- •Лекция 12 Динамические массивы
- •1. Память компьютера. Адресное пространство
- •2. Динамическая память
- •3. Адреса и указатели
- •4. Указатели и массивы. Динамические массивы
- •5. Проблемы, связанные с указателями
- •6. Поразрядные операции
- •Лекция 13
- •1.2. Способы объявления и обращения к элементам двухмерных массивов
- •Лекция 14 Символы и строки
- •1. Символьный тип данных
- •2. Строки
- •Лекция 15 Структуры
- •1. Понятие структуры
- •2. Определение нового имени типа
- •3. Массивы структур. Указатели на структуры
- •3.1. Определение статического массива структур
- •3.1. Определение динамического массива из n структур
- •Лекция 16 Файлы
- •1. Потоковый ввод-вывод данных
- •3. Понятие файла. Функции работы с файлами
- •Лекция 17 Файлы
- •Лекция 18 Функции пользователя
- •I. Приёмы построения алгоритмов
- •2. Понятие функции
- •2.1. Определение функции
- •2.2. Область видимости переменных
- •2.3. Параметры функции
- •2.4. Описание функции
- •2.5. Организация вызова функции
- •2.5. Передача параметров в функцию
- •Лекция 19 Многофайловые программы
- •1. Создание многофайловой программы. Создание и добавление головного файла в проект
- •3. Рекурсия
- •Лекция 20 Нахождение приближенного значения корня нелинейного уравнения
- •На отрезке [a;b] с заданной точностью eps
- •1.1. Метод дихотомии (половинного деления)
- •1.2. Метод хорд
- •1.3. Метод касательных (Ньютона)
- •Лекция 21 Нахождение приближенного значения определенного интеграла
- •1. Нахождение приближенного значения определенного интеграла с заданной точностью
- •Лекция 22 Объектно-ориентированное программирование
- •Полиморфизм – это свойство класса, позволяющее определить одно и то же по имени, но разное по смыслу действие. Основные этапы ооп:
- •Уточнённое имя принадлежит классу (т.Е. Компонентной) функции
- •Лекция 23 Объектно-ориентированное программирование
- •1. Конструкторы и деструкторы
- •Лекция 24 Объектно-ориентированное программирование
- •1. Компонентные данные и компонентные функции
- •1.1. Компонентные данные
- •1.2. Определение компонентных функций
- •Лекция 25 Объектно-ориентированное программирование
- •1. Свойства классов
- •1.1. Наследование классов
- •1.2. Полиморфизм
- •Библиографический список
2.4. Описание функции
Пример описания функции:
int func(int a, char *str, float b[])
{
…//операторы тела функции
}
Строка int func(int a, char *str, float b[]) – это заголовок функции; функция возвращает целочисленный результат, func – это имя функции, a, str, float b[] – формальные параметры функции (a – целочисленная переменная, str – указатель на тип char, т.е. строка, b – имя одномерного массива значений типа float).
Так как функция – это самостоятельная единица программы, то есть смысл выделять (описывать) функции в отдельных головных файлах, затем подключать их при помощи соответствующей директивы препроцессора и использовать написанные функции в главной программе.
2.5. Организация вызова функции
Форма вызова функции:
<имя_функции>(<список_фактических_параметров>);
Если при описании функции список формальных параметров отсутствовал, то при вызове функции <список_фактических_параметров> так же должен отсутствовать. При вызове функции ей передается управление. Опишем организацию вызова функции.
Каждая строка в программе определяется своим адресом. Строка вызывающей функции, в которой вызывается другая функция, также имеет свой адрес, называемый точкой вызова функции. При вызове функции,в ОП организуется структура, которая называется стеком.
При вызове функции стек заполняется следующим образом:
В стек помещается адрес вызова функции.
В стек копируются значения переданных в функцию фактических
параметров.
Выполняются операторы тела функции.
После того как функция завершила свою работу из стека в ячейки ОП, выделенные под переменные, являющиеся фактическими параметрами, копируются (возвращаются) скопированные туда их же значения при вызове функции.
Из стека забирается адрес точки вызова функции, и по этому адресу происходит возврат в вызывающую функцию.
Затем выполняются операторы вызывающей функции, следующие за строкой вызова функции.
2.5. Передача параметров в функцию
В языке С++ может быть передача параметров по значению или по адресу. Формальным параметром-значением может быть только имя переменной определенного типа, например стандартного или структуры, определенной пользователем. Массивы, функции и файлы в языке С++ передаются только при помощи указателей.
Фактическим параметром, соответствующим формальному параметру-значению, для стандартных типов может быть выражение, результат которого при вызове функции копируется в стек, т.е. при передаче в функцию значения параметра любого типа в виде выражения, определяющего значение переменной – формального параметра, оно копируется в стек. Изменение этого значения в теле функции не ведет к изменению оригинального значения соответствующего ему фактического параметра в вызывающей функции.
При использовании формального параметра-указателя в качестве фактического параметра передается указатель, т.е. адрес переменной. Только указатели обеспечивают доступ не к копиям значений, а к самим значениям переменных (фактических параметров) вызывающей функции. В зависимости от адресуемой переменной указатель может быть адресом данных любого типа, в том числе массива, структуры, массива структур, файла, функции и указателя. В стек копируется адрес фактического параметра, а не его оригинальное значение. Таким образом, передавая через указатель адрес фактического параметра, в теле вызываемой функции можно будет изменить значение по передаваемому адресу, следовательно, по завершении работы функции оригинальное значение фактического параметра будет изменено. При этом не будет изменено значение адреса фактического параметра.
Следует отметить, что имена фактических и формальных параметров могут не совпадать при описании и вызове функции.