Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Programozás módszertan Programozás módszertan vizsgatételek Illés Attila 2010. NEM TELJES VERZIÓ!!! HOZZÁOLVASÁS ÉS AZ ÓRAI JEGYZETELÉSEK SZÜKSÉGESEK!

Hasonló előadás


Az előadások a következő témára: "Programozás módszertan Programozás módszertan vizsgatételek Illés Attila 2010. NEM TELJES VERZIÓ!!! HOZZÁOLVASÁS ÉS AZ ÓRAI JEGYZETELÉSEK SZÜKSÉGESEK!"— Előadás másolata:

1 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila NEM TELJES VERZIÓ!!! HOZZÁOLVASÁS ÉS AZ ÓRAI JEGYZETELÉSEK SZÜKSÉGESEK!

2 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Alapfogalmak utasítás1 utasítás2 utasítás3 Szekvencia megvalósítása folyamatábrával

3 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Alapfogalmak Elágazás megvalósítása folyamatábrával Az ágak valamelyike el is maradhat: egyágú elágazás. Többágú elágazásra nincs folyamatábra-jelölés, több kétágú elágazással írható le. feltétel Utasítás(ok) igaz esetén Utasítás(ok) hamis esetén i h

4 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Alapfogalmak Elöl tesztelő ciklus megvalósítása folyamatábrával i ciklusfeltétel Ciklusmagutasításai h A ciklusmag nem biztos, hogy végrehajtódik!

5 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Alapfogalmak Hátul tesztelő ciklus megvalósítása folyamatábrával A ciklusmag egyszer biztos, hogy végrehajtódik! h ciklusfeltétel Ciklusmagutasításai i

6 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Alapfogalmak Számláló ciklus megvalósítása folyamatábrával i Változó:=tól..ig Ciklusmagutasításai h A ciklusmag nem biztos, hogy végrehajtódik!

7 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Alapfogalmak Egyéb elemek a folyamábrás ábrázoláshoz Bevitel / kivitel Start Stop

8 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Alapfogalmak Struktogram Feltétel megadása igazhamis utasítás 1 utasítás 2 utasítás 1 utasítás 2 utasítás 1 utasítás 2 szekvencia ciklus feltétel ciklusmag ciklus elágazás

9 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

10 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Önnek egy rendszer részeként olyan programot kell készíteni, amely egy a felhasználó által megadott mappa teljes tartalmát alkönyvtárakkal együtt átmásolja egy másik szintén a felhasználó által megadott helyre. Hogyan tervezné meg a felhasználó felületet, és ezt milyen módon választaná szét a programlogikától?

11 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Önnek egy rendszer részeként olyan programot kell készíteni, amely egy a felhasználó által megadott mappa teljes tartalmát alkönyvtárakkal együtt átmásolja egy másik szintén a felhasználó által megadott helyre. Hogyan tervezné meg a felhasználó felületet, és ezt milyen módon választaná szét a programlogikától? 1.A rendszerelemek tartalmi tervezése  Feladat elemekre bontása 2.Eszközkörnyezet meghatározása  A környezet adta lehetőségek feltárása 3.Állománykezelés  Állományok másolása 4.Eseménykezelés  A másolás folyamatának szemléltetése 5.Felhasználói felületek  Folyamatjelző használata Információtartalom vázlata:

12 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Önnek egy rendszer részeként olyan programot kell készíteni, amely egy a felhasználó által megadott mappa teljes tartalmát alkönyvtárakkal együtt átmásolja egy másik szintén a felhasználó által megadott helyre. Hogyan tervezné meg a felhasználó felületet, és ezt milyen módon választaná szét a programlogikától? A rendszerelemek tartalmi tervezése Feladat elemekre bontása Forrásmappa megadásaEllenőrzésekMéret meghatározás Célmappa megadásaEllenőrzésekMásolás folyamata Folyamat állapotának jelzése Ellenőrzések Másolás folyamatának befejezése

13 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Önnek egy rendszer részeként olyan programot kell készíteni, amely egy a felhasználó által megadott mappa teljes tartalmát alkönyvtárakkal együtt átmásolja egy másik szintén a felhasználó által megadott helyre. Hogyan tervezné meg a felhasználó felületet, és ezt milyen módon választaná szét a programlogikától? Eszközkörnyezet meghatározása A környezet adta lehetőségek feltárása Operációs rendszer Fájlrendszer Párhuzamosság támogatása Fejlesztőrendszer kiterjedtsége Alacsony / magas szintű nyelv Assembly, C/C++, Pascal, C# Modulok, komponensek támogatása Párhuzamosság támogatása

14 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Önnek egy rendszer részeként olyan programot kell készíteni, amely egy a felhasználó által megadott mappa teljes tartalmát alkönyvtárakkal együtt átmásolja egy másik szintén a felhasználó által megadott helyre. Hogyan tervezné meg a felhasználó felületet, és ezt milyen módon választaná szét a programlogikától? Állománykezelés Állományok másolása Alacsonyszintű nyelv (Assembly) Bináris adatátvitel Előre definiált eljárások Magas szintű nyelv (C/C++, C#, Delphi, Java) Fájlszintű átvitel Előre definiált eljárások UI – User Interface (Felhasználói felület) GUI – Graphical UI (Grafikus felhasználói f.)

15 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Önnek egy rendszer részeként olyan programot kell készíteni, amely egy a felhasználó által megadott mappa teljes tartalmát alkönyvtárakkal együtt átmásolja egy másik szintén a felhasználó által megadott helyre. Hogyan tervezné meg a felhasználó felületet, és ezt milyen módon választaná szét a programlogikától? Eseménykezelés A másolás folyamatának szemléltetése START STOP Forrásmappa megadása Ellenőrzések Méret és darabszám meghatározása igazhamis Kiíratás „jelentések” Fájlok másolása Célmappa megadása Ellenőrzések igazhamis

16 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Önnek egy rendszer részeként olyan programot kell készíteni, amely egy a felhasználó által megadott mappa teljes tartalmát alkönyvtárakkal együtt átmásolja egy másik szintén a felhasználó által megadott helyre. Hogyan tervezné meg a felhasználó felületet, és ezt milyen módon választaná szét a programlogikától? Felhasználói felületek Folyamatjelző használata STOP Fájlok másolása igaz 69% Grafikus felhasználói felület h DB > maxDB Fájlok[DB]másolása i DB += 1 Folyamatjelzővezérlése

17 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Önnek egy rendszer részeként olyan programot kell készíteni, amely egy a felhasználó által megadott mappa teljes tartalmát alkönyvtárakkal együtt átmásolja egy másik szintén a felhasználó által megadott helyre. Hogyan tervezné meg a felhasználó felületet, és ezt milyen módon választaná szét a programlogikától? Hogyan tervezné meg a felhasználó felületet, és ezt milyen módon választaná szét a programlogikától? Function masol( forras:String, cel:String, jelzo:Object) { CopyFiles(forras, cel, jelzo.ertek); } Program kezdete masol ( forrasmappa.fname, celmappa.fname, csik ); Program vége ProgramlogikaFelhasználói felület

18 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

19 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerekkel optimalizálná egy már kész program futását, ha abban sokszor kell tömbökben, listákban keresni?

20 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerekkel optimalizálná egy már kész program futását, ha abban sokszor kell tömbökben, listákban keresni? Információtartalom vázlata: 1.Programozási tételek (alapalgoritmusok)  Keresés, logaritmikus keresés 2.Adatszerkezetek, objektumok  Tömbök, listák bejárása 3.Programtervezési módszerek  Keresések optimalizálása 4.Tesztelés, hibakeresés  Túlcsordulások kezelése

21 Programozási tételek Mik is ezek? A programozásban előforduló típusfeladatokra adnak általános megoldást Az adott feladattípusnak matematikailag bizonyíthatóan helyes és a legoptimálisabb megoldását adják Miért most tanuljuk? A tételek többsége több bemenő adattal végez el valamilyen átalakítást, és ehhez a tömb adatszerkezet ismerete szükséges

22 Programozási tételek Csoportosításuk Aszerint csoportosítjuk őket, hogy mi a bemenő és kimenő adatuk, eszerint megkülönböztetünk:  adatsorozathoz egy adatot rendelő tételeket;  adatsorozathoz adatsorozatot rendelő tételeket

23 Programozási tételek Adatsorozathoz egy értéket rendelő tételek 1. Sorozatszámítás tétel Bemenő adat: egy N elemű adatsorozat (A tömb) Bemenő adat: egy N elemű adatsorozat (A tömb) Kimenő adat: Egy érték, amelynek kiszámításához az adatsorozat minden elemét felhasználjuk Kimenő adat: Egy érték, amelynek kiszámításához az adatsorozat minden elemét felhasználjuk Szükséges hozzá még egy kiszámítási szabály, amely megmondja, hogy az értéket hogy kapjuk meg a sorozat elemeiből (F) Szükséges hozzá még egy kiszámítási szabály, amely megmondja, hogy az értéket hogy kapjuk meg a sorozat elemeiből (F) Példák: összeg, számtani közép (átlag), mértani közép, négyzetösszeg, harmonikus közép, stb. Példák: összeg, számtani közép (átlag), mértani közép, négyzetösszeg, harmonikus közép, stb.

24 Programozási tételek Adatsorozathoz egy értéket rendelő tételek 1. Sorozatszámítás tétel Általános algoritmusa (összegre megírva): Általános algoritmusa (összegre megírva): Eljárás Sorozatszámítás Összeg:=0 Ciklus i:=1-től N-ig Összeg:=Összeg+A(i) Ciklus vége Eljárás vége

25 Programozási tételek Adatsorozathoz egy értéket rendelő tételek 2. Eldöntés tétel Bemenő adat: egy N elemű adatsorozat (A tömb) Bemenő adat: egy N elemű adatsorozat (A tömb) Kimenő adat: Egy logikai érték, amely megmondja, hogy egy adott T tulajdonságú elem előfordul-e az adatsorozatban Kimenő adat: Egy logikai érték, amely megmondja, hogy egy adott T tulajdonságú elem előfordul-e az adatsorozatban Példák: van-e páros, páratlan, hárommal osztható, vagy olyan elem, aminek az előző eleme páratlan, stb. (tetszőlegesen bonyolultat ki lehet találni) Példák: van-e páros, páratlan, hárommal osztható, vagy olyan elem, aminek az előző eleme páratlan, stb. (tetszőlegesen bonyolultat ki lehet találni)

26 Programozási tételek Adatsorozathoz egy értéket rendelő tételek 2. Eldöntés tétel Általános algoritmusa: Általános algoritmusa: Eljárás Eldöntés i:=1 Ciklus amíg i<=N és A[i] nem T tulajdonságú i:=i+1 Ciklus vége VAN:=i<=N Eljárás vége

27 Programozási tételek Adatsorozathoz egy értéket rendelő tételek 3. Kiválasztás tétel Bemenő adat: egy N elemű adatsorozat (A tömb) Bemenő adat: egy N elemű adatsorozat (A tömb) Kimenő adat: Egy adott T tulajdonságú elem sorszáma Kimenő adat: Egy adott T tulajdonságú elem sorszáma Előfeltétel: VAN T tulajdonságú elem az adatsorozatban Előfeltétel: VAN T tulajdonságú elem az adatsorozatban Példák: számelméleti feladatok, amelyekhez nem kell tömb: keressük meg egy pozitív természetes szám legkisebb prímosztóját, stb. Példák: számelméleti feladatok, amelyekhez nem kell tömb: keressük meg egy pozitív természetes szám legkisebb prímosztóját, stb.

28 Kitekintés: Programozási tételek Adatsorozathoz egy értéket rendelő tételek 3. Kiválasztás tétel Általános algoritmusa: Általános algoritmusa: Eljárás Kiválasztás i:=1 Ciklus amíg A[i] nem T tulajdonságú i:=i+1 Ciklus vége SORSZÁM:=i Eljárás vége

29 Programozási tételek Adatsorozathoz egy értéket rendelő tételek 4. (Lineáris) keresés tétel Bemenő adat: egy N elemű adatsorozat (A tömb) Bemenő adat: egy N elemű adatsorozat (A tömb) Kimenő adat: Egy adott T tulajdonságú elem sorszáma, és egy logikai érték, amely megmondja, volt-e T tulajdonságú elem Kimenő adat: Egy adott T tulajdonságú elem sorszáma, és egy logikai érték, amely megmondja, volt-e T tulajdonságú elem Példák: tömbben páros elem keresése, olyan elem keresése, amely két szomszédjának számtani közepe, stb.

30 Programozási tételek Adatsorozathoz egy értéket rendelő tételek 4. (Lineáris) keresés tétel Általános algoritmusa: Általános algoritmusa: Eljárás Keresés i:=1 Ciklus amíg i<=N és A[i] nem T tulajdonságú i:=i+1 Ciklus vége VAN:=i<=N Ha VAN akkor SORSZÁM:=i Eljárás vége

31 Programozási tételek Adatsorozathoz egy értéket rendelő tételek 5. Megszámolás tétel Bemenő adat: egy N elemű adatsorozat (A tömb) Bemenő adat: egy N elemű adatsorozat (A tömb) Kimenő adat: Annak darabszáma, hogy egy adott T tulajdonságú elemből mennyi van Kimenő adat: Annak darabszáma, hogy egy adott T tulajdonságú elemből mennyi van Példák: tömbben páros elemek megszámolása, karakterláncban magánhangzó számolás, stb. Példák: tömbben páros elemek megszámolása, karakterláncban magánhangzó számolás, stb.

32 Programozási tételek Adatsorozathoz egy értéket rendelő tételek 5. Megszámolás tétel Általános algoritmusa: Általános algoritmusa: Eljárás Megszámolás DB:=0 Ciklus i:=1-től N-ig Ha A(i) T tulajdonságú, akkor DB:=DB+1 Ciklus vége Eljárás vége

33 Programozási tételek Adatsorozathoz egy értéket rendelő tételek 6. Maximum(minimum)kiválasztás tétel Bemenő adat: egy N elemű adatsorozat (A tömb) Bemenő adat: egy N elemű adatsorozat (A tömb) Szükséges hozzá egy olyan összehasonlíthatósági tulajdonság, amely szerint a kisebb és nagyobb reláció értelmezve van Szükséges hozzá egy olyan összehasonlíthatósági tulajdonság, amely szerint a kisebb és nagyobb reláció értelmezve van Kimenő adat: Valamilyen szempontból a legnagyobb(legkisebb) elem értéke és/vagy sorszáma Kimenő adat: Valamilyen szempontból a legnagyobb(legkisebb) elem értéke és/vagy sorszáma

34 Programozási tételek Adatsorozathoz egy értéket rendelő tételek 6. Maximum(minimum)kiválasztás tétel Általános algoritmusa (1. változat): Általános algoritmusa (1. változat): Eljárás Maximumkiválasztás MAXIMUM:=A(1)INDEX:=1 Ciklus i:=2-től N-ig Ha A(i)>MAXIMUM akkor MAXIMUM:=A(i) INDEX:=i Ciklus vége Eljárás vége

35 Programozási tételek Adatsorozathoz egy értéket rendelő tételek 6. Maximum(minimum)kiválasztás tétel Általános algoritmusa (2. változat): Általános algoritmusa (2. változat): Eljárás Maximumkiválasztás INDEX:=1 Ciklus i:=2-től N-ig Ha A(i)>A(INDEX) akkor INDEX:=i Ciklus vége MAXIMUM:=A(INDEX) Eljárás vége

36 Programozási tételek Adatsorozathoz adatsorozatot rendelő tételek 1. Kiválogatás tétel Bemenő adat: egy N elemű adatsorozat (A tömb) Bemenő adat: egy N elemű adatsorozat (A tömb) Kimenő adat: Az összes T tulajdonságú elem egy új tömbben (B) Kimenő adat: Az összes T tulajdonságú elem egy új tömbben (B) A kimenő adatok tárolásához ugyanakkora tömb szükséges, mint a bemenő adatokhoz, mert nem tudjuk előre, hány T tulajdonságú elem lesz A kimenő adatok tárolásához ugyanakkora tömb szükséges, mint a bemenő adatokhoz, mert nem tudjuk előre, hány T tulajdonságú elem lesz Példák: válogassuk ki a párosakat, prímeket, stb. egy számsorozatból. Példák: válogassuk ki a párosakat, prímeket, stb. egy számsorozatból.

37 Programozási tételek Adatsorozathoz adatsorozatot rendelő tételek 1. Kiválogatás tétel Általános algoritmusa Általános algoritmusa Eljárás Kiválogatás j:=0 Ciklus i:=1-től N-ig Ha A(i) T tulajdonságú akkor j:=j+1 B(j):=A(i) Ciklus vége Eljárás vége

38 Programozási tételek Adatsorozathoz adatsorozatot rendelő tételek 2. Szétválogatás tétel Bemenő adat: egy N elemű adatsorozat (A tömb) Bemenő adat: egy N elemű adatsorozat (A tömb) Kimenő adat: Az összes T tulajdonságú elem egy új tömbben (B), és egy másikban (C) az összes nem T tulajdonságú elem Kimenő adat: Az összes T tulajdonságú elem egy új tömbben (B), és egy másikban (C) az összes nem T tulajdonságú elem A kimenő adatok tárolásához ugyanakkora tömbök szükségesek, mint a bemenő adatokhoz, mert nem tudjuk előre, hány T tulajdonságú elem lesz A kimenő adatok tárolásához ugyanakkora tömbök szükségesek, mint a bemenő adatokhoz, mert nem tudjuk előre, hány T tulajdonságú elem lesz Példák: válogassuk szét a párosakat és nem párosokat, prímeket és nem prímeket, stb. egy számsorozatból. Példák: válogassuk szét a párosakat és nem párosokat, prímeket és nem prímeket, stb. egy számsorozatból.

39 Programozási tételek Adatsorozathoz adatsorozatot rendelő tételek 2. Szétválogatás tétel Általános algoritmusa Általános algoritmusa Eljárás Kiválogatás j:=0k:=0 Ciklus i:=1-től N-ig Ha A(i) T tulajdonságú akkor j:=j+1 B(j):=A(i) egyébként egyébkéntk:=k+1C(k):=A(i) Elágazás vége Ciklus vége Eljárás vége

40 Programozási tételek Adatsorozathoz adatsorozatot rendelő tételek 3. Metszet Bemenő adat: két adatsorozat, egy N elemű (A tömb), és egy M elemű (B), amelyek azonos elemtípusúak Bemenő adat: két adatsorozat, egy N elemű (A tömb), és egy M elemű (B), amelyek azonos elemtípusúak Kimenő adat: Az összes olyan elem egy új tömbben (C), amely mindkét tömbben előfordul Kimenő adat: Az összes olyan elem egy új tömbben (C), amely mindkét tömbben előfordul A kimenő adatok tárolásához szükséges tömb mérete N és M közül a kisebb töm elemszámával egyezik meg A kimenő adatok tárolásához szükséges tömb mérete N és M közül a kisebb töm elemszámával egyezik meg A feladat átfogalmazható: válogassuk ki A azon elemeit, amelyek benne vannak B-ben, vagyis két elemi tétel összeépítésével megoldható A feladat átfogalmazható: válogassuk ki A azon elemeit, amelyek benne vannak B-ben, vagyis két elemi tétel összeépítésével megoldható Példák: számok közös osztóinak megadása, két ember határidőnaplójának ismeretében azon esték meghatározása, amikor el tudnak menni együtt vacsorázni Példák: számok közös osztóinak megadása, két ember határidőnaplójának ismeretében azon esték meghatározása, amikor el tudnak menni együtt vacsorázni

41 Programozási tételek Adatsorozathoz adatsorozatot rendelő tételek 4. Unió Bemenő adat: két adatsorozat, egy N elemű (A tömb), és egy M elemű (B), amelyek azonos elemtípusúak Bemenő adat: két adatsorozat, egy N elemű (A tömb), és egy M elemű (B), amelyek azonos elemtípusúak Kimenő adat: Az összes olyan elem egy új tömbben (C), amely legalább az egyik tömbben előfordul Kimenő adat: Az összes olyan elem egy új tömbben (C), amely legalább az egyik tömbben előfordul A kimenő adatok tárolásához szükséges tömb mérete N+M A kimenő adatok tárolásához szükséges tömb mérete N+M A feladat átfogalmazható: másoljuk le A elemeit, majd válogassuk ki B-ből azokat az elemeket, amelyek nincsenek benne A-ban. Vagyis egy sorozatszámítás, majd egy kiválogatás, ami egy eldöntést tartalmaz. A feladat átfogalmazható: másoljuk le A elemeit, majd válogassuk ki B-ből azokat az elemeket, amelyek nincsenek benne A-ban. Vagyis egy sorozatszámítás, majd egy kiválogatás, ami egy eldöntést tartalmaz. Példák: számok közös osztóinak megadása, két ember határidőnaplójának ismeretében azon esték meghatározása, amikor el tudnak menni együtt vacsorázni Példák: számok közös osztóinak megadása, két ember határidőnaplójának ismeretében azon esték meghatározása, amikor el tudnak menni együtt vacsorázni

42 Programozási tételek Rendezések Az alapfeladat: N elemű adatsorozat (A tömb) nagyság szerinti sorba rendezése(szükséges, hogy létezzen a <,<= reláció a sorozat elemtípusára) Az alapfeladat: N elemű adatsorozat (A tömb) nagyság szerinti sorba rendezése(szükséges, hogy létezzen a <,<= reláció a sorozat elemtípusára) Léteznek olyan módszerek, amelyek új tömbbe rendezik az adatsorozatot, vagy létrehoznak egy számsorozatot, amely leírja a sorrendet (indexelés) Léteznek olyan módszerek, amelyek új tömbbe rendezik az adatsorozatot, vagy létrehoznak egy számsorozatot, amely leírja a sorrendet (indexelés) A következő algoritmusok azonban helyben rendeznek, a rendezett sorozat magában az eredeti tömbben keletkezik A következő algoritmusok azonban helyben rendeznek, a rendezett sorozat magában az eredeti tömbben keletkezik Minden esetben, ha két elemet ezek során fel kell cserélni, a következő eljárást alkalmazzuk: Minden esetben, ha két elemet ezek során fel kell cserélni, a következő eljárást alkalmazzuk: Eljárás Csere(A,B) Seged:=AA:=BB:=Seged Eljárás vége Eljárás vége

43 Programozási tételek Rendezések 1. Egyszerű cserés rendezés Alapelv: hasonlítsuk össze a sorozat első elemét sorban minden utána következő elemmel, és ha szükséges (nála kisebbet találtunk), akkor cseréljünk. Ezzel elérjük, hogy a sorozat legkisebb eleme az első helyre kerül. Alapelv: hasonlítsuk össze a sorozat első elemét sorban minden utána következő elemmel, és ha szükséges (nála kisebbet találtunk), akkor cseréljünk. Ezzel elérjük, hogy a sorozat legkisebb eleme az első helyre kerül. Folytassuk ugyanezt a módszert a második, harmadik…stb. elemekre Folytassuk ugyanezt a módszert a második, harmadik…stb. elemekre A rendezéseket aszerint jellemezzük, hogy mekkora a helyfoglalása a memóriában, hány összehasonlítás és hány mozgatás szükséges hozzá. Ezek a jellemzők az egyszerű cserés rendezésre: A rendezéseket aszerint jellemezzük, hogy mekkora a helyfoglalása a memóriában, hány összehasonlítás és hány mozgatás szükséges hozzá. Ezek a jellemzők az egyszerű cserés rendezésre: Helyfoglalás: N+1 elem Helyfoglalás: N+1 elem Összehasonlítások száma: N*(N-1)/2 (N*N-nel arányos) Összehasonlítások száma: N*(N-1)/2 (N*N-nel arányos) Mozgatások száma: 0 – 3*N*(N-1)/2, függ az eredeti sorozat rendezettségétől Mozgatások száma: 0 – 3*N*(N-1)/2, függ az eredeti sorozat rendezettségétől

44 Programozási tételek Rendezések 1. Egyszerű cserés rendezés Általános algoritmusa Általános algoritmusa Eljárás Egyszerű cserés rendezés Ciklus i:=1-től N-1-ig Ciklus j:=i+1-től N-ig Ha A(i)>A(j) akkor Csere(A(i),A(j)) Ciklus vége Eljárás vége

45 Programozási tételek Rendezések 2. Minimumkiválasztásos rendezés Az előző módszer hátránya a sok felesleges csere. Az előző módszer hátránya a sok felesleges csere. Ennek csökkentésére új elv: keressük meg a sorozat legkisebb elemét, majd cseréljük fel az első elemmel Ennek csökkentésére új elv: keressük meg a sorozat legkisebb elemét, majd cseréljük fel az első elemmel Ezután keressük meg a második elemmel kezdődő sorozat legkisebb elemét, és ezt cseréljük fel a második elemmel Ezután keressük meg a második elemmel kezdődő sorozat legkisebb elemét, és ezt cseréljük fel a második elemmel Helyfoglalás: N+1 elem Helyfoglalás: N+1 elem Összehasonlítások száma: N*(N-1)/2 (N*N-nel arányos) Összehasonlítások száma: N*(N-1)/2 (N*N-nel arányos) Mozgatások száma: 3*(N-1), nem függ az eredeti sorozat rendezettségétől Mozgatások száma: 3*(N-1), nem függ az eredeti sorozat rendezettségétől

46 Programozási tételek Rendezések 2. Minimumkiválasztásos rendezés Általános algoritmusa Általános algoritmusa Eljárás Minimumkiválasztásos rendezés Ciklus i:=1-től N-1-ig MIN:=I Ciklus j:=i+1-től N-ig Ha A(MIN)>A(j) akkor MIN:=j Ciklus vége Csere(A(i),A(MIN) Eljárás vége

47 Programozási tételek Rendezések 3. Buborékrendezés Új alapelv: mindig szomszédos elemeket cseréljünk Új alapelv: mindig szomszédos elemeket cseréljünk Először induljunk az első elemtől, és csináljuk a szomszédok hasonlítását a sorozat végéig. Ekkor a legnagyobb elem az utolsó helyre kerül, a többi pedig a helye felé mozdul el ( a kisebbek az eleje, a nagyobbak a vége felé, innen a buborékmódszer elnevezés) Először induljunk az első elemtől, és csináljuk a szomszédok hasonlítását a sorozat végéig. Ekkor a legnagyobb elem az utolsó helyre kerül, a többi pedig a helye felé mozdul el ( a kisebbek az eleje, a nagyobbak a vége felé, innen a buborékmódszer elnevezés) Ezután ismételjük meg a cseréket, de most már csak az elsőtől az utolsó előtti elemig, mert az utolsó már jó helyen van, és így tovább Ezután ismételjük meg a cseréket, de most már csak az elsőtől az utolsó előtti elemig, mert az utolsó már jó helyen van, és így tovább Helyfoglalás: N+1 elem Helyfoglalás: N+1 elem Összehasonlítások száma: N*(N-1)/2 (N*N-nel arányos) Összehasonlítások száma: N*(N-1)/2 (N*N-nel arányos) Mozgatások száma: 0 -3*N*(N-1), függ az eredeti sorozat rendezettségétől Mozgatások száma: 0 -3*N*(N-1), függ az eredeti sorozat rendezettségétől

48 Programozási tételek Rendezések 3. Buborékrendezés Általános algoritmusa Általános algoritmusa Eljárás Buborékrendezés Ciklus i:=N-től 2-ig -1-esével Ciklus j:=1-től i-1-ig Ha A(j)>A(j+1) akkor Csere(A(j,A(j+1)) Ciklus vége Eljárás vége

49 Programozási tételek Rendezések 4. Beillesztéses rendezés Új alapelv: egyetlen elem mindig rendezett, és ha van egy rendezett részsorozatunk, abba illesszük be a megfelelő helyre az aktuális elemet Új alapelv: egyetlen elem mindig rendezett, és ha van egy rendezett részsorozatunk, abba illesszük be a megfelelő helyre az aktuális elemet Ez a beillesztés úgy működik, hogy az útban lévő elemeket a sorozat vége felé léptetjük Ez a beillesztés úgy működik, hogy az útban lévő elemeket a sorozat vége felé léptetjük Helyfoglalás: N+1 elem Helyfoglalás: N+1 elem Összehasonlítások száma: 0 - N*(N-1)/2 (N*N-nel arányos, függ a rendezettségtől) Összehasonlítások száma: 0 - N*(N-1)/2 (N*N-nel arányos, függ a rendezettségtől) Mozgatások száma: 0 -3*N*(N-1), függ az eredeti sorozat rendezettségétől Mozgatások száma: 0 -3*N*(N-1), függ az eredeti sorozat rendezettségétől

50 Programozási tételek Rendezések 4. Beillesztéses rendezés Általános algoritmusa Általános algoritmusa Eljárás Beillesztéses rendezés Ciklus i:=2-től N-ig j:=i-1 Ciklus amíg j>0 és A(j)>A(j+1) Csere(A(j,A(j+1))j:=j-1 Ciklus vége Eljárás vége

51 Programozási tételek Keresések Ebben a részben speciális keresési feladatokkal foglalkozunk Ebben a részben speciális keresési feladatokkal foglalkozunk Már tanultuk a lineáris keresést, ami rendezetlen sorozatban keres Már tanultuk a lineáris keresést, ami rendezetlen sorozatban keres Vannak azonban rendezett sorozatra ennél hatékonyabb keresési módszerek, illetve van olyan keresés is, amelynek nem egy elem, hanem egy adatsorozat az eredménye Vannak azonban rendezett sorozatra ennél hatékonyabb keresési módszerek, illetve van olyan keresés is, amelynek nem egy elem, hanem egy adatsorozat az eredménye

52 Programozási tételek Keresések 1. Keresés rendezett sorozatban Bináris, vagy logaritmikus keresésnek is nevezik Bináris, vagy logaritmikus keresésnek is nevezik Elve: az intervallumfelezés Elve: az intervallumfelezés Megvizsgáljuk a sorozat középső elemét: ha a keresett elem ennél nagyobb, akkor a továbbiakban csak a sorozat második felével foglalkozunk, ha nem, akkor az elejével Megvizsgáljuk a sorozat középső elemét: ha a keresett elem ennél nagyobb, akkor a továbbiakban csak a sorozat második felével foglalkozunk, ha nem, akkor az elejével Bemenő adat: egy N elemű RENDEZETT adatsorozat (A tömb) Bemenő adat: egy N elemű RENDEZETT adatsorozat (A tömb) (feltételeztük, hogy az elemek valamilyen tulajdonság alapján sorba rendezhetők) (feltételeztük, hogy az elemek valamilyen tulajdonság alapján sorba rendezhetők) Kimenő adat: Egy Y értékkel megegyező elem sorszáma (SORSZAM), és egy logikai érték, amely megmondja, volt- e Y értékkel megegyező elem (VAN) Kimenő adat: Egy Y értékkel megegyező elem sorszáma (SORSZAM), és egy logikai érték, amely megmondja, volt- e Y értékkel megegyező elem (VAN)

53 Programozási tételek Keresések 1. Keresés rendezett sorozatban Későbbi dián… Későbbi dián…

54 Programozási tételek Keresések 2. Visszalépéses keresés (back-track) Ez nem igazi keresés: itt egy speciális feladat megoldását keressük Ez nem igazi keresés: itt egy speciális feladat megoldását keressük Ez a megoldás minden esetben maga is egy sorozat Ez a megoldás minden esetben maga is egy sorozat E sorozat minden egyes tagját valamilyen sorozatból kell kikeresni, de az egyes keresések összefüggnek egymással E sorozat minden egyes tagját valamilyen sorozatból kell kikeresni, de az egyes keresések összefüggnek egymással Minden egyes új választás az összes korábbitól függhet, a későbbiektől azonban nem (ezt egy speciális F függvénnyel írjuk le) Minden egyes új választás az összes korábbitól függhet, a későbbiektől azonban nem (ezt egy speciális F függvénnyel írjuk le) Egyes esetekben a választás a saját jellemzőjétől is függhet (ezt egy speciális G függvénnyel írjuk majd le) Egyes esetekben a választás a saját jellemzőjétől is függhet (ezt egy speciális G függvénnyel írjuk majd le)

55 Programozási tételek Keresések 2. Visszalépéses keresés (back-track) Példafeladatok: Példafeladatok: Helyezzünk el egy 8x8-as sakktáblán 8 vezért úgy, hogy egyik se üsse a másikat! (lehet más bábu is) Helyezzünk el egy 8x8-as sakktáblán 8 vezért úgy, hogy egyik se üsse a másikat! (lehet más bábu is) Egy vállalat N db munkára szeretne munkásokat felvenni. Jelentkezik N db munkás, mindegyik megadja, hogy milyen munkát tudna elvégezni. Osszuk el közöttük a munkát úgy, hogy minden munka el legyen végezve, és mindenkinek jusson munka! Egy vállalat N db munkára szeretne munkásokat felvenni. Jelentkezik N db munkás, mindegyik megadja, hogy milyen munkát tudna elvégezni. Osszuk el közöttük a munkát úgy, hogy minden munka el legyen végezve, és mindenkinek jusson munka! N bolt M pékségtől rendel kenyeret. Ismerjük a boltok kenyérigényét, a pékségek sütési kapacitását, valamint azt, hogy melyik bolt melyik pékséggel áll kapcsolatban. Adjuk meg, melyik bolt pékségből rendelje a kenyeret, ha minden bolt csak egy pékségtől rendelhet! N bolt M pékségtől rendel kenyeret. Ismerjük a boltok kenyérigényét, a pékségek sütési kapacitását, valamint azt, hogy melyik bolt melyik pékséggel áll kapcsolatban. Adjuk meg, melyik bolt pékségből rendelje a kenyeret, ha minden bolt csak egy pékségtől rendelhet!

56 Programozási tételek Keresések 2. Visszalépéses keresés (back-track) Általános algoritmusa: Általános algoritmusa: A használt változók: A használt változók: N:egész [a sorozatok száma, pl. a 8 oszlop a sakktáblán] N:egész [a sorozatok száma, pl. a 8 oszlop a sakktáblán] M:tömb(1..N:egész) [az egyes sorozatok elemszáma, pl. a sakktábla oszlopainak hossza] M:tömb(1..N:egész) [az egyes sorozatok elemszáma, pl. a sakktábla oszlopainak hossza] X:tömb(1..N:egész) [a választott elemek sorszáma, pl. a mező sorszáma, ahova az adott oszlopban elhelyezzük a vezért] X:tömb(1..N:egész) [a választott elemek sorszáma, pl. a mező sorszáma, ahova az adott oszlopban elhelyezzük a vezért] VAN:logikai [akkor igaz, ha minden sorozatból megtaláltuk a megfelelőt VAN:logikai [akkor igaz, ha minden sorozatból megtaláltuk a megfelelőt

57 Programozási tételek Keresések 2. Visszalépéses keresés (back-track) Általános algoritmusa: Általános algoritmusa: Az algoritmus megírásához három eljárást kell megírnunk: Az algoritmus megírásához három eljárást kell megírnunk: A legfelső szinten megkeressük az i. sorozatból a megfelelő elemet. Ha találtunk ilyet, akkor továbblépünk az i+1. sorozatra, ha nem találtunk, akkor visszalépünk az i-1.-re, és abban keresünk tovább A legfelső szinten megkeressük az i. sorozatból a megfelelő elemet. Ha találtunk ilyet, akkor továbblépünk az i+1. sorozatra, ha nem találtunk, akkor visszalépünk az i-1.-re, és abban keresünk tovább Az i. sorozatban való keresés egy lineáris keresés, külön eljárásban Az i. sorozatban való keresés egy lineáris keresés, külön eljárásban Lesz még egy, a feladattól függő RosszEset függvény, amely azt írja le, hogy mi a nem megfelelő eset (pl. mikor ütik egymást a királynők) Lesz még egy, a feladattól függő RosszEset függvény, amely azt írja le, hogy mi a nem megfelelő eset (pl. mikor ütik egymást a királynők)

58 Programozási tételek Keresések 2. Visszalépéses keresés (back-track) Általános algoritmusa: Eljárás BackTrack(N,M,X,VAN) i:=1 X(1..N):=(0,..,0) {0 jelzi, hogy az adott sorozatban nem találtunk még megfelelőt} Ciklus amíg i>=1 és i =1 és i<=N JóEsetKeresés(M,X,i,melyik,VAN) {a melyik változóban adja vissza, hogy az i. sorozatban melyik a megfelelő} Ha VAN akkor X(i):=melyik i:=i+1 {előre lépünk} i:=i+1 {előre lépünk} egyébként X(I):=0 egyébként X(I):=0 i:=i-1 {visszalépünk} i:=i-1 {visszalépünk} Elágazás vége Eljárás vége

59 Programozási tételek Keresések 2. Visszalépéses keresés (back-track) Általános algoritmusa: Eljárás JóEsetKeresés(M,X,i,melyik,VAN) melyik :=X(i)+1 Ciklus amíg melyik<=M(i) és RosszEset(i,X,melyik) és nem G(i,X(i) melyik:=melyik+1 Ciklus vége VAN:=(melyik<=M(I)) Eljárás vége Függvény RosszEset(i,X,melyik):Logikai j:=1 Ciklus amíg j

60 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerekkel optimalizálná egy már kész program futását, ha abban sokszor kell tömbökben, listákban keresni? Programozási tételek (alapalgoritmusok) Keresés, logaritmikus keresés Eljárás Bináris_Keresés E := 1 U := N Ciklus K := [ ( E+U ) / 2]{E+U felének egészrésze} Elágazás Y < A( K ) esetén U := K-1 Y < A( K ) esetén U := K-1 Y > A( K ) esetén E := K+1 Y > A( K ) esetén E := K+1 Elágazás vége Amíg E Y Ciklus vége VAN := ( E <= U ) Ha VAN akkor SORSZAM := K Eljárás vége

61 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerekkel optimalizálná egy már kész program futását, ha abban sokszor kell tömbökben, listákban keresni? Programozási tételek (alapalgoritmusok) Keresés, logaritmikus keresés 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 E:=1U:=N K:=[E+U] / 2

62 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerekkel optimalizálná egy már kész program futását, ha abban sokszor kell tömbökben, listákban keresni? Adatszerkezetek, objektumok Tömbök, listák bejárása 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 Első elemUtolsó elem Tömbök bejárása I := Tömb[ index ] Tömb[ index ] := I for (i:=1 ; i <= tömb.hossz ; i++) { K := tömb[ i ] ; Kiír_képernyőre( K ) ; }

63 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerekkel optimalizálná egy már kész program futását, ha abban sokszor kell tömbökben, listákban keresni? Adatszerkezetek, objektumok  Tömbök, listák bejárása 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 Tömbök bejárása – 2 dimenziós tömb 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 for ( i := 1 ; i <= tömb.sorszam ; i++) { for ( j := 1 ; j <= tömb.oszlopszam ; j++) { K := tömb[ j + ( i - 1 ) * tömb.oszlopszam ] ; Kiír_képernyőre( K ) ; } oszlopszám sorszám 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88

64 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerekkel optimalizálná egy már kész program futását, ha abban sokszor kell tömbökben, listákban keresni? Adatszerkezetek, objektumok  Tömbök, listák bejárása Listák bejárása elem Egyszeresen láncolt lista NULL Első elemre mutató változó

65 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerekkel optimalizálná egy már kész program futását, ha abban sokszor kell tömbökben, listákban keresni? Adatszerkezetek, objektumok  Tömbök, listák bejárása Listák bejárása elem Kétszeresen láncolt lista NULL Első elemre mutató változó NULL

66 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerekkel optimalizálná egy már kész program futását, ha abban sokszor kell tömbökben, listákban keresni? Programtervezési módszerek  Keresések optimalizálása 1.Értékkeresésnél  rendezés 2.Mintakeresésnél  Ábécé sorrend 3.Indexelés 4.Kategorizálás 5.Egyéb, egyéni lehetőségek 6.Lépésszám csökkentés 7.Futási idő csökkentés 8.Memóriahasználat csökkentése Példa: tmb[12] = { 3,6,7,3,2,5,8,4,6,3,7,5 } i := 0; Ciklus Ha ( tmb[i] = = 5 ) akkor VAN:=IGAZ; i := i+1 ; Ciklus vége r := 1; Ciklus amíg (r < 10) eredmeny := ( 2 * π * r 3 ) / 3; tmb[r] := eredmeny; r := r + 1; Ciklus vége Pi2 := 2*π; eredmeny := (Pi2 * r3) / 3;

67 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerekkel optimalizálná egy már kész program futását, ha abban sokszor kell tömbökben, listákban keresni? Tesztelés, hibakeresés  Túlcsordulások kezelése tmb [ ] amely egész típust kezel (-32768…32767 [2 bájton] ) tmb[ 0 ] és tmb[ 26 ] hibát okoz  indexelési túlcsordulás tmb[ index ] := hibát okoz  Ábrázolhatósági túlcsordulás A programban feltételvizsgálattal kell meggátolni a túlcsordulást. Figyelni kell, ha dinamikusan foglaljuk a tömbnek a memóriát!!!

68 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

69 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy jogosultságokat is kezelő alkalmazásban milyen módszerrel oldaná meg, hogy az egyes felhasználói csoportok függvényében különböző legyen a felhasználói felület?

70 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy jogosultságokat is kezelő alkalmazásban milyen módszerrel oldaná meg, hogy az egyes felhasználói csoportok függvényében különböző legyen a felhasználói felület? Információtartalom vázlata Szoftver architektúra kialakítása  Felhasználói interfész örököltetése, újrahasznosítása Kommunikációs kapcsolatok  A felület azonos elemeinek (felületek) fejlesztése megállapítása Rétegek típusai  A felhasználói felület és az üzleti logika szétbontása

71 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

72 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy program működése közben időnként hibák lépnek fel, de ezek nem rendszeresen következnek be. Milyen módszerrel keresné meg a hiba helyét?

73 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy program működése közben időnként hibák lépnek fel, de ezek nem rendszeresen következnek be. Milyen módszerrel keresné meg a hiba helyét? Információtartalom vázlata: Tesztelési ismeretek (teszttípusok) - Fekete doboz és fehér doboz módszer Szoftverkomponensek - Az egyes elemek kommunikációjának vizsgálata Tesztelés, hibakeresés - A hiba helyének szűkítése Alkalmazásfejlesztő eszközök - Debuggolás használata

74 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy program működése közben időnként hibák lépnek fel, de ezek nem rendszeresen következnek be. Milyen módszerrel keresné meg a hiba helyét? Tesztelési ismeretek (teszttípusok)  Fekete és fehér doboz módszer Íróasztalterv (programterv) A tervezés időszakában ( fehér doboz módszer) Dinamikus tesztelés Fehér doboz módszer Szerkezet szerinti tesztelés Fekete doboz módszer Ekvivalencia osztályok Statikus tesztelés Kódellenőrzés Formai ellenőrzés Tartalmi ellenőrzés

75 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy program működése közben időnként hibák lépnek fel, de ezek nem rendszeresen következnek be. Milyen módszerrel keresné meg a hiba helyét? Szoftverkomponensek  Az egyes elemek kommunikációjának vizsgálata A - komponensB - komponens C - komponensD - komponens

76 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy program működése közben időnként hibák lépnek fel, de ezek nem rendszeresen következnek be. Milyen módszerrel keresné meg a hiba helyét? Tesztelés, hibakeresés  A hiba helyének szűkítése Indukciós módszerDedukciós módszer Ekvivalencia osztályok Kimenő adatokból következtetünk Lehetséges hiba okok feltárása Hiba helyének szűkítése Visszalépéses módszer Addig megyünk, amíg van hiba

77 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy program működése közben időnként hibák lépnek fel, de ezek nem rendszeresen következnek be. Milyen módszerrel keresné meg a hiba helyét? Alkalmazásfejlesztő eszközök  Debuggolás használata Debug eszközök Step into Step over Breakpoint

78 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

79 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy rendszer tervezésénél milyen módszerekkel tenné hatékonyabbá a benne lévő ciklusok futását?

80 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy rendszer tervezésénél milyen módszerekkel tenné hatékonyabbá a benne lévő ciklusok futását? Információtartalom vázlata: Alapfogalmak (elágazás, ciklus stb.) - Ciklusok megállító feltételeinek vizsgálata Programozási tételek (alapalgoritmusok) - Keresések, rendezések gyors változatai Kódolás, változók használata - Globális és lokális változók használata

81 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy rendszer tervezésénél milyen módszerekkel tenné hatékonyabbá a benne lévő ciklusok futását? Alapfogalmak (elágazás, ciklus stb.)  Ciklusok megállító feltételeinek vizsgálata i := 1; do { ertek := keres( A[i], mit); i += 1; }while ( ertek = = 0 ); Milyen hibákat figyelhetünk meg?

82 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy rendszer tervezésénél milyen módszerekkel tenné hatékonyabbá a benne lévő ciklusok futását? Programozási tételek (alapalgoritmusok)  Keresések, rendezések gyors változatai Logaritmikus keresés Quick sort

83 Programozás módszertan Programozás módszertan vizsgatételek 5. Tétel Quick sort

84 Programozás módszertan Programozás módszertan vizsgatételek 5. Tétel Quick sort [ int tmb[]={7, 4, 9, 10, 6, 8, 3, 5, 2, 1}; ] void quickSort(int arr[], int left, int right) { int i = left, j = right, tmp; int pivot = arr [ ( left + right ) / 2]; /* partition */ while (i <= j) { while ( arr[i] < pivot ) i++; while ( arr[j] > pivot ) j--; if (i <= j) { tmp = arr [ i ]; arr [ i ] = arr [ j ]; arr [ j ] = tmp; (* kiíratás *) i++ ; j--; } /* recursion */ if (left < j) quickSort(arr, left, j); if (i < right) quickSort(arr, i, right); } // itt a vége a QuickSort-nak Pivot= 6 - i= 0 - j= Pivot= 6 - i= 2 - j= Pivot= 6 - i= 3 - j= Pivot= 6 - i= 4 - j= Pivot= 2 - i= 1 - j= Pivot= 1 - i= 0 - j= Pivot= 5 - i= 3 - j= Pivot= 4 - i= 2 - j= Pivot= 10 - i= 7 - j= Pivot= 6 - i= 5 - j= Pivot= 7 - i= 6 - j= Pivot= 8 - i= 7 - j= Végeredmény =

85 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy rendszer tervezésénél milyen módszerekkel tenné hatékonyabbá a benne lévő ciklusok futását? Kódolás, változók használata  Globális és lokális változók használata #include void main() { int elso; elso = 15; } #include void main() { int elso; elso = 15; } #include int masodik = 5; int osszeg( int a, int b) { int ertek; ertek = (a + b); return ertek; } void main() { kiir( masodik ); kiir( osszeg(7,4) ); } Van-e hiba?

86 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

87 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy felhasználó nincs teljesen tisztában azzal, milyen programot is szeretne a munkájához használni. Ön fejlesztőként hogyan segítené a megfelelő rendszer kialakításában?

88 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy felhasználó nincs teljesen tisztában azzal, milyen programot is szeretne a munkájához használni. Ön fejlesztőként hogyan segítené a megfelelő rendszer kialakításában? Információtartalom vázlata Rendszerek (elemek, jellemzők)  Az egyes programverziók lehetőségeinek vázlata Felhasználói igények feltárása, elemzése és csoportosítása  Interjú készítése A rendszerelemek tartalmi tervezése  Felhasználói képernyők kialakítása Rendszerfunkciók tervezése  Funkciók pontosítása

89 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

90 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy adatbázist használó program tervezésekor hogyan valósítaná meg az egyes programrétegek kommunikációját?

91 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy adatbázist használó program tervezésekor hogyan valósítaná meg az egyes programrétegek kommunikációját? Információtartalom vázlata Rendszerek működésének tervezése  Közös elemek kialakítása, keretrendszer Alkalmazásfejlesztés lépései és feladatai  Eseménykezelés Rétegek típusai  Felhasználói felület, üzleti logika, adatbázis kapcsolat

92 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy adatbázist használó program tervezésekor hogyan valósítaná meg az egyes programrétegek kommunikációját? Rendszerek működésének tervezése  Közös elemek kialakítása, keretrendszer Felhasználói felület Üzleti logika Adatbázis réteg Komponensek használata Keretrendszer

93 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy adatbázist használó program tervezésekor hogyan valósítaná meg az egyes programrétegek kommunikációját? DBL (database layer - adatbázis): szigorúan csak táblák és a bennük található adatok. Természetesen ide lehet venni a kulcsokat, indexeket is. DAL (data access layer - adatelérési réteg): Egyik oldalán az adatbázis áll, a másik egy az adatbázis típusától független adathalmaz. Lehet PostgreSQL, MySQL vagy MS SQL, a Dataset az mindig ugyan úgy néz ki. UI (user interface - felhasználói felület): vannak rajta beviteli mezők, gombok, miegymás. Felhasználó ki tudja tölteni az adatokat és el tudja küldeni az utasítását a BL felé. BLL (business-logic layer - üzleti logika): az eljárásait, property-jeit, stb a UI-ről hívogatjuk, a bemenetei pedig a DAL eljárásai. Itt valósítunk meg olyan dolgokat, amik egy vagy több táblát érintenek. Rétegek típusai  Felhasználói felület, üzleti logika, adatbázis kapcsolat

94 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy adatbázist használó program tervezésekor hogyan valósítaná meg az egyes programrétegek kommunikációját? Rétegek típusai  Felhasználói felület, üzleti logika, adatbázis kapcsolat UI – User Interface BL – Business Logic DA – Data access DB - Database Windows: GTK+, Delphi, C++ Builder, Java Builder Visual Studio (C/C++, C#, Java, Basic,…) Linux: Anjuta, GTK+, Mono (C#), Kdevelop, NetBeans (Java) Program nyelv ADO / DAO ODBC / BDE Direct Access PostgresDAC – PostgreSQL MySQL, PostgreSQL, MS SQL, Oracle, Firebird, …

95 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

96 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy már kész rendszerhez telepítő programot készít. Mik egy ilyen program feladatai és hogyan oldaná ezt meg?

97 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy már kész rendszerhez telepítő programot készít. Mik egy ilyen program feladatai és hogyan oldaná ezt meg? Információtartalom vázlata Eszközkörnyezet létrehozása  Tömörített állományok Állománykezelés  Könyvtárszerkezet kialakítása Állományok másolása  Registry használata Szoftverkomponensek  Az IO komponensek használata Telepítő csomagok  Install és uninstall program kialakítása

98 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy már kész rendszerhez telepítő programot készít. Mik egy ilyen program feladatai és hogyan oldaná ezt meg? Eszközkörnyezet létrehozása  Tömörített állományok Windows.CAB fájl DEFLATE, Quantum, LZX MakeCAB.exe és Extract.exe

99 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy már kész rendszerhez telepítő programot készít. Mik egy ilyen program feladatai és hogyan oldaná ezt meg? Állománykezelés  Könyvtárszerkezet kialakítása Könyvtárak szerkezete, fájlok céliránya Tárhely, jogosultság Célkönyvtárak vizsgálata Program Files\ Documents and Settings\homedir Egyéb korlátozások Biztonsági házirend

100 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy már kész rendszerhez telepítő programot készít. Mik egy ilyen program feladatai és hogyan oldaná ezt meg? Állományok másolása  Registry használata Windows Registry HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS (HKU) HKEY_CURRENT_CONFIG HKEY_PERFORMANCE_DATA HKEY_DYN_DATA Regedit.exe

101 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy már kész rendszerhez telepítő programot készít. Mik egy ilyen program feladatai és hogyan oldaná ezt meg? Szoftverkomponensek  Az IO komponensek használata Nyelvi eszköztár használata #include int main () { FILE * pFile; pFile = fopen ("myfile.txt","w"); if ( pFile != NULL ) { fputs ("example", pFile); fclose ( pFile ); } return 0; } IO komponensek használata Komplett hibakezelés Sokféle fájl formátum Hálózati elérés kezelése Grafikus felület Portolhatóság

102 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy már kész rendszerhez telepítő programot készít. Mik egy ilyen program feladatai és hogyan oldaná ezt meg? Telepítő csomagok  Install és uninstall program kialakítása InstallUninstall Könyvtár és menü készítése Jogosultságok  másolás Registry bejegyzések Könyvtár és fájl törlés Menü és ikon törlése Registry bejegyzések törlése Vizsgálatok

103 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

104 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy rendszert kell dokumentálnia. Mik lesznek ennek a legfontosabb jellemzői? Milyen hátrányai vannak a nem megfelelő dokumentálásnak?

105 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy rendszert kell dokumentálnia. Mik lesznek ennek a legfontosabb jellemzői? Milyen hátrányai vannak a nem megfelelő dokumentálásnak? Információtartalom vázlata Dokumentálás (dokumentumtípusok)  UML diagramok fajtái Kódolás  Kommentezés módszerei Szoftverkomponensek  A rendszer architektúrájának felépítése

106 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy rendszert kell dokumentálnia. Mik lesznek ennek a legfontosabb jellemzői? Milyen hátrányai vannak a nem megfelelő dokumentálásnak? Dokumentálás (dokumentumtípusok)  UML diagramok fajtái (később) Fejlesztői dokumentumFelhasználói dokumentum Feladatspecifikáció Input / Output adatok Programlista Adatok (típus) leírása Tesztelés adatai Operátori leírásFelhasználói leírás Telepítési követelmény Telepítés paraméterezése Konfigurálás Biztonsági mentések Indítás Használat

107 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy rendszert kell dokumentálnia. Mik lesznek ennek a legfontosabb jellemzői? Milyen hátrányai vannak a nem megfelelő dokumentálásnak? Kommunikációs diagram Struktúrális diagram Diagram Komponens diagram Objektum diagram Aktivitás diagram Összetett struktúra diagram Csomag diagram Telepítési diagram Interakciós diagram Szekvencia diagram Interakciós áttekintő Osztály diagram Idő diagram Viselkedési diagram Use Case diagram Állapotgép diagram

108 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

109 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy összetett felhasználó felületet kell terveznie. Ezt milyen szempontok alapján tenné meg, hogy az átlátható, logikus és felhasználóbarát legyen?

110 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy összetett felhasználó felületet kell terveznie. Ezt milyen szempontok alapján tenné meg, hogy az átlátható, logikus és felhasználóbarát legyen? Információtartalom vázlata Az elemek formai meghatározása Könnyen használható felület kialakítása Navigáció megtervezése Ablakok nyitásának sorrendje Navigáció és interakciók fejlesztése Események kezelése Felhasználói felületek Ablakozó rendszer alapelvei Szerzői rendszerek Grafikus rendszerek használata

111 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

112 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy cégnél azt a feladatot kapja, hogy többnyelvű legyen a felhasználói felület. Milyen módszert használna ennek megvalósításához?

113 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy cégnél azt a feladatot kapja, hogy többnyelvű legyen a felhasználói felület. Milyen módszert használna ennek megvalósításához? Információtartalom vázlata Rendszerek (elemek, jellemzők)  Adatbázis nyelvi tábláinak kialakítása Alkalmazásfejlesztés lépései és feladatai  Felület kialakítása, elemek szövegeinek cseréje Programtervezési módszerek  A felület elemeinek bejárása

114 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

115 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy Ön által fejlesztett programot többen is használnak egy helyi hálózatban. Milyen módon oldaná meg, hogy az új programverziók felhasználói beavatkozás nélkül jussanak el a kliens gépekre?

116 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy Ön által fejlesztett programot többen is használnak egy helyi hálózatban. Milyen módon oldaná meg, hogy az új programverziók felhasználói beavatkozás nélkül jussanak el a kliens gépekre? Információtartalom vázlata Rendszerek működésének tervezése  Frissítő program kialakítása Szoftver architektúra kialakítása  A rendszer egyes elemeinek kommunikációja Szoftverkomponensek  Dinamikus könyvtárak (dll) használata Telepítő csomagok  Új verzió lekérése

117 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

118 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy adott rendszer fejlesztésénél milyen szempontok alapján választaná ki az adatbázis-kezelő rendszert, a fejlesztő eszközt, illetve a programozási nyelvet?

119 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy adott rendszer fejlesztésénél milyen szempontok alapján választaná ki az adatbázis-kezelő rendszert, a fejlesztő eszközt, illetve a programozási nyelvet? Információtartalom vázlata Eszközkörnyezet meghatározása  Adatbázis-kezelők, fejlesztőeszközök előnyei, hátrányai Rendszerek működésének tervezése  A létrehozandó rendszer optimális működésének feltételei Alkalmazásfejlesztő eszközök  Fejlesztő eszközök összehasonlítása

120 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

121 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy program fejlesztőjeként milyen érvekkel győzné meg a fejlesztő cégét, hogy objektum-orientált módszert használjon a strukturált helyett?

122 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy program fejlesztőjeként milyen érvekkel győzné meg a fejlesztő cégét, hogy objektum-orientált módszert használjon a strukturált helyett? Információtartalom vázlata Szoftver architektúra kialakítása  UML, objektumok kommunikációja Adatszerkezetek, objektumok  Objektumok használatának előnyei Programtervezési módszerek  Objektumok újrahasznosítása  Polimorfizmus Felhasználói felületek  Template felületek  Öröklések előnyei

123 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy program fejlesztőjeként milyen érvekkel győzné meg a fejlesztő cégét, hogy objektum-orientált módszert használjon a strukturált helyett? class Osztálynév { Private: int i; double ertek; Public: Osztálynév() // konstruktor {…} ~Osztálynév() // destruktor {…} int maxDB; int szamol (int a, int b) {…} Protected: }; Polimorfizmus: int cube( int inumber ); long cube( long lnumber ); double cube( double dnumber );

124 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

125 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Ön egy program fejlesztésének részeként keretrendszert ír. Mik azok a legfontosabb elvek, ami alapján kialakítja ezt?

126 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Ön egy program fejlesztésének részeként keretrendszert ír. Mik azok a legfontosabb elvek, ami alapján kialakítja ezt? Információtartalom vázlata Rendszerek (elemek, jellemzők)  Adatbázis-kapcsolatok, osztály-kapcsolatok Sokszor használt elemek  Kommunikációs kapcsolatok (felületek) fejlesztése  Adat-érzékeny komponensek használata Alkalmazásfejlesztés lépései és feladatai  Redundáns részek kiemelése

127 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Ön egy program fejlesztésének részeként keretrendszert ír. Mik azok a legfontosabb elvek, ami alapján kialakítja ezt?

128 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

129 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Ön egy sakk játékprogramot fejleszt. Milyen architektúrát alakítana ki, hogy a program könnyen karbantartható és továbbfejleszthető legyen?

130 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Ön egy sakk játékprogramot fejleszt. Milyen architektúrát alakítana ki, hogy a program könnyen karbantartható és továbbfejleszthető legyen? Információtartalom vázlata Rendszerek működésének tervezése  Objektum-orientált rendszer kialakítása Programtervezési módszerek  Adatbázis-, illetve filekezelés használata Felhasználói felületek  Grafikus rendszerek (GDI, OpenGL, DirectX) használata  A sakkfigurák, mint objektumok

131 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Ön egy sakk játékprogramot fejleszt. Milyen architektúrát alakítana ki, hogy a program könnyen karbantartható és továbbfejleszthető legyen? Rendszerek működésének tervezése  Objektum-orientált rendszer kialakítása class Mezo { Private: TColor szin; TPos2d pozicio; Public: Bool Vanrajtababu; String Melyikbabu; Mezo( TColor szine ) {…} ~Mezo() {…} void Rajzol() {…} void StatuszBeallitas() {…} } class Figura { Private: Tpos ittvagyok; // konstruktorban // kezdő értékadás Public: Figura( Tpos ide) {…} ~Figura() {…} void Rajzol() {…} Bool Lepes( Tpos hova ) {…} }

132 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Ön egy sakk játékprogramot fejleszt. Milyen architektúrát alakítana ki, hogy a program könnyen karbantartható és továbbfejleszthető legyen? Felhasználói felületek  Grafikus rendszerek (GDI, OpenGL, DirectX) használata GDIOpenGLDirectX Képek Szövegek Menük WYSIWYG Ingyenes SDK Képek, szövegek Menük, 3d modellek Virtuális világok, Játékok Ingyenes SDK Képek, szövegek Menük, 3d modellek Játékok PC, XBOX 360

133 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

134 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy csevegő (chat) program fejlesztésénél milyen lehetőségeket ismer, ami a gépek közötti kommunikációt valósítja meg?

135 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy csevegő (chat) program fejlesztésénél milyen lehetőségeket ismer, ami a gépek közötti kommunikációt valósítja meg? Információtartalom vázlata Kommunikációs kapcsolatok (felületek) fejlesztése  Felhasználó felület kialakítása Eseménykezelés  Üzenetküldés lehetőségei Szoftverkomponensek  TCP/IP, http protokoll lehetőségei  Osztott objektumok használata

136 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy csevegő (chat) program fejlesztésénél milyen lehetőségeket ismer, ami a gépek közötti kommunikációt valósítja meg? Eseménykezelés  Üzenetküldés lehetőségei 1. emberke 2. emberke Internet TCP / IP HTTP

137 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy csevegő (chat) program fejlesztésénél milyen lehetőségeket ismer, ami a gépek közötti kommunikációt valósítja meg? Szoftverkomponensek  TCP/IP, HTTP protokoll lehetőségei  Osztott objektumok használata TCP/IP protokollhierarchia Protokollok AlkalmazásiFTPFTP, HTTP, IMAP, POP3, SMTP, SSH, Telnet, Bittorrent, …IMAPPOP3SMTPSSHTelnetBittorrent SzállításiTCPTCP, UDP, …UDP HálózatiIPv4IPv4, IPv6, …IPv6 AdatkapcsolatiEthernetEthernet, Wi-Fi, Token ring, …Wi-FiToken ring FizikaiRS-232RS-232, 10Base-TX, 100Base-TX, 1000Base-T, …10Base-TX100Base-TX1000Base-T

138 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

139 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy szoftverfejlesztő cég vezető-fejlesztőjeként milyen szempontok alapján osztaná szét a feladatokat az egyes fejlesztők között?

140 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Egy szoftverfejlesztő cég vezető-fejlesztőjeként milyen szempontok alapján osztaná szét a feladatokat az egyes fejlesztők között? Információtartalom vázlata Rendszerek (elemek, jellemzők)  Előző rendszerek szerkezete  Fejlesztők előző munkái Rendszerfunkciók tervezése  Jól szétválasztható modulok készítése Szoftver architektúra kialakítása  Felülettervezés, üzleti logika, adatbázis kapcsolatok

141 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

142 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen kódolási konvenciókat vezetne be egy csoportmunkában fejlesztő cégnél, hogy a lehető leghatékonyabb módon történjen a munkavégzés?

143 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen kódolási konvenciókat vezetne be egy csoportmunkában fejlesztő cégnél, hogy a lehető leghatékonyabb módon történjen a munkavégzés? Információtartalom vázlata Alapfogalmak (elágazás, ciklus stb.)  Ciklusok egységes használata Programozási tételek (alapalgoritmusok)  Algoritmusok kiválasztása Kódolás  Változók, osztályok stb. elnevezése

144 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel

145 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerrel tesztelné az Ön által fejlesztett modult, amely egy másik programozó által írandó modult használná, de az még nincs teljesen kész?

146 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerrel tesztelné az Ön által fejlesztett modult, amely egy másik programozó által írandó modult használná, de az még nincs teljesen kész? Információtartalom vázlata Tesztelési ismeretek (teszttípusok)  Fekete és fehér doboz módszerek Adatszerkezetek, objektumok  Virtuális működés kialakítása  Interfészek használata Tesztelés, hibakeresés  A modul összes funkciójának tesztelése

147 Programozás módszertan Programozás módszertan vizsgatételek Illés Attila Tétel Milyen módszerrel tesztelné az Ön által fejlesztett modult, amely egy másik programozó által írandó modult használná, de az még nincs teljesen kész? Adatszerkezetek, objektumok  Virtuális működés kialakítása  Interfészek használata Saját modul Másik modul interfésze Másik modul Álműködés kiváltása Virtuális működés


Letölteni ppt "Programozás módszertan Programozás módszertan vizsgatételek Illés Attila 2010. NEM TELJES VERZIÓ!!! HOZZÁOLVASÁS ÉS AZ ÓRAI JEGYZETELÉSEK SZÜKSÉGESEK!"

Hasonló előadás


Google Hirdetések