- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Описание языка PascalABC.NET - W Cat
Шрифт:
Интервал:
Закладка:
Демонстрационный режим
Для запуска задачника в демонстрационном режиме следует при указании имени задания в процедуре Task дополнить это имя символом ?, например:
Task('Begin12?');
Можно также указать символ ? сразу после имени темы, например, 'Begin?'. В этом случае в окне задачника сразу будет отображено последнее задание указанной группы.
Демонстрационный режим задачника имеет следующие особенности:
даже если программа содержит решение задания, это решение не анализируется и информация в файл результатов не заносится; после отображения на экране окна задачника в разделе результатов сразу будет выбрана вкладка Пример верного решения"; при одном запуске программы можно просмотреть несколько вариантов исходных и контрольных данных; для смены набора данных требуется нажать кнопку "Новые данные" или клавишу пробела; при одном запуске программы можно последовательно просмотреть все задания данной группы; для перехода к заданию с бoльшим номером требуется нажать кнопку "Следующее задание" или клавишу Enter, а для перехода к заданию с меньшим номером требуется нажать кнопку "Предыдущее задание" или клавишу Backspace. Задания перебираются циклически. На рисунке приведен вид окна задачника в демонстрационном режиме.
При использовании динамической компоновки, появившейся в версии 4.11, окно в демонстрационном режиме выглядит следующим образом:
Демонстрационный режим удобно использовать для быстрого просмотра всех заданий требуемой группы, а также различных вариантов исходных данных для требуемого задания.
Для демо-просмотра всех групп заданий, включенных в базовый набор, предназначен программный модуль PT4Demo, который вызывается непосредственно из среды PascalABC.NET командой меню Модули | Просмотреть задания" (с данной командой связана также кнопка и клавиатурная комбинация Shift+Ctrl+D).
Ниже приводится вид окна модуля PT4Demo. В данном окне можно выбрать группу заданий (для быстрого перебора групп предназначены горячие клавиши Ctrl+[<] и Ctrl+[>]) и номер задания в пределах группы (номера можно перебирать с помощью комбинаций Ctrl+Shift+[<] и Ctrl+Shift+[>]).
Если задачник не зарегистрирован, то он всегда запускается в демонстрационном режиме (исключение составляют задания, доступные для выполнения в мини-варианте). Переключение в демонстрационный режим автоматически происходит также в случае, если в каталоге с выполняемой программой отсутствует файл результатов results.abc.
В версии 4.8 задачника добавлена возможность генерации текста формулировок учебных заданий и дополнительных пояснений к заданиям в виде html-страницы. Для создания подобной страницы и ее немедленного отображения на экране (в html-браузере, установленном по умолчанию) достаточно вызвать процедуру Task, указав в качестве ее параметра имя группы заданий или имя конкретного задания, дополненное символом #", например, Begin# или Begin3#. При указании группы генерируется текст всех заданий, включенных в эту группу. Процедуру Task с параметром, оканчивающимся символом #, можно вызывать несколько раз, указывая различные имена групп или конкретных заданий; в результате созданная html-страница будет содержать тексты всех заданий, указанных при различных запусках процедуры Task (в том же порядке).
Если при каком-либо вызове будет указано неверное имя группы или неверный номер задания в пределах группы, то выведется сообщение об ошибке, и html-страница создана не будет.
В создаваемую html-страницу включаются стилевые настройки, которые берутся из файла PT4Tasks.css, который ищется в текущем каталоге, а при его отсутствии в этом каталоге -- в подкаталоге PT4 системного каталога PascalABC.NET. Если данный стилевой файл не найден, то стилевые настройки в html-страницу не добавляются.
При успешной генерации html-страницы она сохраняется в файле со стандартным именем PT4Tasks.html в рабочем каталоге приложения. Если в этом каталоге нельзя создать файл, то выводится сообщение об ошибке.
Возможность просмотра html-страниц с описанием текущей группы заданий добавлена и в программный модуль PT4Demo. Для этого предусмотрена кнопка (см. приведенный выше рисунок) и клавиша F2.
Модули констукторов заданий
Конструкторы проверяемых заданий: обзор
В системе PascalABC.NET можно создавать проверяемые задания для исполнителей Робот и Чертежник, а также для электронного задачника Programming Taskbook. Задания разрабатываются с помощью конструкторов RobotTaskMaker, DMTaskMaker и PT4TaskMaker; конструкторы RobotTaskMaker и DMTaskMaker реализованы в виде одноименных модулей, конструктор PT4TaskMaker реализован в виде модуля PT4TaskMakerNET. В данном разделе приводятся подробные описания каждого из конструкторов и примеры их использования для создания новых заданий:
Модуль RobotTaskMaker
Создание заданий для исполнителя Робот
Модуль DMTaskMaker
Создание заданий для исполнителя Чертежник
Модуль PT4TaskMakerNET: общее описание
Модуль PT4TaskMakerNET: основные компоненты
Модуль PT4TaskMakerNET: дополнительные компоненты
Модуль PT4TaskMakerNET: форматирование текста заданий
Модуль PT4TaskMakerNET: примеры разработки учебных заданий
Модуль PT4TaskMakerNET: разработка заданий, связанных с ЕГЭ по информатике
Модуль RobotTaskMaker
Типы модуля RobotTaskMaker
type TaskProcType = procedure;
Тип процедуры, генерирующей конкретное задание. Каждое задание реализуется в виде отдельной процедуры; для связывания этой процедуры с именем задания необходимо использовать процедуру RegisterTask, описываемую ниже.
Процедуры модуля RobotTaskMaker
procedure Field(szx,szy: integer);
Задает поле Робота размера szx на szy клеток.
procedure HorizontalWall(x,y,len: integer);
Создает горизонтальную стену длины len и координатами левого верхнего угла (x, y).
procedure VerticalWall(x,y,len: integer);
Создает вертикальную стену длины len и координатами левого верхнего угла (x, y).
procedure RobotBegin(x,y: integer);
Задает начальное положение Робота в клетке с координатами (x, y).
procedure RobotEnd(x,y: integer);
Задает конечное положение Робота в клетке с координатами (x, y).
procedure RobotBeginEnd(x,y,x1,y1: integer);
Задает начальное положение Робота в клетке с координатами (x, y) и конечное в клетке с координатами (x1, y1).
procedure Tag(x,y: integer);
Помечает клетку (x, y) для закрашивания.
procedure TagRect(x,y,x1,y1: integer);
Помечает прямоугольник из клеток, задаваемый координатами противоположных вершин прямоугольника (x, y) и (x1, y1), для закрашивания.
procedure MarkPainted(x,y: integer);
Закрашивает клетку (x, y) (в задании некоторые клетки могут быть уже закрашены).
procedure TaskText(s: string);
Задает формулировку текста задания в строке s.
procedure RegisterGroup(name,description,unitname: string; count: integer);
Обеспечивает автоматическую регистрацию новой группы заданий в программном модуле PT4Load. В результате имя данной группы будет отображаться в окне модуля PT4Load в списке групп, связанных с исполнителем Робот, что позволит создать программу-заготовку для выполнения любого задания этой группы. В качестве параметров процедуры указывается имя группы name, краткое описание группы description, имя модуля unitname, в котором описана группа, и количество заданий count. Имя группы заданий должно содержать не более 7 символов (цифр и латинских букв) и не должно оканчиваться цифрой, количество заданий не должно превышать 999. Процедура RegisterGroup должна вызываться в секции инициализации модуля, содержащего реализацию новой группы заданий для Робота.
RegisterTask(name: string; p: TaskProcType);
Связывает имя задания name с процедурой p, в которой реализовано данное задание. Данную процедуру следует вызывать для каждого задания. Подобно описанной выше процедуре RegisterGroup, процедура RegisterTask должна вызываться в секции инициализации модуля, содержащего реализацию новой группы заданий для Робота. Порядок вызова этих процедур может быть произвольным.
Создание заданий для исполнителя Робот
Опишем последовательность создания группы заданий для исполнителя Робот. Создадим модуль RobTasks.pas со следующим текстом:
unit RobTasks;
interface
uses RobotTaskMaker;
implementation
procedure FirstRob;
begin
TaskText('Задание myrob1. Закрасить помеченные клетки');
Field(10,6);
HorizontalWall(0,3,4);
VerticalWall(4,3,2);
RobotBegin(1,4);
VerticalWall(5,1,5);
HorizontalWall(5,1,4);
RobotEnd(6,2);
Tag(6,2);
end;