Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Strukturált és nem strukturált programok
Szlávi Péter ELTE Informatika Szakmódszertani Csoport
2
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 program bonyolultsága Strukturált és nem strukturált programok
3
Strukturált és nem strukturált programok
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 Strukturált és nem strukturált programok
4
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ő élből a kimenő élbe. Egy rossz példa: Továbbiakban program alatt valódi programot értünk. * a kékkel jelölteken át nem vezet út a kimenőélhez Strukturált és nem strukturált programok
5
1. Alapvető definíciók (folytatás)
Elemi programgráfok (strukturált programszerkezetek gráfjai): * Strukturált és nem strukturált programok
6
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 Strukturált és nem strukturált programok
7
1. Alapvető definíciók (folytatás)
Strukturált és nem strukturált programok
8
1. Alapvető definíciók (folytatás)
Strukturált és nem strukturált programok
9
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. Strukturált és nem strukturált programok
10
Strukturált és nem strukturált programok
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)/(P)/ (P):=... Strukturált és nem strukturált programok
11
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ál-tat… … 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. Strukturált és nem strukturált programok
12
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) 1. eset: f=B(g,h) ekkor h valódi program és e(h)=e(f)-1. Vizsgálandó: h. 2. eset: f=ITE(g,h) 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. g h p g p h Strukturált és nem strukturált programok
13
2. Alapvető tételek (folytatás)
3. eset: 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: 3a) 3b) 3c) f’ Cél a 3c) esethez eljutni p Strukturált és nem strukturált programok
14
2. Alapvető tételek (folytatás)
3b) 3c) f” f” f” p g h Ki p f” Persze be kell látni, hogy a transzformációk során a továbbelemzendő struk-túra élszáma (a sorozatos transzformáció után) kisebb. Strukturált és nem strukturált programok
15
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ű; Strukturált és nem strukturált programok
16
3. A nem-strukturáltság jellemzői
Nem strukturált alapszerkezetek: Ciklusok -- Strukturált és nem strukturált programok
17
3. A nem-strukturáltság jellemzői (folytatás)
Nem strukturált alapszerkezetek: Elágazások -- Strukturált és nem strukturált programok
18
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 tartal-maznia. Strukturált és nem strukturált programok
19
4. A program bonyolultsága
Ciklikus bonyolultság: A P program ~ m(P)=e(P)-((P)+(P)+(P)) Tétel: P: m(P)=(P)+1 Biz.: lemmából m(P)= e(P)-((P)+(P)+(P))= =3(P)+(P)+1-((P)+(P)+(P))= =2(P)-(P)+1= =2(P)-(P)+1=(P)+1 Strukturált és nem strukturált programok
20
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 Strukturált és nem strukturált programok
21
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 Strukturált és nem strukturált programok
22
4. A program bonyolultsága (folytatás)
Példa: M(P)=m(P)-k=6-2=4 Strukturált és nem strukturált programok
23
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 Strukturált és nem strukturált programok
24
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 pq 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) Strukturált és nem strukturált programok
25
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” Strukturált és nem strukturált programok
26
4. A program bonyolultsága (folytatás)
Példák: f m”(f) Ha pq akkor g 2 *m”(g) Ha p akkor Ha q akkor 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... Strukturált és nem strukturált programok
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.