
- •Понятие формального языка. Описание синтаксиса языка.
- •Понятия тестирования и отладки. Принципы тестирования.
- •Полнота тестирования. Критерии черного ящика.
- •Критерии белого ящика.
- •Мгт. Ошибкоопасные ситуации при работе с файлами.
- •Ошибкоопасные ситуации при обращении к данным.
- •Ошибкоопасные ситуации при вычислениях.
- •Ошибкоопасные ситуации при передаче управления и вызовах подпрограмм.
- •Безмашинное тестирование.
- •Оценка количества ошибок в программе.
- •Мера доверия к миллсовой модели оценки количества ошибок в программе. Оценка количества необходимых тестов.
- •Отладка. Отладочные операторы.
- •Методы поиска ошибки. Принципы отладки. Анализ обнаруженной ошибки.
- •Отладочные средства авс-Паскаля.
- •Нисходящее программирование. Нисходящее тестирование.
- •Стиль программирования
- •Понятие алгоритма. Свойства алгоритма.
- •Операторы Паскаля
- •Замкнутые подпрограммы.
- •Открытые подпрограммы.
- •Передача параметров.
- •Рекурсия.
- •Рекуррентные вычисления. Вычисления рекурсивные и итеративные. Реализация одного и того же алгоритма рекурсивно и итеративно.
- •Блочная структура.
- •Понятие типа данных. Классификация языков по типизации.
- •Классификация типов данных. Числовые типы.
- •Перечисления. Диапазоны.
- •Массивы.
- •Моделирование массивом последовательностей: стек.
- •Моделирование массивом последовательностей: очереди
- •Моделирование массивом последовательностей: деки
- •Записи. Присоединяющий оператор.
- •Файлы. Виды файлов. Методы доступа. Триада для работы с файлом.
- •Синхронизация. Буферизация. Блокирование.
- •Двоичные файлы в авс-Паскале.
- •Строки Тип string в авс Паскале.
- •Множества.
- •Процедурные типы.
- •1 ) Описание процедурной константы в Паскале:
- •2 ) Не в Паскале:
- •Типовая безопасность. Идентичность типов.
- •Абстракция данных. Модули в Турбо-Паскале и в авс-Паскале.
- •Подходы к созданию универсального языка программирования
- •Запись с вариантами
- •Классы памяти
- •Понятие конечного автомата и мп-автомата
- •Понятие Машины Тьюринга, нормальных алгоритмов Маркова
Ошибкоопасные ситуации при вычислениях.
- неверный порядок вычисления операций в выражении (особенно в сочетании с отсутствием типового контроля)
- путаница между полной и краткой схемой вычисления логических выражений
- сравнения >, < (потеря третьего результата сравнения), для полноценного сравнения требуется не один условный оператор, а 2 вложенных
- сравнения >=, <=(ошибки типа +/-1)
- деление на 0
- извлечение корня из отрицательного числа
- взятие логарифма неположительного числа
- использование данных не того типа
- присваивание целой переменной вещественного значения (может допускаться, но с каким округлением?)
- сравнение вещественных чисел (погрешности округления)
- вычисления с плавающей точкой (погрешности округления)
- переполнение при арифметических вычислениях (получение очень больших чисел)
- потеря значимости при вычислении с плавающей точкой (получение чисел с очень маленькой мантиссой)
- переполнение или потеря значимости в промежуточных вычислениях арифметических вычислений
Ошибкоопасные ситуации при передаче управления и вызовах подпрограмм.
- развилки (пропущена ветвь «иначе» при case)
- много вложенных условных оператора (чтобы избежать, не надо после then писать сокращенные условные операторы, необходимо приписывать пустые ветви «иначе»)
- зацикливание (должна меняться хотя бы 1 переменная, входящая в условие цикла), не надо менять его «вручную» при вычислении тела цикла
- неверное количество параметров (количество фактических соответствует количеству формальных параметров)
- неверные типы параметров
- неверный порядок следования параметров (практически везде соответствие устанавливается по номеру параметра), единицы измерения не записываются, а подразумеваются
- неверные единицы измерения параметров (использование параметров внутри подпрограммы)
- неверный способ передачи параметров (передача формального параметра по значению и по ссылке, передача по ссылке константы)
- одна и та же переменная может быть указана как фактический параметр одновременно для нескольких формальных параметров, передаваемых по ссылке (требует повышенного внимания, не ошибка)
- одновременный доступ к одной и той же переменной через параметр, передаваемый по ссылке, и через глобал (к одной и той же переменной обращение идет по двум разным именам – по имени глабольной переменной и по имени формального параметра)
Безмашинное тестирование.
Методы безмашинного тестирования – сухая прокрутка, символическая прокрутка, объяснение коллеге, просмотр программы с анализом ошибкоопасных мест, искусственное внесение ошибок в программу, передача коллеге для самостоятельного изучения
Сухая прокрутка – ручное моделирование работы машины при выполнении программы, роль центрального процессора - человек, роль оперативной памяти – трассировочная таблица
Трассировочная таблица - модель работы процессора при выполнении программы. Полностью моделируют процесс обработки информации, происходящий в компьютере. В этой таблице будет своя графа для каждой переменной, а порядок присваивания значений будет отображаться выравниванием значений по вертикали.
Символическая прокрутка – анализ программы шаг за шагом, каждый раз когда переменная принимает значение, убедиться, что значение соответствует смыслу переменной, найти те условия, при которых вычисления дадут сбой, убедиться, что в программе отображены все возможные случаи
Объяснение коллеге – рассуждения вслух отличаются от рассуждений про себя, вынуждение сформулировать все допущения
Передача коллеге для самостоятельного изучения – «видит то что написано «на самом деле»
Искусственное внесение ошибок в программу – вносить должен посторонний человек или программа