Аннотация: Лекция носит факультативный характер. Здесь мы рассматриваем виды допускаемых в программировании ошибок, способы тестирования и отладки программ, инструменты встроенного отладчика.
Цель лекции
Освоить работу с встроенным отладчиком, изучить категории ошибок, способы их обнаружения и устранения.
Тестирование и отладка программы
Чем больше опыта имеет программист, тем меньше ошибок в коде он совершает. Но, хотите верьте, хотите нет, даже самый опытный программист всё же допускает ошибки. И любая современная среда разработки программ должна иметь собственные инструменты для отладки приложений, а также для своевременного обнаружения и исправления возможных ошибок. Программные ошибки на программистском сленге называют багами (англ. bug — жук), а программы отладки кода — дебаггерами (англ. debugger — отладчик). Lazarus, как современная среда разработки приложений, имеет собственный встроенный отладчик, работу с которым мы разберем на этой лекции.
Ошибки, которые может допустить программист, условно делятся на три группы:
- Синтаксические
- Времени выполнения (run-time errors)
- Алгоритмические
Синтаксические ошибки
Синтаксические ошибки легче всего обнаружить и исправить — их обнаруживает компилятор, не давая скомпилировать и запустить программу. Причем компилятор устанавливает курсор на ошибку, или после неё, а в окне сообщений выводит соответствующее сообщение, например, такое:

Рис.
27.1.
Найденная компилятором синтаксическая ошибка — нет объявления переменной i
Подобные ошибки могут возникнуть при неправильном написании директивы или имени функции (процедуры); при попытке обратиться к переменной или константе, которую не объявляли (
рис.
27.1); при попытке вызвать функцию (процедуру, переменную, константу) из модуля, который не был подключен в разделе uses; при других аналогичных недосмотрах программиста.
Как уже говорилось, компилятор при нахождении подобной ошибки приостанавливает процесс компиляции, выводит сообщение о найденной ошибке и устанавливает курсор на допущенную ошибку, или после неё. Программисту остается только внести исправления в код программы и выполнить повторную компиляцию.
Ошибки времени выполнения
Ошибки времени выполнения (run-time errors) тоже, как правило, легко устранимы. Они обычно проявляются уже при первых запусках программы, или во время тестирования. Если такую программу запустить из среды Lazarus, то она скомпилируется, но при попытке загрузки, или в момент совершения ошибки, приостановит свою работу, выведя на экран соответствующее сообщение. Например, такое:

Рис.
27.2.
Сообщение Lazarus об ошибке времени выполнения
В данном случае программа при загрузке должна была считать в память отсутствующий текстовый файл MyFile.txt. Поскольку программа вызвала ошибку, она не запустилась, но в среде Lazarus процесс отладки продолжается, о чем свидетельствует сообщение в скобках в заголовке главного меню, после названия проекта. Программисту в подобных случаях нужно сбросить отладчик командой меню «Запуск -> Сбросить отладчик«, после чего можно продолжить работу над проектом.
Ошибка времени выполнения может возникнуть не только при загрузке программы, но и во время её работы. Например, если бы попытка чтения несуществующего файла была сделана не при загрузке программы, а при нажатии на кнопку, то программа бы нормально запустилась и работала, пока пользователь не нажмет на эту кнопку.
Если программу запустить из самой Windows, при возникновении этой ошибки появится такое же сообщение. При этом если нажать «OK«, программа даже может запуститься, но корректно работать все равно не будет.
Ошибки времени выполнения бывают не только явными, но и неявными, при которых программа продолжает свою работу, не выводя никаких сообщений, а программист даже не догадывается о наличии ошибки. Примером неявной ошибки может служить так называемая утечка памяти. Утечка памяти возникает в случаях, когда программист забывает освободить выделенную под объект память. Например, мы объявляем переменную типа TStringList, и работаем с ней:
begin
MySL:= TStringList.Create;
MySL.Add('Новая строка');
end;
В данном примере программист допустил типичную для начинающих ошибку — не освободил класс TStringList. Это не приведет к сбою или аварийному завершению программы, но в итоге можно бесполезно израсходовать очень много памяти. Конечно, эта память будет освобождена после выгрузки программы (за этим следит операционная система), но утечка памяти во время выполнения программы тоже может привести к неприятным последствиям, потребляя все больше и больше ресурсов и излишне нагружая процессор. В подобных случаях после работы с объектом программисту нужно не забывать освобождать память:
begin
MySL:= TStringList.Create;
MySL.Add('Новая строка');
...; //работа с объектом
MySL.Free; //освободили объект
end;
Однако ошибки времени выполнения могут случиться и во время работы с объектом. Если есть такой риск, программист должен не забывать про возможность обработки исключительных ситуаций. В данном случае вышеприведенный код правильней будет оформить таким образом:
begin
try
MySL:= TStringList.Create;
MySL.Add('Новая строка');
...; //работа с объектом
finally
MySL.Free; //освободили объект, даже если была ошибка
end;
end;
Итак, во избежание ошибок времени выполнения программист должен не забывать делать проверку на правильность ввода пользователем допустимых значений, заключать опасный код в блоки try…finally…end или try…except…end, делать проверку на существование открываемого файла функцией FileExists и вообще соблюдать предусмотрительность во всех слабых местах программы. Не полагайтесь на пользователя, ведь недаром говорят, что если в программе можно допустить ошибку, пользователь эту возможность непременно найдет.
Алгоритмические ошибки
Если вы не допустили ни синтаксических ошибок, ни ошибок времени выполнения, программа скомпилировалась, запустилась и работает нормально, то это еще не означает, что в программе нет ошибок. Убедиться в этом можно только в процессе её тестирования.
Тестирование — процесс проверки работоспособности программы путем ввода в неё различных, даже намеренно ошибочных данных, и последующей контрольной проверке выводимого результата.
Если программа работает правильно с одними наборами исходных данных, и неправильно с другими, то это свидетельствует о наличии алгоритмической ошибки. Алгоритмические ошибки иногда называют логическими, обычно они связаны с неверной реализацией алгоритма программы: вместо «+» ошибочно поставили «-«, вместо «/» — «*», вместо деления значения на 0,01 разделили на 0,001 и т.п. Такие ошибки обычно не обнаруживаются во время компиляции, программа нормально запускается, работает, а при анализе выводимого результата выясняется, что он неверный. При этом компилятор не укажет программисту на ошибку — чтобы найти и устранить её, приходится анализировать код, пошагово «прокручивать» его выполнение, следя за результатом. Такой процесс называется отладкой.
Отладка — процесс поиска и устранения ошибок, чаще алгоритмических. Хотя отладчик позволяет справиться и с ошибками времени выполнения, которые не обнаруживаются явно.
Тест
по предмету технология разработки ПО
Задание №1
Вопрос:
Что такое модель жизненного цикла программного обеспечения
Выберите один из 5 вариантов ответа:
1) структура, содержащая процессы действия и задачи, которые
осуществляются в ходе разработки, использования и сопровождения программного
продукта.
2) модель содержащая процессы действия и задачи, которые
осуществляются в ходе разработки, использования и сопровождения программного
продукта.
3) действия содержащие процессы действия и задачи, которые осуществляются
в ходе разработки, использования и сопровождения программного продукта.
4) структура, содержащая процессы задачи, которые осуществляются в
ходе использования и сопровождения программного продукта.
5) структура, содержащая процессы действия и задачи, которые
осуществляются в ходе разработки.
Задание №2
Вопрос:
Дана модель:
1-Постановка задачи
2-Выполнение
3-Проверка результата
4-При необходимости переход к первому пункту
Выберите название данной модели
Выберите один из 5 вариантов ответа:
1) Каскадная модель
2) Модель кодирования и устранения ошибок
3) Каскадная модель с промежуточным контролем
4) V модель
5) Спиральная модель
Задание №3
Вопрос:
Какая это модель жизненного цикла программного обеспечения?
(Нажмите на изображение)
Изображение:

