Home

Animation der semantischen Analyse

image

Contents

1. 79 5 5 2 mitialisierung 79 5 5 3 Animationssteuerung und deren Implementierung 80 5 6 Aufruf der dynamischen Erweiterung 82 5 6 1 Grundkonzept der 83 5 6 2 Implementierung las REINER Rn ei dpe SUSUN 83 6 DIE DYNAMISCHE ERWEITERUNG ASA 86 6 1 Gr nde f r die Programmteilung cs00sss00000sssessnensenonsssensonsnsansnsnnsnsonsnssssnnsnsessnssnsssensnsessnnene DO 6 2 Starten des Programms 7 geen 6 3 1 Benutzeroberflache und deren Eigenschaften 88 6 3 1 1 Men leiste und Toolbar 3333399988 89 6 3 1 2 Animationsbereich 6 3 1 3 St tuszelleas a a as s d s ai INHALTSVERZEICHNIS iv 6 3 2 Hilfsmittel E 91 WEE At UC 91 SUD E 91 6 323 Eingabemaske 2 2 2222 ee A A SR Ra 92 6 324 Layoutparameter a a es et 93 6 4 Visuialisicrum Pens cc cssssccosscosceansdseneaesesesensssenseoocsensasosdensasessessnses eosss
2. 49 3 2 G ltigkeits und Sichtbarkeitsregelhn 50 3 2 EE 51 3 2 2 SICHtW ark itis c s s D R S R s YR deeg ee Nee 51 3 3 berpr fung der Kontextbedingungen 52 3 3 1 Identifizierung von 52 3 3 2 berpr fung der Tvpkonststenz 53 3 4 berladung von Bezeichnern 2 53 3 4 1 Verfahren zur Aufl sung der U berladhung eee eeeeseeceseceseeceseeeesseecsseecsseeceseeeesaeessaeessneeesee 54 3 5 56 3 5 1 Die Sprache 56 Se ENK OO EEN 57 3 5 3 Formalisierung der Typinferenz nr inrit n eia ri ri eridi I i a 59 3 5 3 1 STEE 59 3 5 3 2 Unifikation riren ei nE E E E R A E o iii 60 3 5 3 3 Typinfer n systeM nsien senna a a a a a a a i Ded 61 INHALTSVERZEICHNIS ns 4 PRINZIPIEN ZUR ERSTELLUNG VON ANIMATIONSSOFTWARE 63 KA EE SET Reutte 2 ee EN E ee EE E 4 1 2 Autorensicht 4 2 Design von 4 d3Oherfi chen ge
3. Durch einen Aufruf der Window Funktion RegisterWindowMessage kann man sich vom System einen benutzerdefinierte Botschaft erzeugen lassen die im vierten Bereich 0xC000 bis OxFFFF unserer Unterteilung liegt Mit dieser generierten Botschaft hat man die Ge wi heit da keine anderen Applikationen unabsichtlich dieselbe Botschaftsnummer ver wenden 5 6 2 Implementierung Die Kommunikationsfunktionen der animierten Pr sentation AP sind in eine DLL mit Namen CONNECT DLL ausgelagert worden Von dort aus hat man die M glichkeit direkt die C Schnittstelle des Windows API anzusprechen Diese DLL wird beim Startvorgang der animierten Pr sentation in den Speicher geladen und die Funktionen im Buchskript bekannt gemacht Um die Kommunikation zu initialisieren mu man unterscheiden welches Programm zu erst gestartet wurde Beide Programme sind voneinander unabh ngig lauff hig Es ist nicht m glich die animierte Pr sentation vom ASA Tool aus aufzurufen Wir nehmen desweite ren an da alle benutzerdefinierten Botschaften dem System schon durch Aufrufe von Re gisterWindowMessage bekannt gemacht wurden Beim Start der AP sendet eine Funktion der DLL einen globalen Broadcast mit der Bot schaft TBM_GETHWND TBM ToolBook Message an alle im Speicher befindlichen Programme Dies ist notwendig um den Fensterhandle des ASA Tools zu erlangen welcher der AP unbekannt ist TBM_GETHWND a AP Fensterhandle
4. Identifier fThenElseStat Textrahmen Left a einteiliges Knotenfenster b zweiteiliges Knotenfenster Abb 6 15 Knotenfenster Erh lt das Parent Fenster Animationsfenster der Knotenfenster die Botschaft WM_ PAINT so wird diese Botschaft auch an die Knotenfenster selbst versandt Diese zeichnen ihren Fensterinhalt wie in Abb 6 15 gezeigt Dazu zentriert ASA eine Textzeile der Kno KAPITEL 6 DIE DYNAMISCHE ERWEITERUNG ASA 105 tenbeschriftung horizontal in einem Textrahmen dessen Dimension die bereits oben be schriebene Funktion GerTextExtent liefert Nach dem Zeichnen des Syntaxbaumes kann der die AnwenderIn nach der Durchf hrung des jeweiligen animierten Algorithmus auf die Knotenfenster klicken Die Knotenattribute Typen ops Mengen etc erscheinen daraufhin ebenfalls in kleinen Fenstern die identisch zu den Knotenfenstern aufgebaut und dementsprechend implementiert sind 6 5 4 Einbettung von Wegen innerhalb der Baumdarstellung Bei der berpr fung der Kontextbedingungen k nnen Syntaxbaumknoten angeklickt wer den die f r ein angewandtes Vorkommen eines Bezeichners stehen Es erscheint ein Pfeil auf den ein definierendes Vorkommen symbolisierenden Knoten Dazu ist es n tig einen Algorithmus zu finden der einen entsprechenden Polygonzug durch den Syntaxbaum be rechnet Zur Vereinfachung betrachten wir hier nur Baumlayouts deren Apex oben im Fen ster liegt und Knoten mit einer horizontalen bzw vertikalen Ausd
5. ES die eines frei verwendbaren Extrasegments Zeigervariablen die sich auf das aktuelle Segment beziehen werden als near 16 Bit be zeichnet Die schon erw hnten far Zeiger enthalten eine explizite Segmentadresse 32 Bit Die Segmentregister nehmen im Protected Mode sogenannte Selektoren auf Der Pro zessor interpretiert die h herwertigen 16 Bits eines Selektors als Index einer Deskriptor Tabelle deren Elemente jeweils 8 Bytes umfassen Dadurch wird eine vollst ndige Be schreibung des jeweiligen Speicherbereichs erreicht Hierbei wird auch eine Basisadresse festgelegt die beim 80286 24 Bit umfa t woraus ein adressierbarer Gesamtspeicher von 16 MByte resultiert 80386 Prozessoren erlauben 32 Bit Basisadressen und 4 GByte adressier baren Gesamtspeicher Die restlichen 5 Byte beim 80286 bzw 4 Byte beim 80386 werden verwendet um Informationen ber die Gr e und Art des Code oder Datensegments be reitzustellen Hinzu kommt noch die Speicherung der Privilegstufe die ein Programm ha ben mu um auf den Speicherbereich zuzugreifen Speichersegmente k nnen vom System verschoben werden um Raum f r andere An wendungen zu schaffen die diesen eventuell dringender brauchen Da jeder Bezug auf ein Segment ber die Deskriptor Tabelle l uft beschr nkt sich die Korrektur von far Zeigern auf eine Ver nderung des Tabelleneintrags Basisadresse Der gesamte von Windows verwaltete Speicher wird als globaler Heap bezeichnet Er
6. Multitasking Mehrere Programme repr sentiert durch Fenster k nnen gleichzeitig laufen Eine nahezu vollst ndige Beschreibung des Windows 3 1 Systems findet man in Pet92 1 1 Programmierung Anders als kommandozeilenbasierte Programme m ssen sich Windows Programme wie das ASA Tool zus tzlich um ihre eigene graphische Repr sentation bem hen Da ein Win dows Programm grunds tzlich vom System mit einem Fenster assoziiert wird m ssen auch bei Windows Programmen die im Hintergrund laufen Fenster erzeugt und Fenstereigen schaften gesetzt werden Die entsprechenden Fenster werden in diesem Fall einfach unsicht bar gemacht Eine Folge daraus ist da jedes Windows Programm einen gewissen berbau ben tigt der es ihm erm glicht sowohl sein Fenster zu verwalten als auch eine Kommuni kation mit dem System vorzubereiten 1 1 1 Schnittstelle zum System Windows teilt sich mit DOS die Verwaltung des Computers W hrend DOS alle Funktionen bez glich des Dateisystems bernimmt verwaltet Windows den Rest Bildschirm Tastatur Maus Speicher Die Systemschnittstelle genannt Windows API Application Pro gramming Interface besteht aus etwa 1000 Funktionen und mehreren tausend Konstan ten die alle in einer speziellen Headerdatei WINDOWS H deklariert sind Gr tenteils be steht Windows aus drei dynamischen Bibliotheken DLL s e KRNL386 Speicher und Programmverwaltung e USER Benutzerschnittstelle un
7. Alt93 Der Grund f r den Vorrang des visuellen Lernens liegt in der Aufteilung des mensch lichen Gehirns in zwei Hemisph ren verbunden durch das Corpus Callosum Die linke Hemisph re ist die kognitive sie verarbeitet eins nach dem anderen denkt logisch und entscheidet nach Regeln und Gesetzm igkeiten Andererseits ist die rechte Hemisph re die affektive sie denkt in Bildern nutzt Analogien sprengt Regeln reagiert spontan und kreativ Es ist wichtig eine Information so aufzubereiten da beide Hemisph ren angesprochen werden Zeigt man zu einem abstrakten Begriff ein Bild so nutzt man beide Informa tionskan le und erm glicht die Verbindung des Begriffs mit einer bildhaften Vorstellung Dies h ngt aber offensichtlich auch von dem Themengebiet ab Spricht man beispielsweise von einem bekannten Begriff etwa einem PC so sendet die rechte Hemisph re sofort ein Bild von einem eckigen Kasten mit Monitor Tastatur und vielleicht auch einer Maus Spricht man andererseits zum Beispiel von dem Begriff KI und man h rt diesen Begriff zum erstenmal dann kann man sich davon kein Bild machen Um Informationen im Ged chtnis zu verankern gibt es drei grunds tzliche M glichkei ten des Lernens vgl Abb E 1 Wiederholungslernen Darunter versteht man beispielsweise das Lernen von Vokabeln Regeln und Formeln Da Wiederholungen prim r linkshirnorientiert sind kommt es zu Schwierigkeiten diese Informa
8. Programme konzipiert wurden Ob die generierten Parser bei jeder Anwendung den allo kierten Speicher wieder vollst ndig freigeben ist dem generierten C Code nur schwer zu ersehen Eine berpr fung des Speichers nach vielfachen Syntaxtests w hrend des laufen den Programms hat allerdings auch keinen auff lligen Speicherplatzverlust ergeben Die implementierten Parser testen aber nicht nur die Syntax des Eingabeprogramms und bauen nicht nur die Datenstruktur des aus dem Eingabeprogramm resultierenden Syn taxbaumes auf Gleichzeitig suchen sie die Komponenten der verschiedenen Sprachkon strukte im Quelltext z B die Einzelkomponenten Schl sselw rter einer if_then_else_fi Anweisung und speichern deren Position im Quelltext an den entsprechenden Knoten im Syntaxbaum etwa an einen Knoten ifThenElseStat Das sind mehr Informationen als das ASA Tool in der gegenw rtigen Version verwenden kann Aber f r zuk nftige Projekte k nnten sich diese Textpositionen im Syntaxbaum eines Beispielprogramms als n tzlich er weisen Klickt z B der die Anvvenderln auf einen Knoten ifThenElseStat in der Syn taxbaumvisualisierung dann k nnte das entsprechende mehrteilige Sprachkonstrukt im Quelltext als zus tzliche Information randscharf farbig markiert werden 6 5 2 Layoutberechnung f r B ume Um den sich im Speicher befindlichen Syntaxbaum auch graphisch im Animationsbereich anzuzeigen mu ASA zun chst ein m glichst sthetisches B
9. TextOut unterst tzt beliebige Tabulatorabst nde und ExtTextOut erm glicht es den Ab stand zwischen einzelnen Zeichen kerning individuell festzulegen Mit der Funktion DrawText l t sich statt einer Startposition ein Rechteck angeben in dem der Text erschei nen soll Sie arbeitet somit auf einer etwas abstrakteren Ebene und erm glicht die nahezu komplette Formatierung des Textstrings innerhalb der Rechteckgrenzen einschlie lich Zei lenumbr chen und Spaltenausgabe Aufgrund dieser Eigenschaften eignet sie sich beispiels weise f r Knotenbeschriftungen in der graphischen Repr sentation von B umen Die Funk tion SetTextAlign formatiert einen Text horizontal oder vertikal und beeinflu t damit die Startposition mit GerTextExtent lassen sich die Ausma e eines Textstrings in Abh ngigkeit von der Schriftart und gr e bestimmen Ebenso wie die Zeichenoperationen verwendet die Funktionen zur Textausgabe gewisse Attribute des eingesetzten Kontextes um die Textdarstellung zu beeinflussen Textfarbe Das System versieht die Textfarbe standardm ig mit der Farbe Schwarz Die ses Attribut des Ger tekontextes kann mit der Funktion SerTextColor durch bergabe eines RGB Wertes ge ndert werden Hintergrundfarbe Hier l t sich die Farbe festlegen mit welcher der Zeichenhintergrund gezeichnet werden soll Hintergrundmodus Im Standardmodus OPAQUE f llt das System die R ume innerhalb und zwischen den Zeichen mit der in den
10. expression lt expression expression ss expression expression ez expression variable IDE expr_list C expression expression expression expression expression expression ANHANG A GRAMMATIKEN 114 simple_expr variable design_list design type dim_list dim field_list field bound expression expression OR expression expression AND expression NOT expression expression expression expression P expression expression MOD expression 5 INTEGER STRING REAL boolean IDE IDE design_list 5 design design list design list Y IDE 2A type_ide N type ide ARRAY T dim list V OF type RECORD Geld list END 5 dim dim list dim bound bound field field_list field id list type 5 IDE INTEGER ANHANG A GRAMMATIKEN constant boolean type_ide types A INTEGER INTEGER IDE REAL REAL REAL INTEGER INTEGER INTEGER boolean STRING 5 TRUE FALSE 5 IDE types H CHAR TYPE BOOL TYPE INT TYPE REAL TYPE 5 A 3 Eingabesyntax der berladungsspezifikation A 3 1 Symbolklassen BU a zA Z ZI 0 9 IDE BU BU ZI INTEGER 1 9 ZI 10 REAL INTEGER ZI CHAR ANY CHAR_TYPE char o
11. v f r jedes v In einem Baum gilt indeg v 1 f r jeden Knoten vo Definition 6 5 4 allgemeiner Baum Ein Baum T hei t allgemeiner Baum wenn f r jeden Knoten v V die Anzahl seiner Nachfolger outdeg v beliebig ist 0 Der hier beschriebene Algorithmus berechnet das Layout von allgemeinen B umen Er entspricht dem Baumlayout Algorithmus der auch im VCG Tool vgl San96 eingesetzt ist Bei der Entwicklung des ASA Tools hatten wir zur Implementierung eines eigenen Lay outalgorithmus noch eine Alternative die Verwendung des VCG Tools mittels DDE Lei der war dessen Portierung auf Windows 3 1 noch nicht abgeschlossen so da dies zu War tezeiten gefiihrt hatte Ein weiteres Problem ist der damit verbundene Speicherverbrauch Im Minimalfall wiirden sich bei einer solchen DDE Kommunikation drei Windows Pro gramme im Hauptspeicher befinden die ToolBook Anwendung zur animierten Pr senta tion das ASA Tool und das VCG Tool Eine Plattform mit wenig Hauptspeicher 8 MB h tte dies sicherlich nur schwer verkraftet 6 5 2 1 Layoutkriterien Die Layoutkriterien geben an wann ein Baumlayout sthetisch wirkt Knoten auf der gleichen Baumebene Level sollten entlang einer Geraden liegen und diese Geraden sollten zueinander parallel sein e Ein Elternknoten sollte ber seinen Nachkommen zentriert liegen KAPITEL o DIE DYNAMISCHE ERWEITERUNG ASA 101 e Ein Baum und sein Spiegelbild sollten so
12. 5 7 Anzeige der verwendeten kontextfreien Grammatiken KAPITEL 5 DIE ANIMIERTE PR SENTATION 76 von Windows genutzt Abbildung 5 6 zeigt den Anfang des Literaturverzeichnisses f r die semantische Analyse insgesamt 5 2 2 3 Kontextfreie Grammatiken Die in der Animation der semantischen Analyse verwendeten Beispielsprachen sind PASCAL und LAMA Mit Hilfe der KFG Dialogbox k nnen die beiden dazugeh rigen kontextfreien Grammatiken jederzeit angezeigt werden siehe Abb 5 7 und Anhang A Eine Vereinfachung ist der Produktionenstack der dem der BenutzerIn hilft den Flu der Produktionen zu verfolgen Jedesmal wenn man auf ein rechts stehendes Nichtterminal im unteren Feld doppelklickt so wird dieses Nichtterminal im Produktionenstack oben einge tragen Das Feld scrollt zu der entsprechenden Produktion und zeigt das angeklickte links stehende Nichtterminal an Nun kann man wieder ein rechts von dieser Produktion stehen des Nichtterminal anklicken und die entsprechende Produktion anzeigen lassen etc Um in diesem Pfad wieder zur ckzugehen klickt man auf den Button links neben dem Stack Dann wird das oberste Element auf dem Stack entfernt und im unteren Feld die vorhergehende Produktion die des nun obersten Nichtterminal auf dem Stack markiert 5 2 2 4 Animierte Algorithmen Alle Quellcodes der in der Animation der semantischen Analyse animierten Algo rithmen lassen sich durch die Algorithmen Dialogbox darstellen siehe Abb 5 8 u
13. AP Fensterhandle Ab hier nehmen wir an da beide Programme ihre Fensterhandles kennen und sich beide im Speicher befinden Der die BenutzerIn w hlt nun auf einer Seite der animierten Pr sentati on das Hotword zur Behandlung der aktuellen Themas in der dynamischen Erweiterung ASA Falls sich diese nicht schon im Speicher befindet wird sie automatisch gestartet In Abh ngigkeit von den vier m glichen Themen gibt es nun auch vier verschiedene Bot schaftstypen die versendet werden k nnen Das sind TBM_CHANGETO_CAS f r den Vergleich der konkreten zur abstrakten Syntax TBM_CHANGETO_CC f r die berpr fung der Kontextbedingungen TBM_CHANGETO_OL f r die Aufl sung der berladung und TBM_CHANGETO_PM f r die Typinferenz Alle diese m glichen Botschaften seien durch die generische Botschaftsbezeichnung TBM_CHANGETO X abgek rzt DLL TBM CHANGETO X ASA AP Das ASA Tool reagiert daraufhin mit dem Einblenden der Dialogbox zur Themenausvvahl mit dem aktuellen Thema als Vorauswahl Akzeptiert der die AnwenderIn das Thema so KAPITEL 5 DIE ANIMIERTE PR SENTATION 85 startet ASA mit dem aktuellen Thema bzw wechselt von dem letzten zum aktuellen Thema Um das ASA Tool zu beenden w hlt man entweder in der Men leiste von ASA direkt die Beenden Option oder dr ckt auf der entsprechenden Seite in der animierten Pr sentati on das nun gelb eingef rbte Hotword ein zweites M
14. Gen A nl Fost v Gen A t Der Typinferenzalgorithmus der dieses Typinferenzsystem vervvendet ist im Anhang B 4 angegeben und erl utert Wir geben ein einfaches Beispiel an um zu demonstrieren wie der Typinferenzalgorithmus funktioniert Angenommen vvir vvollen den allgemeinsten Typ des LAMA Ausdrucks Ax x 5 unter der initialen Typumgebung 5 int herleiten Wir m ssen einen Bevveis f r die Aussage der Form S int Ax x 5 t konstruieren und dabei den Typ r bestimmen Diese Aussage kann nur durch die Verwen dung der Regel APP erzeugt werden S int Ax x 5 gt t S int 5 2 5 int Ax x 5 t Nun sind r und 7 zu bestimmen Zur Behandlung der zweiten Pr misse ist die Regel CON zu vervvenden Es gilt 5 int 5 int gt Daraus folgt direkt da t int Die erste Pr misse wird mit der Regel ABS ausgewertet 5 int Lescht sz 5 int gt t Deren Pr misse mu mit VAR behandelt werden nt f gt t Jetzt folgt t int Der Beweis ist vollst ndig und int wurde inferiert Kapitel 4 Prinzipien zur Erstellung von Animationssoftware Wir wollen nun einige Prinzipien und Merkregeln fiir die Erstellung von Oberflachen und Animationen angeben Sie basieren im Zusammenhang mit Animationen meist lediglich auf praktischen Erfahrungen und sind stark von dem Themengebiet das dargestellt wird ab h ngig Einige Prinzipien k nnen sich auch widersprec
15. Schaltfl che to handle buttonClick end Behandlungsroutinen to handle mouseEnter end Schaltfl che Abb 2 3 Das Skript eines ToolBook Objekts Die meisten ToolBook Objekte haben jedoch kein eingebautes Verhalten Um das Objekt verhalten zu definieren oder zu ndern schreibt man f r das jeweilige Objekt ein OPENSCRIPT Programm ein sogenanntes Skript Jedes Skript ist direkt und untrennbar mit einem Objekt verbunden vgl Abb 2 3 2 3 1 Ereignisse und Botschaften ToolBook ist ebenso wie das Windows System ereignisgesteuert d h die Benutzeraktionen steuern das Programm Jede Handlung die ein eine BenutzerIn durchf hrt etwa das Klik ken auf eine Schaltfl che ist ein Ereignis ToolBook bersetzt solche Ereignisse in Bot schaften eine Kommunikation die ToolBook an ein Objekt Zielobjekt oder kurz Ziel sendet um diesem mitzuteilen da ein Ereignis stattgefunden hat Es gibt zwei Arten von Botschaften e integrierte Botschaften Alle im ToolBook System eingebauten Botschaften die ToolBook als Reaktion auf eine Benutzeraktion sendet e benutzerdefinierte Botschaften Alle nicht in ToolBook integrierten Botschaften f r die der die EntwicklerIn eine entsprechende Behandlungsroutine zur Verf gung stellen mu Ein OPENSCRIPT Programm welches das Verhalten eines Objekts f r ein bestimmtes Er eignis festlegt hei t Behandlungsroutine Dabei handelt es sich um eine Reihe von OPENSCRIPT Anweisungen in einem Skri
16. alle im enthaltenen Typvariablen als nicht generisch angesehen werden addGenAssum hat die gleiche Funktionalit t wie addAssum au er dem Unterschied da alle im Typ r enthaltenen Typvariablen als generisch angesehen werden Die Funktion ookup liefert f r einen Knoten den entsprechenden Typterm aus der Umgebung getNG gibt eine Liste aller Typen aus die nicht generische Typvariablen enthalten Schlie lich erzeugt die Funktion emptyAssum eine leere Typumgebung Darunter versteht man eine Typumgebung ohne Annahmen und ohne nicht generischen Variablen Alle im Verlauf der Typinferenz kreierten ANHANG B ANIMIERTE ALGORITHMEN 126 Annahmen werden aus diesem Initialwert generiert falls keine initiale Typumgebung ange geben wurde func addAssum k node t typeExp A assum assum begin f ge das neue Paar k f einer Annahme zu pairs A hinzu f ge den Typterm zu nongen A hinzu return A end func addGenAssum k node t typeExp A assum assum begin f ge das neue Paar k t einer Annahme zu pairs A hinzu return A end func lookup k node A assum typeExp begin foreach in pairs A enthaltenen Annahmen a do if node a k then return type a fi do return no_type end func getNG A assum list of typeExp begin return nongen A end func emptyAssum assum begin return neue Umgebung A end Der Algorithmus benutzt Zust nde Datentyp state die die aktuelle Situation besch
17. chste Gruppe von Operationen bzw Funktionen besch ftigt sich mit den gefundenen Bezeichnern direkt enter_id f gt einen Eintrag f r den Bezeichner id in die Symboltabelle ein Dieser enth lt den Verweis auf seine Deklarationsstelle die in decl_ptr bergeben wird search_id sucht das definierende Vorkommen zu id und gibt den Verweis auf die Deklara tionsstelle zur ck wenn er existiert Beide Routinen arbeitet relativ zum aktuellen Block ANHANG B ANIMIERTE ALGORITHMEN 120 proc enter_id id idno decl_ptr node begin if exist bereits ein Eintrag fiir id in diesem Block then error Doppeldeklaration fi kreiere neuen Eintrag mit decl_ptr und Nr des akt Blocks f ge diesen Eintrag hinten an die lineare Liste f r id an fiige diesen Eintrag hinten an die lineare Liste fiir diesen Block an end func search id id idno node begin if Zeile fiir id ist leer then error undeklarierter Bezeichner else return Wert des decl Feldes aus erstem Eintrag in Zeile id fi end B 2 Implementierung des Typkonsistenz Analysators Der Algorithmus zur berpr fung der Typkonsistenz kontrolliert ob das Quellprogramm die Typregeln der verwendeten Programmiersprache erf llt Weiterhin l st er die eventuelle triviale berladung eingebauter Operatoren z B die arithmetischen Operatoren auf Da zu verwendet er einen bottom up Pass ber einen Ausdrucksbaum siehe Abschnitt 3 3 2 Bevor die Hauptprozedur analyze_t
18. glichkeiten zur Interaktion und gehe auf die wichtig sten Details der Implementierung ein Kapitel 1 Microsoft VVindovvs 3 1 Mit Windows stellt Microsoft eine graphisch orientierte Benutzerumgebung zur Verf gung die momentan alle vergleichbaren Konkurrenzprodukte auf dem PC Markt dominiert Hun derte sehr leistungsf hige Applikationen stehen dem der BenutzerIn unter dieser Oberfl che zur Verf gung deren komfortable Bedienung einen gro en Fortschritt in der Benutzer freundlichkeit im Vergleich zu fr heren DOS Programmen darstellt Die Grundlagen f r graphische Benutzeroberfl chen dieser Art wurden gegen Mitte der 70er Jahre im Palo Alto Research Center PARC von Xerox f r Programmiersysteme wie z B Smalltalk geschaffen Anschlie end hat die Firma Apple die dabei entwickelten Prinzi pien der breiten ffentlichkeit durch die Einf hrung der Macintosh Serie zug nglich ge macht Ein kurzer R ckblick auf die Geschichte des Windows Systems gibt Auskunft ber dessen Entwicklung und technischen Ver nderungen Windows 1 01 1985 Erste freigegebene Version noch ohne sich berdeckende Fenster oder Dialoge aber schon mit eigener Speicherverwaltung 640 KByte Grenze von MS DOS f llt weg Windows 2 0 1987 Erstmals mit sich berdeckenden Fenstern und Dialogen Windows 386 1988 Der Virtual 8086 Mode des 80386 wird verwendet um den Parallel betrieb von DOS Programmen mit direkten Hardwarezugriffen zu realisieren
19. k node begin for i 1 to descs k do bottom elim k i ops k ops k op ops k par typ op i amp pot res types k i od end proc fop dovvn elim k node begin for i 1 to descs k do ops k i ops k i op ops k i res typ op act types k i top dovvn elim k i od end begin init_ops bottom_up_elim root top_down_elim root pr fe ob jetzt alle ops Mengen einelementig sind sonst Fehlermeldung end B 4 Typinferenzalgorithmus Dieser Algorithmus stammt aus dem Buch Rea89 Er wurde dort in der funktionalen Sprache Standard ML SML vorgestellt und f r die Animation der semantischen Analyse in C bersetzt und erweitert Hier ist er in einem PASCAL hnlichen Code angegeben und basiert auf dem in Abschnitt 3 5 3 3 gezeigten Typinferenzsystem Aus Gr nden der ber ANHANG B ANIMIERTE ALGORITHMEN 123 sichtlichkeit enth lt der Typinferenzalgorithmus keine Regeln f r LAMA Konstrukte der Form Av v e und ei n sondern nur f r deren einfache Formen Av e und e e Seine Implementierung in der Animation der semantischen Analyse kann jedoch mit diesen komplexeren Ausdriicken umgehen Zun chst geben wir zwei Funktionen an welche die Typen bzw Typterme Datentyp typeExp direkt manipulieren Die Datenstruktur zur Implementierung eines Typterms ist ein Baum Ein Knoten dieses Baumes ist entweder ein null ein oder zweistelliger
20. nnen somit auch als Nachschlagewerk f r die Bedienung dienen 6 3 1 Benutzeroberfl che und deren Eigenschaften Das Hauptfenster des ASA Tools ist in vier Bereiche untergliedert die Men leiste die ASA berpr fung der Kontextbedingungen PASCAL8 PPT Identifier PFCal x Fakultzet i Meniileiste IntConst IhenBsesem Toolbar Animations bereich Skaliert den Inhalt des Zeichenfensters auf 120 Statuszeile Abb 6 2 Das Hauptfenster des ASA Tools KAPITEL o DIE DYNAMISCHE ERWEITERUNG ASA 89 Toolbar den Animationsbereich und eine Statuszeile vgl Abb 6 2 Falls der Animations bereich maximiert werden soll k nnen Toolbar und Statuszeile ausgeblendet werden 6 3 1 1 Meniileiste und Toolbar Die Men leiste enth lt mehrere Unterpunkte die teilweise je nach Zustand des Programms und gew hltem Thema gesperrt sein k nnen Speichern unter Graphik kopieren Beenden Datei Men Start Offnet die Start Dialogbox zur Auswahl der Animationsthemen Neu SchlieBt die aktuelle Animation bzw Visualisierung und l scht alle zu dieser ge h rigen Eintr ge sowohl im Editor Eingabemaske bei dem Thema zur Aufl sung i der Uberladung als auch im Animationsbereich Offnen Zeigt die Quelldatei ffnen Dialogbox aus dieser man sich eine Eingabedatei PPT LPT OLS ausw hlen kann Speichern Speichert die aktuelle Animations
21. 2 Hilfe Ruft die kontextsensitive Online Hilfe f r diesen Dialog auf 6 4 Visualisierungen Wir wollen in diesem Abschnitt eine bersicht davon geben wie das ASA Tool die in Kapi tel 3 erlauterten Konzepte der semantischen Analyse visualisiert und welche M glichkeiten die BenutzerInnen zur Interaktion haben Beispiele sind im Anhang C 2 ausgedruckt KAPITEL 6 DIE DYNAMISCHE ERWEITERUNG ASA 95 6 4 1 Unterschied zwischen konkreter und abstrakter Syntax Die Eingabe erfolgt entweder durch das Offnen einer Eingabedatei Dateiendung PPT die das Beispielprogramm PASCAL enth lt oder durch die Angabe eines PASCAL Pro gramms in den ASA Editor Falls es einen Syntaxfehler gibt so wird der Editor aufgerufen der Fehler in einer Benachrichtigung beschrieben und die Position des Fehlers im Editor angezeigt Hat man ihn korrigiert so kann man das Beispielprogramm kurz noch einmal durch den Syntaxchecker testen Somit wird ein eventueller Syntaxfehler entdeckt der sich hinter dem bisher gefundenen Fehlern befindet da der Syntaxchecker lediglich den ersten Fehler meldet und dann abbricht Ist die Syntax des Eingabeprogramm korrekt so stellt ASA den abstrakten und den konkreten Syntaxbaum im Animationsbereich graphisch dar Nun l t sich die Ansicht der beiden Syntaxb ume durch das ndern der Layoutparame ter fiir den jeweiligen Fall optimieren Die B ume lassen sich durch die Toolbar Buttons einzeln anzeigen oder horizonta
22. 2 real gt real 4 int x int gt int 5 int x int gt real 6 real x real gt real 4 5 6 1 Abb 3 6 Ausdrucksbaum nach der Initialisierung Der Algorithmus berechnet bei der bottom up Elimination die Typen der Operanden von Dabei handelt es sich jeweils um Konstanten des Typs int Die Definition 6 in ops er wartet jedoch Operanden mit dem Typ real 6 wird aus der Menge entfernt Betrachten wir nun die Operatormenge ops Die Menge aller m glichen Resultatstypen des Ope randen ist int real wie sich aus 4 und 5 leicht ersehen l t Die einzige in ops enthaltene Definition 2 hat als Parametertyp real d h korrespondiert zu mindestens einem Typ in der Menge int real 2 kann also in ops verbleiben siehe Abb 3 7 2 real gt real 4 int x int gt int 5 int x int gt real Abb 3 7 Ausdrucksbaum nach der bottom up Elimination Wir kommen nun zur abschlieBenden top down Eliminiation ops enthalt nur noch zwei Definitionen 4 und 5 Die Menge aller Parametertypen einstelliger Operator aus der Menge ops ist real Der einzige dazu korrespondierende Resultatstyp der Operator KAPITEL 3 SEMANTISCHE ANALYSE 56 definitionen aus ops ist 5 4 vvird aus der Menge entfernt Die Typen der Operanden von liegen fest vgl Abb 3 8 2 real gt real 5 int x int gt real Abb 3 8 Ausdrucksbaum nach der t
23. 3 SEMANTISCHE ANALYSE 49 1 f r jedes Vorkommen dieses Konstrukts in einem Programm der Wert dieser Eigen schaft fiir alle dynamischen Ausf hrungen des Konstrukts konstant ist und wenn 2 fiir jedes Vorkommen des Konstrukts in einem korrekten Programm diese Eigenschaft berechnet werden kann Statische semantische Eigenschaften beschreiben allen dynamischen Ausfiihrungen gemein same Eigenschaften die zur Ubersetzungszeit mithilfe des Programmtextes berechnet wer den k nnen Im Gegensatz dazu sind dynamische semantische Eigenschaften erst zur Laufzeit des tibersetzten Programms feststellbar Die zweite Bedingung dient zur Trennung der statisch semantischen Eigenschaften von solchen Eigenschaften die durch abstrakte In terpretation Datenflu analyse siehe WM92 berechnet werden k nnen Abstrakte Inter pretation versucht lediglich m glichst gute statische Ann herungen an dynamische Eigen schaften von Programmkonstrukten zu berechnen Hier ist die leere Information i a eine m gliche Information 3 1 2 Terminologie Wir verwenden zur Beschreibung der semantischen Analyse folgende Begriffe Bezeichner identifier werden zur Benennung von Objekten einer Programmier sprache z B Variablen verwendet Es handelt sich um Symbole im Sinne der lexika lischen Analyse also eine Folge von lexikalischen Einheiten die vom Scanner Modul gelesen werden e Die Deklaration eines Bezeichners ist ein Konstrukt das d
24. 3 0 gibt das zugeh rige Benutzerhandbuch Asy94a von Asyme trix Dessen Multimediakomponenten und funktionalit t beschreibt das entsprechende Handbuch Asy94b welches zudem auch eine OPENSCRIPT Referenz enth lt 2 2 Aufbau von MTB Programmen ToolBook ist auf der Metapher eines Buches aufgebaut die als Basis f r ToolBook Anwendungen dient 2 2 1 B cher Seiten Objekte MTB Programme bestehen aus ein oder mehreren B chern TBK Dateien Jedes Buch unterteilt sich wie ein gedrucktes Buch in Seiten wobei jede Seite einer Fensterseite Fensterinhalt direkt entspricht Die Fenster in denen die Seiten erscheinen werden in ToolBook als Ansichtsobjekte bezeichnet Es k nnen zum gleichen Zeitpunkt mehrere Ansichtsobjekte ge ffnet sein Eine Seite kann Felder Schaltfl chen und Grafiken enthalten Jedes Objekt auf einer Seite sowie die Seite selbst ist ein Objekt Mehrere Objekte lassen sich zu einer Gruppe zusammenschlie en die selbst als ein einzelnes Objekt angesehen wird Um ein Konsistentes Erscheinungsbild der Seiten zu erhalten kann man einen Teil der Objekte n mlich die Ob jekte die auf mehreren Seiten gleich angezeigt werden sollen in dem Hintergrund anlegen der von beliebig vielen Seiten verwendet wird Diese Objekte erscheinen dann auf allen Seiten die diesen Hintergrund verwenden was auch mit geringerem Platzverbrauch ver bunden ist da nur ein Objekt f r mehrere Seiten erzeugt wird Eine sinnvolle Anwendung sind
25. 50 end ABS begin f 1 newTypeVar s A addAssum v t A t 52 analyse e Aj s 1 substitute sub s ti gt f return f3 52 end begin symb k opu und iype opu 11 gt t ti 81 newTypelnst k A s t 52 analyse e1 A s unify tra f s3 extendSub 6 s t substitute 6 12 return t 53 end OP in begin symb k Oppin 2 und type opsin ta gt t2 gt 13 ti 51 newTypelnst k A s t 52 analyse e1 A s t 53 analyse ez A s unify tta t 54 extendSub o 53 Oz unify t b3 ANHANG B ANIMIERTE ALGORITHMEN 130 55 extendSub oz sa ts substitute sub ss t 3 return fs 55 end LIST begin symb k e e gt En An S S1 15 for i 1 to n do 1 si analyse ei A si i ifi gt 1 then unify ti si extendSub o si ti substitute O ti fi od ta list to return fn Sn end od end Die letzte Funktionsgruppe beinhaltet Funktionen die den Typinferenzalgorithmus aufrufen und die initiale Typumgebung erstellen lookupInitial testet ob ein Operatorknoten schon in der initialen Typumgebung eingetragen ist Sie wird von der Funktion ger nitialAssumption aufgerufen welche die initiale Typumgebung des betrachteten LAMA Ausdrucks generiert Die Hauptfunktion type_checker erh lt als Ein
26. Buch Fortschritt Zeitgeber Timer ij 1 Die v SetSpeedi INL Datei IS Leem Reset er Reset Step 1 Set Geschvvindigkeit A Kontrollkn pfe m PREP Seite Globale Variablen 5 svMax svAkt svSpeed Init Me v Reset b b L Steps top dovm elim Far jeden Kindknoten k i werden die sichtbaren Operatordefinitionen aus der Menge genommen deren Resultatstyp nicht mit den m glichen Parameter typen des Elternknoten konsistent sindi proc top_down_elim k node begin fur 1 tu Die seth du ops k i opstk i opstk i res_typ op d act_par_types k i top_down_elimtk i od end res typ op art_par_types Operator 62 teal Typ int gt int real gt int int x int int real x real gt real int x int gt int int x int gt roal real x real gt real Abb 5 11 Aufbau der Animationssteuerung KAPITEL 5 DIE ANIMIERTE PR SENTATION 82 schwindigkeit dann schreibt das Programm den neuen Wert in die INI Datei und besetzt svSpeed neu Ferner setzt nit die Animation zur ck
27. Pixel wenn alle beteiligten Pixel wei waren Schwarzfl chen dominieren WHITEONBLACK arbeitet mit einem logischen OR Wei fl chen dominieren Bei Farbbitmaps verwendet man meist COLORON COLOR Hier geschieht keinerlei Kombination von Pixeln falls ein Pixel eliminiert wird 1 4 3 2 Zwischendateien Zwischendateien metafiles speichern Bilddaten als Folge von Datens tzen die ihrer seits f r Aufrufe von GDI Funktionen stehen Damit werden nicht die Bilddaten selbst son dern die Erzeugung eines Bildes beschrieben Zwischendateien verwendet man vorwiegend f r technische Zeichnungen oder Texte die manuell gezeichnet bzw vom Programm gene riert wurden und die durch die Zwischenablage transportiert werden sollen siehe Abschnitt 1 5 1 Wie Bitmaps k nnen sich Zwischendateien auf der Festplatte oder im Hauptspeicher befinden Metafiles auf der Festplatte tragen standardm ig die Endung WMF Windows MetaFile und k nnen auch von einem Programm als Ressource eingebunden werden Sie verbrauchen wenig Speicherplatz und sind aufgrund ihrer Definition vom Ausgabeger t un abh ngig Metafiles legt man ber eine spezielle Kontextart den Metafile Device Context an wel chen wir in dieser Arbeit kurz mit Dateikontext bezeichnen Zwischen allen bisher vorge stellten Kontextarten machen die meisten GDI Funktionen keinen Unterschied da alle Kontextarten die gleichen Eigenschaften besitzen Die in einer Zwischendatei gespeicher
28. Pixeln basierendes Koordinatensystem Damit in diesem Fall die Unabh ngigkeit von der Hardware erhalten bleibt m ssen Anwendungs programme die physikalische Aufl sung des Ausgabeger ts ber eine Anfrage beim entspre chenden Treiber ermitteln Man kann aber das Koordinatensystem beliebig ver ndern und auf virtuelle Koordinaten wechseln Aufgrund dessen da in dieser Arbeit lediglich das Standard Koordinatensystem von Windows MM TEXT Mapping Mode MM verwendet worden ist sei an dieser Stelle nicht auf andere M glichkeiten eingegangen und auf Pet92 verwiesen Standardvorgaben im Modus MM_TEXT 0 0 0 0 Fenster Ursprung variabel Zeichenfenster Ursprung variabel KAPITEL 1 MICROSOFT WINDOWS 3 1 20 Standardvorgaben im Modus MM_TEXT Fenstergr e 1 1 fix Zeichenfenstergr e 1 1 fix Mit Zeichenfenster ist das physikalische und mit Fenster das logische Ausgabemedium ge meint In der Tabelle versteht man unter dem Gr eneintrag 1 1 das Verh ltnis zwischen logischen und physikalischen Werten Unter MM_TEXT entsprechen sich Fenster und Zei chenfenstergr e somit direkt und das Gr enverh ltnis ist unver nderbar Da das GDI ausschlie lich mit Integer Werten arbeitet sind Koordinaten als Parameter von GDI Funktionen unanh ngig vom aktuellen Koordinatensystem auf den Bereich von 32768 bis 32767 begrenzt Eine weitere Einschr nkung gibt es im Zusammenhang
29. Ressourcenklasse der wir begegnen ist die Klasse der Bitmaps Das sind Bit arrays bei denen Pixel durch ein oder mehrere Bits vertreten sind Monochrome Bitmaps sind durch ein Bit pro Pixel vollst ndig definiert wogegen bei farbigen Bitmaps je nach Farbtiefe mehrere Bits pro Pixel Verwendung finden Beispielsweise sind bei 16 Farben 4 Bits pro Pi xel n tig um das Bitmap beschreiben zu k nnen Bitmaps dienen zwei Zwek ken dem Zeichnen von Bildern und der Darstellung von F llmustern z B f r den Fenster hintergrund Es gibt jedoch Unterschiede zu allen anderen Ressourcen Sie sind GDI Objekte vgl auch Abschnitt 1 4 3 und k nnen zur Laufzeit des Programms ver ndert werden Ihr Segment darf deshalb nicht als entfernbar gekennzeichnet sein Die Klassen der Ikonen und Cursorformen k nnen gemeinsam untersucht werden Iko nen dienen haupts chlich der symbolhaften Darstellung von verkleinerten Fenstern Cursor formen der Anpassung des Mauszeigers an ver nderte Situationen In beiden F llen handelt es sich um Variationen von Bitmaps aber sie k nnen nicht zur Laufzeit ver ndert werden Um auf jedem Bildschirm ein gleiches Aussehen zu haben sind sie von der Bildschirmaufl sung abh ngig F r jede Ikone bzw jeden Cursor ist es notwendig zwei Bitmaps abzuspei chern Das erste repr sentiert das eigentliche Bild das zweite Bitmap definiert eine Maske die den Hintergrund durchscheinen l t Sie k nnen lediglich monochrom nicht unb
30. Symbolfolge v Erzeugung des Zielprogramms Sieben Codeerzeuger Sieber Zielprogramm v 48 Symbolfolge maschinenabh ngige E s 1 Codeverbesserung syntaktische Analyse Peepholeoptimierer Parser v Syntaxbaum Zielprogramm semantische Analyse dekorierter Syntaxbaum maschinenunabhingige effizienzsteigernde Transformationen Optimierer dekorierter Syntaxbaum Abb 3 1 Konzeptionelle Ubersetzerstruktur mit Angabe der Programmzwischendarstel lungen Die Moduln in den doppelt umrandeten K stchen sind optional Programmtechnisch werden Scanner und Sieber zu einem einzigen Modul zusammengefa t aus WM92 peldeklarationen oder konsistente Typzuordnung zu allen Funktionen eines Programms mit Polymorphismus Die bersetzung von Programmiersprachen einschlie lich der semantischen Analyse ist in WM92 beschrieben Darin ist auch die formale Spezifikation der semantischen Analyse durch Attributgrammatiken beschrieben auf die in dieser Arbeit nicht n her eingegangen wird 3 1 Voraussetzungen Um die semantischen Analyse richtig zu verstehen ist es wichtig da die Voraussetzungen und die Begriffe klar definiert werden 3 1 1 Statische semantische Eigenschaften Man bezeichnet eine nicht kontextfreie Eigenschaft eines Konstrukts einer Programmier sprache als eine statische semantische Eigenschaft wenn KAPITEL
31. Typopera tor d h ein Operator aus int bool real char list x gt oder eine Typvariable Dabei entspricht die Anzahl der Kinder eines Typknotens seiner Stelligkeit Wir f hren folgende Notation im Zusammenhang mit Typtermen ein Sei ein Typ dann ist rank t die Anzahl der Kinder der Wurzel des Typbaums von f part_typ t i das i te Kind der Wurzel des Typbaums von z op t der durch die Wurzel symbolisierte Operator bzw Typvariable Die Funktion occurs testet ob in einem beliebigen Typterm eine bestimmte Typvariable Datentyp typeVar enthalten ist occurs check Die zweite Funktion isTypeVar ber priift ob es sich bei einem gegebenen Typ um eine Typvariable handelt func occurs typeVar t typeExp bool begin if ist in enthalten then return true else return false fi end func isTypeVar t typeExp bool begin if t ist eine Typvariable then return true else return false fi end Die folgenden Funktionen bearbeiten Ersetzungen Substitutionen Datentyp sub Eine Ersetzung ist als ein Konstrukt der Form o f 0y f On repr sentiert Die Funktion emptySub erstellt eine leere Substitution d h eine identische Ersetzung einer Typvariable auf sich selbst isEmptySub testet ob es sich bei einer gegebenen Ersetzung um eine leere Ersetzung handelt Die Funktion newSub erstellt aus einer Typvariablen und einem Typterm eine neue Substitution substitute wendet eine Ersetzung auf al
32. Zwischenschritte abzumalen weil alles zu schnell geht und zu un bersichtlich ist Damit ist die Vorf hrung eines solchen Automaten auch nur sehr schwer reproduzierbar Eine L sung dieses Problems sind Computeranimationen die den Vortrag der LehrerInnen begleiten oder von den Lernenden selbst ausgef hrt werden Arbeitsumgebung Am Lehrstuhl f r Compilerbau und Programmiersprachen an dem auch diese Arbeit ent stand gab es bereits Visualisierungen abstrakter Maschinen bestimmter imperativer logi scher und funktionaler Programmiersprachen e Visualisierung der abstrakten P Maschine Koh95 e Visualisierung der abstrakten Maschine WIM Wir95 e Visualisierung der abstrakten Maschine MAMA Ste92 Diese Visualisierungen sind unter X Windows UNIX implementiert worden Sie enthalten jedoch kaum Animationen Weiterhin wurde an diesem Lehrstuhl ein Tool zur Visualisierung von Graphen aus dem Compilerbau genannt VCG Visualisation of Compiler Graphs entwickelt Es existieren Versionen des VCG Tools f r mehrere Computersysteme auch Windows 3 1 Siehe hierzu Lem94 LS94 San95 und San96 Um ein m glichst gro es Publikum zu erreichen wurde dann ein Projekt mit dem Ziel ins Leben gerufen da gro e Teile des Buches bersetzerbau WM92 unter Microsoft Windows 3 1 visualisiert und vor allem animiert werden Das zugrundegelegte Hilfsmittel hierf r war Asymetrix Multimedia ToolBook 3 0 MTB 3 0 ein Autorensystem das
33. auf um bestimmte Aktionen wie das Laden von Dateien durchzufiihren Unter Windows kann das System umgekehrt auch Funktionen der VVindovvs Applikation aufrufen Somit k nnen Windows Programme auf Ereignisse z B Mausklicks in geeigneter Weise reagieren Jedes in Windows angelegte Fenster basiert auf einer Fensterklasse die ihrerseits eine Window Prozedur festlegt und dem System deren Adresse mitteilt Mehreren Fenstern kann so eine einzige Window Prozedur zugeordnet werden Sie kann sich im Programm selbst oder in einer dynamischen Bibliothek befinden Windows bermittelt Botschaften z B angeregt durch Ereignisse an ein Fenster indem es seine Window Prozedur aufruft Fenster werden durch eindeutige Bezeichnungen Fenster Handles genannt unterschieden Beim Start eines Windows Programms legt das System eine Ereignis Warteschlange an in die alle Ereignisse eingetragen und nach dem FIFO Prinzip First In First Out an die Fenster des Programms weitergeleitet werden Dementsprechend besteht die eigentliche Hauptfunktion des Programms WinMain im wesentlichen aus folgenden Elementen 1 Definition der Fensterklasse 2 Registrierung der Klasse beim System und damit Bekanntmachung der Window Prozedur 3 Erzeugung des Hauptfensters auf Basis der definierten Fensterklasse 4 Ereignis Warteschleife zum Lesen der Warteschlange Die Ereignis Warteschleife testet ob die Warteschlange leer ist vgl Abb 1 1 Wenn eine Botschaft enthal
34. beginnt bei der Adresse ab der das Window System von DOS in den Hauptspeicher gela den wurde und endet mit der letzten Adresse des physikalisch vorhandenen Speichers RAM Windows Programme k nnen mehrere Code bzw Datensegmente im globalen Heap haben mindestens jedoch jeweils eines Im Speichermodell Small s u werden das Daten und Stacksegment zu einem automatischen Datensegment zusammengefa t Dabei zeigen DS und SS auf dasselbe Segment Jedes Segment hat bestimmte Attribute die vor dem bersetzen eines Windows Pro gramms in einer eigenen Modul Definitionsdatei gespeichert werden Das Attribut FIXED steht f r unbewegliche das Attribut MOVEABLE f r bewegliche Segmente Bewegliche mit MOVEABLE attributierte Segmente k nnen zus tzlich als DISCARDABLE als ent fernbar gekennzeichnet werden Bei Bedarf kann sie das System ganz aus dem Speicher entfernen Dieses nimmt Windows nach dem LRU Prinzip Least Recently Used vor Das Segment das die l ngste Zeit nicht benutzt wurde wird als erstes entfernt Man ver wendet DISCARDABLE nur f r Segmente die sich von der Festplatte oder Diskette nach KAPITEL 1 MICROSOFT WINDOWS 3 1 12 h chste Speicheradresse entfernbare Codesegmente freier Speicher verschiebbare und entfernbare Codesegmente 25 fixe Segmente niedrigste Speicheradresse Abb 1 3 Das Speicherlayout von Windows aus Pet92 laden lassen also die das Programm w hrend der Laufzeit nicht ver n
35. bevorzugen be stimmte Eingabeformen etwa Drag and Drop statt ber die Tastatur Es sollte mehre re Eingabem glichkeiten zur Verf gung stehen was jedoch dem Konsistenzprinzip widerspricht 4 4 Animationen Animationen spielen sich ebenfalls auf der Benutzeroberfl che eines Programms ab daher gelten hier auch die im vorhergehenden Abschnitt 4 3 erw hnten Prinzipien z B das Kon sistenzprinzip Allerdings sollten f r Animationen eigene Richtlinien geschaffen werden welche die Dynamik von Animationen ber cksichtigen 1 Flexible Steuerung Animationen sollten in der Geschwindigkeit regelbar schrittweise durchf hrbar zu jedem Zeitpunkt zu stoppen und r ckzusetzen sein Ein R ckw rts laufenlassen von Animationen ist nur bedingt sinnvoll und h ufig auch technisch schwierig umzusetzen Als Alternative ist eine Undo Operation jedoch angebracht 2 Klar definierte Objektbewegungen Bewegungen von Objekten sollten m glichst direkt zu ihrem Ziel aber nicht ber zu viele andere Objekte hinweg erfolgen Es sollten nicht mehrere Objekte gleichzeitig bewegt werden und die Bewegung selbst nicht zu komplex und nicht ruckartig sein 3 Unmittelbares Feedback von Benutzeraktionen Gerade bei Animationen ist ein optischen Feedback des Systems bei Benutzeraktionen wichtig Wird eine Animation KAPITEL 4 PRINZIPIEN ZUR ERSTELLUNG VON ANIMATIONSSOFTWARE 67 angehalten so sollte dieser Stopp sofort erfolgen und die Animation nicht erst no
36. der Hauptnachteil der TrueType Schriften in der etwas langsameren Ausgabege schwindigkeit Zur Repr sentation der Schriftart im Programm wird eine logische Schrift erstellt Dabei handelt es sich um eine Struktur deren insgesamt 14 Elemente z B Schriftgr e kursiv Zeichenbreite Name der Schrift die Schrift definieren Obwohl man diese Elemente manuell besetzen k nnte berl t man diesen Vorgang dem System indem man die Schrift mittels der beiden Funktionen EnumFonts bzw ChooseFont beim System anfordert ChooseFont unterscheidet sich von EnumFonts haupts chlich dadurch da sie eine vor definierte Dialogbox auf den Bildschirm bringt in welcher der die Anwenderln eine Schrift ausw hlen kann Setzt das Programm eine Schrift in den Ger tekontext ein so w hlt das Windows System die Schriftart aus die auf dem System existiert und der in den Ger te kontext eingesetzten Schriftart am n chsten kommt 1 5 Datenaustausch und Kommunikation Bisher hatten wir nur die interne Kommunikation eines Programms entweder mit seinen Child Fenstern oder dem System selbst betrachtet Nun stellt das Windows System auch Verfahren zum Austausch von Daten und zur Verbindung zwischen mehreren verschiedenen Programmen zur Verf gung Zu diesen Verfahren geh ren die Zwischenablage dynami scher Datenaustausch DDE dynamische Bilbliotheken DLL s und Objektverkn pfung bzw einbettung OLE Eine Sonderstellung nehmen MDI Programme ein die m
37. des zu erzeugenden Dokumentenfensters beschreibt Der 16 Bit Parame ter wParam wird auf 0 gesetzt Analog ist die Botschaft WM_MDIDESTROY f r den Ab bau eines Dokumentenfensters zust ndig Hier enth lt wParam den Fensterhandle des zu l schenden Dokumentenfensters und Param den Wert 0 Ein MDI Programm definiert standardm ig eine Vielzahl von Abk rzungsbefehlen um beispielsweise zwischen Dokumenten hin und herzuschalten sie zu verkleinern etc Daher mu die Ereignis Warteschleife des Programms in geeigneter Weise modifiziert werden Diese vom System vordefinierten Abk rzungsbefehle m ssen von den programmeigenen Abk rzungsbefehlen unterschieden werden Eine derartige Unterscheidung nimmt die MDI Funktion TranslateMDISysAccel vor die die erkannten Befehle an das Client Fenster der MDI Anwendung und damit an die interne Clientwindow Prozedur sendet Kapitel 2 Asymetrix Multimedia ToolBook 3 0 2 1 Autorensysteme Unter Autorensystemen versteht man Programmierhilfsmittel mit denen ein Autor aus inhaltlichen und didaktischen Strukturen ein Programm erstellen und tiberarbeiten kann Sie sind das zentrale Entwicklungswerkzeug fiir Lernprogramme Moderne oberflachenbasierte Autorensysteme z B MTB 3 0 eignen sich dar ber hinaus auch fiir andere Anwendungen wie Pr sentationen Produktdemos Multimediakataloge Online Lexika etc 2 1 1 Arten von Autorensystemen Autorensysteme lassen sich nach drei Gesichtspunkten klassi
38. die Erstellung von Lernsoftware unter Windows 3 1 unterst tzt Als Teil dieses Projekts ist auch meine Arbeit die Animation der semantischen Analyse entstanden Parallel dazu entwickelte Beatrix Braune die Animation der lexikalischen Analyse Weiterhin entstanden im Rahmen eines Fortgeschrittenenpraktikums Animationen ausgew hlter Parserkonzepte EINLETTUNG Inhalt dieser Arbeit Ich hatte die Aufgabe eine Software zu entwickeln mit deren Hilfe man die wichtigsten Konzepte der semantischen Analyse animieren kann Dazu geh ren neben den Vorausset zungen der semantischen Analyse abstrakter Syntaxbaum etc und den G ltigkeits und Sichtbarkeitsregeln die Animation der berpr fung der Kontextbedingungen Deklarations Analysator und Typkonsistenz Analysator der berladung von Bezeichnem und schlie lich des Polymorphismus Der erste Programmteil die animierte Pr sentation pr sentiert und erl utert zun chst schrittweise die Definitionen dieser Konzepte Sie werden anschlie Bend anhand von animierten Beispielen verdeutlicht Beides geschieht vollst ndig interaktiv d h die BenutzerInnen k nnen sich per Mausklick durch eine graphische Umgebung bewe gen Themen die sie interessieren ausw hlen vertiefen und Beispielanimationen steuern Schlie lich besteht in einem zweiten Programmteil ASA Animationstool zur Semanti schen Analyse die M glichkeit Beispiele selbst anzugeben und die vorgestellten Algorith men dynamisch a
39. doch da die in der Parameter Dialogbox einstellbaren Werte f r diese Layoutparameter relativ gesehen gleich bleiben 6 5 3 Graphische Darstellung Nach der Berechnung des Baumlayouts enthalten die Knoten der Syntaxbaumstruktur ihre endg ltige Positionsangabe Soll der Baum gezeichnet werden so erh lt die Windows Prozedur des Animationsfensters Animationsbereich die Botschaft WM_PAINT Zuerst werden die Baumkanten aus den Positionsangaben der Knoten berechnet und im Animationsbereich gezeichnet Dazu versieht ASA die Kanten der Baumhierarchie entspre chend mit Pfeilspitzen F r die Knoten des Baumes erzeugt das ASA Tool allerdings eigene Fenster Knotenfenster in denen jeweils ein Knoten gezeichnet wird Diese Fenster sind Child Fenster des Animationsfensters Vorteile dieses Verfahrens sind e Knotenfenster sind Objekte Sie basieren auf einer eigenen Fensterklasse und haben damit auch eine eigene Window Prozedur Man kann sie im Anwendungsbereich ihres Parent verschieben ohne sich um deren graphische Repr sentation zu k mmern e Knotenfenster kann man anklicken Die Trefferpr fung f r einen Mausklick ber nimmt das Windows System Die Botschaft WM_LBUTTONUP wird direkt an das betroffene Knotenfenster geschickt wenn z B die linken Maustaste auf dem Knoten losgelassen wurde Zur graphischen Baumausgabe werden diese Knotenfenster einfach zu den berechneten Positionen im Animationsbereich geschoben
40. e Vergr ern von Objekten e Fontwahl Verwendung von mehreren verschiedenen Schriftarten Invertierung Benutzung von Farbinvertierungen e Aufblitzen Man kann manche Displays oder Fenster samt Inhalt aufblitzen lassen e Farbe Signalfarben ziehen Aufmerksamkeit auf sich Bestimmte Farben sollten f r fest definierte Zwecke reserviert sein e Farbenblinken Wechsel von Farben um ein Blinken zu simulieren Akustik Beispielsweise k nnen sanfte T ne ein positives Feedback symbolisieren harte T ne jedoch Warnungen Das zu h ufige Anwenden dieser Techniken birgt jedoch auch Gefahren Neue Anwender Innen brauchen einfache logisch organisierte und gut etikettierte Oberfl chen die ihre Aktionen f hren Fortgeschrittene ben tigen diese Art der F hrung nicht Sie bevorzugen subtilere Hervorhebungen Die AutorInnen m ssen bei der Entwicklung einen Mittelweg finden oder beides erm glichen KAPITEL 4 PRINZIPIEN ZUR ERSTELLUNG VON ANIMATIONSSOFTVVARE 68 4 6 Farben Im letzten Abschnitt haben wir gesehen da die Verwendung von Farben eine von mehre ren M glichkeiten ist die Aufmerksamkeit auf Objekte zu lenken Weil Farben bei der Ge staltung der Animation der semantischen Analyse eine der wohl wichtigsten Rollen gespielt haben wollen wir sie hier etwas genauer betrachten Farben haben gewisse Eigenschaften die dem Programm beim Gebrauch von Farben ei nen Vorteil verschaffen sie e beruhigen ode
41. einer Initialisie rungsdatei siehe Abschnitt 5 5 2 abgelegt 5 3 Basisanimationen ToolBook bietet eine Reihe von Techniken an um Objekte zu animieren Jede komplexe Animation ist aus vielen solcher grundlegenden Animationen aufgebaut e Verschieben von Objekten Positionsver nderung e ndern der Gr e oder der Form eines Objekts durch die nderung seines u eren beschr nkenden Rechtecks e ndern der Gr e oder der Winkel eines Objekts z B einer Linie durch Ver nde rung der Anzahl und Position der definierenden Winkelpunkte e Anzeigen und Verbergen einer Reihe von Objekten aus einem Stapel wobei jedes Objekt eine geringf gige Abweichung desselben Bildes darstellt e Schnelles Durchbl ttern von Seiten wobei jede Seite eine geringf gig andere Ansicht desselben Bildes enth lt Je kleiner die Seitengr e ist desto besser ist die Qualit t der Animation Damit nicht jede zu realisierende Animation aus solchen Elementaranimationen konstruiert werden mu ist es w nschenswert eine Bibliothek von Funktionen zur Verf gung zu ha ben mit deren Hilfe sich h ufig verwendete Animationen mit einem Funktionsaufruf durch f hren lassen Da ToolBook eine solche Bibliothek nicht zur Verf gung stellt au er einiger weniger Funktionen in Beispiel Anwendungen war es notwendig eine solche Funktions bibliothek in Eigenarbeit zu erstellen Sie befindet sich im Buchskript unserer Pr sentation und besteht aus folgende
42. erhalten welche der Begriff symbolisiert Wie in Abb C 1 6 gezeigt kann man sich auch hier Beispiel animationen zu den einzelnen Typkombinationsregeln ansehen Abb C 1 13 Die Syntax des funktionalen Sprache LAMA ANHANG C BEISPIELE F R ANIMATIONEN 145 Compilerbau Datei Ansicht Optionen Seite Hilfe Aus Platzgr nden zeigen wir nicht alle Schritte dieses Beispiels In Abh ngigkeit von der Typkombinations regel werden die einzelnen polymorphen Typen der Unterbaumwurzeln berechnet eine Typumgebung er zeugt etc Abb C 1 14 Animation zur Typkombinationsregel eines efrec Ausdrucks ANHANG C BEISPIELE F R ANIMATIONEN 146 C 2 Visualisierungen aus dem ASA Tool Editor PASCAL3 PPT Suchen Ansicht Schrift program pascal3 var x y z integer Ein PASCAL Beispielprogramm im AS A Editor Visualisierung des oben im ASA Editor gezeigten Beispielprogramms Links ist ein Teilbaum zur konkreten Syntax und rechts der entsprechende Teilbaum zur abstrakten Syntax zu sehen vertikale Teilung Beide Syntaxb ume k nnen auch horizontal geteilt oder einzeln angezeigt werden ASA hat nach einem Mausklick auf den rot markierten Knoten eine Knoteninformation Standardgr e angezeigt Die Layoutparameter ent sprechen au er dem Skalierungsfaktor 60 den Voreinstellungen Abb C 2 1 Visualisierung zum Vergleich der konkreten zur abstrakten Syntax ANHANG C BEISPIELE F R ANIMATIONEN 147 Editor PASCAL8 PPT sich
43. etwa da alle anw hlbaren Textelemente blau gef rbt sind 6 Ver nderung der Farbkodierung durch den die AnwenderIn In einigen Anwen dungen kann es eventuell sinnvoll sein da die verwendete Farbkodierung ver nder bar ist etwa dann wenn der die Anwenderln ein bestimmtes Objekt mit einer festen Farbe verbindet Bei der Auswahl der Farben ist darauf zu achten da diese auf m glichst vielen Ausgabege r ten gleich gut angezeigt werden Hier flie t eine gewisse Hardwareabh ngigkeit der Farbdarstellung in die Entscheidung mit ein Kapitel 5 Die animierte Pr sentation Die Animation der semantischen Analyse ist in zwei Bestandteile zerlegt erstens die ani mierte Pr sentation des Lehrstoffes die Thema dieses Kapitels ist und zweitens eine Er weiterung ASA Tool die es erlaubt die in der Pr sentation vorgestellten Algorithmen an frei w hlbaren Eingabebeispielen dynamisch zu testen und zu untersuchen Diese Aufteilung der Aufgaben ist in den Einschr nkungen des ToolBook Systems begr ndet etwa die Be schr nkung der Seitengr e siehe Abschnitt 2 6 und 6 1 Die animierte Pr sentation wurde mit Hilfe des Autorensystems Multimedia ToolBook 3 0 implementiert Sie stellt die Aufgaben der semantischen Analyse vor in dem Umfang wie in Kapitel 3 dargelegt erl utert die Problematik an vielen kleinen Animationen und bietet Probleml sungen anhand von Algorithmen Deklarations Analysator Typkonsistenz Analysator Aufl
44. gezeichnet werden da die Zeichnungen Reflexionen voneinander sind berdies sollte ein Unterbaum in derselben Art und Weise gezeichnet werden ohne Ber cksichtigung wo er sich im Baum befindet e Kleine Unterb ume sollten zwischen gro en Unterb umen nicht willk rlich positio niert erscheinen Kleine innere Unterb ume sollten zwischen gr eren Unterb umen weitr umig verteilt werden wobei die gr eren Unterb ume auf einer oder mehreren Ebenen benachbart adjazent sind Kleine Unterb ume die weit rechts bzw weit links im Baum liegen sollten zu gr eren Unterb umen benachbart sein e Das Baumlayout sollte eng sein d h nicht unn tig viel Platz verbrauchen Der in ASA verwendete und nachfolgend beschriebene Layoutalgorithmus erf llt diese Lay outkriterien Er ist in Wal90 angegeben und genauer beschrieben 6 5 2 2 Arbeitsweise des Layoutalgorithmus Wir nehmen bis auf weiteres an da sich der Apex des Baumes oben in der Zeichnung be findet und ein Knoten nur den Raum eines Punktes einnimmt Der Algorithmus mu sich lediglich mit der Bestimmung der x Koordinaten der Knoten besch ftigen die y Koordinate eines Knotens kann leicht aus seiner Ebene im Baum abgeleitet werden Der Abstand der einzelnen Ebenen in der Zeichnung ist variabel und wird als Ebenenseparation bezeichnet Unser Layoutalgorithmus verwendet die folgenden zwei Konzepte e Unterb ume sind starre Einheiten Verschiebt der Algorithmu
45. innerhalb von Funktionen deklariert wurden nicht static werden auf dem Stack abgelegt Der Compiler benutzt hier ebenfalls near Zeiger und setzt das SS Register voraus Hat man nun einen near Zeiger so kann das System nicht entscheiden ob er auf das Datensegment oder auf den Stack zeigt Die Modelle Small und Compact k nnen mit near KAPITEL 1 MICROSOFT WINDOWS 3 1 33 Zeigern arbeiten und f r ein in diesen Modellen bersetztes Programm gilt DS SS d h es kommt hier zu keinerlei Adressierungsproblemen weil Stack und Datensegment zusam menfallen Es gibt ebenso keine Probleme bei Programmen mit h heren Speichermodellen da dort immer far Zeiger zur Adressierung verwendet werden Hat man nun eine DLL so gilt aber immer DS SS und damit haben wir ein grunds tz liches Adressierungproblem Es kann nur durch explizites Setzen von static bzw far bei der Deklaration von Variablen umgangen werden 1 5 4 OLE 2 0 Mit der Version 3 1 stellt Windows die objektorientierte Benutzerschnittstelle OLE Object Linking and Embedding in der nun zweiten Version zur Verf gung Um die an OLE beteiligten Anwendungsprogramme unterscheiden zu k nnen f hren wir folgende Begriffe ein e Hin OLE Server Serveranvvendung ist das Programm dessen OLE Obiekt in das Dokument z B ein Text eines anderen Programms eingebettet vverden kann e OLE Container Clientanvvendungen sind Programme die in der Lage sind OLE Obfekte anderer Anvvendu
46. ist ein wei er Hintergrund am sinnvollsten Eingabe Men Editor Maske Blendet den Editor ein oder aus Es steht bei allen Animationsthemen zur Verf gung au er bei der Aufl sung der berladung Zeigt die Dialogbox fiir die Eingabespezifikation an siehe Abschnitt 6 2 2 3 in der iman die Eingabe Ausdruck Kontexttyp Operatoren in einfacher Form festlegen kann Sie ist nur bei der Aufl sung der berladung anzuwenden KAPITEL 6 DIE DYNAMISCHE ERWEITERUNG ASA 90 Parameter Menii Skalierung Orientierung Parameter Er ffnet ein neues Popup Menii zur schnellen Skalierung des aktuellen Syntax bzw Ausdrucksbaumes Das Skalierungsintervall reicht von 25 bis 400 in unterschied lichen Schrittweiten Er ffnet ein neues Popup Men zur Orientierung des aktuellen Baumes in alle vier Hauptachsenrichtungen Blendet die Parameter Dialogbox ein in der sich die vvichtigsten Layoutparameter des Baumes einstellen lassen Animation Menii Hilfethema su chen Theorie Bedienelemente Algorithmus Info Riicksetzen Setzt die Visualisierung auf den Anfangszustand zur ck also auf die blo e Dar stellung des Syntax bzw Ausdrucksbaumes Endergebnis F hrt den aktuellen Algorithmus abh ngig vom Thema anhand des Eingabebei spiels aus und attributiert dementsprechend den Syntaxbaum Knoten f rben Nur bei dem Vergl
47. links nicht sichtbar Skalierungsfaktor 60 Standardwerte fiir die Knotenseparationen bis auf Standardwerte fiir die Knotenseparationen bis auf eine Vergr erung der Geschwisterseparation eine Vergr erung der Ebenenseparation Abb C 2 6 Verschiedene Syntaxbaumlayouts am Beispiel aus Abbildung C 2 1 Literaturverzeichnis Alt93 Asy94a Asy94b B1093 871 Bro93 BS84 Cl 87 Det93 DH91 DM82 DPM80 DS91 ELL93 FA94 Gla93 A Alteneder Visualisieren mit dem Computer Computergraphik und Com puteranimation Siemens VCH 1993 Asymetrix ToolBook Benutzerhandbuch 1994 Asymetrix Multimedia ToolBook Benutzerhandbuch und OpenScript Refe renz 1994 A Bloesch Aesthetic Layout of Generalized Trees In Software Practice and Experience 23 8 pp 817 827 1993 MH Brown Algorithm Animation MIT Press 1987 M H Brown The 1992 SRC Algorithm Animation Festival In IEEE Symp on Visual Languages pp 116 123 1993 M H Brown R Sedgewick A System for Algorithm Animation In SIG GRAPH 84 Computer Graphics 18 3 pp 177 186 1984 D Cl ment The Natural Dynamic Semantics of Mini Standard ML In TAPSOFT 87 Vol 2 LNCS 250 pp 67 81 Springer 1987 J DeTreville The GraphVBT Interface for Programming Algorithm Ani mations In IEEE Symp on Visual Languages pp 26 31 1993 P Deuflhard A Hohmann Numerische Mathematik Eine algorithmisc
48. mit OLE nur als Client Anwendung zu betreiben 2 4 4 Importierung von Window Ressourcen Um die optischen Gestaltungsm glichkeiten von ToolBook zu vergr ern lassen sich Win dow Ressourcen wie Cursors Bitmaps Symbole und Farbpaletten in ToolBook erstellen oder aus anderen Windows Programmen importieren ToolBook bietet selbst auch Pro grammierwerkzeuge an mit deren Hilfe sich Men leistenressourcen erstellen lassen die in mehreren B chern gemeinsam nutzbar sind 2 4 5 bersetzen von Windows Botschaften ToolBook Anwendungen sind durch das ToolBook System hinsichtlich der Botschaftsbe arbeitung nicht vollst ndig und endg ltig vom Windows System getrennt Es ist m glich Windows Botschaften z B WM_PAINT f r das Neuzeichnen eines Fensters abzufangen und geeignet zu verarbeiten Dieses Verfahren wird als die bersetzung von Windows Botschaften bezeichnet Sie kann in solchen F llen erforderlich sein wenn f r eine Win dows Botschaft kein entsprechendes ToolBook Gegenst ck existiert oder ein anderes von ToolBook unabh ngiges Programm eine benutzerdefinierte Botschaft an die ToolBook Anwendung senden m chte Im Normalfall erfolgt das Zusammenspiel der Ereignisverarbeitung zwischen Windows und ToolBook folgenderma en hier am Beispiel eines Mausklicks der linken Maustaste auf eine Schaltfl che einer ToolBook Seite Windows sendet die Botschaft WM_LBUTTON DOWN an das betroffene Fenster Intern bersetzt ToolBook diese Wi
49. nun alle Punkte im resul tierenden Feld so erh lt man den gew nschten Pfeil Abbildung 6 16 zeigt einen auf diese Weise erzeugten Polygonzug Um die Schritte 1 bis 3 zu implementieren sind umfangreiche Untersuchungen der zugrundeliegenden Baum struktur erforderlich deren Erkl rung den knappen Rahmen dieser Arbeit sprengen w rde Eine Umwandlung dieses Polygonzugs in eine Splinekurve w rde den sthetischen An spruch weiter verbessern In unserer Implementierung ist diese Umwandlung jedoch nicht enthalten Kapitel 7 Zusammenfassung und Ausblick Mehrere Vorf hrungen vor Sch lern Lehrern und Studenten im Rahmen von Schiilertagen und Pr sentationsdemos haben gro es Interesse und Neugier an diesem Proyekt geweckt Es bedurfte keiner gro en Anstrengung diese Personen f r das Experimentieren mit den Ani mationen der lexikalischen und semantischen Analyse zu ermuntern In nachfolgenden Dis kussionen wurde uns auch der Vorteil von Animationen in diesem Bereich best tigt Ebenso ist die optische Gestaltung der Benutzeroberfl chen und Animation auf Zuspruch gesto en Weniger befriedigend ist der konzeptionelle Bruch der durch die Trennung der beiden Programmteile animierte Pr sentation und ASA entsteht Wir haben gezeigt da dieses Problem von den Schw chen des zugrundeliegenden Autorensystems Multimedia ToolBook 3 0 erzwungen wurde Die alleinige Verwendung von MTB 3 0 h tte unter den gestellten Anforderungen an das fertig
50. r alle getypten Objekte e F r terminale Operanden die Konstanten sind steht der Typ schon fest e F r Bezeichner nutzt der bersetzer den Verweis auf seine Deklarationsstelle im de korierten abstrakten Syntaxbaum den wir bei der Identifizierung der Bezeichner be rechnet haben e F r Operatoren werden zun chst einmal die einzelnen Operandentypen festgestellt Wir bezeichnen die berladung in die Sprache eingebauter Operatoren z B arithmetischer Operatoren als triviale berladung Ist der Operator nicht trivial berladen dann werden die einzelnen berechneten Operandentypen mit den geforderten Parametertypen des Opera tors die in einer Tabelle festgelegt sind verglichen Sind sie identisch so wird der Ergebnis typ zur ckgegeben wenn nicht eine Fehlermeldung Ist der Operator trivial berladen so wird zus tzlich noch die richtige Operation ausgew hlt und in den abstrakten Syntaxbaum eingetragen Erlaubt die Programmiersprache Typanpassungen so wird f r jeden Operator und jede Kombination aus Operandentypen die nicht zu ihm passen gepr ft ob die Operandentypen durch Typanpassung zu einer f r den Operator g ltigen Operandentypenkombination ge macht werden k nnen 3 4 berladung von Bezeichnern Ein Symbol hei t berladen wenn es an einer Stelle im Programm mehrere Bedeutungen haben kann In diesem Abschnitt wird im Gegensatz zur trivialen berladung nur die ber ladung von benutzerdefinierten Bezeic
51. sentationen eines Bildes bei denen jedes Pixel durch mindestens ein Bit dargestellt wird Die Anzahl der Bits ist von der Farbtiefe abh n gig Unter Windows verwendet man Bitmaps meist f r Fotos oder sehr komplexe Bilder Das Kopieren vom Haupt in der Bildspeicher geschieht bei Bitmaps mit hoher Ge schwindigkeit was der Hauptvorteil gegen ber anderen Bildformaten einschlie lich Zwi schendateien ist Andererseits liegt hier auch eine gro er Nachteil der gro e Speicherplatz bedarf von Bitmaps Ein Screendump von 640x480 Pixeln ben tigt als Bitmap beispielswei se mehr als 150 KByte Platz Zudem sind Bitmaps ger teabh ngig Es kommt zu Proble men wenn man ein Farbbitmap auf einem monochromen Bildschirm ausgeben will Win dows 3 1 kennt auch ger teunabh ngige Bitmaps sogenannte DIB s Device Independent Bitmaps die aber im Gegensatz zu normalen Bitmaps keine GDI Objekte sind Programme k nnen Bitmaps als Ressourcen einbinden aus Dateien lesen oder zur Lauf zeit selbst erzeugen Um eine gewisse Ger teunabh ngigkeit zu erhalten erlauben es fast alle GDI Funktionen f r die Bearbeitung und Darstellung von Bitmaps nicht ein Bitmap unmittelbar in einen Ger tekontext einzusetzen Windows verlangt dazu einen Umweg ber einen Speicherkontext Dieser Speicherkontext hat genau dieselben Eigenschaften wie ein Ger tekontext au er da er einen Speicherblock repr sentiert Betrachten wir ein uninitia lisiertes Bitmap da wi
52. typgepr ft Die f r die errechneten Typen f f f m ssen durch Unifikation an die neu eingef hrte Typva riable amp angepa t werden Der Ergebnistyp des ganzen Ausdrucks e 2 n ist list o KAPITEL 3 SEMANTISCHE ANALYSE 59 3 5 3 Formalisierung der Typinferenz Um einen Typinferenzalgorithmus formulieren zu k nnen m ssen die im letzten Abschnitt vorgestellten Regeln zun chst formalisiert werden Es mu also zuerst formal spezifiziert werden welche LAMA Ausdr cke welchen Typ haben Man bezeichnet eine solche Spezifi kation als ein Typinferenzsystem Ein darauf aufgebauter Typinferenzalgorithmus sollte dann den allgemeinsten Typ eines polymorphen Ausdrucks herausfinden oder einen Fehler ausgeben wenn kein solcher Typ gefunden wird Diese Aufgabe ist in Mil78 beschrieben Die hier gegeben Erl uterungen basieren auf Rea89 und DM82 3 5 3 1 Grundlagen Wir haben im letzten Abschnitt gesehen da die Typkombinationsregeln relativ zu Typum gebungen arbeiten Eine solche Umgebung l t sich als eine Menge A von Annahmen der Form vr formulieren wobei v eine Variable und ein Typterm ist Definition 3 5 1 Typumgebung Eine Typumgebung A ist eine endliche Menge von Paaren v t1 Vnifn wobei die Va riablen v und v f r 1 j paarweise voneinander verschieden sind Ein Paar vi t bezeichnet man als eine Annahme Betrachten wir die Regel zum bedingten Ausdruck if e then e else e3 so k
53. vgl Abb 6 11 KAPITEL 6 DIE DYNAMISCHE ERWEITERUNG ASA 102 Ebenen separation Unterbaumseparation d4 p lt gt Geschwister separation Abb 6 11 Ebenenseparation Geschwisterseparation Unterbaumseparation VVahrenddessen sich der Algorithmus von den Blattern zum Apex bewegt kombiniert er kleinere Unterb ume zu gr eren Er positioniert die Unterb ume eines Knoten k nachein ander von links nach rechts berlagert ein solcher Unterbaum seinen linken Nachbarn so schiebt ihn der Algorithmus so lange nach rechts bis sich keine Punkte mehr ber hren siehe Abb 6 12 Dazu werden zuerst ihre Wurzeln k i um den Wert der Geschwisterseparation voneinander abgesondert prelim k i prelim k i 1 Geschwisterseparation Dann wer den die Unterb ume im n chstniedrigeren Level solange verschoben bis zwischen den be nachbarten Unterb umen auf der unteren Ebene ein Abstand von Unterbaumseparation erreicht ist Dieser Proze setzt sich sukzessive auf den unteren Ebenen fort bis wir zu den Bl ttern der k rzeren Unterb ume kommen Diese Verschiebungen werden in den Feldern modifier k i abgespeichert Hierbei ist zu beachten da der neue Unterbaum nicht zwangsl ufig gegen einen Nachkommen seines unmittelbar linken Geschwisterknoten sto Ben mu Geschvvisterknoten mit vielen Kindern weiter links k nnen Ursache daf r sein da der neue Unterbaum noch weiter nach rechts verschoben wird Bewegungen dieser Art sind nicht
54. 1 amp 87 erstmals eingef hrt Definition 3 5 8 Abschlu eines Typs unter der Typumgebung A Sei S ein Typschema dann ist FV S die Menge aller freier nicht quantifizierter Variablen in S Weiterhin bedeutet FV A f r eine Menge von Annahmen Typumgebung A die Vereinigung aller freien Typvariablen die in den durch A mit Variablen assoziierten Typen vorkommen Nun sei Gen A t ein Typschema mit Gen A t Vou6z On f mit To Gel FV 0 FV A Gen A t hei t der Abschlu von unter A Die o 1 1 sind also alle freien Typvariablen in r die nicht frei in A sind Gilt S Gen A t dann sind alle mr nicht generischen Variablen in S generisch gemacht worden au er denjenigen die schon in A nicht generisch sind Jetzt sind alle Voraussetzungen f r die Angabe des Typinferenzsystems gegeben Typinferenzsystem VAR Abv t mit A v S gt 1 CON Arb t mitA b S gt t APP Ate t gt t Atert Ak ee t KAPITEL 3 SEMANTISCHE ANALYSE 62 Typinferenzsystem LIST AF H AFe t e Ahle ee Flist r COND Ake bool Atert Abe t Ak if e then e else e f ABS A v r He t AH Av e t 1 LET Abe t AFe t A v S v S Fe At let y 3 5v e ine t mit S Gen A t und I lt i lt n LETREC At letrec v 5 5 v e in e t mit A vi t Test 21 und A v
55. 4 KByte 1 max 64 KByte Medium mehrere unbegrenzt 1 max 64 KByte Compact 1 max 64 KByte mehrere unbegrenzt Large mehrere unbegrenzt mehrere unbegrenzt Huge mehrere unbegrenzt mehrere unbegrenzt Das Modell Huge unterscheidet sich von Large dadurch da es einzelne Variablen mit mehr als 64 KByte Platzbedarf unterst tzt 1 3 2 Ikonen Cursorformen Bitmaps und Strings Wie bereits oben erw hnt belegen Ressourcen keinen Platz im Datensegment Jede Res source belegt vielmehr ein eigenes als beweglich und meist entfernbar gekennzeichnetes Segment im Hauptspeicher Sie werden dann geladen wenn sie das Programm ben tigt und wieder entfernt wenn sie l ngere Zeit nicht benutzt werden Es gibt insgesamt neun Res sourcenklassen Ikonen Cursorformen Bitmaps Zeichenketten benutzerdefinierte Daten Men s und deren Abk rzungsbefehle Dialoge und Zeichens tze Die ersten f nf werden hier diskutiert den anderen sind eigene Abschnitte gewidmet Ressourcen werden ber eine spezielle ASCII Datei der Ressourcen Datei definiert und mit Namen versehen Sie enth lt einerseits direkte Definitionen als auch Querverweise KAPITEL 1 MICROSOFT WINDOWS 3 1 14 auf andere Ressourcen Dateien Ein Ressource Compiler iibersetzt die Ressourcen Datei hangt den bersetzten Code an die ausf hrbare EXE Datei des Programms und erzeugt eine Ressourcen Tabelle die im Dateikopf der ausf hrbaren Datei untergebracht wird Die erste
56. 5 Compilerbau Hilfe Datei Bearbeiten Lesezeichen Inhalt_ Suchen Zur ck Bisher Literatur zur semantischen Analyse 4691 Alblas Attribute Evaluation Methods In Alblas B Melichar Hrsg Proc International Summer School on Attribute Grammars Applications and Systems LNCS 545 Springer 1991 Cou84 B Courcelle Equivalences and Transformations of Regular Systems Applications to Program Schemes and Grammars In Theor Comp Sci 42 pp 1 122 1986 DJL P Deransart M Jourdan B Lorho Attributes Grammars Definitions Systems and Bibliography LNCS 323 Springer 1988 DM82 L Damas R Milner Principal Type Schemes for Functional Programs In 9th ACM Symp on Principles of Programming Languages pp 207 212 1982 IDPMS F L DeRemer T J Pennello R Meyers A Syntax Diagram for Preliminary ADA In ACM SIGPLAN Notices 150 8 pp 36 47 1980 EF82 Abb 5 6 Das eingebaute Literaturverzeichnis 1 Vertiefung der Theorie 2 Hilfe zur dynamischen Erweiterung ASA Tool 3 Hilfe zur animierten Pr sentation Lernprogramm 5 2 2 2 Literaturangaben Interessiert sich der die BenutzerIn besonders f r ein bestimmtes Thema so unterst tzt das Programm die Suche nach Literaturangaben Auch hier wird das eingebaute Hilfesystem Programmiersprache Produktionenstack Schlie en o Ip_f_decl D CH bie T d statement E Kontextfreie Grammatik statement Abb
57. 8 favs A Aa AR S S 9 UE 10 1 3 1 Speicherverwaltung 2 2 2222 eer AD A B deg 10 1 3 1 1 Se mente E 11 1 3 1 2 Speicherpl tzbelesuns z a Meade i An ee a aaa ee nena de nada 13 1 3 23 Speichermodelle ssi scien doe Moats heats ins naa se deier dee nn 13 1 3 2 Ikonen Cursorformen Bitmaps und Stmnges nn 13 1 3 3 Men s nd Abk rzungsbefehle 22 32 4 rera a aT AEE EE Bann 14 13 4 RA 15 t341 Modal Didlosess 53 50 faites asad eri LA AAA ig ln 16 1 5 4 2 M duslose Dial ge 5322 52 5 on aint 17 UE We EE 17 E RE 17 14 1 1 Eigenschaften 22 s EES 18 E e e EE 18 UE De eet EE 19 142 Zeichenftunktionen 2 22 32 SH ol eke a ee s 20 14 2 1 21 1 4 3 Bitmaps und Zwischendateien 22 Laure en a cn ed A AS 22 1 4 3 2 Zwaischendatesen rss cohen eege 23 UR EE 23 1 5 Datenaustausch und Kommunikation 25 1 5 1 Zwischen bl se 2 ale Ze eebe else als 25 152 DDE 0000000000 000000 000 0000 0 27 KK tegt belle dt d n nd n n n 27 1 5 2 2 E EE 28 INHALTSVERZEICHNIS i E KR EE 31 1 3 3 1 Eigen sch ften c Ad itn aii LOR A in aie BAR A R 31 1 3 3 2 Piogramimieru
58. Animation der semantischen Analyse Diplomarbeit von Andreas Kerren angefertigt am Fachbereich Informatik der Universit t des Saarlandes nach einem Thema von Prof Dr R Wilhelm Lehrstuhl fiir Compilerbau und Programmiersprachen Fidesstattliche Erklarung Hiermit versichere ich an Eides Statt da ich diese Arbeit selbst ndig und nur mit Hilfe der angegebenen Literatur angefertigt habe Saarbriicken im April 1997 Danksagung Ich danke Herrn Prof Dr Reinhard Wilhelm f r die Vergabe des in vieler Hinsicht interes santen Themas seiner Unterst tzung und seinem Enthusiasmus f r dieses Projekt Bedanken m chte ich mich auch bei meiner Betreuerin Beatrix Braune und Dr Stephan Diehl f r die vielen und umfangreichen Diskussionen die mir bei der Konzeptions und Realisierungsphase dieser Arbeit sehr weitergeholfen haben Weiterer Dank gilt meinen FreundInnen und meinen Eltern die mich w hrend dieses Studiums stets motiviert und an mich geglaubt haben Andreas Kerren April 1997 Inhaltsverzeichnis EINLETTUNG 1 1 MICROSOFT WINDOWS 3 1 4 1 1 ProgrammMmitrung scicccsccsosscosssassteonssccesesenasdensesedoonsapecdennasesoupassesdenessesonsassesdesasSesevassdesteasssesveascsecsen 5 1 1 1 Schnittstelle zum System cies ia nr ee GEREENT 5 LI Programme E AT EE EEEE Ei 6 e Se H 1 2 D LATA T 7 1 2 1 E TL H UE ET 8 e NEE 9 1 2 4 Kontrollelemente 2 2
59. Animationen e Auto Skript Bibliothek Eine Sammlung von vorprogrammierten OPENSCRIPT Behandlungsroutinen und Quelltextbl cken f r die am meisten verwendeten Pro KAPITEL 2 ASYMETRIX MULTIMEDIA TOOLBOOK 3 0 43 Datei Bearbeiten Format Ansicht Fenster Hilfe BER EES EES EIS Elena to handle buttonClick t system sCurrentUnit sysLockScreen true if borderStyle of self raised if sCurrentUnit lt gt null borderStyle of field t amp sCurrentUnit raised hide field inhalt9 amp sCurrentUnit end if borderStyle of self inset sCurrentUnit show field inhalt9 1 else actual Btyle inset borderStyle of self raised sCurrentUnit null hide field inhalt9 1 end if end LI ri Abb 2 5 Das Skript Editor Fenster von MTB 3 0 grammieraufgaben Die Auto Skript Bibliothek kann auch nach Bedarf durch benut zerdefinierte Auto Skripts erweitert werden 2 4 Kommunikation mit anderen Programmen Die Funktionalit t von ToolBook l t sich erweitern indem man Daten aus anderen Win dovvs Applikationen integriert So k nnen beispielsweise Kalkulationstabellen oder Bitmaps in die ToolBook Anvvendung eingebunden Daten mit anderen Anwendungen ausgetauscht oder Windows Funktionen aus Bibliotheken aufgerufen werden 2 4 1 DDE Dynamischer Datenaustausch DDE ist ein Windows Kommunikationsprotokoll das in Abschnitt 1 5 2 bereits ausf hrlich erlautert wurde Zwei Programme die D
60. Ausnahme bildet die ToolBook Applikation animierte Pr sentation die kleinere Darstellungsprobleme unter Windows 95 hat etwa leichte Farbunterschiede MTB 3 0 befindet sich n mlich auf der schwarzen Liste der nicht vollst ndig kompatiblen 16 Bit Anwendungen zu Windows 95 siehe Wir95a Erw hnenswert ist da sich unter Windows 95 das Aussehen der Dialogfenster des ASA Tools an die graphischen Konventionen dieser Umgebung anpa t Die f r den 3D Effekt der Dialogfenster zust ndige dynamische Bibliothek CTL3DV2 DLL siehe Abschnitt 1 3 4 schaltet sich unter Windows 95 selbst ndig ab 107 KAPITEL 7 ZUSAMMENFASSUNG UND AUSBLICK 108 Optimierungen Gerade bei der G te der Graphikausgabe sind unter VVindovvs 95 Verbesserungen des Programms m glich Ein Weg die Graphikausgabe im Vergleich zu Windows 3 1 zu be schleunigen ist die neue Graphikschnittstelle Win G von Windows 95 Sie ist alternativ zum GDI zu verwenden und erm glicht einen Direktzugriff auf die Graphikhardware Dies ist vor allem fiir die Darstellung von schnellen und ruckelfreien Animationen niitzlich Schlie lich bietet Windows 95 ein verbessertes Multitasking das eventuell f r bessere dynamische Algorithmenanimationen sorgen k nnte wir konnten leider noch keine Programmiererfahrung auf diesem System sammeln F r diesen Gebrauch w re ein preemptives Multitasking am besten geeignet da man dort leichter zwischen mehreren Pro zessen umschalten kann Mit preem
61. Buchstabens sein wenn der Ein gabefokus auf ein Editfenster zeigt Andererseits k nnen auch Botschaften an das Kontrollelement selbst gesendet werden um z B eine Radiokontrolle anzukreuzen Beschriftungen sind jedoch eine Fenstereigen schaft und entsprechen der Titelleiste eines PopUp Fensters Anderungen werden hier mit einer Window Funktion vorgenommen Das Aussehen der Kontrollelemente geh rt zu den Eigenschaften des Systems und wird falls gew nscht systemglobal ge ndert Es ist m glich das Aussehen lokal d h nur f r das Anwendungsprogramm neu festzulegen Dies ist aber aus Konsistenzgr nden nicht anzura ten 1 3 Ressourcen Der Begriff Ressourcen ist im Zusammenhang mit Windows 3 1 berladen Einerseits be schreibt das Wort wie im allgemeinen Sprachgebrauch blich die Hilfsmittel die Pro grammen zur Verf gung stehen Darunter f llt die Speicherverwaltung des Systems An dererseits gibt es Objekte wie Ikonen Men s oder Dialoge die als Ressourcen definiert werden Der Begriff ist in diesem Fall fest definiert Es handelt sich um Daten die in der EXE Datei eines Programms gespeichert sind aber keinen Speicherplatz im programm eigenen Datensegment belegen Wenn von Ressourcen gesprochen wird so bezieht sich der Begriff immer auf die letzte Definition Wie alle Windows Programme nutzt auch ASA die Ressourcen des Windows API Das Hauptfenster von ASA und der ASA Editor vgl Kapitel 6 haben je ein eigenes Men d
62. C 1 6 bis C 1 11 ein Animationsausschnitt angegeben Campilerhau Compilerhan analyze_type_consist prar analyza_type_consist rant nnde a_prinri_type type if Tabelle von aymb k cinclemi ze_type_consis then it symbik hat den ty xt 14 hat als Eingabe die Wurzel des ent apriori typo Ergebnistyp then return t begin if a priori type no_type then e rool sprechenden Ausdrucksbaumes und ind ge else error Typfehler bei oymb k Typ der gew nscht ist und g qe si dl Ee testet werden soll Kontexttyp Die Pro else if exist Operator in Tabelle von zedur ruft die ee EE pe auf und gibt eine Fehler SG i meldung aus talls der errechnete nicht mit dem Kontexttyp bereinstimmt in Annahme fehlender Typanpassung Notation a priori type Froel p des 2 S Operators hicr char const aeda Tampa op Dappad seul an der Wurzel des Ausdrucksbaumes zu ermitteln SC Ze applid eet Ein Beispiel 9 Semantische Analyse 0 4 Die Aufgabe der semantischen Analyse Abb 5 10 Die zwei Ebenen der Algorithmenanimationen Diese Unterteilung ist dahingehend motiviert da die Anwendung f r Aufl sungen von 800x600 Bildpunkten 15 Monitore konzipiert wurde Das Hauptfenster der animierten Pr sentation f llt diesen Raum fast vollst ndig aus Eine andere M glichkeit f r die L sung des Platzproblems w re es die Anima
63. DE unterstiit zen k nnen Daten miteinander austauschen und aneinander Befehle senden Um DDE ein setzen zu k nnen ben tigt man ein Exemplar des Programms mit dem Daten ausgetauscht werden sollen und Informationen ber die DDE Syntax die dieses Programm ervvartet In ToolBook ist DDE Funktionalit t ber eine Gruppe von OPENSCRIPT Botschaften realisiert auf die man mit Behandlungsroutinen reagieren kann Innerhalb ein und derselben DDE Kommunikation kann ToolBook und ebenso das andere beteiligte Programm so wohl Client als auch Server sein Einige Anwendungen k nnen permanente Datenverkn pfungen warme bzw hei e Verbindungen mit den Botschaften WM_DDE_ADVISE und VVM DDE UNADVISE herstellen Diese DDE Botschaften bleiben in ToolBook ohne VVirkung da ToolBook keine permanenten Datenverkn pfungen einrichten kann Es ist also lediglich m glich eine soge nannte statische oder kalte Verbindung mit ToolBook herzustellen 2 4 2 DLL Durch Aufrufen von DLL s Dynamic Link Libraries siehe Abschnitt 1 5 3 kann die Funktionalit t von OPENSCRIPT erweitert werden Das Windows System enth lt DLL s welche die direkte Interaktion mit dem System erm glichen etwa USER KERNEL oder GDI Zu ToolBook geh ren dBase II und Paradox DLL s mit denen Datenbank KAPITEL 2 ASYMETRIX MULTIMEDIA TOOLBOOK 3 0 44 funktionalit t in ToolBook integriert werden kann ToolBook enth lt au erdem DLL s zum Andern von D
64. Deklaration ein Mausklick mit der rechten Mausta ste das Erscheinen seines Typs M chte man alle Knotenattribute hier den Typ auf einmal anzeigen lassen die Gr e der Attribute ver ndern oder die Typtabelle aller im Beispiel verwendeten eingebauten Operatoren einblenden dann lassen sich alle diese Einstellungen in einer speziellen Dialogbox siehe Abb 6 8 vornehmen die durch den Men punkt Anima tionsfenster im Men Ansicht gezeigt wird ASA zeigt durch die Auswahl dieses Men punktes f r jedes Animationsthema eine unterschiedliche kontextsensitive Dialog box 6 4 3 Aufl sung der berladung Nach dem ffnen einer Eingabedatei Dateiendung OLS die die Beispielspezifikation enth lt oder der Eingabe der Spezifikation in die Eingabemaske vgl Abschnitt 6 3 2 3 wird der Ausdrucksbaum in dem Animationsbereich dargestellt Falls das Programm einen Syntaxfehler erkennt wird der Fehler in einer Benachrichtigung beschrieben und in der Maske angezeigt Wie bei den anderen Animationsthemen auch l t sich die Ansicht des KAPITEL 6 DIE DYNAMISCHE ERWEITERUNG ASA 97 Ausdrucksbaumes durch das Andern der Layoutparameter fiir den jeweiligen Fall optimie ren W hlt man aus dem Men Animation den Punkt Endergebnis so wird der Algorithmus zur Aufl sung der berladung gestartet Daran folgt das Umf rben der Knoten zu dun kelgrau als Hinweis darauf da die Berechnung auf allen Knoten abgeschlossen ist Bei einem Fehler ersche
65. Durch die Bet tigung des Step Button liest die entsprechende Behandlungsroutine f r das Klicken auf diesen Knopf die Systemvariablen svMax pageNumber und svAkt page Number aus Sind beide Eintr ge identisch so wird die Fortschrittsleiste und die Animation zur ckgesetzt svAkt pageNumber erh lt den Wert 0 Sind sie verschieden dann macht die Fortschrittsleiste und die Animation einen Schritt svAkt pageNumber wird um 1 inkre mentiert Wenn der die AnwenderIn auf den Play Button driickt dann sendet die betroffene Be handlungsroutine eine Botschaft zum Timer Dieser aktiviert die gleiche Botschaftskaskade wie die Behandlungsroutine des Step Buttons bis auf das Auslesen von svSpeed und der Anforderung eines Windows Timers Abschnitt 1 2 3 Bei jedem empfangenen Timertick wird sozusagen ein Klicken auf den Step Button simuliert Der Wert von svSpeed bestimmt dabei die L nge des Zeitintervalls zwischen zwei Ticks Die nun ablaufende Animation kann jederzeit durch die Betatigung des Stop Buttons gestoppt werden Dabei wird der Timer deaktiviert Um die Animation und damit auch die Fortschrittsleiste w hrend des Ablaufs 0 lt svAktlpageNumberl svMax pageNumber zur ckzusetzen ist der Reset Button zu bet tigen Damit stellt das Programm den Anfangszustand der Animation wieder her Das in Abbildung 5 11 gezeigte Konzept ist nicht das einzig denkbare Die verschiedenen Behandlungsroutinen k nnen in beliebigen Skripten untergebracht we
66. EMANTISCHE ANALYSE 50 Stat IfThenElseStat 0000000 Cond Stat Stat E E AssignStat AssignStat E T T E E T F F T T F F F IF Identifier IntConst gt Identifier THEN Identifier IntConst ELSE Identifier IntConst FI r y g 2 Abb 3 2 Baum zur konkreten Syntax IfThenElse Identifier IntConst Identifier Identifier IntConst Identifier IntConst Abb 3 3 Baum zur abstrakten Syntax zwar zum Erkennen der Syntax wichtig waren von nun an aber vom bersetzer nicht mehr benutzt werden Betrachten wir als Beispiel das folgende Programmfragment ifx 1 gt y then z 1 else z 2 fi Die Abbildungen 3 2 und 3 3 stellen die zu diesem Programmst ck geh rigen B ume zur konkreten wie abstrakten Syntax dar bei entsprechender kontextfreier Grammatik 3 2 G ltigkeits und Sichtbarkeitsregeln Die G ltigkeits und Sichtbarkeitsregeln erm glichen es festzustellen auf welches definie rende Vorkommen sich ein angewandtes Vorkommen eines Bezeichners bezieht Diese Aufgabe nennt man die Identifizierung von Bezeichnern identification of identifiers In Programmiersprachen die das berladen von Bezeichnern erlauben kann es zu einem an gewandten Vorkommen mehrere definierende Vorkommen geben KAPITEL 3 SEMANTISCHE ANALYSE 51 3 2 1 G ltigkeit Der G ltigkeitsbereich scope range of validity eines definierenden Vorkommens eines Bezeichners x ist der Teil des Programms in dem
67. Hilfe Ansicht Men Statuszeile Blendet die Statuszeile ein oder aus Ausgeblendet ist die Voreinstellung Optionen Men KFG Zeigt die KFG Dialogbox an mit welcher sich die BenutzerInnen die kontextfreien Grammatiken der Programmiersprachen PASCAL und LAMA ansehen k nnen Hilfethema su chen Bedienelemente nfo Hilfe zur Theorie Algorithmen Zeigt die Algorithmen und Regeln Dialogbox an in welcher sich alle vorgestellten Algorithmen bzw Regeln zu jeder Zeit ansehen lassen Geschwindigkeit Zeigt die Geschwindigkeit einstellen Dialogbox an in der sich die Animationsge schwindigkeit ver ndern l t Seite Men N chste Zeigt die n chste Seite an Vorhergehende Zeigt die vorhergehende Seite an Zuriick Springt von den Ubersichten Beispielen und Animationen wieder auf die Seite zu r ck von wo aus man diese Elemente aufgerufen hat Inhalt Zeigt das Gesamtinhaltsverzeichnis an Dies ist f r eine zuk nftige gr ere Umge bung gedacht Kapitel Zeigt das Kapitelverzeichnis an in dem man sich gerade befindet Hilfe Menii Inhalt Ruft die Online Hilfe mit ihrem Inhaltsverzeichnis auf Zeigt die Hilfethema suchen Dialogbox in welcher man mittels Schl sselwort das ge w nschte Thema aufrufen kann Ruft die Online Hilfe zur Compilerbau Theorie auf Ruft die Online Hilfe zur Erkl rung der Bedien und Steuerungsel
68. Kontext eingesetzten Hintergrundfarbe aus w hrend im Modus TRANSPARENT lediglich die Zeichen selbst d h ohne nde rung des Hintergrundes ausgegeben werden Zeichenabstand Dieses Attribut des Kontextes betrifft den Abstand zwischen einzelnen Zeichen Der Abstand wird in logischen Einheiten angegeben Standard 0 die den entsprechenden zus tzlichen Abstand zwischen zwei Zeichen angeben Es ist nicht m glich negative Werte anzugeben um so etwa einen Text enger als vorgesehen zu sammenzuschieben Die von Windows Programmen verwendbaren Schriften lassen sich in zwei Kategorien einteilen den e GDI Schriften die blicherweise von Videoadaptern verwendet werden Man be zeichnet sie als Font Ressource und sie werden in Dateien mit den Endungen FON oder TTF FOT abgespeichert GDI Schriften unterteilen sich in Bitmap Vektor und TrueType Schriften Ger teschriften die meist von Druckern ganz besonders Postscript Laserdruckern selbst definiert werden Diese Schriftkategorie wird an dieser Stelle nicht weiter be handelt Bei Bitmap Schriften auch Raster Schriften sind die einzelnen Zeichen bitweise in Form eines kleinen Bitmaps gespeichert Durch diese Definition ergibt sich eine sehr schlechte Qualit t beim Skalieren der Schrift es entsteht ein Kl tzcheneffekt Eine nderung der Schriftattribute fett kursiv unterstrichen durchgestrichen erfolgt durch die Umrechnung der einzelnen Bits es ist also kein ei
69. NutzerInnen des Autorensystems Asymetrix Multimedia ToolBook 3 0 bieten sich u a folgende Vorteile 1 Einfache Bedienung und Erstellung von ToolBook Anwendungen auch f r AutorIn nen die weniger Programmierkenntnisse und erfahrung besitzen 2 Es lassen sich sehr schnell aufwendige und anspruchsvolle Benutzeroberfl chen kreie ren 3 Die Eingabe und Interaktionm glichkeiten durch den die Anvvenderln der entwickel ten ToolBook Anwendung sind vielseitig und mit wenig Aufwand bereitzustellen 4 Leichte Einbindung von Multimedia Elementen 5 Vielf ltige Kommunikationsm glichkeiten mit anderen Windows Applikationen Andererseits hat das System einige Nachteile und konzeptuelle Schw chen die jedoch zum Teil auf das Windows System als Grundlage zur ckzuf hren sind 1 Die Geschwindigkeit in graphikintensiven Anwendungen ist nicht optimal Komplexe Bewegungsabl ufe in Animationen sind deshalb kaum zu realisieren 2 Es stehen kaum Werkzeuge zur komfortablen Objektanimation zur Verf gung Um eine kleine Animation zu schreiben ist sehr viel Aufwand n tig 3 Die Seitengr e sowie der Seitenspeicher ist begrenzt 4 Da die Skripte bei den Objekten stehen zu denen sie geh ren ist es schwierig den berblick ber alle Skripte zu behalten Multimedia ToolBook 3 0 eignet sich Aufgrund der dargestellten Vor und Nachteile be sonders f r statische Anwendungsbereiche in denen es nicht erforderlich ist komplexe Ber
70. OS Dateien und zur Bereitstellung von Windows Systemressourcen Das Einbinden einer DLL in ToolBook l uft in zwei Schritten ab 1 Verkn pfen mit der DLL damit sie f r die ToolBook Anwendung zur Verf gung steht 2 Aufrufen von Funktionen der DLL aus einem Skript heraus Die Aufhebung der Verkn pfung erfolgt entweder manuell durch den Aufruf entsprechender OPENSCRIPT Befehle oder automatisch beim Beenden der ToolBook Anwendung durch das ToolBook System Es k nnen beliebig viele DLL s eingebunden werden Aus einer DLL k nnen auch Botschaften direkt an ToolBook Objekte in einer Anwen dung verschickt werden Ebenso ist der Aufruf ToolBook interner Funktionen oder die Ab frage von ToolBook Variablen aus einer DLL m glich 2 4 3 OLE Unter OLE Object Linking and Embedding versteht man ein Windows Protokoll zur gemeinsamen Nutzung von Objekten zwischen Anwendungen siehe Abschnitt 1 5 4 Damit ist es m glich Objekte die in anderen Programmen Server Applikationen erstellt wurden in eine ToolBook Anwendung einzubinden z B eine mit MS Paintbrush erstellte Graphik Die Verkn pfung mit dem Server bleibt dabei aufrechterhalten Klickt der die Be nutzerln innerhalb der ToolBook Anwendung auf ein OLE Objekt dann startet ToolBook den Server damit das OLE Objekt bearbeitet auf der Autorenebene oder angezeigt bzw abgespielt auf der Leserebene werden Kann ToolBook unterst tzt nur OLE nicht OLE 2 0 und ist in Zusammenhang
71. Spezifikation f r Windows Programme dar Ein MDI Programm kann mehrere Dokumente ber separate Fenster in ein und dem selben Anwendungsbereich verwalten Eine Beispielanwendung ist Microsoft Word welches mehrere Textdokumente in seinem Anwendungsbereich halten kann Das Hauptfenster einer MDI Anwendung in diesem Zusammenhang auch als Rahmen fenster frame window bezeichnet unterscheidet sich bis auf den Anwendungsbereich nicht von Hauptfenstern blicher SDI Anwendungen Der Anwendungsbereich wird nicht direkt f r Programmausgaben benutzt sondern nur zur Darstellung einer beliebigen Anzahl von sogenannten Dokumentenfenstern Deshalb benennen wir den Anwendungsbereich auch mit Arbeitsbereich working space Die Dokumentenfenster besitzen keine eigene Men leiste alle Funktionen wickelt das System ber die Men leiste des Hauptfensters ab Sie k nnen nur innerhalb des Arbeitsbereichs existieren und lassen sich dort zu Ikonen ver kleinern Ferner kann zu jedem Zeitpunkt immer nur ein Dokumentenfenster aktiv sein F r das Rahmenfenster mu eine eigene Fensterklasse und damit eine eigene Window Prozedur definiert werden Den Arbeitsbereich deckt das MDI mit einem sogenannten Client Fenster ab f r das Windows eine eigene Fensterklasse MDICLIENT definiert und intern eine entsprechende Window Prozedur bereitstellt die alle mit MDI anfallenden Ver waltungsaufgaben bernimmt Ob man pro Dokumentenfenster eine eigene Window Prozed
72. ToolBook System Systembuch Hintergrund Objekt Abb 2 4 Die Objekthierarchie Aus Behandlungsroutinen k nnen Botschaften an jedes beliebige Objekt verschickt werden auch an untergeordnete Objekte oder an Objekte in anderen B chern Der die Programmie rerIn mu in diesen F llen darauf achten da durch diese Verfahren keine Endlosschleife zur Laufzeit entsteht Weiterhin l t sich durch Ausnutzung der Objekthierarchie der Pro grammieraufwand stark vermindern indem man Behandlungsroutinen weiter oben in der Objekthierarchie festlegt Soll ein bestimmtes Objektverhalten nicht nur lokal in einem einzelnen Buch sondern bergreifend mehreren Anwendungen B chern zur Verf gung stehen dann k nnen Be handlungsroutinen in einem Systembuch plaziert werden Es ist damit also m glich Biblio theken von Behandlungsroutinen aufzubauen 2 3 3 Erstellung von Behandlungroutinen ToolBook bietet f r die Erstellung von Behandlungsroutinen eine spezielle Programmierum gebung das Skript Editor Fenster an siehe Abb 2 5 Es enth lt alle Bearbeitungsfunktio nen von Texteditoren einschlie lich Syntaxanalyse des Skripts und folgender Werkzeuge e Skript Rekorder Eine ToolBook Programmierfunktion die das Ergebnis von Tasten anschl gen und Mausaktionen in Form von OPENSCRIPT Anweisungen aufzeichnet um diese Anweisungsfolge in ein Skript einf gen zu k nnen n tzlich beim Erstellen kurzer
73. Um einen solchen Dialog einzuleiten mu der die ProgrammiererIn lediglich eine entspre chende Window Funktion z B GerOpenFileName aufrufen KAPITEL 1 MICROSOFT WINDOWS 3 1 17 1 3 4 2 Moduslose Dialoge Diese zweite Art von Dialogen erlaubt die Umschaltung zu anderen Fenstern und deren Men s Sie sind normalen Child Fenstern sehr hnlich und haben auch ein Systemmen Der Hauptunterschied zu modalen Dialogen ist das Fehlen einer eigenen Warteschlange Modus lose Dialoge benutzen die Warteschlange des aufrufenden Programms hnlich zu den Modifikationen der Ereignis Warteschleife in WinMain bei Abk rzungsbefehlen mu dort getestet werden ob die aktuelle Botschaft f r den moduslosen Dialog bestimmt ist oder nicht Die dazu verwendete Funktion sDialogMessage pr ft ob die Botschaft f r den mo duslosen Dialog zust ndig ist Falls ja dann bergibt sie die Botschaft an die Window Prozedur des Dialogs andernfalls geht die Botschaftsbearbeitung normal weiter 1 4 Graphik Das Thema dieser Arbeit ist die Visualisierung bzw Animation der semantischen Analyse Demzufolge spielen die Graphikf higkeiten und eigenschaften des Windows Systems eine herausragende Rolle Zu diesen Eigenschaften z hlt beispielsweise wie ein Programm den Anwendungsbereich eines Fensters zeichnet die Textausgabe vornimmt oder Bitmapgra phiken behandelt aus denen u a graphische Schaltfl chen konstruiert werden k nnen Unter Windows wird jedes Anwendung
74. Vorkommen da keine berladung zugelassen ist Das Resultat dieser Identifizierung wird von der Typ berpr fung und der Codeerzeugung ver wendet Aus diesem Grund mu das Ergebnis diese Phase berleben Um die Identifizierung von Bezeichnern durchzuf hren erstellt der bersetzer eine so genannte Symboltabelle in der f r jedes definierende Vorkommen eines Bezeichners die zugeh rige deklarative Information abgespeichert ist Die Symboltabelle ist analog zur Blockstruktur des Programms organisiert und sollte idealerweise nach Ausf hrung des De klarations Analysators gel scht werden k nnen Sie dient lediglich dazu die Identifizierung vorzunehmen Es existieren mehrere M glichkeiten auf welche Art man das Ergebnis der Identifizierung darstellt Man speichert f r jeden Knoten der ein angewandtes Vorkommen eines Bezeichners symbolisiert entweder 1 einen Verweis auf den Knoten der entsprechenden Deklaration oder 2 die Adresse des Eintrags f r das definierende Vorkommen in der Symboltabelle oder 3 die deklarative Information zu dem definierenden Vorkommen ab Alternative 2 widerspricht der Forderung die Symboltabelle nach der Identifizierungs phase zu l schen 1 hat vor 3 den Vorteil da es sich um einen Verweis Zeiger auf das definierende Vorkommen handelt und damit alle angewandten Vorkommen zu einem defi nierenden Vorkommen dieses gemeinsam verwenden Aus diesem Grund w hlen wir Alter native 1 Der abstrakte Syntax
75. Windows AP Broadcast AN v KAPITEL 5 DIE ANIMIERTE PRASENTATION 84 Falls sich das ASA Tool noch nicht im Speicher befindet passiert nichts Wenn doch dann sendet es seinen Fensterhandle an die AP zur ck dessen Fensterhandle mit der Botschaft TBM GETHVVND als Attribut mitgesandt wurde Die AP bersetzt die empfangene Bot schaft ASA HVVND mit der ToolBook Funktion translateWindowMessage in eine Tool Book Botschaft und speichert den Fensterhandle des ASA Tools in einer globalen Varia blen ab TBM_GETHWND DLL AP Fensterhandle gt ASA AP ASA_HWND ASA Fensterhandle Wenn andererseits ASA manuell ber den Programm oder Dateimanager gestartet wird weil es als eigenst ndiges Programm konzipiert wurde dann mu es zuerst einmal feststel len ob sich die AP im Hauptspeicher befindet Dazu sendet ASA ebenfalls einen globalen Broadcast mit seinem Fensterhandle allerdings mit der Botschaftsnummer ASA_HWND ASA_HWND Windows sn ASA Fensterhandle AK Broadcast v Wenn sich die AP nicht im Speicher befindet passiert nichts Wenn doch dann sendet die AP die Botschaft TBM_GETHWND mit ihrem Fensterhandle an ASA zuriick ASA sendet nun nat rlich wieder die redundante Botschaft ASA HWND was durch den manuellen Aufruf von ASA bedingt ist ASA ASA_HWND AP ASA Fensterhandle ASA TBM_GETHWND DLL
76. Windows 3 0 1990 Diese Version unterst tzt den Protected Mode des 80286 sowie seiner Nachfolger auch f r Anwendungsprogramme und stellt somit bis zu 16 MByte durch gehenden Hauptspeicher zur Verf gung Windows 3 1 1992 Anwendung der TrueType Technologie wodurch WYSIWYG Systeme What You See Is What You Get erst m glich wurden Bereitstellung von fertigen Dialogen f r Standardprozeduren wie das ffnen von Dateien OLE Object Linking and Embedding Kommunikationsprotokollen und Multimediafunktionen Windows 3 1 l uft nur noch im Protected Mode d h es setzt einen 80286 und 1 MByte Hauptspeicher voraus Graphische Umgebungen versuchen Informationen bildhaft darzustellen Durch diese visu elle Form der Bedienerfiihrung durch Programme und Darstellung der Daten werden auch Menschen angesprochen die Ber hrungs ngste vor kompliziert anmutender Software ha ben Weiterhin erm glicht eine gewisse Uniformitat im Erscheinungsbild der Programme eine verkiirzte Einarbeitungszeit Um diese Ziele zu erreichen gibt es einige Voraussetzun gen an das System KAPITEL 1 MICROSOFT WINDOWS 3 1 5 Ger teunabh ngige Graphik Dies wird durch eine gemeinsame Graphikschnittstelle f r alle Anwendungsprogramme erreicht Konsistenz in der Benutzung Alle identischen Operationen z B Datei ffnen sollten gleich repr sentiert werden Einige Bibliotheken mit entsprechenden Funktionen aus gestattet werden mit dem System mitgeliefert
77. abe vgl Punkt 5 der Prinzipien zur Da teneingabe aus Abschnitt 4 3 Die einzelnen Elemente werden von oben nach unten und von links nach rechts aufgez hlt und beschrieben 9 Semantische Analyse Inhalt g 9 1 Die Aufgabe der semantischen Analyse Abb 5 3 Kontrolleiste im Standardzustand Kapitelanzeige Zeigt das aktuelle Kapitel an in vvelchem man sich augenblicklich befindet Absehnittanzeige Zeigt den aktuellen Abschnitt an Buttons Inhalt Zeigt das Gesamtinhaltsverzeichnis an Dies ist f r eine zuk nftige gr Bere Um gebung gedacht Kapitel Zeigt das Kapitelverzeichnis an in dem man sich gerade befindet Vorhergehende Seite Blattert zur vorhergehenden Seite N chste Seite Blattert zur n chsten Seite Falls eine Animation ausgevvahlt vvird blenden sich automatisch entsprechende Kontroll elemente in die Kontrolleiste ein Abb 5 4 Ist die Animation lediglich eingeschr nkt steu erbar z B bei kleinen animierten Demonstrationen so fehlen in der Kontrolleiste die ent sprechenden Steuerungselemente Die einzelnen Elemente sind von links nach rechts be schrieben Wir haben auch hier ein Beispiel f r das in Abschnitt 4 3 genannte Prinzip der Flexibilitat der Dateneingabem glichkeiten Es gibt eine alternative Steuerung der Anima tion tiber die Tastatur Die Tastencodes sind in Klammern hinter der Benennung der Steuer buttons angegeben Fortschr
78. al Im zweiten Fall sendet AP direkt die Window Botschaft WM_CLOSE an das ASA Tool In beiden F llen meldet sich ASA durch das Senden der Botschaft ASA_CLOSE ab DLL WY Y WM_CLOSE ASA AP ASA_CLOSE Beendet der die AnwenderIn die animierte Prdsentation ohne vorher das ASA Tool zu schlieBen so meldet sie sich lediglich ab Das ASA Tool bleibt bis zur manuellen Schlie Bung ge ffnet DLL CLOSE ASA AP Kapitel 6 Die dynamische Erweiterung ASA Den zweiten Teil der Animation der semantischen Analyse bildet die dynamische Erweite rung ASA ASA Animationstool zur Semantischen Analyse Das ASA Tool stellt ge genw rtig vier unterschiedliche Animationsthemen zur Verf gung e Ein Vergleich von konkreter und abstrakter Syntax anhand der Eingabe eines be liebigen PASCAL Programms e Die berpr fung der Kontextbedingungen mit einem beliebigen PASCAL Programm als Eingabe Die Animation umfa t die Visualisierung des Deklarations Analysators sowie des Typkonsistenz Analysators e Die Aufl sung der Uberladung von Bezeichnern Als Eingabe erwartet ASA eine spezielle Spezifikation welche die sichtbaren evtl berladenen Operatoren einen Kontexttyp und einen Ausdruck umfa t e Die Typinferenz bei einer polymorph getypten Programmiersprache F r diese Ani mation ist ein LAMA Programm anz
79. am Computar Sammlung von Ubungcaufgabon Literatur Erganzende und weiterf hrende Literatur zum Thema berladung von Bezeichnern finden Sie hier Literatumerzeichnis zum 0 9 Thema x i x u 8 Semantieche Analyse x E c 8 4 Die Aufgabe der semartischen Analyse te Abb 5 12 Der Aufruf der dynamischen Erweiterung ASA rechts KAPITEL 5 DIE ANIMIERTE PR SENTATION 83 5 6 1 Grundkonzept der Kommunikation Wir verwenden zum Aufruf der dynamischen Erweiterung und zur weiteren Kommunikation nicht DDE sondern definieren ein eigenes Kommunikationsprotokoll Dieses Protokoll be ruht auf der M glichkeit benutzerdefinierte Botschaften zu versenden Der Vorteil eines eigenen Protokolls liegt in der Einfachheit der Implementierung ohne unn tigen berbau Windows definiert vier Bereiche von Botschaftsnummern Dabei entspricht die Botschaft WM USER dem Wert 0x0400 und dient der Trennung zwischen Botschaften die aus schlie lich von Windows benutzt werden d rfen und solchen die auch Windows Applikationen verwenden k nnen Reichweite Bedeutung 0 bis VM USER 1 Reserviert von Windows WM_USER bis 0X7FFF Tnteger Botschaften f r die Verwendung innerhalb einer priva ten Fensterklasse einer Applikation 0x8000 bis 0x BFFF Reserviert von Windows fiir den zuktinftigen Gebrauch 0 000 bis 0x FFFF String Botschaften fiir den Gebrauch zur Kommunikation zwi schen Applikationen
80. amm zwischen normalen Tasta tureingaben und Abk rzungsbefehlen unterscheiden k nnen Die L sung dieses Problems erfolgt in zwei Schritten 1 Die Abk rzungsbefehle werden aus der Ressource Datei in WinMain geladen was vor dem ersten Aufruf der Ereignis Warteschleife geschieht 2 Die aus der Warteschlange entnommenen Tastaturereignisse werden mit Hilfe der Windows Funktion TranslateAccelator mit den geladenen Abk rzungsbefehlen ver glichen Bleibt die Suche in der Accelator Tabelle erfolglos so wird die Botschaft nicht als Abk rzungsbefehl erkannt und die Botschaftsbearbeitung geht auf normalem Weg weiter Falls es sich aber um einen Abk rzungsbefehl handelt dann sendet TranslateAccelator die Botschaft WM_COMMAND an die Window Prozedur des Fensters welches das Men besitzt unabh ngig davon welches Fenster den Eingabe fokus hat 1 3 4 Dialoge Zur Abfrage von Informationen verwenden Programme meist Dialoge die in Form eines eigenen Fensters erscheinen vgl Abb 1 6 Zur Unterscheidung von normalen Fenstern haben sie ein standardisiertes Aussehen und enthalten meist mehrere Kontrollelemente Ihr jeweiliger Prototyp in der Ressource Datei enth lt Informationen ber ihre Gr e und Aus sehen sowie ber die verwendeten Kontrollelemente KAPITEL 1 MICROSOFT WINDOWS 3 1 16 Animationsfenster anzeigen W hlen Sie die gew nschte Fensteransicht aus Se X Zeige ein Fenster mit der initialen Typumgebung an Zeige al
81. ann man zur Beschreibung dieser Regel folgende Notation verwenden Ake bool Ate t Atert Ak if e then e else e f Die Aussage unter der Linie Konklusion folgt aus der Aussage ber der Linie Hypothese Ein Ausdruck der Art wird gelesen als der Ausdruck e hat unter den Annahmen A den Typ r Eine einzelne Annahme sei mit v 7 und eine leere Menge von Annahmen mit Let beschrieben A v t bedeutet da v durch A mit dem Typterm t assozi iert wird Um generische von nicht generischen Typvariablen zu unterscheiden f hren vvir den Be griff des Typschemas ein Definition 3 5 2 Typschema Ein Typschema S hat die folgende Form Va Vor Ont abgek rzt mit Vaaz Ga Hier ist ein beliebiger polymorpher Typ und die 0 amp seien generische Typvariablen Ein Typ t ist unter dieser Definition ein Spezialfall eines Typschemas Quantifizierte in diesem Zusammenhang V quantifizierte Typvariablen heiBen gebundene Typvariablen Hat man eine Quantifizierung Vo Got so umfa t die Bindung der Or On den G ltigkeitsbereich r Ungebundene Typvariablen bezeichnet man als frei In einem let Ausdruck let v e vn 6 IN en konnten wir den Vorkommen der vi 1 erlauben verschiedene generische Instanzen der durch die jeweiligen e 1Si lt n gegebenen polymorphen Typen zu haben Hierzu definieren wir zun chst einige notwendige Begriffe KAPITEL 3 SEMANTISCHE ANALYSE 60 Defini
82. arbe die Breite und ein Muster durchgehend ge punktet oder gestrichelt Der Standardzeichenstift BLACK_PEN zeichnet eine durchgehende schwarze Linie die unabh ngig vom Koordinatensystem genau ein Pi xel breit ist Es lassen sich auch sogenannte logische Zeichenstifte erzeugen die be liebig ver nderbar sind Hintergrundfarbe Zeichnet das System eine gestrichelte oder hnlich unterbrochene Li nie so werden diese L cher mit der hier definierten Hintergrundfarbe ausgef llt Diese Operation ist jedoch auch vom Hintergrundmodus abh ngig Hintergrundmodus Es gibt zwei Hintergrundmodi die Windows zur Verf gung stellt Die Standardvorgabe ist OPAQUE undurchsichtig In diesem Fall werden Linien unterbrechungen mit der im Ger tekontext festgelegten Hintergrundfarbe gezeichnet Im Modus TRANSPARENT hingegen berspringt die Zeichenoperation die L cher des Linienmusters und l t den Bildspeicher unver ndert Zeichenmodus Der Zeichenmodus ist standardm ig auf R2_COPYPEN gesetzt Zei chenmodi geben die Art der logischen Verkn pfung zwischen Zeichenfarbe und dem Inhalt des Bildspeichers an den jeweilige Punkten an Der Standardmodus R2_ COPYPEN steht f r ein Kopieren der Zeichenfarbe also ein berschreiben des Ziel gebiets ohne Ber cksichtigung seines vorherigen Inhalts R2 steht in diesem Zusam menhang f r Rasteroperation auf zwei Bitmustern auch ROP2 Ein Anwendungsbei spiel anderer Zeichenmodi w re die Ver
83. arbeitete Botschaften den Wert true und f r nichtverarbeitete Botschaften den Wert false an die dar berliegende Window Prozedur des Dialog Managers zur ck damit diese reagieren kann Botschaften innerhalb eines modalen Dialogs s u verwenden eine eigene Warteschlange nicht die des Programms dadurch werden Verwechslungen z B bei Abk rzungsbefehlen vermieden Obwohl modale Dialoge andere Programmaktivi t ten verhindern kann man aus der Dialog Prozedur anderen Window Prozeduren Nach richten und Botschaften senden die dann dort verarbeitet werden Weil eine Dialog Prozedur nicht direkt mit einer Fensterklasse identifiziert werden kann mu man sie vor dem Aufruf des Dialogs dem System bekanntmachen Die dazu verwen dete VVindovv Funktion MakeProcInstance erzeugt einen Vorspann f r das korrekte Setzen des DS Registers bei Aufrufen der Dialog Prozedur und liefert die Adresse dieses Vor spanns zur ck Zu Beginn des Dialogs teilt man diese Adresse dem Dialog Manager mit 1 3 4 1 Modale Dialoge Modale Dialoge erlauben bis zu ihrem Abschlu durch den die Anwenderln keine anderen Aktivit ten des Programms Das System verwirft Ereignisse die in die Warteschlange des Programms eingef gt werden Eine Unterklasse der modalen Dialoge bilden die systemmo dalen Dialoge Sie blockieren das gesamte System bis zu dem Zeitpunkt an dem sie ge schlossen werden Windows liefert eine Bibliothek von Standard Dialogen z B der Datei ffnen Dialog
84. assoziierte Teilbaum wobei 1 BISON Notation ein Zeiger auf diesen Teilbaum ist Dementsprechend ist 3 ein Zeiger auf einen anderen Teilbaum der bei der Reduktion zu einem expression Nichtterminal generiert wurde Wie oben wird dieser Teilbaum zum zweiten Kind des neuen Knotens AssignStat Auf diese Art und Weise erzeugt der Parser nacheinander Teilb ume die er dann als Kinder eines Elternknotens zusammengefa t 2 zeigt auf eine Struktur mit Positionsangaben des Terminals im zu analysierenden Quelltext des Beispielprogramms mehr dazu weiter unten bekommt das Resultat der Funktion build2 zugewiesen und zeigt auf den neu geschaffenen Knoten Dieser Zeiger wird von einem Knoten weiter oben im Syntaxbaum verwendet der wiederum dieses statement als Kind hat Gibt man ein bzgl der Syntax fehlerhaftes Beispielprogramm ein so verbleiben mit dem oben beschriebenen Verfahren eventuell Syntaxbaumfragmente im Speicher In diesem Fall hat das ASA Tool umsonst Speicherplatz fiir die Knoten des Syntaxbaums allokiert und Teile des Syntaxbaums aufgebaut Dieses Problem umgehen wir indem wir zwei L ufe ber das Eingabeprogramm initiieren Der erste testet sehr schnell die Korrektheit der Syntax w hrend im zweiten Durchlauf der Syntaxbaum erzeugt wird Da die Beispielprogramme meist sehr klein sind f llt dieser zus tzliche Test nicht ins Gewicht Erw hnenswert ist da die Generatoren FLEX und BISON sicher nicht f r die Anwendung f r Windows
85. auch solche Botschaften die durch Ereignisse der Tastatur der Maus mehrerer Windows Timer und diverser Kontrollelemente erzeugt werden 1 2 1 Tastatur Als Reaktion auf Tastaturereignisse wie das Bet tigen einer oder mehrerer Tasten reiht KAPITEL 1 MICROSOFT WINDOWS 3 1 8 der Tastaturtreiber entsprechende Codes in die Warteschlange des Systems ein Windows gibt diese Codes in Form von Botschaften an die Warteschlange des Programms das den Fingabefokus besitzt Die Zwischenspeicherung in der Warteschlange des Systems ist not wendig wenn mehr Zeichen eingegeben werden als das Programm bearbeiten kann Tastenbotschaften werden danach unterteilt ob es sich bei der Taste um eine Standard oder Systemtaste handelt und ob sie gedriickt oder losgelassen wird Auf Programmierebene sind dies die Botschaften WM_KEYDOWN und WM_KEYUP bzw WM_SYSKEY DOWN und WM_SYSKEYUP WM steht hier f r Window Message wParam enth lt einen virtuellen Tastencode der f r die bet tigte Taste steht Param besteht aus sechs getrennten Elementen 1 einen Wiederholungsz hler 16 Bit der die Anzahl gleichartiger Tastendr cke ent halt 2 den OEM Scancode 8 Bit der normalerweise ignoriert wird 3 einen Flag fiir erweiterte Tasten 1 Bit wenn eine Tastenkombination gedriickt wur de 4 den Kontext Code 1 Bit wenn die Alt Taste zus tzlich bet tigt wurde 5 den vorherigen Tastenzustand 1 Bit der feststellt ob die Taste vorher au
86. auf gelb um ein visuelles Feedback zu geben Nachdem die Behandlungsroutine f r die Botschaft buttonDown im Skript des Hotwords diese Botschaft erhalten hat sendet sie eine spezielle benutzerdefinierte Botschaft f r das Gelbf rben unter Angabe einer eindeutigen Identifikationsnummer Absender an eine ent sprechende Behandlungsroutine im Buchskript Dabei ist es sinnvoll die Botschaft direkt an das Buch zu senden und nicht in der Objekthierarchie aufsteigen zu lassen um einen Ge schwindigkeitsvorteil zu erzielen Diese Behandlungsroutine sorgt nun f r die Umf rbung des angeklickten Hotwords 5 5 Realisierung der Algorithmenanimationen Die Vorstellung der Algorithmen findet in zwei Ebenen statt siehe Abb 5 10 Auf der er sten Ebene wird der Algorithmus als Ganzes erkl rt Man kann den Algorithmus schrittwei se durchgehen Dabei unterteilt das Programm den Algorithmus in logische Einheiten also KAPITEL 5 DIE ANIMIERTE PRASENTATION 79 z B die einzelnen F lle einer case Kontrollstruktur Die aktuelle Einheit wird rot markiert und in einem Feld rechts vom Algorithmus erkl rt Nun kann man f r jede Algorithmenein heit in die zweite Ebene wechseln in der diese Einheit zeilenweise anhand eines meist alle Einheiten berspannenden Beispiels animiert wird Die Einheit wird hier ebenfalls in einem Feld dargestellt und eine aktuelle Zeile erscheint w hrend der Animation auch in roter Far be Im Anhang C 1 ist anhand der Abbildungen
87. aumlayout berechnen In diesem Abschnitt geben wir den dazu notwendigen Layoutalgorithmus an Dazu ben tigen wir die Definition einiger Begriffe aus der Graphentheorie KAPITEL 6 DIE DYNAMISCHE ERWEITERUNG ASA 100 Definition 6 5 1 Graph Sei V eine endliche Menge Ein Graph ist ein Tupel G V E mit EC VxV V ist die Menge der Knoten E ist die Menge der Kanten F r eine Kante v w E schreiben wir auch v w Die Menge pred v w V w v E ist die Menge aller Vorg nger von v Die Menge succ v w V v w E ist die Menge aller Nachfolger von v Die Gr en dieser Mengen sind indeg v pred v l und outdeg v Isucc v l Der Grad eines Knotens v ist degree v indeg v outdeg v Definition 6 5 2 Pfad Zyklus Sei G V E ein Graph Ein Pfad v w der L nge n ist eine Folge von Knoten vo vn mit vo Vv Va w Vi E f r 0 lt i s n 1 Ein Pfad der L nge 0 hei t leerer Pfad Wir schreiben v w falls ein n 0 existiert so da v gt w Wir schreiben v gt w falls der Pfad v w nicht leer ist Ein Zyklus ist ein Pfad v v Ein Graph G V E ist azyklisch DAG Directed Azyclic Graph falls er keine Zyklen enth lt Definition 6 5 3 Baum Ein gerichteter Baum T ist ein DAG G V E mit n Knoten und n 1 Kanten bei dem ein ausgezeichneter Wurzelknoten vo genannt Apex existiert so da vo
88. automatische Datensegment einschlie lich Stack zugewiesen bekommt F r jede Programmkopie Instanz die sich im Speicher befindet hat dann das System ein eigenes separates Datensegment angelegt Dynamische Bibliotheken hingegen k nnen sich nur einmal im Speicher befinden Ihr Datensegment wird von allen Programmen gemeinsam verwendet Sie definieren keinen eigenen Stack ihre Routinen benutzen grunds tzlich den Stack des jeweiligen aufrufenden Programms F r die bereits erw hnten Segmentregister gilt nun DS SS Daraus ergibt sich da unter Windows Stack Umschaltungen nur bei einem Wechsel zwischen Prozessen stattfinden d h die Aufrufe von Funktionen in dynamischen Bibliothe ken werden vom System nicht als Proze wechsel angesehen 1 5 3 2 Programmierung Die Programmierung von DLL s erfordert einige nderungen im Vergleich zur Program mierung von Windows Programmen Sie besitzen keine Hauptfunktion im herk mmlichen Sinn wie WinMain Deren Analogon bei DLL s hei t LibMain und ist lediglich zu Initialisie rungszwecken notwendig Sie enth lt keine Ereignis Warteschleife da dynamische Biblio theken keine Botschaften zugesendet bekommen Nach der Initialisierung gibt sie die Kon trolle an das System zur ck und verbleibt im Speicher bis das System die DLL wieder aus dem Speicher entfernt Deshalb ben tigen dynamische Bibliotheken einen eigenen Exitcode genannt Window Exit Procedure WEP Diese Funktion wird von Windows aufg
89. baum bleibt erweitert um die nicht kontextfreie Informati KAPITEL 3 SEMANTISCHE ANALYSE 53 on n mlich die Zeiger auf die definierenden Vorkommen die einzige Datenstruktur Man spricht in diesem Fall von einem dekorierten abstrakten Syntaxbaum Die Implementierung der Symboltabelle Deklarations Analysator mu verschiedene Operationen anbieten die die Symboltabelle verwalten Trifft der Analysator auf eine Dekla ration so mu er den deklarierten Bezeichner und einen Verweis auf den entsprechenden Deklarationsknoten im abstrakten Syntaxbaum in die Tabelle eintragen Ebenso mu das ffnen bzw das Schlie en von Bl cken vermerkt werden Trifft der Analysator auf ein an gewandtes Vorkommen eines Bezeichners dann sucht er in der Symboltabelle nach dem entsprechenden Eintrag des definierenden Vorkommens Findet er ihn nicht so gibt er eine Fehlermeldung aus da der betreffende Bezeichner nicht deklariert wurde Findet er ihn so tr gt er die Deklarationsstelle im Knoten des abstrakten Syntaxbaums f r dieses angewandte Vorkommen ein 3 3 2 berpr fung der Typkonsistenz Hierbei wird getestet ob die Operandentypen f r jeden Operator innerhalb eines Aus drucksbaumes zu ihm passen Dieser Test kann in einem bottom up Pass ber den Aus drucksbaum erfolgen und der Modul der dies leistet wird als Typ Analysator bezeichnet Um die berpr fung der Typkonsistenz vgl Anhang B 2 vorzunehmen berechnet der bersetzer die Typen f
90. beispielsweise Navigationstasten mit deren Hilfe man sich durch das Programm be wegt Die Seiten eines Buches m ssen nicht alle dieselbe Gr e haben sie lassen sich an die verschiedenen Ansichtsobjekte in der Gr e anpassen Au erdem K nnen die Seiten in be liebiger Reihenfolge angeordnet werden Die Struktur des Buches bestimmt wie der die Benutzerln durch die einzelnen Seiten navigiert Die eigentliche Seitenwechselsteuerung kann ber verschiedenen Arten verlaufen Meniibefehle e Richtungstasten e Schalter in der Statuszeile e OPENSCRIPT Befehle KAPITEL 2 ASYMETRIX MULTIMEDIA TOOLBOOK 3 0 39 Die maximale Seitengr e betr gt 35 6 x 35 6 cm 14 Zoll im Quadrat weiterhin ist die Zahl der auf einer Seite befindlichen Objekte begrenzt Ein Buch besteht aus einem Hauptfenster oder mehreren Ansichtsobjekten die alle bei Bedarf mit Men leisten und anderen Fensterelementen Systemmen Verkleinerungs kn pfe etc versehen werden k nnen ganz nach dem Zweck dem sie dienen e Dialogfelder e abgetrennte Paletten e Schalterleisten e Statuszeilen e Popup Graphiken oder Textfelder e Logo und Startbildschirm e Fenster in denen andere Buchseiten angezeigt werden Ansichtsobjekte sind also Fenster wie sie in Kapitel 1 definiert wurden Sie bestehen aus einem Rahmen Anwendungsbereich und einem sogenannten Anwendungsfenster das den Teil des Anwendungsbereichs umfa t in dem Seiten und Hintergr nde angezeigt wer
91. ch eine Weile weiterlaufen 4 Minimale Merkanforderungen an die AnwenderInnen Animationen und entspre chende Erkl rungen sollten innerhalb eines r umlichen und logischen Rahmens ablau fen Bei dynamischen Animationen kollidiert dieses Prinzip h ufig mit zu hohem Platzanspruch 5 Highlights Ab und zu k nnen gewisse Teile von Animationen etwas spektakul rer ausfallen als es der reine Informationsgehalt der Animation erfordert Dies dient der Steigerung der Aufmerksamkeit Motivation und Neugier auf sp tere Animationen Der ein oder andere Punkt kann je nach Anwendungsgebiet eine st rkere bzw schw chere Gewichtung erhalten Kommerzielle Pr sentationen auf Messen enthalten oft viele spektaku l re Animationen die nur die wichtigsten Informationen bermitteln sollen wogegen wis senschaftliche Lernsoftware mehr Wert auf didaktisch sinnvolle Animationen legt 4 5 Aufmerksamkeit auf Objekte lenken Gerade bei Lern und Pr sentationssoftware ist es notwendig bestimmte Objekte die bei spielsweise gerade erl utert werden in den Blickpunkt zu stellen Hierf r eignen sich meh rere Techniken die sowohl bei der Oberfl chengestaltung als auch beim Animationsdesign Anwendung finden e Intensit t Eine Ver nderung der Intensit t von Bildpunkten wird bei modernen Farbdisplays nur noch selten verwendet e Markierung Unterstreichen umrahmen mit einem Pfeil bezeigen mit Sonderzeichen indizieren usw e Gr
92. ch schon gedriickt war und 6 die Art des Wechsels 1 Bit die eine zus tzliche M glichkeit bietet eine Unterschei dung zwischen gedr ckt und gel st zu machen 1 2 2 Maus Im Gegensatz zu Tastaturereignissen gilt f r Mausereignisse nicht da sie nur das jeweils aktive Fenster betreffen Sobald der Mauszeiger ein beliebiges auch eventuell inaktives Fenster berstreicht so sendet das System durch Mausereignisse ausgel ste Botschaften an dieses Fenster Um die Eindeutigkeit des Empfangsfensters zu gew hrleisten besitzt jeder Mauszeiger einen sogenannten For Spot einen Zielpunkt der seine exakte Position festlegt Die Art und Weise wie Windows ein Mausereignis in eine Botschaft transformiert h ngt Je dito AL8 PF ele Schaltfl chen Datei Bearbeiten Suchen Ansicht Schrift Hilfe zum Vergr ern und Verkleinern HAE program pascal8 const start 1 var X real e SE x Titelleiste unction Fakultaet nb x ab bezin Men leiste 122 1 then Fakultaet start else Fakultaet X Fakultaet X 1 Fensterrand end begin X Fakultaet 23 end Animierte Semantische Analyse Editor UM 00013 023 Systemmenii Anwendungsbereich Bildlaufleisten Abb 1 2 Das Fenster eines typischen Window Programms KAPITEL 1 MICROSOFT WINDOWS 3 1 9 von der Position des Mauszeigers im Fenster ab Fenster k nnen aus vielen Elementen be stehen Titelleiste Men leiste Fenst
93. chen Analyse 69 KAPITEL 5 DIE ANIMIERTE PRASENTATION 70 Compilerbau D Datei Ansicht IT Seite Hilfe KFG Algorith R R tigkeits und Sichtbarkeitsregeln Die G ltigkeits und Sichtbarkeitsregeln erm glichen es festzustellen auf welches definierende Vorkommen sich ein ange wandtes Vorkommen eines Bezeichners bezieht Diese Aufgabe nennt man die Identifizierung von Bezeichnern 21 In Programmiersprachen die das berladen von Bezeichnern E siehe Abschnitt 9 1 3 erlauben kann es zu einem angewandten Vorkommen mehrere definierende Vorkommen geben Ein Beispiel anhand eines einfachen Pascal Programms program Beispiel i Men leiste var x y integer ar 2 real plucy vai integen ar x integer lt begin A Seitenanzeige 5 bereich begin 41 en 1 i 19 Semantlache Analy c AT Dim Aufipal n deg por Zeigt die qewiinechte tontevtfrcie Grammatik an Statuszeile Kontrolleiste Abb 5 1 Das Hauptfenster der animierten Pr sentation 5 2 Aufbau Die Pr sentation besteht aus verschiedenen Fenstern einem Hauptfenster welches die Er kl rungen und Animationen zur semantischen Analyse auf mehreren Seiten enth lt und f nf Hilfsmittelfenstern die dynamische Erweiterung ausgeschlossen die es den BenutzerInnen erlauben auf bestimmte Informationen permanent zuzugreifen In diesem Abschn
94. cht dem Beispiel aus Abschnitt 3 4 1 Abb C 2 3 Visualisierung der Aufl sung der berladung ANHANG C BEISPIELE F R ANIMATIONEN 149 Editor LAMAS LPT Dies ist ein Kommentar Dieses auch si letrec fac In if n 0 then 1 else n fac n 1 fi end fib In if n 0 or n 1 then 1 else fib n 1 fib n 2 fi end eins In l end Eingabe Parameter Der zu obigem Beispielprogramm generierte abstrakte Syntaxbaum auf 50 skaliert Der Ergebnistyp des gesamten LAMA Ausdrucks ist der Typ int Abb C 2 4 Visualisierung der Typinferenz 1 ANHANG C BEISPIELE F R ANIMATIONEN 150 berechneten polymorphen Typen Standardgr e sind eingeblendet Das Hilfsfenster links zeigt die f r diesen LAMA Ausdruck g ltige initiale Typumgebung Um den Teilbaum passend im Fenster zu plazieren wurden die Werte f r die verschiedenen Separationen zus tzlich verkleinert Abb C 2 5 Visualisierung der Typinferenz 2 ANHANG C BEISPIELE F R ANIMATIONEN 151 T Ansicht Deg Animador ee Ansicht Elngebe s TTT Hilfe 2 Cee 8 EE E Apex unten Skalierungsfaktor 60 Apex unten Skalierungsfaktor 60 Standardwerte f r die Separationen der Knoten Standardwerte f r die Knotenseparationen bis auf eine Vergr erung der Unterbaumseparation Datel Ansicht Eingabe Parameter Animation ssf Zei Hilfe OI 2 Apex unten Skalierungsfaktor 60 Apex
95. chte Fehlerbehandlung anbieten Programme sollten so konzipiert sein da Fol gefehler vermieden werden Falls ein Fehler passiert so hat das Programm den Fehler zu lokalisieren und ein einfaches verst ndliches L sungsschema f r diesen Fehler an zugeben 6 Zulassen da Aktionen r ckg ngig gemacht werden k nnen Soweit berhaupt m glich sollten Aktionen zur ckgenommen werden k nnen Deren Anzahl bzw Umfang h ngt von der Anwendung ab 7 Herstellung von Kausalzusammenh ngen Das Programm sollte keine berraschen den Aktionen durchf hren Die AnwenderInnen sollten sofort erkennen warum sie beispielsweise etwas eingeben m ssen Sie sind die Initiatoren von Aktionen und nicht die Antwortenden unmotivierter Fragen des Programms 8 Wenig Informationen im Kurzzeitged chtnis Es sollte nicht verlangt werden da sich die AnwenderInnen Kodierungen Regeln 0 4 merken m ssen Es ist n tig da solche Informationen permanent z B als Online Hilfe nachschlagbar sind Weiterhin sind in diesem Kontext der Bildschirmaufbau einfach und die Notwendigkeit h ufiger Fensterwechsel klein zu halten Diese Prinzipien m ssen f r jede Umgebung neu interpretiert verfeinert und gegebenenfalls erweitert werden 4 3 Oberfl chen Besonders wenn viele EntwicklerInnen an einem Programm arbeiten m ssen Richtlinien f r die Oberfl chengestaltung geschaffen werden Wie in Abschnitt 4 2 sind die im folgenden genannten Richtlinien ledi
96. d Fenster e GDI Graphik die alle erw hnten Funktionen enthalten Jedes Windows Programm wird beim Laden an die ben tigten Funktionen in diesen DLL s dynamisch gebunden Falls sich die entsprechende DLL noch nicht im Speicher befindet l dt das System sie vorher in den Speicher Um eine dynamische Bindung zu realisieren erzeugt der Compiler bei der Ubersetzung des Windows Programms fiir jeden Aufruf einer Windows Funktion einen Eintrag in einer zus tzlichen Tabelle die der Linker an die zu erzeugende Datei anheftet Dieser Eintrag enthalt jeweils den Namen einer dynamischen Bibliothek und entweder den Namen oder eine Referenznummer der betreffenden Funktion Beim Laden des Programms werden s mtliche Aufrufe von Windows Funktionen auf die tats chlichen Speicheradressen ange pa t Aus diesem Grund sind Windows Funktionen selbst vollst ndig adressiert Sie befin den sich in einem anderen Codesegment Zus tzlich erwarten Windows Funktionen voll st ndige Adressen da dynamische Bibliotheken ein eigenes Datensegment besitzen F r die Beschreibung der vollst ndigen Adressierung ist eigens ein neuer Datentyp far eingef hrt worden Er teilt dem Compiler mit da sich das Objekt in einem anderen Code bzw Da KAPITEL 1 MICROSOFT WINDOWS 3 1 6 tensegment befindet Dementsprechend sind alle Funktionen bis auf eine Ausnahme und deren Parameter in WINDOWS H als far deklariert 1 1 2 Programme DOS Programme rufen das Betriebssystem
97. de CAPS LOCK bzw NUM_LOCK und f r eine Positionsangabe des Carets im Editfenster enthalten Eine Besonderheit ist der eingebaute Syntaxtester Finden die implementierten Parser vgl die dazugeh rigen Grammatiken in Anhang A nach der Bet tigung des entsprechen den Men punkts oder Buttons in der Toolbar einen Fehler im Quelltext so erscheint eine Fehlermeldung ber einen Dialog der die Art und den Ort des Fehlers angibt Zus tzlich markiert der Editor den Fehler im Quelltext direkt leichte Fehlerbehandlung siehe Punkt 5 aus Abschnitt 4 2 6 3 2 3 Eingabemaske Um die Eingabe einer Spezifikation f r das Animationsthema Aufl sung der berladung zu vereinfachen bietet das ASA Tool eine Eingabemaske an siehe Abb 6 5 Die dort einge gebene Spezifikation l t sich in einer ASCH Datei ablegen Uberladung Spezifikationen Operator Typ real x real gt real Einf gen L schen ALE Operatoren Zugeh rige Typen DB int x int gt int real x real gt real Speichern unter Ausdruck 1 2 3 4 Kontexttyp rea Abb 6 5 Dialog fiir die Eingabemaske Der Dialog ist in vier Bereiche aufgeteilt Alle f r die Spezifikation ben tigten Eingaben k nnen in einem einzigen Dialog vorgenommen werden abgeschlossener Dialog vgl Punkt 4 der Prinzipien zum Dialogdesign aus Abschnitt 4 2 Eingabe der berladenen Operatoren Operator Typ In das Textfeld gibt
98. den 2 2 2 Objekte und Eigenschaften ToolBook ist eine objektorientierte Umgebung S mtliche visuellen Elemente einer Anwen dung Schaltfl chen Felder Ansichtsobjekte Seiten Hintergr nde Gruppen etc sind Objekte die jeweils eine Menge von Eigenschaften haben die das Erscheinungsbild und das Verhalten der Objekte festlegen Solche Eigenschaften sind etwa die Position die Gr Be die Farbe oder die Art wie Daten in Felder eingegeben und angezeigt werden Das ToolBook System verf gt ber eine Menge von bereits vordefinierten Objekten die von dem der AutorIn ausgew hlt und in die Anwendung eingebaut werden k nnen Au er den vordefinierten Eigenschaften k nnen von dem der AutorIn auch selbstdefi nierte User Properties eingef hrt werden 2 2 3 Autoren und Leserebene Wir haben erw hnt da ToolBook Autoren und Lerneroberfl che vereint vgl Abb 2 2 Anwendungen werden auf der sogenannten Autorenebene entwickelt auf der die verschie denen Zeichenhilfsmittel und Programmierwerkzeuge zur Verf gung stehen Hier lassen sich die gew nschten Objekte erstellen und Programme in OPENSCRIPT schreiben Die BenutzerInnen einer ToolBook Anwendung f hren diese auf der Leserebene aus In diesem Modus stehen alle f r die Ausf hrung der Anwendung erforderlichen Funktionen zur Verf gung aber nicht die Programmierwerkzeuge Auch w hrend der Programmentwicklung kann jederzeit zwischen Autoren und Leser ebene umgeschaltet werde
99. der character Typbezeichnung BOOL_TYPE bool oder boolean Typbezeichnung INT_TYPE int oder integer Typbezeichnung REAL_TYPE real Typbezeichnung 115 ANHANG A GRAMMATIKEN A 3 2 Grammatik overload_spec operator_part operator_types operator op_id type_list type par_type_list types operator part expression part type H OPS_BEGIN operator_types OPS END H operator operator types operator op_id type list 5 NOT AND H 96 4 HM K 5 type type_list type H par type list gt types 5 types par type list types H CHAR TYPE BOOL TYPE INT_TYPE REAL_TYPE 116 Operator Regeln ANHANG A GRAMMATIKEN type part TYPE_BEGIN types TYPE END 5 expression part EXPR_BEGIN expression EXPR END 5 expr list expression expr list expression gt expression simple_expr expression expression expression lt expression expression gt expression expression ess expression expression ss expression expression ez expression IDE IDE expr_list C expression expression expression expression expression expression expression expression OR expression expression AND expression NOT expression expression expression expression P expre
100. der Layoutparameter f r die visualisierten B ume 6 3 2 1 Online Hilfe Alle Komponenten der Animation der semantischen Analyse verwenden die gleiche Online Hilfe Wir haben sie bereits in Abschnitt 5 2 2 1 kennengelernt 6 3 2 2 Editor Der ASA Editor ist in allen Animationsthemen au er dem Thema der Aufl sung der berladung verf gbar Mit seiner Hilfe lassen sich die Eingabeprogramme in den Sprachen PASCAL oder LAMA eingeben anzeigen ver ndern speichern und syntaxtesten Er wird vom Hauptfenster aus eingeblendet und bleibt solange als oberstes Fenster sichtbar bis er manuell wieder ausgeblendet wird vgl Abb 6 4 Der Editor verf gt ber alle f r Windows Editoren blichen Editierm glichkeiten des Textes einschlie lich Druckausgabe Cut amp Paste Suchen bzw Ersetzen und Schriftarten Editor PASCAL8 PPT Datei Bearbeiten Suchen Ansicht Schrift ala Cea ai Hal program pascal8 const start 1 var X real function Fakultaet X int int egin if X lt 1 then Fakultaet start else Fakultaet X s Fakultaet X 1 end begin X Fakultaet 23 end Animierte Semantische Analyse Editor NUM 100013 023 Abb 6 4 ASA Editor KAPITEL o DIE DYNAMISCHE ERWEITERUNG ASA 92 auswahl Diese Funktionalit ten sind ber das Editor Men bzw die Editor Toolbar abruf bar In der Statuszeile sind neben den gewohnten Hilfetexten auch Felder ber die Tastatur zust n
101. dern Die Benutzung der Regler legt die verschiedenen Abst nde in logischen Einheiten i relativ zur gew hlten Skalierung zwischen den Knoten in Abh ngigkeit ihrer Ver wandtschaft neu fest z B der Abstand zwischen Geschwisterknoten Diese Freiheit erleichtert die Unterscheidung der Knotenattribute z B Typ Bei einem sehr eng i zusammenstehenden Baum berschneiden sich u U die Knotenattributierungen zweier Knoten Durch das Auseinanderziehen des Syntaxbaumes l t sich dieses Problem schnell beheben Schlie lich besteht die M glichkeit den Baum im Bereich i von 25 bis 400 zu skalieren Vergleiche zu diesem Thema auch Abbildung C 2 6 in Anhang 2 Animationsgruppe Animierter Wechsel des Baumlayouts bewegen sich die Knoten aus Effizienzgr nden zu schwarzen Rechtecken reduziert zu ihren neuen Positionen im Animationsbereich Diese Animation ist dahingehend motiviert da die nderung der Topologie des Baumes leichter nachzuvollziehen ist Im VCG Tool wurde diese Idee ebenfalls realisiert siehe San96 ndert man das Baumlayout mit den in der Layoutgruppe aufgef hrten Mitteln so Buttons Ok Akzeptiert die getroffenen Einstellungen und f hrt die Anderungen aus Abbrechen Ignoriert die getroffenen Einstellungen und f hrt keine Anderungen aus Vorgabe Setzt alle Einstellungen auf die Vorgabewerte zur ck Riickname von Aktionen vgl Punkt 6 aus Abschnitt 4
102. dert Das ist bei Codesegmenten Ressourcen usw der Fall nicht aber bei Datensegmenten Windows ordnet die Segmente im globalen Heap wie in Abb 1 3 gezeigt an Beim Bele gen von Speicherplatz fiir fixe Segmente versucht das System zuerst niedrige Spei cheradressen zu vergeben Findet sich im Speicherbereich niedriger Adressen kein Block der ausreichend gro ist so verschiebt Windows bewegliche Segmente in Speicherbereiche h herer Adressen Erst wenn dann immer noch nicht gen gend Speicher vorhanden ist werden als zus tzlich entfernbar markierte Segmente aus dem Speicher gel scht Die Suche nach freien Bl cken f r verschiebbare Segmente beginnt oberhalb und endet unterhalb der entfernbaren Segmente L t sich in diesem Fall kein Block ausreichender Gr e finden l scht das System entfernbare Segmente aus dem Speicher schichtet die verbleibenden Segmente um und kann den dadurch freigewordenen Speicherplatz neu bele gen oberes Ende des lokalen Heaps und oberes Ende von DGROUP dyn entfernbare Blocks freier Speicher bewegliche Blocks 1 fixe Blocks Stack nicht erweiterbar unteres Ende des lokalen Heaps Abb 1 4 Die Organisation des lokalen Heaps aus Pet92 Der lokale Heap eines Windows Programms vgl Abb 1 4 besteht mindestens aus einem automatischen Datensegment welches Daten und Stacksegment miteinander vereint Das oberes Ende von DGROUP lokaler Heap Stack uninitiali
103. die Zwischenablage und das Einf gen aus der Zwischenablage Listenfenster Fensterklasse listbox Sie erm glichen die Auswahl von ein oder mehreren Elementen die als Textstrings spaltenweise dargestellt werden Eine Selektion eines Elements wird farbig markiert KAPITEL 1 MICROSOFT WINDOWS 3 1 10 Kombielemente Fensterklasse combobox Diese kombinieren Listenfenster mit Text oder Eingabefeldern Bildlaufleisten Fensterklasse scrollbar Sie unterscheiden sich von ihren verwandten Vorkommen als Fensterbestandteil am rechten oder linken Fensterrand dadurch daB sie an beliebiger Stelle im Anwendungsbereich plaziert werden k nnen Sie k nnen als horizontale und vertikale Bildlaufleisten definiert und in ihrer Breite bzw Hohe vari iert werden Textfelder Fensterklasse static Solche Kontrollelemente geben lediglich einen Text for matiert auf dem Bildschirm aus Parent Fenster und Kontrollelement k nnen sich gegenseitig Botschaften senden Die Bot schaft der Kontrollelemente an die Window Prozedur ihres Parent Fensters ist WM MAND Dabei enth lt wParam die ID des Kontrollelements Der 32 Bit Parameter Param besteht aus zwei Teilen dem 16 Bit niederwertigen LowWord und dem ebenfalls 16 Bit h herwertigen HighWord LowWord informiert tiber den Fenster Handle des Kontrollelements und HighWord iiber den Aktionscode der die Art der Aktion angibt Diese kann beispiels weise ein Klick auf einen Knopf oder das Eingeben eines
104. dung durch die Ausgabe der Botschaft WM_DDE_ INITIATE unter der Angabe von Anwendung und Thema auf Eine sich als Server erkl KAPITEL 1 MICROSOFT WINDOWS 3 1 29 rende Anwendung reagiert mit dem Senden einer Best tigungsbotschaft WM_DDE_ACK an den Client WM_DDE INITIATE Anwendung Thema Client Server WM_DDE Nun gibt der Client eine Anfrage WM DDE REQUEST ber ein spezifisches Datum des gevvahlten Themas aus worauf der Server das gewiinschte Datum mit der Botschaft WM_DDE_DATA zuriickliefert wenn er dariiber verfiigt WM_DDE_REQUEST Datum Client Server WM_DDE_ DATA Datum Falls der Server nicht ber das Datum verf gt so best tigt er die Anfrage des Client mit einer Negation WM_DDE_REQUEST Datum Client Server WM_DDE_ACK negativ gt Dieses Wechselspiel zwischen Anfragen des Client und Reaktionen des Servers kann belie big oft wiederholt werden bis eines der beteiligten Programme die Verbindung durch das Senden der Botschaft WM_DDE_TERMINATE beendet Als Best tigung erfolgt ein R cksenden dieser Botschaft durch das andere Programm WM_DDE_TERMINATE Client Server WM DDE TERMINATE Der Aufbau einer hei en Verbindung ist identisch zu dem einer kalten Verbindung Nachdem ein Server best tigt hat bem ht sich der Client um ein Da
105. e Programm zu keinem Erfolg gef hrt Andererseits ist eine direkte Programmierung des Windows API wie bei ASA durchgef hrt f r das ganze Pro gramm zu komplex und zeitaufwendig Es w re sowohl f r die EntwicklerInnen als auch f r die Anvvenderlnnen besser wenn die gesamte Animation der semantischen Analyse mit einem einzigen Tool erstellt worden w re Dieses Tool sollte die Eigenschaften und St rken von Autorensystemen MTB 3 0 mit denen von Programmen zur Animationsgenerierung verbinden Vielleicht erf llt ein Nachfolgeversion von MTB 3 0 diesen Anspruch Der Autor m chte an dieser Stelle nicht unerw hnt lassen da ein gro er Teil der Ent wicklungszeit des Programms mit dem Abw gen der in Kapitel 4 vorgestellten Prinzipien zur Erstellung von Animationssoftware verwendet wurde Es gibt leider kein Patentrezept daf r wie man z B die Benutzeroberfl che designen mu oder Animationen entwirft Ver wendet man zuviel Farbe oder zuwenig Hat man zu viele Objekte auf einer ToolBook Seite plaziert oder wirkt eine Seite zu langweilig etc Letztendlich spielen viele verschiedene eventuell sich gegenseitig ausschlie ende Faktoren eine Rolle bis hin zum pers nlichen Ge schmack und Vorlieben bzw Abneigungen in der Darstellung W hrend der Entwicklung unseres Programms ist der 32 Bit Nachfolger von Windows 3 1 Windows 95 erschienen Die Animation der semantischen Analyse ist als 16 Bit Anwendungen ohne Probleme darauf lauff hig Eine
106. e von der Datei exportierten Funktionen 5 die Relozierungsdaten f r die einzelnen Segmente Wir wollen uns nur denjenigen Abschnitten zuwenden die im Zusammenhang mit DLL s von Belang sind Im Dateikopf 2 findet sich u a ein Hinweis darauf da es sich bei der Datei um eine DLL handelt In Windows Programmen ist dort der Bezeichner MODULE eingetragen in DLL s LIBRARY Abschnitt 4 definiert die exportierten Funktionen also die Funktionen die anderen Programmen zur Verf gung gestellt werden Jede dieser Funktionen ist mit einer Ordi nalzahl als Kennziffer Referenznummer assoziiert Der Aufruf einer solchen Funktion z B die Zeichenoperation Rectangle aus GDI EXE durch ein beliebiges Programm oder auch einer DLL importiert die entsprechende Funktion Alle zu importierenden Funktionen wer den in Abschnitt 5 mit dem Namen des Bibliotheksmoduls aufgelistet L dt das System ein Programm so berpr ft es diesen Abschnitt 5 und bringt auch die angeforderten DLL s in den Speicher falls sie sich dort noch nicht befinden Windows pa t die Aufrufe der DLL KAPITEL 1 MICROSOFT WINDOWS 3 1 32 Funktionen im importierenden Programm an die tats chlichen Speicheradressen an indem ein Adressierungsvorspann f r jede importierte Funktion erzeugt wird der auf das Code segment der DLL zeigt vollst ndige Adressierung mit far Zeigern In Abschnitt 1 1 3 haben wir gesehen da jedes Windows Programm mindestens ein Datensegment das
107. echnungsvorg nge vorzunehmen und dynamisch Objekte zu erzeugen Die sehr vielf lti gen M glichkeiten Verbindungen zu anderen Programmen herzustellen Datenbanken an zusprechen und Multimedia Elemente einzuf gen lassen darauf schlie en da die Entwick lerInnen von Asymetrix diesem Anspruch eine geringere Gewichtung beigemessen haben KAPITEL 2 ASYMETRIX MULTIMEDIA TOOLBOOK 3 0 46 Das Hauptaugenmerk lag hier in der leichten Bedienbarkeit und schnellen Erstellung allge meinerer weniger spezieller Software was auch den g ngigen Anforderungen an Autoren systeme entspricht Kapitel 3 Semantische Analyse Ubersetzer von Programmiersprachen sind in verschiedene Module zerlegt die jeweils eine bestimmte Teilaufgabe bernehmen Alle Teilaufgaben lassen sich in eine Analysephase und in eine Synthesephase gruppieren In der Analysephase die im Idealfall von der Zielsprache und der Zielmaschine unabh ngig ist wird die syntaktische Struktur und die statische Se mantik einer Sprache berechnet Die statische Semantik ist der Teil der semantischen Ei genschaften eines Programms die zur Ubersetzungszeit berechnet werden k nnen also ohne die Eingabedaten zu betrachten Die Synthesephase erh lt die Ausgabe der Analyse phase als Eingabe und erzeugt daraus das Zielprogramm siehe Abb 3 1 Teilweise sind die Aufgaben eines Ubersetzers Erkennungsprobleme fiir bestimmte Ty pen von Grammatiken Diese Erkennungsprobleme lassen sich durch Aut
108. eck mit rechtwinkligen Ecken Ellipse Ellipse RoundRect Rechteck mit abgerundeten Ecken Chord Kreisbogen auf der Au enlinie einer Ellipse und Verbindung der Endpunkte durch eine Sehne KAPITEL 1 MICROSOFT WINDOWS 3 1 21 Funktion Figur Pie Kreisbogen auf der Au enlinie einer Ellipse und Verbindung der Endpunkte mit dem Mittelpunkt Kuchenstiick Polygon Figur mit einer beliebigen Anzahl von Seiten PolyPolygon beliebige Anzahl von Figuren mit beliebiger Anzahl von Seiten 1 4 2 1 Betroffene Gerateattribute Ger teattribute werden innerhalb von Programmen verschieden oft ver ndert W hrend beispielsweise das Zeichenstift Attribut recht h ufig ge ndert wird bleiben andere Attribute eher fest etwa das verwendete Koordinatensystem Ebenso werden die Ger teattribute bei der Verwendung der GDI Zeichenfunktionen unterschiedlich in Anspruch genommen Die Funktion SerPixel erwartet als Parameter neben dem Handle zu einem Ger tekontext die Koordinaten des einzuf rbenden Pixels und die explizite Angabe eines RGB Wertes Damit ist deren Funktionalit t vollst ndig beschrieben Anders ist es bei der Darstellung der Linien und der R nder von ausgef llten Fl chen Hier sind f nf Attribute des Ger tekontextes zust ndig Zeichenposition Dieses Attribut wird nur von LineTo ber cksichtigt Zeichenstift Ein Zeichenstift auch Linien F llmuster steht f r eine ganze Datensamm lung Darunter fallen die Zeichenf
109. edingt schwarzwei oder in 16 Farben definiert werden Windows stellt eine Menge von Stan dardikonen und cursorformen zur Verf gung die durch selbstdefinierte Ressourcen ersetzt werden k nnen String Ressourcen dienen dazu die bersetzung von Programmen in andere Sprachen zu vereinfachen Da Men s und Dialoge auch als Ressourcen in der Ressourcen Datei an gegeben werden kann man alle Texte die ein Programm standardm ig verwendet in der Ressourcen Datei zusammenfassen Die bersetzung erfolgt nur noch in einer nderung einer einzigen Datei der Ressourcen Datei String Ressourcen haben bei sachgem er Verwendung noch einen weiteren Vorteil Es l t sich gegen ber der Definition von Strings im Quelltext Speicherplatz sparen Hierbei macht man sich die Art der Speicherverwaltung zunutze Das System fa t jeweils 16 Strings der Stringtabelle der Ressource Datei zu ei nem separaten Segment zusammen Dies geschieht in Abh ngigkeit der Kennziffern welche die Strings benennen Von 0 bis 15 bezeichnete Strings Kommen ins erste Segment die mit 16 bis 31 bezeichneten ins zweite Segment usw Wird ein String ben tigt so l dt das Sy stem das gesamte Segment das den String enth lt in den Speicher Versieht man die Strings mit Kennziffern deren Gruppierung der Logik des Programms oder einem Modul entspricht und somit eventuell gleichzeitig ben tigt wird so wird diese Gruppe auf einmal in den Speicher geladen Bei l ngerer Nichtverwend
110. ehnung von einem Pixel Wir haben folgende Anforderungen an das Aussehen dieses Polygonzugs gestellt e Er sollte keine Baumkanten bzw Knoten schneiden oder ber hren e Es sollte immer nur ein Polygonzug gleichzeitig angezeigt werden Damit ersparen wir es uns mehrere Pfeile so zu berechnen da sie sich m glichst wenig kreuzen Au er dem erh ht dies die bersichtlichkeit im Animationsbereich e Sind Quell und Zielknoten nicht benachbart und befindet sich zwischen ihnen ein Teilbaum dessen Bl tter auf einer tieferen Ebene liegen als die Ebenen des Quell oder Zielknotens so sollte der Polygonzug unter diesem Teilbaum herumgef hrt wer den Abb 6 16 Markierung eines definierenden Vorkommens durch einen Polygonzug KAPITEL 6 DIE DYNAMISCHE ERWEITERUNG ASA 106 e Der erzeugt Polygonzug sollte m glichst kurz sein aber dennoch sthetisch wirken Der Algorithmus berechnet diesen Polygonzug der durch ein Feld von Koordinatenpunk ten repr sentiert wird in vier Schritten 1 Berechne den tiefsten Level Ebene unter dessen Knoten der Zug horizontal verlau fen kann ohne eine Kante bzw einen Knoten zu schneiden oder ber hren 2 Berechne den Teilzug von Quellknoten s zu dem in 1 ermittelten Level 3 Berechne den Teilzug von Zielknoten zu dem in 1 ermittelten Level 4 Sortiere den in 3 gewonnenen Polygonzug in umgekehrter Reihenfolge und erweite re den Polygonzug in 2 um diesen Teilzug Verbindet man
111. ehrere Dokumente gleichzeitig verwalten k nnen Die Animation der semantischen Analyse besteht aus zwei unabh ngigen Programmen die animierte Pr sentation und das ASA Tool welche durch ein eigenes DDE hnliches Protokoll und eine DLL miteinander Kommunizieren Weiterhin verwendet das ASA Tool eine frei verf gbare DLL f r die 3D Effekte innerhalb von Dialogen ASA benutzt die Zwi schenablage f r Cut amp Paste Vorg nge im Editor und f r das Kopieren der Animationsaus gabe zur Weiterverarbeitung z B Druck in externe Graphikprogramme MS Paintbrush 1 5 1 Zwischenablage Windows erm glicht mit der Zwischenablage clipboard einen einfach zu handhabenden Austausch von Daten zwischen verschiedenen Anwendungen Sie stellt einen einzigen Spei cherbereich variabler Gr e dar der allen Windows Programmen gemeinsam zur Verf gung steht Die Zwischenablage wird von jedem Programm verwendet das Operationen wie Ausschneiden und Kopieren Transfer in die Zwischenablage oder Einf gen Transfer aus der Zwischenablage benutzt Der Inhalt der Zwischenablage steht dann dem Programm selbst oder anderen Windows Programmen f r die weitere Bearbeitung zur Verf gung KAPITEL 1 MICROSOFT WINDOWS 3 1 26 Damit sie fiir eine stabile Daten bertragung verwendbar ist definiert Windows mehrere standardisierte Datenformate clipboard format CF_TEXT Ein nullterminierter String der Zeichen im ANSI Code enthalt und dessen ein zelne Ze
112. eht aus der Botschaft VVM DDE DATA mit dem VVert NULL VVM DDE DATA Datum NULL Client Server WM DDE ACK Nachdem der Client auf eine Verinderung der Daten aufmerksam gevvorden ist kann er sie zu einem beliebigen sp teren Zeitpunkt ber den f r statische Daten bekannten Mechanis mus abfragen WM_DDE_REQUEST Datum Client Server WM_DDE_DATA Datum gt Das Aufheben der Signalsendungen und die Beendigung der Konversation geschieht wie bei der hei en Verbindung mittels WM_DDE_UNADVISE und WM_DDE_TERMINATE Zusammen mit Windows 3 1 hat Microsoft eine dynamische Bibliothek mit Namen DDEML DLL ausgeliefert die das erl uterte klassische DDE durch ein Makropaket ver einfacht DDEML beinhaltet insgesamt 27 Funktionen und 16 Transaktionstypen deren KAPITEL 1 MICROSOFT WINDOWS 3 1 31 Erkl rung den Rahmen dieser Arbeit sprengen w rde An der internen Funktionsweise n dert sich durch die Verwendung dieser Bibliothek nichts siehe Pet92 1 5 3 DLL Im Rahmen der konventionellen Programmierung sucht der Linker im Quelltext nach Biblio theksfunktionen und bindet die entsprechenden Routinen aus einer statischen Bibliothek LIB hinzu Ein anderes Konzept verfolgt Windows bei dynamischen Bibliotheken DLL Dynamic Link Library Erst zur Laufzeit werden die dynamischen Bibliotheken bei Bedarf in den Haupts
113. eich von konkreter und abstrakter Syntax anw hlbar Koloriert die einzelnen Knoten des konkreten Syntaxbaums in Abh ngigkeit davon ob es sich bei ihnen um Terminale oder Nichtterminale handelt und ob sie im gleichzeitig ange zeigten abstrakten Syntaxbaum weggelassen werden k nnen oder nicht Typkonsistenz Nur bei der Uberpriifung der Kontextbedingungen erlaubt Es wird ein Typ priifen konsistenzcheck aller Ausdrucksunterb ume des aktuellen Syntaxbaums durch gef hrt Hilfe Menii Inhalt Ruft die Online Hilfe mit ihrem Inhaltsverzeichnis auf Zeigt die Hilfethema suchen Dialogbox in welcher man mittels Schliisselwort das ge w nschte Thema aufrufen kann Ruft die Online Hilfe zur Compilerbau Theorie auf Ruft die Online Hilfe zur Erkl rung der Bedien und Steuerungselemente auf Ruft die Online Hilfe zum Anzeigen des aktuell verwendeten Algorithmus an Nicht verf gbar beim Vergleich von konkreter und abstrakter Syntax Zeigt die Versionsnummer des ASA Tools an Die Toolbar erm glicht einen schnelleren Zugriff auf die wichtigsten Funktionalitaten als eine Men auswahl Ihre Funktionalit t bildet also eine Untermenge der Funktionalit t des sich dar ber befindlichen Men s Das Auftreten der Toolbar Elemente ist vom gew hlten Animationsthema abh ngig und pa t sich dementsprechend daran an Aufgrund der zur Men leiste redundanten Funktionalit t verzichten wir hier auf eine detaillierte Erk
114. eim Empfang der Botschaft WM_PAINT neu ausgegeben werden kann Ist das ung ltige Rechteck kleiner als der ganze Anwendungsbereich so zeichnet das System automatisch nur den Bereich des ung ltigen Rechtecks und setzt es auf Null womit auch der Fenster inhalt als g ltig deklariert ist Es gibt immer nur genau ein ung ltiges Rechteck im Anwen dungsbereich eines Fensters Tritt der Fall ein da die Warteschlange mehrere aufeinander folgende Botschaften dieses Typs enth lt so fa t sie das System zu einer einzigen zusam men und das ung ltige Rechteck wird so neu berechnet da es alle Bereiche berdeckt 1 4 1 GDI Die Ausgabe von Text und Graphikelementen im Anwendungsbereich eines Fensters erfolgt ber die Funktionen des GDI Graphics Device Interface Eines der Hauptziele des GDI KAPITEL 1 MICROSOFT WINDOWS 3 1 18 ist eine m glichst weitgehende Ger teunabh ngigkeit die sich nicht auf Ger te einer einzi gen Kategorie beschr nkt Es soll also nicht nur m glich sein Unabh ngigkeit von unter schiedlichen Bildschirmadaptern und ihren jeweiligen Treibern zu erreichen sondern bei spielsweise auch Unabhangigkeit von Bildschirmadaptern und Druckern Deshalb sind Zei chenoperationen in erster Linie Routinen des GDI 1 4 1 1 Eigenschaften Zwischen Programm und GDI findet eine bidirektionale Kommunikation statt Das Anwen dungsprogramm kann nicht nur das GDI dazu anweisen eine Zeichenoperation auszuf h ren sondern a
115. ein Lerner mit dem Lernprogramm arbeitet Vereinte Autoren und Lerneroberfl che Hier fallen Autoren und Lerner oberfl che zusammen Durch entsprechende Modi l t sich zwischen ihnen unter scheiden 2 1 2 MTB 3 0 als ein Vertreter von Autorensystemen Multimedia ToolBook 3 0 in dieser Arbeit kurz MTB oder ToolBook ist eine objektori entierte Oberfl che deren Autoren und Lerneroberfl che zusammenf llt Es geh rt zur Gruppe der kombinierten Autorensysteme Sowohl zum Erstellen als auch zum Ausf hren von Anwendungen bietet ToolBook eine interaktive Umgebung ToolBook stellt Zeichenmittel zur Verf gung mit deren Hilfe die visuelle Benutzerober fl che einer Anwendung erstellt werden kann Durch die mitgelieferte Programmiersprache OPENSCRIPT legt der Autor die Eigenschaften und das Verhalten der einzelnen Objekte fest ToolBook Runtime Version wird auch zum Ausf hren einer Anwendung verwendet Dabei steuert ToolBook die Interaktion zwischen der Anwendung und dem Windows System etwa das Verarbeiten von Mausklicks vgl Abb 2 1 ToolBook bietet durch Multimedia eine zus tzliche M glichkeit Informationen effizient zu bermitteln Unter Multimedia versteht man allgemein Informationen in unterschiedlichen Formaten Text Graphik Ton Video und Animationen Um Multimedia in ToolBook Anwendungen zu integrieren sind folgende Elemente bereitzustellen Multimedia Quellen Darunter versteht man Media Dateien z B Kla
116. eingabe falls die ver ndert wurde i Zeigt die Quelldatei speichern Dialogbox mit deren Hilfe sich eine neue Eingabe datei oder eine vorhandene sich unter neuen Namen speichern l t den Inhalt des mittels Mausklick ausgevvahlten sichtbaren Animationsbe reichs in die Zwischenablage Eine eingeblendete Dialogbox bietet den Start von MS Paintbrush zur eventuellen graphischen Weiterverarbeitung oder zum Ausdrucken ian Beendet das ASA Tool und gibt den Fokus an die animierte Pr sentation zur ck i falls dieses gestartet wurde Ansicht Menii Toolbar Statusbar Hintergrundfarbe Blendet die Toolbar Schalterleiste ein oder aus Blendet die Statuszeile ein oder aus ffnet eine Dialogbox mit deren Hilfe sich in Abh ngigkeit von dem aktuellen Ani mationsthema zus tzliche Fenster einblenden z B ein Fenster das die initiale Typ umgebung f r einen polymorph getypten LAMA Ausdruck anzeigt oder sich die Knoten des Syntaxbaumes mit Attributen versehen lassen Animationsfenster Andert die Hintergrundfarbe im Animationsbereich Dazu wird eine Farbwahl Dia i logbox eingeblendet mit der sich auch Farben beliebig mischen lassen solange die Graphikkarte bzw deren Treibersoftvvare dieses zul t Diese Funktion ist be sonders sinnvoll wenn man sich die Inhalte des Animationsbereichs in die Zwi i schenablage kopieren will um sie eventuell auszudrucken In diesem Fall
117. eit des aktuellen Zustands und der aktuellen Umgebung den entsprechenden Typterm und den neuen Zustand func analyse k node A assum s state tuple of typeExp and state begin case symb k of VAR return newTypelnst k A 5 CON return newTypelnst k A s APP begin symb k e e t 51 analyse ei A s h 52 analyse ez A s 13 53 newTypeVar s O unify ty gt 13 ti sa extendSub O 53 14 substitute O ts return t4 54 end COND begin symb k if e then else e3 t si analyse ei A s unify ti bool h 52 analyse e2 A extendSub o S 13 53 analyse e3 A s Oz unify tz t3 s4 extendSub 62 53 t substitute sub sa t3 return t4 54 ANHANG B ANIMIERTE ALGORITHMEN 129 end LET begin symb k let yi 13 in eo So S S1 s Aq for i 1 to n do t si analyse ei A si A addGenAssum vi ti A1 od to So analyse eo A1 Sn return fo so end LETREC begin 0 s for i 1 to n do ti 51 newTypeVar s A addAssum vi t A od As A t s 1 for i 1 ton do t s analyse ei s unify t lookup vi A1 s2 extendSub 6 s to substitute O tr Az addGenAssum Vi ta Ar od to So analyse eo 52 return fo
118. emente auf Zeigt die Versionsnummer der animierten Pr sentation an 5 2 1 2 Seitenanzeigebereich Im Seitenanzeigebereich spielt sich das Pr sentations und Animationsgeschehen ab Dort werden alle Lerninhalte interaktiv erkl rt d h der die BenutzerIn kann sich Beispiele kleine Animationen etc anzeigen lassen Alle anklickbaren Schaltfl chen Textelemente so genannte Hotvvords usw sind blau eingef rbt bzw besonders gekennzeichnet Bei gro en Animationen wird auf eine oder mehrere gesonderte Seiten umgebl ttert Abbildung 5 2 zeigt die Seitenorganisation im Hauptfenster Fast alle Seiten sind vom Inhaltsverzeich nis aus erreichbar und umgekehrt Ist ein Lerninhalt nicht auf eine Seite beschr nkt so KAPITEL 5 DIE ANIMIERTE PRASENTATION Animation auf einer Seite Abb 5 2 Die Struktur der Seitenorganisation im Hauptfenster 72 KAPITEL 5 DIE ANIMIERTE PR SENTATION 73 l t sich von der Inhaltseite aus nur auf die jeweils erste Seite springen Manche Seiten ge statten es zu Animationsseiten zu wechseln oder die dynamische Erweiterung aufzurufen 5 2 1 3 Kontrolleiste Die Kontrolleiste besteht aus mehreren sich an die jeweilige Situation anpassenden Elemen ten Im Standardzustand sieht sie wie in Abbildung 5 3 gezeigt aus Einige Elemente sind zu den Men funktionen redundant und sind aus dem Grund der Erleichterung der Bedienung in die Kontrolleiste eingef gt worden flexible Eing
119. en Nachteil da manche angewandten Vorkommen von Bezeichnern in inkorrekten Program men nicht richtig identifiziert werden Der Algorithmus zur Identifizierung der Bezeichner Deklarations Analysator ist in Abschnitt 3 3 1 erkl rt proc analyze_decl k node proc analyze_subtrees root node begin for i 1 to descs root do analyze_decl root i od end begin case symb k of 118 ANHANG B ANIMIERTE ALGORITHMEN 119 block begin enter block analyze_subtrees k exit_block end decl begin analyze_subtrees k foreach hier dekl Bezeichner id do enter id id f k od end appl_id gspeichere search id id an k otherwise if k kein Blatt then analyze_subtrees k fi od end Die Hauptfunktion analyze_decl verwendet mehrere Operationen zur Vervvaltung einer Symboltabelle Deren Implementierung sei wie folgt realisiert enter block vermerkt das ffnen eines neuen Blocks Die Prozedur create_symb_table kreiert eine leere Symboltabel le exit_block setzt die Symboltabelle auf den Stand zur ck den sie vor dem letzten enter_block hatte proc block begin if Schachtelungstiefe ist 0 then create symb table fi kellere neuen Eintrag f r den neuen Block end proc create_symb_table begin kreiere leeren Keller von Blockeintr gen end proc block begin foreach Deklarationseintrag des aktuellen Block do l sche Eintrag od entferne Blockeintrag aus dem Keller end Die n
120. en welches f r alle Animationen Anwendung findet Es soll m glichst vielseitig wartungsfreundlich und beliebig erweiterbar sein Unsere Realisierung ist in Abbildung 5 11 konzeptionell dargestellt Die dunkelgrau hin terlegten Bereiche beschreiben Skripte von Objekten und die hellgrauen Bereiche entweder globale Variablen sogenannte Systemvariablen oder Dateien Die K stchen innerhalb der Skriptenbereiche symbolisieren Behandlungsroutinen Unter den eingezeichneten Kanten welche die Behandlungsroutinen verbinden hat man sich das Senden von Botschaften vor zustellen Das dick umrandete K stchen ist der Einstiegspunkt Wechselt der die AnwenderIn zu einer Animationsseite dann sendet das ToolBook System eine enterPage Botschaft die in einer entsprechenden Behandlungsroutine im Sei tenskript abgefangen wird Von dort aus wird eine Botschaft zu der Behandlungsroutine nit im selben Skript geschickt Dies ist der Einstiegspunkt in der obigen Konzeptbeschreibung Init besetzt nun das Feldelement svMax pageNumber mit der Anzahl der Animationsschrit te f r diese Animation und initialisiert svAkt pageNumber mit 0 Desweiteren werden ber verschiedene Botschaftssendungen u a die Kontrollkn pfe in der Kontrolleiste initialisiert und die Systemvariable f r die Geschwindigkeit svSpeed entweder mit der Standardvorgabe 0 5 oder mit einem in der INI Datei gespeicherten Wert besetzt Ver ndert man die Ge KAPITEL 5 DIE ANIMIERTE PRASENTATION
121. en Bezeichner als Name f r ein Objekt in das Programm einf hrt e Hin definierendes Vorkommen eines Bezeichners ist sein Vorkommen in seiner De klaration Es gibt jedoch Ausnahmen in denen nicht jedes Vorkommen in einer Dekla ration auch ein definierendes Vorkommen ist beispielsweise ein Vorkommen inner halb einer rekursiven Deklaration e Das Komplement der definierenden Vorkommen bezeichnet man als die angewand ten Vorkommen eines Bezeichners e Bl cke sind Vorkommen von Scope Konstrukten die die G ltigkeit eines Bezeich ners im Programmtext begrenzen Unter Scope Konstrukten versteht man das Vor kommen bestimmter Elemente einer Programmiersprache etwa Prozedurdeklaratio nen Blockkonstrukte oder Moduln e Der Typ eines Objekts bestimmt seine Verwendungsm glichkeit zur Laufzeit des Programms 3 1 3 Konkrete vs abstrakte Syntax Die Eingabe der semantischen Analyse ist ein durch die Syntaxanalyse erstellter Baum der die konkrete oder die abstrakte Syntax repr sentieren kann Die konkrete Syntax wird durch die der Sprache zugrundeliegende kontextfreie Grammatik dargestellt Sie bewirkt da der entsprechende Syntaxbaum zum Beispiel alle Schl sselw rter und viele Nichttermi nale enth lt die f r die weitere Analyse berfl ssig sind Aus diesem Grund benutzen bersetzer zu Darstellung der syntaktischen Struktur des Programmtextes die abstrakte Syntax In ihr werden alle unn tigen Teile eliminiert die KAPITEL 3 S
122. en haben als Ziel einerseits e das Budget andererseits e die Zeitplanung Schedules und e die Machbarkeit zu beachten 4 2 Design von Dialogen Unter Dialogdesign sei nicht nur die Gestaltung von Dialogfenstern verstanden sondern alle Bereiche in denen AnwenderInnen mit dem Programm interagieren k nnen also z B auch die Men f hrung Kommandosprachen Erkl rungen des Programms etc 1 Streben nach Konsistenz Darunter fallen konsistente Aktionssequenzen bei hnlichen Situationen identische Terminologie im Zusammenhang mit Erkl rungen und Dia logfenstern etc 2 H ufigen BenutzerInnen Shortcuts erm glichen K rzere Antwortzeiten bei Anfra gen und schnellere Bildschirmdarstellung sind neue Anreize f r BenutzerInnen die das Programm schon fter verwendet haben 3 Informatives Feedback anbieten F r jede Anwenderaktion sollte das Programm ein Feedback geben Bei h ufigen und untergeordneten Aktionen kann die Antwort klein ausfallen z B das visuelle Feedback beim Klicken auf eine 3D Schaltfl chen durch KAPITEL 4 PRINZIPIEN ZUR ERSTELLUNG VON ANIMATIONSSOFTVVARE 65 den Anschein des Eindriickens bei seltenen und bergeordneten Aktionen jedoch ausf hrlich 4 In sich abgeschlossene Dialoge liefern Organisation von Aktionssequenzen in Grup pen mit einem Anfang einer Mitte und einem Ende Dies gibt dem der Anvvenderln das Gefiihl des abgeschlossenen Ganzen und Definiertheit der einzelnen Elemente 5 Lei
123. en wir tiber vis k Menge der an k sichtbaren Definitionen von symb k ops k die Menge der augenblicklichen Kandidaten f r das berladene Symbol symb k Weiterhin haben wir fiir jedes definierende Vorkommen eines tiberladenen Symbols op mit dem t x X fn gt t rank op m res_typ op 1 par_typ op i ti 1 s ii s m Die beiden letzteren seien auf Mengen von Operatoren erweiterbar Bevor der Aufl sungs algorithmus durch die Routine resolve_overloading aufgerufen wird sei f r den Ausdruck in welchem die Uberladung von Operatoren aufgel st werden soll der Kontexttyp a_priori_type berechnet Die Hilfsfunktion pot_res_types liefert alle potentielle Typen des Resultats der Eingabeoperation symb k act_par_types liefert die Menge aller i ten Parame tertypen der augenblicklichen Kandidaten fiir die Eingabeoperation symb k Zu Anfang assozitert init_ops mit jedem Knoten eine Menge aller m glichen Definitionen des Opera tors ANHANG B ANIMIERTE ALGORITHMEN 122 proc resolve_overloading root node priori type type func pot_res_types k node set of type begin return res_typ op op ops k end func act_par_types k node i integer set of type begin return par_typ op i op ops k end proc init_ops begin foreach k ops k op op vis k und rank op descs k od ops root z op ops root res_typ op a priori type end proc bottom elim
124. ergenerators LEX bzw GNU Klon FLEX und des Parsergenerators YACC bzw GNU Klon BISON Nichtterminale sind kursiv darge stellt Terminalsymbole sind GROSS UND FETT gedruckt Das jeweilige Startsymbol ist fett und kursiv dargestellt Die implementierten Scanner akzeptieren fiir die Terminalsym bole hinsichtlich der Gro und Kleinschreibung verschiedene und auch abk rzende Schreib weisen Kommentare sind in zwei Formen m glich entweder in geschweiften Klammern 1 oder in runden Klammern mit Stern Um die Lesbarkeit der Grammatiken zu verbessern sind im Gegensatz zur gew hlten Eingabekonvention die zweiteiligen Schl s selsymbole wie etwa lt gt ebenfalls in Hochkommata gesetzt z B es A 1 LAMA A 1 1 Symbolklassen BU a zA Z ZI 0 9 IDE BU BU ZI INTEGER 1 91 21 10 REAL INTEGER ZI CHAR ey A 1 2 Grammatik lama programm expression H Jet list let def let list Jet def 109 ANHANG A GRAMMATIKEN let def var 1151 org list list list expression op_un IDE expression 5 IDE vor list IDE 2 expression arg_list expression 2 expression list list expression 5 basisvvert IDE expression expression expression expression expression expression expression P expression expression OR expression expression AND expression expression expression e
125. erhandles angemeldet 2 Entleeren EmptyClipboard Falls die Zwischenablage noch Daten enth lt sollten diese entfernt werden 3 Einf gen der Daten SetClipboardData Die Funktion SetClipboardData bergibt den Handle auf den Speicherbereich der die Daten enth lt unter Angabe des Daten formats an das Clipboard Der verwendete Handle darf vom Programm selbst nicht mehr benutzt werden da er in den Besitz des Clipboards bergegangen ist Es ist m glich diese Funktion mehrfach hintereinander auszuf hren aber immer nur mit ver schiedenen Datenformaten Die Zwischenablage verwaltet die dazugeh rigen Segmen te s mtlich auf einmal 4 Schlie en der Zwischenablage CloseClipboard Das System hebt die Blockade der Daten f r andere Programme wieder auf Das Auslesen von Daten geschieht in hnlicher Weise 1 Test ob in der Zwischenablage das richtige Format enthalten ist sClipboardFormat Available Falls der Test negativ ausf llt kann man den geplanten Zugriff abbrechen Diese Funktion ist besonders n tzlich wenn die Zwischenablage mehrere Segmente unterschiedlichen Formats verwaltet 2 ffnen der Zwischenablage OpenClipboard 3 Entnahme der Daten GerClipboardData Die Funktion GetClipboardData erwartet zur Unterscheidung der ben tigten Daten eine Formatangabe und liefert einen Handle KAPITEL 1 MICROSOFT WINDOWS 3 1 27 auf das Segment zur ck das die gew nschten Daten enth lt Auch hier ist mehrfacher Auf
126. errand Anwendungsbereich Schaltfl chen usw siehe Abb 1 2 Befindet sich der Hot Spot im Anwendungsbereich eines Fensters dann l st das Bet tigen einer Maustaste eine zu den Tastaturereignissen analoge Botschaft aus Jedoch werden hier auch Doppelklicks ber cksichtigt Das Botschaftsattribut wParam enth lt einen Zustand der ber eine zus tzlich gedr ckte Taste informiert lParam besitzt eine Positions angabe der Stelle an der das Ereignis aufgetreten ist Diese wird relativ zur linken oberen Ecke des Anwendungsbereichs gemessen Au erhalb des Anwendungsbereichs also z B in der Men leiste haben die Mausereig nisse fast denselben Effekt wie innerhalb des Anwendungsbereichs Eine Ausnahme bilden die Botschaftsattribute Hier gibt wParam die Kennziffer des Bereichs z B Men an LPa ram auch die Position jedoch relativ zur linken oberen Ecke des entsprechenden Bereichs Schlie lich gibt es noch Bewegungsbotschaften wie WM_MOUSEMOVE die bei jeder Bewegung des Mauszeigers an das darunter befindliche Fenster gesendet werden 1 2 3 Timer Timerbotschaften sind n tzlich um die Geschwindigkeit von Animationen zu regeln Sie werden vom System nur nach Anfrage des Anwendungsprogramms gesendet Windows ist in der Lage 32 Timer gleichzeitig zu verwalten Die Anfrage erfolgt durch den Aufruf der Window Funktion SetTimer die als Parameter u a den Fenster Handle des anfragenden Fensters und ein Zeitintervall Periode erwartet Kann ei
127. erufen entweder wenn das System heruntergefahren wird oder wenn das letzte Programm beendet wurde das diese dynamische Bibliothek benutzt Sie bernimmt die Freigabe aller noch belegten Speicherbe reiche Im Umgang mit Funktionen mu man darauf achten da mit far Zeigern gearbeitet wird um aus dem Datensegment des importierenden Programms kopieren zu k nnen Auf der Seite der DLL werden Funktionen durch den Zusatz _export anderen Programmen zur Verf gung gestellt d h exportiert z B int far _pascal _export XYZ _pascal ist ein bestimmtes bergabeformat f r Funktionsparameter Eine solche Funktion erwartet die Parameter in umgekehrter Reihenfolge auf dem Stack als es die C Konventionen verlan gen Mit diesen Zus tzen m ssen auch Window Prozeduren ausgestattet werden damit das System sie zur ckrufen kann Gro e Nachteile bei der Programmierung von DLL s enstehen durch die segmentierte Architektur der 80x86 Prozessoren und der Tatsache da DS SS gilt In den Speicher modellen Small und Compact haben wir near Zeiger 16 Bit Offset und far Zeiger 32 Bit Segmentadresse Offset Die Zuordnung zu Stack und Datensegment geschieht dann wie folgt Variablen eines C Programms die au erhalb von Funktionen als extern und innerhalb von Funktionen als static deklariert wurden kommen ins Datensegment Es werden near Zeiger verwendet und das DS Register zur Adressierung vorausgesetzt Funktionsparameter und Variablen die
128. es Operators Im Ausdrucks baum handelt es sich dabei gerade um seine Kinder Sind alle Parametertypen des Operators berechnet dann werden alle die Operatoren aus der o g Menge entfernt deren i ter Para metertyp zu keinem der soeben ermittelten m glichen Resultatstypen des i ten Operanden pa t Dieses Streichen aus der Menge wird bottom up Elimination genannt Ein Lauf ber den Ausdrucksbaum reicht aber noch nicht aus um die berladung aufzul sen 55 bottom up Elimination d top down Elimination 1 2 Abb 3 5 Eliminationen aus WM92 Betrachten wir einen Operatorknoten v dessen i ter Parameter der Operatorknoten w sei vgl Abb 3 5 Knoten w hat im ersten Lauf seine Resultatstypen an seinen Elterknoten v weitergegeben Aus der Menge aller fiir v sichtbaren Operatordefinitionen Abk ops v wurden durch die bottom up Elimination all die Operatoren eliminiert deren i ter Parame tertyp zu keinem Resultatstyp von w passen Die Operatormenge des Knotens w ist durch diese Operation nicht ver ndert worden Nun ist es m glich da in dieser Menge Operato ren existieren deren Resultatstyp nicht mit irgendeinem Typ der entsprechenden i ten Pa rametertypen der Operatoren in der Menge des Knotens v korrespondiert Diese Operatoren innerhalb der Menge von vr k nnen gel scht werden Es ist also ein Informationsflu von oben nach unten n tig der erst alle i ten Parametertypen aus der Menge des Knotens v aufsam
129. escecsdsosioessessieasosesienssssnsenstsensanss 94 6 4 1 Unterschied zwischen konkreter und abstrakter Syntax 95 6 4 2 berpr fung der Kontextbedngungen en 95 6 4 3 Aufl sung der berladung u u 22 2 2 gieasisenfnpe nn 96 E SEELEN 97 6 5 Basisstruktur abstrakter Syntaxbaum c cscccsscssscssssssecssscsesssscsesssscscesssscsesssscsessssesseesssesers 98 6 5 1 Erzeugung der Datenstruktur i nt o o eeen e a eSEE EKE a E AAEE E ENESE EdaS Eosta oan EEEak 98 6 5 2 Layoutberechnung f r B ume 99 6 93 22 Eayoutkriterien 2 22 ees DEEN rash heed reeds 100 6 5 2 2 Arbeitsweise des Layoutalgorithmus 101 6 5 3 Graphische Darstelhuit gz ei cs 104 6 5 4 Einbettung von Wegen innerhalb der 105 7 ZUSAMMENFASSUNG UND AUSBLICK 107 A GRAMMATIKEN 109 A 1 LAMA enersosssosssosssnsssosssnsssnnssnnssnessnnssnnssnnssnnssnnssnensnnssnessnessnessnessnessnessnensnessunssnnssnessnessuessunssusssunssunns 109 109 A31 2 Grammat k en Segeler geesde dee edel dese nenne 109 2 PASCAL scsssssssssscssscssscsssnssecsesessscsssessscsssssscssssssssscssscssscssscssscssscssscssscssocssscssscsssessscss
130. est initialisierter Zustand eingestellt werden kann z B Fokus auf wichtige Schaltfl chen Dies ist besonders bei neuen AnwenderInnen wichtig Einen Bestandteil der Oberfl che bilden die Programmelemente deren Zweck es ist die Dateneingabe zu erm glichen etwa Editierfenster oder Dialogboxen Da ein schlechter Entwurf solcher Elemente unmittelbar die gute Bedienbarkeit des Programms herabsetzt seien die hierf r geltenden Prinzipien gesondert aufgef hrt 1 Konsistenz der Transaktionen f r Dateneintrag Unter allen Bedingungen sollten gleichartige Aktionssequenzen Grenzen Abk rzungen usw benutzt werden 2 Geringe Anzahl von Eingabeaktionen durch die AnwenderInnen Dieses Prinzip bewirkt eine k rzere Einarbeitungszeit und weniger Eingabefehler Statt gro e Tasta tureingaben machen zu m ssen sollte der die Anvvenderln mit einem Zeigeger t Maus Lightpen aus einer Auswahl die Daten selektieren k nnen Hierbei ist es wichtig da redundante Dateneintr ge vermieden werden 3 Minimale Merkanforderungen an die AnwenderInnen Die AnwenderInnen sollten sich nicht kryptische Symbole oder syntaktisch komplexe Kommandostrings merken m ssen 4 Kompatibilit t von Dateneintr gen und Datendarstellungen Das Format der Ein gabeinformationen und der schlie lich angezeigten Informationen sollte von den An wenderInnen als zusammengeh rig assoziiert werden 5 Flexibilit t der Dateneingabem glichkeiten Einige AnwenderInnen
131. fizieren e Art der Programmierung Autorensysteme mit Autorenfiihrung Systeme dieser Gruppe f hren den Autor mittels Anweisungen durch eine Funktionsauswahl Ein Lernprogramm wird nur durch diese Menii bzw Formularf hrung erzeugt Autorensysteme mit Autorensprache Diese Systeme stellen eine eigene Program miersprache zur Verf gung deren Funktionalit t auf die Erfordernisse der Ent wicklung von Lernprogrammen ausgerichtet ist Kombinierte Autorensysteme Hier werden die Eigenschaften der vorgenannten Gruppen gemischt Das System unterst tzt den Autor durch bestimmte Aus wahlanweisungen bietet jedoch zus tzlich die M glichkeit an Quellcode zu erzeu gen bzw zu manipulieren e Technologisches Umfeld Klassisch Damit sind vorallem ltere Systeme gemeint die keine standardisierten graphischen Benutzeroberfl chen aufweisen Die Interaktion mit dem Autor Lerner verl uft haupts chlich auf Textbasis Objektorientierte Oberfl chen Neue graphische Oberfl chen wie Windows er lauben eine standardisierte und damit leicht beherrschbare Nutzung von Program men Die einzelnen Bestandteile eines Lernprogramms werden als Objekte verstan den und als solche angesprochen 36 KAPITEL 2 ASYMETRIX MULTIMEDIA TOOLBOOK 3 0 37 e Benutzeroberflache Getrennte Autoren und Lerneroberfl che Die Oberfl che auf der ein Autor ein Lernprogramm entwickelt unterscheidet sich von der Lerneroberfl che auf der
132. g eege gege E dEEE ege Nee Egger eee Zeen ec 4 4 606 4 5 Aufmerksamkeit auf Objekte 07 4 6 Farben s s 5 DIE ANIMIERTE PRASENTATION 69 5 1 Starten des Programms cccccssccssscsscseccssscscccssscccesssccscsssscsecsssscscsesssssssssccsssssscssesssscsssssssseee OO AS EE UO 5 2 1 Benutzeroberfl che und deren Eigenschaften 70 52A Men lelste sninen bated a tein hain ee Ie URUS 5 2 1 2 Seltenanzeigebereichr noni ia e e dee A e ei esa ae 5 2 1 3 Kontrolleiste S214 REI UE 5 2 2 Hilfsmiftel EE 5 2 2 1 Onlitie Hilfe ics aya ee ee ees 9 2 2 2 Liter turangaben 2ER III LE LI 5 2 2 3 Kontextfreie Grammatiken neneiia ene ee veine eiae ererek 5 2 2 4 Animierte Algorithmen asninn eae e e Es eree e dareen 5 2 2 5 Animationsgeschwindigkeit E WEEN E E s r R eestis ssia T 5 4 TO 5 5 Realisierung der TO 5 5 1 M glichkeiten der
133. gabe den Syntaxbaum des LAMA Ausdrucks l t die initiale Typumgebung durch getlnitialAssumption generieren und ruft analyse auf func lookupInitial k node A assum bool begin if 3a pairs A mit k node a then return true else return false fi end func getlnitialAssumption k node A assum assum begin if lookuplnitial k A false then f erzeuge den initialen Typ von k wenn er existiert if 1 no_type then A addGenAssum k t A fi fi for i 1 to descs k do A getlnitialAssumption k i A od return A end ANHANG B ANIMIERTE ALGORITHMEN 131 proc type_checker root node begin A getlnitialAssumption root emptyAssum type root analyse root A stateO end Anhang C Beispiele f r Animationen Die in diesem Anhang ausgedruckten Bilder geben von den Visualisierungen und Anima tionen dieser Arbeit naturgem nur eine sehr unvollkommene Vorstellung Sie spiegeln z T auch lediglich die Situation wider in denen der die Benutzerln eine Animation ein frieren kann Eine Animation in Bewegung kann in einem gedruckten Text nur sehr schlecht simuliert und dargestellt werden C 1 Visualisierungen aus der animierten Pr sentation R et Geben Sie bitte Ihren Namen ein Per Zuerst wird der die BenutzerIn nach dem Namen gefragt Alle im Programm auftretenden Dialoge verwenden diesen Namen als per sonlic
134. gener Zeichensatz hierf r erforderlich Ein Vorteil ist die sehr hohe Ausgabegeschwindigkeit bei der Darstellung der Schrift und eine hohe Quali t t wenn man auf Skalierung verzichtet Vektor Schriften definieren ein Zeichen als eine Folge von Linien deren Anfangs und Endpunkte abgespeichert werden Sie lassen sich prinzipiell beliebig skalieren jedoch wird die Breite der Linien hier nicht ge ndert was bei gro en Zeichen ein zu d nnes bei kleinen KAPITEL 1 MICROSOFT WINDOWS 3 1 25 Zeichen ein unverh ltnism ig dickes Erscheinungsbild zur Folge hat Eine nderung der Schriftattribute erfolgt ebenfalls durch Umrechnung Die Zeichen von TrueType Schriften werden durch Umrisse outlines definiert die selbst in Form mathematischer Linien und Kurvenfragmente gespeichert sind Beispielswei se besteht das Zeichen o aus einem kleinen inneren und einem gro en u eren Kreis Die Skalierung von TrueType Schriften ist ohne Qualit tsverlust durchzuf hren Hier wird die Qualit t durch sogenannte hints Zus tze Hinweise weiter verbessert die bei der Defini tion der Zeichen eingef hrt werden Eine Skalierung eines o hat z B die Verbreiterung bzw Verkleinerung der Strichbreite zur Folge Diese Verbesserungen lassen sich aber erst beim Ausdruck deutlich erkennen Anders als bei Bitmap oder Vektor Schriften existieren f r jedes Schriftattribut eigene separate Definitionen Durch die vielen Umrechnungen be dingt liegt
135. glich als Anhaltspunkte zu verstehen die f r jedes Projekt ent sprechend anzupassen und zu erweitern sind 1 Konsistenz der Oberfl che Schon w hrend der Entwicklungsphase sollten Termino logien Formate Farbauswahl Aufteilung Gr en etc standardisiert und permanent kontrolliert werden 2 Effiziente Informationsaufnahme durch den die AnwenderIn Die Oberfl che sollte vertraut und gut strukturiert sein damit die AnwenderInnen sie leicht erfassen und die dargestellten Informationen gut aufnehmen k nnen 3 Minimale Merkanforderungen der AnwenderInnen Es sollte nicht verlangt wer den da man sich an Informationen eines Fensters Seite erinnern mu um ein ande res Fenster Seite zu verstehen 4 Kompatibilit t von Datendarstellung und Datenmaterial Zwischen der Darstel lung von Daten z B Syntaxbaum und dem Datenmaterial z B Eingabeprogramm mu ein klar nachvollziehbarer Zusammenhang bestehen 5 Flexibilit t der Oberfl che f r Benutzeranpassungen BenutzerInnen haben unter schiedliche Vorlieben und Begabungen Informationen aufzunehmen Daher kann es KAPITEL 4 PRINZIPIEN ZUR ERSTELLUNG VON ANIMATIONSSOFTWARE 66 angebracht sein flexible Oberfl chengestaltung zuzulassen Fortgeschrittenen sollte es gestattet sein selbst zu entscheiden in welcher Weise und wie genau Informationen dargestellt werden 6 Initialisierter Zustand Vorallem bei ver nderbaren Oberfl chen ist es notwendig da ein f
136. h orientierte Einf hrung De Greuter Lehrbuch 1991 L Damas R Milner Principal Type Schemes for Functional Programs In 9th ACM Symp on Principles of Programming Languages pp 207 212 1982 F L DeRemer T J Pennello R Meyers A Syntax Diagram for Prelim inary ADA In ACM SIGPLAN Notices 15 7 8 pp 36 47 1980 C Donnelly R Stallman BISON Documentation Free Software Founda tion Cambridge USA 1991 P Eades T Lin X Lin Two Tree drawing Conventions In International Journal of Computational Geometry and Applications 3 2 pp 133 153 1993 M Fritz R Aumiller Das Visual C 1 5 Buch Sybex 1994 S C Glassman A Turbo Environment for Producing Algorithm Animations In IEEE Symp on Visual Languages pp 32 36 1993 152 LITERATURVERZEICHNIS 153 KKUG83 KM90 Koh95 Lor84 Lee92 Lem94 LS94 Mi93a Mi93b Mi93c Mi93d Mi93e Mi93f Mil78 Moh92 Nag82 Pax90 PDM80 Pet92 Pey87 Rea89 Rob65 San95 Kaucher Klatte Ullrich v Gudenberg Programmiersprachen im Griff Band 4 ADA BlI Hochschultaschenbiicher 1983 B W Kernighan D M Ritchie Programmieren in C Hanser Prentice Hall International 1990 G Kohlmann Visualisierung der abstrakten P Maschine Diplomarbeit Universitat des Saarlandes 1995 B Lorho Hrsg Methods and Tools for Compiler Construction Cam bridge University Press 1984 M Lee An Algorithm Animat
137. he Anrede Andreas wollen Sie neu beginnen oder dort fortfahren wo Sie in der letzten Sitzung aufgeh rt haben Ist der Name dem System bereits bekannt so wird der die Anvvende rIn danach gefragt ob das Programm an der zuletzt besuchten Seite fortfahren soll oder nicht Wird Neu ausgew hlt dann zeigt das Programm die Seite mit dem Inhaltsverzeichnis an Abb C 1 1 Startsequenz der animierten Pr sentation 132 ANHANG C BEISPIELE F R ANIMATIONEN 133 Compilerbau Datei Ansicht Optionen Seite Hilfe Bezeichner Identifier werden zur Benennung von Objek ten der Prograrnmiersprache verwendet Ausnahmen Die Deklaration eines Bezeichners ist ein Konstrukt das einen Bezeichner als Name f r ein Objekt einf hrt Ein Vorkommen eines Bezeichners in seiner Deklara Beispiel tion nennt man das bei imperativen Programmiersprachen 9 Angewandte Vorkommen sind alle nicht definierende rekursive Typen Vorkommen eines Bezeichners type ptr record Typdeklaration Ein Block ist ein Teil des Programmtextes der die G ltigkeit von Bezeichnern begrenzt Blockhildende Konstrukte werden Scope Konstrukte genannt Der Typ eines Objekts bestimmt die Verwendungsm g next 1 ptr end ptr ist ein definierendes Vorkommen pir ist kein definierendes Yorkommen lichkeit des Objektes zur Ausf hrungszeit s Semantische Analyse 9 1 Die Aufgabe der semantischen Analyse Auf der l
138. hen da sie gegenl ufig angelegt sind Wir orientieren uns bei den Prinzipien zur Gestaltung von Oberfl chen an Erkenntnissen aus dem Bereich der interaktiven Benutzerschnittstellen Als weiterf hrende Literatur sei an dieser Stelle auf Shn92 hingewiesen Die beschriebenen Prinzipien finden Anwendung in der Animation der semantischen Analyse wenn auch alle Anforderungen in der Praxis nicht erreicht werden k nnen In den nachfolgenden Kapiteln verweisen wir beispielhaft auf einige Prinzipien die beachtet wur den Weiterhin machen wir auf einige Stellen aufmerksam die gegen ein Prinzip versto en 4 1 Ziele Die Eigenschaften die ein Lern und Pr sentationsprogramm wie die Animation der se mantischen Analyse aufweisen sollte lassen sich von zwei unterschiedlichen Standpunkten betrachten Einerseits stellen die BenutzerInnen bestimmte Erwartungen an das Programm andererseits stehen den AutorInnen nur begrenzte Ressourcen zur Verf gung um diese Anforderungen zu erf llen Da der Inhalt unseres Programms aus dem Bereich der Informatik stammt k nnen wir bei den BenutzerInnen Computergrundkenntisse voraussetzen d h die Bedienung von Ele menten der Windows Oberfl che sollte bekannt sein etwa das Aufrufen und die Bedienung einer Online Hilfe 4 1 1 Benutzersicht Fehlerbehaftete Programme mindern die Motivation der AnwenderInnen Daher sollte Feh lerfreiheit des Inhalts eines Lernprogrammes und angemessene Funktionalit t der tec
139. hen semantischen Eigenschaften anhand der Typberechnung einfacher arithmeti scher Operatoren verdeutlicht Abb C 1 3 Statische semantische Eigenschaften ANHANG C BEISPIELE F R ANIMATIONEN 135 Compilerbau Datei Ansicht Optionen Seite Hilfe Gezeigt wird der konkrete Syntaxbaum zu dem rechts oben angegebenen Programmfragment F r die seman tische Analyse sind die rot gef rbten Terminalsymbole sowie die gelb gef rbten Nichtterminale nicht mehr notwendig Klickt man auf das Feld Umwandeln in abstrakten Syntaxbaum so entfernt die animierte Pr sentation die berfl ssigen Knoten und wandelt den konkreten Syntaxbaum animiert in den abstrakten Syn taxbaum um vgl Abb C 1 5 Abb C 1 4 Baum zur konkreten Syntax ANHANG C BEISPIELE F R ANIMATIONEN 136 Compilerbau Datei Ansicht Optionen Seite Hilfe Aus dem Baum zur konkreten Syntax siehe Abb C 1 4 wurde dieser abstrakte Syntaxbaum erzeugt Er l t sich wieder in einen konkreten Syntaxbaum animiert zur ckverwandeln um die Unterschiede noch besser darzustellen Abb C 1 5 Baum zur abstrakten Syntax ANHANG C BEISPIELE F R ANIMATIONEN 137 Compilerbau Datei Ansicht Optionen Seite Hilfe enter_block exit block enter_id id Tk search id d Der rot gef rbte Quelltext des Algorithmus kennzeichnet die aktuelle Stelle die auf der rechten H lfte der Seite erkl rt wird Mit den Steuerungsbuttons unten in der Kontrolleiste kann der Algorithmus
140. hnern z B Prozedur oder Funktionsnamen betrach tet Erlaubt eine Programmiersprache die berladung von benutzerdefinierten Symbolen ADA gestattet beispielsweise die berladung von Funktionsbezeichnern dann ist es auch in einem korrekten Programm m glich da es zu einem angewandten Vorkommen x meh rere sichtbare definierende Vorkommen von x gibt Man bezeichnet die berladung von Symbolen im obigen Sinne auch als ad hoc Polymorphismus KAPITEL 3 SEMANTISCHE ANALYSE 54 Ein Programm ist nur dann korrekt wenn aufgrund der Typumgebung des angewandten Vorkommens genau eines der definierenden Vorkommen ausgew hlt werden kann Bei Funktions oder Prozeduraufrufen ist die Typumgebung die Kombination der aktuellen Pa rameter Das Ausw hlen eines eindeutigen definierenden Vorkommens wird als Aufl sung der Uberladung overload resolution bezeichnet und findet nach der Identifizierungs phase statt 3 4 1 Verfahren zur Aufl sung der Uberladung Der Aufl sungsalgorithmus Anhang B 3 betrachtet nur bestimmte Sprachkonstrukte wie Ausdr cke Bezeichner usw Er benutzt dabei zwei L ufe ber je einen Ausdrucks baum erst bottom up und dann top down Mit jedem Knoten eines Ausdrucksbaumes wird zun chst eine Menge von allen m glichen sichtbaren Definitionen des betreffenden Opera tors assoziiert die wir nach der Identifizierung der Bezeichner zur Verf gung stehen haben Der bottom up Pass analysiert die Typen aller Parameter ein
141. hni schen Bestandteile das wichtigste Ziel sein Weiterhin gibt es eine Vielzahl von Zielen die Beachtung finden sollten 63 KAPITEL 4 PRINZIPIEN ZUR ERSTELLUNG VON ANIMATIONSSOFTWARE 64 Zuverl ssigkeit Kommandos und Aktionen sollten genau das bewirken wof r sie spezifiziert wurden Aktualisierungen von Informationen oder Bildschirmbereichen m ssen korrekt sein Verf gbarkeit Die Software Architektur Hardwarekomponenten und Netzwerk unterst tzung mu eine hohe Verf gbarkeit des Programms sicherstellen e Sicherheit Es sollte ein Schutzmechanismus vor unerwarteten bzw unerlaubten Zu griffen besonders im Netzwerk sowie f r die unbeabsichtigte Zerst rung von Daten existieren Integrit t Es ist die Integrit t der darzustellen Daten zu gew hrleisten e Standardisierung Das Fehlen von Standardisierungsma nahmen jeglicher Art f hrt zu l ngerer Einarbeitungszeit Bedienungsfehlern und Inkompatibilit ten Integration Ein Programm sollte zusammen mit anderen Programmen verwendet werden k nnen Dies gilt auch hinsichtlich seiner Daten e Konsistenz Gemeinsame Aktionssequenzen Einheiten Layouts Farben Typogra phie etc innerhalb einer Anwendung Portabilitdt Ein Programm sollte so konstruiert sein da es die Konvertierung von Daten und Oberfl chen ber mehrere Soft und Hardwareumgebungen gestattet z B ber die Zwischenablage 4 1 2 Autorensicht Die EntwicklerInnen von Programm
142. ht gut unterst tzt Das GDI bietet keinerlei Funktionali t t zur r umlichen Darstellung von Objekten oder zur Rotation an Beispielsweise m ssen Halbachsen von Ellipsen immer parallel zur Horizontalen bzw Vertikalen verlaufen Hinzu kommt da Windows nur mit signed integer ganze Zahlen im Bereich von 32768 bis 32767 statt mit Flie kommazahlen arbeitet Daraus ergeben sich Darstellungsprobleme durch Rundungsfehler 1 4 1 2 Ger tekontext Bisher ist die Frage unbeantwortet geblieben auf welche Art und Weise das GDI zwischen den Ausgabeger ten unterscheidet und gegebenenfalls umschaltet Diese Aufgabe ber nimmt der sogenannte Ger tekontext Der Ger tekontext Device Context DC ist eine interne Datenstruktur des GDI und erm glicht die Verbindung zu einem Ausgabeger t also Bildschirm Drucker oder Plotter Im Falle des Bildschirms gibt es noch eine zweite Verbin dung n mlich zum Anwendungsbereich eines Fensters Um eine Vielzahl von Parametern einzusparen wendet das Windows System die im Ger tekontext gespeicherten Daten auf s mtliche GDI Funktionen an Daher mu man f r eine Ausgabesequenz folgende Schritte vornehmen die innerhalb ein und derselben Botschaft stattfinden m ssen 1 Ermittlung des Handles zum entsprechenden Ger tekontext 2 Gew nschte Zeichenoperationen einschlie lich Textausgaben KAPITEL 1 MICROSOFT WINDOWS 3 1 19 3 Freigabe des vormals ermittelten Handles Ein Ger tekontext enth
143. ie Kommunikation zwischen Mensch und Programm erfolgt ber Dialogfenster usw Zun chst stellen wir im folgenden Abschnitt 1 3 1 die Speichervervvaltung des Windows Systems vor Sie bildet u a die Grundlage f r das richtige Verst ndnis der an sp terer Stelle besprochenen dynamischen Bilbliotheken DLL s die auch im ASA Tool zur Anwendung kommen 1 3 1 Speicherverwaltung Ein System welches gestattet mehrere Prozesse nebeneinander laufen zu lassen ben tigt eine eigene Speicherverwaltung Programme brauchen f r ihren Code ihre Daten und ih KAPITEL 1 MICROSOFT WINDOWS 3 1 11 ren Stack Speicherplatz der organisiert werden mu Die Speicherverwaltung ist bei Win dow Systemen davon abh ngig in welcher Betriebsart sich der Prozessor und damit auch das System befindet Wir betrachten hier nur den Protected Mode der ab dem Intel 80286 und seinen Nachfolgern zur Verf gung steht 1 3 1 1 Segmente Die Segmentierung des Speichers ist die grundlegende Eigenschaft der Speicherverwaltung von Windows Jedem Windows Programm wird beim Start ein Code Daten und Stack segment zugeordnet wobei die beiden letzteren zusammengelegt werden k nnen aber nicht m ssen Der Prozessor stellt mindestens vier Register zur Adressierung der Segmente zur Verf gung Prozessoren ab dem 80386 haben noch zus tzliche Segmentregister CS enth lt die Adresse des Codesegments DS die Adresse des Datensegments e SS die des Stacksegments und
144. ie Angabe ob er ein Terminal oder Nichtterminalknoten ist Durch die Knoten f rben Funktionalit t werden die Knoten im konkreten Syntaxbaum in solche unterteilt die im abstrakten Syntaxbaum ver schwinden blau gef rbt und solche die bernommen werden hellgrau Standardknoten farbe Abbildung C 2 1 zeigt ein Beispiel dieser Visualisierung 6 4 2 berpr fung der Kontextbedingungen Das Beispielprogramm PASCAL Dateiendung PPT wird wie im letzten Abschnitt 6 4 3 eingegeben und der entsprechende abstrakte Syntaxbaum im Animationsbereich gezeichnet W hlt man aus dem Men Animation den Punkt Endergebnis so startet ASA die Uberpr KAPITEL 6 DIE DYNAMISCHE ERWEITERUNG ASA 96 fung der Deklariertheitseigenschaften Als Hinweis auf den Abschlu der Berechnungen auf allen Knoten f rbt das ASA Tool die Knoten dunkelgrau optisches Feedback siehe Punkt 3 der Richtlinien f r Animationen aus Abschnitt 4 4 Die Knoten sind nun aktiv d h sie enthalten Informationen Weiterhin erh lt der Mauscursor beim berstreichen eines Knotens die Form einer Lupe sonst hat er die Form eines Pfeiles Bei einem Fehler er scheint eine Meldung und der Knoten an dem der Fehler aufgetreten ist wird rot markiert Klickt man auf ein angewandtes Vorkommen eines Bezeichners im Syntaxbaum f r den eine Deklaration entdeckt wurde blau gef rbt so weist ein roter Pfeil auf das definierende Vorkommen Dabei wird der Knoten und seine Deklaration ro
145. if op t op t then return unifyall t t else error Typfehler op t op t2 fi end func unifyall t typeExp t typeExp sub begin if f und 72 sind Typvariablen oder einfache Typen then return emptySub 0 else if rank t rank t2 then o unify 11 1 h l if rank t 2 then 7 substitute 6 t 2 ta substitute 6 tr 2 Oz unify 1 2 return compose O 01 else if rank t 1 then return O fi fi fi fi error Unifikationsfehler da inkonsistente Anzahl der Typargumente f r Listentypen end Mit Mengen von Annahmen Datentyp assum werden die folgenden Funktionen assoziiert Wir repr sentieren eine Menge von Annahmen Umgebung durch ein Paartupel A pairs nongen wobei pairs die Form f Vn fall hat und nongen genau die Typvariablen in den fi spezifiziert die nicht generisch sind nongen ist eine Liste von Typtermen nicht nur Typvariablen so da alle in diesen Typtermen vorkommenden Typvariablen nicht generisch sind Dies vereinfacht das Hinzuf gen einer neuen Annahme zu A F r eine Men ge von Annahmen A gelten die Notationen pairs A die Menge der Annahmen pairs von A nongen A die Liste der Typterme nongen von A a pairs A eine Annahme v ti node ai der Knoten E mit symb k vi type a den Typ 1 der Annahme qi Die erste Funktion addAssum f gt eine neue Annahme v t in eine Umgebung A ein wobei
146. ilen optional durch die Zeichenkombination CR LF voneinander abgesetzt sind CF_SYLK CF_DIF CF_OEMTEXT Diverse Textformate die von verschiedenen Soft wareprodukten unterstiitzt werden CF_BITMAP CF_DIB Ger teabh ngige und unabh ngige Bitmaps CF_TIFF Dieses Format steht fiir das Tag Image File Format TIFF welches eine Ge meinschaftsentwicklung von Microsoft Aldus und Hewlett Packard ist CF_METAFILEPICT Bild in Form einer Zwischendatei metafile CF PALETTE Farbpalette die sich meist auf ein ger teunabh ngiges Bitmap DIB be zieht d h dessen reale Farben festlegt Eigene Formate Windows Programme k nnen auch eigene Formate definieren um so si cherzustellen da andere fremde Programme mit diesen Formaten nicht zurechtkom men und somit nicht auf sie zugreifen k nnen Ein Beispiel w re ein Kopieren von Daten eines Dokuments in ein anderes Dokument desselben Programms Die Zwischenablage erwartet einen Handle auf ein frei bewegliches Segment im globalen Heap Gegebenenfalls sind die Daten die man in die Zwischenablage einsetzen will in den globalen Heap zu kopieren Hat man die Daten entsprechend vorbereitet so sind f r den Einf gevorgang folgende Schritte n tig in Klammern sind die Funktionen benannt 1 ffnen der Zwischenablage OpenClipboard Damit wird der Zugriff auf den Inhalt der Zwischenablage durch andere Programme blockiert und der eigene Zugriff unter der Angabe des Fenst
147. immer n tig Ist dieser Proze f r alle Nachkommen des Knotens k abgeschlos sen dann wird der Knoten k ber seinem linkesten und rechtesten Nachkommen zentriert Hat k auf derselben Ebene keine linken Geschwister so wird nur prelim k gesetzt und modifter k ist 0 Andernfalls ist der gesamte Unterbaum von k durch das entsprechende Setzen von modifier k zu verschieben A Unterbaum von k 1 US Unterbaumseparation A Unterbaum von k 2 GS Geschwisterseparation A Unterbaum von k 3 KAPITEL 6 DIE DYNAMISCHE ERWEITERUNG ASA 103 Wenn man einen neuen gro en Unterbaum immer mehr nach rechts schiebt so kann zwi schen diesem gro en Unterbaum und kleineren Unterb umen die zuvor korrekt positioniert waren eine L cke entstehen Diese kleinen Unterb ume erscheinen nun wie angeh uft w hrend rechts von dieser Anh ufung ein leerer Raum entsteht Der hier vorgestellte Algo rithmus l st dieses Problem vgl Abb 6 13 Er generiert einen gleichm ig verteilten Raum um die Unterb ume W hrend sich ein gro er Unterbaum nach rechts bewegt so wird die zur ckgelegte Distanz gleichm ig auf die kleineren inneren Unterb ume verteilt Die Bewegung dieser Unterb ume wird wie oben beschrieben durch Addition der propor tionalen Werte zu den vorl ufigen x Koordinaten und Modifizierer Feldern der Unter baumwurzeln durchgef hrt Haben wir beispielsweise auf der linken Seite drei kleine ge b ndelte Unterb ume weil ein neuer gro er Unte
148. ine andere Deklaration desselben Bezeichners x verdeckt sein Ist beispielsweise das definierende Vorkommen nicht im Deklarationsteil des aktuellen Blocks so kann eine lokale Deklaration diese globale Be zeichnerdeklaration verdecken siehe Abb 3 4 proc p G ltigkeitsbereich von x 57777 ApaA G ltigkeitsregeln ro Bree A Wy Deklaration von x YW Sichtbarkeitsbereich von x Abb 3 4 Beispiel zum G ltigkeits und Sichtbarkeitsbereich Analog zum Problem des G ltigkeitsbereichs eines definierenden Vorkommens wird auch dieses Problem durch Regeln gel st Mit Hilfe dieser Sichtbarkeitsregeln lassen sich auch verdeckte definierende Vorkommen eines Bezeichners sichtbar machen beispielsweise e Die Erweiterung eines Bezeichners um den Bezeichner eines die Deklaration enthal tenen Konstrukts In PASCAL werden sogenannte qualifizierte Bezeichner dadurch er zeugt indem man den Bezeichner um den Namen des Konstrukts erweitert welche seine Deklaration enth lt Somit wird ein Bezug auf ein bisher verdecktes Vorkom men erm glicht KAPITEL 3 SEMANTISCHE ANALYSE 52 e Sichtbarmachen einer bestimmten Region des G ltigkeitsbereichs ohne die Erweite rung eines Bezeichners Die use Anweisung in ADA listet Bezeichner von umfassen den Programmeinheiten auf die dadurch innerhalb der Region sichtbar werden Die Region erstreckt sich vom Ende der use Anweisung bis zum Ende der umgebenden Programmeinheit e D
149. ing zusammen mit dem Atom wenn der Wert 0 erreicht ist GlobalFindAtom sucht die Atomtabelle des Systems nach einem String ab und lie fert das dazugeh rige Atom bzw den Wert 0 zur ck GlobalGetAtomName sucht die Atomtabelle des Systems nach einem Atom ab und ko piert den dazugeh rigen String Die globale Atomtabelle ist in einem Datensegment einer DLL des Systems angelegt vvel ches von allen Programmen gemeinsam benutzt werden kann Jedes Programm ist fiir die gemeinsame Atomtabelle verantwortlich d h daf r zust ndig da es keine Atome l scht die ein anderes Programm noch ben tigt oder umgekehrt eigene Atome nicht mehr frei gibt H lt sich eine Anwendung nicht an diese Vorgabe so reagiert das Window System mit Instabilit ten 1 5 2 2 Arten der Konversation Die Wahl welche Art der Verbindung zwei Programme miteinander eingehen ist von den Eigenschaften der Daten abh ngig Fixe statische Daten fragt der Client ber eine sogenannte kalte Verbindung ab Daten die sich permanent dynamisch ver ndern erfordern eine hei e Verbindung Sie werden dynamisch bei einer Anderung aktualisiert e Eine Mischung zwischen beiden Konversationsarten ist die warme Verbindung Der Client wird lediglich bei einer Ver nderung der Daten dar ber benachrichtigt Erst wenn dieser zu einer Aktualisierung seine Zustimmung gibt gibt der Server die Daten aus Ein Client baut eine kalte Verbin
150. ingebauten Operatoren einer Programmiersprache mit poly morphen Typen zu Typtermen beschreibt eine initiale Typumgebung mit der die Typinfe renz beginnt Die initiale Typumgebung der Sprache LAMA ist wie folgt festgesetzt true false bool plus sub mul div int gt int int 0 1 2 int cons ot gt list gt list a succ pred neg int int pair o hd list amp fst axP gt a tl list gt list o snd a x B f null list amp gt bool Den zusammengesetzten LAMA Konstrukten vverden Typkombinationsregeln zugeordnet durch deren Anwendung neue Typvariablen eingef hrt werden Eine solche Typkombina tionsregel beschreibt Bedingungen auf den Typen der einzelnen Bestandteile des betreffen den LAMA Konstrukts Das erste LAMA Konstrukt dem wir in diesem Zusammenhang begegnen ist der be dingte Ausdruck if e then e else es Er liefert die Typbedingungen e bool e und eo mit der neu eingef hrten Typvariable Die f r e er e2 berechneten Typen t t t m ssen diese Bedingungen erf llen und an obige Typen durch Unifikation vgl Abschnitt 3 5 3 2 angepa t werden In den f t2 k nnen sowohl als auch Typvariable gebunden sein wo bei alle Vorkommen von c an den gleichen Typ gebunden werden m ssen Der Ergebnistyp des ganzen bedingten Ausdrucks ist a Die Funktionsanwendung ce verlangt da e einen gt f und e den hat und ergibt f r die Anwendu
151. inken H lfte der Seite sind die in der semantischen Analyse verwendeten Begriffe kurz definiert Klickt man auf einen blau gef rbten Textteil so erscheint auf der rechten H lfte eine detailliertere Erkl rung des gew hlten Begriffs Innerhalb dieses Bereichs lassen sich auch ein oder mehrere Beispiele zu dem aus gew hlten Begriff anzeigen Abb C 1 2 Terminologie zur semantischen Analyse ANHANG C BEISPIELE F R ANIMATIONEN 134 Compilerbau Datei Ansicht Optionen Seite Hilfe Statische semantische Eigenschaften beschreiben allen dynamischen Ausf hrungen gemeinsame Eigenschaften die zur bersetzungszeit berechnet werden k nnen Definition Eine nicht kontextfreie Eigenschaft eines Konstrukts bezeichnet man als eine statische semantische Eigen schaft SSE wenn f r jedes Vorkommen dieses Konstrukts in einem Programm der Wert dieser Eigenschaft f r alle dynamischen Ausf hrungen des Konstrukts konstant ist und wenn f r jedes Vorkommen des Konstrukts in einem korrekten Programm diese Eigenschaft berechnet werden kann Beispiel f r Objekte mit statisch semantischer Eigenschaft Beispiel f r Objekte mit dynamisch semantischer Eigenschaft 9 1 Die Aufgabe der semantischen Analyse Zun chst wird der Begriff der statischen semantischen Eigenschaften im oberen Bereich der Seite definiert Danach besteht die M glichkeit eine kleine Animation ablaufen zu lassen die den Unterschied zwischen statischen und dynamisc
152. int eine Meldung und der Knoten an dem der Fehler aufgetreten ist wird rot markiert Klickt man auf einen Knoten im Ausdrucksbaum so wird seine soge nannte ops Menge in welcher alle potentiellen Typen zu diesem Operator enthalten sind eingeblendet Nach Beendigung des Algorithmus mu jede ops Menge genau einen Typ enthalten sonst wurde die berladung nicht aufgel st Diese ops Mengen bleiben solange an dem Knoten sichtbar bis sie durch Mausklick ma nuell geschlossen werden oder der die AnwenderIn die Animation zur cksetzt Die ops Mengen passen sich auch simultan an ein neues Layout an Abbildung C 2 3 zeigt ein Bei spiel dieser Visualisierung Animationsfenster anzeigen Wahlen Sie die gewiinschte Fensteransicht aus Gem X Zeige ein Fenster mit der Eingabespezifikation an X Zeige alle OPS Mengen der Knoten an Wahlen Sie die gew nschte OPS Mengen Gr e aus Gr e klein mittel C gro Abb 6 9 Animationsansicht Dialogbox 3 M chte man alle Knotenattribute hier die ops Mengen auf einmal anzeigen lassen die Gr e der Attribute ver ndern oder die Eingabespezifikation in einem separaten Fenster einblenden dann lassen sich alle diese Einstellungen in einer speziellen Dialogbox vgl Abb 6 9 vornehmen die durch den Men punkt Animationsfenster im Men Ansicht gezeigt wird 6 4 4 Typinferenz Das Beispielprogramm LAMA Dateiendung LPT wird wie im Abschnitt 6 4 3 eingege ben und der ents
153. ion Programming Environment In ICCAL 92 LNCS 602 pp 367 379 1992 I Lemke Entwicklung und Implementierung eines Visualisierungswerkzeugs f r Anwendungen im Ubersetzerbau Diplomarbeit Universit t des Saar landes 1994 I Lemke G Sander Visualisation of Compiler Graphs User Documen tation 1994 Microsoft Corporation Visual Workbench User s Guide 1993 Microsoft Corporation Programming Techniques 1993 Microsoft Corporation Win3 1 SDK Programmers Reference Vol 1 1993 Microsoft Corporation Win3 1 SDK Programmers Reference Vol 2 1993 Microsoft Corporation Win3 1 SDK Programmers Reference Vol 3 1993 Microsoft Corporation Win3 1 SDK Programmers Reference Vol 4 1993 R Milner A Theory of Type Polymorphism in Programming In Journal of Computer and Systems Sciences 17 pp 348 375 1978 M G M hrle Im Wettbewerb Klassische Autorensysteme versus objekt orientierte Oberfldchen In Proceedings des 3 Internationales Symposium fiir Informationswissenschaften ISI92 pp 119 129 1992 M Nagl Einf hrung in die Programmiersprache ADA Vieweg 1982 V Paxson FLEX Documentation 1990 T J Pennello F L DeRemer R Meyers A Simplified Operator Identifi cation Scheme for ADA In ACM SIGPLAN Notices 15 7 8 pp 82 87 1980 C Petzold Programmierung unter Microsoft Windows 3 1 Microsoft Press 1992 S L Peyton Jones The Implementation of Functional Programming Lan guages Prentice Ha
154. ion zwischen Prozessen ist der dynamische Datenaus tausch Dynamic Data Exchange DDE Zwei Programme und damit zwei unter schiedliche Repr sentationen als Fenster f hren eine DDE Konversation aus indem sie sich gegenseitig Botschaften senden Es ist also durchaus m glich ein eigenes Kommunikati onsprotokoll mit Hilfe selbstdefinierter Botschaften zu erstellen Die meisten kommerziellen Softwareprodukte benutzen jedoch das von Windows bereitgestellte Protokoll DDE um mit m glichst vielen anderen Produkten kommunizieren zu k nnen Eine Anwendung die bei einer anderen Daten anfordert wird als Client bezeichnet der Anbieter von Daten als Server Der Client leitet die Kommunikation als erster ein Er gibt eine Botschaft vom Typ WM_DDE_INITIATE als globaler Broadcast an alle im Haupt speicher befindlichen Programme wParam enth lt bei DDE Botschaften immer den Fen sterhandle des Senders Param die Art der gew nschten Daten Verf gt ein sich im Spei cher befindendes Programm ber solche Daten so erkl rt es sich zum Server und leitet die eigentliche Konversation ein Dazu legt der Server ein extra verstecktes Child Fenster auf Basis einer eigenen Fensterklasse und damit einer eigenen Window Prozedur an die die gesamte weitere Kommunikation mit dem Client bernimmt Auch hier geschieht der eigentliche Datentransfer ber Segmente des globalen Heaps die durch Aufrufe der Funktion GlobalAlloc mit dem Flag GMEM_DDESHARE belegt we
155. irektiven welche die Definitionen in getrennt bersetzten Einheiten sichtbar ma chen In ADA werden durch die with Klausel Bezeichner die innerhalb eines getrennt bersetzten Pakets einem Modul deklariert wurden sichtbar Deren Giiltigkeitsbe reich umfa t alle Programme die nach der getrennten bersetzung zusammengebun den werden 3 3 Uberpriifung der Kontextbedingungen Wir betrachten die Uberpriifung der Kontextbedingungen Deklariertheitseigenschaften Typkonsistenz an einem vereinfachten Fall einer Programmiersprache mit geschachtelten Scopes ohne Moduln und ohne Uberladung Eingebaute arithmetische Operatoren diirfen jedoch berladen sein man spricht hier von trivialer Uberladung Die berpr fung der Deklariertheitseigenschaften und der Typkonsistenz erfolgt getrennt und wird somit auch von zwei korrespondierenden Moduln dem Deklarations Analysator scope analyzer und dem Typ Analysator type analyzer vorgenommen Die folgende Darstellung der Kontextbedingungen ist in Wat84 und TVVM92 vertieft 3 3 1 Identifizierung von Bezeichnern Unter der Identifizierung von Bezeichnern siehe Anhang B 1 versteht man die Aufgabe jedem angewandten Vorkommen eines Bezeichners das gem der G ltigkeits und Sicht barkeitsregeln zugeh rige definierende Vorkommen zuzuordnen In unserem vereinfachten Fall gilt Zu jedem angewandten Vorkommen eines Bezeichners geh rt in einem korrekten Programm genau ein definierendes
156. ist p_f_def stat_list parameters IDE constant 5 TYPE type_list gt fype list type_def type_def IDE type 2 VAR var_list H var_list var def var def id list type IDE id list IDE 5 p_f_list H p_f_list p_f_def p_f_def H PROC IDE parameters block FUNC IDE parameters type ide block 5 statement y stat list statement 5 C parameter list y H ANHANG A GRAMMATIKEN 113 parameter list parameter Statement akt_parameter expr_list case_block case_body expression o s H parameter zi id list type FUNC id ist type VAR id_list type PROC id_list 5 variable expression BEGIN stat_list END IDE akt_parameter IF expression THEN statement IF expression THEN statement ELSE statement CASE expression OF case_block END WHILE expression DO statement REPEAT stat_list UNTIL expression FOR IDE expression TO expression DO statement FOR IDE expression DOWNTO expression DO statement H C expr list S expression expr list expression 5 case body case block case body 2 INTEGER statement 5 simple expression expression expression e expression expression gt expression
157. itt uu ee sms ol Lo Abb 5 4 Kontrolleiste bei Animationen Fortschritt Balken Gibt den aktuellen Stand der Animation an und auch indirekt den zu ervvartenden Umfang der Animation Buttons Geschwindigkeit Zeigt die Geschwindigkeit einstellen Dialogbox an in der sich die Animationsge schwindigkeit ver ndern l t KAPITEL 5 DIE ANIMIERTE PRASENTATION 74 Buttons Reset Taste Die Animation wird neu initialisiert und auf einen Anfangszustand zuriickgesetzt Stop 1 Taste Die mit dem Play Button gestartete Animation wird angehalten Sie kann von die sem Haltepunkt beliebig mit dem Play oder Step Button fortgesetzt werden Play 1 Taste L t die Animation mit Hilfe eines eingebauten einstellbaren Taktgebers laufen Sie kann mit dem Stop Button angehalten werden Step gt Taste F hrt immer nur einen Schritt der Animation aus Der Knopf mu also immer wie der gedr ckt werden Mit dem Play Button kann ein Taktgeber jederzeit zugeschal tet werden Zur ck Springt von den Animationen wieder auf die Seite zur ck von wo aus man diese aufgerufen hat 5 2 1 4 Statuszeile Innerhalb der Statuszeile zeigt das Programm kurze Hilfetexte an W hlt man einen Men punkt der Men leiste aus oder berstreicht einen Button der Kontrolleiste so schreibt das Programm eine entsprechende Erkl rung in die Statuszeile Sie l t sich ein bzw a
158. itt werden wir den Aufbau der animierten Pr sentation erl utern Diese Darstellung hat Handbuch charakter und kann somit auch als Nachschlagewerk f r die Bedienung dienen 5 2 1 Benutzeroberfl che und deren Eigenschaften Die Benutzeroberfl che des Hauptfensters ist in vier Elemente eingeteilt die Men leiste den Seitenanzeigebereich eine Kontrolleiste und eine Statuszeile die jedoch nicht stan dardm ig angezeigt wird siehe Abb 5 1 Das Hauptfenster hat eine fixe Gr e von 21 15 15 9 cm was etwas kleiner als die Oberfl che eines 15 Monitors mit einer Aufl sung von 800x600 Pixeln ist Damit ist das Programm auf Systemen mit geringerer Aufl sung nicht darstellbar Wir mu ten diese Min destanforderungen an das System stellen weil Animationen und Visualisierungen auf noch kleinerem Raum nicht vern nftig zu realisieren sind Kommerzielle Softwareanbieter die MTB 3 0 nutzen gehen diesen Weg meist ebenfalls 5 2 1 1 Men leiste Die Men leiste enth lt mehrere Unterpunkte die f r die Programmf hrung zust ndig sind Bei den Men namen haben wir uns aus Konsistenzgr nden siehe Punkt 1 der Richtlinien KAPITEL 5 DIE ANIMIERTE PR SENTATION 71 f r die Oberflachengestaltung aus Abschnitt 4 3 an den Windows Standard gehalten Eine Ausnahme bildet das Seite Menii welches f r ToolBook Applikationen typisch ist Datei Men Beenden Beendet die Pr sentation und schlie t gegebenenfalls die Online
159. j pathObj fixPoint steps Bewegt das Objekt obj in steps Schritten entlang eines Pfades pathObj Linie oder Winkellinie fixPoint gibt an wel cher Punkt am Pfadobjekt laufen soll Alle Ecken bzw der Mittelpunkt als Angabe m glich expandLineAlongPath lineObj linePathObj steps Expandiert eine Linie lineObj in steps Schritten entlang einer unsichtbaren Pfadlinie linePathObj expandAngledLineAlongPath angledLineObj angledLinePathObj steps Expandiert eine Winkellinie angledLineObj in steps Schritten entlang einer unsichtbaren Pfadwin kellinie angledLinePathObj 5 4 Botschaftsverarbeitung In Kapitel 2 haben wir das Zusammenspiel von Ereignissen Botschaften und Botschaftbe handlungsroutinen innerhalb von Skripten kennengelernt Wir haben auch gesehen da die Plazierung der Behandlungsroutinen bei den Objektskripten f r eine gewisse Un bersicht lichkeit und damit Wartungsunfreundlichkeit sorgt Um dieser Problematik zu entgehen haben wir den gr ten Teil der Routinen die mehrere Objekte gleichsam betreffen im Buchskript zentralisiert Dadurch wurde auch die Konsistenz der Funktionalit t von Benut zeraktionen erh ht Betrachten wir als Beispiel die Bet tigung eines Hotwords anklickbares Textelement mit der linken Maustaste Abgesehen von der eigentlichen Funktionalit t f rbt sich jedes Hotword konsistente Farbkodierung vgl Punkt 5 der Prinzipien f r den Farbgebrauch aus Abschnitt 4 6 beim Anklicken von blau
160. king Im Gegensatz zu preemptiven Multitasking Systemen die mit Hilfe einer Zeitscheibe nach einem bestimmten Zeitintervall von einem Proze zu einem anderen um schalten wechselt Windows i d R erst zu einem anderen Proze wenn die Warteschlange des aktuellen Prozesses leer ist bzw dort nur Botschaften niedriger Priorit t eingesetzt sind und ein Ereignis in der Warteschlange eines anderen Programms existiert Falls sich mehrere andere Programme in diesem Zustand befinden so w hlt das System das Programm mit der h chsten Botschaftspriorit t aus Es ist aber auch m glich manuell durch Aufrufen entspre chender Windows Funktionen direkt zu anderen Prozessen zu wechseln 1 2 Ereignisse Ereignisse werden zu Nachrichten hier Botschaften bersetzt und als Parameter der Window Prozedur an das Programm bertragen Eine Botschaft und somit auch die forma len Parameter der Window Prozedur besteht aus vier Elementen e Handle des Fensters e ID der Botschaft die in WINDOWS H als Konstante festgelegt ist e wParam ein 16 Bit Parameter der zur Botschaft geh rt und in Abh ngigkeit von der Botschaft unterschiedliche Bedeutung hat e Param ein 32 Bit Parameter der ebenfalls zur Botschaft geh rt und verschiedene Informationen enthalten kann Wird die Botschaft nicht von der Window Prozedur bearbeitet so schickt sie die Prozedur an das System weiter Die Windows Prozedur des ASA Tools im besonderen erh lt neben Systembotschaften
161. komplett durchlaufen werden Textanimation Zu allen wichtigen Bestandteilen des Algorithmus lassen sich Beispiel animationen aufrufen die ihrerseits wieder aus mehreren Seiten bestehen k nnen Die Abbildungen C 1 7 bis C 1 11 zeigen die wichtigsten Schritte einer solchen Beispielanimation Abb C 1 6 Algorithmenanimation f r den Deklarations Analysator ANHANG C BEISPIELE F R ANIMATIONEN 138 Compilerbau Symboltabelle Em Keller EA Rechts oben befindet sich die aktuelle Stelle im Quelltext zum Algorithmus f r den Deklarations Analysator Man kann die Elemente der Symboltabelle anklicken um eine kurze Erkl rung zu dem ausgew hlten Ele ment zu erhalten Es wird angenommen da im aktuellen dritten Block ein angewandtes Vorkommen eines Bezeichners d gefunden wurde Abb C 1 7 Erster Schritt der Beispielanimation zu einer Symboltabellenoperation ANHANG C BEISPIELE F R ANIMATIONEN 139 Compilerbau Datei Ansicht Optionen Seite Hilfe Fall 3 appl_id Sie m m Keiler RRE In der Quelltextzeile rechts oben ist ein Funktionsaufruf search_id id enthalten Diese Funktion ist nun links oben zu sehen Der die AnwenderIn kann den Quelltext f r diese Funktion zeilenweise abarbeiten lassen Eine Zeile die beispielsweise nur ein begin enth lt hat keine Animation zur Folge Weiterhin hat der Autor auf die erste Zelle eines Eintrags geklickt um sich deren Bedeutung anzeigen zu lassen Abb C 1 8 Z
162. l rung der einzelnen Elemente Abb 6 3 zeigt als Beispiel die Toolbar f r die Visualisierung des Unter schieds zwischen konkreter und abstrakter Syntax NEIE Abb 6 3 Eine m gliche Anzeige der Toolbar KAPITEL o DIE DYNAMISCHE ERWEITERUNG ASA 91 6 3 1 2 Animationsbereich Im Animationsbereich des Hauptfensters findet die Visualisierung der einzelnen Themen statt Basierend auf der graphischen Darstellung des aktuellen abstrakten Syntaxbaumes kann der die BenutzerIn auf diesem die Algorithmen starten und sich deren Funktionsweise verdeutlichen Dabei ist es m glich sich durch die Anwahl eines Syntaxbaumknotens die entsprechende zugeh rige Annotation anzeigen zu lassen Mehr zu den Visualisierungen im Abschnitt 6 4 6 3 1 3 Statuszeile Innerhalb der Statuszeile zeigt das ASA Tool Hilfetexte an die die Funktionalit t der Men elemente und der Steuerungskn pfe der Toolbar kurz erkl ren Dazu w hlt man bei gedr ckter linker Maustaste einen Men punkt aus oder dr ckt einen Knopf der Toolbar Zieht man den Mauscursor wieder mit gedr ckter Maustaste aus dem Knopfbereich heraus so wird keine Aktion durchgef hrt 6 3 2 Hilfsmittel ASA stellt mehrere Hilfsmittel zur komfortableren Nutzung des Tools zur Verf gung Da zu geh ren u a die Online Hilfe und der ASA Editor die beide in einem normalen Fenster Popup Window dargestellt werden sowie mehrere modale Dialoge etwa die Eingabe maske und der Dialog zum Einstellen
163. l bzw vertikal separieren Anordnung der zwei Animations fenster in denen jeweils ein Baum enthalten ist Eine f r diese Funktionalit t redundante Interaktionsm glichkeit bietet die Animationsansicht Dialogbox vgl Abb 6 7 in der auch die Gr e der unten beschriebenen Knoteninformation eingestellt werden kann Man kann bei beiden B umen unabh ngig voneinander zu einem beliebigen Teilbaum scrollen Animationsfenster anordnen Wahlen Sie die gew nschte Fensteranordnung aus Anordung 6 Zeige oben den konkreten und unten den abstrakten Syntaxbaum an C Zeige links den konkreten und rechts den abstrakten Syntaxbaum an C Zeige nur den konkreten Syntaxbaum an C Zeige nur den abstrakten Syntaxbaum an V Wahlen Sie die gew nschte Knoteninformation Gr e aus Gr e klein mittel gro Abb 6 7 Animationsansicht Dialogbox 1 Klickt man auf einen Knoten so wird eine kurze Information ber die Bedeutung des Kno tens dahingehend gegeben ob er im abstrakten Syntaxbaum ben tigt wird oder nicht und ob es sich bei ihm um ein Terminal oder ein Nichtterminal handelt Dabei wird der ausge w hlte Knoten rot hervorgehoben W hlt man einen anderen Knoten aus oder ndert die Layoutfaktoren so verschwindet die bisherige Information und der bis dahin aktuelle Kno ten wird wieder normalfarbig hellgrau dargestellt Geh rt der Knoten zum abstrakten Syntaxbaum dann beschr nkt sich die angezeigte Information auf d
164. le Knotentypen an Wahlen Sie die gew nschte Knotentypen Gr e aus Gr e ui klein mittel gro Abb 1 6 Beispiel eines Dialogfensters Die 3D Effekte werden von Windows 3 1 selbst nicht unterst tzt Sie entstammen der Funktionalit t der von Microsoft freigegebenen dy namischen Bibliothek CTL3DV2 DLL F r das Anlegen des Dialogfensters und dessen Kontrollelemente das Erzeugen bzw Verarbeiten von Botschaften und die Verarbeitung von Tastatur und Mausereignissen ist der Dialog Manager zust ndig Dabei handelt es sich um eine Gruppe von Funktionen die das Einf gen von Dialogen in Programmen vereinfachen und standardisieren Aus diesem Grund mu der die ProgrammiererIn keine eigene Window Prozedur f r einen Dialog anle gen sondern nur eine Dialog Prozedur die analog zu einer Window Prozedur aufgebaut ist aber wesentlich weniger Botschaften zugesendet bekommt Die notwendige Window Prozedur wird vom Dialog Manager gestellt und erf llt die Funktion eines Filters der sich um die meisten Botschaften des Systems selbst k mmert und bestimmte Botschaften an die Dialog Prozedur weitersendet Diese ist nur noch f r die Initialisierung der Kontrollelemen te beim Start des Dialogs das Bearbeiten von Botschaften die diese Kontrollelemente aus geben und f r eventuelle Aufr umarbeiten beim Beenden des Dialogs zust ndig Dialog Prozeduren verarbeiten Botschaften genauso wie normale Window Prozeduren liefern aber f r ver
165. le in einem Typterm auftre tenden Variablen an Das Ergebnis dieser Operation ist ein neuer Typterm Schlie lich f hrt compose eine Verkn pfung zweier Substitutionen 6 O2 durch und zwar so da zuerst und dann o auf das Resultat angewandt wird func emptySub a typevar sub begin return die leere Ersetzung 0 0 end ANHANG B ANIMIERTE ALGORITHMEN 124 func isEmptySub o sub bool begin if o ist eine leere Ersetzung then return true else return false fi end func newSub a typeVar t typeExp sub begin return t a end func substitute o sub t typeExp typeExp begin if isTypeVar t then if es existiert eine passende Ersetzung f r t in o then wende die Ersetzung auf t an fi else for i 1 to rank t do part typ t i substitute o part typ t i od fi return end func compose 61 sub O2 sub sub begin return 1 zl end Der Unifikator besteht aus zwei Funktionen Die Funktion unify unifiziert zwei Typterme und liefert eine allgemeinste Ersetzung zur ck Sie verwendet u a zur Behandlung von Li stentypen die zweite Funktion unifyall func unify t typeExp t typeExp sub begin if isTypeVar t then if occurs 11 t2 then if isTypeVar t2 then return emptySub t2 else error Unendlicher Typ fi else return newSub f f fi else if isTypeVar t then return unify f f fi fi ANHANG B ANIMIERTE ALGORITHMEN 125
166. ll 1987 C Reade Elements of Functional Programming Addison Wesley 1989 J A Robinson A Maschine_Oriented Logic Based on the Resolution Princi ple In Journal ACM 12 pp 23 41 1965 G Sander Visualisation of Compiler Graphs Technical Report Universitat des Saarlandes 1995 LITERATURVERZEICHNIS 154 San96 Sed91 Shn92 SR83 Sta89 Ste92 Wal90 Wat84 Wir95 Wir95a WM92 G Sander Visualisierungstechniken f r den Compilerbau Dissertation Universit t des Saarlandes 1996 R Sedgewick Algorithmen Addison Wesley 1991 B Shneiderman Designing the User Interface Strategies for Effective Human Computer Interaction 2nd Edition Addison Wesley 1992 K J Supowit E M Reingold The Complexity of Drawing Trees Nicely In Acta Informatica 18 pp 377 392 1983 G Staubach UNIX Werkzeuge zur Textmusterverarbeitung Awk Lex und Yacc Springer 1989 B Steiner Visualisierung der abstrakten Maschine MaMa Diplomarbeit Universit t des Saarlandes 1992 J Walker A node Positioning Algorithm for General Trees In Software Practice and Experience 20 7 pp 685 705 1990 D A Watt Contextual Constraints In Lor84 1984 S Wirtz Visualisierung der abstrakten Maschine WiM Diplomarbeit Uni versit t des Saarlandes 1995 W Wirth Windows 95 intern In PC Professionell 11 pp 168 226 Ziff Davis 1995 R Wilhelm D Maurer bersetzerbau Theorie Kon
167. lt einerseits Informationen ber das Ger t selbst etwa Aufl sung Pixel physikalische Dimensionen Papiergr e oder Anzahl der Farben Andererseits sind im Ger tekontext sogenannte Ger teattribute enthalten Das System besetzt zun chst die Attribute bei der Kontextanforderung mit Standardvor gaben ber entsprechende Aufrufe von GDI Funktionen lassen sich diese aber abfragen oder ndern Attribut Standardvorgabe Attribut Standardvorgabe Koordinatensystem MM TEXT Hintergrundmodus OPAQUE Fensterursprung 0 0 Hintergrundfarbe Wei Ursprung des Zei 0 0 Textfarbe Schwarz chenfensters Fenstergr e 1 1 Zeichenmodus R2 COPYPEN Gr e des Zeichen 1 1 Objekte strecken BLACKONWHITE fensters Stift BLACK_PEN Polygon F llmodus ALTERNATE F llmuster VVHTTE BRUSH Zeichenabstand 0 Schriftart SYSTEM_FONT Ursprung des F ll 0 0 Bildschirm musters Bitmap None Clip Fenster None Zeichenposition 0 0 Erkl rungsbed rftige Eintr ge wie MM TEXT werden an geeigneter Stelle erl utert Zeichenstifte Bitmaps Regionen Schriftarten Paletten und F llmuster sind GDI Objekte bei denen nicht ein einzelnes Programm sondern das GDI selbst als Besitzer ein gesetzt ist Jedes von einem Programm definierte GDI Objekt das in einen Kontext einge setzt ist mu vor Beendigung des Programms wieder manuell freigegeben werden 1 4 1 3 Koordinatensysteme Windows verwendet standardm ig ein auf
168. man die Operatorspezifikation mit folgender Syntax ein lt Operatorname gt lt Typ gt wobei lt Typ gt t x xt t mit fi t int real char bool f r 1sism Durch das Bet tigen des Einf gen Button ordnet die Eingabemaske die eingegebene Operatorspezifikation nach einem simultan ablaufenden Syntaxtest in die darunter befindlichen Listenfelder ein Handelt es sich um einen neuen Operatornamen so wird er neu in die Operatorliste aufgenommen Der dazugeh rige Typ kommt in die Typenliste die sich f r jeden angew hlten Operator anpa t Falls der Operator schon in der Operatorenliste steht so kommt der neu definierte Typ in die entsprechende Typenliste Analog l scht der L schen Button die betreffenden Eintr ge in der Ope rator bzw Typenliste Operatoren Diese Liste beinhaltet alle eingegebenen eventuell berladenen Operatoren Wenn auf einen Operatoreintrag geklickt wird dann erscheint seine Typenliste KAPITEL 6 DIE DYNAMISCHE ERWEITERUNG ASA 93 Eingabe der berladenen Operatoren Zugeh rige Typen Die Typenliste enthalt alle Typen des links in der Operatorenliste markierten Opera i tors Wenn man auf einen Typ doppelklickt so erscheint die entsprechende Opera i tor Typ Kombination oben im Eingabefeld Sie kann mit dem L schen Button aus den Listen entfernt werden Ausdruck Speichern unter Hilfe In das Textfeld gibt man einen Ausdr
169. mationsfenster zu inflexibel Eine Testimplementierung ergab zus tz lich gro e Probleme beim Einh ngen des Fensters in die Oberfl che der ToolBook Anwendung 2 wurde aus diesen Gr nden ausgeschlossen Alternative 3 l t sich zu 2 reduzieren Sie hat noch gr ere Nachteile bzgl der Kommunikation Ferner w ren Animationsfenster und Steuerungskontrollen f r die Anima tion voneinander getrennt Die Alternative 3 wurde deshalb ebenso verworfen bertr gt man die gesamte Animationssteuerung aus der animierten Pr sentation an das Animationsfenster so ergibt sich damit ein interaktives Windows Programm 4 Das ASA Tool basiert auf diesem Konzept Der Vorteil liegt in den Freiheiten z B unbegrenzte Fenstergr e die das Windows System bietet Die Kontrollen befinden sich in unmittelba rer N he zu den Animationen wobei die Kommunikation zwischen den Kontrollen und den Animationen lediglich innerhalb von ASA abl uft Nachteile sind der nach au en erschei nende konzeptionelle Bruch Widerspruch zu Punkt 1 und 2 der Richtlinien zur Oberfl chengestaltung aus Abschnitt 4 3 und die aufwendige Programmierung besonders bei der Gestaltung der graphischen Oberfl chen ASA bietet aus diesem Grund auch nur einfachere Animationen ohne komplexe Bewegungen an Wir haben das ASA Tool mithilfe des Win dows Compilers MS Visual C bersetzt Schlie lich bietet 5 die M glichkeit in mehreren Child Fenstern Animatione
170. melt und an den i ten Kinderknoten w bergibt In dessen Operatormenge k nnen nun durch Vergleiche die inkonsistenten Operatoren eliminiert werden Dieses Verfahren bernimmt der zweite Pass die top down Elimination Sind jetzt alle Operatormengen ein elementig dann wurde die berladung erfolgreich aufgel st Enth lt eine Menge kein Ele ment bzw mehrere Elemente dann gibt der Algorithmus eine entsprechende Fehlermeldung aus Als Beispiel wollen wir mit diesem Algorithmus die berladung in der Zuweisung A 1 2 an die real Variable A aufl sen F r die betroffenen Operatoren seien folgende Ope ratordefinitionen sichtbar KAPITEL 3 SEMANTISCHE ANALYSE 55 1 int gt int 2 real gt real 3 real x real real 4 int x int gt int 5 int x int gt real 6 real x real real Der Typ der Variable A ist real Deshalb ist es notwendig da der zugewiesene Ausdruck ebenfalls von diesem Typ ist Wir k nnen somit die sichtbare Definition 1 von der weite ren Betrachtung ausschlie en da der Resultatstyp dieser Operation int ist Wir sehen wei terhin da die Operation im zu untersuchenden Ausdruck 1 2 einstellig ist also nur einen Operanden hat Die durch 3 definierte Operation erwartet dagegen zwei Operanden womit auch 3 wegf llt Die nun folgende Abb 3 6 zeigt den mit den Operatormengen as soziierten Ausdrucksbaum von 1 2 nach der Initialisierung 2
171. mischung zweier Bitmuster zur Simulation ei nes Schattenwurfs Um Fl chen auszuf llen verwendet Windows ein sogenannte F llmuster Attribut F r die Funktionen Polygon und PolyPolygon gilt ein spezieller F llmodus F llmuster Bei einem F llmuster brush handelt es sich um ein 8x8 Pixel Bitmap wel ches horinzontal und vertikal solange auf einen F llbereich angewendet wird bis er vollst ndig aufgef llt ist F llmuster untergliedern sich in zwei Gruppen durchgehen KAPITEL 1 MICROSOFT WINDOWS 3 1 22 de F llmuster die jeweils einer Mischfarbe entsprechen und Schraffuren Man kann Muster beider Gruppen beliebig definieren oder die von Windows standardm ig be reitgestellten Muster benutzen Standardvorgabe ist das durchgehende F llmuster WHITE_BRUSH Polygon F llmodus Windows stellt an dieser Stelle zwei Modi zur Verf gung um festzu setzen was bei der Anwendung einer der Funktionen Polygon oder PolyPolygon ge f llt wird Der Standardmodus ALTERNATE veranla t das System dazu lediglich die abgeschlossenen Fl chen eines Polygons zu bearbeiten die von au en her ber das Durchqueren einer ungeraden Anzahl von Linien zu erreichen sind Im Modus WINDING werden dagegen s mtliche Innenfl chen eines Polygons gef llt 1 4 3 Bitmaps und Zwischendateien Bitmaps und Zwischendateien verk rpern zwei unterschiedliche Methoden zur Speicherung von Bilddaten 1 4 3 1 Bitmaps Bitmaps sind vollst ndige digitale Repr
172. mit Rechtecken der Start und Endpunkt links oben rechts unten ein und desselben Recht ecks d rfen nicht mehr als 32767 Einheiten voneinander entfernt sein 1 4 2 Zeichenfunktionen Dieser Abschnitt gibt eine bersicht der vom GDI unterst tzten Zeichenoperationen Im allgemeinen verwenden diese GDI Funktionen die im Ger tekontext festgelegten Attribute etwa die Zeichenfarbe Wie fast alle GDI Funktionen erwarten Zeichenfunktionen als Pa rameter die bergabe eines Handles zu einem Ger tekontext und diverse Koordinatenanga ben Meist beschreiben diese Koordinatenangaben das zu zeichnende Objekt vollst ndig Eine Ausnahme bildet LineTo hier wird lediglich die Zielkoordinate angegeben die Start koordinate ist die aktuelle Zeichenposition im Fenster welche mit der Funktion MoveTo verschoben werden kann Die einfachste Zeichenoperation ist das Einf rben eines Punktes Pixels mittels der Funktion SetPixel Windows erlaubt die Angabe insgesamt vier verschiedener Formen von Linien deren Darstellung Farbe Strichbreite usw von der aktuellen Ger teattributierung abh ngt Funktion Figur LineTo gerade Linien Arc elliptische Kreisb gen PolyLine Folge miteinander verbundenen Linien PolyPolyLine voneinander unabh ngige Linien Zus tzlich stellt das GDI sieben Funktionen zu Verf gung mit denen sich ausgef llte Fl chen mit R ndern zeichnen lassen Funktion Figur Rectangle Recht
173. n um die Anwendung zu testen Zum Vertrieb der fertigen An wendung stellt Asymetrix eine frei verf gbare Runtime Version von ToolBook zur Verf gung die nur das Arbeiten auf der Leserebene zul t KAPITEL 2 ASYMETRIX MULTIMEDIA TOOLBOOK 3 0 40 Compilerbau Datei Bearbeiten Ansicht Seite Objekt Text Zeichnen Werkzeuge Index Hilfe et ST ToT EASE if id ist Soe then return eu else s Fehler fi Identifier RE en ET id ET id a Et id oi e ET id a const 9 Semantische Analyse 9 1 Die Aufgabe der semantischen Analyse Field Prozedur of Page TypkonsistenzBsp4 10665 1620 B Ji 36v0n55 b a Autorenebene mit verschiedenen Hilfsmittelpaletten Compilerbau Datei Ansicht Optionen Seite Hilfe Fall 1 appl id appLid begin if id ist Operand then return type k else errot Modus Fehler fi end Identifier Da i o SCH N const appl appl N appl id ap id _appl_id const poco b Leserebene Abb 2 2 Autoren und Leserebene von MTB 3 0 KAPITEL 2 ASYMETRIX MULTIMEDIA TOOLBOOK 3 0 41 2 3 Programmierung in ToolBook Einige Objekte weisen ein von ToolBook vordefiniertes Verhalten auf Befindet sich bei spielsweise der Cursor ber einem Textfeld dann zeigt ToolBook bei jedem Tastendruck das entsprechende Zeichen im Feld an Script Eigenschaft zum Objekt
174. n Animationsroutinen zoomObjectCorner obj corner sizeBegin sizeEnd steps Zoomt in steps Schritten das Objekt obj von der Gr e sizeBegin in die Gr e sizeEnd ausgehend von der Ecke corner Die Ecken seien im Uhrzeigersinn von 1 bis 4 benannt zoomObjectSide obj side sizeBegin sizeEnd steps Zoomt in steps Schritten das Ob jekt obj von der Gr e sizeBegin in die Gr e sizeEnd ausgehend von der Seite side Die Seiten werden als Strings direkt bergeben left right top bottom zoomObjectCentre obj sizeBegin sizeEnd steps Zoomt in steps Schritten das Objekt obj von der Gr e sizeBegin in die Gr e sizeEnd ausgehend vom Mittelpunkt des Objekts centre pos size Berechnet den Mittelpunkt eines Rechtecks an der Position pos und der Gr e size KAPITEL 5 DIE ANIMIERTE PR SENTATION 78 centreOfObject obj Berechnet den Mittelpunkt des Objekts obj rotate obj rotPoint angle direction Dreht das Objekt obj in einem Schritt im Winkel von angle Grad um den Punkt rorPoint Die Drehrichtung wird durch direction ange geben animRotate obj rotPoint angle direction steps Rotiert das Objekt obj in steps Schritten im Winkel von angle Grad um den Punkt rotPoint Die Drehrichtung wird durch direction angegeben moveObiect obj newPos steps Bewegt das Objekt obj in steps Schritten von seiner gegenw rtigen Position zu einer neuen Position newPos moveObiectAlongPath ob
175. n Fensters Die Kennziffer des ausgew hlten Men punkts erscheint in wPa ram lParam ist h her und niederwertig Es gibt eine weitere wenn auch seltener verwendete M glichkeit Men s zu definieren Man baut das Men durch das Aufrufen entsprechender Window Funktionen zur Laufzeit schrittweise auf ohne einen Prototyp in der Ressourcen Datei festzulegen Dieses Verfah ren erm glicht zur Laufzeit ver nderbare Men s Abk rzungsbefehle accelerators sind Tastenkombinationen die Botschaften des Typs WM_COMMAND oder WM_SYSCOMMAND f r das Systemmen erzeugen Man verwendet sie meist um die Auswahl bestimmter Wahlpunkte von der Tastatur vorzu nehmen Definiert werden sie ebenfalls in der Ressourcen Datei und erhalten die identische Kennziffer zu derjenigen die der betreffende Wahlpunkt im Men Prototyp erhalten hat Mit dieser Vorgehensweise ist es m glich ohne zus tzlichen Programmieraufwand einen Men wahlpunkt ber die Tastatur anzusprechen da identische Botschaften verschickt wer den Das Botschaftsattribut wParam enth lt dementsprechend die Kennziffer des ausge w hlten Wahlpunkts Der niederwertige Teil von Param ist ebenfalls 0 aber HighWord ist 1 wodurch das Programm zwischen der Auswahl eines Men punkts durch die Maus oder durch einen Abk rzungsbefehl unterscheiden kann Im Abschnitt 1 2 1 wurde ber Tastaturereignisse gesprochen die das System in die Warteschlange des Programms einreiht Nun mu das Progr
176. n Timer bereitgestellt werden so f gt das System nach Ablauf jeder Periode die Botschaft WM_TIMER in die Warteschlange des Programms ein F r jeden Timer vergibt das System eine eindeutige Bezeichnung ID mit deren Hilfe sich der Timer beenden l t wParam enth lt die ID des Timers der die Botschaft sendet Param ist auf 0 gesetzt 1 2 4 Kontrollelemente Kontrollelemente sind Child Fenster die Maus und Tastaturereignisse ber eine Window Prozedur bearbeiten Sie zeigen Reaktionen auf die Aktion optisch an und informieren ihr Parent Fenster ber Ver nderungen ihres Status wobei das Parent Fenster bei der Erzeu gung des Kontrollelements festgelegt wird Meist sind sie in Dialogen vertreten Windows stellt Fensterklassen und Window Prozeduren f r Elemente dieser Art dem der ProgrammiererlIn zur Verf gung Sie werden auf Basis der Fensterklasse erzeugt erhalten einen Fenster Handle und eine eindeutige ID und werden ansonsten wie normale Fenster gehandhabt Schaltfl chen K stchen Radiokontrollen Fensterklasse button Es gibt insgesamt zehn verschiedene Formen von Kn pfen Editfenster Fensterklasse edit Sie dienen als Eingabefeld f r Text und dessen Bearbei tung Das Kontrollelement bernimmt die Verwaltung ber die Bewegung des Carets Textcursor das L schen und Einf gen von Zeichen das Markieren von Bereichen ber die Maus oder die Pfeiltasten der Tastatur das Ausschneiden markierter Berei che in
177. n assoziierte Attribut also beispielsweise der Zeiger auf die Deklarationsstelle der polymorphe Typ die mit ei nem Operatorknoten assoziierte ops Menge etc e Informationen die f r die Visualisierung und Animation selbst gebraucht werden Da zu z hlen der Fensterhandle f r das Knotenfenster vgl Abschnitt 6 5 3 Animations zust nde und die Pfadangabe f r den Pfeil vom angewandten zum entsprechenden de finierenden Vorkommen bei der Animation zur Uberpriifung der Kontextbedingun gen Um die Syntax der Beispielprogramme zu testen haben wir die Scanner bzw Parsergene ratoren FLEX und BISON verwendet siehe DS91 Die zugrundeliegenden Grammatiken und Symbolklassen fiir den Scanner sind in Anhang A ausgedruckt Der LALR 1 Parser generator BISON erlaubt es beliebige Aktionen durchzuf hren wenn der rechte Teil einer Produktionenregel zu einem entsprechenden Nichtterminal reduziert werden kann Dies KAPITEL o DIE DYNAMISCHE ERWEITERUNG ASA 99 nutzt man aus um die Syntaxbaumstruktur simultan zum Analysevorgang aufzubauen Wir geben als Beispiel eine Produktionenregel an statement variable expression build2 AssignStat 1 3 2 ere Kann die rechte Seite dieser Regel variable expression zu dem Nichtterminal state ment reduziert werden dann erzeugt die Funktion build2 einen neuen Syntaxbaumknoten des Typs AssignStat mit zwei Kindern Das erste Kind ist der mit dem Nichtterminal vari able
178. n von ver schiedenen Eingaben zu zeigen Der die BenutzerIn k nnte dann mehrere Animationsinstan zen miteinander vergleichen 5 w re eine geeignete Methode f r eine verbesserte zuk nf tige Version des ASA Tools 6 2 Starten des Programms Gestartet wird das ASA Tool entweder wie blich durch Anklicken der entsprechenden Ikone ber den Programm bzw Dateimanager oder ber die animierte Pr sentation Bei jedem Programmstart erscheint eine systemmodale Dialogbox in der das gew nschte Ani KAPITEL 6 DIE DYNAMISCHE ERWEITERUNG ASA 88 Wahlen Sie das gevv nsehte Thema aus Thema C Konkrete versus abstrakte Syntax Abbrechen berpr fung der Kontextbedingungen Uberladung von Bezeichnern C Polymorphismus gt Abb 6 1 Die Start Dialogbox von ASA mationsthema anzugeben ist vgl Abbildung 6 1 Dieser Dialog kann jederzeit wieder aus dem laufenden Programm aufgerufen werden um ein anderes Animationsthema auszuw hlen Ein Vorteil dieser Art der Auswahl ist die leichte Erweiterbarkeit von ASA mit neuen Animationen Statt den vier automatischen Ra diokontrollen ist es sinnvoll in diesem Fall ein Listenfenster f r die Auswahl einzusetzen 6 3 Aufbau ASA setzt sich aus einem Hauptfenster f r die Visualisierungen einem Editor f r die Einga be und diversen Dialogboxen zusammen Die in diesem Abschnitt gegebenen Erl uterungen ber den Aufbau des ASA Tools haben Handbuchcharakter und k
179. nd An hang B Nach einer Auswahl wird der entsprechende Algorithmus direkt im unteren Feld angezeigt Algorithmenauswahl Deklarations Analysator izi Algorithmus proc analyze_decl k node proc analyze_subtrees root node begin for i 1 to descs root do analyze_decl root i od end begin case symhik of block begin enter_block analyze_subtrees k exit_block end begin analyze_subtrees k foreach hier dekl Bezeichner id do enter_idfid Tk od end speichere search_id id an k Abb 5 8 Anzeige der Codes der animierten Algorithmen 5 2 2 5 Animationsgeschwindigkeit Durch den Play Button in der Kontrolleiste wird ein Windows interner Taktgeber gestartet der durch eine Geschwindigkeit Dialogbox eingestellt werden kann siehe Abb 5 9 Jede Animation verlangt in Abh ngigkeit ihrer Komplexit t eine spezifische Geschwindig keitseinstellung Zus tzlich mu die Aufnahmebereitschaft und f higkeit des der Anwen KAPITEL 5 DIE ANIMIERTE PR SENTATION 77 72 il Io ex B 012345678910 Hilfe Abb 5 9 Einstellen der Animationsgeschwindigkeit derln ber cksichtigt werden Daher ist es sinnvoll den AnwenderInnen zu gestatten jede gr ere Animation mit einer jeweils eigenen Geschwindigkeit ablaufen zu lassen Aus die sem Grund werden die unterschiedlichen Geschwindigkeitsniveaus mit dem Benutzernamen zu den jeweiligen Animationen abgespeichert Diese Einstellung wird in
180. ndows Botschaft in KAPITEL 2 ASYMETRIX MULTIMEDIA TOOLBOOK 3 0 45 eine ToolBook Botschaft hier die Botschaft buttonDown und sendet diese an die betrof fene Schaltflache Wenn hier keine Behandlungsroutine fiir diese Botschaft definiert wurde steigt die Botschaft der Objekthierarchie folgend nach oben bis eine Behandlungsroutine gefunden oder das Toolbook System als das bergeordnetste Objekt erreicht wird Bei der hier betrachteten Ubersetzung von Windows Botschaften wird diese Botschafts kette ganz zu Anfang aufgetrennt Dazu mu der die ProgrammiererIn eine spezielle Tool Book Funktion translateWindowMessage aufrufen die diese Trennung vornimmt Eine empfangene Windows Botschaft wird dabei in eine frei w hlbare Botschaft bersetzt und an ein beliebiges Objekt versendet dessen Skript eine f r diesen Zweck vorgesehene Behand lungsroutine enth lt Dadurch entf llt die Standardreaktion von ToolBook auf das Ereignis au er man leitet die Botschaft entweder direkt oder durch Ausnutzung der Objekthierarchie an das ToolBook System weiter Eine eingeleitete bersetzung von Windows Botschaften bleibt solange aktiv bis sie ma nuell durch Aufruf der Funktion untranslateWindowMessage terminiert wird Die Deakti vierung der bersetzung erfolgt automatisch durch das Schlie en des betroffenen Fensters f r das die Botschaft bersetzt wird sp testens jedoch durch das Beenden von ToolBook 2 6 Vorteile und Schw chen des Systems Den
181. ng EE 32 LR 20 EE EE SE il l 33 1 55 MDE EE EE 34 2 ASYMETRIX MULTIMEDIA TOOLBOOK 3 0 36 E RE EE 36 2 1 Arten v n Altorensystemen E 36 2 1 2 MTB 3 0 als ein Vertreter von Autorensystemen ss e esieesieeiie ii ie snil 37 2 2 Aufbau von MTB ProgrammMen cccccsccsssssccsssssecssscscccssssseessscsecssscssessssesessssccsesssscssessscesees 38 2 2 1 B cher Seiten Objekte een AYAR AY Y ste 38 2 2 2 Obfekte und Eigenschaften nennen ns 39 2 2 3 Autoren und Leserebe ne erene cosueveacevueden cesusctacevsscaacevscceacebscdaa ces veddasebuctaaseeselea 39 2 3 Programmierung in ToolBook cscssssessonsssonnssnsnsonsssensnnsnsensnssnsnnnnsnsnnsnnsnsensnnsnsnnsnssssnsensnsessnnnne 41 2 3 1 Ereignisse und Botschaften ainiti tenean eaa aana a EE EE 41 2 3 2 Objekthier fchie nee ernennen isdn 41 2 3 3 Erstellung von Behandlungroutinen 42 2 41 DDE 2 4 2 DLL 2 4 3 OLE 2 4 4 Importierung von Wimdow Ressourcen 44 2 4 5 bersetzen von Windows Botschaften 44 2 6 Vorteile und Schw chen des Systems ccccscccsscssscsssssecssscseessssssecssscscessssesesssscssesssscssessssesees 45 3 SEMANTISCHE ANALYSE 47 3 1 Vora ssetzunigen EE 48 3 1 1 Statische semantische Eigenschaften 48 EE eher 49 3 1 3 Konkrete vs abstrakte Syntax
182. ng oder Vi deodateien und Media Ger te Videokassetten Bildplatten Audio CD s etc e Hardware Einige Arten von Multimedia ben tigen zus tzliche Hardware um abge spielt werden zu k nnen Soundkarte Lautsprecher CD ROM Laufwerk usw e Ger tetreiber F r alle Arten von Multimedia sind die geeigneten Ger tetreiber bzw Software Schnittstellen zu installieren Dieser Treiber gen gen in der Regel dem MCI Standard Media Control Interface Da Text und Graphik schon durch das Windows System zur Verf gung gestellt werden Windows ToolBook ToolBook Anwendung Abb 2 1 ToolBook als Schnittstelle zwischen Anwendung und System aus Asy94a KAPITEL 2 ASYMETRIX MULTIMEDIA TOOLBOOK 3 0 38 vvollen vvir nur kurz auf die restlichen Multimedia Formate eingehen Ton ToolBook bietet die Nutzung von Ton in drei unterschiedlichen Formaten an Klang dateien WAV Wave Audio MIDI Dateien MID Musical Instrument Digi tal interface und CD Audio Video Es k nnen ebenfalls drei verschiedene Quellen f r Videosequenzen verwendet wer den Darunter geh ren digitale Videodateien z B AVI Dateien MPEG Dateien etc Bildplatten und Videob nder Animationen Bei Animationen wird eine Reihe von Standbildern die in der Regel auf Zeichnungen basieren in schneller Folge abgespielt Hierzu ist keine besondere Hardware erforderlich nur der entsprechende Ger tetreiber Informationen zu MTB
183. ng den 6 Ergebnistyp wieder mit neuen Typvariablen o und Die funktionale Abstraktion Av e hat den Ergebnistyp o gt wobei eine neue Typ variable f r den Typ von v und f der Typ ist der sich f r e ergibt wenn alle freien Vor kommen von v in e den Typ zugeordnet bekommen In einem er Ausdrucks let vi e vn en in en werden zuerst alle Gleichungen typgepr ft Das Resultat sind n Paare v f mit ti Typ von e 1 1 F r alle Vorkommen von v in eo setzt man verschiedene Versionen der t ein und berechnet dann den fo von eo den Ergebnistyp des let Ausdrucks Zwei Versionen eines Typs t unterscheiden sich lediglich in der Konsistenten Umbenennung aller Typvariablen in dem Typ Wir nennen sol che Typvariablen dann generisch In einer simultan rekursiven Definition letrec vj ei Mun en in en bekommen die Vorkommen der v in den e 1 Si amp n nicht generische Typvariablen und die in eu generische Typvariablen zugewiesen Zuerst kreiert man eine Typumgebung Tu er Veto mit nicht generischen Typvariablen Danach werden innerhalb dieser Typumgebung die Ty pen t der e ausgerechnet und diese Typen mit den bzw ihren Instanzen unifiziert Der Typ to f r eo ergibt sich durch Einsetzung verschiedener generischer Versionen der t f r alle Vorkommen der v in eo fo ist auch der Ergebnistyp des efrec Ausdrucks Die Elemente eines Listenausdrucks e e nl werden zuerst alle
184. ngen aufzunehmen OLE Objekte k nnen die verschiedensten Formen annehmen etwa Kalkulationstabellen und Diagramme MS Excel Textdokumente MS Word Bitmaps MS Paintbrush Au diodateien Animationen Videos etc In Klammern sind m gliche popul re Serveranwen dungen angegeben Dokumente die Daten anderer Programme enthalten bezeichnet man als Verbund dokumente Die Clientanwendung also das Programm welches ein OLE Objekt aufge nommen hat mu sich nicht um dessen Aufbereitung Anzeige Druck usw k mmern dies bernimmt der OLE Server Man bettet also nicht nur das Objekt selbst sondern auch die Bearbeitungsfunktionen des Servers in die Clientanwendung mit ein Klickt der die Be nutzerIn beispielsweise innerhalb des Clients auf das verbundene OLE Objekt so kann die Serveranwendung mit dem ausgew hlten Objekt als Dokument des Servers gestartet wer den etwa um Ver nderungen am Objekt vorzunehmen Windows bietet unterschiedliche Konzepte an welche die Interaktion mittels OLE zwi schen verschiedenen Programmen regeln Verbinden und Einbetten linking and embedding Um ein Objekt und ein Dokument zu vereinigen gibt es diese zwei M glichkeiten Bei verbundenen Objekten werden dessen Daten in einer separaten Datei abgelegt Der Client erh lt nur noch eine Refe renz auf diese Datei und auf den Server Dagegen werden eingebettete Objekte im Dokument des Clients selbst als Kopie des Objekts gespeichert In Place Aktivie
185. o Listenausdruck Aus den Basiswerten und Variablen k nnen mit bestimmten eingebauten Operatoren sowie Funktionsabstraktion und Funktionsanvvendung induktiv LAMA Ausdr cke erzeugt vverden Es besteht die M glichkeit Variablen simultan rekursiv und nicht rekursiv zu definieren Da die Sprache sehr einfach ist sind nur wenige Erkl rungen zum besseren Verst ndnis not wendig Die Konstruktion Av e definiert eine 1 stellige Funktion mit einem definierenden LAMA Ausdruck e Sie kann laut Syntax beliebig tief verschachtelt sein und l t sich somit als n stellige Funktion Av vn e schreiben Das trifft ebenso auf die Funktionsanvvendung eie2 zu Sie l t sich als eine Anwendung e em auffassen und wird von rechts nach links ausgewertet Ein letrec Ausdruck f hrt ebenso wie ein et Ausdruck n neue Namen V1 Va ein Beide Definitionen unterscheiden sich durch den G ltigkeitsbereich G der neu eingef hrten Variablen Im letrec Ausdruck umfa t er f r alle Variablen G eu e En und im 1 Ausdruck f r alle Variablen nur G eo 3 5 2 Typinferenz Wir f hren das Prinzip der Typinferenz zun chst intuitiv ein und geben hierzu eine Reihe von Typkombinationsregeln f r die zusammengesetzten LAMA Konstrukte an Die in die KAPITEL 3 SEMANTISCHE ANALYSE 58 sem Abschnitt vorkommenden Begriffe und die Typkombinationsregeln werden im n chsten Absehnitt 3 5 3 formal definiert Eine Zuordnung von fest e
186. ollen an dieser Stelle einen m glichen Inhalt der INI Datei mit Namen COBAU9_1 INI angeben USERNAME Name Andreas BOOKMARKS Andreas 16 Beatrix 10 SPEED Andreas_Animation3 0 8 Andreas_Animation13 0 27 Beatrix_Animation3 0 79 Andreas_Animation29 0 5 Der Abschnitt USERNAME enth lt den Namen des zuletzt aktuellen Benutzers Er wird beim Start der animierten Pr sentation abgefragt bzw als m glicher Name vorgeschlagen BOOKMARKS beinhaltet erstens alle Namen der Benutzer die jemals das Programms gestartet haben und zweitens zu jedem dieser Namen die Seitenzahl der zuletzt besuchten Seite Gibt ein eine Benutzerln zu Beginn der Sitzung einen dem Programm bekannten Na men an so fragt das Programm ob man auf dieser Seite die Sitzung fortf hren m chte F r Animationen ist der nun folgende Abschnitt SPEED von Bedeutung Jeder Anima tion ist eine voreingestellte relative Geschwindigkeit von 0 5 50 zugeordnet Benutzer definierte Ver nderungen der Geschwindigkeit werden in diesem Abschnitt aufgef hrt Der erste Eintrag besagt da der Benutzer Andreas die Geschwindigkeit der dritten Animation von 50 auf 80 erh ht hat 5 5 3 Animationssteuerung und deren Implementierung In diesem Abschnitt m chten wir etwas n her auf die Implementierung der Animations steuerung und den Zusammenh ngen zwischen den einzelnen Komponenten eingehen Das Ziel bei der Entwicklung einer solchen Steuerung war es ein Verfahren zu find
187. omaten entspre chenden Typs l sen die automatisch erzeugbar sind Basierend auf der Theorie der forma len Sprachen und der Automaten lassen sich auf diese Weise Ubersetzerteilaufgaben formal beschreiben Die nachfolgende Tabelle gibt eine kurze Ubersicht der Teilaufgaben deren teilweise Beschreibungsm glichkeit durch formale Spezifikationen und der generierten Automaten Ubersetzerteilaufgabe Spezifikationsmechanismus Automatentyp lexikalische Analyse regul re Ausdriicke deterministischer endlicher Automat syntaktische Analyse kontextfreie Grammatiken deterministischer Kellerau tomat semantische Analyse Attributgrammatiken effizienzsteigernde Trans Baum Baum endliche Baumtransdukto formationen Transformationen ren Codeselektion in der Code regul re Baumgrammatiken endliche Baumautomaten erzeugung Die semantischen Analyse berechnet Eigenschaften von Programmen die ber die reinen syntaktischen Eigenschaften hinausgehen aber durch Pr dikate auf Kontextinformationen Kontextbedingungen beschreibbar sind Diese Eigenschaften sollen jedoch bereits zur Ubersetzungszeit berechenbar sein und man bezeichnet sie daher als statische semantische Eigenschaften Hierunter fallen z B Typkorrektheit Deklariertheit Ausschlu8 von Dop 47 KAPITEL 3 SEMANTISCHE ANALYSE Quellprogramm als Zeichenfolge Vv Y lexikalische Analyse Adre zuordnung Scanner dekorierter Syntaxbaum v
188. on 3 5 3 2 Unifikation Das f r die Implementierung eines Typinferenzalgorithmus ben tigte Schl sselwerkzeug ist ein Unifikator Er basiert auf einem Standardalgorithmus der zuerst in Rob65 definiert wurde Unifikation wird auch bei der Implementierung von logischen Programmiersprachen verwendet etwa PROLOG Formal ist ein Unifikator wie folgt definiert Definition 3 5 7 Unifikator Eine Substitution o ist ein Unifikator f r zwei Typterme 1 und f wenn ot On Ein Uni fikator o f r zwei Typterme und f hei t ein allgemeinster Unifikator f r die zwei Typ terme wenn f r jeden Unifikator y dieser Typterme eine Substitution existiert so da y o In dieser Anwendung bekommt der Unifikator U als Eingabe zwei Typen t t2 und liefert eine allgemeinste Ersetzung o f r die in den Typen vorkommenden Typvariablen Wendet man 6 auf f und f an so erh lt man einen gemeinsamen Instanztyp dieser beiden Typen Beispielsweise sind die beiden Typen o und x int gt y kompatibel und k nnen mit der folgenden allgemeinsten Ersetzung o unifiziert werden 8 x int f r o und x int f ry co x int c 9 x int KAPITEL 3 SEMANTISCHE ANALYSE 61 Dies ergibt den unifizierten Typ x int gt 6 x int Eine Ersetzung o int x int c int x int y int 21 unifiziert ebenfalls die o g Typen Sie ist aber keine allgemeinste Erset zung denn der nun resultierende unifizierte Ty
189. op down Elimination Alle ops Mengen sind einelementig d h die berladung wurde vollst ndig aufgel st 3 5 Polymorphismus Sprachen die parametrischen Polymorphismus erlauben gestatten die Definition von Funktionen die fiir mehrere Kombinationen von Operanden und Ergebnistypen dasselbe tun Dieser Polymorphismus ist Bestandteil vieler funktionaler Programmiersprachen und der generischen Pakete in ADA Um dies zu bewerkstelligen braucht man ein Modul das feststellt ob ein gemeinsames Typschema fiir die oben genannten Kombinationen von Typen existiert Es ordnet jeder in einem typkorrekten Programm definierten polymorph getypten Funktion ihren allge meinsten Typ zu Bei allen Compilern fiir Programmiersprachen mit polymorphen Typen ist ein solches Modul der Typinferenzalgorithmus implementiert Typterme k rzer Typen werden aus Typvariablen a y die f r beliebige Typen stehen und aus Operatoren aufgebaut Typterme hei en polymorph wenn sie Typvariablen enthalten solche Typterme ohne Typvariablen hei en monomorph Nullstellige Operatoren sind beispielsweise int oder bool die f r die eingebauten Typen int bzw bool stehen Es ist zu beachten da mit dem Begriff Typen in diesem Fall keine Typtermdarstellung gemeint ist sondern die eingebauten Typen der zugrundeliegenden Programmiersprache hier die funktionale Sprache LAMA Ein einstelliger Operator ist list Zweistellige Operatoren sind der Konstruktor f r Funktion
190. ornherein in einer anderen Pro grammiersprache in C z B als DLL s implementiert werden Dazu geh ren die zu ani mierenden Algorithmen Scanner Parser Aufbau der Syntaxbaumstruktur Baumlayout etc Es gab nun mehrere Alternativen um der animierten Pr sentation eine dynamische Komponente zu geben 1 Ausschlie liche Verwendung von ToolBook Berechnungen und Algorithmen werden in C implementiert 2 Verwendung von ToolBook erweitert um ein unbewegliches Animationsfenster externes Windows Programm das in dieselbe ToolBook Instanz eingebaut ist 3 Verwendung von ToolBook erweitert um ein bewegliches Animationsfenster externes Windows Programm das in dieselbe ToolBook Anwendung eingebaut ist 4 Verwendung von ToolBook und eines eigenst ndigen Windows Animationspro gramms in C das alleine und auch von der in ToolBook implementierten animierten Pr sentation aus aufgerufen werden kann 5 Wie 4 aber das Animationsprogramm nutzt das MDI Interface von Windows 3 1 Alternative 1 hatten wir wegen den Restriktionen von ToolBook bereits oben abgelehnt Eine gute L sung w re 2 gewesen Diese Alternative erm glicht eine konsistente Oberfl che schnellen Bildaufbau im Animationsfenster und einer Animationssteuerung durch die ToolBook Anwendung Ein Nachteil ist der gro e Kommunikationsaufwand zwischen bei den Programmen besonders bei der Steuerung der Animationen Au erdem ist ein in der Gr e festgelegtes Ani
191. p int x int gt int x int ist eine Instanz des allgemeinsten Typ der gefunden werden kann n mlich 6 x int gt 6 x int Formal ist o kein allgemeinster Unifikator der beiden Typen da o do mit 6 int Im Gegen satz dazu k nnen die folgenden Typen o o und x int gt bool nicht unifiziert werden weil es keine Ersetzung zur Unifikation der beiden Typen gibt Feh ler wie dieser kommen vor wenn zwei Typen entweder wie im vorigen Fall inkompatibel sind oder wenn eine Variable mit einem Typterm identifiziert wird der dieselbe Variable enth lt Ein Beispiel dieses Problems des unendlichen Typs ist etwa die Unifikation der beiden Typen a gt a und 6 x int gt f Um dieses Problem zu erkennen ist ein sogenannter Vorkommenstest occurs check n tig der allerdings in den meisten Systemen aus Kostengr nden nicht durchgef hrt wird Unsere Implementierung enth lt jedoch diesen Test Die eingegebenen Beispielprogramme sind meist so klein da dieser Test nicht ins Gewicht f llt St t der Unifikator auf einen Fehler so gibt er eine entsprechende Meldung aus d h er terminiert immer 3 5 3 3 Typinferenzsystem Wir geben nun das verwendete Typinferenzsystem an Dazu wollen wir zun chst eine spe zielle Schreibweise einf hren um lediglich Regeln angeben zu m ssen welche die Ausdr k ke der Sprache LAMA selbst betreffen und nicht etwa noch Regeln zu Instantiierung etc Diese Schreibweise wurde in C
192. p der berladung von Bezeichnern anhand eines einfachen ADA Programms zu erkl ren Es wird gezeigt da zu einem angewandten Vorkommen eines Funktionsbezeich ners mehrere definierende Vorkommen existieren Abb C 1 12 Textbeispiel f r die berladung von Bezeichnern ANHANG C BEISPIELE F R ANIMATIONEN 144 Compilerbau Datei Ansicht Optionen Seite Hilfe Menge von Ausdr cken Menge von Variablen Menge von Basiswerten OP un Menge von un ren Operatoren ber Basiswerten OP bin Menge von bin ren Operatoren ber Basiswerten Elementname Bereich blvl opa 8 21 Pris sz letrec v e v e ine Typkombinationsregel tif e then ez else e Typumgebung o neue Typvariablen ave bn co Mai Sn oy nicht generisch letrec vs ey Anwendung v ez Die errechneten Typen t f r e ergeben sich wenn alle Vorkomman der in den e den gleichen nicht generischen Typ amp zuge ordnet bekommen Unifikation der ti mit oj Der Typ t f r e ergibt sich durch Einsetzung verschiedener generischer Versionen der t f r alle Vorkommen der v in e Ergebnistyp Beispiel 9 Semantische Analyse 9 1 Die Aufgabe der semantischen Analyse Zu den einzelnen zusammengesetzten LAMA Ausdriicken lassen sich die entsprechenden Typkombinations regeln anzeigen Oben wurde der Begriff angew hlt um einige Beispiele f r die Elemente aus der Menge zu
193. peicher geladen und die entsprechenden Bibliotheksfunktionen aus gef hrt Um eine DLL zu laden sucht Windows zuerst im aktuellen Verzeichnis dann im SYSTEM Verzeichnis von Windows im Windows eigenen Verzeichnis und schlie lich in allen Verzeichnissen die ber die PATH Umgebungsvariable von DOS festgelegt wurden DLL Dateien k nnen einen beliebigen Suffix im Dateinamen haben er lautet aber meist doch DLL Das Konzept der dynamischen Bibliotheken hat folgende Vorteile e Weniger Hauptspeicherbelastung da eine DLL h chstens genau einmal in den Speicher geladen wird Mehrere Programme k nnen auf ein und dieselbe im Speicher befindliche Bibliothek zugreifen e Verbesserte Modularisierung Bestimmte Funktionen die mehrere Programme ge meinsam ben tigen k nnen in eine DLL gepackt werden e Leichteres Updaten Bereits existierende Programme lassen sich durch einfachen Austausch von DLL s aktualisieren ohne das Hauptprogramm neu zu bersetzen Rechtlich gesehen kann man DLL s separat lizensieren 1 5 3 1 Eigenschaften In einer ausf hrbaren Datei EXE DLL findet das System die Eigenschaften des ent sprechenden Programms Diese Informationen unterteilt man in f nf Abschnitte wobei je nach Art der Datei der eine oder andere Abschnitt vollst ndig fehlen kann 1 den EXE Dateikopf des alten DOS Formats 2 den neuen EXE Dateikopf von Windows 3 eine Liste der Code und Datensegmente die die Datei definiert 4 di
194. prechende abstrakte Syntaxbaum des LAMA Ausdrucks im Animationsbe reich gezeichnet W hlt man aus dem Men Animation den Punkt Endergebnis so wird die Typinferenz auf dem LAMA Ausdruck gestartet Als Hinweis auf den Abschlu der Be rechnungen auf allen Knoten f rbt das ASA Tool die Knoten dunkelgrau Bei einem Typfeh Animationsfenster anzeigen Wahlen Sie die gevv nschte Fensteransicht aus SE X Zeige ein Fenster mit der initialen Typumgebung an Abbrechen X Zeige alle Knotentypen an Wahlen Sie die gevv nschte Knotentypen Gr Be aus Gr e klein mittel C gro Abb 6 10 Animationsansicht Dialogbox 4 KAPITEL 6 DIE DYNAMISCHE ERWEITERUNG ASA 98 ler erscheint eine Meldung Klickt man auf einen Knoten im Syntaxbaum so wird sein durch den Typinferenzalgorithmus berechneter polymorpher Typ eingeblendet Diese Typattribute bleiben solange an den Knoten sichtbar bis sie durch erneuten Mausklick manuell geschlossen werden oder die Animation auf ihren Anfangszustand zu r cksetzt Sie passen sich wie blich simultan an ein neues Baumlayout an M chte man alle Knotenattribute hier die polymorphen Typen auf einmal anzeigen lassen die Gr e der Attribute ver ndern oder die initiale Typumgebung aller im Beispiel verwendeten eingebau ten LAMA Operatoren einblenden dann lassen sich alle diese Einstellungen in einer speziel len Dialogbox vgl Abb 6 10 vornehmen die durch den Men punkt Animationsfen
195. pt die auf eine bestimmte Botschaft reagieren Es ist damit auch m glich da eine Behandlungsroutine durch eine andere aufgerufen wird die die Botschaft direkt versendet Ein Skript Kann mehrere Behandlungsroutinen enthalten und jede Behandlungsroutine im Skript kann auf ein anderes Ereignis reagieren 2 3 2 Objekthierarchie Das ToolBook System sendet Botschaften in einer bestimmten Reihenfolge von Objekt zu Objekt die als Objekthierarchie bezeichnet wird L st ein Ereignis eine Botschaft aus so sendet das ToolBook System diese Botschaft an das Zielobjekt z B ein Graphikobjekt Hat KAPITEL 2 ASYMETRIX MULTIMEDIA TOOLBOOK 3 0 42 dieses Objekt keine Behandlungsroutine f r diese Botschaft definiert dann wird die Bot schaft an ein anderes Objekt gesendet das sich innerhalb der Objekthierarchie tiber dem urspr nglichen Zielobjekt befindet bergeordnetes Objekt genannt Ist das Graphikobjekt Teil einer Objektgruppe so wird das Skript dieser Gruppe auf eine passende Behandlungs routine hin untersucht Falls die Botschaft dort ebenfalls nicht von einer Behandlungsroutine aufgefangen wird so leitet sie das ToolBook System der Reihe nach an die Seite den Hin tergrund das Buch an eventuelle Systemb cher und schlie lich an das ToolBook System weiter siehe Abb 2 4 Dort ankommende Botschaften werden entweder ignoriert oder falls es sich dabei um eine integrierte Botschaft handelt durch vordefinierte Aktionen be handelt
196. ptiven Multitasking ist das schrittweise Ablaufenlassen der animierten Algorithmen in ASA leicht zu realisieren Das non preemptive Multitasking von Windows 3 1 erschwert die Realisierung dieser Idee sehr Wir haben unsere Implemen tierung bereits so vorgenommen da fiir diesen Zweck keine gro en nderungen am be stehenden Quelltext vorgenommen werden m ssen und die hierf r ben tigten Steuerungs elemente im Programm nur noch sichtbar zu machen sind Zus tzliche M glichkeiten der Modularisierung vom Programmen bieten die soge nannten VBX Kontrollen von Visual Basic sowie die neuen OCX Kontrollen unter Win dows 95 Unter diesen Begriffen versteht man Module die einfach in ein Programm einge bunden werden k nnen um spezielle Aufgaben zu bernehmen Dazu geh ren z B eine kleine primitive Datenbank Tachometeranimationen etc W hrend VBX Kontrollen nur mit Visual Basic erstellt werden k nnen ist die Erzeugung von OCX Kontrollen mit mehre ren Compilern m glich In Kapitel 5 haben wir mehrere Basisanimationen kennengelernt deren Geschwindig keit bei Bewegungen von Objekten noch von der Leistungsf higkeit des Prozessors bzw der Graphikkarte abh ngen Wie schnell solche Elementaranimationen hintereinander abge spielt werden ist jedoch timergesteuert und somit vom System unabh ngig Die Geschwin digkeit von bewegten Objekten sollte aber auf allen Plattformen gleich sein Optimal w re es wenn das Programm mit wachsender Pro
197. r erregen das Auge e betonen eine einfache Oberfl che e erlauben feine Unterschiede in komplexen Oberfl chen e heben die logische Organisation von Informationen hervor e verst rken die Beachtung von Warnungen e bewirken emotionalere Reaktionen Die gro e Verf gbarkeit von Farben die durch die heutigen leistungsf higen Farbbildschir me und Graphikkarten erreicht wird verleitet leicht zu Farbmi brauch Deshalb bieten wir einige Anhaltpunkte zum Gebrauch von Farben an 1 Sparsame Benutzung von Farben Zu viele Farben berfrachten den Bildschirm mit optischen Informationen leerer Semantik Identische Farben sollten dann benutzt wer den wenn eine Beziehung zwischen den Objekten besteht 2 Farben erm glichen die Beschleunigung bzw die Verz gerung von Aufgaben Beispielsweise bewirkt das sogenannte Syntax Coloring neuerer Editoren f r be stimmte Programmiersprachen das schnelle Erkennen syntaktischer Strukturen wo durch Syntaxfehler vermieden werden k nnen 3 Farbkodierungen erh hen die Informationsdichte In dichten Graphen k nnen sich berschneidende Kanten z B unterschiedlich eingef rbt werden um eine bessere Un terscheidung zu erreichen 4 Sicherstellung da die Farbkodierung die Aufgabe unterst tzt Keine willk rliche F rbung von Objekten 5 Farbkodierung soll konsistent sein Die Regeln die die EntwicklerInnen f r die Farbkodierung von Objekten anwenden sollten im gesamten Programm gelten
198. r neu erzeugt und dessen Gr e festgelegt haben Setzt man dieses Bitmap in einen Speicherkontext ein so erh lt er vom System dieselben Ausma e wie das eingesetzte Bitmap Es wird somit gewisserma en zur Zeichenfl che die man beliebig mit Zeichenoperationen oder Textausgaben bearbeiten kann Auf diese Weise lassen sich auch aus Dateien entnommene Bitmaps ver ndern Nun kann man mit sogenannten Bitblock Transfer Funktionen des GDI das Bitmap aus dem Speicherkontext in einen beliebigen Ger tekontext oder auch wieder in einen anderen Speicherkontext kopieren Eine solche Funktion ist BirBlt Sie erlaubt die Angabe der Posi tion im Zielkontext und einer Rasteroperation ROP welche z B das Invertieren eines Bitmaps w hrend des Kopiervorgangs vornimmt Mit anderen Bitblock Transfer Funktionen wie StretchBlt lassen sich Bitmaps dehnen strecken spiegeln oder skalieren Die mit diesen Funktionen in Zusammenhang stehenden Kontextattribute sind KAPITEL 1 MICROSOFT WINDOWS 3 1 23 Bitmap Das in den Speicherkontext eingesetzte Bitmaps wird hier festgelegt Windows setzt standardm ig kein Bitmap in einen Speicherkontext ein und besetzt das Attribut mit dem Wert None Objekte strecken Das Attribut gibt die Art und Weise an wie StretchBlt bei Verkleine rungen zwei oder mehr Pixel miteinander kombiniert wenn Pixel gel scht werden Die Standardvorgabe BLACKONWHITE f hrt ein logisches AND auf den Pixeln aus und erzeugt nur dann ein wei es
199. rbaum rechts positioniert wurde so wird der erste kleine Unterbaum um 1 4 der entstandenen L cke der zweite kleine Unterbaum um V und der dritte kleine Unterbaum um nach rechts gependelt N Abb 6 13 Auspendeln von Unterb umen Die zweite Traversierung eine Preorder Traversierung bestimmt die endg ltige x Koordinate von jedem Knoten Sie startet beim Apex summiert f r jeden Knoten k den Wert prelim k mit der vereinigten Summe der Modifizierer Werte seiner Vorfahren Sie addiert dazu auch einen Wert der die gew nschte Zentrierung des Baumes im Animations bereich gew hrleistet Unsere Implementierung dieses Layoutalgorithmus ist eine erweiterte Version des oben beschriebenen Algorithmus Die Syntaxbaumknoten haben je nach Beschriftung eine unter schiedliche H he und Breite Das Layoutverfahren mu te f r diesen Umstand angepa t werden Weiterhin ist der Baum in vier Richtungen drehbar d h der Apex des Baumes kann sich im Fenster oben unten rechts oder links befinden siehe Abb 6 14 Die Layoutpara meter Ebenenseparation Geschwisterseparation und Unterbaumseparation lassen sich beliebig ver ndern Zusammen mit der Skalierungsm glichkeit des Baumes wird den An wenderInnen erm glicht die jeweilige optimale Darstellung des Syntaxbaumlayouts im Ani mationsbereich einzustellen siehe auch Abschnitt 6 3 2 4 a Apex oben b Apex links c Apex unten d Apex rechts Abb 6 14 Baumorientierungen Da jeder S
200. rden M chte man eine Animationsseite hinzufiigen so ist lediglich eine neues Seitenskript notwendig und im Extremfall eine Erweiterung der Arrays fiir svAkt und svMax was aber auch automatisch erfolgen kann 5 6 Aufruf der dynamischen Erweiterung Jeweils am Ende jedes Themas das in der animierten Prdsentation vorgestellt wird hat der die BenutzerIn die M glichkeit ein Fenster der dynamischen Erweiterung ASA zu ff nen um sich dieses Thema anhand von Beispielen naher zu verdeutlichen Die Abbildung 5 12 zeigt den Aufruf des ASA Tools aus einer Seite der animierten Pr sentation Bevor das ASA Tool endg ltig startet erscheint vorher eine systemmodale Dialogbox die das ausgew hlte Thema von vier m glichen anzeigt und es so dem der AnwenderIn erm glicht die Auswahl zu ndern oder aber auch zur ckzunehmen Welche Themen von ASA behandelt werden k nnen ist im n chsten Kapitel 6 beschrieben ASA Aufl sung der berladung UBG1_2 0LS T Datel Ansicht Elngabe Parameter Animation Hilfe gt amp beb Dynamische Animation Nun k nnen Sie Ihr neues Wissen ber die berladung von Bezeichnern noch einmal anhand von trei w hlbaren Beispielen n Dynamische Animation zur berladung von Bezeichnem Ubungen Um sich selbst zu kontrollieren sollten Sie das folgende bungsprogramm nutzen reet been IntConet meer Interaktive bung mit d
201. rden m ssen 1 5 2 1 Atomtabelle Die Identifizierung der Daten geschieht ber drei Strings die f r jeden Server exakt zu do kumentieren sind Anwendung application Name des Servers KAPITEL 1 MICROSOFT WINDOWS 3 1 28 e Thema topic Ein Oberbegriff f r das gew nschte Datum Datum item Die einzelnen Datenelemente die zu einem Thema verf gbar sind Nun tibergibt das System bei einer DDE Botschaft nicht diese drei Strings fiir Anwendung Thema und Datum sondern sogenannte Atome die als Botschaftsparameter Param mit gesandt werden Ein Atom ist ein 16 Bit unsigned integer Wert ber den Windows die Be arbeitung von Zeichenketten erlaubt Die Zeichenketten sind in der globalen Atomtabelle des Systems gespeichert und mit den entsprechenden Atomen verkniipft Es existieren auch Definitionen fiir lokale Atomtabellen die im programmeigenen Datensegment angelegt wer den k nnen was in diesem Zusammenhang von nur untergeordnetem Interesse ist da wir Kommunikation zwischen verschiedenen Prozessen untersuchen wollen Ein Windows Programm kann diese globale Stringverwaltung des Systems mit folgenden vier Funktionen ansprechen Name Beschreibung GlobalAddAtom f gt der Atomtabelle des Systems einen String hinzu erh ht bzw den zugeordneten Z hler und liefert ein Atom zur ck GlobalDeleteAtom erniedrigt den einem Atom zugeordneten Zahler in der Atomtabel le des Systems und l scht den Str
202. reiben Ein solcher Zustand s besteht aus einem Paartupel o o dessen erster Eintrag eine akku mulierte Ersetzung o der zweite Eintrag die n chste neue generische Typvariable o enth lt An einem Zustand s erhalten wir ber sub s die akkumulierte Ersetzung o von s var s die n chste neue generische Typvariable amp von s Die Funktion newTypeVar erzeugt aus einem gegebenen Zustand eine neue Typvariable und liefert den neuen Zustand zusammen mit der neuen Typvariable zur ck extendSub erweitert einen Zustand um eine neue Ersetzung durch Verkn pfung der Ersetzungen Um die ak tuelle Ersetzung aus einem Zustand zu extrahieren wird die Funktion getSub verwendet stateO erzeugt einen neuen leeren Zustand ANHANG B ANIMIERTE ALGORITHMEN func newTypeVar s state tuple of typeExp and state begin var s ot wobei amp neue Typvariable return Q s end func extendSub o sub s state state begin if isEmptySub o then sub s compose O sub s fi return s end func getSub s state sub begin return sub s end func stateO state begin sub s emptySub 0 var s initiale neue Typvariable return s end 127 Die n chste Gruppe von Funktionen bearbeitet die Typinstantiierung rawType liefert den neuen Typterm der sich durch die Anwendung der aktuellen Substitution auf den Typ der Umgebung ergibt der sich auf den aktuellen Knoten bezieht Die Funktion generic stellt fe
203. ren Hilfe sich eine neue Eingabe datei oder eine bereits vorhandene unter neuem Namen speichern l t Ruft die kontextsensitive Online Hilfe fiir diesen Dialog auf Die der Eingabesyntax zugrundeliegende Grammatik ist im Anhang A 3 angegeben 6 3 2 4 Layoutparameter Der Dialog zur Einstellung der Layoutparameter besteht aus zwei Gruppen und vier But tons vgl Abb 6 6 Die Layoutgruppe enth lt Einstellungen welche das Aussehen des erzeugten Syntaxbaums zum Gegenstand haben Andererseits dient die Animationsgruppe f r Einstellungen Animationen betreffend abgeschlossener Dialog vgl Punkt 4 der Prinzipien zum Dialogdesign aus Abschnitt 4 2 KAPITEL o DIE DYNAMISCHE ERWEITERUNG ASA 94 Allgemeine Parameter Animation Se Orientierung Layout Faktoren oben nach unten Geschwister Abstand 40 HJ I J 14 2 unten nach oben Elter Kind Abstand 105 zi LI 1 C links nach rechts Unterbaum Abstand 42 LILI m l rechts nach links Skalierung 100 4 LJ 191 Ei Abb 6 6 Dialog zur Einstellung der Layoutparameter Layoutgruppe Orientierung Layoutfaktoren Hier stehen vier sich gegenseitig ausschlie ende M glichkeiten zur Verf gung die Ausrichtung des aktuellen Syntaxbaumes zu ver ndern Dies ist dann sinnvoll wenn der Baum verh ltnism ig sehr breit bzw hoch ist und man ihn sich komplett an sehen m chte ohne die Skalierung zu n
204. ruf hintereinander m glich 4 Verwenden der Daten Dies mu vor dem Schlie en der Zwischenablage erfolgen weil dann die Daten in den Besitz der Zwischenablage bergehen Eventuell ist es sinnvoll an dieser Stelle die Daten zu kopieren um sie auch nach dem Schlie en wei ter verwenden zu k nnen 5 Schlie en der Zwischenablage CloseClipboard Intern geschieht diese bergabe von Daten lediglich durch eine nderung des Besitzers eines Speicherbereichs dessen Bezeichnung Windows bei Segmenten im globalen Heap festh lt Die Funktion GetClipboardData setzt das auslesende Programm als Besitzer ein wogegen zuvor SetClipboardData das Modul USER die DLL welche die Clipboard Routinen enth lt als Besitzer der Daten eingesetzt hat Nach dem Aufruf von CloseClip board erh lt die Zwischenablage die Besitzrechte zur ck um so wieder anderen Program men einen Datenzugriff zu erm glichen Die Routinen der Zwischenablage stellen also eine Art Verwaltung gemeinsam verf gbarer Segmente im globalen Heap dar Im Umgang mit der Zwischenablage ist bei der Programmierung darauf zu achten da w hrend des Zugriffs auf die Zwischenablage nur eigene Dialoge ge ffnet werden die kei nen Einflu auf die Zwischenablage haben Beispielsweise verwenden dort definierte Edit fenster die Zwischenablage implizit d h es kann zu Problemen kommen welche die Daten der Zwischenablage ver ndern bzw l schen 1 5 2 DDE Eine M glichkeit zur Kommunikat
205. rung W hlt der die Benutzerln das OLE Objekt im Verbunddokument aus so erscheint in der Clientapplikation die Men leiste und die Benutzerschnittstelle des OLE Servers Automation Dieses Verfahren erm glicht es da eine Applikation der Automations Client eine andere Applikation den Automations Server fernsteuern kann Verbunddateien oder dokumente In diesen Dateien lassen sich die Daten verschieden ster Programme ablegen Drag and Drop Dieser Mechanismus erlaubt den Transfer von Daten von einer Applika tion zur anderen oder auch innerhalb ein und derselben Applikation unter Zuhilfe KAPITEL 1 MICROSOFT WINDOWS 3 1 34 nahme der Maus Man greift mit der Maus Daten die meist mit Ikonen symbolisiert sind bewegt sie mit gedr ckter linker Maustaste zu der Zielposition und l t sie dort sozusagen fallen Pet92 enth lt leider nichts ber OLE 2 0 Einen kleinen berblick geben Asy94a und FA94 1 5 5 MDI Bisher hatten wir unausgesprochen immer nur Programme betrachtet die lediglich mit ei nem einziges Dokument Text Bild etc arbeiten Dies ist durch die Standardschnittstelle Single Document Interface SDI von Windows vorgegeben Das Multiple Document Inter face MDP beschreibt eine Fensterstruktur und eine Benutzeroberflache die das Verwalten und Bearbeiten mehrerer Dokumente innerhalb einer einzelnen Programmkopie erlaubt Es stellt somit zum einen e eine Schnittstelle zum anderen e eine
206. s einen Knoten so werden alle seine Nachkommen wenn er welche hat mitbewegt Dies gilt ebenso f r den ganzen Baum Eine Wurzelverschiebung Apex hat die entsprechende Verschie bung des ganzen Baumes zur Folge e Benutzung zweier Felder f r die Positionierung jedes Knotens Diese zwei Felder sind f r einen Knoten k eine vorl ufige x Koordinate prelim k und ein Modifizierer Feld modifier k in dem Verschiebungen der x Koordinate ab gespeichert werden Um die endg ltige x Koordinate zu berechnen mu der Baum zweimal traversiert werden Die erste Traversierung weist f r jeden Knoten k prelim k und modifier k zu die zweite Traversierung berechnet die endg ltige x Koordinate eines jeden Knotens k durch die Sum mation von prelim k und den Modifizierer Feldern aller Vorfahren von k Dadurch k nnen Unterb ume schnell und einfach verschoben werden Der Algorithmus berechnet f r einen Baum T V E ein Layout in linearer Zeit O IVI Die erste Traversierung ist eine Postorder Traversierung Zun chst werden die klein sten Unterb ume Bl tter positioniert und dann rekursiv von links nach rechts aufsteigend die immer gr er werdenden Unterb ume Geschwisterknoten werden durch eine vordefi nierte Minimaldistanz Geschwisterseparation separiert Benachbarte Unterb ume separiert man in analoger Weise durch eine weitere vordefinierte Minimaldistanz Unterbaumsepara tion Beide Werte k nnen unterschiedlich sein
207. sich ein angewandtes Vorkommen von x auf dieses definierende Vorkommen beziehen kann Wichtig dabei ist die Schachte lung von Scope Konstrukten zu erkl ren COBOL gestattet keine Schachtelung alle Be zeichner sind im ganzen Programm giiltig und sichtbar FORTAN erlaubt nur Schachte lungstiefe 1 und Bl cke in Programmiersprachen wie ADA ALGOL60 ALGOL68 PASCAL und funktionale Sprachen diirfen rekursiv unendlich tief geschachtelt werden Da bei einigen Programmiersprachen ALGOL60 ALGOL68 jeder im Block deklarierte Bezeichner im ganzen Block giiltig ist ben tigt der bersetzer zur Deklarationsiibersetzung eventuell Informationen ber einen Bezeichner dessen Deklaration noch gar nicht abgear beitet wurde Folglich ist die 1 Pass Ubersetzbarkeit eines Programms so nicht m glich Abhilfe schaffen Regeln die dieses Problem vermeiden hier zwei Beispiele e In ADA beginnt der G ltigkeitsbereich eines Bezeichners mit dem Ende der Deklarati on und h rt mit dem Ende des Blocks auf e In PASCAL ist der G ltigkeitsbereich der ganze Block Es darf jedoch kein angewand tes Vorkommen vor dem Ende der Deklaration stehen 3 2 2 Sichtbarkeit Der Sichtbarkeitsbereich ist der Teil des G ltigkeitsbereichs in dem ein definierendes Vorkommen eines Bezeichners x nicht durch ein anderes berdeckt ist Ein definierendes Vorkommen eines Bezeichners x kann vom Standpunkt eines ange wandten Vorkommen entweder direkt sichtbar oder eventuell durch e
208. sierte statische Daten unteres Ende von initialisierte statische Daten DGROUP Abb 1 5 Die vier Bereiche von DGROUP aus Pet92 KAPITEL 1 MICROSOFT WINDOWS 3 1 13 automatische Datensegment DGROUP im Speichermodell Small ist beweglich aber nicht entfernbar und enthalt vier Bereiche wie in Abb 1 5 veranschaulicht ist 1 3 1 2 Speicherplatzbelegung Fiir den globalen Heap des Systems und den lokalen Heap eines Programms gibt es jeweils eine Gruppe von Speicherverwaltungsfunktionen die Windows zu Verfiigung stellt um die beiden Heaps zu organisieren bzw Speicherplatz zu allokieren Die Speicherbelegung l uft bei beiden Gruppen analog ab und ber cksichtigt die Bewegungen der Segmente Jeder Punkt au er Punkt 3 entspricht dem Aufruf einer Funktion 1 Allokation Der R ckgabewert ist ein Handle zum belegten Block 2 Sperrung Der in Punkt 1 allokierte Block wird als unbeweglich gekennzeichnet und ein far Zeiger beim globalen bzw ein near Zeiger beim lokalen Heap in kleinen Speichermodellen zur ckgeliefert 3 Verwendung des Zeigers 4 R ckname der Sperrung 5 Freigeben des allokierten Speicherblocks 1 3 1 3 Speichermodelle Die Anzahl der Segmente wird ber das Speichermodell des Compilers festgelegt Man kann in einem einzigen Windows Programm mehrere Speichermodelle mischen Es werden insgesamt f nf Speichermodelle angeboten Modell Codesegmente Datensegmente Small 1 max 6
209. snssonssacsoseees 111 A 2 1Sy mbolklassen EE 111 A22 Grammatik z Sakae UDDU UDULUR N 111 Eingabesyntax der berladungsspezifikation 115 E OI EE EE 115 EIDA EE EE E 116 B ANIMIERTE ALGORITHMEN 118 B 1 Implementierung des Deklarations Analysators l l illi ill 118 B 2 Implementierung des Typkonsistenz Analysators 120 B 3 Algorithmus zur Aufl sung der berladung 121 B 4 Typinferenzalgorithmue cccccssccsscsssccsscssecsscsscessscsscessscscessssssessssssesssscsssssssesesssscseesssees 122 C BEISPIELE FUR ANIMATIONEN 132 C 1 Visualisierungen aus der animierten Pr sentation 132 C 2 Visualisierungen aus dem 146 LITERATURVERZEICHNIS 152 Finleitung Viele Experten aus der Padagogik Psychologie etc streiten sich dar ber wie man Interesse f r ein bestimmtes Thema wecken kann und es so aufbereitet da es sich m glichst gut im Ged chtnis eines einer Lernenden festsetzt und verstanden wird Dabei spielt die Bedeutung der visuellen Informationsvermittlung eine immer gr ere Rolle Zum Beispiel lernen wir 83 durch das was wir sehen und nur 11 durch das was wir h ren vgl
210. sprogramm mit einem Fensterobjekt assoziiert Die Graphikschnittstelle von graphischen Benutzerumgebungen mu so konstruiert sein da das System den Anwendungsbereich eines Fensters zu jedem beliebigen Zeitpunkt neu zeichnen kann Windows ist ein ereignisgesteuertes System und ein benutzerinitiiertes ff nen einer Dialogbox oder Wechseln von Fenster berlappungen erfordert ein Neuzeichnen des vormals verdeckten Teils eines Fensters Die L sung dieses Problems ist eine Botschaft mit Namen WM_PAINT Sowohl das System als auch ein Programm selbst ist in der Lage diese Botschaft an das Fenster zu sen den dessen Anwendungsbereich ganz oder auch nur zum Teil neu gezeichnet werden soll WM _PAINT ist nur f r das Zeichnen des Anwendungsbereichs zust ndig Das Zeichnen der Titelleiste des Men s des Fensterrahmens usw bernimmt das System selbst Aus diesem Grund wollen wir alles was sich im Anwendungsbereich eines Fensters befindet der Ein fachheit halber mit dem Wort Fensterinhalt bezeichnen Man sagt WM_PAINT informiert ein Fenster dar ber da sein Inhalt teilweise oder komplett ung ltig geworden ist Windows verwendet zur Bestimmung derartiger Teilbereiche ein Konstrukt welches als ung ltiges Rechteck bezeichnet wird Intern ist dieses ung ltige Rechteck unter anderem in einer jedem Fenster zugeordneten Struktur mit Zeicheninformationen enthalten Als Pro grammiererln mu man sich also darum k mmern da der gesamte Fensterinhalt b
211. ssion expression expression 5 simple_expr INTEGER CHAR REAL boolean boolean TRUE FALSE 5 117 Kontexttyp Regeln Ausdruck Regeln Anhang B Animierte Algorithmen Alle hier gedruckten Algorithmen laufen auf der Darstellung der Eingabeprogramme als abstrakte Syntaxb ume ab Um sie zu formulieren f hren wir die folgende Notation ein Sei k ein Knoten Datentyp node des abstrakten Syntaxbaums dann beschreibt descs k die Zahl der Kindknoten von k symb k das Symbol mit dem k markiert ist type k den mit symb k assoziierten Typ k i das i te Kind von k B 1 Implementierung des Deklarations Analysators Aus Gr nden der Einfachheit werden f r den hier vorgestellten Algorithmus ADA G ltig keitsregeln zugrundegelegt Diese dr cken sich darin aus da im decl Fall der case Anweisung von analyze_decl erst alle Deklarationen rekursiv abgearbeitet werden bevor die lokalen Deklarationen eingetragen werden Die G ltigkeitsregeln von PASCAL vor allem die M glichkeit Bezeichner rekursiv zu definieren fordern dagegen zuerst den Eintrag aller Bezeichner in die Symboltabelle und dann erst die Analyse aller Unterb ume F r jeden Block ist dann eine Menge von allen lokal angewandten Bezeichnern zu bilden Trifft der Deklarations Analysator auf eine Deklaration so testet er f r jeden dort deklarierten Be zeichner ob er nicht schon in dieser Menge enthalten ist Dieses Verfahren hat jedoch d
212. st ob eine Typvariable in Abh ngigkeit der aktuellen Umgebung und Ersetzung generisch ist oder nicht freshInst ersetzt die in einem Typterm enthaltenen generischen Variablen durch neue und liefert den resultierenden Typterm und einen neuen Zustand zur ck new Typelnst verwendet die zuletzt erw hnten Funktionen um den mit einem Knoten assoziier ten Typ unter Ber cksichtigung der Umgebung und des Zustandes eine neue Instanz zu geben func rawType k node A assum s state typeExp begin return substitute getSub s lookup k A end func generic A assum s state typeVar bool begin 11 getNG A foreach in der Typenliste t1 tm do if occurs a substitute getSub s t true then return false fi od ANHANG B ANIMIERTE ALGORITHMEN 128 return true end func freshInst t typeExp A assum s state tuple of typeExp and state begin foreach Typvariable o in do if generic A s true then o s newTypeVar 5 o 0 01 t substitute O t fi od return f s end func newTypelnst k node A assum s state tuple of typeExp and state begin return freshInst rawType k A s A s end Es folgt die Hauptanalysefunktion analyse des Typinferenzalgorithmus Diese Funktion spiegelt das in Abschnitt 3 5 3 3 angegebene Typinferenzsystem wider Sie traversiert den Syntaxbaum des LAMA Ausdrucks rekursiv und berechnet f r jeden Knoten in Abh ngig k
213. ster im Men Ansicht gezeigt wird Zu dieser Visualisierung vergleiche auch die Abbildungen C 2 4 und C 2 5 im Anhang C 2 6 5 Basisstruktur abstrakter Syntaxbaum Es erschien dem Autor wichtiger die Programmierung unter Windows in Kapitel 1 allge mein zu erl utern als die Implementierung des ASA Tools unter dem Windows API im einzelnen Dennoch gehen wir in diesem Abschnitt kurz auf die bedeutendste Datenstruktur bei der Programmierung von ASA ein n mlich der Implementierung des Syntaxbaums Er mu aus den Eingabebeispielen erzeugt und nach einer Layoutphase graphisch repr sentiert werden Auf dieser Datenstruktur laufen die verschiedenen Algorithmen ab die im Anhang B angef hrt sind 6 5 1 Erzeugung der Datenstruktur Die Datenstruktur des Syntaxbaumes ist f r PASCAL und LAMA Programme identisch wobei die verschiedenen Knoten durch eine eindeutige Bezeichnung unterschieden werden Ein Knoten besteht stark vereinfacht aus folgenden Eintr gen e Informationen f r den Aufbau der Syntaxbaum Datenstruktur selbst etwa Knotentyp Anzahl der Kinder Zeiger auf die Kinder Elternknoten etc e F r die graphische Repr sentation ben tigte Informationen z B x und y Koordinate Knotendimension Beschriftung Anzahl der Beschriftungszeilen im Knoten usw e Hinweise auf die Herkunft des mit dem Knoten symbolisierten Sprachkonstrukts im Quelltext des Beispielprogramms s u e Das in Abh ngigkeit vom Animationsthema mit dem Knote
214. struktion Generie rung Springer 1992
215. stypen gt und der Konstruktor f r Paartypen x Typterme sind also z B Konstrukte der Form list gt f oder gt 6 gt y Hat man einen polymorphen Typ so nennt man den Ersatz einer Typvariablen durch ei nen Typterm eine Einsetzung Ist dieser Typterm monomorph so spricht man tiber eine monomorphe Einsetzung Alle vollst ndigen monomorphen Einsetzungen werden als monomorphe Instantiierungen bezeichnet Hat man also beispielsweise den Funktionstyp term gt cz so gibt es die monomorphen Instantiierungen int int bool gt bool list bool list bool usw 3 5 1 Die Sprache LAMA Wir verwenden als Beispielsprache die funktionale Sprache LAMA aus WM92 Die ab strakte Syntax der Programmiersprache LAMA sei wie folgt gegeben KAPITEL 3 SEMANTISCHE ANALYSE 57 Elementname Bereich e E Menge von Ausdr cken V Menge von Variablen b B Menge von Basiswerten z B boolesche Werte integer character OPun OPun Menge von un ren Operatoren ber Basisvverten z B not hd tl fst snd OPbin bbin Menge von bin ren Operatoren ber Basiswerten z B and or cons pair e b v OPun e l 1 ODbin 2 if e then else e3 bedingter Ausdruck e e2 Funktionsanwendung Av e funktionale Abstraktion letrec v ci simultan rekursive Definitionen v2 02 Vn en in o let v EI nicht rekursive Definitionen v2 e Vn en in e
216. sung der berladung und Typinferenzalgorithmus siehe Anhang B an Diese werden jeweils durch Algorithmenanimationen an einem festen statischen Beispiel erkl rt Anhang C 1 zeigt einige Programmbeispiele der animierten Pr sentation Eine Verkn pfung mit anderen ToolBook Anwendungen B chern ist ohne Probleme zu realisieren da MTB 3 0 bereits ein entsprechendes Konzept daf r zur Verf gung stellt Die animierte Pr sentation der semantischen Analyse kann somit in eine gr ere Umge bung eingebunden werden beispielsweise eine komplette Pr sentation der wichtigsten Kon zepte der bersetzung von Programmiersprachen lexikalische Analyse syntaktische Analy se etc 5 1 Starten des Programms Wie bei jeder andere Window Anwendung erfolgt der Start des Pr sentationsprogramms nach der Installation des ToolBook Laufzeitsystems entweder durch den Programm oder den Dateimanager Das Pr sentationsprogramm ist diesbez glich von seiner dynamischen Erweiterung vollst ndig unabh ngig und lauff hig Jeder Programmstart hat zwei aufeinan derfolgende Dialoge zur Folge vgl Abb C 1 1 1 Eingabe des Benutzernamens um den die BenutzerIn in darauffolgenden Dialogen di rekt ansprechen und die verschiedenen BenutzerInnen unterscheiden zu k nnen 2 Sprung an die zuletzt besuchte Seite wenn der die BenutzerIn dem System nicht un bekannt ist Standardm ig er ffnet das Programm die Sitzung auf der Kapitelseite Inhaltseite der semantis
217. t Schrift program pascal8 const start 1 var X real function Fakultaet X int int begin if X lt 1 then Fakultaet star else Fakultaet X x eki ita t 2 1 Visualisierung des oben im ASA Editor gezeigten Beispielprogramms Der abstrakte Syntaxbaum ist fast vollst ndig dargestellt Zu einigen Knoten sind die Typattribute gro e Form zu sehen Grundlage hierf r sind die in einem Hilfsfenster angegebenen Typen f r die im Beispielprogramm verwendeten eingebauten Operatoren F r ein angewandtes Vorkommen des Bezeichners Fakultaet hat ASA das nach den G ltigkeits und Sichtbarkeitsregeln errechnete definierende Vorkommen markiert nach dem Mausklick auf das ange wandte Vorkommen Der Skalierungsfaktor des Baumlayouts betr gt 100 Um den Baum passend im Fenster zu plazieren wurden die Werte f r die verschiedenen Separationen siehe Abschnitt 6 5 2 2 verklei nert Abb C 2 2 Visualisierung der berpr fung der Kontextbedingungen ANHANG C BEISPIELE F R ANIMATIONEN 148 Rechts unten ist ein Hilfsfenster mit der aktuellen Eingabespezifikation eingeblendet die zuvor mit Hilfe der Eingabemaske vgl Abschnitt 6 3 2 3 erstellt worden war Im Animationsbereich ist der auf 120 vergr Berte Ausdrucksbaum mit den zu jedem Operatorknoten assoziierten ops Mengen zu sehen Alle ops Mengen sind einelementig Die Uberladung der Operatoren wurde also erfolgreich aufgel st Die Eingabe spezifikation entspri
218. t hervorgehoben W hlt man einen anderen Knoten aus so verschwindet der bisherige Pfeil und der alte Knoten wird wieder normalfarbig hellgrau dargestellt Besitzt der Knoten keine Information so er scheint die Information Leer Geh rt der Knoten zu einem Ausdruck auch blau gef rbt und wurde noch kein Typ konsistenzcheck durchgef hrt dann erscheint ein Hinweis darauf da man zuerst einen solchen Test einleiten soll Erst dann kann man auf das Typattribut das dieser Knoten ent h lt mittels Mausklick zugreifen Diese Typattribute bleiben solange offen an dem Knoten bis sie manuell geschlossen werden indem man erneut auf den Knoten klickt oder die Ani mation zur cksetzt flexible Steuerung vgl Punkt 1 aus Abschnitt 4 4 Sie passen sich auch simultan an ein neues Layout an wenn sich dieses durch eine nderung der Layoutpa rameter gewandelt hat Abbildung C 2 2 im Anhang C 2 zeigt ein Programmbeispiel Animationsfenster anzeigen W hlen Sie die gew nschte Fensteransicht aus X Zeige ein Fenster mit der Typtabelle an Abbrechen X Zeige alle Knotentypen an Wahlen Sie die gew nschte Knotentypen Gr e aus Gr e klein mittel gro Abb 6 8 Animationsansicht Dialogbox 2 Hierbei ist eme Besonderheit zu beachten Besitzt der Knoten einen Typ und auch ein defi nierendes Vorkommen z B Variable vom Typ real so bewirkt eine Mausklick mit der linken Maustaste einen Hinweis auf die
219. ten GDI Aufrufe lassen sich innerhalb eines belie bigen Ger te oder Speicherkontextes z B Bildschirm beliebig oft sequentiell abspielen Ma geblich sind beim Abspielvorgang die Attribute des Zielkontextes nicht die des Datei kontextes nderungen von Attributen wie etwa der Zeichenfarbe oder des Koordinaten systems durch die Aufrufe in der Zwischendatei sind endg ltig d h bleiben auch nach dem Ende des Abspielvorgangs erhalten Wenn dies unerw nscht ist mu der originale Attribut satz vor dem Abspielen gespeichert werden Eine Ausnahme zu dieser Regel bilden die GDI Objekte beispielsweise der Zeichenstift Nach dem Abspielen wird der Originalzustand hier automatisch wiederhergestellt 1 4 4 Texte Das GDI stellt eine ganze Reihe von Funktionen f r die Textausgabe zur Verf gung um Text optimal an die gegenw rtigen Verh ltnisse anzupassen Wie fast alle GDI Funktionen erwarten auch diese einen Handle auf einen Ger tekontext als Parameter Wir wollen uns in dieser Arbeit mehr auf die Bildschirmausgabe konzentrieren und weniger auf die Ausgabe auf einem Drucker Systeminterna bzgl der Kommunikation mit Druckern und Plottern erfordern eine umfangreiche Beschreibung und k nnen in Pet92 genauer nachgelesen wer den Die Basisfunktion zur Textausgabe ist TextOut die einen Textstring innerhalb eines Ge r tekontextes an einer bestimmten Startposition ausgibt Eine erweiterte Funktion Tabbed KAPITEL 1 MICROSOFT WINDOWS 3 1 24
220. ten ist so leitet sie die eventuell bersetzte Botschaft ber einen zus tzli chen Aufruf des Systems an ihre programmeigenen Window Prozeduren die dann mittels System Window Prozedur Child Fenster n Window Prozedur Child Fenster 1 Ereignis Warteschleife Window Prozedur Hauptfenster Klak Ek et EE EECH o zOmm om Abb 1 1 Die Warteschlange eines Window Programms KAPITEL 1 MICROSOFT WINDOWS 3 1 7 einer Fallunterscheidung entsprechend reagieren Es gibt zwei Arten von Botschaften Sie werden unterteilt in e direkte Botschaften die mit bestimmten Funktionen an ein Fenster gesendet werden e indirekte Botschaften die in die Warteschlange eines Programms eingereiht werden wie bereits oben beschrieben wurde Jedes Windows Programm kann aus mehreren Fenstern bestehen Sie sind normalerweise in einer Hierarchie organisiert die w hrend der Erzeugung der Fenster von dem der Entwick lerIn festgelegt wird Man bezeichnet das einem Fenster direkt bergeordnete Fenster als Parent Fenster das untergeordnete Fenster hingegen als Child Fenster Child Fenster k n nen nicht au erhalb der Oberfl che des Parent Fensters gezeichnet werden Gibt man bei der Erzeugung eines Fensters kein Parent Fenster an so gilt diese Einschr nkung nicht 1 1 3 Prozesse Das Windows System beherrscht sogenanntes non preemptives nicht verdr ngendes Multitas
221. tion 3 5 3 Substitution Eine Substitution Ersetzung o von Typen f r Typvariablen ist eine endliche Menge von Paaren f 01 tp On wobei die Typvariablen o und o f r i j paarweise voneinander verschieden sind Jedes Paar hei t eine Bindung von 0 Definition 3 5 4 Instanz Sei o f 0 f O eine Substitution von Typen f r Typvariablen und sei S ein Typ schema Eine Instanz von S ist ein Typschema Ss das man erh lt wenn man jedes freie Vorkommen der o in S durch zi 1 7 4 ersetzt und falls n tig die generischen Variablen von A umbenennt Nun k nnen wir den Begriff der generischen Instanzen exakt definieren Definition 3 5 5 generische Instanz Ein Typschema V0 Om hat eine generische Instanz S V f wenn t o t f r einige Typen r fn und die Bi nicht frei in S sind In diesem Fall werden wir S gt S schreiben Definition 3 5 6 Komposition von Substitutionen Seien o t 0 tn Om und y Ir d i D Substitutionen Dann erh lt man ihre Komposition y nach o in Zeichen yo aus der Menge B 0x Bx Wt O1 Wen Om durch Streichen der Paare 7 B mit Bi 01 Om und der Paare wr a mit Wh Die Streichungen sorgen daf r da das Ergebnis der Komposition wieder die minimale Darstellung einer Substitution ergibt Wir ben tigen die Komposition von Substitutionen f r die Definition der Unifikati
222. tionen im Langzeitged chtnis zu behalten Intensivlernen Emotional stark aufgeladene Informationen garantieren h chste Behal tenssicherheit Wer z B zum L schen des gesamten Inhalts eines Verzeichnisses den Befehl FORMAT C ausf hrt der verwechselt diesen Befehl vermutlich nicht wieder mit DEL Es bedarf in diesem Fall keiner Wiederholung Integrationslernen Hierbei wird der Lernvorgang durch eine Aufarbeitung der Informa tionen welche die Spezialisierung und Eigenschaften beider Hemisph ren ausnutzt unterst tzt Wer es versteht Informationen zu visualisieren Kann die Merkf higkeit bei den Lernenden steigern Manchmal ist es aufgrund der Umst nde und der Thematik f r LehrerInnen nicht m glich das ntegrationslernen zu unterst tzen Nehmen wir als Beispiel eine Vorlesung ber Compilerbau Soll etwa die Arbeitsweise von nicht deterministischen bzw deterministischen Automaten endlicher Automat Kellerautomat an einer Tafel erl utert werden so bedeutet dies das jede nderung der Zust nde Kellereintr ge etc angef hrt werden mu Es kommt 1 EINLETTUNG 2 Wiederholungsiernen t ntegrationslerner Abb E 1 Drei Wege Informationen ins Ged chtnis aufzunehmen aus AIt93 zu dynamischen Tafelbildern in denen ltere Bestandteile weggewischt und durch neue zu ersetzen sind Am Ende der Prozedur ist dann nur noch das Endergebnis zu sehen Die Ler nenden haben nicht die M glichkeit alle
223. tionen in einem separaten Fenster abzuspielen Aller dings m te der die Anwenderln die Fenster dann immer abwechselnd in den Vordergrund bringen Beide L sungen widersprechen dem Prinzip der Minimierung von Merkanforde rungen siehe Punkt 3 der Richtlinien f r die Oberfl chengestaltung aus Abschnitt 4 3 5 5 1 M glichkeiten der Interaktion Sobald man sich auf einer Seite befindet die eine Animation enth lt hat man zwei M glich keiten Einflu auf die Animation zu nehmen Durch die e Steuerelemente in der Kontrolleiste siehe Abschnitt 5 2 1 3 und die e Geschwindigkeit Dialogbox siehe Abschnitt 5 2 2 5 F r jede Animation kann die Geschwindigkeit separat eingestellt werden Die animierte Pr sentation speichert diese Geschwindigkeiten zusammen mit dem Anwendernamen in einer sogenannten INI Datei ab siehe n chsten Abschnitt 5 5 2 Initialisierung Um die Initialisierung der Animationen und den Namen der BenutzerInnen abzuspeichern verwendet das Programm die von Windows bereitgestellten Konzepte zur Initialisierung von Applikationen ber INI Dateien Das Windows API stellt f r die Erzeugung und Ver waltung von INI Dateien mehrere Funktionen zur Verf gung die nur noch vom Programm aufzurufen sind Gleichzeitig hat die Verwendung dieser Funktionen den Vorteil da der Zugriff auf die Dateien ber einen Cache erfolgt und damit die Zugriffsgeschwindigkeit sehr KAPITEL 5 DIE ANIMIERTE PR SENTATION 80 hoch ist Wir w
224. tum jedoch mit einer Botschaft WM DDE ADVISE In Abh ngigkeit davon ob der Server ber das Datum verf gt akzeptiert er positiv oder negativ mit der Botschaft WM DDE ACK VVM DDE ADVISE Datum Client Server WM DDE ACK Bei positiver Best tigung verpflichtet sich der Server den Client bei jeder Ver nderung dieses Datums mit einer unaufgeforderten Botschaft WM DDE DATA zu informieren Eine Best tigung des Client ist optional KAPITEL 1 MICROSOFT WINDOWS 3 1 30 WM_DDE_ DATA Datum Client Server VM DDE ACK gt M chte der Client die permanente Aktualisierung eines bestimmten Datums durch den Ser ver aufheben so benachrichtigt er ihn mit der Botschaft WM DDE UNADVBE was der Server wieder mit WM DDE ACK best tigen mu WM DDE UNADVISE Datum Client Server WM DDE ACK Die Terminierung der Verbindung erfolgt wie bereits beschrieben mit WM DDE TERMINATE Die Konversation zweier Programme ber eine vvarme Verbindung beginnt ber WM_DDE_INITIATE bis zur Sendung der Botschaft WM DDE ADVISE in identischer Weise wie die hei e Verbindung WM_DDE_ADVISE Datum Client Server WM DDE ACK Dieser Botschaft ist hier allerdings mit einem Flag verbunden das den Server anvveist an stelle der ver nderten Daten selbst nur ein Signal zu senden Es best
225. uch Informationen ber den aktuellen Treiber bzw dessen Ger t abfragen Anvvendungsprogramm lt gt GDI lt Treiber des Ausgabeger tes Andererseits pa t sich das GDI an das jeweilige Ausgabeger t an Bei einer Standard VGA Graphikkarte berechnet das GDI jeden zu zeichnenden Punkt von Linien Kreisen Rechtek ken usw selbst Handelt es sich um eine Graphikkarte mit einem eigenen Coprozessor so bermittelt das GDI lediglich die entsprechenden Befehlscodes und Koordinatenpaare Die eigentlichen Zeichenoperationen berechnet der Prozessor der Karte was als Ergebnis eine wesentlich h here Ausgabegeschwindigkeit zur Folge hat Graphische Ausgabeger te lassen sich allgemein in die zwei Klassen raster und vek tororientiert einteilen Zur ersten Klasse geh ren Bildschirme und Drucker zur zweiten Klasse Plotter Das GDI bietet nicht nur Unterstiitzung auf Vektorebene sondern ebenfalls auf Rasterebene Es erm glicht Manipulationen einzelner Bits und Pixel womit doch ein gewisser Grad an Durchl ssigkeit zur jeweiligen Hardware gew hrleistet ist Zus tzlich ergeben sich hier Geschwindigkeitsvorteile bei der Verwendung und Manipulation von Bit maps Das GDI wurde haupts chlich zur graphischen Unterst tzung der Repr sentation der Fenster Fensterelemente und Schriften konstruiert In diesem Zusammenhang ist Windows ein eher statisches System und zweidimensional orientiert Daraus ergeben sich einige Nachteile Animationen werden nic
226. uck nach folgenden Regeln ein l e Hs d rfen Konstanten eines Typs aus int real char bool verwendet wer den z B 1 6 23 V e Jedes Zeichen bzw jede Zeichenfolge die keine Konstante ist wird als Opera tor interpretiert Einstellige Operatoren werden mit ihrem Argument eingeklammert also etwa 23 e Zweistellige Operatoren stehen in der Mitte ihrer Argumente beispielsweise 23 34 45 e Drei und mehrstellige Operatoren werden ihren eingeklammerten durch Kommata getrennten Argumenten vorangestellt wie add 1 5 23 Kontexttyp Der Kontexttyp a priori Typ ist ein einfacher Typ aus der Typenmenge int real char bool Gemeint ist damit der Typ den der bereits oben eingegebene Ausdruck als R ckgabetyp erhalten soll Buttons Ok Akzeptiert die getroffenen Eingaben und zeigt den eventuell neuen Ausdrucksbaum im Animationsbereich an Abbrechen Ignoriert die verinderten Spezifikationen und f hrt keine Anderungen aus Neu Schlie t die aktuelle Animation und l scht alle zu dieser geh rigen Eintr ge sowohl in der Eingabemaske als auch im Animationsbereich ffnen Zeigt die Quelldatei ffnen Dialogbox aus dieser man sich eine Eingabedatei OLS ausw hlen kann deren Spezifikation dann in den verschiedenen Feldern der Eingabemaske angezeigt wird Speichern Speichert die aktuelle Eingabespezifikation falls sie ver ndert wurde Zeigt die Quelldatei speichern Dialogbox mit de
227. uf den abstrakten Syntaxb umen der eingegebenen Beispiele animiert ab laufen zu lassen Beispiele k nnen Eingabeprogramme Ausdr cke oder Spezifikationen sein Die animierte Pr sentation wurde mit dem Autorensystem MTB 3 0 entwickelt Das ASA Tool habe ich dagegen direkt auf Windows Ebene in der Programmiersprache C im plementiert und mit dem Compiler MS Visual C bersetzt Auf die Gr nde f r diese Aufteilung wird an den entsprechenden Stellen in dieser Arbeit eingegangen Zuerst beschreibe ich ausf hrlich das Windows 3 1 System und dessen Programm schnittstelle Da das aus technischer Sicht anspruchsvollere ASA Tool z B Layout von B umen und deren graphische Darstellung etc unmittelbar diese Programmschnittstelle verwendet messe ich deren Beschreibung eine h here Bedeutung bei als einer ausgiebigen Schilderung des Autorensystems und dessen Skriptsprache OPENSCRIPT Im Anschlu daran gebe ich einen Umri ber das der animierten Pr sentation zugrundeliegende Autorensy stem Multimedia ToolBook 3 0 Die genaue Beschreibung von Windows im vorausgegan genen Kapitel erleichtert auch das Verst ndnis der Funktionsweise dieses Autorensystems Darauf folgt die Theorie der semantischen Analyse sowie die Darstellung einiger Richtlinien zur Erstellung von graphischen Benutzeroberfl chen und Animationen Abschlie end be schreibe ich den zwei Programmteilen entsprechend die Eigenschaften der Animation der semantischen Analyse sowie die M
228. ugeben Jedes Thema wird an einem visualisierten Syntaxbaum animiert welcher aus der Eingabe generiert und dessen Layout automatisch berechnet wird Das Layout ist interaktiv und in weicher Echtzeit ver nderbar Ein zu gro er Syntaxbaum l t sich beispielsweise verklei nern oder stauchen Wir wollen zun chst kurz auf den Entscheidungsfindungsproze eingehen der zur Zweiteilung des Programms Animation der semantischen Analyse f hrte 6 1 Gr nde f r die Programmteilung Die Trennung erfolgte wie schon im letzten Kapitel beschrieben aus Gr nden der Effizienz da dynamische aufgrund beliebiger Benutzereingaben nicht vorherbestimmbare Visualisie rungen und Animationen sehr rechenintensiv sind und hohe Anforderung an die Schnellig keit bzw Leistungsf higkeit der Graphikausgaben stellen Die in Abschnitt 2 6 angegebenen Restriktionen des Autorensystems MTB 3 0 waren diesbez glich zu gro Grunds tzlich ist die in ToolBook eingebaute Sprache OPENSCRIPT nicht daf r geeignet komplexe Algorithmen oder Datenstrukturen zu implementieren Sie kennt weder Zeiger arithmetik noch Strukturen oder Unions Au erdem ist die Durchf hrung einer Behand lungsroutine in OPENSCRIPT viel zu langsam da ein Skript nicht kompiliert sondern ledig lich interpretiert wird Deshalb mu ten alle komplexeren Algorithmen die ber die Steue 86 KAPITEL o DIE DYNAMISCHE ERWEITERUNG ASA 87 rung der graphischen Benutzeroberfl che hinausgehen von v
229. ung kann Windows dieses Segment wieder aus dem Speicher nehmen Eine Ressourcenklasse l t sich f r Daten beliebiger Art definieren Man spricht in die sem Fall von benutzerdefinierten Ressourcen und sie lassen sich analog zu den eingebau ten Ressourcen verwenden 1 3 3 Men s und Abk rzungsbefehle Men s geh ren zu den Hauptm glichkeiten mit Windows Programmen zu interagieren Jedes Fenster kann maximal ein Men unter seiner Titelleiste definieren Die Men struktur der sogenannte Men Prototyp wird in der Ressourcen Datei festgelegt wobei jedem Wahlpunkt eine eindeutige Kennziffer zugesprochen wird Die Zuordnung zum Fenster ge schieht durch die bergabe des ebenfalls eindeutigen Men namens an die Fensterklasse KAPITEL 1 MICROSOFT WINDOWS 3 1 15 Ein Menii besteht aus mehreren Ebenen Die oberste Men ebene Hauptmenii ist die meist stindig sichtbare Meniileiste direkt unterhalb der Titelleiste Jeder dort befindliche Wahlpunkt ffnet bei seiner Bet tigung ein Untermen popup welches beliebig tief mit anderen Untermen s geschachtelt sein kann Die einzelnen Wahlpunkte k nnen markiert abgeschaltet angeschaltet oder tempor r nicht anw hlbar sein Das System koordiniert das gesamte Verhalten eines Men s das Aufklappen der Unter men s und das Selektieren der einzelnen Wahlpunkte W hlt der Benutzer einen Men punkt aus so sendet das System die Botschaft WM_COMMAND an die Window Prozedur des dazugeh rige
230. ur ben tigt oder f r alle Dokumentenfenster eine einzige ist von der Art der An Rahmenfenster Hauptfenster Client Fenster Dokument 1 Dokument 2 Dokument 3 Abb 1 7 Fensterhierarchie in MDI Programmen mit drei Dokumentenfenstern aus Pet92 KAPITEL 1 MICROSOFT WINDOWS 3 1 35 wendung abh ngig und dem der Programmiererln berlassen Abbildung 1 7 zeigt die Fensterhierarchie in MDI Programmen mit mehreren Dokumentenfenstern Wir wollen nun annehmen da f r alle Dokumentenfenster eine einzige Window Prozedur zust ndig ist die die Verwaltung und Darstellung der Dokumentendaten ber nimmt Eine beliebte M glichkeit zur Speicherung dieser Daten ist die Reservierung von Speicherplatz in der Fensterstruktur die bei der Definition der Fensterklasse vorgenommen wird Jedes auf dieser Klasse basierende Dokumentenfenster erh lt einen Handle zu einem Speicherbereich auf dem lokalen oder globalen Heap in welchem es seine Daten ablegen kann Die Window Prozedur des Rahmenfensters ist dagegen haupts chlich f r die Men ver waltung und damit f r Botschaften des Typs WM_COMMAND zust ndig Au erdem mu sie falls n tig dynamisch die einzelnen Dokumentenfenster erzeugen was durch das Sen den einer Botschaft WM_MDICREATE an das Client Fenster geschieht Der Botschafts parameter Param ist ein Zeiger auf eine spezielle Struktur MDICREATESTRUCT welche die Eigenschaften
231. us blenden 5 2 2 Hilfsmittel Alle Hilfsmittel der Animation der semantische Analyse benutzen ein separates vom Haupt fenster unabh ngiges Fenster 5 2 2 1 Online Hilfe Die Online Hilfe der animierten Pr sentation verwendet das integrierte Hilfesystem von Windows 3 1 um eine h chstm gliche Standardisierung und Bekanntheit im Umgang mit der Online Hilfe zu erreichen Es ist als Hypertext Dokument angelegt und erm glicht Spr nge in andere Hilfebereiche und das Suchen nach Stichw rtern Au erdem ist die On line Hilfe Kontextsensitiv d h je nachdem von welcher Stelle sie aufgerufen wird erscheint der zu dieser Stelle passende Hilfetext mit Bildern Date Berdeen Lesezeichen 7 Einf hrung Dus Four vorbpanede Lomprogramm wurde ge Wetten url ey ffl Aah Gerben Luhsetul yun Di Wien e ar alpen er dun t il siet Prabirlitrin Ge Bue beta reck Ki Du Meier Dar dan W ald Se eg imi a ir dyrmumrscha um wien DL Ell Burmtgereittj sen miz vertwertoesiimmbn Audisi NZ tte poh vachanivour EN n t al nman n an di Grapnkausgana Unedvargrormuarstzengon vn Stet de krommen Uarach dei Abb 5 5 Die oberste Ebene der Online Hilfe und eine Verzvveigungsm glichkeit Sie ist in drei Abschnitte unterteilt siehe Abb 5 5 links Von der obersten Ebene kann man zu den folgenden Hilfethemen verzweigen KAPITEL 5 DIE ANIMIERTE PRASENTATION 7
232. weiter Schritt der Beispielanimation zu einer Symboltabellenoperation ANHANG C BEISPIELE F R ANIMATIONEN 140 Compilerbau MH Kaller m m Die Bedingung der rot eingef rbten Zeile f r die if Anvveisung ist nicht erf llt Abb C 1 9 Dritter Schritt der Beispielanimation zu einer Symboltabellenoperation ANHANG C BEISPIELE F R ANIMATIONEN 141 Compilerbau kli HM m H nn Keller FUE CERAT Der Beispielbezeichner d wurde im dritten Block deklariert Der entsprechende Zeiger Adresse des ent sprechenden definierenden Vorkommens wird ausgelesen Abb C 1 10 Vierter Schritt der Beispielanimation zu einer Symboltabellenoperation ANHANG C BEISPIELE F R ANIMATIONEN 142 Compilerbau atei Ansicht Optionen Seite Hilfe Keller FE Der Knoten im zugrundeliegenden abstrakten Syntaxbaum der dieses angewandte Vorkommen des Be zeichners d symbolisiert wird mit dem im vierten Schritt ausgelesenen Zeiger attributiert Damit ist diese kleine Beispielanimation beendet und man kann zur Algorithmenseite vgl Abb C 1 6 zur ckkehren um weitere Beispielanimationen auszuw hlen Abb C 1 11 F nfter Schritt der Beispielanimation zu einer Symboltabellenoperation ANHANG C BEISPIELE F R ANIMATIONEN Compilerbau Datei Ansicht Optionen Seite Hilfe f integer begin put 5 20 is begin null en ad 143 Ada Programm Diese Textanimation versucht das Prinzi
233. xpression e expression expression gt expression expression ez expression expression x expression expression x expression CONS expression expression PAIR expression expression T list_list H T C op_un y Jet expression END C expression org list y IF expression THEN expression ELSE expression FI LETREC let_list IN expression END LET er list IN expression END E expression expression NOT expression SUCC expression PRED expression NEG expression HD expression TL expression 110 ANHANG A GRAMMATIKEN 111 NULL expression FST expression SND expression 5 basisvvert INTEGER REAL CHAR TRUE FALSE A 2 PASCAL A 2 1 Symbolklassen BU a zA Z ZI 0 9 IDE BU BU ZI INTEGER H1 91 2D 10 REAL INTEGER ZI STRING dl Ki CHAR_TYPE char oder character Typbezeichnung BOOL TYPE bool oder boolean Typbezeichnung INT_TYPE int oder integer Typbezeichnung REAL_TYPE real Typbezeichnung A 2 2 Grammatik pascal program PROGRAM IDE block H block const decl type decl var decl p_f_decl BEGIN stat_list END const_decl CONST const_list H const list const list const def const def 5 ANHANG A GRAMMATIKEN 112 const def type decl type 151 type def var decl var list var def id list p_f_decl p_f_l
234. yntaxbaumknoten in ASA eine unterschiedliche Gr e hat mu diese vor dem eigentlichen Layoutvorgang ermittelt werden Sie ist von der Beschriftung des Knotens und von dem jeweiligen Font der sich auch je nach Ausgabeger t und System unterscheiden KAPITEL o DIE DYNAMISCHE ERWEITERUNG ASA 104 kann abh ngig Unter Font verstehen wir hier einen ogischen Font wie er in Kapitel 1 definiert wurde Dazu wird in einem Pass tiber die ganze Datenstruktur des Syntaxbaums die Beschriftung fiir jeden Knoten untersucht Eine Window Funktion GetTextExtent ermittelt die Breite und die H he einer Textzeile string indem sie den in den Ger tekontext eingesetzten Font als Grundlage nimmt Besteht die Knotenbeschriftung aus zwei Zeilen so addiert das Pro gramm die jeweiligen H hen und bildet aus den Breiten das Maximum Diese Dimensionen der Knoten werden bei den Separationen die der Layoutalgorithmus ausf hrt ber cksich tigt Tats chlich geschieht die schon erw hnte Skalierung der gezeichneten Knoten genau an obiger Stelle Man mu lediglich die Gr e des in den Kontext eingesetzten Fonts propor tional ver ndern Die Knoten werden demzufolge entsprechend kleiner bzw gr er ndert man nun proportional die Linienst rken der Knotenumrandung und der Baumkanten sowie die Werte Ebenenseparation Geschwisterseparation und Unterbaumseparation dann hat man nach einer erneuten Layoutberechnung den ganzen Baum skaliert Zu Beachten ist je
235. ype_consist aufgerufen wird ist aus dem Kontext des zu untersuchenden Ausdrucks ein Kontexttyp a_priori_type zu errechnen proc analyze_type_consist root node priori type type func analyze_type k node type begin case symb k of const begin return type k end appl_id begin if id ist Operand then return type k else error Modus Fehler fi end operator begin for i 1 to descs k do ti analyze_type k i od if Tabelle von symb k einelementig then if symb k hat den Typ t x X fa gt 1 then return else error Typfehler bei symb k ANHANG B ANIMIERTE ALGORITHMEN 121 fi else if exist Operator in Tabelle von symb k mit t x X 1 gt t then trage diesen Operator anstatt symb k in AST ein return else error Typfehler bei symb k fi fi end od end begin if a_priori_type no_type then analyze_type root else if q priori type lt gt analyze_type root then if Typkonsistenz nicht durch Typanpassung erreicht vverden kann or die Sprache keine Typanpassung erlaubt then error Falscher Kontexttyp fi fi fi end B 3 Algorithmus zur Aufl sung der Uberladung Der Aufl sungsalgorithmus benutzt zwei L ufe ber einen Ausdrucksbaum zuerst bottom up und dann top down siehe Abschnitt 3 4 1 Um die Formulierung des Algorithmus zu vereinfachen f hren wir folgende Notation ein An jedem Knoten des zugrundeliegenden abstrakten Syntaxbaums erhalt
236. zessorleistung eine Bewegung immer feiner abstuft Wir haben das ASA Tool nur f r kleine Eingabebeispiele konzipiert Gro e Eingaben haben aufgrund der ben tigten Graphikleistung bei der graphischen Ausgabe einen hohen Speicherverbrauch zur Folge Weiterhin wirken sehr gro e Syntaxb ume in einem Fenster leicht un bersichtlich Eine m glich Verbesserung ist die Verwendung von Sammelknoten hnlich zum VCG Tool Um die bersicht zu verbessern k nnen damit mehrere Knoten oder Unterb ume zusammengefa t werden Ausblick Am Lehrstuhl f r Compilerbau und Programmiersprachen wird auf dem Gebiet der Visuali sierung von bersetzern weiter geforscht Neben dem Ansatz die Animationen und Visua lisierungen mit dem Autorensystem MTB 3 0 und seiner Nachfolger unter Windows zu im plementieren gibt es ein weiteres Medium das Internet Mit Hilfe der Sprache Java lassen sich ebenfalls gut Animationen erstellen Verf gt man ber einen Internetzugang so K nnen die Animationen ber WWW World Wide Web mit einem geeigneten Browser z B Netscape Internet Explorer etc auf unterschiedlichen Plattformen abgespielt werden Anhang A Grammatiken Wir listen hier die zugrundeliegenden Grammatiken der vervvendeten Beispielsprachen LAMA und PASCAL auf sowie die Syntax der Eingabespezifikation fiir die dynamische Animation der Aufl sung der berladung Die gew hlte Darstellungsart entspricht den Konventionen fiir Eingabefiles des Scann

Download Pdf Manuals

image

Related Search

Related Contents

2012 熱中症対策商品カタログ  Lightolier Tangent FX16SC User's Manual  MANUAL DE USUARIO INSTALACIÓN ELÉCTRICA Consejos de  Blackberry Remote Viewing  Adobe Photoshop PDF  do Manual de Usuário do rádio Lumina  Avaya MCT1 User's Manual  User Manual MK-dent LED BU8012EM Technical Data Installation  Cisco Systems 7911 IP Phone User Manual  MANUALE DELL`UTENTE SISTEMA AUDIO  

Copyright © All rights reserved.
Failed to retrieve file