Четверг, 02.07.2026, 12:04
Приветствую Вас Гость

World of Turbo Pascal

Меню сайта
Категории каталога
Главная » Статьи » Мои статьи

Краткое введение в Object Pascal(Часть 2)

Массивы

Массивы в 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 ставится перед именем параметра в том случае, если параметр используется для возврата значения из процедуры в вызвавшую ее программу.

Категория: Мои статьи | Добавил: n1k (12.11.2008)
Просмотров: 616 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Друзья сайта