Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » pfp » Aufgabe 1: Wissensfragen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte ÜberarbeitungBeide Seiten, nächste Überarbeitung
pruefungen:bachelor:pfp:loesungss13 [17.07.2014 14:00] Alicenpruefungen:bachelor:pfp:loesungss13 [20.07.2016 14:29] Marcel[Inf]
Zeile 12: Zeile 12:
 ==== Aufgabe 2: Petri-Netze ==== ==== Aufgabe 2: Petri-Netze ====
  
-(Wer das hier mit Zeichnungen vervollständigen möchte, darf das gerne tun!)+(Das originale Word-Dokument zum Bild habe ich auch hier in denselben Namensraum zwecks etwaigen Änderungen hochgeladen.)
  
-a) +{{:pruefungen:bachelor:pfp:ss13-aufgabe2-petrinetz.png?600|}} 
-Wenn man auch ein Token ergänzen darf  + 
-Mit einer erneuten Stelle ergänzen. von t1 und t3 zur Stelle hin, von der Stelle zu t2 und t4. +  * a) (Mindestens?) 4 Möglichkeiten:
  
-Wenn man Beschränkungen hinzufügen darf, mit einer Stelle mit Beschränkung 1,  +  - Oben links: Wenn man auch ein Token ergänzen darf: Mit einer erneuten Stelle ergänzen. von t1 und t3 zur Stelle hin, von der Stelle zu t2 und t4.  
-dann von t2 und t4 zur Lockstelle, von der Lockstelle zu t1 und t3. +  - Oben rechts: Wenn man Beschränkungen hinzufügen darf, mit einer Stelle mit Beschränkung 1, dann von t2 und t4 zur Lockstelle, von der Lockstelle zu t1 und t3. 
 +  - Unten links: Ohne Token und Beschränkung Version II: p4 zu t2 und p2 zu t4, jeweils als Doppelpfeil. 
 +  - Unten rechts: Ohne Token und Beschränkung: p4 zu t2, p2 zu t4, t1 zu p4, t3 zu p2 (praxisfern)
  
-Ohne Token und Beschränkung: +  * b)
-p4 zu t2, p2 zu t4, t1 zu p4, t3 zu p2 +
-(Praxisfern)+
  
-   S = ( 0, 1, 1, 0, 0, 0)(Traversiert)+   S = ( 0, 1, 1, 0, 0, 0)(Transponiert)
  
    M:     M: 
Zeile 35: Zeile 35:
     0        -1   0     0        -1   0
  
-c)+  * c)
 Nein. Durch t4->t5->t2->t6->t6 verschwinden alle Marken! Nein. Durch t4->t5->t2->t6->t6 verschwinden alle Marken!
  
-d) +  * d) 
 t4->t5->t6->t1->t4 t4->t5->t6->t1->t4
  
Zeile 46: Zeile 46:
 a)  a) 
  
-for(int i = 0; i < nStages; i++){ +  for(int i = 0; i < nStages; i++){ 
- +    boolean lastThread = (i == threads.length - 1); 
-boolean lastThread = (i == threads.length - 1); +     
- +    inQueue<Integer> = queues[i];  
-inQueue<Integer> = queues[i];  +     
- +    outQueue<Integer> = queues[i+1];  
-outQueue<Integer> = queues[i+1];  +     
- +    threads[i] = new StageThread(i, inQueue, outQueue, lastThread);  
-threads[i] = new StageThread(i, inQueue, outQueue, lastThread);  +    threads[i].start();  
-threads[i].start();  +  }
- +
-}+
  
 b)  b) 
Zeile 69: Zeile 67:
 4) if(!lastThread) outQueue.put(value);  4) if(!lastThread) outQueue.put(value); 
  
-return; //break auch möglich!+return; break auch möglich!
  
 ==== Aufgabe 4: Schreibtischlauf ==== ==== Aufgabe 4: Schreibtischlauf ====
Zeile 96: Zeile 94:
 ==== Aufgabe 5: Collatz ==== ==== Aufgabe 5: Collatz ====
  
-a) +**a)** 
-(Int => Boolean) => (Int => Int, Int => Int) => Int => Int = +  def construct: (Int => Boolean) => (Int => Int, Int => Int) => Int => Int = 
 i => (e, o) => n => if(i(n)) e(n) else o(n) i => (e, o) => n => if(i(n)) e(n) else o(n)
  
-b)  +**b)**  
-def f: Int => Stream[Int] = n => n #:: f(c(n))+  def f: Int => Stream[Int] = n => n #:: f(c(n))
  
-c) +**c)** 
-def oddCount: (Int, Int) => Int =  +  // toList vor foldLeft ist optional, Stream bietet auch diese Funktion 
-(n, k) => f(n).take(k).toList.foldLeft(0)((a, b) => if(isEven(b)) a +1 else a)+  def oddCount: (Int, Int) => Int = (n, k) => f(n).take(k).toList.foldLeft(0)( (a, b) => if(isEven(b)) a else a+1)
  
 ==== Aufgabe 6: Scala / Graphen faerben ==== ==== Aufgabe 6: Scala / Graphen faerben ====
Zeile 123: Zeile 121:
  
   def getFreeColor: List[Color] => Color = l => (for(i <- List.range(0, l.length + 1 ) if !l.contains(i))yield i).head   def getFreeColor: List[Color] => Color = l => (for(i <- List.range(0, l.length + 1 ) if !l.contains(i))yield i).head
 +
 +Alternativ mit dropWhile:
 +
 +  def getFreeColor: List[Color] => Color = ms => List.range(0,ms.length+1).dropWhile(ms.contains(_)).head
 +
 +Rekursive Alternative:
 +
 +  def getFreeColor: List[Color] => Color = cs => {
 +    if (cs.contains(0)) {
 +      getFreeColor(cs.map(_-1)) + 1
 +    }
 +    else {
 +      0
 +    }
 +  }
  
 **b)** **b)**
    def colorGraph: List[Node] => List[Coloring] => List[Coloring] = {    def colorGraph: List[Node] => List[Coloring] => List[Coloring] = {
-     case Nil => cols => cols +     nod => cols => nod match { 
-     case n::nod => cols => colorGraph(nod)(nextFreeColor(cols)(n)::cols) +          case Nil => cols 
-   }+          case n::ns=> colorGraph(ns)(nextFreeColor(cols)(n)::cols) 
 +          } 
 +    }