Разработка интерактивной среды обучения работе в Borland Delphi Введение На Земле каждый час увеличивается количество компьютеров. Они работают с программами, количество которых тоже растет. Написаны все программы с использованием разных языков программирования С, Delphi, Assembler. Изучение таких языков мало уступает по сложности изучению обычных, человеческих.
Это очень сложный и трудоемкий процесс. Для его облегчения и упрощения создаются различные обучающие программы. Компьютер учит человека. Такой учитель никогда не устает, всегда объективен, не обижается В данной работе представлена подобная программа, способная как мне кажется, обучить начинающего программиста основам визуальной среды Delphi и языка Паскаль. 1 Описание программы 1 Основные характеристики Рассматриваемая программа имеет возможность использования
уроков, хранящихся в файлах, что позволяет создавать уроки, не изменяя кода программы. Файл урока представляет собой текстовый файл с расширением .LES в нем сдержится текст урока и специальные команды, заставляющие программу, выполнять некоторые действия, например, выводить текст таким-то цветом, изменять размер шрифта, вставлять картинки. Описание команд будет приведено ниже. 2 Руководство для пользователя
Выполняемый файл называется LD. EXE. После его запуска на экране появляется окно. По нему ползет надпись Добро пожаловать в программу Learn Delphi. Для входа в программу надо нажать кнопку ОК. Следующее окно показано на рис. 2 Рисунок 2 Окно выбора нужного урока Пользователь выбирает нужный ему урок и нажимает кнопку
Загрузить. После этого он видит основное окно, в которое загружена первая страница урока. Это окно представлено на рис. 1. 3 стр. 3 Описание команд формата .LES Как уже было сказано выше, данная программа имеет специальную систему команд. Они делятся на три типа Текстовые Графические Логические. Все команды предваряются символами , чтобы их можно было отличить от обычного текста, выводимого на
экран. Все, что не имеет в начале символов будет выведено Рисунок 3 Окно урока 1 Текстовые команды Таблица 1 Текстовые команды size размер шрифтаУстанавливает размер шрифта. Размер вводится сразу после команды. ПримерТаблица 1 Текстовые команды продолжениеsize 750color цветУстанавливает цвет выводимого текста.
Поддерживает основные цвета red, blue, black, yellow, green, grey. Пример color redstyle стильУстанавливает стиль выводимого текста 1 нормальный, 2 полужирный, 3 подчеркнутый, 4 курсив, 5 перечеркнутый. Пример style 5font имяЗагружает другой шрифт. Пример font Times New RomannewpageДает знать системе, что дальше следует новая страница.
2 Графические команды В данной версии программы имеется только одна графическая команда picture, которая загружает и помещает по указанным координатам картинку из файла в формате .BMP. Синтаксис Picture X-координата рисунка. Y-координата. рисунка. имя файла рисунка На одну страницу можно поместить до трех картинок. Этого в большинстве случаев достаточно. 3 Логические команды
Логическая команда в данной версии тоже одна. Это question. Синтаксис question текст вопроса правильный ответ 1-Да 2-Нет Результатом выполнения является присутствие на странице вопроса, обведенного двойной красной рамкой. Справа, после текста вопроса, находятся две кнопки Да и Нет. Пользователь нажимает на кнопку, которая символизирует, по его, юзера, мненеию, правильный
ответ и кнопки сразу становятся неактивными. Программа посчитывает количество правильных и неправильных ответов и в конце работы выставляет оценку. На странице не допускается размещать больше одного вопроса Версия программы, представленная в курсовой работе является DEMO-версией, поэтому вообще в уроке допускается лишь одна логическая команда. 4 Описание внутренней структуры программы 1. 4. 1
Общая организация Программа имеет четыре окна frmMain, frmRun, frmLesson и frmRes. В табл. 1. 2 представлены функции, выполняемые каждым из них Таблица 2 Данное окно появляется, когда пользователь запускает программу.
Оно служит как-бы приглашением к работе. Показано данное окно на рис. 1.FrmRunПосле frmMain пользователь попадает в окно frmRun. Здесь он может выбрать нужный урок и загрузить его или выйти из программы. Показано оно на рис. 2.FrmLessonОсновное окно для обучения. В нем выводится текст урока, все картинки и вопросы.
В модуле этого окна описаны все подпрограммы для обработки файлов уроков. Показано это окно на рис. 3.FrmResПосле прохождения урока пользователь должен знать, как он усвоил материал. В данном окне помещена таблица с числом вопросов и правильных ответов. Это очнь простое окно, поэтому не представлено на рисунках. 2 Алгоритмы, достойные рассмотрения Одним из удачно реализованных алгоритмов автор считает реализацию
распознавания команд. В приложении А, в конце записки представлен исходный код программы, в котором можно рассмотреть эти процедуры. Текст выводится в окне с помощью объекта Canvas. Это вызвано необходимостью помещать картинки вперемежку с текстом. Проще всего реализуется такая идея с применением Canvas a. При тестировании возникла проблема при перерисовке окна в случае временного перекрытия другим окном
и т. п. объекты, выведенные с помощью Canvas a, не перерисовывались. Исчезали крупные фрагменты текста. В конце-концов проблема решена запускается обработчик события OnPaint. Каждая страница урока загружается в специальную переменную процедура LoadPage, а потом выводится на экран процедурой DrawPage. При этом и распознаются команды. 3 Перспективы
Данная программа, как мне кажется, является довольно перспективным прожектом. В следующих версиях программы, которые, несомненно, появятся, будут усовершенствованы возможности тестирования, добавятся несколько логических и графических команд, а чуть позже и специальный редактор для упрощения создания уроков. Кроме того, используя возможности Windows, можно будет заставить обучалку взаимодействовать с системой программирования
Delphi, что повысит наглядность примеров и тогда Learn Delphi способна будет готовить неплохих специалистов в области компьютерных технологий. Но и это еще не все LD универсальная система, в файл урока можно записать что-угодно, так что применять это средство можно и для обучения другим предметам, даже несколько удаленным от информатики, как, например, история, иностранные языки. 2 Типизированные константы 2. 1
Общая характеристика Язык Паскаль, и, соответственно, Делфи, имеет специальный вид констант типизированные. В отличие от обычных, констант, они могут содержать массивы, указатели, записи и значения процедурных типов. При установленной директиве компилятора J они ведут себя как обычные инициализированные переменные. При J- значения не могут изменяться. Синтаксис Const имяконстанты тип значение
ПримерConst Max integer200 2. 2 Константы-массивы Чтобы задать какую-либо константу-массив, нужно описать значения всех элементов. Значения описываются в круглых скобках, через запятую. Например Const Digits array1 5 of byte1, 2, 3, 4, 5 В данном примере объявляется константа-массив Digits типа Byte. Ей сразу присваиваются числа от 1 до 5. Константы-массивы часто используются для задания строк,
оканчивающихся символом 0. В этом случае описание выглядит так Const Stroka array1 5 of char Hello Константой может быть и многомерный массив. Для этого каждое его измерение помещается в круглые скобки. Пример type TCube array0 1, 0 1, 0 1 of Integer const Maze TCube 0, 1, 2, 3, 4, 5, 6,7 Создается массив Maze, где
Maze0,0,0 0 Maze0,0,1 1 Maze0,1,0 2 Maze0,1,1 3 Maze1,0,0 4 Maze1,0,1 5 Maze1,1,0 6 Maze1,1,1 7 Все константы-массивы не могут содержать файловых переменных ни на каком уровне. 2. 3 Константы-записи Для задания константы-записи необходимо заполнить ее поля согласно синтаксису Имяполя значение. Значения разделяются точками с запятой и все выражение помещается в круглые скобки. Значения должны быть представлены константами.
Поля должны быть перечисленны в том порядке, в каком они размещены в описании записи. Поле-описатель, если такое есть, должно быть заполнено в случае записи с вариантами только вариант, выбранный описателем может использоваться. Примеры type TPoint record X, Y Single end TVector array0 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 CalcX,
Y Integer Integer begin end type TFunction functionX, Y Integer Integer const MyFunction TFunction Calc После такого описания, функция вызывается I MyFunction5, 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 montharray1 12 of string20January,February,March,April,May , June,July,August,September,October,
Novem ber, December var dstring10 sstring30 s1string3 begin writeEnter date ddmmyyyy readlnd s if copyd,1,1 1 then begin if copyd,2,11 then s1st else if copyd,2,12 then s1nd else if copyd,2,13 then s1rd end else s1th scopyd,1,2s1 of monthstrtointcopyd,4,2 copyd,7,4 writelns readln end. Пример 2. unit Example2frm Этот пример показывает,как применяются константы-записи. Здесь строится многоугольник с применением метода
Polyline объекта Canvas,а координаты вершин многоугольника содержатся в массиве констант-записей. interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls type TForm1 classTForm Button1 TButton procedure Button1ClickSender TObject private Private declarations public Public declarations end var
Form1 TForm1 PolyLinesarray1 4 of tpointx170y20,x320y320,x20y320, x170y20 implementation R .DFM procedure TForm1.Button1ClickSender TObject begin form1.Canvas.Pen.Width3 form1.canvas.Polylinepolylines end end. Окно этой программы-примера приведено на рис. 2. 1 стр. 20 Рисунок 2. 1 Окно программы-примера Выводы В данной работе представлена образовательная программа,
разработанная в среде программирования Borland Delphi 5. К ней прилагается файл урока, описывающего основы Delphi. Но вообще, эту систему обучения можно заставить обучать какой-угодно дисциплине для этого достаточно создать файлы уроков и записать их имена в файл конфигурации. В процессе разработки программы детально изучены графические возможности
Делфи и объекта Canvas. Во второй части работы рассмотрены типизированные константы в Паскале, их применение. Даны примеры программ. Приложение А Ниже дан исходный код всех модулей программы unit Mainfrm interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls,
StdCtrls type TfrmMain classTForm Image1 TImage Timer1 TTimer Button1 TButton procedure Timer1TimerSender TObject procedure FormCreateSender TObject procedure Button1ClickSender TObject private Private declarations public Public declarations end var frmMain TfrmMain implementation uses runfrm
R .DFM var xinteger procedure TfrmMain.Timer1TimerSender TObject var rtrect begin r.Leftx r.Top150 r.Bottom170 r.Rightfrmmain.Width frmmain.canvas.fillrectr frmmain.canvas.TextOutx,151,Добро пожаловать в программу Learn Delphi decx,3 if x -720 then xfrmmain.width end procedure TfrmMain.FormCreateSender TObject begin frmmain.canvas.
Brush.Colorclsilver frmmain.canvas.pen.colorclblue xfrmmain.width frmmain.canvas.font.nameTimes New Roman frmmain.canvas.font.size19 frmmain.canvas.font.colorclblue end procedure TfrmMain.Button1ClickSender TObject begin frmmain.hide frmrun.show end end. unit runfrm interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, checklst type Tfrmrun classTForm lblessons
TListBox Label1 TLabel Button1 TButton Button2 TButton procedure FormCloseSender TObject var Action TCloseAction procedure FormCreateSender TObject procedure lblessonsDblClickSender TObject procedure lblessonsKeyPressSender TObject var Key Char procedure Button2ClickSender TObject procedure
Button1ClickSender TObject private Private declarations public Public declarations end var frmrun Tfrmrun lessonnamestring40 implementation uses Mainfrm, lessonfrm R .DFM type tconfigrecord namestring50 filenamestring40 end var namesarray1 100 of string40 procedure loadlesson begin lessonnamenamesfrmrun.lblessons.iteminde x1 frmrun.hide frmlesson.show end procedure Tfrmrun.FormCloseSender TObject var
Action TCloseAction begin halt end procedure Tfrmrun.FormCreateSender TObject var ffile of tconfig lessontconfig nbyte begin n0 assignfilef,ld.cfg resetf while not eoff do begin incn readf,lesson namesnlesson.filename lblessons.Items.AddУрок inttostrn lesson.name end closefilef end procedure Tfrmrun.lblessonsDblClickSender TObject begin loadlesson end procedure
Tfrmrun.lblessonsKeyPressSender TObject var Key Char begin if key13 then loadlesson end procedure Tfrmrun.Button2ClickSender TObject begin close end procedure Tfrmrun.Button1ClickSender TObject begin loadlesson end end. unit lessonfrm interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Buttons, StdCtrls type TfrmLesson classTForm pic1timage pic2timage pic3timage
SpeedButton1 TSpeedButton SpeedButton2 TSpeedButton SpeedButton3 TSpeedButton cmdYes TButton cmdNo TButton procedure FormCloseSender TObject var Action TCloseAction procedure SpeedButton3ClickSender TObject procedure FormPaintSender TObject procedure FormShowSender TObject procedure
FormDeactivateSender TObject procedure Timer1TimerSender TObject procedure FormCreateSender TObject procedure cmdYesClickSender TObject procedure cmdNoClickSender TObject procedure SpeedButton2ClickSender TObject procedure SpeedButton1ClickSender TObject procedure FormActivateSender TObject private
Private declarations public nq,npqbyte end var frmLesson TfrmLesson implementation R .DFM uses runfrm, resfrm var ftextfile textYinteger first,nopaintboolean strpagearray1 80 of string80 numpage,ap,np,sp,ppbyte прав. ответ кол-во вопросов правильных ответов pagesarray0 100 of byte fontemptfont pagefontsarray1 100 of tfont procedure loadpage begin pagefontsnumpagefrmlesson.canvas.font sp1 incpp pagespppagespp-1 while not eoff do begin readlnf,strpagesp incsp incpagespp if
strpagesp-1newpage then exit end end procedure drawpage label 1 var sstring x,yinteger npictimage qtcolor i,nbyte wtfontstyles rtrect temptfont begin frmlesson.pic1.left0 frmlesson.Canvas.TextOut3,3, np1 r.Left0 r.Top0 r.Rightfrmlesson.Width r.Bottomfrmlesson.Height-80 frmlesson.Canvas.FillRectr if not nopaint then begin npicfrmlesson.pic1 frmlesson.pic1.hide frmlesson.pic2.hide frmlesson.
pic3.hide end frmlesson.canvas.fillrectr i1 while i sp-1 do begin sstrpagei inci if squestion then begin tempfrmlesson.Canvas.Font frmlesson.Canvas.Font.Colorclred frmlesson.Canvas.pen.Colorclred r.Toptexty r.Left3 r.Rightfrmlesson.Width-10 r.Bottomtexty38 frmlesson.Canvas.Rectangler frmlesson.cmdyes.toptexty6 frmlesson.cmdYes.Leftfrmlesson.width-170 frmlesson.cmdno.toptexty6 frmlesson.cmdno.
Leftfrmlesson.width-90 frmlesson.cmdYes.Show frmlesson.cmdno.show frmlesson.Canvas.Fonttemp sstrpagei frmlesson.Canvas.TextOut5,texty3,s apstrtointstrpagei1 inctexty,40 inci,2 end else if spicture then begin inci,3 if nopaint then goto 1 xstrtointstrpagei-3 ystrtointstrpagei-2 sstrpagei-1 npic.Enabledtrue npic.Picture.LoadFromFiles npic.leftx npic.topy npic.visibletrue if np1 then begin np2 npicfrmlesson.pic2 end else npicfrmlesson.pic3 1 end else if ssize then begin nstrtointstrpagei
inci frmlesson.canvas.Font.Sizen end else if sfont then begin sstrpagei inci frmlesson.canvas.Font.Names end else if sstyle then begin nstrtointstrpagei inci case n of 1w 2wfsbold 4wfsitalic 3wfsunderline 5wfsstrikeout end frmlesson.canvas.Font.Stylew end else if scolor then begin sstrpagei inci if sblack then qclblack if sred then qclred if sblue then qclblue if sgreen then qclgreen if sgray then qclgray if syellow then qclyellow frmlesson.canvas.font.Colorq end else if snewpage then exit else begin frmlesson.
Canvas.TextOut2,texty,s inctexty,frmlesson.Canvas.Font.Size10 end end end procedure TfrmLesson.FormCloseSender TObject var Action TCloseAction begin closefilef if nq 0 then frmresult.show else frmrun.Show end procedure TfrmLesson.SpeedButton3ClickSender TObject begin frmlesson.hide frmresult.show end procedure
TfrmLesson.FormPaintSender TObject begin texty2 if first then begin firstfalse fontempfrmlesson.canvas.font drawpage end else begin nopainttrue drawpage nopaintfalse end end procedure TfrmLesson.FormShowSender TObject var s,namestring begin nq0 firsttrue nopainttrue assignfilef,lessonname resetf while not eoff do begin readlnf,s if squestion then incnq end closefilef resetf readlnf,name frmlesson.Captionname textY2 loadpage frmlesson.Canvas.textout20,20, end procedure
TfrmLesson.FormDeactivateSender TObject begin nopainttrue end procedure TfrmLesson.Timer1TimerSender TObject var qtcolor x,yinteger begin if not frmlesson.Visible then exit xrandomfrmlesson.Width yrandomfrmlesson.Height if x in pic1.Left pic1.Leftpic1.Width or y in pic1.Top pic1.Toppic1.Height then exit qfrmlesson.canvas.pixelsx,y if q clwhite then begin nopainttrue texty1 drawpage end frmlesson.canvas.pixelsx,yclred
end procedure TfrmLesson.FormCreateSender TObject begin npq0 ap1 pp0 numpage1 end procedure TfrmLesson.cmdYesClickSender TObject begin if ap1 then incnpq frmlesson.cmdYes.enabledfalse frmlesson.cmdno.enabledfalse end procedure TfrmLesson.cmdNoClickSender TObject begin if ap2 then incnpq frmlesson.cmdYes.enabledfalse frmlesson.cmdno.enabledfalse end procedure TfrmLesson.SpeedButton2ClickSender TObject begin canvas.
Rectangle0,0,width,height pic1.Hide pic2.Hide pic3.Hide frmlesson.Repaint pic1.show pic1.hide incnumpage if not speedbutton1.enabled then speedbutton1.Enabledtrue frmlesson.cmdYes.hide frmlesson.cmdno.hide frmlesson.pic1.hide frmlesson.pic2.hide frmlesson.pic3.hide texty1 sp0 loadpage drawpage if eoff then speedbutton2.Enabledfalse end procedure TfrmLesson.SpeedButton1ClickSender TObject var ibyte qinteger sstring100 begin pic1.Hide pic2.Hide pic3.Hide
frmlesson.Repaint decnumpage if not speedbutton2.enabled then speedbutton2.Enabledtrue closefilef resetf canvas.Fontpagefontsnumpage if numpage1 then begin readlnf speedbutton1.Enabledfalse end else begin i0 while i numpage-1 do begin readlnf,s if scolor then begin readlnf,s if sblack then qclblack if sred then qclred if sblue then qclblue if sgreen then qclgreen if sgray then qclgray if syellow then qclyellow frmlesson.canvas.font.Colorq end if sname then begin readlnf,s canvas.
Font.Names end if ssize then begin readlnf,q canvas.Font.Sizeq end if snewpage then inci end end for i1 to pagespp-2 do readlnf for i1 to pp do pagespp0 decpp,2 if pp0 then begin readlnf frmlesson.canvas.Fontfontemp end frmlesson.cmdYes.hide frmlesson.cmdno.hide frmlesson.pic1.hide frmlesson.pic2.hide frmlesson.pic3.hide texty1 sp0 loadpage if pp1 then speedbutton1.enabledfalse drawpage end procedure
TfrmLesson.FormActivateSender TObject begin formcreatesender end end. unit resfrm interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids type TfrmResult classTForm StringGrid1 TStringGrid Button1 TButton procedure FormActivateSender TObject procedure Button1ClickSender TObject procedure
FormCloseSender TObject var Action TCloseAction private Private declarations public Public declarations end var frmResult TfrmResult implementation uses runfrm, lessonfrm R .DFM procedure TfrmResult.FormActivateSender TObject begin with stringgrid1 do begin colwidths0150 cells1,0Количество cells0,1Вопросов cells0,2Правильных ответов cells1,1inttostrfrmlesson.nq cells1,2inttostrfrmlesson.npq
end end procedure TfrmResult.Button1ClickSender TObject begin frmresult.Hide frmrun.Show end procedure TfrmResult.FormCloseSender TObject var Action TCloseAction begin actioncahide frmrun.Show end end.
! |
Как писать рефераты Практические рекомендации по написанию студенческих рефератов. |
! | План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом. |
! | Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач. |
! | Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты. |
! | Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ. |
→ | Виды рефератов Какими бывают рефераты по своему назначению и структуре. |