ВВЕДЕНИЕ
Цель курсовой работы – получение навыков по алгоритмизации и программированию.
В данной курсовой работе решаются задачи по и изучению структуры подпрограммы, механизмов передачи параметров в подпрограмму, возврата результатов из подпрограммы, и вызова подпрограммы на выполнение; по изучению теоретических вопросов использования системы программирования C и C++. В ходе курсовой работы необходимо разработать алгоритмы решения четырех задач с использованием вспомогательных алгоритмов, оформить в виде блок-схемы основной и вспомогательный алгоритмы для каждой задачи, подготовить тесты для отладки программы и написать и отладить комментированные программы на языке С++.
Подпрограмма – это именованная группа операторов, решающая какую-то конкретную задачу. Её можно запустить, вызвав по имени, любое количество раз из различных мест программы. Подпрограммы позволяют избавится от повторения однотипного кода, делают код более понятным и структурированным.
Чтобы подпрограмма могла выполнять не только одинаковые действия, но и похожие алгоритмы с различающимися параметрами, существует механизм передачи параметров из основной программы в подпрограмму. В подпрограмме используются аргументами или параметры, конкретные значения которых задаются только в момент вызова подпрограммы.
Вызовом подпрограммы называется обращение к ней по имени с целью её использования. Вызов — это запуск подпрограммы.
Подпрограмма может как просто выполнять какие-то действия (например, выводить массив на экран), так и возвращать конкретный результат в виде некоторого значения (например, поиск максимального элемента массива и возврат получившегося числа). В C++ подпрограммы называются функциями и могут быть двух типов: возвращающими или не возвращающими значение.
Таким образом, функция — это определенная группа операций с уникальным именем, которая может вызываться по имени в любом месте программы, получать определенный набор значений из внешней программы в момент вызова и возвращать в качестве значения некоторый результат заранее заданного типа.
Самым простым примером функции является main. Она автоматические вызывается при запуске программы.
Любая функция должна быть объявлена до того как будет вызвана. Объявление функции, аналогично объявлению переменной: указываются имя функции, тип значения, которое она может возвращать и набор её параметров (для каждого параметра задаётся тип и, при желании, имя). Объявление функции называют также её прототипом.
Определение или описание функции содержит перечень тех операций, которые будут производится внутри функции. Блок определения функции называется также её телом.
Для завершения выполнения функции и возврата значения из неё используется оператор return. Тип возвращаемого значения должен совпадать с типом результата в объявлении функции.
При работе с функциями следует различать формальные и фактические параметры. Формальные параметры существуют в прототипе и теле определения функции. Они задаются некоторыми уникальными именами и внутри функции доступны как локальные переменные. Фактические параметры существуют в основной программе. Они указываются при вызове функции на месте формальных. В момент вызова функции значения фактических параметров присваиваются формальным. Соответственно, имена формальных и фактических параметров могут совпадать и это не вызовет конфликта.
Необходимо используя первую интерполяционную формулу Ньютона для заданного значения аргумента х*=0,1035 вычислить приближенное значение функции, заданной таблично. Значения функции приведены в таблице 2.1.
3 РЕШЕНИЕ ЗАДАЧИ 2
Во второй задаче необходимо, используя обобщенную формулу трапеции, вычислить определенный интеграл с заданной точностью.
Для решения задачи разработаны алгоритмы z2_trapecija и formula_trapecii. Во втором алгоритме происходят непосредственно вычисления, а в первом задается количество узлов и проверяется соответствует ли текущая погрешность вычислений необходимой точности. Если да, то вычисления заканчиваются и результат выводится на экран, в противном случае количество узлов увеличивается в двое и вычисления проводятся снова. Блок-схема алгоритма formula_trapecii представлена на рисунке 3.1, z2_trapecija на рисунке 3.2. Кроме того были разработаны подпрограммы fun_1 и fun_2 для вычисления значений подынтегральных функций в разных точках.
В третьей задаче необходимо с помощью метода Коши-Эйлера решить задачу Коши для дифференциального уравнения
Для решения задачи был разработан алгоритм z3_koshi, кроме того использовалась подпрограмма fun_3 принимающая в качестве аргументов значения x и у и возвращающая значение функции.
Блок схема алгоритма z3_koshi представлена на рисунке 4.1.
В четвертой задаче необходимо, используя метод прогонки, найти решение краевой задачи для обыкновенного дифференциального уравнения второго порядка:
Для решения задачи были разработаны следующие алгоритмы: progonka – для выполнения основных действий, find_koef – для формирования массивов коэффициентов a, b, c, f, find_alpha_betta – для формирования массивов
и
, find_u – для формирования массива
, который и будет являться решением задачи. Кроме того алгоритмы e_x, z_x, q_x – для вычисления значений соответствующих функций при разных х. Блок-схема алгоритмов представлена на рисунках 5.1-5.4.
Для удобства работы с задачами был разработан основной алгоритм, объединяющий решения всех задач. Пользователю предлагается выбрать номер задачи для решения и в зависимости от его выбора в основном алгоритме происходит вызов вспомогательных функций, описанных выше. После решения какой-либо задачи пользователю снова предоставляется выбор задачи. При вводе значения отличного от предложенных программа завершает свою работу. Текст алгоритма представлен в приложении А. Результат выполнения представлен на рисунке 6.1. Блок-схема на рисунке 6.2.
В ходе выполнения курсового проекта были изучены различные теоретические вопросы использования системы программирования С++, а также получены навыки по алгоритмизации и программированию.
Были изучены структура подпрограммы, механизмы передачи параметров в подпрограмму, возврата результатов из подпрограммы и вызова подпрограммы на выполнение.
В ходе выполнения курсового проекта были решены четыре задачи, разработаны алгоритмы, тесты и комментированный программный код для каждой из них. Алгоритмы для каждой задачи оформлены в виде блок-схем. Программа успешно прошла все разработанные тесты.
Для организации работы пользователя с задачами в основном алгоритме был разработан удобный интерфейс, позволяющий пользователю выбирать необходимые задачи для выполнения.
СКРИНШОТЫ РАБОТЫ



1. Функции в С++ [Электронный ресурс]. – 2012. – Режим доступа: http://itedu.ru/courses/cpp/functions-in-cpp – Дата доступа: 28.11.2017.
2. Береншард, Ю. Прикладная и инженерная математика / Ю. Береншард // Прикладная и инженерная математика [Электронный ресурс]. – 2017. – Режим доступа: http://www.simumath.net/library/book.html?code=Interpol_introduction – Дата доступа: 28.11.2017.
3. Михайлев, В. Интеграл, методы интегрирования / В. Михайлев // Интеграл, методы интегрирования [Электронный ресурс]. – 2017. – Режим доступа: http://www.cleverstudents.ru/integral/method_of_parabolas.html – Дата доступа: 28.11.2017.
4. Алибеков, И. Численные методы: Учебное пособие / И. Алибеков – М.: МГИУ, 2008. – 220 с.
5. Численное решение обыкновенных дифференциальных уравнений [Электронный ресурс]: – Режим доступа: http://pers.narod.ru/study/methods/05.html – Дата доступа: 1.12.2017.
6. Страуструп, Б. Программирование: принципы и практика с использованием С++ / Б. Страуструп. – Вильямс, 2017. - 1328 с.