Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Metodichka_po_kursovoy_rabote

.pdf
Скачиваний:
16
Добавлен:
14.03.2016
Размер:
1.35 Mб
Скачать

11

• следование - обозначает последовательное выполнение действий

(рис. 2, а);

• ветвление - соответствует выбору одного из двух вариантов действий

(рис. 2, б);

• цикл-пока - определяет повторение действий, пока не будет нарушено условие, выполнение которого проверяется в начале цикла (рис. 2, в).

Начало

 

Начало

Действие 1

 

Условие

Действие 2

Действие 1

Действие 2

Конец

 

Конец

а

 

б

Начало

Условие

Действие

Конец

в

Рис. 2. Базовые алгоритмические структуры

Помимо базовых структур используют три дополнительные структуры,

производные от базовых:

выбор - выбор одного варианта из нескольких в зависимости от значения некоторой величины (рис. 3, а);

цикл до - повторение некоторых действий до выполнения заданного условия, проверка которого осуществляется после выполнения действий в цикле (рис. 3, в);

цикл с заданным числом повторений (счетный цикл) - повторение некоторых действий указанное число раз (рис. 3, д).

12

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

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

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

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

Для каждой структуры используют свою форму описания, которая, в

общем случае может быть произвольной.

Программа должна начинаться с ввода исходных данных. Заметим, что любой ввод данных пользователем должен сопровождаться запросом на ввод,

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

13

 

 

 

 

нет

 

 

 

 

Код=Код 1

 

 

 

 

 

 

 

нет

 

Код

Код 3

 

Код=Код 2

 

Код 1

 

Да

 

 

 

 

 

 

 

 

 

 

 

Код 2

 

 

Да

 

Действие 1

Действие 2

Действие 3

Действие 1

Действие 2

Действие 3

 

а

 

 

б

 

 

 

 

 

Действие

 

 

Действие

 

 

 

 

 

 

 

 

Условие

нет

 

 

 

 

 

нет

Условие

 

 

Да

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

Действие

 

 

в

 

 

г

 

 

 

 

 

i=n1

 

 

i=n1,n2,h

 

 

 

 

 

 

 

 

i<=n2

 

 

Действие

д

е

Да

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

Действие

 

Рис.3. Дополнительные структуры и их

i=i+1

 

 

 

реализация через базовые структуры

 

 

14

5. Реализация

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

6. Тестирование разработанных программных модулей

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

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

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

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

7. Пример разработки алгоритма

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

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

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

15

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

описывая решение каждой задачи, желательно использовать не более одной-

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

Для разработки алгоритма программы, которая находит значение аргумента х по заданному значению функции у.

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

Программа:

Ввести выражение для функции

Ввести у, n, E, Xm.

Вывести график функции

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

Вывести X,Y.

Конец.

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

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

Определить х1 такое, что f(xl) < Y.

Определить х2 такое, что f(x2) > Y.

Определить X на интервале [х1, х2].

Все.

Шаг 3. Детализируем операцию определения х1.

Значение х1 должно быть подобрано так, чтобы выполнялось условие f(xl) < Y. Известно, что x > О, следовательно, можно взять некоторое

16

значение х, например, х1=1, и последовательно уменьшая его, например в два раза, определить значение х1, удовлетворяющее данному условию.

Определить х1:

х1:=Xm

цикл-пока f(xl) > Y

х1:=х1/2

все-цикл

Все.

Щаг 4. Детализируем операцию определения х2.

Значение х2 определяем аналогично х1, но исходное значение будем увеличивать в два раза.

Определить х2:

х2:=0.1

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

х2:=х2*2

все-цикл

Все.

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

Определение х выполняется последовательным сокращением отрезка

[х1, х2].

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

цикл-пока x2-xl>E

Сократить отрезок [х1, х2].

все-цикл

Все.

Шаг 6. Детализируем операцию сокращения интервала определения х.

17

Сокращение отрезка достигается делением пополам и отбрасыванием половины, не удовлетворяющей условию f(x1) <= Y<= f(x2)

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

xt:=(xl +х2)/2

если f(xt) > Y

то х2 := xt

иначе х1 :=xt

все-если

Все.

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

Программа:

Ввести выражение для функции

Ввести у, n, E

Вывести график функции

%Определить х1:

х1:=Xm

цикл-пока f(xl) > Y

х1:=х1/2

все-цикл

%Определить х2:

х2:=0.1

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

х2 := х2*2

все-цикл

%Определить х:

цикл-пока х2-х1 > E

18

xt:=(xl +х2)/2

если f(xt) > Y

то х2 := xt

иначе х1 := xt

все-если

все-цикл

Вывести xt, Y.

Конец.

В приведенном тексте строка, начинающаяся с символа «%» -

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

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

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

которых решение каждой подзадачи может быть обозначено блоком

«предопределенный процесс», однако это не обязательно.

Общая схема алгоритма приведена на рис.4.

Далее необходимо детализировать выполнение подзадач ввода и вывода.

19

Начало

Ввод

формулы

Ввод

входных

данных

Вывод

графика

X1^=Xm

Определить х1

x1:=x1/2

 

Да Нет

f(x1)>Y

x2:=0.1

Определить х2 Определить х

 

 

 

 

 

 

 

 

 

 

 

 

x2:=x2*2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

xt:=(xl +х2)/2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f(x2)<Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

f(xt) > Y

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывести

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xt, Y

 

х1 :=xt

 

 

 

 

 

х2 := xt

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец

Рис.4. Схема алгоритма

20

Литература:

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

2.Бураков М.В. Основы работы в MATLAB: учебное пособие/ М.В. Бураков

.- ГУАП.СПб., 2006;

3.Васильев Ф.П. Численные методы решения экстремальных задач. Учебное пособие для студ. ВУЗов - М.,НАУКА 1982, 552 с., [Шифр

519.6/8,В-19]

4.Волков Е.А. Численные методы: учебное пособие - М., Наука, 1982,254 с.;

5.Самарский А.А. Введение в численные методы. Учебное пособие для Вузов, - М., Наука,1987,288 с.,;

6.Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик, Фортран, Паскаль. - Томск, МП "Раско",1992,406 с.;

7.Дудник В.М., Карпова Т.С., Плющева Л.В. Документирование программного обеспечения. Методические указания для курсового проектирования. -Л., ЛИАП,1986.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]