6.2 Numerische Operationen

Aus dem Mathematikunterricht kennen wir schon einige Operationen, nur nennen wir sie die 4 Grundrechenarten. Das sind also:

plus
+
3 + 5 = 8

minus

5 – 2 = 3

mal
*
4 * 3 = 12

geteilt
/
14 / 2 = 7

Alle diese Rechenzeichen können zwischen Variablen oder Zahlen angewendet werden. Die Abbildung rechts zeigt als Beispiel die Addition zweier Zahlen. Im Log-Viewer ist zu sehen, dass insgesamt 3 Sekunden gewartet wird, bis der zweite Ton gespielt wird.

Dieses Beispiel zeigt übersichtlich die Schreibweise der Addition zweier Zahlen. Allerdings kann man sich fragen welcher Vorteil sie bietet. Einfacher wäre es ja, gleich

sleep 3

zu schreiben. Richtig Sinn macht es erst wenn man Variablen verwendet, so wie es in Code 9 zu sehen ist. Die Funktion „ring_c_d“ wird 2mal aufgerufen. Einmal mit dem Wert „i“ und dann mit „i+1“. „i“ wird bei jedem Durchlauf der Schleife um 1 hochgezählt. Bei jedem Schleifendurchgang ergeben sich so 2 andere Zahlen.

16.times do |i|
ring_c_d i
sleep 0.25
ring_c_d i+2
sleep 0.25
end

Deswegen kann man nicht gleich eine Zahl als Ergebnis der Addition eintragen.

 

Neben den 4 Grundrechenarten gibt es noch weitere Operationen:
Für das Potenzieren stehen die zwei Sterne: **. Hier ein Beispiel: 3**4 = 3*3*3*3 = 81.

Für den Modulo-Operator steht das Prozentzeichen: %. Hier ein Beispiel: 11%4 = 3. Diesen Operator will ich mal kurz erklären, weil er nicht so häufig benutzt wird. Modulo ermittelt den Rest einer Division. 11%4 bedeutet, ich teile 11 durch 4 und das sind 2 Rest 3, weil 2*4=8 und 8 + 3 = 11.

Und dann gibt es noch die Klammern (rund), die den Zweck haben, sich in der Reihenfolge der Rechnung vor die Punktrechnung zu setzen. Also zuerst Klammern, dann Punktrechnung und dann Strichrechnung.

Dass es einen Unterschied macht, ob zuerst multipliziert oder addiert wird, ist anhand eines Beispieles relativ leicht einzusehen.

Mit Klammern – also zuerst die Addition:
3*(4+5) = 3*9 = 27

Ohne Klammern – also zuerst die Multiplikation:
3*4+5 = 12 + 5 =17

Natürlich taucht dann sofort die Frage auf, warum man die Reihenfolge der Rechnung überhaupt ändern will.
Dazu ein Beispiel. Ich bin in einem Geschäft und will 3 Handys mit der passenden Hülle kaufen. Jedes Handy kostet 175€, jede Hülle kostet 25€.

Wie rechne ich den Gesamtpreis aus: Also Handy + Hülle: 175€ + 25€ = 200€. Diesen Betrag mal 3, also 200€ * 3 = 600€. Die gesamte Rechnung lautet:

(175€ + 25€) * 3 = 600. Und das stimmt nur wenn ich die Klammern setzte und den Term in der Klammer dann zuerst ausrechne.
Was kann man nun in Sonic Pi berechnen? Tatsächlich gibt es hier nicht so viel zu rechnen. Ist ja mehr Musik. Aber man kann Sonic Pi als Taschenrechner nutzen. Wichtig dafür ist der Befehl

puts

der im Log-Viewer Ausgaben machen kann. Ausgegeben wird dabei, was rechts von „puts“ als Term steht.

Noch eine Erklärung zu „puts“ an sich und der letzten Zeile. „puts“ erwartet als Parameter einen Term, oder eine Variable, um deren Inhalt auszugeben. Will man aber eine Zeichenkette (im Englischen „String“ genannt) ausgeben, also beispielsweise den Namen einer Variablen und nicht deren Inhalt, dann schließt man den String in ein Hochkomma ein.

################################
# Variables
# Hans Gruendel
# 20.08.2015
#
################################
# Operators
# Hans Gruendel
# 25.08.2015
#
################################
in_thread do
16.times do |i|
ring_c_d i
sleep 0.25
ring_c_d i+2
sleep 0.25
end
end

define :ring_c_d do |tone|
all_tones = [:c3, :e3, :g3, :c4, :d3, :f3, :a3, :d4].ring
use_synth :fm
play play all_tones[tone]
end
Code  Addition einer Zahl und einer Variablen

 

rechenoperation

 

rechenoperation_2

 

rechenoperation_3

 

summand1 = 14
summand2 = 6
sum = summand1 + summand2
puts sum

minuend = 10
subtrahend = 7
difference = minuend – subtrahend
puts difference

factor1 = 3
factor2 = 5
product = factor1 * factor2
puts product

dividend = 26
divisor = 5
quotient = dividend / divisor
puts quotient

dividend = 26
divisor = 5.0
quotient = dividend / divisor
puts quotient

dividend = 26
divisor = 5
mod = dividend%divisor
puts mod

factor = 2
summand2 = 5
summand3 = 5

result = factor * (summand2 + summand3)
puts result

base = 3
exponent = 4
result = base ** exponent
puts result

puts ‚End of Calculation‘
Code Noch mehr Rechenoperationen in Sonic Pi