Смекни!
smekni.com

Разработка интерактивной среды обучения (стр. 1 из 2)

работе в Borland Delphi

Введение

На Земле каждый час увеличивается количество компьютеров. Они работают с

программами, количество которых тоже растет. Написаны все программы с

использованием разных языков программирования – С++, Delphi, Assembler. Изучение

таких языков мало уступает по сложности изучению обычных, человеческих. Это

очень сложный и трудоемкий процесс.

Для его облегчения и упрощения создаются различные обучающие программы.

Компьютер учит человека. Такой “учитель” никогда не устает, всегда объективен,

не обижается…

В данной работе представлена подобная программа, способная (как мне кажется),

обучить начинающего программиста основам визуальной среды Delphi и языка

Паскаль.

1 Описание программы

1. 1 Основные характеристики

Рассматриваемая программа имеет возможность использования уроков, хранящихся в

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

Файл урока представляет собой текстовый файл с расширением .LES; в нем сдержится

текст урока и специальные команды, заставляющие программу, выполнять некоторые

действия, например, выводить текст таким-то цветом, изменять размер шрифта,

вставлять картинки. Описание команд будет приведено ниже.

1. 2 Руководство для пользователя

Выполняемый файл называется LD. EXE. После его запуска на экране появляется

окно.

По нему “ползет” надпись: “Добро пожаловать в программу Learn Delphi!!!”. Для

входа в программу надо нажать кнопку “ОК”. Следующее окно показано на рис. 1. 2:

Рисунок 1. 2 – Окно выбора нужного урока

Пользователь выбирает нужный ему урок и нажимает кнопку “Загрузить”. После этого

он видит основное окно, в которое загружена первая страница урока. Это окно

представлено на рис. 1. 3 (стр. 8).

1. 3 Описание команд формата .LES

Как уже было сказано выше, данная программа имеет специальную систему команд.

Они делятся на три типа:

Текстовые

Графические

Логические.

Все команды предваряются символами /:, чтобы их можно было отличить от обычного

текста, выводимого на экран.

Все, что не имеет в начале символов /: будет выведено!

Рисунок 1. 3 – Окно урока

1. 3. 1 Текстовые команды

Таблица 1. 1 – Текстовые команды

/:size

размер шрифтаУстанавливает размер шрифта. Размер вводится сразу после

команды.

Пример:

Таблица 1. 1 – Текстовые команды (продолжение)

/:size

750

/:color

цветУстанавливает цвет выводимого текста. Поддерживает основные цвета:

red, blue, black, yellow, green, grey.

Пример:

/:color

red

/:style

стильУстанавливает стиль выводимого текста:

1 – нормальный,

2 – полужирный,

3 – подчеркнутый,

4 – курсив,

5 – перечеркнутый.

Пример:

/:style

5

/:font

имяЗагружает другой шрифт.

Пример:

/:font

Times New Roman

/:newpageДает знать системе, что дальше следует новая страница.

1. 3. 2 Графические команды

В данной версии программы имеется только одна графическая команда – /:picture,

которая загружает и помещает по указанным координатам картинку из файла в

формате .BMP.

Синтаксис:

/:Picture

X-координата рисунка.

Y-координата. рисунка.

имя файла рисунка

На одну страницу можнопоместить до трех картинок. Этого в большинстве случаев

достаточно.

1. 3. 3 Логические команды

Логическая команда в данной версии тоже одна. Это /:question.

Синтаксис:

/:question

текст вопроса

правильный ответ (1-"Да" 2-"Нет")

Результатом выполнения является присутствие на странице вопроса, обведенного

двойной красной рамкой. Справа, после текста вопроса, находятся две кнопки –

“Да” и “Нет”. Пользователь нажимает на кнопку, которая символизирует, по его,

юзера, мненеию, правильный ответ и кнопки сразу становятся неактивными.

Программа посчитывает количество правильных и неправильных ответов и в конце

работы выставляет оценку.

На странице не допускается размещать больше одного вопроса!

Версия программы, представленная в курсовой работе является DEMO-версией,

поэтому вообще в уроке допускается лишь одна логическая команда.

4 Описание внутренней структуры программы

1. 4. 1 Общая организация

Программа имеет четыре окна: frmMain, frmRun, frmLesson и frmRes. В табл. 1. 2

представлены функции, выполняемые каждым из них:

Таблица 1. 2 Функции, выполняемые окнами в программеНазвание окнаФункции,

которые выполняет в программе

frmMain Данное окно появляется, когда пользователь запускает программу.

Оно служит как-бы приглашением к работе. Показано данное окно на рис. 1.

1.

FrmRunПосле frmMain пользователь попадает в окно frmRun. Здесь он может

выбрать нужный урок и загрузить его или выйти из программы. Показано оно

на рис. 1. 2.

FrmLessonОсновное окно для обучения. В нем выводится текст урока, все

картинки и вопросы. В модуле этого окна описаны все подпрограммы для

обработки файлов уроков. Показано это окно на рис. 1. 3.

FrmResПосле прохождения урока пользователь должен знать, как он усвоил

материал. В данном окне помещена таблица с числом вопросов и правильных

ответов. Это очнь простое окно, поэтому не представлено на рисунках.

1. 4. 2 Алгоритмы, достойные рассмотрения

Одним из удачно реализованных алгоритмов автор считает реализацию распознавания

команд. В приложении А, в конце записки представлен исходный код программы, в

котором можно рассмотреть эти процедуры. Текст выводится в окне с помощью

объекта Canvas. Это вызвано необходимостью помещать картинки вперемежку с

текстом. Проще всего реализуется такая идея с применением Canvas’a. При

тестировании возникла проблема: при перерисовке окна (в случае временного

перекрытия другим окном и т. п.) объекты, выведенные с помощью Canvas’a, не

перерисовывались. Исчезали крупные фрагменты текста. В конце-концов проблема

решена: запускается обработчик события OnPaint.

Каждая страница урока загружается в специальную переменную (процедура LoadPage),

а потом выводится на экран процедурой DrawPage. При этом и распознаются команды.

4. 3 Перспективы

Данная программа, как мне кажется, является довольно перспективным “прожектом”.

В следующих версиях программы, которые, несомненно, появятся, будут

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

графических команд, а чуть позже – и специальный редактор для упрощения создания

уроков.

Кроме того, используя возможности Windows, можно будет “заставить” обучалку

взаимодействовать с системой программирования Delphi, что повысит наглядность

примеров и тогда Learn Delphi способна будет готовить неплохих специалистов в

области компьютерных технологий.

Но и это еще не все! LD – универсальная система, в файл урока можно записать

что-угодно, так что применять это средство можно и для обучения другим

предметам, даже несколько удаленным от информатики, как, например, история,

иностранные языки.

2 Типизированные константы

2. 1 Общая характеристика

Язык Паскаль, и, соответственно, Делфи, имеет специальный вид констант –

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

указатели, записи и значения процедурных типов. При установленной директиве

компилятора {$J+} они ведут себя как обычные инициализированные переменные. При

{$J-} значения не могут изменяться.

Синтаксис: Const имя_константы: тип =значение

Пример:Const Max: integer=200

2. 2 Константы-массивы

Чтобы задать какую-либо константу-массив, нужно описать значения всех элементов.

Значения описываются в круглых скобках, через запятую. Например:

Const Digits: array[1..5] of byte=(1, 2, 3, 4, 5)

В данном примере объявляется константа-массив Digits типа Byte. Ей сразу

присваиваются числа от 1 до 5.

Константы-массивы часто используются для задания строк, оканчивающихся символом

#0. В этом случае описание выглядит так:

Const Stroka: array[1..5] of char=(‘Hello’)

Константой может быть и многомерный массив. Для этого каждое его измерение

помещается в круглые скобки. Пример:

type TCube = array[0..1, 0..1, 0..1] of Integer;

const Maze: TCube = (((0, 1), (2, 3)), ((4, 5), (6,7)))

Создается массив Maze, где:

Maze[0,0,0] = 0

Maze[0,0,1] = 1

Maze[0,1,0] = 2

Maze[0,1,1] = 3

Maze[1,0,0] = 4

Maze[1,0,1] = 5

Maze[1,1,0] = 6

Maze[1,1,1] = 7

Все константы-массивы не могут содержать файловых переменных ни на каком уровне.

2. 3 Константы-записи

Для задания константы-записи необходимо заполнить ее поля согласно синтаксису:

Имя_поля: значение. Значения разделяются точками с запятой и все выражение

помещается в круглые скобки. Значения должны быть представлены константами. Поля

должны быть перечисленны в том порядке, в каком ониразмещены в описании записи.

Поле-описатель, если такое есть, должно быть заполнено; в случае записи с

вариантами только вариант, выбранный описателем может использоваться.

Примеры:

type

TPoint = record

X, Y: Single;

end;

TVector = array[0..1] of TPoint;

TMonth = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);

TDate = record

D: 1..31;

M: TMonth;

Y: 1900..1999;

end;

const

Origin: TPoint = (X: 0.0; Y: 0.0);

Line: TVector = ((X: -3.1; Y: 1.5), (X: 5.8; Y: 3.0));

SomeDay: TDate = (D: 2; M: Dec; Y: 1960);

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

2. 4 Процедурные константы

Для определения процедурной константы нужна процедура с подходящими параметрами.

Например:

function Calc(X, Y: Integer): Integer;

begin

...

end;

type TFunction = function(X, Y: Integer): Integer;

const MyFunction: TFunction = Calc;

После такого описания, функция вызывается:

I := MyFunction(5, 7)

Вы также можете присвоить константе значение nil.

2. 5 Константы-указатели

Такие константы содержат адрес в памяти переменной или подпрограммы. При их

объявлении констант нужно следить за тем, чтобы адрес, на который она указывает,

использовался. Примеры:

Константа содержит адрес переменной:

const PI: ^Integer = @I;

Константа содержит адрес подпрограммы:

const PF: Pointer = @MyFunction;

Вы можете объявить константу типа PChar со строчным значением, т. к. литералы