Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 1159

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
823.79 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Воронежский государственный технический университет

В.М. Шишкин, Р.А. Чертков

ВВЕДЕНИЕ В ОБЪЕКТНООРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В СРЕДЕ DELPHI

Учебное пособие

Часть 1

Воронеж 2001

УДК 681.32

Шишкин В.М. Введение в объектно - ориентированное программирование в среде Delphi: Учеб. пособ./ В.М. Шишкин, Р.А. Чертков; Воронеж. гос. техн. ун-т. Воронеж, 2001 – 81 с.

Учебное пособие "Введение в объектноориентированное программирование в среде Delphi" содержит теоретические и практические сведения для объектно - ориентированного программирования в среде Delphi, описывается версия Delphi 4, работающая под управлением современных 32 разрядных операционных систем Windows 95/98/NT/2000. Подробно рассматриваются элементы языка, используемые типы данных, методы применения модульной структуры программы, процедур и функций. Предназначено для студентов первого курса специальности 200800 - "Проектирование и технология РЭС" дневной и заочной формы обучения при изучении дисциплины «Информатика». Пособие подготовлено в электронном виде в текстовом редакторе MS Word, содержится в файле Object_text.exe.

Табл. 10. Ил.1. Библиогр.: 2 назв.

Научный редактор д-р. техн. наук В.М. Питолин

Рецензенты:

заведующий кафедрой ИТО ОВД д.т.н., проф. В.И. Сумин, д.т.н., проф. Н.И. Баранников.

Издается по решению редакционно-издательского совета Воронежского государственного технического университета.

©Шишкин В.М., Чертков Р.А., 2001

©Оформление. Воронежский государственный технический университет, 2001

1. СОЗДАНИЕ ЗАГОТОВКИ ФОРМЫ ДЛЯ УЧЕБНОЙ

ПРОГРАММЫ

Данный раздел посвящен изучению языка Object Pascal – основного инструмента, используемого в среде визуального программирования Delphi. Если в процессе изучения предложенного материала Вы будете использовать приведенные в тексте примеры, то Вам придется сразу создать форму, содержащую все интерфейсные компоненты, необходимые для их реализации. Примерный вид этой формы показан на рис. 1.

 

заголовок формы

 

 

многострочный редактор

 

 

 

 

 

 

 

 

 

 

 

 

метка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кнопка

ОК

 

 

 

 

 

 

 

 

 

панель

 

 

 

кнопка Cancel

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

строка ввода

 

 

 

Рис. 1. Форма для учебной программы

На форме размещена панель (ТРаnеl), две кнопки (TBitBtn), строка ввода (TEdit), невидимая пока метка (TLabel) и многострочный редактор (TMemo). Панель понадобилась для того, чтобы размещенные на ней кнопки, строка ввода и метка всегда располагались в нижней части окна, даже если окно распахнуто во весь экран.3Левая кнопка ОК служит для сооб-

щения программе о том, что в строке ввода подготовлен текст. Обработчик события OnClick этой кнопки будет тем самым местом программы, куда мы будем помещать учебные фрагменты. Правая кнопка Cancel служит для завершения работы программы. Для того, чтобы при ее нажатии приложение завершало свою работу, необходимо дважды щелкнуть на ней мышью и в сформированной Delphi процедуре

TFmExample.BBCloseClick, связанной с событием ―кноп-

ка нажата‖, написать команду Application.Terminate. Кроме того, для этой цели можно использовать стандартную кнопку Close из набора TbitBtn. Ее функции аналогичны функциям системной кнопки закрытия окна. Тогда прописывать последнюю команду нет необходимости.

Метка располагается над строкой ввода и пока не видна на экране. Она предназначена для размещения коротких сообщений, которые будет формировать программа. Для вывода многострочных сообщений служит редактор TMemo, занимающий все остальное место окна.

