34667

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

Реферат

Информатика, кибернетика и программирование

Полностью закончив детализацию всех блоков получаем решение задачи в целом. Детализируем операцию определения x: Определить x Определить x1 такое что fx1 =y Определить x2 такое что fx2 =y Определить x на интервале [x1 x2] Все. Таким образом определим значение x1 удовлетворяющее данному условию: Определить x1: x1:=1 цикл пока fx1 y x1:=x1 2 Все цикл Все 4 этап. Определить x2: x2:=1 цикл пока fx2 y x2:=x22 Все цикл Все.

Русский

2013-09-08

407.08 KB

11 чел.

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

Принцип нисходящего проектирования алгоритмов и программ (метод проектирования сверху вниз)

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

Идеи структурного программирования были высказаны Э. Дейкстрой еще в 1965 г. Позже им были изложены основные положения структурного программирования в работеЗаметки по структурному программированию. С тех пор терминструктурное программированиешироко используется, но в разных смыслах и без строгого определения. 

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

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

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

Иначе его еще называют методом пошаговой детализации. 

Нисходящее проектирование программы, когда первоначально программа рассматривается, как совокупность действий, каждое из которых затем детализируется и представляется как последовательность более простых и конкретных действий и т.д. Вплоть до отдельных операторов языка; такой подход позволяет реализовать наличие двух видов подпрограмм в языкепроцедур и функций. 

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

Таким образом, на каждом шаге разработки уточняется реализация фрагмента алгоритма (или программы), т.е. решается более простая задача. Полностью закончив детализацию всех блоков, получаем решение задачи в целом. 

Если на каждом шаге детализации использовать принципы структурного программирования, то получается хорошая структурированная программа в целом. 

Процесс проектирования сверху вниз блок-схемы алгоритма показан на нижеприведенном примере.

Пример. Вычислить значения функции y=f(x) для x, изменяющегося от x 0 до x n с шагом h: 

, где 

x 0 = –; x n = 10; h = 1; a = –; b = 3.5.

Технология нисходящего проектирования с пошаговой детализацией является неотъемлемой частью создания хорошо структурированных программ. Разработка алгоритма методом пошаговой детализации заключается в следующем:

Любой алгоритм можно представить в виде одного предписания - в виде постановки задачи. Но если исполнитель не обучен исполнять заданное предписание, то возникает необходимость представить данное предписание в виде некоторой совокупности более простых предписаний. Если исполнитель не может выполнить и некоторые из них, то такие предписания вновь представляются в виде совокупности еще более простых предписаний. Объединяя так полученные предписания в единую совокупность выполняемых в определенном порядке предписаний получают выполнение исходного задания в целом.

Достоинства метода пошаговой детализации:

. Сохраняется концептуальная целостность программы: от сложного к простому.

. Проектирование программы, кодирование, проверку и документирование можно делать параллельно.

. В каждый момент времени (даже в начале разработки) имеется работающий вариант программы.

. Фразы естественного языка, будучи закомментированными, служат хорошим путеводителем по программе.

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

При разработке алгоритмов обычно используют метод пошаговой детализации (поэтапно):

. На первом этапе описываются решения поставленной перед программой задачи, выделяются подзадачи.

. В последующих этапах описывается решение каждой подзадачи, выделяя при этом новые подзадачи. Так происходит до тех пор, пока решение подзадач не будет очевидным. Рекомендовано решение каждой задачи описывать при помощи 1 - 2 конструкций не более, чтобы более четко представлять структуру программы.

Например: Требуется разработать программу, которая с определенной точностью eps находит значение аргумента x по заданному значению функции y при известном значении n

Где: n>1, x>0

При n>1 функция является монотонно возрастающей, значение аргумента x можно определить с помощью метода половинного деления. В чем заключается это метод?

. Находим отрезок [x1, x2], который удовлетворяет условию: f(x1)<=y<=f(x2).

. Делим полученный отрезок пополам: xt=(x1+x2)/2 и определеяем в какой половине отрезка находится x. Для этого сравниваем два значения: f(x1) и y.

. Полученный отрезок вновь делим пополам, процесс повторяется до тех пор, пока разность x1 и x2 не станет меньше заданного значения eps.

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

этап. Общая структура программы:

Программа:

Ввести 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 и будем его пследовательно уменьшать, допустим в 2 раза. Таким образом определим значение x1, удовлетворяющее данному условию:

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

x1:=1

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

x1:=x1/2

Все - цикл

Все

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

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

x2:=1

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

x2:=x2*2

Все - цикл

Все.

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

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

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

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

все - цикл

Все.

6 этап. Детализируем операцию сокращения отрезка [x1, x2]. Интервал определения x сокращаем делением пополам и отбрасываем половину, которая не удовлетворяет условию f(x1)<=y<=f(x2):

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

xt=(x1+x2)/2

если f(xt)>y

то x2:=xt

иначе x1:=xt

все - если

Все.

Таким образом, за 6 этапов разработан следующий алгоритм:

Программа:

Ввести 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

