Programmierkurs
für Naturwissenschaftler/innen

Arithmetische Operatoren

In diesem Abschnitt lernen Sie die arithmetischen Operatoren kennen.

Grundlegende arithmetische Operationen

Wir haben bereits eine Addition in Variablen verwendet.

Die vier arithmetischen Operationen sind jeweils:

  • +

  • -

  • * (Multiplikation)

  • / (Division)

Der Rest kann berechnet werden mit:

  • %

Zum Beispiel gibt

console.log(5 % 3)

den Rest von 5 geteilt durch 3 als 2 aus.

Die Potenzierung kann berechnet werden mit:

  • **

(Beachten Sie, dass einige Programmiersprachen kein ** haben oder ein anderes Symbol verwenden). Zum Beispiel gibt

console.log(2 ** 3);

8, die dritte Potenz von 2 (nämlich $2^3$), aus. Man muss beachten, dass -2 ** 4 mehrdeutig ist, ob es sich um $-2$ hoch $4$ oder $2$ hoch $4$ multipliziert mit $-1$ handelt. Deshalb ist diese Schreibweise nicht erlaubt. In diesem Fall müssen Sie (-2) ** 4 ($= 16$) oder -(2 ** 4) ($=-16$) schreiben.

* und ** sind programmspezifische Schreibweisen und sollten in Protokollen oder anderen Dokumenten bzw. Diagrammen usw. nicht verwendet werden.

Versuchen Sie, eine Berechnung mit den sechs oben eingeführten Operatoren +, -, *, /, % und ** durchzuführen.

Zum Beispiel:

console.log(10 + 3);
console.log(10 - 3);
console.log(10 * 3);
console.log(10 / 3);
console.log(10 % 3);
console.log(10 ** 3);

Ergebnis

() kann verwendet werden, um Prioritäten zu ändern oder zu klären oder um Mehrdeutigkeiten zu vermeiden. Für diese Zwecke können jedoch weder [] noch {} verwendet werden.

console.log(2 * (3 + 4));
console.log((2 * 3) + 4);
console.log((-2) ** 3);

Das erste ist ein Beispiel, dass $2 \times (3 + 4)$ statt $2 \times 3 + 4$ berechnen wird, d. h. wird die Addition zuerst berechnet werden.

Die zweite ist gleichbedeutend mit console.log(2 * 3 + 4), also ohne Klammern. Mit anderen Worten: Die Klammern sind in diesem Fall nicht notwendig, aber in Ordnung. Dies ist ein Beispiel dafür, dass es in Ordnung ist, zusätzliche Klammern zu setzen, solange sich die öffnenden und schließenden Klammern ohne Über- oder Unterschreitung entsprechen. Dieses Beispiel ist selbsterklärend und macht nicht viel Sinn, aber in Praxis könnten Sie beim Schreiben komplexerer Bedingungen solche Klammern (die nicht wirklich notwendig sind) verwenden, um die Priorität eindeutig anzuzeigen.

Das dritte Beispiel ist das, das wir bereits gesehen haben.

Schreiben Sie ein Programm, das die folgenden Berechnungen ausgibt.

$$ \begin{align} & 5 + 3 \\ & 3 - 10 \\ & 20 - ( 3 \times 4 ) \\ & 5 \times (-3) \\ & 5 + \left\{ \frac{3}{4} \times (4 - 2) \right\} \\ & 2^{-3} \end{align} $$

Ergebnis

Berechnungen mit Variablen

Bei der Zuweisung an eine Variable können Sie statt einer Zahl auch einen Ausdruck schreiben. Sie können auch Ausdrücke für die Initialisierung verwenden. Die Folgenden sind die korrekten Vorgehensweisen.

let a;
a = 10 + 20;

let b = 50 / 3;

Sie können auch Berechnungen mit Variablen durchführen.

let a = 5;
let b = 3;

console.log(a + b);
console.log(a - b);
console.log(a * b);
console.log(a / b);
console.log(a % b);
console.log(a ** b);

Natürlich sind auch Berechnungen zwischen Variablen und Zahlen möglich.

let a = 5;

console.log(a + 3);
console.log(a - 3);
console.log(a * 3);
console.log(a / 3);
console.log(a % 3);
console.log(a ** 3);

Sie können auch neue Variablen erstellen und die Ergebnisse in die Variablen einfügen.

let a = 5;
let b = 3;

// Natürlich
//   let calc1;
//   calc1 = a + b;
// ist auch möglich.
let calc1 = a + b;
let calc2 = a - b;
let calc3 = a * b;
let calc4 = a / b;
let calc5 = a % b;
let calc6 = a ** b;

console.log(calc1);
console.log(calc2);
console.log(calc3);
console.log(calc4);
console.log(calc5);
console.log(calc6);

Diese sind der normalen Mathematik sehr ähnlich.

Führen Sie einige Berechnungen mit Variablen durch.

Ergebnis

Zuweisungsoperatoren

= wird als Zuweisungsoperator bezeichnet (Sie brauchen sich den Namen nicht zu merken) und wird auch als Operator behandelt. Die Bedeutung ist bereits erlernt worden.

Es gibt weitere speziellen Operatoren, die zusammengesetzte Zuweisungsoperatoren heißen (Sie brauchen sich den Namen nicht zu merken). Wenn Sie a += 10 schreiben, bedeutet das a = a + 10. Als die zusammengesetzte Zuweisungsoperatoren sind

  • +=

  • -=

  • *=

  • /=

  • %=

  • **=

