Algoritmizálás, adatmodellezés 1. előadás

Hasonló dokumentumok
Algoritmizálás, adatmodellezés 1. előadás

Algoritmizálás és adatmodellezés tanítása 2. előadás

Adatszerkezetek I. 1. előadás

Algoritmizálás és adatmodellezés tanítása 4. előadás

Algoritmusok és adatszerkezetek I. 1. előadás

Algoritmizálás és adatmodellezés tanítása 1. előadás

Algoritmizálás, adatmodellezés tanítása 1. előadás

Algoritmizálás és adatmodellezés 2. előadás

Algoritmizálás, adatmodellezés tanítása 1. előadás

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Algoritmizálás, adatmodellezés tanítása 2. előadás

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Algoritmizálás és adatmodellezés tanítása 6. előadás

Algoritmizálás, adatmodellezés tanítása 2. előadás

Multihalmaz, intervallumhalmaz

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Algoritmizálás és adatmodellezés tanítása 3. előadás

Algoritmusok és adatszerkezetek I. 4. előadás

Algoritmizálás, adatmodellezés tanítása 6. előadás

Programozási tételek. Dr. Iványi Péter

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Összetett programozási tételek

Programozási alapismeretek 3. előadás

Hatékonyság 1. előadás

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Struktúra nélküli adatszerkezetek

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Halmaz típus Értékhalmaz:

Az informatika kulcsfogalmai

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

A félév során előkerülő témakörök

Bevezetés az informatikába

Adatszerkezetek II. 1. előadás

Az összetett programozási tételek is egy tőről fakadnak

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Algoritmizálás, adatmodellezés tanítása 8. előadás

Bevezetés a programozásba. 5. Előadás: Tömbök

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

C programozási nyelv Pointerek, tömbök, pointer aritmetika

ELEMI PROGRAMOZÁSI TÉTELEK

PROGRAMOZÁSMÓDSZERTAN

Programozási alapismeretek 1. előadás

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Web-programozó Web-programozó

Egyszerű programozási tételek

Adatbázis rendszerek Gy: Algoritmusok C-ben

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Algoritmusok, adatszerkezetek, objektumok

Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

Algoritmizálás, adatmodellezés tanítása 7. előadás

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

PROGRAMOZÁSI TÉTELEK

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

8. gyakorlat Pointerek, dinamikus memóriakezelés

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Hatékonyság 2. előadás

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Adatszerkezetek II. 2. előadás

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17

Haladó rendezések. PPT 2007/2008 tavasz.

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással

Adatszerkezetek II. 10. előadás

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

A C programozási nyelv III. Pointerek és tömbök.

A C programozási nyelv III. Pointerek és tömbök.

Dinamikus modellek szerkezete, SDG modellek

Mátrixok, mátrixműveletek

Adatszerkezetek 2. Dr. Iványi Péter

Térinformatikai algoritmusok Elemi algoritmusok

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Térinformatikai algoritmusok Elemi algoritmusok

Készítette: Nagy Tibor István

Közismereti informatika I. 4. előadás

Objektum Orientált Programozás VII.

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Objektumorientált Programozás VI.

Láncolt listák. PPT 2007/2008 tavasz.

Programozási tételek általánosítása 2. Szlávi Péter 2015

Átírás:

Algoritmizálás, adatmodellezés 1. előadás

Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az induló élből bármely csomópont elérhető, s bármely csomópontból el lehet jutni a befejező élre. Háromféle csomópontot tartalmaz: Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 2/53

Algoritmus-leíró eszközök Folyamatábra A csomópontokból előállíthatók az algoritmikus struktúrák: Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 3/53

Algoritmus-leíró eszközök Definíció: Strukturált programnak nevezzük azt a programot, amely csak a fenti három algoritmikus szerkezetet (szekvencia, elágazás, ciklus) tartalmazza. Nem strukturált alapszerkezetek: Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 4/53

Algoritmus-leíró eszközök Nem strukturált alapszerkezetek: Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 5/53

Algoritmus-leíró eszközök Kiegészítő elemek a folyamatábrához: Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 6/53

Algoritmus-leíró eszközök Struktogram Programgráf élek nélkül: Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 7/53

Elemi típusok 1. Egész típusok (előjeles, előjel nélküli, különböző méretben) 2. Valós típusok (különböző méretben és pontossággal) 3. Logikai típus 4. Karakter típus (értékhalmaz problémák) 5. Felsorolás típus 6. (Rész)intervallum típus 7. Mutató típusok Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 8/53

