Strukturlt s nem strukturlt programok Szlvi Pter ELTE

  • Slides: 26
Download presentation
Strukturált és nem strukturált programok Szlávi Péter ELTE Informatika Szakmódszertani Csoport szlavi@ludens. elte. hu

Strukturált és nem strukturált programok Szlávi Péter ELTE Informatika Szakmódszertani Csoport szlavi@ludens. elte. hu http: //izzo. inf. elte. hu/szlavi Strukturált és nem strukturált programok

 Tartalom 1. Alapvető definíciók 2. Alapvető tételek 3. A nem-strukturáltság jellemzői 4. A

Tartalom 1. Alapvető definíciók 2. Alapvető tételek 3. A nem-strukturáltság jellemzői 4. A program bonyolultsága 2021. 09. 08. Strukturált és nem strukturált programok 2

 1. Alapvető definíciók Alapirodalom: Varga L. -- Programok analízise és szintézise Strukturált programszerkezetek:

1. Alapvető definíciók Alapirodalom: Varga L. -- Programok analízise és szintézise Strukturált programszerkezetek: – blokk-szekvencia (begin f; g end = B(f, g)) – elágazás (if p then f else g = ITE(p; f, g)) – ciklus (while p do f = WD(p; f)) Program (vezérlő-) gráf: – csomópontok • függvény-csomópont • predikátum-csomópont • gyűjtő csomópont – irányított élek 2021. 09. 08. Strukturált és nem strukturált programok 3

 1. Alapvető definíciók (folytatás) Valódi program, amely gráfja teljesíti: 1. Egy bemenő- és

1. Alapvető definíciók (folytatás) Valódi program, amely gráfja teljesíti: 1. Egy bemenő- és egy kimenő él 2. Csomópontjai: predikátum-/függvény-/gyűjtő csomópont 3. Minden csomóponton át vezet út a bemenő Továbbiakban élből a kimenő élbe. program alatt valódi Egy rossz példa: programot értünk. 2021. 09. 08. Strukturált és nem strukturált programok 4

 1. Alapvető definíciók (folytatás) Elemi programgráfok (strukturált programszerkezetek gráfjai): 2021. 09. 08. Strukturált

1. Alapvető definíciók (folytatás) Elemi programgráfok (strukturált programszerkezetek gráfjai): 2021. 09. 08. Strukturált és nem strukturált programok 5

 1. Alapvető definíciók (folytatás) A vezérlőgráf lebontása: a gráfban előforduló elemi programgráfok helyettesítése

1. Alapvető definíciók (folytatás) A vezérlőgráf lebontása: a gráfban előforduló elemi programgráfok helyettesítése függvény-csomóponttal 2021. 09. 08. Strukturált és nem strukturált programok 6

 1. Alapvető definíciók (folytatás) 2021. 09. 08. Strukturált és nem strukturált programok 7

1. Alapvető definíciók (folytatás) 2021. 09. 08. Strukturált és nem strukturált programok 7

 1. Alapvető definíciók (folytatás) 2021. 09. 08. Strukturált és nem strukturált programok 8

1. Alapvető definíciók (folytatás) 2021. 09. 08. Strukturált és nem strukturált programok 8

 1. Alapvető definíciók (folytatás) Strukturált program: az a program, amely gráfja lebontható egyetlen

1. Alapvető definíciók (folytatás) Strukturált program: az a program, amely gráfja lebontható egyetlen függvény-csomóponttá. Egy példa. 2021. 09. 08. Strukturált és nem strukturált programok 9

 2. Alapvető tételek Lemma: Ha egy (valódi) program gráfjának élei száma: e, pred.

2. Alapvető tételek Lemma: Ha egy (valódi) program gráfjának élei száma: e, pred. / függv. /gyűjtő csomópontjainak száma: / / , akkor teljesülnek: e = 3 + +1, ill. = Biz. : megszámolni az egyes bemenő és kimenő éleket: be = + +2 , ki = +2 +. Nyilvánvaló: e = be+1 = ki+1. Ebből már következik az állítás. Jelölések: P programgráfhoz: e(P)/ (P): =. . . 2021. 09. 08. Strukturált és nem strukturált programok 10

 2. Alapvető tételek (folytatás) Böhm-Jacopini tétele (a strukturált programozás alaptétele): Bármely valódi programhoz

