- •Приемы и методы программирования
- •Итерационные методы
- •7.2. Вычисление функции разложением в ряд
- •7.3. Рекуррентные формулы
- •7.4. Организация надежного ввода.
- •Структурирование циклов в основе метода структурирования цикла заложено требование, чтобы цикл, как и
- •Интерфейс программы
- •Текстовые файлы
- •7.8. Спецификация задачи
- •Кроме описанных правил добавляется возможность отсутствия текста:
- •В форме а) предусматривается возможность отсутствия составляющей, а в форме б) –
- •7.9. Предупреждение ошибок и отладка программы
- •7.10. Модули
- •Главный алгоритм
- •Раздел описаний
- •Алгоритм
- •Поиск экстремума в файле
- •Задача. Найти максимальный элемент в последовательности чисел, размещенных в файле.
7.8. Спецификация задачи
Документ, содержащий спецификацию задачи, состоит из 6-ти разделов.
1. Задача
Четко формулируется условие задачи и, если необходимо, приводятся дополнительные уточнения и ограничения.
2. Входные данные
Состав. Перечисляются имена входных данных, их тип и смысл.
Диапазон. Задаются границы входных данных (область допустимых значений), в пределах которых может быть получено правильное решение (область определения алгоритма).
Точность представления данных задается для задач вычислительного класса и определяет погрешность вычисления и количество печатаемых дробных знаков.
Объем вводимых данных может быть задан либо количеством данных в разделе состав, если оно известно заранее, либо специальным признаком в составе вводимых данных, либо признаком конец файла.
Входная форма определяет внутреннее имя файла, откуда данные вводятся и имена вводимых данных в порядке, заданном программистом:
<входные
данные>
Специфицируя входной файл, необходимо уточнить порядок и режим ввода исходных данных.
Например, описание файла с исходными данными может иметь следующий вид:
<x>
<eps>
а затем eps.
3. Выходные данные
Состав, диапазон, точность описываются аналогично входным данным.
Выходная форма представляет документ, который, кроме результата, содержит дополнительную полезную информацию о решаемой задаче.
Выходная форма (выходной документ) имеет следующую структуру:
<заголовок>
<входные
данные> [<промежуточные
данные>] <результаты
решения>
<реакция
на аномалии>
образец 1
образец 2
образец 3
образец 4
образец 5
В заголовке должна быть кратко сформулирована цель решаемой задачи. Это важно не только для пояснения результатов, но и при отладке: печать заголовка служит сигналом того, что программа начала выполняться.
Входные данные с поясняющим текстом уточняют условие решаемой задачи. В том случае, если их объем слишком велик, входные данные можно не печатать, а ограничиться некоторой обобщенной характеристикой.
Промежуточные данные могут быть напечатаны, если они нужны либо для отладки программы, либо для пояснения процесса решения, либо для анализа результатов. В противном случае их можно не печатать.
Далее выходной документ содержит либо результаты решения, либо сообщения об ошибке в исходных данных, предусмотренные в спецификации как реакция на аномалии.
Например, для задачи можно составить следующий выходной документ:
Приближенное
вычисление функции для
аргумента <х> с точностью <eps>
у
= <у> S
= <S>
Неправильные
входные данные
образец 2
образец 3
образец 4
В этом документе фигурная скобка предусматривает альтернативный вывод: выводится или у, S (образец 3) или сообщение о неправильных входных данных (образец 4).
Аномалии
Описывается область значений входных данных, при которых решение не может
быть получено (описание аномалий). В программе предусматривается анализ входных данных и если данные попадают в эту область, то выдается сообщение об ошибках (реакция на аномалии).
5. Метод
Раздел содержит описание связи между входными и выходными данными в
следующих вариантах:
Формально – в виде формулы, связывающей входные и выходные данные;
Полуформально – в виде краткого описания на естественном языке с использованием
математической символики;
Вербально – в виде краткого описания идеи метода;
Ссылочно – если есть готовая процедура, реализующая этот метод, то интерфейс этой
процедуры.
Функциональные тесты
Цель функциональных тестов – найти расхождение между программой и ее
спецификацией. Задаются специально подобранные значения входных данных и просчитываются результаты, ожидаемые после выполнения алгоритма.
Основные рекомендации при проектировании функциональных тестов: просматривая разделы Входные данные и Аномалии следует принимать во внимание область определения алгоритма. Тесты рекомендуется строить для допустимых, граничных и недопустимых значений входных данных и записывать в виде следующей таблицы:
№ Входные
данные Ожидаемые
результаты I Допустимые
значения
II Значения
на границе
III Недопустимые
значения <Реакция
на аномалии>
Правила записи входных/выходных форм
При заполнении форм следует учитывать, что в строку экрана можно записать не более 80 символов.
Тексты форм заключаются в прямоугольники.
Если текст является переменной, то есть будет заменяться конкретным значением, то
он заключается в угловые скобки или овал. Например, <Реакция на аномалии>.
4. Запись текстов должна отражать порядок их выполнения и производится в
соответствии с тремя правилами правилами их структурирования: следование, выбор, повторение.
Основные правила записи текстов:
Следование:
<текст1> <текст2> <текст1><текст2>
или
Выполняется последовательно <текст1>, затем <текст2>.
2
<текст1> <текст2> {<текст1><текст2>}
или
Выполняется или <текст1> или <текст2>.
3) Повторение:
Количество повторений неизвестно:
<текст> …
<текст>
…
или
Количество повторений известно:
<текст>
n … m
<текст>
r …




В форме а) текст повторяется не более m и не менее n раз.
В форме б) текст повторяется r раз.
