ВУЗ:
Составители:
Рубрика:
59
Для того чтобы имя нулевого указателя (или объекта) соответствовало исполь-
зуемому языку программирования, в формулировке задания применяются управляю-
щие последовательности \N (имя нулевого указателя) и \O (имя нулевого объекта).
Для языка PascalABC.NET обе эти последовательности генерируют текст nil.
Достаточно часто алгоритмы, разработанные учащимися для обработки динами-
ческих структур данных, дают неверные результаты в случае особых (хотя и допус-
тимых) структур, например, состоящих только из одного элемента. Поэтому жела-
тельно предусмотреть появление подобных структур в тестовых наборах исходных
данных. В наших заданиях исходный список, состоящий из одного элемента, будет
предлагаться программе учащегося в среднем один раз при каждых четырех тестовых
испытаниях.
При формировании односвязной структуры неиспользуемые поля Prev для каж-
дого элемента структуры следует положить равными адресу «фиктивного» элемента
(в нашем случае — переменной WrongNode), не связанного с данной структурой. За-
метим, что для всех элементов, кроме первого, можно было бы положить значения
поля Prev равными nil, однако это не подходит для первого элемента: если поле Prev
первого элемента будет равно nil, то слева от него будет выведен «лишний» (в данной
ситуации) текст
nil<.
Характерной особенностью разработки заданий на динамические структуры яв-
ляется обратный порядок создания этих структур: вначале создаются контрольные
структуры (которые сразу передаются в задачник), а затем они преобразуются в соот-
ветствующие исходные структуры, которые должны не только передаваться в задач-
ник, но и оставаться в памяти, чтобы в дальнейшем их можно было использовать в
программе учащегося, выполняющей это задание.
Если в группу включаются задания на динамические структуры, то необходимо
анализировать текущий язык программирования, используемый задачником. Это
обусловлено двумя причинами:
• имеется язык, не поддерживающий работу с динамическими структурами
(Visual Basic);
• в языках платформы .NET необходимо использовать «объектный» стиль
формулировок вместо традиционного стиля, основанного на указателях и
применяемого для языков Pascal и C++.
Кроме того, следует определиться с выбором стиля для языка PascalABC.NET,
поскольку в нем можно использовать как стиль указателей, так и стиль объектов.
Можно, например, включить в группу заданий для языка PascalABC.NET оба вариан-
та каждого задания.
Отмеченные обстоятельства приводят к тому, что для разных языков програм-
мирования создаваемая группа может содержать разное число заданий и, кроме того,
для этих заданий будут использоваться разные инициализирующие процедуры.
С учетом этих замечаний изменим основную процедуру группы InitTask сле-
дующим образом:
procedure InitTask(num: integer); stdcall;
begin
case num of
1..2: UseTask('Begin',num);
3: MakerDemo3;
4: MakerDemo4;
5: MakerDemo5;
Страницы
- « первая
- ‹ предыдущая
- …
- 57
- 58
- 59
- 60
- 61
- …
- следующая ›
- последняя »