Типи файлів що використовуються в
проектах Delphi
|
Тип файлу
|
Опис
|
.dfm
|
Файл форми
|
.pas
|
Вихідний файл модуля форми
|
.dpr
|
Файл проекту
|
.exe
|
Відкомпільований проект
|
.dcu
|
Відкомпільований модуль
|
.res
|
Файл ресурсів
|
.cfg
|
Файл конфігурації проекту
|
.dof
|
Файл параметрів проекту
|
Головний
файл проекту - текстовий файл з розширенням DPR, який містить головний
програмний блок. Файл проекту підключає всі програмні модулі і містить методи
для запуску програми. Цей файл створює і контролює автоматично середовище
Delphi.
Файли
опису форм - двійкові файли з розширенням DFM, які описують форми з
компонентами. В цих файлах запам’ятовуються початкові значення властивостей,
встановлених в Інспекторі Файли програмних модулів - текстові файли з
розширенням PAS, які містять код на мові Object Pascal. У цих файлах містяться
методи обробки подій, які генеруються компонентами і формами.
Файл
опцій з розширенням DOF, де розміщені задані програмістом параметри компіляції
і компонування проекту і файл з розширенням DSK, де розміщені настройки
візуального середовища для даного проекту.
У
проект можуть входити також логічно автономні елементи: малюнки (BMP-файли),
значки (ICO-файли), файли довідників (HLP-файли) але ними управляє сам
програміст.
Файл з
розширенням .exe - виконавчий файл додатку
1.2 Аналітичний
огляд програм рішенням з методом Гауса і Крамера
Аналітичний огляд програм які
вирішують задачі методом Крамера або методом Гауса
Я довго
шукав подібні програми і майже їх не знайшов а ті що і знайшов то звичайні
прості програми які написали звичайні люди для домашнього користування, а
великих комерційних проектів я не знайшов.
Також
хочу зауважити що досить багато он-лайн ресурсів наприклад цей.
Рис.1.2.1
аналітичний
огляд програми
Всі
програми однакові он-лайн вони чи ні і метод рішення один. На першому етапі
здійснюється так званий прямий хід , коли шляхом елементарних перетворень над
рядками систему призводять до ступінчастою або трикутній формі , або
встановлюють , що система несумісна . А саме , серед елементів першого стовпця
матриці вибирають ненульовий , переміщують його на крайнє верхнє положення
перестановкою рядків і віднімають вийшла після перестановки перший рядок з
інших рядків , домножимо її на величину , рівну відношенню першого елемента
кожної з цих рядків до першого елемента першого рядка , обнуляючи тим самим
стовпець під ним. Після того , як зазначені перетворення були здійснені ,
перший рядок і перший стовпець подумки викреслюють і продовжують поки не
залишиться матриця нульового розміру. Якщо на якийсь із ітерацій серед
елементів першого стовпця не знайшов ненульовий , то переходять до наступного
колонку і проробляють аналогічну операцію.
На
другому етапі здійснюється так званий зворотний хід , суть якого полягає в тому
, щоб висловити все отримані базисні змінні через небазисні і побудувати
фундаментальну систему рішень , або , якщо всі змінні є базисними то виразити в
чисельному вигляді єдине рішення системи лінійних рівнянь . Ця процедура
починається з останнього рівняння , з якого висловлюють відповідну базисну
змінну ( а вона там всього одна) і підставляють в попередні рівняння , і так
далі , піднімаючись по " сходах" наверх . Кожному рядку відповідає
рівно одна базисна змінна , тому на кожному кроці , крім останнього ( самого
верхнього) , ситуація в точності повторює випадок останнього рядка .
Метод
Гауса вимагає O ( n ^ { 3 } ) арифметичних операцій .
Всі
програми досить прості і не мають не яких зауважень вони мають відзнаку лише у
зовнішньому вигляді. І подібних програм дуже багато.
Рис.1.2.2
Рис.1.2.3
Отже
всі програми які вирішують задачі методом Крамера і Гауса мають один метод
рішення,кий складається з двох етапів. В Інтернет ресурсах дуже багато аналогів
таких програм,і вони мають відзнаки лише у зовнішньому вигляді. Користувач с
легкістю може оволодіти нею і використовувати для власних потреб.
Розділ 2.
Розробка програми "лічильник задач" з використанням процедур та
функцій
комп'ютерний
візуальний програмування delphi
2.1 Методологія
розробки прикладного програмного забезпечення
Процедура і функція
- це ключові поняття в будь-якій мові програмування , без яких не обходиться
жодна серйозна програма . І тому дуже важливо мати повне розуміння про механізм
їх роботи.
По перше я вибрав
необхідні мені компоненти.
Під час написання
програми використовувалися наступні елементи інтегрованого програмного
середовища Borland
Delphi.На формі Form1
створено наступні компоненти TForm1 = class(TForm)
TForm1 =
class(TForm); - форма: TLabel; -поле дня назви "введіть значення":
TButton; - кнопка ОК: TButton; - кнопка розв’язати систему: TStringGrid; - поле
вводу даних: TBevel; - панель: TLabel; - поле дня назви "коєфіціенти
рівнянняя": TLabel; - поле дня назви "рішення системи назви":
TButton; - кнопка вихід: TLabel; - поле дня назви
1) Коли я вибрав необхідні мені
компоненти я почав розташовувати їх на формі:
Рис.2.1.1
2) Після того як я розташував
компоненти, я почав працювати з ними детально. Спочатку перейменував та
запрограмував першу кнопку "Button1".
Рис.2.1.1
Також ця кнопка має такий код:
TForm
1.ButtOKClick(Sender:
TObject); //рішення
можливих і неможливих величин
beginnot Vveli
thenReadN.Text="then Exit;:=SttrToInt(ReadN.Text);Exception. Create(неможлива
величина n’);.Text:=’2’;(n<2)or(n>20)then/MessageBox(t1,Errcap,
MB_ICCONERROR or MB_OK);.Text:=’2’:=2;.SelectALL;;:=poDesktopCenter;:=Left0;:=
Height0;:= Width0;.Width:= Width-20;n >4 then:=2;:=2;:=
Width0+(Matrica.DefaultColWidth+2)*(n-4);:=
400+ n*23;.Width:=Width-20;Matrica
do:=(DefaultRowHeight+2)*(n+1)-n+2;:=(DefaultColWidth+2)*(n+1)-n+2;:= n+2;:=
n+2;:= n+1;;(Form1);.Top:= Matrica.Height+100;.Top:= Matrica.Height+146;.Top:=
Matrica.Height+130;.Left:= Matrica.Left+ MatricaWidth div 2+100;.Top:=
Matrica.Height+200;.Left:= Matrica.Left+ MatricaWidth div 2-100;.Top:= Xxx.Top;
//.Enabled:=False;.Caption:=’OK’;:=
Trueelse.Enabled:=True;.Caption:=’OK’;:=False;;TForm1.readNChange(Sender:TObject);;;
3)
Аналогічну роботу,я провів з кнопками дії "Button2"
"Button3"
. Одна буде рішати рівняння друга виходити з програми.
Рис.2.1.3
Ці кнопки маюсь наступний код:
На кнопці розв’язати
систему також треба обов’язково прописати даний код адже саме він вивів
коректний результат Х,У.
rocedure
TForm1.ReshiClick(Sender: TObject);,j,k : cardinal;: string;
//
n:=StrToInt(ReadN.Text);(n<2) or (n>20)then.MessageBox(t1, ErrCap,
MB_ICONERROR or MB_OK);;i:=1 to n doj:=1 to n+1 doMatrica.Cells[j,i]='' then
a[i,j]:=0 else[i,j]:=StrToFloat(Matrica.Cells[j,i]);Exception.Create('НЕможлива
величина A('+IntToStr(i)+','+IntToStr(j)+')');;;[i,j]:=a[i,j];;
// for k:=1 to n-1
do:=Abs(a[k,k]);i:=k+1 to n dom<Abs(a[i,k]) then:=Abs(a[i,k]);j:=k to n+1
do[1]:= a[k,j];[k,j]:=a[i,j];[i,j]:=x[1];;;;m<1E-20 thenException.Create(t2);;i:=k+1
to n do:= a[i,k];j:=k to n+1 do[i,j]:= a[i,j]-a[k,j]*m/a[k,k];;;
4) Потім добавив
три компоненти "Label" для підписування компонентів,та дав їм ось
такі назву:
Рис.2.1.4
Ці компоненти це
лише меню вибору їм не обов’язково мати програмний код.
5) Добавив на форму
компонент TStringGrid у котрому будить вноситися дані.
Рис.2.1.5
Ця кнопка має такий код:
TForm1.MatricaDrawC9sender:
TObject);,j :cardinal;.Cells[0,0]:=’ Aij’;j:=1 to n doMatrica.Cells[j,0]:=’
’=IntToStr(j);/Cells[n+1,0]:=’ Bi’;j:=1 to n doMatrica.Cells[0,j]:=’
’+ItntToStr(j);i:=1 to n doj:=1 to n+1 doMatrica.Cells[j,i]=FloatToStrF(або[I,j],ffFixed.3,3);;
Після того як на форму були винесені
всі елементи і після завершення прописування їх коду,в
полі Edit
я залишив цифру 2 щоб рівняння 2 на 2 було по замовчуванню. Остаточний вигляд
програма має такий:
Рис.2.1.6
При тестуванні програми помилок не
виявлено. Прикладом для перевірки працездатності
програми було розроблено вручну тест. Результати обчислення вручну та за
допомогою комп’ютера повністю співпали.
Програма будувалась завдяки
процедурам і функціям адже це було основною умовою моєї роботи.
2.2 Опис програмного
забезпечення
Програма
призначена для рішення систем рівнянь методом Гауса мою програму можна
використовувати,як у домашньому так і у навчальному процесі також цю програму
можна легко переробити під телефон і це буде досить корисна програма особливо
для студентів.
Для
того щоб запустити програму треба клацнути по SysUrr.ехе,а саме корисне це
те,що програму можна не встановлювати на диск.
Рис.2.2.1
Після того,як
програма запустилась нам потрібно у полі "введіть значення" обрати
розмір рівняння,наприклад виберемо маленьке рівняння 2х2
Рис.2.2.2
Після того, як ввели числа
то потрібно натиснути "розв’язати систему" після чого нам відразу ж
виводить результат
Рис.2.2.2
Можемо
вказати значення і більше ніж попереднє ось наприклад ставимо значення 4.І далі
робимо все те що робили с попереднім рівнянням пророблюємо всі ті ж операції…
Якщо ввести неправильну або
вирішувати не правильне значення буде виводитись ось така помилка яка
повідомляє про те,що в системі немає рішень.
Рис.2.2.4
Для
того щоб вийти з програми нам необхідно натиснути кнопку вихід
Рис.2.2.5
Програма призначена для вирішування
задач методом Гауса. Програма функціонує на будь-яких сучасних комп'ютерах типу
IBM PC і навіть на платформі андроїд. Програма не потребує ні встановлення ні
записування просто запуск з ярлика .
Програма запускається за допомогою
запуску файлу SysUrr.ехе, який потрібно
помістити на носій або комп’ютер. Робота програми досить стабільна і проста і
відбувається на інтуїтивному рівні вводиш значення потім необхідні данні тиснеш
розв’язати систему і нам виводить результат потім просто тиснемо змінити якщо
нам потрібно ввести інші данні або натискання кнопки " ВИХІД"
завершує роботу з додатком .
Висновок
Розв’язування
математичних задач за допомогою персональних комп’ютерів має велике значення,
оскільки кожен розв’язок є оперативним та точним. Обчислюючи математичну задачу
за допомогою сучасного комп’ютера, зрозуміло, що ймовірність помилкового
введення даних в пам’ять ПК є набагато більшою чим ймовірність помилкового
обчислення комп’ютером, чим тут практично можна знехтувати. Тоді що вже можна
говорити про порівняння ручного обчислення і машинного. Тому надзвичайно
важливо самостійно складати програми для виникаючих задач, які потрібно часто
рішати. Звичайно головним в написанні програми є правильність її складання,
оскільки правильність результатів обчислення в першу чергу залежить від
правильності програми.
Дана курсова робота
присвячена розробці, проектуванню, написанню та опису програми з використанням
процедур та функцій, а саме "Лічильник рівнянь". Він спроектований та
описаний на мові програмування Object Pascal в середовищі
візуального програмування Borland Delphi.
В ході розробки цього
програмного продукту я вперше з тикнувся з проблемами які виникають при
розробці власного програмного забезпечення,а саме: створення самої ідеї
програми,створення супроводжуючого матеріалу,створенню концепції.
Мою програму налагоджено
з використанням різноманітних тестових даних. Прикладом для перевірки
працездатності програми було розроблено вручну тест. Результати обчислення
вручну та за допомогою комп’ютера повністю співпали. Тому можна вважати цей
програмний продукт готовим для практичного застосування.
Я вважаю що поставлені
перед собою завдання,в цій курсовій роботі повністю розкритими і бездоганно
виконаними .
Список використаної літератури
1. Карованова Т.П.
Інформатика: основи алгоритмізації та програмування. - К. :Генеза,2006. - 286
с.
2. Культин Н.Б.
"основы прорамирования в Delphi
7". - СПб.:БХВ-Петербург
. Фаронов В.В. Delphi 6.
Учебный курс. - М.:Издатель Молгачева С.В., 2001.-672 с.
. Гофман В.Э., Хомоненко
А.Д. Delphi 6. -СПб.:БХВ-Петербург, 2001.-1152с.
. Фаронов В.В., Шумаков
П.В. Delphi 5. Руководство разработчика баз данных. - М.:Нолидж, 2000.-640 с.
. Глинський Я. М.,
Анохін В. Є., Ряжська В. А. Паскаль. TurboPascal i Delphi. Навчальнийпосібник.
- Львів: СПД Глинський, 2007. - 192 с.
. Демків І. І., Каленюк
П. І., Клюйник І. І., Кравець І. Т., Петрович Р. Й. Основи програмування в
середовищі Турбо-Паскаль.
. Сорокин А.В.Delphi.
Разработка баз данных. - СПб: Питер, 2005.- 477 с.
. Сухарев М. Delphi.
Полное руководство. Включая версию 2010 (+DVD).
М: Наука и техника, 2010. -
1035 с.
10. Баженова И.Ю. Delphi
7.самоучитель программиста. - М.: КУДИЦ-ОБРАЗ,2004. - 448 с.
Інформаційні ресурси
1. http://www.embarcadero.com/ru/products/delphi
- <http://www.embarcadero.com/ru/products/delphi%20->
Програмування в Delphi
2. <http://www.gunsmoker.ru/2009/11/delphi-7-windows-7.html> -
Програмування в с++ и Delphi
3. <http://www.library.vinnitsa.com/ru/books/delphi-7> -
Розробка програм різного рівня
4. <http://hashcode.ru/questions/tagged/delphi-7/> -
Створення компонентів
5. <http://vk.com/delphi_7> -
Форум знавців
6. <http://progbook.net/delphi/>
Язык програмирования Delphi
. <http://www.realcoding.net/>
Програмирование на Delphi
. <http://www.programmersclub.ru/>
Помощ при програмировании на Delphi
Додаток А
Лістинг програми
unit SysUrrU;,
Messages, SysUtils, Variants, Classes, Graphics,, Forms, Dialogs, StdCtrls,
ComCtrls, Grids, ExtCtrls;= class(TForm) //форма: TLabel; //поле дня назви:
TButton; //кнопка: TButton;: TStringGrid; //поле вводу даних: TBevel; //панель:
TLabel; //поле дня назви: TLabel; //поле дня назви: TButton; //кнопка: TEdit;:
TLabel; //поле дня назвиXxxClick(Sender: TObject); //процедури вводу та
розв'язанняReshiClick(Sender: TObject); //процедури вводу та
розв'язанняFormShow(Sender: TObject); //процедури вводу та
розв'язанняMatricaDrawC(Sender: TObject); //процедури вводу та розв'язанняButtOKClick(Sender:
TObject); //процедури вводу та розв'язанняFormCreate(Sender: TObject);
//процедури вводу та розв'язання
{ Private
declarations }: boolean;{ Public declarations },,,: cardinal; //метод
розв'язання: real;: array [1..20] of real;,: array [1..20,1..21] of
real;;='Ввести число невідомих 1<n<21';='Система погано
обусловлена'+#13+#10+' Можливі 2 варианти:'+#13+#10+'1 - Немае
рішень.'+#13+#10+'2 - Число безлімітне';= 'Error!!!';: TForm1;: file of byte;:
file of byte;: string;
{$R
*.dfm}TForm1.FormCreate(Sender: TObject); //ввод даних:= 2;:=
False;:='.';:=Left;:= Height;:=Width;.Enabled:= True;.Caption:= 'OK';
////TForm1.FormShow(Sender:
TObject);.SetFocus;.Caption:='';(Owner);;
////
сTForm1.MatricaDrawC(Sender:
TObject); //складання велечин,j : cardinal;.Cells[0,0]:= ' Aij';j:=1 to n do
Matrica.Cells[j,0]:= ' '+IntToStr(j);.Cells[n+1,0]:= ' Bi';j:=1 to n do
Matrica.Cells[0,j]:= ' '+IntToStr(j);i:=1 to n doj:=1 to n+1 do
Matrica.Cells[j,i]:=FloatToStrF(ao[i,j],ffFixed,3,3);;
////TForm1.ReshiClick(Sender:
TObject); // додавання велечин можливих і неможливих,j,k : cardinal;: string;
//
n:=StrToInt(ReadN.Text);(n<2) or (n>20)then.MessageBox(t1, ErrCap,
MB_ICONERROR or MB_OK);;i:=1 to n doj:=1 to n+1 doMatrica.Cells[j,i]='' then
a[i,j]:=0 else[i,j]:=StrToFloat(Matrica.Cells[j,i]);Exception.Create('НЕможлива
величина A('+IntToStr(i)+','+IntToStr(j)+')');;;[i,j]:=a[i,j];;
//k:=1 to n-1
do:=Abs(a[k,k]);i:=k+1 to n dom<Abs(a[i,k]) then:=Abs(a[i,k]);j:=k to n+1
do[1]:= a[k,j];[k,j]:=a[i,j];[i,j]:=x[1];;;;m<1E-20 thenException.Create(t2);;i:=k+1
to n do:= a[i,k];j:=k to n+1 do[i,j]:=
a[i,j]-a[k,j]*m/a[k,k];;;Abs(a[n,n])<1E-20
thenException.Create(t2);;[n]:=a[n,n+1]/a[n,n];k:=n-1 downto 1 do:=0;j:=k+1 to
n do m:=m+a[k,j]*x[j];[k]:=(a[k,n+1]-m)/a[k,k];;:='';j:=1 to n do S:=S+'
X'+IntToStr(j)+'='+ FloatToStrF(x[j],ffFixed,3,3);.Caption:=S;;
////TForm1.XxxClick(Sender:
TObject);.Terminate;;.