2. Alapvető tételek (folytatás) Böhm-Jacopini tétele (a strukturált programozás alaptétele): Bármely valódi programhoz meg lehet konstruálni a vele ekvivalens strukturált programot. Biz. : f-hez megkonstruáljuk a vele ekvivalens strukturáltat… … f-t esetleg ekvivalensen transzformálva felbontjuk valahány valódi (rész)programra: f B(g, h)/ITE(p; g, h)/WD(p; g) ahol g, h éleinek száma kevesebb f élszámánál. 2021. 09. 08. Strukturált és nem strukturált programok 11

 2. Alapvető tételek (folytatás) Tfh: e(f)>2 azaz legalább 2 csomópontja van (ahol e(x):

2. Alapvető tételek (folytatás) Tfh: e(f)>2 azaz legalább 2 csomópontja van (ahol e(x): = x programgráf éleinek száma) g 1. eset: h f=B(g, h) ekkor h valódi program és e(h)=e(f)-1. Vizsgálandó: h. 2. eset: p f=ITE(g, h) p ahol g, h valódi programok és (g)< (f), (g)= (f) és a lemmából: e(g)= (g)+3 (g)+1< (f)+3 (f)+1=e(f). . . h-ra hasonlóan. Továbbvizsgálandó: h és g. 2021. 09. 08. Strukturált és nem strukturált programok g h 12

 2. Alapvető tételek (folytatás) 3. eset: f’ Mivel 2 kimenő él jön ki

2. Alapvető tételek (folytatás) 3. eset: f’ Mivel 2 kimenő él jön ki az f’-ből, ezért biztosan van legalább egy predikátum csomópont az f’-ben. 3 al-eset a gyűjtőpontot követő csomópont fajtája szerint: 3 a) Cél a 3 c) esethez eljutni 3 b) 3 c) 2021. 09. 08. p Strukturált és nem strukturált programok 13

 2. Alapvető tételek (folytatás) 3 a) f” f” f” 3 b) 3 c)

2. Alapvető tételek (folytatás) 3 a) f” f” f” 3 b) 3 c) p f” g p Ki h Persze be kell látni, hogy a transzformációk során a továbbelemzendő struktúra élszáma (a sorozatos transzformáció után) kisebb. 2021. 09. 08. Strukturált és nem strukturált programok 14

 2. Alapvető tételek (folytatás) Felülről-lefelé kifejtés: Az f programot az első szinten megvalósítjuk

2. Alapvető tételek (folytatás) Felülről-lefelé kifejtés: Az f programot az első szinten megvalósítjuk B(g, h)/ITE(p; g, h)/WD(p; g) valamelyikével, majd a p/g/h finomításokként kapott programokat ugyanígy valósítjuk meg, amíg „elemi” utasításokig el nem jutunk. Felülről-lefelé kifejtés tétele: Az f program felülről-lefelé kifejtésekor: a) f=B(g, h): g megválasztható, h egyértelmű; b) f=ITE(p; g, h): p megválasztható; g, h egyértelmű; c) f=WD(p; g): p megválasztható; g egyértelmű; 2021. 09. 08. Strukturált és nem strukturált programok 15

 3. A nem-strukturáltság jellemzői Nem strukturált alapszerkezetek: Ciklusok -- 2021. 09. 08. Strukturált

3. A nem-strukturáltság jellemzői Nem strukturált alapszerkezetek: Ciklusok -- 2021. 09. 08. Strukturált és nem strukturált programok 16

3. A nem-strukturáltság jellemzői (folytatás) Nem strukturált alapszerkezetek: Elágazások -- 2021. 09. 08. Strukturált

3. A nem-strukturáltság jellemzői (folytatás) Nem strukturált alapszerkezetek: Elágazások -- 2021. 09. 08. Strukturált és nem strukturált programok 17

3. A nem-strukturáltság jellemzői (folytatás) Tétel: Egy program akkor és csak akkor nem strukturált,

3. A nem-strukturáltság jellemzői (folytatás) Tétel: Egy program akkor és csak akkor nem strukturált, ha annak részgráfjaként előfordul a több ki-, ill. belépő éllel rendelkező ciklus vagy elágazás. Tétel: A nem strukturált programnak a nem strukturált alapszerkezetek közül legalább kettőt kell tartalmaznia. 2021. 09. 08. Strukturált és nem strukturált programok 18

 4. A program bonyolultsága Ciklikus bonyolultság: A P program ~ m(P)=e(P)-( (P)+ (P))

