русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Просмотр значений.


Дата добавления: 2015-09-15; просмотров: 680; Нарушение авторских прав


Выполнение программы предоставляет много информации, но не в том объеме, как хотелось бы. Может возникнуть необходимость просмотреть за тем, как изменяются значения переменных во время выполнения программы. Рассмотрим процедуру Sort из предыдущей программы:

procedure Sort ( var L : NumList; C : word );

var

Top,Min,k : word;

Temp : integer;

begin

for Top := 1 to C-1 do

begin

Min := Top;

for k := Top+1 to C do

if L[k] Top then

begin

Temp := L[Top];

Top := L[Min];

L[Min] := Temp;

end;

end;

end; {процедуры Sort}

Примечание: Измените NLMax в теле программы на 10 так, чтобы Вы могли работать с меньшим массивом.

В этой процедуре есть ошибки, будем просматривать ее (используя команду Run/Trace Into или клавишу F7) и наблюдать за значениями переменных L, Top, Min и k.

Отладчик дает возможность пользователю задать объекты для просмотра во время выполнения Вашей программы. Как Вы и предполагаете, объектами просмотра являются переменные, структуры данных и выражения, расположенные в окне Watch, где отображаются их текущие значения, обновляемые по мере выполнения каждой строки программы. Давайте вернемся к предыдущему примеру. Установить объекты наблюдения просто.

Передвигайте курсор к каждому идентификатору и выполняйте команду Debug/Watch/Add Watch (Ctrl -F7) для добавления каждого выражения в окно Watch.

Результат может выглядеть так:

k : 21341

Min : 51

Top :21383

L : (163,143,454,622,476,161,850,402,375,34)

Предполагается, что Вы только что вошли в процедуру Sort, курсор выполнения расположен на начальном операторе begin. (Если Вы еще не вошли в процедуру Sort, то для каждого выражения в окне Watch будет появляться сообщение "unknown identifier" (неизвестный идентификатор), пока Вы не войдете в процедуру). Заметим, что переменные K, Min и Top имеют произвольные значения, т.к. они еще не были инициализированы. Значения переменной L, предположительно, тоже должно быть произвольным; они не будут таковыми при выполнении всей программы; все они должны быть неотрицательными и лежать в интервале от 0 до 999.



Если нажать на клавишу F7 четыре раза, то мы продвинемся к строке if L[k]Top then, назад к вершине внешнего цикла, и снова вниз к строке if L[k] < L[Min] then. В этот момент окно Watch будет выглядеть следующим образом (для L даны предыдущие значения):

k : 3

Min : 2

Top : 2

L : ( 34,143,454,622,476,161,850,402,375,34 )

Теперь Вы можете заметить две вещи. Первое, последнее значение переменной L(34), которое является также и наименьшим значением, скопировалось в первое значение L, и значение, которое уже было там раньше (163), исчезло. Второе, переменные Min и Top имели одинаковые значения во время трассировки процедуры. Фактически, Вы можете заметить, что переменная Min получает значение переменной Top, но она никогда не изменяется где-либо еще. Однако, ниже цикла располагается проверка:

if Min<>Top then.

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

Min := k, вместо L[Min] := L[k].

Исправьте строку, переместите курсор к первоначальному оператору begin в процедуре Sort и выполните команду Run/Go to Cursor (F4). Так как Вы изменили программу, на экране появится окно с вопросом Source modified, rebild? (Y/N) (исходный модуль модифицирован, нужна ли сборка? Да/Нет). Ответьте Y. Программа будет перекомпилироваться, начнется ее выполнение, затем произойдет остановка на начальном операторе begin процедуры Sort. Теперь программа работает верно. Значение первого элемента теперь не меняется на наименьшее из значений элементов массива L, происходит обмен-перемещение значения первого элемента массива на место, где до этого располагался элемент с наименьшим значением. Затем процесс повторяется со второй позицией, третьей и т.д., пока список элементов не будет отсортирован полностью.

Паскаль - это один из самых простых языков, но далеко не один из самых слабых. Изучать мы с вами будем Turbo Pascal 7.0 - так вот на нем можно написать любую программу, которая придет в голову. По возможностям он не уступает ни СИ, ни какому другому. На Паскале можно написать программную оболочку (типа Norton Commander), игрушку (типа Quake) или операционную систему (типа MS-DOS). Программы на Turbo Pascal пишутся только для платформы MS-DOS, но никак не зависят от конфигурации компьютера. Главным требованием к компьютеру является только лишь то, чтобы он был IBM PC-совместимый, что естественно, если на нем установлен MS-DOS.

Особой теории по этому языку нет, чтобы хорошо им овладеть (тем более если это ваш первый язык программирования) необходимо больше практики. Этим мы и начнем заниматься уже в этом выпуске. При этом вам понадобиться интерпритатор Turbo Pascal 7.0 фирмы Borland - я говорил где его можно достать в предыдущем выпуске. Те, кто скачал его с моего сайта (а скачало на данный момент 73 человека) или достал где-нибудь еще, уже смогут попрактиковаться.

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

Итак, поехали...



<== предыдущая лекция | следующая лекция ==>
Использование Ctrl-Break. | Ваша первая программа на Паскале.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.