Читаем Описание языка PascalABC.NET полностью

p1 += mult2;

p1 += add3;

forall(a,p1);

Подпрограммы в этом случае вызываются в порядке прикрепления: вначале умножение, потом сложение.

Отсоединение неприкрепленных подпрограмм не выполняет никаких действий:

p1 -= print;

Кроме того, к процедурной переменной можно прикреплять/откреплять классовые и экземплярные методы классов. В последнем случае процедурная переменная в полях объекта запоминает некоторое состояние, которое меняется между вызовами метода, связанного с этой процедурной переменной.

Пример

type

A = class

x0: integer := 1;

h: integer := 2;

procedure PrintNext;

begin

Print(x0);

x0 *= h;

end;

end;

begin

var p: procedure;

var a1 := new A();

p := a1.PrintNext;

for var i:=1 to 10 do

p;

// 1 2 4 8 16 32 64 128 256 512

end.

Подобное поведение гораздо проще реализовать с помощью захвата переменной лямбда-выражением:

begin

var x0 := 1;

var p: Action0 := procedure -> begin Print(x0); x0 *= 2 end;

for var i:=1 to 10 do

p;

end.

<p>Файловые типы</p>

Файл представляет собой последовательность элементов одного типа, хранящихся на диске. В PascalABC.NET имеется два типа файлов - двоичные и текстовые. Текстовые файлы хранят символы, разделенные на строки символами #13#10 (Windows) и символом #10 (Linux). Последовательность символов для перехода на новую строку хранится в константе NewLine. Двоичные файлы в свою очередь делятся на типизированные и бестиповые.

Для описания текстового файла используется стандартное имя типа text, бестиповые файлы имеют тип file, а для описания типизированного файла используется конструкция file of тип элементов:

var

f1: file of real;

f2: text;

f3: file;

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

Стандартные файловые процедуры и функции описываются в пункте Процедуры и функции для работы с файлами.

Кроме того, в .NET имеется ряд классов, связанных с работой с файлами.

<p>Эквивалентность и совместимость типов</p>Совпадение типов

Говорят, что типы T1 и T2 совпадают, если они имеют одно имя либо же определены в секции type в виде T1 = T2. Таким образом, в описаниях

type

IntArray = array [1..10] of integer;

IntArrayCopy = IntArray;

var

a1: IntArray;

a2: IntArrayCopy;

b1,c1: array [1..15] of integer;

b2: array [1..15] of integer;

переменные a1 и a2 и переменные b1 и c1 имеют один и тот же тип, а переменные b1 и b2 - разные типы.

Эквивалентность типов

Говорят, что типы T1 и T2 эквивалентны, если выполняется одно из следующих условий:

* T1 и T2 совпадают

* T1 и T2 - динамические массивы с совпадающими типами элементов

* T1 и T2 - указатели с совпадающими базовыми типами

* T1 и T2 - множества с совпадающими базовыми типами

* T1 и T2 - процедурные типы с совпадающим списком формальных параметров (и типом возвращаемого значения - для функций)

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

Только если типы T1 и T2 эквивалентны, фактический параметр типа T1 может быть подставлен вместо формального параметра-переменной типа T2.

Совместимость типов

Говорят, что типы T1 и T2 совместимы, если выполняется одно из следующих условий:

* T1 и T2 эквивалентны

* T1 и T2 принадлежат к целым типам

* T1 и T2 принадлежат к вещественным типам

* Один из типов - поддиапазон другого или оба - поддиапазоны некоторого типа

* T1 и T2 - множества с совместимыми базовыми типами

Совместимость типов по присваиванию

Говорят, что значение типа T2 можно присвоить переменной типа T1 или тип T2 совместим по присваиванию с типом T1, если выполняется одно из следующих условий:

* T1 и T2 совместимы

* T1 - вещественного типа, T2 - целого

* T1 - строкового типа, T2 - символьного

* T1 - pointer, T2 - типизированный указатель

* T1 - указатель или процедурная переменная, T2=nil

* T1 - процедурная переменная, T2 - имя процедуры или функции с соответствующим списком параметров

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных