Archive for the ‘2. Semester Bc’ Category
3. AP 2 Praktikum Aufgabe 1

Hinweis: Die Lösung der Aufgabe wurde von mir am 05.05.09 um 16:30 Uhr aktualisiert!

Hier die Lösung zu der ersten Aufgabe im dritten AP 2 Praktikum:

Die Aufgabenblätter sind hier zu finden: http://www.gm.fh-koeln.de/~ehses/ap/index.html

public  class Table implements ITable {

    private static final int DEFAULT_INITIAL_SIZE = 4;

    private int size;
    private Entry[] data = new Entry[DEFAULT_INITIAL_SIZE];
   
    private void pruefeKey(Object key) {
     if(key==null){
      throw new NullPointerException(“key darf nicht 0 sein!”);
     }
    }
 
    public int size(){
     return size;
    }
   
    public Object put(Object key, Object value){
     
     pruefeKey(key);
     
     if(size>=data.length){
         Entry[] newdata = new Entry[data.length*2];
         for(int j =0; j<data.length; j++){
          newdata[j]=data[j];
         }
         data=newdata;
        }
     
      for(int i =0;i<size; i++){
       if(data[i]!=null){
        if(data[i].getKey().equals(key)){

         return data[i].setValue(value);
        }
       }
      }
     data[size++]= new Entry(key, value);  
     return null;
    }
   
    public Object get(Object key){
     
     pruefeKey(key);
     
     for(int i =0; i<size; i++){
       if(data[i].getKey().equals(key)){
        return data[i].getValue();
       }
      }
     
     return null;
    }
   
    public boolean containsKey(Object key){
           
     pruefeKey(key);
      
     for(int i =0; i<size; i++){
      if(data[i]!=null){
       if(data[i].getKey().equals(key)){

        return true;
       }
      }
     
     return false;
    }
   
    public Object remove(Object key){
     
     pruefeKey(key);
     
     for(int i =0; i<size; i++){
       if(data[i].getKey().equals(key)){

        Object temp = data[i].setValue(null);
        for(int j =i; j<data.length; j++){
         if(j+1!=data.length){
          data[j]=data[j+1];
        }
        }

        size- -;
        return temp;
       }
      }
     
     return null;
    }
   
    public Object[] keys(){
     Object[] keys = new Object[size];
     for(int i =0; i<keys.length; i++){
      if(data[i]!=null){

       keys[i]=data[i].getKey();
      }
     }
     
     return keys;
    }
}

2. AP 2 Praktikum

Hier nun schon mal die Lösungen zu den Aufgaben 1 und 2! Nummer 3 ist noch in Arbeit, sollte aber Montag spätestens Dienstag fertig sein. ;-)

Die Aufgabenblätter sind hier zu finden: http://www.gm.fh-koeln.de/~ehses/ap/index.html

Aufgabe 1:

public class Transaktionsarray  {
 
 int i = 2;
 int anz = 0;
 public Transaktion[] array = new Transaktion[i];
 
    public int anzahl() {
     return anz;
    }
   

    public Transaktion element(int i) { 
     if(anz-1<i){
      throw new IndexOutOfBoundsException(“Element wurde noch nicht gespeichert!”);
     }
     else return array[i];
    }

    public void speichere(Transaktion transaktion) {
        if(anz>=array.length){
         Transaktion[] newarray = new Transaktion[array.length*2];
         for(int j =0; j<array.length; j++){
          newarray[j]=array[j];
         }
         array=newarray;
        }
     array[anz++]=transaktion;
    }

    public Transaktion umgekehrt(int i) {
     int index = (anz-1)-i;
     if(anz-1<index){
      throw new IndexOutOfBoundsException(“Element wurde noch nicht gespeichert!”);
     }
     else return array[index];
    }
}

Aufgabe 2:

Konto.java

 void ueberweisen(double betrag, Konto ziel) {
     pruefeObBetragPositiv(betrag);
     pruefeObAuszahlungGedeckt(betrag);
     kontostand -= betrag;
     ziel.kontostand +=betrag;
     transaktionen.speichere(Transaktion.abgebuchtFuer(ziel.toString(),betrag));
     ziel.transaktionen.speichere(Transaktion.gebuchtVon(toString(), betrag));   
}

Bank.java

public void ueberweisen(int quelle, Bank zielBank, int zielKonto, double betrag) {
     Konto Quelle = getKonto(quelle);
     Konto Ziel  = zielBank.getKonto(zielKonto);
     Quelle.ueberweisen(betrag, Ziel);
}

AP2 Praktikum main.java

Hier noch zu dem ersten AP2 Praktikum die Lösungen zu der Datei main.java!

Additionsaufgabe:

for(int i=0; i<f2.length; i++){
        f2[i]=f2[i].addiere(f1[i]);
}

Multiplikationsaufgabe:

Bruch s = Bruch.ZERO;
for(int i=0; i<f1.length; i++){
        s = s.addiere(f1[i].multipliziere(f1[i]));
}

Studienverlauf und erstes AP 2 Praktikum

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));
}
}

2. Semester

Seit heute ist das 2. Semester am laufen, weitere Eindrücke und Informationen wird es dann am Wochenende geben!