Для создания такой формы необходимо установить перечисленные ниже компоненты (в том порядке, в котором они даны) и изменить некоторые их свойства на указанные значения, т.е. вначале подготавливаются свойства формы, потом на форму помещается панель, на нее помещаются кнопки и строка ввода, метка и многострочный редактор - на свободное место формы над панелью.

Форма

Свойство

Значение

Примечание

Caption

Учебная программа

Заголовок

Name

fmExample

Имя формы

Position

poScreenCenter

Выравнивание по центру

 

 

экрана

Панель (компонент Panel на странице Standard). Кладется

на любое свободное место формы.

4

Свойство

Значение

Примечание

Align

alBottom

Прижать к нижней границе формы

BevelOuter

bvNone

Убрать внешнюю кромку панели

Caption

Удалить

 

Кнопка ОК (компонент BitBtn на странице Additional). Кладется на любое свободное место панели.

Свойство

Значение

Примечание

Kind

bkOk

Тип кнопки

Name

bbRun

Имя компонента

Кнопка Cancel (компонент BitBtn на странице Additional). Кладется на любое свободное место панели.

Свойство

Значение

Примечание

Kind

bkClose или bkCancel

Тип кнопки

Name

bbClose

Имя компонента

Строка ввода (компонент Edit на странице Standard). Кладется на любое свободное место панели.

Свойство

Значение

Примечание

Name

edInput

Имя компонента

Text

Удалить

Содержимое строки

Метка (компонент Label на странице Standard). Кладется на любое свободное место формы.

Свойство

Значение

Примечания

Align

alBottom

Прижать к нижней границе формы

Caption

Удалить

Содержимое метки

Name

IbOutput

Имя компонента

 

 

3

Многострочный редактор (компонент Memo на странице Standard). Кладется на любое свободное место формы.

Свойство

Значение

Примечания

Align

alClient

Заполнить все свободное место

 

 

формы

Lines

Удалить

Содержимое текстового поля

Name

mmOutput

Имя компонента

ScrollBars

ssBoth

Установить полосы прокрутки

Wordwrap

False

Отказаться от переноса слов

Для компонентов BitBtn свойство Kind (Сорт) определяет типов функции, которые реализует кнопка в диалоговых окнах. Значен bkCancel определит типовую пиктограмму и надпись Cancel, которую Delphi разместит на кнопке. Значение bkOK заставит кнопку BitBtn закрывать диалоговое окно с результатом mrOk. Поскольку наша форма не является диалоговым окном, кнопка ОК не будет выполнять эту свою функцию: мы использовали значение bkOK только для того, чтобы кнопка получила нужную пиктограмму и надпись.

После указанных выше изменений сохраните форму в файле с именем Example в каталоге архива Delphi. Подробнее об объектах и компонентах Delphi см. в разделе 2.

2 Структура программ Delphi

2.1 Структура проекта

Любая программа в Delphi состоит из файла проекта (файл с расширением dpr) и одного иди нескольких модулей (файлы с расширениями pas). Каждый из таких файлов описывает программную единицу Object Pascal.

Файл проекта представляет собой программу, написанную на языке Object Pascal и предназначенную для обработки компилятором. Эта программа автоматически создается Delphi и содержит лишь несколько строк. Чтобы увидеть их, запусти-

те Delphi и щелкните по опции Project | View Source главного

4

меню (или View | Project Sourse). Delphi покажет окно кода с закладкой Project 1, содержащее такой текст:

program Project1; uses

Forms,

Unit1 in 'Unit1.pas' {FmExample};

{$R *.RES} begin

Application.Initialize;

Application.CreateFormTFmExample,FmExample);

Application.Run;

end.

В окне кода жирным шрифтом выделяются так называемые зарезервированные слова, а курсивом - комментарии. Как можно видеть, текст программы начинается зарезервированным словом program и заканчивается словом end с точкой за ним. Сочетание end с точкой называется терминатором программной единицы: как только в тексте программы встретится такой терминатор, компилятор прекращает анализ программы и игнорирует оставшуюся часть текста.

Комментарии ничего не значат для компилятора, и он и игнорирует. Комментарии важны для программиста, который с их помощью поясняет те или иные места программы. В Object Pascal комментарием считается любая последовательность символов, заключенная в фигурные скобки. В приведенном выше тексте таких комментариев два, но строка {$R *.RES} на самом деле не является комментарием. Этот специальным образом написанный фрагмент кода называется директивой компилятора (в данном случае - указание компилятору на необходимость подключения к программе так называемого файла ресурсов). Директивы начинаются символом $, который стоит сразу за открывающей фигурной скобкой.

Кроме того, в Object Pascal в качестве ограничителей комментария могут также использоваться пари символов (*, *) и //. Скобки (*...*) используются подобно фигурным скобкам, т.е. комментарием считается находящийся в них фрагмент тек-

ста, а символы // указывают компилятору, что комментарий

5

располагается за ними и продолжается до конца текущей строки.

Слово program со следующим за ним именем программы и точкой с запятой образуют заголовок программы. За заголовком следует раздел описаний, в котором программист (или Delphi) описывает используемые в программе идентификаторы. Идентификаторы обозначают элементы программы, такие как типы, переменные, процедуры, функции (см. далее). Здесь же с помощью предложения, которое начинается зарезервированным словом uses (использовать) программист сообщает компилятору о тех фрагментах программы (модулях), которые необходимо рассматривать как неотъемлемые составные части программы и которые располагаются в других файлах. В приведенном примере помимо файла проекта в программе должны использоваться модули Forms и Unit1. Модуль Forms является стандартным (т.е. уже известным Delphi), а модуль Unit1 - новым, ранее неизвестным, и Delphi в этом случае указывает также имя файла с текстом модуля (in 'unit1.pas') и имя связанного с модулем файла описания формы {fmExample}.

Собственно тело программы начинается со слова begin (начать) и ограничивается терминатором end с точкой. Тело состоит из нескольких операторов языка Object Pascal. В каждом операторе реализуется некоторое действие - изменение значения переменной, анализ результата вычисления, обращение к подпрограмме и т.п. В теле данной программы три исполняемых оператора:

Application.Initialize;

Application. CreateForm(TfmExample, fmExample); Application.Run;

Каждый из них реализует обращение к одному из методов объекта Application. Здесь необходимо хотя бы кратко пояснить только что введенные термины, которые определяют важные для Object Pascal понятия. Объектом называется специальным образом оформленный ―фрагмент‖ программы, заключающий в себе данные и подпрограммы6 для их обработки.

Данные называются полями объекта, а подпрограммы - его методами. Объект в целом предназначен для решения какой-либо конкретной задачи и воспринимается в программе как неделимое целое (иными словами, нельзя из объекта «выдернуть» отдельное поле или метод). Объекты играют чрезвычайно важную роль в современных языках программирования и используются для того, чтобы увеличить производительность труда программиста и одновременно повысить качество разрабатываемых им программ. Разработчики Delphi создали сотни объектов, которые можно рассматривать как кирпичики, из которых программист строит программу. Такой принцип построения программ называется объектно-ориентированным программированием (ООП).

В объекте Application собраны данные и подпрограммы, необходимые для нормального функционирования программы в целом. Delphi автоматически создает объект-программу Application для каждого нового проекта. С помощью его метода Initialize программа осуществляет ряд вспомогательных действий, необходимых для работы под управлением операционной системы Windows.

Строка Application.Initialize означает обраще-

ние к методу Initialize объекта Application. Прочитав эту строку, компилятор создаст код, который заставит процессор перейти к выполнению большого фрагмента программы, написанного разработчиками Delphi. После выполнения этого фрагмента (после выхода из подпрограммы) управление процессором перейдет к следующей строке программы, в которой вызывается метод CreateForm. Метод CreateForm объекта Application создает и показывает на экране окно главной формы, а метод Run реализует бесконечный цикл получения и обработки поступающих от Windows сообщений о действиях пользователя. Следует сказать, что файл проекта полностью формируется самой Delphi и в большинстве случаев не предназначен для редактирования. Более того, Delphi очень болезненно реагирует на попытки изменить текст этого файла и уп-

рямо выбрасывает из него все, что не вставлено ею самой.

7

Именно по этой причине файл проекта имеет особое расширение и обычно не показывается в окне кода.

2.2. Структура модуля Модули это отдельно компилируемые программные

единицы, предназначенные для размещения фрагментов программ. Любой модуль имеет следующую структуру:

-заголовок;

-секция интерфейсных объявлений;

-секция реализации;

-терминатор.

Заголовок открывается зарезервированным словом unit, за которым следует имя модуля и точка с запятой. Секция интерфейсных объявлений открывается зарезервированным словом interface, а секция реализаций - словом implementation. Терминатором модуля, как и терминатором программы, является end с точкой.

Имя модуля должно совпадать с именем текстового файла, в котором этот модуль хранится на диске (*.pas). Имя модуля служит для его связи с другими модулями и основной программой. Эта связь устанавливается командой:

uses <имя модуля (модулей)>;

Как правило, это предложение следует за зарезервированным словом interface.

В секции интерфейсных объявлений описываются программные элементы (типы, классы, процедуры и функции), которые будут ―видны‖ другим программным модулям. Здесь располагаются только описания переменных, типов, классов, а также заголовки процедур и функций. В секции реализации раскрывается механизм работы этих элементов. В ней же могут быть объявлены локальные для модуля объекты – вспомогательные типы, константы, переменные и пр., которые будут доступны только в пределах данного модуля.

Щелкните по закладке Unit1 окна кода, и вы увидите такой текст:

8

unit Unit1; interface uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;

type

TFmExample = class(TForm) Panel1: TPanel;

BBRun: TBitBtn;

BBClose: TBitBtn;

EdInput1: TEdit;

IBOutput: TLabel;

MMOutput: TMemo;

CBSign: TComboBox;

EdInput2: TEdit; private

{Private declarations } public

{Public declarations } end;

var

FmExample: TFmExample; implementation

{$R *.DFM} end.

Весь этот текст сформирован Delphi, но в отличие от файла проекта программист может его изменять. В интерфейсной секции описан один тип (класс TfmExample) и один объект (переменная fmExample). Класс является образцом, по которому создаются объекты, и наоборот, объект - это экземпляр реализации класса. Образцы для создания элементов программы в Object Pascal называются типами, таким образом, класс TfmExample - это тип. Перед его объявлением стоит зарезервированное слово type (тип), извещающее компилятор о начале раздела описания типов.

Стандартный класс TForm реализует все нужное для соз-

9

дания и функционирования пустого Windows-окна. Класс TfmExample порожден от этого класса, о чем свидетельствует строка TfmExample = class(TForm) в которой за зарезервированным словом class в скобках указывается имя родительского класса. Термин «порожден» означает, что класс TfmExample унаследовал все возможности родительского класса TForm и добавил к ним собственные в виде дополнительных компонентов, которые, мы вставили в форму fmExample. Перечень вставленных нами компонентов и составляет значительную часть описания класса.

Свойство наследования классами-потомками всех свойств родительского класса и обогащения их новыми возможностями является одним из фундаментальных принципов объектно-ориентированного программирования. От наследника может быть порожден новый наследник, который внесет свою лепту в виде дополнительных программных заготовок, и т.д. В результате создается ветвящаяся иерархия классов, на вершине которой располагается самый простой класс TObject (все остальные классы в Delphi порождены от этого единственного прародителя), а на самой нижней ступени иерархии - мощные классы-потомки, которым по плечу решение любых проблем.

