Semantik: Anweisung hat Wirkung (Zustandsänderung), die bei Ausführung eintritt.
abstrakte Syntax:
Ausführen eines Programms im von-Neumann-Modell:
Was? (Operation) Womit? (Operanden) Wohin? (Resultat) Wie weiter? (nächste Anweisung)
strukturierte Programmierung:
engl. control flow, falsche Übersetzung: Kontrollfluß;
to control =
 
 
Folge von (Deklarationen und) Anweisungen
 
Designfrage: Blöcke
 
Designfrage: Deklarationen gestattet
 
 
in den meisten Sprachen:
 
Designfragen: 
 
 
Designfragen:
 
 
 
das macht eben in C, C++, Java nicht das, was man denkt:
 
C#: jeder Fall muß mit break (oder goto) enden.
 
 
 
ein switch (mit vielen cases) wird übersetzt in:
 
 
Übung: 
 
 
 
 
 
if Bedingung then Anweisung1 
     [ else Anweisung2 ]
switch (e) {
   case c1 : s1 ; 
   case c2 : s2 ;
   [ default : sn; ]
}
e?
ci?
switch (index) {
  case 1  : odd  ++; 
  case 2  : even ++;
  default : 
     printf ("wrong index %d\n", index);
}
abstract class Term   // Scala
case class Constant (value : Int) 
    extends Term
case class Plus (left: Term, right : Term) 
    extends Term
def eval(t: Term): Int = {
  t match {
    case Constant(v) => v
    case Plus(l, r) => eval(l) + eval(r)
  } }