My-library.info
Все категории

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

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе W Cat - Описание языка PascalABC.NET. Жанр: Детская образовательная литература издательство неизвестно, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Описание языка PascalABC.NET
Автор
Издательство:
неизвестно
ISBN:
нет данных
Год:
неизвестен
Дата добавления:
13 февраль 2019
Количество просмотров:
259
Читать онлайн
W Cat - Описание языка PascalABC.NET

W Cat - Описание языка PascalABC.NET краткое содержание

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

Описание языка PascalABC.NET читать онлайн бесплатно

Описание языка PascalABC.NET - читать книгу онлайн бесплатно, автор W Cat

type pinteger = ^integer;

var p: ^record r,i: real end;

Бестиповой указатель описывается с помощью слова pointer.

Для доступа к ячейке памяти, адрес которой хранит типизированный указатель, используется операция разыменования ^:

var

i: integer;

pi: ^integer;

...

pi := @i; // указателю присвоили адрес переменной i

pi^ := 5; // переменной i присвоили 5

Операция разыменования не может быть применена к бестиповому указателю.

Типизированный указатель может быть неявно преобразован к бестиповому:

var

p: pointer;

pr: ^real;

...

p := pr;

Обратное преобразование также может быть выполнено неявно:

pr := p;

pr^ := 3.14;

Указатели можно сравнивать на равенство (=) и неравенство (<>). Для того чтобы отметить тот факт, что указатель никуда не указывает, используется стандартная константа nil (нулевой указатель) : p := nil.

Внимание! Ввиду особенностей платформы .NET тип T типизированного указателя не должен быть ссылочным или содержать ссылочные типы на каком-то уровне (например, запрещены указатели на записи, у которых одно из полей имеет ссылочный тип). Причина такого ограничения проста: указатели реализуются неуправляемым кодом, который не управляется сборщиком мусора. Если в памяти, на которую указывает указатель, содержатся ссылки на управляемые переменные, то они становятся недействительными после очередной сборки мусора. Исключение составляют динамические массивы и строки, обрабатываемые особым образом. То есть, можно делать указатели на записи, содержащие в качестве полей строки и динамические массивы.

Последовательности

Последовательность - это набор данных, которые можно перебрать один за другим в некотором порядке. К разновидностям последовательностей относятся одномерные динамические массивы array of T, списки List<T>, двусвязные списки LinkedList<T>, множества HashSet<T> и SortedSet<T>.

Тип последовательности конструируется следующим образом:

sequence of тип элементов

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

Тип sequence of T является синонимом типа .NET System.Collections.Generic.IEnumerable<T>, а последовательность - синонимом объекта типа, поддерживающего интерфейс System.Collections.Generic.IEnumerable<T>.

Инициализация последовательности

Последовательность инициализируется с помощью стандартных функций Seq, SeqGen, SeqFill, SeqWhile, SeqRandom, SeqRandomReal, ReadSeqInteger, ReadSeqReal, ReadSeqString. Например:

var s: sequence of integer;

s := Seq(1,3,5);

s.Println;

s := SeqGen(1,x->x*2,10);

writeln(s);

Хранение последовательности

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

Таким образом, в коде

var s := SeqFill(1,10000000);

writeln(s.Sum());

основное время выполнения будет занимать вторая строка, а выполнение первой строки будет сводиться лишь к запоминанию алгоритма генерации последовательности в переменной s.

Соединение последовательностей

Две последовательности одного типа могут быть соединены операцией +, при этом вторая последовательность дописывается в конец первой. Например:

Seq(1,2,3) + Seq(5,6,7)

Seq(1,2,3) + Arr(5,6,7)

Кроме того, к последовательности некоторого типа можно присоединить операцией + значение этого типа как первый или последний элемент последовательности, например:

Seq(1,2,3) + 5

3 + Seq(5,6,7)

3 + Seq(5,6,7) + 9

Операция + является сокращённым вариантом операции Concat.

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

Элементы последовательности можно обойти с помощью цикла foreach:

foreach var x in s do

if x>2 then

Print(x);

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

Переменной типа последовательность с элементами типа T можно присвоить одномерный массив array of T, список List<T>, двусвязный список LinkedList<T>, множество HashSet<T> или SortedSet<T>, а также объект любого класса, поддерживающего интерфейс System.Collections.Generic.IEnumerable<T>.

Стандартные функции и методы

Для последовательностей доступны многочисленные методы обработки последовательностей.

Для последовательностей доступны также стандартные функции обработки последовательностей.

Записи

Описание записей

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

record

описания полей

end

где описания полей имеет такой же вид, что и раздел описания переменных без ключевого слова var.

Например:

type

Person = record

Name: string;

Age: integer;

end;

Переменные типа запись

Переменные типа запись хранят в непрерывном блоке памяти значения всех полей записи.

Для доступа к полям записей используется точечная нотация:

var p: Person;

begin

p.Name := 'Иванов';

p.Age := 20;

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

end.

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

Методы и модификаторы доступа для записей

В PascalABC.NET внутри записей допустимо определять методы и свойства, а также использовать модификаторы доступа. Таким образом, описание записи в PascalABC.NET имеет вид:

record

секция1

секция2

...

end

Каждая секция имеет вид:

модификатор доступа

описания полей

объявления или описания методов и описания свойств

Модификатор доступа в первой секции может отсутствовать, в этом случае подразумевается модификатор public (все члены открыты).

Например:

type

Person = record

private

Name: string;

Age: integer;

public

constructor Create(Name: string; Age: integer);

begin

Self.Name := Name;

Self.Age := Age;

end;

procedure Print;

end;

procedure Person.Print;

begin

writelnFormat('Имя: {0} Возраст: {1}', Name, Age);

end;

Как и в классах, методы могут описываться как внутри, так и вне тела записи. В примере выше конструктор описывается внутри записи, а метод Print объявляется внутри, а описывается вне тела записи. Метод-конструктор всегда имеет имя Create и предназначен для инициализации полей записи.

Инициализация записей

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

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

var p: 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;

...

var p: 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


W Cat читать все книги автора по порядку

W Cat - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


Описание языка PascalABC.NET отзывы

Отзывы читателей о книге Описание языка PascalABC.NET, автор: W Cat. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.