Пример Проектирования алгоритма обработки данных в КП для решения задачи о выборе максимального из трех чисел




 

Продемонстрируем процесс проектирования КП на примере составления проекта КП для решения задачи о выборе максимального из трех заданных чисел. Будем исходить из спецификации этой КП, приведенной выше (см. п. 6.1.7).

В соответствии с методикой проектирования КП путем пошаговой детализации на нулевом шаге введем имя проектируемой КП – MAX_FROM_3.

В результате выполнения нулевого шага N0 = { MAX_FROM_3}, а P0 = Æ.

На первом шаге выберем для детализации схему ЛУЧ:

 

p1: MAX_FROM_3 ® <ввод исходных данных с контролем>; <поиск максимума>; <вывод результата>

 

В результате выполнения этого шага N1 = { MAX_FROM_3, <ввод исходных данных с контролем>, <поиск максимума>, <вывод результата> }, а P1 = { p1 }. Теперь надо выбрать для детализации какой-либо нетерминал из множества N1. Пусть это будет <ввод исходных данных с контролем >.

На втором шаге для детализации снова выберем схему ЛУЧ – в соответствии со спецификацией задачи в п.6.1.7:

 

p2: <ввод исходных данных с контролем> ® <ввод A с контролем>; <ввод B с контролем>; <ввод C с контролем>.

 

В результате второго шага N2 = N 1 È { <ввод A с контролем>, <ввод B с контролем>, <ввод C с контролем> }, а P2 = { p1, p2 }.

Для третьего шага детализации выберем нетерминал <ввод A с контролем> и схему ЛУЧ:

p3: <ввод A с контролем > ® Writeln (“Введите первое число”, G); Readln (G);

Writeln (“ А = ”, G); <контроль введенного данного>; A:= G;

 

После этого N3 = N2 È <контроль введенного данного>, P3 = { p1, p2, p3 }. Аналогично выполним следующие два шага детализации:

 

p4: <ввод B с контролем > ® Writeln (“Введите второе число”, G); Readln (G);

Writeln (“ B = ”, G); <контроль введенного данного>; B:= G;

 

p5: <ввод C с контролем > ® Writeln (“Введите третье число”, G); Readln (G);

Writeln (“ C = ”, G); <контроль введенного данного>; C:= G;

 

 

в результате выполнения которых N5 = N3 , а P5 = { p1, p2, p3, p4, p5 }.

На очередном шаге детализации выберем подходящую управляющую структуру для нетерминала <вывод результата> - это ЛУЧ, который в этом случае состоит из одного оператора:

 

p6: <вывод результата> ® Writeln (“A = ”, A, “B = ”, B, “C = ”, C, “ Самое большое число - ”, MAX, “.”).

 

Теперь N6 = N 2 , а P6 = { p1, p2, p3, p4, p5, p6}.

К этому моменту остался “непродетализированный” нетерминал <поиск максимума>. В соответствии со спецификацией задачи продетализируем его по схеме ЛУЧ:

 

p7: <поиск максимума> ® <максимум из двух>; <максимум из трех>,

 

в результате чего получим N7 = N2 È { <максимум из двух>, <максимум из трех> }, а P7 = { p1, p2, p3, p4, p5, p6, p7}.

Для детализации двух возникших на этом шаге нетерминалов понадобится схема ВЕТВЛЕНИЕ:

 

p8: < максимум из двух > ®

if A > B then Begin MAX:= A; Writeln (“Первое число не меньше второго.”)end

else Begin MAX:= B; Writeln (“Второе число больше первого.”)end

 

 

p9: < максимум из трех > ® if MAX < C then MAX:= C;

После девятогошага N9 = N7, а P9 = { p1, p2, p3, p4, p5, p6, p7, p8, p9 }. Теперь остался только один “непродетализированный” нетерминал - <контроль введенного данного>. Для его детализации используем схему ЦИКЛ (с предусловием):

 

P10: <контроль введенного данного> ® whileG < 0 OR G > 65535 do

Begin

<диагностическое сообщение об ошибке ввода>;

Writeln (“Повторите ввод!”); Readln (G);

Writeln (“Теперь Вы ввели ”, G);

End

После десятогошага N10 = N7 È <диагностическое сообщение об ошибке ввода>, а P10 = { p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 }.

 

Для детализации последнего нетерминала используем схему ВЕТВЛЕНИЕ:

 

P11: <диагностическое сообщение об ошибке ввода> ® if G > 99999

then Writeln (“Количество цифр во вводимом числе не должно быть больше 5.”)

else Writeln (“Вводимое число должно быть неотрицательным

И не должно превышать 65535.”)

Теперь N11= N10, а P11 = { p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 , p11 }.

Проектирование завершено. Тем самым построена КС-грамматика, в которой терминальные символы – это символы языка Паскаль, множество нетерминальных символов N = N11, аксиома - MAX_FROM_3, а множество правил P = P11.

9. 6. документ "Проект компьютерной программы"

 

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

В части " Проект структур данных" должны быть перечислены все введённые переменные с указанием их смысла (например, в виде комментария) и описаны типы этих переменных в терминах ЯП.

В части " Проект алгоритма обработки данных" должен быть представлен этот проект в виде текста на PDL.

Приведём в качестве примера документ проектирования КП решения задачи о выборе максимального из трёх чисел.

 


 

 

Проект Компьютерной Программы



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: