Problem mit else und if... :P


Schau mal hier:

http://www.cplusplus.com/reference/clibrary/cstdio/fopen/

Schönen Gruß
Rene
 
portege_moi said:
und zwar: Welche Möglichkeiten gibt es in einem Auswahlmenü außer dem "goto" ?

Wird ja ziemlich unübersichtlich, wenn ich das bei jedem Menü so löse...
Jupp. Das ist sogenannter Spaghetticode, vor allem berüchtigt bei BASIC. goto ist größtenteils keine so gute Sache (Ausnahmen bestätigen die Regel). Als ich mit 10 oder so mein erstes kleineres Spiel geschrieben hab war das in BASIC, das war ein Spiel in dem man eine Zahl zwischen 1 und 100 erraten musste und dafür nur eine bestimme Anzahl an Versuchen zur Verfügung hatte. Da sah der Quelltext auch so spaghettimäßig aus. ;)

Zur Lösung dieses Problems guck mal hier: http://de.wikibooks.org/wiki/C-Programmierung:_Funktionen

Oder probier das nächste Mal statt goto einfach mal comefrom. (Das ist NICHT ernst gemeint! ;) )
Dr.Damn Fist said:
In meinem derzeitigen Projekt habe ich das mit State-Variablen gelöst, einfach ein variable definieren die speichert in welchem Menü du gerade bist (z.B. hauptmenü 0,Spiel laden 1 USW.). Dann die Darstellungen und Tastaturabfragen mit switch ;) verschachteln.
Das ist jetzt mein Weg, vllt. Auch nicht der beste aber er funktioniert und ich komm damit klar!
Guck mal hier nach "game loop" ("Spielschleife").


------------------------------------------------------------------------
Dr.Damn Fist said:
Hi,
hab ma ne kleine Nebensächlichkeit, warum pocht ihr darauf die Antwort 100% an die Frage anzulehnen, ich meine ist ja irgendwo richtig und logisch. Aber in diesem Fall wäre doch die Variante mit switch die Übersichtlichere und einfachere, somal es sich um einen Anfänger handelt. Die ganzen if-else-Verschachtelungen werden auf Dauer mühsam zu debuggen, vorallem für Anfänger!
Weil portege_moi danach gefragt hat. ;)

Offenbar hat er ja bereits allein in Erfahrung bringen können, dass "switch" etwas eleganter ist. Man könnte jetzt auch hergehen und sagen, dass "switch" zu unübersichtlich werden kann und ein flexiblerer Ansatz die bessere Lösung wäre. Aber das wäre übertrieben, denn als Programmieranfänger muss man ja auch die einfachen Dinge erst einmal verstehen.

Ich zitiere mich dazu mal selbst:
Christoph.K said:
Programmieren ist eine Tätigkeit, bei der man sehr von großer Kreativität profitieren kann. Viele Leute nennen Programmieren auch eine "Kunst". Das liegt daran, dass es in jeder Turing-Vollständigen Programmiersprache wahrhaftig unendlich viele Möglichkeiten gibt, ein- und dieselben Dinge zu erreichen.

Ich nehme mal an, dass dir "99 Bottles of Beer" (eine beliebte Schleifen-Übung) bereits etwas sagt. Auch hier gibt es in ein- und derselben Programmiersprache unendlich viele Möglichkeiten, den erwünschten Liedtext zu generieren. So kann man -- so man denn möchte -- z.B. die Flaschen auf 30 Schleifen aufteilen oder einfach ausschließlich print-Statements und gar keine Schleifen verwenden. Der ausgegebene Text ist dann zwar immer der gleiche, aber manche Implementationen sind schneller geschrieben, einfacher wartbar, effizienter. Je mehr Kreativität man in das Programmieren einfließen lässt, desto höher die Wahrscheinlichkeit, dass der am Enden eingeschlagene Lösungsweg möglichst nahe am imaginären Optimum liegt.

Was ich damit sagen will: Zeiger und ähnliches, das du noch nicht verstehst, benötigt man nicht zwingendermaßen (auch, wenn das dann unter Umständen kein guter Programmierstil ist). Früher oder später, sobald du das Grundlegendste verinnerlicht hast, wirst du allerdings durch Logik auch solche Beispielquellcodes verstehen, die du zuvor ganz einfach nicht verstehen konntest. Viele Dinge in diesen Beispielquellcodes wirst du erst einmal nach wie vor nicht verstehen, aber dadurch, dass dir dann die grundlegendsten Dinge in Fleisch und Blut übergegangen sein werden, wirst du automatisch mehr Hirn-Rechenleistung für diese Dinge übrighaben. So kannst du sie besser verstehen und in einem iterativen Prozess mehr und mehr dessen verinnerlichen, das dir jetzt noch nicht klar ist.


