Strukturált és nem strukturált programok

Slides:



Advertisements
Hasonló előadás
Vezérlő utasítások.
Advertisements

Az algoritmus.
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Összefoglalás Hardver,szoftver,perifériák Memóriák fajtái
Algoritmusok.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Algoritmusleíró eszközök
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
3. előadás (2005. március 1.) Utasítások, tömbök
Illés Tibor – Hálózati folyamok
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Euklidészi gyűrűk Definíció.
Egy f  R[x] polinom cS -beli helyettesítési értéke
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Programozási alapismeretek 3. előadás
DIFFERENCIÁLSZÁMÍTÁS
Programozás alapjai.
Készítette: Pető László
Nat Pedellus Informatika 8. osztály óra.
Szoftver bonyolultsági mértékek alkalmazási területei Király Roland 2011.
Programozás I. Horváth Ernő.
Java programozási nyelv 2. rész – Vezérlő szerkezetek
Algoritmusok Tusnádi István
A digitális számítás elmélete
Determinisztikus véges automaták csukva nyitva m s kbsm csukva nyitva csukva nyitva csukvanyitva 1. Példa: Fotocellás ajtó s b m m= mindkét helyen k= kint.
Valós számok Def. Egy algebrai struktúra rendezett test, ha test és rendezett integritási tartomány. Def. Egy (T; +,  ;  ) rendezett test felső határ.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Szoftver mértékek Szoftver mérték: –A fejlesztési folyamat mérése –Végtermék mérése (termék mérték) Termék mérték: –Külső mértékek: Megbízhatósági mértékek.
DAG topologikus rendezés
Copyright, 1999 © Szlávi Péter Prioritási sor típuskonstrukció Szlávi Péter ELTE Informatika Szakmódszertani Csoport
ISZAM III.évf. részére Bunkóczi László
Bevezetés a C++ programozási nyelvbe
Vezérlési szerkezetek: elágazások, ciklusok
GRÁFELMÉLET Alapfogalmak 1..
A rekurzió Páll Éve Boglárka.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Algoritmus szerkezetek
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Algoritmusok.
Gráfok 1. Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék
Algebrai struktúrák: csoport, gyűrű, test. RSA Cryptosystem/ Titkosítási rendszer Rivest, Shamir, Adelman (1978) RSA a neten leggyakrabban használt.
Háló- (gráf-) algoritmusok
Mintapélda Készítsünk programot, amely beolvas egy egész számot, és eldönti arról, hogy prímszám-e. Készítsünk programot, amely beolvas egy egész számot,
Összeállította: Sashalmi Tibor
Algoritmizálás, adatmodellezés
Adva S  parbegin S 1 ...  S n parend; Párhuzamos programszerkezet két vagy több olyan folyamatot tartalmaz, amelyek egymással közös változó segítségével.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
HÁLÓZAT Maximális folyam, minimális vágás
Strukturált programozás.  A strukturált programozás jelenti valamennyi ma használatos programtervezési módszer alapját  Széles körben elfogadott az.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Algoritmusok Tusnádi István
Analitikus fák kondicionálissal
HÁLÓZAT Maximális folyam, minimális vágás
II. konzultáció Analízis Sorozatok Egyváltozós valós függvények I.
Piros-fekete fák Beszúrás, ill. törléskor a fa elveszítheti az egyensúlyát. A piros-fekete fák: az egyensúly megtartását biztosítják. +1 bit információ.
Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};
Bevezetés a programozásba Algoritmikus gondolkodás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Algoritmusok szerkezete
Formális módszerek a programozásban
Informatikai gyakorlatok 11. évfolyam
Csoport, félcsoport, test
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Informatikai gyakorlatok 11. évfolyam
Algoritmus készítés.
Előadás másolata:

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 2019.08.21. Strukturált és nem strukturált programok

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 2019.08.21. Strukturált és nem strukturált programok

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 2019.08.21. Strukturált és nem strukturált programok

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

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 2019.08.21. Strukturált és nem strukturált programok

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

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

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. 2019.08.21. Strukturált és nem strukturált programok

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):=... 2019.08.21. Strukturált és nem strukturált programok

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. 2019.08.21. Strukturált és nem strukturált programok

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 2019.08.21. Strukturált és nem strukturált programok

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 2019.08.21. Strukturált és nem strukturált programok

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. 2019.08.21. Strukturált és nem strukturált programok

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ű; 2019.08.21. Strukturált és nem strukturált programok

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

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

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. 2019.08.21. Strukturált és nem strukturált programok

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 2019.08.21. Strukturált és nem strukturált programok

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 2019.08.21. Strukturált és nem strukturált programok

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 2019.08.21. Strukturált és nem strukturált programok

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

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 2019.08.21. Strukturált és nem strukturált programok

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) 2019.08.21. Strukturált és nem strukturált programok

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” 2019.08.21. Strukturált és nem strukturált programok

4. A program bonyolultsága (folytatás) Példák: f m”(f) Ha pq 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... 2019.08.21. Strukturált és nem strukturált programok