>> JASON HIRSCHHORN: Willkommen, alle, bis Woche 10.
Dies ist eine spannende Woche, weil morgen ist ein Quiz, das wir bekommen
in einer zweiten.
Heute in Abschnitt werden wir zu gehen über einige Ressourcen für das Quiz, und
dann werde ich sämtliche beantworten Fragen Sie Jungs haben.
Und wir werden am Ende schließlich mit Praxis einige Probleme.
>> Wir können den gesamten Abschnitt zu verbringen Fragen zu beantworten.
Wir können den gesamten Abschnitt zu verbringen gehen über die Praxis Probleme.
Wir werden nur zu erweitern, um die zu füllen Raum und Zeit haben wir.
>> Also habe ich diese Liste jede Woche, aber es ist diese Woche besonders wichtig.
Für die Untersuchung, wenn Sie nicht über bereits begonnen, oh boy.
Aber hoffentlich haben Sie bereits begonnen haben.
Und Sie durch die Materialien gehen und Ressourcen hier aufgeführt.
Ich würde empfehlen, eine Anzahl von diesen.
>> Insbesondere sind Skriptum unglaublich wichtig und hilfreich.
Die study.cs50.net bietet eine große Primer auf eine Menge von
die Themen, die wir behandelt.
Es hat auch einige große Praxis Probleme.
Und dann ist Google auch super.
Ich weiß nicht, was Sie es verwenden möchten.
Aber die Verwendung von Google, wie gut.
>> Erreichen Sie mich, wenn Sie welche haben Fragen, Kommentare oder Bedenken.
Schauen Sie über die Review-Sitzung Dias von der letzten Nacht.
Oder, wenn Sie etwas Zeit haben, Sehen Sie das Video.
Sie bieten viele hilfreiche Material und Informationen.
Und versuchen zu decken, wenn nicht alle, viele von die Themen, die wir behandelt haben, und dass Sie
könnte auf dem Quiz zu sehen.
>> Sprechen des Quiz, dass morgen sein wird.
Es ist 75 Minuten lang.
Viele von Ihnen nehmen es auf 1 Uhr, und einige von Ihnen sind
wobei es bei 5:30.
Für die Zeit, die Sie nimmst es und die Ort, den Sie nehmen es, stellen Sie sicher
Sie überprüfen das Dokument auf der CS50.net Homepage.
>> Denken Sie daran, dass Sie eine 8 1/2 bekommen 11 Blatt, mit Ihnen zu nehmen.
Oft wissen die Menschen nicht verwenden Blatt überhaupt während des Quiz.
Aber wirklich, es ist ein unglaublich hilfreich Studie Werkzeug.
So, dass die Zusammen Blatt, was Ich habe wahrscheinlich drei oder vier Stunden
tun, als ich für CS50 Studium, und das war einfach die hilfreich
So wie ich für das Quiz studieren.
Also selbst wenn Sie einen anderen Menschen verfügen Studienführer, zu betrachten und
als Referenzen verwenden, empfehle ich Ihre eigenen Studienführer, setzen
das Zeug zusammen.
Das hilft wirklich, Sie lernen das gesamte Material.
>> Nicht zuletzt in diesem Abschnitt, nach dem Quiz morgen gibt es ein
mehr Vortrag -
nächsten Montag.
Es gibt eine weitere Sektion, nicht neben Dienstag vor Thanksgiving, aber die
Dienstag danach.
Wir werden für eine endgültige zusammen treffen sich Abschiedsfeier und tun auch ein paar coole
Dinge, um Sie über Jungs begeistert weitere Studien in Informatik.
>> Es ist ein weiteres Projekt, einen mehr Messe, eine weitere Hackathon.
Wir nähern uns dem Ende des CS50, die spannend ist -
sondern auch, wenn Sie wie sie sind mich ein wenig traurig.
Bevor ich auf, hat jemand Fragen über das, was
die wir bisher behandelt?
>> OK, nun gehen wir über einige Fragen dass Sie für das Quiz und Themen haben
wir könnten zu decken.
Das ist also eine Liste, die ich zusammen.
Es ist keineswegs erschöpfend, sondern hoffentlich wird Ihr Gedächtnis auf die Sprünge, wenn Sie
habe einige Fragen zu einer dieser Themen, oder wenn Sie Fragen zu
Praxis Probleme Quiz in den vergangenen Jahren.
>> Ich hatte ein paar Fragen, die waren per E-Mail an mich, aber ich möchte zu halten off
auf diejenigen, für eine Sekunde.
Hat jemand irgendwelche Fragen haben, Probleme, die sie nicht verstand,
Antworten, die sie nicht verstehen, uns beginnen?
Avi.
>> ZIELGRUPPE: Können Sie gerade gehen über DOM und Ajax wirklich schnell?
Wie, was wir wissen müssen oder sollten verstehen, über sie?
>> JASON HIRSCHHORN: Ich werde zu beantworten in der Regel ist diese Frage von, was ich tun
brauchen, um über bestimmten Thema x wissen?
Denn ich habe das Gefühl, viele von Ihnen gehen, um mich zu fragen, das, oder sind
neugierig darauf.
Also in dem Maße, war das Thema in Vorlesung oder Schnitt oder auf
study.cs50.net, ein Problem, setzen Sie sollte mit ihm vertraut sein.
>> So müssen Sie nicht jede Art kennen der Tag, das im HTML-oder
jede Art von Attribut oder eine Eigenschaft Sie können etwas in CSS geben.
Aber wenn Sie es in einem Vortrag Beispiel gesehen, wenn Sie es in ein Problem sah,
Satz, sollten Sie wahrscheinlich vertraut sein mit ihm, vor allem Dinge, die Sie sahen
in der Vorlesung.
So diskutierten wir das Dokument Objektmodell ein wenig in
Abschnitt, um so mehr in der Vorlesung.
Sie sollten vertraut sein mit so viel davon.
>> Und Sie kennen sollten Ajax im gleichen Umfang.
Wir sahen nie unglaublich fortgeschrittenen oder komplizierte Beispiele für Ajax, so
du wirst doch nicht zu fragen, tun etwas unglaublich kompliziert.
Aber Sie könnten fragen, wie kann ich machen einen Ajax-Aufruf mit jQuery?
Welches ist etwas, was Sie gesehen haben, eine Reihe Male vor, sowohl in der
Sitzung und überprüfen in der Vorlesung, und es ist nur zwei-ish Zeilen Code.
>> Also das ist etwas, sollten Sie vertraut sein mit.
Aber noch einmal, für alle diese Themen, wenn Sie es gesehen haben
vor, es ist fair game.
Und wir werden Sie fragen - natürlich, wir sind werde Ihnen Dinge, die Sie fragen,
noch nicht gesehen.
Coding etwas, das Sie nicht haben gesehen.
Was nicht zu sagen, Sie nicht gesehen, die Werkzeuge zu lösen
dass Problem vor.
Sie haben diese Werkzeuge zu sehen.
>> Zum Beispiel auf ein Quiz, wenn Sie brauchen, um strlen codieren.
Wir haben nicht vor strlen codiert.
Aber Sie wissen, wie man eine for-Schleife verwenden, Sie wissen, wie, wenn die Bedingungen zu nutzen.
Sie wissen, wie man Variablen in C schreiben Es geht um die gleiche Sache hier zu sein.
Sie werden nicht gefragt, zu tun alles, was Sie vorher noch nicht gesehen haben, aber
Sie gefragt, ob, wie, gestellt werden gemeinsam etwas auf neuartige Weise, oder
lösen eine andere Art von Problem.
>> Es tut uns leid, das war nicht speziell auf Ihre Frage, aber kann ich nicht beantworten zu
jedes einzelne Thema, was Sie tun oder nicht zu wissen.
Aber auch, sorry, letzte, was auf die.
Wir haben deutlich mehr Zeit damit verbracht Link-Listen auf, als wir auf Ajax haben.
Sie haben Ajax nicht in einer Problem-Set.
Eines der zentralen Merkmale, daß Problem war eingestellt, dass Linklisten.
Und wir verbrachten viel Zeit in der Vorlesung und Abschnitt benutzen.
>> So stehen die Chancen, Link-Liste wird kommen mehr oft auf dem Quiz als Ajax Willen.
Oder die Fragen mit, um mit Link tun Liste werden mehr Punkte wert.
So können Sie sicher Fokussierung und schmal in auf Dinge, die mehr sind
wahrscheinlich zu kommen, denn wir haben verbrachte mehr Zeit auf ihnen.
>> OK andere Fragen?
Ja.
>> ZIELGRUPPE: Können wir über die Verwendung der gehen anonyme Funktionen in JavaScript?
Ich bin ein wenig verwirrt sind darüber.
>> JASON HIRSCHHORN: Also in JavaScript -
Ich versuche zu denken, wie ich könnte dies zu schreiben -
so lassen tatsächlich eröffnen diesen Code.
Das ist also Code, den wir letzte Woche.
Und Sie zuvor gesehen haben, wenn Sie waren hier im Schnitt der vergangenen Woche.
Oder Sie etwas gesehen haben ähnlich wie diese vor.
>> Aber Sie können in dieser ersten Zeile zu suchen.
Dies ist, wie Sie beginnen -
jeder hat das schon mal gesehen.
Wenn Sie etwas JavaScript-Code setzen wollen, Sie legte es in diesem, unter der Annahme,
Sie sind mit JQuery.
Dieser sagt, nichts tun bis das Dokument geladen.
>> Und dann, Curt, hier sehen Sie, wir sind so etwas wie dies zu tun -
Funktion paren offen, geschlossen paren.
So sind wir nicht zu geben dies Funktion einen Namen.
Wir werden uns nicht um diese Funktion zu definieren laufen soll und dann
nennen es ein paar Mal.
Wir sagen nur, dieses Dokument findet bereits eine Funktion.
Ein paar Dinge zu tun.
>> Und das wollen wir nicht, um die Zeit zu verbringen ihm einen Namen oder speichern Sie sie für
die ewige Rente.
Wir wollen einfach nur, um einige Dinge laufen.
So eine anonyme Funktion sortieren der dient diesem Zweck.
Wenn Sie nicht vorhaben, etwas zu verwenden, immer und immer wieder, so dass Sie nicht brauchen,
ihm einen Namen zu geben - man muss nur möchte es einmal zu verwenden -
Sie würde einfach sagen, Funktion, für beispielsweise, in diesem Fall, und du bist nur
etwas zu definieren, die Sie einen Namen geben konnte.
>> Wie konnten wir diese Funktion herausziehen und ihm einen Namen geben und dann nennen
hier funktionieren.
Aber wir wollen nicht zu müssen, weil wir nicht wollen, Zeit zu verschwenden ihm einen Namen oder
verschwenden etwas in unserem Namensraum.
Und Sie werden sehen, dass eine Menge.
Zum Beispiel sehen wir, dass eine Menge in dieser Code, aber Sie zuvor gesehen haben, wenn
Sie etwas klicken -
laufen diese Art von Code.
>> Wir könnten den Code zu definieren, die wir wollen zu laufen, wenn wir Sie auf, in diesem Fall,
diese ID, als separate Funktion und führen Sie dann diese Funktion.
Aber in diesem Fall, wir sind nur das Überspringen dass Schritt und es in hier und
, nur um alles zu definieren dass wir nur wollen und
nicht die ihm einen Namen.
Das immer noch nicht haben könnte Ihre Frage beantwortet.
>> ZIELGRUPPE: Nein, tut es.
Ich meine, ich glaube, ich einfach nicht wirklich warum bekommen, es wäre eine
haupt funktionieren, wenn.
Weil es nicht wirklich aufgerufen wird.
Es hat nicht wirklich einen Namen.
>> JASON HIRSCHHORN: Es ist eine Funktion in der Sinn, dass es eine Reihe von Schritten,
wie Sie in einer Funktion setzen würde.
Und dann ist das, warum wir nennen es anonyme Funktion.
Wir werden nicht einen Namen zu geben.
Wir gehen nicht zu verschwenden, um es zu nennen, aber wir konnten.
>> Anonyme Funktionen, die Sie immer einen Namen geben.
So zum Beispiel, dieser Code genau hier, wir diesen Code in einen setzen
Funktion und rufen Sie dann diese Funktion hier.
Stattdessen sagen wir, wir werden nicht damit zu belästigen.
Wir sind gerade dabei zu schreiben sind Sie hier richtig.
>> Es ist wie manchmal, wenn du schreibst ein Vier-Schleife in C - ihr seid
haben schon gesehen - vielleicht sind Sie Durchlaufen einer forloop
in i gleich 0 ist.
I weniger als Strlen.
Oder Sie durch einige gehst Array, Array können Sie sparen
Index i in einigen Variablen.
Und Sie diese Variable verwenden.
So müssen Sie nicht auf Array neu zu schreiben Halterung i über und über und über.
>> Und das ist ein bisschen wie eine Dummy-Variable.
Es ist nicht viel dienen anderen Zweck als Ihren Code ein bisschen sauberer zu machen
und leichter zu lesen.
Ähnliche Funktion hier.
Nur macht es ein bisschen leichter, aber funktionell gibt es keinen Unterschied.
Heißt das, Ihre Frage zu beantworten?
>> ZIELGRUPPE: Ja.
>> JASON HIRSCHHORN: OK ..
Mario?
>> ZIELGRUPPE: Gestern haben sie oft gestellt Funktion Klammern Veranstaltung.
Heißt das etwas zu bedeuten?
Oder ist es für Dinge wie dass sie es tun würde
document.ready Funktion Ereignis.
>> JASON HIRSCHHORN: Wir haben das gesehen, und wieder, das sind Dinge, die kleiner
wahrscheinlich, ich will nicht verbringen zu viel Zeit auf.
Weil ich manchmal nicht die Leute wollen ausgeflippt, dass sie nicht bekommen
gehört, über diese Dinge so viel.
Aber wir sprachen ein wenig über Ereignishandler.
So etwas passiert, und dann Diese Funktion wird ausgeführt.
Und dann wollen wir auch wissen, einige Details über das, was
passiert in dieser Veranstaltung.
>> Also denken Sie zurück an Problem-Set 4.
Das ist wahrscheinlich der einfachste Weg, verstehen, dass in ausbrechen.
Es gab einige Code -
wie ein Ereignis geschehen würde, aber Ereignis kann vieles bedeuten.
Wenn bedeuten könnte mit der Maus geklickt, es könnte bedeuten, dass Sie eine Pfeiltaste schlagen, et
cetera, et cetera.
>> Aber es ist alles in diesem generischen gespeichert Ding namens Veranstaltungen.
Und dann können wir sagen, ist dieses Ereignis dieses Ding?
Oder ist das Ereignis dieses Ding?
Oder welche Art von passiert mit diesem Ereignis?
Also das ist, warum Sie diese Variable erstellen gibt zu, dass zusätzliche Informationen zu speichern
darüber, was genau passiert ist, dass Sie gehen zu wollen sind
verwenden in der Funktion.
Aber noch einmal, das ist wahrscheinlich eine der weniger wichtige Dinge super sein
vertraut mit.
>> OK, was andere Fragen, die Menschen haben hatte, oder Stolpersteine ​​haben sie
bei der Überprüfung festgestellt?
Wir werden auf diese Liste zurück.
Was im Training Quiz, wenn Menschen, die bereits teilgenommen?
Was waren einige Probleme, die ausgelöst euch auf?
Ich für eine Tatsache, dass im vergangenen Jahr die Quiz war wirklich hart.
>> ZIELGRUPPE: Können Sie erklären, was eine SQL-Injection-Angriff ist?
>> JASON HIRSCHHORN: OK, toll.
So sprachen wir über diese ein wenig.
Es gibt einen Vortrag über Sicherheit.
Und wieder, wie schon erwähnt, dies ist eine Seite.
Aber Sie werden auf der Quiz vereitelt werden wenn Sie einige kleine Zweipunkt lesen
Frage, und du, wenn du habe ich nie erfahren, dass?
>> All diese Dinge in diesen Vorträgen dass Sie nicht denken, Sie benötigt
wissen, oder Sie vorbei, weil Glanz könnte sie hatten nicht mit dem zu tun
Problem-Set, die wird wahrscheinlich kommen wieder auf die Quiz.
Also, cool, lustige Dinge, die Sie gerade dachte David erzählte, damit Sie
genießen, erzählte er Ihnen für Sie zu genießen und machen Sie sich einfach super sein
aufgeregt über das Lernen alles, was es zu lernen
über Informatik.
Diese Dinge auch kommen am Quiz.
Also, auch diese kleinen Dinge, die nicht getan direkt auf Ihr Problem beziehen
gesetzt, wie ihr Jungs mit von vertraut sind Quiz 0, wird wahrscheinlich kommen.
Und das ist ein gutes Beispiel von etwas.
>> So eine SQL-Injection-Angriffe ist, wenn Sie einige Informationen aus der Benutzer-und
Sie es in eine Tabelle einfügen möchten, mit ein SQL-Insert-Anweisung, aber Sie
nicht den Eingang nicht desinfizieren vor der Zeit.
Also, natürlich haben wir gesehen, SQL-Anweisungen.
Ich werde einfach zu öffnen -
gehen wir -
wir werden an die Beurteilung gehen -
Ich denke, der sie behandelt?
Ich denke, Samala taten.
So können wir uns -
>> ZIELGRUPPE: Wo haben Sie das gefunden?
>> JASON HIRSCHHORN: Also, wenn Sie gehen CS50.net, Quiz, und dann können Sie
blättern und sich über Rutschen von der Review-Sitzung.
Aber sehen Sie, das ist ein gutes Beispiel einer SQL-Injection-Angriff.
Wir nehmen einige Informationen aus dem Benutzer und sie geben uns einen String, und dann werden wir
wollen, dass die Zeichenfolge einfügen in einer Datenbank.
Generell werden wir, dass desinfizieren Eingang, das heißt, es gibt einige
Zeichen, die gefährlich sind.
>> Zum Beispiel in SQL-Strings, diese Zitate -
einzelne oder doppelte Anführungszeichen -
etwas bedeuten.
Sie bedeuten am Ende diese Zeichenfolge hier.
Und so, wenn der Benutzer gibt Ihnen einen einzigen oder ein Anführungszeichen, sie sein könnten
versuchen, stolpern SQL-Abfrage und legen einige schlechte Sachen hinein.
Und wenn sie das tun, werden sie gewinnen könnte Kontrolle Ihrer Datenbank oder haben einige
Dinge, die Sie nicht wollen, sie zu tun.
>> Also das ist, warum, wenn wir SQL Abfragen, desinfizieren wir die Eingabe vor
setzen sie in die Datenbank, die bedeutet, dass wir diese Zeichen zu entkommen.
Wir erfahren, dass in einem zweiten sprechen.
Aber lange Rede kurzer Sinn, eine SQL-Injection Angriff ist, wenn Sie das nicht tun -
wenn Sie sich nicht kümmern des Eingangs Sie sie, bevor Sie gaben Ihr
Datenbank, können sie, wie Sie unten sehen hier eine Abfrage, die, in der Tat -
sie in ihrem Code zu setzen und hier unten Diese Auswahlleitung wird hier unten wählen
alles aus der Tabelle unabhängig von dem, was das Passwort ist gegeben.
Denn Sie haben die 1 oder gleich 1 ist.
>> So ist es im Grunde, lange Rede kurzer Sinn, ein Weg, über die Datenbank zu übernehmen.
Die Frage ist also, für euch ist wo p Sätze 7 haben Sie alle desinfizieren
die Eingänge zu der SQL-Abfragen?
Wo hat dieser Schritt geschehen?
Wo sehen Sie SQL-Injection verhindern Angriffe aus geschieht in p set 7?
Ja.
>> ZIELGRUPPE: Crypt?
>> JASON HIRSCHHORN: Also war es nicht Krypta.
Wir haben nicht machen Sie das für Sie dazu besonderes Problem eingestellt, aber es passiert
in der Abfrage-Funktion.
Wir haben tatsächlich schrieb es für Sie, und wir kümmerten sich die
Desinfektions Eingänge für Sie.
Aber in den vergangenen Jahren, Studenten mussten die Eingänge auf ihren eigenen Typ.
In p-Set 7, viele von Ihnen -
lassen Sie mich eröffnen eine weitere Datei.
>> So werden Sie feststellen, hier eine Menge Menschen in Problem-stellen Sie 7, nicht nennen
diese Funktion auf Zeichenfolgen.
Diese Funktion htmlspecialchars, wieder -
Diese Saite könnte einige Dinge haben dass in HTML etwas anderes bedeuten.
Wie eine Klammer, einem Quadrat oder einem Winkel Halterung etwas bedeuten in HTML.
>> Und so, wenn Sie, dass Sie, um den Druck Bildschirm oder wenn Sie nur das und
drucken, aus, um Ihre HTML, das könnte etwas tun, die Sie nicht erwarten.
So htmlspecialchars über alle, geht Zeichen, die Sonder haben
Tagungs-und entgeht ihnen.
So steigt aus wie der Text gedruckt Sie sehen, anstatt wollen
Schrauben Sie Ihre HTML.
Wir nannten diese Funktion in der Kopfzeile.
Und eine Menge Leute haben vergessen, rufen Sie diese Funktion in der
Code, den Sie geschrieben haben.
>> So, zum Beispiel, hatte, wenn ein Aktiennamen ein Winkel in sie und Sie vergessen
diese Funktion, dass der Winkel nennen Halterung könnte abgeworfen haben, was
Ihre HTML aussah.
Aber Aufruf dieser Funktion wird entkommen so dass es tatsächlich druckt als
Winkel und nicht werfen Sie Ihren HTML-Code.
>> Der gleiche Grund, den wir gesehen haben, manchmal, Schrägstriche vor dem Anführungszeichen in eine
printf Linie, weil wir nicht wollen, dass die Anführungszeichen Down The String.
Wir wollen sie drucken aus auf den Bildschirm.
Also all das ist die gleiche Idee.
Heißt das, Ihre Frage zu beantworten?
>> ZIELGRUPPE: Art der.
>> JASON HIRSCHHORN: Haben Sie haben einen Follow-up?
>> ZIELGRUPPE: Ich denke, die SQL-Injection Angriff hat damit zu tun?
Ich verstehe nicht, wie die beiden sind verwandt.
Warum würden Sie die specialChars tun?
>> JASON HIRSCHHORN: OK, so dass die SQL Injection-Angriff ist, wenn Sie injizieren
einige bösartige Strings in jemand Programm, und sie nehmen es einfach, und führen
die SQL-Abfrage mit einer Schnur Sie gab ihnen.
Wie Sie hier unten sehen, dass problematisch sein könnte.
Also so, wie Sie gegen das zu verhindern ist Sie nehmen ihre Zeichenkette, die sie geben
Sie - so diese Zeichenfolge hier -
und desinfizieren Sie es.
Sie entkommen all die Dinge, sind potenziell problematisch.
Sie sind also nicht als etwas interpretieren Sie sie nicht dass etwas bedeutet.
>> Und ein Beispiel dafür mit HTML ist diese Funktion.
Also es ist die gleiche Idee hier.
Und ich war nur zeigen Ihnen, andere Beispiele, wenn Sie habe
diese Idee gesehen.
Von der Flucht Benutzereingaben vor dem Drucken es zu einem Bildschirm bringt oder
in einer SQL-Anweisung.
>> ZIELGRUPPE: Also in diesem Fall kann der Benutzer ist Unordnung mit den Programmierer.
>> JASON HIRSCHHORN: Ja.
Mit all diesen Angriffen auf die Sicherheit, das ist immer der Benutzer im Allgemeinen oder
jemand wird zu Chaos versuchen mit Ihnen, dem Programmierer.
Und das sind Möglichkeiten, wie Sie gegen sie zu verhindern.
>> ZIELGRUPPE: Also ich habe eine Frage über Hash-Funktionen.
In Quiz 1 aus dem Jahr 2011, gibt es zwei Fragen zu einseitig Hashes.
Und ich habe mich nur gefragt was das bedeutete.
>> JASON HIRSCHHORN: OK, das Quiz?
Jahr 2011?
>> ZIELGRUPPE: Ja.
>> ZIELGRUPPE: Quiz 1?
>> ZIELGRUPPE: [unverständlich].
Das ist wie ein Passwort-Hashing.
Das ist nicht die Dinge -
>> JASON HIRSCHHORN: Welche Seite war es?
>> ZIELGRUPPE: Ich glaube, es war 9 oder 10, oder beides.
>> JASON HIRSCHHORN: All right, gehen Sie vor, Curt.
Sie können antworten, während wir aussehen.
>> ZIELGRUPPE: Ich denke, es spricht über ein Passwort-Hashing.
Wie, wenn jemand ein Passwort eingibt, Sie verwandeln sich in eine verschlüsselte Sache.
Das ist der Passwort-Hash, das ist, anders als eine Hash-Funktion,
setzt etwas in einer Hash-Tabelle.
>> JASON HIRSCHHORN: Mal sehen.
Lassen Sie mich nach oben ziehen, was sie geben, wie die Antwort.
Und dann werden wir durch sie hindurchgehen.
>> So gab ein großartiges Beispiel Curt einer Einweg-Hash.
Wenn wir das bisher gesehen haben, haben wir nehmen das Passwort ein und drehen -
erinnern, in p-Set 7, jemand könnte haben ein Passwort, das nur vergessen ist,
aber dann wird es in verschlüsselte einige wirklich lange Sache.
Die Einweg-Hash-Einrichtung ist es sehr einfach um von einem Weg auf die andere gehen, aber
es ist sehr schwer, aus gehen der andere Weg zurück.
>> Und damit Sie wissen, wenn Sie die Überprüfung wurden Passwörter der Menschen in Problem-
7 gesetzt, können Sie ihre dauern würde -
so, zum Beispiel, sagen, sie wollten ihr Passwort ändern, sie zu fragen, die Sie
für ihre alte Passwort ein.
Sie nahmen ihre alte Passwort ein.
Sie verschlüsselt sie.
Und dann verglich die beiden Verschlüsselungen eher als die ursprüngliche unencrypting
ein, weil es wirklich schwer, diesen Weg zu gehen.
Ja.
>> ZIELGRUPPE: Wie in der Tiefe funktioniert unser Verständnis TelNet sein?
>> JASON HIRSCHHORN: Wenn es erwähnt wurde kurz in der Vorlesung, nur eine kurze
Verständnis.
Wieder zurück auf die Antwort Avi Frage -
desto mehr Dinge kommen, desto wahrscheinlicher es wird Sie haben super zu sein
mit ihnen vertraut.
Wenn sie habe nur kommen in der Vorlesung, das ist nur ein Ort.
Aber wenn sie kommen in der Vorlesung, Schnitt, und ein Problem eingestellt, dann werden Sie
Wahrscheinlich haben super sein mit ihnen vertraut.
>> So hatte ich eine Frage früher über -
ist war Herbst 2010 -
Quiz ein, lassen Sie uns nach oben ziehen -
diese Frage auf Stacks und Warteschlangen was wir auch taten verbringen ein gutes Stück von der Zeit
reden in der Vorlesung, auch obwohl wir nicht wirklich
jemals traf es im Schnitt.
Also diese Frage gibt Ihnen eine Reihe von Befehlen und fragen, was
wird in diesem Fall gedruckt.
Also das ist eine völlig berechtigte Frage dass von Ihnen gestellt werden könnten,
Jungs, und dann euch sollten in der Lage sein, sie zu beantworten.
>> Also, warum nicht Sie für 30 sehe es Sekunden, und dann, wenn jemand will
die Antworten auf mich schlagen, und dann werden wir durch sie hindurchgehen.
Alle Rechte, die es eine Antwort gibt zu Frage 27?
Ja.
>> ZIELGRUPPE: Ist es 1, 2, 3, 3?
>> JASON HIRSCHHORN: Das ist richtig.
27 ist 1, 2, 3, 3.
Also schauen wir uns an, wie wir uns, dass.
>> Zunächst werden wir sagen, wenn s eine Warteschlange, was gedruckt wird?
So dass ein q first in, first out.
Wir haben gesehen, dass.
Wir haben gesehen, das Bild von den Menschen Warten an der Apple-
Bewahren Sie einige Produkt zu kaufen.
Die ersten Menschen sind in die ersten Menschen aus.
Die ersten Dinge, die in einer Warteschlange sind die ersten Dinge aus.
>> Also, wenn wir schieben etwas in einer Warteschlange, Sie drücken Sie die 1, dann knallen wir den 1.
Pop bedeutet nur herausnehmen.
In diesem Fall, nehmen Sie nur etwas aus.
Wir nehmen die erste Sache, das ist eine 1.
Also werden wir Dinge, die wir setzen drucken nach unten hier.
Dies ist nicht mehr in unserer Warteschlange.
>> Dann drücken wir auf eine 2 und eine 3, und wir Pop-off, die erste Sache.
Auch, weil es eine Warteschlange.
Also haben wir eine 2 bekommen, dann auf einem anderen haben wir 3 und rufen Pop wieder.
Unsere 3 ist der erste.
>> Und dann hatten wir eine ganze Reihe von andere Dinge und Call-Pop.
Aber wieder, da dies eine Warteschlange, first in, first out.
Wir nehmen Sie das erste, was dass jemals gestellt wurde in.
Das ist unser 3.
Und in diesem Fall haben wir keine Angst über all die anderen Dinge.
Also das ist, wenn dies eine Warteschlange.
Haben Sie Fragen zu einer Warteschlange?
>> Ein Stapel ist anders.
Was ist die Abkürzung haben wir für das Verständnis eines Stapels?
>> ZIELGRUPPE: Last in, first out.
>> JASON HIRSCHHORN: LIFO, denke ich.
Last in, first out.
So ein Beispiel eines Stapels sahen wir der Böden bei einer Speisesaal.
Was auch immer Fach an der Oberseite ist wird abgeholt.
Und dann, wenn neue Fächer kommen in, werden sie ganz oben in der.
Und dann, was auf Top wird abgeholt.
Also diese Schalen auf dem Boden Macht bleiben dort für eine Weile.
>> In diesem Fall wieder, wir ziehen Sie diese heraus.
Wir treiben auf der einen, so dass man ist der erste in der Schlange.
Und wir knallen etwas aus.
Und es gibt nur eine Sache gibt, also bewegen wir uns hier unten ein.
Dann am 2. und 3. haben wir und wir knallen etwas aus.
>> Aber wieder, da dies eine Warteschlange -
oder es ist ein Stapel, sondern -
wir nehmen, was in der letzten war.
Was auch immer in der letzten ist, kommt zuerst.
Und 3 ist in der letzten.
Also haben wir die drei da unten, dann wir auf einem anderen 3 setzen und wir
Pop wieder etwas.
Schließlich, auf der 4, 5 haben wir, 6 und 7, und hier haben wir Pop.
Und weil es ein Stapel nehmen wir was auch immer in den letzten genommen wurde und schreiben
dass hier unten.
So haben wir am Ende mit 1, 3, 3, 7.
Hat jemand irgendwelche Fragen zu Stapeln oder Warteschlangen oder dieses Beispiel?
>> OK.
Gehen wir zurück zu der Liste der Themen gehen.
Nicht, dass Art und Weise, auf diese Weise.
Welche Fragen haben die Menschen?
>> ZIELGRUPPE: Ich weiß nicht, wie wichtig das ist, aber ich wurde von der verwirrt
Unterschied zwischen verschiedenen Arten von Markup-Sprachen wie, kompiliert
interpretiert.
>> JASON HIRSCHHORN: Das ist eine gute Frage.
Ich denke, das ist ziemlich wichtig, so lassen über sie gehen schnell.
Die großen Sprachen, die wir bisher gesehen haben, sind C, PHP und JavaScript im Hinblick
von Programmiersprachen.
HTML, wie Sie erwähnt haben, ist nicht eine Programmiersprache.
Es ist eine Markup-Sprache.
Und dann müssen wir CSS, die auch keine Programmiersprache.
>> Wir haben auch gesehen, SQL, das ist nicht entweder eine Programmiersprache.
So SQL erlaubt Ihnen das Schreiben Abfragen einer Datenbank.
HTML ist eine Auszeichnungssprache.
Es definiert, wie die Dinge strukturiert sind.
Und CSS ermöglicht es Ihnen, die Dinge zu stylen.
Das ist wahrscheinlich das Ausmaß, für das, was Sie brauchen, um über diese drei kennen.
Aber es ist interessant zu Figur die Unterschiede zwischen C, PHP,
und JavaScript.
>> Damit wird eines der größten Unterschiede, wie Sie bereits erwähnt, ist, wie sie sind
zusammengestellt, oder was auch immer das Äquivalent ist.
Also C kompiliert wird.
Wir laufen immer einen Compiler.
Und dann wo sind deine Fehler wenn Sie den C-Compiler laufen?
Wo tut es Ihnen die Fehler im Code?
Wie Sie wissen, gibt es eine Fehler im Code in C?
>> ZIELGRUPPE: Es zeigt Ihnen, im Terminal.
>> JASON HIRSCHHORN: Es zeigt Ihnen, in der Terminal als Sie kompilieren sind.
Und, wenn es Fehler gibt, ist es wird nicht wirklich kompilieren.
So wissen Sie, dass es Fehler rechts entfernt, vor der Zeit, bevor Sie
sogar Ihren Code ausführen.
>> Natürlich könnten Sie Ihren Code laufen und erhalten Sie einen Segmentierungsfehler, aber das war
wahrscheinlich, weil du getan hast einige dumme Logik Sache.
Aber der Code mit technisch alle richtig und laufen konnte.
Also C-Code wird vor der Zeit zusammengestellt.
Was ist mit PHP-Code?
Wo waren Fehler in der PHP-Code?
Wie haben Sie wissen, dass Sie Fehler hatte in der PHP-Code?
>> ZIELGRUPPE: Laufzeit?
>> JASON HIRSCHHORN: Ja, wenn Sie würde es laufen, würden Sie das ausführen
PHP-Code in den Rücken.
Und dann haben Sie einen Bildschirm würde.
Sie könnten einige Dinge auf die Spitze zu sehen, aber dann würden Sie sehen, wie einige
orange, hässlich Tisch.
Und es würde Ihnen eine Zeilennummer und sagen wir, blah, blah, blah, dieses Zeug
hat nicht funktioniert.
>> Also PHP ist durch die Linie interpretiert Linie und auf dem Server ausgeführt.
Und dann das Ergebnis um Sie über gesendet.
Große.
In der Server-Zeile für Zeile ausgeführt und dann geschickt über zu Ihnen.
Und wenn es ein Fehler, es wird senden Sie die Fehler, aber haben Sie vielleicht
bekommen ein paar Sachen vor der Zeit.
So könnte es einige gearbeitet haben, aber später, ein paar Sachen vielleicht nicht haben
nicht funktioniert.
>> Was ist JavaScript?
Wo haben Sie JavaScript-Fehler sehen?
In S. 8 festgelegt, wenn du ein Fehler, woher wissen Sie das?
Wo würde es zeigen sich?
>> ZUSCHAUER: In der Konsole an der Unterseite.
>> JASON HIRSCHHORN: In der Konsole, auf der Unterseite.
Es würde Ihnen auch die Zeilennummer, und es wäre
zeigen sich auf der Unterseite.
Und JavaScript nicht ausgeführt wurde auf dem Server.
JavaScript wurde an Ihren Computer gesendet, und dann, wenn es Zeit war, laufen die
JavaScript war die JavaScript laufen Zeile für Zeile auf die
Kunden, auf Ihrer Seite.
Nicht der Server, der Client-Seite.
>> Und ähnlich war es laufen Zeile für Zeile.
Und dann, wenn Sie eine Fehlermeldung erhalten würde, es wäre an der Unterseite zeigen.
Ähnlich wie PHP, einige davon könnten ausführen und dann könnten Sie eine bekommen
Fehler später.
>> Auch ein wenig im Gegensatz zu PHP, wenn Sie bekam einen JavaScript-Fehler -
Sie sagen, nicht das Recht zu tun Code für eine Alert-Box -
Sie können Ihr Programm zu halten.
Die Alert-Box nicht funktionieren würde, aber Ihr Programm wäre in Ordnung.
Nur vielleicht, dass Funktion versagt.
>> So gibt es einige der größten Unterschied in Bezug auf, wie diese
Sprachen, oder wie der Programmcode Sie schreiben tatsächlich ausgewertet.
Es gibt auch andere Unterschiede in Bedingungen - der größte Unterschied
wir in Bezug auf Variablen gesehen haben in den verschiedenen Sprachen.
Also kann mir jemand einen Unterschied geben zwischen Variablen
in den drei Sprachen?
Ja.
>> ZIELGRUPPE: In C, sind sie streng typisiert.
In den beiden anderen, sie sind lose typisiert.
>> JASON HIRSCHHORN: Und was bedeutet das?
>> PUBLIKUM: Das in C, zu erklären, muss man die Art der Variablen, wenn
Sie deklarieren Sie die Variable, wie interbool oder Saibling.
>> JASON HIRSCHHORN: Excellent.
In C, mussten wir immer zu setzen ein Typ einer Variablen.
Und wir konnten nicht wirklich mischen Typen.
Sie konnten nicht eine ganze Zahl zu tun plus eine Zeichenfolge.
Aber wie wir in dieser anderen gesehen habe Sprachen, die Sie tatsächlich können Typen mischen,
und man nie wirklich zu geben haben etwas, eine Art, nie.
>> So, wie wir wissen, die Dinge sind Variablen in PHP und JavaScript?
>> ZIELGRUPPE: In PHP, beginnen sie mit einem Dollar-Zeichen.
In JavaScript, wenn Sie erklären, sie können, müssen Sie eine Bar zu haben.
>> JASON HIRSCHHORN: Richtig.
Also in PHP, beginnen sie mit einem Dollar-Zeichen.
Im JavaScript, müssen sie bar haben, obwohl sie manchmal nicht wirklich
müssen bar haben.
Aber das ist richtig.
>> Also das ist ein großer Unterschied zwischen Variablen.
Ich denke, das sind wahrscheinlich aus der Spitze von meinem Kopf, die beiden größten
Unterschiede zwischen diesen drei Sprachen.
Aber, ja.
>> ZIELGRUPPE: Und der Umfang der C-Variablen ist mit den geschweiften Klammern beschränkt,
wo die anderen, es ist wie, es stirbt, wenn es in nur einer Funktion,
aber sonst, Es ist -
>> JASON HIRSCHHORN: Richtig.
Also Rahmen ist etwas anders in C. Sie erinnern sich, geschweiften Klammern definieren
der Umfang der Variablen.
Also, wenn es im Inneren definiert, wenn ein Bedingung, die innerhalb einer for-Schleife ist,
die Variable existiert nur dort.
>> In JavaScript wird, ob eine Variable definiert innerhalb einer if-Bedingung -
innerhalb einer for-Schleife - es wird für existieren die Funktion, aber es wird nicht vorhanden
außerhalb dieser Funktion.
Also Rahmen ist ein wenig flexibler in JavaScript und PHP.
Dass die Frage beantworten?
OK, andere Fragen?
Wir können noch vier Minuten zu tun von Fragen, dann
wir werden in Codierung springen.
>> ZIELGRUPPE: Können wir gehen in Ajax und über das, was das ist zu sprechen?
>> JASON HIRSCHHORN: Sprechen Sie mit Avi nach.
Er stellte diese Frage früher.
>> ZIELGRUPPE: My schlecht.
>> JASON HIRSCHHORN: Keine Sorge.
>> PUBLIKUM: Was genau ist JSON?
>> JASON HIRSCHHORN: Was ist JSON?
Was ist Ihre Frage?
>> ZIELGRUPPE: Nur wirklich schnell, die Differenz zwischen
Print-und Echo in PHP.
>> JASON HIRSCHHORN: Warum gehst du nicht google der Unterschied zwischen Print-und Echo?
Leichte Unterschied.
Nicht, dass große Sache.
Aber Sie sollten auf jeden Fall Google es, und geben Ihnen eine gute Antwort.
>> JSON, wahrscheinlich größere Sache.
Steht für JavaScript Object Notation.
Und wann haben wir gesehen JSON verwendet?
Wann haben Sie gesehen -
warum du überhaupt, das Wort JSON?
Wann haben Sie es gesehen?
>> ZIELGRUPPE: Wenn wir bekamen Börsenkurse für Finanzen.
>> JASON HIRSCHHORN: Sie sah so es, wenn Sie immer wurden
Börsenkurse für Finanzen.
Und warum haben Sie es gesehen?
>> ZIELGRUPPE: Als wir das Abrufen alle Informationen,
kam in diesem Format.
>> JASON HIRSCHHORN: Also würden Sie bekommen -
ja.
Gehen Sie voran.
>> ZIELGRUPPE: [unverständlich] Informationen von einem Objekt?
>> JASON HIRSCHHORN: Sowohl von denen, zusammen ist die Antwort
wir suchen.
Sie möchten Informationen aus diese andere Webseite.
Und Sie hoffen, dass, wenn Sie Informationen bekommen, dass, wäre es
, Sie in irgendeiner Art präsentiert von standardisierten Format.
>> Jeder ist wohl vertraut mit kommagetrennten Werten.
Sie können eine Excel-Tabelle oder exportieren jede Art von Tabellenkalkulation als eine Liste von
kommagetrennte Werte.
Und die Kommas teilen alle die verschiedenen Felder.
JavaScript Object Notation -
JSON -
ist eine andere Art von standardisierten Layout der Dinge.
Und das ist, wie wir oft abrufen Informationen von unserem Ajax-Abfragen.
>> Also in diesem Fall, es bekamen wir von der Yahoo-Website.
Sie kehren Dinge zu uns in eine JSON-Objekt.
Und dann wissen wir, denn es ist ein Standard, wie es ist
aussehen würde.
So können wir durch das Array durchlaufen das ist für uns der Anordnung der zurück
Objekte, die an uns zurückgeschickt werden.
>> Wir haben wahrscheinlich benötigen, um die Schlüssel kennen, aber sie geben Sie in der Regel
Dokumentation in der Website, wenn Sie holen eine JSON
Notation für sie.
Ebenso können Sie JSON kodieren ein Objekt.
So gibt es eine Funktion JSON streichen kodieren.
Und so können Sie ein Objekt nehmen, dass Sie erstellt haben, JSON kodieren, und
geben sie nicht an etwas sonst, wenn Sie wollen.
Und JSON Decodier besteht auch für einen ähnlichen Zweck oder für
das Gegenteil Zweck.
>> ZIELGRUPPE: Brauchen wir wissen Codierung für Hash-Tabellen und versucht?
Oder brauchen wir nur zu verstehen, , wie sie verwendet werden, konzeptionell?
>> JASON HIRSCHHORN: Also, heben Sie Ihre Hand Wenn Sie nicht eine Hash-Tabelle für p-Set 4
mit einem Link-Liste.
Oder p set 5.
Das war also eine große Mehrheit der Menschen.
P Set 5, 6, wer weiß.
Vor langer Zeit.
>> So die überwiegende Mehrheit von Ihnen hat Hash-Tabellen mit Linklisten.
Und weil das ist wahrscheinlich die gemeinsamen Ansatz, und weil wir verbrachten
eine Menge Zeit damit, Link-Listen und Hash- Tabellen sollten Sie wahrscheinlich
ziemlich vertraut mit, wie man Code eine Hash-Tabelle und eine Link-Liste.
>> Und wenn Sie zurück denken, um dieses Problem eingestellt ist, war es nicht wirklich
so schwer, wie Sie erwartet haben.
Und es gab viel weniger Code als Sie erwartet haben.
Ich würde sagen, Sie sollten wissen, wie man Code eine Hash-Tabelle oder eine Linkliste.
Nicht, dass Sie gefragt werden würde, dass unbedingt, aber Sie sollten
sicherlich wissen.
>> Auch, wenn Sie durch die vergangenen Tests aussehen, Es gab eine Menge von
Fragen über das Schreiben von Funktionen auf Linklisten oder doppelt verkettete Listen.
Das scheint zu kommen jedes Jahr.
Rechts auf einen Link einzufügen Liste mit der rechten von einer Link-Liste zu löschen, rechts einfügen
eine doppelt verknüpfte Liste, et cetera.
Damit fühle ich mich ziemlich wohl sagen, Sie sollten wissen, dass.
>> Für Versuch, würde ich sagen, sollten Sie sicherlich wissen, wie es funktioniert, und vielleicht
geben einige Pseudocode für wie um es zu codieren und richtete ihn auf.
Aber es wäre das Schlimmste, was in nicht die Welt, wenn Sie nicht wissen, wie man
Code in C. Es wäre toll, wenn Sie wusste, wie man es in C-Code, aber ich denke,
wahrscheinlich Pseudocode für einen Versuch wäre sein, die Sie brauchen,
für einen Versuch zu kennen.
>> ZIELGRUPPE: Extra Kredit?
>> JASON HIRSCHHORN: Und mit derselben, wenn wir gehen in binäre Suchbäume, könnten Sie
müssen - und in der Vergangenheit gesehen haben, wir haben eine Menge getan - Sie wissen, wie
binären Suchbaum funktioniert.
Sie sollten wahrscheinlich in der Lage zu sein, Einrichtung eines Kontos in Pseudo-Code.
Aber weil die überwiegende Mehrheit der Menschen tat das nicht auf das Problem
Satz, würde ich sagen, es ist wahrscheinlich weniger wichtig, dass Sie wissen, wie man Code
und auf einen Baum so eingestellt.
>> Noch Fragen?
Auch wir können sie während fragen als wir durch einige Probleme.
OK, wir gehen weiter zu ziehen.
Weiter, dass die Folie für jetzt.
>> Sprechen von Bäumen, ist, dass die erste Frage habe ich für euch.
Denn dies ist ein Problem.
Ich würde sagen, es ist sehr wahrscheinlich, dass Sie bekommen ein Problem wie dieses auf Ihrem Quiz
fordert Sie auf, eine Art Code einfügen löschen, suchen, für eine Art
der Datenstruktur, die wir gesehen haben.
>> Das kommt jedes Jahr, und wir verbrachten ein viel Zeit in der zweiten Hälfte dieses
Semester geht über diese Datentypen.
So jetzt habe ich einen Knoten definiert in einem binären Suchbaum.
Und was ich möchte, dass Sie zu tun gegeben ist ein binärer Suchbaum, der beginnt
an diesem Knoten Sterne-Wurzel, füllen Sie bitte den Implementierung der Funktion unten,
was passiert, eine Suchfunktion können.
Und machen Sie es mit und ohne Rekursionen.
>> So möchte ich Sie, zwei Funktionen zu schreiben.
Man tut dies mit Rekursion, ein dies ohne Rekursion.
Und nicht davon ausgehen, dass die Wurzel wird nicht null.
So werden wir für die Ganzzahl i in der Suche der Baum ab Wurzel, und wir brauchen
dies rekursiv schreiben und iterativ.
Ja.
>> ZIELGRUPPE: Also du uns treu zurückkehren wollen wenn wir ihn finden, und falsch, wenn wir
Sie finden es nicht.
>> JASON HIRSCHHORN: Woher wissen Sie das?
Woher wissen Sie das?
>> ZIELGRUPPE: Ich war vorher zu fragen, aber ich war unter der Annahme, weil sie sagt, bool an
den Beginn der Funktion.
>> JASON HIRSCHHORN: Richtig.
Er sagt, bool, so dass ich noch nicht einmal zu sagen, was ich erwarten, dass Sie zurückkehren
weil er sagt recht.
Aber das ist richtig.
Zurück, wahr oder falsch.
>> Also, bevor Sie beginnen, würde ich empfehlen, wenn Sie nicht vertraut sind
binäre Suchbäume, schnell zeichnen ein Bild von ihm, um Ihre
Verständnis, richtig.
Das wird Ihnen auch helfen, beim Schreiben Ihr Code und Überprüfung es.
Auch Sie haben auch nicht so viel Zeit auf dem Quiz, um all die Dinge zu tun
dass wir fragen, was Sie tun.
So schreibt Pseudo-Code ist sehr hilfreich.
>> Und wir geben in der Regel etwa -
wenn die Pseudocode ist vollkommen richtig, das ist
in der Regel 50% auf eine Frage.
Es ist also nicht eine feste Regel, aber wenn schreiben Sie einfach Pseudocode, und es ist
richtig, es ist in der Regel 50%.
Also würde ich immer empfehlen -
wenn Sie unter Zeitdruck stehen, oder auch wenn Sie gerade versuchen, es herauszufinden -
beginnend mit dem Pseudocode.
Und schließlich, wenn Sie schreiben, könnte dies alle in C, das wäre fantastisch.
>> Werfen wir also 3 Minuten um zu diesem Programm zu arbeiten.
Und dann werden wir schreiben Pseudocode für sie nur einmal, und dann
wir werden es rekursiv codieren und dann iterativ.
>> Wenn Sie Fragen haben, zögern freie Hand heben.
Glücklich zu Fuß um und beantworten Sie sie bevor wir als Gruppe.
>> Lassen Sie uns wieder, und wir werden Pseudocode die rekursive Version
das, und dann werden wir es zu codieren.
So eine rekursive Funktion braucht zwei Dinge.
Dies könnte eine Frage sein, die Sie könnte gefragt werden.
Braucht zwei Dinge.
Wer kann die Hand heben und sagen Sie mir, was die beiden Dinge, die eine rekursive
Funktion benötigt?
Per Definition hat es zwei Dinge.
Was sind diese beiden Dinge?
New Händen.
Ja, Alden.
>> ZIELGRUPPE: Also ich bin mir nicht ganz sicher, ob das ist die Terminologie, aber -
>> JASON HIRSCHHORN: Ich bin froh Sie erhöhen Ihre Hand.
>> ZIELGRUPPE: Es braucht ein Basisfall und es muss eine rekursive Schritt.
>> JASON HIRSCHHORN: Perfect.
Es braucht ein Basisfall und eine rekursive Schritt.
Also, was ist unser Basis hier?
>> ZIELGRUPPE: F Wurzel gleich gleich null.
Es tut uns leid, nur in Pseudocode, wenn es null.
Wenn root ist null.
>> JASON HIRSCHHORN: Wenn root ist null.
Das ist ausgezeichnet.
Das ist unser Basisfall.
Das ist, was wir jedes Mal zu überprüfen.
Und Basisfall ist die erste, was Sie tun.
Wenn Sie die Basisfall getroffen, sind Sie fertig.
>> Jetzt müssen wir unsere rekursiven Aufruf, und ich würde sein bereit zu wetten, wir brauchen ein paar
rekursive ruft hier.
Weil es ein Baum, und wir könnten mehrere Wege zu gehen.
Also, wenn Wurzel ist null, wir sind gut.
>> Was schlagen Sie vor?
Und jetzt werde ich beginnen ruft auf euch, weil ich weiß, dass ihr
wissen das alle.
Aber Annie, was sollte die nächste Zeile sein?
Was, wenn wir es gefunden?
Was machen wir?
>> ZIELGRUPPE: Wenn wir es gefunden?
>> JASON HIRSCHHORN: Oder was sollte sein, dass -
gib mir den Pseudocode für die Linie, wo wir es gefunden.
>> ZIELGRUPPE: Wenn i gleich Wurzel i?
>> JASON HIRSCHHORN: Und dann, was machen wir?
>> ZIELGRUPPE: Zurück wahr.
>> JASON HIRSCHHORN: Großartig.
Also wenn i i -
oh, sie sind beide i bezeichnet.
Das bringt verwirrend.
Aber wenn i i return true.
Das ist wahrscheinlich der nächste was wir tun sollten.
Das macht Sinn.
>> OK, jetzt haben wir nicht unsere rekursive getan rufen noch, obwohl, weil eine rekursive
Anruf würde diese Funktion erneut aufrufen.
Also, was sollte der nächste Linie der Pseudocode sein?
Anna.
>> ZIELGRUPPE: Die linke Seite.
>> JASON HIRSCHHORN: Seien Sie konkret, wenn.
Dies ist ein binärer Suchbaum, so was hat die Überprüfung der linken Seite bringen?
>> ZIELGRUPPE: Also Knoten -
Es tut mir leid, Wurzel.
Und dann Pfeil nach links.
Knoten, Knoten, sorry.
Ich bin nicht richtig lesen.
Es heißt Knoten, oder?
>> JASON HIRSCHHORN: Es wird Wurzel genannt werden in dieser Funktion, aber so oder so.
Die linke Seite - ja?
>> ZIELGRUPPE: Wenn es nicht gleich i, dann werden wir zu rufen
die Funktion wieder?
>> JASON HIRSCHHORN: Das ist richtig.
Wenn es nicht gleich i, wir gehen , um die Funktion wieder aufrufen.
Aber welche Seite des Baumes werden wir , um die Funktion wieder anrufen?
>> ZIELGRUPPE: Auf der linken Seite.
>> JASON HIRSCHHORN: Wir sind nicht immer gehen, nennen es die Linke, wenn es
es nicht gleich.
>> ZIELGRUPPE: Oh, sorry.
Rufen rechts.
>> JASON HIRSCHHORN: Wir wollen wissen, speziell, wenn auch - denken Sie daran, in ein
binären Suchbaum, alles zu Auf der linken Seite ist kleiner.
Alles rechts Seite größer.
So ist es einfach nicht - ja, gehen Sie vor.
>> ZIELGRUPPE: Wenn es weniger als i, dann -
wenn es auf der linken Seite -
>> JASON HIRSCHHORN: Also, wenn ri ist weniger als -
so, wenn unsere Zahl kleiner als i ist, Welche Neben wollen wir hin?
>> ZIELGRUPPE: Wir wollen gehen auf der rechten Seite.
>> JASON HIRSCHHORN: Wir wollen gehen -
lassen Sie mich in einer schnellen Baum.
Wenn dies 5 wird diese 3 sein.
So dass, wenn ri von weniger als fünf, was Seite wollen wir gehen?
>> ZIELGRUPPE: Sorry, was?
>> JASON HIRSCHHORN: Unsere Nummer ist kleiner als die Anzahl, wir sind
Blick auf jetzt.
>> ZIELGRUPPE: Oh, dann wollen wir auf der linken Seite zu gehen.
Ja.
Entschuldigung.
>> JASON HIRSCHHORN: Genau.
Keine Sorge.
In der binären Suchbaum, alles niedriger ist nach links,
größer ist rechts.
Also, wenn unsere Zahl kleiner ist i Wir prüfen -
weil Sie in der zu sehen Knoten, hat es eine i -
dann wollen Sie auf der linken Seite zu gehen.
>> Und das ist einfach.
Was ist es, die andere Linie von Pseudo müssen wir schreiben?
Carlos?
>> ZIELGRUPPE: Die gleiche Sache, die Sie gerade wechseln es zu einer größeren als-Zeichen
und gehen nach rechts.
>> JASON HIRSCHHORN: Können Sie sagen, dass es ein weiteres Mal?
>> ZIELGRUPPE: Wenn unsere Zahl, die größer ist als i, gehen Sie nach rechts.
>> JASON HIRSCHHORN: Gut Job auf der Pseudocode.
Lassen Sie uns dies in Echt Code.
Und wieder wird diese Pseudo wahrscheinlich erhalten Sie, denn es ist
richtig, 50% auf diese Frage.
Aber diese Pseudocode übersetzt man auch zu einem, im wesentlichen, in den Code.
>> Also lassen Sie uns dies in C. Wer kann geben mir die erste Zeile Code?
Eigentlich zuerst, bevor ich das tue dass, lass mich ziehen vorbei -
>> ZIELGRUPPE: Ich habe eine Frage.
Warum haben Sie das einrücken Linie, die ich gab dir?
>> JASON HIRSCHHORN: Weil Ich konnte nicht schreiben.
Ich weiß nicht.
Sie haben Recht.
Diese Linie sollte dort sein.
>> OK, hier ist unsere Funktion.
Und lassen Sie mich über zu ziehen, auch, unsere Definition eines Knotens.
Was passiert, wenn wir nicht typedef schreiben?
Weiß jemand?
>> ZIELGRUPPE: Es würde nicht kompilieren.
>> JASON HIRSCHHORN: Es wäre kompilieren, ja.
>> ZIELGRUPPE: Wäre es ein einfach zu erklären Beispiel anstatt es eine neue
Geben Sie könnten mehrere erklären Instanzen?
>> JASON HIRSCHHORN: Also wäre es nicht wissen - wäre es nicht
nur eine Art zu erklären.
Man könnte immer noch eine Menge von Knoten.
>> ZIELGRUPPE: Aber wäre es nicht, müssen wir schreiben struct Knoten jedes Mal?
>> JASON HIRSCHHORN: Das ist richtig.
Sie müssten struct Knoten schreiben jedes Mal, statt nur Knoten.
Aber mit typedef, können Sie nur schreiben Knoten jede einzelne Zeit.
OK, der nicht gegeben hat - ja, Avica.
>> ZIELGRUPPE: Wenn root gleich equals null, false zurück.
>> JASON HIRSCHHORN: Great, und das ist unser Basisfall.
Nächste Zeile Code.
Jemand, der nicht gegeben hat mir eine Codezeile noch?
Ja.
>> ZIELGRUPPE: Root Pfeil i gleich ist gleich i.
Dann return true.
>> JASON HIRSCHHORN: Großartig.
Nächste Zeile?
Ja.
Jemand anderes?
Und dann zum nächsten gehen kann.
>> ZIELGRUPPE: Else, wenn Wurzel Pfeil ich weniger als ich wieder ist
Funktion namens find Wurzel -
>> JASON HIRSCHHORN: Es tut uns leid.
>> ZIELGRUPPE: Finde Wurzel weist nach links Komma i.
>> JASON HIRSCHHORN: Also, wenn ri größer als das, was in dem Baum, wollen wir
Sie auf der linken Seite?
>> ZIELGRUPPE: Nein, ich hatte, dass umgeschaltet.
>> JASON HIRSCHHORN: Welche?
>> ZIELGRUPPE: Nein, ja.
Ich habe eine weniger, als es zu unterzeichnen.
>> JASON HIRSCHHORN: Richtig, wenn ri weniger als das, was in der Wurzel -
unsere aktuelle Root - dann werden wir wollen nach links zu gehen.
Und was ist die letzte Zeile, du?
>> ZUSCHAUER: Im Grunde das Gleiche, außer schalten die größer oder
die weniger als die von links nach rechts.
>> JASON HIRSCHHORN: Excellent.
Hat jemand irgendwelche Fragen haben, über diese?
So einige andere Dinge, die würde richtig gewesen ist, dass
könnte die-ltiff sein.
Ratet mal, technisch gesehen, keine von diesen wirklich brauchen, auch zu-ltiff sein.
>> Außerdem gibt es wohl nur einem Fall hier unten.
Also das ist wahrscheinlich Ihre letzte Fall.
Sie brauchen noch nicht einmal, dass die-ltiff.
Aber wahrscheinlich gut zu schreiben es, klar zu sein.
Ja.
>> ZIELGRUPPE: So müssen Sie nicht das Quiz zu denken - wenn wir Fehler machen, zum Beispiel,
in der Syntax -
wenig Syntaxfehler -
wie funktioniert das in der Quiz-genommen werden?
>> JASON HIRSCHHORN: Generell auf dem Quiz, kleine Syntaxfehler oder kleine
Stil-Fehler nicht verlieren Sie Punkte.
Also, wenn Sie ein Semikolon vergessen hier wäre es OK.
Wenn Sie vergessen haben, diese Klammer zu schließen, das wäre OK.
>> Riesige Syntaxfehler, die zu ändern funktionelle Bedeutung des Codes
dramatisch, erhalten Sie möglicherweise Punkte für genommen.
Oder allgemein, nur mit einem Gehalt von Ihnen auf, ob Ihre
Code-Funktionen, auch -
nicht das Design so sehr, und nicht ihr Stil.
>> Lassen Sie uns nun einen iterativen Code Version von find.
Es wird also ziemlich ähnlich zu sein, aber Es gibt sicherlich sein wird
einige wichtige Unterschiede.
Aber unsere Pseudo kann wohl gehen -
wir immer noch nehmen kann eine Linie von der Pseudocode und herauszufinden, was die
Linie ist in diesem Fall.
>> Also in einem iterativen Version, was meinst du, Julia, sollte
werden in der ersten Zeile?
>> ZIELGRUPPE: Auch in iterativen boolean, Sie müssen sich für eine Schleife einrichten, richtig?
>> JASON HIRSCHHORN: OK.
>> ZIELGRUPPE: Also für wie, k, für x gleich 0 ist, ist x kleiner als ich.
Oder nein, das ist weniger als x Größe des Baums.
>> JASON HIRSCHHORN: Der Baum.
So haben wir nicht wirklich wissen, die Größe des Baum, und wir nicht wirklich wissen, für
wie oft wir gehen können, so was ist ein andere Art von Schleife, die sein könnte
in diesem Fall besser?
>> ZIELGRUPPE: Wenn sonst?
>> JASON HIRSCHHORN: Wenn sonst kann keine Schleife.
Also, was ist eine Art Schleife können wir nur gehen, bis ein Fall erfüllt ist?
Was ist das nur eine andere Art von Schleife in C neben einer for-Schleife?
>> ZIELGRUPPE: Während.
>> JASON HIRSCHHORN: Während, genau.
In einer while-Schleife, nicht müssen wissen, wie -
eine while-Schleife und for-Schleife tun können, die genau dasselbe, aber das schöne an
über eine while-Schleife ist brauchen wir nicht zu wissen, wie groß unser Baum ist.
So werden wir bis was gehen?
>> ZIELGRUPPE: Bis es gleich die Größe -
>> JASON HIRSCHHORN: Nun, es ist sehr ähnlich unserer rekursiven Fall.
So -
>> ZIELGRUPPE: Während Wurzel i nicht gleich i.
>> JASON HIRSCHHORN: Das ist ganz in der Nähe.
Während Wurzel i -
versuchen wir es.
Ich glaube nicht, dass [unverständlich]
wobei root i nicht gleich i.
Wir müssen möglicherweise in einem wenig ändern wenig, aber das klingt, es ist ziemlich
gut, für jetzt.
Also werden wir das tun.
>> Denken Sie auch daran, können wir nicht davon ausgehen, pro Frage.
Sie können nicht davon ausgehen, dass die Wurzel wird nicht null.
Also, was tun Sie das sehr zu denken erste, was wir tun sollten, ist?
>> ZIELGRUPPE: Nur das Gleiche tun Sache wie zuvor.
Wenn das Stamm gleich equals null, false zurück.
>> JASON HIRSCHHORN: Großartig.
Es könnte also null sein.
Deshalb wollen wir, um loszuwerden der es sofort.
Und dann werden wir prüfen, ob Wurzel i nicht gleich i.
Also, sagen, dass wir in diesem Stammbaum suchen 3, Wurzel i nicht gleich i, jetzt
wir sind in unserem while-Schleife.
Was wollen wir tun?
Und wieder, es wird schön sein ähnlich wie unsere rekursive Version.
Ja.
>> ZIELGRUPPE: Also würden Sie wollen durchlaufen, oder fahren Sie den Baum so lange wie
die Wurzel ist nicht gleich null.
>> JASON HIRSCHHORN: Solange die Wurzel nicht gleich Null?
>> ZIELGRUPPE: Die Wurzel Strich i nicht gleich null.
Nur die Wurzel, ja.
Als lang als die Wurzel ungleich null.
>> JASON HIRSCHHORN: Sie wollen also um dies in root zu ändern
nicht gleich null?
>> ZIELGRUPPE: Ja.
>> ZIELGRUPPE: Wir könnten kombinieren diese, oder?
Wir brauchen nicht die, wenn zunächst.
>> JASON HIRSCHHORN: OK, also, wenn wir tun nicht -
wenn wir sie zu kombinieren, so dass wir tun werden während Root ist nicht gleich null, und
passiert, wenn die Wurzel Null bei der zu sein ab, was machen wir hier unten tun?
>> ZIELGRUPPE: Zurück falsch.
>> JASON HIRSCHHORN: Großartig.
Also beide Wege wahrscheinlich würde gearbeitet haben.
Dies ist eine andere Art und Weise, und dies verbindet sie.
Aber noch einmal, wenn man so oder so haben, wir sind nicht, um aus Design
Punkte auf der Quiz.
Aber das sieht gut aus.
>> So, während Root ist nicht gleich null, was ist das erste
was wollen wir überprüfen?
Jemand anderes?
Null, was ist das erste, was?
>> ZIELGRUPPE: Wenn weniger als ri ist -
oh, ich denke, wenn wir bereits fand sie in der Wurzel.
Also, wenn Wurzel Pfeil i gleich i -
>> JASON HIRSCHHORN: Es tut uns leid?
>> ZIELGRUPPE: Wenn root Pfeil i gleich i ist gleich -
>> JASON HIRSCHHORN: Was tun wir?
>> ZIELGRUPPE: Zurück wahr.
>> JASON HIRSCHHORN: Großartig.
Und was kommt als nächstes?
Jeff, was ist der nächste Codezeile?
>> ZIELGRUPPE: Wenn ich weniger als root Pfeil i, dann ist gleich Wurzel Wurzel Pfeil links.
>> JASON HIRSCHHORN: Root Gleichen Wurzel Pfeil links.
Also das ist wahrscheinlich der größte Unterschied in dieser iterativen
Version im Gegensatz zu den rekursive Version.
Die rekursive Version, die wir rufen Sie die Funktion wieder.
Wir aktualisieren Wurzel beim nennen wir die neue Funktion.
Hier werden wir eine neue Funktion nicht aufrufen.
Wir sind einfach nur die Aktualisierung Wurzel in dieser Funktion.
Das ist ausgezeichnet.
Und was ist die letzte Codezeile?
Ja, Mario?
>> ZIELGRUPPE: Else Wurzel Gleichen Wurzel Pfeil rechts.
>> JASON HIRSCHHORN: Es tut uns leid?
>> ZIELGRUPPE: Root Gleichen Wurzel Pfeil rechts.
>> JASON HIRSCHHORN: Können Sie auch schreiben, so etwas wie dieses?
>> ZIELGRUPPE: Ich habe keine Ahnung.
>> JASON HIRSCHHORN: Sie kann es nicht.
Sie können das nicht und Gleichen.
OK, also das sieht gut aus.
Warum gehen wir nicht einfach nur das tun, zu bereinigen.
Das sieht gut aus, und das würde funktionieren.
Und wir würden ausbrechen.
>> Wenn root linken Seite war null oder Root-Recht null war, würden wir bis hierher zu kommen.
Wurzel wäre gleich null.
Wir würden von unserer Schleife zu brechen, und wir würden uns false zurück.
Also, wenn wir aus der Pause Schleife kehren wir falsch.
>> Und wieder war das eine while-Schleife perfekt hier, weil wir nicht wissen, wie
groß unser Baum ist.
Wir haben versucht, die for-Schleife schreiben, aber wir Sie realisiert haben, um herauszufinden, haben, wie
groß es ist vor der Zeit.
Ja.
>> ZIELGRUPPE: Wäre dies nicht eine binäre Suchbaum, wäre es echte Mathe-y sein
es iterativ zu schreiben, oder?
Wie, wenn es ein Baum, aber nicht notwendigerweise -
so war es nicht alle kleiner links, und alle größeren rechts.
Es wäre wirklich schwierig um über sie zu durchlaufen, oder?
Wir müssten zu retten, was früher war auf im Baum und gehen Sie zurück,
und solche Sachen.
>> JASON HIRSCHHORN: Wenn es nicht eine binäre Suchbaum, wenn es nur ein
Baum und die Dinge nicht sortiert wie diese -
und wir bereits realisiert, wenn Anna wurde uns zu helfen, dass die es
sortierten hilft uns sehr -
wir müssen, ja, immer sparen wo wir waren vorher.
Aber es könnte eine Menge sein wo wir waren previouslys.
Es könnte eine Menge der übergeordneten Knoten sein.
>> Wahrscheinlich der beste Weg, das zu tun wäre werden weiterhin Druck auf einige Dinge
Art der Stapel oder Warteschlange.
Sie würden nie brauchen, um diesen Code denn es ist ein schwieriges Problem.
Aber Sie einige Dinge auf einen Stapel schieben oder Warteschlange und dann knallen sie ab, und
dann auswerten.
>> Und dann muss eine andere Sache, wo Sie tatsächlich setzen die Knoten und
erstellen Sie dann das, und dann zu suchen, dass durch.
Das könnte der beste Weg, um es zu tun.
OK, alle Fragen zu diesem Problem?
>> Zielgruppe: Dieser befindet sich auf einem entsprechenden Hinweis.
Müssen wir Laufzeiten vergleichen für Hash-Tabellen, binär
Suchbäume, et cetera?
>> JASON HIRSCHHORN: Wahrscheinlich.
So machen wir das wirklich schnell.
Laufzeit für die Hash-Tabelle -
was sind die anderen?
Binäre Baum?
>> ZIELGRUPPE: Link-Listen.
>> JASON HIRSCHHORN: OK, lass es uns tun Einsatz.
Was ist die große O des Einsatzes auf einer Hash-Tabelle?
Was sind die Annahmen du machst?
>> ZIELGRUPPE: Sie befinden sich in der Einführungs Beginn der Linkliste.
>> JASON HIRSCHHORN: Wahrscheinlich das erste Annahme ist, gibt es keine Kollisionen.
Wenn es keine Kollisionen, dann das Einführungszeit ist eins.
Wenn es Kollisionen, und du bist Dabei separaten Verkettung und Einsetzen
zu Beginn der Verbindungsliste, dann ist auch Einsetzen konstant.
>> Wenn du tust, eine Hash-Tabelle, aber Sie haben eine andere Methode für den Umgang
Kollisionen mit, was ist eine andere Methode?
Was ist, ist eine andere Methode Umgang mit
Kollision in einer Hash-Tabelle?
>> ZIELGRUPPE: Lineare Programmierung.
>> JASON HIRSCHHORN: Lineare Programmierung.
Also werden wir weiter suchen für die nächste offene Stelle.
Das ist nicht konstant Einlegezeit.
Sie könnten zu durchlaufen die gesamte Tabelle, so dass
könnte der große O n sein.
Ja.
>> ZIELGRUPPE: Sonst nur die Verkettung?
>> JASON HIRSCHHORN: Wir haben getrennte Verkettung.
Das war der erste.
Das ist, was der Link-Liste.
Der Phantasiename ist getrennt Verkettung.
Es könnte jede Art von Listenstruktur sein wir gerade in Link-Liste zu tun.
>> Also noch einmal, Einfügung auf einer Hash-Tabelle konnte konstante Zeit.
Was ist mit Einsetzen auf einem Stapler Warteschlange?
>> ZIELGRUPPE: Ist nicht so konstant?
>> JASON HIRSCHHORN: Es ist Zeit konstant.
Du bist nur schieben Sie es auf.
OK.
Insertion, was waren die anderen?
Bei einem Versuch?
Was ist groß O Einschub auf einem Versuch?
>> ZIELGRUPPE: Länge ist konstant.
Länge der längsten -
die Länge der Wort Sie Einfügen.
>> JASON HIRSCHHORN: Es tut uns leid?
Warten Sie, so was habe ich gehört?
Sie sagte - was hast du gesagt?
Was war deine Antwort, Marcus?
>> ZIELGRUPPE: Die Länge des Wortes Sie sind Zeichen Einfügen,
vorausgesetzt, es ist ein Zeichen versuchen.
>> JASON HIRSCHHORN: OK, so die Länge des Wortes.
Wir werden eine Annahme machen, dass es ist eine Folge von Zeichen.
Sie sagten etwas anders aus.
Sie die Länge des längsten Wortes.
>> PUBLIKUM: Das ist nur konstant, oder?
>> JASON HIRSCHHORN: Warum sollte konstant zu sein?
>> ZIELGRUPPE: Wie, wenn Sie großen O verwenden Notation, dann ist es nicht variieren
von der Anzahl der Dinge, sind bereits in der Versuch.
>> JASON HIRSCHHORN: Also, wir würden sagen, es ist Zeit konstant.
Es ist konstant Insertion und das ist, weil diese Idee -
sagen, wir haben ein Wort, das 45 ist, oder ein Wort, das 60 ist, dass
eine konstante Zahl.
Und es wäre einfach nur eingefügt werden in konstanter Zeit.
>> In der Praxis aber, wäre es nicht sein, natürlich passieren, in einer Millisekunde,
zum Beispiel.
Aber wir sagen würden große O ist Konstante für einen Versuch.
Und das ist einer seiner größten Vorteile.
>> Was ist mit dem Einsetzen in einer Linkliste?
Nur eine generische, sortiert Link-Liste?
Ja.
>> ZIELGRUPPE: Ich hatte eine Frage.
Auf der Test, würden sie uns die immer fragen Einlegezeit, die vier Schritte ist,
oder so etwas?
Oder ist es nur -
wenn Sie sagen, ist eine Einlegezeit, das bedeutet, dass nur konstante Zeit?
>> JASON HIRSCHHORN: Ja, würden sie immer fragen, ist es groß O von n?
Big O log n?
N Quadrat konstant.
Das sind wirklich die einzige diejenigen, die Sie wissen müssen.
Was Insertion auf Link-Liste sortiert?
>> ZIELGRUPPE: Ich hatte eine Frage -
eine Frage -
>> JASON HIRSCHHORN: Was ist die Antwort auf diese Frage, obwohl?
>> ZIELGRUPPE: Warten Sie, was haben Sie fragen?
>> JASON HIRSCHHORN: Was ist der große O Einsetzen in eine Link-Liste sortiert?
>> ZIELGRUPPE: One?
Keine Wartezeit, keine Wartezeit, n.
>> JASON HIRSCHHORN: N. Neben der Link-Liste.
Und was war Ihre Frage?
>> ZIELGRUPPE: Also würden Sie schreiben o k o oder von 1 für die -
>> JASON HIRSCHHORN: Oh.
Ich würde o von 1 zu schreiben, wahrscheinlich.
Es war eine andere Datenstruktur das wäre gut gewesen.
Baum, binären Suchbaum.
Was ist für ein Einsetzen binären Suchbaum?
>> ZIELGRUPPE: Login.
>> JASON HIRSCHHORN: Also, was ist das Schlimmste Fall in einem binären Suchbaum?
Also, wenn wir gerade bei 5 zu starten, und jeder Zahl größer als 5 ist, dann
wir haben 5, 7, 9, 11, und so weiter bekam.
In diesem Fall ist es im Grunde nur ein Link Liste, und wir müssen alle einfügen
die Art und Weise am Ende.
Also es ist groß O von n ist.
>> Das könnte unsere schlimmsten Fall zu sein auf einem binären Suchbaum.
Natürlich, man kann nie bauen würde ein binärer Suchbaum mit 5 in die
Mitte, zu wissen, würde 5 die niedrigste Zahl.
Aber es könnte sein, wenn Sie von vorne anfangen.
Sie haben Fragen zu diesem, bevor ich dem Weg zu einer anderen Frage?
Das war eine gute Frage.
Ich möchte wissen, von großen O -
>> PUBLIKUM: Was ist mit der Suche für diese vier?
>> JASON HIRSCHHORN: Auf jeden Fall haben wir hat das Suchen und Sortieren.
Wir haben alle diese Algorithmen, rechts.
Warten Sie, das war für ein Quiz?
War das überzogen -
haben Sie schon, dass Frage über ein Quiz?
Der große O-Laufzeit von binären Suche Insertion Sort, Bubble-Sort?
>> ZIELGRUPPE: Ja.
>> JASON HIRSCHHORN: Wenn Sie hatten, dass Frage Quiz 0, stehen die Chancen werden Sie nicht
Sie erhalten die gleiche genaue Frage auf ein Quiz.
Könnte noch gut sein für diejenigen kennen.
Sie sollten dann hoffentlich wissen, gh bereits.
>> Aber auch andere logarithmische Laufzeiten sind wahrscheinlich gut zu wissen.
Dinge, die nicht auf 0 Quiz bedeckt waren.
Wie alle diese Operatoren auf diese abstrakten Datentypen.
>> OK, machen wir weiter.
Dieser sollte recht schnell sein.
Und das eine neue Sprache, die wir haben ist nicht tatsächlich vor codiert.
Dies ist eine Frage Vorstellung in PHP-Code.
So betrachten unter den PHP-Array.
Schreiben Sie PHP-und / oder HTML-Codes, so dass sie gibt eine Tabelle mit zwei Spalten mit TFs
Namen und Häuser.
>> Sie haben das noch nie gemacht, dieses spezifische Problem.
Dies sollte aber sehr vertraut zu sein was Sie in Problem tat Satz 7.
So würde ich bereit zu wetten, werden Sie sein gebeten, etwas in PHP-Code,
ist sehr ähnlich zu dem, was man habe in Problem Satz 7.
>> Erstens ist die Anordnung nicht spezifisch.
Welche Art von Array ist das?
>> ZIELGRUPPE: Assoziative.
>> JASON HIRSCHHORN: Es ist ein assoziatives Array.
Und was ist der Unterschied zwischen einem assoziatives Array und ein Objekt?
>> ZIELGRUPPE: Ein Objekt-Array hat einen Index von ganzen Zahlen, und ein assoziatives Array
ist ein Index einer Zeichenfolge, oder so ähnlich.
>> JASON HIRSCHHORN: Also eine Reihe von Objekte würden Indizes haben
Zahlen, aber ein Objekt Felder.
Es hat die Felder Namen wie nennen, Haus, Student.
Haben Sie eine Idee?
>> ZIELGRUPPE: Nun, assoziative Array ist in PHP, oder?
Und Objekt ist in JavaScript?
>> JASON HIRSCHHORN: Ehrlich gesagt, es gibt keine Unterschied zwischen den beiden.
Beide haben Strings als Schlüssel und kann haben im Grunde nichts als der Wert.
Verschiedene Sprachen nennen ein Sache assoziatives Array,
eine Sache, ein Objekt.
Also ehrlich gesagt, es gibt keine wirkliche Unterschied, aber es gibt sicherlich einige
syntaktischen Unterschiede zwischen den beiden.
Ja.
>> ZIELGRUPPE: Also ist auch Objekt unter codiert die Kapuze als Hash-Tabelle, dann?
>> JASON HIRSCHHORN: Was tun Sie meine, unter der Haube codiert?
>> ZIELGRUPPE: Uns wurde gesagt, dass assoziative Array war technisch ein
Hash-Tabelle.
So ist auch technisch Objekt eine Hash-Tabelle?
>> JASON HIRSCHHORN: Ich werde nicht , diese Frage zu beantworten.
Ich werde umgehend mit Ihnen darauf.
Aber ich würde nicht denken, entweder von denen so.
Aber in keiner Weise, assoziative Array und Objekt, in der Regel verwenden die Menschen die
Begriffe synonym.
In diesem Fall ist der interessante Teil ist, können Sie Tasten.
Strings als Schlüssel, sondern als nur einfache Zahlen.
>> Also habe ich darüber gesprochen, diese für eine Weile.
Ich hoffe, einige Leute haben bekommen begann zu diesem Thema.
Wir werden einige PHP und HTML zu schreiben Code, so dass wir eine zweispaltige erhalten
Tisch mit TFs Namen und Häuser.
>> OK, ich würde auch gerne einen Header Zeile auf dieser Tabelle.
Also werde ich gerade zu bekommen in diese.
Wir werden in eine Datei, neu, und wir sind zu gehen -
>> OK.
Wie starte ich eine Tabelle?
Was ist der Tag, Michael, um eine Tabelle zu starten?
>> ZIELGRUPPE: Tabelle.
>> JASON HIRSCHHORN: Tabelle.
Und wenn ich einen Tag zu öffnen, was muss ich sonst noch?
>> ZIELGRUPPE: Ein Kopf?
Oder, ich denke, Klasse.
>> JASON HIRSCHHORN: Also, sorry.
Angenommen, dass wir bereits geschrieben haben, doctab, HTML, all das Zeug.
Aber wenn ich diese Tabelle öffnen Tag, was sonst muss ich schreiben?
Validierung für HTML?
>> ZIELGRUPPE: Schließen Sie es.
>> JASON HIRSCHHORN: Schließen Sie den Tag.
Wie schreibe ich eine enge-table-Tag?
>> ZIELGRUPPE: Slash Dot-Tabelle.
>> JASON HIRSCHHORN: Slash Tisch, groß.
Wahrscheinlich macht es Sinn, beide schreiben von jenen zusammen, weil
Sie haben es zu tun.
OK, wenn ich eine Kopfzeile, wie kann Ich schreibe eine Kopfzeile mit Titel?
>> ZIELGRUPPE: Ist es weniger als 10 Stunden in der Nähe -
TR, ja.
>> JASON HIRSCHHORN: TR?
>> ZIELGRUPPE: Dann elbe, der Schrägstrich, ja.
>> JASON HIRSCHHORN: OK, und geben Sie mir zwei Spalten.
>> ZIELGRUPPE: T D?
>> JASON HIRSCHHORN: OK.
Ich möchte zwei Spalten.
Bedeutet dies, gib mir zwei Spalten?
Wie viele Spalten ist das?
One.
Lassen Sie uns also diese Adresse kopieren und.
>> Also eigentlich, auf dem Quiz, das alles Code dass wir bisher geschrieben wurde
tatsächlich, die Ihnen.
Aber man sollte wohl immer noch wissen, wie es zu schreiben.
Ja.
>> ZIELGRUPPE: Ihr Haus ist zwischen den beiden.
>> JASON HIRSCHHORN: Boom.
Es sollte genau dort gehen, oder?
Guter Ruf.
Also noch einmal, all das ist Code tatsächlich Ihnen auf der tatsächlichen Quiz gegeben.
Aber es macht Spaß, es zu schreiben, und Sie sollten wissen, wie es zu schreiben.
Also das ist, wo Sie brauchen , um den Code zu starten.
Was müssen wir hier schreiben?
>> Sorry, muss ich ändern der Name dieser Datei.
So sparten wir in einem. HTML-Datei, nicht in einem. PHP-Datei.
Diese Dinge würde nichts bedeuten in einem. PHP-Datei.
So sind wir in einem. HTML-Datei.
Was ist das erste, was Ich brauche, um zu schreiben?
Ich möchte einige PHP setzen Code in eine HTML.
>> ZIELGRUPPE: PHP, wie eine andere Karotte PHP und Fragezeichen, oder?
>> JASON HIRSCHHORN: Großartig.
Und wie beende ich das?
>> ZIELGRUPPE: Mit einem Fragezeichen.
>> JASON HIRSCHHORN: Das ist großartig.
Das ist das erste, was ich brauche, wenn ich will einige PHP-Code in hier setzen.
>> ZIELGRUPPE:. Ich dachte, ein PHP Datei konnte HTML zu nehmen.
>> JASON HIRSCHHORN: Ja.
A. PHP-Datei kann einige nehmen HTML und angezeigt werden.
Das war mein schlecht.
Ich habe nur versucht zu imitieren Wie es auf dem Quiz.
>> OK, sorry, Sie zu verwirren.
Ja, practice.HTML.
Jetzt werden wir zu setzen einige PHP-Code in.
Was die erste Zeile der PHP-Code sollte ich schreiben?
Ich werde durch diese Anordnung gehen und machen es zu einem Tisch.
Ja.
>> ZIELGRUPPE: Sie können entweder a für H-Schleife oder eine for-Schleife.
>> JASON HIRSCHHORN: OK, was Sie verwenden?
>> ZIELGRUPPE: Ich würde eine for-Schleife verwenden.
Denn, und dann können Sie Dollarzeichen zu tun i gleich 0 Semikolon Dollar
unterzeichnen i kleiner als 2 ist.
Und dann Semikolon i-Dollar unterzeichnen i plus plus.
>> JASON HIRSCHHORN: Wie Sie wissen, um eine 2 zu verwenden?
>> ZIELGRUPPE: Da gab es zwei assoziative Arrays innerhalb der größeren
assoziatives Array.
>> JASON HIRSCHHORN: Die große Ding nicht ein assoziiertes Array.
Die große Sache ist nur ein normales Array.
Aber Sie haben Recht, es gibt zwei assoziative Arrays
innerhalb unserer größeren Array.
Das ist, warum Sie zwei verwenden.
Ich fühle mich unwohl davon aus, dass sie sind 2, so was ist ein Weg, um zu schreiben
dies ohne die Annahme, dass sie 2?
>> ZIELGRUPPE: [unverständlich]?
>> JASON HIRSCHHORN: OK, wie Sie schreiben, dass?
>> ZIELGRUPPE: Foreach-Dollar-Zeichen tfs oder wie Dollarzeichen tf.
>> JASON HIRSCHHORN: OK, so dass für jede tfs tfs so, ich will jetzt
wieder, mein Tisch.
Also, wer kann mir die nächste Codezeile?
>> ZIELGRUPPE: Drucken und dann in Zitate, Halter tr Ende
Halter, Zitat Ende.
End Klammern, Semikolon.
>> JASON HIRSCHHORN: OK, und was ist das jetzt?
>> ZIELGRUPPE: Es wird zu sagen, neue Zeile.
Es wird legte die Tag für eine neue Zeile.
>> JASON HIRSCHHORN: Richtig, diese PHP, wie sprachen wir über früher - das
PHP wird ausgewertet werden, und dann es geht um diese Datei ein ausdrucken
Tabelle Schlepptau, und dann, dass HTML ausgewertet.
Wir sind nur das Kopieren dieser HTML wir hier hatten auf.
Ja.
>> ZIELGRUPPE: [unverständlich]?
>> JASON HIRSCHHORN: Es tut uns leid?
Es ist hier richtig.
Herbst 2012.
Die Antworten Schauen Sie nicht, lösen wir es gemeinsam.
So drucken wir Tabellenzeile.
Also du bist wahrscheinlich der Schwung der Dinge.
Was ist die nächste Zeile Code müssen wir schreiben?
Assam, geben Sie mir die nächste Codezeile.
>> ZIELGRUPPE: Sie müssen den Namen des tf.
Tf offenen Klammern Anführungszeichen nennen geschlossenen Klammern.
>> JASON HIRSCHHORN: Geben Sie mir ihre Namen.
>> ZIELGRUPPE: Sie müssen das zu drucken.
>> [Zwischen VOICES]
>> JASON HIRSCHHORN: OK, wie kann ich drucken?
>> [Zwischen VOICES]
>> JASON HIRSCHHORN: Ich bin fehlt jetzt etwas.
Was bin ich?
>> ZIELGRUPPE: Sie benötigen ein Dollar-Zeichen.
>> JASON HIRSCHHORN: Was sonst bin ich dabei?
Alles, was wir bisher gedruckt ist die tr.
>> ZIELGRUPPE: Schließen Sie die tr danach.
>> JASON HIRSCHHORN: Also wir brauchen die tr nach zu schließen.
Wer sieht, was wir verpassen auf der Linie 16?
Ja, Anna.
>> ZIELGRUPPE: Sie müssen sich öffnen ein td und geschweiften Klammern.
>> JASON HIRSCHHORN: Und wo setzen wir geschweiften Klammern?
>> ZIELGRUPPE: Um die tf Namen.
>> JASON HIRSCHHORN: So?
>> ZIELGRUPPE: Ja.
Und dann schließen Sie die td.
>> JASON HIRSCHHORN: Wie das?
>> ZIELGRUPPE: Haben Sie doppelte Anführungszeichen müssen Markierungen neben den geschweiften Klammern?
>> JASON HIRSCHHORN: Gleich hier?
Nein, haben Sie nicht.
Also das ist genau richtig.
Ja.
>> ZIELGRUPPE: So ist der Unterschied zwischen dem, und encatenating mit Punkten ist, wenn
Sie Punkte verwenden, müssten Sie haben die Anführungszeichen, dann ein Punkt,
dann der Punkt -
>> JASON HIRSCHHORN: Richtig.
Sie sagen also, es gibt eine ultimative Diese Art des Schreibens so.
Was der Verkettungsoperator in JavaScript?
>> ZIELGRUPPE: Ein Pluszeichen.
Sie haben vergessen, legte die geschweiften Klammer zurück.
>> JASON HIRSCHHORN: Großartig.
Und es gibt eine weitere Zeile Code fehlt.
Wer kann mir die letzte Zeile geben Code wir verpassen?
>> ZIELGRUPPE: Just genau dasselbe, nur mit Haus statt Namen.
Groß
>> JASON HIRSCHHORN: Großartig.
Und Ihre Syntax ist genau das richtige für , Dinge an einem assoziierten Array.
So in der aktuellen Quiz, sind Sie bis hier tatsächlich gegeben.
So wurde dieser Code, die Ihnen.
Alles, was Sie zu schreiben hatte wurden diese vier Zeilen und denken Sie daran,
schließen Sie die Tabelle Tag.
Ihr Jungs tatsächlich all das und mehr.
Ja.
>> ZIELGRUPPE: Also wäre es funktionell sein das gleiche, wenn Sie gerade hatten, dass alle in
ein grosser Druckanruf, oder?
Und dann einfach verkettet es auf, et cetera?
>> JASON HIRSCHHORN: Wie das?
>> ZIELGRUPPE: Ja.
Es würde einfach nicht gut aussehen, wenn Sie waren es bei der Suche, wenn Sie die Kontrolle sind
das Element auf Ihrer Website, oder?
>> JASON HIRSCHHORN: Ich stimme.
Wenn ich diese Webseite geladen wird, würde ich mich der Lage, diese PHP-Code zu sehen, überhaupt?
>> ZIELGRUPPE: Nein
>> JASON HIRSCHHORN: Nein
Und eigentlich würde ich nicht.
>> ZIELGRUPPE: Dies ist nicht HTML, oder?
Sie könnten also in der Lage zu sein -
>> JASON HIRSCHHORN: Also das würde PHP Server-Seite bewertet werden.
PHP wird immer Server-Seite ausgewertet, so Sie sind nie in der Lage, PHP-Code zu sehen.
>> ZIELGRUPPE: Aber Sie in der Lage sein würde sehen das Ergebnis der Drucke.
>> JASON HIRSCHHORN: Richtig.
Und es könnte ehrlich gesagt nicht setzte alles auf der Linie.
Es könnte es schön zu formatieren für Sie, oder es könnte sie auf eine Zeile setzen.
Unklar.
Aber ja, guter Punkt.
>> ZIELGRUPPE: Wie kommt es, ist kein Text-Highlighting für
einer der PHP-Befehle?
Denn ich erinnere mich, dass.
>> JASON HIRSCHHORN: Weil es ein . HTML-Datei hier oben an der Spitze.
Dort gehen Sie.
>> ZIELGRUPPE: Wenn wir das täten die anfängliche Methode mit der for-Schleifen, rechts, wenn wir
wollte eine tfs zuzugreifen, würden wir tun tfs Halterung 0 Winkel, dann
[Unverständlich]?
>> JASON HIRSCHHORN: Sie würde -
so dass Sie für das sagst for-Schleife, die Sie würde in Dollar-Zeichen tfs Halterung 1 zu tun
oder i, rechts.
Oder Dollar-Zeichen i Klammer schließen und dann eckige Klammer
Anführungszeichen, ja.
>> OK, ausgezeichnet.
Wir haben noch eine weitere schnelle ein.
Sieben Minuten, so will ich , über diese ein zu gehen.
Dies ist ein weiteres Beispiel.
Wir sind jetzt eine ganz andere Sprache.
>> Wir haben einige HTML-Code.
Es ist eine Art von klein auf dem Bildschirm, aber Ich möchte, dass durch sie wirklich aussehen
schnell, und kann mir jemand sagen, wenn ich diese Web-Seite zu laden,
was würde ich sehen?
Beschreiben Sie alles über diese Webseite.
Noah?
Was würde ich sehen?
>> ZIELGRUPPE: Code am vorderen Ende des Google mit einem Gefühl für Text und ein
Submit-Button.
>> JASON HIRSCHHORN: Und was würde sagen, die Taste?
>> ZIELGRUPPE: Senden.
Oh, Suche.
Es tut mir leid.
>> JASON HIRSCHHORN: Es wäre Such sagen.
Denken Sie daran, Namen.
Wofür verwenden wir Namen für?
Das name-Attribut, was ist dass verwendet?
>> [Zwischen VOICES]
>> PUBLIKUM: Das ist der Name für, wenn es angeklickt wird?
>> JASON HIRSCHHORN: Das könnte sein.
Aber was machen wir in der Regel sehen - warum geben wir diesen Namen Warteschlange?
Warum haben wir das gesehen?
Ja.
>> ZIELGRUPPE: Heißt das nicht, werden Index der Super globale Variable?
>> JASON HIRSCHHORN: Ja, in der Regel, wenn diese Form einreichen würde, und dann, wo
würde dies werfen?
Welche Seite?
Noah, auf welcher Seite würde dies werfen?
>> ZIELGRUPPE: Ich bin mir nicht sicher.
>> JASON HIRSCHHORN: wo konnten, können wir sie finden?
Wo finden Sie was Seite es unterwirft sich?
Welche Codezeile?
>> PUBLIKUM: Form Aktion.
>> JASON HIRSCHHORN: Genau.
Aktion.
So legt der Suchseite.
Backslash-Suche.
Also das ist genau richtig.
Welche Methode?
>> ZIELGRUPPE: Holen.
>> JASON HIRSCHHORN: Holen.
Genau.
So lesen wir dies.
Das wird eine Form sein.
Du bist genau richtig.
Zwei Dinge, über die Form, den Titel des Seite und die obere würde Google werden.
>> So, hier sind zwei Fragen sollten Sie der Lage sein, zu dieser Seite beantworten.
Wenn diese HTML lebt auf dieser Website und gibt der Benutzer Fehler in diesem Text
Feld hier, was wird URL der Benutzer finden sich auf
Absenden des Formulars?
>> So haben wir das hier richtig.
Ich werde zurück zu diese Seite, wenn.
Ich schreibe diesen ersten Teil.
Kann jeder sehen hier?
OK, Mario, Sie denken, Sie wissen?
Welche Seite?
>> ZIELGRUPPE: Backslash-Suche.
>> JASON HIRSCHHORN: Ich werde hier nach unten.
OK, Backslash Suche Frage Marke q gleich Fehler.
Wer einen anderen Vorschlag?
Ja.
>> Also, wie bekommen wir das?
Nun, wir zuvor gesehen haben.
Und Sie kamen mit dieser früher.
Sie hatten Recht, Noah, dass die Aktion wird uns sagen, was
Seite werden wir.
>> Wir wissen auch, welche Methode.
Wir tun bekommen.
Und der Unterschied zwischen GET und POST bekommen, dass wird in der URL
und Post nicht.
Also, wenn ich schrieb Post genau dort in die Verfahren, was wäre anders?
>> ZIELGRUPPE: es wäre einfach Schrägstrich suchen sein.
>> JASON HIRSCHHORN: Es wäre Suche nur Slash werden.
Nichts hier passieren würde.
Aber weil es eine zu bekommen, die URL wird wie folgt angezeigt.
Zuerst sehen wir ein Fragezeichen und wir sehen den Namen und den Wert.
Sagen, es war eine andere Textfeld und Ich gab ihm einen Namen von r und I-Eingang ein
Wert, Raupe.
Was würde das jetzt aussehen?
Ich habe noch ein Textfeld, gebe ich ein Namen von r und einem Wert von Raupe.
>> ZIELGRUPPE: Nach bar müss das kaufmännische Raupe.
>> JASON HIRSCHHORN: Das ist Ampersand nicht.
>> ZIELGRUPPE: Oder einfach nur, was auch immer der und Symbol.
>> JASON HIRSCHHORN: Ja, nein.
Du hattest Recht, ich war falsch.
Das ist wie ein g.
>> ZIELGRUPPE: Caterpillar.
r gleich Raupe, sorry.
>> JASON HIRSCHHORN: Gibt es r nicht drin?
>> ZIELGRUPPE: Nein, es gibt.
>> JASON HIRSCHHORN: Wir reden etwa, dass nach der Klasse.
Das ist genau richtig.
Also das und ist richtig.
Und dann haben Sie viele davon haben könnte, und sie würden alle verkettet
zusammen mit den und.
Also das ist genau richtig.
>> Es gibt eine weitere Frage.
Skizzieren Sie den HTML-DOM, beginnend mit dem Dokument.
Wir könnten, dass in zwei Minuten zu tun.
Wir werden es hier zu tun.
Ich werde wieder auf diese Seite zu gehen.
OK, fangen wir mit dem Dokument.
>> Was kommt als nächstes?
Also, wenn Sie durch lesen sind -
>> ZIELGRUPPE: HTML.
>> JASON HIRSCHHORN: HTML ist der nächste.
Wir werden Tag für Tag gehen.
Was ist nach HTML?
>> ZIELGRUPPE: Head.
>> JASON HIRSCHHORN: Head.
Was ist nach Kopf?
>> ZIELGRUPPE: Titel.
>> JASON HIRSCHHORN: Titel.
Und Titel hat einen Wert von Google, aber ich werde nicht
schreiben, dass in für jetzt.
OK, wo kommt Körper gehen?
>> ZIELGRUPPE: Auch kommen aus der HTML.
>> JASON HIRSCHHORN: Genau.
Körper löst sich von hier.
Hat jeder sehen, warum das der Fall ist?
Sie sollten wahrscheinlich in der Lage sein, um herauszufinden diese aus, auch, selbst wenn ich nicht
dieses schöne Einzug.
>> Die Vertiefung Art gibt es weg, aber man kann sehen, dass der Kopf-Tag hat
geschlossen worden, die wir wahrscheinlich bedeutet, kann nicht hier unten zu gehen.
Wir müssen zurückgehen bis zu was auch immer war direkt vor dem Kopf
Tag oder darunter.
Wir sind sogar mit dem Kopf-Tag.
>> Und unter Körper geht Formular.
Unter Form, gibt es zwei Eingänge.
OK.
Das ist alles was ich habe.
Quiz 1 ist morgen.
Ich bin so aufgeregt, für euch.
Es wird eine Explosion sein.
>> Wenn Sie -
>> ZIELGRUPPE: [Applaus]
>> JASON HIRSCHHORN: Ach halt, halt.
Aber nein, ich mache nur Spaß.
Wenn Sie irgendwelche Fragen haben, rechts nach Abschnitt werde ich draußen sein.
Wenn Sie Fragen haben, heute Abend, gerne auch telefonisch, per E-Mail, GChat,
Brieftaube mich.
Viel Glück morgen.
Haben Sie ein wunderbares Thanksgiving-Pause wenn ich Sie nicht vorher zu sehen.
Und ich werde dich nach Thanksgiving sehen am Dienstag für unsere letzte
Abschnitt Party aller Zeiten.
>> ZIELGRUPPE: [unverständlich].
>> JASON HIRSCHHORN: Großartig.
OK, ich werde euch nächstes sehen Woche oder in zwei Wochen.
Und viel Glück morgen.