• Параметр A = true, если горит зеленый;
• Параметр B = true, если поблизости опасно движется транспорт;
• Параметр C – это число, определяющее характер пешехода так:
1 – послушный и осторожный – учитывает и светофор и опасность;
2 – послушный, но беспечный – смотрит только на светофор;
3 – хитрый вольнодумец – идет только на красный, если это ничем не грозит;
4 – непримиримый вольнодумец – идет только на красный;
5 – экстремал – идет только на красный, и так, чтобы грозила опасность;
6 – «безбашенный» – идет, несмотря ни на что;
7 – запуганный – никогда не идет через дорогу, а ищет подземный переход.
Предыдущую главу мы покинули, понурив голову, так и не совладав с программой P_20_1. Почему не заменяются символы в строке? – этот вопрос остался без ответа. Эх, знать бы, что творится внутри программы! Сейчас она для нас – загадочный «черный ящик», и мы видим лишь то, что входит и выходит из него. К счастью, в IDE есть средство для доступа внутрь этого «ящика», и мы воспользуемся им. Это средство называется отладчиком. Так же, как редактор текста и компилятор, отладчик встроен в интегрированную среду разработки.
Отладчик
Отладчик – это набор инструментов для исследования «потрохов» программы. Посредством отладчика можно следить за выполнением отдельных операторов, делая остановки в нужных местах или на каждой строке программы. Застопорив программу, вы сможете выяснить значения тех или иных переменных и даже изменить их. Одним словом, отладчик – это чудо-оружие!
Инструменты отладчика доступны через два пункта меню: Run – запуск и Debug – удаление багов (жучков). Программные ошибки прозвали багами – «жучками».
В пункте Run собраны команды для управления ходом выполнения программы (рис. 45).
Рис. 45 – Пункты меню RUN для доступа к отладчику
Примечание. В данной главе показаны окна отладчика для Borland Pascal, в IDE Free Pascal они выглядят чуть иначе.
В табл. 1 даны пояснения к пунктам этого меню.
Табл. 1 – Описание пунктов меню Run
Команда | Горячая клавиша | Пояснение |
Run | Ctrl+F9 | Запускает программу в непрерывном режиме. |
Trace into | F7 | Выполняет одну строку программы (шаг). Если в строке есть вызов процедуры, то останов происходит на входе в нее, – так можно «войти» внутрь процедуры и следить за ходом её выполнения. |
Step over | F8 | Выполняет одну строку программы. Если в строке есть вызов процедуры, то процедура выполняется целиком, без остановки. |
Go to cursor | F4 | Выполняет программу, пока не будет достигнута строка, где установлен текстовый курсор. Курсор надо предварительно установить на нужной строке! |
Program Reset | Ctrl+F2 | Сброс программы. Если программа остановлена в пошаговом режиме, она перейдет в исходное состояние. |
Parameters… | нет | Используется для отладки программ, принимающих параметры через командную строку. |
Обратите внимание: за один шаг отладки выполняется либо одна строка программы, либо один оператор, если он занимает несколько строк. Стало быть, операторы, помещенные в одной строке, будут выполнены за один шаг. Если компилятору безразлично, как вы располагаете операторы, но при отладке это важно. Не размещайте операторы в одной строке, если при отладке намерены выполнять их раздельно.
Теперь обратимся к пункту меню Debug (рис. 46), где собраны команды для просмотра переменных, их редактирования, а также для просмотра выводимых программой результатов. Эти результаты можно увидеть либо на экране (User screen) либо в специальном окне (Output). Рядом с командами показаны соответствующие им горячие комбинации клавиш.
Рис. 46 – Пункт меню Debug для просмотра результатов работы программы
Теперь испробуем основные команды отладчика на своей программе.
Жучки, вылезайте!
Итак, приступим к поиску жучков, притаившихся в программе «P_20_1». Хорошо бы проследить за изменением переменных в ходе выполнения программы. Для этого вставим переменные в окно обзора «Watches». Откомпилировав программу, поместите курсор под переменной k и нажмите Ctrl+F7. Появится диалоговое окно для добавления переменной в окно обзора (рис. 47).
Рис. 47 – Добавление переменной в окно обзора
Поскольку переменная k была взята на мушку заранее, поле уже содержит её имя. Теперь щелчок по кнопке OK отправит переменную в окно обзора (рис. 48). Если же поле «Watch expression» пусто, или содержит нечто другое, значит, вы промахнулись, не попали курсором. Тогда впечатайте имя нужной переменной и щелкните OK. Действуя так, добавьте в окно обзора все интересующие вас переменные (рис. 48).