Nach dem die ersten zwei Wochen des 2. Semesters rum sind, ein kurzer Bericht was einem im zweiten Semester alles erwartet:
Algorithmen und Programmierung 2:
AP2 ist ganz der objektorientierten Programmierung mit Java gewidmet. Die Inhalte aus dem ersten Semester werden weiter vertieft und neue Algorithmen sowie Programmierverfahren kommen hinzu. Ein interessantes und hilfreiches Buch für AP2 gibt es als E-Book Version sogar kostenlos unter folgendem Link zum Download:
-> http://www.galileocomputing.de/katalog/openbook?GalileoSession=55502291A39tI6-deEs
Paradigmen der Programmierung:
Ergänzend zu AP2 und als Vorbereitung für “Künstliche Intelligenz” im Hauptsemester dient PP! In der Vorlesung geht es hauptsächlich um Paradigmen, funktionales Programmieren und rudimentäre Programmiersprachen, wie sie später im Fach “Künstliche Intelligenz” benötigt werden.
BWL 2:
BWL 2 befasst sich das ganze Semester über mit dem Bereich Rechnungswesen!
Mathematik 2:
Wie auch in AP2 werden die Kenntnisse aus Mathematik 1 in gewissen Bereichen vertieft sowie um neue Gebiete ergänzt! Weitere Informationen folgen später!
Theoretische Informatik 2:
Ti2 befasst sich im 2. Semester mit formalen Sprachen, endlosen Automaten, Petrinetzen und Turingmaschinen! Zu Ti sei noch gesagt, dass ich mir bisher hätte auch die Vorlesungen sparen können, da ich den ganzen Stoff schon in der gymnasialen Oberstufe gelehrt bekommen habe. Interessant für mich wird es erst ab dem Punkte Petrinetze und Turingmaschinen.
AP2 Praktikum Lösung Bruch.java:
Hier schon ein mal die Lösungen für die Abschnitte in der Bruch.java Datei!
Die Aufgabenblätter sind hier zu finden: http://www.gm.fh-koeln.de/~ehses/ap/index.html
public static final Bruch ONE = new Bruch(1);
public static final Bruch ZERO = new Bruch(0);
public Bruch(long zaehler, long nenner) {
if (nenner==0){
throw new ArithmeticException(“Der Nenner darf nicht 0 sein!”);
}
long temp1 = Math.abs(zaehler), temp2 = Math.abs(nenner);
long ggt = groessterGemeinsamerTeiler(temp1, temp2);
if (nenner<0){
ggt *= -1;
}
this.zaehler = zaehler / ggt;
this.nenner = nenner / ggt;
}
public Bruch addiere(Bruch bruch2) {
long temp1 = zaehler*bruch2.nenner + bruch2.zaehler*nenner;
long temp2 = nenner*bruch2.nenner;
return new Bruch(temp1, temp2);
}
public Bruch subtrahiere(Bruch bruch2) {
long temp1 = zaehler*bruch2.nenner – bruch2.zaehler*nenner;
long temp2 = nenner*bruch2.nenner;
return new Bruch(temp1, temp2);
}
public Bruch multipliziere(Bruch bruch2) {
long temp1 = zaehler * bruch2.zaehler;
long temp2 = nenner * bruch2.nenner;
return new Bruch(temp1, temp2);
}
public Bruch dividiere(Bruch bruch2) {
long temp1 = zaehler * bruch2.nenner;
long temp2 = nenner * bruch2.zaehler;
return new Bruch(temp1, temp2);
}
public Bruch invertiere() {
long temp1 = nenner;
long temp2 = zaehler;
return new Bruch(temp1, temp2);
}
public double doubleValue() {
double temp1 = zaehler;
double temp2 = nenner;
return temp1 / temp2;
}
public String toString() {
return (nenner == 1 ? String.valueOf(zaehler) : (zaehler + “/” + nenner));
}
public boolean equals(Object einObjekt) {
if (einObjekt instanceof Bruch) {
Bruch b = (Bruch) einObjekt;
return zaehler == b.zaehler && nenner == b.nenner;
}
return false;
}
public int compareTo(Object einBruch) {
Bruch b = (Bruch) einBruch;
double temp1 = doubleValue();
double temp2 = b.doubleValue();
return ((temp1 > temp2) ? 1 : ((temp1 < temp2)? -1 : 0));
}
}