Предметна область системного аналізу.
Основні поняття системного аналізу
У процесі вивчення системного аналізу важливо передусім проаналізувати причини і фактори, що зумовили можливість його становлення й розвитку як універсальної наукової методології, зрозуміти роль і місце системного аналізу в сучасних галузях наукових знань, у різних сферах практичної діяльності, а також виявити міру його впливу на розвиток суспільства. В алгоритмах на дискретних структурах часто… Читати ще >
Предметна область системного аналізу. Основні поняття системного аналізу (реферат, курсова, диплом, контрольна)
МІНІСТЕРСТВО ОСВІТИ І НАУКИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра інформаційних систем та мереж Практична робота № 1
на тему:
ПРЕДМЕТНА ОБЛАСТЬ СИСТЕМНОГО АНАЛІЗУ. ОСНОВНІ ПОНЯТТЯ СИСТЕМНОГО АНАЛІЗУ Львів-2009р.
Назва роботи:
Предметна область системного аналізу. Основні поняття системного аналізу
Мета роботи:
Ознайомитись з предметною областю системного аналізу та вивчити теоретичні відомості.
Короткі теоретичні відомості:
У процесі вивчення системного аналізу важливо передусім проаналізувати причини і фактори, що зумовили можливість його становлення й розвитку як універсальної наукової методології, зрозуміти роль і місце системного аналізу в сучасних галузях наукових знань, у різних сферах практичної діяльності, а також виявити міру його впливу на розвиток суспільства.
Необхідність такого підходу обумовлена видатними досягненнями ХХ століття, зокрема освоєнням космосу; розробкою й масовим впровадженням обчислювальної техніки, інформаційних технологій і світової мережі Інтернет; швидким розвитком і широким застосуванням авіацій; дослідженням ядерних процесів, освоєнням і розвитком атомної енергетики. Стрімкий розвиток наукомістких технологій і технічного оснащення в різних галузях виробництва й обслуговування, враховуючи медицину, фармакологію, генну інженерію, низка інших найбільших досягнень науковотехнічного прогресу увійшли в історію цивілізації як результат погодженої взаємодії науки, освіти і промисловості. Усі ці досягнення зробили свій вагомий внесок різні науки, які охоплюють багато галузей знань і різні історичні періоди. Це були науки, що зародилися у Стародавньому світі, і науки, формування яких почалося лише у ХХ столітті. До останніх поряд з іншими новітніми напрямами, такими як кібернетика, дослідження операцій, загальна теорія систем, системотехніка, теорія прийняття рішень, теорія оптимізації, належить і системний аналіз.
Системне мислення — це вища форма людського пізнання, коли процеси відображення об'єктивної реальності базуються на цілісному відображені досліджуваного об'єкта з позиції досягнення поставлених цілей дослідження на підставі знань, досвіду, інтуїції і передбачення. Принципово важливою деталлю цього означення є залежність меж об'єкта дослідження від поставлених цілей.
Середовище — зовнішнє оточення людини та об'єкта дослідження (природне середовище, зовнішні об'єкти, що залежать від розглянутого об'єкта або взаємодіють із ним).
Людина — розробник, виробник, користувача, продавець чи покупець об'єкта або фахівець-дослідник відповідної предметної галузі, до якої належить досліджуваний об'єкт.
Відповіді на контрольні питання:
1. Системний аналіз — вивчення об'єкта дослідження як сукупності елементів, що утворюють систему. У наукових дослідженнях він передбачає оцінку поведінки об'єкта як системи з усіма факторами, які впливають на його функціонування. Цей метод широко застосовується у наукових дослідженнях при комплексному вивченні діяльності виробничих об'єднань і галузі в цілому, визначенні пропорцій розвитку галузей економіки тощо.
2. Системне мислення — це вища форма людського пізнання, коли процеси відображення об'єктивної реальності базуються на цілісному відображені досліджуваного об'єкта з позиції досягнення поставлених цілей дослідження на підставі знань, досвіду, інтуїції і передбачення. Принципововажливою деталлю цього означення є залежність меж об'єкта дослідження від поставлених цілей.
3. Системний аналітик — Людина яка стежить за станом системи. І досліджує систему.
4. Предметна область системного аналізу зводиться до вивчення складних багаторівневих множин систем різної природи та різних видів і класів з різноманітними властивостями і відношеннями між ними. Вона настільки широка, що не підлягає строгій та однозначній класифікації й впорядкуванню. Методи системного дослідження як способи чи шляхи практичного або теоретичного пізнання явищ і закономірностей функціонування і розвитку складних систем є досить різноманітними і не обмежуються будь-якими рамками.
5. A?B=(a,b) — прямий добуток множин.
A?B=x — поєднання множин.
A?B=x?A?x?B — перетин множин.
AB=x — різниця множин.
? — пуста множина.
U — універсальна множина.
A=UA=x — доповнення множини.
6. Будь-який заданий клас абстрактних об'єктів може мати декілька можливих представлень, та вибір найкращого з них основним чином залежить від того, яким чином об'єкт буде використаний, а також від типу здійснених над ним операцій.
В алгоритмах на дискретних структурах часто ми зустрічаємось з представленням кінцевих послідовностей та операціями з ними. З обчислювальної точки зору простішим представленням кінцевої послідовності 1 2, , ,n s s … s є точний список її членів, які знаходяться по порядку в суміжних комірках пам’яті.
7. Мережа Петрі складається з чотирьох елементів: скінченної множини позицій Р = {p1, p2,…, pn}, множини переходів Т = {t1, t2,…, tm}, вхідної функції І:T>P, і вихідної функції О:T>P.
8. Майже всі машинні представлення дерев основані на зв’язних розподілах. Кожний вузол складається із поля даних та деяких полів для вказівників. В наступному прикладі представлені дерев кожний вузол має по три поля вказівників.
9. Дерево досягальності мережі Петрі є ілюстрацією множини досягальності R(C, ?). Оскільки в багатьох випадках множина досягальності є нескінченною, то існують певні правила, які дозволяють відобразити її скінченним деревом досягальності.
Поставновка задачі:
Потрібно за даними в методичці знайти розширену вхідну і вихідну функції мережі Петрі. Також зобразити граф мережі Петрі, дерево досяжності глибини 3. Написати програму яка повинна шукати розширену вхідну і вихідну функції за вхідними даними і будувати дерево досяжності.
Вхідні дані:
I(t1) = { p4, p2, p3 }; O(t1) = { p4, p3, p4, p3, p3, p4, p1 };
I(t2) = { p2, p3, p3, p3 }; O(t2) = { p3, p1, p2, p4, p4 };
I(t3) = { p4, p3 }; O(t3) = { p1, p4};
I(t4) = { p4, p2 p2, p4 ,p4 p3, p2 }; O(t4) = { p2, p2 };
?0 = {5,5,5,5}.
Хід виконання роботи:
Ознайомитись з теоретичними відомості, які подані в цій методичці. Реалізувати на мовах Pascal або С програми зв’язного формування списку елементів послідовності згідно номеру варіанту.Програма повинна шукати розширену вхідну і вихідну функцію і будувати дерево досяжності глибини 3. Розв’язати завдання відповідно до свого порядкового номеру у списку групи. Завдання отримати у викладача. При оформленні лабораторної роботи дотримуватись вимог, які наведені в методичних вказівках.
Розширена вхідна і вихідна функції:
I (p1)={t1,t2,t3} I (p2)={t2,t4,t4} I (p3)={t1,t1,t1,t2} I (p4)={t1,t1,t1,t2,t2,t3} | O (p1)={} O (p2)={t1,t2,t4,t4,t4} O (p3)={t1,t2,t2,t2,t3,t4} O (p4)={t1,t3,t4,t4,t4} | |
Граф мережі Петрі:
Маркування мережі Петрі:
Виконання мережі Петрі:
Запуск t1:
Запуск t2:
Запуск t3:
Запуск t4:
Дерево досягальності глибини 3:
Код програми:
#include #include #pragma hdrstop #include «Unit1.h» #include «Unit2.h» #include «Unit3.h» //————————————————————————————————————-; #pragma package (smart_init) #pragma link «XPManifest» #pragma link «acButtons» #pragma resource «*.dfm» #define n 4 TForm1 *Form1; //—————————————————————————————————————; struct TMT { int z; int p[n]; int t[n]; }; TMT P[n], T[n]; int ccc[n], cc[n], c[n], b; //—————————————————————————————————————; __fastcall TForm1: TForm1(TComponent* Owner) : TForm (Owner) { } //—————————————————————————————————————; void run () { P[0]. z=StrToInt (Form1->StringGrid3->Cells[1][0]); T[0]. z=0; ccc[0]=P[0]. z; P[1].z=StrToInt (Form1->StringGrid3->Cells[2][0]); T[1]. z=0; ccc[1]=P[1]. z; P[2].z=StrToInt (Form1->StringGrid3->Cells[3][0]); T[2]. z=0; ccc[2]=P[2]. z; P[3].z=StrToInt (Form1->StringGrid3->Cells[4][0]); T[3]. z=0; ccc[3]=P[3]. z; int z; for (z=0; z { for (int i=0; i {P[z]. t[i]=0; T[i]. p[z]=0; for (int j=0; jStringGrid1->ColCount; j++) { if ((StrToIntDef (Form1->StringGrid2->Cells[j][i], 0))) if (z+1==StrToInt (Form1->StringGrid2->Cells[j][i]))P[z]. t[i]++; if ((StrToIntDef (Form1->StringGrid1->Cells[j][i], 0))) if (z+1==StrToInt (Form1->StringGrid1->Cells[j][i]))T[i].p[z]++; }}}} //—————————————————————————————————————; void search () { AnsiString p, p2, t, t2; int z, j, zz; for (z=0; zStringGrid1->RowCount; z++) { p="I (p" +IntToStr (z+1)+")={" ; t="O (p" +IntToStr (z+1)+")={" ; for (j=0; jStringGrid2->RowCount; j++) for (zz=0; zzStringGrid2->ColCount; zz++) { if ((StrToIntDef (Form1->StringGrid2->Cells[zz][j], 0))) if (z+1==StrToInt (Form1->StringGrid2->Cells[zz][j])) { p2="t" +IntToStr (j+1)+" ," ; p+=p2; } if ((StrToIntDef (Form1->StringGrid1->Cells[zz][j], 0))) if (z+1==StrToInt (Form1->StringGrid1->Cells[zz][j])) { t2="t" +IntToStr (j+1)+" ," ; t+=t2; } } if (p.Pos («t»)) p[p.Length ()]='}';else p+="}" ; Form1->Memo1->Lines->Add (p); if (t.Pos («t»)) t[t.Length ()]='}';else t+="}" ; Form1->Memo2->Lines->Add (t); }} //========================================================= void __fastcall TForm1: FormCreate (TObject *Sender) { for (int i=0; iStringGrid1->RowCount; i++) { StringGrid1->Cells[0][i]="I (t" +IntToStr (i+1)+")" ; StringGrid2->Cells[0][i]="O (t" +IntToStr (i+1)+")" ; } StringGrid3->Cells[0][0]=" м" ; StringGrid3->Cells[1][0]="5″ ; StringGrid3->Cells[2][0]="5″ ; StringGrid3->Cells[3][0]="5″ ; StringGrid3->Cells[4][0]="5″ ; } //========================================================= void spp (int i) { for (int j=0; j if (T[i]. p[j]&&T[i].p[j]>P[j].z) {b=0; break;} if (b==1) { for (int j=0; j { T[i]. z+=T[i].p[j]; P[j]. z-=T[i].p[j]; } for (int k=0; k if (P[k]. t[i]≠0&&T[i].z≠0) P[k]. z+=P[k].t[i]; } } void kpk () { for (int i=0; i { Form1->TreeView1->Items->AddChild (Form1->TreeView1->Items->Item[0]," 0″); Form2->TreeView1->Items->AddChild (Form2->TreeView1->Items->Item[0]," 0″); for (int j=0; j { Form1->TreeView1->Items->AddChild (Form1->TreeView1->Items->Item[0]->Item[i]," 0″); Form2->TreeView1->Items->AddChild (Form2->TreeView1->Items->Item[0]->Item[i]," 0″); for (int e=0; e { Form1->TreeView1->Items->AddChild (Form1->TreeView1->Items->Item[0]->Item[i]->Item[j]," 0″); Form2->TreeView1->Items->AddChild (Form2->TreeView1->Items->Item[0]->Item[i]->Item[j]," 0″); }}}}//———————; //======================================= int p1, p2,p3; void run5() p1=-1; AnsiString f="m («+IntToStr (P[0]. z)+» ," +IntToStr (P[1].z)+" ," +IntToStr (P[2].z)+" ," +IntToStr (P[3].z)+")" ; Form1->TreeView1->Items->Clear (); Form2->TreeView1->Items->Clear (); Form1->TreeView1->Items->Add (NULL, f); Form2->TreeView1->Items->Add (NULL, f); Form1->TreeView1->Items->Item[0]->Text=f; Form2->TreeView1->Items->Item[0]->Text=f; kpk (); for (int i=n-1; i>-1; i—) {b=1; T[i]. z=0; p1++; p2=-1; if (!Form1->CheckBox2->Checked) t1=p1; else t1=i; P[0]. z=ccc[0]; P[1]. z=ccc[1]; P[2]. z=ccc[2]; P[3]. z=ccc[3]; spp (p1); AnsiString f="t" +IntToStr (p1+1)+" («+IntToStr (P[0]. z)+» ," +IntToStr (P[1].z)+" ," +IntToStr (P[2].z)+" ," +IntToStr (P[3].z)+")" ; if (ccc[0]≠P[0].z||ccc[1]≠P[1].z||ccc[2]≠P[2].z||ccc[3]≠P[3].z) { Form1->TreeView1->Items->Item[0]->Item[t1]->Text=f; Form2->TreeView1->Items->Item[0]->Item[t1]->Text=f; cc[0]=P[0].z; cc[1]=P[1].z; cc[2]=P[2].z; cc[3]=P[3].z; } else goto end; for (int j=n-1; j>-1; j—) {b=1; T[j]. z=0; p2++; p3=-1; if (!Form1->CheckBox2->Checked) t2=p2; else t2=j; P[0]. z=cc[0]; P[1]. z=cc[1]; P[2]. z=cc[2]; P[3]. z=cc[3]; spp (p2); AnsiString f="t" +IntToStr (p2+1)+" («+IntToStr (P[0]. z)+» ," +IntToStr (P[1].z)+" ," +IntToStr (P[2].z)+" ," +IntToStr (P[3].z)+")" ; if (cc[0]≠P[0]. z||cc[1]≠P[1].z||cc[2]≠P[2].z||cc[3]≠P[3].z) { Form1->TreeView1->Items->Item[0]->Item[t1]->Item[t2]->Text=f; Form2->TreeView1->Items->Item[0]->Item[t1]->Item[t2]->Text=f; c[0]=P[0]. z; c[1]=P[1]. z; c[2]=P[2]. z; c[3]=P[3]. z; } else goto end1; for (int e=n-1; e>-1; e—) { b=1; T[j]. z=0; p3++; if (!Form1->CheckBox2->Checked) t3=p3; else t3=e; P[0]. z=c[0]; P[1]. z=c[1]; P[2]. z=c[2]; P[3]. z=c[3]; spp (p3); AnsiString f="t" +IntToStr (p3+1)+" («+IntToStr (P[0]. z)+» ," +IntToStr (P[1].z)+" ," +IntToStr (P[2].z)+" ," +IntToStr (P[3].z)+")" ; if (c[0]≠P[0]. z||c[1]≠P[1].z||c[2]≠P[2].z||c[3]≠P[3].z) { Form1->TreeView1->Items->Item[0]->Item[t1]->Item[t2]->Item[t3]->Text=f; Form2->TreeView1->Items->Item[0]->Item[t1]->Item[t2]->Item[t3]->Text=f; } } end1: }end: } void __fastcall TForm1: acBitBtn2Click (TObject *Sender) { int i=0,j=0; p1=n; b=1; p1=n; Memo1->Clear (); Memo2->Clear (); search (); run (); run5(); } | |
Результати роботи програми:
Висновок:
Я ознайомився з предметною областю системного аналізу та вивчив теоретичні відомості. Виконав завдання, написав програму.