faecher:informatik:oberstufe:automaten:lepro:erstellung:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
faecher:informatik:oberstufe:automaten:lepro:erstellung:start [19.05.2022 09:18] – [Kontrolle] sbelfaecher:informatik:oberstufe:automaten:lepro:erstellung:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== JFLAP – eigene Automaten entwerfen ====== 
  
-Nachdem du jetzt schon fertige Automaten mit JFLAP testen kannst, wirst du nun lernen, 
-auch eigene Automaten mit der Software zu entwickeln. Vollziehe hierzu zunächst wieder 
-die Schritte des Beispiels nach. 
- 
-Der Automat, den du erstellst, hat als Eingabealphabet die Menge {0}. Er soll vorerst nur 
-das Wort 00 erkennen. 
- 
-Öffne JFLAP, ''Finite State Automaton''. 
- 
-Nun erscheint wieder das Fenster, in dem du einen Automaten modellieren kannst. Links 
-oben siehst du mehrere Symbole. Einen Mauspfeil, einen Kreis mit einem eingezeichneten Mittelpunkt, einen langgezogenen Pfeil und einen Totenkopf. Jedes der Symbole stellt einen bestimmten Modus dar. 
- 
-{{ :faecher:informatik:oberstufe:automaten:lepro:erstellung:jflap.png |}} 
- 
-Wenn du mit der linken Maustaste den Kreis anklickst, bist du in dem Modus, in dem 
-Zustände erzeugt werden können. 
- 
-Gehe nun **zuerst auf diesen Kreis**, um in den Modus Zustand setzen zu wechseln. Gehe 
-dann auf die weiße Zeichenfläche und klicke auf die linke Maustaste. Schon ist der erste 
-Zustand erzeugt, der mit q0 bezeichnet wird. Setze rechts daneben noch **drei weitere 
-Zustände**, so dass du schließlich q0 bis q3 gesetzt hast. 
- 
-Eigentlich benötigst du aber nur die Zustände q0 und q1. Wechsle deshalb in den **Lösch-Modus**, indem du den Totenkopf anklickst. Nun kannst du die überflüssigen Zustände q2 und q3 durch Anklicken löschen. 
- 
-Jetzt fehlen noch die **Übergänge**. Um diese zu zeichnen, musst du in den Modus Übergänge setzen gehen, indem du den länglichen Pfeil anklickst. Setze einen Übergang von q0 zu q1, indem du den Zustand q0 anklickst und die linke Maustaste gedrückt hältst. 
-Ziehe dann die Maus zum Zustand q1 und lasse erst dann die gedrückte Maustaste wieder los. Es erscheint ein Eingabefeld. Klicke dieses an, schreibe eine 0 hinein und drücke Enter.  
- 
-Damit ist dein Übergang gesetzt. Setze analog auch noch den zweiten Übergang. 
-Falls du irrtümlich einen falschen Übergang setzt, kannst du diesen auch löschen, indem 
-du in den Lösch-Modus wechselst und den entsprechenden Übergang anklickst. 
- 
-Möchtest du einen Übergang von einem Zustand zu einem anderen, der mit **mehreren 
-Symbolen** beschriftet ist, machen, kannst du einfach mehrere Übergänge zwischen den 
-beiden Zuständen erzeugen und jeden dieser Übergänge mit einem Symbol beschriften. 
-Nun kannst du den Automaten noch etwas mehr in die Mitte verschieben. Wechsle dazu 
-in den Modus normal. Nun kannst du die Zustände anklicken, und während du die Maustaste gedrückt hältst, verschieben. 
- 
-Dieser Modus hat noch eine weitere Eigenschaft: Wenn du dich bei der Beschriftung verschrieben hast, kannst du diese in diesem Zustand anklicken und erneut beschriften. 
- 
-Außerdem kannst du in dem Modus normal festlegen, dass q0 dein Anfangszustand sein 
-soll. Klicke dazu mit der rechten Maustaste auf q0. Es erscheint ein Menü. Wähle Initial 
-(deutsch: Anfangs-) aus. Auf q0 zeigt jetzt ein großer Pfeil. Analog klickst du nun mit der 
-rechten Maustaste auf q2 und markierst diesen als Endzustand, indem du im Menü auf 
-Final (deutsch: End-) klickst. 
-Schon ist dein erster Automat mit JFLAP fertig und kann getestet werden. 
- 
-===== Überblick ===== 
- 
- 
-Hier noch einmal ein kurzer Überblick über die verschiedenen Funktionen von JFLAP. 
- 
-  * Zustände setzen: Gehe in den Modus Zustand setzen, indem du den Kreisbutton anklickst. Dann kannst du beliebig viele Zustände per Mausklick setzen. 
-  * Übergänge setzen: In den Modus Übergänge setzen gelangst du, indem du den Button mit dem länglichen Pfeil anklickst. Dann kannst du den Zustand, von dem der Übergang ausgehen soll, anklicken und die Maustaste gedrückt halten. Lass sie erst wieder los, wenn du am Zielzustand angelangt bist. So kannst du auch einen Übergang von einem Zustand zu sich selbst setzen. 
-  * Zustände/Übergänge löschen: In den Lösch-Modus kommst du, indem du den Totenkopf-Button anklickst. In diesem Modus kannst du die Zustände/Übergänge anklicken, die du löschen willst. 
-  * Zustände bearbeiten: Klickt man einen Zustand mit der rechten Maustaste an, wird ein Menü angezeigt. Bei weiterhin gedrückter rechter Maustaste können z. B. die folgenden Menüpunkte ausgewählt werden: 
-    * Initial: Anfangszustand setzen 
-    * Final: Endzustand setzen 
-  * Über den Menüpunkt ''File->Save as'' kann das Modell gespeichert werden. 
- 
-==== Aufgaben ==== 
- 
-{{:aufgabe.png?nolink  |}} 
-=== (A1) Schulausflug reloaded === 
- 
-  
- 
-Beschäftige dich noch einmal mit dem Schulausflug-Automaten. Lade dir zuerst erneut 
-den Automaten „Schulausflug“ in dein JFLAP-Programm. Wie du bereits weißt, wollen Anke und Anne auch an dem Ausflug teilnehmen. Ändere den Automaten deshalb so ab, dass er auch Anke und Anne akzeptiert! 
- 
----- 
-{{:aufgabe.png?nolink  |}} 
-=== (A1) Telefonvorwahl === 
- 
- 
- 
-Erstelle mit JFLAP einen Automaten, der überprüft, ob eine beliebig lange Telefonnummer mit einer Stuttgarter Vorwahl beginnt (0711).  
- 
- 
-==== Kontrolle ==== 
- 
-{{:aufgabe.png?nolink  |}} 
-=== (L1) === 
- 
- 
- 
-Vervollständige den folgenden Lückentext: 
-<code> 
- 
-Ein Automat ________________ das Eingabewort genau dann, wenn er sich nach dem 
-Einlesen des ganzen Wortes in einem Endzustand befindet. 
-Ansonsten ________________ er das Wort nicht. Man sagt auch, der Automat _________ 
-in diesem Fall das Eingabewort. 
-</code> 
- 
- 
-----  
-{{:aufgabe.png?nolink  |}} 
-=== (L2) === 
-Betrachte den folgenden Automaten: 
- 
-{{ :faecher:informatik:oberstufe:automaten:lepro:erstellung:l1.png?600 |}} 
- 
-Welche der folgenden Eingaben akzeptiert der Automat? 
- 
-  * aaaaab 
-  * bcc 
-  * bccbc 
-  * aaab 
-  * bcbab 
-  * bbaa