Goto-Befehl mehrfach als böse eingestuft.

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Hallosager

Betreff: Goto-Befehl mehrfach als böse eingestuft.

BeitragSo, Jun 12, 2005 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich mache seit Jahren immer Spiele mit dem Befehl:

.Hallo
1=Input("1+1=? ")
If 1=2 Then end
If 1<>2 Then cls:Goto Hallo

Aber viele Leute hassen Goto. Was kann ich dann nehmen? Es gibt so viele Schleifen aber ich kapier nicht alle und außerdme gehen sie nie, wenn ich sie irgendwo in einem größeren Programm einbau.
 

FBI-blitz

BeitragSo, Jun 12, 2005 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Normalerweise sollten alle Schleifen funktionieren. Wink

Außerdem könntest du z.B. Funktionen verwenden
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

skey-z

BeitragSo, Jun 12, 2005 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Schleifen sind im Grunde auch nicht mehr als gotos, nachdem das programm compiliert wurde

Code: [AUSKLAPPEN]

repeat

...machwas

until keyhit(1)


ist im Grunde das gleiche wie

Code: [AUSKLAPPEN]


.start

...machwas

if not keyhit(1) then goto start


Goto ist nur dann böse, wenn man es nicht richtig verwendet, also so gennanten Spaghetti-code produziert, aber solange du es für dich benutzt und noch die übersicht hast, ist es deine Sache, nur solltest du diesen Code dann nicht an andere weitergeben, weil sich die anderen dann wahrscheinlich nciht zurecht finden werden.

zu qbasic zeiten habe ich es auch noch benutzt, aber mittlerweile habe ich es mir abgewöhnt, der übersichtlichkeit wegen.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

Hallosager

BeitragSo, Jun 12, 2005 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Und was ist, wenn ich mehrere Gotos in ein Spiel reintun will? Irgendwie funktioniert da nur eines.
 

Dreamora

BeitragSo, Jun 12, 2005 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann ist dein Code einfach nur schlecht strukturiert und wir sind wieder bei Spaghetti-Code Wink
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Plasma(alt)

Betreff: goto

BeitragSo, Jun 12, 2005 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
zum 3000. mal goto's sind evil Twisted Evil Twisted Evil
(quatsch)
DIV is dead !

stfighter01

BeitragSo, Jun 12, 2005 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
man sollte auch mal ganz klar feststellen das BB-gotos nicht DIE bösen gotos sind von denen alle welt spricht.

unter bb kann man mit goto nicht in oder aus einer funktion springen.
mit den gotos der meisten sprachen geht das, und dann kann der code wirklich unleserlich werden.

dennoch hilft goto nicht unbedingt die übersicht zu behalten und sollte vermieden werden.
aber als ersatz für eine schleife ist goto beleibe nicht vozuziehen.
(auch von wegen optimierung beim kompilieren)

zudem würde ich mir an deiner stelle unbedingt die syntax von BB nochmal genau ansehen.
also:

Variablen, Kontrollstrukturen...
alles was in der onlinehilfe unter 2D->BASIC zu finden ist.

wenn du dich ein wenig eingearbeitet hast und mehr ahnung besitzt was eine programmiersprache eigentlich ist, wirst du sehen das sich die meisten höheren sprachen in ihrer grundstruktur sehr stark gleichen.

wenn du jemals programmieren können willst must du die grundlagen ohnehin beherrschen, egal welche sprache du später verwendest.
also fang schon heute an es zu lernen Wink


mfg stfighter

ps.:
es gibt nicht viele schleifen, es gibt 2(3):

while wend und repeat until bzw. repeat forever

und der unterschied ist auch nur WO die abfrage stattfindet.
Denken hilft!

Ctuchik

