Ошибки при использовании массивов

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

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

day : array[0..6] of string[ll],

то во время компиляции программы инструкция

day [7] := 'Воскресенье';

будет помечена как ошибочная.

Если для доступа к элементу массива в качестве индекса используется переменная или выражение, то возможно возникновение ошибки (исключения) времени выполнения программы. Например, если в программе объявлен массив

tab1: array [1..N] of integer;

то инструкция

for i:=0 to N do tab1[i] := 5;

формально является верной, и ее компиляция будет успешно выполнена.

Однако во время выполнения программы, при попытке присвоить значение несуществующему нулевому элементу массива tab, на экран будет выведено сообщение об ошибке. Вид окна и текст сообщения зависит от того, откуда запущена программа.

При запуске рассматриваемой программы из Delphi возникает исключение, и сообщение имеет вид, приведенный на рис. 5.22.

Рис. 5.22. Сообщение об ошибке при обращении к несуществующему элементу массива (программа запущена из Delphi)

Если программа запущена из Windows, то при попытке присвоить значение несуществующему элементу массива на экран будет выведено сообщение Range check error (ошибка контроля диапазона). В заголовке окна будет указано имя приложения, в процессе выполнения которого произошла ошибка (рис. 5.23).

Рис. 5.23. Сообщение об ошибке при обращении к несуществующему элементу массива (программа запущена из Windows)

Поведение программы при выходе индексного выражения за границы диапазона допустимых значений определяется настройкой компилятора.

Для того чтобы программа контролировала значения индексных выражений (в этом случае Delphi добавляет в выполняемую программу инструкции, обеспечивающие этот контроль), необходимо на вкладке Compiler диалогового окна Project Options, которое открывается выбором из меню Project команды Options, установить флажок Range checking (Контроль диапазона), находящийся в группе Runtime errors (Ошибки времени выполнения) (рис. 5.24).

Рис. 5.24. Вкладка Compiler диалогового окна Project Options

 


Знаете ли Вы, как разрешается парадокс Ольберса?
(Фотометрический парадокс, парадокс Ольберса - это один из парадоксов космологии, заключающийся в том, что во Вселенной, равномерно заполненной звёздами, яркость неба (в том числе ночного) должна быть примерно равна яркости солнечного диска. Это должно иметь место потому, что по любому направлению неба луч зрения рано или поздно упрется в поверхность звезды.
Иными словами парадос Ольберса заключается в том, что если Вселенная бесконечна, то черного неба мы не увидим, так как излучение дальних звезд будет суммироваться с излучением ближних, и небо должно иметь среднюю температуру фотосфер звезд. При поглощении света межзвездным веществом, оно будет разогреваться до температуры звездных фотосфер и излучать также ярко, как звезды. Однако в дело вступает явление "усталости света", открытое Эдвином Хабблом, который показал, что чем дальше от нас расположена галактика, тем больше становится красным свет ее излучения, то есть фотоны как бы "устают", отдают свою энергию межзвездной среде. На очень больших расстояниях галактики видны только в радиодиапазоне, так как их свет вовсе потерял энергию идя через бескрайние просторы Вселенной. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution