Область действия идентификаторов

При программировании необходимо соблюдать ряд правил, регламентирующих использование идентификаторов:

  1. каждый идентификатор должен быть описан перед тем, как он будет использован;
  2. областью действия идентификатора является блок, в котором он описан;
  3. все идентификаторы в блоке должны быть уникальными, т.е. не повторяться;
  4. один и тот же идентификатор может быть по-разному определен в каждом отдельном блоке, при этом блоки могут быть вложенными;
  5. если один и тот же идентификатор определен в нескольких вложенных блоках, то в пределах вложенного блока действует вложенное описание;
  6. все глобальные описания подключенного модуля видны программе (подключающему модулю), как если бы они были сделаны в точке подключения;
  7. если подключаются несколько модулей, в которых по-разному определен один и тот же идентификатор, то определение, сделанное в последнем подключенном модуле перекрывает все остальные;
  8. если один и тот же идентификатор определен и в подключенном модуле, и в программе (подключающем модуле), то первый игнорируется, а используется идентификатор, определенный в программе (подключающем модуле). Доступ к идентификатору подключенного модуля возможен с помощью уточненного имени. Уточненное имя формируется из имени модуля и записанного через точку идентификатора. Например, чтобы получить доступ к стандартному значению числа Пи, нужно записать System.Pi.

 

Массивы

Массив представляет собой последовательный список определенного количества элементов. Все элементы в массиве принадлежат к одному типу данных. Массивы бывают статическими и динамическими.

Статические массивы

Для объявления массива используется конструкция:

array [indexType1, ..., indexTypen] of baseType,

где каждый indexType – это порядковый тип, размерность которого не превосходит 2GB. Для этого можно воспользоваться идентификатором некоторого типа (например, boolean или ansichar), однако на практике обычно явно задается поддиапазон целых чисел. Число элементов массива в каждом измерении задается соотвествующим порядковым типом. Количество элементов массива равно произведению количеств элементов во всех измерениях.

Словосочетание array of является зарезевированным. Квадратные скобки после слова array являются требованием синтаксиса, а после слова of — тип элементов массива.

Примеры.

Простейший случай – это одномерный массив:

type TStates = array[1..50] of string; TCoordinates = array[1..3] of Integer;

После описания типа можно переходить к определению переменных и типизированных констант:

var States: TStates; { 50 strings }const Coordinates: TCoordinates = (10, 20, 5); { 3 integers }

2. Обратите внимание, что инициализация элементов массива происходит в круглых скобках через запятую.

3. Массив может быть определен и без описания типа:

var Symbols: array[0..80] of Char; { 81 characters }

4. Чтобы получить доступ к отдельному элементу массива, нужно в квадратных скобках указать его индекс, например

Symbols[0]

5. Объявленные выше массивы являются одномерными, так как имеют только один индекс. Одномерные массивы обычно используются для представления линейной последовательности элементов. Если при описании массива задано два индекса, массив называется двумерным, если n индексов — n-мерным. Двумерные массивы используются для представления таблицы, а n-мерные — для представления пространств. Вот пример объявления таблицы, состоящей из 5 колонок и 20 строк:

var Table: array[1..5] of array[1..20] of Double;

То же самое можно записать в более компактном виде:

var Table: array[1..5, 1..20] of Double;

Чтобы получить доступ к отдельному элементу многомерного массива, нужно указать значение каждого индекса, например

Table[2][10]

или в более компактной записи

Table[2, 10]

Эти два способа индексации эквивалентны.

Работа с массивами

1. Массивы в целом участвуют только в операциях присваивания. При этом все элементы одного массива копируются в другой. Например, если объявлены два массива A и B,

var A, B: array[1..10] of Integer;

то допустим следующий оператор:

A := B;

Оба массива-операнда в левой и правой части оператора присваивания должны быть не просто идентичны по структуре, а описаны с одним и тем же типом, иначе компилятор сообщит об ошибке. Именно поэтому все массивы рекомендуется описывать в секции type.

2. С элементами массива можно работать, как с обычными переменными. В следующей программе элементы численного массива последовательно вводятся с клавиатуры, а затем суммируются. Результат выводится на экран.

var A: array[1..5] of Double; Function SumArray:double;Var Sum: Double; I: Integer;begin Sum := 0; for I := 1 to 5 do Sum := Sum + A[I]; result:= Sum;End;

3. Для массивов определены две встроенные функции — Low и High. Они получают в качестве своего аргумента имя массива. Функция Low возвращает нижнюю, а High — верхнюю границу этого массива. Например, Low(A) вернет значение 1, а High(A) — 5. Функции Low и High чаще всего используются для указания начального и конечного значений в операторе цикла for. Поэтому вычисление суммы элементов массива A лучше переписать так:

for I := Low(A) to High(A) do Sum := Sum + A[I];

В операциях с многомерными массивами циклы for вкладываются друг в друга. Например, для инициализации элементов таблицы, объявленной как

var Table: array[1..5, 1..20] of Double;

требуются два вложенных цикла for и две целые переменные Col и Row для параметров этих циклов:

for Col := 1 to 5 do for Row := 1 to 20 do Table[Col, Row] := 0;







Дата добавления: 2016-02-09; просмотров: 660;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.