Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Метод пошаговой детализации




С использованием метода пошаговой детализации разработку алгоритмов выполняют поэтапно. На первом этапе описывают решение поставленной задачи, выделяя подзадачи и считая их решенными. На следующем – аналогично описывают решение подзадач, формулируя уже подзадачи следующего уровня. Процесс продолжают, пока не доходят до подзадач, алгоритмы решения которых очевидны. При этом, описывая решение каждой задачи, желательно использовать не более одной-двух конструкций, таких как цикл или ветвление, чтобы четче представить себе структуру программы.

Пример 2. Разработать программу, которая с заданной точностью e находит значение аргумента x по заданному значению функции y при известном значении n.

                                                   (x+1)n+1

y = ---------- , где n>1, x>0.

                                                         x

При n>1 данная функция является монотонно возрастающей. Следовательно, для нахождения значения x можно применить метод половинного деления. Суть метода заключается в следующем. Вначале определяют отрезок [x1,x2], такой что f(x1)£y£f(x2). Затем делят его пополам xt=(x1+x2)/2 и определяют, в какой половине отрезка находится x, для чего сравнивают f(xt) и y. Полученный отрезок опять делят пополам и так до тех пор, пока разность x1 и x2 не станет меньше заданного значения e.

Для разработки алгоритма используем метод пошаговой детализации.

Шаг 1.Определяем общую структуру программы:

Программа:

Ввести y, n, eps.

Определить x.

Вывести x, y.

Конец.

Шаг 2. Детализируем операцию определения x:

Определить x:

Определить x1, такое что f(x1)£y.

Определить x2, такое что f(x2)³y.

Определить x на интервале [x1,x2].

Все.

Шаг 3. Детализируем операцию определения x1. Значение x1 должно быть подобрано так, чтобы выполнялось условие f(x1)£y. Известно, что x>0, следовательно, можно взять некоторое значение x, например, x1=1, и последовательно уменьшая его, например, в два раза определить значение x1, удовлетворяющее данному условию:

Определить x1:

  x1:=1

  цикл-пока f(x1)>y

         x1:=x1/2

  все-цикл

Все.

Шаг 4. Детализируем операцию определения x2. Значение x2 находим аналогично x1, но исходное значение будем увеличивать в два раза.

Определить x2:

  x2:=1

  цикл-пока f(x2)<y

         x2:=x2*2

  все-цикл

Все.

Шаг 5. Детализируем операцию определения x. Определение x выполняется последовательным сокращением отрезка [x1, x2].

Определить x:

цикл-покаx2-x1>eps

       Сократить отрезок [x1,x2].

   все-цикл

Все.

Шаг 6. Детализируем операцию сокращения интервала определения x. Сокращение отрезка достигается делением пополам и отбрасыванием половины, не удовлетворяющей условию f(x1)£y£f(x2)

Сократить интервал определения x.

  xt:=(x1+x2)/2

   если f(xt)>y

      то   x2:=xt

      иначе x1:=xt

  все-если

Все.

Таким образом, за шесть шагов мы разработали весь алгоритм. Полностью он выглядит следующим образом.

Программа:

     Ввести y,n,eps.

     x1:=1

цикл-пока f(x1)>y

      x1:=x1/2

Все-цикл

     x2:=1

цикл-пока f(x2)<y

      x2:=x2/2

Все-цикл

цикл-покаx2-x1>eps

      xt:=(x1+x2)/2

      если f(xt)>y

           то   x2:=xt

           иначе x1:=xt

      все-если

  все-цикл

  Вывести xt,y.

Конец.

При разработке алгоритма методом пошаговой детализации мы использовали псевдокод, но можно было использовать и схемы алгоритма.

Достоинством метода является то, что в процессе разработки на каждом шаге мы решали одну достаточно простую задачу. Использование метода, таким образом, существенно облегчает разработку алгоритмов.

Методические указания по выполнению домашнего зАдания

Домашнее задание №1 выдается на 1-ой неделе и включает разработку алгоритмов программ практических занятий № 3–8. При этом допускается использовать как схемы алгоритма, так и псевдокоды. Все алгоритмы должны быть структурными, т. е. должны использовать только допустимые управляющие структуры.

Проверка домашнего задания осуществляется поэтапно, по мере выполнения практических занятий. Окончательный срок завершения задания – 8 неделя 1-го семестра. Студент считается выполнившим домашнее задание, если у него к этому моменту завершены и проверены преподавателем отчеты по выполнению указанных практик.

 

Список литературы

1. Иванова Г.С. Основы программирования. Учеб. для вузов М.: Из-во МГТУ им. Баумана, 2002.










Последнее изменение этой страницы: 2018-04-12; просмотров: 390.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...