Реферат по предмету "Информатика"


Розробка засобами Delphi дидактичного ілюстративного матеріалу для розвязання задачі з аналітичної

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
УКРАЇНСЬКА ІНЖЕНЕРНО-ПЕДАГОГІЧНА АКАДЕМІЯ
Гірничий факультет
Кафедра інформаційних технологій
ПОЯСНЮВАЛЬНА ЗАПИСКА
ДО КУРСОВОГО ПРОЕКТУ НА ТЕМУ:
«Розробка засобами Delphi дидактичного ілюстративного матеріалу для розв’язання задачі з аналітичної геометрії. По введеним вершинам чотирьохкутника визначити, в якому відношенні його діагональ АС ділить діагональ BD»
з дисципліни «Прикладне програмування»
Студент (Гостілов О.С.)
Керівник проекту (Єфремова О.В.)
м. Стаханов
2009 р
УІПА, гірничий факультет
Кафедра інформаційних технологій
Дисципліна “Прикладне програмування”
Спеціальність 6.01010036
Курс 2. Група ДГ-К7- 1. Семестр 4
ЗАВДАННЯ
на курсовий проект студента
Гостілов Олександр Сергійович
(прізвище, ім’я, по батькові)
1. Тема проекту «Розробка засобами Delphiдидактичного ілюстративного матеріалу для розв’язання задачі з аналітичної геометрії. По введеним вершинам чотирьохкутника визначити, в якому відношенні його діагональ АС ділить діагональ BD»
2. Термін здачі студентом закінченого проектудо 25 травня 2009р.
3. Вихідні дані до проекту Середовище програмування Delphi7, бібліотека VCL. Діапазон значень на координатних осях />, />.
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити):
Вступ, з обов’язковим посиланням на літературу, в якій вказується актуальність і ефективність програмування в середовищі Delphi7.
Умова задачі, її аналітичне розв’язання в загальному вигляді з обов’язковим посиланням на літературу.
Розв’язання задачі для самостійно заданих початкових даних з врахуванням градуювання осей координат. Програмування в консольному режимі, отримання результату.
Сценарій проекту розв’язання задачі в Delphi. Програмна реалізація. Алгоритми процедур. Інтерфейс проекту обов’язково повинен включати вікна для графічного розв’язання задачі з контролем введення початкових даних та контролем можливості повного графічного відображення результату; вікно з описом аналітичного розв’язання задачі в загальному вигляді; вікно з даними автора проекту. Тестування проекту для тих даних, що використовувалися в консольному режимі.
Опис інтерфейсу з екранними копіями.
Висновки з обов’язковим переліком кількісних даних, що характеризують результати розробки.
Використані джерела.
Додатки.
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень)Сторінки формату А4 зі схемами алгоритмів окремих процедур.
6. Дата видачі завдання 2 лютого 2009 р.
КАЛЕНДАРНИЙ ПЛАН

з/п
Найменування етапів
курсового проектування
Термін
виконання
Примітки
1.
Вступ. Математичне розв’язання задачі.
до 2.03


2.
Розв’язання задачі в консольному режимі.
до 15.03


3.
Розробка сценарію проекту в Delphi, алгоритмів процедур.
до 15.03
Контроль лектора,
Завідувачакафедри
4.
Програмна реалізація проекту. Тестування проекту, внесення в проект необхідних змін та доповнень.
до 2.05


5.
Оформлення тексту пояснювальної записки: вступ, основний текст, висновки, список джерел та додатки. Представлення проекту на перевірку керівнику.
до 7.05


6.
Підготовка роботи до захисту.
до 15.05


