Strukturlt s nem strukturlt programok Szlvi Pter ELTE
- Slides: 26
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 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: – 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 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 é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 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 8
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. / 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 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): = 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 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) 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 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 é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 é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, 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)) 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: 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 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 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 ( ) 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)), 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) 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 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
- Nem rei nem lei nem paz nem guerra
- Anticorpi monoclonali poliposi nasale
- Emzirme ekleyicisi nedir
- Nem olhos viram, nem ouvidos ouviram versículo
- Se eu fosse magico não existia droga nem fome nem policia
- Orra van de nem szagol nyelve van de nem beszél
- Szoftverrendőrség
- Télapó rajz
- Vírusírtó programok
- Vírusírtó programok
- O teu amor reluz que nem riqueza
- érezzétek és lássátok meg hogy jó az úr
- Kırağı ve kırç
- Ligg sacroiliaca ventralia
- Jó ember vagyok nem haragszom arra akit megbántottam
- Toprak nemi ifade biçimleri
- Nem azert szeretlek aki vagy hanem
- Seus problemas acabaram!!!
- Nem ba
- Bartlett próba
- Myoepithel
- Egyszer volt hol nem volt mese
- Nem rebus
- Orações subordinadas adjetivas
- Não sejas demasiadamente justo nem exageradamente sábio
- Reakcióképzés
- Nem mindenki megy be a mennyek országába