В данном примере описываются задания на обработку иерархических структур данных -- деревьев. Подобные структуры, как и линейные динамические структуры, рассмотренные в предыдущем примере, создаются задачником автоматически и в наглядном виде отображаются в его окне. Для доступа к ним также используются указатели.
Пример 7. Задания групп ExamBegin и ExamTaskC из электронного задачника Programming Taskbook.
Пример содержит описание процесса выполнения заданий, связанных с ЕГЭ по информатике. Основной особенностью этих заданий является то, что при их выполнении требуется использовать стандартные процедуры ввода-вывода языка Pascal (а не их специальные модификации, реализованные для задачника Programming Taskbook). Рассматриваются задания из группы ExamBegin, посвященные базовым алгоритмам, и задания из группы ExamTaskC, посвященные обработке сложных наборов данных.
Все примеры, связанные с электронным задачником Programming Taskbook, иллюстрируются изображениями окна задачника в режиме с динамической компоновкой, появившемся в версии 4.11.
Задание Begin3 из электронного задачника Programming Taskbook
Задание Begin3 относится к самой первой группе задачника, посвященной знакомству с вводом-выводом и оператором присваивания. Приведем формулировку этого задания.
Begin3. Даны стороны прямоугольника a и b. Найти его площадь S=a*b и периметр P=2*(a+b).
Далее по шагам опишем сценарий выполнения задания в системе PascalABC.NET.
uses PT4;
begin
Task('Begin3');
Заметим, что эту программу не обязательно набирать вручную. Для автоматической генерации данной программы выполним следующие действия. Нажмем кнопку
Наберем в поле ввода «Задание» текст Begin3 и нажмем Enter. После этого указанный выше текст сгенерируется автоматически и сохранится в файле Begin3.pas в рабочем каталоге системы PascalABC.NET (по умолчанию это каталог C:\PABCWork.NET).
Запустим программу (нажав клавишу F9), чтобы увидеть на экране текст задания:
Запуск нашей программы был признан
uses PT4;
var a, b: integer;
begin
Task('Begin3');
read(a, b);
После запуска этого вариант программы окно задачник примет вид:
Как видим, исходные данные поменялись и появилось сообщение об ошибке -- переменные a и b должны быть объявлены как вещественные. Если запуск программы не является ознакомительным, то в окне задачника появляется раздел с полученными результатами (в нашем случае он не содержит ни одного числа), а также панель индикаторов, показывающих количество введенных и выведенных данных, а также число успешных тестовых запусков программы.
uses PT4;
var a, b: real;
begin
Task('Begin3');
read(a, b);
Вновь запустим программу:
Электронный задачник предупреждает, что не выведен результат. Обратите внимание на то, что для сообщений о различных видах ошибок используются разные цвета (например, фиолетовый для ошибок, связанных с несоответствием типов, и оранжевый для ошибок, связанных с вводом/выводом недостаточного числа данных).
uses PT4;
var a, b, S, P: real;
begin
Task('Begin3');
read(a, b);
S := a * b;
P := 2 * (a + b);
write(P, S)
Вновь запустим программу:
Мы видим, что все требуемые исходные данные введены, все результаты выведены, однако полученные результаты имеют неверные значения. В случае ошибочного решения окно задачника всегда содержит раздел с примером верного решения, чтобы можно было сравнить полученные и правильные результаты.
uses PT4;
var a, b, S, P: real;
begin
Task('Begin3');
read(a, b);
S := a * b;
P := 2 * (a + b);
write(S, P)
После запуска программы увидим следующее окно:
Если решение является правильным, то дополнительный раздел с примером правильного решения в окне не выводится.