Описание языка PascalABC.NET - W Cat
Шрифт:
Интервал:
Закладка:
Кроме пяти строк с основным текстом формулировки, который отображается на экране при выводе задания, можно указывать дополнительные строки, отображаемые на экране при прокрутке текста задания (связанные с прокруткой кнопки отображаются в окне задачника справа от раздела формулировок, если в формулировке текущего задания имеются дополнительные строки). Все дополнительные строки, как и основные, должны добавляться к формулировке последовательно, причем параметр Y для таких строк надо положить равным 0. Максимальное количество дополнительных строк равно 200.
В строке S можно использовать управляющие последовательности.
Если при выводе строки S часть ее не умещается на экранной строке, то выводится сообщение об ошибке Ошибочное позиционирование по горизонтали". Если ошибка произошла при выводе основной строки, то лишняя часть строки S отображается на следующей строке (или на первой строке, если ошибочной является пятая строка в разделе формулировок).
Определенный с помощью процедур TaskText текст формулировки задания используется также при формировании html-описания группы. В этом случае деление на строки, указанное для экранного вывода, игнорируется, однако учитываются дополнительные управляющие последовательности, позволяющие разбивать текст на абзацы с различным способом выравнивания (на отображение текста в окне задачника эти дополнительные последовательности не влияют).
Если при определении задания не указана его формулировка, то выводится сообщение об ошибке.
Вариант процедуры TaskText с единственным параметром S добавлен в версию 4.11 конструктора. В этом варианте строка S должна содержать весь текст формулировки, причем строки формулировки должны разделяться символами #13, #10 или их комбинациями #13#10. Начальные и конечные пробелы в каждой строке формулировки удаляются; если в результате какая-либо строка окажется пустой, то она не учитывается. Все строки формулировки автоматически центрируются по горизонтали; их вертикальное расположение определяется количеством строк и соответствует правилам, приведенным выше (если формулировка содержит одну строку, то она располагается на экранной строке 3, и т. д.). Если требуется специальное выравнивание какой-либо строки текста, то его можно добиться за счет добавления дополнительных пробелов в начало или конец строки; чтобы эти пробелы не были удалены, первый начальный (или последний конечный) пробел должен быть экранирован символом " (обратная косая черта).
procedure DataB ([Cmt: string;] B: boolean; X, Y: integer);
procedure DataN([Cmt: string;] N: integer; X, Y, W: integer);
procedure DataN2([Cmt: string;] N1, N2: integer; X, Y, W: integer);
procedure DataN3([Cmt: string;] N1, N2, N3: integer; X, Y, W: integer);
procedure DataR([Cmt: string;] R: real; X, Y, W: integer);
procedure DataR2([Cmt: string;] R1, R2: real; X, Y, W: integer);
procedure DataR3([Cmt: string;] R1, R2, R3: real; X, Y, W: integer);
procedure DataC([Cmt: string;] C: char; X, Y: integer);
procedure DataS([Cmt: string;] S: string; X, Y: integer);
Процедуры группы Data добавляют к заданию элементы исходных данных. Добавленные элементы, вместе с необязательной строкой-комментарием Cmt, отображаются в разделе исходных данных, начиная с позиции X строки Y (позиции и строки нумеруются от 1; ширина экранной строки равна 78 позициям). Если используются значения параметра Y, большие 5, то разделе исходных данных будет доступна прокрутка. Как и для процедуры TaskText, параметр X может принимать три особых значения: 0 (центрирование по горизонтали относительно всей экранной строки), 100 (центрирование по горизонтали относительно левой половины экранной строки), 200 (центрирование по горизонтали относительно правой половины экранной строки). Эти значения можно также задавать с помощью констант xCenter, xLeft и xRight.
Параметр W определяет ширину поля вывода для числовых данных (выравнивание всегда производится по правому краю поля вывода). Если ширины поля вывода недостаточно, то значение параметра W игнорируется, и для вывода элемента используется минимально необходимое число экранных позиций. При определении ширины поля вывода для вещественного числа следует учитывать размер отображаемой дробной части (который определяется процедурой SetPrecision, описываемой далее).
Для нечисловых данных ширина поля вывода полагается равной фактической ширине данных; в частности, для данных символьного типа отводятся 3 позиции, содержащие начальный апостроф, собственно символ и конечный апостроф, а для логического типа отводятся 5 позиций, достаточных для вывода названий обеих логических констант в любом используемом языке программирования. Для строки отводятся L + 2 позиции, где L -- длина строки (начальная и конечная позиции используются для вывода апострофов). В зависимости от текущего языка программирования используются либо одинарные, либо двойные апострофы.
Используя процедуры группы Data, в задание можно включить до 200 различных скалярных исходных данных (при этом следует учитывать, что некоторые процедуры, например, DataN2 и DataN3, добавляют в набор исходных данных несколько элементов). Наложение различных элементов в разделе исходных данных задачником не контролируется, поэтому при размещении данных следует обращать особое внимание на то, чтобы последующие элементы не скрывали предыдущие. Кроме того, важен порядок определения исходных данных, так как именно в этом порядке данные будут передаваться программе учащегося, выполняющей это задание. Следует придерживаться стандартных правил, принятых в базовых группах задачника: данные должны перебираться по строкам (в направлении сверху вниз), а в пределах каждой строки -- слева направо.
В параметре Cmt, содержащем текст комментария к определяемому элементу исходных данных, можно использовать управляющие последовательности (например, для отображения индексов).
В любом задании должен быть задан хотя бы один элемент исходных данных; в противном случае выводится сообщение об ошибке.
Варианты данных процедур, в которых параметр Cmt отсутствует, добавлены в версию 4.11 конструктора.
procedure DataComment(Cmt: string; X, Y: integer);
Процедура позволяет добавлять в раздел исходных данных отдельный комментарий Cmt, не связанный с каким-либо элементом исходных данных. Общее число отдельных комментариев, включаемых в разделы исходных и результирующих данных, не должно превосходить 200. Смысл параметров X и Y -- тот же, что и для процедур группы Data.
procedure ResultB ([Cmt: string;] B: boolean; X, Y: integer);
procedure ResultN([Cmt: string;] N: integer; X, Y, W: integer);
procedure ResultN2([Cmt: string;] N1, N2: integer; X, Y, W: integer);
procedure ResultN3([Cmt: string;] N1, N2, N3: integer; X, Y, W: integer);
procedure ResultR([Cmt: string;] R: real; X, Y, W: integer);
procedure ResultR2([Cmt: string;] R1, R2: real; X, Y, W: integer);
procedure ResultR3([Cmt: string;] R1, R2, R3: real; X, Y, W: integer);
procedure ResultC([Cmt: string;] C: char; X, Y: integer);
procedure ResultS([Cmt: string;] S: string; X, Y: integer);
Процедуры данной группы добавляют к заданию элементы результирующих данных вместе с их контрольными значениями. Комментарии Cmt к результирующим данным сразу отображаются в разделе результатов. Контрольные значения отображаются в разделе Пример верного решения". Смысл параметров X, Y и W -- тот же, что и для процедур группы Data. Задание может содержать до 200 скалярных элементов результирующих данных.
Как и в случае исходных данных, если элемент контрольных данных не умещается в поле, выделенном для его отображения (шириной W позиций), то параметр W игнорируется, и для вывода используется минимально необходимое число экранных позиций. Однако если элемент результирующих данных, переданный в задачник программой, решающей задание, не уложится" в размер, выделенный для соответствующего элемента контрольных данных, то в правой позиции поля вывода для этого элемента отобразится символ "*" (звездочка) красного цвета. Подобная ситуация возможна как для чисел, так и для строк (если программа учащегося выведет число или строку, размер которых больше требуемого). Для того чтобы в этой ситуации увидеть полный текст всех подобных элементов результирующих данных, следует переместить курсор мыши в раздел результатов в окне задачника; через 1-2 секунды полный текст всех данных, размер которых превышает допустимый, появится во всплывающей подсказке.
Порядок вызова процедур группы Result важен, так как он соответствует порядку, в котором результирующие данные, полученные программой учащегося, должны передаваться задачнику для проверки их правильности. Поэтому, как и для исходных данных, для набора результирующих данных должен соблюдаться стандартный порядок их размещения: сверху вниз по строкам и слева направо в каждой строке.