Felsorolás típus Elemi típusok Értékhalmaz: (konstans 1, konstans 2,..., konstans N ) Műveletek: Következő(kifejezés), Előző(kifejezés), Rend(kifejezés). Példa: Típus Hét=(hétfő,kedd,szerda,csütörtök,péntek, szombat,vasárnap) Munkanap=hétfő..péntek Változó tegnap, ma, holnap, h : Hét; i: egész Konstans ünnepnap : Hét(vasárnap) Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 9/53

Felsorolás típus Be: ma Elemi típusok Ha ma=min'hét akkor tegnap:=max'hét különben tegnap:=előző(ma) i:=rend(ma) Ha ma=max'hét akkor holnap:=min'hét különben holnap:=következő(ma) Ciklus h Hét Ki: h Ciklus vége Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 10/53

Mutató típusok Tulajdonságok: A mutató típus memóriacímek, illetve azokon a címeken levő értékek kezelésére szolgál. Az ilyen típusú változók (ti. amire a mutató típus mutat) automatikusan nem születnek meg (nem kerülnek be a memóriába) és nem is szűnnek meg erről magunknak kell gondoskodni. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 11/53

Mutató típusok Tetszőleges (többnyire összetett) típushoz, mint bázistípushoz (TB) szervesen tartozhat egy-egy ilyen típus. Egy konkrét mutató típusú objektum csak egyfajta (nevezetesen TB-típusú) elemek kezdőcímeit hordozhatja. Kezdőérték: Sehova Műveletek: Lefoglal(m), illetve Lefoglal(m,e) Felszabadít(m) tartalom(m) vagy TB(m) Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 12/53

Mutató típusok Példa: Rendezzünk ábécé-sorrendbe N szöveget! Alapmegoldás: Ciklus i=1-től N 1-ig Ciklus j=i+1-től N-ig Ha S(j)<S(i) akkor Csere(S(i),S(j)) Ciklus vége Ciklus vége Eljárás vége. Probléma: Szöveg cseréje hosszú szövegek esetén sokáig tarthat. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 13/53

Mutató típusok Példa: Rendezzünk ábécé-sorrendbe N szöveget! Ötlet: Vezessünk be N mutató típusú változót és beolvasáskor a szövegeknek foglaljunk helyet! Eljárás Beolvasás: Ciklus i=1-től N-ig Be: S; Lefoglal(M(i),S) Ciklus vége Eljárás vége. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 14/53

Mutató típusok Példa: Rendezzünk ábécé-sorrendbe N szöveget! Eljárás Mutatós megoldás: Ciklus i=1-től N 1-ig Ciklus j=i+1-től N-ig Ha tartalom(m(j))<tartalom(m(i)) akkor Csere(M(i),M(j)) Ciklus vége Ciklus vége Eljárás vége. Itt tehát nem a hosszú szövegeket cserélgetjük, hanem a rövid mutatókat. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 15/53

Típusok osztályozása Összetettség (strukturáltság) szempontjából: skalár (más szóval elemi vagy strukturálatlan) összetett (más szóval strukturált) Strukturálási módok Keresztszorzat AxB Unió A B Sokaság sok azonos típusú elem Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 16/53

Típusok osztályozása Sokaság osztályozása rákövetkezés szerint Halmaz: nincs rákövetkezési reláció Sorozat: minden elemet egy elem követ és egy előz meg (kivéve esetleg a két szélső elemet) Hierarchikus struktúra: minden elemet egy előz meg, de több is követhet Hálós struktúra: minden elemet több előzhet meg és több is követhet Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 17/53

Típusok osztályozása Sokaságtípusok néhány megjelenése Halmaz: halmaz, multihalmaz, intervallumhalmaz, táblázat, diszjunkt halmazfelbontás Sorozat: tömb, verem, sor, prioritási sor, listák, szekvenciális fájlok, függvény Hierarchikus struktúra: bináris fa, nem bináris fa Hálós struktúra: irányítatlan gráf, irányított gráf, programgráf, háló Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 18/53

Típusok műveletei A típusműveletek osztályozása: értékadás (azonos típusúak közötti adatmozgatás) konstrukciós műveletek (strukturált érték létrehozása) szelekciós műveletek (strukturált érték részei kiválasztása) azonosság és más relációk számosság-függvény Min és Max típusoperátor Sorszám- (vagy Rend-) függvény transzformációs (a típuson értelmezett, a típusra képező függvények) Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 19/53

Objektumelvű programozás I. A típusfogalom problémája Típusfogalom a programozásban: Típus=értékhalmaz+műveletek Típusdefiníció programozási nyelvekben: értékhalmaz Jó lenne: típusnév=(értékhalmaz,műveletek) Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 20/53

Objektumelvű programozás Osztály a típusfogalom megvalósítása értékhalmaz (~ tulajdonságok) műveletek (~ metódusok) Objektum osztály típusú változó Egységbe zárás a tulajdonságokat és a műveleteket egy egységbe foglaljuk, de a tulajdonságokhoz kívülről nem férünk hozzá, csak a műveleteken keresztül. Hozzáférés saját (privát), védett, nyilvános. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 21/53

Objektumelvű programozás Példa: háromszög típus Típus Háromszög Értékhalmaz: csúcsok: tömb(1..3:pont) Műveletek: Létrehoz(A,B,C: Pont) Eltol(dx,dy: Valós) Forgat(alfa: Valós) Nagyít(nx,ny: Valós) Terület: Valós Konstruktor az objektum keletkezésekor kezdőértéket ad (lehet paraméter nélküli és paraméteres), dinamikus objektum esetén memóriát is foglal. Destruktor memóriát felszabadít. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 22/53

Objektumelvű programozás Öröklés Ős Utód, az utód az ős egy speciális fajtája Új osztály létrehozása örökléssel Az értékhalmaz direktszorzat művelettel bővülhet A művelethalmaz régi műveletei megmaradhatnak régi műveletei átdefiniálhatóak új műveletek hozhatók létre Öröklés haszna a programszöveg lerövidülése Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 23/53

Objektumelvű programozás Öröklés tulajdonságai Antiszimmetrikus: Ős Utód, de nem Utód Ős Tranzitív: Ős Utód1 Utód2 Többszörös öröklés Ős1 Ős2 Utód Pl. a Windows ablakrendszere (Ős1: ablak, Ős2: fa ) Többszörös öröklés problémája Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 24/53

Objektumelvű programozás Új osztály létrehozása örökléssel Típus Derékszögű háromszög Ős: Háromszög Értékhalmaz: derékszög sorszáma: Egész Műveletek: Terület: Valós Magasság: Valós Típus Háromszög Értékhalmaz: csúcsok: tömb(1..3:pont) Műveletek: Létrehoz(A,B,C: Pont) Eltol(dx,dy: Valós) Forgat(alfa: Valós) Nagyít(nx,ny: Valós) Terület: Valós Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 25/53

Objektumelvű programozás Típuskompatibiliás Változó A: Háromszög B: Derékszögű háromszög A:=B értékadás szabályos-e? IGEN, A minden része kitölthető B:=A értékadás szabályos-e? NEM, B nem minden része tölthető ki (egyelőre) Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 26/53

Objektumelvű programozás komplex példa Szakasz x, y a szakasz kezdőpontja xhossz, yhossz a szakasz hossza x és y irányban szín a szakasz színe a képernyőn Téglalap x, y a téglalap bal felső sarka xhossz, yhossz a téglalap x és y irányú oldalai szín a téglalap színe a képernyőn Kör x, y a kör középpontja sugár a kör sugara szín a kör színe a képernyőn Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 27/53

Objektumelvű programozás komplex példa Műveletek közösek mindhárom típusra: Létrehoz Kirajzol Letöröl Színmódosít(szín: Színtípus) Mozgat(dx,dy: Egész) Az utóbbi kettő megvalósítása nem függ a típustól. Az x, az y és a szín mindhárom típusban szerepel. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 28/53

Új típus Pont Objektumelvű programozás komplex példa Pont Értékhalmaz: x, y a pont kezdőpontja szín a pont színe a képernyőn Műveletek: Létrehoz (kx,ky: Egész,ks: Színtípus) Kirajzol Letöröl Színmódosít(U: Színtípus) Mozgat(dx,dy: Egész) Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 29/53

Objektumelvű programozás Új típus Pont Színmódosít(U: Színtípus): szín:=u Eljárás vége. komplex példa Mozgat(dx,dy: Egész): Letöröl x:=x+dx; y:=y+dy Kirajzol Eljárás vége. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 30/53