Объект fmExample формально относится к элементам программы, которые называются переменными. Вот почему перед объявлением объекта стоит зарезервированное слово var (от англ. variables— переменные).

Текст модуля доступен как Delphi, так и программисту. Delphi автоматически вставляет в текст модуля описание любого добавленного к форме компонента, а также создает заготовки для обработчиков событий. Программист может добавлять переменные, типы, константы и т.д. Совместное владение текстом модуля будет вполне успешным, если программист будет соблюдать простое правило: он не должен удалять или изменять те строки, которые

вставлены не им, а Delphi.

 

3 Элементы программы

10

 

Элементы программы - это минимальные неделимые ее части, несущие в себе определенную значимость для компилятора. К элементам относятся:

зарезервированные слова;

идентификаторы;

типы;

константы;

операции и выражения;

переменные;

метки;

подпрограммы;

комментарии.

Зарезервированные слова - это английские слова, ука-

зывающие компилятору на необходимость выполнения определенных действий. Зарезервированные слова не могут использоваться в программе ни для каких иных целей, кроме тех, для которых они предназначены.

В Object Pascal имеются следующие зарезервированные слова:

and

exports

 

mod

shr

array

file

 

nil

string

as

finalization

not

threadvar

asm

finally

 

object

then

begin

for

 

of

to

case

function

 

or

try

class

goto

 

out

type

const

if

 

packed

unit

constructor

implementation

procedure

until

destructor

in

 

program

uses

dispinterface

inherited

 

property

var

div

initialization

raise

while

do

inline

 

record

with

downto

interface

 

repeat

xor

else

is

 

resources

tring

end

label

11

set

 

 

 

 

 

except library shl

Зарезервированные слова не могут использоваться в качестве идентификаторов.

Идентификаторы - это слова, которыми программист обозначаем любой другой элемент программы, кроме зарезервированного слова идентификатора или комментария. Идентификаторы в Object Pascal могут состоять из латинских букв, арабских цифр и знака подчеркивания Никакие другие символы или специальные знаки не могут входить идентификатор. Из этого простого правила следует, что идентификаторы не могут состоять из нескольких слов (нельзя использовать пробел) или включать в себя символы кириллицы (русского алфавита).

Примеры правильных идентификаторов:

MyProgramIsTheBestProgram, external, date_27_sep_39,

Примеры неправильных идентификаторов:

1Program

// начинается цифрой

block#l

// содержит специальный символ

My Prog

// содержит пробел

mod

// зарезервированное слово.

Примечание: к специальным символам относят:

+ - * / , ‗ . : ; < > [ ] ( ) { } @ # $ ^

и пары символов

<> <= >= := (* *) (. .) //

Типы - это специальные конструкции языка, которые рассматриваются компилятором как образцы для создания других элементов программы, таких как переменные, константы и функции. Любой тип определяет две важные для компилятора вещи: объем памяти, выделяемый для размещения элемента (константы, переменной или результата, возвращаемого функцией), и набор допустимых действий, которые программист может совершать над элементами данного типа. Любой опре-

деляемый программистом идентификатор должен быть описан

12

в разделе описаний (перед началом исполняемых операторов). Это означает, что компилятор должен знать тот тип (образец), по которому создается определяемый идентификатором элемент (подробнее см. ―Типы данных‖).

Константы определяют области памяти, которые не могут изменять своего значения в ходе работы программы. Как и любые другие элементы программы, константы могут иметь свои собственные имена. Объявлению имен констант должно предшествовать зарезервированное слово const (от англ. constants - константы). Например:

const

Kbyte : Integer = 1024;

Mbyte : Integer = Kbyte*Kbyte;

Тип константы указывается через двоеточие после имени, а затем после знака «=» указывается значение константы. В качестве констант в Object Pascal могут использоваться целые, вещественные и шестнадцатеричные числа, логические константы, символы, строки символов, конструкторы множеств, массивы, записи и признак неопределенного указателя NIL.

