Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

GOTO vermeiden!
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1875
Wohnort: D59192

BeitragVerfasst am: 06.09.2005, 16:08    Titel: Antworten mit Zitat

ja,
Ordnung ist etwas für Naive, Genies beherrschen das Chaos!

damit entschuldige ich auch immer meinen chaotischen Arbeitsplatz.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 06.09.2005, 16:17    Titel: Antworten mit Zitat

lachen
Jaja, das kenn' ich zwinkern

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
psygate



Anmeldungsdatum: 05.04.2005
Beiträge: 304
Wohnort: Wien und der Computer

BeitragVerfasst am: 06.09.2005, 20:44    Titel: Antworten mit Zitat

Für das genie ist das chaos ja doch wieder reinste ordnung!

durchgeknallt durchgeknallt durchgeknallt durchgeknallt durchgeknallt durchgeknallt

*Quellcodes suchen geh um GOTOS ein zu bauen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OdinX



Anmeldungsdatum: 29.07.2005
Beiträge: 253
Wohnort: SG Schweiz

BeitragVerfasst am: 06.09.2005, 21:48    Titel: Antworten mit Zitat

psygate hat Folgendes geschrieben:
*Quellcodes suchen geh um GOTOS ein zu bauen.


Code:
...
...
...
GOTO 100
100
...
...


meinst du so durchgeknallt



edit:
wir könnten ja mal nen programmierwettbewerb machen, wo goto's punkte geben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 07.09.2005, 19:25    Titel: GOTO vermeiden! Antworten mit Zitat

Hi AlleMann,
@Volta,
Es soll Editoren geben, die das sogenannte Einrücken beherrschen: ;->
Code:
Do
  ?"eingerückt"
  ?"das auch.."
  ?"Context kann das"
  ?"Dusky_Joe hat ein FreeBasic-Syntaxfile für Context geschrieben"
  Print "Ich könnte eins für UEdit32 beisteuern.."
Loop Until Inkey$=Chr$(27)
Wenn du das so machst, findest du auch nach 1000 Zeilen das zugehörige Loop !!
Ich liebe Einrückungen, weil Zeilen wie:
?"Eniki";:m$="":While m$="":m$=UCase$(Inkey$):Wend:If Asc(m$)>32 Then ?m$
zwar möglich, aber alles andere als verständlich sind.. (die Zeile funktioniert übrigens!)
Programmieren bedeutet nicht, mittels Copy&Paste Code zusammenzubasteln.
Mit ein wenig Überlegung läßt sich GOTO meist vermeiden:
If m$="Redmond" Then GOTO Linux
Fehler=Exec("NotePad.Exe", "AutoExec.Bat")
Goto Weiter
Linux:
?"Willkommen am Südpol.."
Weiter:
Dies Beispiel zeigt, daß, wenn man ersteinmal mit GOTO angefangen hat, immer noch mehr
GOTOs dazu kommen(können, zugegeben..)
Happy Einrücking
ytwinky
Code:

_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1875
Wohnort: D59192

BeitragVerfasst am: 07.09.2005, 19:49    Titel: Antworten mit Zitat

Hi,
ich wehre mich nur dagegen das GoTo als nicht akzeptablen Basicbefehl anzusehen.
Hätten die Urväter des Basic mit Einrückungen und Do.. Loop den gleichen Schindluder getrieben, wie sie es mit GoTo machten, würden heute diese Sachen verteufelt.
Nicht nur mit GoTo kann ich einen Quelltext fast unleserlich gestalten, mit genügend vielen Schleifen etc. kann ich auch mit Einrückungen, Leerzeilen und anderen Stilmitteln einen Quelltext verschleiern.

Gruß
Volta
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
stef



Anmeldungsdatum: 13.01.2005
Beiträge: 102

BeitragVerfasst am: 07.09.2005, 20:34    Titel: Antworten mit Zitat

Da kann ich schon fast nicht mehr mitreden, da ich seit etwa 5 Jahren keine Gotos mehr verwende. Da hat man schon fast wieder vergessen, wie gut oder schlecht es einem damals ging. Aber so weit ich mich erinnern kann hat ich durchaus Probleme, wenn ich zu sehr in einem Programm hin und her gesprungen bin. War ein echtes Problem. Ich verstehe auch nicht ganz warum ich es erst gelassen habe, als ich vor der Wahl stand schlechte Note oder goto nicht mehr verwenden.

Da ich aber was von Sprüngen über 1000 Zeilen Code hier gelesen habe, mach ich mir da mal keine Sorgen. Wer tausend Zeilen Code schriebt ohne was davon in Funktionen und Subs auszulagern hat schon so ein Problem den Überblick zu behalten auch ohne goto.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 08.09.2005, 17:34    Titel: GOTO vermeiden! Antworten mit Zitat

