- Преимущественное использование базовых алгоритмических структур: следование, развилка, цикл.
- Метод нисходящего проектирования алгоритмов.
- Использование обозначений, соответствующих содержанию задачи и облегчающих понимание программы.
-Преимущественное использование базовых алгоритмических структурÞограниченное использование операторов безусловного перехода – goto, break, continue, exit и др.
-Преимущественное использование базовых алгоритмических структур Þ уменьшение разнообразия алгоритмов, их стандартизация Þ улучшение наглядности алгоритмов, понятности алгоритмов Þ уменьшение количества ошибок при разработке алгоритмов.
-Структурное программирование основано на теореме Дейкстры.
При установлении связей между подалгоритмами очень важно. Метод нисходящего проектирования:
- разделение задачи на связанные между собой подзадачи;
- алгоритм каждой подзадачи имеет один вход и один выход;
-разбиение на подзадачи отражает логику программы;
-алгоритм, устанавливающий связи между подзадачами, строится с использованием базовых алгоритмических структур;
|
|
-подзадачи автономны - кодируются как подпрограммы, преимущественно использующие локальные переменные.
20. Технология разработки программ. Понятие технологии программирования. Этапы развития технологий программирования, виды технологий. Критерии качества программ. Этапы разработки программы. Понятие о внешней спецификации задачи. Правила записи спецификаций.
Технология программирования - совокупность методов и инструментальных средств, используемых в процессе разработки программного обеспечения. Технология программирования представляет собой набор технологических инструкций, включающих:
- указание последовательности выполнения технологических операций (этапов разработки), описание операций;
- перечисление условий, при которых выполняется та или иная операция;
-инструкции, нормативы, стандарты, критерии и методы оценки;
Этапы развития технологии программирования.
1. «Стихийное программирование». От появления первых ЭВМ до середины 60-х годов ХХ века («кризиса программирования»).
2. Структурное программирование. Середина 60-х – середина 80-х годов ХХ века. В рамках структурного программирования – модульное программирование (разбиение программы на независимые файлы – модули).
3. Объектно-ориентированное программирование. Середина 80-х – середина 90-х годов ХХ века. Объект (класс) – новый тип данных, который объединяет в себе данные и методы (подпрограммы) обработки этих данных.
4. Компонентный подход к программированию и использование Case-технологий. построение программного обеспечения из отдельных двоичных компонентов, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы. В отличие от обычных объектов, объекты-компоненты можно собрать в динамически присоединяемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных кодов) и использовать в любом языке программирования, поддерживающем соответствующую технологию.
|
|
Критерии кач-ва программ:
Надежность (отсутствие некомментируемых отказов)
Наличие «дружественного интерфейса»
Простота анализа и изменения программы
Документированность
Соответствие постановке задачи
Эффективность
Этапы разработки программы:
1. Анализ задачи
2. Разработка алгоритмов
3. Кодирование алгоритма
4. Отладка и тестировании программы
5. Оформление документов
Внешняя спецификация задачи:
1. Название и условие задачи
2. Входные данные:
- состав (имя, смысл, тип, структура);
- диапазон;
- точность;
- объем;
- форма записи - форма ввода (входная форма)
3. Выходные данные: то же, что и в входных, только теперь выходные
4. Метод решения (название или описание) или и
4а.Связь входных и выходных данных (возможно, формулы)
5. Аномалии: аномальные ситуации и реакции на них
6. Функциональные тесты
21. Отладка и тестирование программ. Функциональные и структурные тесты. Виды ошибок в программах.
Тест - совокупность специально подобранных исходных данных и соответствующих выходных данных, используемых для проверки правильности работы программы.
Тестирование - испытание программы на множестве тестов.
Тесты бывают функциональные (создаются на этапе анализа задачи) и структурные (создаются на этапе разработки алгоритма).
При построении функциональных тестов:
- Программа рассматривается как «черный ящик», ее внутренняя структура не учитываются.
- Используются методы решения задачи, отличные от положенных в основу алгоритма.
Цель функционального тестирования - н айти расхождение между программой и ее внешней спецификацией.
Общие правила:
1. Просматриваются разделы внешней спецификации «Исходные данные», «Аномалии»; определяется область допустимых значений исходных данных; тесты строятся для допустимых, недопустимых и граничных значений исходных данных.
2. По разделу «выходные данные» строятся их функциональные границы; тесты строятся с учетом этих границ.
Каждый структурный тест проверяет правильность выполнения вычислений по одному из возможных путей реализации алгоритма - количество структурных тестов определяется количеством таких путей.
Структурное тестирование:
- Учитывает логику (структуру) программы
- Предусматривает контроль правильности вычислений с помощью ручного просчета (или просчета с помощью других программ)
- Предполагает пошаговое выполнение программы (трассировку) с контролем промежуточных результатов
Отладка - процесс поиска, локализации и устранения ошибок в программе с целью получения правильной программы.
Этапы отладки:
1. Устранение синтаксических ошибок
2. Устранение ошибок при редактировании связей и Загрузке
3. Ликвидация ошибок при выполнении программы, обнаруживаемых инструментальной средой программирования или операционной системой
4. Тестирование программы
5. Верификация - доказательство корректности программы посредством логического анализа - необязательный этап
Способы тестирования сложных программ:
нисходящий (с заглушками *подпрограмма, моделирующая работу еще не разработанного модуля.*) и восходящий (с драйверами *специальная несложная программа для проверки работы подпрограмм*)
Основные виды ошибок в программировании:
- Синтаксические
- Логические
- Компиляции (Синтаксис может быть и норм, а все равно ошибка. Скорее всего, ошибка в самом компиляторе)
- Среды выполнения (Ошибки при запуске уже самой программы. Тут либо нехватка ресурсов, либо какая-то авария)
- Арифметическая
- Ошибка ресурса (Значение переменной переполняет максимальное допустимое значение)
|
|
22. Логические выражения. Логические константы, переменные. Соотношения. Логические операции. Формулы двойственности. Примеры составления и использования логических выражений.
23. Подпрограммы. Их назначение. Понятие о функциях
Подпрограмма - автономно оформленный алгоритм, который может быть использован другим алгоритмом. Они необходимы для чтобы избежать повторного программирования одинаковых с точностью до обозначений частей алгоритма;
для улучшения наглядности программы за счет укрупнения операторов;
для создания библиотек алгоритмов, в том числе библиотек объектных модулей;
для упрощения отладки программ;
чтобы упростить разделение труда между несколькими программистами;
В MatLab подпрограммы имеют разрешение.m. Подпрограммы могут быть как скриптами(не имеют параметров; имеют общее пространство рабочих переменных с вызывающим кодом.), так и функциями(это подпрограммы MATLAB; имеют собственное, независимое от вызывающего кода, пространство рабочих переменных; имеют параметры.). Все подпрограммы имеют собственные локальные переменные.
Передача данных между подпрограммой и основным кодом возможна либо ч ерез параметры функции, либо через глобальные переменные.
Формальные параметры действуют только внутри функции (являются локальными). При обращении к функции формальные параметры заменяются на данные вызывающего кода (фактические параметры).
Фактические параметры функции - это параметры вызывающего кода (базовой рабочей области), которые подставляются вместо формальных параметров при вызове функции. При вызове осуществляется копирование данных из базовой рабочей области в рабочую область функции.
При обращении к функции формальные параметры заменяются на данные вызывающего кода (фактические параметры).
Записываем функцию, как function [Список выхода] = ИмяФункции(Список входа)
|
|
24. Основы работы в среде Matlab. Окно среды: командное окно, рабочая область, проводник текущей директории, окно предыстории. Оператор присваивания. Имена переменных. Константы. Задание значений векторов и матриц. Основные операции. Матричные и скалярные операции. Оператор двоеточия.
Присваивание "="
Имена переменных могут задаваться только латинскими буквами, цифрами и символом ‘_’, причем начинаться имя должно именно с латинской буквы
Константы "const per = *число*"
Вектор: a = [1 2 3 4], если нужен столбец, то транспонируем " ' "
Матрицу вводим либо [1 2 3; 1 2 3; 1 2 3], либо через строки
Если действуем со склаярными величинами, то перед действием ставим ". "
Операции над матрицами в билите 31.
A(:) – матрица А вытягивается в вектор «по столбцам».