На Горох
Информатика, 9 класс

22.6. Получение решения задачи (этап 5)

"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович

Объяснение темы В оглавлении: 22.6. Получение решения задачи (этап 5)

Кратко о теме

Получение решения задачи на компьютере — это запуск программы на подготовленных исходных данных и проверка результата. Даже если алгоритм кажется правильным, ошибка может появиться в его записи или в коде. Поэтому программу проверяют на тестовых наборах: заранее выбирают обычные, граничные и особые случаи, рассчитывают ожидаемые ответы и сравнивают их с результатами запуска. Если ответы расходятся, ищут причину, исправляют программу и проверяют её снова.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

Получение решения задачи на компьютере — выполнение разработанной программы для исходных данных и получение результата. Иными словами, недостаточно придумать алгоритм и записать его: нужно запустить программу. Так проверяют, что компьютер действительно выполняет предусмотренные действия и выдаёт ответ.

Тестирование программы — проверка её работы на специально подобранных наборах исходных данных. Тесты позволяют увидеть, справляется ли программа с разными ситуациями, а не только с одним примером. Их подбирают так, чтобы проверить важные особенности условия задачи.

Тестовый набор данных — входные данные, для которых заранее известен или рассчитан ожидаемый результат. Такой ответ служит образцом для сравнения с тем, что выдала программа. Без него нельзя уверенно определить, правильно ли она решила задачу.

Отладка программы — поиск и исправление ошибок, обнаруженных при проверке её работы. Ошибка может быть связана с алгоритмом, кодом или неверно введёнными данными. После исправления программу запускают снова, чтобы убедиться, что ответ стал верным и исправление не нарушило работу.

Как это устроено

После составления программы её необходимо выполнить на компьютере, потому что алгоритм и код сами по себе не гарантируют правильного решения. В рассуждении могла появиться неточность, а при записи кода можно ошибиться в условии или вычислении. Запуск показывает, как программа ведёт себя на конкретных данных, но ещё не подтверждает, что все её ответы верны. Для такой проверки нужны тесты и сравнение результатов.

Тестовые данные готовят так, чтобы проверить разные ситуации из условия задачи. Обычный пример помогает убедиться, что программа справляется с типичным случаем, но он не всегда выявляет ошибку. Поэтому добавляют граничные данные — значения на краях допустимого диапазона — и особые случаи, например равные числа или нулевое значение, если оно разрешено. Такой подбор помогает заметить ошибки, которые возникают только при определённых условиях.

Для каждого теста заранее рассчитывают ожидаемый результат, затем запускают программу и сопоставляют два ответа. Если они совпали, программа верно обработала именно этот набор данных, но это ещё не доказывает правильность для всех возможных входов. Если ответы различаются, значит, нужно искать причину: проверять ввод, рассуждение и запись алгоритма в коде. Сравнение превращает запуск в проверку, а не просто в получение числа или сообщения.

Если программа выдала неверный ответ, сначала убедитесь, что исходные данные введены без ошибки и относятся к допустимым. Затем проследите, верно ли алгоритм учитывает условие задачи, и проверьте соответствующие части программного кода. Найденную ошибку исправляют, после чего повторяют запуск и сравнивают ответ с ожидаемым. Повторная проверка нужна, потому что исправление может не устранить причину или затронуть другие случаи.

Проверка должна охватывать не только отдельные удобные примеры, но и допустимые ограничения задачи. Если во входных данных разрешены значения от 1 до 100, стоит учитывать и значения у обоих краёв диапазона, а также типичные значения между ними. За пределами условий задачи программа может вести себя иначе, но такие данные не заменяют проверку разрешённых вариантов. Чем точнее тесты отражают условие, тем надёжнее вывод о работе программы.

Проверка программы и действия при обнаружении ошибки

ШагЧто выполняютЧто проверяютРезультат
Подготовка тестаВыбирают входные данныеЕсть ли обычные, граничные и особые случаиПодготовлен набор тестов
Ввод исходных данныхПередают значения программеСоответствуют ли они выбранному тестуПрограмма получила нужный ввод
Выполнение программыЗапускают кодВыполняются ли действия без сбоевПолучен результат работы
Сравнение с ожидаемым результатомСопоставляют два ответаСовпадают ли результатыПонятно, пройден ли тест
Исправление и повторная проверкаИщут и исправляют ошибку, снова запускают программуИсчезло ли расхождение и не появились ли новые ошибкиПолучено подтверждение после исправления

Используйте таблицу как последовательность действий: переходите к следующему шагу, когда выполнен предыдущий. Для каждого теста фиксируйте ожидаемый и полученный ответы, чтобы не полагаться на память. Если они не совпали, возвращайтесь к проверке данных и логики программы, затем проходите шаги заново.

Разбор задач

Задача 1. Программа вычисляет периметр квадрата по длине его стороны. Проверить её для стороны 5. Нужно не только запустить программу, но и заранее получить ответ, с которым можно сравнить результат. Периметр квадрата равен четырём длинам стороны, поэтому тест можно рассчитать вручную.

  1. Выбираем входное значение: сторона a = 5.
  2. Рассчитываем ожидаемый результат по формуле P = 4 · a: P = 4 · 5 = 20.
  3. Вводим 5 и запускаем программу, затем сравниваем её ответ с числом 20.