Целые числа записываются со знаком или без него по обычным правилам и могут иметь значение от -2147483648 до

+2147483647.

Вещественные числа записываются со знаком или без него с использованием десятичной точки и/или экспоненциальной части. Экспоненциальная часть начинается символом е или Е, за которым могут следовать знаки «+» или «-» и десятичный порядок. Символ е (Е) означает десятичный порядок и имеет смысл «умножить на 10 в степени»

Если в записи вещественного числа присутствует десятичная точка, то перед точкой и за ней должно быть хотя бы по одной цифре. Если пользуется символ экспоненциальной части е (Е), за ним должна следовать хотя бы одна цифра десятичного порядка.

Щестнадцатеричное число состоит из шестнадцатеричных цифр, которым предшествует знак доллара $ (код символа

36). Диапазон шестнадцатеричных чисел – от $00000000 до

13

$FFFFFFFF .

Логическая константа - это либо слово False (ложь), либо слово True (истина).

Символьная константа - это любой символ ПК, заключенный в апострофы. Допускается использование записи символа путем указания его внутреннего кода, которому предшествует символ # (код 35), например: #97— символ «а»; #90 – символ «Z» и т.д.

Ch : Char = ‘Y’;

Строковая константа - любая последовательность символов (кроме CR - возврат каретки), заключенная в апострофы. Если в строке нужно указать сам символ апострофа, он удваивается, например:

Str : String = 'That’’s string';

Константа – массив описывается в виде:

Digit:array[1..4]of char = (‘q’,’w’,’e’,’r’);

При этом допускается задание символьной строки той же длины:

Digit : array [1..4] of char = (‘qwer’);

Константа – запись описывается в виде: <идентификатор> : <тип> = <список значений полей> Например:

SomeDay : Date = (d:16; m:May; Y:2001);

где Day – предварительно объявленный тип – запись (см. раздел ―Типы данных‖) вида:

type

// Перечисляемый тип - месяцы

Month = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);

// Тип - запись

Date = record

D :1..31;

M: Month;

Y: 1997..2010; end;

Конструктор множества - список элементов множества,

обрамленый квадратными скобками, например:

14

Lot : set of 1..31 = [1,2,4..7,12];

Переменные связаны с изменяемыми областями памяти, т.е. с такими ее участками, содержимое которых будет меняться в ходе работы программы. В отличие от констант переменные всегда объявляются в программе. Для этого после идентификатора переменной ставится двоеточие и имя типа, по образу которого должна строиться переменная. Разделу объявления переменной (переменных) должно предшествовать слово var. Например:

Var

inValue: Integer; byValue: Byte;

Здесь идентификатор inValue объявляется как переменная типа Integer, а идентификатор byValue - как переменная типа Byte. Стандартный (т.е. заранее определенный в Object Pascal) тип Integer определяет четырехбайтный участок памяти, содержимое которого рассматривается как целое число (см. далее).

Операции и выражения.

Основными элементами, из которых конструируется исполняемая часть программы, являются константы, переменные и обращения к функциям. Каждый из этих элементов характеризуется своим значением и принадлежит к какому-либо типу данных (см. ―Типы данных‖). С помощью знаков операций и скобок из них можно составлять выражения, которые фактически представляют собой правила получения новых значений.

Частным случаем выражения может быть просто одиночный элемент, т.е. константа, переменная или обращение к функции. Значение такого выражения имеет, естественно, тот же тип, что и сам элемент. В общем случае выражение состоит из нескольких элементов (операндов и знаков операций), а тип его значения определяется типом операндов и видом примененных к ним операций. Примеры выражений: L, 21, (а + b) *

с, sin(t), not Flag and (a <= b).

В Object Pascal определены следующие операции:

унарные

not, @;

 

15

