Описание языка PascalABC.NET - W Cat
Шрифт:
Интервал:
Закладка:
A1
24 - 23 >nil
Слово nil осталось неизменным, так как в PascalABC.NET оно применяется для обозначения как нулевых указателей, так и пустых" объектов. При использовании других языков платформы .NET обозначения "пустых" объектов соответствующим образом корректируются; так, для языка C# применяется обозначение null, а для языка VB.NET -- обозначение Noth (от слова Nothing).
Заметим, что объектный стиль используется в базовых группах ObjDyn и ObjTree, имеющихся в варианте задачника для системы PascalABC.NET. Эти группы с содержательной точки зрения полностью аналогичны группам Dynamic и Tree, ориентированным на применение указателей.
Процедуры для разработки заданий по параллельному MPI-программированиюПроцедуры, описанные в настоящем разделе, связаны с разработкой заданий по параллельному программированию и доступны в конструкторе учебных заданий, начиная с версии 4.9 задачника Programming Taskbook. Подробное описание этих процедур приводится в соответствующем разделе описания задачника Programming Taskbook for MPI.
procedure CreateTask([SubgroupName: string;] var ProcessCount: integer);
Данные перегруженные варианты процедуры CreateTask предназначены для инициализации задания по параллельному программированию. От исходных вариантов процедуры CreateTask их отличает наличие параметра ProcessCount. Параметр SubgroupName имеет тот же смысл, что и для исходных вариантов процедуры: он определяет заголовок подгруппы, в которую включается задание, если разрабатываемую группу заданий целесообразно разбить на подгруппы. Если параметр SubgroupName является пустой строкой или отсутствует, то задание не связывается с какой-либо подгруппой.
Параметр ProcessCount определяет количество процессов при выполнении задания в параллельном режиме. Допускается использовать от 2 до 36 процессов. При определении параметра ProcessCount желательно применять датчик случайных чисел; это позволит протестировать предложенный алгоритм решения при различном количестве процессов параллельного приложения.
Если параметр ProcessCount меньше или равен 1, то для инициализации задания используется соответствующий вариант процедуры CreateTask без данного параметра (при этом выходное значение параметра ProcessCount полагается равным 1, а задание выполняется в обычном, непараллельном" режиме).
Если параметр ProcessCount превосходит 36, то в окне задачника выводится сообщение об ошибке.
Способ использования параметра ProcessCount при инициализации задания по параллельному программированию зависит от того, какую роль" играет программа, вызвавшая процедуру CreateTask с параметром ProcessCount (см. таблицу).
Роль" программы
Входное значение параметра ProcessCount
Выходное значение параметра ProcessCount
Непараллельная программа-загрузчик, обеспечивающая запуск параллельного варианта программы
Используется (определяет число процессов при запуске параллельного варианта программы)
Всегда равно 0
Главный процесс параллельной программы (процесс ранга 0)
Не используется
Равно числу процессов в параллельной программе; используется при формировании входных и выходных данных
Подчиненный процесс параллельной программы
Не используется
Всегда равно 0
Непараллельная программа, обеспечивающая демонстрационный запуск учебного задания
Используется
Всегда равно входному значению; используется при формировании входных и выходных данных
procedure SetProcess(ProcessRank: integer);
Данная процедура устанавливает в качестве текущего процесса параллельного приложения процесс ранга ProcessRank. Все числовые исходные и контрольные данные связываются с текущим процессом. До первого вызова данной процедуры текущим процессом считается процесс ранга 0. Процедуру можно вызывать несколько раз с одним и тем же параметром (например, первый раз процесс делается текущим при определении связанных с ним исходных данных, а второй раз -- при определении его контрольных данных).
Параметр ProcessRank должен принимать значения в диапазоне от 0 до N - 1, где N -- количество процессов, возвращаемое параметром ProcessCount процедуры CreateTask. При нарушении этого условия выводится сообщение об ошибке Параметр процедуры SetProcess находится вне диапазона 0..N-1, где N -- количество используемых процессов".
Модуль PT4TaskMakerNET: форматирование текста заданий
Общие сведенияВ конструкторе учебных заданий PT4TaskMaker предусмотрена возможность форматирования текста заданий, а также преамбул для группы и ее подгрупп. Форматирование выполняется с помощью набора управляющих последовательностей (команд), большинство из которых имеет вид символ.
Используя управляющие последовательности, можно выполнять следующие действия по форматированию текста в окне задачника:
добавлять в текст специальные символы, в том числе символы шрифта Symbol и буквы западноевропейских языков; выделять фрагмент текста полужирным шрифтом; использовать в тексте нижние и верхние индексы; добавлять в текст задания ссылки на другие задания этой же группы, не указывая при этом название группы (что позволяет корректно изменять эти ссылки при включении задания в другие группы); добавлять в текст задания элементы, зависящие от текущего языка программирования (в частности, обозначения логических констант). Все описанные выше действия обеспечивают требуемое форматирование текста задания как в окне задачника, так и в html-описании данного задания. Аналогичное форматирование (в частности, использование нижних и верхних индексов) можно применять и в текстах комментариев, которые выводятся в окне задачника в разделах исходных и результирующих данных.
Кроме того, имеются управляющие последовательности, не влияющие на текст задания в окне задачника, однако обеспечивающие дополнительное форматирование этого текста (и текста комментариев для группы и ее подгрупп) в html-описании задания или группы заданий. Данные управляющие последовательности позволяют:
выделять имена переменных курсивом; использовать более разнообразное выделение фрагментов текста (помимо полужирного начертания можно установить курсивное начертание, выделение моноширинным шрифтом и специальное выделение); разбивать текст задания и преамбулы на отдельные абзацы; устанавливать для требуемых фрагментов текста режим вывода с центрированием или с отступом; обеспечивать вывод фрагментов текста в несколько столбцов, с возможностью установки способа выравнивания для каждого столбца. Напомним, что для вывода на экран html-страницы с описанием задания или группы заданий достаточно вызвать процедуру Task, указав в конце ее параметра (имени задания или группы заданий) суффикс #. Кроме того, html-страницы с описанием групп заданий можно генерировать с помощью модуля PT4Demo, используя кнопку в окне этого модуля.
Таблица управляющих последовательностейУправляющие последовательности, приведенные в таблице, можно использовать в формулировках заданий (параметр S процедуры TaskText), комментариях к исходным и результирующим данным (параметр Cmt в процедурах групп Data и Result), а также в дополнительных описаниях (преамбулах) групп и подгрупп учебных заданий (параметр S в процедуре CommentText).
Управляющие последовательности, использованные в параметрах процедур групп Data и Result, влияют только на представление соответствующих комментариев в окне задачника (см. столбец Окно задачника"). Управляющие последовательности, использованные в параметре S процедуры CommentText, обеспечивают соответствующее форматирование преамбулы к группе заданий и ее подгруппам в тексте html-страницы с описанием группы заданий (см. столбец "Html-страница"). Управляющие последовательности, использованные в параметре S процедуры TaskText, влияют на вид формулировок заданий как в окне задачника, так и в html-описаниях.
Все последовательности вида символ, не указанные в приведенной ниже таблице, игнорируются как при выводе текста в окне задачника, так при его отображения в виде html-страницы.
В заголовках подгрупп, указываемых в процедуре CreateTask (параметр SubgroupName), а также в тексте краткого описания группы, указываемого в процедуре CreateGroup (параметр GroupDescription), управляющие последовательности не обрабатываются. При указании в этих строках управляющих последовательностей они дословно воспроизводятся и в окне задачника, и в html-описании. Для указания короткого (–) или длинного (—) тире в кратких описаниях и заголовках подгрупп можно использовать двойные и тройные дефисы соответственно: -- и ---. Начиная с версии задачника 4.10, двойные и тройные дефисы в заголовках подгрупп при их отображении в html-описаниях заменяются на короткие и длинные тире.