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

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

Подумай

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

Новые знания

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

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

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

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

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

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

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

1) синтаксические; 

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

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

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

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

трассировка алгоритма – алгоритмнің трассировкасы – tracing algorithm

отладка – түзету – debugging

Ошибки

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

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

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

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

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

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

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

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

Таблица 1. Типы ошибок

Код программы

Тип ошибки

Сообщение на экране при выполнении программы

1

s = input()
      ​if s %2==0:
​print('Четный')

Применение действия, не соответствующего типу величины.

TypeError: not all arguments converted during string formatting

2

k=int(input())
​p=0;t=k/p
​print(t)​

Число нельзя делить на ноль. Деление переменной на ноль.

ZeroDivisionError: division by zero

3

​a = 5
​print (a + b)

Неизвестная величина b.

NameError: name 'b' is not defined

4

int("Hi")

Преобразование строки в число.

ValueError: invalid literal for int() with base 10: 'Hi'

5

k=int(input())
​t=input()
​print(k+t)

Сложение целого числа и строки. Например, 45+‘85’.

TypeError: unsupported ope-rand type(s) for +: 'int' and 'str'

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

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

Анализ

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

Вопросы

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'
Өтінемін күте тұрыңыз