@volta
schau mal unter Downloads.Maths nach
Da kannste mal sehen, was ich mit Einrücken meine..
..ich habe für dich extra ein GOTO eingebaut lachen

Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
helium



Anmeldungsdatum: 10.09.2004
Beiträge: 397
Wohnort: Leverkusen

BeitragVerfasst am: 09.09.2005, 16:41    Titel: Antworten mit Zitat

volta hat Folgendes geschrieben:
Hi,
ich wehre mich nur dagegen das GoTo als nicht akzeptablen Basicbefehl anzusehen.
Hätten die Urväter des Basic mit Einrückungen und Do.. Loop den gleichen Schindluder getrieben, wie sie es mit GoTo machten, würden heute diese Sachen verteufelt.
Nicht nur mit GoTo kann ich einen Quelltext fast unleserlich gestalten, mit genügend vielen Schleifen etc. kann ich auch mit Einrückungen, Leerzeilen und anderen Stilmitteln einen Quelltext verschleiern.


Ein Goto zeigt die Intention des Programmierers in keiner Weise. Sie zeigt lediglich einen Sprung an, ob es nun als Schleife dient, oder um als eine Prozedur zu dienen, oder um eine Prozedur zu verlassen ist vollkommen unklar.

Schleifen, Funktionen, etc. drücken die Absicht dueltich aus, sogar sehr detailiert: Wenn man ein FOR sieht weiß man, dass gezählt wird. Bei einem Goto muss man sich erstmal näher mit dem gesammten Code-Block auseinandersetzten, um zu verstehen, das da gezählt wird.

Bei einem Programm, dass gerademal 500 Zeilen lang ist mag sowas ja akzeptabel sein, bei einem Programm mit 500.000 Zeilen ist es hingegen unakzeptabel. Man will nur mal eben was nachgucken und ist erstmal ne Stunde damit beschäftigt irgendwelchen Gotos zu folgen.

Zitat:
Da ich aber was von Sprüngen über 1000 Zeilen Code hier gelesen habe, mach ich mir da mal keine Sorgen. Wer tausend Zeilen Code schriebt ohne was davon in Funktionen und Subs auszulagern hat schon so ein Problem den Überblick zu behalten auch ohne goto.

1000 Zeilen in nur einer Funktion geschockt durchgeknallt mit dem Kopf durch die Mauer wollen
_________________
Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 10.09.2005, 17:43    Titel: GOTO vermeiden! Antworten mit Zitat

Hi AlleMann,
um nicht mißverstanden zu werden, ich bin nicht grundsätzlich gegen den GOTO-Befehl..
(Machmal hilft er auch im Privatleben:
Code:
On PortemonnaieInhalt Goto Restaurant, Imbiß, Kühlschrank
Sorry, fiel mir gerade so ein..)
Manchmal läßt er sich wirklich nicht vermeiden:
Code:
@Echo Off
 SetLocal
 Echo smcservice=1
 Echo spfirewallsvc=2
 Choice /C12[Esc] /N /T:1,10 "Was darf's denn sein, Fremder ?"
::Das [Esc]-Zeichen geht per [Ctrl-P][Alt027] oder sonstwie in den Text..
::..tja, woher kommt Choice ? Mal M$ fragen..
 If ErrorLevel 1 Set Fw=smcservice
 If ErrorLevel 2 Set Fw=spfirewallsvc
 If ErrorLevel 3 Goto Quit
 Set Msg=%Fw% ist
 SC.Exe Query %Fw% | Find "%Fw%" >Nul
 If ErrorLevel 1 (
   Echo %Msg% gibt es gar nicht..
  Goto Quit
 )
 If '%1'=='+' Goto Plus
 If '%1'=='-' Goto Minus
 Echo Aufruf mit %0 +
 Echo (Firewall ANschalten)
 Echo Aufruf mit %0 -
 Echo (Firewall AUSschalten)
Goto Ende

:Plus
 SC.Exe Query %Fw% | Find /i "Running" >Nul
 If ErrorLevel 1 (
  SC.Exe Start %Fw% >Nul
 ) Else (
  Set Msg=%Msg% doch schon
 )
Goto Ende

:Minus
 SC.Exe Query %Fw% | Find /i "Running" >Nul
 If ErrorLevel 1 (
  Set Msg=%Msg% doch schon
 ) Else (
  SC.Exe Stop %Fw% >Nul
 )
:: Hier könnte ein Goto Ende stehen, aber ich brings nicht ?übers Herz..
:Ende
 SC.Exe Query %Fw% | Find /i "Running" >Nul
 If ErrorLevel 1 (Set Msg=%Msg% AUS) Else (Set Msg=%Msg% AN)
 Echo %Msg%

