Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:
реклама
Кому подойдет камерная свадьба. , Нужен жесткий матрас для комфортного сна? Здесь большой выбор и низкие цены!

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Краткое введение в Object Pascal

Автор: saYmon
http://delphin.xost.ru/

Решил в краткой и одновременно в более понятной форме изложить основы Object Pascal. Тем не менее, здесь всего лишь минимум и для большего объема я советую Вам прочитать книгу "Библия для программистов в среде Delphi".

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

program Project1;
uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.

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

{ Это комментарий }
(* Это тоже комментарий *)
// Все символы до конца этой строки составляют комментарий

Структура модуля

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

unit Unit1;
interface
// Секция интерфейсных объявлений
implementation
// Секция реализации
end.

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

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

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

  • зарезервированные слова;
  • идентификаторы;
  • типы;
  • константы;
  • переменные;
  • метки;
  • подпрограммы;
  • комментарии.

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

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

and           except         label     resourcestring
array         exports        library   set
as            file           mod       shl
asm           finalization   nil       shr
begin         finally        not       string
case          for            object    then
class         function       of        threadvar
const         goto           or        to
constructor   if             out       try
destructor    implementation packed    type
dispinterface in             procedure unit
div           inherited      program   until
do            initialization property  uses
downto        inline         raise     var
else          interface      record    while
end           is             repeat    with
                                       xor

Стандартные директивы первоначально связаны с некоторыми стандартными объявлениями в программе. К ним относятся:

absolute  export     pascal      requires
abstract  external   private     public
assembler far        protected   safecall
automated forward    near        read
cdecl     implements published   readonly
contains  index      override    resident
default   message    package     stdcall
dispid    name       register    stored
dynamic   nodefault  reintroduce virtual
write     writeonly

Типы - это специальные конструкции языка, которые рассматриваются компилятором как образцы для создания других элементов программы, таких как переменные, константы и функции.

Основные типы данных

К основным типам данных языка Delphi относятся:

  • целые числа (integer);
  • дробные числа (real);
  • символы (char);
  • строки (string);
  • логический тип (boolean).

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


Примечание

В версиях Delphi 4 и 5 тип Real эквивалентен типу Double. Если требуется (в целях совместимости) использовать 6-байтный Real, нужно указать директиву компилятора {SREALCOMPATIBILITY ON}.

Массивы

Массивы в 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 [ ДлинаСтроки ].

Операции

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

  • not - логическое НЕ;
  • and - логическое И;
  • or - логическое ИЛИ;
  • xor - исключительное ИЛИ.

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

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

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

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

Составной оператор

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

Ссылки

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
98K
06 октября 2016 года
Olga Doroshkevich
0 / / 06.10.2016
+2 / -2
Мне нравитсяМне не нравится
6 октября 2016, 17:35:35
спасибо
2.
79K
20 декабря 2011 года
it-log
0 / / 20.12.2011
+6 / -1
Мне нравитсяМне не нравится
20 декабря 2011, 14:40:30
спасибо за статью!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог