Verbesserungsvorschläge
-
Abstraktion! Du wiederholst 20x fast den gleichen Code. Versuche dein Problem in Funktionen zu zerlegen, die du mehrmals benutzen kannst. Optimalerweise* hast du in deinem Code keine zwei Zeilen Code jemals doppelt.
Werde den Spaghettisalat mit den ganzen gotos los! Die Zerlegung in Funktionen wird dir dabei helfen. Im Prinzip dürfte jedes goto bei dir stattdessen ein Funktionsaufruf werden, denn deine jetzigen Codeblöcke entsprechen schon fast Funktionen. Vorteil der Funktionen ist aber gewaltig, denn dann ist garantiert, dass die Codeblöcke auch wirklich unanbhängig sind und ein normaler Mensch (d.h. jeder außer dir und du selber in ein bis zwei Wochen) kann das Programm nachvollziehen, ohne neue Hirnwindungen zu bekommen.
Das sind erst einmal die allerwichtigsten zwei Punkte. Wenn das gemacht ist, kann man weitergucken, es gibt noch viel mehr Verbesserungspotential.
*: Naja, wirklich optimal ist das nicht, aber es ist eine gute Anfängerübung, wenn du dies anstrebst.
-
arghonaut schrieb:
Hacker schrieb:
Alles neu! Haste bei Jürgen Wolf gelernt oder was!? Das ist unglaublich hässlich, Variablennamen immer so lokal wie möglich halten, niemals den Standard-Namensraum ausschütten, keine OS-spezifischen Konsolenbefehle benutzen, und dazu ist das alles noch so imperativ programmiert.....
Das ist doch alles relativ wurscht.
Das eigentliche Problem ist mMn., dass alles in der main gemacht wird, und anstatt die Funktionalität in Funktionen/Klassen auszulagern, wird alles hinter Sprungmarken (goto) versteckt. Das wird unheimlich unübersichtlich und schwer erweiterbar.Hmmm? Das war ein Punkt von mir.
-
Vielen Dank für die Vorschläge.
Nun ich mach das Programm für die Schule als Projekt.
Öhm ich übe das Ganze mit einem Buch (jetzt lerne ich C++ , Dirk Louis)
Ausserdem werde ich das alles noch in der Ausbildung lernen ;).Das Buch hab ich noch ned fertig deshalb kenn ich das mit den Funktionen nicht.
Ich werde das sicher noch versuchen zu ändern.
Könnt ihr mir sagen wie man hoch 2 macht?
-
p ist zwei hoch x
als double:
double p=std::pow(2,x);
als int:
int p=1<<x;
-
Wie wäre es allgemein mit
x*x?~edit: so ein kurzer Satz, so viele Rechtschreibfehler, *schäm*.~
-
@volkard: Er will doch x^2, nicht 2^x.
-
Flyerz1934 schrieb:
Das Buch hab ich noch ned fertig deshalb kenn ich das mit den Funktionen nicht.
Draußen scheint die Sonne. Setz eine Sonnebrille auf und geh mit dem Buch in den Garten und hau es Dir flugs in den Kopf. Ganz oberflächlich, so daß Du es bis morgen durch hast.
Und dann mach weiter wie gehabt, aber mit einem besseren Blick fürs Große. Im Endeffekt sparst Du damit sicherlich einiges an Zeit. (Benutze für dieses Projekt keine selbergebauten Klassen.)
-
Hacker schrieb:
Hmmm? Das war ein Punkt von mir.
Auch ohne goto wäre das Programm noch imperativ gehalten.
-
Aber wenn ich das Buch nur oberflächlich lese (d.h ohne üben), habe ich es morgen oder übermorgen schon wieder vergessen

-
Volkard!!! Du bist zurück!!

@argonhaut: hab ich das gesagt? Ich hab einfach gesagt, es wurde imperativ programmiert, mehr nicht (auch nicht woraus ich das schließe).
-
Irgendwie erinnert mich der Code mit den vielen goto an früheres BASIC (vor 1980?), das auch noch keine Funktionen kannte. Was soll man daran verbessern?
Wegschmeissen und ohne goto neu machen!
-
Hacker schrieb:
hab ich das gesagt? Ich hab einfach gesagt, es wurde imperativ programmiert, mehr nicht (auch nicht woraus ich das schließe).
Selbst wenn du die goto durch Funktionen ersetzt, bleibt das Programm eine Aneinanderreihung von "Anweisungen" -> immer noch imperativ. Demnach hast du nicht das selbe ausgedrückt. Und selbst wenn es das selbe gewesen wäre, der OP kann mit "kein goto" sicher mehr anfangen als mit "das ist imperativ programmiert -> böse".
Aber diese Nebendiskussion ist unnötig, da mittlerweile das goto schon so oft angemeckert wurde, dass es klar ist, was zuerst geändert werden sollte.
-
Flyerz1934 schrieb:
Aber wenn ich das Buch nur oberflächlich lese (d.h ohne üben), habe ich es morgen oder übermorgen schon wieder vergessen

Du sollst es überfliegen, damit Du fürderhin in die richtigen Richtungen vorausüberlegst. Und dann da weiterlesen, wo Du gerade bist. Mit Üben.