II. Структура програми на Object Pascal

 

program <ім’я програми>;

 

uses <список модулів>;

label <список міток>;

const <список констант>;

type <список типів>;

var <список змінних>;

 

<Список процедур та функцій>

 

begin

<Послідовність операторів, зокрема, викликів процедур та функцій>;

end.

 

У будь-якому місці програми може бути коментар.

 

III. Типи даних

1. Прості типи

1.1. Порядкові

1.1.1. Цілі

Таблиця 1. Цілі типи даних в Object Pascal

 

Тип Розмір (у байтах) Знак Діапазон Відповідник у Turbo Pascal 7.0
Byte беззнакове 0..255 Byte
Shortint знакове -128..127 Shortint
Word беззнакове 0 .. 65535 Word
SmallInt знакове -32768 .. 32767 Integer
Cardinal беззнакове 0 .. 232-1 -
Integer знакове -231 .. 231-1 Longint
Int64 знакове -263 .. 263-1 -

 

1.1.2. Логічні

Boolean (значення true або false)

1.1.3. Символьні

Char (Ansi Char) – довжиною в 1 байт (кодування ANSI)

WideChar – довжиною у 2 байти (кодування Unicode)

1.1.4. Переліковий

Наприклад, Seasons = (Winter, Spring, Summer, Autumn);

1.1.5. Діапазон

Наприклад, Days = 1..31

 

1.2. Дійсні

Таблиця 2. Дійсні типи даних в Object Pascal

 

Тип Розмір (у байтах) Діапазон Відповідник у Turbo Pascal 7.0
Single 1.5x10–45 .. 3.4x1038 Single
Real 5.0x10–324 .. 1.7x10308 Double
Real48 2.9x10-39 .. 1.7x1038 Real
Comp –263+1 .. 263 –1 Comp
Currency » -1015.. 1015 -
Double 5.0x10–324 .. 1.7x10308 Double
Extended 3.6x10–4951 .. 1.1x104932 Extended

 

2. Структуровані типи

2.1. Масиви (array)

2.2. Множини (set of)

2.3. Файл (file of, text)

2.4. Записи (record)

3. Вказівники (pointer)

4. Рядки (string)

5. Процедурні типи (procedure)

6. Варіантні типи (variant)

7. Класи (class)

8. Інтерфейси (interface)

 

Змінні та константи усіх типів використовуються у виразах.

Вираз складається з сумісних за типом операндів, які об’єднані знаками операцій.

 

IV. Операції

  1. Арифметичні

+ – * / div (ділення по модулю), mod (залишок від ділення).

  1. Логічні

not (логічне заперечення)

and (логічне множення)

or (логічне додавання)

xor (додавання за модулем 2)

shl (побітовий зсув вліво)

shr (побітовий зсув вправо)

  1. Над рядками + (додавання)
  2. Над множинами + (додавання) – (віднімання) * (перетин)
  3. Відношення

= <> > < <= >= in (елемент множини)

  1. Визначення адреси @
  2. Над об’єктами: is, as

V. Пріоритет операцій (від найвищого до найнижчого)

1. @, not

2. *, /, div, mod, and, shl, shr, as

3. +, –, or, xor

4. =, <>, <, >, <=, >=, in, is

VI. Оператори

Задають деяку алгоритмічну дію над даними.

 

1. Прості оператори (не містять інших операторів)

 

1.1. присвоєння

 

<ідентифікатор>:= <вираз>;

 

1.2. виклик процедури або функції

 

<ім’я процедури або функції> (<список параметрів>);

 

1.3. безумовний перехід

 

goto <мітка>;

 

2. Порожній оператор

;

 

3. Структуровані оператори (побудовані з інших операторів за певними правилами)

 

3.1. Складений оператор

 

begin

<інші оператори>

end;

 

3.2. Умовні оператори

 

3.2.1. Умовний оператор в скороченій формі

 

if <умова> then <оператор>,

 

де <умова> – вираз типу Boolean

 

3.2.2. Умовний оператор в звичайній формі

 

if <умова> then <оператор1>

else <оператор2>

 

3.2.3. Оператор вибору

 

case <ключ вибору> of

<список1>:<оператор1>

<список2>:<оператор2>

//…

<список n>:<оператор n>

else <оператор>

end;

 

де <ключ вибору> – змінна або вираз одного з порядкових типів,

<список1>…<список n> – значення цієї змінної.

 

3.3. Оператори циклу

 

3.3.1. Оператор циклу з післяумовою

 

repeat

<оператор1>

// …

<оператор n>

until <умова виходу з циклу>;

 

3.3.2. Оператор циклу з передумовою

 

while <умова виконання циклу> do

begin

<оператор1>

// …

<оператор n>

end;

 

3.3.3. Оператор циклу з лічильником

 

for <змінна циклу>:= <початкове значення> to

<кінцеве значення> do <оператор>; // крок зміни = 1

або

for <змінна циклу>:= <початкове значення> downto

<кінцеве значення> do <оператор>; // крок зміни = -1

 

3.3.4. Допоміжні

 

continue; // перехід на наступну ітерацію циклу

break; // припинення циклу і передача керування наступному оператору

exit; // вихід з процедури або функції

 

Структуровані типи

  1. Масиви.

Масив містить визначену кількість елементів одного типу. Доступ до елементів реалізується через індекси.

 

type

<ім’я типу>= array [<тип індексу>] of <тип елемента>;

var

<ім’я змінної>: <ім’я типу>;

// або

<ім’я змінної>: array [<тип індексу>] of <стандартний тип елемента>

 

Приклад:

 

var

A1: array [1..10] of Byte;

For i:=1 to 10 do

A1[i]:= i*2;

 

Зауваження. Ім’я типу для масиву необхідно задавати, якщо цей масив є аргументом процедури або функції.

 

  1. Множини

Множина – набір елементів одного з порядкових типів. Множини не є впорядкованими і мають змінну кількість елементів.

 

Приклад:

 

type

TDigit = set of 0..9;

TColor = set of (Red, Green, Blue);

 

var k: set of Char = [‘Y’,’y’,’N’,’n’];

Key: Char;

If not (Key in K) then exit;

 

  1. Записи

Запис складається з елементів, які називаються полями і можуть бути різного типу.

 

type

<ім’я типу>= record

<ім’я поля1>: <тип поля1>;

// …

<ім’я поля n>: <тип поля n>;

end;

 

Для доступу до полів запису може використовуватись спеціальний оператор with

 

Приклад:

 

type

TPoint= record

X, Y : Real;

end;

 

var aPoint1, aPoint2: TPoint;

begin

aPoint1.X:= 10.5;

aPoint2.Y:= -7.2;

with aPoint2 do

begin

X:= 4.2;

Y:= 6.9;

end;

end.

 

4.Вказівники:

 

Вказівники містять адреси елементів інших типів.

 

type <ім’я типу вказівника> = ^<ім’я іншого типу>

var

<ім’я змінної>: <ім’я типу вказівника>;

// або

<ім’я змінної>: ^<ім’я іншого типу>

 

Приклад

 

type TPoint= record

X, Y: Real;

end;

 

var P1:^TPoint;

begin

New(P1); //виділення пам’яті

P1^.X:=5; // доступ до даних – через розадресацію вказівника P1^.Y:=3; // (^ – англ. caret)

Dispose (P1); //звільнення пам’яті

end;