- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Описание языка PascalABC.NET - W Cat
Шрифт:
Интервал:
Закладка:
VerticalWall(5,1,5);
HorizontalWall(5,1,4);
RobotEnd(6,2);
Tag(6,2);
end;
begin
RegisterGroup('myrob','Мои задания для Робота','RobTasks',2);
RegisterTask('myrob1',FirstRob);
end.
Наберем и запустим основную программу (сохранять ее в каком-либо файле не требуется):
uses Robot, RobTasks;
begin
Task('myrob1');
end.
Будет выведено следующее задание для Робота:
Добавим задание, в котором конфигурация поля случайна:
procedure SecondRob;
var n,i: integer;
begin
TaskText('Задание myrob2. Закрасить клетки под закрашенными');
n:=Random(4)+7;
Field(n,4);
RobotBeginEnd(1,3,n,3);
MarkPainted(n,2);
Tag(n,3);
for i:=2 to n-1 do
if Random(3)=1 then
begin
MarkPainted(i,2);
Tag(i,3);
end;
end;
Добавим вызов процедуры регистрации для данного задания; в результате секция инициализации примет следующий вид:
begin
RegisterGroup('myrob','Мои задания для Робота','RobTasks',2);
RegisterTask('myrob1',FirstRob);
RegisterTask('myrob2',SecondRob);
end.
Изменим основную программу:
uses Robot, RobTasks;
begin
Task('myrob2');
end.
При запуске этой программы в окне исполнителя Робот будет выведено новое задание:
При первом запуске программы с подключенным модулем DMTasks созданная нами группа была автоматически зарегистрирована в мастере по созданию программ-заготовок PT4Load. Если теперь нажать кнопку и в появившемся окне PT4Load ввести префикс RB в поле Задание", то окно примет следующий вид:
Мы видим, что группа заданий myrob появилась в списке доступных групп для исполнителя Робот. Наберем имя задания myrob1:
После нажатия Enter в рабочем каталоге будет создан новый файл RBmyrob1.pas со следующим содержимым:
uses Robot, RobTasks;
begin
Task('myrob1');
end.
Можно приступать к решению собственноручно разработанной задачи :)
Модуль DMTaskMaker
Типы модуля DMTaskMaker
type TaskProcType = procedure;
Тип процедуры, генерирующей конкретное задание. Каждое задание реализуется в виде отдельной процедуры; для связывания этой процедуры с именем задания необходимо использовать процедуру RegisterTask, описываемую ниже.
Процедуры модуля DMTaskMaker
procedure Field(szx,szy: integer);
Задает поле Чертежника размера szx на szy клеток.
procedure DoToPoint(x,y: integer);
Перемещает перо Чертежника-постановщика заданий в точку с координатами (x, y).
procedure DoOnVector(dx,dy: integer);
Перемещает перо Чертежника-постановщика заданий в точку с координатами (x, y).
procedure DoPenUp;
Поднимает перо Чертежника-постановщика заданий.
procedure DoPenDown;
Опускает перо Чертежника-постановщика заданий.
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 должна вызываться в секции инициализации модуля, содержащего реализацию новой группы заданий для Чертежника. Порядок вызова этих процедур может быть произвольным.
Создание заданий для исполнителя Чертежник
Опишем последовательность создания группы заданий для исполнителя Чертежник. Создадим модуль DMTasks.pas со следующим текстом:
unit DMTasks;
interface
uses DMTaskMaker;
implementation
procedure FirstDM;
var i,a: integer;
begin
TaskText('Задание mydm1. Начертите, используя цикл');
Field(14,8);
DoToPoint(7,7);
a:=6;
for i:=1 to 6 do
begin
DoPenDown;
DoOnVector(a,-a);
DoOnVector(-a,a);
DoOnVector(-a,-a);
DoOnVector(a,a);
Dec(a);
DoPenUp;
DoOnVector(0,-1);
end;
end;
begin
RegisterGroup('mydm','Мои задания для Чертежника','DMTasks',2);
RegisterTask('mydm1',FirstDM);
end.
Наберем и запустим основную программу (сохранять ее в каком-либо файле не требуется):
uses Drawman, DMTasks;
begin
Task('mydm1');
end.
Будет выведено следующее задание для Чертежника:
Добавим задание на разработку процедуры:
procedure DoCross;
begin
DoPenDown;
DoOnVector(1,0); DoOnVector(0,-1);
DoOnVector(1,0); DoOnVector(0,-1);
DoOnVector(-1,0); DoOnVector(0,-1);
DoOnVector(-1,0); DoOnVector(0,1);
DoOnVector(-1,0); DoOnVector(0,1);
DoOnVector(1,0); DoOnVector(0,1);
DoPenUp;
end;
procedure SecondDM;
begin
TaskText('Задание mydm2. Начертите, используя процедуру Cross');
Field(18,12);
DoToPoint(3,8);
DoCross;
DoToPoint(8,4);
DoCross;
DoToPoint(12,11);
DoCross;
DoToPoint(15,6);
DoCross;
end;
Добавим вызов процедуры регистрации для данного задания; в результате секция инициализации примет следующий вид:
begin
RegisterGroup('mydm','Мои задания для Чертежника','DMTasks',2);
RegisterTask('mydm1',FirstDM);
RegisterTask('mydm2',SecondDM);
end.
Изменим основную программу:
uses Drawman, DMTasks;
begin
Task('mydm2');
end.
При запуске этой программы в окне исполнителя Чертежник будет выведено новое задание:
При первом запуске программы с подключенным модулем DMTasks созданная нами группа была автоматически зарегистрирована в мастере по созданию программ-заготовок PT4Load. Если теперь нажать кнопку и в появившемся окне PT4Load ввести префикс DM в поле Задание", то окно примет следующий вид:
Мы видим, что группа заданий mydm появилась в списке доступных групп для исполнителя Чертежник. Наберем имя задания mydm1:
После нажатия клавиши Enter в рабочем каталоге будет создан новый файл DMmydm1.pas со следующим содержимым:
uses Drawman, DMTasks;
begin
Task('mydm1');
end.
Можно попытаться решить :)
Модуль PT4TaskMakerNET: общее описание
Назначение и состав конструктора учебных заданийКонструктор учебных заданий PT4TaskMaker позволяет разрабатывать новые группы заданий для электронного задачника Programming Taskbook.
Начиная с версии 4.11, новые группы заданий, доступные для всех поддерживаемых задачником сред, можно разрабатывать не только на языке Pascal, но и на языках C++ и C#, причем конструктор для языка Pascal можно использовать и в среде PascalABC.NET. Конструктор для среды PascalABC.NET реализован в виде модуля PT4TaskMakerNET.
Каждая группа учебных заданий оформляется в виде отдельной динамической библиотеки (dll-файла). Dll-файлы с новыми группами могут находиться либо в рабочем каталоге учащегося, либо в подкаталоге Lib системного каталога задачника. Подключение новых групп происходит автоматически при инициализации задания, поэтому вид проекта-заготовки при работе с новыми группами не отличается от стандартного вида проекта, ориентированного на базовые группы заданий. Кроме того, новые группы автоматически добавляются в список доступных групп в программных модулях PT4Demo и PT4Load. Созданные в виде dll-файлов новые группы заданий могут использоваться не только в любых средах программирования, поддерживаемых универсальным вариантом задачника, но и в среде PascalABC.NET; для этого достаточно разместить dll-файл в подкаталоге PT4Lib системного каталога PascalABC.NET или в рабочем каталоге учащегося.
Обзор элементов конструктора учебных заданийКонструктор учебных заданий представляет собой набор констант, функций и процедур, предназначенных для определения каждого из входящих в группу заданий, а также для настройки свойств группы в целом.