Ответ: для этого теста программа должна вывести 20. Если ответ другой, проверяем формулу и умножение в коде, а также правильность ввода стороны.

Задача 2. Программа находит большее из двух чисел. Составим тесты для пары с разными числами и для пары равных чисел. Первый тест проверит обычное сравнение, а второй — поведение условия при равенстве. Это важно, потому что ошибка в знаке сравнения может быть незаметна на паре разных значений.

  1. Берём пару 3 и 7. Ожидаемый результат — 7, так как 7 больше 3.
  2. Берём пару 5 и 5. Ожидаемое наибольшее значение — 5; программа не должна выдавать другое число или оставлять результат неопределённым.
  3. Запускаем оба теста и сравниваем ответы с ожидаемыми. При расхождении проверяем, как в алгоритме и коде обработано равенство.

Ответ: тесты — (3, 7) с ответом 7 и (5, 5) с ответом 5. Они проверяют два разных случая работы программы.

Задача 3. Программа определяет, принадлежит ли число заданному промежутку. Нужно проверить значение внутри него, вне его и на границах. Сначала выясняем по условию, включаются ли концы: например, для промежутка от 2 до 6 границы включены, если условие задаёт 2 ≤ x ≤ 6. Если в условии стоят строгие знаки, ответ на концах будет другим.

  1. Для примера с включёнными границами берём 4: число внутри, значит, программа должна сообщить о принадлежности.
  2. Берём 1: оно вне промежутка, поэтому ожидаемый ответ — «не принадлежит». Проверяем также граничные значения 2 и 6: они принадлежат.
  3. Сравниваем ответы программы с ожидаемыми. Если один из них неверен, проверяем знаки сравнения в алгоритме и их запись в коде.

Ответ: набор тестов включает 1, 2, 4 и 6; для промежутка 2 ≤ x ≤ 6 ожидаемые ответы: не принадлежит, принадлежит, принадлежит, принадлежит. При другом условии о границах ответы для концов нужно изменить.

Типичные ошибки

  • Проверять программу только на одном удобном примере — значит не заметить ошибку, которая проявляется при другом вводе. Так делают, потому что первый тест кажется достаточным, но он проверяет лишь один случай. Сверьтесь с условием и добавьте обычные, граничные и особые данные.

  • Считать ответ правильным только потому, что программа завершилась без сообщения об ошибке, — неверно: она могла выполнить вычисления с ошибкой. Обычно путают успешный запуск и правильное решение. Проверьте себя, рассчитав ожидаемый ответ независимо и сравнив его с результатом программы.

  • Не сравнивать ответ с заранее известным результатом — значит не иметь основания судить о правильности. Иногда полагаются на то, что программа «вывела число», но наличие ответа не подтверждает его точность. Для каждого теста запишите ожидаемый результат до запуска, а затем сопоставьте ответы.

  • Не запускать программу после исправления кода — значит оставить исправление непроверенным. Кажется, что найденная и устранённая ошибка уже решает проблему, однако в коде могла остаться другая ошибка или появиться новая. Повторите тесты, на которых обнаружили сбой, и проверьте остальные важные случаи.

Связь с другими темами

До проверки решения нужно уметь сформулировать условие задачи, определить входные и выходные данные и разработать алгоритм. Без этого нельзя понять, какие значения вводить и каким должен быть правильный ответ. Этап опирается также на знание языка программирования и умение запускать программу на компьютере. Тестирование и отладка пригодятся при создании любых программ, в том числе проектов и алгоритмов, которые изучаются дальше.

Что запомнить

  • Программу необходимо выполнить на компьютере.
  • Для проверки заранее подбирают тестовые данные.
  • Для каждого теста важно знать ожидаемый результат.
  • Результат программы сравнивают с ожидаемым.
  • Проверяют обычные, граничные и особые случаи.
  • Обнаруженную ошибку исправляют, после чего проверку повторяют.

Частые вопросы по теме

Почему недостаточно просто написать программу?

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

Как понять, какие тестовые данные выбрать?

Подберите данные для обычных ситуаций, а также для особых случаев и границ допустимых значений. Тесты должны охватывать разные варианты, которые могут повлиять на ход алгоритма.

Зачем заранее знать ожидаемый результат?

Он служит образцом для сравнения с ответом программы. Если ожидаемый результат неизвестен, нельзя установить, правильно ли выполнены вычисления.

Какие данные называют граничными?

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

Что делать, если программа выдаёт неверный ответ?

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

Спросить по теме параграфа

22.6. Получение решения задачи (этап 5)

Эта же тема в других учебниках

21.6. Получение решения задачи (этап 5) "Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович 23.7. Получение решения задачи (этап 5) "Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович 24.6. Получение решения задачи (этап 5) "Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович 25.8. Получение решения задачи (этап 5) "Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович 28.6. Получение решения задачи (этап 5) "Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович

Учебник

Оглавление →
Предмет
Информатика
Класс
9 класс
Учебник
"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович