procedureSetObjectStyle;
Данная процедура устанавливает объектный стиль" для динамических структур и связанных с ними ссылок при выполнении задания в среде PascalABC.NET. Она должна вызываться при формировании заданий, ориентированных на использование не записей TNode и связанных с ними указателей PNode, а объектов класса Node (данный класс определен в вариантах задачника для языков платформы .NET и, в частности, для языка PascalABC.NET).
При разработке заданий класс Node не используется . Даже если разрабатываемая группа заданий ориентирована на его применение, сами задания надо создавать с помощью записей TNode, указателей PNode и описанных выше процедур. Однако для решения подобных задач на языках платформы .NET, а также на языках Python и Java, вместо записей и связанных с ними указателей надо применять объекты класса Node. Среди языков, поддерживаемых версией 4.11 задачника, имеется единственный язык, позволяющий использовать как указатели, так и объекты: это язык PascalABC.NET. Именно поэтому для данного языка предусмотрена процедура SetObjectStyle (в прочих языках, использующих объекты Node, настройка объектного стиля в заданиях на обработку динамических структур выполняется автоматически ).
Создавая задания на обработку динамических структур для языка PascalABC.NET, разработчик должен указать учащемуся требуемый способ решения, используя соответствующие термины в формулировке задания (запись" или "объект", "указатель" или "ссылка" и т. п.), а также настроив, при необходимости, вывод динамических структур на объектный стиль", вызвав процедуру SetObjectStyle (по умолчанию применяется "стиль указателей", подробно описанный выше). Процедура SetObjectStyle должна быть вызвана после процедуры CreateTask (необходимо также, чтобы ее вызов располагался перед вызовами любых процедур, обеспечивающих добавление к заданию динамических структур и связанных с ними указателей). В результате ее вызова изменяется отображение этих элементов данных, а именно:
вместо текста ptr для непустого указателя указывается текст Node (т. е. имя непустого объекта типа Node); в стандартном комментарии к указателю вместо буквы P указывается буква A, например, A 1= Node (эту особенность следует учитывать в формулировке задания, используя в ней вместо имен указателей P 1, P 2и т. д. имена объектов A 1, A 2и т. д.). Аналогичные изменения (символа P на символ A) выполняются и при отображении указателей, связанных с динамическими структурами. Например, односвязный список, приведенный в примере 1, при установке объектного стиля будет иметь следующий вид:
A 1
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.
procedureCreateTask( [SubgroupName: string; ]var ProcessCount: integer);
Данные перегруженные варианты процедуры CreateTask предназначены для инициализации задания по параллельному программированию. От исходных вариантов процедуры CreateTask их отличает наличие параметра ProcessCount. Параметр SubgroupName имеет тот же смысл, что и для исходных вариантов процедуры: он определяет заголовок подгруппы , в которую включается задание, если разрабатываемую группу заданий целесообразно разбить на подгруппы. Если параметр SubgroupName является пустой строкой или отсутствует, то задание не связывается с какой-либо подгруппой.
Параметр ProcessCount определяет количество процессов при выполнении задания в параллельном режиме. Допускается использовать от 2 до 36 процессов. При определении параметра ProcessCount желательно применять датчик случайных чисел; это позволит протестировать предложенный алгоритм решения при различном количестве процессов параллельного приложения.
Читать дальше