Технология решения задач на компьютере

1.1  Этапы решения задач

  1. Постановка задачи
    • сбор информации о системе
    • формулировка условия задачи
    • определение конечных целей решения задачи
    • определение формы выдачи результатов
    • описание данных
  2. Анализ и исследование задачи
    • поиск аналогов и их анализ
    • анализ имеющихся технических и программных средств
    • конкретизация математической модели
    • определение структуры данных
  3. Разработка алгоритма
    • выбор метода проектирования алгоритма
    • выбор формы записи алгоритма
    • планирование методики тестирования
    • проектирование алгоритма
  4. Програмирование
    • выбор языка программирования
    • уточнение способов организации данных
    • запись алгоритма на выбранном языке программирования
  5. Отладка и тестирование
    • синтаксическая отладка
    • отладка семантики и логической структуры
    • тестовые прогоны и анализ результатов тестирования
    • доработка программы
  6. Анализ результатов решения
  7. Сопровождение программы
    • подготовка программной документации
    • консультирование пользователей
    • доработка програмы под решение конкретных задач

1.2  Математическая модель

Математическая модель -- это система математических соотношений (уравнений, неравенств и т. д.), отражающих существенные свойства объекта или явления.

Создавая математическую модель для решения задачи, нужно

  1. выделить предположения (допущения), на которых будет основываться модель;
  2. определить, какие величины являются исходными данными, какие -- результатами;
  3. записать математические соотношения, связывающие результаты с исходными данными.

1.3  Отладка

Отладка программы -- это процесс поиска и устранения ошибок в программе на основе результатов ее прогона на компьютере.

При отладке 1 происходит локализация и устранение синтаксических ошибок и явных ошибок кодирования

Современные системы программирования имеют в своем составе специальные программы-отладчики, позволяющие устанавливать в программе <<точки прерывания>>, просматривать значения переменных, исполнять программу <<по шагам>> (т. е. с остановкой после каждого оператора)

1.4  Тестирование

Тестирование -- испытание, проверка правильности работы программы или ее частей

Тест -- совокупность исходных данных вместе с точным описанием соответствующих этим данным результатов работы программы в том виде, как они должны быть выданы.

Эталонные результаты должны быть вычислены до, а не после получения результатов прогона программы на компьютере

Нельзя забывать, что тестирование может показать ошибки, но не может гарантировать их отсутствие

Для того чтобы получить наибольшие гарантии правильности работы программы при наименьших затратах времени тестовые данные должны соответствовать следующим условиям

  • должна быть испытана каждая ветвь алгоритма;
  • каждый набор тестовых данных должен позволять испытать что-то такое, что не проверялось предыдущими прогонами;
  • первый тест должен быть максимально простым (чтобы быстро оценить, исполняется ли программа вообще);
  • арифметические операции в тестах должны быть максимально простыми (для упрощения получения эталонных результатов);
  • количество элементов в последовательностях, массивах и т. п., а также точность для итерационных процессов задаются из расчета минимальных затрат времени (без снижения надежности контроля);

Тесты можно разбить на три группы (для трех этапов тестирования)

  1. Проверка в <<нормальных условиях>> (т. е. на данных, характерных для реальных условий эксплуатации).
  2. Проверка в экстремальных условиях (граничные -- очень большие или очень маленькие -- допустимые значения данных).
  3. Проверка в исключительных ситуациях -- с использованием данных, на которые программа не рассчитана (программа должна отвергать, по возможности, с сообщением об ошибке, любые данные, на обработку которых не рассчитана).

1.5  Ошибки программирования [1]

Неправильная постановка задачи
-- правильное решение неверно сформулированной задачи.
Неверный алгоритм
-- выбор ошибочного, неточного или неэффективного алгоритма.
Ошибка анализа
-- неполный учет возможных ситуаций, логические ошибки в алгоритме.
Семантическая ошибка
-- использование команды, которая действует иначе, чем предполагал программист.
Синтаксическая ошибка
-- нарушение правил записи программы, определяемых языком программирования.
Ошибка при выполнении операции
-- деление на нуль и т. п.
Ошибка в данных
-- следствие неверного определения диапазона возможных данных либо ввода ошибочных данных.
Опечатка
-- перепутаны похожие по написанию символы (например, цифра 1, буквы I, J и символы   |).
Ошибки в документации
-- расхождения между программной документацией и действующим вариантом программы.

1.6  Ошибки, не выявляемые транслятором

Логические ошибки:

  • неверное указание ветвей алгоритма;
  • неполный учет возможных условий;
  • пропуск операторов или блоков алгоритма.

Ошибки в циклах:

  • неправильное выделение повторяющихся операций;
  • неправильное указание условия окончания цикла или числа повторений;
  • бесконечный цикл.

Ошибки при работе с данными:

  • неправильное задание типов данных;
  • считывание большего или меньшего, чем нужно, количества данных.

Ошибки использования переменных:

  • использование переменных без указания их начальных значений (инициализации);
  • неверное указание переменной (указание другой существующей переменной).

Ошибки при работе с массивами:

  • неправильное описание массива;
  • неправильный порядок индексов;
  • ошибки в вычислении индексных выражений.

Ошибки при выполнении арифметических операций:

  • неверный порядок действий;
  • потеря значащих разрядов числа.

Литература

[1]
Д. Ван Тассел. Стиль, разработка, эффективность, отладка и испытание программ. М.:Мир, 1985.
[2]
Л. З. Шауцукова. Технология подготовки и решения задач на компьютере//Информатика и образование. 1999. 1 с. 12-18.


Примечания:

1 английский термин debugging (уничтожение жуков) возник в 1945 г., когда работа вычислительной машины <<Марк-1>> была прервана попавшим в одно из ее реле мотыльком.


File translated from TEX by TTH, version 2.25.
On 14 Jun 2002, 23:18.

[Титульная страница][Макинтош][Информатика и ИТ]
Hosted by uCoz