Aufgabe:
Erstellen Sie ein Programm, das eine Messwertreihe berechnet und abspeichert. Dabei gelten folgende Kriterien:
Gegeben ist eine Spannungsquelle, die zwischen den beiden Grenzwerten Umin und Umax eingestellt werden kann.
An die Spannungsquelle wird ein ohmscher Widerstand RLastangeschlossen.
Nach dem ohmschen Gesetz sollen 10 Strom-Werte für Spannungen zwischen Umin und Umax (in gleichmäßigen Abstand) berechnet werden. Die Anzahl der Messwerte kann in späteren Programmversionen eingegeben werden.
Die Stromwerte werden in einem eindimensionalen Datenfeld "Messwert()" abgespeichert.
Berechnung und Ablegen der Messwerte werden durch Betätigen der taste "Berechnen" aktiviert.
Durch Betätigen der Taste "Ausgeben" wird der Inhalt des Datenfelds in einer Listbox angezeigt.
Zusatz:
Im nächsten Schritt soll die Schaltung so verändert werden, dass auch der Widerstand RLast zwischen Rmin und Rmax einstellbar ist.
Überlegen Sie sich eine geeignete Struktur für das (mehrdimensionale) Datenfeld und entwickeln Sie einen Algorithmus, um mehrere Meßreihen in Abhängigkeit von Rlast und U aufzunehmen.
Wie könnte die Aufgabe aussehen?
Oberfläche:
Quellcode:
Option Explicit
Dim i As Integer
Dim k As Integer
Dim intAnzahl As Integer
Dim Meßwert() As Double
Private Sub cmdAusgabe_Click()
lstausgabe.Clear
'#################################### Ausgabe ############################
For k = 0 To intAnzahl Step 1
For i = 0 To intAnzahl Step 1
Meßwert(i, k) = Format(Meßwert(i, k), "fixed")
lstausgabe.AddItem Meßwert(i, k)
Next i
Next k
picAusgabe.Cls
picAusgabe.Scale (0, 2)-(intAnzahl + 1, 0)
For i = 0 To intAnzahl Step 1
picAusgabe.Line (0, Meßwert(0, i))-(intAnzahl, Meßwert(intAnzahl, i))
Next i
'#################################### Ausgabe ############################
End Sub
Private Sub cmdBerechnen_Click()
Dim dblUmin As Double
Dim dblUmax As Double
Dim dblRLastmin As Double
Dim dblRLastmax As Double
Dim dblDifU As Double
Dim dblDifR As Double
'################################### Zuweisung ###########################
If IsNumeric(txtumin.Text) And IsNumeric(txtumax.Text) And IsNumeric(txtumax.Text) Then
dblUmin = txtumin.Text
dblUmax = txtumax.Text
dblRLastmin = txtrlastmin.Text
dblRLastmax = txtrlastmax.Text
intAnzahl = txtAnzahl.Text - 1
ReDim Meßwert(0 To intAnzahl, 0 To intAnzahl) As Double
'#################################vv Berechnung vv########################
dblDifU = dblUmax - dblUmin
dblDifR = dblRLastmax - dblRLastmin
For i = 0 To intAnzahl Step 1
For k = 0 To intAnzahl Step 1
Meßwert(i, k) = (dblUmin + dblDifU / intAnzahl * i) / (dblRLastmin + dblDifR / intAnzahl * k)
Next k
Next i
'#################################^^ Berechnung ^^########################
End If
End Sub
Private Sub cmdEnde_Click()
End
End Sub
Private Sub picAusgabe_Click()
picAusgabe.Cls
picAusgabe.Scale (0, 2)-(intAnzahl + 1, 0)
'picAusgabe.Line (23, 30)-(40, 40)
'picAusgabe.Line (23, 30)-(40, 50)
For i = 0 To intAnzahl Step 1
picAusgabe.Line (0, Meßwert(0, i))-(intAnzahl, Meßwert(intAnzahl, i))
'picausgabe.
Next i
End Sub
Zu kompliziert??
Dann Download als Projekt (2,3 KB)