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