Praktische Informatik 1


Anweisungen und Kontrollstrukturen



Yüklə 3,49 Mb.
səhifə17/25
tarix08.08.2018
ölçüsü3,49 Mb.
#61957
1   ...   13   14   15   16   17   18   19   20   ...   25

6.2 Anweisungen und Kontrollstrukturen


In Java gibt es folgende Arten von Anweisungen:

  • Leere Anweisung ;

  • Block, d.h. eine mit {…} geklammerte Folge von Anweisungen; Blöcke dürfen auch geschachtelt werden

  • Lokale Variablendeklaration

  • Ausdrucksanweisung

Ein wichtiges programmiersprachliches Mittel ist der Aufruf von Methoden der API (applications programming interface). Dazu muss die entsprechende Bibliothek importiert werden (falls sie es nicht schon standardmäßig ist): import java.awt.*.
(Grafik: © Bothe 2009)
Zugriff auf Bibliotheksfunktionen erfolgt mit Qualifizierern, z.B.

System.out. println(„Hallo“)

java.util.Date d = new java.util.Date ();
Zur Steuerung des Ablaufs werden Fallunterscheidungen verwendet.


  • if-Anweisung

    • if (ausdruck) anweisung; [else anweisung;]

    • üblicherweise sind die Anweisungen Blöcke.

    • hängendes else gehört zum innersten if

Beispiel: if (b1) if (b2) a1 else a2

wird a2 ausgeführt, wenn b1 wahr und b2 falsch ist?



  • switch-Anweisung

    • switch (ausdruck) {

{case constant : anweisung}

[default: anweisung]}

D.h., in einer switch-Anweisung kommen beliebig viele case-Anweisungen, optional gefolgt von einer default-Anweisung. Bei der Auswertung wird zunächst der Ausdruck ausgewertet und dann in den entsprechenden Zweig verzweigt. Switch-Anweisungen sind tief geschachtelten if-Anweisungen vorzuziehen, da sie normalerweise übersichtlicher und effizienter sind.


Kontrollflusselemente

Folgende Wiederholungsanweisungen und Steuerungsbefehle werden häufig gebraucht:



  • while-Schleife

    • allgemeine Form:
      while (ausdruck) anweisung;
      Die while-Schleife ist abweisend: Vor der Ausführung der Anweisung wird auf jeden Fall der Ausdruck geprüft. Beispiel:
      i=fak=1; while (i++

    • In Java gibt es zusätzlich die nichtabweisende Form
      do anweisung; while (ausdruck);
      diese Schleife wird auf jeden Fall einmal durchlaufen, dann wird geprüft. Beispiel:
      do fak *= i++; while (i<=n)
      Jedes do A while (B) kann gleichwertig geschrieben werden als
      A; while (B) do A; (Achtung: Code-Replikation!)

  • for-Schleife

    • allgemeine Form:
      for (init; test; update) anweisung;
      Beispiel:
      for (int i= fak = 1; i<=n; i++){ fak *= i;};

    • In Java darf die Initialisierung mehrere Anweisungen (mit Komma getrennt!) enthalten (auch gar keine); in Groovy wird an Hand der Zahl der Anweisungen entschieden, was Initialisierung, Test und Update ist (Benutzung nicht empfohlen!)

  • continue, break und return

    • continue verlässt den Schleifendurchlauf

    • return verlässt die aufgerufene Methode

    • break verlässt die Schleife komplett
      Es kann auch zu einer markierten äußeren Schleife gesprungen werden:
      outer: while (A) {

inner: while (B) {

dosomething;



if (C) break outer

}

}


In Groovy sind darüber hinaus folgende vereinfachte Schreibweisen erlaubt:

  • 5.times{…}

  • (1..5).each{fak *= it} //Schleifenvariable 'it'

  • 1.upto(5){fak *= it}

  • for (i in [1,2,3,4,5]){fak *= i}

  • for (i in 1..5){fak *= i}

  • for( c in "abc" ){…}



6.3 Sichtbarkeit und Lebensdauer von Variablen


Unter der Sichtbarkeit (Skopus) einer Variablen versteht man den Bereich im Quellcode, in dem dieser Variablenname verwendet werden darf. Der Gültigkeitsbereich ist derjenige Teil der Sichtbarkeit, in der man auf den Inhalt der Variablen zugreifen kann. Die Lebensdauer ist die Zeitspanne, während der für die Variable Speicherplatz reserviert werden muss

Für jede der verschiedenen Variablenarten gibt es detaillierte Festlegungen hierzu.

Beispiel:
public class xyz {

int x;

public xyz() {

x = 1;


}

public int sampleMethod(int y) {

int z = 2;

return x + y + z;

}

}


In diesem Beispiel bezieht sich x innerhalb von xyz und in sampleMethod auf die Instanzvariable, y in sampleMethod auf den Parameter, und z auf die lokale Variable.

Variablen können sich auch gegenseitig verschatten: Unter Verschattung versteht man die Einschränkung des Gültigkeitsbereichs einer Variablen durch eine andere Variable gleichen Namens. Es gelten folgende Regeln:



  • Lokale Variablen werden in einem Block (einer Folge von Anweisungen) deklariert und sind nur für diesen verwendbar.

  • Lokale Variable sind ab ihrer Deklaration bis zum Ende des Blocks oder der Methode sichtbar.

  • Instanzvariable können von gleichnamigen lokalen Variablen verschattet werden, d.h., sie sind sichtbar aber nicht gültig.

Verschattung ist hilfreich, um das Lokalitätsprinzip zu unterstützen (z.B. in Laufanweisungen). Es ist nicht erlaubt, dass lokale Variablen sich gegenseitig oder Methodenparameter verschatten
Beispiel für Verschattung:
public class xyz {

int x;
public xyz() {

x = 1;


}
public int sampleMethod(int y) {

int x = 2;

return x + y;

}

}


Gültigkeitsbereich und Sichtbarkeit kann in Java/Groovy auch durch Modifikatoren eingeschränkt werden. Öffentliche (public) Klassenvariablen sind überall sichtbar; private Klassenvariablen (private) sind in der sie enthaltenden Klasse überall sichtbar, dienen also als „gemeinsamer Speicher“ der Objekte. Methodenvariablen sind nur innerhalb der Methode sichtbar, sind also „Hilfsvariablen“ zur Ausführung der Methode; der Speicherplatz wird nur während der Abarbeitung der Methode reserviert. Es gehört zum guten Programmierstil, alle Variablen so lokal wie möglich zu deklarieren, um die Gültigkeitsbereiche überschaubar zu halten.
Als Konvention hat sich eingebürgert, Variablennamen immer mit Kleinbuchstaben beginnen zu lassen und Teilworte mit Großbuchstaben direkt anzufügen. Beispiel:

int diesIstEineIntegerVariable.

Finale Variablen (Konstanten) werden in Großbuchstaben geschrieben, wobei Teilworte durch _ getrennt werden. Beispiel:


final float MAX_TEMPO = 5.0;

Methodennamen werden wie Variablennamen geschrieben und sollten Verben enthalten, Beispiel:


public void fahreRueckwaerts (float tempo);

Klassennamen beginnen mit Großbuchstaben und sollten substantivisch sein. Beispiel:

class FahrzeugReifen

Für weitere Informationen lesen Sie bitte die Java Coding Conventions von SUN unter http://java.sun.com/docs/codeconv/html/CodeConventionsTOC.doc.html.



Yüklə 3,49 Mb.

Dostları ilə paylaş:
1   ...   13   14   15   16   17   18   19   20   ...   25




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə