Turbo Basic 1.1. Руководство пользователя


Turbo Basic 1.1. Руководство пользователя - стр. 75


  слишком большой или слишком маленький для данного  массива  подстрочный  ин-
  декс.Рассмотрим ,например ,эту программу:
         dim myarray(100)
         x=114
         y:=myarray(x)
  В  массиве нет 114-го элемента,хотя это грубая ошибка не отлавливается
  компилятором.Однако,если программа компилируется с включенным  тестированием
  границ,во время исполнения третьей строки появляется ошибка диапазона подст-
  рочных индексов.
  Если  вы прогоняете програму при выключенной проверке границ,сообщения
  об ошибке нет,и значение загружается в y,несмотря на то ,что оно попадает  в
  память   на  несколько  байтов  за  пределами  последнего  элемента  массива
  myarray.При записи в несуществующий элемент массива ситуация  еще  хуже,пос-
  кольку  память ,используемая для хранения бог знает чего,безмолвно перезапи-
  сывается.
  Следует отметить ,что компилятор всегда сообщает  подстрочные  индексы
  констант  вне  диапазона.Следущая программа будет не компилироваться независимо
  от установки переключателя проверки границ:
         DIM MYARRAY(100)
         Y=MYARRAY(114)
                                                       
         OVERFLOW(переполнение)
         ----------------------
  Переполнение возникает,когда  какая-то  арифметическая  операция  дает
  значение   вне   пределов  возможностей  хранения  целых  чисел  (-32768  до
  32767).Например,кодовый фрагмент
         X%=22555
         X%=X%+19000
  переполняет ограничение +32767 для целых переменных.Если вы компилиру-
  ете эту программу с включенной  проверкой  переполнения,генерируется  ошибка
  переполнения  периода прогона.Однако при выключенной проверке X% назначается
  ненормальное значение и исполнение продолжается,как будто ничего  не  случи-
  лось(что оставляет вашу программу непригодной).
    Остерегайтесь промежуточных переполнений:
         Y%=200000;X%=Y%
         Z=(Y%+X%)*2.1
                                     - 39 -
          
          
  Хотя  окончательный результат выражения (X%+Y%)*2.1 легко укладывается



Начало  Назад  Вперед



Книжный магазин