Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Prozedur in Schleife oder Schleife in Prozedur (https://www.delphipraxis.net/65379-prozedur-schleife-oder-schleife-prozedur.html)

faux 15. Mär 2006 22:36


Prozedur in Schleife oder Schleife in Prozedur
 
Hallo!
Ich bin gerade dabei, eine eigene Programmiersprache á la Brainfuck zu schreiben. So weit so gut. Es funktioniert eigentlich alles wie gewollt, nur hätte ich da eine Frage:
Wie ist das mit Schleifen? Ich habe jetzt die Klasse TParse beim Ausführen einer Schleife Rekursiv angelegt. Also so:
Delphi-Quellcode:
LoopParser := TParse.Create(MiniPoint);
for i := 1 to FLoops[FLastLoop-1].Loops do
  Output := Output + LoopParser.Parse(FLoops[FLastLoop-1].Commands);
LoopParser.Free;
Danke mal, dass es da beim lesen gleich jemanden vom Stuhl schmeißt.. ;)
"Man kann doch nicht eine Prozedur in einer Schleife Aufrufen..."
Macht das Performancemäßig gesehen einen Unterschied, ob die Prozedurch x mal aufgerufen wird, oder in der Prozedur eine Schleife läuft, die den ganzen Code x mal wiederholt?

Grüße
Faux

holgerson 16. Mär 2006 21:09

Re: Prozedur in Schleife oder Schleife in Prozedur
 
Hallo faux,

ich nehme an, Dein Quelltext entspricht einem Teil der Methode Parse der Klasse TParse.
Mir hat man zu rekursiven Funktionen folgendes gelernt.

1. rekursive Funktionen köennen viel Speicher verbrauchen
D. h. jede lokal deklarierte Variable, die auf dem Stack abgelegt ist, belegt bis zum Beenden der Funktion Platz im Speicher.
2. rekursive Funktionen sind kürzer und lesbarer als nichtrekursive Entsprechungen.
3. Man kann jede rekursive Funktion nichtrekursiv auflösen.

Fazit:

Wenn die Rekursionstiefe ausreichend klein ist, kann man mit rekursiven Funktionen arbeiten.

Weil ich "ausreichend" nicht definieren kann, vermeide ich Rekusionen grundsätzlich. Für Deinen Fall habe ich zu wenig Einblick in das Problem, um eine eindeutige Antwort zu geben.

faux 16. Mär 2006 21:46

Re: Prozedur in Schleife oder Schleife in Prozedur
 
Zitat:

Zitat von holgerson
ich nehme an, Dein Quelltext entspricht einem Teil der Methode Parse der Klasse TParse.

Indirekt. Es gibt eine Prozedur Parse, welche die einzelnen Befehle an die Funktion ParseStep übergibt. Die Funktion ParseStep speichert alles, was zwischen einem begin und einem end steht in einen String und lässt diesen String wieder rekursiv Parsen (da er ra wieder aus mehreren Befehlen besteht mit Parse).

Danke für Antwort!

Grüße
Faux

s.h.a.r.k 16. Mär 2006 23:42

Re: Prozedur in Schleife oder Schleife in Prozedur
 
Hey.

Also so weit ich weiß ist es nicht sehr sinnvoll eine Procedure in einer Schleife einzubauen, da der Aufruf einer Procedure länger dauert.

Hier die Quelle: URL - Tipp 2. Musst aber mal alle anderen Tipps anschauen. Ist recht interessant!

mfg shark


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz