Міністерство освіти України p>
Харківський державний технічний університет радіоелектроніки p>
Кафедра ПЗ ЕОМ p>
Курсовий проект з дисципліни: p>
«Основи програмування та алгоритмічні мови » p>
Тема: p>
« Розробка інтерактивного середовища навчання роботі в Borland Delphi » p>
| Виконав: | Руководитель: |
| Ст. гр. ИПД-99-1 | |
| Іванов А. В. | |
| | Робота захищена з оцінкою: |
| | |
| | |
| | Комісія: |
| | Доц. Єрохін А. Л. |
| | Доц. Четвериков Г. Г. |
| | Проф. Дудар З. В. | p>
Харків, 2000 р. p>
ХДТУРЕ p>
Кафедра ПЗ ЕОМ p>
Завдання на курсову роботу з дисципліни « ОП та АЯ »ст. гр. ИПД-99-1 Іванова А. В. p>
Тема: «Розробка інтерактивного середовища навчання роботі в Borland Delphi» p>
І Розробити інтерактивну середу навчання роботі в Delphi, котрамала б такі можливості: p>
. Подавати навчальний матеріал в наочному вигляді p>
. Мати можливості ілюстрування p>
. Мати засоби для тестування набутих знань p>
ІІ типізовані константи. Їх синтаксис і застосування. P>
Дата видачі завдання: Дата захисту: p>
Студент: Иванов А. В. p>
Керівник: p>
Реферат p>
Дана робота містить 34 сторінки, включаючи додаток; 2 таблиці; 4ілюстрації. p>
Мета роботи: створити, використовуючи систему програмування Delphi,навчальну програму p>
Об'єкт дослідження: навчальна система, розроблена в Delphi 5,що використовує для зберігання уроків текстові файли, подібні за структуроюфайлів HTML. У перспективі планується об'єднання формату уроків з данимиформатом. p>
Ключові слова:
DELPHI, навчальна система, типізований КОНСТАН, ФОРМАТ Фото УРОКІВ,
ПЕРСПЕКТИВИ p>
Зміст p>
Реферат 3
Зміст 4
Введення 5
1 Опис програми 6
1. 1 Основні характеристики 6
1. 2 Керівництво для користувача 6
1. 3 Опис команд формату. LES 7 p>
1. 3. 1 Текстові команди 8 p>
1. 3. 2 Графічні команди 9 p>
1. 3. 3 Логічні команди 10
1. 4 Опис внутрішньої структури програми 11 p>
1. 4. 1 Загальна організація 11 p>
1. 4. 2 Алгоритми, гідні розгляду 11 p>
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 p>
Введення p>
На Землі кожну годину збільшується кількість комп'ютерів. Вонипрацюють з програмами, кількість яких теж зростає. Написані всіпрограми з використанням різних мов програмування - С + +, Delphi,
Assembler. Вивчення таких мов мало поступається за складністю вивченнязвичайних, людських. Це дуже складний і трудомісткий процес. P>
Для його полегшення та спрощення створюються різні навчальніпрограми. Комп'ютер вчить людину. Такий «вчитель» ніколи не втомлюється,завжди об'єктивний, не ображається ... p>
У даній роботі представлена подібна програма, здатна (як меніздається), навчити починаючого програміста основ візуального середовища Delphiта мови Паскаль. p>
1 Опис програми p>
1. 1 Основні характеристики p>
Розглянута програма має можливість використання уроків,що зберігаються у файлах, що дозволяє створювати уроки, не змінюючи кодупрограми. p>
Файл уроку являє собою текстовий файл із розширенням. LES; в ньомустримає текст уроку і спеціальні команди, які змушують програму,виконувати деякі дії, наприклад, виводити текст таким-то кольором,змінювати розмір шрифту, вставляти картинки. Опис команд буде приведенонижче. p>
1. 2 Керівництво для користувача p>
виконуваний файл називається LD. EXE. Після його запуску на екраніз'являється вікно, показане на рис. 1. 1 p>
p>
Малюнок 1. 1 - Вікно, що виникає після запуску p>
По ньому «повзе» напис: «Ласкаво просимо до Learn
Delphi !!!». Для входу в програму треба натиснути кнопку «ОК». Наступне вікнопоказано на рис. 1. 2: p>
p>
Малюнок 1. 2 - Вікно вибору потрібного уроку p>
Користувач вибирає потрібний йому урок і натискає кнопку «Завантажити».
Після цього він бачить основне вікно, в яке завантажена перша сторінкауроку. Це вікно представлено на рис. 1. 3 (стор. 8). P>
У правому нижньому куті вікна поміщено три кнопки SpeedButton:
Перехід до попередньої сторінки p>
Перехід на наступну сторінку p>
Вихід з поточного уроку (з'являється вікно вибору уроків). P>
1. 3 Опис команд формату. LES p>
Як вже було сказано вище, дана програма має спеціальну системукоманд. Вони діляться на три типи:
. Текстові
. Графічні
. Логіка. P>
Всі команди передує символами /:, щоб їх можна було відрізнитивід звичайного тексту, що виводиться на екран. p>
Все, що не має на початку символів /: буде виведено! p>
p>
Малюнок 1. 3 - Вікно уроку p>
1. 3. 1 Текстові команди p>
Таблиця 1. 1 - Текстові команди p>
| /: 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 | Дає знати системі, що далі слід нова сторінка. | p>
1. 3. 2 Графічні команди p>
У даній версії програми є тільки одна графічна команда -
/: picture, яка завантажує і поміщає за вказаними координатами картинкуз файлу у форматі. BMP. p>
Синтаксис: p>
/: Picture p>
X-координата малюнка. p>
Y-координата. малюнка. назва файлу малюнка p>
На одну сторінку можна помістити до трьох картинок. Цього вбільшості випадків достатньо. p>
1. 3. 3 Логічні команди p>
Логічна команда в даній версії теж один. Це /: question. P>
Синтаксис: p>
/: question текст запитання правильну відповідь (1 - "Так" 2 - "Ні") p>
Результатом виконання є присутність на сторінці питання,обведеного подвійною червоною рамкою. Праворуч, після тексту питання, знаходятьсядві кнопки - «Так» і «Ні». Користувач натискає на кнопку, якасимволізує, за його, юзера, мненеію, правильну відповідь і кнопки відразустають неактивними. Програма посчітивает кількість правильних інеправильних відповідей і в кінці роботи виставляє оцінку. p>
На сторінці не допускається розміщувати більше одного питання! p>
Версія програми, представлена в курсовій роботі є DEMO -версією, тому взагалі в уроці допускається лише одна логічна команда. p>
4 Опис внутрішньої структури програми p>
1. 4. 1 Загальна організація p>
Програма має чотири вікна: frmMain, frmRun, frmLesson і frmRes. Утабл. 1. 2 представлені функції, що виконуються кожним з них: p>
Таблиця 1. 2 Функції, що виконуються вікнами у програмі
| Назва вікна | Функції, які виконує в програмі |
| frmMain | Дане вікно з'являється, коли користувач запускає |
| | Програму. Воно служить ніби запрошенням до роботи. |
| | Показано дане вікно на рис. 1. 1. |
| FrmRun | Після frmMain користувач потрапляє у вікно frmRun. Тут |
| | Він може вибрати потрібний урок і завантажити його або вийти з |
| | Програми. Показано воно на рис. 1. 2. |
| FrmLesson | Основне вікно для навчання. У ньому виводиться текст уроку, |
| | Всі картинки і питання. У модулі цього вікна описані всі |
| | Підпрограми для обробки файлів уроків. Показано це |
| | Вікно на рис. 1. 3. |
| FrmRes | Після проходження уроку користувач повинен знати, як |
| | Він засвоїв матеріал. В даному вікні поміщена таблиця з |
| | Числом питань і правильних відповідей. Це очнь просте |
| | Вікно, тому не представлено на малюнках. | p>
1. 4. 2 Алгоритми, гідні розгляду p>
Одним з вдало реалізованих алгоритмів автор вважає реалізаціюрозпізнавання команд. У додатку А, в кінці записки представлений вихіднийкод програми, в якому можна розглянути ці процедури. Текст виводиться ввікні за допомогою об'єкта Canvas. Це викликано необхідністю поміщати картинкиупереміж з текстом. Простіше за все реалізується така ідея з застосуванням
Canvas'a. Під час тестування виникла проблема: при перемальовуванні вікна (вразі тимчасового перекриття іншим вікном і т. п.) об'єкти, виведені здопомогою Canvas'a, не перемальовували. Зникали великі фрагменти тексту. УВрешті-решт проблема вирішена: запускається обробник події OnPaint. p>
Кожна сторінка уроку завантажується в спеціальну змінну (процедура
LoadPage), а потім виводиться на екран процедурою DrawPage. При цьому ірозпізнаються команди. p>
4. 3 Перспективи p>
Дана програма, як мені здається, є досить перспективним
«Прожектом». У наступних версіях програми, які, поза сумнівом, з'являться,будуть вдосконалені можливості тестування, додадуться кількалогічних і графічних команд, а трохи пізніше - і спеціальний редактор дляспрощення створення уроків. p>
Крім того, використовуючи можливості Windows, можна буде «примусити»Обучалки взаємодіяти з системою програмування Delphi, що підвищитьнаочність прикладів і тоді Learn Delphi здатна буде готувати непоганихфахівців в галузі комп'ютерних технологій. p>
Але і це ще не все! LD - універсальна система, в файл уроку можназаписати що-завгодно, так що застосовувати цей засіб можна і для навчанняінших предметів, навіть дещо віддаленим від інформатики, як, наприклад,історія, іноземні мови. p>
2 типізовані константи p>
2. 1 Загальна характеристика p>
Мова Паскаль, і, відповідно, Делфі, має спеціальний видконстант - типізовані. На відміну від звичайних, констант, вони можутьмістити масиви, покажчики, записи і значення процедурних типів. Привстановленої директиви компілятора ($ J +) вони ведуть себе як звичайніпочаткові змінні. При ($ J-) значення не можуть змінюватися. P>
Синтаксис: Const імя_константи: тип = значення p>
Приклад: Const Max: integer = 200 p>
2. 2 Константи-масиви p>
Щоб задати будь-яку константу-масив, потрібно описати значення всіхелементів. Значення описуються в круглих дужках, через кому. Наприклад: p>
Const Digits: array [1 .. 5] of byte = (1, 2, 3, 4, 5) p>
У даному прикладі оголошується константа-масив Digits типу Byte . Їйвідразу присвоюються числа від 1 до 5. p>
Константи-масиви часто використовуються для того щоб визначити строк,закінчуються символом # 0. У цьому випадку опис виглядає так: p>
Const Stroka: array [1 .. 5] of char = ( 'Hello') p>
константою може бути і багатовимірний масив. Для цього кожен йоговимір поміщається в круглі дужки. Приклад: p>
type TCube = array [0 .. 1, 0 .. 1, 0 .. 1] of Integer; const Maze: TCube = (((0, 1), (2, 3) ), ((4, 5), (6,7 ))) p>
Створюється масив Maze, де: p>
Maze [0,0,0] = 0 p>
Maze [0,0,1] = 1 p>
Maze [0,1,0] = 2 p>
Maze [0,1,1] = 3 p >
Maze [1,0,0] = 4 p>
Maze [1,0,1] = 5 p>
Maze [1,1,0] = 6 p>
Maze [1,1,1] = 7 p>
Всі константи-масиви не можуть містити файлових змінних ні наякому рівні. p>
2. 3 Константи-запису p>
Для завдання константи-запису необхідно заповнити її поля згідносинтаксису: ім'я_поля: значення. Значення розділяються крапками з комою івсі вираз поміщається в круглі дужки. Значення повинні бутипредставлені константами. Поля повинні бути перераховані в тому порядку, вякому вони розміщені в описі запису. Поле-описувач, якщо така є,має бути заповненим; у разі записи з варіантами тільки варіант,вибраний описувачем може використовуватися. p>
Приклади: p>
type
TPoint = record p>
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 p> < p> D: 1 .. 31; p>
M: TMonth; p>
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); p>
Всі константи-записи не можуть містити файлових змінних ні наякому рівні. p>
2. 4 Процедурні константи p>
Для визначення процедурної константи потрібна процедура з відповіднимипараметрами. Наприклад: p>
function Calc (X, Y: Integer): Integer;begin
...end;type TFunction = function (X, Y: Integer): Integer;const MyFunction: TFunction = Calc; p>
Після такого опису, функція викликається: p>
I: = MyFunction (5, 7) p>
Ви також можете давати константі значення nil. p>
2. 5 Константи-покажчики p>
Такі константи містять адреса в пам'яті змінної або підпрограми.
При їх оголошення констант потрібно стежити за тим, щоб адресу, на якувона вказує, використовувався. Приклади: p>
Константа містить адресу змінної: p>
const PI: ^ Integer = @ I; p>
Константа містить адресу підпрограми: p>
const PF: Pointer = @ MyFunction; p>
Ви можете оголосити константу типу PChar з рядковим значенням, тому щолітерали зберігаються в пам'яті як глобальні константи. p>
Адреса локальних (розміщених у стеку) і динамічних змінних неможуть бути поміщені в подібну константу. p>
2. 6 Приклади програм p>
Нижче наведені приклади програм, що використовують типізованіконстанти. Вони написані в Delphi, але у вигляді консольного програми - щобне захаращувати текст програм описом форм та інших об'єктів, до якихдана задача не має відношення. p>
Тексти програм-прикладів поміщені на дискеті з курсовою роботою вдиректорії EXAMPLES. p>
Приклад 1. p>
program Example1;
($ APPTYPE CONSOLE)
(Дана програма-приклад демонструє застосування констант-масивів.
Перетворює чисельний формат дати в звичайний, з назвою місяця)uses
SysUtils; p>
const month: array [1 .. 12] ofstring [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); readlnend. p>
Приклад 2. p>
unit Example2frm; p>
(Цей приклад показує, як застосовуються константи-запису. Тут будуєтьсябагатокутник (із застосуванням методу Polyline об'єкта Canvas), а координативершин багатокутника містяться в масиві констант-записів.) p>
interface p>
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls; p>
type
TForm1 = class (TForm) p>
Button1: TButton; procedure Button1Click (Sender: TObject); private p>
(Private declarations) public
(Public declarations) end; p>
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 )); p>
implementation p>
($ R *. DFM) p>
procedure TForm1.Button1Click (Sender: TObject);begin form1.Canvas.Pen.Width: = 3; form1.canvas.Polyline (polylines)end; p>
end. p>
Вікно цієї програми-прикладу наведено на рис. 2. 1 (стор. 20): p>
p>
Малюнок 2. 1 - Вікно програми-прикладу p>
Висновки p>
У даній роботі представлена освітня програма, розробленав середовищі програмування Borland Delphi 5. До неї додається файл уроку,описує основи Delphi. Але взагалі, цю систему навчання можна
«Примусити» навчати який-завгодно дисципліні - для цього досить створитифайли уроків і записати їх імена в файл конфігурації. p>
У процесі розробки програми детально вивчені графічніможливості Делфі і об'єкта Canvas. p>
У другій частині роботи розглянуті типізовані константи в
Паскалі, їх застосування. Дано приклади програм. P>
Перелік посилань p>
1. Культин Н. Delphi 4. Програмування на Object Pascal. BHV, Санкт-
Петербург, 1999. - 480 с., Іл. P>
2. Ден Оузьер та ін Delphi 3. Освой самостійно. М.: "Видавництво
БИНОМ ", 1998 р. - 560 с.: Ил. P>
3. Бондарєв В. М., Рублінецкій В. І., Качко Є. Г. Основи програмування.
Харків: Фоліо; Ростов н/Д: Фенікс, 1998 - 368 с. P>
4. Довідкова система Delphi p>
5. Фаронов В. В. Delphi 4. Навчальний курс. М.: «Нолидж», 1999 - 464 с., Іл. P>
Додаток А p>
Нижче дан вихідний код усіх модулів програми p>
unit Mainfrm; p>
interface p>
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls; p>
type
TfrmMain = class (TForm) p>
Image1: TImage; p>
Timer1: TTimer; p>
Button1: TButton; procedure Timer1Timer (Sender: TObject); procedure FormCreate (Sender: TObject); procedure Button1Click (Sender: TObject); private p>
(Private declarations) public p>
(Public declarations) end; p>
var frmMain: TfrmMain; p>
implementation p>
uses runfrm; p>
($ R *. DFM) p>
var x: integer; p>
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 p>