Funktionen, Parameter, Ausdrücke, Operatoren und Evaluierung

In dieser Lehrveranstaltung werden folgende Themen behandelt:

  • Funktionen und Parameter
    • Funktionen vs. Prozeduren
    • Parameterübergabe und Rückgabewert
    • Stack vs. Heap
    • Call-By-Value CBV
    • Call-By-Reference CBR → Zeiger
    • [Standardwerte in C++]
  • Ausdrücke und Operatoren
    • Ausdruck und Anweisung
      • Ein Ausdruck ist eine Rechenvorschrift
      • Eine Anweisung ist ein Ausdruck gefolgt von ;
      • Mehrere Anweisungen in {}-Blöcken gelten wiederum als eine Anweisung
    • if while do usw. sind ebenfalls Anweisungen (zur Verzweigung der linearen Programmausführung in Abhängigkeit von einem Wahrheitswert)
    • Evaluierung von Ausdrücken → ergibt einen Wert
      • Ein Ausdruck besteht aus einer Folge von Operatoren
      • Jeder Ausdruck wird evaluiert, indem die Operatoren der Reihe nach ausgewertet werden, so dass der Ausdruck danach genau EINEM WERT entspricht
    • Operatoren und Operanden
      • Ein binärer Operator (wie z.B. ±*/) verknüpft zwei Operanden (Werte)
      • Ein unärer Operator (wie z.B. -!) verändert einen Operanden (Wert)
      • Ein Wert kann eine Zahl, eine Variable oder das Ergebnis eines Funktionsaufrufs sein
      • Eine Zahl kann octal (0..), dezimal (123..9), hexadazimal (0x…), als ASCII Zeichen (‘A’) angegeben werden
      • Jeder Wert kann auch als Wahrheitswert angesehen werden (false = 0).
    • Operatorpriorität wie z.B. Punkt vor Strich (siehe Tabelle unten), Evaluierung von links nach rechts
    • Besonderheit Zuweisungsoperator: L-Value = R-Value, Evaluierung von rechts nach links
      • Ein R-Value ist ein flüchtiger Wert (CPU-Register)
      • Ein L-Value ist nicht flüchtig und liegt entweder auf dem Stack oder Heap, d.h. im Hauptspeicher
      • D.h. der Zuweisungsoperator ist ein normaler Ausdruck, der einen flüchtigen evaluierten Wert im nichtflüchtigen Hauptspeicher ablegt

Operatoren im Ãœberblick:

OperatorTypPrioritätBemerkung
()Klammerhöchste 
-xNegation  
! ~Unär !1 → 0
++ --Inkrement L-value
* / %FaktorPunkt vor …1*2+3 → 5, 5/10 → 0
+ -Term… Strich1+2→3
<< >>Shift  
== != < <= > >=Vergleich 1==2 → 0
& ^ |Bit& vor | 
&& ||Logik&& vor ||1&&0 → 0
?:Alternative  
= += -= *= /= %=Zuweisung(fast) niedrigsteL-value, Kaskadierung
,Kommaniedrigste0,5 → 5


Aufgaben

6tes Aufgabenblatt

Options: