4.7. Трассировка алгоритма

Как исправить ошибку, постепенно проверяя работу программы на языке Python?

Подумай

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

Новые знания

Программисты могут допускать 3 различных вида ошибок в написании программ:

1. синтаксическая;

2. ошибка времени исполнения;

3. алгоритмические ошибки.

Трассировка программы

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

   На любом языке программирования можно своевременно редактировать и корректировать (отладка) программу, написанную на языке программирования. Отладка программы (debugging) — обнаружение, локализация и устранение ошибок в компьютерной программе. Язык программирования имеет собственные средства исправления ошибок. На своем языке программисты называют ошибки, допущенные в программе багами (с английского – bug «технический дефект»), корректировку кода программы – дебаггерами (отладчики) (с английского debugger – корректор). В языке Python существуют собственные средства редактирования, дающие возможность отлаживать программу, исправляя ошибки.

При работе с ошибками в программе возникает два разных вопроса.

• Как определить эти ошибки в программе?

• Как правильно исправить эту ошибку в программе постепенно

выполнения строки один за другим?

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

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

Алгоритм трассировки представляет собой порядок работы со встречающимися ошибками. Трассировка – это процесс выполнения программы постепенно, шаг за шагом (step-by-step).

Синтаксическая ошибка

  В ошибке на рисунке 1 имя переменной начинается с цифры. Программа сразу обнаруживает такие ошибки во время компиляции, и если ошибки не исправлены, программа перестает работать.

Рисунок 1. Синтаксическая ошибка

   Ошибка времени исполнения программы

    Еще один вид ошибок – ошибка времени исполнения программы (run-time errors). Это ошибка появляется при исполнении программы во время запуска или во время тестирования. Например, причиной возникновения этой ошибки может служить случай, когда программа пытается прочитать текстовый файл input.txt, который не существует на компьютере. Это ошибку указывает после того, как файл не был найден. Если в программе произошла ошибка, то она останавливается, выдав соответствующее сообщение.

Алгоритмические ошибки

   Тестирование – это ввод подготовленных данных в компьютер для проверки работоспособности программы. Если программа правильно выполнила одну из ситуаций, предусмотренных при тестировании, и показала ошибку в другой, то эта ошибка является ошибкой составления алгоритма задачи. Например, использовать знак « + » вместо « –» или знак « * ». Этот тип ошибки не виден при компиляции и программа будет запущена. Но будет выдаваться ошибочный результат. Для этого необходимо пересмотреть и отредактировать код программы. Вот этот процесс исправления ошибок можно назвать отладкой. Рассмотрим простой пример ниже.

Рисунок 2. Алгоритмическая ошибка

Код программы прошел компиляцию и работает. Но данный код программы можно определить только четную цифру. В коде программы не рассмотрена ситуация, когда цифра нечетная. Вот это и есть алгоритмическая ошибка.

    Дано двухзначное число. Разработайте проект, определяющий является ли сумма цифр заданного числа четной или нечетной.

    Для того, чтобы изменить программу и записать строку «else: (‘Нечетная’)» в случае невыполнения условия, необходимо исправить код программы, чтобы получить правильный результат при обнаружении нечетной цифры. Кроме того, в процессе программирования существует несколько различных ошибок, которые встречаются чаще всего. Остановимся на них (таблица 1).

Использование команды quit() при трассировке для исправления ошибки в программы является наиболее эффективным. Контроль работы тела цикла дает хороший результат при использовании совместно с оператором условия.

Таблица 1

  • порядок
  • это
  • Алгоритм
  • ошибками.
  • работы
  • со встречающимися
  • Трассировка –
  • трассировки
  • программы
  • представляет
  • процесс
  • выполнения
  • собой
  • постепенно,
  • шаг за шагом.

Анализ

  • Синтаксический
  • Орфографические
  • Алгоритмические ошибки
  • В зависимости от времени выполнения программы.

Вопросы

  1. Какие ошибки вы можете назвать из своего опыта, с которыми сталкивались в процессе программирования?
  2. Что такое трассировка алгоритма?
  3. Как осуществляется трассировка программы?
  4. Каковы наиболее распространенные типы ошибок программирования?
  5. В чем значимость использования трассировки программы?

Задания

Прикрепите свой файл к этому заданию, нажав «Добавить свой материал».

Прикрепите свой файл к этому заданию, нажав «Добавить свой материал».

1)2)

Примечание. Трехзначные числа начинаются со 100.

Прикрепите свой файл к этому заданию, нажав «Добавить свой материал».

Домашнее задания

Прикрепите свой файл к этому заданию, нажав «Добавить свой материал».

  • Применение действия, не соответствующего типу величины
  • Число нельзя делить на нуль. Деление переменной на нуль
  • Неизвестная величина b
  • Сложение целого числа и строки. Например, 45+ ‘85’
  • TypeError: not all arguments converted during string formatting
  • ZeroDivisionError: division by zero
  • NameError: name 'b' is not defined
  • TypeError: unsupported ope-rand type(s) for +: 'int' and 'str'
Өтінемін күте тұрыңыз