Turbo-Pascal-Befehl zum Zurückspringen im Programm?

Alle Arten von Programmen und Anwendungen: Egal ob Betriebssysteme, Systemtools, Grafikbearbeitung, Musikeditoren oder Textverarbeitung. Hier wird über alles gesprochen.
Daddy-Dennis
Very Good Newbie
Very Good Newbie

 
Beiträge: 40
Registriert: 16.09.2004
Sa 18. Sep 2004, 23:43 - Beitrag #1

Turbo-Pascal Befehl zum zurückspringen im Prog?

Gibts nen verd00mten befehl um , falls ne bedingung erfüllt ist, das prog zum programmanfang zurückkehren soll?

blobbfish
Listenkandidat
Lebende Legende

Benutzeravatar
 
Beiträge: 3022
Registriert: 26.01.2003
Sa 18. Sep 2004, 23:55 - Beitrag #2

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

Daddy-Dennis
Very Good Newbie
Very Good Newbie

 
Beiträge: 40
Registriert: 16.09.2004
So 19. Sep 2004, 11:35 - Beitrag #3

aaaa...ha.

*nixpeil* :confused: :(


rekursivvv...muss ich nachschlagen....

und goto positioniert nur den cursor, und springt nicht im Programm selbst.

blobbfish
Listenkandidat
Lebende Legende

Benutzeravatar
 
Beiträge: 3022
Registriert: 26.01.2003
So 19. Sep 2004, 12:35 - Beitrag #4

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.

Daddy-Dennis
Very Good Newbie
Very Good Newbie

 
Beiträge: 40
Registriert: 16.09.2004
So 19. Sep 2004, 16:36 - Beitrag #5

in nem befehlsbuch wollt ich ja auch net guggn! so blöd bin ich auch nicht.

Nur ne kleine Erklärung nachschlagen.Mit Beispielen.

nazgul
Excellent Member
Excellent Member

Benutzeravatar
 
Beiträge: 674
Registriert: 08.02.2003
Sa 2. Okt 2004, 12:21 - Beitrag #6

@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>

blobbfish
Listenkandidat
Lebende Legende

Benutzeravatar
 
Beiträge: 3022
Registriert: 26.01.2003
Sa 2. Okt 2004, 12:29 - Beitrag #7

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.

nazgul
Excellent Member
Excellent Member

Benutzeravatar
 
Beiträge: 674
Registriert: 08.02.2003
Sa 2. Okt 2004, 16:21 - Beitrag #8

<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.

Daddy-Dennis
Very Good Newbie
Very Good Newbie

 
Beiträge: 40
Registriert: 16.09.2004
Sa 2. Okt 2004, 16:38 - Beitrag #9

mAN KANNs auch übertreiben...

nazgul
Excellent Member
Excellent Member

Benutzeravatar
 
Beiträge: 674
Registriert: 08.02.2003
Mi 27. Okt 2004, 23:39 - Beitrag #10

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...


Zurück zu Software

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste

cron