Смекни!
smekni.com

Отладка программ пользователя в Tubro Pascal (стр. 4 из 4)

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, происходит обмен-перемещение значения первого элемента массива на место, где до этого располагался элемент с наименьшим значением. Затем процесс повторяется со второй позицией, третьей и т.д., пока список элементов не будет отсортирован полностью.