Выберите один из 5 вариантов ответа:
1) Каскадная модель (водопад)
2) Каскадная модель с промежуточным контролем
3) V модель
4) Модель кодирования и устранения ошибок
5) Спиральная модель жизненного цикла ПО
Задание №4
Вопрос:
Количество стадий, разработки программного обеспечения
Выберите один из 5 вариантов ответа:
1) 7
2) 6
3) 3
4) 5
5) 4
Задание №5
Вопрос:
Согласно ГОСТ 19.102-77, в этап: Разработка программы входит
Выберите один из 5 вариантов ответа:
1) Программирование
и отладка программы.
2) Разработка плана
мероприятий по разработке и внедрению программ.
3) Разработка
программных документов в соответствии с требованиями ГОСТ 19.101-77.
4) Разработка,
согласование и утверждение порядка и методики испытаний.
5) Корректировка
программы и программной документации по результатам испытаний.
Задание №6
Вопрос:
Согласно ГОСТ 19.102-77, на стадии 1.Техническое задание
выполняется
Выберите один из 5 вариантов ответа:
1) Постановка задачи. Сбор исходных материалов
2) Уточнение структуры входных и выходных данных. Постановка
задачи.
3) Сбор исходных материалов, Разработка алгоритма решения задачи
4) Разработка структуры, Постановка задачи, Сбр исходных материаов
5) Постановка задачи, Сбор исходных материалов, Обоснование
необходимости проведения научно-исследовательских работ
Задание №7
Вопрос:
ГОСТ 19.001-77 отвечает за
Выберите один из 5 вариантов ответа:
1) Общие положения
2) Виды программ
3) Стадии разработки
4) Общие требования
5) Основные надписи
Задание №8
Вопрос:
ГОСТ 19.101-77 отвечает за
Выберите один из 5 вариантов ответа:
1) Виды программ
2) Виды программ и программной документации
3) Виды программной документации и общие положения
4) Виды программ и общие положения
5) Виды программ и программной обозначений
Задание №9
Вопрос:
Что такое ЕСПД?
Выберите один из 5 вариантов ответа:
1) Единая система программной документации
2) Единая система проектной документации
3) Единый стандарт проектной документации
4) Единсветнный стандарт программной документации
5) Нет ответа
Задание №10
Вопрос:
Классификация и обозначения стандартов ЕСПД. За что отвечает
группа «0» в стандартах ЕСПД
Выберите один из 5 вариантов ответа:
1) Общие положения
2) Основопологающие стандарты
3) Правила выполнения документации разработки
4) Правила выполнения документации изготовления
5) Правила обащения программной документации
Задание №11
Вопрос:
Классификация и обозначения стандартов ЕСПД. За что отвечает
группа «1» в стандартах ЕСПД
Выберите один из 5 вариантов ответа:
1) Общие положения
2) Основопологающие стандарты
3) Правила выполнения документации разработки
4) Правила выполнения документации изготовления
5) Правила обащения программной документации
Задание №12
Вопрос:
Классификация и обозначения стандартов ЕСПД. За что отвечает
группа «2» в стандартах ЕСПД
Выберите один из 5 вариантов ответа:
1) Общие положения
2) Основопологающие стандарты
3) Правила выполнения документации разработки
4) Правила выполнения документации изготовления
5) Правила обащения программной документации
Задание №13
Вопрос:
Классификация и обозначения стандартов ЕСПД. За что отвечает
группа «3» в стандартах ЕСПД
Выберите один из 5 вариантов ответа:
1) Общие положения
2) Основопологающие стандарты
3) Правила выполнения документации разработки
4) Правила выполнения документации изготовления
5) Правила обащения программной документации
Задание №14
Вопрос:
Классификация и обозначения стандартов ЕСПД. За что отвечает
группа «4» в стандартах ЕСПД
Выберите один из 5 вариантов ответа:
1) Общие положения
2) Основопологающие стандарты
3) Правила выполнения документации разработки
4) Правила выполнения документации сопровождения
5) Правила обащения программной документации
Задание №15
Вопрос:
Классификация и обозначения стандартов ЕСПД. За что отвечает
группа «5» в стандартах ЕСПД
Выберите один из 5 вариантов ответа:
1) Общие положения
2) Основопологающие стандарты
3) Правила выполнения документации разработки
4) Правила выполнения документации эксплуатации документации
5) Правила обащения программной документации
Задание №16
Вопрос:
Классификация и обозначения стандартов ЕСПД. За что отвечает
группа «6» в стандартах ЕСПД
Выберите один из 5 вариантов ответа:
1) Общие положения
2) Основопологающие стандарты
3) Правила выполнения документации разработки
4) Правила выполнения документации эксплуатации документации
5) Правила обащения программной документации
Задание №17
Вопрос:
Классификация и обозначения стандартов ЕСПД. За что отвечает
группа «7/8» в стандартах ЕСПД
Выберите один из 5 вариантов ответа:
1) Резервные группы
2) Основопологающие стандарты
3) Правила выполнения документации разработки
4) Правила выполнения документации эксплуатации документации
5) Правила обащения программной документации
Задание №18
Вопрос:
Классификация и обозначения стандартов ЕСПД. За что отвечает
группа «9» в стандартах ЕСПД
Выберите один из 5 вариантов ответа:
1) Резервные группы
2) Прочие стандарты
3) Правила выполнения документации разработки
4) Правила выполнения документации эксплуатации документации
5) Правила обащения программной документации
Задание №19
Вопрос:
2-ух значное число после точки в стандартах ЕСПД обзначает
Выберите один из 5 вариантов ответа:
1) Порядковый номер стандарта в группе
2) Год регистрации стандарта
3) Классификацию группы стандарта
4) Общие положения
5) Порядковый номер стандарта в регистрационной базе
Задание №20
Вопрос:
2-ух значное число до тере в стандартах ЕСПД обзначает
Выберите один из 5 вариантов ответа:
1) Порядковый номер стандарта в группе
2) Год регистрации стандарта
3) Классификацию группы
4) Общие положения
5) Порядковый номер стандарта в регистрационной базе
Задание №21
Вопрос:
2-ух значное число после тере в стандартах ЕСПД обзначает
Выберите один из 5 вариантов ответа:
1) Порядковый номер стандарта в группе
2) Год регистрации стандарта
3) Классификацию группы
4) Общие положения
5) Порядковый номер стандарта в регистрационной базе
Задание №22
Вопрос:
ГОСТ 19.102-77 отвечает за
Выберите один из 5 вариантов ответа:
1) Стадии разработки
2) Виды программ
3) Стадии разработки
4) Общие требования
5) Основные надписи
Задание №23
Вопрос:
ГОСТ 19.103-77 отвечает за
Выберите один из 5 вариантов ответа:
1) Стадии разработки
2) Обозначения программ и программных документов
3) Стадии разработки
4) Общие требования
5) Основные надписи
Задание №24
Вопрос:
ГОСТ 19.104-78 отвечает за
Выберите один из 5 вариантов ответа:
1) Стадии разработки
2) Основные надписи
3) Стадии разработки
4) Общие требования
5) Основные надписи
Задание №25
Вопрос:
ГОСТ 19.402-78 отвечает за
Выберите один из 5 вариантов ответа:
1) Стадии разработки
2) Описание программы
3) Стадии разработки
4) Общие требования
5) Основные надписи
Задание №26
Вопрос:
Укажите правильную запись стандарта ЕСПД
Выберите один из 5 вариантов ответа:
1) ГОСТ 19-001-787
2) ГОСТ 19-002.487
3) ГОСТ Е19.00-1997
4) ГОСТ 19.103-77г.
5) ГОСТ 19.103-77
Задание №27
Вопрос:
Что такое ситль программирования?
Выберите один из 5 вариантов ответа:
1) Набор приемов и методов программирования, которые необходимы
соблюдать при написании программы
2) Программирование, которое стилилизуется при написании программы
3) Хороший стиль программрования
4) Набор элементов, которые образуют надежность, дружественность,
отличный интерефейс
5) Использование отпустоп
Задание №28
Вопрос:
Что подрузумевает хороший стиль программирования?
Выберите один из 5 вариантов ответа:
1) Использование переменных
2) Использование комментариев
3) Использование программ
4) Использование UI
5) Качественные переменные
Задание №29
Вопрос:
Что такое надежность?
Выберите один из 5 вариантов ответа:
1) Программа контролирует исходные данные, проверяет результат
выполнение операции
2) Программа контролирует выходные данные, проверяет рузельтат
выполнения
3) Предпологает хорошо спроектирование диалоговые окна
4) Хороший интерефйс
5) Качественный код
Задание №30
Вопрос:
Что такое дружественность?
Выберите один из 5 вариантов ответа:
1) Программа контролирует исходные данные, проверяет результат
выполнение операции
2) Программа контролирует выходные данные, проверяет рузельтат
выполнения
3) Предпологает хорошо спроектирование диалоговые окна
4) Хороший интерефйс
5) Качественный код
Задание №31
Вопрос:
Что такое транслятор?
Выберите один из 5 вариантов ответа:
1) Программа для переводы с языка программирования на машинные
коды
2) Программа для изменения кода
3) Программа для создания изменений исходных программ
4) Программа для перевода из машинного кода в язык
программирования
5) Переводит исходнй текст в программный код
Задание №32
Вопрос:
Что такое компилятор?
Выберите один из 5 вариантов ответа:
1) Переводит исходный текст программы в язык программирования
низкого уровня
2) Переводит исходный текст программы в язык программирования
высокого уровня
3) Переводит исходный текст программы в процедуру
4) Переводит программу в функцию
5) Нет правильного ответа
Задание №33
Вопрос:
Что выполняет интерпритатор?
Выберите один из 5 вариантов ответа:
1) Выполняет покомандную обработку текста программы
2) Выполняет перевод
3) Выполняет покомандную переводку текста программы
4) Выполняет текст программы
5) Выполняет функцию обработки текста программы
Задание №34
Вопрос:
Что такое структурное программирование?
Выберите один из 5 вариантов ответа:
1) Методология разработки ПО, в основе которых лежит представление
программ в виде иерархической структуре блоков
2) Методология разраюотки ПО, в основе которых лежит представление
программ в виде блоков
3) Разработки из частей
4) Программирование по частям одной процедуры
5) Методология разработки ПО, в основе которых лежит представление
программ в виде линейной задачи
Задание №35
Вопрос:
Цель структурного программирования:
Выберите один из 5 вариантов ответа:
1) Снижение памят всего процесса создания ПО
2) Снижение затрат всего процесса создания ПО
3) Снижение трудоемкости всего процесса создания ПО
4) Снижение работоспособности всего процесса создания ПО
5) Снижение трудоемкости описания создания ПО
Задание №36
Вопрос:
Что представляет метод восходящей разработки?
Выберите один из 5 вариантов ответа:
1) 1) Строется модель структуры программы в виде дерева
2) Программируется цункции начиная с самого нижнего
2) 1) Строется модель структуры программы в виде структуры
2) Поочередно программируются модули начиная с самого нижнего
3) 1) Строется модель структуры программы в виде структуры
2) Поочередно программируются модули начиная с самого верхнего
4) 1) Строется модель структуры программы в виде дерева
2) Поочередно программируются модули начиная с самого верхнего
5) 1) Строется модель структуры программы в виде дерева
2) Поочередно программируются функции и переменные начиная с
самого верхнего
Задание №37
Вопрос:
Что представляет метод нисходящей разработки?
Выберите один из 5 вариантов ответа:
1) 1) Строется модель структуры программы в виде дерева
2) Программируется цункции начиная с самого нижнего
2) 1) Строется модель структуры программы в виде структуры
2) Поочередно программируются модули начиная с самого нижнего
3) 1) Строется модель структуры программы в виде функций
2) Поочередно программируются модули начиная с самого верхнего
4) 1) Строется модель структуры программы в виде дерева
2) Поочередно программируются модули начиная с самого верхнего
5) 1) Строется модель структуры программы в виде дерева
2) Поочередно программируются функции и переменные начиная с
самого верхнего
Задание №38
Вопрос:
Какого вида ошибок не существует?
Выберите один из 5 вариантов ответа:
1) Синтаксические
2) Алгоритмические
3) Нет правильного ответа
4) Ошибки времени выполнения
5) Структурированные
Задание №39
Вопрос:
Синтеаксические ошибки, это ошибки
Выберите один из 5 вариантов ответа:
1) ошибки времени компиляции
2) ошибки при выполнении
3) ошибки при подсчете
4) ошибки во время не выполнения
5) ошибки некоректного ввода
Задание №40
Вопрос:
Алгоритмические ошибки, это ошибки
Выберите один из 5 вариантов ответа:
1) ошибки времени компиляции
2) ошибки при выполнении
3) ошибки при подсчете из-за не правильного алгоритма
4) ошибки во время не выполнения
5) ошибки некоректного ввода
Задание №41
Вопрос:
Угроза это
Выберите один из 5 вариантов ответа:
1) потенциальное возможное событие, действие, процесс или явление,
которое может привести к нанесению хороших данных
2) возможное событие, действие, процесс или явление, которое может
привести к сохранности данных
3) потенциальное возможное событие, действие, процесс или явление,
которое может привести к нанесению изменению данных
4) потенциальное возможное событие, действие, процесс или явление,
которое может привести к нанесению ущерба.
5) нет правильного ответа
Задание №42
Вопрос:
Область распространения ЕСПД
Выберите один из 5 вариантов ответа:
1) Распространяются на документы
2) Рспространяются на компьютерное оборудование
3) Распространяется на программы
4) Распространяется на чертежи
5) Распространяется на
Задание №43
Вопрос:
Правильная запись оформления рисунков
Выберите один из 5 вариантов ответа:
1) … (см.рис. 6).
{рисунок}
Рисунок
6. Описание
2) … (см.рисунок. 6).
{рисунок}
Рисунок
6-Описание
3) … (см.рис. 6).
{рисунок}
Рисунок
6-Описание
4) … (см.рис. 6).
{рисунок}
Рис. 6
Описание
5) … (см.рис. 6).
{рисунок}
Рис. 6
— Описание
Задание №44
Вопрос:
Из каких 2 составлющих состоит надежность программ
Выберите один из 5 вариантов ответа:
1) Корректность и Контроль
2) Корректность и Обеспечение
3) Корректность и Устойчивость
4) Устойчивость и Контроль
5) Обеспечение и Контроль
Ответы:
1) (1 б.) Верные ответы: 1;
2) (1 б.) Верные ответы: 2;
3) (1 б.) Верные ответы: 1;
4) (1 б.) Верные ответы: 4;
5) (1 б.) Верные ответы: 1;
6) (1 б.) Верные ответы: 5;
7) (1 б.) Верные ответы: 1;
8) (1 б.) Верные ответы: 2;
9) (1 б.) Верные ответы: 1;
10) (1 б.) Верные ответы: 1;
11) (1 б.) Верные ответы: 2;
12) (1 б.) Верные ответы: 3;
13) (1 б.) Верные ответы: 4;
14) (1 б.) Верные ответы: 4;
15) (1 б.) Верные ответы: 4;
16) (1 б.) Верные ответы: 5;
17) (1 б.) Верные ответы: 1;
18) (1 б.) Верные ответы: 2;
19) (1 б.) Верные ответы: 3;
20) (1 б.) Верные ответы: 1;
21) (1 б.) Верные ответы: 2;
22) (1 б.) Верные ответы: 1;
23) (1 б.) Верные ответы: 2;
24) (1 б.) Верные ответы: 2;
25) (1 б.) Верные ответы: 2;
26) (1 б.) Верные ответы: 5;
27) (1 б.) Верные ответы: 1;
28) (1 б.) Верные ответы: 2;
29) (1 б.) Верные ответы: 1;
30) (1 б.) Верные ответы: 3;
31) (1 б.) Верные ответы: 1;
32) (1 б.) Верные ответы: 2;
33) (1 б.) Верные ответы: 1;
34) (1 б.) Верные ответы: 1;
35) (1 б.) Верные ответы: 3;
36) (1 б.) Верные ответы: 4;
37) (1 б.) Верные ответы: 4;
38) (1 б.) Верные ответы: 5;
39) (1 б.) Верные ответы: 1;
40) (1 б.) Верные ответы: 3;
41) (1 б.) Верные ответы: 4;
42) (1 б.) Верные ответы: 3;
43) (1 б.) Верные ответы: 1;
44) (1 б.) Верные ответы: 3;
I вариант.
1. Что называется алгоритмом:
а) протокол вычислительной сети
б) описание последовательности действий, строгое исполнение которых приводит к решению поставленной задачи за конечное число шагов +
в) правила выполнения определенных действий
2. Линейным называется алгоритм, если:
а) его команды выполняются в порядке их естественного следования друг за другом независимо от каких-либо условий +
б) он включает в себя вспомогательный алгоритм
в) он представим в табличной форме
3. Цикличным называется алгоритм, если:
а) он представим в табличной форме
б) ход его выполнения зависит от истинности тех или иных условий
в) он составлен так, что его выполнение предполагает многократное повторение одних и тех же действий +
4. Алгоритм включает в себя ветвление, если:
а) ход его выполнения зависит от истинности тех или иных условий +
б) он включает в себя вспомогательный алгоритм
в) он представим в табличной форме
5. Что является свойством алгоритма:
а) цикличность
б) простота записи на языках программирования
в) результативность +
6. Как называется свойство алгоритма, заключающееся в том, что каждое действие и алгоритм в целом должны иметь возможность завершения:
а) результативность
б) конечность +
в) дискретность
7. Как называется свойство алгоритма, заключающееся в том, что алгоритм должен состоять из конкретных действий, следующих в определенном порядке:
а) массовость
б) детерминированность
в) дискретность +
8. Как называется свойство алгоритма, заключающееся в отсутствие ошибок, алгоритм должен приводить к правильному результату для всех допустимых входных значениях:
а) результативность +
б) детерминированность
в) массовость
9. Как называется свойство алгоритма, заключающееся в том, что один и тот же алгоритм можно использовать с разными исходными данными:
а) дискретность
б) массовость +
в) детерминированность
10. Как называется свойство алгоритма, заключающееся в том, что любое действие должно быть строго и недвусмысленно определено в каждом случае:
а) детерминированность +
б) дискретность
в) результативность
11. Как называется алгоритм, записанный на “понятном” компьютеру языке программирования:
а) текстовка
б) программа +
в) протокол алгоритма
12. Для того, чтобы алгоритм бинарного поиска работал правильно нужно, чтобы список был:
а) несортированным
б) выходящим из стека
в) отсортированным +
13. Необходимо определить максимальное количество узлов в двоичном дереве с высотой k, где корень — нулевая высота:
а) 2ᵏ − 1
б) 2ᵏ⁺¹ – 1 +
в) 2ᵏ⁻¹ + 1
14. Укажите обозначение следующей фразы: “алгоритм X асимптотически более эффективен, чем Y”:
а) X будет лучшим выбором для всех входов
б) X будет лучшим выбором для всех входов, кроме больших входов
в) X будет лучшим выбором для всех входов, за исключением, возможно, небольших входов +
15. Чем отличается алгоритм обхода графа от алгоритма обхода вершин дерева:
а) графы могут иметь циклы +
б) у деревьев есть корни
в) деревья не соединяются
16. Какой из алгоритмов, перечисленных ниже, будет самым производительным, если дан уже отсортированный массив:
а) сортировка слиянием
б) пирамидальная сортировка
в) сортировка вставками +
17. На чём основан алгоритм Дейкстры:
а) на жадном подходе +
б) на динамическом программировании
в) на поиске с возвратом
18. Алгоритм, который не основан на жадном подходе:
а) алгоритм Хаффмана
б) алгоритм нахождения кратчайшего пути Беллмана-Форда +
в) алгоритм Крускала
19. Что выполняет следующее выражение на C
x = x & (x-1):
а) устанавливает все биты в виде 1
б) отключает самый левый бит
в) отключает самый правый бит из установленных +
20. Составление алгоритма должно быть особенно ответственным и тщательным, так как машина не может домысливать и исправлять ошибки. Необходимо выбрать общее название некоторого объекта, способного выполнять определенный набор команд:
а) робот
б) исполнитель +
в) компьютер
II вариант.
1. Выберите пример алгоритма:
а) перечень предметов мебельного гарнитура
б) инструкция по сборке шкафа +
в) макет шкафа
2. В виде чего может быть представлен алгоритм:
а) программы+
б) списка частей предмета
в) схемы понятий
3. Выберите формального исполнителя:
а) ученик
б) микроволновая печь +
в) сторожевая собака
4. В каком режиме, в основном, работает человек:
а) программного управления
б) непосредственного управления +
в) неформального управления
5. В процессе управления крановщиком башенным краном по алгоритму, составленному прорабом:
а) неформальный исполнитель – крановщик
б) формальный исполнитель – башенный кран +
в) формальный исполнитель – крановщик+
6. Выберите пример алгоритма:
а) перечень ингредиентов
б) кулинарный рецепт +
в) список продуктов
7. В виде чего может быть представлен алгоритм:
а) схемы с дугами (стрелками) +
б) схемы понятий
в) неориентированного графа
8. Выберите формального исполнителя:
а) животное
б) робот +
в) ученик
9. В каком режиме работает компьютер:
а) неформального управления
б) непосредственного управления
в) программного управления +
10. Каковы основные отличия алгоритма от простой задачи:
а) описывается процесс последовательности действий +
б) не требуется план действий
в) составляется план действий +
11. Определите документ, который является алгоритмом:
а) Правила техники безопасности.
б) Инструкция по получению денег в банкомате.+
в) Расписание уроков.
12. Выберите объект, который может являться исполнителем:
а) Луна.
б) Карта.
в) Принтер. +
г) Книга
13. Дискретность- свойство алгоритма, которое означает:
а) однозначность правил выполнения алгоритма
б) правильность результатов выполнения алгоритма
в) деление алгоритма на отдельные шаги+
14. Свойство алгоритма:
а) конечность; +
б) цикличность;
в) возможность изменения последовательности команд;
г) возможность выполнения алгоритма в обратном порядке.
15. Алгоритм называют линейным, если:
а) он составлен так, что его выполнение предполагает многократное повторение одних и тех же действий;
б) ход его выполнения зависит от истинности тех или иных условий;
в) его команды выполняются в порядке их естественного следования друг за другом независимо от каких-либо условий.+
16. Что предусматривает алгоритм структуры «ветвление»?
а) выбор условий,
б) выбор алгоритмов,
в) выбор команд (действий)+
17. Алгоритм называют циклическим, если:
а) он составлен так, что его выполнение предполагает многократное повторение одних и тех же действий; +
б) ход его выполнения зависит от истинности тех или иных условий;
в) его команды выполняются в порядке их естественного следования друг за другом независимо от каких-либо условий.
18. Алгоритм называют вспомогательным, если:
а) он предполагает выбор действий
б) повторяет действия до выполнения какого – либо условия;
в) решает часть задачи и вызывается из основной программы.+
19. Определите, какой тип алгоритмической структуры необходимо применить, если последовательность команд выполняется или не выполняется в зависимости от условия:
а) цикл
б) ветвление +
в) линейный.
20. Ромб — графический объект, используемый в блок-схеме для записи чего?
а) ввода, вывода данных;
б) вычислительных действий;
в) конца выполнения задачи;
г) условия выполнения действий.+
Тестирование и отладка программ
Всякая программа содержит ошибки. Задача разработчика – свести их количество к минимуму и не допустить серьезных сбоев при эксплуатации программы.
После программирования программист переходит к тестированию и отладке программы.
Тестирование – проверка работоспособности
программного продукта при всевозможных вариантах его эксплуатации с целью обнаружения ошибок.
Отладкой называется процесс поиска и устранения ошибок.
После отладки необходимо повторить весь процесс тестирования, так как устранение одних ошибок нередко приводит к появлению других.
2
Типы ошибок в программах
Синтаксические ошибки, их также называют ошибками времени компиляции (Compile-time error), наиболее легко устранимы. Их обнаруживает компилятор, а программисту остается только внести изменения в текст программы и выполнить повторную компиляцию
Ошибки времени выполнения (Run-time error) возникают не при каждом запуске программы, а лишь при определенном наборе входных данных (например, делении на ноль или вводе некорректной даты). Для их выявления требуется тщательно подготовить тестовые примеры. Если причиной являются не программные ошибки, а действия пользователя, то в программе должна быть предусмотрена обработка исключительных ситуаций
Алгоритмические ошибки. Компиляция программы, в которой есть алгоритмическая ошибка, завершается успешно. При пробных запусках программа ведет себя нормально, однако результата получается неверный. Для того чтобы устранить алгоритмическую ошибку, приходится анализировать алгоритм, вручную «прокручивать» его выполнение
3
Синтаксические ошибки
4
Ошибки времени выполнения
5
Алгоритмические ошибки
правильно n-2
6
Методы тестирования программ
Авторское тестирование (еще его называют методом «белого ящика») – проверка программы исходя из ее логики. Автор, зная внутреннюю логику программы, подбирает тестовые примеры так, чтобы проверить работу всех ее блоков.
Неавторское тестирование (стороннее, по методу «черного ящика») – проверка программы с точки зрения пользователя. Тестовые примеры подбираются исходя из реальных ситуаций, возникающих в ходе эксплуатации.
В крупных фирмах – разработчиках ПО тестированием занимается специальный персонал. В небольших коллективах практикуется «перекрестное тестирование»
Массовое тестирование. Для продуктов, выпускаемых на рынок,
используют тестирование широким кругом потенциальных пользователей. Для этого выпускают так называемую «бета-версию»
продукта и распространяют ее (обычно бесплатно) без гарантий надежной работы. Сбор информации об ошибках и отказах дает неоценимый материал для отладки.
7
Методы отладки программ
Трассировка — это процесс выполнения программы по шагам (step-by-step), инструкция за инструкцией. Во время трассировки программист дает команду:
выполнить очередную инструкцию программы.
Метод точек останова – заключается в том, что программист помечает некоторые инструкции программы (ставит точки останова), при достижении которых программа приостанавливает свою работу, и можно начать трассировку или проконтролировать значения переменных.
Наблюдение значений переменных
Как правило все методы используются совместно
8
Средства отладки в Delphi: трассировка
Delphi обеспечивает два режима трассировки: без захода в процедуру (Step over) и с заходом в процедуру (Trace into).
Режим трассировки без захода в процедуру выполняет трассировку только главной процедуры, при этом трассировка подпрограмм не выполняется, вся подпрограмма выполняется за один шаг.
В режиме трассировки с заходом в процедуру выполняется трассировка всей программы, т. е. по шагам выполняется не только главная программа, но и все подпрограммы.
Средства отладки в Delphi: точки останова
Программа доходит до указанной точки и останавливается. Затем можно выполнить трассировку
Для точки останова можно задать некоторые дополнительные параметры при
помощи диалогового окна Add Source Breakpoint меню
Run.
10
Соседние файлы в папке ИТ
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Алгоритмическая ошибка
Cтраница 1
Алгоритмические ошибки значительно труднее поддаются обнаружению методами формализованного автоматического контроля, чем предыдущие типы ошибок. К алгоритмическим следует отнести прежде всего ошибки, обусловленные некорректной постановкой функциональных задач, когда в спецификациях не полностью оговорены все условия, необходимые для получения правильного результата. Эти условия формируются и уточняются в значительной части в процессе тестирования и выявления ошибок в результатах функционирования программ. Ошибки, обусловленные неполным учетом всех условий решения задач, являются наиболее частыми в этой группе и составляют до 70 % всех алгоритмических ошибок или около 30 % общего количества ошибок на начальных этапах проектирования.
[1]
Алгоритмические ошибки и ошибки кодирования, связанные с некорректной формулировкой и реализацией алгоритмов программным путем.
[2]
Алгоритмические ошибки значительно труднее поддаются обнаружению методами формального автоматического контроля, чем все предыдущие типы ошибок. Это определяется прежде всего отсутствием для большинства логических управляющих алгоритмов строго формализованной постановки задач, которую можно использовать в качестве эталона для сравнения результатов функционирования разработанных алгоритмов. Разработка управляющих алгоритмов осуществляется обычно при наличии большого количества параметров и в условиях значительной неопределенности самой исходной постановки задачи. Эти условия формируются в значительной части в процессе выявления ошибок по результатам функционирования алгоритмов. Ошибки некорректной постановки задач приводят к сокращению полного перечня маршрутов обработки информации, необходимых для получения всей гаммы числовых и логических решений, или к появлению маршрутов обработки информации, дающих неправильный результат. Таким образом, область получающихся выходных результатов изменяется.
[3]
Алгоритмические ошибки представляют собой ошибки в программной трактовке алгоритма, например недоучет всех вариантов работы алгоритма.
[4]
К алгоритмическим ошибкам следует отнести также ошибки связей модулей и функциональных групп программ.
[5]
К алгоритмическим ошибкам следует отнести также ошибки сопряжения алгоритмических блоков, когда информация, необходимая для функционирования некоторого блока, оказывается неполностью подготовленной блоками, предшествующими по моменту включения. Этот тип ошибок также можно квалифицировать как ошибки некорректной постановки задачи, однако в данном случае некорректность может проявляться при определенной временной последовательности функционирования алгоритмических блоков.
[6]
С алгоритмическими ошибками дело обстоит иначе. Компиляция программы, в которой есть алгоритмическая ошибка, завершается успешно. При пробных запусках программа ведет себя нормально, однако при анализе результата выясняется, что он неверный. Для того чтобы устранить алгоритмическую ошибку, приходится анализировать алгоритм, вручную прокручивать его выполнение.
[8]
Особую часть алгоритмических ошибок составляют просчеты в использовании доступных ресурсов ВС. Одновременная разработка множества модулей различными специалистами затрудняет оптимальное распределение ограниченных ресурсов ЭВМ по всем задачам, так как отсутствуют достоверные данные потребных ресурсов для решения каждой из них. В результате возникает либо недоиспользование, либо ( в подавляющем большинстве случаев) нехватка каких-то ресурсов ЭВМ для решения задач в первоначальном варианте. Наиболее крупные просчеты обычно происходят при оценке времени реализации различных групп программ и при распределении производительности ЭВМ.
[9]
Этот побочный эффект может привести к алгоритмическим ошибкам при работе программы. Для того чтобы избавить программиста от необходимости помнить о таком побочном эффекте, достаточно в начале макрокоманды сохранять, а после выполнения восстанавливать содержимое этих регистров. Для этих целей в СМ ЭВМ обычно используется стек. Необходимо отметить, что в отдельных случаях сохранение регистров не обязательно.
[10]
В предыдущем параграфе был рассмотрен характер формирования алгоритмической ошибки вычислений при отсутствии искажающих воздействий со стороны окружающей среды и вычислительной системы. В реальных условиях на процесс смены состояний АлСУ и ошибку выходных сигналов существенное влияние оказывают искажающие воздействия, которые по отношению к управляющему объекту могут быть как внешними, так и внутренними. Внешние воздействия, источником которых является внешняя ( по отношению к управляющему объекту) среда, связаны с ошибками определения параметров управляемого процесса, отказами и сбоями в работе датчиков информации, каналов связи и преобразующих устройств. Внутренние воздействия, источниками которых являются ЦВМ или комплексы ЦВМ, используемые для реализации алгоритмической системы, обусловлены сбоями, частичными отказами и прерываниями.
[11]
Кроме того, значительные трудности представляет разделение системных и алгоритмических ошибок и выделение доработок, которые не следует квалифицировать как ошибки.
[12]
Однако формула ( 29) позволяет судить о характере формирования алгоритмической ошибки в реальных системах и сделать важный вывод о несостоятельности попыток оценки качества АлСУ всякого рода контрольными просчетами.
[13]
Защита от перегрузки ЭВМ по пропускной способности предполагает обнаружение и снижение влияния последствий алгоритмических ошибок, обусловленных неправильным определением необходимой пропускной способности ЭВМ для работы в реальном времени. Кроме того, перегрузки могут быть следствием неправильного функционирования источников информации и превышения интенсивности потоков сообщений расчетного, нормального, уровня. Последствия обычно сводятся к прекращению решения некоторых функциональных задач, обладающих низким приоритетом.
[14]
В настоящее время структурные методы контроля ориентированы в основном на обнаружение и доказательство отсутствия технологических и некоторых алгоритмических ошибок в записи программ, которые выполняются на этапе программной отладки.
[15]
Страницы:
1
2
3
Тестирование и отладка программ
При разработке программ наиболее трудоемким является этап отладки и тестирования программ. Цель тестирования, т.е. испытания программы, заключается в выявлении имеющихся в программе ошибок. Цель отладки состоит в выявлении и устранении причин ошибок.
Отладку программы начинают с составления плана тестирования. Такой план должен представлять себе любой программист. Составление плана опирается на понятие об источниках и характере ошибок. Основными источниками ошибок являются недостаточно глубокая проработка математической модели или алгоритма решения задачи; нарушение соответствия между схемой алгоритма или записью его на алгоритмическом языке и программой, записанной на языке программирования; неверное представление исходных данных на программном бланке; невнимательность при наборе программы и исходных данных на клавиатуре устройства ввода.
Нарушение соответствия между детально разработанной записью алгоритма в процессе кодирования программы относится к ошибкам, проходящим вследствие невнимательности программиста. Отключение внимания приводит и ко всем остальным ошибкам, возникающим в процессе подготовки исходных данных и ввода программы в ЭВМ. Ошибки, возникающие вследствие невнимательности, могут иметь непредсказуемые последствия, так как наряду с потерей меток и описаний массивов, дублированием меток, нарушением баланса скобок возможны и такие ошибки, как потеря операторов, замена букв в обозначениях переменных, отсутствие определений начальных значений переменных, нарушение адресации в массивах, сдвиг исходных данных относительно полей значений, определенных спецификациями формата.
Учитывая разнообразие источников ошибок, при составлении плана тестирования классифицируют ошибки на два типа: 1 – синтаксические; 2 – семантические (смысловые).
Синтаксические ошибки – это ошибки в записи конструкций языка программирования (чисел, переменных, функций, выражений, операторов, меток, подпрограмм).
Семантические ошибки – это ошибки, связанные с неправильным содержанием действий и использованием недопустимых значений величин.
Обнаружение большинства синтаксических ошибок автоматизировано в основных системах программирования. Поиск же семантических ошибок гораздо менее формализован; часть их проявляется при исполнении программы в нарушениях процесса автоматических вычислений и индицируется либо выдачей диагностических сообщений рабочей программы, либо отсутствием печати результатов из-за бесконечного повторения одной и той же части программы (зацикливания), либо появлением непредусмотренной формы или содержания печати результатов.
В план тестирования обычно входят следующие этапы:
- Сравнение программы со схемой алгоритма.
- Визуальный контроль программы на экране дисплея или визуальное изучение распечатки программы и сравнение ее с оригиналом на программном бланке. Первые два этапа тестирования способны устранить больше количество ошибок, как синтаксических (что не так важно), так и семантических (что очень важно, так как позволяет исключить их трудоемкий поиск в процессе дальнейшей отладки).
- Трансляция программы на машинных язык. На этом этапе выявляются синтаксические ошибки. Компиляторы с языков Си, Паскаль выдают диагностическое сообщение о синтаксических ошибках в листинге программы (листингом называется выходной документ транслятора, сопровождающий оттранслированную программу на машинном языке – объектный модуль).
- Редактирование внешних связей и компоновка программы. На этапе редактирования внешних связей программных модуле программа-редактор внешних связей, или компоновщик задач, обнаруживает такие синтаксические ошибки, как несоответствие числа параметров в описании подпрограммы и обращении к ней, вызов несуществующей стандартной программы. например, 51 H вместо 51 N, различные длины общего блока памяти в вызывающем и вызываемом модуле и ряд других ошибок.
- Выполнение программы. После устранения обнаруженных транслятором и редактором внешних связей (компоновщиком задач) синтаксических ошибок переходят к следующему этапу – выполнению программы на ЭВМ на машинном языке: программа загружается в оперативную память, в соответствие с программой вводятся исходные данные и начинается счет. Проявление ошибки в процессе вода исходных данных или в процессе счета приводит к прерыванию счета и выдаче диагностического сообщения рабочей программы. Проявление ошибки дает повод для выполнения отладочных действий; отсутствие же сообщений об ошибках не означает их отсутствия в программе. План тестирования включает при этом проверку правильности полученных результатов для каких-либо допустимых значений исходных данных.
- Тестирование программы. Если программа выполняется успешно, желательно завершить ее испытания тестированием при задании исходных данных, принимающих предельные для программы значения. а также выходящие за допустимые пределы значения на входе.
Контрольные примеры (тесты) – это специально подобранные задачи, результаты которых заранее известны или могут быть определены без существенных затрат.
Наиболее простые способы получения тестов:
- Подбор исходных данных, для которых несложно определить результата вычислений вручную или расчетом на калькуляторе.
- Использование результатов, полученных на других ЭВМ или по другим программам.
- Использование знаний о физической природе процесса, параметры которого определяются, о требуемых и возможных свойствах рассчитываемой конструкции. Хотя точное решение задачи заранее известно, суждение о порядке величин позволяет с большой вероятностью оценить достоверность результатов.
Главная / Образование /
Введение в информатику / Тест 9
Упражнение 1:
Номер 1
Скрытые ошибки в программе после начала её эксплуатации устраняют в процессе:
Ответ:
(1) отладки
(2) сопровождения
(3) тестирования
Номер 2
Синтаксические ошибки в программе устраняют в процессе:
Ответ:
(1) отладки
(2) сопровождения
(3) тестирования

