Seite 1 von 1
		
			
				Turbo-Pascal Befehl zum zurückspringen im Prog?
				
Verfasst: 
Sa 18. Sep 2004, 23:43von Daddy-Dennis
				Gibts nen verd00mten befehl um , falls ne bedingung erfüllt ist, das prog zum programmanfang zurückkehren soll?
			 
			
		
			
				
				
Verfasst: 
Sa 18. Sep 2004, 23:55von blobbfish
				Klar, da legst du ein Label an und springst via Goto-Anweisung dorthin. Ist aber recht unedel. Eine durchdachte Prozedur gibt da schon mehr her. Im Regelfall kombiniert man das mit einer Schleife oder macht es je nach Problem rekursiv
			 
			
		
			
				
				
Verfasst: 
So 19. Sep 2004, 11:35von Daddy-Dennis
				aaaa...ha.
*nixpeil* 
 
   
 
rekursivvv...muss ich nachschlagen....
und goto positioniert nur den cursor, und springt nicht im Programm selbst.
 
			
		
			
				
				
Verfasst: 
So 19. Sep 2004, 12:35von blobbfish
				Rekursiv wirst du in einem befehlsbuch nicht finden, da es eine Programmiertechnik ist, Man sollte sie mit bedacht benutzten, da sie dir sehr schnell den Speicher wegnimmt. Selbst ein Gigbyte RAM ist da sehr wenig 
 
Soweit mich mich erinnere hieß es GoTo, habe das allerdings nie benutzt, aus obigen Gründen. Guck in der Hilfe deiner entwicklungsumgebung mal unter "label" ansonsten, wozu brauchst du das? Ein mit Labels durchsetzter Text ist tödlich zu lesen/debuggen. geschicktes Schleifen- und Prozedurenspringen ist zum einen logischer und zum andren transparenter.
 
			
		
			
				
				
Verfasst: 
So 19. Sep 2004, 16:36von Daddy-Dennis
				in nem befehlsbuch wollt ich ja auch net guggn! so blöd bin ich auch nicht.
Nur ne kleine Erklärung nachschlagen.Mit Beispielen.
			 
			
		
			
				
				
Verfasst: 
Sa 2. Okt 2004, 12:21von nazgul
				@fish: QuickSort ist ein rekursiver Algorithmus... und er läuft auch bei großen Datenmengen auf rechnern mit nur wenig ram... quicksort ist eg der Standart-LIBC sorter...
<funzt>
label foobar
foocode(foovar);
if foovar = 0 then begin
 goto foobar
end
</funzt>
<elegant>
 do
     foocode(foovar)
 while not foovar=0
</elegant>
			 
			
		
			
				
				
Verfasst: 
Sa 2. Okt 2004, 12:29von blobbfish
				Was nichts daran ändert, dass die Datenmenge im Gegensatz zu einer iterativen Lösung deutlich größer ist. Wobei ich sagen muss, dass dein Beipsiel nicht wirklich rekursiv ist, denn label und goto haben mehr Ähnlichkeit mit Schleiifen als mit einem vollständigen Selbstaufruf.
			 
			
		
			
				
				
Verfasst: 
Sa 2. Okt 2004, 16:21von nazgul
				<rekursiv>
procedure fooproc
begin
foocode(foovar);
if foovar = 0 then fooproc
end;
</rekursiv>
die sinnigkeit davon steht halt etwas zur frage..... 
bei großen schleifen sollte das sich nicht allzuviel tun...
das müsste man mal Benchmarken.
			 
			
		
			
				
				
Verfasst: 
Sa 2. Okt 2004, 16:38von Daddy-Dennis
				mAN KANNs auch übertreiben...
			 
			
		
			
				
				
Verfasst: 
Mi 27. Okt 2004, 23:39von nazgul
				asm
 jmp 0100h
end;
sollte es glaubich auch tun.... hab leider kein dos oder kompat um das zu testetn... viel mir nur grad so ein... ansonsten 0100h durch die anfangsaddresse des programms ersetzen...