Basic Einfaches Rechenprogramm

Elcrian

Commander
Registriert
Feb. 2008
Beiträge
2.493
Hallo,
da ich meinen Test in Informatik zum Thema Fortran verhauen habe wollte ich das ganze mal in Basic aufarbeiten... wir haben aber erst eine Stunde dran gearbeitet. Von daher sind meine Kentnisse nicht sehr hoch.
Ich hätte gerne ein Program welches:
  • Mit zwei Buttons interagiert welche einmal die Formel zur Kreisumfangs-Berechnung und einmal zur Kreisfläche-Berechnung benutzt werden. Man klickt auf Button 1 und Formel 1 wird aktiv usw.
  • Man in eine Textbox den vorher aktivierten jweiligen Radius eingibt, z.B 5. Also Klick auf "Kreisfläche berechnen", Eingabe in die Textbox "5" und ausgabe in einer weiteren als Ergebnis, eventuell mit Popup.
  • Das Eingabefeld sollte vorm Klicken auf einen der beiden Buttons deaktiviert sein

So also:
kreis5wyp.jpg

Unter dem Rechnungs-Button habe ich folgendes hinterlegt:
Code:
Private Sub cmdRechnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRechnen.Click
        Dim r As Integer
        Dim ergebnis As Integer

        r = txt2
        ergebnis = 2 * 3,14 * r
    End Sub

Plan war das dort Variablen deklariert und im txt2 ausgegeben werden. Funktioniert erwartungsgemäß nicht. :D
Wie mache ich das? Das wäre am wichtigsten. Bitte kurz idiotensicher...

Wer Lust hat kann mir auch nen kurzen Denkanstoß zum Thema Button-Auswahl geben.

Grüße
 
Habe von diesem Basic (Microsoft?) zwar keinen blassen schimmer, aber eigentlich müsstest du doch nur den Inhalt der Textboxen auslesen, in Integer umwandeln (bzw. hier gleich noch die Ausnahmenbehandlung einbauen) und anschließend der Ergebnisbox das Ergebnis mitteilen.
 
Ich hab mit Basic noch kaum was gemacht und brauch deswegen schon konkrete Codeteile weil ich so nicht weiterkomme. Wie es im Prinzip geht weiß ich wohl...
 
Hi,

Also wenn du auf den String einer Textbox zu greifen willst dann musst du die Text Eigenscahft von der Textbox aurufen. Also:

Code:
r = Cint(meineTexbox.Text)

Und wie ich das sehe möchtest du auch das dein Ergebnis auf dem Bildschirm angezeigt wird deswegen musst du das Berechnet ergebnis ja auch in einer Textbox speichern :)

Also z.b

Code:
ergebnis = 2 * 3,14 * r
TexboxErgebnis.Txt = CStr(ergebnis)

Achte auch darauf, dass du die Variablen konvertieren musst wenn du sie an eine Textbox übergibst weil diese mit Zahlen nix anfangen kann und anders herum solltest du auch den Text umwandeln den du dir aus einer TextBox hollst da deine Variablen auch nichts mit Strings anzufangen wissen.

Kann sein das es auch ohne Konvertierung geht weil es VB ist aber würde mir gar nicht erst sowas angewöhnen, da es ein schlechter Stil ist :)

Gruß Abcd
 
Richtig schlau werd ich dadurch nicht... Fehler gibt es soweit keine, aber beim Druck auf Berechnen passiert auch nichts.

Rechenbutton:
Code:
    Private Sub cmdRechnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRechnen.Click
        Dim r As String
        Dim ergebnis As String
        r = CStr(txt1.Text)
        ergebnis = 2 * 3.14 * r
    End Sub

Eingabefeld:
Code:
    Private Sub txt1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt1.TextChanged
        Dim r As String
        r = CStr(txt3.Text)
    End Sub

Ausgabefeld: (??)
Code:
  Private Sub txt3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt3.TextChanged
    End Sub
 
Es gibt einen Unterschied zwischen Zahlen und Text. Wenn du etwas in ein Textfeld (Textbox) eingibst, ist es immer Text. Rechnen kann der PC aber nur mit Zahlen, daher muß die Eingabe umgewandelt werden. Hierfür gibt es es Funktionen wie zB
Zahl = CInt(Text)

Von den Zahlen gibt es wieder unterschiedliche. Wichtig für dich sind Kommazahlen (3.14) auch Double genannt oder Ganzzahlen (5) auch Integer genannt. Das Int in der Funtion CInt steht für Ganzzahlen, dh wenn du in das Textfeld 6.2 eingibst wird in "Zahl" nur 6 gespeichert und die Nachkommastelle abgeschnitten.
Kommazahlen werden beim Programmieren immer mit Punkt geschrieben.

Nach der Umformung in eine Zahl, kann damit gerechnet werden, wie das ja schon passiert. Das Ergebnis speicherst du jetzt in "ergebnis". Das nichts passiert, liegt daran, daß du danach nichts machst. Du könntest das Ergebnis in das Eingabefeld schreiben oder in ein Fenster (Popup).

Textfelder haben eine Eingabe und eine Ausgabe-"Funktion"
"ichbintext = Textfeld.Text" liest etwas aus dem Textfeld
"Textfeld.Text = ichbintext" schreibt etwas in das Textfeld

