Kezdőoldal » Számítástechnika » Programozás » Ez milyen előnyökkel járna?

Ez milyen előnyökkel járna?

Figyelt kérdés

Összehoztam egy aprócska, BASIC-szerű, minimalista programozási nyelvet, amiben nagyon kevés a kulcsszó, ráadásul, még ciklusok sincsenek támogatva. Azokat úgy kell összerakni, mint assemblyben. Ehhez mondjuk van a nyelvben cimke támogatás.

A cimkékkel lehet a nyelvben szubrutinokat is létrehozni, úgy, hogy ha a cimke utáni sorokban RETURN van, akkor a vezérlés visszakerül a hívás előtti pontra. Ha meg nincs RETURN, akkor megy a végrehajtás tovább.

A RETURN alapban egy önálló utasítás, ami egymagában fordul elő.

Arra gondoltam, hogy ezt a RETURN utasítást úgy is lehetne használni, hogy feltételtől függene a végrehajtása, valahogy így:


IF A = B THEN PRINT A


Ugyanez a RETURN esetében így nézne ki:


IF A = B THEN RETURN


Arra lennék kiváncsi, hogy hasznos lenne ez az apró bővítés, vagy inkább káros, mert csak fölöslegesen bonyolítaná el a nyelvet?

Ki mit gondol erről?


aug. 23. 13:04
 1/6 anonim ***** válasza:

IF A = B THEN RETURN


Ez visszatérési érték nélküli? Mint egy void-os függvény esetén a return? Ez megszokott más nyelvekben is, hogy ha ez van, akkor fejezze be.


pl.:

if (varBool) {

... return;

}


Nem értem, hogy miért okozna ez fennakadást az érdemezésben.

aug. 23. 17:56
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

Ha jól értem ez egy nem strukturált nyelv mint pl. a BASIC, vagy ha ciklus sincs (ami azért elég merész, mert a legtöbb CPU assembly-ben támogatott a ciklus készítés ilyen-olyan módon), akkor ez inkább egy assembly jellegű nyelv.


Ezekben a nyelvekben nem tiltja semmi az IF ... THEN RETURN jellegű szerkezeteket. Bár nem mindig célszerű, föleg ha stacket használ adatok pakolására. Bár nem tudom nálad van-e stack kezelés.


Önmagábn egy IF ... THEN RETURN jellegű szerkezet "nem jvasolt" mert irtózatosan áttekinthetetlen lesz a program, hogy éppen most hol merre "kavarog" a vezérlés. Nagyon sok hibalehetőséggel bír.

aug. 23. 18:17
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

Érdemes tudni, hogy ez a nyelv nagyon minimalista. Ez abban is érvényre jut, hogy nincs külön szubrutin és nincs stack sem.

Cimkék vannak és szubrutint úgy lehet létrehozni, hogy a cimke alatti utasítások sorainak végére a programozó odatesz egy return-t. Ha ez a return hiányzik, akkor a cimke után folytatódik a végrehajtás. Valahogy így:


cimke_A:

utasitas1

utasitas2

return


cimke_B:

utasitas1

utasitas2

utasitas3

utasitas4

utasitas5

utasitas6


cimke_C:

utasitas1

utasitas2

utasitas3


jmp cimke_A

utasitas1

utasitas2

jmp cimke_C


Látható, hogy a cimke_A alatti rész egy szubrutin, a cimke_B és cimke_C viszont nem az. Utóbbi kettőnél nem térül vissza a végrehajtás csak a cimke_A esetén, hiszen csak az alatt van return.

aug. 23. 20:17
 4/6 A kérdező kommentje:
A visszatérést nem stack, hanem egy változó biztosítja. Ez tárolja el minden jump esetében a jump után soron következő utasítás címét. Ez az érték egy újabb jump esetében felülíródik, mindig csak a legutóbbit megtartva. Tehát, egy szubrutinból mindig vissza kell térni a főprogramba, ha nem akar az ember gondot. Egy szubrutinból egy másikba ugrás következménye szintén az, hogy nem lesz visszatérés.
aug. 23. 20:26
 5/6 anonim ***** válasza:
Azért ez utóbbi nem feltétlen jó ötlet. Még akkor is ha nem akarsz stacket használni a visszatéréses ugrásra vannak egészen jó megoldások.
aug. 23. 21:23
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:

>> a visszatéréses ugrásra vannak egészen jó megoldások.


Tudnál ilyeneket mondani?

aug. 25. 11:17

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!