Rheinwerk Design < openbook > Rheinwerk Design - Know-how für Kreative.
Know-how für Kreative.

Inhaltsverzeichnis
Vorwort
1 Flash für ActionScript
2 ActionScript in Flash
3 Flash Pro für ActionScript
4 Grundlagen der Programmierung
5 Einfache Filmsteuerung
6 Bildschirme und Präsentationen
7 Drucken und das Kontextmenü
8 Textfelder
9 Tasten
10 Datum und Zeit
11 Rechnen
12 Farbe wechseln und Drag
13 Zeichnen und Zufall
14 Von Mäusen und Duplikaten
15 Kollisionstest
16 Sound
17 Video
18 Externe Filme
19 Vorladen und Player erkennen
20 Formulare und UI-Komponenten
21 Komponenten anpassen
22 Formulare versenden
23 Warenkorb
24 Ausblick auf ActionScript 3
Stichwort
Ihre Meinung?

Spacer
 <<   zurück
Einstieg in ActionScript von Christian Wenz, Tobias Hauser, Armin Kappler
Aktuell zu Flash 8
Buch: Einstieg in ActionScript

Einstieg in ActionScript
brosch., mit CD und QuickFinder und Referenz
416 S., 24,90 Euro
Rheinwerk Design
ISBN 978-3-89842-774-6
Pfeil 4 Grundlagen der Programmierung
  Pfeil 4.1 Variablen
  Pfeil 4.2 Kommentare
  Pfeil 4.3 Operatoren
  Pfeil 4.4 Fallunterscheidungen
  Pfeil 4.5 Schleifen
  Pfeil 4.6 Funktionen
  Pfeil 4.7 Objekte
  Pfeil 4.8 Strings und ihre Besonderheiten
  Pfeil 4.9 Arrays


Rheinwerk Computing - Zum Seitenanfang

4.4 Fallunterscheidungen  topZur vorigen Überschrift

Ein Programm muss Entscheidungen treffen: Soll die Schaltfläche rot oder grün werden, bewegt sich ein Objekt nach links oder rechts, nach oben oder unten. Die Fülle an Entscheidungsmöglichkeiten ist groß; daher gibt es Fallunterscheidungen.

if-Fallunterscheidung

Die bekannteste und am häufigsten eingesetzte Fallunterscheidung ist die if-Fallunterscheidung. In ihrer einfachsten Form überprüft sie eine Bedingung und führt sie aus, wenn die Bedingung zutrifft:

if (Bedingung) {

Anweisungen;

}

Diese Syntax ist einfach und lässt sich direkt in die deutsche Sprache übertragen:

  • Wenn (engl. if)
  • Bedingung (in geschweiften Klammern)
  • zutrifft (Ergebnis true),
  • führe Anweisungen aus (in geschweiften Klammern).

Klammern oder nicht?

Sie können die geschweiften Klammern weglassen, wenn nur eine Anweisung folgt. Das ist allerdings nicht sehr übersichtlich. Wenn Sie mit Klammern arbeiten, bleibt ihr Code besser lesbar. Deswegen setzen wir die geschweiften Klammern in diesem Buch immer ein.


Abbildung 4.7 Die Wirkung von if, hier visuell veranschaulicht

Die Theorie ist klar, testen Sie nun die if-Fallunterscheidung in der Praxis. Im folgenden Beispiel instanziieren Sie eine Variable und testen dann deren Wert. Beträgt dieser 4, gibt ActionScript eine Meldung im Fenster Ausgabe aus.

Abbildung 4.8 Die Bedingung ist erfüllt, deswegen erfolgt die Ausgabe.

var raeder_num:Number = 4;
if (raeder_num == 4) {
   trace("Sie fahren ein Auto!");
}

In diesem Fall wissen Sie natürlich genau, welchen Wert die Variable hat. Sinnvoll wird eine solche Überprüfung beispielsweise, wenn der Nutzer den Wert in ein Textfeld eingibt.

Wollen Sie mehrere Bedingungen überprüfen, könnten Sie mehrere if-Anweisungen nacheinander schalten. Das ist aber umständlich und sollte vermieden werden. Stattdessen nehmen Sie else if zu Hilfe. else if überprüft Bedingungen, aber nur dann, wenn die if-Bedingung nicht eingetroffen ist. Eine if-Fallunterscheidung kann immer nur ein if enthalten, aber beliebig viele else if.

if (Bedingung) {

Anweisungen;

} else if (Bedingung) {

Anweisungen;

}

Werfen Sie einen genauen Blick auf die Syntax ab else if:

  • Wenn die if-Bedingung oder die vorhergehende else if-Bedingung nicht eingetroffen ist (else if),
  • überprüfe Bedingung (in geschweiften Klammern).
  • Falls sie zutrifft (Ergebnis true),
  • führe Anweisungen aus (in geschweiften Klammern).

Abbildung 4.9 Der Ablauf von else if

Mit diesem Wissen können Sie das Beispiel zur Überprüfung der Anzahl von Rädern eines Gefährts etwas ausbauen:

var raeder_num:Number = 2;
if (raeder_num == 4) {
   trace("Sie fahren ein Auto!");
} else if (raeder_num == 2) {
   trace("Motorrad oder Fahrrad ist Ihr Untersatz!");
} else if (raeder_num == 1) {
   trace("Einrad-Fahrer?");
}

Das Ergebnis dieser Überprüfung ist die Ausgabe »Motorrad oder Fahrrad ist Ihr Untersatz!«, da die Zahl der Räder in der Variablen raeder_num auf 2 steht.

Abbildung 4.10 Die erste else-if-Bedingung hat ins Schwarze getroffen.

Der letzte Bestandteil einer if-Fallunterscheidung ist else, eine Art Auffangbecken. Die Anweisungen nach else werden immer ausgeführt, wenn keine der Bedingungen vorher erfüllt war. else selbst hat keine Bedingung und eine if-Fallunterscheidung kann nur ein else enthalten. Eine if-Fallunterscheidung mit else benötigt übrigens nicht unbedingt eine else if-Anweisung. Zuerst der obligatorische Blick auf die Syntax:

if (Bedingung) {

Anweisungen;

} else if (Bedingung) {

Anweisungen;

} else {

Anweisungen;

}

Jetzt sehen Sie sich die Syntax ab else genauer an:

  • Wenn die if-Bedingung und alle else if-Bedingungen nicht eingetroffen sind (else),
  • führe Anweisungen direkt aus (in geschweiften Klammern).

Erweitern wir das Beispiel mit den Rädern und filtern alle Eingaben aus, die mit keiner der if- bzw. else if-Bedingungen übereinstimmen:

var raeder_num:Number = 8;

if (raeder_num == 4) {

trace("Sie fahren ein Auto!");

} else if (raeder_num == 2) {

trace("Motorrad oder Fahrrad ist Ihr Untersatz!");

} else if (raeder_num == 1) {

trace("Einrad-Fahrer?");

} else {

trace("Keines, drei, fünf oder mehr Räder. Und damit fahren Sie?");

}


Fehlerquellen

Fallunterscheidungen sind im Grunde einfach zu handhaben. Einzige Fehlerquelle ist die Syntax. Dort vergisst jeder gelegentlich eine runde oder geschweifte Klammer oder schreibt eine Klammer zu viel. Prüfen Sie also zuerst die Syntax! Die entsprechende Fehlermeldung lautet entweder Syntax Error oder sie meldet ein Unexpected, also ein unerwartetes Symbol. Ausgegeben wird die Fehlermeldung vom Syntax-Prüfer des Aktionen-Bedienfelds.


Abbildung 4.11 Die um else erweiterte Fallunterscheidung

An diesem Beispiel sehen Sie, warum else sehr praktisch ist: Die Anweisung fängt sämtliche Fälle ab, also kein Rad, drei Räder und fünf oder mehr Räder. Unsinnige Angaben wie negative Zahlen und Kommazahlen werden ebenfalls von else abgefangen. Müssten Sie die sinnvollen Fälle einzeln mit einer Bedingung abdecken anstatt else einzusetzen, wäre deutlich mehr Aufwand notwendig:

raeder_num == 0 || raeder_num == 3 || raeder_num >= 5

Abbildung 4.12 Wenn keine der vorherigen Bedingungen zutrifft, muss der Nutzer wohl ein komisches Fahrzeug besitzen.

switch case-Fallunterscheidung

Die switch case-Fallunterscheidung vereinfacht manche Überprüfung im Vergleich zur if-Fallunterscheidung. Allerdings kommt sie in der Praxis nicht besonders oft zum Einsatz; sollten Sie switch case nicht verwenden, überspringen Sie den Abschnitt und lesen weiter bei »Schleifen«.

Mit switch case legen Sie zuerst eine Variable fest, deren Werte dann in einzelnen Fällen (case = Fall) überprüft werden. Hier die Syntax:

switch (Variable) {
case Wert1 :
   Anweisungen;
   break;
case Wert2 :
   Anweisungen;
   break;
default :
   Anweisungen;
}

Folgende Bedeutung haben die einzelnen Angaben der Syntax:

  • Überprüfe Variable (switch (Variable))
  • in Bezug auf (Block in geschweiften Klammern),
  • ob Wert1 (case Wert1).
  • Wenn Wert1, dann führe Anweisungen aus (Doppelpunkt)
  • und beende Fallunterscheidung (break).
  • Wenn nicht, überprüfe Fall 2,
  • ob Wert2 (Wert2).
  • Wenn keiner der Fälle (default),
  • führe Standardanweisungen aus.

Besonders wichtig ist die break-Anweisung. Wenn Sie diese weglassen, werden alle Anweisungen nach dem Fall, dessen Wert eingetroffen ist, ausgeführt.

Das bei if gezeigte Beispiel, das die Anzahl der Räder an einem Fahrzeug überprüft, lässt sich einfach in switch case »übersetzen«. Da dort nur verschiedene Werte einer Variablen getestet werden, handelt es sich geradezu um einen Paradefall für switch case:

Abbildung 4.13 Die Wirkung von switch case, visuell dargestellt

var raeder_num:Number = 1;
switch (raeder_num) {
case 4 :
   trace("Sie fahren ein Auto!");
   break;
case 2 :
   trace("Motorrad oder Fahrrad ist Ihr Untersatz!");
   break;
case 1 :
   trace("Einrad-Fahrer?");
   break;
default :
   trace("Keines, drei, fünf oder mehr Räder. Und damit fahren Sie?");
}

Abbildung 4.14 switch case erreicht hier dasselbe Resultat wie eine if-Fallunterscheidung.

Wenn in der Praxis sowohl if als auch switch case funktioniert, was sollten Sie dann bevorzugen? Im Allgemeinen raten wir eher zur if-Fallunterscheidung, da Sie hier die gewohnte Block-Syntax mit geschweiften Klammern einsetzen können. Doppelpunkte und Werte ohne Klammern sind dagegen etwas ungewohnt. Wichtig ist nur, dass Sie wissen, worum es sich bei switch case handelt, wenn Sie die Fallunterscheidung gelegentlich in einem Beispiel sehen.


Fehlerquelle break

Der häufigste Fehler bei switch case ist sicherlich, aus Versehen break wegzulassen. Fast ebenso fehlerträchtig ist die ungewöhnliche Syntax: Gerade die Doppelpunkte werden leicht vergessen.




Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 <<   zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: ActionScript 3 – Das Praxisbuch
ActionScript 3
Das Praxisbuch

bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: JavaScript






 JavaScript


Zum Rheinwerk-Shop: jQuery






 jQuery


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Rheinwerk-Shop: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern