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.
Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung | Letzte ÜberarbeitungBeide Seiten, nächste Überarbeitung | ||
pruefungen:hauptstudium:ls2:ueb1-2017-02-14_2 [14.02.2017 14:57] – preisi | pruefungen: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, | S: Naja, der obere Teil (Funktionsdefinition) ist noch identisch zur Methode. Danach darf man sich die Funktionsaufrufe angucken und anhand der Parameter entscheiden, | ||
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? | P: Ja, ok. Aber was ist der eigentliche Sinn der Abbildungsphase? | ||
+ | |||
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 " | S: Stimmt, ich hab hier einen Sprung vom Ende des " | ||
+ | |||
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) | ||