Контрольная работа по предмету "Информатика"


Предметна область системного аналізу Основні поняття системного аналізу

МІНІСТЕРСТВО ОСВІТИ І НАУКИ


НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА”


Кафедра інформаційних


систем та мереж


Практична робота №1


на тему:


ПРЕДМЕТНА ОБЛАСТЬ СИСТЕМНОГО АНАЛІЗУ. ОСНОВНІ ПОНЯТТЯ СИСТЕМНОГО АНАЛІЗУ


Львів-2009р.


Назва роботи:


Предметна область системного аналізу. Основні поняття системного аналізу


Мета роботи:


Ознайомитись з предметною областю системного аналізу та вивчити теоретичні відомості.


Короткі теоретичні відомості:


У процесі вивчення системного аналізу важливо передусім проаналізувати причини і фактори, що зумовили можливість його становлення й розвитку як універсальної наукової методології, зрозуміти роль і місце системного аналізу в сучасних галузях наукових знань, у різних сферах практичної діяльності, а також виявити міру його впливу на розвиток суспільства.


Необхідність такого підходу обумовлена видатними досягненнями ХХ століття, зокрема освоєнням космосу; розробкою й масовим впровадженням обчислювальної техніки, інформаційних технологій і світової мережі Інтернет; швидким розвитком і широким застосуванням авіацій; дослідженням ядерних процесів, освоєнням і розвитком атомної енергетики. Стрімкий розвиток наукомістких технологій і технічного оснащення в різних галузях виробництва й обслуговування, враховуючи медицину, фармакологію, генну інженерію, низка інших найбільших досягнень науково- технічного прогресу увійшли в історію цивілізації як результат погодженої взаємодії науки, освіти і промисловості. Усі ці досягнення зробили свій вагомий внесок різні науки, які охоплюють багато галузей знань і різні історичні періоди. Це були науки, щозародилися у Стародавньому світі, і науки, формування яких почалося лишеу ХХ столітті. До останніх поряд з іншими новітніми напрямами, такими яккібернетика, дослідження операцій, загальна теорія систем, системотехніка,теорія прийняття рішень, теоріяоптимізації, належить і системний аналіз.


Системне мислення
– це вища форма людського пізнання, коли процеси відображення об’єктивної реальності базуються на цілісному відображені досліджуваного об’єкта з позиції досягнення поставлених цілей дослідження на підставі знань, досвіду, інтуїції і передбачення. Принципововажливоюдеталлю цього означення є залежність меж об’єкта дослідженнявідпоставлених цілей.


Середовище
– зовнішнє оточення людини та об’єкта дослідження (природне середовище, зовнішні об’єкти, що залежать від розглянутого об’єкта або взаємодіють із ним).


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


Відповіді на контрольні питання:


1. Системний аналіз
— вивчення об'єкта дослідження як сукупності елементів, що утворюють систему. У наукових дослідженнях він передбачає оцінку поведінки об'єкта як системи з усіма факторами, які впливають на його функціонування. Цей метод широко застосовується у наукових дослідженнях при комплексному вивченні діяльності виробничих об'єднань і галузі в цілому, визначенні пропорцій розвитку галузей економіки тощо.


2. Системне мислення
– це вища форма людського пізнання, коли процеси відображення об’єктивної реальності базуються на цілісному відображені досліджуваного об’єкта з позиції досягнення поставлених цілей дослідження на підставі знань, досвіду, інтуїції і передбачення. Принципововажливою деталлю цього означення є залежність меж об’єкта дослідження відпоставлених цілей.


3. Системний аналітик –
Людина яка стежить за станом системи.І досліджує систему.


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


5. A
×B
={(a
,b
) |a
A
,b
B
} - прямий добуток множин.


A
B
={x
|x
A
x
B
} - поєднання множин.


A
B
={x
|x
A
x
B
} - перетин множин.


A
\B
={x
|x
A
x
B
} - різниця множин.


∅- пуста множина.


U
- універсальна множина.


A
=U
\A
={x
|x
A
} - доповнення множини.


6. Будь-який заданий клас абстрактних об’єктів може мати декількаможливихпредставлень, та вибір найкращого з них основним чиномзалежить від того,яким чином об’єкт буде використаний, а також від типуздійснених над ним операцій.


В алгоритмах на дискретних структурах часто ми зустрічаємось зпредставленням кінцевих послідовностей та операціями з ними. Зобчислювальної точки зору простішим представленням кінцевоїпослідовності 1 2 , , ,n s s
s
є точний список її членів, які знаходяться попорядкув суміжних комірках пам’яті.


7. Мережа Петрі
складається з чотирьох елементів: скінченної множини позицій Р
= {p
1, p
2,..., pn
}, множини переходів Т
= {t
1, t
2,..., tm
}, вхідної
функції І
:T
P
, і вихідної
функції О
:T
P
.


8. Майже всі машинні представлення дерев основані на зв’язнихрозподілах.Кожний вузол складається із поля даних та деяких полів длявказівників. В наступному прикладі представлені дерев кожний вузол має потри полявказівників.


9. Дерево досягальності
мережі Петрі є ілюстрацією множинидосягальностіR
(C
, μ). Оскільки в багатьох випадках множина досягальності єнескінченною, то існують певні правила, які дозволяють відобразити їїскінченним деревом досягальності.


Поставновка задачі:


Потрібно за даними в методичці знайти розширену вхідну і вихідну функції мережі Петрі. Також зобразити граф мережі Петрі, дерево досяжності глибини 3. Написати програму яка повинна шукати розширену вхідну і вихідну функції за вхідними даними і будувати дерево досяжності.


Вхідні дані:


I
(t
1) = {p
4,p
2 , p
3 }; O
(t
1) = { p
4, p
3, p
4 , p
3, p
3 , p
4, p
1 };


I
(t
2) = { p
2, p
3, p
3 , p
3};O
(t
2) = { p
3,p
1, p
2, p
4, p
4};


I
(t
3) = {p
4, p
3}; O
(t
3) = {p
1,p
4};


I
(t
4) = {p
4, p
2p
2, p
4 ,
p
4p
3, p
2};O
(t
4) = { p
2, p
2 };


μ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}



Граф мережі Петрі:




Маркування мережі Петрі:




Виконання мережі Петрі:


Запуск
t
1:




Запуск
t2
:




Запуск
t3
:







t4



Запуск
t4
:




Дерево досягальності глибини 3:




Код програми:




#include <vcl.h>


#include <string.h>


#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<n; z++)


{


for(int i=0; i<n; i++)


{P[z].t[i]=0; T[i].p[z]=0;


for(int j=0; j<Form1->StringGrid1->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; z<Form1->StringGrid1->RowCount; z++)


{ p="I(p"+IntToStr(z+1)+")={";


t="O(p"+IntToStr(z+1)+")={";


for(j=0; j<Form1->StringGrid2->RowCount; j++)


for(zz=0; zz<Form1->StringGrid2->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; i<Form1->StringGrid1->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<n; j++)


if(T[i].p[j]&&T[i].p[j]>P[j].z) {b=0; break;}


if(b==1)


{


for(int j=0; j<n; j++)


{


T[i].z+=T[i].p[j];


P[j].z-=T[i].p[j];


}


for(int k=0; k<n; 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<n; 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<n; 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<n; 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 run_5()


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();


run_5();


}



Результати роботи програми:




Висновок:


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



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

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