Платформа Microsoft.NET обеспечивает PascalABC.NET стандартной библиотекой, состоящей из огромного количества класссов для решения практически любых задач: от алгоритмических до прикладных. Именно поэтому в PascalABC.NET отсутствует необходимость в разработке большого числа собственных модулей.
Собственные модули, которые имеются в PascalABC.NET, ориентированы именно на начальное обучение программированию.
Для обучения программированию школьников реализованы модули классических школьных исполнителей Робот и Чертежник, содержащие около двухсот автоматически проверяемых заданий на основные конструкции языка программирования.
Кроме этого, среда PascalABC.NET содержит модуль электронного задачника Programming Taskbook (автор Абрамян М.Э.), позволяющий осуществлять автоматическую постановку и проверку заданий. Имеются также модули для преподавателя, позволяющие создавать задания для исполнителей Робот, Чертежник и электронного задачника.
Модуль растровой графики GraphABC и модуль векторных графических объектов ABCObjects могут быть использованы для создания простейших графических. а также интерактивных анимационных приложений, управляемых событиями.
Следует также отметить студенческие модули: модуль Collections упрощенных коллекций, модуль Arrays для простейших операций с динамическими массивами и модуль Forms для ручного создания простых приложений с оконным пользовательским интерфейсом.
Отличия языка PascalABC.NET от Delphi
Добавлено
1. Операции += -= для событий .NET и для процедурных переменных.
2. Операции += -= *= для целых и += -= *= /= для вещественных.
3. Операция += для строк.
4. Подпрограммы с переменным числом параметров.
5. Операция new для вызова конструктора (ident := new type_name(params);).
6. Операция new для создания динамического массива.
7. Операция typeof.
8. Тип sequence of T.
9. Использование uses для подключения пространств имен .NET (реализовано в Delphi Prism).
10. Вид доступа internal (наряду с public, private, protected).
11. Инициализация переменных: var a: integer := 1;
12. Инициализация переменных: var a := 1;
13. Объявление локальных переменных в блоке.
14. Объявление параметра цикла в заголовке цикла: for var i := 1 to 10 do, foreach var x in a do.
15. Оператор lock, обеспечивающий синхронизацию потоков.
16. Методы в записях.
17. Инициализаторы полей в классах и записях.
18. Обобщенные классы (generics).
19. Реализованы типизированные файлы (в отличие от Delphi Prism, где они убраны).
20. Упрощенный синтаксис модулей.
21. Описание методов внутри интерфейса класса или записи.
22. Реализация записью интерфейса.
23. Методы расширения.
24. Лямбда-выражения.
Изменено
1. Только сокращенное вычисление логических выражений.
2. Другой синтаксис foreach.
3. Интерфейсы interface в стиле .NET.
4. Другой синтаксис перегрузки операций.
5. Статические методы классов вместо классовых методов. Отсутствие типа TClass.
6. Деструкторы оставлены лишь для совместимости и не выполняют никаких действий.
7. Тип object - синоним System.Object.
8. Тип exception - синоним System.Exception.
9. Индексация string с 1, директива переключения на индексацию с 0.
10. Процедура write выводит любые типы.
11. Структурная эквивалентность типов для процедурных переменных, динамических массивов, типизированных указателей и множеств (в Delphi Object Pascal - именная эквивалентность типов за исключением открытых массивов).
12. Множества на базе произвольных типов (set of string).
13. Запрет использования указателей на управляемую память.
14. Процедурные переменные (делегаты) вместо procedure of object.
15. С бестиповыми файлами file можно работать с помощью процедур read, write.
16. Массивы массивов отличаются по типу от двумерных массивов (в частности, записи a[i][j] и a[i,j] неэквивалентны).
17. Перегрузка выполняется без ключевого слова overload.
18. Все конструкторы имеют имя Create.
19. Автоматическое управление памятью с помощью сборщика мусора (за исключением указателей на неуправляемую память).
Отсутствует
1. Ключевые слова и директивы packed threadvar inline asm exports library unsafe resourcestring dispinterface in out absolute dynamic local platform requires abstract export message resident assembler safecall automated far near stdcall cdecl published stored contains implements varargs default deprecated package register dispid pascal writeonly и связанные с ними возможности.
2. Приведение типов для переменных: Char(b) := 'd'.
3. Возможность присвоить адрес подпрограммы указателю pointer.
4. Записи с вариантами.
5. Строки PChar.
6. Возможность использовать операцию @ для процедурных переменных.
7. Вариантные типы.
8. Бестиповые параметры (var a; const b).
9. Открытые массивы (не путать с динамическими!).
10. Методы, связанные с сообщениями (message).
11. Классовые свойства.
12. Вложенные определения классов.
13. Константы-поля классов.
Описание языка PascalABC.NET
Язык программирования PascalABC.NET - это язык Pascal нового поколения, включающий в себя все возможности стандартного языка Pascal, расширения языка Delphi Object Pascal, ряд собственных расширений, а также ряд возможностей, обеспечивающих его совместимость с другими .NET-языками. PascalABC.NET является мультипарадигменным языком - на нем можно программировать в различных стилях: структурное программирование, объектно-ориентированное программирование, функциональное программирование.
Кроме того, наличие большого количества стандартных .NET-библиотек классов формирует стиль, ощутимо отличающийся от стиля стандартного Pascal.
Данный раздел содержит описание языка PascalABC.NET.
Основы
* Структура программы
* Типы данных
* Выражения и операции
* Область действия идентификатора
Операторы
* Операторы присваивания
* Составной оператор
* Оператор описания переменной
* Оператор цикла for
* Оператор циклаforeach
* Операторы цикла while и repeat
* Условный оператор if
* Оператор выбора варианта case
* Оператор вызова процедуры
* Оператор try except
* Оператор try finally
* Оператор raise
* Операторы break, continue и exit
* Оператор goto
* Оператор lock
* Оператор with
* Пустой оператор
Структурное программирование
* Процедуры и функции
* Модули
* Библиотеки dll
* Документирующие комментарии
Объектно-ориентированное программирование
* Обзор классов и объектов
* Наследование
* Полиморфизм
* Обобщенные типы
* Анонимные классы
* Автоклассы
* Обработка исключений
* Методы расширения
* Интерфейсы
* Атрибуты (в разработке)
Элементы функционального программирования
* Лямбда-выражения
* Захват переменных
* Последовательности
* Методы последовательностей
Стандартные модули
* Системный модуль PABCSystem
Дополнительные вопросы
* Open MP
* Управление памятью
* Директивы компилятора
Структура программы: обзор
Программа содержит ключевые слова, идентификаторы, комментарии. Ключевые слова используются для выделения синтаксических конструкций и подсвечиваются жирным шрифтом в редакторе. Идентификаторы являются именами объектов программы и не могут совпадать с ключевыми словами.
Программа на языке PascalABC.NET имеет следующий вид:
program имя программы;
раздел uses
раздел описаний
begin
операторы
end.
Первая строка называется заголовком программы и не является обязательной.
Раздел uses начинается с ключевого слова uses, за которым следует список имен модулей и пространств имен .NET, перечисляемых через запятую.
Раздел описаний может включать следующие подразделы:
* раздел описания переменных
* раздел описания констант
* раздел описания типов
* раздел описания меток
* раздел описания процедур и функций
Данные подразделы следуют друг за другом в произвольном порядке.
Далее следует блок begin/end, внутри которого находятся операторы, отделяемые один от другого символом точка с запятой. Среди операторов может присутствовать оператор описания переменной, который позволяет описывать переменные внутри блока.
Раздел uses и раздел описаний могут отсутствовать.
Например:
program MyProgram;
var
a,b: integer;
x: real;
begin
readln(a,b);
x := a/b;
writeln(x);
или
uses GraphABC;
begin
var x := 100;
var y := 100;
var r := 50;
Circle(x,y,r);
Идентификаторы и ключевые слова
Идентификаторы служат в качестве имен программ, модулей, процедур, функций, типов, переменных и констант. Идентификатором считается любая последовательность латинских букв или цифр, начинающаяся с буквы. Буквой считается также символ подчеркивания _.