Уроки, Туториалы, Мануалы со всего света!

На этом форуме, будет находится огромное количество уроков и мануалов, сделайте небольшой вклад, и опубликуйте хотя бы один урок.
Текущее время: 19-05, 13:28

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 19-12, 03:54 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 13-12, 03:24
Сообщения: 89
Откуда: Украинос!
Идентификаторы и служебные слова
Идентификаторы служат в качестве имен программ, модулей, процедур, функций, типов, переменных и констант. Идентификатором считается любая последовательность латинских букв или цифр, начинающаяся с буквы. Буквой считается также символ подчеркивания "_".
Например, a1, _h, b123 - идентификаторы, а 1a, ф2 - нет.
Служебные слова служат для оформления конструкций языка и не могут быть использованы в качестве имен.

Список всех служебных слов языка Pascal приведен ниже:

    and array as begin break case class const constructor continue destructor div
    do downto else end exit external externalsync file finalization for forward function
    if in inherited initialization is mod not of or private procedure program property
    protected public record repeat set sh shr sizeof string then to type unit until
    uses var while with xor

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

Выражения и операции
Любое выражение имеет определенный тип и после вычисления возвращает некоторое значение. Простейшими выражениями являются переменные и константы. Более сложные выражения строятся из более простых с использованием операций, скобок, вызовов функций, индексов и приведений типов. Данные, к которым применяются операции, называются операндами.
    В Pascal имеются следующие операции: @, not, ^, *, /, div, mod, and, shl, shr, +, -, or, xor, =, >, <, <>, <и>=.


Арифметические операции

К арифметическим относятся бинарные операции + - * / для вещественных и целых чисел, бинарные операции div и mod для целых чисел и унарные операции + и - для вещественных и целых чисел. Выражение, имеющее числовой тип, называется арифметическим. Тип арифметического выражения определяется по следующему правилу: если все операнды целые и в выражении отсутствует операция деления /, то выражение имеет тип integer, в противном случае выражение имеет тип real. Например, если b имеет тип byte, c имеет тип 1..9, то b+c и -b имеют тип integer, а 2.0+b и 1/2 - тип real.

Логические операции

К логическим относятся бинарные операции and, or и xor, а также унарная операция not, имеющие операнды типа boolean и возвращающие значение типа boolean. Выражение, имеющее тип boolean, называется логическим.

Операции отношения

Операции отношения <, >, <=, >=, =, <> возвращают значение типа boolean и применяются к операндам целого, вещественного, символьного, логического и строкового типов, а также к типизированным указателям. Операции = и <> также применяются к операндам типа pointer, к операндам, являющихся объектами классов и к константе nil. При сравнении символа и строки символ преобразуется в строку длины 1.

Побитовые операции
Побитовые операции and, or, not, xor, shl, shr производят побитовые манипуляции с операндами целого типа. Для унарной операции not результат имеет тот же тип, что и операнд. Для остальных операций результат имеет тип integer. Например, если b имеет тип byte и b=1, то b shl 10=1024, а not b=254.

Строковые операции
Помимо операций отношения <, >, <=, >=, =, <>, к строковым и символьным операндам применима операция конкатенации (слияния) +. Ее результат имеет строковый тип. Например, 'a'+'b'='ab'. Поскольку строки могут содержать максимум 255 символов, то если сливаются строки суммарной длины больше 255, то программа завершается сообщением об ошибке.
Операция @
Операция @ применяется к переменной и возвращает ее адрес.
Операции с указателями
К типизированным указателям применима операция разыменования ^: если p является указателем на тип T, то p^ - элемент типа T, на который указывает p.
Помимо операций отношения <, >, <=, >=, =, <>, к типизированным указателям применимы арифметические операции + и -.
Операция + применяется к типизированному указателю и целому числу: если p имеет тип ^T и указывает на элемент a[k] одномерного массива элементов типа T, i - целое, то p+i возвращает адреc элемента a[k+i]. Операция - применяется к двум типизированным указателям одного типа: если p1 и p2 указывают на элементы одномерного массива элементов типа T, то p2-p1 возвращает количество элементов между этими указателями (взятое со знаком -, если адрес в p2 меньше адреса в p1). Например:
Код:
var
a: array [1..10] of integer;
p: ^integer;
begin
p:=@a[1];
for i:=1 to 10 do
begin
p^:=i;
p:=p+1;
end;


Операции с множествами
К множествам применимы операции + (объединение), - (разность) и * (пересечение):
Код:
var
s1,s2,s: set of byte;
begin
s1:=[1..4];
s2:=[2..5];
s:=s1+s2; // s=[1..5]
s:=s1-s2; // s=[1]
s:=s1*s2; // s=[2..4]

Код:
var
s1,s2,s: set of byte;
b: boolean;
begin
s1:=[1..4];
s2:=[2..5];
s:=[1,2];
b:=s1=s2; // b=False
b:=s2<>s; // b=True
b:=s<s2>=s; // b=True

