Theoretische und technische Informatik - ganz praktisch
Herzlich willkommen auf der Question/Answer-Plattform zu Grundlagen der Informatik II. Wir wünschen Ihnen viel Spaß beim Lernen und Diskutieren!
Loggen Sie sich mit Ihrem KIT-Account (u...) ein, um loszulegen!
Beachten Sie auch diese Informationen zum Schnelleinstieg.
(Nicht-KIT-Studierende beachten bitte diese Informationen.)

Schöne Ferien!
 

 

Alternativlösung: mit b zwei a's löschen

–1 Punkt
86 Aufrufe
Hallo liebe Übungsleiter und liebe Studenten,

kann ich mit einem b zwei a's löschen? Also genauer: wenn in meinem Keller bereits 2 a's enthalten sind und ich ein b einlese, dass ich dann den Keller einfach komplett lösche?

Formal:

[latex] (So, a, ko) -> (So, ako) [/latex]

(So, \lambda, ko) -> (Se, ko)

(So, a, a) -> (S1, aa)

(S1, b, a) -> (Se, \lambda)  "zwei a's im Keller, b einlesen, Keller leer"

(Se, a, ko) -> (So, ako)

Bitte um Rückmeldung.

Vielen Dank im Voraus.
Gefragt 15, Jan 2015 in KEL-AB von uoddo uoddo Lernwillige(r) (150 Punkte)  
erneut getaggt 17, Jan 2015 von Lukas König

Eine Antwort

0 Punkte
 
Beste Antwort
Hallo,

so geht das leider nicht, denn du kannst immer nur auf das oberste Kellerzeichen zugreifen. Dann hast du 4 Möglichkeiten: du entfernst es, du behältst es einfach bei, du ersetzt es oder du fügst ein neues hinzu. Etwas anderes geht nicht.
Beantwortet 15, Jan 2015 von uxcyx uxcyx Tutor(in) (104,810 Punkte)  
Bearbeitet 15, Jan 2015 von uxcyx uxcyx
Danke für die Antwort,

 

wieso wird dann in der Musterlösung, wenn im Keller ein a ist und ein a eingelesen wird, das a mit a ersetzt?

Also:

(So,a,a) -> (S1,a)

 

Ich darf ja nur auf das oberste zugreifen, also auf das a im Keller.
Du kannst immer nur auf den obersten Wert im Keller zugreifen, das andere a ist ja kein Kellerwert, sondern ein Eingabewert.
Okay und was wird hier gemacht:

(So,a,a) -> (S1,a)

Hier wird doch der Eingabewert a einfach ignoriert und der Kellerwert a beibehalten, oder?
Ja, dieser Ausdruck bedeutet entweder, dass der Eingabewert ignoriert wird, oder dass du das oberste Kellerzeichen durch den Eingabewert ersetzt.
(So, b, a) -> (S1, a) bedeutet also ignorieren,
(So,a, b) -> (S1, a) bedeutet ersetzen
Okay vielen Dank.
Dann sind das aber 4. Operationen die ich zur Verfügung habe.
1) Kellerwert löschen
2) Kellerwert beibehalten
3) auf den aktuellen Kellerwert das Eingabewert hinzufügen
4) den aktuellen Kellerwert mit dem Eingabewert ersetzen

Habe ich das richtig verstanden?
Genau! (Sorry da hab ich vorhin eine vergessen)
Okay, cool. Ich habe grad ein Verständnisproblem.
2) Kellerwert beibehalten
Das ist mir nicht so einleuchtend. Ich kann doch den Kellerwert k0 immer beibehalten oder? Also alle Wörter ignorieren und dann ist mein Keller immer leer.
Damit meinte ich nicht das Kellersymbol (k0) sondern den Wert der Momentan auf dem Keller liegt. Also bei (S0, b, a) wäre dein oberster Wert im Keller ja das a. Wenn du jetzt auf (S0, a) überführst steht jetzt immer noch das gleiche a im Keller, es gab keine Veränderung.
Ja aber den Kellerwert k0 kann ich ebenfalls beibehalten.
Siehe Nachklausur 2012 Aufgabe 3 a)

δ(s1, 1, k0) = (s2, k0)
Der aktuelle Kellerwert ist k0, 1 wird gelesen, ignoriert, Kellerwert k0 bleibt erhalten.
Natürlich geht das auch, den Kellerwert kannst du allerdings nicht löschen deshalb ist er immer im Keller enthalten. Er steht auch weniger für ein Zeichen als viel mehr für einen leeren Keller.
...