Es ist 14.15 Uhr. Heute ist der, ich glaube,
der 21. Oktober, oder? Das sieht man hier leider
gar nicht. Ist heute ein eher Tatsache.
Weiß jemand, warum heute ein ganz besonderer Tag ist?
Ah, ja. Schön ins Kino gehen heute. Martin
McFly fliegt in die Zukunft. Ja, ich soll noch
so ein paar Ansagen machen. Christian hatte mich gebeten,
noch mal zu sagen, zwei Punkte hervorzuheben.
Dieser eine Punkt hier, du kannst dich in Stine
bis Donnerstag 22.10., 13 Uhr an, beziehungsweise ummelden.
Also morgen endet diese Frist. Danach geht es nur übers
Studienbüro. Falls ihr also noch irgendwelche Wechselwünsche habt,
dann macht es bitte selbst
Äh, dann hatte mich Detlef Reek angesprochen. Gibt es
hier Lehramtsstudierende? Okay, also für Lehramtsstudierende beachtet bitte diese Ankündigung.
Vielleicht gucken wir, was da drin steht. Ich habe
extra noch nicht raufgeklickt und mit der Sterne noch in der Vorlesung ist.
Okay, jetzt sollte ich also für einen eigenen Unterraum anmelden.
Wir können ja mal gucken, ob dieser Link hier funktioniert.
Okay, also wenn ihr da raufklickt, dann kann man
sich wahrscheinlich hier irgendwo, bin ich da jetzt schon drin?
Sie dürfen diesen Raum nicht betreten. Okay,
wie betrete ich ihn denn? Ah, Beitreten,
da müsst ihr dann wahrscheinlich raufklicken. Also wenn ihr Lehramtsstudierende
seid, dann macht das bitte
Weil nämlich demnächst ein Praktikum für euch beginnt. Ich glaube,
irgendwie schon am 30., also schon irgendwie nächste Woche oder so.
Also macht das bitte, wenn ihr auf Lehramt studiert.
Für die anderen ist das irrelevant. Okay,
dann hatte ich irgendwo noch was genau. Ich hatte ja
letzte Woche gar nicht Zeit, Alufolien zu machen.
Und es war immer so ein bisschen schwammig,
wie nennt man eigentlich diese komischen Void-Dinger, die wir da immer selber schreiben?
Also Move a Cross World und U-Turn und so.
Und ich bin dann in den ersten Wochen immer noch nicht
so pedantisch, wie man die jetzt so nennt.
In Cadills Welt heißen die, glaube ich,
zusammengesetzter Befehl oder eigener Befehl oder Benutzer
definierter Befehl
Später, wenn wir dann ein Java machen, werden wir
die wahrscheinlichen Methoden nennen. Und wenn ihr irgendwie so aus der
Pascal- oder C-Ecke kommt, werdet ihr sie wahrscheinlich Funktionen nennen.
Also wenn ihr irgendwie Methode dazu sagt oder eigener Befehl,
dann werden euch eure Übungsbummleiter wahrscheinlich nicht auspeitschen.
Aber nennt sie bitte nicht Void. Okay, das
wollte ich dazu noch sagen. Ach so, dann,
es fing ja an, letzte Woche mit diesem schönen Labyrinth.
Ich war, wo also Caro irgendwie komplett durch das ganze
Labyrinth durchlaufen muss und wenn er das irgendwie geschafft hat,
dann findet er am Ende diesen Diamanten.
Und er muss sich nie zwischen mehreren Möglichkeiten entscheiden.
Es ist immer völlig klar, wo er langgehen muss.
Es gibt keine Sackgassen, es gibt keine Wegkreuzung.
Eigentlich eine recht einfache Art von Labyrinth.
Werde ich heute auch noch zeigen, wie man das macht
Und jetzt das Intro zur zweiten Vorlesung.
Könnte man auf den ersten Blick denken, huch,
das ist jetzt da gar nichts Neues.
Aber tatsächlich ist dieses Labyrinth ein bisschen anders.
Was ist an diesem Labyrinth so kompliziert oder so?
Schwierig. Man kann vielleicht. Man kann abbiegen.
Man ist falsch. Man kann falsch abbiegen. Ja,
wo ist denn das erste Mal, wo man sich entschuldigt?
Hier zum Beispiel, kann man jetzt nicht in die Zukunft gucken,
was da sinnvoll wäre. Also muss man sich jetzt entweder entscheiden,
ich gehe immer links rum oder ich gehe immer rechts rum,
wenn ich mich entscheiden kann.
Und man muss dann auch irgendwie damit umgehen,
was passiert, wenn ich in solchen Sackgassen lande.
Das ist also
ein bisschen schwieriger
Und es ist auch überhaupt nicht klar, wie viele Schritte
Kerl gehen muss, bis er bei dem Diamanten ist.
Vorher war völlig klar, ich muss komplett durchgehen, 99 Schritte.
Und hier, tja, das ist wahrscheinlich jedes Mal eine andere Schrittzahl.
Also ich würde am liebsten, würde ich auch sagen,
hey, lieber Kerl, solange du den Diamanten noch nicht gefunden hast.
Und das bringe ich euch heute bei, die bedingte Schleife. Okay,
und dann, ja, damit ihr nicht nur irgendwie Blumen
durch die Gegend tragt und durch Labyrinthe lauft,
wollte ich mit Kerl noch mal ein bisschen was nützliches oder praxisrelevantes zeigen.
Das sogenannte Binärsystem kommt auch heute dran. Ja,
wenn ihr euch mal die Folien von letzter Woche angeschaut habt, alles das,
was ich nicht gezeigt habe, dann seht ihr da solche sogenannten Kontrollflussdiagramme.
Ich versuche immer, Wenn es irgendwelche interessanten Code-Beispiele gibt,
nicht nur den Code zu zeigen, sondern auch die entsprechenden Kontrollflussdiagnomen.
Also müssen wir einmal verstehen, wie die aufgebaut sind.
Also wir haben hier zum Beispiel ein If und ein If
sieht in einem Kontrollflussdiagnom so aus, man schreibt die Bedingungen in so eine Raute.
Und ich war, und Bieper ist hier die Bedingung von dem If.
Und jetzt muss ich mich ja entscheiden, für welchen,
ja in welchen dieser Blöcke ich reingehe.
Also entweder gehe ich in diesen Block rein und werde diesen
ignorieren oder ich ignoriere diesen Bock und werde in diesen reingehen.
Und das sieht man, finde ich, in diesen Kontrollflussdiagramm
so ein bisschen schöner. Also wenn die Bedingungen true ist,
gehe ich hier lang, das ist quasi dieser Block,
und hier nenne ich es dieser Pfad.
Und wenn es false ist, gehe ich in den Elzfall rein,
also in diesen Block, und das ist dann entsprechend dieser Pfad.
Das könnt ihr auch hoffentlich sehen, dass dieses Diagramm und
der Code
Äquivalent sind
Okay, also, Bedingungen prüfen,
einen von beiden Faden und irgendwie am Ende treffen sich diese beiden Fahre wieder,
also wenn hier unten noch was stehen würde,
dann würden sich diese beiden Fahre treffen und würde es gemeinsam wieder weitergehen.
Okay, und dann gibt es immer so Leute,
die sich überlegen, naja, if Els, ist das Els
nicht eigentlich überflüchtet? Also könnte ich hier nicht eigentlich noch
ein If hinschreiben, wo ich einfach die Bedingungen umdrehe.
Denn also in diesem Blog wird ja reingegangen,
wenn Carol nicht auf einem Pieper steht,
könnte ich das ja nicht quasi direkt so hinschreiben,
wenn Carol nicht auf einem Pieper steht,
müsste das nicht das Gleiche sein.
Und ich habe jetzt mal das Kontrollflusdiagramm hier hingemalt und
ihr seht, das sieht völlig anders aus
Nur noch mal kurz als Kontrast. Hier gibt es tatsächlich
nur zwei Fahrer. Ich entscheide mich für den Fahrt
oder für den Fahrt und mehr Alternative gibt es nicht.
Und wenn ich jetzt aber so zwei Ifs untereinander schreibe,
dann kann ich mich ja bei beiden Ifs sozusagen unabhängig voneinander unterscheiden,
ob ich den Code ausführen muss oder nicht.
Also schauen wir uns das erste If an.
Das entspricht quasi dieser Raute. Wenn Carrie auf dem Bieper
steht, dann soll er ihn aufheben.
Das heißt, ich gehe in diesen Block rein.
Ansonsten gehe ich nicht in den Block rein.
Und was kommt dann als nächstes? Was steht unter dem
ersten If? Oh, da steht ja noch ein If.
Dann muss ich noch eine Raute hier reinschreiben.
Dann nehme ich die Bedingung, schreibe,
schreibe die Bedingung in diese Raute rein.
Und jetzt kann ich mich wieder
zwischen zwei Möglichkeiten entscheiden
Also wenn es der Fall ist,
dass er nicht auf dem Bieper steht,
muss dieser Code eben ausgeführt werden, der hier ansonsten eben nicht.
Und jetzt seht ihr schon, jetzt gibt es hier schon,
ja wie viele Möglichkeiten gibt es jetzt hier?
Also ich kann so von oben nach unten durchgehen und
ich kann mich jeweils für zwei Möglichkeiten entscheiden.
Wie viele Möglichkeiten habe ich dann insgesamt,
wenn ich mich zweimal zwischen zwei Möglichkeiten entscheide?
Vier, ne? Genau. Also entweder ist es beides
Male True oder erst ist es True und dann False oder
erst False und dann True oder erst False und dann False.
Aber das Lustige ist, dass gar nicht alle vier
von diesen Möglichkeiten tatsächlich realisiert werden können.
Ich weiß nicht, ob euch das aufgefallen ist.
Wir können das da mal durchspielen. Also nehmen wir an
, Carol steht auf einem Bieper, okay?
Das nehmen wir einfach mal an, dann würden wir ja
hier lang gehen. Dann nehmen wir den Bieper,
dann ist er weg
Und dann frage ich, ob Kehre nicht auf einem Bieper steht.
Ist das True the Fouls, dass er nicht auf einem Bieper steht?
True. Das heißt, ich werde also hier lang gehen.
Gut. Also diesen Weg gibt es auf jeden Fall.
Was ist, wenn von vornherein kein Bieper dasteht?
Also nö, Carrie steht nicht auf dem Bieper. Okay,
dann prüfe ich mal anschließend, ob er nicht auf einem
Bieber steht. Ruft das einfach mal in den Raum?
True. Das ist also in beiden Fällen True.
Das heißt also, dieser Pfad wird nie genommen.
Ja, und daran sieht man schon,
da hat der Programmierer sich wahrscheinlich irgendwie getäuscht.
Also das macht irgendwie keinen Sinn, diese beiden Lebens untereinander
zu schreiben. Wenn völlig klar ist, dass diese Bedingungen
niemals wahr sein kann
Das wollte ich euch einmal live demonstrieren.
Ja, das ist jetzt eigentlich auch völlig egal.
Ich nenne das, ich nenne das mal anders,
nicht, dass ihr denkt, das ist irgendwie relevant.
Also, wenn wir auf einem Bieger stehen,
nehmen wir ihn auf, wenn wir nicht auf einem Bieger stehen,
wollten wir einen ablegen, so war das, ne?
Okay. Und ich kann das Programm jetzt gar nicht ausführen,
weil es gibt kein Rätsel, was so heißt,
aber ich kann mit einem speziellen Shortcut,
wo ich immer total zittrige Finger kriege,
ob er noch funktioniert,
ich drücke den einmal
Ah, taucht hier eine Warnung auf, das System warnt mich,
dass die Bedingung in Zeile 7 immer wahr ist. Man nennt das gerne statische Analyse,
also man guckt sich das Programm an,
man führt es nicht aus,
sondern man steckt nur so ein paar Regeln auf und dann stellt diese statische Analyse fest,
also lieber Programmierer, da hast du dich wahrscheinlich irgendwie getäuscht,
du wolltest wahrscheinlich irgendwas anderes sagen, ein IF,
wo die Bedingung immer true ist, kann eigentlich nicht sinnvoll sein.
Da hast du dich wahrscheinlich irgendwie getäuscht.
Ich hatte den Schlagzeit gar nicht gehört. Achso,
soll ich nochmal drücken und du hörst zu?
Der Shortgut ist Steuerung,
Aber ihr dürft da nicht zu viel... Ja,
also manchmal kommen da irgendwelche Warnungen aus,
die unsinnig sind und er findet auch nicht alle Fehler.
Aber das ist irgendwie ganz witzig.
Also für so kleine Beispiele funktioniert das meistens ganz gut.
Okay. Also wenn irgendwas komisch ist in eurem Programm,
drückt doch mal Steuerungsschiff de und vielleicht findet dieser Detektiv ja irgendwas.
Gut. Also, nochmal kurz eine Folie zurück.
Einen If Else hat nur zwei Möglichkeiten und zwei Ifs untereinander
hat vier Möglichkeiten, durch den Code zu gehen.
Das ist schon deutlich komplizierter. Okay. Genau,
und ich nenne es eben mögliche Pfade durch den Code.
Also hier gibt es eben zwei mögliche Pfade durch den Code
und bei dem anderen Ding gab es eben theoretisch vier in
der Praxis dann aber nur drei Pfade durch den Code
Gut. Ja, hier habe ich es nochmal gesagt,
das sind das vier, das habe ich ja eigentlich alle schon gesagt,
das könnt ihr euch nochmal zu Hause in Ruhe durchlesen.
So, und dann zeige ich immer ganz gern so ein paar
studentische Lösungen und versuche die so schrittweise so ein bisschen zu verschönern.
Also ich hatte ja gerade schon gesagt, wenn man mehrere Ifs untereinander schreibt,
ist es eigentlich unnötig kompliziert und ziemlich schwierig,
den Code zu verstehen. Also wir hatten ja gesagt,
wenn ein If untereinander steht, haben wir zwei Möglichkeiten,
wenn zwei Ifs untereinander stehen, haben wir schon vier Möglichkeiten,
wie man da durch den Tod gehen kann.
Wie viel habe ich denn jetzt bei drei Ifs,
die untereinander stehen
Acht Möglichkeiten. Zwei hoch drei ist, acht. Da
werde ich schon ziemlich unruhig, weil ich muss jetzt ja als jemand,
der den Code nicht selber geschrieben hat, irgendwie verstehen,
was denn sich der Programmierer dabei gedacht hat.
Also er hat gesagt, es gibt irgendwie acht verschiedene Fälle,
die sich dich bei diesem Labyrinth irgendwie unterscheiden muss.
Das ist wahrscheinlich unnötig kompliziert. Okay,
und dann haben wir hier noch so eine merkwürdige Zahl, 77.
Ich hätte jetzt eigentlich eher erwartet, dass er eine 99 steht,
weil Carrie ja irgendwie 99 Schritte gehen muss. Komisch. Okay,
und gut, also wenn vor ihm frei ist,
geht er nach vorne, wenn links frei ist,
dreht er sich nach links und geht nach vorne,
wenn Rechtspreis, dreht er sich nach rechts und geht nach vorne.
Das klingt ja eigentlich erst mal gar nicht so schlecht,
aber was man eben beachten muss, ist folgendes,
Diese Bedingungen werden unabhängig voneinander geprüft.
Es kann also durchaus sein, dass Carol einen Schritt nach vorne geht,
anschließend sich nach links dreht und einen Schritt nach vorne geht und anschließend nach rechts dreht und einen Schritt nach vorne geht.
In einem Durchlauf dieser Repeat-Schleife, wenn das Labyrinth entsprechend aufgebaut ist. Könnte auch sein,
dass er dieses Moforward in einem Durchlauf nicht macht,
aber dann dieses und dieses, könnte aber auch sein,
dass er nur dieses macht und jenes oder auch nur einen von den dreien.
Das ist also, kann man sich dann überlegen,
dass wahrscheinlich sieben von diesen acht Möglichkeiten auch tatsächlich möglich sind.
Aber puh. Und diese 77 wurde durchaus probieren herausgefunden.
Wenn ihr dann das Labyrinth neu ladet,
findet er entweder den Diamanten nicht oder knallt gegen eine Wand.
Also das ist irgendwie nicht so eine schöne Lösung.
Schauen wir doch mal, wie man das anders lösen kann.
Also ich habe mir wieder überlegt, was ist eine sinnvolle Zahl,
die irgendwie logisch mit diesem Rätsel zusammenhängt,
die Anzahl Schritte, die Kerl gehen muss.
Er muss 99 Schritte gehen. Also habe ich gesagt,
ich nehme eine Schleife, die 99 mal durchläuft und packe
das Moforward auf jeden Fall in den Schleifen rumfallen, ohne irgendwelche Ifs.
Und wenn ich das mache, sehe ich als Programmierer,
ohne den Code jetzt ausführen zu müssen,
Kerl wird auf jeden Fall 99 Schritte nach vorne gehen.
Ich darf halt keine Moforwards jetzt in diesen Hilfsbefehl einbauen.
Kerl wird auf jeden Fall 99 Schritte gehen. Ich muss also
keine Angst haben, dass er zu viel oder zu wenig geht.
Aber ich muss jetzt noch irgendwie sicherstellen,
dass er durch das Moforward nicht in eine Wand reinknallt
Habe ich mal einen Hilfsbefehl mir herbeigewünscht, der Turnaway from Wall heißt.
Er soll also sicherstellen, dass Carrie nicht eine Wand läuft
und den schauen wir uns als nächstes an.
Ja, und das ist erstmal so die oberste Grundstruktur von oben.
Gebe dir die richtige Anzahl von Schritten. Okay,
wie ist jetzt dieses Turnaway from War, was garantieren soll,
dass er nicht in eine Wand reinläuft?
Da habe ich mir einfach überlegt, welche möglichen Fälle gibt es denn?
So, es gibt einmal den Fall, dass vor Carrie frei ist.
Dann, wie muss ich mich dann drehen?
Gar nicht. Dafür gibt es auch keine F-Taste.
Ihr macht einfach nichts. Okay, dann gibt es diesen
Fall. Er steht vor einer Wand und links von ihm
ist auch eine Wand, aber rechts von ihm nicht.
Dann wäre es sicherlich sinnvoll,
dass er sich rechts umdreht
Dann gibt es diesen Fall, stellt euch vor,
Kerl ist hier und guckt gerade nach Süden.
Und hier ist eine Wand, da wäre es sicherlich sinnvoll,
dass es sich nach links dreht.
Es gibt diese drei Möglichkeiten, logisch. Und jetzt würde ich erwarten,
dass in dem Code, den ich jetzt schreibe,
dass es da drei mögliche Pfade durchgeht.
Das heißt also, ihr solltet auf keinen Fall zwei Ifs untereinander schreiben,
weil sonst haben wir schon vier mögliche Fahrräder.
Da habt ihr euch wahrscheinlich schon wieder irgendwie getäuscht oder irgendwelche Kombinationen machen keinen Sinn.
Okay, wo findet man denn jetzt hier die Pfade? Also,
es gibt einmal die Möglichkeit, dass Vorkehre frei ist,
dann soll er diesen blauen Block ausführen, wo einfach gar nichts drinsteht.
Und dann ist er fertig. Das ist der erste Pfad
durch die Kohle. Ich führe nur diesen blauen Block aus
Der zweite Pfad ist, ich führe diesen lilanen Block aus,
das ist quasi dieser Fall hier.
Und der dritte Pfad ist, ich führe diesen John Ride Block aus.
Man kann sich das jetzt auch noch formal überlegen,
was bedeutet das, wenn ich Eves ineinander schache,
dann multipliziert sich nicht die Anzahl der Möglichkeiten, sondern wahrscheinlich addiert sich da,
irgendwas könnt ihr euch gerne mal zu Hause in Ruhe überlegen.
Aber hoffentlich ist jedem klar, mit dem bisherige Wissen,
entweder wird dieser Block ausgeführt oder dieser oder dieser,
genau einer von den dreien. Es kann nicht sein,
dass Carrie irgendwie komplett durch die ganze Methode John Away
von Wall durchgeht, ohne einen dieser drei Blöcke auszuführen.
Und es kann auch nicht sein,
dass er in einem Durchlauf mehrere dieser Blöcke ausführt.
Er wird sich für genau einen der drei entscheiden.
Deswegen habe ich schon mal ein gutes Gefühl irgendwie,
wenn ich
diesen Code sehe
Okay. Was haben wir letzte Woche gelernt, wenn ich
ein If-Ls habe und der Blog unter dem If ist leer.
Haben wir da irgendwas gelernt, dass man das ein bisschen kompakter machen kann,
ja? Richtig, wir können die Bedingungen negieren,
das habe ich mal versucht, auf der nächsten Folge zu machen.
Wie negieren die Bedingungen? Dann brauche ich das Els nicht mehr
und kann denen das, was vorher im Els stand,
direkt unter das If schreiben. Jetzt sieht man hier,
es gibt immer noch drei Fader, also wenn vor Carrie frei ist,
dann macht er sozusagen das unsichtbare Els-Lehrer-Blog,
was man sich hier unten vorstellt.
Er macht einfach nichts und die anderen beiden Fälle sind
immer noch genauso wie vorher.
Sehr schön
Ja, das war auch schon das. Gibt es zu
Walk The Loverings noch Fragen, vielleicht zu dieser Folie?
Ja. Der hier nicht Auftrittlichkeit,
aber für den jetzigen Generellen, seiner Schuld.
Ich stelle es dir mal vor, Kabel und Koch,
es ist der Ausgangsverständnis, gleich der Herr.
Okay. Also wenn er sozusagen nach Westen gucken würde,
dann würde tatsächlich dieses Turnaway von Wall sich nach rechts drehen.
Er würde nach Norden gucken und dann würde er
in die Wand reinlaufen
Richtig. Ich habe leider keine Snickers dabei, sonst hättest du jetzt eins gekriegt.
Bitte merken. Bitte merken. Ich habe tatsächlich den Labyrinth-Generator
so gebaut, dass dieser Fall nicht eintreten kann,
aber das kann man ja nicht wissen.
Also das ist auf jeden Fall sehr schön,
dass du den Bug gefunden hast, den potenziellen Bug.
Okay, ja, war noch eine Frage irgendwo?
Das ist ganz funktioniert, aber es war noch auf jeden
Fall kreuzer. Richtig, bei Kreuzung funktioniert das nicht.
Es gibt, in Woche eins gab es keine Kreuzung.
Genau, also für das Labyrinth und Woche zwei
wird es nicht funktionieren. Da kann es durchaus passieren,
dass er irgendwann im Kreis läuft oder in der Sackgasse
irgendwo gegen die Wand läuft oder so
Okay. Ja, da hatte ich noch eine andere Lösung gefunden.
Remove the Tiles. Ich glaube, ich zeige euch das nochmal ganz kurz,
weil ich hatte das in der Vorlesung nicht gezeigt.
Das ist remove the tiles hier. Einfach, dass ihr nochmal seht.
Worum es da ging? Also irgendwie hat das mit den Fliesen,
er hat eine Nacht drüber geschlafen und irgendwie so richtig
gut gefallen haben sie ihm doch nicht.
Er hat von anderen Fliesen geträumt wahrscheinlich.
Und dann wollte er sie wieder aus dem Badezimmer entfernen.
Ja, und da hatte ich eben auch mal
interessante studentische Lösungen gesehen
Wo ihm auch schon wieder so komische magische Zahlen drinstehen.
Repeat 118. Aber komisch, das sind doch nur 100 Fliesen.
Warum steht denn die Szene 118? Schauen wir mal,
was im Schleif rumsteht. Okay, wir haben schon wieder
mehrere Ifs untereinander. Das ist schon wieder so eine Situation,
wahrscheinlich zu kompliziert und wahrscheinlich deswegen so eine komische Zahl.
Okay, das heißt also zum Beispiel dieses Pick Beeper wird
nicht in jedem Schleifendurchlauf ausgeführt, sondern nur,
wenn Carol auf einer Fliese steht.
Und wann wird denn nicht auf einer Fliese stehen?
Das hängt irgendwie mit diesem zweiten If zusammen
Manchmal dreht er sich nur ohne einen Schritt nach vorne
zu gehen und dann würde dieses Pick-Bee verknallen.
Okay, also wahrscheinlich ist die Logik so,
Carrie muss 100 Fliesen aufnehmen und wahrscheinlich auch 100 Schritte nach vorne
gehen und er muss sich noch 18 Mal nach links zeigen.
Ich vermute das jetzt einfach mal. Liegt es daran?
Okay. Okay, dann würde man hier vielleicht einen Kommentar hinterschreiben,
118, 60 folgendermaßen zusammen.
Aber vielleicht geht es ja auch irgendwie ein bisschen logischer.
Schaut mal kurz. So habe ich mir jetzt zum Beispiel
überlegt, wieder so eine ganz blöde Frage.
Welche Zahl hat total simpel, logisch mit dem Rätsel zu tun?
Die Anzahl der Fliesen. Also ich will, dass Carrie
100 Fliesen aufnimmt. Also mache ich eine Repeat-Schleife mit 100
Durchläufen und ich will auf jeden Fall eine Fliese aufnehmen und
ich will auf jeden Fall einen Schritt nach vorne gehen.
Das ist so ähnlich wie, als wir
die Fliesen abgelegt hatten
letzte Woche
Und ich muss natürlich sicherstellen,
dass ich nach Möglichkeit auch auf eine Fliese raufgehe,
also sage ich in diesem Hilfsbefehl,
wenn vor dir keine Fliese ist,
dann drehe ich bitte nach links in der Hoffnung,
dass da eine Fliese vor dir liegt.
Das wird im allerletzten Fall nicht mehr klappen,
da läuft er dann auf ein leeres Feld, aber das ist nicht schlimm,
weil er dann nicht mehr versucht, eine Fliese aufzunehmen.
Okay, also Alarmglocken sollten immer bei euch angehen,
wenn hier so merkwürdige Zahlen stehen, wie hier die 118,
oder hier die 77, das ist immer komisch.
Und wenn mehrere IFs untereinander stehen,
ist es eigentlich fast immer falsch.
Und meistens hängt das irgendwie miteinander zusammen.
Genau, da hatten wir noch ein letztes Ding,
das war aus Tyle The Flow,
das hatten wir letzte Woche zusammen gebaut.
Da schauen wir uns vielleicht erst mal nur dieses Kontrollflussdiagramm an,
weil man hier sehr schön ein paar Eigenschaften sieht oder zumindest eine,
die ich mit euch besprochen besprechen wollte.
Also wir haben hier eine Bedingung und wenn die Bedingung wahr ist,
will ich einen Biefer ablegen und einen Schritt nach vorne gehen.
Und wenn die Bedingung falsch ist, will ich einen Biefer ablegen,
mich nach links drehen und einen Schritt nach vorne gehen.
Und wir hatten, glaube ich, letzte Woche schon mal darüber gesprochen,
irgendwie ist es doch komisch,
wenn man so einen IFLs hat und beide Blöcke enden mit demselben Befehl.
Das ist doch eigentlich
unnötig kompliziert,
Erinnert sich noch jemand, ja? Man kann das rausklammern
. Also ich würde also dieses Moforwatch hier und hier
wegnehmen und dann einfach unter des EFLs tun.
Kann man in diesem Fall noch mehr sogar ausklammern?
Das Dropbeeper kann man auch ausklammern, weil das Dropbeeper ja keinen Einfluss auf diese...
Das beißt sich, da findet der Philosoph.
Das beißt sich in diesem Fall nicht mit dem EFL,
weil das prüft ja,
ob vor mir eine Wand ist und ob vor mir ein Beeper ist.
Und ob ich auf einem Beeper stehe, ist in diesem Sonderfall egal.
Aber im Allgemeinen muss man darauf natürlich achten, richtig.
Genau, aber hier können wir es tatsächlich rausziehen.
Das würde dann so aussehen. Also auf jeden Fall
lege ich erst mal den Beeper ab,
weil ich das ja in beiden Fällen machen musste
Und nachdem ich dieses If-Ls komplett ausgeführt habe,
gehe ich ihn schon nach vorne,
weil ich es ja in beiden Fällen machen musste.
Ich zeige noch mal ganz kurz,
gehe ich noch mal die beiden Folien durch,
dass ihr seht, dass wirklich dasselbe passiert.
Also in dem einen Fall sagen wir Drop Beaver, Turn Left move forward.
Und hier sagen wir Drop Beaper, Turn Left move forward.
Und hier in dem anderen Fall sagen wir Drop Beaper move forward.
Und hier ist es entsprechend Drop Beaper. Move forward.
Ja, der Code ist also einfacher geworden und macht dasselbe.
Das war irgendwie ganz nett. Okay,
jetzt kommt wieder die Standardfrage von mir. Das ist,
glaube ich, schon das dritte oder vierte Mal.
Wenn ich ein If-F habe mit einem leeren Block und darunter
ein Ls,
was macht man denn normalerweise
Man muss das negieren. Man muss es negieren,
ne? Ich kann also diese komplette Bedingung negieren,
dann brauche ich diesen Blog und das ALS nicht mehr,
sondern kann das Turn Left direkt dann da drunter schreiben.
Das sieht man hier einmal vorher nachher.
Also hier noch mit dem leeren Blog und hier negiert.
Und da gab es letztes Jahr ziemlich viel Verwirrung, weil man,
glaube ich, das Blaue nicht so gut auf die Beamer sieht.
Also achte bitte darauf, dass sich diese ganze Bedingung von oben eingeklammert habe.
Hier ist so eine blaue Klammer zu und hier ist so
eine blaue Klammer auf, die habe ich also komplett eingeklammert.
Und dann habe ich vor die Klammer, diese Negierung geschrieben.
Das garantiert mir, dass wirklich die komplette Bedingung negiert wird
und nicht nur irgendwelche Einzelteile.
Ja, aber kann man nicht vielleicht irgendwie das doch noch irgendwie auf die Einzelteile beziehen?
Also ihr kennt vielleicht aus der Mathematik so Regeln,
wenn ihr einen geklammerten Ausdruck habt und wollt ihr mit irgendwas
multiplizieren oder das Vorzeichen umdrehen oder irgendwas,
dann kann man das irgendwie so reinziehen in die Klammern, so.
Kann man das hier vielleicht auch? Ja. Warum haben
die das auch die Zeiten kommen vor,
wie bei Red Becking und manchmal,
dass die Komplizenz von vorne ist mit ihr setzen?
Genau. Sehr schön. Und bitte jetzt nicht weiterreden,
weil möglicherweise weißt du schon, worauf ich danach hinaus will.
Also der Vorschlag war bis hierhin,
man kann ja das Ausrufezeichen hier hinsetzen und man müsste dann
hier sozusagen noch eins reintun und dann löschen die sich
gegenseitig,
dann kann man es da einfach wegnehmen
Wir tun jetzt mal so, als würdest du nicht mehr sagen wollen.
Leider funktioniert das nicht, das ist nicht equi Venet und das
würde ich einmal zeigen an einem Beispiel aus dem Alltag,
was für euch ein bisschen anschaulich ist.
Also Blondinen, reden wir mal kurz über Blondinen.
Wir definieren das erstmal, was eine Blondine ist,
sonst kann man ja gar nicht darüber reden.
Also, eine Blondine ist weiblich und blond. Hier sieht man diese schöne und,
ich habe das mal auf Deutsch hingeschrieben, ihr könnt euch aber vorstellen,
das sind so zwei kaufmännische, uns stehen oder zwei Brezel.
Also ich habe zwei Bedingungen, die beide wahr sein müssen,
damit ein Mensch als Blondine durchgeht.
Weiblich, das ist quasi, wenn man so will,
hier die Zeile mit den weiblichen Menschen,
das ist die Zeile mit den nicht weiblichen Menschen blond ist quasi diese Spalte.
Hier seht ihr also nur blonde Menschen und hier seht ihr nur nicht blonde Menschen.
Das sind die vier Möglichkeiten, die sich aufspannen,
wenn man sich zwei Bedingungen anguckt und wie miteinander kombiniert werden kann.
Okay. Und wenn ich jetzt zum Beispiel sage, gut,
ich weiß jetzt, was eine Blondine ist und jetzt will
ich alle über alle Menschen reden, die keine Blondinen sind.
Was muss ich dann machen? Muss ich dann einfach nur die Ausrufezeichen
quasi in diese Klammer reinnehmen und das unten lasse ich so?
Dann würde quasi dieser Herr dabei rausbringen.
Dieser Herr ist nicht weiblich und nicht blond,
aber dann gehen leider diese beiden Personen unter.
Das ist irgendwie nicht so schön.
Ich will ja quasi alle Leute haben,
nur nicht die blondigen
Und was man dann vielleicht sieht, ist,
dass tatsächlich alle drei Leute übrig bleiben müssten eigentlich,
bis auf die eine Blondine. Ja, also,
es reicht aus, wenn man in einer Eigenschaft abweicht,
zum Beispiel die Haarfarbe, eine Frau,
die nicht blond ist, ist keine Blondine.
Und wie formuliert den Satz denn jetzt am besten?
Ein Mensch, der nicht weiblich ist,
ist auch keine Blondine, selbst wenn er blond ist.
Ist auch wunderbar in Ordnung, wenn man in mehreren Eigenschaften abweicht.
Aber es reicht, wenn man in einer Eigenschaft einfach damit
diese Und-Verknüpfung sozusagen nicht mehr gilt
Ist das eben klar, diese Diskussion über Blondinen und nicht Blondinen?
Ich bin mir nicht sicher, ob das anschaulich so oder noch mehr Verwirrung stiftet.
Okay. Ja, und jetzt habe ich versucht,
dieses Diagramm, was ihr hier seht,
zu übertragen auf die Welt von Carrie mit der Bedingung,
die uns gerade interessiert hat.
Also, wir hatten ja diese Bedingung,
Front is clear und not people ahead.
Das soll quasi dieser Zustand der Welt sein. Also,
Front is clear bedeutet ja, hier ist keine Wand,
ihr seht, hier ist keine Wand.
Und not beaker ahead heißt, Peer ist kein Peer,
das ist dieser Zustand der Welt.
Gut. Und wie ist das jetzt wieder mit den Zeilen
und den Spalten? Also das ist die Zeile,
Front is clear
Hier sind keine Wände. Das ist die Zeile, not frontisly
. Ihr seht, hier sind in beiden Fällen Wände.
Das ist die Spalte, not beeper a head.
Und das ist die Spalte Beeper a head. Und wenn
ich jetzt sage, ich habe also diesen einen besonderen Zustand,
Front is clear and not beeper a head.
Und ich interessiere mich jetzt für die Zuschnitte, die es eben nicht sind,
dann reicht es, wenn ich in dieser Dimension quasi abweiche.
Also wenn tatsächlich ein Diamant vorkehre steht, dann ist es
nicht mehr der Fall, dass beide Bedingungen gelten.
Oder ich kann auch in die andere Richtung abweichen,
wenn vorkehrelevant ist, dann gilt auch nicht mehr, dass beide Bedingungen gleichzeitig gelten.
Ich kann auch im Extremfall von beiden Bedingungen abweichen. Ich glaube,
in unseren Rätseln, ist es bis jetzt nie vorgekommen,
dass hinter einer Wand ein Diamant versteckt war und das war irgendwie relevant für uns.
Also tatsächlich ist es so,
wenn es vier Möglichkeiten gibt und eine Möglichkeit will ich ausschließen,
bleiben drei Möglichkeiten übrig und nicht nur eine andere.
Das ist eigentlich recht anschaulich, oder? Man kann das
auch mit Wahrscheinlichkeiten argumentieren. Ich kann sagen, naja,
die Wahrscheinlichkeit, dass zwei Bedingungen gleichzeitig gelten,
ist ja ungefähr 25 Prozent, wenn jeder eine Wahrscheinlichkeit von 50 Prozent hat.
Und die Wahrscheinlichkeit, dass mindestens eine Bedingung gilt,
die muss dann ja deutlich größer sein.
Es kann nicht sein, dass beide Wahrscheinlichkeiten 25 Prozent sind,
wenn nicht die Addierung, muss ja 100 Prozent rauskommen.
Okay, Das heißt also,
wenn ich diese Negation in die Klammern reinnehmen will,
dann ist es tatsächlich so, dass ich die einzelnen Bedingungen negieren,
aber zusätzlich wird aus dem Hund ein Oder.
Das ist nochmal allgemein formuliert hier. Die Einzelbedingungen werden negiert und
aus dem Hund wird dann oder und für das Oder gilt es anders und genauso.
Die Einzelbedingungen werden legiert und aus dem Oder wird dann ein Hund.
Das ist total lustig. Fast alle Programmieranfänger machen das falsch
und schreiben hier ein On-Töne und wir sind dann verwirrt,
das ist nicht klar.
Gut. Fragen und zu diesen Gesetzen. Wie ist es
euch einfach nochmal in Ruhe zu Hause durch?
Eigentlich ist es gar nicht so schwer.
Okay, aber wir liegen ganz gut in der Zeit. Ja,
wir haben ja letzte Woche eine Schleifenvariante kennengelernt,
wo ich also Carol sage,
ich möchte etwas mehr als einmal tun,
sonst schreibe ich einfach Repeat, schreibe in diese runden Klammern rein,
wie oft er es tun soll, eine Zahl zwischen 1 und 9099.
Und dann schreibe ich in diesen Blockhain, was er tun soll.
Und da kann auch mehr als ein Befehl drinstehen,
aber in diesem Beispiel war es nur ein Befehl.
Okay. Und das funktioniert für ziemlich viele Rätsel,
wenn ich also sage, die Welt hat zehn Felder,
Carol steht auf dem ersten und er soll zum letzten Feld gehen,
dann kann man das eben einfach so machen.
Es gibt eben viele Rätsel, wo das nicht
so einfach ist. Okay, dann schauen wir uns jetzt
mal an
Wie man das anders machen kann, welche Variation es da noch gibt.
Ja, an was erinnert uns das denn hier?
Wild, Front is Clemo Forward. Das sieht ja so ein bisschen aus
wie das If. Wenn ihr euch jetzt einfach mal vorstellt,
hier würde If stehen,
würdet ihr euch nicht wundern und ihr würdet sagen,
gut, wenn Vorkehre frei ist,
soll er einen Schritt nach vorne gehen,
ansonsten soll er eben nichts tun.
Und das Wire ist erstmal so ähnlich wie ein If.
Also tatsächlich wird die Bedingung überprüft, wenn die Bedingung falsch ist,
wird dieser Block ignorieren und es wird unterhalb des Blocks weitergemaßt.
Und wenn die Bedingung zu ist,
dann wird in den Block reingegangen. Das heißt,
am Anfang ist If und Why noch eigentlich genau gleich definiert,
aber das Spannende ist,
was passiert,
wenn dieser Block
einmal komplett ausgeführt wurde
Bei einem ist, wird dann einfach unterhalb des Blocks weitergemacht.
Ein If wird ja nullmal oder einmal ausgeführt.
Und bei dem Wirel ist es so,
wenn der Schleifen rum, man nimmt das gerne Schleifen rum,
wenn der einmal komplett ausgeführt wurde,
dann springt man wieder zu dem Wirel zurück und prüft die Bedingungen erneut.
Das ist der einzige Unterschied zwischen If und Wirel.
Bei einem If wird da drunter weitergemacht. Bei einem Wirel
wird wieder hier oben weitergemacht. Ich will das nicht
so anschauen, deswegen nochmal das entsprechende Kontrollflussdiagramm dazu.
Also Carrie prüft eine Bedingung. Wenn die Bedingung False ist,
verlasse ich die Schleife und mache unterhalb der Schleife weiter.
Wenn sie true ist, führe ich den Schleifen oben komplett aus.
Und wenn ich ihn ausgeführt habe, dann springt der Kontrollfluss
wieder zurück und ich prüfe die Bedingung nochmal.
Vielleicht ist sie nochmal true, ich führe es aus,
ich prüfe wieder, vielleicht ist nochmal true,
ich führe aus, ich prüfe wieder.
Und irgendwann wird die Schleifenbedingung hoffentlich false sein und
dann springe ich aus der Schleife raus
Was glaubt ihr, was passiert,
wenn ich hier gar nichts reinschreibe in den Schlafraum?
Ja. Ist wahrscheinlich eine Endverschleife, ne? Wollen wir
mal gucken, ob das mein System auch erkennt.
Ich bin immer total gespannt, was da passiert.
Also Wild, was ist front is clear so, ne?
So, ich mache jetzt einfach mal nichts.
Mal gucken, was er dazu sagt. Oh,
du hast einen Fehler in deinem Programm, eine Endlosschleife.
True. Okay. Oder man kann auch zum Beispiel sagen,
lieber Kerl, solange du auf einem Biefer stehst,
dreh dich doch mal bitte nach Les.
Vielleicht verschwindet er dann ja, wenn du dich drehst
Das funktioniert auch nicht. Ist auch eine Endlosschleife. Das ist tatsächlich
für solche Beispiele ganz nett. Jesus Steuerungsschiff-Team. Okay,
dann lass uns doch mal das erste Rätsel angucken,
wo man das Wild tatsächlich baut.
Ich nehme diesen Quatsch jetzt mal wieder weg,
dass diese blöde Warnung da unten nicht mehr ist.
Und dann schauen wir es noch mal. Hängende Lampe,
Jungs. Ich weiß gar nicht, ob Lampyon ein echtes,
englisches Wort ist. Ich hoffe mal schon. Also,
Hintergrundgeschichte, Carol hat Geburtstag und er will eine Party zu Hause
feiern und deswegen hat er sich so zehn schöne Lampyons gekauft.
Und die liegen schon auf seinem Boden und er will die
jetzt oben an die Decke bringen. Die Decke ist so ein bisschen,
Ja, Carrie muss nicht besonders viel Miete bezahlen,
weil die Wohnung ist schon ziemlich heruntergekommen.
Vor allem die Decke ist sehr heruntergekommen. Und ja,
was hat das jetzt mit der Weile, Schleife zu tun?
Es ist nicht so ganz klar, wie viele Schritte Karre immer gehen muss.
Also man könnte ihn jetzt so programmieren, dass ich sage,
pass auf, geh in der ersten Schwalte, acht Schritte,
dann sechs, dann sieben, dann sieben, dann sechs.
Aber das wird nicht lange gut gehen. Denn
wenn ihr das Rätsel neun artet, werdet ihr sehen,
dass die Deckenverteilung dann auf einmal anders ist.
Man kann also nicht von vornherein sagen, wie weit die Decke weg ist.
Ja, also nächstes Jahr feiert er in einer anderen Wohnung
Geburtstag und dann ist die Decke da anders.
Vielleicht kann man sich das so erklären
Ich weiß auch nicht, warum Roboter Geburtstag haben, aber okay,
dann machen wir mal. Entschuldigung. Hang the lampeons.
So. Erinnert sich noch jemand von euch an Repair the Street?
Ich würde das nochmal ganz kurz zeigen von letzter Woche.
Da hatten wir ja so wunderbar dieses Problem,
zehn Löcher zu füllen, aufgeteilt in, naja,
wir kümmern uns erstmal darum, ein Loch zu füllen.
Und dann haben wir so eine lustige Repeat-Neunschleife,
wo wir dann dieses ein Loch füllen aufrufen.
Ich fände das ganz gut,
wenn wir das hier auch machen würden
Und dann haben wir das Problem nämlich schon mal ein bisschen kleiner gemacht.
Ich schreibe jetzt einfach mal was hin und ihr sagt mir
dann anschließend, ob ihr euch daran erinnern könnt,
dass ihr mir sowas ähnliches schon mal hatten.
Ich sage also zum Beispiel, ich kann das jetzt nennen,
ich nenne das zum Beispiel mal so, so, ne?
Hat hier mal so das Gefühl, wenn er das sieht,
ah ja, Déjà-vu, irgendwie sowas haben wir letzte Woche schon mal gemacht.
Einmal Handhoch, Recall the Street, ja, okay, ne?
Weil Repair the Street haben wir gesagt, try fill one hole,
more farer, try fill one hole, ne?
Und das ist hier genauso, also, was will ich machen?
Ich will neun Lampions aufhängen und immer,
wenn ich eine Lampion aufgehangen habe,
will ich einen Schritt nach vorne gehen, das ist dieses Move forward.
Und wenn ich das neunmal gemacht habe,
wird Carrie hier stehen und dann muss ich ja noch
den zehnten Lampion aufhängen
Das ist also so ein Standardmuster, was man irgendwie,
ich glaube, ihr werdet jetzt diese Woche bestimmt mindestens fünfmal hinschreiben müssen.
Okay. Ja, dann programmieren wir doch jetzt mal dieses Hang-One-Lampeon.
So, ne? Und jetzt schauen wir einfach mal
im Goal ganz in Ruhe, was er da tut.
Also wir kümmern uns jetzt quasi nur um diese eine Spalte,
den ganzen Rest ignorieren wir mal.
Was macht er denn da? Ach,
er dreht sich nach links und programmierst jetzt doch mal nach.
Das ist jetzt so ein bisschen geschummelt eigentlich, ne?
Ah, er nimmt den Bieper. Okay. Ja,
und jetzt geht er einen Schritt nach vorne. Eins,
zwei, drei, vier, fünf, sechs.
Aber ich kann jetzt nicht einfach hinschauen, Repeat 6 Moforth,
das wäre ein wenig Sinn der Übung.
Weil nächstes Jahr, wenn eine Geburtstagsfahrt, ist die Decke ja möglicherweise woanders.
Was machen wir denn jetzt
Aber wir hatten heute noch nichts. Du hattest halt noch nichts.
Eine Wild-Schleife, ne? Wild-Frontiski, hast du gesagt?
Genau. Und was wollen wir machen, solange vorne frei ist?
Nach vorne gehen, ne? Okay. Das war
ziemlich spannend. Ich stoppe jetzt mal die Musterlösung.
Wir starten mal unsere eigene Lösung. Also ich starte sie
. Machen wir mal ruhig den roten Balken an.
Hier ist er gerade zwar nicht so relevant,
aber er beruhigt mich irgendwie mit dieser roten Balken.
Okay, also wir drehen uns nach links und heben einen Liebhafen.
Jetzt haben wir unsere erste selbstgeschriebene Wild-Schleife und versuchen mal jetzt
zu verstehen, was da passiert.
Okay, also wir sind in Zeile 15,
das heißt jetzt sollen wir
diese Bedingung prüfen
Ist vor uns frei, ja, denn hier ist ja kein schwarzer Strich.
Das heißt, wir gehen jetzt in den Rumpf der Schleife rein.
Wir sollen den Schleifenrumpf ausführen, okay? Und was ist
da zu tun? Nicht besonders wie Move Forward,
dann machen wir das doch mal. Und jetzt achte mal,
wenn ich Step mache, in welcher Zeile wir dann landen.
Jetzt sind wir wieder in Zeile 15. Wir haben den Schleifenrum
komplett ausgeführt und jetzt ist das System wieder hochgesprungen,
um die Bedingungen nochmal zu rücken.
Ja, ist immer noch frei, wir gehen schon nach vorne.
Ist immer noch frei, wir gehen schon nach vorne,
ist immer noch frei, wir gehen schon nach vorne,
wir gehen jetzt wieder frei,
frei gehen schon nach vorne
Jetzt, ja, gilt die Schlafbedingungen nicht mehr.
Das heißt, wir müssen jetzt nicht den Schleifenrumpf ausführen,
sondern unterhalb des Schleifenrums weitermachen. In unserer Fall,
also in Zeile 19. Ja, und jetzt steht hier nichts Sinnvolles mehr,
wir müssen jetzt eigentlich uns darum kümmern,
was jetzt weiterhin passieren soll.
Aber das ist unsere erste selbstgeschriebene Weihstreife. Was sollen wir
denn dann als nächstes machen? Joggen, ne?
Genau, es hängt dann an der Decke und dann?
John around. Und dann? Noch eine Weihstleife. Ich
tippe die einfach nochmal hin. Das ist ganz gut,
um sich zu üben. Okay, dann steht Kerl,
ich kann jetzt vielleicht nochmal das Goal ausführen,
wo steht er dann?
Dann steht Kerl quasi hier.
Was soll er
dann tun
John Lest, ne? Und dann mussten wir eigentlich auch
schon fertig sein. Okay. Nee, sind wir nicht
fertig? Nur vor Ort, das steht ja hier schon.
Okay, wir starten nochmal unsere eigene Lösung. Genau.
Auch falls du viel Spaß gemacht hast. Ihr seht,
es wird immer wieder, wird diese Schlafbedingungen zur Schuhe ausgewertet.
Und hier zum ersten Mal wird sie zu Fouls ausgewertet und
deswegen gehen wir jetzt in Zahle 19. Zack,
jetzt sind wir aus der Schleife rausgegangen.
Okay. Was jetzt ein wichtiger Punkt ist, vielleicht,
nee, hier ist nicht gut zu erklären,
vielleicht hier
Genau, jetzt machen wir wieder die Schleife.
Hier ist also immer vor uns frei. Und hier ist
es zum ersten Mal, nicht mehr vor uns frei,
jetzt gehen wir aus der Schleife raus und wir drehen uns nach links.
Und jetzt kommen manchmal Programmieranfänger auf die Idee, Moment mal.
Dadurch, dass ich mich jetzt nach links gedreht habe,
ist jetzt ja wieder vorkehrefrei.
Hier ist ja jetzt keine Wand mehr. Muss er dann
jetzt nicht wieder in eine dieser beiden Schleifen reingehen?
Er ist jetzt ganz woanders im Programm. Also das muss man
sich einfach klar machen. Diese Schleifenbedingungen wird nur dann geprüft. Einmal,
wenn der Kontrollfluss hier so von oben kommt und ich
das erste Mal in Zeile 21 lande und immer dann,
wenn ich diesen Schleifenrum komplett ausgeführt habe und zurückspringe in Zeile 21.
Nur in diesen beiden Fällen werden Schleifenbedingungen überprüft,
sonst nicht
Okay, das ist ganz wichtig. Ich sage immer,
nur wenn die Zeile gelb ist, wird die Schleifenbedingungen überprüft.
Okay. Ja, mal gucken, funktioniert der Rest auch?
Ja, das sieht auch irgendwie ganz nett aus.
Okay. Jetzt habe ich hier zweimal so eine Wildschleife stehen,
die genau gleich aussieht. Fällt euch da irgendwas zu ein,
was wir letzte Woche gelernt haben,
wenn man zweimal denselben Code hat, der irgendwie einen Sinn hat?
Ich hatte halt den Sinn, dass ich bis zur nächsten Wand hinlaufe.
Was macht man da normalerweise mit dem duplizierten Code?
Ja. Man kann ihn auslagern, ne? Ich glaube,
auf den vorhin hieß es Move To War,
dann nenne ich ihn hier mal genauso
Und dann nehme ich jetzt einfach diese Schleife und ziehe mal hier rein.
So, hoch kam ich gerade hier hier, ne?
So, und dann kann ich das hier genauso machen.
Okay. Und das finde ich irgendwie ganz nett. Jetzt hat man hier wieder so,
auch irgendwie so eine Handvoll, so ein Code,
vielleicht auch, ja gut, je nachdem,
wie viel Fisch, ich habe sieben Finger offenbar.
Ja, sieben Zeilen Code, man hatte hier keine Schleifen,
man hat keine Ifs, man kann das einfach so von oben nach unten runterlesen. Also,
gut, Carol soll sich nach links drehen,
das kann ich mir vorstellen, dann soll er einen Diamanten aufnehmen,
das kann ich mir auch vorstellen,
dann soll er bis zur Wand laufen,
dann soll er den Deeper droppen, dann soll er sich umdrehen,
dann soll er wieder bis zur Wand laufen und dann soll er sich nach links werden.
Ich finde, das liest sich einfach so wunderbar. Ja,
ich muss mir gar keine Gedanken über Wire-Bedingungen oder irgendwas machen.
Ich kann es einfach von oben nach unten lesen und verstehen,
was Carol da tut.
Das finde ich toll
Ja, noch einmal gucken, ob das auch wirklich funktioniert.
Ja, ihr seht auch, wir sind jetzt,
haben jetzt immer zwei rote Balken,
weil ich einmal von hier kam und dann einmal von hier.
Das sieht doch alles wunderbar aus. Ja, gibt es
noch Fragen zu Henging the lampions? So Wire-Schleife, ja
. Du würdest das Repeat auch gerne an Wire ändern?
Falls die, falls er sich die Miete immer nicht mehr
leisten kann und eine kleinere Wohnung nehmen muss.
Oder eine größere, könnte man auch. Also es wäre dann quasi,
was wäre dann die Bedingung wahrscheinlich genauso, oder?
White front is clear? Ja, schauen wir,
ob es funktioniert. Müsste genauso funktionieren,
weil hier ist ja das erste Mal der Fall nicht mehr,
dass Wolf frei ist
So, funktioniert genauso. Kann man so oder so machen.
Ist egal. Mir wäre es persönlich jetzt betreuer, egal.
Ja. Sonst noch Fragen? Ich habe ja die letztlich
bis seit der Erobiene gesplant. Ah, das ist witzig.
Diese Diskussion kommt jedes Jahr, ob das mit einer Wirelschlafe
nicht irgendwie geht, dass man auf diese Zeile verzichten kann.
Bis jetzt haben wir es nicht geschafft. Wenn ihr es irgendwie schafft,
schreibt mir eine Mail und dann zeige ich das in der nächsten Vorlesung.
Ob bis jetzt haben wir es nicht geschafft,
diese komische Asymmetrie mit, ich mache es neunmal und
dann am Ende noch ein zehntes Mal irgendwie wegzukriegen.
Es sei denn, man nimmt irgendwie hier ein If,
aber das ist irgendwie ein bisschen geschummelt,
Aber ich sage niemals nicht, also es sind schon
einige interessante Lösungen von Studenten gekommen in den letzten Jahren.
Gut. Okay, dann kurz auf die Zeit, genau.
Dann wollte ich euch ein ganz besonderes Rätsel zeigen.
Das ist das Rätsel, wo ich mich das erste Mal in Kerl verliebt habe.
Das habe ich also bei YouTube gesehen und ich war so begeistert.
Also Kerl nimmt an den Olympischen Spielen teil und muss über
solche Hürden rüberschwenken. Das sind ziemlich hohe Hürden. Und
wenn er es geschafft hat und dann über die letzte Hürde
gesprungen ist, dann kriegt er auch sofort die Medaille.
Also es gibt überhaupt gar keine Gegner oder irgendwelche Mitläufer hier.
Er kann sich sofort schnappen
Aber er lässt wieder liegen. Er will jetzt
die anderen auch seine Medaille sehen. Okay,
und auch dieses Rätsel kann ich mehr als einmal laden,
wenn ihr seht, dass es jedes Mal anders ist.
Und ich hoffe mal, dass ich jetzt vielleicht mal Glück habe,
dass man sieht, naja gut, wir programmieren es erstmal so.
Der Zufall will gerade nicht so, wie ich will.
Hallo? Achso, ich muss es ja erstmal hinschreiben,
er kann ja nicht wissen, dass es so heißt.
So. Ja, vielleicht überlegen wir uns erstmal wieder,
kann man das Problem irgendwie zerhacken in Einzelteile?
Also immer dann Wenn Kette so spaltenweise durch so ein Problem durchgeht,
kann man das ja meistens eben sinnvoll in solche Spalten aufteilen.
Also könnte man vielleicht irgendwie sagen, es wäre irgendwie total cool,
wenn es einen Befehl gäbe, der dafür sorgt,
dass Keri von hier nach hier kommt.
Dass es also irgendeinen Befehl gibt, der dafür sorgt,
dass Keri über eine Hürde rüberspringt. Wir tun jetzt einfach
mal so, als würde es einen Befehl schon geben.
Ich kann ja erst mal hier unten so hinschreiben,
wir können ja einen Enflight Jump One Hurde.
Also wir nehmen jetzt mal an, dass der schon das
Richtige tut. Kann ich jetzt hier eine Repeat-Schleife nehmen,
weil es immer dieselbe Anzahl von Hürden ist oder muss ich
eine Wildschleife nehmen
Da müsste der Waldschlaf nicht mehr gehen. Bis man auf
dem Diamanten ist, und jetzt ist die Bedingung ja
nicht eine Bissbedingung, sondern eine so lange Bedingung.
Genau, solange ich also nicht auf der Medaille stehe,
was will ich machen, solange ich nicht auf der Medaille stehe?
Ja. Würde ich jetzt noch eine Wide-Bewirkung reinmachen?
Ah, du denkst schon in die Zukunft,
darauf hören wir uns, wenn der einfache Fall funktioniert.
Und das liest sich doch irgendwie auch ganz nett.
Also solange du noch nicht bei der Medaille bist, springen über eine Hürde.
Und irgendwann wirst du über so viele Hürden gesprungen sein,
dass du dann hoffentlich bei der Medaille angekommen bist.
Okay. Ja, gut, das heißt, wir fokussieren
uns jetzt auf das Problem, eine Höhle zu überschwingen.
Das heißt, wir blenden das jetzt mal völlig aus,
dass es hier mehrere Hürden gibt.
Wir wollen also nur Kerl beibringen, hey,
du musst irgendwie von hier nach hier kommen.
Das könnte man jetzt einfach so runterprogrammieren von oben,
von oben nach unten, von links nach rechts, was auch immer.
Aber das Spannende ist, dass man das eigentlich auch wieder
ganz cool aufteilen kann in mehrere Befehle. Ich könnte ja sagen,
eine Hürde zu überspringen wäre gar nicht so schwierig,
wenn Kerl irgendwie einen Befehl hätte,
der dafür sorgt, dass er die Hürde hochläuft,
also dass er quasi so mumm und dann steht er hier und guckt nach außen
Und wenn es einen Befehl gäbe, der irgendwie dafür sorgt,
wenn er hier steht, dass er die Hürde dann wieder runterläuft,
dann wäre es eigentlich ganz einfach,
das Problem zu lösen, oder?
Ich muss ja nur die Hürde hoch, muss einen Schritt
nach vorne gehen und muss dann die Hürde wieder runter.
Das schreibe ich jetzt einfach mal so hin und tue so,
als würde es diese Befehle geben. Also ich sage,
um eine Hürde zu überspringen, musst du erstmal die Hürde erklimmen.
Erklimme die Hürde. Und ich erwarte dann,
wenn es diesen Befehl irgendwann später mal leben wird,
dass du dann hier stehst und nach Osten guckst.
Dann kannst du einfach einen Schritt nach vorne gehen,
dann würdest du hier stehen. Und dann musst du
die Hürde ja wieder runtergehen. Das ist so,
hast du eine Stelle, da werden programmieren,
sagen wir mal extrem unruhig,
weil sie sagen,
aber diese Befehle gibt es doch
gar nicht
Kannst du dir doch nicht einfach herbeiwünschen.
Doch, kann ich. Ich wünsche sie mir einfach herbei.
Ich habe ja ungefähr definiert, was sie tun sollen.
Und dann muss ich sie natürlich auch programmieren. Das ist klar
. Gut. Jetzt kommen wir mal zu dem Untersmilch.
Ich glaube, weiter groß aufteilen kann man die nicht.
Also wie kann ich Carrie sagen, er soll von hier,
nach hier komme, ich führe noch mal kurz das Goal durch,
dass sie die Schritte wirklich seht, was er da macht?
Aha. Aha. Okay, also was muss er tun?
Ich kann dich leider akustisch gar nicht verstehen
Rechts von Carrie ist frei. Also wir sind ja quasi
im Ausgangszustand. Also das ist ja der Ausgangszustand, ne?
Was ist das Erste, was Carrie da machen muss?
Er muss sich umdrehen, richtig. Wir müssen uns nach
links drehen. Das macht er im Go ja auch,
damit wir quasi nach oben gucken. So, und jetzt
wird es spannend. Ich kann jetzt ja nicht einfach sagen,
geh mal zwei Stritte nach vorne, oder?
Wenn mal jemand durfte, glaube ich, lange nichts.
Ach so. Ja, egal, sag einfach weiter.
Du sagst, Wile Not, right is clear.
Das heißt, auf Deutsch, solange rechts eine Wand spürbar ist,
ja? Das ist in diesem Fall ja der Fall.
Was soll er dann machen
Solange rechts eine Wand ist, was soll er da tun?
UV. Richtig. Der wird also hier feststellen,
oh, da ist ja eine Wand,
dann gehe ich mal einen Schritt nach vorne,
dann würde er das hier wieder feststellen.
Und hier würde er feststellen, oh, da ist da
keine Wand mehr, dann kann ich aus der Schleife rausgehen.
Was muss ich dann als nächstes tun? John Wright,
damit wir in der richtigen Drehung sind, so wie ich
mir das vorgestellt hatte. Ich hatte mir ja vorgestellt,
dass er da oben ist und nach Osten guckt.
Gut, dann würden wir dieses Moforward ausführen.
Und jetzt müssen wir die Hürde wieder runtergehen. Also,
die ist schon geboren haben. Was ist das Erste,
was wir tun müssen, um die Hürde runterzugehen?
Irgendjemand mal
Sehr schön. Habe ich mich irgendwo vertippt?
Oh, was, oh. Descent-Hörde, Dankeschön.
Ja, was muss da als erstes gemacht werden?
Turn Wright. Genau. Dann würde er quasi so stehen
. Und was muss er dann machen, um von hier
nach hier unten zu kommen?
Ich weiß ja nicht, wie viele Schritte es sind.
Ja. Hast du dich gemeldet? While from this clear
more forward. Hat jemand ein Déjà-vu?
Wile front is clear more forward
Wir können nicht vergessen, dass das Verbuch... Genau,
das ist der Befehl, waren wir denn?
Irgendwie sehe ich ihn gerade nicht. Er wird
hier aufrufen, ah, hier ist er, danke.
Den Befehl hatten wir schon mal. Das heißt,
den kann ich ja auch einfach direkt hinschreiben.
Ich kann einfach sagen, Oktoberer. Voll. Man dreht sich
jetzt einfach rein und trägt über die Kröte zu gehen.
Sicher? Okay. Es ist halt immer eine Geschmacksfrage,
wo man dieses Move-Wort eintut. Also soll das,
man könnte jetzt argumentieren, das soll das jetzt am Ende
von einem Assynth passieren oder am Anfang vom Descent.
Und ich kann mich da nie entscheiden.
Deswegen nehme ich es raus und tue es in keinen von
den beiden
Okay. Dann stehen wir quasi hier. Und dann?
Turn left, ne? Okay. Das wäre spannend.
Sind wir dann jetzt fertig? Haben wir jetzt unsere Lösung gebaut?
Hm. Dann starten wir das doch mal. Also haben wir
die Medaille schon gefunden? Leider nicht. Na gut,
dann müssen wir halt mal über die erste Hürde rüberspringen.
Mal gucken, ob das funktioniert.
Also was bedeutet es über eine Hürde darüber zu springen?
Das bedeutet, als erstes müssen wir hoch, die Hürde.
Gut, gehen wir nach links. Rechts ist eine Wand
, also müssen wir einen Schritt gehen.
Rechts ist eine Wand, also müssen wir einen Schritt gehen.
Ah, keine Wand mehr. Wir können aufhören. Wir
sind oben. Dann drehen wir uns mal nach rechts.
Gut, haben wir das Essent also geschafft?
Dann gehen wir mal über die Hürde rüber
Jetzt müssen wir runtergehen. Okay, was bedeutet das runterzugehen
? Das bedeutet, erst mal nach rechts drehen,
dann bis zur Wand laufen, da will ich jetzt nicht reinspringen,
das glauben wir mal, dass das funktioniert.
Zack. Und dann müssen wir uns nach links drehen.
Ja, dann haben wir das Descent-Turtle abgearbeitet und dadurch haben
wir auch das Jump One heute komplett abgearbeitet. Gut,
jetzt sind wir so über die erste Hürde rüber und jetzt
prüfen wir wieder, ob wir auf einem Pieper sind.
Jetzt will ich nicht schon wieder das sehen,
dass er über die Hürde, ich kann jetzt einfach mal Step over sagen.
Achtung, sieht man zu, wie schnell er da ist,
worshing. Zack, zack, zack. Zack. Zack
. Und jetzt
Ja, sind wir fertig, ne? Wir sind auf dem Bieper und das war's.
Ja, das finde ich also irgendwie so spannend.
Man könnte, man könnte das auch so programmieren,
dass man einen riesigen Monster-Buffet hat mit ganz vielen Weile-Schleifen und was weiß ich,
wo man dann nicht mehr so einfach durchstreckt.
Oder man macht es eben so,
dass man das Problem immer in kleinere Probleme zerlegt,
dass man sagt, ich baue mir einen Befehl,
der über eine Hürde springt und selbst der ist so kompliziert,
dass mir nochmal zwei weitere hilft, wie Philipp Bauer,
einer, der die Hürde hochgeht und einer,
der die Hürde runtergeht.
Und das geht eben wieder in dieses, macht eure Programme
nicht zu kompliziert, versucht es in logische Einzelteile aufzuteilen.
Dann könnt ihr eigentlich immer ganz gut die Übersicht behalten.
Jo, habt ihr dazu
noch Fragen
Ja. Eine prinzipielle Frage, wie läuft denn dieser speziellen Feinde,
ist das Politverson durch Grenz, der seist Theorie,
das könnte bei jedem heilen Stern füllen,
durch den Notfriedstärken, weil ein Spenziel ist Bedingungen ersetzt.
Richtig. Ich könnte jede Wahlstrafe ersetzen durch Repeat
ungefähr 100 oder so und dann immer ein iF einbauen.
Das würde theoretisch gehen. Dann hättest du oft so am Ende
einer Repeat-Schlafe ganz viel Gezucke, wo er nichts macht,
weil er noch hundertmal das iF prüft,
aber es würde theoretisch gehen, ja.
Okay. Ja? Dürfte man da auch schon,
sie war dann auch mit dem nächsten Aufgabepunkt, sozusagen,
die Lieder so anstrengen, wobei theoretisch ja Dann gibt es Leute,
die denken, was nicht.
Obst. Nicht verraten. Das ist sehr schön,
dass du das schon gesehen hast. Das ist so ein
Moment, den will ich niemandem wegspoilern, diese Erkenntnis.
Okay, ich hoffe, man hat es nicht gehört,
was er gesagt hat. Gut, jetzt will ich
nochmal sehen, dass wir irgendwo Glück haben.
Manchmal gibt es nämlich auch Hürden der Höhe Null.
Ah, ich hätte zum Beispiel. Wollen wir kurz gucken,
was unsere Lösung macht, wenn eine Hürde die Höhe Null hat?
Anerst habe ich das Kohl gestartet,
das wollte ich nicht
So, jetzt ist es, glaube ich, spannend.
Genau. Also ich will jetzt diese Hürde der Höhe null,
will ich jetzt, da will ich rüberspringen.
Okay, dann muss ich sie erstmal hochgehen. Alles klar,
ich drehe mich nach links. Dann prüfe ich mal,
ist rechts in der Wand, oh,
da ist ja gar keiner,
dann kann ich ja gleich wieder aus der Wahlstrafe rausgehen und kann mich nach rechts drehen.
Na gut, jetzt bin ich also oben auf der Hürde.
Dann gehe ich jetzt mal den Schritt über die Hürde
rüber und jetzt muss ich ja die Hürde wieder runtergehen.
Okay, was heißt jetzt die Hürde runterzugehen? Ich muss
mich gern süden drehen, muss bis zur Wand laufen.
Da sind wir jetzt schon, die Wahlstrafe ist ziemlich kurz
und dann muss ich mich nach links drehen.
Das funktioniert also, aber es sieht irgendwie blöd aus.
Ich mache das mal kurz
ein bisschen schneller
Also wenn jemand ja so guckt, was er da macht,
ja, also da würde ich ihm eigentlich am liebsten
keine Medaille für geben für dieses komische Verhalten.
Was macht denn da die Musterlösung, was die Musterlösung macht?
Ah, das sieht irgendwie netter aus, oder?
Der merkt also direkt, dass da gar keine Hürde ist,
da muss ich mich auch nicht so blöd durch die Gegend drehen.
Okay, jetzt, ach, das finde ich ganz witzig,
dass das Rätsel gerade so ist, das gefällt mir ganz gut.
Jetzt hatte irgendjemand wohl einen Vorschlag,
er würde am liebsten irgendwo was einbauen, hey,
geh nochmal bis zur nächsten Wand.
Warst du das
Ich würde machen. Ja, ich habe immer Wandel angelassen.
Gut. Ich weiß nicht,
ich will jetzt niemandem Worte in den Mund legen,
aber es gibt manchmal Studenten, die folgendes tun.
Die sagen einfach, wenn ich über eine Hürde rübergesprungen bin,
gehe ich einfach mal zur nächsten Hürde.
Ich zeige euch mal ganz kurz, was dann passiert.
Also achtet mal darauf, dass das hier jetzt eigentlich
ganz nett aussieht, was er hier macht.
Ja, das war doch genauso, wie wir es haben wollen.
Aber wenn wir jetzt über die letzte Hürde rüberspringen und sagen,
geh doch mal nach jeder Hürde,
über die du gesprungen bist,
bis zur nächsten Wand.
Tiere. Also diese Lösung wird nicht funktionieren.
Das finde ich witzig, dass dieser Sonderfall jetzt gerade war.
Also dass nach der letzten Hürde noch eine Hürde der Höhe 0 kommt.
Sehr schön. Wo war das jetzt hier? Also das
würde ich nicht empfehlen. Schaut jemand eine andere Idee,
wie man das lösen könnte? Ja. Ja.
Die ganzen. Noch weiteren Gottes kann man zumindest sagen,
dass wenn wir Kann der Wand stehen gehen,
wir erstmal bis zum nächsten Mal.
Ah, okay. Ich versuche das jetzt mal gleich im Kopf umzuformulieren,
also quasi wenn, nee, Entschuldigung, wenn vor uns frei ist,
brauchen wir nur einen Schritt nach vorne gehen.
Ansonsten müssen wir halt diesen komplizierten Kladderadatsche machen.
War das so ungefähr deine Intention? Ja, das sieht doch
gar nicht schlecht aus. Also es gibt zwei Fälle.
Also quasi, wenn die Hürde die Höhe null hat,
dann brauchst du nur einen Schritt nach vorne gehen.
Im anderen Fall musst du sie halt wirklich überspringen.
Schau mal kurz, ob er das jetzt macht,
aber das sieht ziemlich gut aus.
Wunderbar. Und trotzdem müsste er am Ende bei einem Diamanten
stehen bleiben
Jo. Sehr schön, ne? Auch hier ist es eben ganz gut,
dass man sich wirklich dann nur darauf konzentriert hat,
dass IF an die Stelle einzubauen,
wo er über eine Hürde springt, anstatt jetzt wieder zu sagen,
na, ich sorge mal dafür,
dass er gleich über mehrere Spalten rüberläuft oder so und dann,
ach Gott, jetzt ist er über die Medaille rübergelaufen.
Das gefällt mir ganz gut. Okay,
dann würde ich jetzt eigentlich gerne zum nächsten Thema,
sondern jemand hat noch eine kleine, klitzekleine Frage, ja.
Ich habe gerade gemacht, dass die Klammer mit den Texten stehen.
Achso, ihr könnt die Alttaste gedrückt halten und dann die Kause tasten.
Dadurch kann man eine Codezeile durch die Gegend schieben.
Das geht leider nur mit einer Zeile gleichzeitig
Genau. Und wenn das so komisch eingerückt ist,
das hattet ihr vielleicht eben auch gesehen,
das sah irgendwie blöd aus. Könnt ihr einfach sagen,
Steuerung, Shift, E, jedenfalls automatisch hübsch eingerückt,
das steht aber auch auf diesem PDF im Komsum.
Gut, dann, ja. Jetzt falls Geld erwartet,
so weit hinten drüber, nicht verdammt, weil ich in der Führung sage.
Was ist mit dem Zufallsgenerator? Zufallsgenerator, wenn der 2,
der hübsche, der wird, sag ich mal so,
2. Du fragst, ob das möglich sein kann,
dass er 2-0 Hürden hintereinander kommen?
Ja, das kann theoretisch passieren. Also jede Hürde hat
unabhängig von allen anderen Hürden eine Höhe zwischen 0 und 8
oder so
Könnten auch zwei, drei oder fünf Millionen kommen.
Das ist ja mal eine Stunde nach vorne. Das würde ich nicht tun,
weil dann läufst du genau wieder in dieses Problem rein,
dass du hier über diese Medaille rüberläufst.
Du brauchst es nicht umgehen. Es funktioniert schon wunderbar,
weil dadurch, dass du nur einen Schritt gehst,
überspringst du die Hürde der Höhe null und dann landest du
ja anschließend wieder in dieser Wirestreife und überspringst dann die nächste.
Genau. Ja. Okay, wir haben nur noch
35 Minuten. Ich glaube, ich muss jetzt mal
ein bisschen mich spuken
Okay. Das war so die bedingte Schleife und werden sie gleich auch weiter einsetzen.
Aber jetzt kommen wir erst mal zu einem anderen, leicht anderen Thema.
Ich möchte mit euch über Zahlen reden. Zahlen habt ihr ja
schon in der Schule, in der Grundschule hoffentlich kennengelernt.
Irgendwann wart ihr soweit, dass ihr fünfstellige Zahlen aussprechen konntet.
Also zum Beispiel diese Zahl heißt 20.597,
das ist 20.598. 20.599 und so weiter. Okay. Ja,
und seit jetzt dem Marsystem funktioniert so, ich versuche mal kurz,
habe ich alle Ziffern auf dieser Folge, ich gucke mal was.
Also dass hier diese lustige, dieser Kreis,
dieser langgezogene Kreis ist, ist die kleinste Ziffer,
die es gibt
Die größte Ziffer, die es gibt,
ist dieses Symbol, was wir neun nennen,
was haben wir dazwischen, da haben wir die eins,
die zwei, die drei, die vier,
die fünf, die sechs, die sieben.
Ah, und die acht. Also wir haben tatsächlich alle
zehn verschiedene Ziffern auf dieser Folie, kann man hier entdecken.
Also zehn verschiedene Ziffern von 0 bis 9. Und es ist
jetzt relevant, an welcher Stelle ich die schreibe.
Also wenn ich so eine Zipperhand nach ganz rechts schreibe in
einer Zahl, dann ist sie einen Wert.
Also zum Beispiel diese sieben ist siebenmal einen Wert.
Während zum Beispiel diese neun ist schon neunmal zehn wert und
diese fünf ist schon fünfmal 100 wert.
Und diese 0 ist 0 mal 1000 wert und diese zwei ist
zweimal 10.000 wert. Also je weiter links so eine,
zur verstehen,
desto mehr ist sie wert
Okay. Dann habe ich jetzt mal ganz bewusst hier Zahlen
untereinander geschrieben, die auch tatsächlich aufeinander folgen.
Natürliche Zahlen haben ja immer Nachfolger. Und das ist ganz witzig,
dass die längere Zahlen sehen da ziemlich langweilig aus,
weil die meisten Ziffern sind dieselben, nur die letzte Ebene.
Also ich ersetze im Prinzip einfach nur die letzte Ziffer durch ihren Nachfolger.
Also aus der 7 mache ich eine 8 und schon habe
ich insgesamt den Nachfolger von 20.000 von 197 bestimmt.
Und nach 20.598 kommt eben 99. Und jetzt haben wir
einen interessanten Sonderfall. Man kann nicht sagen,
ich will die Ziffern nach der 9 haben,
weil die 9 ist die größte Ziffer, die es gibt.
Man macht dann folgendes, man setzt sie wieder auf Null
Dadurch habe ich jetzt quasi neun zu wenig.
Also wenn ich jetzt einfach aufhören würde,
hätte ich 20.590. Das wäre sicherlich nicht so sinnvoll.
Und deswegen muss ich jetzt die nächste Ziffer auch erhöhen.
Geht mal wieder nicht. Ich habe die Zahl so geschickt
gewählt, dass es hier gleich zweimal schief geht.
Muss ich auch auf Null zurücksetzen. Und jetzt hier funktioniert es,
aber hier kann ich die fünf durch eine Sechs ersetzen.
Ich habe also hier quasi neun abgezogen. Hier habe ich
nochmal 90 abgezogen. Habe ich da so insgesamt 99 abgezogen.
Aber hier habe ich jetzt 100 drauf addiert. Und dadurch,
dass ich insgesamt 99 abziehe und dann 100 drauf,
du willst es insgesamt einer mehr.
Das ist euch hoffentlich klar, dass nach der 599
die 600 kommt
Gut, so funktioniert es also,
wenn man den Nachfolger bestimmen will, unser Zahlensystem.
Und manchmal will man nicht einfach nur die nächste Zahl wissen,
sondern vielleicht mehrere Zahlen addieren.
Dafür haben wir uns auch irgendwann mal ein schlaues System ausgedacht.
Man nennt das schriftliche Addition. Man schreibt also,
die ziffern jeweils einfach paarweise untereinander und sagt,
5 plus 8 ist 3, mit Übertrag.
Vielleicht erinnert ihr das noch, wenn ihr mal schriftlich addiert habt.
1 und 2 und 1 ist 4, 4 und 8
ist 2 mit Übertrag. Also eigentlich ist es eine 12,
wenn ihr das hier mal so eine Verbindung zwischen,
seht ihr vielleicht, dass es eine 12 ist.
Hier seht ihr vielleicht, dass es eine 13 ist.
Aber wenn es eben mehrstellige Summen sind,
dann muss man immer die weiteren Ziffern in die
nächste Spalte schieben
Okay, 3 und 7 ist 0 mit Übertragung,
der Übertrag wird dann nicht einfach übernommen.
Gibt es Fragen zur Addition im Dezimalsystem? Ich weiß nicht
, wann ihr das das letzte Mal gemacht habt.
Mittlerweile gibt es dafür ja wahrscheinlich Apps oder man gibt es
einfach in Google an oder so.
Okay. Ja, also Nachfolgebestimmung und Addition im Dezimalsystem.
Dann nochmal ganz kurz das Dezimalsystem ist also nicht vom Himmel gefallen. Ja,
das gibt es erst, seit es Menschen gibt,
weil Menschen eben zehn Finger haben, hat man einfach irgendwann mal durchnummeriert,
seine Finger, kann man wunderbar abzählen.
Eins, zwei, drei für fünf, sechs,
sieben, acht, neun, zehn.
Und wenn man jetzt als Informatiker lange genug auf diese Folie
raufguckt, kriegt man irgendwie Hautausschlag.
Nämlich bei dieser zehn
Ich habe das mal letztes Jahr versucht abzufangen, wo Leute das wissen,
also wusste leider keiner, das, Entschuldigung, eine Zwei.
Na, wir sind ja noch im DC-Mal-System. Wo war ich
stehen geblieben? Genau. Also das Finger und Ziffer,
dasselbe Wort im Englischen sind, nämlich Digit.
Also wäre es eigentlich schön, wenn an jedem Finger
eine Ziffer steht und hier stehen jetzt blöderweise zwei.
Wenn man da lange genug als Informatiker ausschaut, sagt man sich,
naja gut, warum fangen wir eigentlich bei eins an zu ziehen?
Man könnte ja genauso gut von null aus anfangen zu zählen.
Ja, dann würde ich die anders beschriften. Dann würde ich sagen,
null, eins, zwei, drei, vier,
fünf, sechs, sieben, acht, neun.
Da hätte ich genau eine Ziffer
Ich persönlich fände das schöner,
aber Menschen finden es irgendwie natürlicher,
neun von ihren Fingern mit einer Ziffer zu beschriften und den Zehnten mit so einem merkwürdigen Monster,
wo das irgendwie zweistellig ist und hier so eine komische Ziffer,
die vorher noch gar nicht vorkam.
Okay, es liegt halt daran, dass die null
deutlich später erfunden wurde als die anderen Ziffern.
Okay, aber stellt euch doch einfach mal vor,
es gäbe nur die null und die Eins und alle anderen Ziffern gäbe es gar nicht.
Wie wurde dann so ein Zahlensystem funktionieren?
Also Zweien gibt es nicht und alles darüber auch nicht.
Dann würde das so aussehen. Also wir haben hier die Einerziffern,
die Zweier, die Vierer, die Achter,
die 16er, 32,
64,
128 und
so weiter
Und man kann jetzt ja auch nur noch Null und Einsehen reinschreiben.
Also, das hier ist zum Beispiel die Zahl Null,
also die DC Male 0, weil die ja alles
auf Null gesetzt ist, das ist die Eins.
Das ist die Zwei, weil ich hier einen Zweier habe.
Das ist die Drei, weil ich einen Zweier und einen einen so habe.
Das ist die Vier, weil ich einen Vierer habe.
Und wenn jetzt zum Beispiel hier eine Eins und hier eine Eins und Hirne einstehen würde,
wäre es mit Sieben, weil eins und zwei und vier ist ja sieben.
Okay. Gut. Und hier ist es genauso,
wenn man zum Beispiel versucht, einen Ziffer zu erhöhen,
ich versuche, die einzuhören, geht nicht,
es gibt ja keine Zwei, dann mache ich daraus mal eine Null,
dann versuche ich diese eins zu erhöhen, geht nicht,
es gibt ja keine zwei, mache ich daraus eine Null,
versuche ich die Null zu erhöhen.
Ah, das geht, dann mache ich daraus doch mal
eine Eins
Das ist genau der gleiche Fall wie im DC-malsystem, wird er 99.
Nur, dass hier eben schon deutlich für die 99 auftaucht. Okay,
und die schriftliche Addition ist ähnlich,
also 0 und 0 ist 0, 0 und 1 ist 1,
1 und 1 würde man jetzt als Mensch sagen,
sind zwei, aber es gibt ja keine zwei.
Wie sieht die zwei im Minärsystem aus? Die sieht ja
so aus. Das ist die zwei. Also muss ich
diese Null hier unten reinschreiben und diese eins als Übertrag in die nächste Spalte.
1 und 1 und 1 würden wir sagen,
ist drei, aber es gibt ja keine drei.
Wie sieht die drei aus im Minärsystem? Eine eins bei
der einen Stelle, eine eins bei der zwei Stelle.
Dann schreibe ich nochmal diese eins hierhin und diese eins schreibe
ich hier hin. Ja, 0 und 0 und 1
ist eins
Also ein viel einfacheres Zahlensystem eigentlich als unseres. Aber es kommt uns eben
so komisch vor, dass es jetzt weniger Ziffern gibt.
Piept das irgendwie, dann bilde ich mir das ein.
Gibt es hierzu noch Fragen? Nö, keine Fragen.
Doch, ja. Wenn man jetzt 1, 2,
3. Mehrere Überträge auf einmal.
Naja, also theoretisch kann er eine beliebig lange Zahl rausmachen.
Wenn du irgendwie so zehn Zahlen addierst,
könnten da dreistellige, vierstellige Zahlen rauskommen,
dann musst du die alle auf die weiteren Stellen verteilen.
Das ist genau wie im Dationalsystem,
da kommt es nicht so häufig vor.
Ich glaube, ich habe noch ein bisschen Zeit,
ja, wir haben jetzt noch eine halbe Stunde.
Ich habe euch das jetzt an ein paar konkreten Beispielen gezeigt,
aber ich würde das ganz gerne noch mal ein bisschen spielerisch erkunden.
Hatte ich das nicht? Ah ja, genau.
Ich hatte mal so ein kleines Spiel gebaut,
damit Studenten so ein bisschen mit diesem Zahnsystem rumspielen können.
Also man hat hier acht Stellen und ich kann hier irgendwo
so Bits setzen und je nachdem, welche Bits gesetzt sind,
entsteht da unten dann eben die entsprechende Zahl.
Also vielleicht ist mal ein einfacher Fall, wenn ich irgendwie
nur die 16 anklicke, dann ist es die 16,
wenn ich nur die 4 anklicke, ist es die 4.
Und wenn ich jetzt die 4 und die 16 anklicke,
ist es eben die
Also einfach die Stelligkeiten werden zusammen addiert, unter denen da
eins steht. So funktioniert das BNR-System. Jo. Okay
. Und jetzt steht hier oben quasi eine Art Herausforderung.
Das Programm fordert euch jetzt heraus, schafft ihr es,
die 138 zu generieren. Wie würde man denn da jetzt
systematisch angehen? Würde man erst mal so von rechts aus
losgehen oder würde man von links aus losgehen,
sich zu überlegen, welche Bits man da jetzt anklingen muss?
Du? 338. Typ, du bist ein Business-Hotels,
der da ist, das überraschend war sich,
also um danach, wenn es 20 geil ist.
Okay, also du willst links anfangen mit Top 128.
Das finde ich ganz gut, das würde ich einmal demonstrieren.
Also, wenn ich mit der 128 anfange,
Kann ich danach ja nur noch höher werden und das ist in Ordnung,
weil die 138 ist ja höher.
Wenn ich jetzt nicht mit der 128 angefangen hätte,
sondern zum Beispiel hier erst. Und ich hätte alle Bits angeklickt,
dann wäre ich immer noch unter der 128 geblieben.
Ich muss mich also entscheiden, ich brauche sie auf jeden Fall,
sonst werde ich niemals bis zu 128 kommen.
Okay. Und dann? Glaube ich demnächst,
wie der Rest ist das C. Der Rest ist 10. Passt
nur auf die Achtung, die zwei Fragen.
Sehr schön. Will noch jemand mit mir spielen? 122,
hätte ich mal Lust, das mit mir zu spielen?
Handhof, wenn jemand Lust hat.
Du hast Lust
Die 64, richtig, weil sonst wären wir ja schon zu hoch.
32 brauchen wir auch, ja. Brauchen wir auch, ja.
Sehr schön. Das steht im Kommensee, das Tool.
Damit könnt ihr selber auch rumspielen. Super. Okay,
dann wollte ich mal wieder zu Carol zurückgehen.
Wir haben jetzt also verstanden, wie das System funktioniert.
Und das kann man jetzt eben auch in Carols Welt einsetzen.
Wir sagen einfach Folgendes. Wir nehmen so eine
ganze Zeile in Carols Welt und tun mal so,
als wäre das
eine Binärzahl
Wir nehmen einfach die einzelnen Spalten und sagen,
das ist die eine Spalte, das ist die Zweierspalte,
das ist die Viererspalte, das ist die Achterspalte,
1632, 64, 128.
Und an den Stellen, wo ein Diamant liegt, ist eben eine Eins sozusagen.
Also Einsen werden durch Diamanten symbolisiert und Nullen durch das Fehlen eines Diamanten.
Okay, und da habe ich immer die ersten zehn Zahlen hingeschrieben,
die es so gibt. Also ihr seht, ja,
die Null hat eben gar keine Diamanten,
die Eins hat nur an der einen Stelle ein,
die Zwei hatten wir an der Zweierstelle ein,
die Vier nur an der Viererstelle ein,
die Acht hat nur an der achter Stelle ein.
Und alle anderen ergeben sich eben durch Kombination,
eins und 2 und 4, 7, 2 und 4,
6, 1 und 4 ist 5,
1 und 2 ist 3.
Also das ist das ganz normale Beniersystem,
wo eben mit Diamanten statt
Okay, dann kann man damit jetzt irgendwelche sinnvollen, coolen Rätsel lösen.
Wir haben noch 25 Minuten, das müsste eigentlich locker machbar sein.
Ja, genau. Jetzt hoffe ich mal,
dass ich so ein bisschen Glück habe mit dem Zufallszahlengenerator.
Nee, ich will, dass rechts mal so ein paar Diamanten erscheinen.
Ich will so eine schöne, lange Kette ab.
Ja, ja, das ist ganz nett. Okay,
also wir tun jetzt mal so, als wäre das eine Binärzahl.
Welche ist denn das? Also hier ist eine Eins,
hier ist eine Eins, hier ist eine Null,
hier ist wieder eine Eins.
Wir können ja einfach mal schummeln.
Ach,
jemand hat was
Zwei muss sie, ach so, du hast quasi hier und dann
einen abgezogen und dann die vier abgezogen, ah, okay, 123.
Wir können uns noch mal gegenchecken. Also,
hier ist eine Eins, hier ist eine Eins,
hier ist eine Eins. Tatsächlich, 123, sehr gut.
Okay. Und diese 123, was passiert jetzt mit der?
Ich weiß nicht, ob ihr das englische Wort Increment kennt.
Was macht Carrie jetzt mit dieser Zahl? Er nimmt den Diamanten weg,
die nimmt er auch weg, haben wir schon drei weniger.
Ah, und da legt er jetzt einen hin.
Also, er hat drei abgezogen und vier addiert.
Das ist jetzt 124. Okay, machen wir vielleicht noch mal
ein anderes Beispiel. Ja, ne, vielleicht mal das,
weil das so einfach ist
Ciao, hat er einfach nur einen Diamanten abgelegt.
Also vorher stand an der einen Stelle nichts, dann hat er
dann Diamanten ablegt, dann war die Zahl ein Mehrwert.
Okay, haben wir vielleicht noch mal ein interessantes Beispiel mit
mehreren Diamanten. Ah, hier ist zum Beispiel,
machen wir hier noch mal, was ihr hier macht.
Okay, einen abgezogen, noch mal zwei abgezogen,
insgesamt drei, abgezogen. Und vier rauf und ihr,
das ist wieder einen mehr. Ihr seht also,
der Sinn dieses Programms ist jetzt eine Zahl, um einen zu erhöhen.
Warte mal kurz, auf der Folie demonstriert. Hier zum Beispiel,
wenn er versucht, aus dieser 3,04 zu machen,
dann muss er diesen Diamanten aufnehmen,
diesen Diamanten aufnehmen und hier, wo noch kein Diamant ist,
muss er dann
einen ablegen
Und bleibt, wenn ihr euch das verwirrt wegen der Einsen,
zeige ich es euch noch mal,
wir bei den Neuen, also stellt euch vor,
Neuen wären Diamanten, ihr müsst diesen Diamanten aufnehmen,
dann ist da keiner mehr, ihr müsst diesen Diamanten aufnehmen,
da ist ja keiner mehr.
Ja, und hier, hier funktioniert jetzt Analogie jetzt nicht mehr.
Okay. Gut. Ja, ist das irgendwie klar,
was Caro da macht? Also er schaut sich an,
ich muss diese ganze Latte von Diamanten wegnehmen,
weil das sind ja alles schon die höchsten Ziffern,
die es gibt, die nehme ich alle weg.
Und da muss ich an der ersten Stelle, wo noch
kein Diamant ist, da muss ich jetzt einen hinlegen.
Und dadurch erhöht sich die Zahlung ein.
Gut. Dann programmieren wir das doch mal zusammen
So, vielleicht nochmal ein spannenderes Beispiel. Gut,
ich kann dir einfach schummeln, dadurch habe ich das ja irgendwann mal eingebaut.
Ich schummel jetzt einfach und klicke da mal einen Diamanten hin.
Also nochmal als Wiederholung. Alle Diamanten,
die dann in einer Reihe aufliegen,
muss ich aufnehmen und wenn ich merke, oh,
da ist da gar keiner mehr,
dann muss ich einen ablegen und das ist alles.
Hat jemand Vorschläge, wie das funktioniert? Da habe ich
mich und der Flamme noch nicht so viel gesagt hat.
Immer dieselben Leute.
Ato zum Beispiel
Ah. Sehr schön. Das probieren wir doch mal.
Also ich starte das wieder, dann schummel ich wieder.
Okay. Gut, wir prüfen auf, wir auf dem Diamanten stehen,
ich habe ja gerade dahin geschummelt, ich hoffe, das funktioniert.
Ja, wir stehen auf dem Diamant, dann nehmen wir
ihn auf. Oh. Oh, es fehlt irgendwas,
oder? Sieht jemand, dass ich was vergessen habe?
Nur Forward, richtig. Gut. Also nochmal von vorne,
ich schummel wieder den Diamanten dahin. Also da ist ein Diamant,
ich nehme ihn auf, also ich habe jetzt die Zahl
um einen erniedrigt und gehe einen Schritt nach vorne.
Da liegt immer noch ein Diamant, ich nehme ihn auf,
jetzt habe ich einen weggenommen und dann nochmal zwei,
sind schon drei,
die ich subtrahiert habe
Okay, der Vierer-Diamant liegt da auch, den muss ich auch wegnehmen.
Jetzt habe ich schon sieben subtrahiert. Okay. Ah,
an der achter Stelle liegt keiner, dann droppe ich da
auch mal ein. Ich habe also sieben abgezogen,
acht draufgetan und dadurch ist es insgesamt einer mehr.
Ja. Vordersbrei ist. Das ist eine spannende Frage.
Also kann uns irgendwie passieren, dass Kerne hier mal irgendwann
in die Wand reinlaufen wird? Zum Glück in unseren Fällen nicht,
weil ich habe das immer beschränkt auf bis zu acht Diamanten.
Die Welt hat aber zehn, ich war zu faul,
die Wand hier kleiner zu designen.
Und dadurch haben wir das Problem an dieser Stelle nicht,
dass da irgendwie die Wand dort reinzulaufen.
Okay, aber halt das mal im Hinterkopf
Bei der Addition ist es kein Problem, aber möglicherweise,
möglicherweise jetzt bei dem nächsten Rätsel.
Gibt es noch Fragen zum Increment? Also ich nehme nacheinander
zwei Potenzen weg. Erst ein, dann zwei,
dann vier, dann habe ich irgendwie sieben abgetogen,
dann tue ich acht drauf, dann ist es insgesamt einer mehr,
ist das irgendwie klar, ja.
Sehr gute Frage. Funktioniert das auch,
wenn am Anfang nicht auf einem Pieper steht?
Das ist ja zum Beispiel hier der Fall. Ich hatte
den aber bis jetzt hingeschummelt. Was würden wir erwarten?
Also wenn an der einen Stelle kein Diamant ist,
dann sollte er eigentlich einfach nur einen ablegen.
Es sollte nicht versuchen, welche aufzunehmen.
Schauen wir mal, was passiert? Also ich frage,
stehe ich auf dem Pieper
Nö. Das heißt, ich gehe überhaupt nicht in die Schleife rein.
Sie wird sofort übersprungen und dann droppe ich ein.
Also die Weihlschleife kann auch unter Umständen null Mal ausgeführt werden.
Ja, funktioniert also. Okay. Keine weiteren Fragen.
Gehen wir mal zum nächsten Rätsel. Ah, das gefällt
mir. Schaut doch mal, ob ihr versteht,
was ihr hier macht. Das ist interessant, oder?
Also er hat einen hinzugefügt. Zwei hinzugefügt,
vier hinzugefügt und dann acht abgezogen
Wenn es hilft, in deiner Hölle die größte Habe,
was wir alle bei den Kampfen auf das höchste Setzen treffen können.
Genau. Wir wollen jetzt quasi wieder von der 600 zu 5099
zurück, genau. Also was muss ich dann dahin schreiben?
Wirel? Weil doch die... Ich glaube,
wir gucken uns immer die Stelle an, wo wir gerade sind, oder?
Also why not on beeper? Ja. Was soll ich
tun, solange ich nicht auf dem Bieger stehe?
Droppen? Und einen Schritt nach vorne, oder
Gut. Und wenn ich dann irgendwann auf dem Bieper stehe,
was mache ich dann? Dann picke ich ihn ab,
ne? Klassisch vertue ich mich immer und sage ja Dropbeeper.
Ich glaube, dass mein System das auch erkennt.
Ah ja, guck mal hier. Can out drop and
other beeper. Das macht also keinen Sinn. Lass uns
darüber mal ganz kurz nachdenken. Wie kann das System denn wissen,
ohne das jemals ausgeführt zu haben, dass hier kein Beeper gedroppt werden kann?
Ja. Das ist zweimal der Mann am Beeper gedroppt.
Ja, und woher weiß er,
wenn er in Zeile 86 irgendwann mal ankommen wird,
dass da schon ein Beeper ist?
Ja, weil er ja gerade mit meiner Weinschlafung
gebracht hat oder er kann ja nur sein,
wenn er bei der Weinschlafter werden wird, der Erfolgshof kommt.
Das heißt, er muss ja auch einiges sagen.
Sehr schön. Also du hast gesagt, der Kontrollfluss landet
nur in Zeile 86, wenn diese Bedingung False ist,
sonst würde ich ja in der Schlafe drin bleiben.
Sehr gut. Also wenn diese Bedingung False ist,
dann ist welche Bedingung Show on beeper.
Also dann kann es, dann kann ich hier nicht noch einen hinlegen.
Gut. Das heißt, ich muss sagen,
Pete Beaper, dann müsste der Bug verschwinden.
Genau. Ach, wenn das immer so einfach wäre mit
den Bugs. Gut, dann gucken wir noch unsere
eigene Lösung funktioniert
Also, wir stehen nicht auf einem Bieper.
Ich würde ja gerne den Bieper wegnehmen, um die Zahl
kleiner zu machen, aber der ist blöderweise keiner.
Dann mache ich sie erstmal um einen größer.
Jetzt ist die Zahl um einen größer geworden. Okay,
versuche ich jetzt mal, den wegzunehmen, da ist auch keiner.
Jetzt ist die Zahl schon um drei insgesamt größer.
Jetzt ist die Zahl schon um vier insgesamt größer.
Ah, jetzt liegt ja aber ein Bieper,
dann nehme ich ihn auf und dadurch habe ich acht abgezogen.
Ich habe also sieben addiert, habe acht abgezogen,
dadurch ist die Zahl insgesamt um einen kleiner geworden.
Okay, jetzt haben wir noch eine Viertelstunde,
erfahrungsmäßig reicht, was du gerade obst.
Siehst du, nein, das hatte der Herr,
du hattest doch diesen Sonderfall dir überlegt, oder?
Was ist denn hier ein interessanter Sonderfall,
wo Carol droht,
in die Wand reinzulaufen
Oder sonst auch gerne jemand anderes. Also kann es
irgendwie passieren, dass Carrie in die Wand reinläuft?
Bei der Null, genau. Ich könnte jetzt so lange
auf Deckroman klicken, bis da zufällig die Null rauskommt.
Aber das wird wahrscheinlich nicht passieren. Nee. Okay,
dann muss ich wieder schummeln. Ja, dann probieren wir
doch mal. Er findet keinen einzigen Beeper. Deswegen legt
er immer einen ab und geht einen Schritt nach vorne.
Ja, das wäre irgendwie nicht so schön.
Wollen wir mal gucken, was da die Musterlösung macht
Okay. Also übrigens ist er schlau genug,
nachdem er da den letzten Bieper hingelegt hat,
zu sagen, ich gehe mal lieber nicht nach vorne.
Wie wurde das wahrscheinlich gebaut? Ja. Also hier?
Okay. Was soll ich da reinschreiben?
Und Frontiski? Genau. Der FC. Genau. Guck
mal, was jetzt passiert
Das ist spannend, ne? Also vorher konnten wir uns ja überlegen,
dadurch, dass hier nur eine Bedingung stand, wussten wir hundertprozentig,
wenn wir hier ankommen, musste ein Bliefer sein,
sonst wäre ich ja nicht aus der Schleife rausgegangen.
Jetzt kann es aber zwei Gründe dafür geben,
dass ich die Schleife verlasse. Es könnte sein,
dass ich auf dem Bieper stehe oder es könnte sein,
dass vor mir eine Wand ist.
Das machen wir jetzt. Ja. Ja. Also es gibt zwei Möglichkeiten,
einfach wenn wir sagen, in der Form sitzt ja raus
und machen den Korn, das ist ein Bieper.
Ja. Oder wir lassen das so,
wie es ist und machen, trifft und bietet aber,
dass er das so macht und wenn er einen runternimmt
Ah, okay, also du willst es genauso wie das Goal machen,
dann war dein Vorschlag, dann nehmen wir das hier mal wieder lieber raus.
Ja, und dann hattest du gesagt, so, ne?
So ist es dann genauso, wie das Goal das macht, genau. Okay,
ich hätte das aber auch andersrum akzeptiert,
also ob der jetzt hier noch so ein bisschen ablegt oder nicht,
ist er jetzt für die eigentliche Logik nicht so wahnsinnig relevant sein,
weil uns interessieren ja eh nur die acht Diamanten hier,
ne?
Also wenn man null entniedrig kommt, 255 dabei raus.
Okay. Gut, schauen wir mal,
dass das jetzt funktioniert, unsere eigene Lösung,
dass er nicht mehr
in die Wand reinläuft
Sehr schön. Man verhält sich genau wie das Goal.
Okay. Ja, aber Goal,
liegt jetzt noch einmal kurz ein Achillet wieder auf.
Das hat er bei uns auch gemacht, oder?
Wir gucken mal kurz, dass er hier einen abblickt und wieder aufnimmt.
Ich meinte, wenn ich mich null... Dann macht das nicht
, sagst du? Die anderen Seiten auch alles Goal.
Aber wie gesagt, das ist mir nicht so wichtig.
Also es gibt so ein paar Details vom Goal,
die mir jetzt nicht so hundertprozentig wichtig sind.
Wir hatten letzte Woche ein bisschen darüber diskutiert.
Also macht es so wie das Goal, damit ihr betreue,
euch nicht anmotzen. Aber bei dieser einen Stelle,
ob da jetzt einen kurzen Diamant bringt oder nicht,
das ist,
glaube ich,
allen egal
Also, Hauptsache, ihr habt verstanden, wie man
eine Zahl dekrementiert und lauft nicht in die Wand tragen.
Okay. So, jetzt haben wir noch ungefähr eine Viertelstunde.
Schaut euch doch mal an, was Carrie hier macht.
Ist da irgendwas, was euch bekannt vorkommt oder ist es
irgendwie reiner Zufall, was er da macht?
Mhm. Nimmt also die beiden weg und tut da einen
hin, okay? Das macht dann, sage ich mal,
mal einen ganz kleinen Ticken schneller.
Okay. Das nimmt halt den weg, okay,
jetzt ist da oben ja fast gar nichts mehr interessant,
was wird er denn jetzt als nächstes da oben machen?
Oh, jetzt legt er da wieder ganz viele hin.
Aha, spannend
Okay, und jetzt ist da unten die Reihe ja fast voll,
was wird da als nächstes passieren? Oh, hm,
das haben wir doch schon mal gesehen, oder?
Interessant. Meinungsbild, wer sieht irgendeinen Sinn hinter dem,
was Cavill da macht? Ja, noch nicht so viele.
Okay. Dann machen wir vielleicht mal folgendes, ich stoppe das mal,
mach mal ein Reset und klicke da mal relativ einfache Zahlen hin,
ups, nee, ich will die Musterlösung starten.
Also nehmen wir doch,
welche Zahlen zum Beispiel die neuen zum Beispiel und,
was weiß ich, Was ist nochmal eine 1,
2 und 4, ist vielleicht zu einfach?
Was ist das hier? Das ist 10, oder?
Genau, das ist 9 und das ist 10.
Dann lasse ich das jetzt einfach mal durchlaufen. Okay,
was ist da jetzt rausgekommen? 1 und 2 ist 3,
4, 8, 16,
19. Also 9 und 10 stand da vorher und jetzt steht unten eine 19.
Ist das irgendwie Zufall oder sieht jetzt jemand ein System einmal Hand auf,
wenn jemand ein System sieht?
Traut sich keiner sich zu melden oder seid ihr jetzt müde?
Okay. Kannst du mir jemanden erklären, was da passiert?
Ja. Er macht eigentlich die beiden Kapitel,
die wir eben gemacht haben, miteinander durch.
Also er macht jetzt oben einen sechs Er machte Oma
in Deckrement und unten ein Increment. Genau, ne?
Also immer oben ein Wegnehmen, unten an der Zuchtorn,
oben einen Wegnehmen, unten eine zu nehmen.
Und irgendwann wird es oben nicht mehr gehen,
weil nichts mehr da ist und dann hört er auf.
Und wenn ihr euch das überlegt,
ihr habt irgendwie zwei verschiedene Zahlenschafe und ihr nehmt von dem einen
was weg und tut es auf den anderen rauf und dann irgendwann
ist hier nichts mehr da, dann habt ihr hier die Summe.
Das ist eigentlich ganz einfach. Ist saulangsam, deswegen heißt
es auch Ed Slow, aber es funktioniert. Ja,
und du hattest eben schon so schön gesagt,
er macht eigentlich nur das, was wir eben schon programmiert haben,
er macht das Increment, Entschuldigung,
er macht das Deckrement oben und das Increment unten.
Das haben wir ja schon gebaut. Das heißt,
wir müssen das jetzt nur noch sinnvoll nacheinander immer abarbeiten
Okay. So. Gut. Wir müssen uns ja sicherlich mehr
als einmal machen und ich zeige euch jetzt mal so einen Standard-Trick von mir,
immer wenn ich mir nicht sicher bin, was eine gute Schleifenbedingung ist,
sage ich, wir machen erstmal eine Endlosschleife.
Also solange diese Bedingung wahr ist und das wird ziemlich lange der Fall sein.
Führe die Schleife wird ja immer weiter außen später,
überlegen wir uns dann, ob da nicht eine sinnvollere Schlafbedingung uns einfällt.
Okay. Was ist das Erste, was wir tun?
Was war das Goal? Haben wir dann mal was Spannenderes
am Anfang? Ach, das ist glaube ich ganz spannend.
Was ist das Erste, was Carol tun muss?
Es muss ja erstmal irgendwo hingehen oder muss er Increment machen
oder Decrement oder sich erstmal drehen oder irgendwas,
Als erstes Stackrement. Genau, wir müssen erstmal decrementen.
Und dann sind wir, ich schummel jetzt mal wieder so
ein bisschen, damit das ein bisschen spannender ist.
Ach so. Also wenn er dann das Decrement gemacht hat,
steht er ja hier. Ist es jetzt sinnvoll, sofort
das Increment aufzurufen? Ich will ja diese Zahl incrementen.
Ja. Du musst dich umdrehen zu beglauben,
was noch drinnen in der nächsten Zeile gehen wird.
Okay, das ist alles richtig, was du sagst.
Ich versuche das kurz, du hast gesagt,
wir müssen uns umdrehen, dann müssen wir zur Wand laufen,
damit es alle nachvollziehen können,
wir drehen uns um und laufen bis zur Wand
und dann
Nee, Entschuldigung. So, ne? Dann würden wir quasi,
ich führe jetzt das Goal aus, hier stehen.
Das ist doch nicht schlecht. Okay, was müssen wir
dann machen? Jemand anderes irgendwie. Auch immer dieselben.
Dahinten meldet sich jemand. Ich nehme ja nie Leute aus
. Ja. Richtig, jetzt muss ich,
jetzt stehen wir an der richtigen Stelle für Increment, ne?
Increment. Okay. Wo werden wir dann stehen?
Ich schummel jetzt auch mal wieder so ein bisschen,
dass es spannender wird. Oh. Was habe ich jetzt
? Habe ich irgendwas kaputt gemacht? Also ich wollte das
Goal starten und ich wollte hier ein paar Diamanten dazuschauen,
wenn wir das spannender wird
So, dann steht da nach dem Increment steht er hier.
Kann ich jetzt sofort wieder hier oben die Schleife von vorne
ausführen und jetzt das Decrement aufrufen oder muss ich erstmal was anderes tun, ja?
Ja, dann würden wir quasi hier stehen. Genau.
Sehr schön. Und jetzt ist das irgendwie so ein undurchsichtiger Wust von Befehlen.
Kann man das nicht nochmal irgendwie sinnvoll aufteilen? Also da ist das Increment So,
also was ich einfach mal der Übersichtigkeit halber gerne machen würde,
wir haben ja ein bisschen Zeit, es zu sagen,
vielleicht nenne ich mal einen Prepare Increment,
also wo er dann quasi an die richtige Stelle geht,
um das Increment zu machen.
Ich mache das jetzt nur der Übersichtlichkeit, habe nicht,
weil ich das irgendwie mehr als einmal ausführen will,
aber weil ich habe sonst einfach diesen riesigen,
langen Schlafenraumwunsch und steigt da immer nicht so richtig durch.
Also der Weg zum Decrement ist ja quasi dieser hier.
Und da muss ich das natürlich auch wieder entsprechend aufrufen,
also Prepare Decrement.
So, okay
Ich persönlich steige da besser durch, wenn die Befehle so kurz sind.
Also, ich muss, ich vielleicht noch mal kurz von vorne,
also was muss ich jedes Mal tun? Ich muss einmal decrommenten,
dann muss ich zu der Stelle laufen, wo ich incrommenten soll,
dann muss ich incrementen und dann muss ich zu der Stelle laufen,
wo ich decrommenten soll.
Oh, das verstehe ich, glaube ich, ganz gut.
Dann können wir das ja einmal für unser Beispiel machen. Also,
ich starte jetzt unsere eigene Lösung und jetzt schummel ich mir wieder
so diese Diamanten hin, also wir hätten ja gesagt,
wir wollen ja neun addieren und zehn.
Und genau, jetzt kann ich, glaube ich,
auch das steppen, ganz sinnvoll machen.
Also,
wir decrommenten einmal
Ich habe das jetzt step over, ich bin nicht reingesprungen.
Und jetzt propaire ich Englisch mit, da müsste er hier auftauchen.
Sehr schön. Hier inkrementen wir. Sehr schön. Jetzt
gehen wir wieder nach oben. Jetzt decrementen wir. Jetzt decrementen
wir. Sehr schön, dass du 8D7 gemacht hast.
Das sieht doch alles ganz gut aus. Ich lasse ihn
jetzt mal bis zum Ende durchlaufen. Ob dann unten
eine 19 steht oder ob er vorher abstürzt oder irgendwas.
Ach ne, er wird ja immer weitermachen. Ich habe
eine Enddurchschleife, ne? Ah. Ich muss vielleicht mal
einmal ganz kurz von Hand an der richtigen Stelle anhalten.
Und zu sehen, dass er wirklich die richtigen Zahlen addiert.
Es ist ja noch eine Enddurchschleife,
ich horse
Also 2 Song auf 1,100. Genau, jetzt wird er da oben
gleich irgendwie nichts mit Sinnvolles methoden. Okay. 1,1,2. Ja,
es sind 19. Okay, das scheint funktioniert zu haben.
Jetzt müssen wir irgendwie nur noch dafür sorgen, dass es keine Endlosschleife mehr ist.
Also was ist denn eine sinnvolle Schleifenbedingung, um zu sagen,
jetzt muss ich es noch machen, beziehungsweise jetzt muss ich aufhören,
weil jetzt ist oben nichts mehr zu tun.
Du hast lange nichts gesagt? Front is clear, okay
. Dann starte ich mal wieder und schummel mal wieder.
Scheiße, zu spät. Ja gut,
dann addiere ich halt 8 und 8,
ist auch okay,
müsste 16 mal rauskommen
Er hat nicht aufgehört. Eigentlich hätte er doch aufhören müssen, oder?
Das wäre interessant. Also, wir haben hier gesagt,
lieber Kern, nur wenn vor dir frei ist,
sollst du in den Schlafen rumfrei gehen.
Und wann prüft er diese Bedingung immer?
Vielleicht starte ich das einmal noch mal ganz kurz stepweise.
Also, jetzt gerade ist ja vor uns frei. Das heißt,
ich muss das Deckcremit machen, ich muss zu der Increment-Stelle gehen,
ich muss Increment machen, ich muss zur Deckcrement-Stelle gehen.
Ach, schade, das mit der Wahlstaffel scheint mit
dem Step-Over hier nicht so richtig schön zu funktionieren,
fällt mir gerade auf
Nee, schade, man. Er springt da nicht so
schön hin. Aber was euch vielleicht hoffentlich klar ist,
ist, wenn ich das Prepared-Dequerman komplett ausgeführt habe,
nämlich jetzt, erst dann wird ja die Schleifenbedingung wieder überprüft.
Er überprüft die Schleifenbedingung immer dann,
wenn er hier oben steht und nach Westen guckt.
Also er prüft, ob hier eine Wand ist.
Das ist irgendwie nicht so sinnvoll, oder?
Das Problem ist, wann wird die Schleifenbedingung geprüft?
Die Schleifenbedingung wird einmal ganz am Anfang geprüft.
Natürlich steht er da hier und guckt da.
Aber wenn ihr euch diese vier Befehle anguckt,
ist völlig klar, wenn er das hier komplett ausgeführt hat,
springt er wieder hierhin zurück und prüft, ob voll innovant ist.
Und natürlich ist da nach wie vor keiner.
Der baut da ja
keine Wände hin
Also die Tatsache, dass mittendrin im Schleifenrumpf irgendwann mal
diese Schleifenbedingungen verletzt wird, ist völlig egal.
Er prüft es immer nur, wenn der Schleifenruf komplett durchgelaufen ist.
Das ist ja irgendwie blöd, oder?
Ja. Niss? Ja. Was willst du jetzt machen?
If Front is gill? So? Das würde bedeuten,
ich will das Deck damit ausführen,
wir könnten es vielleicht nochmal schön zusammenschummeln
Also ich starte das jetzt mal so, dass er nur
einen addieren soll und jetzt kommen wir mal langsam durchsteppen vielleicht.
Also ja gut, also am Anfang ist es natürlich für uns frei.
Wir Decrementen, das heißt, wir nehmen den Pieper auf, okay.
So, und jetzt prüfen wir, ob vor uns frei ist.
Das ist eine spannende Stelle. Das werden wir gleich sehen.
Vielleicht mache ich jetzt tatsächlich doch mal ein paar Mal Step-Over.
So, jetzt machen wir das Decrement, da gehe ich mal rein.
Okay, und jetzt haben wir hier diese spannende Schleife,
wenn wir jetzt so schön seht,
auch, dass ihr da jetzt diese ganzen Diamanten hinlegt,
okay,
und dann bis zur Wand läuft
Das nimmt dann den letzten Beeper wieder auf. Aber das Interessante ist,
wir springen jetzt aus Decoraments zurück und stehen vor einer Wand.
Und was machen wir, nachdem wir das Decorament gemacht haben?
Wir prüfen jetzt mit dem IF, ob wir,
ob die Wand frei ist, ist sie nicht.
Das heißt, wir werden jetzt diesen Block hier überspringen.
Und prüfen jetzt wieder die Wireschleife. Und jetzt merken wir,
oh, wir stehen immer noch vor der Wand,
dann müssen wir wahrscheinlich aufhören.
Das Problem war also, wann wird die Schleifenbedingung geprüft?
Das ist etwas, das kann ich euch zehnmal erzählen,
dass es immer nur gemacht wird, nachdem Karl einmal durchgelaufen ist.
Aber hier sieht man das mal so schön. Dass es
überhaupt nicht nützt, wenn die Schlafenbedingung zwischendurch mal falsch ist.
Wenn ihr sie nicht wirklich von Hannibal prüft,
wird dann nichts überprüft im Hintergrund
Jetzt behaupte ich aber, man kann das auch ohne dass
ihr hinkriegen. Sieht jemand, wie ich irgendwie erreichen kann,
dass erst nach dem Decrement die Bedingung geprüft wird.
Gibt meistens jemanden, ja. Dahinten meldet sich jemand.
Wenn man das Decrement vor die Weichweite macht, einmal nachgefügt werden.
Sehr schön. Das ist eine Lösung, auf die man nicht
so schnell kommt. Aber tatsächlich, was war unser Ziel?
Unser Ziel war, nach dem Decrement soll die Schleifenbedingung geprüft werden.
Wann wird die Schleifenbedingung geprüft? Sie wird einmal geprüft,
wenn ich das erste Mal sozusagen von oben reinkomme,
die Schleife. Und was machen wir unmittelbar davor?
Wunderbar. Und er könnte ja sein,
dass es direkt am Anfang da eine Null ist und dass
wir die direkt auf diese komische, alles voller Diamantenzahl erniedrigen.
Und wann wird das nächste Mal die Schlafenbedingung geprüft?
Wenn der Schleifenrum komplett ausgeführt wurde und was ist das Letzte,
was wir im Schlafenrum machen? Wir machen das Decrement.
Und es ist sinnvoll nach dem Decrement, die Schlafenbedingungen wieder zu verprüfen.
Das ist also eine Lösung, die mich extrem begeistert.
Ich weiß gar nicht, ich glaube,
auf die ist auch irgendwann mal ein Student gekommen.
Und ich war total froh, dass ich dieses blöde Öff
nicht mehr brauchte. Okay. Fragen, ja. Was
passiert werden? Es gibt nur ein Diamante auf alle Ecke
Welche Ecke die hier, links oder rechts?
Das kann ich jetzt einfach auswählen. Ich weiß nicht genau
, worauf du hinaus willst. Okay, ja,
aber wir haben ja gesagt, wir verstehen das so,
dass eigentlich nur diese ersten acht Diamanten zählen.
Du hast jetzt hier wieder irgendeinen interessanten Sonderfall gefunden,
wo ich mir mal Gedanken machen muss,
ob der schlimm ist oder nicht.
Bin ich gerade nicht so sicher.
Genau, wo waren wir jetzt stehen geblieben? Das habe ich
euch erklärt. Das müsst ihr euch ja selber durchgucken.
Es gibt nachher noch nicht nur das Ad Slow,
sondern auch Ad Fast, wo man direkt spaltenweise addiert.
Das ist, damit ihr euch, könnt ihr euch
die Zähne dran ausbeißen. Das ist die Zusammenfassung,
dann sehen wir uns nächste Woche wieder.
Vielen Dank