:Quit
 EndLocal
::Läuft so wie's hier steht, ggfs. Fw anpassen

Aber in modernen Programmiersprachen ist m.E. i.A. möglich dieses
Relikt früherer Zeiten dort zu lassen wo es hingehört:
Code:
GOTO Museum

Schönen Samstag noch
ytwinky
PS:Natürlich habe ich NICHT 2 Firewalls installiert.. Zunge rausstrecken
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
tilli



Anmeldungsdatum: 10.09.2005
Beiträge: 73

BeitragVerfasst am: 10.09.2005, 18:37    Titel: Antworten mit Zitat

Moin,

die Letzte Nachricht von yTwinky ist in der Tat ein Problem - die Leute haben anscheinend den case Befehl nicht im Programm ... mit 2 case Schleifen hintereinander sollte es auch ohne große GOTOs gehen. lächeln

Meinereins hat sich aufgrund von Pascal, anderen Basicdialekten, C, C++ usw. ebenfalls den Goto Befehl in den Hinergrund verdränt. Wir sollen allerdings eins nicht vergessen: im Maschienencode läuft fast alles ohne diese Schleifen(Abgesehen von Memcopy). Und jeder Aufruf einer Unterfunktion ist hinterher eine Verlangsamung des Programms, da der Rechner ja meist im Code spingen muss. Wenn man also Speed braucht, kommt man um Goto manchmal nicht herum - dafür gibt es allerdings heute Compiler.

Als ich 'damals' in der 'Guten alten Zeit' meinen 'C+4' (nachfolgervom C64) Programmiert habe und versucht habe auf den 1,7MHz (ja, damals nicht GHz!) eine einigermaßen flüssige Grafik auf den Bildschirm zu zaubern oder als ich auf meinem 486 Dx33 (damals echt schnelle Maschiene) ohne Hardwarebeschleunigung mich in Assamblereinbindungen in Pascal versucht habe(wie es heute in basic als Inlineassambler auch möglich ist) musste ich mich erstmal in diese alte, völlig überholte Technik zwinkern der Umsetzung von Schleifen in einzelne Befehle Widmen.

So nun sollte ich noch erwähnen, dass es damals teils keine Loop-Schleifen gab oder sie ungewohnt waren, da die Leute damals überwiegend aus der Assamblerwelt kamen. Die Konnten eher eine aus Zahlen bestehenden Code lesen als eine Loopschleife zwinkern(OK ich übertreibe etwas - aber ich fürchte nicht viel ...)

Ich denke einzig und allein interessant ist heute noch der Gotobfehl wenn man Ihn zum Einsparen von Speicherplatz nutzt. Wer Ihn allerding heute noch nutzt - nur zu - ich kenne Ihn noch! Ich kann den einen und anderen Code lesen. Eine Bedingung sollte allerdings dabei eingehalten werden:
Bitte nicht Goto 10 Schreiben! Lieber goto Anfang oder so! Dann ist auch die weitere Abarbeitung nicht gefährdet.

Fazit:
Aufgrund der heutigen Rechenleistung kann man sich die sog. strukturierte Programmierung leisten - wenngleich ich durchaus Probleme habe, wenn der 20. Zeileneinschub kommt (manchmal ist das einfach so).
Ich versuche Routinen, die heufig aufgerufen werden und nur selten im Code vorkommen(meist nur einmal) auch im Code zu lassen, andere kann man auch per Subroutine aufrufen - ob sub oder fuction ist da völlig egal.

So nun Ende, sons liest das ja keiner... Hoffentlich kommen ein bis 2 Leute zu dieser Zeile ... lächeln

CU2
Tilli
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
helium



Anmeldungsdatum: 10.09.2004
Beiträge: 397
Wohnort: Leverkusen

BeitragVerfasst am: 12.09.2005, 13:17    Titel: Antworten mit Zitat

Zitat:
Aufgrund der heutigen Rechenleistung kann man sich die sog. strukturierte Programmierung leisten - wenngleich ich durchaus Probleme habe, wenn der 20. Zeileneinschub kommt (manchmal ist das einfach so).

Inneren Teil in eine weitere Funktion auslagern. Dadurch behält man die Übersicht und man sieht einzelne Teilaspekte der Aufgabe auch als solche und kann sie geziehlter bearbeiten. Außerem entfallen Teile, die soweit eingerückt sind, dass man erstmal nach rechts Scrollen muss, um den Code lesen zu können.
Heutige Compiler können Funktionen inline expandieren (Freebasic noch nicht), so dass der Funktionsaufruf wegfällt. Geschwindigkeit ist also kein Gegenargument.
_________________
Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz