Описание языка PascalABC.NET - W Cat
Шрифт:
Интервал:
Закладка:
property FontColor: GColor;
Цвет шрифта графического объекта
property Text: string;
Текст внутри графического объекта
property TextVisible: boolean;
Видимость текста внутри графического объекта
property TextScale: real;
Масштаб текста относительно размеров графического объекта, 0<=TextScale<=1. При TextScale=1 текст занимает всю ширину или высоту объекта. По умолчанию TextScale=0.8
property FontName: string;
Имя шрифта для вывода свойства Text
property FontStyle: FontStyleType;
Стиль шрифта для вывода свойства Text
property Number: integer;
Целое число, выводимое в центре графического объекта. Для вывода используется свойство Text
property RealNumber: real;
Вещественное число, выводимое в центре графического объекта. Для вывода используется свойство Text. Вещественное число выводится с одним знаком после десятичной точки
property Owner: ContainerABC;
Владелец графического объекта, ответственный также за перерисовку графического объекта внутри себя (по умолчанию nil)
Методы, унаследованные от класса ObjectABCprocedure MoveTo(x,y: integer);
Перемещает левый верхний угол графического объекта к точке (x, y)
procedure MoveOn(a,b: integer);
Перемещает графический объект на вектор (a, b)
procedure Move; override;
Перемещает графический объект на вектор, задаваемый свойствами dx, dy
procedure Scale(f: real); override;
Масштабирует графический объект в f раз (f>1 - увеличение, 0<f<1 - уменьшение)
procedure ToFront;
Переносит графический объект на передний план
procedure ToBack;
Переносит графический объект на задний план
function Bounds: System.Drawing.Rectangle;
Возвращает прямоугольник, определяющий границы графического объекта
function PtInside(x,y: integer): boolean; override;
Возвращает True, если точка (x, y) находится внутри графического объекта, и False в противном случае
function Intersect(g: ObjectABC): boolean;
Возвращает True, если изображение данного графического объекта пересекается с изображением графического объекта g, и False в противном случае. Белый цвет считается прозрачным и не принадлежащим объекту
function IntersectRect(r: System.Drawing.Rectangle): boolean;
Возвращает True, если прямоугольник графического объекта пересекается прямоугольником r, и False в противном случае
function Clone0: ObjectABC; override;
Возвращает клон графического объекта
procedure Draw(x,y: integer; g: Graphics); override;
Защищенная. Не вызывается явно. Переопределяется для каждого графического класса. Рисует объект на объекте g: Graphics
destructor Destroy;
Уничтожает графический объект
Модуль Timers
Модуль Timers содержит класс Timer, позволяющий выполнять определенные действия через равные промежутки времени. В конструкторе класса Timer указывается промежуток времени и имя процедуры без параметров - обработчика события таймера, вызываемой через указанный промежуток времени.
Класс Timer имеет следующий интерфейс:
type
Timer = class
constructor (ms: integer; TimerProc: procedure);
procedure Start;
procedure Stop;
property Enabled: boolean read write;
property Interval: integer read write;
end;
Члены класса Timer описаны в следующей таблице:
constructor (ms: integer; TimerProc: procedure);
Создает таймер, выполняющий каждые ms миллисекунд действие, содержащееся в процедуре без параметров TimerProc, называемой обработчиком таймера. Созданный таймер необходимо запустить, вызвав метод Start
procedure Start;
Запускает таймер
procedure Stop;
Останавливаетает таймер
property Enabled: boolean read write;
Запущен ли таймер
property Interval: integer read write;
Промежуток времени между вызовами обработчика таймера
Пример использования таймера.
Средства обучения в PascalABC.NET
Исполнители
Что такое исполнители
Исполнителем будем называть устройство, способное выполнять определенный набор команд. Обычно с исполнителем связана некоторая среда, в которой он работает.
Традиционно концепция исполнителей используется для быстрого обучения основным конструкциям языка программирования при проведении занятий в средних классах школы. В PascalABC.NET реализованы исполнители Робот и Чертежник, описанные в учебнике А. Г. Кушниренко, Г. В. Лебедева и Я. Н. Зайдельмана "Информатика 7-9 классы", М., 2001. Следует отметить, что данный учебник уже не используется для обучения в школе, однако он является наиболее удачным и по интеграции исполнителей в процесс обучения начальному программированию, и по набору задач.
Кроме того, исполнители в PascalABC.NET активно используются в системе проверяемых заданий -- одной из ключевых учебных особенностей системы PascalABC.NET.
См. также пример выполнения задания a1 для исполнителя Робот.
Исполнитель Робот
Исполнитель Робот действует на прямоугольном клеточном поле. Между некоторыми клетками, а также по периметру поля находятся стены. Основная цель Робота ¦-- закрасить указанные клетки и переместиться в конечную клетку.
Исполнитель Робот и поле, на котором он работает, отображаются следующим образом:
Здесь большой желтый квадрат изображает Робота, маленький желтый квадрат в левом верхнем углу клетки -- конечное положение Робота, черными точками помечены клетки, которые надо закрасить.
Команды исполнителя Робот содержатся в модуле Robot:
Right – перемещает Робота вправо;
Left – перемещает Робота влево;
Up – перемещает Робота вверх;
Down – перемещает Робота вниз;
Paint – закрашивает текущую ячейку;
WallFromLeft – возвращает True если слева от Робота стена;
WallFromRight – возвращает True если справа от Робота стена;
WallFromUp – возвращает True если сверху от Робота стена;
WallFromDown – возвращает True если снизу от Робота стена;
FreeFromLeft – возвращает True если слева от Робота свободно;
FreeFromRight – возвращает True если справа от Робота свободно;
FreeFromUp – возвращает True если сверху от Робота свободно;
FreeFromDown – возвращает True если снизу от Робота свободно;
CellIsPainted – возвращает True если ячейка, в которой находится Робот, закрашена;
CellIsFree – возвращает True если ячейка, в которой находится Робот, не закрашена.
Для вызова задания для исполнителя Робот используется следующий шаблон программы:
uses Robot;
begin
Task('c1');
Здесь Task -- процедура, содержащаяся в модуле Robot и вызывающая задание с указанным именем.
Имеются следующие группы заданий для исполнителя Робот:
a – вводные задания;
c – цикл с параметром;
if – логические выражения;
w – циклы с условием;
сif – циклы + логические выражения;
count – переменные-счетчики;
cc – вложенные циклы;
p – процедуры без параметров;
pp – процедуры с параметрами.
Для создания стандартного поля размера 9 x 11 используется процедура StandardField без параметров, а для создания поля размера N x M -- процедура Field(N,M). Робот при этом помещается в центр поля.
Исполнитель Чертежник
Исполнитель Чертежник предназначен для построения рисунков и чертежей на плоскости с координатами. Чертежник имеет перо, которое он может поднимать, опускать и перемещать. При перемещении опущенного пера за ним остается след.
Исполнитель Чертежник и поле, на котором он работает, отображаются на экране следующим образом:
Здесь маленький квадрат изображает Чертежника, красным цветом изображены отрезки, которые надо нарисовать, а синим -- уже нарисованные Чертежником отрезки. Когда перо Чертежника опущено, он изображается квадратом меньшего размера.
Команды исполнителя Чертежник содержатся в модуле Drawman:
ToPoint(x,y) – перемещает перо Чертежника в точку (x,y);
OnVector(a,b)– перемещает перо Чертежника на вектор (a,b);
PenUp – поднимает перо Чертежника;
PenDown – опускает перо Чертежника.
Для вызова задания для исполнителя Чертежник используется следующий шаблон программы:
uses Drawman;
begin
Task('c1');
В конце программы перо Чертежника должно быть поднято и находиться в начале координат.
Здесь Task ¦-- процедура, содержащаяся в модуле Drawman и вызывающая задание с указанным именем.