Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und...

Post on 06-Apr-2015

102 views 0 download

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!