|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 06.09.2005, 16:08 Titel: |
|
|
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 |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 06.09.2005, 16:17 Titel: |
|
|
Jaja, das kenn' ich
jb |
|
Nach oben |
|
|
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 06.09.2005, 20:44 Titel: |
|
|
Für das genie ist das chaos ja doch wieder reinste ordnung!
*Quellcodes suchen geh um GOTOS ein zu bauen. |
|
Nach oben |
|
|
OdinX
Anmeldungsdatum: 29.07.2005 Beiträge: 253 Wohnort: SG Schweiz
|
Verfasst am: 06.09.2005, 21:48 Titel: |
|
|
psygate hat Folgendes geschrieben: | *Quellcodes suchen geh um GOTOS ein zu bauen. |
Code: | ...
...
...
GOTO 100
100
...
...
|
meinst du so
edit:
wir könnten ja mal nen programmierwettbewerb machen, wo goto's punkte geben. |
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 07.09.2005, 19:25 Titel: GOTO vermeiden! |
|
|
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 _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 07.09.2005, 19:49 Titel: |
|
|
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 |
|
|
stef
Anmeldungsdatum: 13.01.2005 Beiträge: 102
|
Verfasst am: 07.09.2005, 20:34 Titel: |
|
|
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 |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 08.09.2005, 17:34 Titel: GOTO vermeiden! |
|
|
@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
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 |
|
|
helium
Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 09.09.2005, 16:41 Titel: |
|
|
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 _________________ 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 |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 10.09.2005, 17:43 Titel: GOTO vermeiden! |
|
|
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:
Schönen Samstag noch
ytwinky
PS:Natürlich habe ich NICHT 2 Firewalls installiert..
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 |
|
|
tilli
Anmeldungsdatum: 10.09.2005 Beiträge: 73
|
Verfasst am: 10.09.2005, 18:37 Titel: |
|
|
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.
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 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 (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 ...
CU2
Tilli |
|
Nach oben |
|
|
helium
Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 12.09.2005, 13:17 Titel: |
|
|
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 |
|
|
|
|
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.
|
|