Struktúrált programtervezés Flashcards

1
Q

Mi a struktúrált programozás? Mi a célja?

A

A strukturált programozás egy programépítési alapelv. A cél az, hogy a teljes feladat olyan kis feladatelemekre legyen felosztva, amelyek egymással nincsenek átfedésben, egymáshoz meghatározott logika szerint kapcsolódnak, és mindegyik megoldható valamilyen elemi struktúra, elemi programséma követésével, esetleg egy programnyelv saját elemi eszközeivel.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

A feladat felosztásakor hány szerkezeti minta szerint kapcsolódhatnak?
Mik ezek?

A

Három. A szekvencia, a feltételes elágazás (szelekció) és a feltételes ciklus (iteráció vagy véges ismétlés).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Kinek a nevéhez kötik a struktúrált programozás elvét?

A

A holland Edsger Wybe Dijkstra

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

mi az egyik alapelve a struktúrális programtervezésnek?

A

A strukturált programozás alapelvei közé tartozik a vezérlési szerkezetek használata, illetve a hierarchikus programfelépítés.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

miből épülhet fel egy algoritmus?

A

Elágazásokból, ciklusokból és részlépések egymásutánjából (szekvenciákból).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

mi a struktúrált programozás lényege?

A
  • Felülről lefelé történő lépésenkénti problémamegoldás.
  • Minden szinten csak a közvetlenül odatartozó döntések folyamata.
  • Kevés, de jól meghatározott vezérlési és adatszerkezeti elemek használata.
  • Tiltott a feltételes vagy feltétel nélküli vezérlésátadás (GOTO).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Mi a szekvencia?

A

A szekvencia csak annyit jelent, hogy a részfeladatok, illetve azok megvalósítása valamely programnyelvben, melyek egymás után következnek, a jelzés szerint felülről lefelé hajtódnak végre.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Mi a szerepe a szekvenciának a str. pr.-ban?

A

A program elve vagy nyelvi megvalósítása a strukturálás során eljut odáig, hogy a szekvenciában (lépéssorozatban) tovább már nem bontandó elemi műveletek vagy elemi utasítások (statement) követik egymást.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Mi a feltételes elágazás?

A

egy megadott feltétel (condition) teljesülését vizsgálja meg, és eszerint folytatódik a program végrehajtása az “igen” (y) és “nem” (n) esetekre előírt műveletekkel.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Mi a feltételes ciklus?

A

olyan alapstruktúra, amelyben amíg egy megadott feltétel (condition) teljesül, addig és csak addig végrehajtja a feltételhez rendelt ciklusmag műveleteket, egymást után újra megismételve.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Mi Dijkstra véleménye a GOTO parancsról?

A

Röviden: Teljes mértékben ellenzi a használatát, mert átláthatatlanná és értelmezhetetlenné teszi a programot. A program szövege elszakad a program futásának folyamatától a változók elvesztik szemantikai értelmüket, hiszen a program helyétől függetlenül változhatnak meg.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Mit jelent a goto parancs?

A

A GOTO egy programnyelvi utasításszó, ebben vagy más azonos jelentésű formában számos programozási nyelvben létezik. A jelentése az, hogy a számítógép a program végrehajtása során a rendes esetben elejétől végéig követett utasítássorozatot egy másik, megadott helyen folytasson.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

mit valósít meg a GOTO parancs?

A

Feltétel nélküli vezérlésátadást

.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Mi volt Dijkstra levelének címe?

A

azt az irányelvet erősítette meg 1968-ban a “Go To Statement Considered Harmful” (A GOTO utasítás ártalmasnak tekintendő’) című levelével, hogy a GOTO parancs használata kerülendő, teljes mértékben ellenzi annak használatát.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

mi volt Dijkstra írásának lényege (eleje)?

A

Tegyük fel, hogy miután egy program működött egy darabig, valamilyen esemény következtében megáll. Ahhoz, hogy a programozó rekonstruálni tudja a folyamatot a kritikus pontig, nyomon kell követnie a program végrehajtásának előrehaladását.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

mi volt Dijkstra írásának lényege (közepe)?

A

Ha a program egyszerű, egymás után következő utasításokból áll, elegendő megjelölni azt az utasítást, ami utoljára hajtódott végre, tehát ezzel az egy indexszel leírható a folyamat menete és rámutathatunk a problémás helyre.

17
Q

mi volt Dijkstra írásának lényege (vége)?

A

Ha a programunk nem csak parancsok egymásutánja, hanem eljárásokat is tartalmaz, akkor a megoldás bonyolultabb. Hiszen abban az esetben, amikor a keresett pont egy eljárás törzsén belül van, akkor nem elég megjelölni a kérdéses utasítást, hanem azt is meg kell adnunk, hogy az adott eljárásnak melyik hívására hivatkozunk. Így ekkor a folyamat indexek sorozatával jellemezhető, és a sorozat hossza megegyezik a hívás mélységével. Minderre azért van szükség, mert csak úgy tudjuk a változók aktuális értékét meghatározni a végrehajtás egy adott pontján, ha a korábban végrehajtott lépésekkel tisztában vagyunk. Például, ha meg szeretnénk tudni n nagyságát, ami az emberek számát jelenti egy eredetileg üres szobában, akkor ezt úgy kell megtennünk, hogy mindig, amikor valaki belép az ajtón, n értékét megnöveljük 1 -gyel.

18
Q

Sorolj fel még néhány érvet a Goto használata ellen?

A

További érvek a GOTO használata ellen:
• A program kuszasága (az úgynevezett „spagetti kód’) a megérthetőségét nagyban gátolja.
• Korlátlan alkalmazása a modern nyelvekben nemcsak megnehezíti, de lehetetlenné is teszi a fordítóprogram munkáját, mivel nincs értelme az egymástól független blokkok közötti ugrálásnak.
• A feltétel nélküli vezérlésátadás használata a legtöbb programozási nyelvben nem javasolt, a Java nyelvben például Ilyen utasítás egyáltalán nincs.

19
Q

Sorolj fel néhány érvet a GOTO használata mellett.

A

Érvek a goto használata mellett:
• A goto is része a programozási nyelvek eszközkészletének.
• Hibakezelésnél, például VBA script-ben lehet használni. Hiba kezelését a script egy külön része kezeli, amivel a goto paranccsal lehet ugrani egy címke segítségével.

20
Q

A modern programnyelvekben vagy nincs goto vagy mik vannak?

A

A modern programnyelvekben vagy nincs goto vagy vannak olyan eszközök, amikkel a goto-t teljesen ki lehet váltani. Ha a hibakezelésre gondolunk, akkor a Java-ban is többek között használatos try-catch blokkot lehet alkalmazni a hibakezelő logika implementálására. Emiatt a goto használata teljesen indokolatlan.