Variable in Variablen
Übersicht

progger3DBetreff: Variable in Variablen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe eine Frage. Für ein kleines Programm was ich schreibe, brauche ich in eine Variablen eine Variable. BSP: Code: [AUSKLAPPEN] x=x+1 goto Zeile"x" .Zeile1 .Zeile2 ... oder Code: [AUSKLAPPEN] Zeile_"x"=Input("...") ... Geht das? Wenn ja! Wie? |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also das mit den Labels geht leider nicht, aber um mehrere EIngaben zu speichern bietet sich Dim![]() Code: [AUSKLAPPEN] Dim zeilen(5)
For i=0 To 5 zeilen(i)=Input("Gib ein was in Zeile "+i+" steht: ") Next mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein. Das geht nicht. Gewöhn dir GOTO am Anfang nicht an. Später ist es ganz nützlich, aber hier wird es von sehr vielen abgelehnt.
Ich nehme an für so einen Fall ist Select ![]() ![]() BlitzBasic: [AUSKLAPPEN] x=Input() mfg Thunder Edit: Zu langsam. Vielleicht habe ich den Startbeitrag falsch verstanden. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
progger3D |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke Schön | ||
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Nein. Das geht nicht. Gewöhn dir GOTO am Anfang nicht an. Später ist es ganz nützlich, aber hier wird es von sehr vielen abgelehnt. zurecht. man braucht es nie (!) und es erzeugt schlechten code wir sollten froh sein, dass wir eine höhere programmiersprache vor uns haben und keinen assembler code erzeugen... wann bitte sollte es später ganz nützlich sein? wenn man vernünftig programmiert sollte dieser fall niemals eintreten imo |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
In BlitzMax brauche ich es nie, aber in BlitzBasic:
BlitzMax: [AUSKLAPPEN] Repeat BlitzBasic: [AUSKLAPPEN] Repeat Einziger Nachteil: Das geht nur bei Repeatschleifen gut. Aber ich verwende es und ich denke es gibt einige andere Bereiche in denen Goto einfach die sauberere Lösung ist. mfg Thunder Edit: Goto ist nicht Assembler - Goto ist BASIC! ![]() |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ erster teil:
sehe ich anders, alles lässt sich ohne goto lösen ![]() @ edit: ja goto ist basic... aber goto ist eine 1:1 umsetzung der jump variante von assembler ![]() |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe auch nichts anderes behauptet. Alles lässt sich ohne Goto lösen, allerdings, Zitat:
Ich hat Folgendes geschrieben: [...] und ich denke es gibt einige andere Bereiche in denen Goto einfach die sauberere Lösung ist.
Edit: Es musste ja unbedingt einen geben, der goto so stark ablehnt, dass ich auf meinen Beitrag in dem ich schrieb, dass man es am Anfang(!) sein lassen sollte, eine Antwort kassiere ![]() |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wobei ich das Gefuehl habe das es in den allermeisten Faellen die neuen bis frischen sind die Goto so verteufeln.
Vielleicht daher das sie es immer wieder eingetrichtert bekommen und bisweilen noch nicht an groesseren Projekten gearbeitet haben. Denn dort sehe ich es immer wieder das eine deutliche Erleichterung sein kann, ganz ohne Spaghetti-Code. Fuer das Problem von Progger3D ist Goto so fehl am Platz wie sonst nichts, aber ... ja, siehe Satz 2 und 3 ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hubsi hat Folgendes geschrieben: Wobei ich das Gefuehl habe das es in den allermeisten Faellen die neuen bis frischen sind die Goto so verteufeln.
Vielleicht daher das sie es immer wieder eingetrichtert bekommen und bisweilen noch nicht an groesseren Projekten gearbeitet haben. Denn dort sehe ich es immer wieder das eine deutliche Erleichterung sein kann, ganz ohne Spaghetti-Code. Fuer das Problem von Progger3D ist Goto so fehl am Platz wie sonst nichts, aber ... ja, siehe Satz 2 und 3 ![]() nein wenn der code vernünftig aufgebaut ist wird ganz sicher niemals ein goto besser sein als irgendwas anderes in richtig großen projekten würde ich von goto erst recht abraten... es mag sein dass es für den programmierer im ersten moment leichter und "eleganter" scheint leicher vielleicht... aber eleganter in keinem fall durch goto wird der code einfach viel zu statisch und lässt sich kaum mehr erweitern, umbauen etc. deswegen: kein goto, in großen projekten noch weniger als in kleinen |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nun gut, das sieht wohl jeder etwas anders. Ich werde weiterhin beim Goto bleiben, denn ich habe noch keine wirklich gute Loesung fuer folgendes finden koennen:
Code: [AUSKLAPPEN] .menu
repeat ; Menuschleife if auswahl=neues Spiel then goto new_game if auswahl=Spiel laden then goto load_game until keyhit(1) end .load_game LoadTheGame() Do some other shit .new_game Tu_alles_was_immer_gemacht_werden_muss() Klar koennte man auch eine Hilfsvariable nehmen welche True ist wenn das Spiel geladen werden soll, nur finde ich das sogar uebersichtlicher. Zudem kann ich ganz ohne grossen Trara ins Menu zurueck. Diese Struktur verwende ich seit vielen Jahren. Aber wie gesagt, schlussendlich machts jeder so wie er meint ![]() Edit: Fehler im Pseudocode ausgebessert. |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
- Zuletzt bearbeitet von Hubsi am Sa, Mai 01, 2010 10:04, insgesamt einmal bearbeitet
![]() |
US-Blitzehemals "SimssmiS" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich stimme hubsi zu vorallem im spielmenü sind goto und gosub echt eine erleichterung | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gerade beim Menü ist GoTo fehl am Platz - um Programmteile zu Kapseln nimmt man Funktionen - die Hubsi in seinem Beispiel komischer Weise auch verwendet - da ist das GoTo wirklich nur noch zur verkomplizierung da.
Um Continue zu imitieren oder doppelt verschachtelte Suchschleifen zu beenden ist GoTo in Ordnung; für Anfänger bleibt GoTo die schlechteste Wahl zur Programmstrukturierung. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Xeres, ich denke Du hast meinen Beispielcode in den falschen Hals bekommen. Das soll lediglich zeigen wie ich Programmteile, die an sich nichts miteinander zu schaffen haben, voneinander trenne. Ich verwende Functionen gerne wo sie Sinn machen, aber nicht in einer Form wie dieser bspw.:
BlitzBasic: [AUSKLAPPEN] Repeat ; Menuschleife Zum einen sieht das optisch grottig aus und zum anderen, der eigentlich wichtige Grund, brauche ich in der Variante eine deutlich größere Menge an globalen Variablen, die ich eigentlich so weit als möglich vermeide. Die ganzen Einstellungen aus dem Menü wie Tastenbelegung, Lautstärke, Schwierigkeitsgrad... häng dran was immer Dir einfällt wären ja quasi "verloren". Ein "mal eben da und dann dort hinspringen" führt unweigerlich zum Tod des Projekts, soweit klar. Aber zur elemetaren Trennung von grundverschiedenen Teilen wie Menü und Spiel setze ich es seit Anbeginn der Zeit ein und bin nie auf die Schn... Nase gefallen ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit der Zeit sammeln sich ein paar Globale Variablen an, aber da die für das ganze Spiel gelten, kann ich eigentlich gut damit leben.
Mein Favorisierter Aufbau: BlitzBasic: [AUSKLAPPEN] Global Game_State Der Variable Game_State weißt man einfach die passende Konstante zu. Ist Leicht zu lesen und der Programmlogik ist leicht zu folgen. Wer weiß was er tut - und im Forum dazu dann keine Hilfe erwartet - kann ja eh konstruieren was er möchte. Zitat: Ein "mal eben da und dann dort hinspringen" führt unweigerlich zum Tod des Projekts, soweit klar. Solange wir uns darin einig sind ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@hubsi
dein fehler liegt schon darin, dass du einen programmteil hast, welcher quasi das gesamte spiel übernimmt es sollte weder eine funktion, noch einen über goto erreichbaren programmabschnitt geben, welcher die gesamte spieldynamik übernimmt... ein programm sollte viel viel viel viel viel feiner strukturiert sein und dann kann man das alles über funktionen regeln und benötigt kein "goto maingame" mehr klar kannst du das für dich weiterhin so machen etc so lange du das nur als hobby betreibst ist das ja vollkommen legitim und egal weder werden die projekte dann so groß, dass es unabdingbar wäre anders zu programmieren noch störst du jemanden damit solltest du das ganze jedoch wie ich beruflich anstreben wäre eine feinere strukturierung sinnvoll blitzbasic ist aber ohnehin nicht die perfekte sprache für so etwas... oop erleichtert das z.b. ungemein |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich kann Dir nicht folgen wie ich oder man es anders strukturieren könnte? Das Spiel an sich hat ja mit dem Menü (in Bezug auf den Beispielcode) erstmal nichts zu schaffen? Ich fürchte ich blick nicht was Du meinst ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
BBPro2 hat Folgendes geschrieben: wenn der code vernünftig aufgebaut ist wird ganz sicher niemals ein goto besser sein
als irgendwas anderes Doch. Für BlitzMax und viele andere Sprachen magst du Recht haben, aber in BB ergeben sich beispielsweise durch einen fehlenden "Continue"-Befehl durchaus Situationen, in denen das strikte Vermeiden von Goto den Code augesprochen hässlich macht. EDIT: Oh, ich sehe gerade, es wurde schon gesagt. Trotzdem: Goto zu vermeiden ist meiner Meinung nach nur sinnvoll, denn einem die Programmiersprache einen guten Ersatz für für die jeweilige Situation bietet. Das ist in BB nicht immer gegeben. |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group