Пустой оператор не выполняет еикакого действия и никак не отображается в программе ( за исключением, быть может, метки или точек с запятыми, отделяющих пустой оператор от предыдущих или последующих операторов). Он может потребоваться для осуществления на него безусловного перехода.
Составной оператор представляет собой совокупность последовательно выполняемых операторов, заключенных в операторные скобки Begin и End:
< оператор 1 > ;
< оператор 2 > ;
< оператор N >
Он может потребоваться в тех случаях, когда в соответствии с правилами построения конструкции языка можно использовать один оператор, а выполнить нужно несколько действий. В такой составной оператор входит ряд операторов, выполняющих требуемые действия.
Отдельные операторы внутри составного оператора отделяются друг от друга точкой с запятой. Так как завершающее составной оператор слово end не является отдельным предложением, то перед ним точку с запятой можно не ставить, в противном случае компилятор будет считать, что перед словом end стоит пустой оператор. Можно считать, что и само тело программы, т. к. оно заключено в операторные скобки begin и end, тоже является составным оператором.
Массив - это структура данных, которую можно рассматривать как набор переменных одинакового типа, имеющих общее имя. Использование массивов существенно упрощает работу с однотипными данными, ускоряет обращение к ним и сокращает размер используемой памяти, так как все данные получают общий начальный адрес. Максимальный объём памяти, который может занимать массив, в Турбо Паскале составляет 65520 байт.
Перед использованием массив, как и любая переменная, должен быть объявлен в разделе объявления переменных. В общем виде объявление массива выглядит так:
Имя : Array [ нижний _индекс. . верхний индекс ] of Тип ;
где Имя¾ имя переменной-массива;
Array ¾ ключевое слово, обозначающее, что переменная является массивом;
нижний_индекс и верхний_индекс ¾ целые числа, определяющие диапазон изменения индексов (номеров) элементов массива и, неявно, количество элементов (размер) массива;
Тип ¾ тип элементов массива.
Пример : Var
a, b : array [1..5] of real ;
c, d : array [-7..3] of integer ;
Кроме одномерных массивов в Паскале вводятся многомерные массивы; соответственно они могут быть описаны двумя способами, например:
Var a : array [0..3] of array [5..7] of real;
или
Var a: array [0..3,5..7] of real ;
Следует соблюдать следующие правила:
1. Нижняя граница диапазона должна быть не меньше верхней.
2. Между верхней и нижней границами диапазонов ставятся две точки и не должно быть никаких пробелов.
3. У многомерных массивов диапазоны разделяются запятыми, количество измерений неограничено ( за исключением, конечно, правила о 65520 байтах).
4. Границы диапазонов находятся в пределах либо -32768..32767, либо 0..65535.
5. В качестве границ диапазонов могут использоваться не только числа, но и определенные к этому моменту константы.
Второй, более удобный и гибкий способ описания массивов, заключается в предварительном введении типов.
Например, описание массивов
Var
a, c : array [1..3] of real ;
b, d : array [5..7,1..3] of real
и Const
k1 = 1 ; k2 = 3 ; l1 = 5, l2 = 7;
Type
vector = array [k1..k2] of real ;
matrix = array [l1..l2] of vector;
Var
a, c : vector;
b, d : matrix
эквивалентны между собой.
Одномерный массив естественно сопоставить со строкой, столбцом или вектором; двумерный - с матрицей или таблицей.
Элемент одномерного массива обозначается с помощью названия массива и индекса заключенного в квадратные скобки, например a[k]; индексы элемента многомерного массива могут перечисляться в квадратных скобках через запятые или заключаться в отдельные квадратные скобки, например b[2,10] или b[2][10]. При этом b[2] представляет собой одномерный массив.
Почти все действия с массивами осуществляются поэлементно, например:
a[2] :=3;
read(b[5,6]) ;
a[2] := c[3] + d[7] ;
WriteLn(c[3] : 5 :2, c[3] - d[5] : 5 : 1);
Исключения составляют лишь присвоение всем элементам одного массива таких же значений, как у элементов другого массива и сравнение идентичности всех элементов двух массивов. Для того, чтобы эти операции были возможны, необходимо оба массива описать совместно (в одном списке), либо предварительно ввести тип и использовать при описании массивов идентификатор типа. Например:
Type
vector_1 = array[0..10] of vector ;
Var
a, b : vector_1;
Begin
a : = b;
if a = b then WriteLn(‘ массивы a и b совпадают ‘) ;
if a <> b then WriteLn (‘ массивы a и b не совпадают ‘);