Об’єктно-орієнтоване програмування у середовищі програмування Delphi7

 

Зміст


Вступ

Основні поняття про ООП

.Визначення ООП

.Фундаментальні поняття

Відомості про СЛО

.Система лінійних нерівностей та опуклі багатогранники

.Системи лінійних рівнянь лінійної алгебри як частковий випадок СЛО

Практична частина

.Опис задачі та шлях її вирішення

.Текст програми

·Текст модуля Class_Lin_Obmezh

·Текст модуля Form1

·Текст основної програми

.Приклади роботи програми

Висновок

Список використаної літератури


Вступ


В даній курсовій роботі я показую можливості та потенціал використання обєктно орієнтованого програмування для вирішення задач певного типу. Моєю головною метою курсової роботи є дослідження та вивчення ООП та побудови програми яка б створювала систему лінійних обмежень, а також давала можливість подальшого її оброблення. Для реалізації поставленої задачі буду використовувати середовище програмування Delphi7.


Основні поняття про ООП


.Визначення ООП


Об'єктно-орієнтоване програмування - це метод програмування, заснований на поданні програми у вигляді сукупності взаємодіючих об'єктів, кожен з яких є екземпляром певного класу, а класи є членами певної ієрархії наслідування. Програмісти спочатку пишуть клас, а на його основі при виконанні програми створюються конкретні об'єкти (екземпляри класів). На основі класів можна створювати нові, які розширюють базовий клас і таким чином створюється ієрархія класів.

На думку Алана Кея <#"justify">·Все є об'єктами.

·Всі дії та розрахунки виконуються шляхом взаємодії (обміну даними) між об'єктами, при якій один об'єкт потребує, щоб інший об'єкт виконав деяку дію. Об'єкти взаємодіють, надсилаючи і отримуючи повідомлення. Повідомлення - це запит на виконання дії, доповнений набором аргументів, які можуть знадобитися при виконанні дії.

·Кожен об'єкт має незалежну пам'ять, яка складається з інших об'єктів.

·Кожен об'єкт є представником (екземпляром, примірником) класу, який виражає загальні властивості об'єктів.

·У класі задається поведінка (функціональність) об'єкта. Таким чином усі об'єкти, які є екземплярами одного класу, можуть виконувати одні й ті ж самі дії.

·Класи організовані у єдину деревоподібну структуру з загальним корінням, яка називається ієрархією успадкування <#"justify">Таким чином, програма являє собою набір об'єктів, що мають стан та поведінку. Об'єкти взаємодіють використовуючи повідомлення. Будується ієрархія об'єктів: програма в цілому - це об'єкт, для виконання своїх функцій вона звертається до об'єктів що містяться у ньому, які у свою чергу виконують запит шляхом звернення до інших об'єктів програми. Звісно, щоб уникнути безкінечної рекурсії у зверненнях, на якомусь етапі об'єкт трансформує запит у повідомлення до стандартних системних об'єктів, що даються мовою та середовищем програмування. Стійкість та керованість системи забезпечуються за рахунок чіткого розподілення відповідальності об'єктів (за кожну дію відповідає певний об'єкт), однозначного означення інтерфейсів міжоб'єктної взаємодії та повної ізольованості внутрішньої структури об'єкта від зовнішнього середовища (інкапсуляції).


.Фундаментальні поняття


