Installation von Eclipse und Java (JDK), sowie eine Kurzbeschreibung wie die Java Dokumentation funktioniert am Beispiel von system.out.println(); findet ihr hier. Download

Am Anfang fällt es nicht leicht die verschiedenen Begrifflichkeiten auseinanderzuhalten. Der beste Einstieg in die Programmierung ist diese selbst durchzuführen. Bei der Programmierung verhält es sich wie mit Sprachen. Eine Sprache lebt davon, dass sie gesprochen wird. Aus den Fehlern, welche in der Entwicklungsumgebung Eclipse angezeigt werden kann schnell die Erkenntnis erlangt werden, wie es "richtig" lauten sollte.

Die Begriffe:

  • Konstruktor,
  • Methode (insbesondere "main()"),
  • Attribut(e),
  • Rückgabewert,
  • Rückgabetyp,
  • Typen von Attributen (Variablen),
  • Objekte und
  • Klassen

sind wesentlich und sollten "aus dem Stand" beherrscht werden. Es wird dann deutlich leichter weitere Programmierkonstrukte zu verstehen.


Beispiel Methode:

// Methode ohne Rückgabewert
public void hello1() {
System.out.println("Hello World 1!");
}

// Methode mit Rückgabewert vom Typ String, aufrufbar nur innerhalb der Klasse
// (Stichwort Sichtbarkeit, private, protected und public)
private String hello2() {
return "Hello World 2!";
}


Beispiel Attribut:

// Attribut mit dem Namen text vom Typ String
String text;

// Sichtbarkeit nur innerhalb der Klasse
private String text2;

// Initialisierung eines Attributes mit dem Namen text3 vom Typ String und dem Initialwert "Hello"
String text3 = "Hello";

Einige Wiederholungen zur Übung 5 und Vorüberlegungen zu den Übungen.

Es kam die Frage auf, was conc(x,y) ist. conc(x,y) ist eine Methode, welche zwei Zeichenfolgen miteinander verbindet. Sie steht für die Konkatenation, auch Hintereinanderausführung genannt.

Beispiel:

x°y = xy

Zeichenfolge x = "abc"

Zeichenfolge y = "defghi"

Wird nun x°y angewendet, so erhalten wir die neue Zeichenfolge "abcdefghi".

Hinweis: Die Methode java.util.Calendar cal = java.util.Calendar.getInstance(); muss vor jeder Zeitmessung aufgerufen werden. Weitere Informationen zu der Mehtode finden sich in der Java Dokumentation s. http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html, zugegriffen am 20.11.2012

Download

Nützliches zur Übung 3

  • Wiederholung des Kompositummusters
  • Allgemeines Objektdiagramm
  • Semi-Thue-System
  • Markow-Interpreter
Download

Wiederholung wichtiger Java-Bagriffe. Besonders anzuschauen sind die Begriffe, welche wir ständig verwendet haben.
Beispiele:

  • Klassen
  • Attribute
  • Initialisierung
  • Instanzierung
  • Objekte
  • Methoden
  • Methodenaufrufe
Download

Erstes Beispiel "Hello World!" zur Erinnerung.

Download

Ein weiteres Beispiel zu "Hello World!" dies mal mit Methoden, Konstruktor, getter- und setter-Methoden.

Download

Ein drittes Beispiel zu "Hello Wolrd!" mit zwei Klassen (Hello und World). World ist dabei ein Objekt. Dieses Objekt wird mittels eines Kontruktors beschrieben, sprich die Eigenschaften von World werden festgehalten.

Download

Es könnte genauso ein Objekt sein, dass uns eher bekannt ist, z. B. ein Brief. Die Eigenschaften eines Briefs wären z. B. Absender, Empfänger, Betreff, Datum, Anrede, Text, Grußformel.

Beispiel Konstruktor:

// Konstruktor
public Brief(){
// Eigene Klasse (Objekt Adresse)
Adresse absender = new Adresse();
Adresse empfaenger = new Adresse();
String betreff;
Date datum;
// Anrede wird von vornerein belegt
String anrede = "Sehr geehrte Damen und Herren,\n\n";
String text;
String grussformel;
}

Das Objekt kann auch mit einem ähnlichen Konstruktor erzeugt werden, der Bereits Eigenschaften mitliefert, sprich Parameter übergeben bekommmt.

Beispiel Konstruktor mit Parametern:

public Brief(Adresse abs, Adresse emp, String betr, Date dat, String anred, String txt, String gFormel){
// Eigene Klasse (Objekt Adresse)
Adresse absender = abs;
Adresse empfaenger = emp;
String betreff = betr;
Date datum = dat;
String anrede = anred;
String text = txt;
String grussformel = gFormel;
}

Die Deklaration erfolgt nun noch im Konstruktor, das ist nicht unbedingt gewünscht, da nun bei jedem erzeugen auch ein neues Objekt nur innerhalb des Konstruktors erstellt wird. Besser wäre es sog. Attribute zur Hilfe zu nehmen.

Beispiel Konstruktor mit Parametern und Attributen:

//Attribute
private Adresse absender;
private Adresse empfaenger;
private String betreff;
private Date datum;
private String anrede;
private String text;
private String grussformel;

// Konstruktor
public Brief(Adresse abs, Adresse emp, String betr, Date dat, String anred, String txt, String gFormel){
absender = abs;
empfaenger = emp;
betreff = betr;
datum = dat;
anrede = anred;
text = txt;
grussformel = gFormel;
}

Auf die Attribute wird dann mit sog. getter- und setter-Methoden zugegriffen.

Inhalt

  1. Schleifen
    1. For-Schleife
    2. While-Schleife
    3. Do-While-Schleife
    4. For-Each-Schleife
  2. Matrix in Java

