Советы профессионала. · Установите автоматическую проверку выхода за пределы массива

Проверяйте ситуацию ВЫХОД ЗА ПРЕДЕЛЫ МАССИВА!

· Установите автоматическую проверку выхода за пределы массива

В меню Project выберите пункт Options (условия) и в открывшемся окне Project Options (рисунок 3.6) установите галочку для автоматической проверки выхода за пределы массива – Compile/Range checking.

Если в процессе работы программы происходит выход за пределы массива, то выполнение будет прервано и выдано сообщение об ошибке. Таким образом, в процессе отладки программы Вы будете проинформированы о возникновении этой ситуации и сможете устранить ее причину.

Рисунок 3.6 – Установка свойства Range checking для проверки выхода за пределы массива

· Пример. Поиск в массиве

Рассмотрим реализацию алгоритма поиска наименьшего номера K элемента массива (A: array[1..N] of integer), значение которого равно заданному X: .

Вариант 1

i:=1;

while (A[ i ]< >X) and (i <= N) do

i:=i+1;

if A[ i ] = X then

K:=i

Else

. .. {элемент не найден};

Этот, очевидный на первый взгляд, код содержит фатальную ошибку.

Пусть i = N и A[ i ]< >X – в этом случае условие продолжение цикла истинно. Тогда i = i + 1 = N+1 и при вычислении выражения A[ i ]< >X в заголовке цикла происходит выход за пределы массива – A[ i ] à A[N+1]!

Надеюсь, Вы легко исправите заголовок цикла так, чтобы исключить выход за пределы массива.

Вариант 2

Исключим из заголовка цикла проверку A[ i ]< >X. Вместо этого будем использовать логическую переменную Found.

i:=1;

Found:= false; // элемент не найден

while (not Found) and (i <= N) do

if A[ i ] = X then

Found:= true // элемент найден

Else

i:=i+1;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: