1.48k likes | 1.68k Views
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.
E N D
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 Programozás módszertan utasítás1 utasítás2 Programozás módszertan vizsgatételek Illés Attila 2010. utasítás3
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.
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
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
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
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
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
Programozás módszertan 1. Tétel Programozás módszertan vizsgatételek Illés Attila 2010.
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.
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.
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
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
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
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
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
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.
Programozás módszertan 2. Tétel Programozás módszertan vizsgatételek Illés Attila 2010.
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.
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.
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
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
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.
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
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)
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
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.
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
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.
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
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.
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
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
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
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
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.
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
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.
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
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
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
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
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
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
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
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
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
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
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
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