msgbartop
Gruppe F1
msgbarbottom

12 Dec 08 For Each-Schleifen Beispiel

Hier ein einfaches Beispiel für das for each Schleifen-Konstrukt in Java:

ForEachExample.java

public class ForEachExample {
  public static void main(String[] args) {
    int[] feld = new int[] { 1,2,3,4 };

	for ( int eintrag : feld ) {
		System.out.println( eintrag );
	}
  }
}

Tags:

12 Dec 08 Wiederholung: Arrays

Eine kurze Übersicht der wichtigsten Array-Befehle:

Deklarieren einer Array-Referenz/Variable:

int[] integerArray;

// allgemein:
// T[] tArray; // T kann selbst wieder vom Typ Array sein, also T := U[] usw..

Erstellen eines neuen Array-Objektes:

integerArray = new int[5];

// Erstellen eines neuen Array-Objektes:
integerArray = new int[5];
// geht leider nicht!!!
// integerArray = new int[3] { 3, 1, 4 };

// oder:
integerArray = new int[] { 3, 1, 4, 1, 5, 6, 9 }; // wo ist der Fehler (Achtung: Scherzfrage)

Zugriff auf ein Element in einem Array

System.out.println( integerArray[0] + "," + integerArray[1] + integerArray[2] + integerArray[3] + " ist ca. \pi" );

// Zuweisen eines Wertes analog:
integerArray[5] = 9;
integerArray[6] = 2;
// besser, eh?

Abfragen der Länge eines Arrays:

// mit .length
System.out.println( "\pi auf " + integerArray.length + " - 1 Stellen genau:" );

// man indiziert mit int Variablen dynamisch:
System.out.print( "\pi ~ " + integerArray[0] + "," );
// wir fangen jetzt ab der ersten Nachkommastelle an (also 2. Element im Array)
for( int i = 1 ; i < integerArray.length ; i++ ) {
  System.out.print( integerArray&#91;i&#93; );
}
System.out.println();
&#91;/sourcecode&#93;</pre>
Überprüfung auf Gleichheit:
<pre>
// wie bei Strings mit .equals
int[] arrayA = new int[] {1, 2, 3, 3};
int[] arrayB = new int[] {3, 2, 1};
int[] arrayC = new int[] {1, 2, 3, 4};

System.out.println( arrayA.equals( arrayA ) ); // true
System.out.println( arrayA.equals( arrayB ) ); // false
System.out.println( arrayA.equals( arrayC ) ); // false

Code: ArrayExample.java

Tags:

05 Dec 08 Blatt 6 Folien

Anbei ein paar (die wichtigesten) Folien von der heutigen Übung.
(more…)

Tags: ,

05 Dec 08 Blatt 6, Aufgabe 3e

Hier noch eine etwas elegantere Lösung zur Aufgabe 3e:

// save as fib.java
public class fib {
  static public int fib(int n) {
    int f_old = 1, f_current = 0;

    for( int i = 0 ; i < n ; i++ ) {
      int f_old_old = f_old;
      f_old = f_current;
      f_current = f_old_old + f_old;
    }

    return f_current;
  }

  static public void main( String[] args ) {
    // small test
    for( int i = 0 ; i < 10 ; i++ ) {
      System.out.println( fib(i) );
    }
  }
}
[/sourcecode]

Was ist der Trick? :)

Tags: , ,

05 Dec 08 Blatt 6, Aufgabe 1

Hier zuerst einmal das Grundgerüst aus dem Übungsblatt:

Program.java

import fjava.Seq;
import static fjava.Seq.*;

@SuppressWarnings("unchecked")
public class Program {
  static <T> void printSeq(Seq<T> s) {
    System.out.print(s);
  }

  public static void main(String[] args) {
    printSeq(cons(1,2,3,4));
  }
}

Ich habe auch ein paar Batch-Dateien zusammengeschrieben um das Leben leichter zu machen – zumindest für die, die auch Windows benutzen:

compile.bat führt einfach den javac-Befehl aus dem Übungsblatt aus. Zum Beispiel: compile Program.java.
run.bat
führt den java-Befehl aus: run Program.

startCmd.bat startet Cmd (sowas wie xterm für Windows) im Verzeichnis, in dem sich die Datei befindet – das erspart einem herumnavigieren in der Shell.

setupPath.bat kann man benutzen, wenn die Shell javac/java nicht findet. Möglicherweise muss man den Pfad in der Datei anpassen (einfach mal in Notepad öffnen und sich anschauen..).

Tags:

14 Nov 08 Tutoraufgabe 4d)

Hallo,

anbei die Lösung für die Teilaufgabe d). Die Teilaufgabe c) ergibt ist nur eine Vereinfachung davon. Die Idee für die c) kann man leicht sehen, wenn man die Lösung auf einer der leeren Karten laufen lässt. Aber bevor Ihr es laufen lasst, versucht selbst daraufzukommen.

avoid.ifelse.zip

BTW was ich jetzt noch gehört habe, ist die Aufgabe, die letzte ihrer Art für’s erste, deswegen ist es auch nicht so schlimm, das wir nicht wirklich damit durch gekommen sind. Aber es lohnt sich trotzdem noch ein wenig damit herumzuspielen um besser mit if-else-Konstrukten vertraut zu werden.

Grüße,
Andreas

Tags: