- •Методические указания к расчетно-графической работе по дисциплине
- •Содержание и форма представления ргр
- •4.1 Метод частных целей
- •4.3. Программирование с отходом назад
- •5.1. Стратегии тестирования
- •5.2. Методы структурного тестирования
- •5.2.1. Метод покрытия операторов
- •5.3. Метод анализа граничных значений
Методические указания к расчетно-графической работе по дисциплине
“ЭВМ и вычислительные системы”
Цель работы и расчетные затраты времени
Основной целью расчетно-графической работы студентов является получение знаний и навыков, необходимых для формирования грамотного подхода к проектированию и тестированию разрабатываемых программ. Для достижения поставленной цели необходимо решить следующие задачи:
применить приобретенные в предыдущих дисциплинах знания и умения для формализованного описания задачи обработки данных;
научиться разрабатывать внешние спецификации проектируемой программы в виде схемы программы;
научиться проектировать тесты, позволяющие установить соответствие разработанного программного обеспечения его внешним спецификациям.
Таблица 1
Содержание и форма представления ргр
№ |
Задачи расчетно-графической работы |
Форма представления результатов |
Затраты времени (час) |
1 |
Математическое описание задачи обработки данных |
Математические соотношения и пояснительный текст |
2 |
2 |
Разработка схемы программы |
Схема схемы программы, выполненная согласно ГОСТ 19.701-90 |
3 |
3 |
Разработка программы преобразования данных (реализация функций программы) |
Программа на языке ассемблера |
6 |
4 |
Разработка тестов для верификации функций программы. Тестирование и отладка |
Описание цели каждого теста, входных данных для теста, ожидаемых и фактических результатов тестирования |
3 |
5 |
Оформления отчета по курсовой работе |
Отчет по курсовой работе |
3 |
|
ВСЕГО |
|
16 |
Математическое описание задачи обработки
Задания на РГР в большинстве касаются обработки векторов (одномерных массивов) и матриц (двухмерных массивов). Преобразования, предлагаемые заданиями, являются частью более сложных задач анализа и оптимизации проектных решений, например, поиск максимального и минимального значений в векторе может быть частью решения систем уравнений и использоваться для определения обусловленности системы уравнений (в этом случае элементы вектора – собственные значения матрицы Якоби анализируемой системы). Рассмотрим математическое описание на примере этого задания.
Прежде всего, описываются исходные данные: дана последовательность элементов ,.
Далее записываются результаты решения: найти , такой, что
и найти , такой, что.
Правила выполнения схемы программы
Схема программы разрабатывается согласно ГОСТ 19.701-90.
Схема - графическое представление определения, анализа или метода решения задачи, в котором используются символы для отображения операций, данных, потока, оборудования и т.д.
При документировании проекта разработки программного обеспечения применяют схемы:
работы системы, в которой формализуется процесс выполнения программы, взаимодействие с пользователем и данными;
программ (или иначе блок-схем), в которых формализуется алгоритм обработки данных;
данных, в которых уточняются потоки данных между процессами и (или) носителями данных;
взаимодействия программ, отображающих путь активации программ и взаимодействий с данными;
ресурсов системы, отображающих конфигурацию блоков данных и обрабатывающих блоков, требуемую для решения задачи или набора задач.
Правила оформления схем описаны в ГОСТ 19.701-90 / 6 / и / 7 /.
Общие рекомендации к выполнению схем следующие:
схемы выполняются без соблюдения масштаба, действительное пространственное расположение составных частей изделия в схеме не учитывается или учитывается приближенно;
в схемах применяют условные графические обозначения: чаще всего прямоугольники или другие простые фигуры. Размеры условных графических обозначений и толщина составляющих их линий должны быть одинаковыми на всех схемах проекта;
допускается пропорциональное изменение условных графических обозначений;
условные графические обозначения составных частей узла устройства допускается изображать уменьшенными по сравнению с узлами;
линии связи и линии графических обозначений должны быть одной толщины. Рекомендуемая толщина линий – 0.3- 0.4 мм ( пределы изменения толщины – от 0.2 мм до 1.0 мм);
линии связи должны состоять из вертикальных и горизонтальных отрезков и иметь наименьшее число возможных изломов и точек пересечения.
В определении схем утверждается, что схемы составляются из символов. В таблице 2 приведены символы, которые наиболее часто применяются в схемах программ и контексты их применения (в каком смысле эти символы применяют).
Т а б л и ц а 2
Символы процесса и контекст их применения
Название блока |
Обозначение |
Назначение блока |
Терминатор
|
|
Начало, завершение программы или подпрограммы |
Процесс
|
Действие |
Обработка данных (вычисления, пересылка, модификация и т.п.) |
Данные |
|
Операции ввода-вывода информации |
Решение |
|
Ветвление, выбор, итерационные и поисковые циклы |
Подготовка |
|
Счетные циклы (выполняемые заданное количество раз) |
Границы цикла |
Начало
Конец
|
Любые цикла (надписи символов поясняют условия инициализации цикла и условия окончания цикла) |
Предопределенный процесс |
|
Вызов процедуры, функции, подпрограммы |
Продолжение таблицы 2 | ||
Соединитель |
|
Маркировка разрывов линий |
Комментарий |
----- Текст пояснения
|
Пояснения к символам или операциям |
Применение символа “предопределенный процесс” в схемах программ предполагает, что детальная спецификация вызываемой подпрограммы или модуля будет приведена в документе далее по тексту.
Использование символа граница цикла в схемах программ может быть проиллюстрировано рисунком 1.
а) б) в)
а – парное использование символов границы цикла
б- правило использование текста для циклов с предусловием;
в - правило использование текста для циклов с постусловием.
Рис. 1. Оформление циклов в схемах программ с применением символов “граница цикла”
Несколько выходов из символа следует изображать:
несколькими линиями от данного символа к другим символам;
одной линией от данного символа, которая затем разветвляется в соответствующее число линий (только для символа “решение”).
Каждый выход из символа “решение” должен сопровождаться соответствующими значениями условий, чтобы показать логический путь, который он представляет, с тем, чтобы эти условия и пути выполнения алгоритма задачи были идентифицированы (см. рис. 2).
а) б)
а- несколько линий от символа “решение”;
б- одна разветвляющаяся линия от символа “решение”).
Рис. 2. Оформление ветвлений в схемах программ
Две или более входящие линии могут объединяться в одну исходящую линию, место объединения должно быть смещено как показано на рисунке 3.
Рис. 3. Объединение линий управления в схемах программ
При использовании символов в схемах руководствуются следующими правилами:
1) символы в схеме должны быть расположены равномерно. Следует придерживаться разумной длины соединений и минимального числа длинных линий;
2) символы должны быть, по возможности, одного размера;
3) символы могут быть вычерчены в любой ориентации, но предпочтительной является горизонтальная ориентация. Зеркальное изображение формы символа означает одну и ту же функцию;
текст для понимания функции символа следует помещать внутри символа. Текст должен записываться слева направо и сверху вниз. Если объём текста внутри символа превышает его размеры, следует использовать символ комментария. При этом пунктирные линии в символе комментария связаны с отдельным символом или могут обводить группу символов. Текст комментариев должен быть помещен около ограничивающей фигуры. Пример иллюстрируется рисунком 4.
Рис. 4. Применение комментариев в схемах программ
В качестве примера приведу фрагмент схемы программы с циклом с заданным числом повторений (в большинстве языков программирования эта конструкция начинается зарезервированным словом for) (см. рис. 5,6).
I, I=N1, I+1, I>N2
Тело
цикла
Действия
после цикла
а) б)
а - конструкция “счетный цикл”
б – конструкция “цикл общего вида”
Рис. 5. Применение символов процесса для отображения цикла с заданным числом повторений
нет
да
Рис. 6. Детальное представление цикла с заданным числом повторений
Разработка алгоритма преобразования
Алгоритм — точное предписание, которое задает алгоритмический процесс, начинающийся с произвольного исходного данного (из некоторой совокупности возможных для данного алгоритма исходных данных) и направленный на получение полностью определенного этими исходными данными результата.
Алгоритмический процесс — процесс последовательного преобразования конструктивных объектов (слов, чисел, пар слов, пар чисел, предложений и т.п.), происходящий дискретными «шагами». Каждый шаг состоит в смене одного конструктивного объекта другим.
Поскольку алгоритмы могут применяться к весьма произвольным объектам (числам, буквам, словам, графам, логическим выражениям и т.д.), в определении алгоритма используется специальный термин — «конструктивный объект», объединяющий в себе все эти возможные случаи.
На практике в программировании используется задание алгоритмов в виде схем программ (см. предыдущий параграф).
Схемы программ разрабатываются с использованием принципов структурного программирования:
- во-первых, каждый программный модуль (блок, функция, процедура) должен иметь только один вход и один выход. Это позволяет максимально упростить стыковку модулей в программе;
- во-вторых, в программах рекомендуется применять 4 типа конструкций:
а) последовательность (модулей, операторов), отраженную на рис. 7;
Рис. 7. Программная конструкция “последовательность”
б) разветвление (условный оператор), демонстрируемое рисунком 8 (перечеркивание оператора означает, что Q может отсутствовать.
Рис. 8. Программная конструкция “ветвление”
в) цикл
с предусловием (см. рис. 9);
Рис. 9. Программная конструкция “цикл с предусловием”
с постусловием (см. рис. 10);
Рис. 10. Программная конструкция “цикл с постусловием”
г) выбор из нескольких альтернатив (или переключатель), изображенный на рис. 11;
Рис. 11. Программная конструкция “переключатель”
- в-третьих, разработку программ рекомендуется вести сверху – вниз или по нисходящей стратегии.
Схемы программ для конкретных задач, как правило, содержат более сложные программные конструкции, которые включают перечисленные выше, например цикл в цикле, условие в цикле, цикл в условии и т.п.
Существует весьма большое количество всевозможных приемов и методов разработки алгоритмов. Однако среди имеющегося разнообразия этих методов можно выделить небольшой набор основных, в том смысле, что методы из такого набора применяются часто и лежат в основе многих процедур и алгоритмов. Можно утверждать, что знание приводимых ниже методов необходимо для любого программиста.