В результаті дослідження Дебори Дж. Армстронг (англ. <#"justify">Можливості об'єкта. Оскільки Сірко - Собака, він може гавкати. Тому гавкати є одним із методів об'єкта Сірко. Він може мати й інші методи, зокрема: місце, або їсти. В межах програми, використання методу має впливати лише на один об'єкт; всі Собаки можуть гавкати, але треба щоб гавкав лише один окремий собака.

üОбмін повідомленнями <#"justify">Передача даних від одного процесу іншому, або надсилання викликів методів.

üУспадкування <#"justify">Клас може мати «підкласи», спеціалізовані, розширені версії надкласу. Можуть навіть утворюватись цілі дерева успадкування. Наприклад, клас Собака може мати підкласи Коллі, Пекінес, Вівчарка і т.п. Так, Сірко може бути екземпляром класу Вівчарка. Підкласи успадковують атрибути та поведінку своїх батьківських класів, і можуть вводити свої власні. Успадкування може бути одиничне (один безпосередній батьківський клас) та множинне (кілька батьківських класів). Це залежить від вибору програміста, який реалізовує клас та мови програмування. Так, наприклад, в Java дозволене лише одинарне успадкування, а в С++ і те і інше.

üПриховування інформації <#"justify">Спрощення складної дійсності шляхом моделювання класів, що відповідають проблемі, та використання найприйнятнішого рівня деталізації окремих аспектів проблеми. Наприклад Собака Сірко більшу частину часу може розглядатись як Собака, а коли потрібно отримати доступ до інформації специфічної для собак породи Коллі - як Коллі і як Тварина (можливо, батьківський клас Собака) при підрахунку тварин Петра.

üПоліморфізм <#"justify">Поліморфізм означає залежність поведінки від класу, в якому ця поведінка викликається, тобто, два або більше класів можуть реагувати по-різному на однакові повідомлення. Наприклад, якщо Собака отримує команду голос, то у відповідь можна отримати Гав; якщо Кішка отримує команду голос , то у відповідь можна отримати Мяв. На практиці - це реалізовується шляхом реалізації ряду підпрограм (функцій, процедур, методи тощо) з однаковими іменами, але з різними параметрами. В залежності від того, що передається і вибирається відповідна підпрограма.


Відомості про СЛО


. Система лінійних нерівностей та опуклі багатогранники


Система лінійних нерівностей (обмежень) - система лінійних нерівностей які мають вигляд:



Це система m лінійних нерівностей з n невідомими, де:

є невідомими,

є коефіцієнтами системи,

- вільними членами.

Теорема (Вейля - Мінковського)

Множина є багатогранником тоді і тільки тоді коли - обмежений багатогранник (поліедр).

Теорема показує, що будь-який багатогранник у певній системі координат може бути описаний за допомогою системи, яка складається з деякого скінченного числа лінійних нерівностей. Ця властивість з одного боку, дозволяє використовувати для вивчення багатогранників гарно розроблену теорію лінійних нерівностей, а з іншого боку, геометричним властивостям багатогранника надати алгебраїчну інтерпретацію.

Нехай нам задано деяку СЛО із двома змінними, тоді геометрично, в двовимірному просторі, кожну нерівність такої системи можна тлумачити як деяку півплощину, обмежену прямою, рівняння якої можна дістати з відповідної нерівності, змінивши знак нерівності знаком рівності. Аналогічно відбувається і в тривимірному просторі, якщо СЛО сумісна тоді вона утворює деякий безкінечний багатогранник, а в окремих випадках опуклий багатогранник . У випадку якщо СЛО складається лише з одної нерівності то така система утворює півпростір - простір який є однією з двох частин, на які гіперплощина <#"justify">Опуклий багатогранник - частковий випадок багатогранника (політопу) з додатковою умовою опуклості. Опуклий політоп можна визначити як перетин кінцевого числа замкнутих півпросторів які утворені СЛО.

Замкнений півпростір може бути записаний лінійною нерівністю:


,


де n є розмірністю простору, що містить політоп, який розглядають. Отже замкнений опуклий політоп можна розглядати як множину рішень системи лінійних нерівностей:


,


де m є числом півпросторів, що описують політоп. Це може бути стисло переписано у вигляді матричної нерівності:


,


де A є m×n матрицею, x є n×1 вектор-стовпець змінних, і b є постійним m×1 вектор-стовпцем.

Відкритий опуклий політоп задається заміною нестрогих нерівностей на строгі у попередньому визначенні.


. Системи лінійних алгебраїчних рівнянь лінійної алгебри як частковий випадок СЛО


Система лінійних алгебраїчних рівнянь (СЛАР) - в лінійній алгебрі <#"120" src="doc_zip10.jpg" />


Це система m лінійних рівнянь з n невідомими, де:

є невідомими,

є коефіцієнтами системи,

- вільними членами.

Розв'язком системи лінійних алгебраїчних рівнянь є будь-яка сукупність дійсних чисел <#"13" src="doc_zip14.jpg" />, яка при підстановці кожне рівняння системи перетворює його в тотожність <#"17" src="doc_zip15.jpg" />, система лінійних алгебраїчних рівнянь називається однорідною. Однорідна система має очевидний розв'язок, у якому всі . Цей розв'язок заведено називати тривіальним. Відмінні від тривіального розв'язки існують тільки тоді, коли матриця вироджена <#"justify">üоформити клас лінійного обмеження (ЛО) який би зберігав одну нерівність, а також методи та властивості для його опрацювання;

üоформити клас СЛО на базі класу ЛО;

üпровести перевірку чи задовольняє введений користувачем вектор системі лінійних обмежень;

üвивід СЛО як тексту;

üможливість збереження у файл та його відкриття з файлу;

üсортування обмежень (розбиття на групи);

Поставлену переді мною задачу я вирішив використовуючи мову програмування Delphi. Дана мова програмування є обєктно орієнтованою тому вона чудово підійшла для розробки програми. Саму ж програму я виконав використовуючи візуальні компоненти (рис.1). СЛО вводиться через таблицю StrinGrid1, причому є два варіанти вводу: ручний та автоматичний з можливістю редагування. Регулювати розмір таблиці можна за допомогою двох компонент SpinEdit1 та SpinEdit2 кожна з яких відповідає за кількість змінних та кількість ЛО у таблиці.


Рис. 1


Розглянемо кнопки по порядку розташування:

Exit - виконує вихід з програми-клієнта;

Reset - скидає всі налаштування для введення нових даних

Write LO - виписує СЛО у компонент Memo1;

Check solution - перевіряє чи введений користувачем вектор задовольняє СЛО;

Open - відкриває СЛО з текстового файлу та заповнює таблицю

Save - зберігає СЛО в текстовий файл;

Sort LO - сортує СЛО (розбиває на групи);

Текст програми


Текст модуля Class_Lin_ObmezhClass_Lin_Obmezh;, Dialogs, Grids;=array of integer;=array of String;=array of TIVector;=class:TIVector;:String;:integer;:byte;Set_koef(V:TIVector);Get_koef:TIVector;Set_znak(Znak:String);Get_znak:String;Set_lim(Lim:integer);Get_lim:integer;Set_Sort(V:TIVector);Get_Sort:Integer;Get_koef_String:String;Lo_IntoString:String;Check_solution(V:TIVector):boolean;Koef:TIVector read Get_koef write Set_koef;Znak:String read Get_znak write Set_znak;Lim:Integer read Get_Lim write Set_Lim;Sort:integer read Get_Sort;;=array of Lo;=class:TArrLo;Create(N:byte);Destroy; override;Set_Sys(SG:TStringGrid);Get_SLO:TArrLo;Check(SG:TStringGrid):boolean;Into_text:TSVector;Sort_SLO;;

//------------Операції із коефіцієнтами ЛО-----------------Lo.Set_koef (V:TIVector);(fKoef,length(V));:=V;_Sort(V);;Lo.Get_koef:TIVector;:=fKoef;;

Lo.Get_koef_String:String;:byte;:='';i:=0 to high(fKoef) do:=result+IntToStr(fKoef[i])+' ';;

//------------Отримання даних про знаки елементів Ло-------Lo.Set_Sort(V:TIVector);,j:byte;:=0;i:=0 to high(V) do //fSort = 0 => all +(V[i]<0) or (V[i]=0) then //fSort = 1 => all -//fSort = 2 => +,-,0:=1;j:=0 to high(V) do(V[j]=0) or (V[j]>0) then:=2;;;Lo.Get_Sort:Integer;:=fSort;;

//------------Операції із знаком---------------------------Lo.Set_znak(Znak:String);(Znak = '=') or (Znak = '>=')or (Znak = '<=') then:=Znak('Неправильно заповнений символ нерівності');;;;Lo.Get_znak:String;:=fZnak;;

//------------Операції з границею--------------------------Lo.Set_lim(Lim:integer);:=Lim;;Lo.Get_lim:integer;:=fLim;;

//------------Вивід ЛО як тексту---------------------------Lo.Lo_IntoString:String;i:byte;:='';i:=0 to high(fKoef) dofKoef[i]>0 theni<>0 thenfKoef[i] = 1 then:=result+'+x'+IntToStr(i+1)+' ':=result+'+'+IntToStr(fKoef[i])+'x'+IntToStr(i+1)+' 'fKoef[i] = 1 then:=result+'x'+IntToStr(i+1)+' ':=result+IntToStr(fKoef[i])+'x'+IntToStr(i+1)+' 'fKoef[i] = 0 then:=result+''fKoef[i] = -1 then:=result+'-x'+IntToStr(i+1)+' ':=result+IntToStr(fKoef[i])+'x'+IntToStr(i+1)+' ';:=result+' '+fZnak+' '+IntToStr(fLim);;

//------------Перевірка можливого розв'язку----------------Lo.Check_solution(V:TIVector):boolean;:byte;:integer;:=0;i:=0 to high(fKoef) do:=temp+fKoef[i]*V[i];fZnak = '<' thentemp < fLim then:=true:=falsefZnak = '>' thentemp > fLim then:=true:=falsefZnak = '<=' thentemp <= fLim then:=true:=falsefZnak = '>=' thentemp >= fLim then:=true:=falsefZnak = '=' thentemp = fLim then:=true:=false;;

//-----------------Class_SLO-------------------------------SLO.Create(N:byte);:byte;(fSys,n);i:=0 to high(fSys) do[i]:=Lo.Create;;SLO.Destroy;:byte;i:=0 to high(fSys) do[i].Free();Destroy;;

//---------------------------------------------------------SLO.Set_Sys(SG:TStringGrid);,j:integer;:TSVector;:TIVector;:Matrix;(MK,SG.RowCount-1);i:=0 to high(MK) do(MK[i],SG.ColCount-2);(VZ,SG.RowCount-1);(VL,SG.RowCount-1);i:=0 to SG.ColCount-3 doj:=1 to SG.RowCount-1 do[j-1][i]:=StrToInt(SG.Cells[i,j]);i:=1 to SG.RowCount-1 do[i-1]:=SG.Cells[SG.ColCount-2,i];[i-1]:=StrToInt(SG.Cells[SG.ColCount-1,i]);;i:=0 to high(fSys) do[i].Koef:=MK[i];[i].Znak:=VZ[i];[i].Lim:=VL[i];;;SLO.Get_SLO:TArrLo;(result,length(fSys));:=fSys;;

//---------------------------------------------------------SLO.Check(SG:TStringGrid):boolean;:integer;:TIVector;(VS, SG.ColCount);i:=0 to SG.ColCount-1 do[i]:=StrToInt(SG.Cells[i,1]);:=true;i:=0 to high(fSys) doNot fSys[i].Check_Solution(VS) then:=false;;;;SLO.Into_text:TSVector;:integer;(result,length(fSys));i:=0 to high(result) do[i]:=fSys[i].Lo_IntoString;;

//---------------------------------------------------------SLO.Sort_SLO;,j:integer;length(fSys)>1 then(fSys,length(fSys)+1);i:=1 to high(fSys) do:=i-1;[high(fSys)]:=fSys[i];(j>-1) and (fSys[high(fSys)].fSort < fSys[j].fSort) do[j+1]:=fSys[j];:=j-1;;[j+1]:=fSys[high(fSys)];;(fSys,length(fSys)-1);;;.

delphi об'єктний орієнтований програмування

Текст модуля Form1

Class_Form1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Spin, Grids,_Lin_Obmezh, ExtCtrls;=array of integer;=array of String;=array of TIVector;= class(TForm): TStringGrid;: TSpinEdit;: TSpinEdit;: TLabel;: TLabel;: TButton;: TButton;: TButton;: TRadioGroup;: TStringGrid;: TLabel;: TMemo;: TButton;: TOpenDialog;: TSaveDialog;: TButton;: TButton;: TButton;SpinEdit1Change(Sender: TObject);Button1Click(Sender: TObject);SpinEdit2Change(Sender: TObject);Button2Click(Sender: TObject);FormCreate(Sender: TObject);Button3Click(Sender: TObject);RadioGroup1Click(Sender: TObject);Button4Click(Sender: TObject);Button5Click(Sender: TObject);Button6Click(Sender: TObject);FormClose(Sender: TObject);Button7Click(Sender: TObject);IsEmpty1(Sender: TObject):boolean;IsEmpty2(Sender: TObject):boolean;;: TForm1;_1:SLO;

{$R *.dfm}TForm1.FormCreate(Sender: TObject);.ColCount:=3;.RowCount:=2;.Cells[0,0]:='a1';.Cells[1,0]:='=,<=,>=';.Cells[2,0]:='Limit';.Cells[0,0]:='x1';;TForm1.FormClose(Sender: TObject);_1.Free;;

//-----------------IsEmpty1,2------------------------------TForm1.IsEmpty1(Sender: TObject):boolean;:=StringGrid1.Cells[0,1]='';;TForm1.IsEmpty2(Sender: TObject):boolean;:=StringGrid2.Cells[0,1]='';;

//-----------------Button_Exit-----------------------------TForm1.Button1Click(Sender: TObject);;;

//-----------------Ввід к-сті елементів ЛО та к-сті ЛО-----

procedure TForm1.SpinEdit1Change(Sender: TObject);,i,j:byte;.Enabled:=True;:=SpinEdit1.Value;.ColCount:=n+2;.ColCount:=n;i:=0 to SpinEdit1.Value doj:=1 to SpinEdit2.Value do.Cells[i,j]:='';.Cells[i,j]:='';;i:=0 to n-1 do.Cells[i,0]:='a'+IntToStr(i+1);.Cells[i,0]:='x'+IntToStr(i+1);;.Cells[n,0]:='=,<=,>=';.Cells[n+1,0]:='Limit';Click(Sender);;TForm1.SpinEdit2Change(Sender: TObject);:byte;.Enabled:=True;:=SpinEdit2.Value;.RowCount:=n+1;Click(Sender);;

//-----------------Button Reset----------------------------TForm1.Button2Click(Sender: TObject);,j:integer;.Value:=1;.Value:=1;.ColCount:=3;.RowCount:=2;.ItemIndex:=0;i:=0 to 2 doj:=1 to 1 do.Cells[i,j]:='';i:=Memo1.Lines.Count downto 0 do.Lines.Delete(i);.Cells[0,1]:='';.Enabled:=False;SLO_1<>nil then_1.Free;_1:=nil;;

end;

//-----------------Вибір способу вводу---------------------

procedure TForm1.RadioGroup1Click(Sender: TObject);,j,k:byte;;RadioGroup1.ItemIndex=1 theni:=0 to StringGrid1.ColCount-3 doj:=1 to StringGrid1.RowCount-1 do.Cells[i,j]:=IntToStr(random(10)-5);i:=1 to StringGrid1.RowCount-1 do.Cells[SpinEdit1.Value+1,i]:=IntToStr(random(10));:=random(3);k=0 then.Cells[SpinEdit1.Value,i]:='<='k=1 then.Cells[SpinEdit1.Value,i]:='>='k=2 then.Cells[SpinEdit1.Value,i]:='=';i:=0 to StringGrid1.ColCount-1 doj:=1 to StringGrid1.RowCount-1 do.Cells[i,j]:='';;

//-----------------Вивід ЛО в Memo та стврення класу-------

procedure TForm1.Button3Click(Sender: TObject);:integer;SLO_1<>nil then_1.Free;_1:=nil;;i:=Memo1.Lines.Count downto 0 do.Lines.Delete(i);IsEmpty1(Sender) then('Заповніть таблицю значень');;;_1:=SLO.Create(SpinEdit2.Value);

//-----------------_1.Set_Sys(StringGrid1);

//-----------------i:=0 to high(SLO_1.Into_text) do.Lines.Add(SLO_1.Into_text[i]);;

//-----------------Button Check Solution-------------------TForm1.Button4Click(Sender: TObject);IsEmpty1(Sender) then('Заповніть таблицю значень');;;IsEmpty2(Sender) then('Не введено жодного можливого розв`язку в таблицю!');

exit;;Click(Sender);SLO_1.Check(StringGrid2) then('Даний розв`язок задовольняє системі лінійних обмежень')('Даний розв`язок HE задовольняє системі лінійних обмежень');SLO_1<>nil then_1.Free;_1:=nil;;;

//-----------------Button Open-----------------------------TForm1.Button5Click(Sender: TObject);:TextFile;_FName,Str,temp_Str:string;_Lo,kilkist_zminnuh,i,j,k:Integer;OpenDialog1.Execute thenClick(Sender);_FName:=Opendialog1.FileName;(F,temp_FName);(F);(F,kilkist_Lo);(F,kilkist_zminnuh);.Value:=kilkist_Lo;.Value:=kilkist_zminnuh;

//-----------------i:=1 to kilkist_Lo do(F,Str);:=1;_Str:='';j:=1 to length(Str) doStr[j]=' ' then.Cells[k-1,i]:=temp_Str;_Str:='';:=k+1;_Str:=temp_Str+Str[j];;

//-----------------i:=1 to kilkist_Lo do(F,Str);.Cells[kilkist_zminnuh,i]:=Str;;

//-----------------i:=1 to kilkist_Lo do(F,Str);.Cells[kilkist_zminnuh+1,i]:=Str;;

//-----------------(F);;;

//-----------------Button Save-----------------------------TForm1.Button6Click(Sender: TObject);:TextFile;_FName:string;:byte;IsEmpty1(Sender) then('Заповніть таблицю значень');;Click(Sender);SaveDialog1.Execute then_FName:=Savedialog1.FileName;(F,temp_FName);(F);(F,IntToStr(SpinEdit2.Value));(F,IntToStr(SpinEdit1.Value));i:=0 to high(SLO_1.Get_SLO) do(F,SLO_1.Get_SLO[i].Get_koef_String);i:=0 to high(SLO_1.Get_SLO) do(F,SLO_1.Get_SLO[i].Znak);i:=0 to high(SLO_1.Get_SLO) do(F,IntToStr(SLO_1.Get_SLO[i].Lim));(F);;;;

//-----------------Button Sort Lo--------------------------TForm1.Button7Click(Sender: TObject);:byte;Click(Sender);IsEmpty1(Sender) then;.Lines.Add('');_1.Sort_SLO;i:=0 to high(SLO_1.Into_text) do.Lines.Add(SLO_1.Into_text[i]);SLO_1<>nil then_1.Free;_1:=nil;;;.


Текст основної програми

Main_Program;,_Form1 in 'Form1\Class_Form1.pas' {Form1},_Lin_Obmezh in 'Class_Lin_Obmezh\Class_Lin_Obmezh.pas';

{$R *.res}.Initialize;.CreateForm(TForm1, Form1);.Run;.


Приклади роботи програми


Рис. 2


На рис. 2 створюємо СЛО з трьома змінними та трьома нерівностями. Автоматично вводимо в таблицю деякі дані та нажимаємо кнопку виводу СЛО на компоненту Memo. Отримуємо результат з трьох нерівностей які і утворюють СЛО.


Рис. 3


На рисунку 3 показано роботу функції Check Solution яка перевіряє чи задовольняє вектор введений в таблицю нижче СЛО. Як бачимо з рисунку то даний вектор (1,2,3) не задовольняє СЛО.



Рис. 4


На рисунку 4 бачимо що введений вектор задовольняє СЛО



Рис. 5


На рисунку 5 показана робота кнопки Sort Lo яка відсортовує систему лінійних обмежень. Сортування відбувається таким чином: в кожній нерівності перевіряється знак коефіцієнта . Першими виводяться ті ЛО в яких всі коефіцієнти додатні, другими - ті в яких всі коефіцієнти відємні і останніми ті в яких коефіцієнти різні або дорівнюють нулеві.


Висновок


В даній курсовій роботі показано основні можливості ООП для реалізації моделювання систем лінійних обмежень та моделювання обєктів в загальному. Використання ООП для вирішення задач такого типу значно полегшує програмісту роботу, робить код більш структурованим та дозволяє легше його читати. Для себе можу зробити важливий висновок, що ООП - гнучкий інструмент який ідеально підходить для написання складних програм які потребують описання деяких обєктів та їх поведінки.



Список використаної літератури


.Емеличев В.А. Многогранники, графы, оптимизация (комбинаторная теория многогранников). Емеличев В.А., Ковалев М.М., Кравцов М.К. - М.: Наука, 1981.- 344 с. Глава 1. Параграфы 1,2,4.

.Семйон І.В. Основи обєктно-орієнтованого програмування. Навчальний посібник / Семйон І.В., Чупов С. В., Брила А. Ю., Апшай А. І. - Ужгород, 2011.- 141с.

3.Матеріал з вільної енциклопедії Вікіпедії http://uk.wikipedia.org/wiki/Опуклий_політоп <http://uk.wikipedia.org/wiki/%D0%9E%D0%BF%D1%83%D0%BA%D0%BB%D0%B8%D0%B9_%D0%BF%D0%BE%D0%BB%D1%96%D1%82%D0%BE%D0%BF> http://uk.wikipedia.org/wiki/Багатогранник <http://uk.wikipedia.org/wiki/%D0%91%D0%B0%D0%B3%D0%B0%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%BD%D0%B8%D0%BA>


Зміст Вступ Основні поняття про ООП .Визначення ООП .Фундаментальні поняття Відомості про СЛО .Система лінійних нерівностей та опуклі бага

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