Seite 2 von 8
Verfasst: 13.12.2008 21:40
von AND51
Ich benutze Goto nie, das habe ich mir abgewöhnt und seitdem kommen bei mir nurBreak und Continue zum Einsatz.
Besser so, hab es mit meinen Gotos zu 3.94er Zeiten auch in meinem ersten "richtigem", großem Projekt übertrieben und mich obendrein gewundert, warum mein Programm immer abstürzt.
@ DrFalo
Seit wann kennt man seine Rekursionstiefe nicht? Kann mir grade keinen derartigen Fall vorstellen...
Verfasst: 13.12.2008 22:17
von kswb73
Richitg eingesetzt können Gotos ja auch nützlich sein. Ich benutz sie des öfteren bei Spielen, da ich zwischen Hauptmenu, Optionen, Speichern, Laden hin und herschalten kann und diese meisten eine eigene Schleife haben.
Als erstes setzte ich eine Sprungmarke. Dannach lege ich Variablen fest, damit ich diese nicht ausversehen kaput machen kann und um nicht für jeden Teil einzelene Variabeln festzulegen. Dannach kommt dann die Schleife.
Das ist praktisch, denn ich sag nur goto MainMenu und schon lade ich im Hauptmenu. Fertig. Und sorgen darum zu machen irgedeine Variable verstellt zu haben brauch ich mir auchnicht. Wird ja alles korrigiert.
Verfasst: 13.12.2008 22:24
von PMV
DrFalo hat geschrieben:Gibt auch Fälle in denen ich die Schleifenanzahl zum Zeitpunkt des Verlassens nicht kenne.
Den Fall würd ich aber jetzt gerne mal kennen lernen ...
Bei Rekursionen ist das klar ... aber schleifen ... es gibt nur eine feste
Anzahl an gestarteten Schleifen, also kann man auch wissen, wie viele
beendet werden sollen.
... ich hab seit PB nicht ein mal ein GOTO verwenden müssen ...
Mit etwas überlegen kann man (zumindest in PB) jedes GOTO vermeiden.
BREAK und CONTINUE verwende ich statt dessen heufig.
Hoch lebe die Planung
MFG PMV
Verfasst: 13.12.2008 22:28
von Kaeru Gaman
> Ich benutz sie des öfteren bei Spielen, da ich zwischen Hauptmenu, Optionen, Speichern, Laden hin und herschalten kann und diese meisten eine eigene Schleife haben.
jedem ne eigene schleife zu geben ist auch ... fishy ... Kinderkram ...
eine Hauptschleife, ein Clearscreen, ein FlipBuffers im ganzen Code,
dann braucht man auch kein GoTo.
Verfasst: 13.12.2008 22:48
von Thorium
Kaeru Gaman hat geschrieben:> Ich benutz sie des öfteren bei Spielen, da ich zwischen Hauptmenu, Optionen, Speichern, Laden hin und herschalten kann und diese meisten eine eigene Schleife haben.
jedem ne eigene schleife zu geben ist auch ... fishy ... Kinderkram ...
eine Hauptschleife, ein Clearscreen, ein FlipBuffers im ganzen Code,
dann braucht man auch kein GoTo.
Jo mach ich auch so.
Hab da ne Variable, welche den Spielstatus/Position/Wasauchimmer hält. 1 steht z.b. für laufendes Spiel, 2 für Hauptmenü, etc. Dann wird innerhalb der Gameloop einfach mit Select für jeden Status der entsprechende Code ausgeführt. Goto brauch ich da keins.
Ich brauche nie Goto. Hab ich früher in Turbo Basic stark verwendet und mir dann in Visual Basic abgewöhnt. Der Grund ist ganz einfach das der Code wesentlich an Lesbarkeit einbüst.
Aber ein Machwerk des Teufels ist Goto ganz sicher nicht.
Verfasst: 13.12.2008 22:49
von xperience2003
ich koennt ohne garnich leben
Goto kneipe
Goto Kuehlschrank
Goto Klo
nein, wenn ich mal was spielerisches code, dann benutze ich nie gotos
ganz einfach weil ich allen kram in procedures packe
und auch in diesen benutze ich keine gotos, sondern hab ne variable
fuer den status und benutze select,case,endselect
allerdings ist das weder besser noch schlechter, auch der "goto-hass" ist totaler nonsens
wenn man sich den asm output ansieht, macht der compiler bei pb auch nur nen lumpigen sprungbefehl draus, wie bei if - endif - abfragen, wo der weiterfuehrende code "weiter weg" ist, oder eben repeat - forever etc
das einzige was ich im goto auszusetzen haette, waere das wenn ich goto benutze, alles in einer codedatei sein muesste, damit ich den ueberblick bewahre
darum packe ich alles in procedures und mache fuer jede procedure eine eigene quelltextdatei
die hauptprogrammschleife ist dann nichts anderes als das hier
Code: Alles auswählen
global gamemode=0
repeat
select gamemode
case 0
menu()
case 1
game(level)
case 2
intro()
case 3
deadscreen()
...etc
endselect
forever
die grafiken werden vor dem spiel und menu komplett geladen,
bei groesseren sachen bei jedem aufruf von game(level) je nach level
Verfasst: 14.12.2008 00:10
von edel
xperience2003 hat geschrieben:
allerdings ist das weder besser noch schlechter, auch der "goto-hass" ist totaler nonsens
wenn man sich den asm output ansieht, macht der compiler bei pb auch nur nen lumpigen sprungbefehl draus, wie bei if - endif - abfragen, wo der weiterfuehrende code "weiter weg" ist, oder eben repeat - forever etc
Das eine hat aber nichts mit dem anderen zu tun. Zumindest denke ich nicht
das Fred/Freak sowas als Compileroutput raushauen :
Verfasst: 14.12.2008 00:14
von Kiffi
AND51 hat geschrieben:Ich benutze Goto nie
AND51 hat geschrieben:onErrorGoto(?Bed)
Grüße ... Kiffi
Verfasst: 14.12.2008 00:27
von Captn. Jinguji
AND51 hat geschrieben:@ DrFalo
Seit wann kennt man seine Rekursionstiefe nicht? Kann mir grade keinen derartigen Fall vorstellen...
Öhmmm rekursives Abklappern von Filesystemen z.B. ?
Da schleppe ich Rekursionstiefenmesser nur mit, wenn ich von vornherein die Suchtiefe begrenze, ansonsten lass ich sie laufen, so tief sie will, aber ich weiss die Tiefe nicht.
Aber ich benutze andererseits auch nie GOTO, ist mir zu unübersichtlich.
Verfasst: 14.12.2008 02:18
von PMV
Captn. Jinguji hat geschrieben:AND51 hat geschrieben:@ DrFalo
Seit wann kennt man seine Rekursionstiefe nicht? Kann mir grade keinen derartigen Fall vorstellen...
Öhmmm rekursives Abklappern von Filesystemen z.B. ?
Da schleppe ich Rekursionstiefenmesser nur mit, wenn ich von vornherein die Suchtiefe begrenze, ansonsten lass ich sie laufen, so tief sie will, aber ich weiss die Tiefe nicht.
Aber ich benutze andererseits auch nie GOTO, ist mir zu unübersichtlich.
Das macht man aber mit einer Prozedur und keiner Schleife. Und wo da
nen Goto hin kommen könnte ist mir auch schleierhaft.
MFG PMV