Programozás módszertan

Download Report

Transcript Programozás módszertan

Programozás módszertan
NEM TELJES VERZIÓ!!!
HOZZÁOLVASÁS ÉS AZ ÓRAI JEGYZETELÉSEK
SZÜKSÉGESEK!
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
Alapfogalmak
Szekvencia megvalósítása folyamatábrával
utasítás1
utasítás2
utasítás3
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
Alapfogalmak
Elágazás megvalósítása folyamatábrával
i
Utasítás(ok)
igaz esetén
feltétel
h
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.
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
Alapfogalmak
Elöl tesztelő ciklus megvalósítása folyamatábrával
ciklusfeltétel
h
i
Ciklusmag
utasításai
Programozás módszertan vizsgatételek
A ciklusmag nem
biztos, hogy
végrehajtódik!
Illés Attila 2010.
Programozás módszertan
Alapfogalmak
Hátul tesztelő ciklus megvalósítása folyamatábrával
Ciklusmag
utasításai
h
A ciklusmag egyszer
biztos, hogy
végrehajtódik!
ciklusfeltétel
i
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
Alapfogalmak
Számláló ciklus megvalósítása folyamatábrával
Változó:=tól..ig
h
i
Ciklusmag
utasításai
Programozás módszertan vizsgatételek
A ciklusmag
nem biztos,
hogy
végrehajtódik!
Illés Attila 2010.
Programozás módszertan
Alapfogalmak
Egyéb elemek a folyamábrás ábrázoláshoz
Bevitel / kivitel
Start
Programozás módszertan vizsgatételek
Stop
Illés Attila 2010.
Programozás módszertan
Alapfogalmak
Struktogram
elágazás
Feltétel megadása
szekvencia
igaz
hamis
utasítás 1
utasítás 1
utasítás 1
utasítás 2
utasítás 2
utasítás 2
Programozás módszertan vizsgatételek
ciklus
ciklus feltétel
ciklusmag
Illés Attila 2010.
Programozás módszertan
1. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
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 vizsgatételek
Illés Attila 2010.
Programozás módszertan
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?
Információtartalom vázlata:
1.
2.
3.
4.
5.
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.
Programozás módszertan
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
Feladat elemekre bontása
Forrásmappa megadása
Ellenőrzések
Méret meghatározás
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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
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
A környezet adta lehetőségek feltárása
Fejlesztőrendszer
kiterjedtsége
Operációs rendszer
Fájlrendszer
Alacsony / magas
szintű nyelv
Modulok, komponensek
támogatása
Párhuzamosság
támogatása
Assembly,
C/C++, Pascal, C#
Párhuzamosság
támogatása
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
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
Állományok másolása
Alacsonyszintű nyelv
(Assembly)
Magas szintű nyelv
(C/C++, C#, Delphi, Java)
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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
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
A másolás folyamatának szemléltetése
Forrásmappa megadása
igaz
Ellenőrzések
Méret és darabszám
meghatározása
hamis
Kiíratás
„jelentések”
Célmappa megadása
hamis
Ellenőrzések
igaz
Programozás módszertan vizsgatételek
Fájlok másolása
STOP
Illés Attila 2010.
Programozás módszertan
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
Fájlok másolása
Folyamatjelző használata
STOP
Grafikus felhasználói felület
69%
DB > maxDB
i
h
Fájlok[DB]
másolása
Folyamatjelző
vezérlése
DB += 1
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
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?
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.
Programozás módszertan
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 vizsgatételek
Illés Attila 2010.
Programozás módszertan
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?
Információtartalom vázlata:
1.
2.
3.
4.
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
1.




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
1.

Á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
2.



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
2.

Á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
3.




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
3.

Á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
4.
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
4.

Á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
5.



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
5.

Á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
6.



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
6.

Á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
Ciklus vége
Eljárás vége
MAXIMUM:=A(i)
INDEX:=i
Programozási tételek
Adatsorozathoz egy értéket rendelő tételek
Maximum(minimum)kiválasztás tétel
6.

Á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
1.




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
1.

Á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
Ciklus vége
Eljárás vége
j:=j+1
B(j):=A(i)
Programozási tételek
Adatsorozathoz adatsorozatot rendelő tételek
Szétválogatás tétel
2.




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
2.

Á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
3.





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ó
4.





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
1.






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
1.

Á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
2.






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
2.

Á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
3.






Ú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
3.

Á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
4.





Ú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
4.

Á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
Programozási tételek
Keresések



Ebben a részben speciális keresési feladatokkal
foglalkozunk
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
Programozási tételek
Keresések
Keresés rendezett sorozatban
1.






Bináris, vagy logaritmikus keresésnek is nevezik
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
Bemenő adat: egy N elemű RENDEZETT adatsorozat (A
tömb)
(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, volte Y értékkel megegyező elem (VAN)
Programozási tételek
Keresések
Keresés rendezett sorozatban
1.

Későbbi dián…
Programozási tételek
Keresések
Visszalépéses keresés (back-track)
2.





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
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)
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)
Programozási tételek
Keresések
Visszalépéses keresés (back-track)
2.
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)
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!
Programozási tételek
Keresések
Visszalépéses keresés (back-track)
2.
Általános algoritmusa:


