|
Меню «?»
Команда «? | Справка»
Доступность: в любом режиме.
Горячая клавиша: F1.
Кнопка: «Справка (F1)».
Назначение: отображение окна с гипертекстовой справочной системой
«Teacher Pack Info». В окно загружается начальная страница раздела,
посвященного описанию программы «Конструктор вариантов».
Команда «? | 1 Пример набора заданий»
Доступность: в любом режиме.
Назначение: открытие файла VarDemo.ptv содержащего данные для создания
демонстрационного набора вариантов.
Если текущий файл был изменен, то предварительно выводится запрос
на сохранение изменений текущего файла; при варианте ответа
«Отмена» действие команды «1 Пример набора заданий» отменяется.
Файл VarDemo.ptv ищется в подкаталоге VARFILES
системного каталога программы; если данный файл отсутствует, то
он автоматически создается. Если файл существует, но его текст отличается от
стандартного демонстрационного текста, то выводится запрос на обновление его
содержимого.
Приведем стандартный текст файла VarDemo.ptv.
%==============================================================================
% ДЕМОНСТРАЦИОННЫЙ НАБОР УЧЕБНЫХ ЗАДАНИЙ.
% Обеспечивает генерацию вариантов заданий по темам Begin и Integer.
% Каждый вариант будет содержать два основных и одно дополнительное
% задание по каждой теме.
% ==============================================================================
% ПРИМЕЧАНИЕ. Символ "^" используется далее в тексте как "стрелка вверх",
% указывающая на определенную позицию предыдущей строки.
% ==============================================================================
% ^ Строка к о м м е н т а р и я; начинается с символа "%".
% Комментарии в текст сгенерированных вариантов не включаются.
= ВВОД И ВЫВОД ДАННЫХ.
= ОПЕРАТОР ПРИСВАИВАНИЯ.
= ТИПЫ REAL И INTEGER
= (6 заданий)
% ^ З а г о л о в о к варианта; начинается с символа "=".
% Заголовок может содержать до 10 строк.
% Он помещается в начало списка сгенерированных вариантов.
Begin 1 2 4-7
% ^ Имя темы. ^ Список номеров заданий; может содержать 1,2,3,4,6,12 элементов.
% Номера разделяются одним или несколькими пробелами;
% допустимо указывать д и а п а з о н ы номеров.
% Строка со списком заданий выделяется полужирным шрифтом.
% Каждая такая строка определяет с е м е й с т в о заданий,
% из которого в каждый вариант будет включено какое-либо о д н о задание.
% Файл вариантов может содержать до 250 семейств.
Begin 23 24 % задания на обмен значений трех переменных
% ^ Комментарий к данному семейству.
- Дополнительное задание
% ^ Новый р а з д е л варианта; начинается с символа "-".
% Текст, указанный после символа "-", добавляется в сгенерированные варианты.
Begin-90 35-37
% ^ Количество б а л л о в за решенное задание (от 1 до 100).
% Если не указано, то полагается равным 50. Баллы добавляются
% в текст сгенерированных вариантов только в том случае,
% если в вариантах имеются задания с баллами, отличными от 50.
Integer 9 10 12-15 % задания на выделение цифр из целого числа
% ^ Указание нового имени темы автоматически начинает новый раздел варианта.
Integer 21-23
- Дополнительное задание
Integer-90 24-28 28
% ^ Если количество различных заданий в семействе отличается
% от допустимого, то некоторые номера заданий можно дублировать.
% ==============================================================================
Команда «? | 2 Пример сводной группы»
Доступность: в любом режиме.
Назначение: открытие файла GroupDemo.ptt,
предназначенного для создания демонстрационной сводной группы с тем же именем.
Если текущий файл был изменен, то предварительно выводится запрос
на сохранение изменений текущего файла; при варианте ответа
«Отмена» действие команды «2 Пример сводной группы» отменяется.
Файл GroupDemo.ptt ищется в подкаталоге VARFILES
системного каталога программы; если данный файл отсутствует, то
он автоматически создается. Если файл существует, но его текст отличается от
стандартного демонстрационного текста, то выводится запрос на обновление его
содержимого.
Приведем стандартный текст файла GroupDemo.ptt.
% ==============================================================================
% ДАННЫЕ ДЛЯ ДЕМОНСТРАЦИОННОЙ СВОДНОЙ ГРУППЫ УЧЕБНЫХ ЗАДАНИЙ.
% Предназначены для генерации сводной группы заданий с именем GroupDemo.
% Группа сохраняется в файле PT4GroupDemo.dll.
% ==============================================================================
% ПРИМЕЧАНИЕ. Символ "^" используется далее в тексте как "стрелка вверх",
% указывающая на определенную позицию предыдущей строки
% или строку в целом.
% ==============================================================================
% ^ К о м м е н т а р и й начинается с символа "%", расположенного в начале
% строки. Комментарии и пустые строки при обработке данных не учитываются.
=GroupDemo
% ^ И м я создаваемой группы (не более 9 символов - латинских букв и цифр;
% не должно оканчиваться цифрой).
=Демонстрационная сводная группа
% ^ К р а т к о е о п и с а н и е группы; точка в конце описания не ставится.
=1ret567fgd23KL56
% ^ К л ю ч группы, позволяющий однозначно ее идентифицировать
% (произвольная последовательность символов).
% Все элементы данных, начинающиеся с символа "=", являются обязательными
% и должны задаваться в указанном порядке.
Begin 1 2 4-6
% ^ Имя темы. ^ Список номеров заданий; может содержать произвольное число
% элементов. Номера разделяются одним или несколькими пробелами;
% допустимо указывать д и а п а з о н ы номеров.
% Все задания в указанном порядке включаются в созданную сводную группу.
Array 131-134
Array 116-118 120#1 124-126#4
% ^ После символа "#" можно указать поправку для правильного вычисления ссылок
% на другие задания группы. Эту поправку, вместе с предваряющим символом "#",
% можно указывать как после отдельного номера, так и после диапазона номеров.
-
% ^ Метка начала п р е а м б у л ы к сводной группе, включаемой
% в ее описание (преамбулу указывать необязательно).
Данная группа является примером \Iсводной группы\i,
включающей некоторые из заданий базовых групп Begin и Array.
% ^ Текст преамбулы, который может содержать управляющие последовательности.
% Управляющие последовательности \I и \i выделяют курсивный фрагмент текста.
- Ввод и вывод данных, оператор присваивания
% ^ Метка конца преамбулы группы, одновременно являющаяся меткой начала
% преамбулы подгруппы с указанным именем.
Данная подгруппа содержит задания из группы Begin.\P
% ^ Управляющая последовательность \P обеспечивает переход к новому абзацу.
* Begin
% ^ Наличие звездочки с последующим именем группы означает подключение
% преамбулы, которая связана с указанной группой.
- Одномерные массивы: множества точек на плоскости
** Array
% ^ Наличие д в у х звездочек с последующим именем группы означает
% подключение преамбулы, которая связана с той подгруппой указанной группы,
% имя которой совпадает с именем определяемой подгруппы сводной группы.
-
% ^ Метка конца преамбулы подгруппы.
% ==============================================================================
Примечание: данная команда доступна в программе «Конструктор вариантов»,
начиная с версии 2.4.
Команды «? | 3 Пример файла дополнений (PT4)» и
«? | 4 Пример файла дополнений (PABC)»
Доступность: в любом режиме.
Назначение: открытие файлов PT4GroupDemo.txt и PT4GroupDemo_PascalABC_.txt соответственно,
являющихся файлами дополнений для демонстрационной
сводной группы GroupDemo (см. команду
«? | 2 Пример сводной группы»).
Если текущий файл был изменен, то предварительно выводится запрос
на сохранение изменений текущего файла; при варианте ответа
«Отмена» действие команды отменяется.
Файлы PT4GroupDemo.txt и PT4GroupDemo_PascalABC_.txt ищутся в подкаталоге VARFILES
системного каталога программы; если требуемый файл отсутствует, то
он автоматически создается. Если файл существует, но его текст отличается от
стандартного демонстрационного текста, то выводится запрос на обновление его
содержимого.
При выполнении любой из описываемых команд автоматически устанавливается режим использования
модулей PT4Load и PT4Demo, соответствующий выбранному варианту файла дополнений
(см. команды «Настройки | Использовать модули PT4»
и «Настройки | Использовать модули PascalABC.NET»).
Стандартный текст файла PT4GroupDemo.txt (версия 3.3):
================================================================================
ПРИМЕР ФАЙЛА ДОПОЛНЕНИЙ ДЛЯ ГРУППЫ GROUPDEMO (ЯЗЫКИ PYTHON, C#, PASCAL)
================================================================================
Имя файла дополнений должно начинаться с префикса PT4, после которого следует
имя группы заданий. После имени группы заданий может указываться используемый
язык программирования (обрамленный квадратными скобками или символами
подчеркивания, например: PT4GroupDemo[Python].txt или PT4GroupDemo_Python_.txt),
а также л о к а л ь (язык интерфейса - русский или английский) _ru или _en
(например: PT4GroupDemo_ru.txt или PT4GroupDemo_Python__en.txt). Символы
подчеркивания рекомендуется использовать вместо квадратных скобок, если файл
дополнений предназначен для размещения в удаленных ftp-репозиториях.
Файл дополнений имеет расширение .txt.
По умолчанию предполагается, что файл дополнений имеет кодировку CP1251
(эта кодировка используется в редакторе программы PTVarMaker).
Начиная с версии 4.22, можно использовать файлы дополнений в кодировке UTF-8;
в этом случае файл должен содержать строку с переключателем [UTF-8].
--------------------------------------------------------------------------------
Текст до первого переключателя считается комментарием и не обрабатывается.
--------------------------------------------------------------------------------
[П е р е к л ю ч а т е л и заключаются в квадратные скобки]
[Строка с переключателями должна начинаться с квадратной скобки в позиции 1]
[В переключателях не учитывается регистр букв]
[Переключатели-комментарии выделяются синим цветом и курсивом]
[Многострочные комментарии обрамляются переключателями со скобками "<" и ">"]
[0][=Python]
[<]
Переключатели языка и номера (зеленого цвета) могут находиться
на одной строке. Переключатель языка начинается с символа "=",
после которого указывается язык. В версии 4.22 поддерживаются
следующие переключатели языка: [=Pascal] (для среды Lazarus),
[=PascalABC] (для среды PascalABC.NET), [=CPP] (С++), [=CS] (С#),
[=VB.NET], [=FS] (F#), [=Python] (вместе с вариантами [=Python-2]
и [=Python-3]), [=Java], [=Ruby], [=Julia], [=C].
[>]
# Этот текст добавлен в начало каждой заготовки данной группы на языке Python
# версии 2 и 3 благодаря использованию демонстрационного файла дополнений.
[Для определения начальной части заготовки всех заданий используется номер 0]
[В начальную часть заготовки обычно добавляются директивы подключения модулей]
[=CS]
// Этот текст добавлен в начало каждой заготовки данной группы на языке C#
// благодаря использованию демонстрационного файла дополнений.
[=Pascal]
uses PT4Tasks;
// Этот текст добавлен в начало каждой заготовки данной группы на языке Pascal
// благодаря использованию демонстрационного файла дополнений.
[<]
При переопределении раздела [0] для языка Pascal в нем обязательно
должна содержаться директива подключения модуля PT4Tasks.
[>]
[=Python][=CS][=Pascal]
[text]
[<]
Некоторые переключатели должны занимать отдельную строку;
такие переключатели выделяются черным цветом.
Переключатель [text] устанавливает для последующего текста ф о р м а т
а б з а ц а; текст в этом формате добавляется к преамбуле группы
(или подгруппы) или к формулировке задания.
Переключатель [code] (задан по умолчанию) устанавливает для последующего
текста ф о р м а т л и с т и н г а; текст в этом формате добавляется
к формулировке задания и к созданной для этого задания программе-заготовке.
[>]
Этот текст из демонстрационного файла дополнений добавлен в качестве нового
абзаца к %{I}преамбуле группы%{i} %{group} для %{B}трех языков%{b} %--- Python,
C# и Pascal.
[<]
Текст преамбулы группы (и подгруппы - см. далее)
определяется в режиме text для номера 0. Зеленым цветом выделяются
у п р а в л я ю щ и е п о с л е д о в а т е л ь н о с т и.
Они начинаются с экранирующего символа %, который можно изменить,
используя переключатель [escape<новый символ>], например [escape$].
Ниже перечислены все управляющие последовательности для версии 4.15:
%{group} - имя группы, %{task} - имя задания, %{number} - номер задания,
%{I}, %{i} - выделение курсивом, %{B}, %{b} - полужирное выделение,
%{S}, %{s} - специальное выделение, %{M}, %{m} - моноширинное выделение,
%{br} - разрыв строки, %~ - неразрывный пробел, %<<, %>> - угловые кавычки,
%-- - короткое тире, %--- - длинное тире, %{mark} - круглый маркер.
Команды выделения текста учитываются только в режиме html-документа.
[>]
[~Ввод и вывод данных, оператор присваивания]
Этот текст из демонстрационного файла дополнений добавлен в качестве нового
абзаца к преамбуле подгруппы %<<Ввод и вывод данных, оператор присваивания%>>.
[------------------------------------------------------------------------------]
[1][=CS]
[<]
После указания переключателя [1] последующий текст будет относиться
только к первому заданию группы.
[>]
Данный текст из демонстрационного файла дополнений в виде двух абзацев
указывается после формулировки задания %{task} для языка C#, причем как в режиме
окна задачника, так и в режиме html-документа.
%{S}Указание.%{s} Используйте присваивание вида %{M}P%~=%~4%~*%~a;%{m}
[Новый абзац в режиме text отделяется от предыдущего пустой строкой]
[-HW]
[<]
Переключатели [-<список режимов>] и [+<список режимов>] отключают
или включают режимы отображения последующего текста:
W - отображение в окне задачника (в разделе отладки),
H - отображение в html-документе с описанием группы заданий,
L - отображение в программе-заготовке.
По умолчанию все режимы включены.
В программу-заготовку добавляется только текст в формате листинга.
[>]
[code]
// Это текст заготовки для решения задания %{task} на языке C#.
// Заготовка определена в демонстрационном файле дополнений.
// Данная заготовка не отображается в окне задачника и в html-документе.
public static void Solve()
{
Task("%{task}");
int a = GetDouble();
}
[+HW]
[=Python-3]
# Это текст заготовки для решения задания %{task} на языке Python версии 3.
# Заготовка определена в демонстрационном файле дополнений.
# Данная заготовка, кроме того, отображается в html-документе.
# В окне задачника отображается только начальный комментарий данной заготовки.
[-W]
def solve():
task("%{task}")
a = get()
[------------------------------------------------------------------------------]
[=Python][=CS][=Pascal][2-5][7][9]
[<]
Для того чтобы последующий текст относился к нескольким языкам или номерам,
соответствующие переключатели надо указать на одной и той же строке.
Можно указывать диапазоны номеров.
[>]
[-W]
[text]
Этот текст из демонстрационного файла дополнений добавлен в html-описание группы
%{group} для языков Python (версий 2 и 3), C# и Pascal после формулировок
заданий с номерами 2%--5, 7,%~9.
[------------------------------------------------------------------------------]
[1][=Python-3]
[<]
Задание с одним и тем же номером можно определять в виде нескольких
фрагментов, расположенных в разных частях файла дополнений. Фрагменты
объединяются в том порядке, в котором они располагаются в файле дополнений.
[>]
[code]
# Этот комментарий из демонстрационного файла дополнений добавлен в конец
# заготовки для задания %{task} на языке Python версии 3. Он также отображается
# в html-документе. В окне задачника данный комментарий отображаться не будет.
[==============================================================================]
Стандартный текст файла PT4GroupDemo_PascalABC_.txt (версия 3.1).
================================================================================
ПРИМЕР ФАЙЛА ДОПОЛНЕНИЙ ДЛЯ ГРУППЫ GROUPDEMO (ЯЗЫК PASCALABC.NET)
================================================================================
Имя файла дополнений должно начинаться с префикса PT4, после которого следует
имя группы заданий. После имени группы заданий может указываться используемый
язык программирования (обрамленный квадратными скобками или символами
подчеркивания, например: PT4GroupDemo[PascalABC].txt
или PT4GroupDemo_PascalABC_.txt), а также л о к а л ь (язык интерфейса -
русский или английский) _ru или _en (например: PT4GroupDemo_ru.txt
или PT4GroupDemo_PascalABC__en.txt). Символы подчеркивания рекомендуется
использовать вместо квадратных скобок, если файл дополнений предназначен
для размещения в удаленных ftp-репозиториях.
Файл дополнений имеет расширение .txt.
По умолчанию предполагается, что файл дополнений имеет кодировку CP1251
(эта кодировка используется в редакторе программы PTVarMaker).
--------------------------------------------------------------------------------
Текст до первого переключателя считается комментарием и не обрабатывается.
--------------------------------------------------------------------------------
[П е р е к л ю ч а т е л и заключаются в квадратные скобки]
[Строка с переключателями должна начинаться с квадратной скобки в позиции 1]
[В переключателях не учитывается регистр букв]
[Переключатели-комментарии выделяются синим цветом и курсивом]
[Многострочные комментарии обрамляются переключателями со скобками "<" и ">"]
[0]
[Переключатели языка и номера (зеленого цвета) могут находиться на одной строке]
[Если язык указан в имени файла, то указывать переключатель языка не требуется]
uses PT4;
// Этот текст добавлен в начало каждой заготовки данной группы на языке
// PascalABC.NET благодаря использованию демонстрационного файла дополнений.
[Для определения начальной части заготовки всех заданий используется номер 0]
[В начальную часть заготовки обычно добавляются директивы подключения модулей]
[<]
При переопределении раздела [0] для языка PascalABC.NET в нем обязательно
должна содержаться директива подключения модуля PT4. Начиная с версии 4.21,
можно использовать модуль PT, связанный с 64-разрядным вариантом задачника.
[>]
[text]
[<]
Некоторые переключатели должны занимать отдельную строку;
такие переключатели выделяются черным цветом.
Переключатель [text] устанавливает для последующего текста ф о р м а т
а б з а ц а; текст в этом формате добавляется к преамбуле группы
(или подгруппы) или к формулировке задания.
Переключатель [code] (задан по умолчанию) устанавливает для последующего
текста ф о р м а т л и с т и н г а; текст в этом формате добавляется
к формулировке задания и к созданной для этого задания программе-заготовке.
[>]
Этот текст из демонстрационного файла дополнений добавлен в качестве нового
абзаца к %{I}преамбуле группы%{i} %{group} для языка %{B}PascalABC.NET%{b}.
[<]
Текст преамбулы группы (и подгруппы - см. далее)
определяется в режиме text для номера 0. Зеленым цветом выделяются
у п р а в л я ю щ и е п о с л е д о в а т е л ь н о с т и.
Они начинаются с экранирующего символа %, который можно изменить,
используя переключатель [escape<новый символ>], например [escape$].
Ниже перечислены все управляющие последовательности для версии 4.15:
%{group} - имя группы, %{task} - имя задания, %{number} - номер задания,
%{I}, %{i} - выделение курсивом, %{B}, %{b} - полужирное выделение,
%{S}, %{s} - специальное выделение, %{M}, %{m} - моноширинное выделение,
%{br} - разрыв строки, %~ - неразрывный пробел, %<<, %>> - угловые кавычки,
%-- - короткое тире, %--- - длинное тире, %{mark} - круглый маркер.
Команды выделения текста учитываются только в режиме html-документа.
[>]
[~Ввод и вывод данных, оператор присваивания]
Этот текст из демонстрационного файла дополнений добавлен в качестве нового
абзаца к преамбуле подгруппы %<<Ввод и вывод данных, оператор присваивания%>>.
[------------------------------------------------------------------------------]
[1]
[<]
После указания переключателя [1] последующий текст будет относиться
только к первому заданию группы.
[>]
Данный текст из демонстрационного файла дополнений в виде двух абзацев
указывается после формулировки задания %{task} для языка PascalABC.NET,
причем как в режиме окна задачника, так и в режиме html-документа.
%{S}Указание.%{s} Используйте присваивание вида %{M}P%~:=%~4%~*%~a;%{m}
[Новый абзац в режиме text отделяется от предыдущего пустой строкой]
[code]
// Это текст заготовки для решения задания %{task} на языке PascalABC.NET.
// Заготовка определена в демонстрационном файле дополнений.
// В окне задачника и в html-документе отображается только начальный
// комментарий из данной заготовки.
[-WH]
[<]
Переключатели [-<список режимов>] и [+<список режимов>] отключают
или включают режимы отображения последующего текста:
W - отображение в окне задачника (в разделе отладки),
H - отображение в html-документе с описанием группы заданий,
L - отображение в программе-заготовке.
По умолчанию все режимы включены.
В программу-заготовку добавляется только текст в формате листинга.
[>]
begin
Task('%{task}');
var a := ReadReal;
end.
[------------------------------------------------------------------------------]
[2-5][7][9]
[<]
Для того чтобы последующий текст относился к нескольким заданиям, их номера
надо указать в переключателях, расположенных на одной и той же строке.
Можно указывать диапазоны номеров.
[>]
[+H]
[text]
Этот текст из демонстрационного файла дополнений добавлен в html-описание
группы %{group} для языка PascalABC.NET после формулировок заданий
с номерами 2%--5, 7,%~9.
[------------------------------------------------------------------------------]
[1]
[<]
Задание с одним и тем же номером можно определять в виде нескольких
фрагментов, расположенных в разных частях файла дополнений. Фрагменты
объединяются в том порядке, в котором они располагаются в файле дополнений.
[>]
[code]
// Этот комментарий из демонстрационного файла дополнений добавлен в конец
// заготовки для задания %{task} на языке PascalABC.NET. Он также отображается
// в html-документе. В окне задачника данный комментарий отображаться не будет.
[==============================================================================]
Примечание: данные команды доступны в программе «Конструктор вариантов»,
начиная с версии 3.0.
Команды «? | 5 Пример внешней группы (PT4)» и
«? | 6 Пример внешней группы (PABC)»
Доступность: в любом режиме.
Назначение: открытие файлов PT4-ExtGroupDemo.txt и PT4-ExtGroupDemo_PascalABC_.txt соответственно,
определяющих демонстрационную внешнюю группу ExtGroupDemo.
Если текущий файл был изменен, то предварительно выводится запрос
на сохранение изменений текущего файла; при варианте ответа
«Отмена» действие команды отменяется.
Файлы PT4-ExtGroupDemo.txt и PT4-ExtGroupDemo_PascalABC_.txt ищутся в подкаталоге VARFILES
системного каталога программы; если требуемый файл отсутствует, то
он автоматически создается. Если файл существует, но его текст отличается от
стандартного демонстрационного текста, то выводится запрос на обновление его
содержимого.
При выполнении любой из описываемых команд автоматически устанавливается режим использования
модулей PT4Load и PT4Demo, соответствующий выбранному варианту внешней группы
(см. команды «Настройки | Использовать модули PT4»
и «Настройки | Использовать модули PascalABC.NET»).
Стандартный текст файла PT4-ExtGroupDemo.txt (версия 3.3):
================================================================================
ПРИМЕР ФАЙЛА С ОПРЕДЕЛЕНИЕМ ВНЕШНЕЙ ГРУППЫ ДЛЯ УНИВЕРСАЛЬНОГО ВАРИАНТА ЗАДАЧНИКА
================================================================================
Topic1=Демонстрационная внешняя группа
Author=М. Э. Абрамян, 2023
--------------------------------------------------------------------------------
Строка, которая начинается с текста "Topic1=", содержит краткое описание внешней
группы. Строка, которая начинается с текста "Author=", содержит сведения
об авторе. Все прочие строки до первого переключателя считаются комментариями.
--------------------------------------------------------------------------------
Имя файла, определяющего внешнюю группу, должно начинаться с префикса PT4,
после которого следует д е ф и с и имя создаваемой внешней группы.
После имени группы может указываться используемый язык программирования
(обрамленный квадратными скобками или символами подчеркивания, например:
PT4-ExtGroupDemo[Python].txt или PT4-ExtGroupDemo_Python_.txt), а также
л о к а л ь (язык интерфейса - русский или английский) _ru или _en (например:
PT4-ExtGroupDemo_ru.txt или PT4-ExtGroupDemo_Python__en.txt).
Символы подчеркивания рекомендуется использовать вместо квадратных скобок, если
файл с внешней группой предназначен для размещения в удаленных ftp-репозиториях.
Файл, определяющий внешнюю группу, как и файл дополнений, имеет расширение .txt.
По умолчанию предполагается, что файл имеет кодировку CP1251
(эта кодировка используется в редакторе программы PTVarMaker).
Начиная с версии 4.22, можно использовать файлы в кодировке UTF-8;
в этом случае файл должен содержать строку с переключателем [UTF-8].
--------------------------------------------------------------------------------
Имя внешней группы может содержать до 15 символов (латинских букв и цифр)
и должно оканчиваться буквой. Имя может разделяться на две части дополнительным
дефисом, например, ExtGroup-1Part. В этом случае первая часть обозначает имя
группы, а вторая часть - имя н а б о р а в пределах данной группы. Краткое
описание набора можно указать в строке, начинающейся с текста "Topic2=".
--------------------------------------------------------------------------------
[П е р е к л ю ч а т е л и заключаются в квадратные скобки]
[Переключатели-комментарии выделяются синим цветом и курсивом]
[Многострочные комментарии обрамляются переключателями со скобками "<" и ">"]
[Подробная информация о переключателях приводится в примерах файлов дополнений]
[=][0]
[Переключатель "=" соответствует всем доступным языкам программирования]
[Переключатель "0" начинает раздел, определяющий преамбулу группы]
[text]
[Преамбулу рекомендуется оформлять в формате а б з а ц а (переключатель text)]
Это текст %{I}преамбулы%{i} к созданной внешней группе заданий.
Он будет добавлен в html-документ с описанием данной группы
для любого доступного языка программирования.
В программы-заготовки данный текст не включается.
[Для разбиения текста преамбулы на абзацы надо использовать пустые строки]
Внешняя группа %{group} состоит из четырех заданий, демонстрирующих
различные способы их определения:
%{mark} первое задание не использует задачник; формулировка задания включается
непосредственно в его программу-заготовку;
%{mark} второе использует задание из задачника и определяет для него заготовку;
%{mark} третье использует задание из задачника и определяет для него начальный
фрагмент заготовки;
%{mark} четвертое использует задание из задачника с заготовкой, созданной
по умолчанию.
[------------------------------------------------------------------------------]
[code]
[Заготовки программ оформляются в формате л и с т и н г а (переключатель code)]
[1][=Pascal]
// Первое задание показывает, как выполнять вывод текстовых данных
// в консольной программе, не использующей задачник.
begin
writeln('Hello!');
readln;
// Для закрытия консольного окна достаточно нажать клавишу [Enter].
end.
[=CPP]
// Первое задание показывает, как выполнять вывод текстовых данных
// в консольной программе, не использующей задачник.
int main()
{
cout << "Hello!" << endl;
system("pause");
return 0;
}
[=CS]
// Первое задание показывает, как выполнять вывод текстовых данных
// в консольной программе, не использующей задачник.
static void Main(string[] args)
{
Console.WriteLine("Hello!");
Console.WriteLine("Привет!");
Console.ReadLine();
// Для закрытия консольного окна достаточно нажать клавишу [Enter].
}
[=VB.NET]
' Первое задание показывает, как выполнять вывод текстовых данных
' в консольной программе, не использующей задачник.
Sub Main()
Console.WriteLine("Hello!")
Console.WriteLine("Привет!")
Console.ReadLine()
' Для закрытия консольного окна достаточно нажать клавишу [Enter].
End Sub
[=FS]
// Первое задание показывает, как выполнять вывод текстовых данных
// в консольной программе, не использующей задачник.
%[<EntryPoint>]
let main argv =
printfn "Hello!"
printfn "Привет!"
0
// Для закрытия консольного окна достаточно нажать клавишу [Enter].
[=Python-2]
# Первое задание показывает, как выполнять вывод текстовых данных
# в программе, не использующей задачник.
print "Hello!"
print "Привет!"
[=Python-3]
# Первое задание показывает, как выполнять вывод текстовых данных
# в программе, не использующей задачник.
print("Hello!")
print("Привет!")
[=Java]
// Первое задание показывает, как выполнять вывод текстовых данных
// в программе, не использующей задачник.
public static void main(String[] args)
{
System.out.println("Hello!");
System.out.println("Привет!");
}
[=Ruby]
# Первое задание показывает, как выполнять вывод текстовых данных
# в программе, не использующей задачник.
puts "Hello!"
puts "Привет"
[=Julia]'#13#10+
# Первое задание показывает, как выполнять вывод текстовых данных
# в программе, не использующей задачник.
println("Hello!")
println("Привет")
[=C]
// Первое задание показывает, как выполнять вывод текстовых данных
// в консольной программе, не использующей задачник.
int main()
{
printf("Hello!\n");
system("pause");
return 0;
}
[------------------------------------------------------------------------------]
[*]
[<]
Для перехода к следующему заданию можно использовать переключатель [*].
Этот переключатель, в отличие от переключателей с явным указанием номера,
должен располагаться на отдельной строке.
[>]
[=Pascal]
// Второе задание совпадает с заданием Begin1 и включает заготовку,
// содержащую описания переменных и ввод исходных данных.
var a, p: real;
begin
Task('Begin1');
a := GetReal;
end.
[<]
Благодаря наличию вызова процедуры Task, данная заготовка распознается как
заготовка для задания, входящего в задачник, поэтому в создаваемый проект
включаются все файлы, требуемые для правильной работы задачника.
[>]
[=CPP]
// Второе задание совпадает с заданием Begin1 и включает заготовку,
// содержащую описания переменных и ввод исходных данных.
void Solve()
{
Task("Begin1");
double a, p;
pt >> a;
}
[=CS]
// Второе задание совпадает с заданием Begin1 и включает заготовку,
// содержащую описания переменных и ввод исходных данных.
public static void Solve()
{
Task("Begin1");
double a, p;
a = GetDouble();
}
[=VB.NET]
' Второе задание совпадает с заданием Begin1 и включает заготовку,
' содержащую описания переменных и ввод исходных данных.
Sub Solve()
Task("Begin1")
Dim a, p As Double
a = GetDouble()
End Sub
[=FS]
// Второе задание совпадает с заданием Begin1 и включает заготовку,
// содержащую ввод исходных данных.
let Solve = pt.Task "Begin1"
let a = pt.GetDouble()
[=Python]
# Второе задание совпадает с заданием Begin1 и включает заготовку,
# содержащую ввод исходных данных.
def solve():
task("Begin1")
a = get()
[<]
В случае использования заданий из задачника можно определять общую заготовку
для версий 2 и 3 языка Python, так как для всех версий ввод и вывод данных
реализован в задачнике одинаковым образом.
[>]
[=Java]
// Второе задание совпадает с заданием Begin1 и включает заготовку,
// содержащую описания переменных и ввод исходных данных.
public static void solve() throws Exception
{
task("Begin1");
double a, p;
a = getDouble();
}
[=Ruby]
# Второе задание совпадает с заданием Begin1 и включает заготовку,
# содержащую ввод исходных данных.
def solve()
task "Begin1"
a = get_f
end
[=Julia]
# Второе задание совпадает с заданием Begin1 и включает заготовку,
# содержащую ввод исходных данных.
def solve()
task("Begin1")
a = get_f()
end
[=C]
// Второе задание совпадает с заданием Begin1 и включает заготовку,
// содержащую описания переменных и ввод исходных данных.
void Solve()
{
Task("Begin1");
double a, p;
GetD(&a);
}
[------------------------------------------------------------------------------]
[text]
[=]
[*]
[#Begin2]
Это начальная часть заготовки для задания %{task}.
[<]
Третье задание определяется с помощью переключателя [#], в котором
указывается имя задания из задачника. Если в тексте заготовки отсутствует
вызов процедуры Task, то считается, что данный текст является
н а ч а л ь н ы м ф р а г м е н т о м заготовки, а последующий текст
заготовки определяется по умолчанию. Обратите внимание на то, что благодаря
переключателю [#] можно использовать управляющую последовательность %{task}
для имени используемого задания.
Поскольку перед этим заданием был установлен формат абзаца (с помощью
переключателя [text]), указанный начальный фрагмент будет преобразован
в к о м м е н т а р и й с учетом синтаксиса используемого языка
программирования (например, для языков Pascal, C++, C#, F# и Java в начало
каждой строки будут добавлены символы // и пробел после них).
[>]
[------------------------------------------------------------------------------]
[*Begin3]
[<]
Для определения четвертого задания используется
м а к р о п е р е к л ю ч а т е л ь вида [*<имя группы><список номеров>].
Макропереключатель [*Begin3] преобразуется в д в а переключателя:
[*]
[#Begin3]
Для данного задания из задачника текст заготовки отсутствует,
поэтому для него используется текст заготовки по умолчанию.
Ниже в качестве примера приводится более сложный вариант макропереключателя:
[*Begin 3 10 6-8]
Подобный макропереключатель преобразуется в набор из 10 переключателей:
[*]
[#Begin3]
[*]
[#Begin10]
[*]
[#Begin6]
[*]
[#Begin7]
[*]
[#Begin8]
Первый номер в списке номеров может указываться сразу за именем группы,
а может отделяться от него пробелом (одним или несколькими). Прочие номера
или диапазоны отделяются от предыдущих пробелами (одним или несколькими).
После макропереключателя можно указать текст заготовки, который будет связан
с п о с л е д н и м заданием, указанным в списке макропереключателя.
[>]
[==============================================================================]
Стандартный текст файла PT4-ExtGroupDemo_PascalABC_.txt (версия 3.1).
================================================================================
ПРИМЕР ФАЙЛА С ОПРЕДЕЛЕНИЕМ ВНЕШНЕЙ ГРУППЫ ДЛЯ СИСТЕМЫ PASCALABC.NET
================================================================================
Topic1=Демонстрационная внешняя группа
Author=М. Э. Абрамян, 2022
--------------------------------------------------------------------------------
Строка, которая начинается с текста "Topic1=", содержит краткое описание внешней
группы. Строка, которая начинается с текста "Author=", содержит сведения
об авторе. Все прочие строки до первого переключателя считаются комментариями.
--------------------------------------------------------------------------------
Имя файла, определяющего внешнюю группу, должно начинаться с префикса PT4,
после которого следует д е ф и с и имя создаваемой внешней группы.
После имени группы может указываться используемый язык программирования
(обрамленный квадратными скобками или символами подчеркивания, например:
PT4-ExtGroupDemo[PascalABC].txt или PT4-ExtGroupDemo_PascalABC_.txt), а также
л о к а л ь (язык интерфейса - русский или английский) _ru или _en (например:
PT4-ExtGroupDemo_ru.txt или PT4-ExtGroupDemo_PascalABC__en.txt).
Символы подчеркивания рекомендуется использовать вместо квадратных скобок, если
файл с внешней группой предназначен для размещения в удаленных ftp-репозиториях.
Файл, определяющий внешнюю группу, как и файл дополнений, имеет расширение .txt.
По умолчанию предполагается, что файл имеет кодировку CP1251
(эта кодировка используется в редакторе программы PTVarMaker).
--------------------------------------------------------------------------------
Имя внешней группы может содержать до 15 символов (латинских букв и цифр)
и должно оканчиваться буквой. Имя может разделяться на две части дополнительным
дефисом, например, ExtGroup-1Part. В этом случае первая часть обозначает имя
группы, а вторая часть - имя н а б о р а в пределах данной группы. Краткое
описание набора можно указать в строке, начинающейся с текста "Topic2=".
--------------------------------------------------------------------------------
[П е р е к л ю ч а т е л и заключаются в квадратные скобки]
[Переключатели-комментарии выделяются синим цветом и курсивом]
[Многострочные комментарии обрамляются переключателями со скобками "<" и ">"]
[Подробная информация о переключателях приводится в примерах файлов дополнений]
[0]
[Переключатель "0" начинает раздел, определяющий преамбулу группы]
[Если язык указан в имени файла, то указывать переключатель языка не требуется]
[text]
[Преамбулу рекомендуется оформлять в формате а б з а ц а (переключатель text)]
Это текст %{I}преамбулы%{i} к созданной внешней группе заданий.
Он будет добавлен в html-документ с описанием данной группы
для языка PascalABC.NET.
В программы-заготовки данный текст не включается.
[Для разбиения текста преамбулы на абзацы надо использовать пустые строки]
Внешняя группа %{group} состоит из четырех заданий, демонстрирующих
различные способы их определения:
%{mark} первое задание не использует задачник; формулировка задания включается
непосредственно в его программу-заготовку;
%{mark} второе использует задание из задачника и определяет для него заготовку;
%{mark} третье использует задание из задачника и определяет для него начальный
фрагмент заготовки;
%{mark} четвертое использует задание из задачника с заготовкой, созданной
по умолчанию.
[------------------------------------------------------------------------------]
[code]
[Заготовки программ оформляются в формате л и с т и н г а (переключатель code)]
[1]
// Первое задание показывает, как выполнять вывод текстовых данных
// в программе, не использующей задачник.
begin
writeln('Hello!');
writeln('Привет!');
end.
[------------------------------------------------------------------------------]
[*]
[<]
Для перехода к следующему заданию можно использовать переключатель [*].
Этот переключатель, в отличие от переключателей с явным указанием номера,
должен располагаться на отдельной строке.
[>]
// Второе задание совпадает с заданием Begin1 и включает заготовку,
// содержащую описания переменных и ввод исходных данных.
begin
Task('Begin1');
var a := ReadReal;
var p: real;
end.
[<]
Благодаря наличию вызова процедуры Task, данная заготовка распознается как
заготовка для задания, входящего в задачник, поэтому в создаваемый проект
включаются все файлы, требуемые для правильной работы задачника.
В частности, в программы на языке PascalABC.NET добавляется директива
подключения модуля PT4.
[>]
[------------------------------------------------------------------------------]
[text]
[*]
[#Begin2]
Это начальная часть заготовки для задания %{task}.
[<]
Третье задание определяется с помощью переключателя [#], в котором
указывается имя задания из задачника. Если в тексте заготовки отсутствует
вызов процедуры Task, то считается, что данный текст является
н а ч а л ь н ы м ф р а г м е н т о м заготовки, а последующий текст
заготовки определяется по умолчанию. Обратите внимание на то, что благодаря
переключателю [#] можно использовать управляющую последовательность %{task}
для имени используемого задания.
Поскольку перед этим заданием был установлен формат абзаца (с помощью
переключателя [text]), указанный начальный фрагмент будет преобразован
в к о м м е н т а р и й с учетом синтаксиса используемого языка
программирования (например, для языка PascalABC.NET в начало каждой
строки будут добавлены символы // и пробел после них).
[>]
[------------------------------------------------------------------------------]
[*Begin3]
[<]
Для определения четвертого задания используется
м а к р о п е р е к л ю ч а т е л ь вида [*<имя группы><список номеров>].
Макропереключатель [*Begin3] преобразуется в д в а переключателя:
[*]
[#Begin3]
Для данного задания из задачника текст заготовки отсутствует,
поэтому для него используется текст заготовки по умолчанию.
Ниже в качестве примера приводится более сложный вариант макропереключателя:
[*Begin 3 10 6-8]
Подобный макропереключатель преобразуется в набор из 10 переключателей:
[*]
[#Begin3]
[*]
[#Begin10]
[*]
[#Begin6]
[*]
[#Begin7]
[*]
[#Begin8]
Первый номер в списке номеров может указываться сразу за именем группы,
а может отделяться от него пробелом (одним или несколькими). Прочие номера
или диапазоны отделяются от предыдущих пробелами (одним или несколькими).
После макропереключателя можно указать текст заготовки, который будет связан
с п о с л е д н и м заданием, указанным в списке макропереключателя.
[>]
[==============================================================================]
Примечание: данные команды доступны в программе «Конструктор вариантов»,
начиная с версии 3.0.
Команда «? | О программе»
Доступность: в любом режиме.
Горячая клавиша: Ctrl+F1.
Назначение: отображение окна со сведениями о программе.
|