Um also dein Ergebnis im Textfeld auszugeben musst du die Zahl die in "ergebnis" steht wieder in Text (String genannt) umwandeln. Hierfür benutzt man "CStr"
Code:
Textfeld.Text = CStr(ergebnis)
Für ein Popup musst du die Funktion MessageBox.Show benutzen. Dieser kannst du auch Zahlen und Sonstiges übergeben.
Code:
MessageBox.Show(ergebnis)

Beachte die unterschiedlichen Datentypen! Bei einer Berechnung kann kein String/Zeichenkette/Text herauskommen!
Die Ereignisse "TextChanged" werden bei dir nicht benötigt und könnten entfernt werden. Die definierten Variablen haben eh nur Gültigkeit von "Private Sub" bis "End Sub".
 
Danke. Wie gesagt, Basic ist mir noch zu fremd. :D
Geht aber bisher, die Rechnung und Ergebnisausgabe als Popup und in das Textfenster.

Nun: Was muss ich machen damit das Eingabefeld nicht leerbleiben kann?
Code:
        If txt3.Text = "" Then 
            txt3.Text = "Wert eingeben!"
        End If
Ist leider doof und geht nicht.

Und wie ginge das mit den Auswahlbuttons für die verschiedenen Formeln?
 
Das hier müsste gehen:
Code:
If txt3.Text.Length = 0 Then
    MessageBox.Show("Das Feld darf nicht leer sein!")
    Exit Sub
End If
Edit: Der Code von pvc-junkie ist aber evt. zu bevorzugen.
 
Zuletzt bearbeitet:
Die Idee mit de IF-Verzweigung ist schon mal nicht ganz schlecht. Das Ganze in Worte gefasst wäre ungefähr so:
Wenn das Textfeld nicht leer ist, dann berechne, ansonsten gibt fehlermeldung aus.
Die soll gemacht werden, wenn man den Button drückt. Also wird die IF-Verzweigung in das Click-Ereignis implementiert. Zur Fehleranzeige würde sich wieder ein Popup anbieten.
Code:
Private Sub cmdRechnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRechnen.Click
        If txt3.Text <> "" Then
                Dim r As String
                Dim ergebnis As String
                r = CStr(txt1.Text)
                ergebnis = 2 * 3.14 * r
        Else
                MessageBox.Show("Fehler")
        End If
    End Sub

Der obenstehende Code ist nur für den Button namens "cmdRechnen" also für Umfang des Kreises. Wenn du mit dem zweiten Button etwas anderes machen willst, so musst du ihm ebenfalls ein Click-Ereignis hinzufügen und kannst dort wie oben etwas berechnen.
 
Danke, funktioniert perfekt. Nur das das andersrum muss, also
Code:
 If txt3.Text <> "" Then
               MessageBox.Show("Fehler")
        Else
               Dim r As String
                Dim ergebnis As String
                r = CStr(txt1.Text)
                ergebnis = 2 * 3.14 * r

        End If

Das mit den Buttons hab ich nocht nicht ganz.

Me.OnClick.Activate(cmdRechnen_Click)
Oder sowas? Macht nun so keinen Sinn da der Rechenbutton ja für beide ist.
 
Doppelklick einfach mal auf den anderen Button im Formular-Editor (Screenshot im ersten Post). Das was du jetzt sehen solltest ist der Quellcode für ein Click-Ereignis. Jedes Element hat unzählige Ereignisse, die man im Visual Studio alle einsehen und auswählen kann.

Deine Abfrage ist unsinnig. Einmal wir abgefragt ob txt3 nicht leer ist und dann wird txt1 an Radius übergeben. Die Textfelder sollten sinnvoller benannt werden.

Desweiteren hab ich dir ausführlich den Unterschied zwischen Text und Zahlen erklärt.
Code:
r = CStr(txt1.Text)
ergebnis = 2 * 3.14 * r
Wieso wir Text in Text umgewandelt und dann damit gerechnet? LESEN!!!
 
Ich bin nicht ganz dement, das funktioniert haargenau so.
Code:
        If txt3.Text <> "" Then 'Bedingung damit die Texteingabe nicht leerbleiben kann
            MessageBox.Show("Wert eingeben!")
        Else
            Dim r As Double 'Variable für den Radius
            Dim ergebnis As Double 'Variable für das Ergebnis
            r = CDbl(txt1.Text) 'Auslesen der Variable r aus dem Eingabefeld
            ergebnis = 2 * 3.14 * r 'Rechnung
            txt3.Text = CStr(ergebnis) 'Ausgabe in Ausgabetextbox
            MessageBox.Show("Das Ergebnis lautet: " & ergebnis) 'Ausgabe als Popup

        End If
 
Na das sieht schon besser aus. Um jetzt mit zwei Buttons etwas "umzuschalten" (in dem Fall welche Formel benutzt wird), wird eine globale Variable benötigt. Diese ist außerhalb der ganzen "Private Sub" (Prozeduren) zu definieren, also einfach oben drüber. Jetzt kannst du zB eine Zahl in der Variable speichern, sie mit den Buttons ändern und beim berechnen auswerten. Dazu bietet sich eine weitere If-Verzweigung an.
 

Ähnliche Themen

Zurück
Oben