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 - это язык 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);
Идентификаторы и ключевые слова
Идентификаторы служат в качестве имен программ, модулей, процедур, функций, типов, переменных и констант. Идентификатором считается любая последовательность латинских букв или цифр, начинающаяся с буквы. Буквой считается также символ подчеркивания _.
Например, a1, _h, b123 - идентификаторы, а 1a, ф2 - нет.
С каждым идентификатором связана область действия идентификатора.
Следующие слова являются ключевыми, служат для оформления конструкций языка и не могут использоваться как идентификаторы:
and array as auto begin case class const constructor destructor div do downto else end event except file final finalization finally for foreach function goto if implementation in inherited initialization interface is label lock mod nil not of operator or procedure program property raise record repeat set shl shr sizeof template then to try type typeof until uses using var where while with xor
Ряд слов является контекстно ключевыми (они являются ключевыми только в некотором контексте):
abstract default external forward internal on overload override params private protected public read reintroduce unit virtual write
Контекстно ключевые слова могут использоваться в качестве имен.
Некоторые ключевые слова совпадают с важнейшими именами платформы .NET. Поэтому в PascalABC.NET предусмотрена возможность использовать эти имена без конфликтов с ключевыми словами.
Первый способ состоит в использовании квалифицированного имени. Например:
var a: System.Array;
В этом контексте слово Array является именем внутри пространства имен System, и конфликта с ключевым словом array нет.
Второй способ состоит в использовании специального символа & перед именем. В этом случае имя может совпадать с ключевым словом. Например:
uses System;
var a: &Array;
Комментарии
Комментарии - это участки кода, игнорируемые компилятором и используемые программистом для пояснения текста программы.