КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Метод последовательной детализацииСуть метода была описана выше. Сначала анализируется исходная задача. В ней выделяются подзадачи. Строится иерархия таких подзадач (рис. 48).
Затем составляются алгоритмы (или программы), начиная с основного алгоритма (основной программы), далее — вспомогательные алгоритмы (подпрограммы) с последовательным углублением уровня, пока не получим алгоритмы, состоящие из простых команд. Вернемся к задаче «Интерпретатор», которая рассматривалась в разд. 3.16. Напомним условие: дана исходная символьная строка, имеющая следующий вид: а b= На месте а и b стоят десятичные цифры; значком обозначен один из знаков операций: +, -, *. Нужно, чтобы машина вычислила это выражение и после знака = вывела результат. Операция деления не рассматривается для того, чтобы иметь дело только с целыми числами. Сформулируем требования к программе Interpretator, которые сделают ее более универсальной, чем вариант, рассмотренный в разд. 3.16: 1. Операнды а и b могут быть многозначными целыми положительными числами в пределах MaxInt. 2. Между элементами строки, а также в начале и в конце могут стоять пробелы. 3. Программа осуществляет синтаксический контроль текста. Ограничимся простейшим вариантом контроля: строка должна состоять только из цифр, знаков операций, знака = и пробелов. 4. Проводится семантический контроль: строка должна быть построена по схеме а b =. Ошибка, если какой-то элемент отсутствует или нарушен их порядок. 5. Осуществляется контроль диапазона значений операндов и результата (не должны выходить за пределы MaxInt). Уже из перечня требований становится ясно, что программа будет непростой. Составлять ее мы будем, используя метод последовательной детализации. Начнем с того, что представим в самом общем виде алгоритм как линейную последовательность этапов решения задачи: 1. Ввод строки. 2. Синтаксический контроль (нет ли недопустимых символов?). 3. Семантический контроль (правильно ли построено выражение?). 4. Выделение операндов. Проверка операндов на допустимый диапазон значений. Перевод в целые числа. 5. Выполнение операции. Проверка результата на допустимый диапазон. 6. Вывод результата. Этапы 2, 3, 4, 5 будем рассматривать как подзадачи первого уровня, назвав их (и будущие подпрограммы) соответственно Sintax, Semantika, Operand, Calc
|