Программирование инженерных задач на базе использования алгоритмов циклической структуры на языке C в среде VS C++
Покупка
Тематика:
Программирование на C и C++
Год издания: 2019
Кол-во страниц: 136
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7038-5142-5
Артикул: 803784.01.99
Приведены краткие теоретические сведения по организации программ циклической структуры на примере алгоритмов вычисления сумм, произведений, суммы бесконечного ряда, определенного интеграла, уточнения корней уравнений. Рассмотрена организация вложенных циклов, показано решение таких задач, как вычисление определенного интеграла с заданной точностью, поиск наибольшего (наименьшего) значения функции с требуемой точностью, обработка матриц, сортировка элементов массива. Приведены примеры программной реализации изучаемых алгоритмов, задания для выполнения лабораторных работ по каждой из рассматриваемых тем. Представлены полные комплекты заданий (не менее 25 вариантов), разных по характеру, но одинакового уровня сложности.
Для студентов первого курса машино- и приборостроительных специальностей. Может быть полезно преподавателям как сборник заданий при проведении лабораторных работ.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Ю.Е. Алексеев, А.В. Куров Программирование инженерных задач на базе использования алгоритмов циклической структуры на языке C в среде VS C++ Модуль 2 Учебное пособие Федеральное государственное бюджетное образовательное учреждение высшего образования «Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский университет)»
ISBN 978-5-7038-5142-5 © МГТУ им. Н.Э. Баумана, 2019 © Оформление. Издательство МГТУ им. Н.Э. Баумана, 2019 УДК 004.43 ББК 32.973 А47 Издание доступно в электронном виде по адресу bmstu.press/catalog/item/6197/ Факультет «Информатика и системы управления» Кафедра «Программное обеспечение ЭВМ и информационные технологии» Рекомендовано Научно-методическим советом МГТУ им. Н.Э. Баумана в качестве учебного пособия Алексеев, Ю. Е. А47 Программирование инженерных задач на базе использо вания алгоритмов циклической структуры на языке C в среде VS C++. Модуль 2 дисциплины «Информатика» : учебное пособие / Ю. Е. Алексеев, А. В. Куров. — Москва : Издательство МГТУ им. Н. Э. Баумана, 2019. — 134, [2] с. : ил. ISBN 978-5-7038-5142-5 Приведены краткие теоретические сведения по организации программ циклической структуры на примере алгоритмов вычисления сумм, произведений, суммы бесконечного ряда, определенного интеграла, уточнения корней уравнений. Рассмотрена организация вложенных циклов, показано решение таких задач, как вычисление определенного интеграла с заданной точностью, поиск наибольшего (наименьшего) значения функции с требуемой точностью, обработка матриц, сортировка элементов массива. Приведены примеры программной реализации изучаемых алгоритмов, задания для выполнения лабораторных работ по каждой из рассматриваемых тем. Представлены полные комплекты заданий (не менее 25 вариантов), разных по характеру, но одинакового уровня сложности. Для студентов первого курса машино- и приборостроительных специальностей. Может быть полезно преподавателям как сборник заданий при проведении лабораторных работ. УДК 004.43 ББК 32.973
Предисловие В данном учебном пособии продолжается изучение основ программирования на языке C в среде программирования MS VS, начатое в предыдущей части «Введение в информационные технологии и программирование на языке C в среде VS C++. Модуль 1». Теоретический материал сопровождается примерами программ, а также заданиями для выполнения лабораторных работ. Учебное пособие предназначено для самостоятельной проработки студентами бакалавриата и специалитета материала модуля 2 дисциплины «Информатика», входящей в образовательную программу по направлениям подготовки 09.03.01 «Информатика и вычислительная техника», 11.05.01 «Радиоэлектронные системы и комплексы», 15.03.06 «Мехатроника и робототехника», 16.03.01 «Техническая физика», 23.05.01 «Наземные транспортно-технологические средства», 24.05.06 «Системы управления летательными аппаратами», 27.03.04 «Управление в технических системах». Материал учебного пособия имеет особое значение для изуче ния всего курса программирования, так как в нем рассматриваются алгоритмы решения основных задач, с которыми студенты встречаются на протяжении всего времени изучения дисциплины, а также в последующей профессиональной деятельности. Закладываются основы алгоритмического мышления студентов, что является одной из важнейших задач преподавания информатики. После изучения дисциплины студенты смогут: – перечислять и объяснять основные термины, используемые в процессе разработки программ на языке программирования; – разрабатывать алгоритмы со структурой простых и вложен ных циклов и представлять их в виде схем; – записывать алгоритмы на изучаемом языке программиро вания; – программно реализовывать алгоритмы простой цикли ческой структуры для решения следующих задач: вычисление сумм и произведений, вычисление значения определенного интеграла, расчет суммы бесконечного ряда, уточнение корня уравнения;
– программно реализовывать алгоритмы со структурой вло женных циклов для решения следующих задач: вычисление значения определенного интеграла с заданной точностью, расчет наибольшего (наименьшего) значения функции с требуемой точностью, обработка многомерных массивов, сортировка массивов; – анализировать ошибки, содержащиеся в программе, прово дить тестирование и отладку программ, в том числе с использованием встроенных средств отладки среды программирования. Изучение модуля 2 данной дисциплины предполагает предва рительное освоение в рамках школьного курса следующих предметов: – основы информатики; – математика (необходимо знание таких понятий, как наи большее и наименьшее значение функции, экстремум функции, производная, интеграл, геометрический смысл производной и интеграла); – иностранный язык (английский). В соответствии с действующей программой дисциплины на лекционных занятиях рассматриваются общие вопросы информатики: понятия информатики и информационных технологий; свойства информации; математические и логические основы ЭВМ; технические средства и программное обеспечение; сети ЭВМ; базы данных. Овладение основами программирования и изучение конкретного языка программирования происходят только при выполнении упражнений и лабораторных работ. Лабораторные работы предназначены для приобретения на выков и опыта практической реализации решения инженерных задач. Таким образом, вопросы программирования излагаются в достаточно сжатом и одновременно насыщенном виде только во время упражнений. Значительную роль играет самостоятельная работа студентов, которая включает в себя проработку лекционного курса, практических занятий; подготовку к лабораторным работам (разработку алгоритма решаемой задачи, кодирование алгоритма на языке программирования); тестирование и отладку разработанной программы; анализ полученных результатов; оформление отчета при выполнение лабораторных работ в компьютерных классах. Для обеспечения успешной работы студентам необходимы учебные пособия, в которых в сжатом виде излагаются основные теоретические положения, иллюстрируемые наглядными практическими примерами.
Учебное пособие может оказать существенную помощь сту дентам при подготовке и выполнении лабораторных работ и рубежного контроля. Поскольку на рубежном контроле предлагаются задания, соответствующие по уровню сложности рассматриваемым заданиям, то студент, разрабатывая предлагаемые программы, заранее может проверить и оценить уровень своей подготовки до проведения контрольного мероприятия. Каждая рассматриваемая тема завершается списком вопросов для самопроверки, а также комплектом заданий, которые используются при проведении лабораторных работ. Выполнение данных заданий способствует успешной сдаче рубежного контроля. Их следует выполнять строго по графику учебной работы, обсуждая результаты на семинарах и консультациях. Текущий контроль проводится в процессе всего обучения, его итоговые результаты складываются из следующих оценок: – защита лабораторных работ; – выполнение контрольной работы (рубежного контроля); – работа на семинарских занятиях (упражнениях). Текущий контроль служит для оценки владения студентом ключевыми, базовыми положениями предметной области, умения их применять при решении практических задач. Для сдачи каждого модуля студент должен выполнить все контрольные мероприятия, сдать и защитить лабораторные работы. Промежуточная аттестация по дисциплине (экзамен) основы вается на результатах текущего контроля, включает в себя ответы на вопросы по лекционному материалу.
Введение Решение многих инженерных задач основывается на ряде ал горитмов, которые часто называют характерными приемами программирования. К числу этих алгоритмов относят следующие: • нахождение сумм и произведений; • нахождение наибольшего (наименьшего) значения функции или элемента массива; • вычисление суммы бесконечного ряда; • уточнение корней уравнений; • запоминание результатов вычислений. Следует отметить, что решение одних задач (вычисление сум мы бесконечного ряда, уточнение корней уравнений) требует умения реализовывать циклы с заранее неизвестным числом повторений, а решение других задач — циклов с заранее известным числом повторений, Циклом с заранее неизвестным числом повторений принято на зывать циклы, в которых заранее неизвестно количество выполнений операторов, образующих тело цикла (повторений цикла). Выполнение циклов такого вида прекращается при выполнении некоторого условия. Цикл с заранее известным числом повторений — цикл, количе ство повторений которого заранее известно или может быть вычислено простейшим образом. Первый вид циклов называют также итерационными циклами, поскольку они применяются при решении задач, предусматривающих выполнение ряда итераций. Второй вид циклов также имеет другое название — счетные циклы. Несмотря на простоту, рассматриваемые алгоритмы позво ляют решать достаточно сложные задачи, например, вычислять значения определенных интегралов, а также значение величин, используемых в статистике. При рассмотрении алгоритмов решения даже несложных за дач необходимо уделять внимание повышению их вычислительной эффективности. Например, при нахождении суммы бес
конечного ряда рассматриваются разные способы вычисления очередного слагаемого: в соответствии с рекуррентной формулой, непосредственно по общей формуле члена ряда и с использованием смешанной схемы. Решение задачи уточнения корней уравнений иллюстрируется реализацией трех наиболее популярных методов: простой итерации, половинного деления, касательных. Программная реализация этих алгоритмов также содержит приемы, позволяющие избегать лишних вычислений. Решение более сложных задач требует умения разрабатывать и программно реализовывать алгоритмы, имеющие структуру вложенных циклов. Алгоритмической структурой с вложенным циклом называют такую структуру, в которой внутри одного цикла расположен один или несколько других циклов. Циклы, расположенные внутри других циклов, называют внутренними. Циклы, внутри которых расположены другие циклы, называют внешними. Как правило, решение большинства задач требует программирования алгоритмов со структурой вложенных циклов. В связи с этим отдельная глава учебного пособия посвящен рассмотрению вопросов организации вложенных циклов. Рассматривается решение задачи вычисления значения определенного интеграла с заданной точностью. При этом авторы затронули также вопрос сокращения количества выполняемых операций при использовании каждого из популярных методов вычисления интегралов. В этой же главе рассмотрено нахождение наибольшего (наи меньшего) значения функции на заданном интервале с заданной точностью. Большое внимание уделено обработке матриц, так как инже неру часто в своей повседневной практике приходится сталкиваться с этим математическим объектом. Приводятся примеры программной реализации решения различных задач с матрицами. Рассмотрены алгоритмы сортировки элементов массивов. Уделено внимание наиболее простым для понимания алгоритмам, с которыми знакомятся студенты при изучении дисциплины «Информатика». К числу таких алгоритмов относятся алгоритмы сортировки методами прямого включения (вставки), прямого обмена (пузырька), выбора. Несмотря на кажущуюся простоту рассматриваемых алгорит мов, глубокое понимание материала модуля 2 и приобретенные
навыки программной реализации алгоритмов позволят студентам успешно освоить последующие разделы дисциплины, а также справиться с решением задач не только в период обучения в университете, но и в дальнейшей инженерной деятельности. Ключевые слова: алгоритм, бесконечный ряд, интеграл, метод касательных, метод половинного деления, метод парабол, метод прямоугольников, метод трапеций, наибольшее значение, наименьшее значение, отладка, произведение, простая итерация, разветвляющаяся структура, сортировка, сортировка вставками, сортировка выбором, сортировка прямым обменом, структура программы, сумма, тестирование, точность, уточнение корня, циклическая структура.
ГЛАВА 1. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ 1.1. Приемы вычисления сумм, произведений и экстремальных значений 1.1.1. Вычисление суммы и произведения При решении многих научно-технических задач часто прихо дится вычислять суммы и произведения. Например, при определении статистических параметров необходимо рассчитать среднее арифметическое и среднее геометрическое значения некоторой функции. Для вычисления указанных величин надо сначала определить сумму и произведение значений функции. Сформулируем условие задачи. Пусть задана некоторая функ ция y = f (x). Определить среднее арифметическое и среднее геометрическое значений функции yi = f (xi), вычисляемых в равноотстоящих точках интервала изменения аргумента [a, b]. Шаг изменения аргумента известен и равен dx. Интересующие нас величины вычислим по следующим фор мулам: ср.ар y y n i i n = =∑ 1 ; ср.геом y yi i n n = =∏ 1 , где yср.ар — среднее арифметическое значение; yср.геом — среднее геометрическое значение; n — количество значений функции. Сумму значений функции s = i i n y =∑ 1 будем определять в соот ветствии с правилом: вычислим очередное значение функции yi
и прибавим его к сумме предыдущих значений этой функции, т. е. последовательно будем получать все промежуточные суммы: s1 = s0 + y1 = y1; s2 = s1 + y2 = y1 + y2; s3 = s2 + y3 = y1 + y2 + y3; . . . . . . sn = sn–1 + yn = y1 + y2 + y3 + . . . + yn. Поскольку запоминать все промежуточные значения сумм по условию задачи не требуется, для их сохранения достаточно выделить простую переменную. Таким образом, для определения суммы будем использовать прием накопления, состоящий в том, что в цикле каждый раз к промежуточной сумме прибавляем очередное слагаемое, т. е. реализуем рекуррентную формулу s = s + y, где y — очередное слагаемое. Выполнив описанные действия n раз, получим в переменной s требуемое значение суммы. После первого выполнения цикла переменная s должна хра нить значение первого слагаемого, откуда следует, что s0 должно быть равно нулю. Таким образом, перед циклом, в котором вычисляют сумму, переменной s следует присвоить начальное значение 0. Произведение p = i i n y =∏ 1 может быть найдено с использова нием аналогичного приема накопления, состоящего в том, что в цикле каждый раз произведение предшествующих сомножителей p умножается на очередной сомножитель yi, т. е. используется рекуррентная формула p = py, где y — очередной сомножитель. Начальное значение переменной p перед циклом, в котором оно вычисляется, должно быть равно единице. Пример программы, определяющей среднее арифметическое и среднее геометрическое значения функции y x e x x = + 2 sin cos , вы числяемых на заданном интервале с заданным шагом изменения аргумента, приведен ниже: #include “stdafx.h” #include “math.h” #include “windows.h” #include “conio.h” int _tmain(int argc, _TCHAR* argv[])