Наконец, операция in определяет, принадлежит ли элемент множеству:
1 in [2..5] // False
3 in [2..5] // True


Приоритет операций
Приоритет определяет порядок выполнения операций в выражении. Первыми выполняются операции, имеющие высший приоритет. Операции, имеющие одинаковый приоритет, выполняются слева направо.
Таблица приоритетов операций
@, not, ^ 1 (наивысший)
*, /, div, mod, and, shl, shr 2
+, -, or, xor 3
=, <>, <, >, <=, >=, in 4 (низший)


Описание переменных и констант
Раздел описания переменных начинается со служебного слова var, после которого следуют строки вида
список имен переменных: тип;
Имена в списке перечисляются через запятую. Например:

Код:
var
a,b,c: integer;
d: real;
e,f: integer;
s,s1: string;
ch: char;

Раздел описания именованных констант начинается со служебного слова const, после которого следуют строки вида
имя константы = значение;
или
имя константы : тип = значение;
Например:
Код:
const
Pi = 3.14;
Count = 10;
Name = 'Mike';
DigitsSet = ['0'..'9'];
Arr: array [1..5] of integer = (1,3,5,7,9);
Rec: record name: string; age: integer end = (name: 'Иванов'; age: 23);
Arr2: array [1..2,1..2] of real = ((1,2),(3,4));

Выражения после знака равенства в последних трех строчках называются конструкторами констант-массивов и констант-записей и могут быть использованы только при описании типизированных констант.
Описание типов
Раздел описания типов начинается со служебного слова type, после которого следуют строки вида
имя типа = тип;
Например,
Код:
type
myint = integer;
arr10 = array [1..10] of integer;
pinteger = ^integer;
A = class
i: integer;
constructor Create(ii: integer);
begin
i:=ii;
end;
end;

При описании рекурсивных структур данных указатель на тип может фигурировать раньше описания самого типа в определении другого типа:
Код:
type
PNode = ^TNode;
TNode = record
data: integer;
next: PNode;
end;

При этом важно, чтобы определения обоих типов находились в одном разделе type.
Следующее описание, однако, ошибочно:

Код:
type
TNode = record
data: integer;
next: ^TNode;
end;

(сообщение об ошибке: "Тип TNode полностью не определен").

Область действия идентификатора
Основная программа, процедура и функция состоят из заголовка и блока. Блоком называется раздел описаний, после которого следуют операторы, заключенные в операторные скобки begin/end.
Любой используемый в блоке идентификатор должен быть предварительно описан. В одном блоке не может быть описано двух переменных, констант или типов с одним именем. В блоке, однако, может быть описано несколько процедур или функций с одним именем, но с разным набором параметров (это называется перегрузкой имен).
С точки зрения имен блок образует так называемое пространство имен - область в программе, в которой имя должно иметь единственное описание (исключение составляют перегруженные имена подпрограмм). Кроме блока, пространствами имен являются модули и классы.
Область действия идентификатора (т.е. место, где он может быть использован) простирается от момента описания до конца блока, в котором он описан. Область действия глобального идентификатора, описанного в модуле, простирается на весь модуль, а также на основную программу, к которой данный модуль подключен в разделе uses.
Идентификатор с тем же именем, определенный во вложенном пространстве имен, скрывает идентификатор, определенный во внешнем пространстве имен. Например, в коде
Код:
var i: integer;
procedure p;
var i: integer;
begin
i:=5;
end;

значение 5 будет присвоено переменной i, описанной в процедуре p; внутри же процедуры p сослаться на глобальную переменную i невозможно.
Аналогичная ситуация имеет место и в производных классах: в них можно определять поля с теми же именами, что и в базовых классах, но тогда ссылаться на поле базового класса из метода производного класса нельзя. Однако, можно ссылаться на метод базового класса из метода производного класса, используя служебное слово inherited:
Код:
type
A=class
i: integer;
procedure p;
begin
i:=5;
end;
end;
B=class(A)
i: integer;
procedure p;
begin
i:=5;
inherited p;
end;
end;

Алгоритм поиска имени в классе следующий. Вначале имя ищется в текущем классе, затем в его базовых классах, а если не найдено, то в глобальной области видимости.
Алгоритм поиска имени в глобальной области видимости при наличии нескольких подключенных модулей следующий. Вначале имя ищется в текущем модуле, затем, если не найдено, по цепочке подключенных модулей в порядке справа налево. Например, в программе
Код:
uses unit1,unit2;
begin
i:=2;
end.

_________________
Прочтите это одно правило, плиз :)
Большой мой вам совет!
Работа на дому
StimuL CompaNy
Turbo-Dizel


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by Forumenko © 2006–2014
Русская поддержка phpBB