Objektumelvű programozás komplex példa Új típus Szakasz Szakasz Ős: Pont Értékhalmaz: xhossz, yhossz Műveletek: Kirajzol Letöröl Kirajzol: Szakaszrajzolás(x,y,x+xhossz,y+yhossz) Eljárás vége. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 31/53

Objektumelvű programozás komplex példa Változó p: Pont; sz: Szakasz p.mozgat(10,20) sz.mozgat(10,20) Mi történik? Miért? Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 32/53

Tömb típus A tömb fogalma Definíció: sorozat típus a következő műveletekkel: indexelés, résztömb képzés, mátrix sora, oszlopa, részmátrixa, relációk. Alapesetben statikus, az elemszáma nem változtatható. Definiálása: Tömb(indextípus: elemtípus) Tömb(indextip 1,indextip 2 : elemtípus)... Hivatkozások: A(i), A(i..j), A(i,j), A(i,), A(,j), A(i..j,k..l) Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 33/53

Tömb típus A tömb fogalma Indextípus lehetőségei (nyelvfüggő megvalósítás): 1..elemszám (ilyenkor általában az elemszámot kell megadni) 0..elemszám-1 (ilyenkor általában az elemszámot kell megadni) alsó határ..felső határ (ebben az esetben az index nem csak egész szám lehet) Példa: Tömb(1..maxn: egész) Tömb( a.. z,hétfő..péntek: valós) Tömb(-10..10: Tömb(-1..1: karakter)) Tömb(-10..10,-1..1: karakter) Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 34/53

Tömb típus Ábrázolás Szekvenciális, folytonos (többindexes tömböknél oszlop- vagy sorfolytonos). Az elemek méretének ismeretében számítható az elemek memóriabeli címe: a tömb a memóriában... 1. elem 2. elem... utolsó elem... egy elem mérete Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 35/53

Tömb típus Mátrix sorfolytonos ábrázolása Ha n sora és m oszlopa van, mindkettő 1-től indexelve: Függvény Cím(i,j):Egész Cím:=(i-1)*m+j Függvény vége. a tömb a memóriában... (1,1) (1,2)... (2,1) (2,2)... (n,m)... egy elem mérete Indextípus=(a..b,c..d) esetén: Függvény Cím(i,j):Egész Cím:=(i-a)*(d-c+1)+j-c+1 Függvény vége. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 36/53

Tömb típus Mátrix oszlopfolytonos ábrázolása Ha n sora és m oszlopa van, mindkettő 1-től indexelve: Függvény Cím(i,j):Egész Cím:=(j-1)*n+i Függvény vége. a tömb a memóriában... (1,1) (2,1)... (1,2) (2,2)... (n,m)... egy elem mérete Indextípus=(a..b,c..d) esetén: Függvény Cím(i,j):Egész Cím:=(j-c)*(b-a+1)+i-a+1 Függvény vége. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 37/53

1. Összegzés mátrixra Specifikáció: Bemenet: N,M N, X H N M Kimenet: S H Előfeltétel: N M Utófeltétel:S= X i 1 j 1 i,j H: Z vagy R vagy N Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 38/53

1. Összegzés mátrixra Algoritmus: A megoldás lényegében csak abban különbözik az alapváltozattól, hogy a mátrix miatt két egymásba ágyazott ciklusra van szükség. Konstans maxn,maxm:egész(???) Típus Tmatrix=Tömb(1..maxN,1..maxM:TH) Változó N,M:Egész X:Tmatrix S:TH Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 39/53

Összegzés(N,M,X,S): S:=0 Ciklus i=1-től N-ig Ciklus j=1-től M-ig S:=S+X(i,j) Ciklus vége Ciklus vége Eljárás vége. 1. Összegzés mátrixra Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 40/53

Specifikáció: 2. Megszámolás mátrixra Bemenet: N,M N, X H N M, T:H L Kimenet: Db N Előfeltétel: N M Utófeltétel:Db= 1 i 1 j 1 T(X i, j ) H: tetszőleges halmaz T: tetszőleges tulajdonság-függvény Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 41/53

2. Megszámolás mátrixra Megszámolás(N,M,X,Db): Db:=0 Ciklus i=1-től N-ig Ciklus j=1-től M-ig Ha T(X(i,j)) akkor Db:=Db+1 Ciklus vége Ciklus vége Eljárás vége. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 42/53