Конец.

Таким образом, на каждом этапе решается простая задача, что облегчает разработку алгоритма. Для решения данной задачи был использован псевдокод, но можно использовать и блок - схемы алгоритмов


 

А также другие работы, которые могут Вас заинтересовать

26809. Уточнение корней уравнения. Методы касательных (Ньютона) 160.5 KB
  Для групповых и корпоративных ИС существенно повышаются требования к надежности функционирования и сохранности данных. Эти свойства обеспечиваются поддержкой целостности данных ссылок и транзакций в серверах БД. Классификация по сфере применения Системы обработки транзакций по оперативности обработки данных делятся на пакетные ИС и оперативные ИС. Системы поддержки принятия решений представляют собой тип ИС в которых с помощью довольно сложных запросов производится отбор и анализ данных в различных разрезах: временных географических и по др.
26810. Аппроксимация функций. Основные задачи протокола IP 159 KB
  Архитектура файлсервер имеет существенный недостаток: при выполнении некоторых запросов к БД клиенту могут передаваться большие объемы данных что загружает сеть и приводит к непредсказуемости времени реакции. средний уровень представляет собой сервер приложений на котором выполняется прикладная логика BL и с которого логика обработки данных DL вызывает операции с БД DS; верхний уровень представляет собой специализированный сервер БД выделенный для услуг обработки данных DS и файловых операций FS без риска использования хранимых...
26811. Квадратичная аппроксимация (МНК). Методология IDEF 1 80.5 KB
  Нужно найти уравнение либо прямой линии либо кривой второй степени параболы либо еще более высокой степени полином алгебраический многочлен который лучше всего передавал бы на чертеже наиболее характерные свойства расположения заданных экспериментальных точек. Управление маркетингом подразумевает сбор и анализ данных о фирмахконкурентах их продукции и ценовой политике а также моделирование параметров внешнего окружения для определения оптимального уровня цен прогнозирования прибыли и планирования рекламных кампаний.Методология IDEF...
26812. Системный подход, системные исследования и системный анализ 21.87 KB
  Системный подход системные исследования и системный анализ Для анализа сложных объектов и процессов применяются системный подход системные исследования и системный анализ. Системный подход к исследованиям предполагает необходимость исследования объекта с разных сторон комплексно в отличие от ранее принятого разделения исследований на физические химические и другие. Однако заимствованные при таком подходе понятия теории систем вводились не строго не исследовался вопрос каким классом систем лучше отобразить объект какие свойства и...
26813. Методы и модели описания систем. Качественные методы описания систем 175.47 KB
  Однако позднее обязательное требование явно выраженных временных координат было снято и сценарием стали называть любой документ содержащий анализ рассматриваемой проблемы или предложения по ее решению по развитию системы независимо от того в какой форме он представлен. Таким образом сценарий помогает составить представление о проблеме а затем приступить к более формализованному представлению системы в виде графиков таблиц для проведения экспертного опроса и других методов системного анализа. Основная идея морфологических методов ...
26814. Модели систем. Алгоритм разрешения имен в службе DNS 73.86 KB
  Журнализация и буферизация Журнализация изменений тесно связана не только с управлением транзакциями но и с буферизацией страниц базы данных в оперативной памяти. Если бы запись об изменении базы данных которая должна поступить в журнал при выполнении любой операции модификации базы данных реально немедленно записывалась бы во внешнюю память это привело бы к существенному замедлению работы системы. Проблема состоит в выработке некоторой общей политики выталкивания которая обеспечивала бы возможность восстановления состояния базы данных...
26815. Индивидуальный откат транзакции 188.67 KB
  Соответствующий протокол журнализации и управления буферизацией называется Write Ahead Log WAL пиши сначала в журнал и состоит в том что если требуется записать во внешнюю память измененный объект базы данных то перед этим нужно гарантировать запись во внешнюю память журнала транзакций записи о его изменении. Другими словами если во внешней памяти базы данных находится некоторый объект базы данных по отношению к которому выполнена операция модификации то во внешней памяти журнала обязательно находится запись соответствующая этой...
26816. Структура и свойства информационных процессов 84.74 KB
  Воздействуя на параметры переносчика можно осуществить передачу данных на требуемое расстояние по выбранному каналу. Действия сервера и клиента: Клиент устанавливает связь и посылает запрос на 21 порт сервера с порта N N 1024 Сервер посылает ответ на порт N N 1024 клиента Сервер устанавливает связь для передачи данных по порту 20 на порт клиента N1 Активный режим 5. Он предназначен для обеспечения надежного хранения данных в БД. А это требование предполагает в частности возможность восстановления согласованного состояния базы данных...
26817. Численное дифференцирование. Сущность структурного подхода проектирования ИС 232.5 KB
  Численное дифференцирование используется для приближенного вычисления производных функции заданной таблицей и для функций, которые по разным причинам неудобно или невозможно дифференцировать аналитически. В последнем случае вычисляется таблица функции в окрестности исследуемой точки и по этим значениям вычисляется приближенное значение производной.