Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тurbo Pascal 7+.doc
Скачиваний:
12
Добавлен:
24.12.2018
Размер:
10.09 Mб
Скачать

Работа с окнами пользователя и отладчика

Предположим, у вас не получается задание из раздела 6.1: определить без компьютера, что будет печатать следующая программа:

LABEL m1,met5;

VAR n,k: Integer;

BEGIN

n:=10;

k:=0;

WriteLn('Cчитaeм зайцев');

met5: Write(n);

n:=n+k;

goto m1;

n:=n+1;

m1: Write('зайцев');

ReadLn;

k=k+1;

goto met5;

WriteLn('Посчитали зайцев')

END.

Ответ: эта программа должна печатать

Считаем зайцев

10 зайцев

10 зайцев

11 зайцев

1З зайцев

16 зайцев

20 зайцев

С ответом у вас не сходится. Значит, вы чего-то не понимаете.Чего? Чтобы определить это, вы вводите программу в компьютер.Он печатает все, как в ответе. Почему? Вероятно, вы не понимаете, как изменяются в процессе выполнения программы значения переменных n и k. Хорошо если бы можно было подсмотреть за их значениями в оперативной памяти и чтобы напечатанные результаты не пропадали с экрана, а были всегда перед глазами.

Проделайте следующее. (При дальнейшем объяснении будем предполагать, что вы умеете обращаться с несколькими окнами на экране. Кто не умеет, читайте следующий параграф.) Сузьте окно вашей программы так, чтобы оно освободило примерно половину ширины экрана. Далее - Debug -> Output. Перед вами появляется черное окно пользователя, в котором вы привыкли наблюдать результаты, но в уменьшенном виде. Измените его размер и отбуксируйте на свободное место экрана.

Далее - Debug -> Watch. Перед вами появляется окно отладчика, в котором вы будете наблюдать значения переменных величинв оперативной памяти. Измените его размер и отбуксируйте на оставшуюся часть экрана.

Вот как будет выглядеть экран после всех манипуляций:

Вы сами должны указать Паскалю, за какими переменными хотите следить. Очевидно, в вашем случае это n и k. Ваши действия Debug ->Add watch, запишите имя n в открывшемся диалоговом окне и - щелчок по кнопке ОК. В окне отладчика появится сообщение n7, или n0, или какое-нибудь другое число или сообщение. Не обращайте на это внимания. Повторите всю процедуру с k.

Теперь можно запускать программу на выполнение в пошаговом режиме. Для этого нажмите на F7. Паскаль откомпилирует вашу программу, возможно, изменит значения в окне отладчика и сделает паузу перед началом выполнения программы, подсветив горизонтальной полосой строку BEGIN.

F7. Паскаль, возможно, обнулит значения в окне отладчика. Полоса подсветки прыгает на следующую строку. В ней находится первый исполняемый оператор вашей программы - n:=10.

Итак, правило простое: при нажатии на F7 Паскаль выполняетодну строку программы и подсвечивает ту строку, которой предстоит быть выполненной.

F7. Паскаль выполняет n:=10, в результате чего в окне отладчика значение n меняется на 10, а серая полоса прыгает на строку k:=0.

F7. Паскаль выполняет k:=0, в результате чего в окне отладчика значение k становится равным нулю, а полоса прыгает на строку WriteLn('Считаем зайцев').

F7. Паскаль выполняет WriteLn('Считаем зайцев'), в результате чегов окне пользователя появляется напечатанный текст Считаем зайцев, а полоса прыгает на строку met5: Write(n).

F7. Паскаль выполняет Write(n). B окне пользователя в новойстроке появляется число 10, так как в оперативной памяти n равно10 (об этом нам говорит окно отлад чика), а полоса прыгает настроку n:=n+k.

F7. Паскаль выполняет n:=n+k, в результате чего в окне отладчика значение n остается равным 10, так как в оперативной памяти k равно нулю. Полоса прыгает на строку goto m1

F7. Паскаль выполняет goto m1. Полоса перепрыгивает на строку m1: Write('зайцев').

F7. Паскаль выполняет Write(' зайцев '), в результате чего в окне пользователя справа от числа 10 появляется текст зайцев, а полоса прыгает на строку ReadLn.

F7. Паскаль выполняет ReadLn, в результате чего окно пользователя распахивается на весь экран и ReadLn ждет, когда вы нажметена клавишу ввода. Вы нажимаете - и полоса прыгает на строку k:=k+1.

F7. Паскаль выполняет k:=k+1; в результате чего в окне отладчика значение k меняется на 11. Полоса прыгает на строку goto met5.

F7. Паскаль выполняет goto met5, полоса перепрыгивает вверх, на строку met5: Write(n).

И так далее.

Если ваша программа рисует что-то в графическом режиме, то, при описанном способе работы картинки видны не будут.

Если в вашей программе есть подпрограммы, то серая полоса проникнет и внутрь подпрограмм. Таким образом, вы сможете анализировать и работу подпрограмм. Если же вы не хотите работать внутри подпрограмм, нажимайте не F7, a F8. Тогда Паскаль будет выполнять подпрограмму мгновенно в автоматическом режиме и серая полоса будет путешествовать только внутри основной программы. Вы можете свободно чередовать нажатия F7 и F8. Клавиша F7 будет направлять вас "вглубь" подпрограмм, a F8 - "наружу".