Массивы
Массивы в Object Pascal во многом схожи с аналогичными типами данных в других языках программирования. Отличительная особенность массивов заключается в том, что все их компоненты по сути данные одного типа. Эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера. Описание типа массива задается следующим образом: = array [ ] of ;
В качестве индексных типов в Object Pascal можно использовать любые порядковые типы, имеющие объем не более 2 Гбайт (т. е. кроме LongWord И Int64).
Определить переменную как массив можно и непосредственно при описании этой переменной, без предварительного описания типа массива, например: var a,b : array [1..10] of Real; Динамические массивы
С версии Delphi 4 впервые введены так называемые динамические массивы. При объявлении таких массивов в программе не следует указывать границы индексов: var A: array of Integer; В: array of array of Char; C: array of array of array of Real;
В этом примере динамический массив А имеет одно измерение, массив В - два и массив С - три измерения. Распределение памяти и указание границ индексов по каждому измерению динамических массивов осуществляется в ходе выполнения программы путем инициации массива с помощью функции SetLength. В ходе выполнения такого оператора: SetLength(А,3);
одномерный динамический массив A будет инициирован, т. е. получит память, достаточную для размещения трех целочисленных значений. Нижняя граница индексов по любому измерению динамического массива всегда равна 0, поэтому верхней границей индексов для A станет 2. Объявление одномерного массива: ИмяМассива: array [НижнийИндекс...ВерхнийИндекс] of ТипЭлементов; Объявление двумерного массива: ИмяМассива: array [НижнийИндекс1..ВерхнийИндекс1, НижнийИндекс2..ВерхнийИкдекс2] of ТипЭлементов; Записи
Запись - это структура данных, состоящая из фиксированного количества компонентов, называемых полями записи. В отличие от массива компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.
Структура объявления типа записи такова: = record end;
Вариант 1. Объявление записи в разделе переменных: Запись: record Поле1:Тип1; Поле2: Тип2; ПолеJ: TиnJ; end;
Вариант 2. Сначала объявляется тип-запись, затем - переменная-запись: type ТипЗапись = record Поле1: Тип1; Поле 2:Тип2; ПолеК: ТипК; end; var Запись: ТипЗапись; Множества
Множества - это наборы однотипных логически связанных друг с другом объектов. Характер связей между объектами лишь подразумевается программистом и никак не контролируется Object Pascal. Количество элементов, входящих в множество, может меняться в пределах от 0 до 255 (множество, не содержащее элементов, называется пустым). Именно непостоянством количества своих элементов множества отличаются от массивов и записей.
Два множества считаются эквивалентными тогда и только тогда, когда все их элементы одинаковы, причем порядок следования элементов в множестве безразличен. Если все элементы одного множества входят также и в другое, говорят о включении первого множества во второе. Пустое множество включается в любое другое.
Описание типа множества имеет вид: = set of ; Указатели
Оперативная память ПК представляет собой совокупность ячеек для хранения информации - байтов, каждый из которых имеет собственный номер. Эти номера называются адресами, они позволяют обращаться, к любому байту памяти. Object Pascal предоставляет в распоряжение программиста гибкое средство управления динамической памятью - так называемые указатели.
Указатель - это переменная, которая в качестве своего значения содержит адрес байта памяти. С помощью указателей можно размещать в динамической памяти любой из известных в Object Pascal типов данных. Лишь некоторые из них (Byte, Char, ShortInt, Boolean) занимают во внутреннем представлении один байт, остальные - несколько смежных. Поэтому на самом деле указатель адресует лишь первый байт данных.
Как правило, указатель связывается с некоторым типом данных. Такие указатели будем называть типизированными. Строки
Объявление переменной-строки длиной 255 символов: Имя: string;
Объявление переменной-строки указанной длины: Имя: string [ ДлинаСтроки ]. Составной оператор
Составной оператор - это последовательность произвольных операторов программы, заключенная в операторные скобки - зарезервированные слова begin ... end . Составные операторы - важный инструмент Object Pascal, дающий возможность писать программы по современной технологии структурного программирования (без операторов перехода goto). Инструкции выбора
Инструкция if
Вариант 1: if-then-else. if Условие then begin { Инструкции, которые выполняются, если условие истинно. } end else begin { Инструкции, которые выполняются, } { если условие ложно } end ;
Вариант 2: if-then. if Условие then begin { Инструкции, которые выполняются, если условие истинно. } end;
Примечание: если между begin и end находится только одна инструкция, то слова begin и end можно не писать.
Инструкция case
Вариант 1: case Выражение of Список1_Констант: begin { инструкции } end; Список2_Констант: begin { инструкции } end; СписокJ_Констант: begin { инструкции } end; end;
Вариант 2: case Выражение of Список1_Констант: begin { инструкции } end; Список2_Констант: begin { инструкции } end; СписокJ_Констант: begin { инструкции J} end; else begin { инструкции } end; end;
Инструкции между begin и end выполняются, если значение выражения, записанного после case, совпадает с константой из соответствующего списка. Если это не так, то выполняются инструкции, находящиеся после else, между begin и end.
Примечание: если между begin и end находится только одна инструкция, то слова begin и end можно не писать. Циклы
Инструкция for
Вариант 1 (с увеличением счетчика): for Счетчик:=НачальноеЗначение to КонечноеЗначение do begin { здесь инструкции } end;
Если НачальноеЗначение > КонечноеЗначение, то инструкции между begin и end не выполняются.
Примечание: если между begin и end находится только одна инструкция, то слова begin и end можно не писать.
Вариант 2 (с уменьшением счетчика): for Счетчик:=НачальноеЗначение downto КонечноеЗначение do begin { здесь инструкции } end;
Если НачальноеЗначение < КонечноеЗначение, то инструкции между begin и end не выполняются.
Примечание: если между begin и end находится только одна инструкция, то слова begin и end можно не писать.
Инструкция repeat repeat { инструкции } until Условие;
Сначала выполняются инструкции цикла, которые расположены между repeat и until. Затем вычисляется значение выражения Условие, и если оно равно False, то инструкции цикла выполняются еще раз. И так до тех пор, пока значение выражения Условие не станет равным True.
Инструкция while while Условие do begin { инструкции ) end;
Сначала проверяется Условие, если оно истинно, то выполняются инструкции между begin и end. Затем снова проверяется Условие. Если оно выполняется, то инструкции цикла выполняются еще раз. И так до тех пор, пока Условие не станет ложным.
Примечание: если между begin и end находится только одна инструкция, то слова begin и end можно не писать. Объявление функции function ИмяФункции(var Параметр1: Тип 1; var Параметр2: Тип2; var ПараметрJ: TиnJ ) : Тип; const { описание констант } var { описание переменных } begin { инструкции функции } Result:=Значение; end;
Примечание: слово var ставится перед именем параметра в том случае, если параметр используется для возврата значения из функции в вызвавшую ее программу.
Объявление процедуры procedure ИмяПроцедуры(var Параметр1: Тип1; var Параметр2: Тип2; var ПараметрJ: TипJ } ; const { описание констант } var { описание переменных } begin { инструкции процедуры } end;
Примечание: слово var ставится перед именем параметра в том случае, если параметр используется для возврата значения из процедуры в вызвавшую ее программу.
|