So, ich habe auch noch eine Ankündigung zu machen.
Alle Leute, die auf Lehramt studieren,
sollten sich im Kommensee für einen speziellen Gruppenraum anmelden,
weil in neun Tagen euer Pflichtpraktikum beginnt.
Das ist ein Praktikum, was speziell für Lehrämtler ist.
Also alle anderen Leute betrifft es nicht,
aber für die Lehrämtler ist es halt verpflichtend.
Sämtliche Informationen dazu findet ihr, wie gesagt, in diesem Gruppenraum.
Bis jetzt sind ja nur zehn Leute eingetragen. Ich kann
mir nicht vorstellen, dass wir nur zehn Lehrämter haben.
Bitte tragt euch da ein. Wenn ihr da
irgendwelche Probleme mit haben solltet, ist euer Ansprechpartner Datelife-Reak.
R-I-C-K-A-Informatik um die Hamburg.de. Gut. Okay,
dann kommen wir jetzt zum eigentlichen Inhalt nach diesen beiden
kleinen Intros
Sieht jemand den Unterschied auf dieser Folie im Vergleich,
was ich vor einer Woche gezeigt habe?
Ich habe euch ja vor einer Woche versprochen,
ich bringe euch genug bei, dass ihr Carrie durch den
Labyrinth steuern könnt und jetzt ist da irgendwie schon wieder dieses Labyrinth.
Oder ist das ein anderes Labyrinth? Eine Hand ist oben,
zwei, drei Hände sind oben, nehmen wir mal dich.
Es hat verschiedene Wegen und Sackgassen. Also bis jetzt hier
, das sieht alles noch aus, total einfach.
Man folgt einfach hier diesen Weg und hier wird es jetzt spannend.
Wo soll Carrie jetzt lang gehen? Soll er
sich für den einen Weg entscheiden oder für den anderen?
Wenn er sich zum Beispiel für diesen hier entscheiden würde,
irgendwann mal, dann landet er hier in der Sackgasse.
Diese ganzen Probleme hatten wir letzte Woche noch nicht.
Das sind jetzt also, ja,
das ist eine schwierigere Art von Labyrinth,
die jetzt auf euch zukommt
Technisch, was ich euch beibringen werde oder konzeptionell eigentlich auch
, ist die sogenannte bedingte Schleife.
Danach hatten ja auch schon letzte Woche Leute gefragt,
wie kann ich das erreichen, dass Karre irgendwie so lange etwas macht,
bis eine bestimmte Bedingung gilt oder nicht mehr gilt.
Das gucken wir uns heute an. Und ich wollte euch
noch mal ein bisschen was zeigen. Das ist zwar ganz nett,
wenn Karre irgendwie so durch die,
durch seine Welt läuft und irgendwie Blumen rettet und Straßen mit Sement füllt,
aber kann man auch irgendwas machen,
was vielleicht uns noch etwas darüber beibringt, wie Rechner irgendwie intern funktionieren.
Denn ich glaube, ihr werdet in neuerer späteren Zukunft vielleicht
nicht unbedingt irgendwelche Blumen durch die Gegend tragen müssen.
Okay, das machen wir also heute. Dann Auf den Folien von letzter Woche,
die ich alle gar nicht euch gezeigt hatte,
waren ganz, ganz viele Diagramme.
Und ich gebe mir immer ganz viel Mühe, diese Diagramme zu erstellen.
Ich muss da quasi jeden Strich einzeln zeichnen.
Und auf dem heutigen Foliensatz sind diese Diagramme auch.
Gut, ihr habt ihr aber bis jetzt noch nicht gesehen.
Deswegen muss ich dir einmal ganz kurz erklären. Also ich
habe auf meinen Folien oft so einen kleinen Quelltext-Ausschnitt von Carol,
das ist, was wir hier, ein eigener Befehl,
der heißt Pick or Drop.
Was macht dieser Befehl? Also Carol schaut sich an,
stehe ich gerade auf dem Bieper,
wenn ich auf dem Bieper stehe, dann nehme ich ihn auf.
Ansonsten lege ich einen ab. Und das entsprechende Kontrollflussdiagramm nenne ich
die immer, sieht dann so aus. Also immer,
wenn Carol eine Bedingung prüft,
dann schreibt man hier so eine Raute oder zeichnet so eine Raute
und in die Raute schreibt man dann die Bedingung rein,
die er prüfen soll
Und wenn die Bedingung True ist, dann geht es also
hier weiter, der Kontrollfluss geht jetzt hier lang.
Das heißt, ich lande quasi in diesem Block, das ist das analog dazu.
Dann wird hier das Pick Peaper ausgeführt und dann wird das gemacht,
was jetzt unter dem IF steht,
aber da steht jetzt ja nichts mehr.
Aber was auch immer da jetzt normalerweise stehen würde,
das würde dann als nächstes ausgeführt werden.
Und der andere Fall, wenn also diese Bedingung nicht gilt,
wenn es also Fouls ist, dann gehe ich in den anderen Block.
Das wäre also hier quasi dieses Ls und da führe ich dann das Dropliefer aus.
Und anschließend lande ich dann auch unter dem IF.
Also egal, für welchen Pfad ich mich hier entschieden habe,
ich lande anschließend unterhalb von dem IF.
So sind diese Kontrollflussdiagramme
zu deuten
Gut, und was eben wichtig ist, ist,
man muss sich gar nicht angucken, was ist das für eine Bedingung,
wenn man hier einfach nur sieht,
das ist ein If und das ist ein Els,
dann weiß ich, als Programmierer,
es wird auf jeden Fall entweder dieser Block ausgeführt oder es wird dieser Block ausgeführt.
Es wird genau einer dieser beiden Blöcke ausgeführt,
nicht irgendwie beide oder gar keiner. So funktioniert das If-Als.
Gut. Brauchen wir das Els? Könnte man nicht einfach
die Bedingungen negieren und ein zweites If darunter schreiben?
Viele Programmieranfänger treten in so eine Falle rein und denken,
naja, Els heißt doch eigentlich nur, wenn die Bedingungen nicht gilt,
das könnte ich dann ja auch einfach von Hand prüfen.
Also habe ich jetzt hier einfach mal das Els ersetzt durch
ein zweites If, wo die Bedingung einfach umgedreht ist.
Und meine Behauptung ist, das ist jetzt irgendwie nicht dasselbe
, da passiert was anderes
Vielleicht sieht man auch, dass das Kontroll fürs Diagramm
völlig anders ist. Also nehmen wir mal an,
Kerl steht auf einem Biefer, dann nimmt er ihn auf.
Ja, und anschließend lande ich dann ja unter dem If
, dann wird dir das Zweite geprüft.
Das heißt, es werden auf jeden Fall beide Bedingungen geprüft.
Ja. Okay, wenn ich jetzt den Bieper aufgenommen habe,
wird dann diese Bedingung Schuh oder False sein. Ja,
also es ist ein Bieper da, ich nehme ihn auf
und ich frage anschließend, ob kein Bieper da ist.
Wird Schuh sein, ja, das heißt, ich werde
mich auf jeden Fall dann hier für diesen Pfad entscheiden.
Jetzt nehmen wir mal an, on-bieper-Waffen vornherein, False,
ja, also da war gar kein Bieper,
ich musste dann also auch gar keinen nehmen.
Was ist dann mit dieser Bedingung Not-on-bieper,
Ist auch Cho. Das heißt, er wird immer
diesen Pfad nehmen und er wird niemals diesen Pfad nehmen.
Das ist wahrscheinlich ein Programmierfehler. Wollen wir das einmal ganz kurz vielleicht bauen?
Ich tippe das jetzt einfach mal kurz ab. Ich sage also,
hier irgendein Programm ist völlig egal, wie ich es nenne.
Ich nenne es mal genauso wie auf der Folie.
Pick or Drop. Und dann hatte ich gesagt,
wenn ich auf einem Bieper stehe, dann will ich ihn aufnehmen.
Wenn ich nicht auf einem Bieper stehe,
dann will ich einen ablegen.
So sah das auf der Folie aus
Und ich hatte ja schon ein PDF ins Kommensee gesteckt mit Shortcuts.
Und es gibt einen weiteren Shortcut, den habe ich nicht
in dieses PDF aufgenommen, weil der ist so ein bisschen buggy.
Manchmal funktioniert der manchmal, funktioniert der nicht.
Ich hoffe jetzt, der Vorführeffekt, dass er funktioniert.
Ich probiere einmal kurz Ops. Ah, seht ihr,
was hier unten passiert ist? Er warmt nicht und sagt,
pass auf, lieber Programmierer in Zeile 7, ich kann hier sogar raufklicken,
dann geht er in Zeile 7, warnte mich und sagt,
diese Bedingungen, die du hier prüfst, ist immer wahr.
Das ist wahrscheinlich nicht sinnvoll. Du hast hier wahrscheinlich
was anderes dabei gedacht
Das heißt also, diesen Schorkler,
den ich hier eingebaut habe, der versucht,
das Programm zu analysieren, schaut sich die Bedingung an,
schaut, was Carrie da so macht und versucht also,
solche Situationen festzustellen, die irgendwie darauf hindeuten,
dass der Programmierer sich irgendwie geirrt hat.
Gut, wenn ihr das auch ausprobieren wollt, der Shortgas-Steuerungsschiff D,
aber ihr dürft die Warnung nicht allzu ernst nehmen.
Manchmal kommen da Warnungen raus, die gar keine Warnung sind.
Manchmal findet er auch nicht alles. Aber für solche kleinen
Beispiele scheint, scheint es bis jetzt immer zu funktionieren.
Okay. Das ist also der Unterschied zwischen IFLs und
zwei Ifs, wo die zweite Bedingung negiert ist.
Ist also nicht dasselbe. Hier ist es relativ offensichtlich,
dass es nicht dasselbe ist,
also wenn die zweite Bedingung immer true ist,
dann kann das so ein Programm eben auch erkennen
Gibt aber auch noch so ein paar Fälle,
die nicht ganz so einfach sind, zu diskutieren.
Zum Beispiel denen hier. Hier sage ich also,
das ist Teil aus dieser Labyrinthaufgabe. Wenn rechts von Carrie frei ist,
soll er sich nach rechts drehen, ansonsten soll er sich nach links drehen.
Auch hier gibt es wieder zwei Pfade durch den Code.
Entweder entscheidet er sich also, also ich halte hier für
diesen Pfad oder entscheidet sich für diesen Vater.
Genau einen dieser Pfade wird er nehmen. Wenn ich jetzt
hier irgendwas anderes statt dem Ältesten schreibe,
viele Studenten schreiben irgendwie sowas, sagen, naja,
wie würde ich das machen, durch so ein Labyrinth zu gehen?
Naja, wenn links frei ist, drehe ich mich nach links,
wenn rechts frei ist, drehe ich mich nach rechts.
Und was man vergisst, ist,
dass ja diese Ifs alle so hintereinander ausgeführt werden
Also nicht so, dass Karre sich sagen würde,
oh, dieses Üff war ja schon schon,
dann ignoriere ich meinen ganzen Rest,
sondern er arbeitet einfach ganz stumpf von oben nach unten die Befehle ab.
So ein bisschen anders, als ihr das vielleicht im Alltag macht,
wenn ihr über Bedingungen nachdenkt. Also hier kann es also durchaus passieren,
dass zum Beispiel gar keine dieser Bedingungen zu ist.
Oder es könnte auch sein, dass beide Bedingungen zu sind oder nur eine von beiden.
Und wenn das eine von beiden ist, dann welche.
Das kann man sich dann mal in Ruhe überlegen,
dass da tatsächlich alle vier Pfade möglich sind. Okay,
und ich werde oft anhand dieser möglichen Pfade durch den Code diskutieren,
dass ich sage, ich stelle mir eigentlich vor,
dass es drei verschiedene Fälle gibt,
die ich gerne unterscheiden möchte, dann erwarte ich eigentlich auch,
dass es drei verschiedene Pfade durch den Code gibt,
sonst habe ich mich wahrscheinlich
irgendwie logisch geirrt
Okay, das ist jetzt vielleicht ein bisschen abstrakt,
ich werde da gleich noch konkreter werden. Okay,
und was ich dann immer gerne mache, am Anfang einer Vorlesung ist,
Lösungen vorzustellen, die Studenten in der Vergangenheit gebaut haben.
Lösungen, die funktionieren meistens, aber die so unnötig kompliziert sind.
Und hier habe ich zum Beispiel eine mögliche Lösung zu dem Walk the Labyrinth.
Wir können uns das ja nochmal ganz kurz angucken, was da getan werden sollte.
Das war ja, glaube ich, die letzte Pflicht,
die letzte freiwillige Aufgabe, das war so die hier.
Wo also Kerl durch dieses Labyrinth gehen soll und Dieses Labyrinth ist eben so einfach,
es gibt keine Wegkreuzung, es ist also immer völlig klar,
wo er lang gehen muss,
solange er nicht von der Wand steht,
kann er einfach gerade ausgehen.
Und wenn er droht, gegen eine Wand zu laufen,
muss er sich halt vernünftig drehen.
Ja, und er muss auch immer die gleiche Anzahl von Schritten gehen.
Das kann man also mit einer Repeach-Schleife lösen. Hat jemand
einen Vorschlag, wie viele Schritte Karre immer gehen muss,
wenn immer das komplette Labyrinth ausgenutzt wird und der Diamante mal ganz am Ende steht?
Ja, im Jahrhundert Bäder, am Anfang.
Genau, sehr schön. Also du hast es gerade gesagt,
es gibt ja 100 Felder, auf dem ersten stehen wir schon,
also müssen wir 99 mal nach vorne gehen, um auf dem letzten Feld zu landen.
Sehr schön
Gut, das war also das Rätsel dazu. Und so
sah eben eine Lösung aus. Und man muss dazu sagen,
dass das Labyrinth vor einem Jahr noch statisch war.
Also es war immer dasselbe Labyrinth. Das heißt,
man konnte sich das in Ruhe angucken und sich genau überlegen,
wie oft dreht sich Carol auch zum Beispiel unter anderem.
Und da haben Leute mir solche Lösungen zum Beispiel gezeigt.
Und ich fange dann immer an,
solche Lösungen von oben nach unten zu lesen und denk so,
okay, Repeat 77, was könnte die 77 bedeuten?
Sagt mir jetzt erstmal nichts. Vielleicht verstehe ich es ja später.
Und dann schaue ich mir das an und denk so,
oh Gott, drei Ifs untereinander. Oha,
also jedes einzelne dieser Ifs könnte wahr sein oder könnte auch falsch sein.
Das heißt, wie viele Möglichkeiten gibt es jetzt,
wieder Kontrollfluss hier so durchgehen kann durch den Rumpf des Repeats,
wenn es drei Ifs sind.
Und jedes Mal muss ich mich entscheiden,
ja oder nein
Es könnte ja sein,
dass ich jedes Mal True habe in allen drei Fällen oder
jedes Mal Falls in allen drei Fällen oder so eine Mischung.
Vielleicht dahin, ja. Sechs. Gibt es andere Vorschläge?
Ja. Acht? Gibt es andere Vorschläge? Deutlich Handhof,
wenn es andere Vorschläge gibt? Nee. Wer glaubt,
dass es acht sind am Handhof? Okay, vielleicht so
zehn Prozent. Wer glaubt, dass es sechs sind?
Hier sehe ich jetzt nicht so viele Hände. Okay,
wer kann denn begründen, warum es acht sind?
Aber Handhof ist begründen, kann, ja.
Ja, aber jetzt gesagt,
seit 2 bis
Genau. Genau, es sind zwei hoch, drei Möglichkeiten
insgesamt. Zwei, mal zwei, mal zwei.
Sehr schön. Und dann denke ich mir sofort,
wenn ich jetzt als Programmierer verstehen muss,
wie diese acht verschiedenen Möglichkeiten zustande kommen, da werde ich ja nie fertig.
Also diese Lösung ist irgendwie suboptimal, um sie zu verstehen.
Möglicherweise funktioniert sie, aber ich verstehe sie ehrlich gesagt nicht so gut.
Und was mich zum Beispiel auch stört, ist,
dass das Move Forward an drei verschiedenen Stellen steht.
Ja, es gibt also, ja, und dadurch,
dass eben alle acht Kombinationen vorkommen können, könnte es zum Beispiel sein,
dass Carrie vielleicht gar nicht nach vorne geht.
Ich glaube, das tritt aber hier gar nicht auf.
Es könnte sein, dass er einmal nach vorne geht.
Es könnte sein, dass er zweimal nach vorne geht,
es könnte sein, dass er dreimal nach vorne geht,
in einem Durchlauf dieser Repeach-Schleife.
Und dadurch kommt diese merkwürdige 77 zustande
Also irgendwie nicht so schön, die Lösung.
Geht das nicht auch schöner? Und jetzt wollte ich euch
mal kurz vorstellen, wie ich mir das überlegt habe.
Also hier sind so meine Gedanken dazu. So ein bisschen
wurde das auch gerade schon schön von dem Studenten gesagt.
Wir haben also 100 Felder, auf dem ersten Feld stehen wir schon.
Also müssen wir auf jeden Fall 99 mal Move Forward ausführen.
Weniger ist schlecht. Ja, dann kommen wir nicht bis zum Diamanten.
Und mehr ist auch nicht gut, dann rennen wir irgendwie
eine Wand rein. Also machen wir nochmal Folgendes.
Ich sage, ich möchte 99 mal nach vorne gehen.
Wenn ich also als Programmierer diesen Code sehe,
weiß ich, sofort alles klar,
sofern jetzt nicht in diesem Befehl noch irgendwelche Move Forwards stecken,
geht er auf jeden Fall schon mal die richtige Anzahl von Schritten.
Da muss ich mich also um das Problem
nicht mehr kümmern
Und welches Problem muss ich mich jetzt noch kümmern?
Ich will nicht in eine Wand reinrennen. Ich muss also irgendwie sicherstellen,
mit diesem Befehl, dass Kerl sich geeignet anordnet,
soll er sich gar nicht drehen, soll er sich nach links drehen,
soll er sich nach rechts drehen.
Das habe ich mir auch versucht auf der nächsten Folie so
ein bisschen grafisch darzustellen. Also wenn Kerl zum Beispiel hier steht,
wo er eben am Anfang steht, was soll dann passieren?
Er soll sich gar nicht drehen. Das Moforward macht er ja sowieso,
ja, aber er soll sich gar nicht drehen. Gut,
wenn er jetzt zum Beispiel hier steht und er wurde einfach
nur nach vorne gehen und würde ja in die Wand reinlaufen,
das wäre nicht so gut.
Also hier, in diesem Fall muss er sich nach rechts drehen.
Gut. Und wenn er hier steht und nach Süden guckt,
dann würde er in diese Wand reinlaufen, das wäre auch nicht gut,
dann muss er sich eben nach links drehen.
Diese drei Fälle gibt es logisch,
mehr brauche ich nicht zu unterscheiden,
dadurch,
dass es
keine Sackgassen gibt
Und jetzt würde ich als Programmierer erwarten,
dass diese drei Fälle auch irgendwie in meinem Code sich wiederfinden.
Ich würde also erwarten, dass dieser Befehl Turnaway from Wall,
dass es da drei verschiedene Pfade durch diesen Code gibt.
Und ich habe das auch mal farblich hervorgehoben. Also,
der eine Pfad, wo sich gar nicht drehen soll,
das ist hier dieser laue Blee, dieser leere,
blaue Block, der hier, der Fahrt,
wo sich nach links drehen soll, ist dieser lilane Block.
Und der Fahrt, wo sich nach rechts drehen soll,
ist dieser rote Block. Und andere gibt es nicht und
diese Blöcke schließen sich alle gegenseitig aus.
Ja, es kann nicht sein, dass Karre sich irgendwie
hier so durchmuggelt und keinen dieser Blöcke ausführt.
Und es kann auch nicht sein,
dass er in einem Durchlauf mehrere von diesen Blöcken ausführt
Also, wenn vor ihm frei ist, muss er nichts tun.
Und dann wird ja sozusagen dieser Block nur betreten,
wenn nicht vor ihm frei war, wenn ich mich also drehen muss.
Und dann sage ich, naja, geh halt entweder in
diesen Block oder in diesen Block genau einen dieser beiden Blöcke,
je nachdem, ob links frei ist oder nicht.
Diese Lösung würde versagen, wenn Carrie in der Sarkasse stehen würde,
dann würde er sicher nach rechts sehen,
obwohl rechts von ihm eine Wand ist.
Aber es gibt hier eben keine Sarkasse.
Bis auf eben die Staatssackgasse sozusagen und die Endsarkasse,
aber die sind keine Probleme.
Ansonsten gibt es hier
keine Sarkasse.
Und dann bin ich immer zufrieden als Übungsgruppenleiter,
weil ich sehe diesen Code und kann verstehen, ja,
dieser Quote hat irgendwie so ein 1-zu-1-Mapping zu den Gedanken,
die ich mir vorher gemacht habe.
Welche möglichen Fälle gibt es denn so? Wir haben zum Beispiel,
ich gehe mal in eine Folie zurück oder zwei Folien zurück.
Hier sehe ich das überhaupt nicht. Ich sehe hier nicht
irgendwie eine tolle Logik, die ich sofort verstehen kann.
Gab es dazu Fragen, es ging gerade so
eine Stimme hoch?
Ja. Was macht das
Richtig, also die Frage der Studentin war,
wenn vor mir frei ist, macht er ja eigentlich gar nichts.
Und ich habe noch nicht mal gesagt, dass er nach
vorne gehen soll, würde er dann einfach nur stehen bleiben.
Und dazu muss man sich angucken, wo wird dieses Turnaway from Wall aufgerufen?
Das war auf der Folie davor. Da habe ich gesagt,
ich rufe das Turnaway from Wall auf,
bevor ich den Schritt nach vorne gehe.
Okay. Also immer dann, wenn Turnaway from Wall
einmal ausgeführt wurde, wird anschließend Muforward ausgeführt.
Auf jeden Fall. Darum muss ich mich nicht mehr kümmern.
Ich habe also sozusagen, man nennt das gerne eine Separation
of Concerns. Der eine Befehl kümmert sich nur um das
richtige Drehen und das Muforward tue ich da nicht rein.
Stattdessen gehört das Muforward oder ich habe es hier in
diesem Repeat rumfreigetan
Beantwortet das die Frage? Gut. Sehr schön. Gut.
Dann, ich gehe noch mal kurz die Folie zurück.
Einen leeren Blog bei einem If, das hatte ich euch
schon letzte Woche beigebracht. Wenn ich sage,
wenn eine Bedingung gilt,
will ich nichts machen und im anderen Fall will ich was machen,
da kann man einfach die Bedingungen umdrehen und dann brauche ich das Aids nicht mehr.
Vielleicht erinnert ihr euch noch. Dann vereinfacht sich der Code
ein bisschen, die haben wir ihn.
Und auch hier gibt es jetzt immer noch diese drei Möglichkeiten,
auch wenn sie nicht mehr ganz so schön offensichtlich sind,
weil ich jetzt nichts mehr habe, was ich blau einfärben könnte.
Also, nehmen wir mal an,
Vorkehre ist frei
Dann ist ja diese Bedingung, not front is clear,
ist dann ja falls. Und dann würde er sozusagen,
ja, wenn jetzt hier unten noch ein Els wäre,
würde er das ausführen, er macht dann jetzt einfach gar nichts,
weil das Els nicht da ist.
Also der Fall, wenn vor mir frei ist,
ist hier auch sozusagen abgehandelt. Er macht dann einfach nichts
. Der zweite Fall mit dem Turn Left ist hier und
der dritte Fall mit dem Turn Ride ist hier.
Gut, ein weiteres Fundstück aus dem Labor.
Und schon wieder so eine magische Zahl.
Remove the tiles. Wollen wir uns das nochmal angucken?
Wie sah das aus? Das war hier. Was sollte er
da machen? Hintergrundgeschichte war so ähnlich wie bei dem,
also Es gab ja einmal das, wo er die Badezimmer fließend hinlegen sollte.
Und das ist eben jetzt genau das Gegenteil. Er soll
die Badezimmer fließend wieder entfernen. Dieses Problem ist sogar einfacher,
als sie hinzulegen, werden wir gleich sehen.
Entfernte einfach schön die Badezimmer fließen. Ja. Gut,
dann schauen wir uns wieder an und versuchen irgendwie zu verstehen,
was jetzt hier steht.
Also 118. Ich habe verschiedene Theorien, wo diese 2018 herkommt.
Vielleicht hat ja jemand von euch Theorien. Also es sind
100 Fliesen. Warum sind das jetzt 118 Wiederholungen?
Ja. Das war so aufgestoßen,
ist dicht da dran und da hier in der Elternzone
ist es
ein toller Berg
Hier. Das absorbiert jedes Mal, wenn wir eine Form
machen, eine Bewegung. Das heißt gar nicht,
wie diese Personen von der Ausschütte, sondern ihr müsst noch zusätzlich dazugehen,
für jede einzelne Wendung, die die Spirale erfordert.
Ah, okay, das heißt also, es gibt irgendwie
so 18 Turn Lefts. Deswegen die zusätzlichen 18. Okay,
das war auch so ungefähr meine Theorie, sehr schön.
Was ich auch noch ganz spannend fand, ist,
dass hier das Pick Beeper geschützt ist mit einem If-On-Beeper,
wo man sich dann auch die Frage stellen muss,
gibt es irgendwann mal den Fall,
dass Kerl nicht auf einer Kachel steht?
Wann könnte dieser Fall eintreten? In diesem Fall,
wenn ich mich nur nach links drehe
Also ich bin mit dieser Lösung auch nicht so richtig einverstanden.
118, hm, ich weiß nicht. Und dann hier
diese beiden Ifs, also es könnte sein,
also dieses If wird völlig unabhängig von diesem If ausgeführt.
Ich finde die Lösung zu kompliziert. Deswegen sage ich jetzt
nochmal, wieso meine Gedanken waren bei meiner Lösung?
Also ich habe mir wieder überlegt,
gibt es irgendwie eine vernünftige Zahl, die ich nennen kann,
die irgendwas mit dem Problem offensichtlich zu tun hat?
Und das ist die Anzahl der Fliesen. Es sind ja
100 Fliesen und ich will 100 Fliesen entfernen.
Also was mache ich dann? Ich sage, ich will
100 Biefer aufnehmen. Dann bin ich schon mal sicher als Programmierer,
dass ich nicht irgendwie eine Fliese vergesse und dass ich auch nicht versuche, zu viel aufzunehmen.
Gut, dann darf ich natürlich nicht stehen bleiben,
sonst würde ich direkt in der zweiten Wiederholung der Schleife,
würde Kerre sagen, hier ist aber keine Fliesen mehr.
Ich muss auf jeden Fall einen Schritt nach vorne gehen
Ja, es geht, ich muss mich irgendwie auch bewegen.
Gut. Dann ist jetzt aber die Frage, wie kann
ich garantieren, dass vor mir auch eine Fliese ist?
Ich will ja auf eine Fliese draufgehen. Ja,
ich will nicht einfach so ins Nichts laufen oder in eine Wand rein oder so.
Ich will, dass Carrie mit dem Moe Forward nach Möglichkeit auf eine Fliese raufgeht.
Also habe ich jetzt dafür einen eigenen Befehl gemacht,
dann habe ich mal FaceTime genannt, also schaue auf eine Fliese.
Ja, und was sage ich jetzt in diesem Befehl?
Ich sage, wenn vor dir nicht schon eine Fliese ist,
dann dreh dich doch mal nach links.
In der Hoffnung, dass links von dir eine Fliese ist.
Ja, schauen wir uns das einmal ganz kurz an.
In welchen Fällen wäre das denn so?
Also momentan braucht er hier dieses Turn Left nicht auszuführen,
weil ja jeweils immer vor ihm eine Fliese liegt,
deswegen geht er auf diese Fliese rauf.
Während zum Beispiel jetzt muss er
sich umdrehen
Er macht also immer ganz stumpf,
ich nehme eine Fliese und ich gehe nach vorne,
aber zwischendurch schaue ich, ob ich mich irgendwie noch drehen muss.
Ja. Seht ihr, wie einfach die Lösung ist?
Das ist aber normal, dass man von vornherein erstmal
ganz komplizierte Lösungen baut mit ganz, ganz vielen Ifs.
Und dann kann man das nach und nach konditionieren auf einfachere Lösungen
, ja. Ich habe es jetzt ursprünglich so gemacht,
dass ich das Ganze verallgemeinert habe,
dass ich von vornherein auf dieses If und Liefer mit reingenommen habe.
Ja. Wenn ich sozusagen allgemeingültig bleibe, dass ich auch,
falls mir auf all dem Fall auch was beruflich ist,
dass dir die Rebeach-Leitung sozusagen so endlich gelaufen ist.
Das ist trotzdem
noch lautfähig
Ich gucke mal kurz, ob ich verstehe, was du meinst.
Ich resette das mal ganz kurz. Also wenn ich jetzt
irgendwo zwischendurch eine Fliese wegnehme, wo du zum Beispiel hier,
dann würde deine Lösung immer noch funktionieren.
Ja. Okay, was würde denn Kevin machen,
nachdem er diese Fliese aufgenommen hat? Okay, das heißt also
Carrie wird also quasi nur noch diesen Bereich hier aufsammeln.
Rein theoretisch. Okay. Ja, ist jetzt die Frage,
was man jetzt von der Lösung hält.
Das kann ich so spontan gar nicht beantworten. Ich würde
einfach sagen, Liest euch immer genau die Aufgabenstellung durch,
was die Spezifikation ist. Es ist so eine Informatikerkrankheit,
zu sagen, alles gleich, ich habe ein konkretes Problem.
Ich könnte das in fünf Minuten lösen,
aber wenn ihr mir eine Stunde Zeit gebt,
kann ich das noch viel abstrakter lösen.
Und dann würde das auch in ganz vielen Sonderferien funktionieren.
Das ist schön, wenn man diese,
wenn man diese Gedanken kann, also wenn man diese Gedanken denken kann,
aber man sollte das nicht immer tun.
Gut. Das war das. Und ich habe noch eins
. Das ist auch aus dem letzten Jahr.
Und ich habe das aber tatsächlich gestern auch wieder gefunden.
Mich freut das immer total, wenn diese, ja,
Muster sozusagen ganz,
ganz häufig vorkommen
Das war also aus dem Rätsel, wo Carol die Fliesen legen sollte. Ja,
da haben die Studenten sich also folgende Gedanken gemacht, naja,
wenn vor mir frei ist und auch kein Bieper liegt,
dann soll er ja sicher mal irgendwie einer hin,
was mache ich?
Ich gehe nach vorne, aber lege auch noch vorher einen Bieper ab,
okay. Ansonsten lege ich den Bieper ab und drehe mich
erstmal nach links, bevor ich nach vorne gehe.
Ob das jetzt so logisch Sinn macht oder nicht,
ist jetzt erstmal gar nicht wichtig.
Mir geht es jetzt erstmal darum, diesen Quelltext zu vereinfachen.
Und ich glaube, in diesem Diagramm sieht man sehr schön,
wie man das vereinfachen kann. Ihr seht also,
anhand dieser Bedingungen entscheiden wir uns jetzt für einen von zwei Pfaden.
Wir gehen entweder in diesen Block rein oder wir gehen diesen Block rein.
Das sind also diese beiden Pfade. Wenn die Bedingung True
ist, führe ich, also diese beiden Fehler aus.
Und am Ende wird es wieder einphaut. Oder wenn sie
Fouls ist, führe ich diese drei Befehle aus.
Und am Ende wird es immer, wird es hier wieder einpfahlt.
Sieht jemand, dass man das vereinfachen kann?
Ja, vielleicht mal du. Genau, du hast gesagt,
das Drop Beeper kann man vor das IF setzen und
das Move Forward kann man danach machen.
Warum? Weil das ja in beiden Fällen auf jeden Fall
gemacht werden muss
Nutzt nichts, ja. Ich brauche nicht diese Unterscheidung zu machen,
naja, in dem einen Fall musst du das Dropbeeper am Anfang machen,
das ist Moforward am Ende,
und den du in den anderen fallen musst,
das Dropbeeper am Anfang machen, das ist Moforward am Ende.
Ich brauche diese Spezialbehandlung nicht, wenn ich das sowieso machen muss.
Und deswegen kann ich es so vereinfachen. Ich kann also sagen,
alles klar, ich fange erst mal mit dem Dropbeeper an,
dann prüfe ich die Bedingung, äh, falls die False ist,
muss ich das Turn Left noch machen, ansonsten eben nicht.
Und auf jeden Fall führe ich am Ende das Moforward aus.
Ja, lass uns die Phase noch mal ganz kurz durchgehen,
dass wir sehen, dass sie wirklich äquivalent sind.
In diesem Fall machen wir Dropbeeper, Turn Left, Move Forward.
Und hier ist es Dropbeeper, Turn Left, Move Forward.
Und in dem anderen Fight Ops,
in dem anderen Fall ist es, Dropbeeper move Forward.
Und hier in der vereinfachten Lösung ist es Dropbeeper
Move forward. Das ist also äquivalent.
Sehr schön. Geht das eigentlich immer? Ich gehe in
meine Folge zurück. Also wenn jetzt hier irgendwas steht,
zum Beispiel Joe Pieper könnte auch was anderes sein.
Und hier ist irgendeine beliebige Bedingung. Kann ich dann immer
diesen ersten Fehl grundsätzlich vor das EF ziehen?
Also stellt euch vor, da steht Turn Left statt Dropeeper zum Beispiel.
Könnte ich das Turn Left dann auch volles durchziehen?
Oder geht das nur in diesem konkreten Fall mit dem Job Pieper?
Die Frage ist offenbar gar nicht so leicht, ja?
Wichtig ist, das ist ein Plan
Und dein Ernst, was ist das? Ich habe Nachträgung.
Und das heißt, wenn wir das Ganze zusammenfassen möchten,
dann muss, wenn wir das einfach auf Box geben,
dann wird man da rausgeführt.
Okay, ich glaube, du beziehst es gerade zu sehr
auf dieses Beispiel, wo sowieso schon Turn of Twitch.
Nehmen wir einen Turn of Around,
dann verwechseln wir es nicht mit dem Turn of Heft.
Also stell dir vor, hier steht ein Turnaround und hier
steht ein Turnaround, statt dem Job Beeper.
Gibt es dann irgendwelche Probleme zu sagen, es ist egal,
ob ich erst die Bedingung prüfe und mich dann umdrehe oder
mich erst umdrehe und dann die Bedingungen prüfe?
Das ist quasi meine Frage, ja. Kann ja sein,
dass der Befehl die Bedingungen beeinflussen. Richtig, du hast gesagt,
es kann sein, dass der Befehl die Bedingungen beeinflusst.
Zum Beispiel hier, wo Kerl schaut,
ob vor ihm ein Beefer ist, ist es unheimlich wichtig,
ob ich es erst prüfe und mich dann drehe.
Oder ob ich mich erst drehe und das dann prüfe,
weil ich dann ja ein völlig anderes Feld mir angucke.
Da müsst ihr so höllisch aufpassen. Bei dem unten geht
es immer, aber bei dem oben muss man gucken,
dass es sich nicht mehr mit der Bedingung beißt.
Okay? Gut. Das war das. Achso,
jetzt noch eine weitere Frage. Ja, das ist eigentlich
wieder dasselbe wie vorher. Kann man das Ls loswerden?
Also ich habe jetzt hier, ich sage,
wenn die Bedingungen zutrifft, mache ich gar nichts.
Ansonsten drehe ich mich nach links. Wiederholungsfrage,
wie kann ich das Ls loswerden
Da möchte ich jetzt ganz viele Hände sehen, das ist doch super einfach.
Wen hatte ich heute noch nicht? Ist das eine Meldung?
Ja. Richtig, man muss die Bedingung in dem Ifnegieren.
Okay? Ich kann nur so sagen, wenn diese Bedingungen
nicht zutrifft, dann möchte ich das Ton Left ausführen.
Ja, das mache ich jetzt einfach mal. Ihr seht also hier,
so sieht es vorher aus und so sieht es später aus.
Ich habe einfach die Bedingung genommen, habe sie in Klammern getan,
man ist ja immer vorsichtig mit Operatorpräzedenzen und habe die jetzt
einfach negiert.
Wunderbar. Ja,
das funktioniert so
Und jetzt eine schwierigere Frage. Ich habe jetzt also hier
eine Negation. Und hier drin habe ich nochmal eine Negation.
Und ich frage mich irgendwie, würde ich nicht mit weniger
Negation auskommen? Ich habe da irgendwie so einen Hund,
dann ist das in Klammern, dann negiere ich das nochmal.
Ja. Das heißt, die ist heute mit der Visierung raus.
Du meinst also, dass dieser Schritt schon falsch ist?
Ja, wie wir mit 200 Wochen. Wegen diesem Ausrufezeichen?
Es ist so korrekt, wie es auf den Folien ist.
Vielleicht wird es noch klarer, wenn wir gleich zu den
nächsten Folien gehen. Ich würde die Frage jetzt erstmal zurückstellen.
Ich glaube, es wird gleich noch klarer werden.
Es ist eine Klammer drum. Genau, diese Klammer,
die hier so blau ist, vielleicht hast du die gerade übersehen.
Also es wird wirklich die gesamte Bedingung legiert und
nicht nur das Front is clear
Okay, alles klar. Gut. Ja. Okay,
der Vorschlag war, hey,
können wir nicht das Ausrufezeichen irgendwie in die Klammern reintun?
Also ich nehme also dieses Ausrufezeichen quasi hier rein.
Hier mache ich das auch, dann hätte ich da
zwei Ausrufezeichen, dann nehme ich da einfach wieder weg.
Das ist der Vorschlag. Das finde ich eigentlich
ganz gut, dass der Vorschlag kommt. Ich wollte,
dass der Vorschlag kommt, als wäre es abgesprochen gewesen.
Jetzt muss ich euch was erzählen zu Blondinen.
Ja, ich darf das, ich bin ja blond.
Okay. Was ist das eigentlich an der Blondine?
Eine Blondine hat zwei Eigenschaften
Eine Blondine ist weiblich. Ihr seht also hier die Zeile mit den weiblichen Personen.
Und eine Blondine ist blond, hat er so blonde Haare.
Hier seht ihr also die Spalte mit den blonden Personen.
Sie muss also in dieser Zeile sein und sie muss in
dieser Spalte sein, dann ist es eine Blondine.
So, wann ist denn jetzt jemand nicht eine Blondine?
Und der Vorschlag, der eben kam, war ja zu sagen,
hey, wir negieren einfach die beiden Einzelbedingungen.
Dann würden wir hier landen. Das wäre also eine Person,
die nicht weiblich ist und nicht blond.
Aber haben wir damit jetzt alle Personen erwischt
Ich würde ja eigentlich erwarten, wenn ich alle Blondinen in
einen Raum stecke und alle nicht Blondinen in den anderen Raum,
dass ich alle Leute erwischt habe.
Aber offenbar, hier diese Frau, ich weiß gar nicht,
wie sie heißt. Und diesen Herrn,
ihr wisst sicherlich auch, wie er heißt, Dolph,
irgendwas heißt er, glaube ich.
Die würden in keinem der beiden Räume sein. Das kann ja
irgendwie nicht sein. Also das Gegenteil einer Blondine kann nicht sein,
ein dunkelhaariger Herr, sondern es muss irgendwie noch mehr umfassen.
Und die richtige Antwort ist hier, dieser grüne Kasten.
Es reicht also, wenn eine der beiden Bedingungen nicht zutrifft.
Wenn jemand keine Blondine ist, dann liegt es daran,
dass entweder nicht weiblich ist
Entweder wollte ich eigentlich gar nicht sagen, ich fange den Satz nochmal an.
Wenn jemand keine blondin ist, dann liegt es daran,
dass er nicht weiblich ist oder nicht blond.
Könnte auch sein, dass beides ist, so wie bei diesem Herrn hier.
Aber es reicht tatsächlich, wenn eine Bedingung nicht zutrifft.
Ja, ich fordere nicht, dass beide Bedingungen nicht zutreffen.
Gibt es dazu Fragen? Gut. Okay. Blondinen sind offenbar
auch die einzigen Menschen, die nicht in Mikrofone sprechen.
Das ist mir heute Morgen aufgefallen. Aber das hat,
glaube ich, nur damit zu tun,
wo ich diese Fotos hier habe.
Okay. Gut, was bedeutet das jetzt für unser Beispiel?
Schauen wir uns, ich habe quasi dasselbe Diagramm hier nur für Kerre.
Also, welchen Sinn haben jetzt hier die Zeilen und Spalten
in diesem Diagramm
Wenn man sich hier diese Zeile anguckt,
dann ist das die Zeile, wo keine Wandvorkehre ist.
Hier ist also quasi, das ist Front is clear, okay?
Front is clear, diese beiden Fälle. Und diese Zeile ist,
not front is clear, vor Carrie ist eine Wand.
Kann ich mich, also wo bin ich da in meiner Zeile?
Gut, und was bedeutet diese Spalte?
Diese Spalte bedeutet, vor mir ist kein Beeper.
Und diese Spalte bedeutet vor mir, ist ein Beeper.
Okay. Und jetzt hatte ich ja gerade diese interessante Bedingung.
Front is clear und not Beeper ahead.
Das seht ihr, das ist dieser Zustand der Welt.
Vor mir ist keine Wand und vor mir ist auch kein
Beeper.
Sehr schön
Was bleibt jetzt übrig, wenn ich sage, ich will diesen Fall nicht haben?
Wenn ich diese vier Möglichkeiten habe und sage,
ich möchte diesen Fall ausschließen, der soll es bitte nicht sein,
dann bleiben ja diese drei Möglichkeiten übrig.
Und deswegen wird aus dem Hund ein Oder. Weil ich sage,
wenn es nicht der Fall ist,
dass Vorkehre keine Wand und kein Liefer ist,
dann liegt es entweder daran,
dass eine Wand vor ihm ist oder ein Bieper,
könnte aber auch beides sein.
In unserem konkreten Fall gibt es das jetzt gar nicht,
aber könnte auch sein.
Deswegen wird aus dem Hund ein Oder. Macht das Sinn
? Hast du eine Frage? Ich habe Liefer,
das habe ich
der Wand gesehen
Ja, die Frage war, kann Carrie Bieber durch eine
Wand durchsehen? Das geht tatsächlich. Also diese Bieper,
ich habe das nochmal bei mir durchgelesen, warum sie Bieper heißen,
die Bieper senden solche Signale aus, die gerade stark genug sind,
dass Carrie, die wenn er einen Schritt entfernt steht,
empfangen kann und die Wände schirmen das nicht ab.
Das ist die logische Begründung dafür. Okay. Und hier oben
seht ihr die Verallgemeinerung dieser Regeln, die werdet ihr überall nachlesen können.
Diese Regeln heißen einfach, oder Gesetze heißen Gesetze von Augustus Demorgan.
Also nach dem Motto, wenn ich erwarte,
dass zwei Bedingungen gelten und ich will diese Bedingungen jetzt umdrehen,
dann gilt mindestens eine dieser beiden Bedingungen nicht.
Und das kann man auch andersrum machen,
wenn ich sage, wenn ich erwarte,
dass mindestens eine Bedingung gilt und ich schaue mir jetzt
das Gegenteil an,
dann können beide Bedingungen nicht gelten
Ja, aber ich glaube, an diesem Beispiel und bei den Blondinen
kann man das intuitiver verstehen, diese Gesetze von Demorga.
Okay, so, nach diesem ganzen Vorgeplänkel, halbe Stunde,
kommen wir jetzt zu einem neuen Thema. Also wir hatten ja letzte Woche,
ganz oft folgenden Befehl verwendet, Move Across World,
kamen in ganz vielen Rätseln vor, wo wir gesagt haben,
Carrie steht am einen Ende der Welt und er soll neun Schritte gehen,
damit er am anderen Ende der Welt ist.
Und wir wissen, dass es neun Schritte sind,
weil wir wissen immer, alles klar,
die Welt hat nun mal zehn Felder.
Es gibt ja keine Rätsel mit einer anderen Breite und die Probleme sind auch so gebaut,
dass Carrie genau an dem einen Ende anfängt und bei dem anderen aufhören soll.
Aber was ist jetzt, wenn man Probleme hat,
wo man nicht genau weiß,
wie viele Schritte Carrie gehen soll
Und das sieht dann so aus. Was ist jetzt hier
neu? Ich habe es gar nicht eingefärbt.
Dieses Wire ist neu. Als erste Näherung stellen wir uns
das Wire erstmal vor wie ein If. Okay,
wie würde das funktionieren, wenn es ein If wäre?
Wenn es ein If wäre, würde Caro sagen,
alles klar, ich schaue mal, ob vor mir frei ist.
Wenn nicht vor mir frei ist, dann geht hier der Kontrollfluss weiter.
Und wenn vor mir frei ist, dann geht hier der Kontrollfluss weiter.
Okay, bis hierhin sind If und Wire noch genau gleich.
Es wird erstmal die Bedingungen überprüft. Entweder muss ich
rein in den Rumpf oder nicht
Wo es sich jetzt aber unterscheidet ist, was passiert,
wenn dieser Rumpf einmal komplett abgearbeitet wurde?
Bei dem IF wird dann unterhalb des Rumpfes weitergemacht.
Und bei dem Wirel springt man jetzt wieder nach oben und prüft die Bedingungen erneut.
Und um das nochmal so ein bisschen zu visualisieren,
habe ich das hier mal dargestellt. Also es geht los
, wir prüfen die Bedingungen. Nehmen wir mal an,
für uns ist es frei, dann machen wir dieses Move
Forward und springen wieder hier zurück und prüft die Bedingungen nochmal.
Für uns ist es immer noch frei,
wir machen das Move Forward, wir springen wieder zurück.
Also das ist hier quasi die Schleife.
Seht ihr, dass das hier so eine Schleife ist?
Optisch, geht immer wieder hier zurück. Und irgendwann wird
der Fall hoffentlich eintreten, wahrscheinlich spätestens nach neun Schritten.
Dass Carol nicht mehr nach vorne gehen kann,
weil vor ihm eben eine Wand ist.
Und dann wird er aus der Schleife aussteigen.
Ja, so funktioniert die Wildschleife
Wollen wir die mal zusammen einsetzen, die Weisschleifen?
Machen wir das doch mal. Alle sind hoch motiviert.
Das ist also das erste Rätsel, wo wir die Weisschleife brauchen.
So, also Carol hat Geburtstag. Er ist ein Roboter,
aber trotzdem Geburtstag. Er möchte eine Party zu Hause feiern.
Ihr seht also hier seine Wohnung. Und seine Decke,
seht ihr schon so ein bisschen, ja, marode.
Ja, so ein paar Teile der Decke hängen schon so
ein bisschen weiter runter als andere Teile der Decke.
Dann hat er sich so zehn schöne Lampe-Jungs gekauft,
das auch nette Beleuchtung ist auf seiner Party.
Die liegen hier so auf dem Boden rum
Und er möchte die jetzt nach oben bringen, damit er
anschließend so eine schöne Beleuchtung für so eine Party hat.
Und was ist jetzt das Interessante an dem Problem?
Es steht nicht von vornherein fest, wie viele Schritte Karre
gehen muss. Einmal innerhalb einer Instanz sozusagen dieser Welt,
also hier muss er irgendwie acht Schritte gehen,
hier nur sieben, hier nur sechs.
Aber ich kann die Welt auch öfter neu laden und diese Decke wird
immer anders sein. Ich lade sie vielleicht noch an,
aber neu, dass ihr das auch seht.
Jetzt ist die Deckenverteilung ein bisschen anders, wenn ich es
nochmal lade, ist sie wieder ein bisschen anders.
Das ist immer ein ganz kleines bisschen anders.
Okay, ich will zehn Lampions an der Decke anbringen.
Und was muss ich machen
Wenn ich einen Lampeum angebracht habe, ich muss einen Schritt
nach vorne gehen. Gehen irgendwelche Lampen bei euch an,
dass wir sowas schon mal hatten letzte Woche?
Ich will etwas zehnmal machen und ich muss neunmal zwischendurch nach vorne gehen.
Das hatten wir letzte Woche schon mal, oder?
Ich zeige euch einmal das Muster. Vielleicht erinnert euch,
das sah so aus. Wir haben gesagt,
wir müssen neunmal etwas machen, nenne ich das mal Hang-One-Lampeon.
Dann muss ich einen Schritt nach vorne gehen, damit Carrie
sozusagen diesen Schritt geht, damit er zum nächsten kommt.
Und wenn wir das neunmal gemacht haben,
dann muss ich noch den zehnten Lampeon aufhängen
Sowas haben wir letztes, letztes Mal auch schon.
Wo war das bei Repair the Street? Da haben wir
gesagt, naja, wir müssen ja zehn Löcher stopfen,
um zwischendurch neunmal nach vorne gehen.
Also müssen wir diese merkwürdige asymmetrische Schleife machen,
wo wir es das erst neunmal machen und anschließend noch ein zehntes Mal.
Wer kann sich erinnern? Einmal wird der Handfuch ganz deutlich. Ja,
okay, gut, ich rede also nicht vorne warm,
sehr gut. Okay, was passiert, wenn ich jetzt
auf Start drücke? Es wird natürlich nicht funktionieren,
weil wir das Hangover-Lamping auch noch gar nicht implementiert haben.
Gut, das müssen wir uns also implementieren.
Gibt es Vorschläge? Wir schauen uns das Goal nochmal
ganz in Ruhe an, dass wir sehen,
was er da nacheinander macht
Okay, also er dreht sich komischerweise erst und dann nimmt er ihn erst auf,
dann läuft er da irgendwie bis zur Wand und legt ihn hin,
dreht sich, okay.
Ja, ich warte auf Vorschläge. Ja. Macht ja alles selber.
Also erst mal steht er da und dreht sich das.
Richtig. Ja. Dann nehmen wir normale Schlafe, sehr
schön. Ist die Front nicht mehr Clears, richtig?
Jetzt ist aber das Wichtige zu verstehen bei der Wahlschleife,
die Bedingung, die ich hier reinschreibe, sagt,
oder sie wird so interpretiert,
wenn die Bedingung zu ist,
gehe ich rein in den Schlafen rum
Wile Front is clear, richtig. Front is clear ist,
welcher FT hast du, ich glaube, FC?
Ja, richtig geraten. Und was will ich machen,
solange vor mir frei ist? Ja. Richtig,
das ist also genauso wie auf den Folien,
dass ich sage, solange vor mir frei ist,
gehe ich immer wieder einen Schritt nach vorne und irgendwann
wird nicht mehr vor mir frei sein,
dann soll er bitte aus der Wildschleife rausgehen.
Okay, wo werden wir dann stehen? Wenn also
diese Wildschleife durchgelaufen ist, werden wir hier stehen.
Was sollen wir dann machen? Vielleicht hat man jemand anders
? Ja. Ja, was jetzt vielleicht nochmal jemand anders
Ja, dann müssen wir wieder zurückgehen. Bier, Knaberei.
Ja, wieder mit normalen Schleifern. Klingelt bei jemand irgendwas
? So, ich will mir die Wahlschleife jetzt kopieren.
Wo sind dahinten auch Hände? Ich kann das mal
gar nicht richtig erkennen. Da ist eine Hand.
Du sagst, man kann es eine eigene Methode machen.
Sehr schön, das machen wir doch mal.
Ich schnappe mir das also hier einmal.
So. Hast du einen Vorschlag für den Namen der Methode?
Auf der Folie stand er ja schon.
Move to Wall haben wir ihn genannt, ne?
Da tue ich das jetzt mal rein.
Gut, dann rufe ich das hier auf
So. Und warum haben wir das jetzt gemacht? Weil wir
es ja hier nochmal machen wollten. Ja. So. Das heißt,
wo wären wir dann? Hier. Was fehlt jetzt noch
? Ja. Try and Left fehlt noch sehr schön.
So, ne? Dann wären wir also hier. Gut
. Ich glaube, es fehlt nichts mehr, oder?
Wollen wir unsere eigene Lösung starten? Bis jetzt habe ich
euch nur die Musterlösung gezeigt, die natürlich funktioniert.
Also, starten wir unsere eigene Lösung. Okay,
wir fangen jetzt bei dem Repeat an, das ist klar.
Gehen wir in den Rumfreien, hängen wir an Lampion,
mache ich mal hier meinen roten,
meinen roten Balken an
Okay, ich will jetzt also meinen ersten Lampejang aufhängen.
Dafür drehen wir uns erst mal nach links. Ich nehme
eine Lampejong auf. Jetzt machen wir einen Move to wow.
Jetzt landen wir das erste Mal hier in unserer ersten selbstgeschriebenen Weißschleife.
Und jetzt guckt Kerl halt, ja gut, ist jetzt
vor mir frei. Ja, vor mir ist frei.
Also gehe ich mal in den Rumpf der Schleife rein.
Jetzt stehen wir hier. Und jetzt schönes Move Forward aus.
Und jetzt achtet mal ganz genau, was jetzt passiert.
Jetzt ist er wieder zum Why zurückgesprungen. Ja,
also anders als beim If, wo er einfach weitermacht.
Geht er jetzt wieder hoch. Das ist die Schleife.
Okay, vor uns ist immer noch frei.
Wir machen einen Move Forward. Vor uns ist immer noch
frei, wir machen einen Move Forward.
Vor uns ist immer noch frei, wir machen einen Move Forward.
So, und was wird jetzt passieren?
Ist für uns frei
Wer hatte denn heute mal noch nicht? Ja. Er
wird aus der Wahlschleife rausgehen, sehr schön. Hat jemand
einen Vorschlag, in welcher Zeilen nur mal wieder ein Land?
Ich frage sowas immer gerne in den Übungen, in welcher Zeilennummer landen wir?
Ja. Du sagst 16, da bist du Kerl ein Schritt voraus.
Ähm, da? 27, fast 28. Gut,
weil er ja unterhalb der Wahlschleife weitermacht. Gut,
aber es ist, 27 hätte ich auch akzeptiert,
hier passiert ja nichts Großartiges zwischen den beiden Zeilen.
Sehr gut. Dann springen wir wieder zurück,
legen den Lampjung, also ab und drehen uns um und
jetzt machen wir wieder das Spiel mit dem Move to Wall.
Ich gehe also wieder hier rein, frage also wieder,
obwohl mir frei ist und jetzt wird hier wieder
dasselbe Spiel gespielt
Irgendwann wird er also feststellen, jetzt ist es nicht mehr
von mir frei, ich muss aus der Wahlstoffe rausgehen.
Jetzt bin ich auch mit Move to Wall fertig,
da kann ich also auch rausgehen.
Ohne geht es hier weiter. Okay. So funktioniert die Wahlschleife.
Fragen zur Wahlschleife, konkret an diesem Problem oder auch allgemein.
Ja. Und zwar der Abschluss über das Problem,
als wenn es eine Parasiermission ist, da werden einfach links,
neun Paare und dann nochmal reinhängen.
Das ist auch mit dabei. Und dann, Herr,
die Bedingung, dass uns lieber Herr Herr werden,
dann wird er das ausgesucht über den Heimlieber mehr.
Er wird das heute auch wieder frei
Okay, also dein Vorschlag ist zu sagen,
können wir das Repeat nicht auch durch einen Wirel ersetzen?
Ich mache es einfach. Also bevor ich jetzt lange darüber nachdenke,
was da passiert, wir probieren das einfach aus,
man kann ja nichts kaputt machen. Du sagst also,
Wirel, Biva Ahead, hattest du gesagt, ne?
Möchtest du das machen? Und dann meintest du,
brauchen wir das hier nicht mehr. War das dein Vorschlag?
Das Problem. Ich glaube nicht, dass es funktioniert.
Ich glaube, dass da, dass er zu früh aufhört,
aber wir probieren es einfach mal aus.
Weil an dieser Stelle wird ja vorhin kein Bieper mehr
sein und dann wird er einfach nichts mehr machen.
Für uns ist kein Biber mehr, wir können aufhören.
Ich habe es auskommentiert, weil der Student gesagt hat,
ich soll es auskommentieren.
Ich kann es natürlich einkommentieren, dann wird es wieder funktionieren
, ne
Hm. Nee, warte mal, wird's noch noch funktionieren?
Hm. Wenn man jetzt aber noch... Hier,
in dem Reap, in dieser Schleife.
Das würde ich nicht machen. In der Waldstreife zwei Lampjungs
aufzuhängen. Du kannst es dir in Ruhe vielleicht zu Hause
in den U-Muskeln überlegen, ob du eine schönere Lösung findest.
Ich sag immer, meinen Studenten, pass auf,
das sind meine Lösungsvorschläge. Ich mach's mal wieder rücklich.
So, ne? Wenn ihr eine schönere Lösung findet als ich
, gibt's einen Snickers. Das ist schon mehrfach passiert.
Ja, es gab tatsächlich schon Lösungen von Studenten.
Auch Leute, die gerade erst angefangen haben zu programmieren.
Meine Lösung war so und die Lösung von denen war so.
Also das kommt durchaus vor. Ich sag nicht, dass
es nicht möglich ist. Aber momentan sagt mir mein Bauchgefühl,
viel einfacher als das wird's, glaube ich,
nicht gehen
Frage, ja, wo ist die Frage? Da. Das würde hier,
glaube ich, keinen großartigen Unterschied machen,
ob du hier Frontiskle oder Beeper Head nimmst,
weil das die erste Position ist,
wo sowohl eine Wand vor ihm ist als auch kein Beeper.
Also das würde hier keinen Unterschied machen. Wir haben hier wieder dieses klassische Problem,
wir wollen etwas in zehn verschiedenen Schwalten machen,
müssen aber nur neunmal nach vorne gehen.
Ihr werdet nicht umhinkommen, ist irgendwie so komisch zu machen.
Ja. Könntest du ein bisschen lauter reden?
Ich verstehe dich sonst nicht
Kann man prüfen, ob er auf einem Bieber steht?
Das könnte man machen. Und dann würde er hier das Hangman-Lampingum noch machen.
Aber dann würde er hier in die Wand reinlaufen.
Eine letzte Meldung noch, dann mache ich weiter.
Ja, also der Vorschlag ist, kann man nicht einfach
das Move Forward absichern mit einem If-Front is clear?
Das kann man technisch machen, aber ich will nicht
über irgendwas reden, was ihr nicht seht.
Also mache ich das einmal. Der Vorschlag war zu sagen,
kann ich nicht einfach sagen, was war das?
Wile on Beeper, ne? Und dann hast du gesagt,
kann ich hier nicht einfach sagen,
ich gehe nur nach vorne,
wenn vorne frei ist
So, dann bräuchte ich quasi das nicht mehr,
so, ne? Das wird funktionieren, aber ich finde
es weniger schön und ich kann auch erklären, warum.
Ja, da ich gemeint bin, dass man mit Blick sieht.
Okay, macht keinen Unterschied. Das ist sogar noch schöner für
meine Diskussion. So, was meintest du, ne?
Okay, ich werde dir erklären, warum ich das nicht
so schön finde. Wenn ich als Programmierer einen IF sehe,
dann gehe ich davon aus, dass IF steht da aus dem Grund,
weil ich nicht weiß, ob vor mir frei ist.
Es könnte sein, dass vor mir frei ist,
es könnte sein, dass es nicht vor mir frei ist.
So, was ist jetzt der Kontext dieses IFs?
Es steht in einem Repeat 10 drin. Das heißt,
ich erwarte jetzt, dass es 10024 verschiedene Pfade durch diesen Code geht.
Dass es also möglich ist, dass dieses IF Im ersten Durchlauf True ist,
dann ist es dreimal Fouls, dann ist es noch ein paar Mal True,
dann ist es wieder Fouls.
Aber das stimmt nicht. In dieser Welt ist es tatsächlich so,
dass in den ersten neuen Durchgängen wird dieses If immer True sein.
Und im letzten Durchgang wird es Fouls sein.
Deswegen finde ich, dass das If mich als Programmierer anlügt.
Es ist irgendwie kein echtes If sozusagen. Es steht schon,
es steht jetzt schon fest, ich kann dir jetzt schon,
ich könnte Geld darauf verwetten,
dass dieses If neunmal True sein wird und einmal Fouls.
Und deswegen gefällt es mir nicht, da einen If reinzuschreiben.
Ihr könnt es gerne machen,
ich werde euch auch den Haken dafür geben, aber ich,
meine Religion erlaubt das nicht.
Gut. Okay, ich gehe,
glaube ich,
mal weiter
Wir haben hier noch zwei weitere Probleme. Da lasse ich
euch mal dran nagen. War noch eine Frage? Nee.
Schauen wir uns doch mal an, was Carrie hier macht.
Oh, das ist aber ganz schön schnell. Was macht
er da? Also er scheint diese ganzen Stapel irgendwie aufzusammeln.
Ja, laut der Rätselbeschreibung sollen das Tunnel sein.
Gut. Sieht nicht wirklich aus wie ein Tunnel,
aber es soll ein Tunnel sein.
Gibt es von eurer Seite Vorschläge? Gibt es da
irgendwelche Muster, die wir schon mal gesehen haben
Genau, wir fangen erstmal mit dieser asymmetrischen Schleife an,
hast du sie genannt. Also sagen wir vielleicht mal Clean-One-Tunnel,
dann gehen wir mal einen Schritt nach vorne und dann
machen wir nochmal das Clean-One-Tunnel.
Sehr schön, ne? Toll, ihr seht,
das tritt wirklich ständig auf. Das hilft euch schon mal
das Problem, so ein bisschen kleiner zu machen.
Jetzt müssen wir nur noch überlegen, wie kann ich denn
einen Tunnel cleanen? Gut, was macht Carol denn da?
Wie rum ist es jetzt hier? Okay, dreht sich
schon wieder als erstes. Und dann nimmt er,
geht nach vorne, nimmt er, alles klar.
Und hier hört er dann auf.
Ja, gibt es da Vorschläge von eurer Seite
Er hatte noch nicht, vielleicht neutral hat es auch schon.
Ja, du mit der Brille, ja?
Ja. Ich würde eine Weinschale sehen. Ja. Genau
, eine Interstehung. Das soll er aufnehmen.
Lieber. Er muss sich erst mal drehen, ne?
Ich habe extra Platz für dich gelassen. Ja.
Ja. Und dann hat er sich umdrehen, Alter.
Das war diese Weisheit. Okay, lass uns mal ganz kurz überlegen.
Also er würde dann ja hier quasi den ersten Vieper aufnehmen
und dann wurde er ja schon aus der Wireschleife rausgehen,
weil dann ja steht er ja nicht mehr auf dem Bieper,
wenn er einen schon genommen hat.
Er muss einmal nach vorne. Okay,
wir probieren es erstmal aus, wie weit wir kommen.
Das kann man ja alles schön interaktiv ausprobieren. Also wir drehen uns
nach links. Gut, wir stehen jetzt auf dem Bieper.
Das heißt, ich nehme ihn auf und gehe nach vorne.
Ich stehe auf dem Bieper, ich nehme ihn auf und gehe nach vorne.
Ich stehe auf dem Bieper, ich nehme ihn auf und
gehe nach vorne. Ich stehe auf dem Bieper,
ich nehme ihn auf und gehe nach vorne,
ich stehe auf dem Bieper, ich nehme ihn auf und gehe nach vorne.
Ah, Schritt zu weit, ne? Jemand anderes
eine Idee, ja? Und wie bei Eddie Bye.
Wenn wir auf einem Bieper stehen und vor uns auch ein
Bieper ist.
Kann man ja
mal ausprobieren
So, mal gucken, wie sich das jetzt ändert.
Achtung, jetzt wird's spannend. Jetzt gilt die Bedingung nicht mehr,
das heißt, wir gehen aus der Wildschlafe raus.
Nicht so richtig zufrieden damit, ja? Du weißt ja,
eine Bedingung mit einbringen, dass er,
wenn ein Bieter davor ist, auch vom einen Schritt weitergeht,
ansonsten sich vielleicht umtreter von der gleichen Waldschneide in der Ecke bringt.
Okay, du bist schon einige Schritte weiter. Also deine Idee war,
dass man hier nur das Biefer-Ahead nimmt als Bedingung.
Das finde ich gar nicht schlecht. Was hast du dann
zu der Reihenfolge dieser beiden Befehle
Bis jetzt haben wir es immer sogar noch zu sagen,
okay, wenn vor mir ein Bieper ist,
dann gehe ich zu dem Bieper hin und nehme ihn auf.
Achso, ich wollte es jetzt eigentlich nur vertauschen, ehrlich gesagt.
Wäre das nicht einfacher, das zu vertauschen?
Was hast du gesagt? Es war noch richtig? Richtig
, wir lassen den ersten aus. Wir müssen also irgendwie
noch dafür sorgen, dass der erste Bieper genommen wird.
Wie kann ich denn dafür sorgen? Ja, richtig.
Gut. Lass uns noch mal ganz kurz überlegen.
Das bedeutet aber, dass ich auf jeden Fall dieses Pick-Beaper ja ausführe.
Da könnte es ein Problem geben, oder?
Was ist, wenn da zum Beispiel gar kein Bieper ist?
Lass uns mal ganz kurz gucken, wie die Musterlösung damit umgeht,
wenn irgendwo gar kein Bieper ist
Achso, ich hab's nicht gestaffelt, deswegen ist es so langsam.
Oh, ah, nein, ich wollte auf die Musterlösung starten.
Die Musterlösung. Weil das interessiert mich jetzt. Was macht die Musterlösung,
wenn da überhaupt gar kein Bieper ist, Achtung?
Jetzt. Was wird jetzt passieren? Wird er sich nach
links drehen und dann merken, dass da keiner ist?
Mal gucken. Nee. Aha. Das heißt also,
wir müssen noch nicht mal das Turn Left,
also lass uns doch vielleicht erstmal eine Five-Unterscheidung machen,
ist da überhaupt irgendwas?
Also nur, wenn ich überhaupt auf einen Bieper stehe,
muss ich mich um den Rest kümmern
Macht das Sinn? Also lass uns noch mal
ganz kurz überlegen, was wir jetzt hier gebaut haben.
Es gibt jetzt hier, wenn man sich jetzt nur
das IF anguckt, zwei Pfade durch den Code.
Es könnte sein, dass ich auf einem Bieper stehe.
Das wäre zum Beispiel genau hier der Fall oder genau hier,
genau hier, genau hier.
Während es hier nicht der Fall ist. Was mache ich
dann? Ich überspringe diesen Block und mache einfach nichts.
Das ist doch gut. War ja anschließend, dass Moe Forward
ausgeführt wird. Sehr schön. Okay, das heißt,
kann ich sicher sein, dass dieses Pick-Beaper auf jeden Fall funktioniert?
Nein, wenn er es jetzt nicht mehr geben,
dass der jetzt nicht mehr einig ist,
was die Gedände bekommen
Einflaschen. Du bist jetzt gedanklich schon bei der Wild Schlaf.
Mich würde einfach interessieren, kann ich 100 Prozent sicher gehen,
dass dieses Pick-Peaper immer funktionieren wird. Ja? Ja,
weil irgendwann, ja gerade vorher abgebracht hat,
ob er auf einem Hinterschritt und vorher das vor Eigentor.
Sehr schön. Du hast gerade gesagt,
hier prüfe ich, ob Carol auf einem Bieper steht.
Das heißt, ich werde nur in diese Zeile gehen,
wenn ich auf einmal an Bieper stehe.
Und wenn ich mich dann nach links drehe,
verschwindet der Bieper nicht. Das hast du gesagt.
Das heißt, das wird auf jeden Fall funktionieren.
Das heißt, den ersten Bieper kann ich schon mal nehmen.
Das wäre also laut Musterlösung quasi jetzt in dem Zustand
Und jetzt sagt unsere Wildschleife, solange vor uns auch ein Bieper ist,
gehe ich auf den Biefer und nehme ihn.
Er wird also hier hingehen und den nehmen,
hier in den Unternehmen, hier in den Unternehmen.
Und das sieht doch eigentlich ganz gut aus, oder?
Da ist schon die Frage, ja? Ja,
aber es gibt Leute, dass er sich da mit meinem Arm,
der muss da nicht mehr, der geht da bei der Lehrenschwerei einfach durch.
Du hast gesagt, bei der Musterlösung geht er bei der Lehrenstelle durch,
ohne sich, ohne sich nach links zu drehen, genau.
Aber passiert das hier nicht auch? Also ich meine,
wenn ich das Clean-Wand-Handel aufrufe, und da ist überhaupt nichts,
dann wird das if übersprungen und anschließend macht er Mo Forward.
Das ist doch genau das Verhalten, was wir brauchen,
Wir programmieren es einmal kurz zu Ende und dann schauen wir,
dass das wirklich stimmt. So, laut Musterlösung stehen wir
dann ja hier. Was fehlt dann noch? Ja?
Sehr schön. Move to Wall, das gefällt mir.
So, dann stehen wir quasi hier.
Ja. Richtig. So, ne? So,
jetzt können wir mal unsere eigene Lösung hier loslassen.
Ich habe nicht gestartet, das ist immer so eine Krankheit
von mir.
Ja, ich mache es gleich nochmal für den zweiten Bike im Einzelschritt-Modus.
Geh mal ganz kurz zurück. So. Wann stehen Leute?
Wieso? Jetzt stehen wir auf dem zweiten Balken.
Den würde ich jetzt gehen. Stehen wir überhaupt auf einem Biefer?
Also ist das, hat es die Höhe Null oder ist es mehr?
Ah, wir stehen auf dem Bieper, alles klar.
Ich kann nur sowas tun. Ich drehe mich erstmal nach links,
nehme den ersten Bieper auf und damit weiß ich jetzt,
dass alle anderen Bieber garantiert vor mir sind.
Ich kann jetzt also immer diese Logik machen,
gehe zum nächsten Bieper und nehme ihn dann auf.
Gut, vor mir ist einer, das heißt,
ich gehe hin und nehme ihn auf.
Vor mir ist einer, das heißt, ich gehe hin
und nehme ihn auf. Jetzt ist vor mir keiner mehr,
ich gehe aus der Schleife raus, kann mich umdrehen,
dann gehe ich zur Wand
Ich will jetzt nicht dieses Move for Wall schrittweise ausfinden.
Wir haben das Move to Wall jetzt, glaube ich,
verstanden. Wir haben Vertrauen darin, dass es funktioniert.
Deswegen, dafür gibt es diesen eigenen Button. Step-Over heißt,
wenn das hier ein Funktionsaufruf ist oder der Pehl der Aufruf
eines eigenen Befehls, dann führe den komplett aus,
aber zeigen wir bitte nicht die Einzelschritte.
Ich will also quasi, ich will erst wieder in dieser
Zeit hier pausieren. Das bedeutet das. Achtung, zack
. Da wurde das Move to Wall also komplett ausgeführt.
Gut. Ja, sieht doch gut aus, hat funktioniert.
Und dann machen wir nochmal den Fall,
dass da überhaupt kein Peoper ist
So. So. So, jetzt kommt der spannende Fall.
Hoffentlich stürzen wir nicht ab. Ich frage also,
ob wir auf einem Bieper stehen, tun wir nicht.
Ja, das heißt, ich werde jetzt hier in Zeile 57 landen.
Und dann bin ich fertig. Der Tunnel ist clean.
Ich habe ihn aufgeräumt. Es war nichts zu tun.
Zack. Und dann gehe ich zum Letzten. Das funktioniert also. Ja,
man muss sich also schon ziemlich viele Gedanken machen, will ich den Bieper aufnehmen,
auf dem ich gerade stehe und dann nach vorne gehen?
Oder will ich den Bieper aufnehmen, der vor mir ist,
dann muss ich erst nach vorne gehen und ihn dann aufnehmen.
Und ja, hier ist noch ein Fall,
die wir bis jetzt noch gar nicht getestet haben.
Also wir haben getestet, funktioniert es, wenn da gar kein Bieber ist.
Gibt es noch einen Fall, den man testen sollte,
ja? Dass du noch testen, was passiert,
wenn mir noch einer liebt? Okay, daran habe ich
nicht gedacht. Sehr gut. Wir testen mal,
was passiert, wenn du auf einem Bieber sind?
Funktioniert das auch? Hier zum Beispiel, ne?
Sehr gut. Das müssen wir einmal testen. So,
wir stehen auf einem Bieber. Es ist also was zu tun.
Ich drehe mich schon links, ich nehme ihn auf.
Und warum ist das jetzt ein wichtiger Testfall?
Dieser Testfall ist der einzige, wo die Wireschleife
überhaupt nicht ausgeführt wird
Deswegen sollte man das testen. Also ist vor uns ein Beaper?
Nein, ist nicht. Das heißt, wir werden direkt hier
unten landen. So, dann drehen wir uns um,
das ist gut, dann laufen wir bis zur Wand.
Ja, ich gehe da jetzt mal rein, okay,
ist vor uns frei. Nee, ist nicht. Ich
kann gleich wieder aufhören und dann drehe mich nach links.
Das funktioniert also. Sehr gut. Einen Snickers virtuell für den Herrn,
haben wir noch einen Test, weil jemand testen sollte, ja? Ja,
wenn die Reihe... Wenn die Reihe komplett voll ist,
ob es dann nicht viele Probleme gibt,
weil er um eine Wand ist oder so,
schauen wir mal, das muss auch getestet werden.
Ah, ich habe Glück. Man darf sich nicht damit begnügen,
dass es für irgendein Beispiel funktioniert,
sondern man sollte sich diese ganzen Randfälle überlegen,
ob die dann auch funktionieren
So, schauen wir mal kurz. Also es ist noch
ein Bieber vor uns. Es ist immer noch ein Bieber vor uns.
Ist ein Bieber vor uns? Ist nicht, ne?
Hier ist keiner. Also ich darf zwar diese Frage stellen,
ob da ein Bieper ist, aber die Antwort ist nein.
Also wird aus der Wahlstaffel rausgegangen. Ich drehe mich um
und gehe wieder zur Wand, das ist Teppichmaover und drehe mich nach links.
Das ist also auch kein Problem. Gut,
es funktioniert also für null, es funktioniert für eins,
es funktioniert für zehn, ich bin zufrieden.
Okay, ach, wir haben gar nicht mehr so viel Zeit.
Dann muss ich schon gleich zum nächsten Thema gehen.
Ich habe irgendwann mal gelesen, oh, das ist eine Frage?
Ja, das ist eine Frage. Was sagt er,
das ist bei Tötung,
weil wir drehen uns dann ja so im Feld,
wir sind sicher, wir drehen uns nicht wieder.
Ja. Sehr gut, du hast gefragt, wenn da
nur ein Diamant liegt, dreht man sich ja ganz schön viel.
Passiert das in der Musterlösung auch? Das müssen wir natürlich
testen. So, schauen wir mal. So,
er dreht sich nach oben, nimmt den Diamanten und dreht
sich um.
Er macht genau dasselbe. Sehr gut. Auch ein Snickers
für dich. Ich bringe nächste Woche Snickers mit und bitte
erinnert mich daran, dass ihr sie dann kriegt.
Okay. Was sehen wir auf dieser Folie? Ihr habt,
ich gehe mal davon aus,
dass ihr alle in der Grundschule wart und hat man ja irgendwann gelernt,
wie unser Zahlensystem so funktioniert, was wir als Menschen benutzen.
Und ich habe hier mal zwei wichtige Eigenschaften dieses Zahlensystems auf diese Folie gequetscht.
Fangen wir mal hier an. Diese Zahl,
habt ihr irgendwann mal gelernt, heißt 20.597 und man muss
schon verdammt viel Wissen in seiner Birne reingestopft kriegen,
um das zu wissen
Also es ist nicht einfach nur 2,05, 9,7,
sondern 20, 1.500 und dann fangen wir hier wieder an.
97, ganz komische Logik. Okay, gut.
Dann habe ich mal so die Nachfolger dieser Zahl aufgeschrieben.
Vielleicht will man wissen, was kommt denn als nächstes?
Wenn wir natürliche Zahlen, jede Zahl hat einen Nachfolger.
Die sieht ja fast genauso aus. Also diese ersten Ziffern,
die sind alle genauso. Nur die letzte Ziffer ist anders. Also anstelle,
dass ich hier irgendwie so einen Strich habe und hier so irgendwie so einen gebogenen Strich,
habe ich jetzt hier irgendwie so eine merkwürdige,
wie sieht denn das aus, wie so Nascar Racing?
Geht das nicht auch immer so? Oder auf dem Dom,
wenn man da mit diesen Dingern fährt? Okay, dann,
ja, dieses Symbol, Hat komischerweise, das hier wurde amputiert,
dieses kleine Stück wurde amputiert, ja, okay.
Also irgendwie scheint es so zu sein,
ich habe verschiedene Symbole, ja, diese Symbole folgen aufeinander,
also nach der 7 kommt die 8,
die 8 ist mehr wert, ja,
die 8 ist mehr wert als die 7,
die 9 ist mehr wert als die 8. Aber jetzt haben wir ein interessantes Phänomen.
Nach der 9 kommt kein Symbol mehr. Die 9 ist
das Symbol mit der größten Wertigkeit, die es sozusagen gibt.
Was machen wir dann? Wir gehen wieder zu den Null
zurück, obwohl die Null ja am wenigsten wert ist.
Das ist irgendwie komisch, oder? Wir gehen wieder zu den Null
zurück. Aber dafür müssen wir jetzt die nächste Ziffer auch erhöhen.
Also hier sage ich diese 9 soll bitte auch erhöht werden,
ja, geht immer noch nicht.
Ich mache aus der 9 auch eine Null.
Und dann muss ich die nächste Ziffer auch noch erhöhen,
dann wird
daraus eine
Und wenn ich euch jetzt sage, dass nach der 599 die 600 kommt,
dann sagt ihr, wozu gehe ich zur Uni?
Nach der 599 kommt die 600, okay. Ja,
aber man muss sich das nochmal klarmachen. Ihr kennt dieses
System seit 15 Jahren vielleicht, was da alles dahinter steckt.
Also erhöhe die Ziffer ganz rechts und wenn das nicht mehr geht,
setze sie auf null unter Höhe die nächste Ziffer.
So funktioniert unser System, wenn ich den Nachfolger bestimmen will.
Und ja, es gibt ja eben noch diese Stelligkeiten,
also ganz rechts sage ich, das sind die sogenannten Einer,
dann kommen die Zehner, die Hunderter, die Tausender,
die Zehntausender, 100.000, ja.
Und was ist die größte Zahl, die es gibt,
wenn ihr mal so jüngere Menschen fragt,
dann ist die größte Zeit, es gibt 100.000 Millionen.
Ja, danach kommen keine Zahlen mehr. Aber das geht hier theoretisch
noch beliebig weiter. Okay, was ist auch noch wichtig?
Addition. Wie funktioniert schriftliche Addition? Ihr habt das irgendwann mal gelernt,
die einzelnen Schritte, dann mittlerweile wisst ihr,
wie es geht, aber wir müssen uns das noch einmal klarmachen,
wie es wirklich funktioniert.
Also ich sage folgendes, 5 plus 8 ist 3,
3 ist doch viel zu wenig.
5 plus 8 ist doch eigentlich 13. Wieso steht denn da jetzt
nur eine 3? Ja, wir rechnen einen im Sinn.
Sehr gut. Im Englischen heißt es Carrie The One.
Also wenn ihr euren Kopf so um 45 Grad dreht,
dann könnt ihr die 13 vielleicht noch erkennen.
Seht ihr die 13? Ja, hier ist die
Ja, ich muss also diese Eins, die eine,
die im Sinn ist, zu der nächsten Stelle schieben und
dann addiere ich die mit für die nächste Stelle.
1 und 2 und 1 ist 4, 4 und 8 ist 12,
da muss ich wieder einen im Sinn haben,
1 und 1 und 1 ist 3, 3 und 7 bis 10.
Seht ihr diese 10, wenn ihr euren Kopf
hier dreht und dieser Übertrag wird dann hier nochmal notiert.
Ja, also 3, 30.000 irgendwas und 70.000,
irgendwas ist dann 100.000 irgendwas. Okay,
das ist eigentlich klar, aber ich musste, wie gesagt,
nochmal drüber reden, weil gleich wird es komisch.
Okay, wieso sind das eigentlich die Ziffern von 0 bis 9?
Also es sind ja 10 verschiedene Ziffern, ne?
Warum verwenden wir denn gerade 10 verschiedene Ziffern und nicht irgendwie
8 oder 12 oder 5 oder 7, ja,
es gehen schon die Hände hoch,
wer weiß es
Ja, sehr gut. Zwei Hände gehen hoch. Das ist die Antwort. Ja,
irgendwann haben Menschen halt angefangen zu zählen, weil sie irgendwie wissen wollten,
habe ich mehr scharfer als mein Nachbar, bin ich irgendwie cooler als er.
Und dann nimmt man einfach seine Finger und sagt,
okay, ein Schaf, zwei, Staffel 3, vier,
fünf, sechs, sieben, acht, neun, zehn.
Es gibt auch tatsächlich Kulturen, die auch noch ihre Füße dafür verwenden,
also dann zehnmal bis 20. Ja, und überbleibsel,
daraus findet man zum Beispiel im Französischen.
Weiß jemand, was 80 auf Französisch heißt?
Katrivan, ne, also viermal 20. Das ist ganz witzig
. Okay, und jetzt wären wir ganz minimalistisch.
Ich hacke euch jetzt alle Finger ab bis auf die Daumen
Ja, wir haben jetzt nur noch unsere Daumen zum Zählen.
Das heißt, wir haben nur noch die 1 und die 1.0. Ja, gut.
Also nur noch zwei verschiedene Ziffern, 0 und 1.
Wie kann so ein System funktionieren? Okay, also erstmal
sind die Wertigkeiten anders. Ich fange rechts wieder mit Einern
an. Das ist also nicht anders als vorher.
Aber dann kommen nicht die Zehner, sondern dann kommen die Zweier.
Dann kommen die Vierer, dann kommt die Achter, dann kommt die 16er.
Also die Stelligkeit verdoppelt sich jedes Mal an. Im DC-Meisesystem
hat sie sich verzehnfacht, 1, 10, 100.000, 10.000.
Und hier verdoppelt sie sich jedes Mal. Gut,
das heißt zum Beispiel, diese Zahl wäre zum Beispiel
ein Einer und ein Zweier.
Das wäre also 1 plus 2 ist 3 zum Beispiel
Gut, also für mich sind es quasi die Zahlen 0-1,
2-3 und 4, wenn man so will.
Okay, und wie funktioniert die Addition? Die Addition funktioniert genauso wie bei uns,
nur dass wir eben nur zwei verschiedene Ziffern haben.
Ja, also 0 und 0 ist 0,
das ist irgendwie trivial, 0 und 1 ist 1,
1 und 1, was ist denn 1 plus 1?
Ja. Ja, je nach Interpretation,
du sagst 10, also 1-0, ne?
1 und 1 ist 1-0. Gut, das heißt also,
ich trage hier die Null ein und hier die eine,
die ich im Sinn hatte.
Und wenn ihr euren Kopf um 45 Grad dreht,
seht ihr hier diese 1-0 und diese 1-
0 ist ja das, was wir Menschen 2 nennen.
Gut, dann haben wir 1 und 1 und 1,
was ist 1 und 1
und 1
Eins mit Übertrag, ne? Eins mit Übertrag,
also wir sind sozusagen 3, 3-1,
aber die 3 sind ja so aus dem Binärsystem.
Und wenn ich das dann um 45 Grad drehe,
dann seht ihr hier die 3 sozusagen.
Okay, und 0 und 0 und 1 ist 1. Ja?
Ja, also genau dieselben Prinzipien,
nur dass ich mich eben beschränke auf zwei verschiedene Ziffern.
Achso, und auf was ich auch nicht gesagt hatte,
weiß jemand, was Ziffer auf Englisch heißt?
Digit. Und was heißt, was heißt Digit noch?
Digitos. Gut, das ist aber wahrscheinlich lateinisch,
oder? Ja. Oder ich frage vielleicht andersrum
Ist ein schönes Wort für Finger auf Englisch, was nicht Finger heißt.
Didget, genau. Also Ziffer und Finger ist dasselbe Wort
im Englischen. Das finde ich irgendwie auch ganz interessant.
Gut, das ist also das Pinärsystem. Gut.
Man muss viel anhand von Beispielen mit diesem Benärsystem rechnen.
Und was man gerne macht, ist zwischen den verschiedenen Systemen
hin und her zu rechnen.
Also habe ich mal so ein kleines Tool gebaut.
Ich dachte so, das ist irgendwie spannender, wenn man
das so live vorstellen kann und es nicht auf einer Folie steht.
Also ich habe jetzt mal hier so acht Bits,
nennt man das gerne nebeneinander geschrieben.
Die sind alle am Anfang null. Und ich kann jetzt noch nach Gusto setzen,
wenn zum Beispiel dieses Bit setze,
dann habe ich die Zahl acht generiert,
weil dieses Bit hat die Wertigkeit acht
Während wenn ich zum Beispiel nur dieses Bit setze, dann habe ich die Wertigkeit 32.
Hier habe ich meine wunderbare Eins, das ist die Zwei.
Ja, so funktioniert das also. Und ich kann jetzt natürlich
auch mehrere Bits setzen. Also wenn ich jetzt zum Beispiel
sagen wir mal die neuen, will ich zum Beispiel generieren,
was ist neun, neun ist ja acht plus eins.
Das wäre also die neun in Binär. Oder wenn ich zum Beispiel,
was man macht, ich kann ja auch mal einfach rumklicken,
acht und vier und eins ist zum Beispiel 13,
acht, vier,
zwei und eins ist 15 und zum Beispiel 16 und zwei ist 18. Ja, gut.
Das hat jetzt noch nicht so spielerischen Charakter und ich will
ja, dass euch das Ganze Spaß macht.
Jetzt steht hier oben im Titel, 2308,
can you generated
Welche Bits soll ich anklicken, damit 238 rauskommt?
Muss ich die 128 anklicken oder nicht?
Ja, gut. Muss ich die 64 anklicken?
Ja. Oh, ah, verdammt, falsche Mauslastin.
So. So, muss ich die 32 anklicken?
Ja. Oh, wir sind schon fast da.
Wie viel fehlt denn jetzt noch von der 234, so 238?
14 fehlt noch, oder? 14 fehlt noch.
Muss ich die 16 anklicken? Nee, sonst wäre ich
ja schon drüber. Muss ich die acht anklicken?
Ja. Jetzt fehlen nur noch sechs. Wie setze ich
denn die sechs zusammen? Vier und zwei, ne?
Also vier, Achtung
Jo, so, ja. Okay, wollen wir noch einen,
weil es so viel Spaß macht, die 41?
Ich fange mal an. Was muss ich noch anklicken?
Wie viel fehlt noch? Neun fehlt noch, ne?
Acht oder eins? Super. Alles klar. Ja,
da könnt ihr euch austoben. Sehr gut. Ja,
sicher, das Tool wird ins Komsi gestellt.
Könnt ihr die ganze Nacht durchklicken. Was war die Frage
? Was geht auch
Da kann man auch mit den Fans diskutieren.
Ach so, du willst mit den Händen bis 1023 zählen?
Ja. Okay, wie das geht, schreibe ich ins
Gomsi. Okay, wir haben nur noch 20 Minuten.
Ich muss aufpassen, dass ich mich hier nicht verliere.
Ihr seht, das macht alles unheimlich viel Spaß.
Okay. Jetzt haben wir verstanden, wie das Binärsystem funktioniert.
Und jetzt gehen wir wieder in die Welt von Kerl zurück.
Denn wir wollen ja irgendwas programmieren mit diesem Binärsystem.
Also ich habe irgendwann mal gelesen, diese kleine Kerlwelt,
also Kerl kann Diamanten ablegen und nehmen und so durch die Gegend laufen,
ist, Achtung, ist gut ein Fremdwort, Touring vollständig.
Das wird euch jetzt nicht sagen. Das heißt,
auf Deutsch, man kann in Kerlswelt alle mathematischen Funktionen berechnen
Ohne Ausnahme. Ja, wenn ihr Wurzeln berechnen wollt oder
Quadrate oder irgendwas, kann man alles berechnen in Kero.
Und zwar ist der Trick, wir müssen ja irgendwie Zahlen
in Carols Welt repräsentieren. Es gibt aber nur Diamanten.
Was machen wir jetzt? Wir nehmen einfach das Binärsystem.
Wir sagen, pass auf, ich nehme so eine Zeile.
In dieser Zeile lege ich Diamanten ab und je nachdem,
an welcher Stelle ich sie ablege,
ist es dann eine Eins, die entsprechend interpretiert wird.
Also hier habe ich quasi die Spalte,
die einen wert ist, hier habe ich die Spalte,
die zwei wert ist, die Spalte ist vier wert,
acht, 16, 32, 64, 128.
Und mehr als acht kommentieren nicht vor in den konkreten Problemen.
Ihr seht das. Und das ist die Sieben.
Warum? 1 und 2 und 4,
7. Das ist die Sechs, 2 und 4,
6. Das ist die 9,
1 und 8 ist
Kann man ja auch einfach so machen. Gut. Und
jetzt gehe ich wieder zu der Folie zurück hier,
wo wir uns ja die Frage gestellt haben,
wie komme ich eigentlich zum Nachfolger?
Ich gehe nochmal zwei Folien zurück.
Wie kommen wir zum Nachfolger? Ich hatte ja gesagt,
wir nehmen einfach die rechte Ziffer und erhöhen sie um einen,
wenn es geht, dann sind wir fertig.
Wenn es aber schon die höchste Ziffer war,
dann muss ich sie wieder auf null zurücksetzen und die nächste erhöhen.
Und das ist im Binärsystem genauso. Was ist denn
die höchste Ziffer im Binärsystem? Eins. Das heißt,
es wird ziemlich häufig passieren, dass ich die Ziffer nicht erhöhen kann.
Und um das nochmal so ein bisschen plastischer zu machen,
habe ich einen Ablass für euch ausgedruckt.
Früher gab es immer diese Dirke-Atlanten, wo man gesehen hat,
wo sind denn die verschiedenen Ozeane und so.
Und das ist jetzt der Binär-Atlas. Der hat nur zwei
Und da seht ihr also alle Zahlen von null bis 255
auf Seite 2, wie sie in Binär dargestellt sind.
Und da kann man sich jetzt wunderbar Nachbarzahlen angucken.
Lass uns doch zum Beispiel mal angucken,
diese Zahl hier kann man das lesen, ja.
Das ist zum Beispiel die 79, ja,
die sieht so aus und die 80 sieht so aus.
Und jetzt versuche ich aus der Bit-Darstellung der 79
auf die Bitterstellung der 80 zu schließen.
Also wir haben ja gesagt, wir müssen die rechte Ziffer erhöhen,
das geht beide eins aber gar nicht.
Kann ich nicht erhöhen. Die ist ja schon die höchste
. Also muss ich sie auf null setzen.
Dann versuche ich mal die nächste zu erhöhen. Ja,
geht auch nicht, muss ich sie auf null setzen.
Dann versuche ich doch mal die nächste zu hören.
Geht auch nicht, muss ich sie auf null setzen.
Nächste geht auch nicht, muss ich sie auf null setzen.
Ah, die kann ich jetzt endlich erhöhen.
Sehr gut. Dann erhöhe ich die doch mal
Das will ich noch mal ganz kurz mit euch durchspielen.
In diesem wunderbaren Spiel. Das war also... So,
ne, das ist die 79. Ich versuche jetzt manuell
die 979 zu erhöhen auf die 80. Okay?
So, dann ändere ich doch mal dieses Bit.
Ah, das ist ja schon weniger. Ich will doch
mehr haben. Ja, ich bin von der 79 ausgegangen.
Ich will eigentlich zu 80. Jetzt habe ich einen zu wenig.
Das ist ja blöd. Vielleicht klappt es ja hier.
Ach, noch mal zwei zu wenig. Jetzt habe ich
schon drei zu wenig. Ich mache Schulden.
Jetzt habe ich schon sieben zu wenig. Jetzt habe ich
schon 15 zu wenig
Jetzt kann ich endlich 16 drauftun. Ich habe also 15
quasi abgezogen von meiner Zahl. Dann habe ich 16
drauf addiert und dadurch habe ich insgesamt einen mehr bekommen.
Ja. Sehr schön. Was heißt das denn jetzt auf Kerls Welt übertragen?
Ja, hier ist eine wunderbare Zahl. Ich schummel mal
ein bisschen und mache die mal ein bisschen hübscher, so vielleicht.
Und ich will jetzt von Kerl, dass er diese Zahl erhöht.
Dass er so sagt, alles klar, das ist eine
Einzelne und dann muss ich daraus wieder eine Null machen.
Das ist eine Eins, dann muss ich daraus Ende Null machen.
Das ist eine Eins, muss ich eine Null raus machen.
Und hier aus dieser Null kann ich eine Eins machen.
Ich würde also erwarten, dass wir diese Diamanten
einfach aufnimmt und dann hier einen Diamanten ablegt.
Schauen wir doch mal, ob er das macht.
Jetzt haben wir schon sieben zu wenig und jetzt haben wir
acht mehr.
Macht insgesamt
einen mehr
Okay. Wollen wir das mal selber programmieren?
Was hat er denn jetzt eigentlich gemacht? Was ist denn
da die Logik? Wie lange musste ich das tun?
Was ist die Bedingung dafür, dass er noch was tun muss?
Was musst du dann tun? Ja. Ja.
Ja. Sehr schön. Wenn man nicht glaubt,
ein People ist eigentlich überlegt. So, das probieren wir
doch mal, ob das genauso funktioniert. Oh,
Entschuldigung, toll, dass ihr dabei seid und ich nicht
alleine programmieren muss
So, das werden ja gesagt, hier soll ein Lieber hin und hier.
So war das, ne? Gut, dann steppen wir
doch mal. Also, ja, wir nehmen dann den
ersten Pieper auf, wir gehen einen Schritt nach vorne.
Sind wir jetzt noch auf einmal ein Bieper?
Ja. Wir nehmen ihn auf und gehen nach vorne.
Sind wir noch wärmen, Bieper.
Ja, wir nehmen ihn auf und gehen nach vorne.
Sind wir noch auf einem Bieper? Nö. Aus der Schleife
aussteigen und einen Bieper ablegen. Ja. Ist ja schon
welche Zahlen waren das nochmal kurz zur Übung? 1,
2, 4, 8 und 32 ist 40 und
dann kommen nochmal 96 dazu, 134 müsste das sein.
... Nee, er hört jetzt auf, ne? Ah,
ich danke dir für diese Frage. Man könnte ja denken,
dadurch, dass ich jetzt einen Bieper abgelegt habe,
gilt ja jetzt wieder diese Bedingung.
Warum geht er denn jetzt nicht in diese Schleife wieder rein?
Ja. Weil die Schleife schon vorbei ist. Das ist ein
ganz wichtiger Punkt, den habe ich ganz vergessen zu erwähnen.
Man muss sich auch im Gegensatz zum Alltag,
ihr habt ja irgendwie ganz viele Grundregeln in eurem Kopf,
also keine Ahnung,
wenn euch ein Fremder auf der Straße anspricht und euch Süßigkeiten anbietet,
dann geht nicht in sein Auto rein
Ja, das ist eine Grundregel in eurem Kopf,
die sozusagen ständig im Hintergrund überprüft. Bei Carrie wird
überhaupt nichts im Hintergrund überprüft. Nur dann, sozusagen,
wenn diese Zeile gelb ist, wird er diese Bedingungen prüfen.
Er wird sie nicht automatisch im Hintergrund prüfen oder wie alle fünf Sekunden oder so,
sondern nur dann, wenn die Zeile gelb ist.
Sonst werden Bedingungen einfach ignoriert. Gut. Okay,
das funktioniert. Wie ist denn jetzt der Weg andersrum?
Wir gehen wieder in den Atlas rein. Wir gehen wieder
bei der 80 los und ich will jetzt den Weg andersrum machen.
Das nehmen wir an, ich habe die 80,
die ja hier so aussehen mit vielen Nullen am Ende.
Und ich will daraus jetzt die 79 generieren.
Was muss ich denn
dann machen
Seht ihr da eine Regelmäßigkeit, ja? Du musst ein
bisschen lauter sprechen, ich kann dich leider nicht verstehen.
Also, wenn man jetzt so ein... Die ist wahrscheinlich
ein Beispiel, wenn man... Du meinst die Einzelnen.
Du bist, glaube ich, immer noch auf dem Hinweg
von hier nach hier. Ich will jetzt ja zurück.
Ich will ja von dieser Zeit mit ganz vielen Nullen am Ende,
will ich ja zu dieser Zahl kommen
Genau, du hast gesagt, die Nullen am Rechnerrand durch Einzelner setzen,
bis man auf die erste Eins trifft und die zu einer Null machen.
Das müsste ja fast genauso in Kerl aussehen, oder?
Machen wir das Rätsel auch mal interessanter. Was wird er
jetzt hier machen, um diese Zahl zu erniedrigen?
Geht man eine Idee? Ja. Okay, du hast gesagt,
er geht zu dem ersten Bieper, nimmt ihn auf,
dreht sich um und legt dann hier weg ab.
Das könnte man denken, aber ich glaube,
es geht ein bisschen einfacher. Er legt sich schon auf
dem Hinweg ab und dann nimmt er den auf.
Das ist einfach einfacher zu programmieren.
Deine Lösung wäre genauso gut gewesen.
Ja, das müssen wir jetzt in Karre übersetzen,
diese Idee. Also diese Idee zu sagen,
ich will aus Nullen Einsen machen,
und sobald ich bei der ersten Eins bin,
will ich da auch so eine Null machen.
Ja. Das war ja dann noch auf jeden Fall isoliert.
Und das letzte Bella, das war so mein Körperhausspringen,
weil er nicht mehr einen, weil er immer noch nicht durch andere ist.
Sehr gut. Das ist quasi genau das Gegenteil von
dem oben. Dann starte ich doch mal ganz kurz
unsere eigene Lösung
Mit einem interessanten Beispiel machen wir das. So war,
glaube ich, das Beispiel eben. Also, genau,
also wir stehen ja nicht auf dem Biber,
deswegen lege ich einen ab und gehe einen Schritt nach vorne.
Stehen wir jetzt auf einmal hier, nö,
deswegen lege ich einen ab und gehe nach vorne.
Stehen wir jetzt auf einem, nö, und gehe nach vorne.
Und jetzt stehen wir auf einem, deswegen kann ich
aus der Wildschleife raus und kann den Biefer nehmen.
Welche Zahl ist das? 1, 2, 4,
8, 16, 2, 64 plus 7 ist 71. Gut.
Okay, ihr seht, das ist eigentlich ganz einfach, oder?
Eine ganz simple Schleife, die einfach nur guckt,
solange da welche sind, nehme ich sie auf oder genau andersrum
Und jetzt kann man sich die Frage stellen,
wenn ich eine Zahl um einen erhöhen kann und ich kann
eine Zahl um eine erniedrigen,
dann kann ich schon sehr interessante Dinge machen.
Passt mal auf, was er als nächstes macht.
Es gibt einen Befehl at slow. Und wir schauen mal
, was er jetzt macht. Ich lasse ihn einfach mal
laufen und trinke ein bisschen Wasser und ihr überlegt euch,
was da passiert
Und wenn ihr wisst,
was er macht, hebt ihr einfach mal die Hand,
weil ich mal sehen will, wie lange das dauert,
bis die Leute da irgendeine Struktur erkennen.
Ja, ja, so ein Drittel der Leute hat es
mittlerweile verstanden. Man sieht es immer besonders schön,
wenn da lange Reihen von Nullen oder Einsen sind.
Wer hat denn noch nichts? Du hast noch nichts gesagt
. Du hast gesagt, oben zählt da runter und unten
zählt er hoch. Genau. Ich kann das mal beschleunigen.
Toll. Ja
Und welchen Sinn hat das jetzt gehabt? Was steht denn
jetzt in der Zeile hier unten? Wenn ich immer oben einen erniedrige,
unten eine Höhe, und das mache ich so lange,
bis das hier oben auf den Wand nicht mehr geht.
Was steht denn in der zweiten Zeile, ja?
Dann hat er jetzt in der oberen Zeile die eine, die zerkippt.
Ja, also es ist irgendwie eine komische Quatschzahl, die da umgeht.
Die ignorieren wir jetzt mal die Zahl da oben. Aber ich glaube,
der Vorstand muss mal nicht erst sein, lieber effektiver zu sofort auszudrehen.
Und wir haben so ein ganzes Gewicht. Okay,
Justus hat der Vorschlag, das rückwärts zu machen,
könnte sinnvoll sein. Kann sein. Muss ich ausführen,
wenn sich das rausstellt, kriegt ihr beide den Snickers.
Aber meine Frage war ja, was steht in der
zweiten Zeile,
Das ist die Sonne weiter. Genau, die Summe.
Wir haben also zwei Zahlen addiert. Ich habe immer gesagt,
die eine zähle ich runter auf null, die andere ziehe ich hoch.
Und wenn die erste bei null angekommen ist,
dann steht die Summe in der Zweianzahl.
Wir haben zwei Zahlen addiert. Wahnsinn. Wollen wir
mal gucken, ob das wirklich passiert.
Wir machen mal wie ein einfacheres Beispiel. So. Weiß jemand,
was die Adizi, die so mit dieser beiden Zahlen ist?
Einfach, oder? Da müssen einfach überall Diamanten sein,
weil null und eins ist ja eins,
1 und 0 ist eins, 0 und 1 ist 1.
Also wir müssten am Ende acht Diamanten stehen.
Dann lassen wir
ihn mal arbeiten
Joa, na er hat addiert, wunderbar.
Gut. Welche Zahl wurde denn hier oben als letztes
erniedrigt und dann kam dieser Unsinn dabei raus?
Welche Zahl hat Carrie hier versucht zu erniedrigen,
bevor er sozusagen hier vor der Wand irgendwie aufgegeben hat,
ja? Null. Und warum ist es so schwierig,
die Null zu erniedrigen, weil vor der Null ist ja nichts, ne?
Ja. Gut, also bau deine Lösung und du
kriegst einen Snickers von mir. Gut, das wollen wir
jetzt mal bauen. Das klingt doch eigentlich ganz einfach,
oder? Also das Runterzählen haben wir ja schon gebaut,
das Hochzählen haben wir schon gebaut,
wir müssen jetzt diese beiden lösen nur noch sinnvoll kombinieren
Also überlegen wir nochmal ganz kurz. Carrie fängt also hier
an. Was soll er als erstes tun? Soll er
irgendwie hochzählen oder runterzählen oder irgendwie erstmal irgendwo hingehen oder so?
Was ist das erste, ja? Genau, ich mache das runterzählen.
Und wir müssen ja sicherlich das Ganze in eine Schleife einbauen.
Und ich mache jetzt mal einen Trick. Ich weiß noch
gar nicht genau, was eine sinnvolle Schleifenbedingung ist.
Deswegen sage ich einfach mal, du sollst immer in diese Schleife reingehen.
Bitte niemals aus dieser Schleife rausspringen. Dann können wir
uns später überlegen, was der Platz sinnvoll ist.
Gut. Also wir machen das Decrement. Okay. Wenn ich
das Decrement mache, Nehmen wir mal wieder ein sinnvolleres Beispiel.
Achso, wir können, nee, da passiert ja noch
nichts, ich muss das Bowie ausführen.
Also wenn ich zum Beispiel, so, ja,
wenn ich diese Zahl dekrementieren will, dann wird da das dekrementieren.
Jetzt hat er sie dekrementiert. Und was muss er jetzt
als nächstes machen? Ich will jetzt ja quasi diese Zahl inkrementieren.
Wie komme ich denn jetzt von hier nach da?
Hat jemand einen Vorschlag? Wer hatte heute mal noch nicht?
Immer dieselben Hände. Du. Move back to wall.
Diesen Befehl gibt es, glaube ich, noch gar nicht
, ne
Move? Ah, sehr gut. Erstes Turn Around,
genau. Turn Around, Move to Wall, sehr gut.
Dann, wo stehen wir dann? Guck mal,
das ist das Turn Around, jetzt geht er zur Wand.
Was müssen wir dann machen? So, ne? Er
dreht sich, geht ihn schon nach vorne und dreht sich.
Toll. Was können wir jetzt machen? Ja. Increments,
sehr gut. Und auch hier schummel ich jetzt mal,
damit man so ein bisschen schöner sieht, was da genau passiert.
Auch machen wir ruhig mal so. Ich schummel jetzt,
ihr nehmt das also jetzt hier alles auf
So, was muss ich jetzt machen? Ich will jetzt
ja wieder hierhin zurück. Ja. Dann würde ich hier
stehen. Ja. John Left move forward John Left.
Sehr schön. Das sieht schon gar nicht schlecht aus.
Wir gucken mal ganz kurz. Natürlich wird diese Schleife
niemals aufhören, der wird irgendwann gegen eine Wand rennen.
Aber ich will einfach mal gucken, ob ein sinnvolles Ergebnis rauskommt.
Ich schummel jetzt wieder, dass ich also hier irgendwie so dafür sorge,
dass immer nur genau ein Diamant da steht.
Sind es jetzt acht Diamanten? Genau. Also wir würden
erwarten, dass als Summe dann hier acht Diamanten stehen
Oh, komm, wir lassen ihn mal arbeiten.
Ah, das macht so Spaß. Irgendwann mache ich für 99 Cent
so ein Carol-Bildschirm schon, aber nur addiert die ganze Zeit.
So, ja. Also das Endergebnis stimmt schon mal.
Jetzt ist er blöderweise abgestürzt. Warum ist Carol jetzt abgestürzt
? Ja. Wo möchtest du dieses If Frontisclear hinbauen
Also, hier irgendwo, hier?
Hier? Okay.
Hat nichts geholfen. Warum nicht? Weil wir uns wieder
die Frage stellen müssen, wann wird dieses Front is clear überprüft?
Dieses Front is clear wird überprüft, nachdem Kerl erhöht hat
und zurückgegangen ist. Also wenn Kerl hier steht,
dieses Front is clear wird immer nur genau dann überprüft,
wenn Kerl hier steht und nach Westen guckt.
Natürlich ist er frei. An der Stelle nützt es also
leider, leider nichts, ja. Irgendwie müssen wir uns
das Deckground kümmern, denn es gibt einen Spezialfall,
die Null, über die wir schon geredet haben,
wo Kerl hier in die Wand reinlaufen wird.
Wir sagen also, pass auf,
versucht doch bitte einen Beeper zu finden
Immer schön laufen, bis du einen Bieper findest. So,
und irgendwann läuft halt gegen die Wand, wenn da kein Bieper ist.
Und die Null hat ja nun mal keinen Bieper.
Ja, und da gibt es jetzt verschiedene Möglichkeiten.
Es war eine Idee, wo ich da jetzt einmachen sollte,
dass da nicht gegen die Wand reinläuft, ja.
Kannst du es nochmal ein bisschen lauter sagen, bitte?
Ja, ich meine. Indie Wish,
also in die Bedingung hier quasi rein.
So. So. Okay. Das ist gut. Ich habe Durst
, kann ich
gleich weiter trinken
Ah, eine andere Fehlermeldung. Wie kriegen wir die denn
jetzt weg? Ja. So? Ja. Kann man
machen. So. Ha. Gut. Also es gibt keinen
Absturz mehr. Ja, ja. Wir haben jetzt natürlich
immer noch das Problem,
dass diese Schleife niemals terminiert
Achtung. Ich glaube, du hast das Richtige gesagt.
Du willst dieses Degrement erstmal über die Waldschlafe schreiben.
Hast du das gesagt? Die IF-Schleife. Was ist denn
eine IF-Schleife? Ich will jetzt nicht zu viele verschiedene Lösungsmöglichkeiten auswählen.
Also lass uns doch mal Folgendes überlegen. Was passiert,
wenn Carol dieses Degrement auf der Null ausführt?
Wir starten es nochmal ganz kurz. Jetzt wird es
gleich spannend. Jetzt wird es spannend
So. So, Kerl fragt jetzt, ob diese beiden Bedingungen,
vor mir ist ja nicht mehr frei.
Das heißt, er wird jetzt aus dieser Schleife rausgehen?
Ist es kein Bieper, also nehme ich auch keinen auf.
So. Am liebsten würde ich ja eigentlich jetzt fragen,
ob vor mir frei ist. Hast du eine Idee?
Ja, da. Ich würde es gerne ohne If lösen.
Hat jemand eine Idee? Hast du eine Idee,
dass es... Ich würde eingeben,
vielleicht wird es einfach nur,
wenn man das nennt
Ah, du kriegst alle anderen Snickers, die ich noch
nicht verteilt habe. Gehen an dich. Du hast gesagt,
wir tun das Deckrim mit einmal vor die Wire-Schleife.
Was? Und dann wolltest du es, glaube ich,
hierhin tun, ne? War das dein Vorschlag? Sehr
gut. Warum ist das korrekt? Weil wir wollen ja,
wir wollen nachdem das Jackrement ausgeführt war,
wollen wir die Schleifenbedingungen überprüfen, okay?
Das passiert garantiert nach dem ersten Deckrimment,
denn Carol arbeitet ja von oben nach unten,
also er ist Deckrimment, dann die Wahlbedingungen prüfen.
Und wann wird die Wahlbedingungen das nächste Mal geprüft,
wenn das Schleifenum komplett durchgelaufen ist?
Und was ist das Letzte,
was passiert im Schleifenrumpf?
Es wird Deckrimment ausgeführt
Das heißt, das müsste jetzt funktionieren. Ich mache jetzt
mal Geschwindigkeit hoch und ich bitte, wenn es funktioniert,
nur mal einen großen Applaus an alle Beteiligten, die dafür gesorgt haben,
dass wir das hier gefixt haben mit den Bedingungen an den richtigen Stellen.
Wetten, bei ihr 2017 klappen wir da auch.
Im Klub war es so als Anti. Du willst auch
einen Snickers, oder? Okay, du kriegst auch
einen Snickers. Gut, also das hat funktioniert.
Wir machen noch mal ganz kurz den Jazz.
Okay, ich glaube, ich habe alles,
was ich heute machen wollte, gemacht.
Lass uns noch mal ganz kurz gucken.
Ja, vielen Dank für eure Aufmerksamkeit.
Wir sehen uns im Labor