W Cat - Описание языка PascalABC.NET

Здесь есть возможность читать онлайн «W Cat - Описание языка PascalABC.NET» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, Детская образовательная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Описание языка PascalABC.NET: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Описание языка PascalABC.NET»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и содержит все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования.
PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.
PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.

Описание языка PascalABC.NET — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Описание языка PascalABC.NET», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
Инициализация записей

При описании переменной или константы типа запись можно использовать инициализатор записи (как и в Delphi Object Pascal):

constp: Person = (Name: 'Петрова'; Age: 18);

varp: Person := (Name: 'Иванов'; Age: 20);

Конструкторы для записей имеют тот же синтаксис, что и для классов. Однако, в отличие от классов, вызов конструктора записи не создает новый объект в динамической памяти, а только инициализирует поля записи:

var p: Person := new Person('Иванов',20);

Более традиционно в записи определяется обычный метод-процедура, традиционно с именем Init, инициализирующая поля записи:

type

Person = record

...

public

procedure Init(Name: string; Age: integer);

begin

Self.Name := Name;

Self.Age := Age;

end;

...

end;

...

varp: Person;

p.Init('Иванов',20);

В системном модуле определена также функция Rec, которая создает переменную типа запись на лету:

var p := Rec('Иванов',20);

Println(p); // (Иванов,20)

Тип этой записи - безымянный. Поля данной записи автоматически именуются Item1, Item2 и т.д.:

Println(p.Item1, p.Item2); // Иванов 20

Отличие записей от классов

Список отличий между записями и классами приводятся ниже:

* Запись представляет собой размерный тип (переменные типа запись располагаются на стеке).

* Записи нельзя наследовать; от записей также нельзя наследовать (отметим, что записи, тем не менее, могут реализовывать интерфейсы). В .NET тип записи неявно предполагается наследником типа System.ValueType и реализуется struct-типом.

* Если в записи не указан модификатор доступа, то по умолчанию подразумевается модификатор public (все члены открыты), а в классе - internal.

Вывод переменной типа запись

По умолчанию процедура write для переменной типа запись выводит содержимое всех её публичных свойств и полей в круглых скобках через запятую. Чтобы изменить это поведение, в записи следует переопределить виртуальный метод ToString класса Object - в этом случае именно он будет вызываться при выводе объекта.

Например:

type

Person = record

...

functionToString: string; override;

begin

Result := string.Format('Имя: {0} Возраст: {1}', Name, Age);

end;

end;

...

varp: Person := new Person('Иванов',20);

writeln(p); // Имя: Иванов Возраст: 20

Присваивание и передача в качестве параметров подпрограмм

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

d2 := d1;

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

Во избежание копирования те записи, которые содержат несколько полей, передаются в подпрограммы по ссылке. Если запись не меняется внутри подпрограммы, то используют ссылку на константу, если меняется - то ссылку на переменную:

procedure PrintPerson(const p: Person);

begin

Print(p.Name, p.Age);

end;

procedure ChangeName(var p: Person; NewName: string);

begin

p.Name := Name;

end;

Сравнение на равенство

Записи одного типа можно сравнивать на равенство, при этом записи считаются равными если значения всех полей совпадают:

type Person = record

name: string;

age: integer;

end;

var p1,p2: Person;

begin

p1.age := 20;

p2.age := 20;

p1.name := 'Ivanov';

p2.name := 'Ivanov';

writeln(p1=p2); // True

end.

Замечание

В отличие от Delphi Object Pascal, в PascalABC.NETотсутствуют записи с вариантами.

Множества

Множество представляет собой набор элементов одного типа. Элементы множества считаются неупорядоченными; каждый элемент может входить во множество не более одного раза. Тип множества описывается следующим образом:

set ofбазовый тип

В качестве базового может быть любой тип, в том числе строковый и классовый.

Например:

type

ByteSet = set ofbyte;

StringSet = set ofstring;

Digits = set of'0'..'9';

SeasonSet = set of(Winter,Spring,Summer,Autumn);

PersonSet = set ofPerson;

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

Переменная типа множество может содержать несколько значений базового типа. Чтобы сконструировать значение типа множество, используется конструкция вида

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Описание языка PascalABC.NET»

Представляем Вашему вниманию похожие книги на «Описание языка PascalABC.NET» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Catie Disabato - The Ghost Network
Catie Disabato
Отзывы о книге «Описание языка PascalABC.NET»

Обсуждение, отзывы о книге «Описание языка PascalABC.NET» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x