1 / 147

Programozás módszertan

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!. Alapfogalmak. Szekvencia megvalósítása folyamatábrával.

briana
Download Presentation

Programozás módszertan

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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!

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

  3. Alapfogalmak Elágazás megvalósítása folyamatábrával Programozás módszertan feltétel h i Programozás módszertan vizsgatételek Illés Attila 2010. Utasítás(ok) igaz esetén Utasítás(ok) hamis esetén 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.

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

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

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

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

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

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

  10. 1. Tétel Programozás módszertan Ö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? Programozás módszertan vizsgatételek Illés Attila 2010.

  11. 1. 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? Programozás módszertan Információtartalom vázlata: • A rendszerelemek tartalmi tervezése  Feladat elemekre bontása • Eszközkörnyezet meghatározása  A környezet adta lehetőségek feltárása • Állománykezelés  Állományok másolása • Eseménykezelés  A másolás folyamatának szemléltetése • Felhasználói felületek  Folyamatjelző használata Programozás módszertan vizsgatételek Illés Attila 2010.

  12. 1. 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 Programozás módszertan Feladat elemekre bontása Forrásmappa megadása Ellenőrzések Méret meghatározás Programozás módszertan vizsgatételek Illés Attila 2010. Célmappa megadása Ellenőrzések Másolás folyamata Folyamat állapotának jelzése Ellenőrzések Másolás folyamatának befejezése

  13. 1. 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 Programozás módszertan A környezet adta lehetőségek feltárása Operációs rendszer Fejlesztőrendszer kiterjedtsége Programozás módszertan vizsgatételek Illés Attila 2010. Fájlrendszer Alacsony / magas szintű nyelv Modulok, komponensektámogatása Párhuzamosság támogatása Assembly, C/C++, Pascal, C# Párhuzamosság támogatása

  14. 1. 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 Programozás módszertan Állományok másolása Alacsonyszintű nyelv (Assembly) Magas szintű nyelv (C/C++, C#, Delphi, Java) Programozás módszertan vizsgatételek Illés Attila 2010. Bináris adatátvitel UI – User Interface (Felhasználói felület) Fájlszintű átvitel Előre definiált eljárások GUI – Graphical UI (Grafikus felhasználói f.) Előre definiált eljárások

  15. 1. 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 START Programozás módszertan Forrásmappamegadása A másolás folyamatának szemléltetése Ellenőrzések igaz hamis Méret és darabszám meghatározása Kiíratás „jelentések” Programozás módszertan vizsgatételek Illés Attila 2010. Célmappamegadása hamis Ellenőrzések igaz Fájlok másolása STOP

  16. 1. 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 igaz Programozás módszertan Fájlok másolása Folyamatjelző használata STOP Grafikus felhasználói felület DB > maxDB i Programozás módszertan vizsgatételek Illés Attila 2010. 69% h Fájlok[DB] másolása Folyamatjelző vezérlése DB += 1

  17. 1. 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? Programozás módszertan Hogyan tervezné meg a felhasználó felületet, és ezt milyen módon választaná szét a programlogikától? Programlogika Felhasználói felület Function masol( forras:String, cel:String, jelzo:Object) { CopyFiles(forras, cel, jelzo.ertek); } Program kezdete masol ( forrasmappa.fname, celmappa.fname, csik ); Program vége Programozás módszertan vizsgatételek Illés Attila 2010.

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

  19. 2. Tétel Programozás módszertan 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ás módszertan vizsgatételek Illés Attila 2010.

  20. 2. 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ás módszertan Információtartalom vázlata: • Programozási tételek (alapalgoritmusok)  Keresés, logaritmikus keresés • Adatszerkezetek, objektumok  Tömbök, listák bejárása • Programtervezési módszerek  Keresések optimalizálása • Tesztelés, hibakeresés  Túlcsordulások kezelése Programozás módszertan vizsgatételek Illés Attila 2010.

  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 • Sorozatszámítás tétel • 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 • 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.

  24. Programozási tételek Adatsorozathoz egy értéket rendelő tételek • Sorozatszámítás tétel • Á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 • Eldöntés tétel • 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 • 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 • Eldöntés tétel • Á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 • Kiválasztás tétel • Bemenő adat: egy N elemű adatsorozat (A tömb) • Kimenő adat: Egy adott T tulajdonságú elem sorszáma • 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.

  28. Kitekintés: Programozási tételek Adatsorozathoz egy értéket rendelő tételek • Kiválasztás tétel • Á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 • (Lineáris) keresés tétel • 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 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 • (Lineáris) keresés tétel • Á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 • Megszámolás tétel • Bemenő adat: egy N elemű adatsorozat (A tömb) • 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.

  32. Programozási tételek Adatsorozathoz egy értéket rendelő tételek • Megszámolás tétel • Á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 • Maximum(minimum)kiválasztás tétel • 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 • 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 • Maximum(minimum)kiválasztás tétel • Á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 • Maximum(minimum)kiválasztás tétel • Á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 • Kiválogatás tétel • Bemenő adat: egy N elemű adatsorozat (A tömb) • 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 • 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 • Kiválogatás tétel • Á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 • Szétválogatás tétel • 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 • 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.

  39. Programozási tételek Adatsorozathoz adatsorozatot rendelő tételek • Szétválogatás tétel • Általános algoritmusa Eljárás Kiválogatás j:=0 k:=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 k:=k+1 C(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 • Metszet • 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 • 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ó • 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 • Unió • 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 • 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. • 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) • 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 • 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:=A A:=B B:=Seged Eljárás vége

  43. Programozási tételek Rendezések • 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. • 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: • Helyfoglalás: N+1 elem • Ö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

  44. Programozási tételek Rendezések • Egyszerű cserés rendezés • Á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 Ciklus vége Eljárás vége

  45. Programozási tételek Rendezések • Minimumkiválasztásos rendezés • 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 • 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 • Ö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

  46. Programozási tételek Rendezések • Minimumkiválasztásos rendezés • Á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) Ciklus vége Eljárás vége

  47. Programozási tételek Rendezések • Buborékrendezés • Ú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) • 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 • Ö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

  48. Programozási tételek Rendezések • Buborékrendezés • Á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 Ciklus vége Eljárás vége

  49. Programozási tételek Rendezések • 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 • 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 • Ö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

  50. Programozási tételek Rendezések • Beillesztéses rendezés • Á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 Ciklus vége Eljárás vége

More Related