Anweisungen(I)

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 = steuern, to check = kontrollieren/prüfen

Folge von (Deklarationen und) Anweisungen

Designfrage: Blöcke

Designfrage: Deklarationen gestattet

in den meisten Sprachen:

if Bedingung then Anweisung1 
     [ else Anweisung2 ]

Designfragen:

switch (e) {
   case c1 : s1 ; 
   case c2 : s2 ;
   [ default : sn; ]
}

Designfragen:

das macht eben in C, C++, Java nicht das, was man denkt:

switch (index) {
  case 1  : odd  ++; 
  case 2  : even ++;
  default : 
     printf ("wrong index %d\n", index);
}

C#: jeder Fall muß mit break (oder goto) enden.

ein switch (mit vielen cases) wird übersetzt in:

Übung:

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)
  } }

2015-08-17