- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Описание языка PascalABC.NET - W Cat
Шрифт:
Интервал:
Закладка:
end.
первый раз выводится False, второй - True.
Операции is и as используются для работы с переменной базового класса, содержащей объект производного класса.
1 способ.
if b is Derived then
Derived(b).p;
2 способ.
var d: Derived := b as Derived;
d.p;
Операция new
Операция new имеет вид:
new ИмяКласса(ПараметрыКонструктора)
Она вызывает конструктор класса ИмяКласса и возвращает созданный объект.
Например:
type
My = class
constructor Create(i: integer);
begin
end;
end;
var m: My := new My(5);
Эквивалентным способом создания объекта является вызов конструктора в стиле Object Pacal:
var m: My := My.Create(5);
Создание объекта класса при инициализации переменной проще проводить, используя автоопределение типа:
var m := new My(5);
В записи также могут быть определены конструкторы, которые вызываются аналогично. Но в отличие от класса вызов конструктора записи не выделяет память (она уже выделена) и только заполняет значения полей.
Операции typeof и sizeof
Операция sizeof(имя типа) возвращает для этого типа его размер в байтах.
Операция typeof(имя типа) возвращает для этого типа объект класса System.Type. Приведем пример использования typeof:
type
Base = class ... end;
Derived = class(Base) ... end;
var b: Base := new Derived;
begin
writeln(b.GetType = typeof(Derived));
end.
Операция явного приведения типов
Операция явного приведения типов имеет вид
ИмяТипа(выражение)
и позволяет преобразовать выражение к типу ИмяТипа. Тип выражения и тип с именем ИмяТипа должны оба принадлежать либо к порядковому типу, либо к типу указателя, либо один тип должен быть наследником другого, либо тип выражения должен поддерживать интерфейс с именем ИмяТипа. В случае указателей запрещено преобразовывать типизированный указатель к типу указателя на другой тип.
Пример.
type
pinteger = ^integer;
Season = (Winter,Spring,Summer,Autumn);
var i: integer;
b: byte;
p: pointer := @i;
s: Season;
begin
i := integer('z');
b := byte(i);
i := pinteger(p);
s := Season(1);
end.
При приведении размерных типов к типу Object происходит упаковка.
Пример.
var i: integer := 5;
begin
var o: Object := Object(i);
end.
Приоритет операций
Приоритет определяет порядок выполнения операций в выражении. Первыми выполняются операции, имеющие высший приоритет. Операции, имеющие одинаковый приоритет, выполняются слева направо.
Таблица приоритетов операций
@, not, ^, +, - (унарные), new
1 (наивысший)
*, /, div, mod, and, shl, shr, as, is
2
+, - (бинарные), or, xor
3
=, <>, <, >, <=, >=, in, =
4 (низший)
Для изменения порядка выполнения операций в выражениях используются скобки.
Операторы
Операторы: обзор
В PascalABC.NET определены следующие операторы.
Операторы присваивания
Составной оператор
Оператор описания переменной
Оператор цикла for
Оператор цикла foreach
Операторы цикла while и repeat
Условный оператор if
Оператор выбора варианта case
Оператор вызова процедуры
Оператор try except
Оператор try finally
Оператор raise
Операторы break, continue и exit
Оператор goto
Оператор lock
Оператор with
Пустой оператор
Оператор присваивания
Оператор присваивания имеет вид:
переменная := выражение
В качестве переменной может быть простая переменная, разыменованный указатель, переменная с индексами или компонент переменной типа запись. Символ := называется значком присваивания. Выражение должно быть совместимо по присваиванию с переменной.
Оператор присваивания заменяет текущее значение переменной значением выражения.
Например:
i := i + 1; // увеличивает значение переменной i на 1
В PascalABC.NET определены также операторы присваивания со значками +=, -=, *=, /=. Для числовых типов действие данных операторов описано здесь. Кроме того, использование операторов += и *= для строк описано здесь и операторов +=, -= и *= для множеств - здесь. Их действие для процедурных переменных описано здесь.
Операторы +=, -=, *=, /= имеют следующий смысл: a #= b означает a := a # b, где # - знак операции +, -, *, /.
Например:
a += 3; // увеличить a на 3
b *= 2; // увеличить b в 2 раза
Опертор /= неприменим, если выражение слева - целое.
Операторы +=, -=, *=, /= могут также использоваться со свойствами классов соответствующих типов в левой части.
Составной оператор (блок)
Составной оператор предназначен для объединения нескольких операторов в один. Он имеет вид:
begin
операторы
end
В PascalABC.NET составной оператор также называется блоком. (традиционно в Паскале блоком называется раздел описаний, после которого идет составной оператор; в PascalABC.NET принято другое решение, поскольку можно описывать переменные непосредственно внутри составного оператора).Операторы отделяются один от другого символом ";". Ключевые слова begin и end, окаймляющие операторы, называются операторными скобками.
Например:
s := 0;
p := 1;
for var i:=1 to 10 do
begin
p := p * i;
s := s + p
end
Перед end также может ставиться ;. В этом случае считается, что последним оператором перед end является пустой оператор, не выполняющий никаких действий.
Помимо операторов, в блоке могут быть внутриблочные описания переменных:
begin
var a,b: integer;
var r: real;
readln(a,b);
x := a/b;
writeln(x);
Пустой оператор
Пустой оператор не включает никаких символов, не выполняет никаких действий и используется в двух случаях:
1. Для использования символа ; после последнего оператора в блоке:
begin
a := 1;
b := a;
end
Поскольку в языке Паскаль символ ; разделяет операторы, то в приведенном выше коде считается, что после последней ; находится пустой оператор. Таким образом, ; перед end в блоке можно либо ставить, либо нет. 1. Для пометки места, следующего за последним оператором в блоке::
label a;
begin
goto a;
x := 1;
a:
end
Условный оператор
Условный оператор имеет полную и краткую формы.
Полная форма условного оператора выглядит следующим образом:
if условие then оператор1
else оператор2
В качестве условия указывается некоторое логическое выражение. Если условие оказывается истинным, то выполняется оператор1, в противном случае выполняется оператор2. Краткая форма условного оператора имеет вид:
if условие then оператор
Если условие оказывается истинным, то выполняется оператор, в противном случае происходит переход к следующему оператору программы.
В случае конструкции вида
if условие1 then
if условие2 then оператор1
else оператор2
else всегда относится к ближайшему предыдущему оператору if, для которого ветка else еще не указана. Если в предыдущем примере требуется, чтобы else относилась к первому оператору if, то необходимо использовать составной оператор:
if условие1 then
begin
if условие2 then оператор1
end
else оператор2
Например:
if a<b then
min := a
else min := b;
Оператор описания переменной
В PascalABC.NET можно описывать переменные внутри составного оператора begin-end в специальном операторе описания переменной. Такие описания называются внутриблочными.
Внутриблочное описание имеет одну из форм:
список имен: тип;
или
имя: тип := выражение;
или
имя: тип = выражение; // Для совместимости с Delphi