verfügbar. Die Bedeutungen dieser Operatoren sollten offensichtlich sein.

Überlegen Sie, was passieren würde, wenn Sie das folgende Programm ausführen würden. Führen Sie es dann aus und prüfen Sie, ob es wie erwartet funktioniert.

let a = 12;
let b = 10;

a += 2;
console.log(a);

a -= 3;
console.log(a);

a *= 2;
console.log(a);

a /= 10;
console.log(a);

a += b;
console.log(a, b);

Ergebnis

Inkrement- und Dekrement-Operatoren

Das Erhöhen um 1 ist oft notwendig, daher wird es manchmal a++ geschrieben (In einigen Sprachen gibt es diesen Operator nicht). Insbesondere wird es beim Schreiben von Schleifen verwendet.

In ähnlicher Weise kann die Subtraktion von 1 als a-- geschrieben werden.

Diese können nur auf Variablen angewendet werden (2-- sollte $2 = 2 - 1$ bedeuten, was natürlich keinen Sinn ergibt).

Die folgenden Eingaben bedeuten also alle das Gleiche.

a = a + 1;
a += 1;
a++;
++a;	// wird in den nächste Abschnitt erklärt

Präfix und Postfix

++ und -- haben ein Präfix- und ein Postfix-Variante und verhalten sich unterschiedlich. Grob gesagt:

bei a++

wird der Wert von a verwendet und dann um 1 erhöht.

bei ++a

wird zuerst der Wert von a um 1 erhöht und dann der (neue) Wert verwendet.

let a;
let b;

// Beispiel von Postfix
b = 10;
a = b++;
console.log(a, b);

// Beispiel von Präfix
b = 10;
a = ++b;
console.log(a, b);

Die erste (a = b++;) ist mit

a = b;
b = b + 1;

gleichbedeutend und die zweite (a = ++b;) mit:

b = b + 1;
a = b;

Führen Sie das folgende Programm aus. Denken Sie über die Ergebnisse nach und warum sie so sind.

let a;
let b;

// Postfix
b = 10;
a = b++;
console.log("a = ", a);
console.log("b = ", b);

console.log("-----");	// Trennzeichen

// Präfix
b = 10;
a = ++b;
console.log("a = ", a);
console.log("b = ", b);

Ergebnis

Dies kann jedoch manchmal verwirrend sein, so dass es besser ist, es allein zu verwenden, bis Sie sich daran gewöhnt haben. Zum Beispiel:

let a;
let b;

// Postfix
b = 10;
a = b;
b++;	// ++b; ist auch möglich.
console.log(a, b);

// Präfix
b = 10;
++b;	// b++; ist auch möglich.
a = b;
console.log(a, b);

Die Präfix-Operatoren werden relativ selten verwendet.

Zeichenketten

Wie bereits in Variablen erwähnt, können Sie + auch für Zeichenketten verwenden, was Zeichenkettenzusammensetzung bedeutet. Es kann auch += verwendet werden.

Sie können - nicht für Zeichenketten verwenden.

Es ist möglich, + für Zeichenketten und Zahlen (z. B. "abc" + 1) zu verwenden, aber verschiedene Sprachen können sich dafür unterschiedlich verhalten. Deshalb kann dies zu Fehlern führen und diese Schreibweise sollte vermieden werden.

Operatorenpriorität

Ich werde nicht ins Detail gehen, aber das Folgende sollte für den Moment genügen. Kurz gesagt, es ist ungefähr dasselbe wie in der Mathematik.

In der Reihenfolge ihrer Priorität sind:

  • ()

  • **

  • *, /, % (% kann als eine Art Division betrachtet werden)

  • +, -

  • =, +=, -=, *=, /=, %=, **=

  • Mit Ausnahme ** hat diejenige links eine höhere Priorität, wenn mehrere Operatoren der gleichen Priorität nebeneinander liegen.

    Zum Beispiel:

    10 / 2 * 3
    

    Da das / auf der linken Seite eine höhere Priorität hat, ist dies dasselbe wie (10 / 2) * 3, aber nicht 10 / (2 * 3).

  • Wenn mehrere ** nebeneinander liegen, hat diejenige rechts eine höhere Priorität.

    Zum Beispiel:

    a ** b ** c
    

    ist dasselbe wie a ** (b ** c), aber nicht (a ** b) ** c. Um Unklarheiten bzw. Fehler zu vermeiden, ist es in diesem Fall jedoch immer (...) verwendet werden sollte.

Es gibt (leider) noch viele weitere Regeln, aber die oben genannten Regeln sind oft ausreichend.

Zusammenfassung

Auf dieser Seite haben Sie die wichtigsten arithmetischen Operatoren kennengelernt.

  • Vier arithmetische Operationen (+, -, *, /), Rest (%), Potenz (**)

  • Zusammengesetzte Zuweisungsoperatoren (+=, -=, *=, /=, %=, **=)

  • Inkrement- und Dekrement-Operatoren (++. --)

  • Jeder Operator hat seinen eigenen Priorität. Wenn Sie die Priorität ändern möchten, können Sie () verwenden (fast dasselbe wie in der normalen Mathematik).