Читайте также: |
|
procedure TForm1.Button1Click(Sender: TObject);
Label
bye;
var
num:Integer;
begin
num:=StrToInt(Edit1.Text);
if (num>=1) and (num<=5) then
begin
ShowMessage('Работаем.');
goto bye;
end;
if (num=6) or (num=7) then
begin
ShowMessage('Отдыхаем!');
goto bye;
end
else ShowMessage('Ошибка!');
bye:
ShowMessage('До свидания!');
end;
Листинг 6.2 Применение оператора множественного выбора case... of для тех же целей выглядит более элегантно.
var
num:Integer;
begin
num:=StrToInt(Edit1.Text);
case num of
1..5: ShowMessage('Работаем.');
6..7: ShowMessage('Отдыхаем!');
else ShowMessage('Ошибка!');
end;
end;
Массивы
Массив – структура данных, позволяющая хранить под одним именем совокупность данных любого, но только одного какого-то типа.
Характеристики массива:
§ тип – общий тип элементов массива;
§ размерность (ранг) – количество индексов массива;
§ диапазон – количество допустимых значений каждого индекса;
§ форма – совокупность размерности и диапазона.
Массивы в Object Pascal во многом схожи с аналогичными типами данных в других языках программирования. Отличительная особенность массивов заключается в том, что все их компоненты суть данные одного типа (возможно, структурированного). Эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера, например:
Type
digit = array [0..9] of Char;
matrix = array [byte] of Single;
Var
M: matrix;
d: digit;
I: integer;
Begin
m[17]:= ord(d[i-l])/10;
End.
Описание типа массива задается следующим образом:
<имя типа> = array [ <сп.инд.типов> ] of <тип>;
Здесь
ü <имя типа> - правильный идентификатор;
ü array, of - зарезервированные слова (массив, из);
ü <сп.инд.типов> - список из одного или нескольких индексных типов, разделенных запятыми; квадратные скобки, обрамляющие список, - требование синтаксиса;
ü <тип> - любой тип Object Pascal.
В качестве индексных типов в Object Pascal можно использовать любые порядковые типы, имеющие мощность не более 2 Гбайт (т. е. кроме LongWord и Int64)
Определить переменную как массив можно и непосредственно при описании этой переменной, без предварительного описания типа массива, например:
Var
a,b: array [1..10] of Real;
Обычно в качестве индексного типа используется тип-диапазон, в котором задаются границы изменения индексов. Так как тип <тип>, идущий в описании массива за словом of, - любой тип Object Pascal, то он может быть, в частности, и другим массивом, например:
Type
mat=array[0..5]of array[-2..2]of array[Char]of Byte;
Такую запись можно заменить более компактной:
Type
mat=array[0..5,-2..2,char]of Byte;
Глубина вложенности структурированных типов вообще, а следовательно, и массивов - произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничено, однако суммарная длина внутреннего представления любого массива не может быть больше 2 Гбайт. В памяти ПК элементы массива следуют друг за другом так, что при переходе от младших адресов к старшим наиболее быстро меняется самый правый индекс массива.
Если, например,
Var
a: array [1..2,1..2] of Byte;
Begin
а[1,1]:= 1;
а[2,1]:= 2;
а[1,2]:= 3;
а[2,2]:= 4;
End.
то в памяти последовательно друг за другом будут расположены байты со значениями 1,3,2,4. Это обстоятельство может оказаться важным при использовании стандартной процедуры копирования памяти MoveMemory.
В Object Pascal можно одним оператором присваивания передать все элементы одного массива другому массиву того же типа, например:
Var
a,b: array [1..5] of Single;
Begin
а:= b;
End.
После этого присваивания все пять элементов массива а получат те же значения, что и в массиве в. Замечу, что объявление
Var
a: array [1..5] of Single;
b: array [1..5] of Single;
создаст разные типы массивов, поэтому оператор
а:= b;
вызовет сообщение об ошибке.
Над массивами не определены операции отношения. Нельзя, например, записать
if а = b then...
Сравнить два массива можно поэлементно, например:
Var
a,b: array [1..5] of Single;
eq: Boolean;
Дата добавления: 2015-07-10; просмотров: 128 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Листинг 5.6 | | | Листинг 7.3 |