Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und...
-
Upload
gebhard-henke -
Category
Documents
-
view
104 -
download
0
Transcript of Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und...
Mehrfachausführungen
Schleifen in
VB 2010 ee
Programmidee:
Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das 1x1).
Das könnte so aussehen:
Mögliches Formular:
Textbox
Listbox
Label
Buttons
Was soll das Programm können?
• Einen Wert aus der Textbox einlesen
• Diesen Wert mit 1 bis 10 multiplizieren
• Das 1x1 in der Liste ausgeben
• sich schließen können
• die Eingabefelder leeren
Syntax Listbox
• Objekt.Methode
• lst_Listbox.Items.Add(was reinsoll)
Syntax Multiplikation
Ergebnis = Faktor1 * Faktor2
Für die Ganze Prozedur:
• Deklaration der Grundzahl:dim Grundzahl As Single
• Einlesen der Grundzahl:Grundzahl = txt_Grundzahl.text
• Multiplikation:Ergebnis = Grundzahl * 1
• Ausgabe:lst_Ergebnis.items.add(Ergebnis)
Das ganze 1x1:
Die Multiplikation und die Ausgabe muss natürlich für die Zahlen von 1 bis 10 wiederholt werden. Ergebnis = Grundzahl * 2 lst_Ergebnis.items.add(Ergebnis) Ergebnis = Grundzahl * 3 lst_Ergebnis.items.add(Ergebnis)
Ergebnis = Grundzahl * 10 lst_Ergebnis.items.add(Ergebnis)
Problem:
• Ein ziemlich langer Code für ein ziemlich kleines Progrämmchen,
Oder???
Lösung
Wir sagen dem Computer, er solle denselben Vorgang mit verschiedenen Zahlen wiederholen.
Die Schleife
For-Next-Schleife
Pseudo-Code:
Mache von i = 1 bis 10 folgendes:
Ergebnis = Grundzahl * i
Schreibe das Ergebnis ins Label
Nimm das nächste i
Syntax: For-Next-Schleife
• For i = Startzahl to Endzahl
Anweisungsblock
Next
VB-Code
Das heißt für uns:
For i = 1 to 10
Ergebnis = Grundzahl * i
lst_Ergebnis.Items.Add(Ergebnis)
Next i
Ein Versuch…
… das Programm macht dasselbe wie vorher, es wurde aber wesentlich weniger Code benötigt.
Großer Vorteil:
Wenn wir das Programm erweitern wollen, dass es bis zum 20-, 30-, 200- fachen der Grundzahl oder sonst wie weit rechnet, müssen wir nur einen Wert in der Schleife ändern:
For i = 1 To Obergrenze
Freie Wahl der Obergrenze
Dann kann die Obergrenze doch aber bestimmt auch frei gewählt werden, sprich:
Vom Anwender festgelegt werden:
Los Geht‘s
Code für großes 1x1:
Private Sub cmd_Rechne…
Dim Grundzahl As Single
Dim Faktor As Integer, Dim Ergebnis As Single
Dim i As Integer
Grundzahl = txt_Grundzahl.text
Faktor = txt_Faktor.text
For i = 1 To Faktor
Ergebnis = Grundzahl * i
lst_Ergebnis.items.add(ergebnis)
Next
End Sub
Operatoren
• Bekannte Operatoren sind:
+ für Addition
- für Subtraktion
/ für Division
* für Multiplikation
Ein neuer Operator:
Modulo-Rechnung:
Entspricht der aus der Grundschule bekannten Division mit Rest.
38 : 7 = 5 Rest 3
79 : 2 = 39 Rest 1
80 : 2 = 40 Rest 0
Als Modulo:
38 : 7 = 5 Rest 3
79 : 2 = 39 Rest 1
80 : 2 = 40 Rest 0
38 mod 7 = 3
79 mod 2 = 1
80 mod 2 = 0
Ein Übungsprogramm
• Erstelle ein Programm, in das zwei Zahlen eingegeben werden, die dann „modulo“ gerechnet werden.
Der Rest dieser Division soll dann ausgegeben werden.
Mögliches Formular:
Woran müsst ihr denken?
• Deklaration der nötigen Variablen
(Zahl1, Zahl2, Ergebnis)
• Einlesen der Zahlen
• Eigentliche Rechnung
• Ausgabe
Programmcode:
Dim Zahl1 As Integer
Dim Zahl2 As Integer
Dim Ergebnis As Integer
Zahl1 = txt_Zahl1.Text
Zahl2 = txt_Zahl2.Text
Ergebnis = Zahl1 Mod Zahl2
Lbl_Ergebnis.Text = "Bei Division von " & Zahl1 &
" durch " & Zahl2 & " bleibt der Rest " &
Ergebnis & "."
Zweites Modulo-Programm:
• Schreiben Sie ein Programm, dass entscheidet, ob eine Zahl durch eine andere Zahl teilbar ist und eine entsprechende Meldung ausgibt.
Voraus-Überlegungen:
• Wie muss das Formular aussehen?• Welche Schritte muss das Programm
ausführen? (Algorithmus)• Welche Variablen benötige ich?• Wie müssen die Variablen deklariert sein?• Wie sieht der Programmcode aus
Dann mal los, ihr seid dran!
Mögliches Formular:
Benötigte Schritte
• Modulo Rechnung
• If-Entscheidung
Wenn Ergebnis = 0, dann Teiler
Wenn Ergebnis ≠ 0, dann kein Teiler
• Ausgabe in einem Label
Benötigte Variablen und ihre Deklariation
Benötigt werden große ganze Zahlen
Dim Zahl1 As Long
Dim Zahl2 As Long
Dim Ergebnis As Long
Programmcode
Private Sub cmd_teilt_Click…
Zahl1 = txt_Zahl1.Text
Zahl2 = txt_Zahl2.Text
Ergebnis = Zahl2 mod Zahl1
If Ergebnis = 0 Then
lb_lErgebnis.Text = Zahl1 & " ist ein Teiler von " & Zahl2 & "."
Else
lbl_Ergebnis.Text = Zahl1 & " ist nicht Teiler von " & Zahl2 & "."
End If
End Sub
Aufgabenstellung
Jetzt seid ihr soweit, in euren Taschenrechner eine Funktion einzubauen, die überprüft, ob einen eingegebene Zahl eine Primzahl ist.
Viel Erfolg!