Schleifen

zurück zum Inhalt

Für verschiedene Programme werden zum Zählen sog. Schleifen verwendet.

Bermerkung: Bei Schleifen spricht man auch von LOOP-Funktionen bzw. WHILE-Funktionen. Wer hierzu mehr erfahren will, dem sei die theoretische Informatik zu empfehlen. Inbesondere das Buch von Schöning U.: Theoretische Informatik - kurzgefasst, Spektrum, Heidelberg, Berlin, 2003.

 Dabei werden die nachfolgenden verschiedenen Schleifen unterschieden.

For-Schleife

 Syntax: 
for ( <Initialisierung> ; <Bedingung> ; <Anweisung>){
   // Auszuführender Programmcode
}

Die for-Schleife kann dabei hochgezählt werden:

// Höchster Wert bis zu welchem gezählt werden soll.
int n = 5;

for(int i = 1; i<= n; i++){
System.out.println("Ich zähle hoch " + i);
}

oder runter gezählt werden:

// Niedrigster Wert bis zu welchem gezählt werden soll.
int n = 5;

for(int i = 100; i>= n; i--){
System.out.println("Ich zähle runter " + i);
}

Alternativ kann als Anweisung auch jede denkbare andere Anweisung enthalten sein, welche i.d.R. die Variable verändert. Dies könnte anstelle von i++ auch Z.B. i=i+2, i=i+3, i=i/2 oder i=i+j sein.

Beachte: Die Anweisung in der FOR-Schleife schließt ohne Semikolon ab!

While Schleife

Syntax: 
while (<Bedingung>){
   // Auszuführender Programmcode
   // in der Regel wird hier eine Zählervariable erhöht oder ernidrigt, so dass die Bedingung auch wahr werden kann.
}

Auch hier kann wieder hoch und runter gezählt werden.

int n = 5;

while(i<=n){
i++;
System.out.println("Ich zähle hoch " + i );
}

while(i>=n){
i--;
System.out.println("Ich zähle runter " + i);
}

Do-While-Schleife

Die do-while-Schleife führt im Gegensatz zur while-Schleife zunächst eine Anweisung oder mehrer Anweisungen aus und prüft dann ob die Schleife angebrochen wird oder nicht.

Syntax: 
do 
<Anweisung>;
while (<Bedingung>)


For-Each-Schleife

Neben der for-Schleife gibt es in Java noch eine for-each-Schleife. Sie geht Elemente aus einer Kollektion durch. Ferner beginnt diese ebenfalls mit "for". Dies ist wahrscheinlich dadurch bedingt, dass die Schleife bis zu einem bestimmten aber festen Wert durchläuft.

Syntax: 
for(<Element>:<Kollektion>){
   <Anweisung>;
}

Beispiel:

char[] chars = new char[] { 'H', 'a', 'l', 'l', 'o', '!'}; // neues Zeichen-Array anlegen 

for(char c : chars){
System.out.println("Zeichen: " + c); // Jedes Zeichen auf der Konsole ausgeben
}


Anstelle eines char[] (char-Array) kann es auch jeder andere Typ von Array als Kollektion hergenommen werden, ebenso sind Listen möglich.


Matrix in Java

zurück zum Inhalt

Eine Matrix ist in Java ein doppeltes Array vom Typ double.

Beispiel für eine 2x3 Matrix:

double[][] t = new double[2][3];

Bei der Programmierung mit Matrizen muss besonders aufgepasst werden, was mit welchem Wert gerade zu berechnen ist. Besonders bei Multiplikationen kann es kompliziert werden. Am besten eine Skizze erstellen.

Schauen wir uns ein konkretes Beispiel einer 2x3-Matrix multipliziert mit einer 3x2-Matrix an.

2x3-Matrix multipliziert mit 3x2-Matrix

Wie würden wir nun im allgemeinen Fall vorgehen. Seien a_{i,k} bzw. b_{k,j} Matrizen der Form 2x3 bzw. 3x2. Weiter sei c_{i,j} eine 2x2-Matrix.

2x3-Matrix multipliziert mit 3x2-matrix allgemeiner

Es ist zu erkennen, dass zunächst die Addition der einzelnen Multiplikationen durchgeführt werden muss im zu programmierenden Algorithmus. Die Reihenfolge des Algorithmus ist z.B.:

  1. Multiplizeren
  2. Addieren (erhöhe k um 1)
  3. Nächste Spalte wählen
  4. Wiederhole Schritt 1. & 2. und 3. solange bis es eine Spalten mehr gibt.
  5. Nächste Zeile wählen
  6. wiederhole die Schritte 1. bis 5. solange bis es keine Zeilen mehr gibt.

Alternativ können auch erst die Zeilen und dann die Spalten durchgeganen werden.

Die Länge eines Array kann in Java ermittelt werden mit der Methode length.

Beispiel für eine 2x3-Matrix:

// Länge der Matrix ermitteln
double a[][] = new double[2][3];

// Zeilen
a.length; // ergibt 2

// Spalten
a[0].length; // ergibt 3

Einige Anmerkungen zum Kapitel 5, folgende Fragestellungen wurden in der Übung besonders behandelt:

  • Welche Rekursionsarten gibt es?
  • Was ist Rekursion?
  • Wie funktioniert Rekursion?
  • Wie Programmiere ich rekursive Methoden in Java?
  • Was ist Terminierung?
  • Was ist eine Abstiegsfunktion?
  • Was bedeutet Validierung?
  • Was bedeutet Verifikation?
  • Was ist Induktion?
  • Wie führe ich die vollständige Induktion durch?
Download
Auf dieser Website werden Cookies verwendet. Wenn Sie der Verwendung von Cookies zustimmen, können Sie die Website besser nutzen.