Specifikáció: 3. Maximum-kiválasztás mátrixra Bemenet: N,M N, X H N M Kimenet: Maxi,Maxj N, Maxert H Előfeltétel: N>0 és M>0 Utófeltétel:1 Maxi N és 1 Maxj M és i,j (1 i N) (1 j M):X Maxi,Maxj X i,j és Maxert=X Maxi,Maxj Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 43/53

3. Maximum-kiválasztás mátrixra Maximumkiválasztás(N,M,X,Maxi,Maxj,Maxert): Maxi:=1; Maxj:=1; Maxert:=X(1,1) Ciklus i=1-től N-ig Ciklus j=1-től M-ig Ha X(i,j)>Maxert akkor Maxi:=i; Maxj:=j Maxert:=X(i,j) Ciklus vége Ciklus vége Eljárás vége. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 44/53

4. Eldöntés mátrixra Feladat: Van-e egy mátrixban adott tulajdonságú elem? Specifikáció: Bemenet: N,M N, X H N M, T:H L Kimenet: Vane L Előfeltétel: Utófeltétel: Vane= i,j(1 i N)(1 j M):T(X i,j ) Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 2015.02.17. 8:15 45/53

4. Eldöntés mátrixra Eldöntés(N,M,X,Vane): i:=1; j:=1 Ciklus amíg i N és nem T(X(i,j)) Ha j<m akkor j:=j+1 különben i:=i+1; j:=1 Ciklus vége Vane:=i N Eljárás vége. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 46/53

Specifikáció: 5. Kiválasztás mátrixra Bemenet: N,M N, X H N M, T:H L Kimenet: Indi,Indj N Előfeltétel: N>0 és M>0 és i,j (1 i N) (1 j M): T(X i,j ) Utófeltétel:1 Indi N és 1 Indj M és T(X Indi,Indj ) Megjegyzés: a kimeneti indexpárt egy rekordban is tárolhattuk volna! Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 47/53

5. Kiválasztás mátrixra Kiválasztás(N,M,X,Indi,Indj): i:=1; j:=1 Ciklus amíg nem T(X(i,j)) Ha j<m akkor j:=j+1 különben i:=i+1; j:=1 Ciklus vége Indi:=i; Indj:=j Eljárás vége. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 48/53

6. Keresés mátrixra Feladat: Van-e egy mátrixban adott tulajdonságú elem és ha van, akkor hol? Specifikáció: Bemenet: N,M N, X H N M, T:H L Kimenet: Vane L, Indi,Indj N Előfeltétel: Utófeltétel: Vane= i,j(1 i N)(1 j M): T(X i,j ) és Vane 1 Indi N és 1 Indj M és T(X Indi,Indj ) Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 2015.02.17. 8:15 49/53

6. Keresés mátrixra Keresés(N,M,X,Vane,Indi,Indj): i:=1; j:=1 Ciklus amíg i N és nem T(X(i,j)) Ha j<m akkor j:=j+1 különben i:=i+1; j:=1 Ciklus vége Vane:=i N Ha Vane akkor Indi:=i; Indj:=j Eljárás vége. Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 50/53

7. Kiválogatás mátrixra Specifikáció: Bemenet: N,M N, X H N M, T:H L Kimenet: Db N, Y Hely N*M, Hely=S O, S,O=N Előfeltétel: Utófeltétel:Db= N i 1 M j 1 T(X ) i, j 1 és i(1 i Db):T(X Y i.s,yi.o) és Y ((1,1), (1,2), (1,M), (2,1),. (N,M)) Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 51/53

7. Kiválogatás mátrixra Kiválogatás(N,M,X,Db,Y): Db:=0 Ciklus i=1-től N-ig Ciklus j=1-től M-ig Ha T(X(i,j)) akkor Db:=Db+1; Y(Db).s:=i; Y(Db).o:=j Elágazás vége Ciklus vége Ciklus vége Eljárás vége. A sorszám itt is általánosabb mint az érték, ha mégis érték kellene, akkor Y(Db):=X(i,j) szerepelne. (Ekkor persze a specifikációt is módosítani kell!) Zsakó László: Algoritmizálás, adatmodellezés 2018. 02. 09. 8:15 52/53

Algoritmizálás, adatmodellezés 1. előadás vége