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

Как осуществляется трассировка алгоритма программы?

Подумай

  • Что такое алгоритм?
  • Каково значение алгоритма в программировании?
  • В чем заключается необходимость пошагового выполнения программы?

Новые знания

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

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

   Ошибки, допускаемые программистами в процессе составления программ:

  1. Синтаксические ошибки;
  2. Связи со временем выполнения программы;
  3. Алгоритмические ошибки.
  • Как выявить эти ошибки в процессе программирования?
  • Как пошагово исправлять подобные ошибки в процессе написания программы?

   При запуске программ, команды выполняются одна за другой со скоростью работы процессора компьютера. Программист не может уследить за тем, какое выполняется действие в данный момент, а также проконтролировать обработку алгоритма. Для того чтобы найти ошибку в программе, нужно знать точный порядок выполнения действий. Это называется трассировкой программы, или ее пошаговым (step-by-step) выполнением. При трассировке программист может выполнять каждую команду в программе по отдельности и найти ошибку. В среде Lazarus есть два способа трассировки: один из них – исправление ошибки без захода в процедуру Шаг в обход (Step over), второй – с заходом в процедуру Шаг со входом (Trace into) (рис. 1). Трассировка без входа в процедуру выполняет только основную часть программы, трассировка сопровождающих (дополнительных) программ не выполняется, все они выполняются одним шагом. Во втором случае выполняется трассировка всех программ, а не только пошаговая проверка основной программы.

Рис. 1

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

   Трассировку можно активировать с помощью функциональных клавиш. Команде Step over соответствует клавиша <F8>, а команде Trace into – клавиша <F7>.
   ​В любой момент времени можно остановить трассировку и продолжить выполнение программы. Для этого из меню Запуск нужно выбрать команду Запустить.
   ​Если необходимо выполнить трассировку части программы, нужно установить курсор в той строке, с которой нужно начать проверку, и из меню Запуск выбрать команду Run to сursor или нажать клавишу <F4>. После этого, при помощи клавиши <F7> или <F8> можно выполнить трассировку необходимого фрагмента программы.

   Теперь рассмотрим конкретный пример. В процессе программирования зададим форму с кнопкой (рис. 2).
​Нажимая на кнопку, откроем поле для кода программы и впишем значение к = 10 (рис. 3).
   ​Как видно из примера, при выполнении программы была допущена ошибка на 3 позиции 30-го ряда: Identifier not found «k» (переменная k не описана), а на 6-й позиции 30-го ряда по правилам программирования должен быть оператор присваивания (рис. 4). Для исправления ошибок опишем переменную k в разделе var и запишем знак присваивания ":=" (рис. 5). После исправления ошибок появится сообщение «Проект «…» успешно собран» (рис. 6).

Рис. 2
Рис. 3
Рис. 4
Рис. 5
Рис. 6

   В основном, описанные здесь ошибки возникают в процессе написания программы из-за незнания операторами принципов работы и синтаксиса. К трудно обнаруживаемым ошибкам, допускаемым при написании программ, относятся алгоритмические, то есть ошибки допускаемые при построении логики программы. Для обнаружения ошибок в программе, на каждом шаге ее выполнения важно знать значения используемых переменных. Для этого в среде Lasarus предусмотрены различные инструменты. В меню программы выполните команды Вид ⇒ Окна отладки, откройте дополнительное окно (рис. 7): рекомендуем использовать окна Окно наблюдения и Точки останова.

Рис. 7

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

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

Практическая работа

Рассмотрим пример.

   Нахождение суммы цифр натурального числа N

   Программа примера представлена на рисунке 8. Для трассировки мы выбрали 40-ю, 41-ю и 42-ю строки программы, они выделены красным цветом.
   ​В окно Списка наблюдений вводим подлежащие проверке формулы 40-й, 41-й и 42-й строк (рис. 9). Для наблюдения за выполнением этих формул нажимаем на кнопку «Запустить». В окне выполнения программы нажимаем на кнопку«Выполнить» (рис. 10). Для пошагового наблюдения за выполнением вычислений формул, расположенных в теле цикла, нажимаем на кнопку «Trace into» или <F7>, и следим за изменением значения формул. На рисунке 11 видно, что каждая проверяемая формула работает правильно. Поэтому в строках 40, 41 и 42 указано состояние Enabeled.

Рис. 8
Рис. 9
Рис. 10
Рис. 11

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

Вопросы

  1. Какие виды ошибок встречаются в процессе программирования?
  2. Что такое трассировка?
  3. Какие виды трассировки вы знаете?
  4. Какова роль Окна наблюдений и Точки останова?
  5. В каком пункте меню они расположены?
  6. Объясните принцип выполнения алгоритма трассировки в визуальной среде программирования.

Задания

Создайте проект в визуальной среде

Ввод

Результат

97 103

61

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

Ввод

Результат

87

127

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

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

Өтінемін күте тұрыңыз