VBS/Mathe-Übungen Binominalkoeffizienten - HPK

MINT‐Fächer kombinieren HP Kiermaier ©2016 BinominalkoeffizientenmitVisualBasic‐Scripting(VBS)
Der Vorteil von VBS ist ja, dass es ohne Compiler oder Voraussetzungen auf jedem Windows‐PC läuft. Deshalb ist es ideal, um kleine Aufgaben oder Beispiele von Studenten programmieren zu lassen. Für dieses Beispiel braucht man nur einen einfachen Texteditor (z.B. Notepad mit WIN+R öffnen). Der Code muss mit der Endung .VBS gespeichert werden und kann dann einfach per Doppelklick gestartet werden. 'Binominalkoeffizienten berechnen
function fakultaet(a)
'Berechnet die Fakultät von der Zahl in a
erg=1
for i=1 to a: erg = erg * i: next
fakultaet = erg
'Ergebnis zurückgeben
end function
function binomkoeff(b, c)
'Berechnet den Binominalkoeffizienten von b über c
erg=0
'bzw. b aus c (b c)
if (c < b) then erg = fakultaet(b)/(fakultaet(c)*fakultaet(b-c))
binomkoeff = erg
end function
text = "(n über k) ermittelt wieviele Kombinationen " & vbCrLf
text = text & "von k-Zahlen aus dem Vorrat n existieren" & vbCrLf
text = text & "z.B. ergibt (49 über 6) die Anzahl der " & vbCrLf
text = text & "Möglichkeiten 6 (Richtige) aus 49 zu ziehen" & vbCrLf
text = text & "Gib den Wertevorrat n ein"
n = inputbox(text,"Kombinatorik")
k = Inputbox("Nun gib k (die Auswahl daraus) ein","Kombinatorik")
if n="" or k="" then wscript.quit
'Abbruch?
n=cint(n)
k=cint(k)
'in ganze Zahlen umwandeln
result = binomkoeff(n, k)
text = "Es gibt also " & result & " Möglichkeiten " & k
text = text & " Zahlen aus " & n & " zu kombinieren"
msgbox text,,"Kombinatorik"
Nach dem Abtippen als 'binom.vbs' z.B. auf dem Desktop speichern und dann per Doppelklick starten. Wenn man für n=49 eingibt und für k=6, dann sieht man, es gibt 13983816 Möglichkeiten. Dagegen sind für k=3 (3 Richtige) nur 18424 Kombination möglich (also wahrscheinlicher). Natürlich lassen sich auch die Binominalkoeffizienten für den Binomischen Lehrsatz berechnen. Einfach nach den Funktionen schreiben oder unter dem obigen anhängen:
'ab hier Binomischer Lehrsatz
n = InputBox("Wie lautet die Potenz n von (x+y)^n", "Binominalkoeffizienten")
If n = "" Then wscript.Quit
'Abbruch?
n = CInt(n)
'n in ganze Zahl umwandeln
If (n < 2) Then wscript.Quit
'falls n<2 macht es keinen Sinn, also fertig
result = "(x+y)^" & n & " = y" & "^" & n
'der erste und der letzte Term ist einmal x^n
'bzw. y^n, weil (n über 0) = 1
For i = 1 To n - 1
w = binomkoeff(n, i)
'(n über 1), (n über 2), usw. ausrechnen
result = result & " + " & w
If i > 1 Then result = result & "x^" & i Else result = result & "x"
If (n - i) > 1 Then result = result & "y^" & n - i Else result = result & "y"
Next
result = result & " + x^" & n
MsgBox result, , "Binominalkoeffizienten"