JASON HIRSCHHORN: Benvenuto, tutti, in settimana 10. Questa è una settimana emozionante perché domani è Quiz 1, che avremo al secondo. Oggi in sezione, stiamo per andare su alcune risorse per il quiz, e allora io rispondere a tutte e tutti domande voi ragazzi avete. E avremo finalmente terminare con alcuni problemi pratici. Siamo in grado di passare l'intera sezione rispondere alle domande. Siamo in grado di passare l'intera sezione andando oltre i problemi di pratica. Ci sarà solo espanderà per riempire il lo spazio e il tempo che abbiamo. Così ho messo questa lista ogni settimana, ma è particolarmente importante questa settimana. Per lo studio, se non avete già iniziato, oh boy. Ma spero che hai iniziato già. E si sta andando attraverso i materiali e le risorse elencate qui. Consiglio vivamente un certo numero di questi. In particolare, dispense sono incredibilmente importante ed utile. Il study.cs50.net fornisce un grande primer su molti gli argomenti che trattati. Ha anche qualche grande praticare problemi. E poi, Google è grande, troppo. Non so che cosa usereste per. Ma usare Google, pure. Entrare in contatto con me se avete qualunque domande, commenti o preoccupazioni. Guardare oltre la sessione di revisione diapositive da ieri sera. Oppure, se avete un po 'di tempo, guarda il video. Essi forniscono un sacco di utili materiali e informazioni. E cercare di coprire, se non tutti, molti di gli argomenti che abbiamo trattato e che si potrebbe vedere sul quiz. Parlando del quiz, che sarà domani. E 'lungo 75 minuti. Molti di voi stanno prendendo in 1 ore, e alcuni di voi sono prenderlo alle 5:30. Per il momento si sta prendendo e l' posizione si sta prendendo, accertarsi si estrae il documento sulla homepage CS50.net. Ricordate che è possibile ottenere un 8 1/2 da 11 fogli da portare con voi. Spesso, le persone non usano questo Scheda a tutti durante il quiz. Ma in realtà, si tratta di un incredibilmente strumento di studio utili. Così, mettendo insieme quel foglio è quello Ho passato probabilmente tre o quattro ore facendo quando stavo studiando per CS50, e che era facilmente il più utile modo ho potuto studiare per il quiz. Quindi, anche se si dispone di alcune altre persone di guide di studio per guardare e utilizzare come riferimenti, mi raccomando rendere la vostra guida di studio, mettendo quella roba insieme. Che aiuta veramente si impara tutto il materiale. Ultimo ma non meno importante in questa sezione, Dopo domani quiz c'è una più lecture - Lunedi prossimo. C'è una sezione di più, non la prossima Martedì prima del Ringraziamento, ma l' Martedì dopo. Ci incontreremo insieme per una finale addio partito e anche facendo qualche fresco cose per arrivare a voi ragazzi entusiasti ulteriori studi in informatica. C'è un altro progetto, ancora una fiera, ancora una hackathon. Ci stiamo avvicinando alla fine del CS50, che è eccitante - ma anche, se siete come me, un po 'triste. Prima di andare avanti, qualcuno ha domande su cosa abbiamo visto finora? OK, bene andiamo su alcune questioni che avete per il quiz e gli argomenti potremmo coprire. Quindi questa è una lista che ho messo insieme. E non è affatto esaustivo, ma si spera rinfrescare la memoria, se si avere alcune domande su una di queste argomenti, o se avete domande su problemi pratici da quiz negli anni passati. Ho avuto un paio di domande che sono state mandato a me, ma voglio tenere a bada su quelli per un secondo. Qualcuno ha delle domande, problemi che non capivano, risposte che non capivano , per cominciare? Avi. AUDIENCE: puoi semplicemente andare oltre DOM e Ajax davvero veloce? Come, ciò che abbiamo bisogno di sapere o dovrebbe capire su di loro? JASON HIRSCHHORN: ho intenzione di rispondere in generale la questione di cosa faccio necessario conoscere determinato argomento x? Perché ho la sensazione che molti di voi stanno andando a chiedere a me che, o sono curioso di sapere questo. Quindi, nella misura in cui l'argomento è stato coperto in conferenza, o sezione, o study.cs50.net, un problema di set, è dovrebbe avere familiarità con esso. Quindi non c'è bisogno di conoscere ogni tipo di tag che è disponibile in formato HTML o ogni tipo di attributi o proprietà si può dare qualcosa in CSS. Ma se avete visto in un esempio di lezione, se avete visto in un problema set, probabilmente si dovrebbe essere a conoscenza con essa, in particolare le cose che hai visto in conferenza. Così abbiamo discusso il documento oggetto modello un po 'in sezione, più in conferenza. È necessario avere familiarità con che gran parte di essa. E si dovrebbe avere familiarità con Ajax nella stessa misura. Non abbiamo mai visto incredibilmente avanzato o Esempi complicate di Ajax, in modo non avete intenzione di essere invitato fare qualcosa di incredibilmente complicato. Ma si può essere chiesto, come faccio effettuare una chiamata Ajax con jQuery? Che è qualcosa che hai visto un numero di volte prima, sia nella rivedere sessione e in conferenza, e è solo due linee-ish di codice. Così che è qualcosa che si dovrebbe essere a conoscenza. Ma ancora una volta, per tutti questi argomenti, se hai visto prima, è un gioco equo. E potremmo chiedere - ovviamente, siamo chiederemo cose che voi non hanno mai visto prima. Coding qualcosa che non hai visto prima. Il che non vuol dire che non hai visto gli strumenti per risolvere che problema prima. Avete visto questi strumenti. Ad esempio, il quiz 1, se è necessario il codice strlen. Non abbiamo codificato strlen prima. Ma si sa come utilizzare un ciclo for, sapete come usare se le condizioni. Tu sai come scrivere le variabili in C. E sarà la stessa cosa qui. Lei non sta andando ad essere chiesto di fare qualcosa che non avete mai visto prima, ma si potrebbe essere chiesto di, come, mettere qualcosa insieme in un modo nuovo, o risolvere un altro tipo di problema. Ci dispiace che non era specifico per il tuo domanda, ma non posso rispondere su ogni singolo argomento quello che fare o non hanno bisogno di sapere. Ma anche, scusate, ultima cosa su questo. Abbiamo trascorso molto più tempo sulle liste di link che abbiamo su Ajax. Non hai utilizza Ajax in un set problema. Una delle caratteristiche centrali di tale problema di set che era elenchi di link. E abbiamo passato un sacco di tempo in conferenza e la sezione di utilizzarlo. Quindi, le probabilità sono elenco di link verrà su più molto sul quiz di Ajax volontà. O le domande hanno a che fare con il collegamento elenco varrà più punti. Così si può certamente messa a fuoco e stretta in su le cose che sono più rischia di venire perché abbiamo speso più tempo su di loro. OK altre domande? Già. AUDIENCE: Possiamo andare oltre l'uso di funzioni anonime in JavaScript? Sono un po 'confuso sono a tale proposito. JASON HIRSCHHORN: Quindi in JavaScript - Sto cercando di pensare come mi potrebbe scrivere questo su - quindi cerchiamo di realtà aprono questo codice. Quindi questo è il codice che abbiamo fatto la scorsa settimana. E hai visto questo prima se si erano qui nella sezione la scorsa settimana. Oppure hai visto qualcosa simile alla prima. Ma si può guardare a questa prima linea. Questo è il modo di iniziare - ognuno ha visto prima. Se si vuole mettere un po 'di codice JavaScript, metti dentro questo, assumendo si sta utilizzando jQuery. Questo sta dicendo, non fare nulla fino caricato del documento. E poi, Curt, che vedete qui stiamo facendo qualcosa di simile - funzione di parentesi aperte, chiuse parentesi. Quindi non stiamo dando questa funzionare un nome. Non stiamo andando a definire questa funzione si suppone a correre e poi chiamare un mucchio di volte. Stiamo solo dicendo che il presente documento prende già una funzione. Un paio di cose da fare. E noi non vogliamo passare il tempo dandogli un nome o salvarlo per perpetuo. Vogliamo solo per eseguire alcune cose. Quindi una funzione anonima ordinamento di serve a tale scopo. Se non avete intenzione di usare qualcosa più e più volte, quindi non è necessario per dare un nome - è sufficiente vuole utilizzare una volta - si dovrebbe solo dire funzione, per esempio, in questo caso, e sei solo definire qualcosa che si potrebbe dare un nome. Come potremmo tirare questa funzione su e dargli un nome e poi chiamare quel funzionare qui. Ma noi non dobbiamo, perché non lo facciamo vuole perdere tempo dandogli un nome o un sprecando qualcosa nel nostro spazio nome. E vedrai che un sacco. Per esempio, vediamo che molto in questo codice, ma hai visto questo prima, quando si sceglie qualcosa - eseguire questo tipo di codice. Potremmo definire il codice che vogliamo da eseguire quando si clicca, in questo caso, questo ID, come una funzione separata e quindi eseguire tale funzione. Ma in questo caso, stiamo solo saltare questo passo e spostandolo in qui e solo per definire tutto che vogliamo che accada e non dandogli un nome. Che ancora potrebbero non avere risposto alla sua domanda. PUBBLICO: No, lo fa. Voglio dire, credo solo che non lo faccio davvero ottenere perché sarebbe un funzionare a tutti, però. Perché non è davvero chiamato. In realtà non ha un nome. JASON HIRSCHHORN: E 'una funzione nel senso che si tratta di una serie di passaggi, come si farebbe mettere in funzione. E allora ecco perché chiamiamo è funzione anonima. Non stiamo andando a dargli un nome. Non stiamo andando a sprecare provare di nominare, ma abbiamo potuto. Funzioni anonime, è può sempre dare un nome. Così, per esempio, questo codice proprio qui, potremmo inserire questo codice all'interno di un funzione e quindi chiamare questa funzione qui. Invece, diciamo, non stiamo andando preoccuparsi di questo. Stiamo solo andando a scrivere tutto qui. E 'come a volte quando si sta scrivendo un quattro ciclo in C - voi ragazzi hanno visto questo prima - forse sei iterazione attraverso un forloop in i è uguale a 0. I è inferiore a strlen. Oppure stai passando un po ' array, è possibile salvare matrice indice i in qualche variabile. E si utilizza quella variabile. Quindi non c'è bisogno di riscrivere matrice Staffa i più e più e più volte. E questo è un po 'come una variabile dummy. Non è che serve a molto diverso per rendere il codice un po 'più pulito e più facile da leggere. Funzione simile qui. Basta rende un po 'più facile, ma funzionalmente non c'è alcuna differenza. Questo risponde alla tua domanda? PUBBLICO: Sì. JASON HIRSCHHORN: OK .. Mario? AUDIENCE: Ieri hanno spesso messo Funzione parentesi evento. Vuol dire qualcosa? O è per cose come che avrebbero fatto document.ready evento funzione. JASON HIRSCHHORN: Abbiamo visto questo, e ancora una volta, queste sono cose piccole che Probabilmente io non voglio spendere troppo tempo su. Perché a volte non voglio che la gente ottenere fuori di testa che non hanno sentito parlare di queste cose più di tanto. Ma abbiamo parlato un po ' gestori di eventi. Così succede qualcosa, e poi questa funzione viene eseguita. E poi vogliamo anche sapere alcuni dettagli su ciò che è accaduto in questo caso. Quindi, pensare di nuovo al problema di impostare 4. Questo è probabilmente il modo più semplice per capire che in break out. C'era un po 'di codice - come un evento sarebbe accaduto, ma evento può significare molte cose. Se potrebbe significare il mouse viene cliccato, si potrebbe significare si preme un tasto freccia, et cetera, et cetera. Ma è tutto salvato in questa generico cosa chiamata eventi. E allora possiamo dire, è questo evento questa cosa? O è questo evento questa cosa? Oppure, che tipo di successo con questo evento? Ecco perché si crea la variabile lì per salvare le informazioni supplementari su cosa esattamente è accaduto che si sta andando a voler utilizzare nella funzione. Ma ancora una volta, questo è probabilmente uno dei cose meno importanti da essere super familiarità con. OK, a quali altre domande hanno persone avuto, o pietre d'inciampo che hanno incontrato durante la rassegna? Ci appoggiamo a quella lista. Che dire durante il quiz di pratica, se persone hanno preso quelli già? Quali sono stati alcuni problemi che scattato voi ragazzi up? So per certo che l'anno scorso quiz era davvero difficile. AUDIENCE: Puoi spiegare cosa un attacco SQL injection è? JASON HIRSCHHORN: OK, grande. Quindi abbiamo parlato di questo un po '. C'è una lezione sulla sicurezza. E ancora, come ho detto prima, questa è una parte. Ma sarete frustrati sul quiz quando si leggono qualche piccolo due punti domanda, e siete come, quando ho mai imparato? Tutte queste cose in quelle lezioni che non hai pensato che si deve sa, o si potrebbe sorvolare perché che non avevano a che fare con la set problema, quelli sarà probabilmente venire nuovamente sul quiz. Così, fresco, cose divertenti che avete appena pensò David diceva per voi godere, egli si diceva per voi godere e di fare basta essere super entusiasta di imparare tutto c'è da imparare scienza del computer. Quelle cose anche venire a quiz. Così, anche queste piccole cose che non hanno fatto riferirsi direttamente al vostro problema set, come voi ragazzi siete a conoscenza di Quiz 0, probabilmente venire. E questo è un buon esempio di qualcosa. Quindi un attacco SQL injection è quando si ottenere alcune informazioni da parte dell'utente e si vuole inserire in una tabella utilizzando un inserto SQL dichiarazione, ma si non sanificare l'ingresso prima del tempo. Così, ovviamente abbiamo visto Istruzioni SQL. Mi limiterò a apro - andiamo - andremo alla recensione - Io penso, che la coprì? Penso Samala fatto. Così possiamo arrivare - AUDIENCE: Dove hai trovato questo? JASON HIRSCHHORN: Quindi, se si va a CS50.net, quiz, e allora si può scorrere su e ottenere diapositive dalla sessione di revisione. Ma si può vedere questo è un buon esempio di un attacco SQL injection. Prendiamo alcune informazioni da parte dell'utente e ci danno una stringa, e poi ci desidera inserire la stringa in un database. Generalmente ci accingiamo a disinfettare che ingresso, il che significa che ci sono alcuni personaggi che sono pericolose. Ad esempio, in stringhe SQL, queste citazioni - apici singoli o doppi apici - significare qualcosa. Significano fine a questa stringa qui. E così se l'utente si dà una sola o una doppia citazione, potrebbero essere cercando di inciampare la query SQL e inserire alcune cose cattive in esso. E se lo fanno, si potrebbero guadagnare controllo del database o fare un po ' cose che non si vuole che facciano. Ecco perché ogni volta che prendiamo SQL query, si sanificare l'ingresso prima metterlo nel database, che significa fuggiamo quei personaggi. Noi parleremo in un secondo. Ma la lunga storia breve, una SQL injection attacco è se non lo fai - se non si prendono cura di ingresso che ti hanno dato prima di mettere il banca dati, che possono, come vedete giù qui, eseguire una query che, di fatto - hanno messo nel loro codice qui e questa linea di selezione qui selezionerà tutto dalla tabella a prescindere di ciò che è dato la password. Perché hai il 1 o uguale a 1. Quindi è, fondamentalmente, per farla breve, un modo per prendere sul database. La domanda, allora, per voi ragazzi, è dove nel set p 7 hai disinfettare tutti gli ingressi per le query SQL? Dov'è finito quel passo accaduto? Dove si impedisce SQL injection attacchi da accadendo in p set 7? Già. AUDIENCE: Cripta? JASON HIRSCHHORN: Così non è stato cripta. Non abbiamo fatto si esegue questa operazione per questo particolare problema impostato, ma succede nella funzione di query. In realtà abbiamo scritto per voi, e abbiamo preso cura del igienizzante ingressi per voi. Ma negli anni passati, gli studenti hanno avuto per digitare gli ingressi per conto proprio. In p set 7, molti di voi - fammi apro un altro file. Così si noterà qui un sacco di persone, in un problema set 7, non ha chiamato questa funzione sulle stringhe. Questa funzione htmlspecialchars, ancora una volta - questa stringa potrebbe avere alcune cose che in HTML dire qualcos'altro. Come un tutore, una piazza o un angolo Staffa significare qualcosa in HTML. E così se si stampa che verso il schermo o se si prende questo e la stampa che fuori al vostro HTML, che potrebbe fare qualcosa che non ti aspetti. Così htmlspecialchars va su tutti coloro caratteri che hanno speciale incontro e sfugge loro. Così viene stampato come testo si vuole vedere, piuttosto che avvitare il codice HTML. Abbiamo chiamato questa funzione nell'intestazione. E un sacco di gente ha dimenticato di chiamare tale funzione nel codice stavi scrivendo. Così, per esempio, se un nome di magazzino ha avuto un staffa angolare in esso e si è dimenticato per chiamare questa funzione, che l'angolo Staffa avrebbe potuto buttato fuori quello che il codice HTML sembrava. Ma chiamare questa funzione sfuggirà che così in realtà viene stampato come un staffa angolare e non buttare il vostro codice HTML. La stessa ragione che abbiamo visto, a volte, barre prima di doppie virgolette in un linea printf perché non vogliamo che l' virgolette doppie lungo la corda. Noi vogliamo stampare fino allo schermo. Quindi, tutto questo è la stessa idea. Questo risponde alla tua domanda? AUDIENCE: Kind of. JASON HIRSCHHORN: Ti avere un follow-up? PUBBLICO: Credo che la SQL injection attacco ha a che fare con questo? Io non capisco come i due sono correlati. Perché si fanno i specialChars? JASON HIRSCHHORN: OK, in modo che il SQL attacco iniezione è quando si inietta alcune stringhe maligni in qualcuno di programma, e hanno appena prendono e corrono la query SQL con una stringa che ha dato loro. Come potete vedere qui, che potrebbe essere problematico. Quindi il modo si impedisce contro che è si prende la stringa che danno voi - così questa stringa qui - e disinfettare esso. A fuggire tutte le cose che sono potenzialmente problematico. Quindi non li interpreta come qualcosa di questo significa qualcosa. E un esempio di quella con HTML è questa funzione. Quindi è la stessa idea qui. E stavo solo mostrando voi altri esempi di quando hai visto questa idea prima. Di sfuggire input dell'utente prima della stampa fuori di uno schermo o conclude all'interno di un'istruzione SQL. Pubblico: Quindi, in questo caso, l'utente si scherzi con il programmatore. JASON HIRSCHHORN: sì. Con tutti questi attacchi alla sicurezza, che è sempre generalmente l'utente, o qualcuno, sta cercando di pasticciare con voi, il programmatore. E questi sono modi si può prevenzione contro di loro. PUBBLICO: Così ho una domanda sulle funzioni hash. In Quiz 1 a partire dal 2011, ci sono due domande su hash unilaterali. E mi stavo chiedendo che cosa volesse dire. JASON HIRSCHHORN: OK, che quiz? 2011? AUDIENCE: Già. AUDIENCE: Quiz 1? AUDIENCE: [incomprensibile]. Ecco come hash di una password. Questo non è mettere le cose - JASON HIRSCHHORN: A che pagina era? PUBBLICO: Penso che sia stato 9 o 10, o entrambi. JASON HIRSCHHORN: Va bene, andare avanti, Curt. È possibile rispondere mentre cerchiamo. PUBBLICO: Penso che stia parlando su hash di una password. Come, quando qualcuno entra una password, si accende in una cosa crittografato. Questo è l'hash della password, che è diversa da una funzione hash che mette qualcosa in una tabella hash. JASON HIRSCHHORN: Vediamo. Fammi tirare su quello che dare come risposta. E poi ci camminiamo attraverso di essa. Così Curt ha dato un grande esempio di un one-way hash. Quando abbiamo visto prima, abbiamo prendere la parola e girare - ricordare, in p set 7, qualcuno potrebbe disporre di una password che è solo una password, ma poi viene crittografato in qualche cosa di veramente lungo. L'hash unidirezionale significa che è molto facile per passare da un modo all'altro, ma è molto difficile passare da l'altra via del ritorno. E così si sa, quando si stavano controllando le password delle persone in difficoltà set 7, si dovrebbe prendere il loro - così, per esempio, dicono che volevano cambiare la password, si chiede loro per la loro vecchia password. Hai preso la vecchia password. Crittografati esso. E poi confrontato i due crittografie piuttosto che unencrypting dell'originale uno, perché è davvero difficile andare in quel modo. Già. PUBBLICO: Come approfondito funziona il nostro comprensione di TelNet devono essere? JASON HIRSCHHORN: se è stato detto brevemente in conferenza, solo una breve comprensione. Ancora una volta, torna alla risposta alla domanda di Avi - più le cose salire, più è probabile si devi essere super familiarità con loro. Se sono venuti solo in conferenza, questo è solo un posto. Ma se entrano in conferenza, sezione e un problema di set, poi si probabilmente essere super familiarità con loro. Così ho avuto una domanda da in precedenza in merito - IS era autunno 2010 - Quiz 1, cerchiamo di tirare up - questa domanda su pile e code, che abbiamo fatto spendere un bel po 'di tempo parlando in conferenza, anche anche se non abbiamo davvero mai colpito in sezione. Quindi questa domanda che sta dando una serie di comandi e ti chiede cosa viene stampato in questo caso. Quindi questa è una domanda del tutto ragionevole che potrebbe essere chiesto di voi ragazzi, e poi voi ragazzi dovrebbero essere in grado di rispondere. Allora perché non si guarda per il 30 secondi, e poi se qualcuno vuole proporre le risposte a me, e poi ci camminiamo attraverso di essa. Va bene, che ha una risposta alla domanda 27? Già. PUBBLICO: E '1, 2, 3, 3? JASON HIRSCHHORN: Proprio così. 27 è 1, 2, 3, 3. Quindi diamo un'occhiata a come siamo arrivati ​​che. In primo luogo, stiamo dicendo, se s è una coda, che cosa viene stampato? Quindi un q è primo in, first out. Abbiamo visto prima. Abbiamo visto l'immagine del popolo in attesa presso l'Apple Negozio per comprare qualche prodotto. Le prime persone sono le prime persone fuori. Le prime cose in una coda sono le prime cose. Quindi, se spingiamo qualcosa in una coda, si preme il 1, poi abbiamo pop 1. Pop significa solo togliere. In questo caso, basta prendere qualcosa. Prendiamo la prima cosa, che è un 1. Così metteremo le cose che stampare giù qui. Questo non è più nella nostra coda. Poi ci spingiamo su un 2 e un 3, e abbiamo pop fuori la prima cosa. Anche in questo caso, perché è una coda. Così otteniamo un 2, poi abbiamo messo su un altro 3 e chiamare di nuovo pop. Il nostro 3 è primo. E poi abbiamo avuto un sacco di altre cose e chiamata rapida. Ma ancora, poiché questa è una coda, first in, first out. Prendiamo la prima cosa che è stato mai messo dentro Questo è il nostro 3. E, in questo caso, non ci preoccupiamo su tutte quelle altre cose. Allora è se questo è una coda. Avete domande su una coda? Una pila di diverso. Qual è l'acronimo che abbiamo per la comprensione di una pila? PUBBLICO: last in, first out. JASON HIRSCHHORN: LIFO, credo. Ultimo in, first out. Così abbiamo visto un esempio di una pila di vassoi in una sala da pranzo. Qualunque vassoio è in cima viene raccolto. E poi se nuovi vassoi vengono in, ottengono messo in cima. E poi tutto ciò che è in top viene raccolto. Quindi quei vassoi della potenza inferiore rimanere lì per un po '. In questo caso, ancora una volta, faremo disegnare questo fuori. Spingiamo su uno, così si è in prima linea. E abbiamo pop qualcosa fuori. E c'è solo una cosa in là, così ci spostiamo 1 quaggiù. Poi abbiamo messo il 2 e 3 e abbiamo pop qualcosa fuori. Ma ancora, poiché questa è una coda - o si tratta di uno stack, piuttosto - prendiamo tutto ciò che era in ultima. Tutto ciò che è in ultima esce prima. E 3 è in ultimo. Così abbiamo messo il 3 laggiù, poi abbiamo messo su un altro 3 e abbiamo pop qualcosa di nuovo. Infine, abbiamo messo sul 4, 5, 6 e 7, e qui abbiamo pop. E perché è una pila, prendiamo ciò che è stato messo in ultimo e scrivere che quaggiù. Così si finisce con 1, 3, 3, 7. Qualcuno ha dei dubbi pile o code, o questo esempio? OK. Torniamo alla lista degli argomenti. Non è così, in questo modo. Quali altre domande le persone hanno? PUBBLICO: Non so quanto sia importante questo è, ma sono stato confuso dal differenza tra i diversi tipi di lingue come il markup, compilati, interpretato. JASON HIRSCHHORN: Ecco una buona domanda. Penso che sia un po 'importante, quindi cerchiamo di andare oltre in fretta. Le grandi lingue che abbiamo visto finora sono C, PHP e JavaScript, in termini di linguaggi di programmazione. HTML, come lei ha ricordato, non è un linguaggio di programmazione. E 'un linguaggio di markup. E poi abbiamo CSS, che è anche non un linguaggio di programmazione. Abbiamo anche visto SQL, che non è un linguaggio di programmazione o. Così SQL consente di scrivere query per un database. HTML è un linguaggio di markup. Esso definisce come le cose sono strutturati. E CSS permette di acconciare le cose. Questa è probabilmente la misura di ciò che si necessario conoscere quei tre. Ma è più interessante figura le differenze tra C, PHP, e JavaScript. Così uno dei più grandi differenze, come lei ha ricordato, è come sono compilato, o qualsiasi altra cosa l'equivalente è. Quindi C viene compilato. Ci sarebbe sempre eseguire un compilatore. E allora dove sono i tuoi errori quando si esegue il compilatore C? Dove è la mostra errori nel codice? Come sai c'è un errore nel codice in C? AUDIENCE: Esso mostra nel terminale. JASON HIRSCHHORN: Esso mostra in terminale come si sta compilando. E se ci sono errori, non sarà effettivamente compilarlo. Così si sa che ci sono errori giuste via, prima del tempo, prima di anche eseguire il codice. Naturalmente, si potrebbe eseguire il codice e ottenere un errore di segmentazione, ma che era probabilmente perché hai fatto qualche cosa logica sciocca. Ma il tuo codice con tecnicamente tutti corretti e potrebbe correre. Così codice C viene compilato prima del tempo. Che dire di codice PHP? Dove sono stati errori nel codice PHP? Come hai fatto a sapere che avevi errori nel vostro codice PHP? PUBBLICO: Durata? JASON HIRSCHHORN: Sì, quando si sarebbe in esso, si dovrebbe eseguire l' Codice PHP nella parte posteriore. E allora si potrebbe visualizzare una schermata. Si potrebbe vedere alcune cose sulla parte superiore, ma poi si vedrebbe, come alcuni arancio, brutto tavolo. E si darebbe un numero di riga e per esempio, blah, blah, blah, questa roba non ha funzionato. Così PHP è interpretato riga per riga ed eseguito sul server. E quindi il risultato è inviato a voi. Grande. Eseguito nella linea di server per riga e poi inviato a voi. E se c'è un errore, invieremo si l'errore, ma si potrebbe avere ottenuto alcune cose prima del tempo. Così alcuni di essi potrebbero aver funzionato, ma in seguito, alcune cose potrebbero non avere non ha funzionato. Che dire di JavaScript? Dove hai visto errori JavaScript? In p set 8, quando si ha un errore, come lo sapevi? Dove sarebbe presentarsi? AUDIENCE: Nella console, nella parte inferiore. JASON HIRSCHHORN: Nel console, sul fondo. Sarebbe anche darvi la numero di riga, e sarebbe presentarsi sul fondo. E JavaScript non è stata eseguita sul server. JavaScript è stato inviato al tuo computer, e poi quando era il momento di eseguire l' JavaScript, il codice JavaScript è stato gestito riga per riga sul cliente, al vostro fianco. Non il server, il lato client. Analogamente, era gestito riga per riga. E poi quando si otterrebbe un errore, rivelerebbe in fondo. Analogamente a PHP, alcune delle quali potrebbero esegue, e allora si potrebbe ottenere un errore in seguito. Inoltre, un po 'di PHP differenza, se hai un errore JavaScript - dici che non hai fatto il giusto codice per una finestra di avviso - si potrebbe continuare a correre il vostro programma. La finestra di avviso non avrebbe funzionato, ma il programma sarebbe bene. Solo forse quella funzione fallirebbe. Quindi c'è alcuni dei più grandi differenza in termini di come questi lingue, o come il codice di programmazione si scrive sta effettivamente valutati. Esistono anche altre differenze termini - la più grande differenza abbiamo visto in termini di variabili nelle diverse lingue. Così qualcuno può darmi una differenza tra variabili nelle tre lingue? Sì. AUDIENCE: In C, sono strettamente tipizzato. Negli altri due, sono debolmente tipizzato. JASON HIRSCHHORN: E che cosa significa? PUBBLICO: Che in C, si deve dichiarare il tipo della variabile quando si dichiara la variabile, come interbool o char. JASON HIRSCHHORN: Excellent. In C, abbiamo sempre dovuto mettere un tipo di una variabile. E noi non potevamo davvero mescolare tipi. Non si poteva fare un intero più una stringa. Ma, come abbiamo visto in questi altri lingue, in realtà possono mescolare i tipi, e non avete mai veramente dare qualcosa di un tipo, mai. Quindi, come facciamo a sapere le cose sono variabili in PHP e JavaScript? AUDIENCE: In PHP, iniziano con un segno di dollaro. In JavaScript, quando si dichiara li, bisogna avere un bar. JASON HIRSCHHORN: Giusto. Così in PHP, iniziano con un segno di dollaro. In JavaScript, devono avere bar, anche se a volte non lo fanno in realtà avere bar. Ma questo è corretto. Quindi questa è una grande differenza tra le variabili. Penso che quelli sono probabilmente, al largo della superiore della mia testa, i due più grandi differenze tra questi tre lingue. Ma, sì. AUDIENCE: E la portata delle variabili C è limitato alle parentesi graffe, dove gli altri, è proprio come, muore se è solo una funzione, ma per il resto, E'- JASON HIRSCHHORN: Giusto. Quindi la portata è leggermente diverso in C. Come Vi ricordate, parentesi graffe definiscono l'ambito delle variabili. Quindi, se è stata definita all'interno di un se condizione, che è all'interno di un ciclo for, la variabile esiste solo lì. In JavaScript, se una variabile è definita all'interno di una condizione if - all'interno di un ciclo for - vi esiste per tale funzione, ma non esisterà fuori di tale funzione. Quindi ambito è un po 'più flessibile in JavaScript e PHP. Che rispondere alla domanda? OK, tutte le altre domande? Possiamo fare quattro minuti in più di domande, poi faremo saltare in codifica. AUDIENCE: Possiamo andare in Ajax e parlare di cosa si tratta? JASON HIRSCHHORN: Parlate con Avi dopo. Ha chiesto che la precedente interrogazione. PUBBLICO: Il mio male. JASON HIRSCHHORN: Non preoccuparti. AUDIENCE: Che cosa è esattamente JSON? JASON HIRSCHHORN: Che cosa è JSON? Qual è la tua domanda? AUDIENCE: Basta davvero in fretta, la differenza tra stampa e eco in PHP. JASON HIRSCHHORN: Perché non google la differenza tra la stampa e l'eco? Leggera differenza. Non che un grosso problema. Ma si dovrebbe assolutamente google, e che ti do una buona risposta. JSON, probabilmente più grande di un affare. Supporti per JavaScript Object Notation. E quando abbiamo visto JSON viene utilizzato? Quando avete visto - perché si sa nemmeno la parola JSON? Quando hai visto? AUDIENCE: Quando stavamo ottenendo quotazioni di borsa per la finanza. JASON HIRSCHHORN: So che hai visto quando si stavano diventando quotazioni di borsa per la finanza. E perché l'hai visto? AUDIENCE: Quando stavamo recuperando tutte le informazioni che è venuto in quel formato. JASON HIRSCHHORN: Così si otterrebbe - sì. Vai avanti. AUDIENCE: informazioni [incomprensibile] di un oggetto? JASON HIRSCHHORN: sia di quelli mettere insieme è la risposta stiamo cercando. Volete informazioni da questa altra pagina web. E si spera che quando sei ottenere tali informazioni, sarebbe presentato a voi in qualche tipo di formato standard. Ognuno è probabilmente familiare con valori separati da virgole. È possibile esportare un foglio di calcolo Excel o qualsiasi tipo di foglio di calcolo come elenco di valori separati da virgole. E le virgole dividono tutto diversi campi. JavaScript Object Notation - JSON - è un altro tipo di standardizzato il layout delle cose. E questo è spesso il modo recuperiamo informazioni dai nostri query Ajax. Quindi, in questo caso, abbiamo ottenuto dal sito di Yahoo. Tornano le cose da noi in un oggetto JSON. E allora sappiamo, perché è una norma, di cosa si tratta andare a guardare come. Così possiamo scorrere la matrice che è tornato a noi, la matrice di oggetti che vengono restituiti a noi. Noi probabilmente bisogno di conoscere le chiavi, ma in genere ti danno documentazione nel sito web quando stai recupero qualche JSON notazione per loro. Allo stesso modo, è possibile JSON codificare un oggetto. Quindi c'è una funzione JSON sottolineatura codificare. E così si può prendere un oggetto che hai creato, JSON codificare, e passare a qualcosa altrimenti, se si vuole. E JSON decodifica esiste anche per uno scopo simile, o per lo scopo opposto. AUDIENCE: Non abbiamo bisogno di sapere di codifica per le tabelle hash e cerca? O dobbiamo solo bisogno di capire come vengono utilizzati, concettualmente? JASON HIRSCHHORN: Quindi, alzate la mano se hai fatto una tabella hash per p set 4 con un elenco di link. O p set 5. Così che era una stragrande maggioranza delle persone. P set 5, 6, chi lo sa. Molto tempo fa. Così la stragrande maggioranza di voi ha fatto hash tabelle con elenchi di link. E poiché questo è probabilmente il più approccio comune, e perché abbiamo trascorso un sacco di tempo a fare elenchi di link e hash tabelle, si dovrebbe probabilmente essere abbastanza familiarità con il modo di codificare una tabella di hash e un elenco di link. E se si ripensa a quel problema set, non era davvero così difficile come vi aspettavate. E c'era molto meno codice del previsto. Direi che si dovrebbe sapere come codificare una tabella hash o di un elenco di link. Non che si sarebbe chiesto che, necessariamente, ma si dovrebbe certamente saperlo. Inoltre, se si guarda attraverso quiz del passato, ci sono stati un sacco di domande sulla scrittura di funzioni su elenchi di link o liste doppiamente collegate. Che sembra venire ogni singolo anno. Diritto di inserire in un elenco di link, a destra eliminare da un elenco di link, giusto inserire per una lista doppiamente collegata, et cetera. In modo che, mi sento abbastanza comodo dicendo che si deve sapere che. Per provare, direi che dovrebbe certamente so come funziona, e forse dare qualche pseudocodice per quanto al codice e configurarlo. Ma non sarebbe la cosa peggiore il mondo se non si sa come codice in C. Sarebbe bello se si Sapevo scrivere codice in C, ma credo probabilmente pseudocodice per una prova sarebbe essere il più si avrebbe bisogno da sapere per una prova. AUDIENCE: Extra di credito? JASON HIRSCHHORN: e lo stesso con, se andare in alberi binari di ricerca, si potrebbe bisogno - e che hai visto in passato, abbiamo fatto un sacco di - si sa come albero binario di ricerca lavora. Probabilmente si dovrebbe essere in grado di crearne uno in pseudo codice. Ma perché la stragrande maggioranza delle persone non ha fatto che sul problema insieme, io direi che è probabilmente meno importante che tu sai scrivere codice e impostare un albero del genere. Tutte le altre domande? Inoltre, possiamo chiedere tutto come andiamo attraverso alcuni problemi. OK, stiamo andando a andare avanti. Salta quella diapositiva per ora. Parlando di alberi, che è il primo domanda che ho per voi ragazzi. Perché questo è un problema. Direi che è molto probabile che abbiate ottenere un problema come questo sul tuo quiz si chiede di codificare un certo tipo di inserto, eliminare, ricerca, per un tipo di di struttura dati che abbiamo visto. Che viene ogni anno e abbiamo trascorso un molto tempo la seconda metà di questo semestre andando oltre questi tipi di dati. Così adesso, ho definito un nodo in un albero binario di ricerca. E quello che vorrei che tu faccia è dato un albero binario di ricerca che inizia a questa radice nodo stella, completare la implementazione della funzione di seguito, che sembra essere una funzione find. E farlo con e senza ricorsioni. Quindi voglio che scriviate due funzioni. Un fare questo con ricorsione, una farlo senza ricorsione. E non date per scontato che l' root sarà non nullo. Quindi stiamo cercando il numero intero i in l'albero a partire dalle radici, e abbiamo bisogno per scrivere questo ricorsivamente e iterativo. Già. AUDIENCE: Così si vuole noi tornare true se lo troviamo, e falso se non trovarlo. JASON HIRSCHHORN: Come fai a saperlo? Come lo sapevate che? PUBBLICO: stavo chiedendo prima, ma ero assumendo, perché dice bool a l'inizio della funzione. JASON HIRSCHHORN: Giusto. Si dice bool, quindi non ho nemmeno bisogno di dirvi quello che mi aspetto di tornare perché dice proprio lì. Ma che è di destra. Rientro, vero o falso. Quindi, prima di iniziare, mi sento di raccomandare, se si ha familiarità con alberi binari di ricerca, in modo rapido disegno una foto di esso per ottenere il vostro comprensione, a destra. Questo ti aiuterà anche quando si scrive il codice e controllarlo. Ancora una volta, anche voi non avete che molto tempo sul quiz per fare tutte le cose che vi chiediamo di fare. Così la scrittura di codice pseudo è molto utile. E noi di solito diamo merito - se il pseudocodice è perfettamente corretto, che è generalmente 50% su una questione. Quindi non è una regola dura e veloce, ma se basta scrivere pseudocodice ed è corretta, è generalmente 50%. Così ho sempre consiglio - se hai poco tempo, o anche se si sta solo cercando di capirlo - partendo dal pseudocodice. E, infine, se tu potessi scrivere questo il tutto in C, sarebbe fantastico. Allora diamo tre minuti di lavorare su questo programma. E poi stiamo andando a scrivere pseudocodice per solo una volta, e poi andremo a codificare in modo ricorsivo quindi iterativamente. Se avete domande, non esitate libero alzi la mano. Felice di passeggiare e rispondere prima di iniziare come un gruppo. Riprendiamo, e stiamo andando a pseudocodice la versione ricorsiva di questo, e poi ci codificarlo. Quindi una funzione ricorsiva ha bisogno di due cose. Questa potrebbe essere una domanda che si potrebbe essere chiesto. Ha bisogno di due cose. Chi può alzare la mano e mi dicono quali sono le due cose che un ricorsiva funzione necessita? Per definizione ha due cose. Quali sono queste due cose? Nuove mani. Sì, Alden. PUBBLICO: Quindi io non sono esattamente sicuro se questa è la terminologia, ma - JASON HIRSCHHORN: Sono contento si sta alzando la mano. PUBBLICO: Ha bisogno di un caso base, e ha bisogno di un passo ricorsivo. JASON HIRSCHHORN: Perfect. Ha bisogno di un caso base e un passo ricorsivo. Allora, qual è il nostro caso base qui? AUDIENCE: F radice è uguale uguale a null. Spiacente, solo in pseudocodice, se è nullo. Se radice è nullo. JASON HIRSCHHORN: se root è null. Questo è eccellente. Questo è il nostro caso base. Questo è quello che stiamo andando controllare ogni volta. Ed caso base è la prima cosa che fate. Se si preme il caso base, il gioco è fatto. Ora abbiamo bisogno della nostra chiamata ricorsiva, e mi piacerebbe essere disposti a scommettere abbiamo bisogno di un paio ricorsiva chiama qui. Perché è un albero, e noi potrebbe andare molteplici modi. Quindi, se radice è nullo, siamo a posto. Che cosa proponete? E ora ho intenzione di iniziare a chiamare fuori su di voi ragazzi, perché so voi ragazzi tutti lo sanno. Ma Annie, quello che dovrebbe la prossima linea sarà? Che cosa succede se abbiamo trovato? Che cosa facciamo? AUDIENCE: Se abbiamo trovato? JASON HIRSCHHORN: O che cosa deve essere quella - dammi la pseudocodice per il linea dove abbiamo trovato. AUDIENCE: se i è uguale a radice i? JASON HIRSCHHORN: E allora cosa facciamo? AUDIENCE: Restituisce vero. JASON HIRSCHHORN: Great. Quindi, se i è i - oh, sono entrambi chiamati i. Che si confonde. Ma se i è i ritorno vero. Questa è probabilmente la prossima cosa dovremmo fare. Ha senso. OK, ora non abbiamo fatto il nostro ricorsiva chiamare ancora, però, perché un ricorsiva chiamata sarebbe chiamare di nuovo questa funzione. Quindi cosa dovrebbe il prossimo linea di pseudocodice essere? Anna. PUBBLICO: Il lato sinistro. JASON HIRSCHHORN: Sarai specifico, però. Questo è un albero binario di ricerca, così che cosa non controlla il lato sinistro comporta? AUDIENCE: So nodo - Mi dispiace, root. E poi freccia a sinistra. Node, il nodo, mi dispiace. Non sto leggendo correttamente. Si chiama nodo, giusto? JASON HIRSCHHORN: Si chiamerà radice in quella funzione, ma in ogni modo. Il lato sinistro - sì? AUDIENCE: Se non lo fa uguale i, allora stiamo andando a chiamare la funzione di nuovo? JASON HIRSCHHORN: Proprio così. Se non uguali i, stiamo andando chiamare di nuovo la funzione. Ma da che parte dell'albero stiamo andando chiamare di nuovo la funzione? AUDIENCE: Sul lato sinistro. JASON HIRSCHHORN: Non siamo sempre andando a chiamare sinistra, se non uguagliarlo. PUBBLICO: Oh, mi dispiace. Chiamare sulla destra. JASON HIRSCHHORN: Vogliamo sapere in particolare, se - ricordate, in un albero binario di ricerca, tutto a il lato sinistro è più piccolo. Tutto a destra lato è maggiore. Quindi non è solo - sì, andare avanti. AUDIENCE: Se si tratta di meno di me, poi - se è a sinistra - JASON HIRSCHHORN: Quindi, se ri è inferiore a - quindi se il nostro numero è minore di i, da che parte vogliamo andare? PUBBLICO: Vogliamo andare sul lato destro. JASON HIRSCHHORN: Vogliamo andare - mi permetta di disegnare un albero rapido. Se questo è 5, questo sarà 3. Quindi, se RI è inferiore a cinque, cosa lato vogliamo andare? PUBBLICO: Siamo spiacenti, cosa? JASON HIRSCHHORN: Il nostro numero è inferiore al numero siamo guardando proprio ora. PUBBLICO: Oh, allora vogliamo per andare a sinistra. Già. Scusi. JASON HIRSCHHORN: Esattamente. Nessun problema. Nella albero binario di ricerca, tutto inferiore è a fianco, maggiore è a destra. Quindi, se il nostro numero è inferiore a l'ho stiamo controllando - perché si vede in nodo, ha un i - poi si vuole andare a sinistra. E questo è facile. Che cosa è l'altra linea di pseudocodice abbiamo bisogno di scrivere? Carlos? AUDIENCE: Stessa cosa, si passa solo a un segno di maggiore e andate a destra. JASON HIRSCHHORN: si può dire che ancora una volta? AUDIENCE: Se il nostro numero è maggiore di me, vado a destra. JASON HIRSCHHORN: Excellent lavoro sul pseudocodice. Facciamo questo nel codice reale. E ancora, questo pseudocodice sarà probabilmente otterrà, perché è corretta, il 50% su tale questione. Ma questo pseudocodice traduce anche uno a uno, in sostanza, in codice. Cerchiamo quindi di fare questo in C. Chi può dare me la prima riga di codice? In realtà, in primo luogo, prima di fare che, mi permetta di accostare - PUBBLICO: Ho una domanda. Perché hai rientrare l' linea che ti ho dato? JASON HIRSCHHORN: Perché Non ho potuto scrivere. Non lo so. Hai ragione. Tale linea dovrebbe essere laggiù. OK, ecco la nostra funzione. E mi permetta di accostare, anche, nostra definizione di un nodo. Cosa succede se non abbiamo fatto scrivere typedef? Qualcuno sa? AUDIENCE: Non sarebbe la compilazione. JASON HIRSCHHORN: Sarebbe compilare, sì. AUDIENCE: Sarebbe solo dichiarare una esempio, invece di fare una nuova tipo si potrebbe dichiarare più istanze di? JASON HIRSCHHORN: Così non sarebbe sa - non sarebbe solo dichiarare un tipo. Si potrebbe ancora fare un sacco di nodi. AUDIENCE: Ma non avremmo a scrivere struct node ogni volta? JASON HIRSCHHORN: Proprio così. Si dovrebbe scrivere struct node ogni volta, invece di nodo. Ma con typedef, si può solo scrivere nodo ogni volta. OK, che non ha dato - sì, Avica. AUDIENCE: Se radice è uguale uguale null, restituire false. JASON HIRSCHHORN: Grande, e questo è il nostro caso base. Prossima linea di codice. Qualcuno che non ha dato me una riga di codice ancora? Già. AUDIENCE: Root freccia i è uguale pari a i. Poi ritorno true. JASON HIRSCHHORN: Great. Prossima linea? Già. Qualcun altro? E poi si può andare avanti. AUDIENCE: Else se radice freccia i è meno di torno funzione chiamata radice find - JASON HIRSCHHORN: Mi dispiace. AUDIENCE: root ritorno find punti a sinistra comma i. JASON HIRSCHHORN: Quindi, se ri è maggiore che la cosa nella struttura, vogliamo andare a sinistra? PUBBLICO: No, ho avuto quel acceso. JASON HIRSCHHORN: Quale? PUBBLICO: No, sì. Ho un segno di minore lì. JASON HIRSCHHORN: Giusto, se ri è meno di quello che c'è nella radice - la nostra radice attuale - allora vuole andare a sinistra. E qual è l'ultima riga, vero? AUDIENCE: fondamentalmente la stessa cosa, tranne commutare la maggiore o pari a meno e da sinistra a destra. JASON HIRSCHHORN: Excellent. Qualcuno ha domande su questo? Così alcune altre cose che sarebbero sono stati corretti è che potrebbe essere il-ltiff. Indovina, tecnicamente, nessuno di questi davvero bisogno anche di essere-ltiff. Inoltre, c'è probabilmente solo un caso qui. Ecco, questo è probabilmente il vostro ultimo caso. Non hai nemmeno bisogno di quel-ltiff. Ma probabilmente buona per scrivere che, per essere chiari. Già. AUDIENCE: Quindi non pensate che il quiz - se facciamo degli errori, per esempio, nella sintassi - piccoli errori di sintassi - come si fa che ottenere adottare in quiz? JASON HIRSCHHORN: Generalmente il quiz, piccoli errori di sintassi o piccolo errori di stile non perdono si punti. Quindi, se hai dimenticato un punto e virgola qui, sarebbe OK. Se hai dimenticato di chiudere questa parentesi, che sarebbe OK. Errori di sintassi Enormi che alterano la significato funzionale del codice drammaticamente, si potrebbe ottenere tolto punti per. O in generale, solo voi classificazione o meno la vostra codice funzioni, anche - non suo design tanto, e non il suo stile. Vediamo ora un codice iterativo versione del ritrovamento. Così sta andando essere abbastanza simili, ma Ci sono certamente sarà alcune differenze fondamentali. Tuttavia, il nostro pseudocodice probabilmente può andare - possiamo ancora prendere una riga del pseudocodice e capire cosa l' linea è in questo caso. Quindi, in una versione iterativa, cosa pensi, Julia, dovrebbe essere la prima linea? PUBBLICO: Ancora una volta, in booleano iterativo, è necessario impostare un ciclo for, giusto? JASON HIRSCHHORN: OK. AUDIENCE: Così, per come, k, per x è uguale a 0, x è minore di i. O no, x è inferiore al dimensione dell'albero. JASON HIRSCHHORN: L'albero. Quindi noi non sappiamo veramente la dimensione del albero, e noi non sappiamo veramente per quante volte si può andare, così che cosa è un diverso tipo di ciclo che potrebbe essere meglio in questo caso? AUDIENCE: Se altro? JASON HIRSCHHORN: Se altro non può essere un ciclo. Allora che cosa è un tipo di ciclo possiamo solo andare finché non viene soddisfatta alcuni casi? Qual è l'unico altro tipo di ciclo in C oltre a un ciclo for? AUDIENCE: While. JASON HIRSCHHORN: Mentre, esattamente. In un ciclo while, non bisogno di sapere come - un ciclo while e ciclo for può fare il esattamente la stessa cosa, ma la cosa bella di un ciclo while è che non abbiamo bisogno per sapere quanto è grande il nostro albero. Quindi stiamo per andare fino a quale? AUDIENCE: Fino a quando non è uguale le dimensioni di - JASON HIRSCHHORN: Beh, è ​​molto simile al nostro caso ricorsivo. So - AUDIENCE: Mentre radice Io non lo fa uguale i. JASON HIRSCHHORN: Questo è davvero vicino. Mentre radice i - proviamo. Non penso che [incomprensibile] dove root io non è uguale a i. Potremmo aver bisogno di cambiarlo in un po ' po ', ma che suona come è abbastanza bene, per ora. Quindi lo faremo. Inoltre, ricordiamo, non possiamo assumere per la domanda. Non si assume che la root sarà non nullo. Allora, cosa ne pensi la stessa prima cosa da fare è? AUDIENCE: Basta fare lo stesso cosa di prima. Se la radice è uguale uguale null, restituire false. JASON HIRSCHHORN: Great. Così potrebbe essere nullo. Quindi vogliamo sbarazzarci di subito. E poi stiamo andando controllo se radice i non è uguale a i. Quindi, diciamo che stiamo cercando in questo albero per 3, radice i non uguali i, ora siamo nel nostro ciclo while. Che cosa vogliamo fare? E ancora, che sta per essere abbastanza simile alla nostra versione ricorsiva. Già. AUDIENCE: Così ci si vuole iterare, o proseguire lungo l'albero fino a quando la radice non è uguale a zero. JASON HIRSCHHORN: Finché l' root non è uguale a null? PUBBLICO: Il cruscotto radice i non è uguale a zero. Proprio la radice, sì. Come fintanto che la radice è non uguale a null. JASON HIRSCHHORN: Quindi vuoi per cambiare questo in radice non è uguale a zero? AUDIENCE: Già. AUDIENCE: Potremmo combinare questi, giusto? Non abbiamo bisogno del se, inizialmente. JASON HIRSCHHORN: OK, quindi se Non. - se li uniamo, quindi andremo a fare mentre la radice non è uguale a null, e se la radice sembra essere nullo alla inizio, cosa facciamo qui? AUDIENCE: Ritorno false. JASON HIRSCHHORN: Great. Quindi in entrambi i modi, probabilmente avrebbe funzionato. Questo è un modo diverso, e questo combina. Ma ancora una volta, se l'avete fatto in entrambi i casi, siamo non andare a decollare progettazione punti sul quiz. Ma questo sembra buono. Così, mentre root non è uguale nullo, qual è il primo cosa che vogliamo controllare? Qualcun altro? Null, qual è la prima cosa? AUDIENCE: se ri è inferiore a - oh, credo che, se abbiamo già trovato nella radice. Quindi, se radice freccia i è uguale a i - JASON HIRSCHHORN: Sorry? AUDIENCE: Se radice freccia i è uguale uguale i - JASON HIRSCHHORN: Che cosa facciamo? AUDIENCE: Restituisce vero. JASON HIRSCHHORN: Great. E adesso? Jeff, qual è la seguente riga di codice? AUDIENCE: se i è minore della radice freccia i, allora radice è uguale a radice freccia sinistra. JASON Hirschhorn: equals Root radice freccia a sinistra. Ecco, questo è probabilmente il più grande differenza in questa iterativo versione opposta alla versione ricorsiva. La versione ricorsiva, si chiamare di nuovo la funzione. Saremo aggiornando root chiamiamo la nuova funzione. Qui non stiamo chiamando una nuova funzione. Stiamo semplicemente aggiornando radice in questa funzione. Questo è eccellente. E qual è l'ultima riga di codice? Sì, Mario? AUDIENCE: equals radice Else radice freccia destra. JASON HIRSCHHORN: Sorry? Equals Root: UDIENZA radice freccia destra. JASON HIRSCHHORN: si potrebbe anche scrivere qualcosa del genere? PUBBLICO: Non ho idea. JASON HIRSCHHORN: non è possibile. Non si può fare più eguali. Ok, quindi questo sembra buono. Perché non solo facciamo per ripulirlo. Questo sembra grande, e questo dovrebbe funzionare. E vorremmo uscire. Se radice di sinistra era proprio nullo o root era nullo, saremmo venuti qui. Root sarebbe pari a null. Saremmo spezziamo fuori del nostro ciclo, e ci piacerebbe tornare false. Così, quando usciamo di loop, torniamo false. E ancora, il un ciclo while era perfetto qui perché noi non sappiamo come grande il nostro albero è. Abbiamo provato a scrivere il ciclo for, ma noi capito hai avuto modo di capire come è grande prima del tempo. Già. AUDIENCE: Se non fosse un binario albero di ricerca, sarebbe reale math-y a scriverlo in modo iterativo, giusto? Come se fosse un albero, ma non necessariamente - quindi non era più piccolo sulla sinistra, e tutta più grande sulla destra. Sarebbe davvero difficile per scorrere su di esso, giusto? Dovremmo salvare ciò che era prima sul nell'albero e tornare indietro, e cose del genere. JASON HIRSCHHORN: Se non fosse un binario albero di ricerca, se fosse solo un albero e le cose non erano ordinato come questo - e ci siamo resi conto prima, quando Anna ci stava aiutando che lo rende ordinato ci aiuta molto - dovremmo, sì, salva sempre dove eravamo prima. Ma ci potrebbe essere un sacco di dove eravamo previouslys. Ci potrebbe essere un sacco di nodi padre. Probabilmente il modo migliore per farlo sarebbe essere quello di continuare a spingere le cose su qualche tipo di pila o di coda. Si sarebbe mai bisogno di codificare questa perché è un problema difficile. Ma si spinge alcune cose su una pila o in coda e poi pop off, e poi valutare. E poi avere qualche altra cosa, dove si sta effettivamente mettendo i nodi, e quindi creare che, quindi la ricerca in questo. Questo potrebbe essere il modo migliore per farlo. OK, domande su questo problema? AUDIENCE: Questo è su una nota correlata. Avremo di confrontare i tempi di esecuzione per le tabelle hash, binario alberi di ricerca, et cetera? JASON HIRSCHHORN: Probabilmente. Allora, facciamo che molto velocemente. Tempo di esecuzione per la tabella hash - quali sono gli altri? Albero binario? AUDIENCE: elenchi di link. JASON HIRSCHHORN: OK, facciamolo inserto. Qual è il grande O dell'inserto su una tabella hash? Quali sono i presupposti che stai facendo? AUDIENCE: Stai inserendo al brano dell'elenco collegamento. JASON HIRSCHHORN: Probabilmente il primo presupposto è non ci sono collisioni. Se non ci sono collisioni, allora il tempo di inserimento è uno. Se ci sono collisioni, e siete facendo concatenazioni separate e l'inserimento all'inizio della lista di link, allora inserimento è anche costante. Se stai facendo una tabella hash, ma si avere un diverso metodo di trattare con collisioni, ciò che è un metodo diverso? Cosa c'è è un metodo diverso di trattare con collisione in una tabella hash? AUDIENCE: programmazione lineare. JASON HIRSCHHORN: programmazione lineare. Quindi stiamo andando a continuare a cercare per il prossimo luogo aperto. Questo non è il tempo di inserimento costante. Si potrebbe passare attraverso l'intera tabella, in modo che potrebbe essere grande O di n. Già. AUDIENCE: Altrimenti basta concatenamento? JASON HIRSCHHORN: Abbiamo fatto concatenazioni separate. Questo è stato il primo. Questo è ciò che la lista di link. Il nome di fantasia è concatenazioni separate. Potrebbe essere qualsiasi tipo di struttura della lista ci capita di fare in lista di link. Quindi, di nuovo, di inserimento su una tabella hash potrebbe essere tempo costante. Che dire di inserimento su una coda stacker? AUDIENCE: Non è che costante? JASON HIRSCHHORN: E 'tempo costante. Stai solo spingendo su. OK. Inserimento, quali erano gli altri? In una prova? Qual è la grande O di inserimento su una prova? AUDIENCE: Lunghezza è costante. Lunghezza del più lungo - la lunghezza della parola si sta inserendo. JASON HIRSCHHORN: Sorry? Aspetta, quindi quello che ho sentito? Hai detto - che cosa hai detto? Qual è stata la tua risposta, Marcus? Pubblico: La lunghezza della parola si sta inserendo in caratteri, ammesso che sia una prova di carattere. JASON HIRSCHHORN: OK, così la lunghezza della parola. Faremo un presupposto che si tratta di una stringa di caratteri. Hai detto qualcosa di diverso, però. Hai detto lunghezza della parola più lunga. AUDIENCE: Questo è solo costante, giusto? JASON HIRSCHHORN: Perché sarebbe che sia costante? PUBBLICO: Come, se si utilizza O grande notazione, allora non variano in base il numero di cose che sono già in prova. JASON HIRSCHHORN: così avremmo dire che è tempo costante. È inserimento costante, e questo perché questa idea - dire che abbiamo una parola che è 45, o una parola che è 60, che ha un numero costante. E sarebbe solo essere inserita in tempo costante. In pratica, tuttavia, non sarebbe, ovviamente, accadere in un millisecondo, per esempio. Ma diremmo grande O è costante per una prova. E questo è uno dei suoi maggiori vantaggi. Che dire di inserimento in un elenco di link? Solo un elenco di link ordinati generico? Già. PUBBLICO: avevo una domanda. Nella prova, avrebbero mai noi il chiedere all'ora di inserimento che è quattro passi, o qualcosa del genere? O è solo - quando si dice il tempo di inserimento è uno, questo significa solo tempo costante? JASON HIRSCHHORN: Sì, avrebbero sempre chiedere, è grande O di n? Big O di log n? N quadrato costante. Quelli sono davvero l'unica quelli che dovete sapere. Che dire di inserimento su ordinati elenco di link? PUBBLICO: avevo una domanda - una domanda - JASON HIRSCHHORN: Qual è la risposta a questa domanda, però? PUBBLICO: Aspetta, che cosa hai chiesto? JASON HIRSCHHORN: Che cosa è grande O di l'inserimento in un elenco di link ordinati? AUDIENCE: One? No aspetta, No aspetta, n. JASON HIRSCHHORN: N. Oltre l'elenco di link. E qual è stata la tua domanda? AUDIENCE: Quindi vuoi scrivere o di k o o 1 per il - JASON HIRSCHHORN: Oh. Vorrei scrivere o di 1, probabilmente. C'era un'altra struttura dati che sarebbe stato buono. Albero, albero binario di ricerca. Cosa c'è di inserimento su una albero binario di ricerca? AUDIENCE: Effettua il login. JASON HIRSCHHORN: Quindi, qual è il peggiore caso in un albero binario di ricerca? Quindi, se ci capita di cominciare a 5, ed ogni numero è maggiore di 5, allora abbiamo 5, 7, 9, 11, et cetera. In questo caso, è fondamentalmente solo un link lista, e abbiamo bisogno di inserire tutti il modo alla fine. Quindi è grande O di n. Questo potrebbe essere il nostro caso peggiore su un albero binario di ricerca. Ovviamente, non avresti mai costruire un albero di ricerca binario con 5 nella mezzo, sapendo 5 sarebbe essere il numero più basso. Ma potrebbe essere, se siete partendo da zero. Hai domande su questo prima di passare a un'altra domanda? Quella era una buona domanda. Vorrei sapere grande O di - AUDIENCE: Cosa sulla ricerca per quei quattro? JASON HIRSCHHORN: Sicuramente noi ha ricerca e l'ordinamento. Abbiamo fatto tutti questi algoritmi, giusto. Aspetta, era che per Quiz 1? Era quello coperto - hai già che questione Quiz 1? Il grande O runtime di ricerca binaria, insertion sort, bubble sort? AUDIENCE: Già. JASON HIRSCHHORN: Se tu avessi che questione Quiz 0, le probabilità sono che non sarà ottenere la stessa domanda esatta Quiz 1. Potrebbe essere comunque bene sapere chi. Sperabilmente dovreste sapere gh già. Ma altri runtime logaritmiche sono probabilmente buono a sapersi. Le cose che non erano coperti su Quiz 0. Come tutti questi operatori questi tipi di dati astratti. Ok, andiamo avanti. Questo dovrebbe essere piuttosto veloce. E questo è un nuovo linguaggio che non abbiamo effettivamente codificata in prima. Questa è una domanda che chiede al codice in PHP. Quindi prendere in considerazione l'array PHP sotto. Scrivere codice PHP e / o HTML in modo tale da emette una tabella a due colonne con TF I nomi e le case. Non hai mai fatto prima, questo problema specifico. Ma questo dovrebbe essere molto familiare a quello che hai fatto in problema di set 7. Quindi io sarei pronto a scommettere che sarà chiesto di codificare qualcosa in PHP che è molto simile a quello che si fatto nel problema set 7. In primo luogo, non è matrice che specifica. Che tipo di matrice è questa? AUDIENCE: associativa. JASON HIRSCHHORN: E ' un array associativo. E qual è la differenza tra un array associativo e un oggetto? PUBBLICO: Un array oggetto ha un indice di interi e un array associativo è un indice di una stringa, o qualcosa di simile. JASON HIRSCHHORN: Quindi una serie di oggetti avrebbero indici di numeri interi, ma un oggetto ha campi. Ha i nomi dei campi come nome, casa, studente. Avete un'idea? PUBBLICO: Beh, associativa array è in PHP, giusto? E oggetto è in JavaScript? JASON HIRSCHHORN: Onestamente, non c'è vera differenza tra i due. Entrambi hanno stringhe come le chiavi, e può hanno praticamente nulla come valore. Lingue diverse chiamano uno cosa array associativo, una cosa un oggetto. Quindi onestamente, non c'è una vera differenza, ma c'è sicuramente un po ' differenze sintattiche tra i due. Già. AUDIENCE: Così è oggetto anche codificata sotto la cappa come una tabella hash, allora? JASON HIRSCHHORN: Quello che fai significa, codificata sotto il cofano? AUDIENCE: Ci hanno detto che associativo matrice era tecnicamente un Hash Table. Così è oggetto anche tecnicamente una tabella di hash? JASON HIRSCHHORN: non mi va per rispondere a questa domanda. Tornerò a voi su questo. Ma non vorrei pensare a entrambi di quelli come tale. Ma, in ogni modo, array associativo e oggetto, in generale, la gente usa quelli termini in modo intercambiabile. In questo caso, la parte fredda è possibile utilizzare i tasti. Stringhe come chiavi, anziché solo semplici numeri. Così ho parlato questo per un po '. Speriamo, alcune persone hanno ottenuto iniziato su questo. Stiamo andando a scrivere qualche PHP e HTML codice, in modo che si ottiene un due colonne tabella con i nomi TFs e le case. OK, mi piacerebbe anche un colpo di testa riga in questa tabella. Quindi ho intenzione di andare dritto in questo. Stiamo andando a File, Nuovo, e stiamo andando - OK. Come faccio a iniziare un tavolo? Qual è il tag, Michael, ad iniziare una tabella? AUDIENCE: Table. JASON HIRSCHHORN: Table. E se apro un tag, cosa cosa ho bisogno? PUBBLICO: Una testa? O, suppongo, di classe. JASON HIRSCHHORN: Quindi, mi dispiace. Supponiamo che abbiamo già scritto doctab, HTML, tutta quella roba. Ma se apro questo tag table, cosa altrimenti devo scrivere? per validare HTML? AUDIENCE: Chiuderlo. JASON HIRSCHHORN: chiudere il tag. Come faccio a scrivere un tag close-tavolo? AUDIENCE: Dot ridurre drasticamente tavolo. JASON HIRSCHHORN: Slash tavolo, grande. Probabilmente un senso di scrivere sia di coloro che insieme perché hai avuto modo di farlo. OK, se voglio una riga di intestazione, come si fa Scrivo una riga di intestazione con i titoli? PUBBLICO: E 'meno di 10 ore close - TR, sì. JASON HIRSCHHORN: TR? AUDIENCE: Allora stessa cosa, la barra, sì. JASON HIRSCHHORN: OK, e dammi due colonne. AUDIENCE: T D? JASON HIRSCHHORN: OK. Voglio due colonne. Questo mi dà due colonne? Quante colonne è questo? Uno. Quindi cerchiamo di copiare e incollare questo. Quindi, in realtà, sul quiz, tutto questo codice che abbiamo scritto finora è stato effettivamente dato a voi. Ma si dovrebbe probabilmente ancora sa come scriverlo. Già. PUBBLICO: La vostra casa è tra i due. JASON HIRSCHHORN: Boom. Dovrebbe andare proprio lì, giusto? Buona chiamata. Quindi, di nuovo, tutto questo codice è in realtà dato a voi il quiz vero e proprio. Ma è divertente da scrivere, e si dovrebbe sapere come scriverlo. Quindi questo è dove è necessario per iniziare il vostro codice. Di cosa abbiamo bisogno per scrivere qui? Spiacente, ho bisogno di cambiare il nome di questo file. Così abbiamo salvato in un file HTML., non in un file PHP.. Queste cose non significherebbe nulla in un file PHP.. Quindi siamo in un file HTML.. Qual è la prima cosa Ho bisogno di scrivere? Voglio mettere un po 'di PHP codice in un HTML. PUBBLICO: PHP, come un altro carota e il punto interrogativo PHP, giusto? JASON HIRSCHHORN: Great. E come faccio a finire così? AUDIENCE: Con un punto interrogativo. JASON HIRSCHHORN: Questo è grande. Questa è la prima cosa che mi serve se voglio mettere un po 'di codice PHP in qui. PUBBLICO:. Ho pensato che un PHP file potrebbe richiedere HTML. JASON HIRSCHHORN: Già. Un file PHP. Può richiedere un certo HTML e visualizzato. Quello era il mio male. Stavo solo cercando di imitare quello che era il quiz. OK, mi dispiace per confondervi. Sì, practice.HTML. Ora stiamo andando a mettere codice PHP dentro Qual è la prima linea di Codice PHP dovrei scrivere? Ho intenzione di passare attraverso questa matrice e farne una tabella. Già. PUBBLICO: È possibile utilizzare una per H loop o un ciclo for. JASON HIRSCHHORN: OK, cosa vuoi usare? PUBBLICO: Vorrei usare un ciclo for. Per, e poi si fa il segno del dollaro i è uguale a 0 virgola dollaro firmare i meno di 2. E poi punto e virgola i dollari firmare i plus plus. JASON HIRSCHHORN: come fare sai usare un 2? AUDIENCE: Perché c'erano due array associativi all'interno del più grande array associativo. JASON HIRSCHHORN: Quindi la cosa grosso Non una matrice socio. La cosa grande è solo una matrice normale. Ma hai ragione, ci sono due array associativi all'interno del nostro array più grande. Ecco perché si utilizzano due. Mi sento a disagio assumendo che sono 2, quindi qual è un modo per scrivere questo senza supponendo che sono 2? AUDIENCE: [incomprensibile]? JASON HIRSCHHORN: OK, come si scrive così? AUDIENCE: Foreach segno del dollaro tfs o come segno di dollaro tf. JASON HIRSCHHORN: OK, quindi per ogni tfs tfs come, voglio, adesso ancora una volta, il mio tavolo. Allora, chi mi può dare il successiva riga di codice? PUBBLICO: Stampa e quindi in citazioni, fine staffa tr staffa, fine citazione. Tra parentesi End, il punto e virgola. JASON HIRSCHHORN: OK, e Cosa c'è di che andare a fare? AUDIENCE: Sta andando a dire, nuova riga. Sta andando a mettere l' tag per una nuova riga. JASON HIRSCHHORN: Destra, questa PHP, come abbiamo parlato in precedenza - questo PHP sta per essere valutati, e quindi sta andando a stampare a questo file una Tavolo traino, e quindi che HTML sarà valutata. Stiamo solo copiando questo HTML che abbiamo avuto qui. Già. AUDIENCE: [incomprensibile]? JASON HIRSCHHORN: Sorry? E 'proprio qui. Autunno 2012. Non guardare le risposte, cerchiamo di risolverlo insieme. Quindi stampiamo riga della tabella. Allora probabilmente siete l'altalena delle cose. Qual è la prossima linea di codice abbiamo bisogno di scrivere? Assam, dammi la successiva riga di codice. PUBBLICO: È necessario il nome del tf. Tf staffe virgoletta aperta nome staffe chiuse. JASON HIRSCHHORN: Dammi il loro nome. AUDIENCE: è necessario stampare questo. [VOCI interponendo] JASON HIRSCHHORN: OK, come faccio a stampare questo? [VOCI interponendo] JASON HIRSCHHORN: mi manca qualcosa adesso. Che cosa mi manca? AUDIENCE: Hai bisogno di un segno di dollaro. JASON HIRSCHHORN: Cosa altro mi manca? Tutti abbiamo stampato finora è il tr. AUDIENCE: Chiudere il TR dopo. JASON HIRSCHHORN: Quindi abbiamo bisogno per chiudere il tr dopo. Chi vede ciò che ci manca sulla linea 16? Sì, Anna. PUBBLICO: È necessario aprire un td e parentesi graffe. JASON HIRSCHHORN: E dove Non mettiamo tra parentesi graffe? AUDIENCE: Intorno al nome tf. JASON HIRSCHHORN: Ti piace? AUDIENCE: Già. E quindi chiudere il td. JASON HIRSCHHORN: Ti piace questo? AUDIENCE: Avete bisogno di virgolette doppie segni accanto alle parentesi graffe? JASON HIRSCHHORN: Proprio qui? No, non lo fai. Ecco, questo è esattamente vero. Già. AUDIENCE: Quindi la differenza tra tale e encatenating con puntini è, se si utilizza punti, avresti avere il doppie virgolette, poi un punto, poi il punto - JASON HIRSCHHORN: Corretto. Quindi stai dicendo che c'è un ultimo modo di scrivere questo genere. Che l'operatore di concatenazione in JavaScript? PUBBLICO: Un segno più. Hai dimenticato di mettere il ricci tutore indietro. JASON HIRSCHHORN: Great. E c'è ancora una linea di codice mancante. Chi mi può dare l'ultima riga del codice ci manca? AUDIENCE: Basta la stessa identica cosa, solo con casa al posto del nome. Grande JASON HIRSCHHORN: Great. E la sintassi è esattamente giusto per fare le cose in una matrice socio. Così nel quiz vero e proprio, si è effettivamente dato fino a qui. Quindi questo codice è stato dato a voi. Tutto quello che doveva scrivere erano questi quattro linee e ricordarsi di chiudere il tag table. Voi ragazzi effettivamente fatto tutto questo e altro. Già. AUDIENCE: Quindi sarebbe funzionalmente lo stesso se hai appena avuto che tutti in una grande chiamata di stampa, giusto? E poi basta concatenato su, eccetera? JASON HIRSCHHORN: Ti piace questo? AUDIENCE: Già. Semplicemente non sarebbe guardare bene se tu fossi guardando quando si sta ispezionando l'elemento sul vostro sito, giusto? JASON HIRSCHHORN: Sono d'accordo. Se ho caricato questa pagina, sarei in grado di vedere il codice PHP, mai? PUBBLICO: No. JASON HIRSCHHORN: No. E in realtà, non lo farei. AUDIENCE: Questo non è HTML, giusto? Così si potrebbe essere in grado di - JASON HIRSCHHORN: Quindi questo sarebbe PHP essere valutata lato server. PHP viene sempre valutata lato server, così non si è mai in grado di vedere il codice PHP. AUDIENCE: Ma tu saresti in grado di vedere il risultato delle stampe. JASON HIRSCHHORN: Giusto. E onestamente non potrebbe mettere tutto sulla linea. Potrebbe formattarlo bene per voi, oppure potrebbe metterlo sulla stessa riga. Chiaro. Ma sì, buon punto. AUDIENCE: Come prima non sia venuta sta nessuna evidenziazione di testo per uno dei comandi PHP? Perché mi ricordo di aver visto che. JASON HIRSCHHORN: Perché è un Il file. HTML qui in alto. Ci si va. AUDIENCE: Se abbiamo fatto il metodo iniziale con cicli for, giusto, se noi voluto per accedere a un tfs, avremmo fare staffa tfs 0 staffa, quindi [Incomprensibile]? JASON HIRSCHHORN: Lei sarebbe - quindi stai dicendo per il ciclo for, è farebbe in segno del dollaro staffa tfs 1 o io, a destra. O il segno del dollaro chiudo staffa e poi parentesi quadra virgolette, sì. OK, eccellente. Abbiamo uno più uno rapido. Sette minuti, quindi voglio andare oltre questo. Questo è un altro esempio. Siamo ormai totalmente altra lingua. Abbiamo un po 'di codice HTML. È una specie di piccolo sullo schermo, ma Voglio che tu guardi attraverso di essa veramente rapidamente, e qualcuno può dirmi, se dovessi caricare questa pagina web, quello che vorrei vedere? Descrivere tutto ciò che riguarda questa pagina. Noè? Che cosa dovrei vedere? AUDIENCE: Codice all'estremità anteriore del Google con un tatto per il testo e un pulsante di invio. JASON HIRSCHHORN: E che cosa Sarebbe il pulsante dire? AUDIENCE: Submit. Oh, ricerca. Mi dispiace. JASON HIRSCHHORN: Si direbbe ricerca. Ricorda, il nome. Quello che usiamo nome? Questo attributo name, che cosa è quello utilizzato per? [VOCI interponendo] AUDIENCE: Questo è il suo nome per quando viene cliccato? JASON HIRSCHHORN: Che potrebbe essere. Ma cosa generalmente vediamo - perché stiamo dando questa coda nome? Perché vediamo che? Già. AUDIENCE: Non che diventerà indice della variabile globale super? JASON HIRSCHHORN: Sì, in genere quando questa forma avrebbe presentato, e poi dove Sarebbe questo presenta al? Cosa pagina? Noè, che cosa sarebbe questa pagina presenta al? PUBBLICO: Non sono sicuro. JASON HIRSCHHORN: Dove potremmo possiamo trovare? Dove trovare ciò che La pagina si sottomette? Che riga di codice? AUDIENCE: l'azione modulo. JASON HIRSCHHORN: Esattamente. Azione. Così sottopone alla pagina di ricerca. Ricerca backslash. Ecco, questo è esattamente vero. Quale metodo? AUDIENCE: Get. JASON HIRSCHHORN: Get. Esattamente. Così leggiamo questo. Ciò sta andando essere una forma. Hai perfettamente ragione. Due cose sulla forma, il titolo della pagina e il top sarebbe Google. Così qui sono due domande che dovreste essere in grado di rispondere su questa pagina. Se questo HTML vive su questo sito e l'utente immette bug in questo testo campo proprio qui, cosa farà URL l'utente a trovare se stessa su l'invio del modulo? Quindi abbiamo questo qui. Ho intenzione di tornare a questa pagina, però. Ti scrivo questa prima parte. Chiunque può vedere qui? OK, Mario, pensi di sapere? Cosa pagina? AUDIENCE: Barra rovesciata ricerca. JASON HIRSCHHORN: Io vado per scendere qui. OK, ricerca backslash domanda mark q è uguale bug. Qualcuno ha un suggerimento diverso? Già. Quindi, come possiamo ottenere questo? Beh, abbiamo visto prima. E si avvicinò con questa precedenza. Avevi ragione, Noah, che la azione ci sta dicendo cosa Pagina stiamo andando a. Sappiamo anche che metodo. Stiamo facendo get. E la differenza tra GET e POST è che ottenere visualizzazioni nell'URL e dopo non lo fa. Quindi, se ho scritto palo destro lì in metodo, quello che sarebbe stato diverso? AUDIENCE: sarebbe solo essere barra di ricerca. JASON HIRSCHHORN: Sarebbe solo essere tagliare la ricerca. Nulla qui sarebbe accaduto. Ma perché è un ricevere, l'URL viene visualizzato come segue. In primo luogo vediamo un punto interrogativo e vediamo il nome e il valore. Dire che c'era un altro campo di testo e Ho dato un nome di r e ingresso I un valore, caterpillar. Cosa sarebbe questo momento simile? Ho più un campo di testo, posso dare un il nome di r e un valore di bruco. PUBBLICO: Dopo il bar avresti il bruco e commerciale. JASON HIRSCHHORN: Ecco non commerciale. AUDIENCE: O semplicemente qualunque la e simbolo. JASON HIRSCHHORN: Sì, no. Avevi ragione, mi sbagliavo. Questo è come un g. AUDIENCE: Caterpillar. r è uguale a bruco, mi dispiace. JASON HIRSCHHORN: C'è no r in là? PUBBLICO: No, non c'è. JASON HIRSCHHORN: Parleremo a tale proposito dopo le lezioni. Questo è esattamente vero. Così il ed è corretto. E allora si potrebbe avere molti di questi, e sarebbero tutti essere concatenati insieme a quella e. Ecco, questo è esattamente vero. C'è un'altra domanda. Disegnare DOM di questo HTML, a partire con il documento. Potremmo farlo in due minuti. Lo faremo qui. Tornerò a questa pagina. OK, iniziamo con il documento. Quali sono le prospettive? Così, quando stai leggendo - AUDIENCE: HTML. JASON HIRSCHHORN: HTML è vicino. Stiamo per andare tag per tag. Cosa c'è dopo l'HTML? AUDIENCE: Head. JASON HIRSCHHORN: Head. Cosa c'è dopo la testa? AUDIENCE: Titolo. JASON HIRSCHHORN: Titolo. E il titolo ha un valore di Google, ma io non ho intenzione di scrivere che in per ora. OK, dove fa il corpo va? AUDIENCE: venuta anche fuori del codice HTML. JASON HIRSCHHORN: Esattamente. Corpo viene fuori da qui. Fa vedere a tutti perché questo è il caso? Probabilmente si dovrebbe essere in grado di capire questo fuori, troppo, anche se non ha avuto questo bel rientro. Il rientro sorta di dà via, ma si può vedere che il tag testa ha stato chiuso, il che significa che probabilmente non si può andare qui. Abbiamo bisogno di tornare a qualunque era giusto prima che la testa tag, o sotto quello. Siamo anche con il tag head. E sotto il corpo va forma. Sotto forma, ci sono due ingressi. OK. Questo è tutto quello che ho. Quiz 1 è domani. Sono così eccitata per voi ragazzi. Sta andando essere un colpo. Se si dispone - AUDIENCE: [applausi] JASON HIRSCHHORN: Oh stop, stop. Ma no, sto scherzando. Se avete domande, a destra dopo la sezione, sarò fuori. Se avete domande, stasera, non esitate a chiamare, e-mail, Gchat, carrier me piccione. Buona fortuna domani. Avere una meravigliosa vacanza del Ringraziamento, se non ti vedo prima di allora. E io ti vedrò dopo il Ringraziamento il Martedì per il nostro finale sezione di partito mai. AUDIENCE: [incomprensibile]. JASON HIRSCHHORN: Great. OK, vedrò voi ragazzi prossimo settimana, oppure in due settimane. E buona fortuna domani.