Zähler in Rechenübungsprogramm

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von Emma-En.

    Dann meine Erklärung in der ausführlichen Variante:
    Eine TextBox ist genau das: Eine Box, in der ein Text steht. Also quasi wie ein Karton, in dem z.B. ausgeschnittene Ziffern aus buntem Papier drin liegen, die man späßleshalber unterschiedlich kombinieren kann und dabei immer wieder neue Zahlen erhält. Mit dem Papierinhalt eines Kartons rechnet man aber nicht. Vor allem nicht im Kopf. Man rechnet (m.E.) abstrakt. Dazu braucht man keine Papierzuschnitte. Und daher ist es ein no go, ein CE wie die TextBox zum Rechnen herzunehmen. Werte und Berechnungen gehören immer in Variablen. Das einzige, was in diesem Zusammenhang erlaubt ist, ist, dass man den Kartoninhalt hernimmt, schaut was drinsteht und das als Zahl uminterpretiert. Ein (sehr junges) Kind kann mit den Papierzuschnitten nichts anfangen, es weiß nicht, was es darstellen soll. Aber später weiß man es besser. Da fängt die Reinterpretation der Zuschnitte in jene abstrakte Gebilde an, mit denen sich rechnen lässt. Und diese Reinterpretation geht z.B. über

    VB.NET-Quellcode

    1. Dim Beispiel = CInt(TextBox1.Text)
    = "Reinterpretiere das, was in der TextBox steht, als ganze Zahl." Das wird zwar dann murks, wenn RfG seine Rouladen mit Klöße in den Karton legt, reicht aber in manchen Fällen aus. Der nächste Schritt wäre über TryParse:

    VB.NET-Quellcode

    1. Dim Beispiel As Integer
    2. Dim DieUmwandlungWarErfolgreich = Integer.TryParse(TextBox1.Text, Beispiel)

    dazu der Mikrosaftkommentar

    MSDN schrieb:


    Konvertiert die Zeichenfolgendarstellung einer Zahl in die entsprechende 32-Bit-Ganzzahl mit Vorzeichen. Ein Rückgabewert gibt an, ob die Konvertierung erfolgreich abgeschlossen wurde.

    Was es da nicht zu verstehen gibt, entzieht sich meiner Kenntnis. Der o.g. TryParse-Code sagt aus: "Versuche (try) den Text von TextBox1 in eine Ganzzahl umzuwandeln (parse), gib zurück, ob das funktioniert hat (will heißen: ob der Text als Zahl interpretiert werden konnte) und steck dann noch, wenn es geklappt hat, den entstehenden Zahlenwert in die Variable Beispiel."

    Daher hoffe ich, dass Deine schnell geschriebenen Zeilen etwas zu schnell abgeschickt wurden:

    VB.NET-Quellcode

    1. Dim Beispiel As Integer
    2. Beispiel =Textbox1
    3. Textbox1 = 1000-Zahl1

    Zeile#1: ok
    Zeile#2 sagt: "In die Variable Beispiel, in die nur Ganzzahlen reingehen, soll ein Karton mit Papierzuschnitten rein." :?:
    Zeile#3 sagt: "Der Karton mit Papierzuschnitten ist 1000 - Zahl1." Mit der unbestätigten Annahme, dass Zahl1 eine Ganzzahl ist, würde sich der Satz ergeben: "Der Karton mit Papierzuschnitten ist z.B. 541." Ich hoffe es ist klar, dass das überhaupt keinen Sinn ergibt. Nicht als Satz. Und schon gar nicht als Code.

    "Naja, eigentlich habe ich ja nicht TextBox1, sondernTextBox1.Text gemeint."
    Dann würde es nicht viel besser werden:
    Zeile#2: "In die Variable Beispiel, in die nur Ganzzahlen reingehen, sollen bunte Papierzuschnitten rein." Nein. In die Variable gehen nur abstrakte, ganze Zahlen rein. Kein Papier, auch nicht, wenn sie wie Ziffern geformt sind.
    Zeile#3: "Die bunten Papierstücke im Karton sind 534". Auch nicht. Papierstücke können nicht 534 sein. Oder sonst eine Zahl. Sie können so aussehen, aber sie sind es nicht. Wie lässt man die bunten Papierstücke wie Ziffern aussehen? Indem man das entsprechend im Code ausdrückt. So wird aus Zeile#2, wie oben erwähnt:

    VB.NET-Quellcode

    1. Dim DieUmwandlungWarErfolgreich = Integer.TryParse(TextBox1.Text, Beispiel)

    und aus Zeile#3:

    VB.NET-Quellcode

    1. TextBox1.Text = (1000 - Zahl1).ToString()

    ="Rechne 1000 minus Zahl1, wandle das Ergebnis in einen Text um (indem Du das Papier so zuschneidest, dass sie wie Ziffern aussehen) und lege diesen Text (= richtig angeordnete Papierzuschnitte) in den Karton." Das ergibt Sinn. Und so läuft es dann auch.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    @Emma-En Eher so:

    VB.NET-Quellcode

    1. Dim Beispiel as Integer
    2. If Not Integer.TryParse(Textbox1.Text, Beispiel) Then
    3. MessageBox("Zahl eingeben")
    4. End If
    5. Dim Zahl = 1000 - Beispiel
    6. Textbox1.Text = Zahl.ToString
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Man könnte ja auch einfach nen NumericUpDown nehmen... ;)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hallo zusammen,
    nach ein paar Tagen Ruhe, habe ich heute Zeit gefunden, etwas weiter zu machen.
    Ich habe den Code von VaporiZed und RodFromGermany eingefügt. Nachdem ich das gemacht habe, ging fast gar nichts mehr.
    Dabei habe ich mir die Frage gestellt, warum ich das Ergebnis in Textbox1 ausrechnen sollte. Die Textbox ist doch für das Eintragen der Antwort da. Dann ist es doch eher schlecht, wenn das Ergebnis schon drin steht.

    Ich bin nun noch dabei, ein paar Spielereien einzubauen, wie eine Stoppuhr. Mit ein paar Videos usw. lässt sich das auch relativ gut einbauen, auch wenn es für mich Fummelei und viel ausprobieren bedeutet, aber das macht dass ganze ja erst interessant :)

    Ich danke auf jeden Fall für eure Gedult und Hilfe, wünsche euch allen ein besinnliches Weihnachtsfest und schöne Weihnachtstage.
    Beste Grüße