Описание языка PascalABC.NET - W Cat
Шрифт:
Интервал:
Закладка:
Определять преамбулу к подгруппе имеет смысл только в случае, если с этой подгруппой связаны некоторые задания, входящие в определяемую группу. Если группа не содержит заданий, связанных с некоторой подгруппой, то преамбула этой подгруппы в html-описании не выводится.
Для определения преамбул предназначены следующие процедуры.
procedure CommentText(S: string);
Данная процедура добавляет содержимое строки S к текущей преамбуле, отделяя это содержимое от предыдущего текста преамбулы пробелом. В строке S можно использовать управляющие последовательности, обеспечивающие ее форматирование. Например, для перехода к новому абзацу преамбулы следует использовать последовательность P (управляющие последовательности чувствительны к регистру букв).
procedure UseComment(GroupName: string[; SubgroupName: string]);
Процедура UseComment добавляет к текущей преамбуле текст преамбулы подгруппы SubgroupName группы GroupName или, если параметр SubgroupName является пустой строкой или отсутствует, текст преамбулы самой группы GroupName. Этот текст отделяется от предыдущего текста преамбулы пробелом. Регистр символов в параметрах GroupName и SubgroupName может быть произвольным.
Если группа с именем GroupName не найдена или в ней отсутствует подгруппа SubgroupName, то процедура не выполняет никаких действий; сообщение об ошибке в этом случае не выводится.
Процедуры CommentText и UseComment должны вызваться после функции CreateGroup; при этом они определяют преамбулу данной группы. Для того чтобы они определяли преамбулу какой-либо подгруппы данной группы, перед их вызовом необходимо вызвать процедуру Subgroup, описываемую далее.
procedure Subgroup(SubgroupName: string);
Данная процедура устанавливает режим добавления текста к преамбуле подгруппы SubgroupName текущей группы. Этот режим сохраняется до следующего вызова данной процедуры или до завершения определения текущей группы заданий (определение группы, создаваемой в виде dll-файла, завершается при выходе из процедуры inittaskgroup).
Процедуру Subgroup можно вызывать несколько раз для одной и той же подгруппы, при этом ранее определенный текст преамбулы будет дополняться новыми данными. При вызове процедуры Subgroup с параметром -- пустой строкой устанавливается режим дополнения преамбулы группы (напомним, что этот режим устанавливается также сразу после вызова процедуры CreateGroup).
Константы и функции для определения текущего состояния задачникаconst
lgPascal = $0001;
lgVB = $0002;
lgCPP = $0004;
lg1C = $0040;
lgPython = $0080;
lgCS = $0100;
lgVBNET = $0200;
lgPascalNET = $0400;
lgJava = $10000;
lgWithPointers = $003D;
lgWithObjects = $FFF80;
lgNET = $FF00;
lgPascalABCNET = $0401;
lgAll = $FFFFFF;
Данные константы, совместно с описываемой далее функцией CurrentLanguage, позволяют определить язык программирования, на который в данный момент (т. е. в момент инициализации текущей группы заданий) настроен задачник. Константы lgPascal, lgVB, lgCPP, lgCS, lgVBNET, lgPascalABCNET, lg1C, lgPython, lgJava соответствуют конкретному языку из числа тех, которые доступны в текущей версии задачника (Pascal, Visual Basic, C++, C#, Visual Basic .NET, PascalABC.NET, 1С:Предприятие, Python, Java). Эти константы являются битовыми флагами. Константа lg1C появилась в версии 4.9 конструктора учебных заданий (в связи с реализацией комплекса PT for 1C -- варианта задачника для системы 1С:Предприятие), константа lgPython -- в версии 4.10 (в связи с реализацией варианта задачника для языка Python), константа lgJava -- в версии 4.11 (в связи с реализацией варианта задачника для языка Java).
Некоторые константы являются комбинациями битовых флагов (т. е. битовыми масками) и позволяют определить, к какой категории относится текущий язык:
lgAll -- любой язык, lgNET -- язык платформы .NET (языки C# и Visual Basic .NET), lgWithPointers -- язык, для которого можно разрабатывать группы заданий на обработку динамических структур с применением указателей (языки Pascal и C++), lgWithObjects -- язык, для которого можно разрабатывать группы заданий на обработку динамических структур с применением объектов (все языки платформы .NET, а также Python и Java). Особое место занимает язык, реализованный в системе PascalABC.NET, поскольку в нем объединяются свойства обычного языка Pascal и языка платформы .NET. Данному языку соответствует комбинация флагов lgPascal и lgPascalNET; это, в частности, означает, что он принадлежит одновременно к категориям lgWithPointers, lgWithObjects и lgNET. Для языка PascalABC.NET предусмотрена также именованная константа lgPascalABCNET.
function CurrentLanguage: integer;
Функция возвращает значение, соответствующее языку программирования, на который в данный момент настроен задачник. Помимо сравнения возвращаемого значения функции с константами, соответствующими конкретному языку, можно также использовать данную функцию для определения категории, к которой относится текущий язык программирования; в этом случае необходимо применять побитовые операции. Например, для проверки того, что текущий язык программирования относится к категории языков платформы .NET, достаточно проверить истинность следующего условия:
CurrentLanguage and lgNET <> 0
При использовании задачника совместно с системой PascalABC.NET функция CurrentLanguage возвращает значение lgPascalABCNET.
function CurrentLocale: string;
Функция возвращает строку, соответствующую текущей локали, т. е. текущему языку интерфейса, используемому в задачнике. В версии 4.11 конструктора учебных заданий возможными возвращаемыми значениями функции CurrentLocale являются 'ru' (русский вариант задачника) и 'en' (английский вариант).
function CurrentVersion: string;
Данная функция добавлена в версию 4.10 конструктора учебных заданий. Она возвращает номер текущей версии задачника в виде строки числа формата 'd.dd'. Например, в случае версии 4.11 возвращается строка '4.11'. Для версий, предшествующих версии 4.10, функция возвращает строку '4.00'.
Образцы слов и предложенийПриведенные ниже элементы конструктора PT4TaskMaker позволяют получить доступ к встроенным в него образцам текстовых исходных данных: словам (Word), предложениям (Sentence) и многострочным текстам (Text).
const
SampleError = '#ERROR?';
MaxLineCount = 50;
function WordCount: integer;
function SentenceCount: integer;
function TextCount: integer;
function WordSample(N: integer): string;
function SentenceSample(N: integer): string;
function TextSample(N: integer): string;
function EnWordCount: integer;
function EnSentenceCount: integer;
function EnTextCount: integer;
function EnWordSample(N: integer): string;
function EnSentenceSample(N: integer): string;
function EnTextSample(N: integer): string;
Функции WordSample, SentenceSample и TextSample возвращают текстовые данные, соответствующие текущей локали, т. е. текущему языку интерфейса, используемому в задачнике (см. функцию CurrentLocale): для русского варианта задачника возвращаются русские данные, для английского -- английские. Варианты этих функций, снабженные префиксом En, возвращают английские текстовые данные в любом варианте задачника.
Функции, оканчивающиеся словом Count, возвращают количество соответствующих элементов данных. В версии 4.11, конструктора учебных заданий, как и в его предыдущих версиях, доступно 116 слов, 61 предложение и 85 текстов как на русском, так и на английском языке.
Функции WordSample/EnWordSample и SentenceSample/EnSentenceSample возвращают соответственно слово или предложение с индексом N (индексирование проводится от 0).
Функция TextSample/EnTextSample возвращает строку, связанную с многострочным текстом, имеющим индекс N (индексирование также проводится от 0). При этом между соседними строками этого текста располагаются символы #13#10 (маркеры конца строки). В конце текста маркер конца строки отсутствует, число строк в тексте не превышает значения константы MaxLineCount. Любой текст состоит из нескольких абзацев; между абзацами текста помещается одна пустая строка, отступы в начале абзацев ( красная строка") не используются. В тексте не используются также переносы слов.
Если параметр N является недопустимым, то все функции возвращают особую строку, равную константе SampleError.
Буква ё" в русских текстовых данных не используется.
Все слова-образцы состоят из заглавных (прописных) букв. Помимо слов общего вида" в набор слов включены слова, обладающие следующими особенностями (наличие подобных особых слов может оказаться полезным при составлении заданий):
слова, начинающиеся и оканчивающиеся одной и той же буквой; слова, содержащие три одинаковые буквы (в русском наборе -- три буквы А", в английском наборе -- три буквы "E"). Длина предложений-образцов не превосходит 76 символов; таким образом, любое предложение умещается на одной экранной строке (напомним, что строки при выводе в окне задачника обрамляются апострофами).