Министерство образования Украины
Харьковский государственный технический университет
радиоэлектроники
Кафедра ПО ЭВМ
Курсовой проект по дисциплине:
«Основы программирования и алгоритмические языки»
Тема:
«Разработка интерактивной среды обучения работе в Borland
Delphi»
|Работу выполнил: |Руководитель: | |Ст. гр. ИПД-99-1 | | |Иванов А.
В. | | | |Работа защищена с оценкой: | | | | | | | | |Комиссия: | |
|доц. Ерохин А. Л. | | |доц. Четвериков Г. Г. | | |проф. Дударь З.
В. |
Харьков, 2000 г.
ХГТУРЭ
Кафедра ПО ЭВМ
Задание на курсовую работу по дисциплине «ОП и АЯ» ст. гр. ИПД-99-1
Иванова А. В.
Тема: «Разработка интерактивной среды обучения работе в Borland
Delphi»
І Разработать интерактивную среду обучения работе в Delphi, котрая
имела бы такие возможности:
. Подавать учебный материал в наглядном виде
. Иметь возможности иллюстрирования
. Иметь средства для тестирования приобретенных знаний
ІІ Типизированные константы. Их синтаксис и применение.
Дата выдачи задания: Дата защиты:
Студент: Иванов А. В.
Руководитель:
Реферат
Данная работа содержит 34 страницы, включая приложение; 2 таблицы;
4 иллюстрации.
Цель работы: создать, используя систему программированя Delphi,
обучающую программу
Объект исследования: обучающая система, разработанная в Delphi 5,
использующая для хранения уроков текстовые файлы, подобные по
структуре файлам HTML. В перспективе планируется объединение
формата уроков с данным форматом.
Ключевые слова: DELPHI, ОБУЧАЮЩАЯ СИСТЕМА, ТИПИЗИРОВАННЫЕ КОНСТАНЫ,
ФОРМАТ ФАЙЛОВ УРОКОВ, ПЕРСПЕКТИВЫ
Содержание
Реферат 3 Содержание 4 Введение 5 1 Описание программы 6 1. 1
Основные характеристики 6 1. 2 Руководство для пользователя 6 1. 3
Описание команд формата .LES 7
1. 3. 1 Текстовые команды 8
1. 3. 2 Графические команды 9
1. 3. 3 Логические команды 10 1. 4 Описание внутренней структуры
программы 11
1. 4. 1 Общая организация 11
1. 4. 2 Алгоритмы, достойные рассмотрения 11
1. 4. 3 Перспективы 12 2 Типизированные константы 13 2. 1 Общая
характеристика 13 2. 2 Константы-массивы 13 2. 3 Константы-записи
14 2. 4 Процедурные константы 15 2. 5 Константы-указатели 16 2. 6
Примеры программ 17 Выводы 21 Перечень ссылок 22 Приложение А
23
Введение
На Земле каждый час увеличивается количество компьютеров. Они
работают с программами, количество которых тоже растет. Написаны
все программы с использованием разных языков программирования –
С++, Delphi, Assembler. Изучение таких языков мало уступает по
сложности изучению обычных, человеческих. Это очень сложный и
трудоемкий процесс.
Для его облегчения и упрощения создаются различные обучающие
программы. Компьютер учит человека. Такой «учитель» никогда не
устает, всегда объективен, не обижается…
В данной работе представлена подобная программа, способная (как мне
кажется), обучить начинающего программиста основам визуальной среды
Delphi и языка Паскаль.
1 Описание программы
1. 1 Основные характеристики
Рассматриваемая программа имеет возможность использования уроков,
хранящихся в файлах, что позволяет создавать уроки, не изменяя кода
программы.
Файл урока представляет собой текстовый файл с расширением .LES; в
нем сдержится текст урока и специальные команды, заставляющие
программу, выполнять некоторые действия, например, выводить текст
таким-то цветом, изменять размер шрифта, вставлять картинки.
Описание команд будет приведено ниже.
1. 2 Руководство для пользователя
Выполняемый файл называется LD. EXE. После его запуска на экране
появляется окно, показанное на рис. 1. 1
[pic]
Рисунок 1. 1 – Окно, возникающее после запуска
По нему «ползет» надпись: «Добро пожаловать в программу Learn
Delphi!!!». Для входа в программу надо нажать кнопку «ОК».
Следующее окно показано на рис. 1. 2:
[pic]
Рисунок 1. 2 – Окно выбора нужного урока
Пользователь выбирает нужный ему урок и нажимает кнопку
«Загрузить». После этого он видит основное окно, в которое
загружена первая страница урока. Это окно представлено на рис. 1. 3
(стр. 8).
В правом нижнем углу окна помещены три кнопки SpeedButton: Переход
на предыдущую страницу
Переход на следующую страницу
Выход из текущего урока (появляется окно выбора уроков).
1. 3 Описание команд формата .LES
Как уже было сказано выше, данная программа имеет специальную
систему команд. Они делятся на три типа: . Текстовые . Графические
. Логические.
Все команды предваряются символами /:, чтобы их можно было отличить
от обычного текста, выводимого на экран.
Все, что не имеет в начале символов /: будет выведено!
[pic]
Рисунок 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 со строчным значением, т.
к. литералы хранятся в памяти как глобальные константы.
Адреса локальных (размещенных в стеке) и динамических переменных не
могут быть помещены в подобную константу.
2. 6 Примеры программ
Ниже приведены примеры программ, использующих типизированные
константы. Они написаны в Delphi, но в виде консольного приложения
– чтобы не загромождать текст программ описанием форм и других
объектов, к которым данная задача не имеет отношения.
Тексты программ-примеров помещены на дискете с курсовой работой в
директории EXAMPLES.
Пример 1.
program Example1; {$APPTYPE CONSOLE} {Данная программа-пример
демонстрирует применение констант-массивов. Преобразует численный
формат даты в обычный, с названием месяца} uses SysUtils;
const month:array[1..12] of
string[20]=('January','February','March','April','May',
'June','July','August','September','October','November',
'December'); var d:string[10]; s:string[30]; s1:string[3]; begin
write('Enter date (dd:mm:yyyy): '); readln(d); s:=''; if
copy(d,1,1)'1' then begin if copy(d,2,1)='1' then s1:='`st' else if
copy(d,2,1)='2' then s1:='`nd' else if copy(d,2,1)='3' then
s1:='`rd' end else s1:='`th'; s:=copy(d,1,2)+s1+' of
'+month[strtoint(copy(d,4,2))]+' ' +copy(d,7,4); writeln(s); readln
end.
Пример 2.
unit Example2frm;
{Этот пример показывает,как применяются константы-записи. Здесь
строится многоугольник (с применением метода Polyline объекта
Canvas),а координаты вершин многоугольника содержатся в массиве
констант-записей.}
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm)
Button1: TButton; procedure Button1Click(Sender: TObject);
private
{ Private declarations } public
{ Public declarations } end;
var Form1: TForm1; PolyLines:array[1..4] of
tpoint=((x:170;y:20),(x:320;y:320),(x:20;y:320), (x:170;y:20));
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin
form1.Canvas.Pen.Width:=3; form1.canvas.Polyline(polylines)
end;
end.
Окно этой программы-примера приведено на рис. 2. 1 (стр. 20):
[pic]
Рисунок 2. 1 – Окно программы-примера
Выводы
В данной работе представлена образовательная программа,
разработанная в среде программирования Borland Delphi 5. К ней
прилагается файл урока, описывающего основы Delphi. Но вообще, эту
систему обучения можно «заставить» обучать какой-угодно дисциплине
– для этого достаточно создать файлы уроков и записать их имена в
файл конфигурации.
В процессе разработки программы детально изучены графические
возможности Делфи и объекта Canvas.
Во второй части работы рассмотрены типизированные константы в
Паскале, их применение. Даны примеры программ.
Перечень ссылок
1. Культин Н. Delphi 4. Программирование на Object Pascal. BHV,
Санкт- Петербург, 1999. – 480 с., ил.
2. Дэн Оузьер и др. Delphi 3. Освой самостоятельно. М.:
“Издательство БИНОМ”, 1998 г. – 560 с.: ил.
3. Бондарев В. М., Рублинецкий В. И., Качко Е. Г. Основы
программирования. Харьков: Фолио; Ростов н/Д: Феникс, 1998 – 368
с.
4. Справочная система Delphi
5. Фаронов В. В. Delphi 4. Учебный курс. М.: «Нолидж», 1999 – 464
с., ил.
Приложение А
Ниже дан исходный код всех модулей программы
unit Mainfrm;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, ExtCtrls, StdCtrls;
type TfrmMain = class(TForm)
Image1: TImage;
Timer1: TTimer;
Button1: TButton; procedure Timer1Timer(Sender: TObject); procedure
FormCreate(Sender: TObject); procedure Button1Click(Sender:
TObject); private
{ Private declarations } public
{ Public declarations } end;
var frmMain: TfrmMain;
implementation
uses runfrm;
{$R *.DFM}
var x:integer;
procedure TfrmMain.Timer1Timer(Sender: TObject); var r:trect; begin
r.Left:=x; r.Top:=150; r.Bottom:=170; r.Right:=frmmain.Width;
frmmain.canvas.fillrect(r); frmmain.canvas.TextOut(x,151,'Добро
пожаловать в программу "Learn Delphi" !!!'); dec(x,3); if x
Разработка интерактивной среды обучения работе
49
0
9 минут
Темы:
Понравилась работу? Лайкни ее и оставь свой комментарий!
Для автора это очень важно, это стимулирует его на новое творчество!