мультипликативные *, /, div, mod, and, shl, shr;

аддитивные

+, -, or, xor;

отношения

=, <>, <, >, <=, >=, in.

Приоритет операций убывает в указанном порядке, т.е. наивысшим приоритетом обладают унарные операции, низшим - операции отношения. Порядок выполнения нескольких операций равного приоритета устанавливается компилятором из условия оптимизации кода программы и не обязательно слева направо. При вычислении логических выражений операции равного приоритета всегда вычисляются слева направо.

Правила использования операций и операндов различного типа приведены в табл.1.

 

 

 

Таблица 1

 

 

 

 

Операция

Действие

Тип операндов

Тип результата

1

2

3

4

not

Отрицание

Логический

Логический

not

То же

Любой целый

Тип операнда

@

Адреc

Любой

Указатель

*

Умножение

Любой целый

Наименьший

 

 

 

целый

*

То же

Любой

Extended

 

 

вещественный

 

*

Пересечение

Множественный

Множествен-

 

множеств

 

ный

/

Деление

Любой

Extended

 

 

вещественный

 

div

Целочисленное

Любой целый

Наименьший

 

деление

 

целый

mod

Остаток от

То же

То же

 

деления

 

 

and

Логическое И

Логический

Логический

 

 

 

 

1

2

3

4

 

 

16

 

and

То же

Любой целый

Наименьший

 

 

 

целый

shl

Левый сдвиг

То же

То же

shr

Правый сдвиг

То же

То же

+

Сложение

То же

То же

+

То же

Любой

Extended

 

 

вещественный

 

+

Объединение

Множественный

Множествен-

 

множеств

 

ный

+

Сцепление строк

Строковый

Строковый

-

Вычитание

Любой целый

Наименьший

 

 

 

целый

-

То же

Любой

Extended

 

 

вещественный

 

or

Логическое ИЛИ

Логический

Логический

or

То же

Любой целый

Наименьший

 

 

 

целый

=

Равно

Любой простой

Логический

 

 

или строковый

 

<>

Не равно

То же

То же

<

Меньше

Логический

Логический

<=

Меньше

То же

То же

 

или равно

 

 

>

Больше

То же

То же

>=

Больше

То же

То же

 

или равно

 

 

Унарная операция @ применяется к операнду любого типа и возвращает результат типа Pointer, в котором содержится адрес операнда в памяти ЭВМ.

В Object Pascal определены следующие логические операции:

not - логическое НЕ and - логическое И;

or - логическое ИЛИ;

17

хоr - исключительное ИЛИ.

Логические операции применимы к операндам целого и логического типов. Если операнды - целые числа, то результат логической операции есть тоже целое число, биты которого (двоичные разряды) формируются из битов операндов, над которыми (попарно) производится указанная логическая операция.

Операция отношения IN применяется к двум операндам. Первьм (левым) операндом должно быть выражение любого порядкового типа, вторым - множество, состоящее из элементов того же типа, или идентификатор множественного типа. Результат операции будет True, если левый операнд принадлежит множеству.

К логическим же в Object Pascal обычно относятся и две сдвиговые операции над целыми числами:

i shl j - сдвиг содержимого i на j разрядов влево; освободившиеся младшие разряды заполняются нулями;

i shr j - сдвиг содержимого i на j разрядов вправо; освободившиеся старшие разряды заполняются нулями.

В этих операциях i и j - выражения любого целого типа (см. ниже).

Метки – это имена операторов программы. Метки используются очень редко и только для указания компилятору, какой оператор программы должен выполняться следующим. Метки объявляются в специальном разделе объявления, начинающемся с зарезервированного слова Label. Например:

label loop;

Begin

…..

goto loop; //Передать управление оператору А

…..

loop: оператор А; //Этот оператор получит управление

…..

End.

Подпрограммы – это специальным образом оформлен-

ные элементы программы, независимые от остального текста

18