Номер 3
Логические (алгоритма, метода) ошибки в программе устраняют обычно в процессе:
Ответ:
(1) отладки
(2) сопровождения
(3) тестирования
Упражнение 2:
Номер 1
Метод разработки алгоритмов с помощью разбиения алгоритмов на подалгоритмы называется:
Ответ:
(1) нисходящим
(2) восходящим
(3) разбивающим
Номер 2
Метод разработки алгоритмов с помощью «сборки» алгоритма из функционально более простых алгоритмов называется:
Ответ:
(1) нисходящим
(2) восходящим
(3) разбивающим
Номер 3
Исправление ошибок в программе, не обнаруженных в процессе тестирования, происходит на этапе:
Ответ:
(1) трассировки
(2) тестирования
(3) сопровождения
Упражнение 3:
Номер 1
Метод конструирования алгоритма из базовых алгоритмических конструкций называется:
Ответ:
(1) конструкционным
(2) композиционным
(3) структурным
Номер 2
Проверка алгоритма на специально построенном полном наборе примеров называется:
Ответ:
(1) трассировкой
(2) тестированием
(3) верификацией
Номер 3
Формальное доказательство правильности алгоритма называется:
Ответ:
(1) трассировкой
(2) тестированием
(3) верификацией
Упражнение 4:
Номер 1
Неверно утверждение:
Ответ:
(1) структурный принцип оптимизирует алгоритм
(2) структурный принцип улучшает читабельность и исполняемость
(3) структурный принцип облегчает понимаемость алгоритма
Номер 2
Неверно утверждение:
Ответ:
(1) структурный принцип всегда опирается на базовые алгоритмические конструкции
(2) структурный принцип всегда оптимизирует время выполнения
(3) структурный принцип всегда облегчает понимаемость алгоритма
Номер 3
Неверно утверждение:
Ответ:
(1) модульный принцип всегда использует библиотеки алгоритмов
(2) модульный принцип всегда облегчает разработку больших алгоритмов (программ)
(3) модульный принцип всегда улучшает читаемость алгоритма
Упражнение 5:
Номер 1
Верно утверждение:
Ответ:
(1) тестирование всегда опирается на верификацию
(2) структурный принцип всегда опирается на верификацию
(3) верификация не требует тестирования
Номер 2
Верно утверждение:
Ответ:
(1) верификация всегда осуществляется на основе тестирования
(2) тестирование всегда осуществляется на основе верификации
(3) для трассировки всегда необходимо задать тест
Номер 3
Верно утверждение:
Ответ:
(1) при модульном подходе не нужно тестирование
(2) при структурном подходе не нужно тестирование
(3) при верификации не нужно тестирование
