- •Лекция 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. Полиморфизм
- •Библиографический список
Лекция 18 Функции пользователя
Цели:
-
познакомиться с приемами построения алгоритмов;
-
получить представление о пользовательских функциях, освоить методику их написания.
I. Приёмы построения алгоритмов
Для создания работающей программы разработчик должен пройти три основных этапа:
проектирование – построение алгоритма решения поставленной задачи;
кодирование – перевод алгоритма на язык программирования;
отладка – проверка работы программы на заранее разработанном наборе тестовых примеров (под тестовым примером подразумевают набор исходных данных и результат, который должен получиться в процессе выполнения разработанной программы).
Существуют разные способы создания алгоритмов. Известна доказанная теорема о том, что любой алгоритм можно построить при помощи трех алгоритмических структур: следования, развилки и цикла. Объединяя различным образом эти структуры можно разработать алгоритм, а по нему составить программу для решения любой логической задачи на компьютере. В этом случае говорят о структурном программировании.
Одним из приемов структурного программирования является разбиение (декомпозиция) решаемой задачи на логически завершенные подзадачи. Для каждой подзадачи строится так называемый вспомогательный алгоритм. В связи с этим можно представить два способа построения алгоритмов:
метод последовательной детализации;
сборочный метод.
Сборочный метод предполагает, что при решении задачи у программиста должна быть библиотека модулей (модуль содержит подпрограмму, которая позволяет решать общие, но небольшие задачи). При решении достаточно сложной задачи алгоритм можно составить и таких модулей. Недостаток метода заключается в том, что для решения конкретной задачи необходимо наличие алгоритмов решённых задач.
Метод последовательной детализации можно разбить на три этапа:
-
Строится основной алгоритм решения общей задачи, т.е. исходная задача разбивается на логически завершённые подзадачи.
-
Для каждой подзадачи определяются входные данные, от которых функционально будет зависеть решение конкретной подзадачи; выходной параметр, который должен быть получен на выходе решения конкретной подзадачи; описывается вспомогательный алгоритм решения этой подзадачи.
-
Каждому вспомогательному алгоритму присваивается уникальное имя, и решение исходной задачи будет строиться как логическая цепочка правильно построенных вспомогательных алгоритмов.
Метод последовательной детализации используется для решения задач большой сложности. При этом к построению алгоритмов можно привлечь целый коллектив программистов.
2. Понятие функции
2.1. Определение функции
В любом языке программирования алгоритм решения подзадачи можно описать в виде отдельной подпрограммы. В языке С++ каждая подпрограмма называется функцией – это конструкция языка программирования, связанная с решением конкретной части поставленной задачи. Функция – это самостоятельная единица программы. В языке С++ функции разделяются на библиотечные (описаны в головных файлах stdio.h, math.h, dos.h, string.h и др.) и пользовательские (разработаны самим программистом). В языке С++ всегда есть хотя бы одна функция – главная функция main().
Определение функции состоит из описания заголовка и тела функции. После заголовка функции точка с запятой не ставится. Общий вид функции:
<тип_возвращаемого_результата><имя_функции>(<список_формальных_параметров>)
{
<тело_функции>
}
<тип_возвращаемого_результата> – тип результата работы функции, может быть целочисленным, вещественным, символьным или указателем на любой допустимый тип. Результат работы функции возвращается с помощью оператора return и записывается сразу после этого оператора в виде переменной или выражения, допустимого в языке С++. Если результат возвращается с помощью выражения, то это выражение записывается после оператора return в круглых скобках. Если в заголовке функции тип возвращаемого результата не указан, то по умолчанию это тип int. Функцию, которая возвращает результат с помощью оператора return, можно использовать в выражениях. Если функция не возвращает никакого результата (например, с помощью функции производится вывод на печать элементов массива), то типом возвращаемого результата будет тип void и в теле функции не должен присутствовать оператор return. В описании метода последовательной детализации результат работы функции называется выходным параметром.
<имя_функции> – идентификатор (применительно к методу последовательной детализации – это уникальное имя некоторого вспомогательного алгоритма), при помощи которого функцию можно вызвать для выполнения. Надо стараться задавать такие имена пользовательским функциям, которые не совпадали бы с ключевыми словами языка С++.
<список_формальных_параметров> определяет типы и имена формальных параметров. В <список_формальных_параметров> параметры разделяются запятыми. С точки зрения построения алгоритмов методом последовательной детализации, формальные параметры – это входные данные, от которых функционально зависит решение конкретной подзадачи. Таким образом, формальные параметры – это переменные, которые позволяют произвести обмен между вызываемой (решает подзадачу) и вызывающей функциями. <список_формальных_параметров> может отсутствовать. В этом случае в заголовке функции после ее имени пишутся «пустые» скобки.
<тело функции> – алгоритм решения подзадачи, включая описание локальных, т.е. нужных только внутри тела функции, переменных, записанный на языке программирования. Операторы тела функции выполняются до первого оператора return. Если в теле функции нет такого оператора (т.е. функция не возвращает никакого результата), то выполняются все операторы до закрывающейся операторной скобки.