Скачать 0.6 Mb.
|
Оглавление Оглавление 3 Задание по учебной практике №1. Работа с массивами 4 Чистка циклов 4 Постановка задачи 6 Содержание отчета 6 Варианты задания 6 Задание по учебной практике №2. Численные методы решения уравнений. 9 Описание численных методов решения уравнений 9 Постановка задачи 15 Содержание отчета 15 Варианты задания 16 Задание по учебной практике №3. Работа со строками. Связное хранение строк. 17 Цепочки 17 Постановка задачи 20 Содержание отчета 21 Варианты задания. 21 Задание по учебной практике № 4. Реализация методов сортировок 23 Алгоритмы сортировки 23 Постановка задачи. 30 Содержание отчета 31 Варианты задания. 31 Методические указания для выполнения задания №4 32 Задание по учебной практике № 5. Программирование лексического анализатора 33 Лексический анализ 33 Постановка задачи. 35 Содержание отчета 37 Варианты задания. 37 Методические указания для выполнения задания №5. 38 Приложение А. Некоторые средства языка С++, необходимые для выполнения заданий учебной практики. 39 ПРИЛОЖЕНИЕ Б. Функциональная спецификация АТД «МАССИВ» 49 Приложение В. Класс array 52 Приложение Г. Классы array и arrayNotZero. 53 Довольно часто в практике программирования возникают задачи вычисления значений различных конечных сумм: полиномов, отрезков степенных рядов, коэффициенты которых заданы явными выражениями в зависимости от номера члена, и т. п. С основными приемами, используемыми при программировании таких задач, познакомимся на следующем примере. Вычислить сумму отрезка степенного ряда для sin x: ![]() Будем считать, что номер п последнего члена суммы не задан явно, а определяется требованием, чтобы последний член ип не превосходил по абсолютной величине заданное число . Здесь ![]() Полезно рассмотреть отношение ![]() откуда ![]() Здесь множитель –x2 (обозначим его через v) не зависит от i, а знаменатель 2i(2i+1) вычисляется в зависимости от i сравнительно просто - без циклов. Алгоритм вычисления суммы, в котором цикл вычисления самой суммы совмещен с циклами, необходимыми для вычисления x2i+1, (2i+1)! и даже (-1)i, оказывается таким:
Следует обратить внимание на то, что вычисление v := - х2 вынесено в подготовительную часть цикла (шаг 1), чтобы не повторять его каждый раз заново. Перейти от алгоритма к машинной программе теперь уже не трудно. Заметим, что из шести команд, затрачиваемых на вычисление и, четыре команды уходят на вычисление знаменателя выражения для и (в это число мы включили и команду вычисления очередного значения i, поскольку нигде, кроме этого знаменателя, значение переменной i не используется). Можно упростить вычисление знаменателя, по существу, тем же самым приемом. Обозначим этот знаменатель через ri,: ri=2i(2i+1)=4i2+2i и постараемся выразить значение ri,- через ri-1. Отношение ri к ri-1 оказывается сложным, поэтому попробуем рассмотреть разность di =ri-ri-1=4i2+2i-4(i - 1)2- 2(i - 1)=8i-2, откуда ri=ri-1+di, a di выражается через di-1 уже совсем просто: di=di-1+8. Таким образом, очередное значение ri вычисляется через предыдущее с помощью всего двух операций (одна из них вычисляет di через di-1), а надобность в переменной i отпала. Чтобы начать вычисления, нужно знать начальные значения переменных r и d (при i=0). Они равны, соответственно 0 и -2. Итак, еще один вариант алгоритма может быть записан в следующем виде.
Здесь очень важна правильная последовательность присваиваний на шаге 2'. Второй вариант программы короче первого всего на одну команду. Ради этого не стоило бы затевать переделку. Однако повторяющаяся часть программы (блоки 2' и 3') стала короче на две команды, так что на выполнение всей программы затрачивается 7n + 6 операций (n — число повторений цикла) вместо 9n + 5 операций, идущих на выполнение первого варианта программы. Уже при n = 3 экономия времени выполнения программы составляет около 15%, а такая экономия оправдывает затраченные усилия. Важным аргументом является и то, что вещественная арифметика – приближенная, а уменьшение количества операций уменьшает и ошибку округления. Сокращение повторяющейся части цикла за счет устранения из нее одинаковых вычислений называется чисткой цикла. Чистка циклов — это один из важнейших способов ускорения работы программы. |
![]() | Приложение А. Некоторые средства языка С++, необходимые для выполнения заданий учебной практики. 33 | ![]() | Методические указания предназначены для студентов заочной формы обучения всех специальностей. Методические указания включают в себя... |
![]() | Методические указания предназначены для выполнения практических заданий по дисциплине “Организация и планирование производства” студентами... | ![]() | «Перечень хозяйственных операций за отчетный период» составить «Журнал регистрации хозяйственных операций» (приложение 1), где должны... |
![]() | Задания к контрольной работе по дисциплине «Возрастная физиология и психофизиология» и методические указания для ее выполнения. Екатеринбург,... | ![]() | Задания к контрольным работам и методические указания для их выполнения по дисциплине «Физическая культура». Екатеринбург, фгаоу... |
![]() | Задания для самостоятельной подготовки дадут возможность практически освоить теоретические рекомендации, повторить и закрепить основные... | ![]() | Интенсивность 6,9 балла по шкале Рихтера, полностью уничтожен г. Спитак; разрушены гг. Ле-нинакан, Степанаван, Кировакан |
![]() | Методические указания предназначены для проведения практических занятий и выполнения домашних заданий по дисциплине «Экономико-математические... | ![]() | Методические указания предназначены для выполнения контрольных работ студентами-заочниками специальности 1-70 02 01. Изложено содержание... |