Delphi. Учимся на примерах - Сергей Парижский
Шрифт:
Интервал:
Закладка:
Application.Initialize;
//создание главной формы приложения
Application.CreateForm(TForm1, Form1);
//создание остальных форм
//…
//запуск приложения
Application.Run;
end.
Перед словом begin можно добавлять объявления констант, типов и переменных, а между словами begin и end — добавлять собственный программный код.
Файл программного модуля .pas
Файл программного модуля (формы или независимый) имеет следующую структуру:
unit имя_модуля;
//начало интерфейсной части модуля
interface
uses
{раздел ссылок на другие программные модули, классы, типы, переменные, процедуры или функции которых используются в данном модуле}
const
{описания констант}
type
{описание типов, в частности — класса формы}
var
{описание переменных, в частности – экземпляра формы}
//начало раздела реализации
implementation
uses
{раздел ссылок на другие программные модули}
{$R *.dfm} //директивы компилятора
const
{описания констант}
type
{описание типов }
var
{описание переменных }
{реализация процедур и функций модуля}
end.
В интерфейсном разделе (между ключевыми словами interface и implementation) указываются элементы программного модуля, доступные для других модулей и программ, а также ссылки на другие модули (раздел uses).
Все описания и операторы, помещаемые в раздел реализации (после ключевого слова implementation), доступны только внутри данного программного модуля.
Процедуры и функции
Процедура – это именованный программный блок, который не возвращает никакого значения. В отличие от нее, функция — это именованный программный блок, возвращающий некоторое значение в точку вызова. Обычно в виде функций или процедур выделяют часто используемые фрагменты программного кода. Синтаксис процедур:
procedure имя_процедуры(список_параметров);
{Локальные объявления констант, типов и переменных}
begin
//Тело процедуры
end;
Синтаксис функций:
function имя_процедуры(список_параметров): тип_возвращаемого_значения;
{Локальные объявления констант, типов и переменных}
begin
//Тело функции
Result:= возвращаемое_ значение;
end;
Параметры
Список параметров, передаваемых в процедуру или в функцию, имеет следующий синтаксис:
параметр1: тип; …; параметрN: тип
Если процедура или функция не принимает никаких параметров, то ее заголовок выглядит следующим образом:
procedure имя_процедуры;
function имя_процедуры: тип_возвращаемого_значения;
Те параметры, перед которыми при объявлении указано ключевое слово var, называются параметрами, передаваемыми по ссылке. Это означает, что к значению этого параметра сохраняется доступ и после выхода из функции или процедуры. Такие параметры можно использовать для возврата результата в процедурах или возврата более одного результата в функциях.
Для параметра, указанного в списке последним, можно определить значение по умолчанию. Это означает, что при вызове процедуры или функции эти параметры можно не передавать.
Если в качестве параметра передается массив, то размерность массива в заголовке процедуры или функции не указывается.
Вызов процедур и функций
Процедуры и функции вызываются по их названию с указанием в круглых скобках списка параметров, например:
s:= IntToStr(i); //вызов функции IntToStr
delete(s, 1, 2); {вызов процедуры delete, которая удаляет из строки s два символа, начиная с первого. В данном случае, переменная s является параметром, передаваемым по ссылке}
Если в процедуру или функцию не передаются никакие параметры (как во многих методах объектов), то вызов осуществляется только по ее имени, например:
Button1.Click; //вызов метода (процедуры) Click
s:= GetCurrentDir; //вызов функции GetCurrentDir
Досрочный выход из процедуры или функции
Для досрочного выхода из процедуры или функции в ее теле следует указать вызов процедуры Exit.
Операторы
Оператор — это конструкция языка Object Pascal, выполняющая определенную операцию. Все операторы можно разбить на несколько категорий.
Оператор присваивания
Слева от оператора присваивания := указывается переменная или свойство объекта, а справа — некоторое значение или выражение. Тип значения или результат выражения должен соответствовать типу переменной или свойства.
Арифметические операторы
Арифметические операторы возвращают значения, соответствующие типам числовых операндов:
• + — сложение;
• – — вычитание;
• * — умножение;
• / — деление чисел с плавающей запятой;
• div — целочисленное деление с отбрасыванием остатка;
• mod — получение остатка от целочисленного деления.
Булевы операторы
Булевы операторы возвращают значения типа Boolean:
• not — отрицание;
• and — логическое "И";
• or — логическое "ИЛИ";
• xor — логическое исключающее "ИЛИ".
Операторы сравнения
Операторы сравнения возвращают значение типа Boolean:
• = — равно;
• <> — не равно;
• < — меньше;
• > — больше;
• <= — меньше или равно;
• >= — больше или равно.
Побитовые операторы
Побитовые операторы выполняют действия с операндами с учетом их двоичного представления:
• not — побитовое отрицание (not 0 = 1; not 1 = 0);
• and — побитовое умножение (0 and N = 0; 1 and 1 = 1);
• or — побитовое сложение (1 or N = 1; 0 or 0 = 0);
• xor — побитовое исключающее сложение (0 xor 0 = 0; 0 xor 1 = 1; 1 xor 1 = 0);
• shl — побитовый сдвиг влево;
• shr — побитовый сдвиг вправо.
Строковые операторы
Строковые операторы применяются к операндам строкового или символьного типа:
• =, <>, <, >, <=, >= — операторы сравнения;
• + — оператор конкатенации (слияния операндов).
Операторы, применяемые к множествам
К множествам применяются следующие операторы:
• + — объединение (результат — множество);
• – — вычитание (результат — множество);
• * — пересечение (результат — множество);
• <= – подмножество (результат — множество);
• >= — супермножество (результат — множество);
• = — равенство (результат — значение типа Boolean);
• <> — неравенство (результат — значение типа Boolean);
• in — вхождение множества, указанного слева от оператора, во множество, указанное справа (результат — значение типа Boolean).
Операторы, применяемые с объектами
С объектами применяют следующие операторы:
• as — приведение к производному классу. Пример использования:
var Obj: TObject; //объект класса TObject
…
with Obj as TButton do //приводим к классу TButton
Caption:= 'Кнопка'; //то же, что Obj.Caption
• is — сравнение с классом. Пример использования:
var Obj: TObject; //объект класса TObject
…
if Obj is TButton then //если Obj – объект класса
//TButton, то…
Obj.Caption:= 'Кнопка';
• =, <> — операторы сравнения.
Группировка операторов
Операторы можно группировать, заключая их в круглые скобки.
Порядок выполнения операторов
В сложных выражениях операторы выполняются в следующем порядке:
1. ( ).
2. not.
3. *, /, div, mod, and, shl, shr, as.
4. +, –, or, xor.
5. =, <>, <, >, <=, >=, in, is.
Блоки программного кода
Два и более операторов присваивания, а также вызовов процедур или функций можно выделять в блоки программного кода при помощи ключевых слов begin и end. Такие блоки используются в конструкции with-do, а также в рассматриваемых ниже циклических конструкциях и конструкциях ветвления.