- •Лекция 1 Создание консольного приложения
- •2. Консоль. Построение консольного проекта
- •3. Запуск приложения
- •4. Сохранение и редактирование проекта
- •Лекция 2
- •4. Функции форматированного ввода и вывода
- •4.1. Функция форматированного ввода с клавиатуры
- •4.2. Функция форматированного вывода на экран
- •5. Математические функции
- •Лекция 3 Линейные вычислительные процессы
- •1. Алгоритм. Управляющие структуры
- •2. Линейные вычислительные алгоритмы
- •2.1. Условный оператор if()
- •2.2. Условное выражение
- •2.3. Оператор выбора switch()
- •Лекция 5 Программирование разветвляющихся вычислительных процессов
- •Лекция 6 Циклические вычислительные процессы.
- •1. Типы циклов
- •3. Операторы безусловного перехода
- •Лекция 7 Вычисление последовательностей
- •4. Примеры вычисления последовательностей
- •5. Структура алгоритмов вычисления рекуррентных последовательностей
- •Лекция 8 Одномерные массивы
- •1. Массивы
- •1.1. Примеры программ обработки одномерных массивов
- •1.2. Сортировка выбором
- •1.3. Сортировка простыми вставками
- •Лекция 10 Двухмерные массивы
- •1. Двухмерные массивы
- •Лекция 11 Алгоритмы матричной алгебры
- •1. Алгоритмы матричной алгебры
- •Лекция 12 Динамические массивы
- •1. Память компьютера. Адресное пространство
- •2. Динамическая память
- •3. Адреса и указатели
- •4. Указатели и массивы. Динамические массивы
- •5. Проблемы, связанные с указателями
- •6. Поразрядные операции
- •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. Передача параметров в функцию
- •3. Рекурсия
- •Лекция 20 Нахождение приближенного значения корня нелинейного уравнения
- •На отрезке [a;b] с заданной точностью eps
- •1.1. Метод дихотомии (половинного деления)
- •1.2. Метод хорд
- •1.3. Метод касательных (Ньютона)
- •Лекция 22 Объектно-ориентированное программирование
- •Полиморфизм – это свойство класса, позволяющее определить одно и то же по имени, но разное по смыслу действие. Основные этапы ооп:
- •Уточнённое имя принадлежит классу (т.Е. Компонентной) функции
- •Лекция 23 Объектно-ориентированное программирование
- •1. Конструкторы и деструкторы
- •1.2. Определение компонентных функций
- •Лекция 25 Объектно-ориентированное программирование
- •1. Свойства классов
- •1.1. Наследование классов
- •1.2. Полиморфизм
- •Библиографический список
2.3. Параметры функции
Параметры функции определяются списком формальных параметров. Область видимости формальных параметров – тело функции. Имена формальных параметров используются в операторах тела функции. Формальными параметрами могут быть только идентификаторы.
Кроме формальных параметров есть фактические. При вызове функции фактические параметры заменяют формальные, т.е. все формальные параметры в теле функции будут заменены на соответствующие фактические. Этот процесс называется передачей фактических параметров в функцию. Это делается для обмена фактическими данными между вызывающей и вызываемой функцией и получения фактического результата после завершения работы вызываемой функции для передачи его в вызывающую функцию.
Между списками формальных и фактических параметров при вызове функции должно быть соответствие:
-
количества формальных и фактических параметров;
-
последовательности формальных и соответствующих им фактических параметров (первому формальному параметру соответствует первый фактический, второму – второй и т. д.);
-
типов формальных и соответствующих им фактических параметров.
Сопоставление формальных и фактических параметров производится при каждом вызове функции: первому формальному параметру будет сопоставлен первый фактический, второму – второй и т.д. При передаче параметров нарушение соответствия по количеству или типам параметров может привести к серьезным ошибкам, например к нарушению границ переменных, в том числе массивов. Некорректная по смыслу передача фактических параметров может привести к неверному результату, хотя алгоритм, записанный в функции, будет верен.
Список формальных параметров может содержать нуль и более объявлений переменных, разделенных запятыми. При объявлении формальных параметров для каждого элемента списка формальных параметров объявляется имя и тип только этого параметра. Объявление каждого формального параметра имеет форму
<имя_типа_параметра> <идентификатор_параметра>
Здесь <имя_типа_параметра> – имя допустимого типа значений, стандартного или определенного пользователем; <идентификатор_параметра> – имя формального параметра.
Отсутствие имени типа параметра в списке формальных параметров является синтаксической ошибкой.
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. Организация вызова функции
Форма вызова функции:
<имя_функции>(<список_фактических_параметров>);
Если при описании функции список формальных параметров отсутствовал, то при вызове функции <список_фактических_параметров> так же должен отсутствовать. При вызове функции ей передается управление. Опишем организацию вызова функции.
Каждая строка в программе определяется своим адресом. Строка вызывающей функции, в которой вызывается другая функция, также имеет свой адрес, называемый точкой вызова функции. При вызове функции,в ОП организуется структура, которая называется стеком.
При вызове функции стек заполняется следующим образом:
-
В стек помещается адрес вызова функции.
-
В стек копируются значения переданных в функцию фактических
параметров.
-
Выполняются операторы тела функции.
-
После того как функция завершила свою работу из стека в ячейки ОП, выделенные под переменные, являющиеся фактическими параметрами, копируются (возвращаются) скопированные туда их же значения при вызове функции.
-
Из стека забирается адрес точки вызова функции, и по этому адресу происходит возврат в вызывающую функцию.
Затем выполняются операторы вызывающей функции, следующие за строкой вызова функции.