4. A program bonyolultsága Ciklikus bonyolultság: A P program ~ m(P)=e(P)-( (P)+ (P)) Tétel: P: m(P)= (P)+1 Biz. : lemmából m(P)= e(P)-( (P)+ (P))= =3 (P)+1 -( (P)+ (P))= =2 (P)- (P)+1= (P)+1 2021. 09. 08. Strukturált és nem strukturált programok 19

 4. A program bonyolultsága (folytatás) Tétel: Ha P nem strukturált, akkor m(P)>2 Példa:

4. A program bonyolultsága (folytatás) Tétel: Ha P nem strukturált, akkor m(P)>2 Példa: m(P)=5+1=6 2021. 09. 08. Strukturált és nem strukturált programok 20

 4. A program bonyolultsága (folytatás) Lényeges bonyolultság: M(P): =m(P)-k ahol k: =a P-beli

4. A program bonyolultsága (folytatás) Lényeges bonyolultság: M(P): =m(P)-k ahol k: =a P-beli alapszerkezetek száma Tétel: Ha P strukturált, akkor M(P)=1, egyébként >1 2021. 09. 08. Strukturált és nem strukturált programok 21

 4. A program bonyolultsága (folytatás) Példa: M(P)=m(P)-k=6 -2=4 2021. 09. 08. Strukturált és

4. A program bonyolultsága (folytatás) Példa: M(P)=m(P)-k=6 -2=4 2021. 09. 08. Strukturált és nem strukturált programok 22

 4. A program bonyolultsága (folytatás) Más bonyolultságmértékek „Alapelképzelés”: a program bonyolultsága ( )

4. A program bonyolultsága (folytatás) Más bonyolultságmértékek „Alapelképzelés”: a program bonyolultsága ( ) additíven függ részeinek bonyolultágától, azaz f=B(g, h) (f)= (g)+ (h) f=ITE(p; g, h) (f)= (p)+ (g)+ (h) f=WD(p; g) (f)= (p)+ (g) Megjegyzés: több dimenziós ( ) esetben koordinátánként 2021. 09. 08. Strukturált és nem strukturált programok 23

 4. A program bonyolultsága (folytatás) Más bonyolultságmértékek Módosított ciklikus bonyolultság: m’(P): =(m(P), m(P)+l(P)),

4. A program bonyolultsága (folytatás) Más bonyolultságmértékek Módosított ciklikus bonyolultság: m’(P): =(m(P), m(P)+l(P)), ahol l(P): =logikai kifejezések bonyolultsága Példák: f m(f) m’(f) Ha p akkor g 2 (2, 2+0) Ha p q akkor g 2 (2, 2+1) Ha p akkor Ha q akkor g 3 (3, 3+0) (p, q = „egyszerű” feltétel; g „egyszerű” utasítás) 2021. 09. 08. Strukturált és nem strukturált programok 24

 4. A program bonyolultsága (folytatás) Mélységi bonyolultság (m”): m”(értékadás): =1 f=B(g, h) m”(f)=m”(g)+m”(h)

4. A program bonyolultsága (folytatás) Mélységi bonyolultság (m”): m”(értékadás): =1 f=B(g, h) m”(f)=m”(g)+m”(h) f=ITE(p; g, h) m”(f)=2*(m”(g)+m”(h)) f=WD(p; g) m”(f)=2*m”(g) Megjegyzés: • csak a struktúrát veszi figyelembe, • hatványozottan növeli a bonyolultságot a „mélyen beágyazás” 2021. 09. 08. Strukturált és nem strukturált programok 25

 4. A program bonyolultsága (folytatás) Példák: f Ha p q akkor g Ha

4. A program bonyolultsága (folytatás) Példák: f Ha p q akkor g Ha p akkor Ha q akkor g m”(f) 2 *m”(g) 2*(2*m”(g))= =4*m”(g) Absztrakciós bonyolultság (m”’): m”’(P): =N+ (i=1. . N) m”(Pi), ahol N=eljárások/függvények. . . száma Pi=i. eljárás/függvény. . . 2021. 09. 08. Strukturált és nem strukturált programok 26