BeitragSo, Jun 12, 2005 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht zu vergessen die For ... Next Schleife Wink
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle!
Fraget euren Arzt oder Apotheker!

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Jun 12, 2005 23:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich benutze auch Goto was zum Teil nicht nur einfacher, sondern auch übersichtlicher ist!
Aber auch nur für ganz bestimmte Sachen
Beispiel
BlitzBasic: [AUSKLAPPEN]
For ball.Ball= Each Ball
...
Delete Ball
Goto Naechsten_Ball

..
...
.Naechsten_Ball
Next
[BB2D | BB3D | BB+]
 

Dreamora

BeitragMo, Jun 13, 2005 7:56
Antworten mit Zitat
Benutzer-Profile anzeigen
In diesem Falle noch nie von Continue und/oder Exit gehört, definitiv Wink
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Jun 13, 2005 8:33
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Exit ist mir ein Begriff, benutze das auch meistens, aber das funktioniert selbst bei dem Beispiel nicht, da die Schleife ja verlassen wird!

2. Continue kenn ich nicht, hört sich aber schon toll an, wenn es das ist was ich denke!
Kannste mir da mal ein Mini-Beispiel dafür zeigen!
[BB2D | BB3D | BB+]
 

Dreamora

BeitragMo, Jun 13, 2005 8:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Exit ist genau für obiges Beispiel:

Code: [AUSKLAPPEN]


repeat

if keyhit (1)
   ; verlässt die repeat loop
   exit
endif

forever

sum = 0
for i = 1 to 100
  if i mod 2 = 0
    ; sorgt dafür, dass nur ungerade zahlen genommen werden
    continue
  endif
  sum = sum + i
next

Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BladeRunner

Moderator

BeitragMo, Jun 13, 2005 8:45
Antworten mit Zitat
Benutzer-Profile anzeigen
er will die loop ja nicht verlassen, sondern eins weiterspringen. daher wäre exit wohl verkehrt, dreamora.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Dreamora

BeitragMo, Jun 13, 2005 10:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Fürs 1 weiter springen ist continue a Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Suco-X

Betreff: .....

BeitragMo, Jun 13, 2005 10:22
Antworten mit Zitat
Benutzer-Profile anzeigen
BB hat aber kein Continue und für einen Continue Ersatz ist GoTo wohl legitim.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Jun 13, 2005 10:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Fürs 1 weiter springen ist continue a

Das wäre eine Alternative,
nur dumm das BlitzBasic den Befehl "continue" nicht kennt,
oder habe ich da nicht die passende BB-Version?
Pb kennt den Befehl zB!
[BB2D | BB3D | BB+]
 

Omenaton_2

BeitragMo, Jun 13, 2005 10:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich benutze zu 99% GOSUBs und zu 1% GOTOs. Damit komme ich wunderbar klar.
Es gibt sehr selten Fälle, wo ein GOTO ideal ist, meistens kann man aber den Code anders konstruieren, so daß GOTO überflüssig wird.

Mach es wie du es willst, hauptsache es funktioniert.

Ebola33

BeitragMo, Jun 13, 2005 10:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich benutze Goto ausschliesslich als Notlösung um aus mehreren verschachtelten Schleifen oder If - then Konstruckten zu Springen. Allerdings lässt sich dieser Befehl bei vorrausschauender Programmierung leicht umgehen.
ansteckend... Wink
verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/
 

MasterK

BeitragMo, Jun 13, 2005 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
gosub... bist du davon immer noch nicht losgekommen, Omenaton_2?
goto mag in manchen situationen vorsichtig dosiert eingesetzt durchaus seine berechtigung haben. gosub ist ein überbleibsel den niemand mehr braucht.
+++ www.masterk.de.vu +++
Lila FTW!
 

Dreamora

BeitragMo, Jun 13, 2005 12:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö isses net.

Im Unterschied zu Functions kannst du mit Gosub den gleichen Variablenraum nutzen wie das Hauptprogramm.
Speziell für Dinge wie Eingabeverarbeitung etc eine sehr praktische Sache da B3D / BB+ keine Funktionspointer haben.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group