A használt változók:

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]

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
Programozási tételek
Keresések
Visszalépéses keresés (back-track)
2.
Általános algoritmusa:


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

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)
Programozási tételek
Keresések
Visszalépéses keresés (back-track)
Általános algoritmusa:
2.
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<=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}
egyébként X(I):=0
i:=i-1 {visszalépünk}
Elágazás vége
Eljárás vége
Programozási tételek
Keresések
Visszalépéses keresés (back-track)
Általános algoritmusa:
2.
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<i és F(i, melyik,j,X(j))
j:=j+1
Ciklus vége
RosszEset:=(j<i)
Függvény vége
Programozás módszertan
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á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 E := K+1
Elágazás vége
Amíg E <= U és A( K ) <> Y
Ciklus vége
VAN := ( E <= U )
Ha VAN akkor SORSZAM := K
Eljárás vége
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
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á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:=1
K:=[E+U] / 2
Programozás módszertan vizsgatételek
U:=N
Illés Attila 2010.
Programozás módszertan
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?
Adatszerkezetek, objektumok
Tömbök, listák bejárása
Tömbö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
I := Tömb[ index ]
Első elem
Tömb[ index ] := I
Utolsó elem
for (i:=1 ; i <= tömb.hossz ; i++)
{
K := tömb[ i ] ;
Kiír_képernyőre( K ) ;
}
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
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?
Adatszerkezetek, objektumok  Tömbök, listák bejárása
Tömbök bejárása – 2 dimenziós tömb
sorszám
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44
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
oszlopszám
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 ) ;
}
}
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
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?
Adatszerkezetek, objektumok  Tömbök, listák bejárása
Listák bejárása
Egyszeresen láncolt lista
Első elemre mutató változó
elem
elem
elem
Programozás módszertan vizsgatételek
NULL
Illés Attila 2010.
Programozás módszertan
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?
Adatszerkezetek, objektumok  Tömbök, listák bejárása
Listák bejárása
Kétszeresen láncolt lista
Első elemre mutató változó
elem
NULL
Programozás módszertan vizsgatételek
elem
elem
NULL
Illés Attila 2010.
Programozás módszertan
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?
Programtervezési módszerek  Keresések optimalizálása
1.
2.
3.
4.
5.
Értékkeresésnél  rendezés
Mintakeresésnél  Ábécé sorrend
Indexelés
Kategorizálás
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
Pi2 := 2*π;
eredmeny := (Pi2 * r3) / 3;
Programozás módszertan vizsgatételek
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 * π * r3 ) / 3;
tmb[r] := eredmeny;
r := r + 1;
Ciklus vége
Illés Attila 2010.
Programozás módszertan
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?
Tesztelés, hibakeresés  Túlcsordulások kezelése
tmb [ 1..25 ] amely egész típust kezel (-32768…32767 [2 bájton] )
•
•
tmb[ 0 ] és tmb[ 26 ] hibát okoz
tmb[ index ] := 34000 hibát okoz
 indexelési túlcsordulás
 Á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!!!
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
3. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
3. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
3. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
4. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
4. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
4. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
4. 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
Statikus tesztelés
Kódellenőrzés
Formai ellenőrzés
Fekete doboz módszer
Fehér doboz módszer
Ekvivalencia osztályok
Szerkezet szerinti
tesztelés
Tartalmi ellenőrzés
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
4. 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 - komponens
C - komponens
Programozás módszertan vizsgatételek
B - komponens
D - komponens
Illés Attila 2010.
Programozás módszertan
4. 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ódszer
Dedukciós módszer
Visszalépéses módszer
Ekvivalencia osztályok
Lehetséges hiba okok
feltárása
Addig megyünk,
amíg van hiba
Kimenő adatokból
következtetünk
Hiba helyének szűkítése
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
4. 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
Breakpoint
Step over
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
5. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
5. Tétel
Egy rendszer tervezésénél milyen módszerekkel tenné hatékonyabbá a
benne lévő ciklusok futását?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
5. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
5. 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);
Milyen hibákat figyelhetünk meg?
i += 1;
}while ( ertek = = 0 );
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
5. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
5. Tétel
• Quick sort
Programozás módszertan vizsgatételek
Programozás módszertan
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--;
}
}
Pivot= 6 Pivot= 6 Pivot= 6 Pivot= 6 Pivot= 2 Pivot= 1 Pivot= 5 Pivot= 4 Pivot= 10 Pivot= 6 Pivot= 7 Pivot= 8 -
/* recursion */
if (left < j) quickSort(arr, left, j);
if (i < right) quickSort(arr, i, right);
} // itt a vége a QuickSort-nak
i= 0 - j= 9
i= 2 - j= 8
i= 3 - j= 7
i= 4 - j= 6
i= 1 - j= 2
i= 0 - j= 0
i= 3 - j= 4
i= 2 - j= 3
i= 7 - j= 9
i= 5 - j= 6
i= 6 - j= 7
i= 7 - j= 7
7 4
1 4
1 4
1 4
1 4
1 2
1 2
1 2
1 2
1 2
1 2
1 2
1 2
9
9
2
2
2
4
4
4
3
3
3
3
3
10
10
10
5
5
5
5
3
4
4
4
4
4
6 8 3 5
6 8 3 5
6 8 3 5
6 8 3 10
3 8 6 10
3 8
3 8
5 8
5 8
5 8
5 6
5 6
5 6
Programozás módszertan vizsgatételekVégeredmény = 1 2 3 4 5 6 7 8 9 10
6
6
6
6
6
8
2
2
9
9
9
9
9
9
9
1
7
7
7
7
7
7
7
7
10
10
10
10
7 9 10
7 9 10
7 8 9 10
7 8 9 10
Programozás módszertan
5. 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 <stdio.h>
#include <stdio.h>
void main()
{
int elso;
elso = 15;
}
Programozás módszertan vizsgatételek
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?
Illés Attila 2010.
Programozás módszertan
6. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
6. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
6. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
7. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
7. Tétel
Egy adatbázist használó program tervezésekor hogyan valósítaná meg az
egyes programrétegek kommunikációját?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
7. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
7. 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
Komponensek használata
Üzleti logika
Komponensek használata
Adatbázis réteg
Komponensek használata
Programozás módszertan vizsgatételek
Keretrendszer
Illés Attila 2010.
Programozás módszertan
7. 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
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.
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
7. 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
Windows:
GTK+, Delphi, C++ Builder, Java Builder
Visual Studio (C/C++, C#, Java, Basic,…)
UI – User Interface
BL – Business Logic
DA – Data access
DB - Database
Program
nyelv
ADO / DAO
ODBC / BDE
Direct Access
Linux:
Anjuta, GTK+, Mono (C#), Kdevelop,
NetBeans (Java)
PostgresDAC – PostgreSQL
MySQL, PostgreSQL, MS SQL, Oracle, Firebird, …
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
8. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
8. Tétel
Egy már kész rendszerhez telepítő programot készít. Mik egy ilyen
program feladatai és hogyan oldaná ezt meg?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
8. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
8. 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
MakeCAB.exe és Extract.exe
Windows .CAB fájl
DEFLATE, Quantum, LZX
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
8. 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
Célkönyvtárak vizsgálata
Tárhely, jogosultság
Biztonsági házirend
Program Files\
Documents and Settings\homedir
Egyéb korlátozások
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
8. 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
•
•
•
•
•
•
•
Regedit.exe
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS (HKU)
HKEY_CURRENT_CONFIG
HKEY_PERFORMANCE_DATA
HKEY_DYN_DATA
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
8. 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 <stdio.h>
int main ()
{
FILE * pFile;
pFile = fopen ("myfile.txt","w");
if ( pFile != NULL )
{
fputs ("example", pFile);
fclose ( pFile );
} return 0;
}
Programozás módszertan vizsgatételek
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
Illés Attila 2010.
Programozás módszertan
8. 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
Install
Uninstall
Könyvtár és menü készítése
Könyvtár és fájl törlés
Jogosultságok  másolás
Menü és ikon törlése
Registry bejegyzések
Registry bejegyzések
törlése
Vizsgálatok
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
9. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
9. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
9. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
9. 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 dokumentum
Felhasználói dokumentum
Feladatspecifikáció
Operátori leírás
Felhasználói leírás
Input / Output adatok
Telepítési követelmény
Indítás
Adatok (típus) leírása
Telepítés paraméterezése
Használat
Programlista
Konfigurálás
Tesztelés adatai
Biztonsági mentések
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
9. 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?
Diagram
Viselkedési diagram
Struktúrális diagram
Osztály
diagram
Komponens
diagram
Összetett struktúra
diagram
Telepítési
diagram
Objektum
diagram
Csomag
diagram
Aktivitás
diagram
Use Case
diagram
Interakciós
diagram
Szekvencia
diagram
Kommunikációs
diagram
Programozás módszertan vizsgatételek
Állapotgép
diagram
Interakciós
áttekintő
Idő
diagram
Illés Attila 2010.
Programozás módszertan
10. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
10. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
10. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
11. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
11. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
11. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
12. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
12. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
12. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
13. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
13. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
13. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
14. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
14. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
14. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
14. 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
{…}
Polimorfizmus:
int cube( int inumber );
long cube( long lnumber );
double cube( double dnumber );
~Osztálynév() // destruktor
{…}
int maxDB;
int szamol (int a, int b)
{…}
Protected:
};
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
15. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
15. Tétel
Ön egy program fejlesztésének részeként keretrendszert ír. Mik azok a
legfontosabb elvek, ami alapján kialakítja ezt?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
15. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
15. Tétel
Ön egy program fejlesztésének részeként keretrendszert ír.
Mik azok a legfontosabb elvek, ami alapján kialakítja ezt?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
16. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
16. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
16. 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
•
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
16. 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;
class Figura
{
Private:
Tpos ittvagyok; // konstruktorban
// kezdő értékadás
Public:
Figura( Tpos ide) {…}
~Figura() {…}
Mezo( TColor szine ) {…}
~Mezo() {…}
void Rajzol() {…}
Bool Lepes( Tpos hova ) {…}
}
void Rajzol() {…}
void StatuszBeallitas() {…}
}
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
16. 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
GDI
OpenGL
DirectX
Képek
Ingyenes SDK
Ingyenes SDK
Szövegek
Képek, szövegek
Képek, szövegek
Menük
Menük, 3d modellek
Menük, 3d modellek
WYSIWYG
Virtuális világok, Játékok
Játékok PC, XBOX 360
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
17. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
17. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
17. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
17. 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
Internet
TCP / IP
HTTP
2. emberke
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
17. 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ási
FTP, HTTP, IMAP, POP3, SMTP, SSH, Telnet, Bittorrent, …
Szállítási
TCP, UDP, …
Hálózati
IPv4, IPv6, …
Adatkapcsolati
Ethernet, Wi-Fi, Token ring, …
Fizikai
RS-232, 10Base-TX, 100Base-TX, 1000Base-T, …
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
18. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
18. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
18. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
19. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
19. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
19. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
20. Tétel
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
20. 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?
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
20. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.
Programozás módszertan
20. 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
Programozás módszertan vizsgatételek
Illés Attila 2010.