faecher:informatik:oberstufe:automaten:lepro:erstellung2:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
faecher:informatik:oberstufe:automaten:lepro:erstellung2:start [23.09.2020 17:30] – [Lernziel] sbelfaecher:informatik:oberstufe:automaten:lepro:erstellung2:start [19.05.2022 09:19] – [Aufgaben] sbel
Zeile 30: Zeile 30:
 ablesen, ob eine Zahl gerade ist, oder nicht. Die ersten drei Ziffern der Zahl sind also für den Automaten uninteressant. Das lässt sich folgendermaßen darstellen: ablesen, ob eine Zahl gerade ist, oder nicht. Die ersten drei Ziffern der Zahl sind also für den Automaten uninteressant. Das lässt sich folgendermaßen darstellen:
  
-{{ :faecher:informatik:oberstufe:automaten:lepro:erstellung2:gerade01.png?600 |}}+{{ :faecher:informatik:oberstufe:automaten:lepro:erstellung2:gerade03.png?500 |}} 
 + 
 +Dieser Automat "zählt" praktisch nur die ersten drei Ziffern drei und ignoriert alle anderen Eigenschaften der Eingaben. Nur die letzte, die vierte Ziffer, ist von Bedeutung für unser Beispiel. Denn wenn diese Ziffer gleich 0, 2, 4, 6, oder 8 ist, ist die Zahl gerade. Unser Automat soll in diesem Fall die Zahl somit akzeptieren. 
 + 
 + 
 +Ist die letzte Ziffer eine 1, 3, 5, 7 oder 9 – ist die Zahl also ungerade – soll der Automat die Zahl verwerfen. Diese Unterscheidung zwischen geraden und ungeraden Zahlen lässt sich folgendermaßen umsetzen: 
  
 {{ :faecher:informatik:oberstufe:automaten:lepro:erstellung2:gerade02.png?600 |}} {{ :faecher:informatik:oberstufe:automaten:lepro:erstellung2:gerade02.png?600 |}}
  
-{{ :faecher:informatik:oberstufe:automaten:lepro:erstellung2:gerade03.png?600 |}}+Jetzt muss noch der Endzustand richtig gesetzt und der Startzustand markiert werden. Der fertige Automat sieht dann folgendermaßen aus: 
 + 
 +{{ :faecher:informatik:oberstufe:automaten:lepro:erstellung2:gerade01.png?600 |}} 
 + 
 +===== Aufgabe ===== 
 + 
 +Entwirf nun selber einen Automaten, der als Eingabe Zahlen mit drei Stellen übergeben 
 +bekommt und der alle Zahlen, die echt kleiner als 40 (also 040) sind, akzeptiert! 
 + 
 +Erstelle diesen Automaten zunächst mit Papier und Bleistift, übertrage ihn dann in JFLAP und teste ihn! 
 + 
 +====== Die Sprache eines Automaten ====== 
 + 
 +Zu jedem Automaten lässt sich eine Menge von Wörtern finden, die dieser Automat akzeptiert. Diese 
 +Menge wird **Sprache** des Automaten genannt. Man sagt auch: Der Automat erkennt diese Sprache. 
 + 
 +Ein Wort ist eine Zeichenkette, die aus beliebigen Zeichen des Eingabealphabets bestehen kann. Wörter können zum Beispiel 
 +so aussehen: 
 + 
 +  * Baum 
 +  * abbc 
 +  * 011BK5 
 + 
 +Betrachte noch einmal den Automaten aus dem ersten Beispiel dieses Kapitels. Dieser Automat akzeptiert alle geraden Zahlen mit vier Stellen. Man kann diese Zahlen mit der folgenden Menge beschreiben: {0000, 0002, 0004, ..., 9996, 9998}. Diese Menge ist also die Sprache, die dieser Automat erkennt. 
 + 
 +<WRAP center round important 60%> 
 + 
 +**Wort:** Zeichenkette, die aus beliebigen Zeichen des Eingabealphabets  besteht. 
 +**Sprache eines Automaten:** die Menge von Wörtern, die der Automat akzeptiert.  
 + 
 +Man sagt, der Automat erkennt diese Sprache. 
 +</WRAP> 
 + 
 +===== Beispiel ===== 
 + 
 + 
 +Betrachte noch ein weiteres Beispiel eines Automaten mit dem Eingabealphabet ''{a,b,c}'': 
 + 
 +{{ :faecher:informatik:oberstufe:automaten:lepro:erstellung2:bsp1.png |}} 
 + 
 +Dieser Automat akzeptiert alle Wörter, die mit a anfangen, mit a aufhören und in deren Mitte keine 
 +weiteren a’s vorkommen, sondern nur beliebig viele b’s und c’s. Er erkennt also die Sprache, die aus 
 +der Menge der oben beschriebenen Wörter besteht. 
 + 
 +===== Aufgaben ===== 
 + 
 +Entwerfe die Automaten auf Papier, teste mit JFLAP 
 + 
 +----  
 +{{:aufgabe.png?nolink  |}} 
 +=== (A1) === 
 + 
 +Entwickle einen Automaten mit dem Eingabealphabet {a, b}, der die folgende Sprache erkennt: Die Menge aller Wörter, die vorne und hinten beliebig viele a’s und in der Mitte irgendwo genau ein b haben. Achtung: Beliebig viele a’s heißt immer, dass auch kein a an dieser Stelle sein kann! 
 + 
 +----  
 +{{:aufgabe.png?nolink  |}} 
 +=== (A2) === 
 + 
 +In einer Firma möchte ein Chef allen Mitarbeitern, die 2006 in der Firma angefangen 
 +haben zu arbeiten, einen Bonus auszahlen. Um nicht jede einzelne Personalakte lesen zu müssen, will er ein Programm schreiben, das diese Aufgabe für ihn übernimmt. Dieses Programm soll auf Grundlage eines Automaten arbeiten und alle Datensätze der Mitarbeiterdatenbank überprüfen. Als Eingabe erhält dieser Automat 
 +ein Datum. Es werden also grundsätzlich nur Eingaben der Form ''TT.MM.2006'' akzeptiert Er soll die Eingabe akzeptieren, falls sie ein korrektes Datum aus dem Jahr 2006 ist. 
 + 
 +Achtung: Beachte Feinheiten, wie die unterschiedlichen Monatslängen. Die Punkte der Datumseingabe brauchst du aber in deinem Programm zunächst noch nicht zu berücksichtigen. 
 + 
 +----  
 +{{:aufgabe.png?nolink  |}} 
 +=== (A3) === 
 + 
 +Erstelle einen Automaten, der alle Wörter akzeptiert, die eine gerade Anzahl von a’s ent- 
 +halten. Das Eingabealphabet ist dabei die Menge'' {a,b,c}''.
  
 +Der Automat soll zum Beispiel das Wort ''abacbaa'' akzeptieren, aber das Wort ''abacba'' verwerfen.