------------------------------------------------------------------------
portege_moi said:
Ja ich weiß das bei meinem Stil echt was zu tun ist...
Wenn du solche Dinge nicht nur bemerkst, sondern auch behandelst, dann bist du auf einem sehr guten Weg!
portege_moi said:
Werd mich sicher bald mit meinem nächsten Problem melden ;)
Tu das! Damit hilfst du am Ende vielleicht sogar auch anderen Programmieranfängern, die irgendwann mal dieses Thema hier lesen.
 
Was ich damit sagen will: Zeiger und ähnliches, das du noch nicht verstehst, benötigt man nicht zwingendermaßen (auch, wenn das dann unter Umständen kein guter Programmierstil ist).

Das wäre folgendes Szenario: Anstatt mir die Visitenkarte eines Großraumbüros geben zu lassen, in dem ich mit einem Mitarbeiter Kontakt aufnehmen will, erstelle ich mir eine exakte Kopie des Hochhauses in dem das Büro ist, in dem der Typ hockt samt dem Typen selber und stells mir in den Garten. ;)
 
Schnatterplatsch said:
Was ich damit sagen will: Zeiger und ähnliches, das du noch nicht verstehst, benötigt man nicht zwingendermaßen (auch, wenn das dann unter Umständen kein guter Programmierstil ist).

Das wäre folgendes Szenario: Anstatt mir die Visitenkarte eines Großraumbüros geben zu lassen, in dem ich mit einem Mitarbeiter Kontakt aufnehmen will, erstelle ich mir eine exakte Kopie des Hochhauses in dem das Büro ist, in dem der Typ hockt samt dem Typen selber und stells mir in den Garten. ;)

was Schnatterplatsch damit sagen will und da gebe ich ihm vollkommen recht: Zeiger sind wichtig bei C++. Ich nutze diese nur noch... Ich initialisiere kaum noch irgendwelche Objekte, sonder ich erstelle einen Zeiger, der auf ein inititialisiertes Objekt zeigt.
 
Thrake said:
Schnatterplatsch said:
Was ich damit sagen will: Zeiger und ähnliches, das du noch nicht verstehst, benötigt man nicht zwingendermaßen (auch, wenn das dann unter Umständen kein guter Programmierstil ist).

Das wäre folgendes Szenario: Anstatt mir die Visitenkarte eines Großraumbüros geben zu lassen, in dem ich mit einem Mitarbeiter Kontakt aufnehmen will, erstelle ich mir eine exakte Kopie des Hochhauses in dem das Büro ist, in dem der Typ hockt samt dem Typen selber und stells mir in den Garten. ;)

was Schnatterplatsch damit sagen will und da gebe ich ihm vollkommen recht: Zeiger sind wichtig bei C++. Ich nutze diese nur noch... Ich initialisiere kaum noch irgendwelche Objekte, sonder ich erstelle einen Zeiger, der auf ein inititialisiertes Objekt zeigt.
"Objektorientiertes Kochen - wie Sie beim Zubereiten von Reis eine Menge Ressourcen sparen"
Ja, weiß ich doch. ;)

Was ich damit sagen wollte ist, dass man /theoretisch/ auch bei sehr komplexer Software ohne Zeiger auskommen kann. Aus der Sicht eines Anfängers ist das Problem, zu verstehen wann man welche Möglichkeiten einer Sprache nutzt, oder besser gesagt warum andere Leute an bestimmten Stellen in bestimmtem Quellcode eine bestimmte Programmierweise verwenden. Da ist es wichtig, erst einmal zu verstehen dass es bei ein und derselben Sache eben unendlich viele Möglichkeiten gibt, das Ziel zu erreichen.

Dadurch soll klarer werden, wie wichtig es ist sich VORHER die Struktur des Codes zu überlegen und einen guten Programmierstil an den Tag zu legen. Ist dem nicht so?
 
Ach Zeiger sind super und leicht zu verstehen. Ein Zeiger ist eine Variable die eine Speicheradresse enthält. An der Possotin der Adresse stehen dann die Daten oder noch ein Zeiger ;)

Schönen Gruß
Rene
 
@protege_moi:

Ich hab dir mal was gebastelt, womit du den Text auslagern kannst. Ein kleines Textadventure wird gratis mitgeliefert. Sind nur 130 Zeilen Code, sollte also nicht so schwer zu verstehen sein. Bei Fragen, einfach fragen. ;)
 

Attachments

  • TextAdventure.rar
    9.4 KB · Views: 206
Back
Top