КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Обращение к компонентам массива
Описание переменных размерностей Если ваша программа должна обрабатывать матрицы7) переменных размерностей (скажем, N по горизонтали и М по вертикали), то вы столкнетесь с проблемой изначального задания массива, ведь в разделе var не допускается использование переменных. Следовательно, самый логичный, казалось бы, вариант var m,n: integer; a: array[1..m,1..n] of real;придется отбросить. Если на этапе написания программы ничего нельзя сказать о предполагаемом размере входных данных, то не остается ничего другого, как воспользоваться техникой динамически распределяемой памяти (см. лекцию 12). Предположим, однако, что вам известны максимальные границы, в которые могут попасть индексы обрабатываемого массива. Скажем, N и М заведомо не могут превосходить 100. Тогда можно выделить место под наибольший возможный массив, а реально работать только с малой его частью: const nnn=100;var a: array[1..nnn,1..nnn] of real; m,n: integer;Массивы относятся к структурам прямого доступа. Это означает, что возможно напрямую (не перебирая предварительно все предшествующие компоненты) обратиться к любой интересующей нас компоненте массива. Доступ к компонентам линейного массива осуществляется так8): а многомерного - так: <имя_массива>[<индекс>,_,<индекс>]Правила употребления индексов при обращении к компонентам массива таковы:
Примеры использования компонент массива: a2['z']:= a2['z']+1;a3[-10]:= 2.5;a3[i+j]:= a9[i,j];a10[x>0,sgn(x),'!',abs(k*5)]:= 0;Задание массива константой Для того чтобы не вводить массивы вручную во время отладки программы (особенно если они имеют большую размерность), можно пользоваться не только файлами9). Существует и более простой способ, когда входные данные задаются прямо в тексте программы при помощи типизированных констант. Если массив линейный (вектор), то начальные значения для компонент этого вектора задаются через запятую, а сам вектор заключается в круглые скобки. Многомерный массив также можно рассматривать как линейный, предполагая, что его компонентами служат другие массивы. Таким образом, для системы вложенных векторов действует то же правило задания типизированной константы: каждый вектор ограничивается снаружи круглыми скобками. Исключение составляют только массивы, компонентами которых являются величины типа char. Такие массивы можно задавать проще:строкой10) символов. Примеры задания массивов типизированными константами: type mass = array[1..3,1..2] of byte; const a: array[-1..1] of byte = (0,0,0); {линейный} b: mass = ((1,2),(3,4),(5,6)); {двумерный} s: array[0..9] of char = '0123456789'; Замечание: Невозможно задать неименованную или нетипизированную константу, относящуюся к типу данных array.
Дата добавления: 2014-01-03; Просмотров: 273; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |