Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Allgemeines

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Letzte ÜberarbeitungBeide Seiten, nächste Überarbeitung
pruefungen:hauptstudium:ls2:ueb1-2017-02-14_2 [14.02.2017 14:57] preisipruefungen:hauptstudium:ls2:ueb1-2017-02-14_2 [14.02.2017 14:57] preisi
Zeile 50: Zeile 50:
      }      }
 B: Wir wollen ein Refactoring Tool schreiben. Hier ist ein Stueck Code mit einer globalen Variable x und mehreren Funktionen. Was machen wir damit? B: Wir wollen ein Refactoring Tool schreiben. Hier ist ein Stueck Code mit einer globalen Variable x und mehreren Funktionen. Was machen wir damit?
 +
 S: Zuerst lexen und dann AST inklusive Definitionstabelle aufbauen. S: Zuerst lexen und dann AST inklusive Definitionstabelle aufbauen.
 +
 B: Und dann? Woher weiss ich, wann ich welche Variable umbenennen muss? B: Und dann? Woher weiss ich, wann ich welche Variable umbenennen muss?
 +
 S: Man guckt in der Definitionstabelle nach, worauf das Symbol zeigt. S: Man guckt in der Definitionstabelle nach, worauf das Symbol zeigt.
 Symboltabelle hingezeichnet und kurz erklaert... Symboltabelle hingezeichnet und kurz erklaert...
 +
 B: Ok, und jetzt haben wir hier noch die Funktion foo, die wir umbennen wollen. B: Ok, und jetzt haben wir hier noch die Funktion foo, die wir umbennen wollen.
 +
 P: Die ist aber ueberladen. Wie geht das da? P: Die ist aber ueberladen. Wie geht das da?
 +
 S: Naja, der obere Teil (Funktionsdefinition) ist noch identisch zur Methode. Danach darf man sich die Funktionsaufrufe angucken und anhand der Parameter entscheiden, um welchen Aufruf es sich handelt. S: Naja, der obere Teil (Funktionsdefinition) ist noch identisch zur Methode. Danach darf man sich die Funktionsaufrufe angucken und anhand der Parameter entscheiden, um welchen Aufruf es sich handelt.
  
Zeile 62: Zeile 68:
  
 B: Was macht man in der Abbildungsphase? B: Was macht man in der Abbildungsphase?
 +
 S: Transformationen und Optimierungen. S: Transformationen und Optimierungen.
 +
 B: Ok, welche Art von Transformationen? B: Ok, welche Art von Transformationen?
 +
 S: Variablenfaltungen. (Zeigt auf 13.0 + 11.0) S: Variablenfaltungen. (Zeigt auf 13.0 + 11.0)
 +
 P: Ja, ok. Aber was ist der eigentliche Sinn der Abbildungsphase? Was will man danach haben? P: Ja, ok. Aber was ist der eigentliche Sinn der Abbildungsphase? Was will man danach haben?
 +
 S: Oh, man will eine Zwischensprache erzeugen! Weil man so mit ziemlich wenig Aufwand auch Programme fuer andere Architekturen erstellen kann. S: Oh, man will eine Zwischensprache erzeugen! Weil man so mit ziemlich wenig Aufwand auch Programme fuer andere Architekturen erstellen kann.
 +
 B: Gut, und was passiert sonst noch in der Abbildungsphase? B: Gut, und was passiert sonst noch in der Abbildungsphase?
 +
 S: (Etwas verunsichert) Erm, naja es werden auch teilweise noch Operationen vertauscht, um so Hardware optimal auszunutzen und weil es manchmal effizienter ist. S: (Etwas verunsichert) Erm, naja es werden auch teilweise noch Operationen vertauscht, um so Hardware optimal auszunutzen und weil es manchmal effizienter ist.
 +
 B: Ok, wir haben hier einen Baum einer Bedingung. Wie generiere ich hierfuer Code mit Cut-off-Semantik? B: Ok, wir haben hier einen Baum einer Bedingung. Wie generiere ich hierfuer Code mit Cut-off-Semantik?
 (Es handelt sich bei dem Baum um die Condition bei [1]) (Es handelt sich bei dem Baum um die Condition bei [1])
 +
 S: (Kurz durchgefuehrt. Einfach das bekannte Schema angewendet.) S: (Kurz durchgefuehrt. Einfach das bekannte Schema angewendet.)
 +
 P: Ok, jetzt fehlt da aber noch was.. P: Ok, jetzt fehlt da aber noch was..
 +
 S: Stimmt, ich hab hier einen Sprung vom Ende des "true"-blocks zum ende des "false"-blocks vergessen. S: Stimmt, ich hab hier einen Sprung vom Ende des "true"-blocks zum ende des "false"-blocks vergessen.
 +
 P: Richtig. Und was passiert, wenn wir zu true bzw. false springen? P: Richtig. Und was passiert, wenn wir zu true bzw. false springen?
 +
 S: Naja, es wird halt der entsprechende Codeblock ausgefuehrt. (zeigt auf Programmbeispiel weiter oben) S: Naja, es wird halt der entsprechende Codeblock ausgefuehrt. (zeigt auf Programmbeispiel weiter oben)