Режим с динамической компоновкой

Режим с динамической компоновкой

Особенности режима с динамической компоновкой

Как было отмечено выше, с помощью кнопки быстрого доступа Режим" и связанной с ней клавиши F4 можно осуществлять переключение между двумя режимами окна задачника: традиционного режима с фиксированной компоновкой, в котором разделы с формулировкой, исходными данными и результатами имеют фиксированный размер (5 экранных строк) и допускают независимую прокрутку, и появившегося в версии 4.11 режима с динамической компоновкой (в стиле окна задачника для веб-среды ProgrammingABC.NET WDE), в котором размеры разделов определяются содержащимися в них данными, состав разделов зависит от результата тестового запуска, и для всего содержимого окна выполняется, при необходимости, общая прокрутка.

Подобно цветовой схеме и другим настройкам окна, выбранный вариант режима запоминается в файле pt4.ini, и при последующих запусках программ автоматически восстанавливается. Начиная с версии 4.11, в качестве режима по умолчанию установлен режим с динамической компоновкой.

В режиме с динамической компоновкой управляющие элементы и информационная панель располагаются в верхней части окна, поскольку высота окна для различных заданий (и даже для различных запусков программы с одним и тем же заданием) может изменяться.

Окно в режиме с динамической компоновкой может содержать от двух до четырех разделов в различных сочетаниях: раздел формулировки (без заголовка), раздел исходных данных (с заголовком Исходные данные"), раздел с результатами (с заголовком "Полученные результаты") и раздел с образцом правильного решения (с заголовком "Пример верного решения"). Разделы с формулировкой и исходными данными отображаются при любом варианте запуска. В демонстрационном режиме и при ознакомительном запуске раздел с образцом правильного решения отображается, а (пустой) раздел с результатами -- нет. В случае успешного тестового запуска раздел с образцом правильного решения не отображается, так как образец в этом случае совпадает с полученными результатами. Все четыре раздела отображаются в случае, когда при тестовом испытании была выявлена какая-либо ошибка.

В режиме с динамической компоновкой все индикаторы (ввода-вывода и прогресса выполнения задания) вынесены на специальную панель индикаторов, размещенную под информационной панелью. Панель индикаторов не отображается в демо-режиме, а также при ознакомительном запуске. Помимо собственно индикаторов, которые в режиме с динамической компоновкой располагаются горизонтально, на панели индикаторов размещаются дополнительные цветовые метки. Зеленая метка появляется над индикатором прогресса выполнения задания в случае, когда успешно пройдены все требуемые тесты. Метки с различными оттенками красного цвета отображаются при выявлении ошибок; их размещение зависит от характера ошибки: если это ошибка ввода, то метка отображается над индикатором ввода, если это ошибка вывода, то над индикатором вывода, если же это ошибка другого вида, то метка размещается над индикатором прогресса выполнения. Таким образом, при наличии любой ошибки в разделе индикаторов будет указана соответствующая метка. Поскольку, помимо индикаторов, панель содержит поясняющий текст, дополнительные подсказки к индикаторам не требуются. Исключение составляют задания по параллельному программированию, для которых предусмотрены подсказки, связанные с индикаторами ввода-вывода и поясняющим текстом: подсказки содержат информацию о том, сколько было введено или выведено данных в каждом процессе, использовавшемся в задании.

При обнаружении ошибки ввода-вывода заголовок соответствующего раздела выводится цветом, соответствующим цвету этой ошибки, как на приведенном ниже рисунке.

Режим с динамической компоновкой особенно удобен для заданий с большими формулировками и большими наборами данных. В качестве примера приведем окно в данном режиме для задания Align31 (при демонстрационном запуске).

В приведенном ниже окне с фиксированной компоновкой для этого же задания требуется прокрутка как для формулировки, так и для раздела исходных данных.

Если часть разделов с заданием не умещается на экране, то у правой границы окна отображается полоса прокрутки, а нижняя граница окна автоматически подстраивается под размеры экрана и располагается выше панели задач. При перемещении окна вверх в данной ситуации высота окна автоматически увеличивается до тех пор, пока все его содержимое не будет отображаться в окне; при этом полоса прокрутки опять будет скрыта. Для перемещения верхней границы окна вверх и вниз можно использовать клавиатурные комбинации Ctrl+Up и Ctrl+Down соответственно.

Если в режиме с динамической компоновкой отображается полоса прокрутки, то прокручивать данные можно как с ее помощью, так и с помощью колесика мыши, а также клавишами Home, End, PgUp, PgDn, Up и Down.

Окно в режиме с динамической компоновкой (в отличие от окна в режиме с фиксированной компоновкой) можно масштабировать, изменяя размер шрифта в его основных разделах (с формулировкой задания, исходными данными, результатами и примером правильного решения). Для масштабирования можно использовать команды контекстного меню или клавиши Ctrl+[+] и Ctrl+[-]. Ниже приведен вид окна с минимальным размером шрифта (равным 8 пунктам). В режиме с динамической компоновкой сохраняется возможность изменения шрифта в разделе отладки (с помощью команд контекстного меню или клавиш Alt+[+] и Alt+[-]); подобное изменение не влияет на размеры окна.

Текущая позиция верхней границы окна в режиме с динамической компоновкой и текущие размеры шрифта сохраняются в файле настроек pt4.ini и при последующем запуске автоматически восстанавливаются. Однако это сохранение производится только в случае, если при закрытии окна оно находилось в режиме с динамической компоновкой. В противном случае (если при запуске программы окно отображается в режиме с фиксированной компоновкой) для позиции верхней границы окна и размера шрифта в основных разделах устанавливаются стандартные значения, принятые для режима с фиксированной компоновкой.

Дополнительная настройка разделов с заданием

В режиме с динамической компоновкой можно скрыть формулировку задания, чтобы обеспечить отображение других элементов задания в окне меньшей высоты. Для скрытия формулировки задания достаточно щелкнуть мышью в любом месте раздела с формулировкой задания или нажать клавишу Del. Если формулировка задания скрыта, то раздел с формулировкой уменьшается до одной (пустой) экранной строки, причем в правой части этого раздела отображается кнопка, позволяющая вновь отобразить формулировку задания (с данной кнопкой связана всплывающая подсказка Показать формулировку задания (Del)"):

Для восстановления формулировки, помимо нажатия на кнопку, доступны те же действия, которые обеспечивают ее скрытие: щелчок в любом месте раздела с формулировкой и нажатие клавиши Del.

Как правило, необходимость в скрытии формулировки задания возникает в ситуации, когда часть данных, связанных с заданием, не отображается на экране (при этом окно снабжается полосой прокрутки). В подобной ситуации предусмотрен еще один способ скрытия раздела с формулировкой: с помощью кнопки, отображаемой в правом верхнем углу этого раздела (рядом с полосой прокрутки). На кнопке отображается символ x", и с ней связывается всплывающая подсказка "Скрыть формулировку задания (Del)":

Если закрыть окно (не в демо-режиме) при скрытой формулировке, то при последующем запуске (также не в демо-режиме) формулировка останется скрытой. При начальном отображении каждого задания в демо-режиме формулировка всегда выводится; если ее скрыть, то она будет оставаться скрытой при последующих просмотрах других вариантов исходных и контрольных данных для этого задания (варианты перебираются кнопкой Новые данные").

В режиме с динамической компоновкой все прокручиваемые элементы данных (формулировка, элементы двоичных файлов, элементы бинарных деревьев, разделы исходных и результирующих данных, содержащие более 5 строк) отображаются полностью. Частично отображаются только элементы текстовых файлов. По умолчанию выводится столько же строк текстового файла, сколько и в режиме с фиксированной компоновкой; при этом первая строка файла снабжается номером, равным 1. Такой подход позволяет ознакомиться с заданием, отобразив его в окне сравнительно небольшого размера:

Если в режиме с динамической компоновкой отображается только часть данных из текстовых файлов, то в правом верхнем углу раздела с исходными данными появляется кнопка со стилизованной стрелкой, направленной вниз. С ней связывается подсказка Развернуть содержимое текстовых файлов (Ins)". Щелкнув на этой кнопке, нажав клавишу Ins или выполнив щелчок мышью на одном из разделов, связанных с заданием (кроме раздела с формулировкой), можно отобразить файловые данные в полном объеме; при этом около каждой файловой строки появится ее номер, а на кнопке изменится изображение: вместо стрелки, направленной вниз, будет изображена стрелка, направленная вверх:

Режим полного отображения текстовых файлов удобен для более тщательного изучения особенностей исходных и полученных файлов, а также для сравнения полученного ошибочного файла с файлом, указанным в примере правильного решения.

Если закрыть окно задачника (не в демо-режиме) при развернутом содержимом текстовых файлов, то при последующем запуске (также не в демо-режиме) это содержимое будет развернуто автоматически. При начальном отображении каждого задания в демо-режиме данные текстовых файлов всегда выводятся в свернутом виде; если их развернуть, то режим развернутого отображения будет сохраняться при последующих просмотрах других вариантов исходных и контрольных данных для этого задания (варианты перебираются кнопкой Новые данные").

Действия по разворачиванию/сворачиванию содержимого текстовых файлов можно выполнять и для файлов небольшого размера, когда даже в свернутом режиме на экране отображаются все файловые строки. Однако в этом случае кнопка со стрелкой в окне задачника не появляется, и для переключения между режимами свернутого и развернутого отображения файловых данных следует нажимать клавишу Ins или выполнять щелчок мышью на разделе с заданием. Перейти в режим развернутого отображения содержимого для небольших файлов может потребоваться, например, для того, чтобы этот режим автоматически восстановился при следующем тестовом запуске программы.