7.
Захист курсової роботи
15-25.05
Комісія
Студент _____________
Керівник _____________Єфремова Оксана Володимирівна
2 лютого 2009р.
Зміст
Вступ
1 Математичне розв’язання задачі
1.1 Умова задачі
1.2 Аналітичне розв’язання задачі в загальному вигляд
1.2.1 Визначення
1.2.2 Формули
1.3 Розв’язання задачі для самостійно заданих початкових даних
2 Сценарій розв’язання задачі в Delphi
2.1 Програмування в консольному режимі--PAGE_BREAK--
2.1.1 Блок-схема алгоритму
2.1.2 Код додатку
2.1.3 Реакція ЕОМ
2.2 Компоненти форми та їх властивості
2.2.1 Edit
2.2.2 Label
2.2.3 Button
2.2.4 GroupBox та CheckBox
2.2.5 PaintBox
2.2.6 ComboBox та ColorBox
2.2.7 Timer
2.2.8 MainMenu
2.2.9 OLEContainer
2.3 Алгоритми процедур
2.4 Програмний код додатку
3 Опис інтерфейсу з екранними копіями
3.1 Інтерфейс проекту
3.2 Тестування проекту для тих даних, що використовувалися в консольному режимі
Висновки
Список використаних джерел
Вступ
Сьогодні існує дуже багато готових систем та пакетів. Однак будь-який пакет чи програма з моменту своєї появи морально старіє, тобто з’являються нові пропозиції щодо поліпшення їхніх можливостей, а самі задачі трансформується у нові, наперед не передбачені. Відповідно до цього модифікують пакети та програми — з’являються їхні нові версії. Крім того, сучасні пакети тяжіють до універсалізму, їхні розробки намагаються забезпечити підтримку якомога ширшого кола задач. Саме по собі це позитивне, однак коли потрібно сьогодні розв’язати одну задачу, завтра — іншу, а післязавтра — ще іншу, і всі вони неодмінні, то виникає потреба використовувати декілька різноманітних пакетів. Це може виявитись досить складним.
Радикальним виходом з ситуації є самостійна розробка програм для розв’язування конкретних задач. Безпосереднє програмування у Windows можливе на базі програмних пакетів, які це підтримують, — наприклад, Borland C++. Однак для роботи з такими пакетами треба добре знати не стільки мову C++, скільки Windows, а точніше — бібліотеки функцій Windows АРІ, які є громіздкими та досить заплутаними.
З появою пакету Delphiрозробка прикладних програм значно спростилася. Найважливішим є те, що в середовищі Delphiможна створити цілком сучасні та ефективні програми для роботи в операційній системі Windows, навіть не знаючи деталей чи особливостей Windows. Іншим дуже важливим досягненням Delphi є технологія візуального проектування — програми будують на базі стандартизованих компонентів [6].
Для побудови програми Delphiшироко використовують засоби, які надає система. Є дві частини побудови: перша – проектування інтерфейсу з використанням стандарт них елементів (компонент) та маніпулювання їхніми розмірами й розташуванням; друга – написання фрагментів програмного коду для виконання завдання. Delphiсамостійно записує деякі частини програми без зовнішнього втручання, розробникові треба кодувати лише суто свою задачу. Крім того, Delphiформує для майбутньої програми потрібну інформацію у файлах. На всіх етапах розробки програми можна бачити її інтерфейс, перевіряти програму шляхом виконання, змінювати властивості компонент, на яких побудована програма, вилучати чи додавати візуальні компоненти.
За відгуками фахівців, Delphiможна віднести до одного з найбільших досягнень сучасної комп’ютерної індустрії, що значно полегшує процес програмування та робить його цікавим і приємним.
Об’єкт дослідження:
Об’єктом дослідження даної курсової роботи є діагоналі чотирьохкутника а їх властивості.
Мета дослідження:
Метою є створення Windows-додатка на алгоритмічній мові ObjectPascalв середовищі візуального програмування Delphi. Необхідно по введеним вершинам чотирикутника визначити, в якому відношенні його діагональ АС ділить діагональ BD.
Задачі:
На основі теоретичного матеріалу з аналітичної геометрії розробити математичне розв’язання задачі;
Виконати розв’язання задачі в консольному режимі;
Розробити сценарій проекту в Delphiта алгоритми процедур;
Виконати програмну реалізацію проекту, протестувати проект та внести до нього необхідні зміні та доповнення;
Оформити текст пояснювальної записки для захисту.
1.Математичне розв’язання задачі
1.1 Умова задачі
Необхідно по введеним вершинам чотирьохкутника визначити, в якому відношенні його діагональ АС ділить діагональ BD.
1.2 Аналітичне розв’язання задачі в загальному вигляді
1.2.1 Визначення
Чотирьохкутник — геометрична фігура з чотирма сторонами. Чотирьохкутником називається фігура, яка складається із чотирьох крапок та чотирьох послідовно з’єднуючих їх відрізків. При цьому ніякі три з даних точок не лежать на одній прямій, а з’єднуючи їх відрізки не повинні перетинатися. Дані точки називаються вершинами чотирьохкутника, а з’єднуючи їх відрізки — сторонами чотирьохкутника.
/>
Рисунок 16 – Чотирьохкутник
Чотирьохкутник позначається вказівкою його вершин, при чому вершини, що стоять в позначенні поруч, повинні лежати на одній стороні. Сторонами чотирьохкутника є відрізки AB, ВС, СD та DА, вершинами — точки А, В, С та D, кутами —/>А, />В, />С та />D. Сторони AB та BCє сусідніми сторонами, а кути />В та />С — сусідніми кутами. Сторони АВ та СD — протилежні.    продолжение
--PAGE_BREAK--
Відрізок АС(та BD) називається діагоналлю даного чотирьохкутника, так як містить дві протилежні вершини.
1.2.2 Формули
По-перше, знайдемо значення за допомогою визначників:
/>(1)
Рівняння прямої для діагоналей АСта BD:
/>; (2)
/>; />; />.
/>; (3)
/>; />; />.
Рівняння прямої, що проходить через точки А та С:
/>(4)
та Bта D:
/>(5)
Щоб знайти точку перетину діагоналей запишемо рівняння (4) та (5) у систему:
/>(6)
Вирішимо систему через визначення.
/>; />; />; />; />; (7)
Точка перетину діагоналей О має такі координати: />.
Знаходимо довжину повної діагоналі BD:
/>; (8)
довжину OD:
/>; (9)
та довжину OB:
/>(10)
Тепер знайдемо відношення OBта OD:
/>; />.(11)
1.3 Розв’язання задачі для самостійно заданих початкових даних
Задача
/>
По введеним вершинам чотирьохкутника визначити, в якому відношенні його діагональ АС ділить діагональ BD.
Дано:
/>
Знайти:ВідношенняOBдоOD.
Рішення:
Значення за допомогою визначників(1).
Знаходимо рівнянняпрямої для діагоналей АСтаBD(формули (2) та (3)):
/>;/>;
/>; />;
/>; />;
/>. />.
Рівняння прямої, що проходить через точки А та С (4):
/>;
та Bта D(5):
/>.
Щоб знайти точку перетину діагоналей запишемо ці два рівняння у систему (6):
/>.
Вирішимо систему через визначники (7):
/>; />; />.
/>; />.
Точка перетину діагоналей О має такі координати: />.
Знаходимо довжину повної діагоналі BD(8):
/>;
довжину OD(9):
/>;
та довжину OB(10):
/>.
Тепер знайдемо відношення OBта OD(11):
/>; />.
Відповідь: діагональ АС ділить діагональ BDз відношенням 75% до 25%.
2 Сценарій розв’язання задачі в Delphi    продолжение
--PAGE_BREAK--
2.1 Програмування в консольному режимі
2.1.1 Блок-схема алгоритму
2.1.2 Код додатку
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
x0,y0:integer;
xa,ya,xb,yb,xc,yc,xd,yd:real;
OB,OD,D,BD:real;
X1,Y1,X2,Y2,Z1,Z2,xO,yO:real;
OBP,ODP:integer;
begin
writeln('vvedite vershihy chetyrehugolnika');
readln(xa,ya,xb,yb,xc,yc,xd,yd);
X1:=yC-yA;Y1:=xA-xC;
Z1:=xA*yC-xC*yA;
X2:=yD-yB;Y2:=xB-xD;
Z2:=xB*yD-xD*yB;
D:=X1*Y2-Y1*X2;
xO:=(Z1*Y2-Y1*Z2)/D;
yO:=(X1*Z2-Z1*X2)/D;
OB:=sqrt(sqr(xO-xB)+sqr(yO-yB));
OD:=sqrt(sqr(xO-xD)+sqr(yO-yD));
BD:=sqrt(sqr(xB-xD)+sqr(yB-yD));
OBP:=round(OB*(100/BD));
ODP:=100-OBP;
writeln('Dlina OB: ',OB:4:2);
writeln('Dlina OD: ',OD:4:2);
writeln('Otnoshenie: ',OBP,'/',ODP);
readln;
end.
2.1.3 Реакція ЕОМ
/>
Рисунок 16— Реакція ЕОМ
2.2 Компоненти форми та їх властивості
Створюючи дану програму я використовував різноманітні компоненти, такі як: Edit, Label, Button, GroupBox, CheckBox, PaintBox, ColorBox, ComboBox, Timer,MainMenuта OleContainer.
Таблиця 1 – Загальна характеристика компонентів:
Компонент
Піктограма
Панель компонентів
Опис
Edit
(вікно редагування)
/>
Standard
Відображення, введення та редагування однорядкових текстів. Є можливість оформлення об'ємного бордюру. Основна властивість — Text.
Label
(позначка)
/>
Standard
Відображення тексту, який не з-змінюється користувачем. Ніякого оформлення тексту не передбачено, крім кольору позначки та тексту. Основна властивість — Caption.
Button
(командная кнопка)
/>
Standard
Використовується для створення кнопок, якими користувач виконує команди у додатку.
GroupBox
(групове вікно)
/>
Standard
Є контейнером, що об’єднує групу пов'язаних органів управління, таких, як радіокнопкі RadioButton, контрольні індикатори Checkboxі т.д.
CheckBox
(контрольний індикатор з прапорцем)
/>
Standard
Дозволяє користувачеві вмикати та вимикати опції програми.
PaintBox
(вікно для малювання)
/>
System
Використовується для створення на формі деякої області, в якій можна малювати.
ColorBox
(список цветов)
/>
Additional
Спеціальний варіант ComboBoxдля вибору одного з системних кольорів.
ComboBox
(редактируемый список)
/>
Standard
Об’єднує функції ListBoxта Edit. Користувач може або ввести текст, або вибрати його із списку.
Timer
(таймер)
/>
System
Використовується для запуску процедур, функцій та подій у вказані інтервали часу.
MainMenu
(головне меню)
/>
Standard
Дозволяє конструювати та створювати смугу головного меню форми та випадаючі меню. Компонент не-візуальний.
OLEContainer
(контейнерOLE)
/>
System
Використовується при створенні області клієнта для об'єкта OLE.
2.2.1 Edit
Компонент Edit — це однорядковий редактор (рядок), призначений для вводу користувачем деяких даних. Вміст рядку є значенням властивості Text.
Для даного компоненту маються можливості:
редагування тексту (виділення фрагменту, перетворення виділеного тексту, чуттєвість до регістру);
відгук на зміну в тексті;
керування доступом у тексті (наприклад, доступ «тільки для читання» або символи паролю, що роблять невидимими символи, що вводяться).
Деякі властивості компоненту Edit (разом із типами) [1]:
AutoSelect. Тип — Boolean. Вказує, чи буде виділятися весь текст у момент отримання компонентом фокуса вводу;    продолжение
--PAGE_BREAK--
BorderStyle. Тип — TBorderStyle. Визначає стиль обрамлення компоненту: bsNone– немає обрамлення; bsSingle– компонент обрамляється однією лінією;
MaxLength. Тип — Integer. Визначає максимальну довжину текстового рядка. Якщо має значення 0, то довжина рядку не обмежена;
PasswordChar. Тип — Char. Якщо символ PasswordCharвизначений, то він замінює собою будь-який символ тексу при відображенні у вікні. Використовується для воду паролів;
ReadOnly. Тип — Boolean. Якщо значення властивості дорівнює True, то текст не може змінюватись;
OEMConvert. Тип — Boolean. Містить True, якщо необхідно перекодувати текст із кодування MS-DOSдо кодування Windowsта назад.
2.2.2 Label
Label — це позначки, що спеціально призначені для відображення тексту. Компонент Label відображає текст, що не редагується, який зберігається у властивості Caption. Текст вирівнюється у межах компоненту одним із трьох способів: по лівому краю, по правому краю а по центру. Спосіб вирівнювання визначається властивістю Alignment. Якщо текст напису занадто великий, то можна організувати його вивід у декілька рядків (з перенесенням слів). Для цього достатньо встановити властивість WordWrapу значення True[8].
Ще одна зручна можливість — автоматичне налаштування розмірів компоненту по ширині ті висоті вікна. Вона контролюється властивістю AutoSizeта за замовчуванням ввімкнена.
Фон напису можна зробити прозорим, встановив властивість Transparent у значення True.Такий напис можна винеси поверх графічного зображення.
За допомогою компоненту Label часто створюються підказки до інших компонентів, зокрема до полів вводу. При цьому властивість Captionмістить не тільки текст, але й «гарячу» клавішу, при виборі якої активізується зв’язаний з написом компонент. Цей компонент вказується у властивості FocusControl.
2.2.3 Button
Найпростішою та, мабуть, найбільш частіше використовуваною кнопкою є кнопка Button.
Основна властивість кнопки з точки зору зовнішнього вигляду — властивість Caption (напис).Основна подія — OnClick, що виникає при натисканні на кнопку. Саме в обробнику цієї події записуються оператори, що повинні виконуватись при натисканні користувача по кнопці.
Властивість Cancel,якщо її встановити у true, визначає, що натискання користувачем клавіші Escбуде еквівалентно натисканню на дану кнопку. Властивість Default, якщо її встановити у true, визначає, що натискання користувачем клавіші вводу Enterбуде еквівалентно натисканню на дану кнопку, навіть якщо ця кнопка у цей момент не знаходиться у фокусі. Правда, якщо у момент натискання Enter у фокусі знаходиться інша кнопка, то все ж таки спрацює саме ця кнопка [3].
Із методів, притаманних кнопці, має сенс відмітити тільки один — Click. Виконування цього методу еквівалентно натисканню на кнопці, тобто викликає подію кнопки OnClick. Саме цим можна скористатися, щоб продублювати якимось іншими діями користувача натискання на кнопці. Наприклад:
if(key='C' orkey='c') thenButton1.Click;
Ця умова значить, що якщо користувач ввів символ «С» або «с», то у результаті буде виконаний обробник натискання кнопки Button1.
2.2.4 GroupBoxта CheckBox
GroupBox багато в чому схожий зі звичайною панеллю. Він призначений для групування схожих за змістом компонентів. Текст із властивості Caption виходить не посередині панелі, а зверху, створюючи таким чином заголовок цієї панелі. При переміщенні GroupBox будуть переміщуватися і всі компоненти, що розволожені на ньому [10].
/>
Рисунок 16 – Компонент GroupBoxта CheckBoxна ньому
CheckBox — це перемикач, що використовується для установки параметрів, що характеризуються двома значеннями: "Так" і "Ні" (True и False).
Звичайно перемикач має два стана: увімкнений та вимкнений. Поточний стан визначається значенням властивості Checked. Якщо воно дорівнює значенню True, то перемикач увімкнений, інакше — вимкнений. Буває, що перемикач має ще й третій стан — невизначений (grayed). У цьому стані перемикач замальовується сірим кольором.
Характерні властивості цього компоненту:
Alignment(визначає, з якої сторони від перемикача знаходиться текст: taRightJustify — праворуч, taLeftJustify — зліва);
AllowGrayed(якщо дорівнює True, то перемикач має три стана);
Caption(текст поруч із перемикачем);
Checked(визначає, чи увімкнений перемикач);
2.2.5 PaintBox
Компонент PaintBox використовується для малювання не на всій формі, а у обмеженому прямокутнику.Цей компонент розміщається на формі у вигляді прозорого пунктирного квадрату, і в його межах можна малювати. Малювання виконується звертанням до властивості Canvas (графічна канва) цього компоненту: PaintBox1.Canvas. У нього, в свою чергу, є властивість Pixels (PaintBox1.Canvas.Pixels), яке представляє собою матрицю, двомірний масив заданого розміру — поточений образ канви, де кожен елемент — окрема точка. У Pixels[] відлік точок (пік селів екрану) починається з 0.
Координати xта yвідраховуються від верхнього лівого кута, тобто він вважається за точку з координатами (0, 0). Для конкретної точки вказується колір. Функція RGB() формує клір комбінацією інтенсивності червоного, зеленого та синього (інтенсивність задається числом від 0 до 255). Наприклад: чорний — RGB(0,0,0), червоний — RGB(255,0,0), синій — RGB(0,0,255), білий — RGB(255,255,255) [9].
2.2.6 ComboBoxта ColorBox
Компоненти ComboBoxта ColorBoxзабезпечують вибір із списку. ComboBoxвідображає списки рядків, ColorBox — список кольорів.
ComboBoxдозволяє також редагувати дані та відображати список як у розгорнутому вигляді, так і у вигляді випадаючого вікна, що звичайно зручніше, так як це заощаджує площу вікна додатку.
Основна властивість компоненту, що містить список рядків, — Items, що має тип TStrings. Заповнити його під час проектування можна, натиснувши на кнопку з багатокрапкою біля цієї властивості у вікні Інспектора Об’єктів.
Стиль зображення цього компоненту визначається властивістю Style,що може приймати наступні основні значення [4]:
csDropDown(випадаючий список з рядками однакової висоти та вікном редагування, що дозволяє користувачеві вводити або редагувати);
csSimple(розгорнутий список з рядками однакової висоти та з вікном редагування, що дозволяє користувачеві вводити або виводити текст);
csDropDownList(випадаючий список з рядками однакової висоти, що не містить вікна редагування).
Вибір користувача або введений текс можна визначити по значенню властивості Text.Якщо ж треба визначити індекс елементу списку, що вибраний користувачем, то можна скористатися властивістю ItemIndex. Якщо початкове значення не задано, то у момент запуску додатку користувач не побачить у вікні компоненту одне із можливих значень.
Властивість MaxLengthвизначає максимальну кількість символів, які користувач може ввести у вікно редагування. Якщо MaxLength = 0, токількість символів, що вводиться, не обмежено.
Властивість Sortedдозволяє впорядкувати список за абеткою. При Sorted= true нові рядки у список додаються не у кінець, а за абеткою.
2.2.7 Timer
Компонент Timerдозволяє задавати у додатку інтервали часу. Таймер знаходить численне застосування у: синхронізації мультиплікації, закритті деяких вікон, з якими користувач довгий час не працює, увімкнення хранителя екрану, завдання часу на відповідь у навчальних програмах — все це безліч задач, в яких вимагається задавати інтервали часу, вирішується за допомогою таймеру.
Таймер — це не візуальний компонент, який може розміщуватись у будь-якому місці форми. Він має дві властивості, що дозволяють їм керувати: Interval — інтервал часу у мілісекундах та Enabled — доступність. Властивість Intervalзадає період спрацьовування таймеру. Через заданий інтервал часу таймер спрацьовує, викликаючи подіюOnTimer. В обробнику цієї події записуються необхідні операції.    продолжение
--PAGE_BREAK--
Якщо необхідно у деякій процедурі запустити таймер, що відлічив би заданий інтервал, наприклад, 5 секунд, після чого треба виконати деякі операції та вимкнути таймер, це можна зробити наступним чином. При проектуванні таймер робиться доступним (Enabled= true), але властивість Intervalзадається порівнюваним 0. Таймер не буде працювати, доки у момент, коли треба запустити таймер, не буде виконатися оператор [7].
Timer1.Interval:= 5000;
Через 5 секунд після цього наступить подія OnTimer. В її обробнику треба задати оператор, що відключить таймер, після чого можна виконувати необхідні операції:
Timer1.Interval:= 0;
Таймер точно витримує задані інтервали Interval, якщо вони достатньо великі — сотні та тисячі мілісекунд. Якщо ж задавати інтервали довжиною десятки або одиниці мілісекунд, то реальні інтервали часу виявляються знатно більше внаслідок різноманітних накладних витрат, що пов’язані із викликами функцій та іншими обчислювальними аспект.
2.2.8 MainMenu
Меню — це не візуальний компонент, який у додатку представляє собою список об’єднаних за функціональною ознакою пунктів, кожен із яких визначає команду або вкладене меню (підменю). Вибір пункту меню відповідає виконанню заданої команди або розкриттю підменю.
Існує два виду меню[5]:
головне меню (MainMenu) — компонент, призначений для керування працею усього додатку. При роботі додатку воно розташовується у верхні частині форми під заголовком та містить найбільш загальні команди роботи;
спливаюче меню (PopupMenu) — може визначатися для будь-якого об’єкту. Воно також містить команди, але вони, як правило, відносяться до відповідного об’єкту. У додатку спливаюче меню викликається натисканням по правій кнопці миші у момент, коли вказівник миші наведений на відповідний об’єкт. Таке меню ще називається контекстним, оскільки до нього входять ті команди, які можна виконувати над конкретним об’єктом у конкретний час.
Оскільки меню — не візуальні компоненти, то вони можуть розміщуватись у будь-якому зручному для програміста місці форми. Для створення та зміни пунктів меню у процесі розробки додатку призначений Конструктор Меню (MenuDesigner).
Усі пункти меню мають однакові властивості, які відображаються у Інспекторі Об’єктів. Наприклад, властивості Nameта Caption. Властивість ShortCutможе задавати «гарячі клавіші» для команди, що відповідає пункту. Якщо властивість Caption задати як « – » (тире), то в меню з’явиться розділова горизонтальна риса.
Для кожного пункту меню повинен бути заданий метод, що визначає дії, які виконуються у відповідь на подію вибору відповідного пункту. Щоб задати такий метод, треба запустити Конструктор меню та виконати подвійне натискання по необхідному пункту.
2.2.9 OLEContainer
Абревіатура OLE означає Objects Linked and Embedded (приєднання та вбудовані об'єкти). OLE є подальшим розвитком ідеї поділюваних між додатками даних. OLE дозволяє легко вмонтувати в додаток обробку будь-яких типів даних. Кожен раз, коли в програмі-клієнті користувач звертається до OLE-об'єкту з метою перегляду або редагування даних (зазвичай подвійного клацання мишкою на об'єкті), запускається додаток-сервер, в якому і відбувається робота з даними [2].
Як випливає з назви, OLE-об'єкти можна або приєднати до OLE-контейнера, або включити до нього. У першому випадку дані будуть зберігатися в файлі на диску; будь-який додаток буде мати доступ до цих даних і зможе вносити зміни. У другому випадку дані включаються в OLE-контейнер, і тільки він зможе переглядати і модифікувати ці дані.
Вибрати OLE-сервер можна, двічі натиснувши на компоненті (див. Рисунок 6).
/>
Рисунок 16 – Вибір OLE-сервера
У цьому діалозі є список всіх зареєстрованих в системі OLE-серверів. Тип OLE-об'єкту визначається як раз тим сервером, який Ви вкажете. Якщо Ви створите новий об'єкт (Create New), то при натисканні на кнопку OK запуститься програма OLE-сервера, в якій і формується новий об'єкт.
Також OLE-об'єкт можна створити, використовуючи вже існуючий файл у форматі одного з OLE-серверів. Для цього потрібно вибрати пункт Create from File (див. Рисунок 7).
/>
Рисунок 16 — Створення із файлу
Обраний об'єкт можна як включити до програми, так і приєднати, відзначивши пункт Link.
Якщо під час дизайну Ви обираєте об'єкт для включення в OLE-контейнер, то він повністю записується у файл форми (formName.dfm) і в подальшому прикомпілюється до .exeфайлу. У випадку дуже великих об'єктів це може призвести до тривалих пауз і навіть до виникнення помилки «Out of resource». Тому рекомендується великі об'єкти робити приєднаними (linked).
2.3 Алгоритми процедур
Блок-схема алгоритму процедури графічної побудови:
2.4 Програмний код додатку
Головна форма:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
GroupBox2: TGroupBox;
PaintBox1: TPaintBox;
MainMenu1: TMainMenu;
N1: TMenuItem;
Button1: TButton;
GroupBox3: TGroupBox;
ColorBox1: TColorBox;
Label6: TLabel;
Label5: TLabel;
CheckBox1: TCheckBox;
Label7: TLabel;
Button2: TButton;
Label8: TLabel;
ColorBox2: TColorBox;
Label9: TLabel;
CheckBox2: TCheckBox;
Label10: TLabel;
CheckBox3: TCheckBox;
Label11: TLabel;
ColorBox3: TColorBox;
Label12: TLabel;
Label13: TLabel;
ColorBox4: TColorBox;
ComboBox1: TComboBox;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Bycnherwbz1: TMenuItem;
procedure FormCreate(Sender: TObject);    продолжение
--PAGE_BREAK--
procedure Button1Click(Sender: TObject);
procedure ColorBox1Change(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ColorBox2Change(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
procedure CheckBox3Click(Sender: TObject);
procedure ColorBox3Change(Sender: TObject);
procedure ColorBox4Change(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure Activate(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure Bycnherwbz1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x0,y0:integer;
xe,ye:integer;
x,y:real;
dx,dy:real;
Mx,My:real;
xmin,xmax,ymin,ymax:integer;
a1,a2,b1,b2:integer;
xa,ya,xb,yb,xc,yc,xd,yd:real;
v,c,c1:integer;
OB,OD,D,BD:real;
xn,yn,xn1,yn1:Real;
X1,Y1,X2,Y2,Z1,Z2,xO,yO:real;
w:integer;
vis:integer;
OBP,ODP:integer;
implementation
uses Unit3, Unit2, Unit4, Unit5, Unit6;
{$R *.dfm}
function ekrX(x:real):integer; //Преобразование X
begin
ekrX:=round(mx*(x-xmin)+a1);
end;
function ekrY(y:real):integer; //Преобразование Y
begin
ekrY:=round(my*(-y+ymax)+b1);
end;
procedure TForm1.Activate(Sender: TObject);
begin
if vis1
then
begin
Form2.ShowModal;
end;
End;
procedure TForm1.FormCreate(Sender: TObject);
begin
xmin:=-4; xmax:=4; ymin:=-4; ymax:=4;
a1:=10; a2:=410;
b1:=10; b2:=410;
dx:=1; dy:=1;
with PaintBox1.Canvas do
begin
Brush.Color:=clWhite;
Rectangle(-1,-1,PaintBox1.Width+1,PaintBox1.Height+1);
Pen.width:=1;
Pen.Color:=clBlack;
Mx:=round((a2-a1)/(xmax-xmin));
My:=round((b2-b1)/(ymax-ymin));
x0:=a1-round(mx)*xmin;
y0:=b1+round(my)*ymax;
Pen.width:=1;
Pen.Style:=psDot;
Pen.Color:=Colorbox2.Selected;;
Font.Color:=Colorbox3.Selected;
if checkbox3.checked=true then
begin
TextOut(a2-10,y0-15,'X');
TextOut(x0+5,b1+5,'Y');
TextOut(x0+5,y0-18,'0');
end;
x:=xmin;
repeat
Xe:=round(mx*(x-xmin)+a1);
if Checkbox1.Checked=true then
begin
MoveTo(xe,b1);LineTo(xe,b2);
end;
if checkbox3.checked=true then
begin
if x0 then textOut(xe-5,y0+5,FloatToStr(x));
end;
x:=x+dx;
until(x>xmax);
y:=ymin;
repeat
Ye:=round(my*(-y+ymax)+b1);
if Checkbox1.Checked=true then
begin
MoveTo(a1,ye);LineTo(a2,ye);
end;
if checkbox3.checked=true then
begin
if y0 then textOut(x0-20,ye-5,FloatToStr(y));
end;
y:=y+dy;
until(y>ymax);
Font.Color:=clBlack;
If Checkbox2.Checked=true then
begin
Pen.Width:=2;
Pen.Color:=Colorbox1.Selected;;
Pen.Style:=psSolid;
MoveTo(a1,y0); LineTo(a2,y0);
MoveTo(x0,b1); LineTo(x0,b2);
end;    продолжение
--PAGE_BREAK--
If v=1 then
begin
X1:=yC-yA;Y1:=xA-xC;
Z1:=xA*yC-xC*yA;
X2:=yD-yB;Y2:=xB-xD;
Z2:=xB*yD-xD*yB;
D:=X1*Y2-Y1*X2;
If D0 then
begin
xO:=(Z1*Y2-Y1*Z2)/D;
yO:=(X1*Z2-Z1*X2)/D;
OB:=sqrt(sqr(xO-xB)+sqr(yO-yB));
OD:=sqrt(sqr(xO-xD)+sqr(yO-yD));
BD:=sqrt(sqr(xB-xD)+sqr(yB-yD));
OBP:=round(OB*(100/BD));
ODP:=100-OBP;
label5.Caption:='OB='+FloatToStrF(OB,fffixed,4,2)+' '+IntToStr(OBP)+'%'+#13
+'OD='+FloatToStrF(OD,fffixed,4,2)+' '+intToStr(ODP)+'%';
Font.Color:=clRed;
textOut(ekrX(xO)+6,ekrY(yO)-6,'O');
end
else
begin
label5.Caption:='';
ShowMessage('Исправте координаты точек');
end;
Case Combobox1.ItemIndex of
0:w:=1;
1:w:=2;
end;
Pen.Width:=w;
Pen.Style:=psSolid;
Pen.Color:=Colorbox4.Selected;
MoveTo(ekrX(xa),ekrY(ya));
LineTo(ekrX(xb),ekrY(yb));
LineTo(ekrX(xc),ekrY(yc));
LineTo(ekrX(xd),ekrY(yd));
LineTo(ekrX(xa),ekrY(ya));
Pen.Width:=1;Pen.Style:=psDot;
LineTo(ekrX(xc),ekrY(yc));
MoveTo(ekrX(xb),ekrY(yb));
LineTo(ekrX(xd),ekrY(yd));
Font.Color:=clRed;
textOut(ekrX(xA)+6,ekrY(yA)+1,'A');
textOut(ekrX(xB)+6,ekrY(yB)+1,'B');
textOut(ekrX(xC)+6,ekrY(yC)+1,'C');
textOut(ekrX(xD)+6,ekrY(yD)+1,'D');
Font.Color:=clBlack;
Pen.Color:=clBlack;
Pen.Width:=1;
Pen.Style:=psSolid;
Ellipse(ekrX(xA)-3,ekrY(yA)-3,ekrX(xA)+3,ekrY(yA)+3);
Ellipse(ekrX(xB)-3,ekrY(yB)-3,ekrX(xB)+3,ekrY(yB)+3);
Ellipse(ekrX(xC)-3,ekrY(yC)-3,ekrX(xC)+3,ekrY(yC)+3);
Ellipse(ekrX(xD)-3,ekrY(yD)-3,ekrX(xD)+3,ekrY(yD)+3);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
v:=1;
xA:=StrToFloat(Edit1.Text);
yA:=StrToFloat(Edit2.Text);
xB:=StrToFloat(Edit3.Text);
yB:=StrToFloat(Edit4.Text);
xC:=StrToFloat(Edit5.Text);
yC:=StrToFloat(Edit6.Text);
xD:=StrToFloat(Edit7.Text);
yD:=StrToFloat(Edit8.Text);
c:=0;
repeat
begin
case c of
0:begin Xn:=xA;Yn:=yA;end;
1:begin Xn:=xB;Yn:=yB;end;
2:begin Xn:=xC;Yn:=yC;end;
3:begin Xn:=xD;Yn:=yD;end;
end;
c1:=0;
repeat
begin
case c1 of
0:begin Xn1:=xA;Yn1:=yA;end;
1:begin Xn1:=xB;Yn1:=yB;end;
2:begin Xn1:=xC;Yn1:=yC;end;
3:begin Xn1:=xD;Yn1:=yD;end;
end;
if cc1 then
begin
If Xn=Xn1 then
begin
if Yn=Yn1 then
begin
ShowMessage('Найдены были одинаковые координаты двух точек.'+#13+
'Пожалуйста откорректируйте введенные координаты.',);
c:=4;c1:=4;v:=0;
end;
end;
end;
end;
If (Xnxmax) or (YnYmax) then
begin
c:=4;c1:=4;v:=0;
ShowMessage('Одна из введенных точек выходит'+#13+'за пределы координатной плоскости');
end;
c1:=c1+1;
until(c1>3);
end;
c:=c+1;
until(c>3);
paintbox1.Repaint;
end;
procedure TForm1.ColorBox1Change(Sender: TObject);
begin
Paintbox1.Repaint;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);    продолжение
--PAGE_BREAK--
begin
Paintbox1.Repaint;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
v:=0;
label5.Caption:='';
Paintbox1.Repaint;
end;
procedure TForm1.ColorBox2Change(Sender: TObject);
begin
Paintbox1.Repaint;
end;
procedure TForm1.CheckBox2Click(Sender: TObject);
begin
Paintbox1.Repaint;
end;
procedure TForm1.CheckBox3Click(Sender: TObject);
begin
Paintbox1.Repaint;
end;
procedure TForm1.ColorBox3Change(Sender: TObject);
begin
Paintbox1.Repaint;
end;
procedure TForm1.ColorBox4Change(Sender: TObject);
begin
Paintbox1.Repaint;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
PaintBox1.Repaint;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Form3.ShowModal;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Form4.ShowModal;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
Form5.ShowModal;
end;
procedure TForm1.Bycnherwbz1Click(Sender: TObject);
begin
Form6.ShowModal;
end;
end.
Форма заставки:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, OleCtnrs;
type
TForm2 = class(TForm)
Timer1: TTimer;
OleContainer1: TOleContainer;
procedure Activate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.Activate(Sender: TObject);
begin
Timer1.Interval:=5000;
Timer1.Enabled:=True;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Form1.Visible:=True;
vis:=1;
Form2.Close;
end;
end.
Форма «Опрограмме»:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtnrs;
type
TForm3 = class(TForm)
OleContainer1: TOleContainer;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
end.
Форма «Пример»:
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtnrs;
type
TForm4 = class(TForm)
OleContainer1: TOleContainer;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;    продолжение
--PAGE_BREAK--
implementation
{$R *.dfm}
end.
Форма «Аналитика»:
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtnrs;
type
TForm5 = class(TForm)
OleContainer1: TOleContainer;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
end.
Форма довідки:
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtnrs;
type
TForm6 = class(TForm)
OleContainer1: TOleContainer;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
{$R *.dfm}
end.
Код проекту:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4},
Unit5 in 'Unit5.pas' {Form5},
Unit6 in 'Unit6.pas' {Form6};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm6, Form6);
Application.Run;
end.
3 Опис інтерфейсу з екранними копіями
3.1 Інтерфейс проекту
Запуск програми здійснюється подвійним натисканням на файл Project1.exe. При запуску програми перше, що відбувається, — це презентація екранної заставки (Рисунок 6).
/>
Рисунок 16 – Екранна заставка
Після завершення часу трансляції з’явиться головна форма (Рисунок 7).
/>
Рисунок 16 – Головна форма додатку
Перш за все, слід ввести початкові дані, на підставі яких буде виконуватись обчислення. Вводяться вони у поля редагування поля «Начальные данные»(Рисунок 8).
/>
Рисунок 16 – Панель «Начальне данные»
Введення цих даних обов’язково, бо без них неможливо розпочати роботу програми.
Після заповнення цих полів можна розпочати власне саму графічну побудову рішення. Здійснюється це за допомогою кнопки «Рисовать»у нижній правій області форми. Поруч знаходиться кнопка «Стереть», за допомогою якої виконується очистка форми, а трохи вище — панель «Результат», в якій після натискання на кнопку «Рисовать» відображається результат обчислення (Рисунок 9).     продолжение
--PAGE_BREAK--Ссылки (links):
expert.Delphi.int.ru/www.delphiworld.narod.ru/ivt.kgpi.ru/labs/OZO_PRZ/Delphi_OZO.htmdelhpi.mastak.ru/


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.