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

Тип работы:
Контрольная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

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

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

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

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

Практична робота № 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 ss є точний список її членів, які знаходяться по порядку в суміжних комірках пам’яті.

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}

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

2

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

2

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

Запуск t1:

2

Запуск t2:

2

Запуск t3:

2

Запуск t4:

2

Дерево досягальності глибини 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 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();

}

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

Висновок:

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

ПоказатьСвернуть
Заполнить форму текущей работой