[GIOCO MUSICA] -Alright! -Questa è CS50. -Questa è CS50. -Questa è CS50. [MUSICA - IGGY AZALEA, "FANTASIA"] -Il Mio ricordo preferito da CS50 è stato quando sono andato a Puzzle giorno. -Probabilmente Solo il tempo impiegato per lavorare sui set di problemi con i miei amici e le persone che Wold alla fine diventano i miei blockmates. -Il Mio miglior ricordo da CS50 è il Hackathon. -Il CS50 Hackathon. -Hackathon. -Hackathon. -Hackathon. -Il Hackathon -Rob Bowden. Proprio tutto di lui. [MUSICA - IGGY AZALEA, "FANTASIA"] -Il Mio ricordo più bello è quando ero in palco e ho svolto il ruolo di prestigio di un nodo [? nel Linked?] [? Lista. ?] -Quando Abbiamo tutti avuto spazio libero su Dropbox e David era come, guardare sotto i vostri posti. Ed è stato come, spazio per tutti! [MUSICA - IGGY AZALEA, "FANTASIA"] Consigli -My per qualsiasi studente in arrivo sarebbe essere quello di lavorare veramente su P-set con gli amici. Ore -Ufficio è molto vostro amico. -Fare Al meglio la vostra esperienza e incontrare quante più persone possibile. -Non Abbiate paura di chiedere aiuto. -start I P-set all'inizio della settimana. -I Che la cosa più importante è quello di approfittare di tutte le risorse che ha CS50. -Vai Di ore d'ufficio all'inizio della settimana. -decisamente Guardare i cortometraggi. -Non Procrastinare il vostro P-set. -Assicurarsi Si trova un grande gruppo di persone di lavorare su P-set con. Si può avere un sacco di divertimento e ottenere il lavoro fatto insieme. -Non Abbiate paura di spingere te stesso. Andare per l'edizione di hacker a volte. Cose -Scrivi su carta prima Avete mai toccare il computer. -CS50 È davvero grande a fornendo modi per ottenere aiuto. -Mio Un consiglio è il sonno. Qualcuno ha detto che? Sonno, di sicuro. E 'facile non fare, ma hai avuto modo di farlo, credo. -Vorrei Dire davvero essere mentalmente preparati perché si sta andando ad amarla. [MUSICA - IGGY AZALEA, "FANTASIA"] -Questa è CS50. -Questa è CS50. -Questa è CS50. [MUSICA - IGGY AZALEA, "FANTASIA"] -Questa è CS50. [Applausi] DAVID J. MALAN: Quindi questo è CS50 e questa è la fine della settimana 0. E questo era solo un po ' del personale di CS50 che aspettano non solo nelle sezioni e le ore di ufficio, ma, inoltre, il prossimo fine settimana a CS50 Puzzle giorno. Il che, ancora una volta, non è tutto sulla programmazione. Infatti, ci si aspetta che si non dovranno programmare nulla, ma piuttosto risolvere i problemi utilizzando ingegno e amici accanto a te. Ci sarà affiancato da alcuni dei nostri amici a Facebook-- se si registra qui-- che per il passato parecchi anni, sono stati effettivamente scrivendo queste sfide con noi. E così, essi saranno quelli in ultima analisi, l'esecuzione Puzzle giorno. E così, sarete sfidati con precisione il tipo di cose ei problemi che la gente a Facebook piace pensare. In modo che sia domani. Registrati a cs50.harvard.edu/register. Ora una parola su un paio del personale in particolare. Questo qui è Ansel Duff, che è in realtà uno dei co-autori di questi binari lampadine che abbiamo visto il Mercoledì, in aggiunta al di CS50 proprio Dan Bradley. Ansel Duff era anche un ex matricola advisee mio 3 anni fa e lui in realtà anche costruito questo leggio. È andato a fare scienze dell'ingegneria e altro ancora. Ora, la sua foto qui è in realtà Ansel 3 anni fa presso il CS50 Hackathon quando ha preso in prestito uno dei nostri palloncini, attaccato al suo computer portatile, e, per il prossimo 12 qualche strano ore, concentrato sul suo progetto finale, prendersi delle pause solo per aprire sacchetti di caramelle al Hackathon. Ma continuò più recente per spendere la scorsa estate con noi, poiché CS50 per il suo personale, e Ora gli studenti questo semestre, ha la propria stampante 3D. E in poche parole un stampanti 3D è un dispositivo che sembra abbastanza come questo. Si riempie con un rocchetto di plastica che è fuso dal dispositivo e costruire le cose letteralmente dal nulla. Proprio come una stampante a getto d'inchiostro, si avvia sputare puntini di plastica che forma insieme a formare oggetti interi. E così Ansel per esempio, in precedenza questa estate, ha un iPhone 5 e decise che voleva davvero per prop in su sulla sua scrivania. Ma lui non voleva uscire e comprare qualcosa dal negozio di Apple o simili, così si sedette e cominciò a disegnare qualcosa. Ha preso alcune misure per lo spessore e come largo il suo iPhone era, ha disegnato questa immagine qui, ha deciso che voleva avere una inclinazione di 75 gradi come è stato fissando lui sulla sua scrivania lì. Poi si girò questo, utilizzando software, in un modello CAD 3D che sembrava un po ' qualcosa di simile. E poi ha proceduto, infine, per creare realtà. Quindi, in realtà, se qualcuno di voi qui, forse in una riga che posso buttare a, avere an-- ci abbiamo gente con iPhone 5, e qui abbiamo due di più. Ora, per non essere da meno, CS50 propria Cheng Gong impostato anche questa estate per costruire un bel po 'di cose e, infatti, per ragioni ancora chiaro, è stato lentamente la stampa di un esercito di elefanti con le braccia e tronchi articolate. Un paio di che in realtà sono qui chiunque sarebbe ora like-- un elefante. Bene,. ma quello che Cheng ha fatto anche per noi è che molto gentilmente ha istituito una fotocamera perché questo elefante, che ci crediate o no, prende circa due e una mezze ore per stampare. Anche il supporto iPhone ha preso un'ora e mezza da stampare. E che cosa Cheng è andato avanti e ha fatto è stata allestita una bella macchina fotografica di fronte di questa stampante 3D, girato per un'ora e un mezzo come il disegno di Ansel stampato. Abbiamo sovrapposto un po 'sexy musica in ordine per darti questo guardare come funziona la stampa 3D. E anche se questo è effettivamente in plastica, conto che se questa è un'area di vostro interesse accademico, ci sono persone, tra li Jennifer Lewis qui presso la Scuola di Ingegneria, che sono in realtà lavorando su stampa 3D oggetti di plastica. Ma anche, sempre più, materiali biologici da risolvere problemi fisiologici per gli esseri umani. Ma qui è un po ' qualcosa da CS50. [LOUD MECCANICA RUMORI] DAVID J. MALAN: Non suona qualcosa di simile, in realtà, ma è molto più fresco per guardarlo a quella velocità, e con quel suono. Ora, il Mercoledì, come ci siamo arrivati ​​qui prima? Abbiamo iniziato a parlare di computer scienza e abbiamo chiesto cosa fosse. E si tratta di una serie di cose, e ci sono così tante direzioni diverse in cui si può testa dopo un corso come CS50. Infatti, se avete preso uno di quelle guide non ufficiali di CS al di fuori, il libretto che abbiamo fornito, se siete pensando di prendere solo CS50, o forse facendo un secondario, o forse anche di concentrazione in CS, non sfogliare che. E vedrete un diagramma verso la fine che vi mostra le molte direzioni diverse in CS che si può andare fuori in. Ma per oggi, ci concentreremo, ancora una volta, il davvero una delle viste fondamentali, forse, dove si ha ingressi ai problemi, si dispone di uscite problemi, e vi hanno algoritmi con cui creare quelle uscite da tali ingressi. E un esempio, era di Naturalmente, questa rubrica qui. E abbiamo usato come esempio per andare attraverso un algoritmo che era corretta. E poi un altro stato corretta, ma un po 'più veloce. E poi un altro che era un po ' più drammatico, ma fondamentalmente veloce. Diritto, questo telefono libro abbiamo rivendicato aveva circa 1.000 pagine. E quante volte ho a strappare la rubrica a metà di trovare qualcuno come Mike Smith, al massimo, a 1.000 pagina del libro? Così, 10 dare o prendere. E così una volta ho strappato questa cosa in metà, o semplicemente, più maturo, diviso a metà, è solo 10 pagine su 1000. E se estrapolare, un po ' irrealisticamente per una rubrica telefonica, ma se questa rubrica aveva circa 4 miliardi di pagine in esso, in modo completamente ingombrante fisicamente, quanti volte si dividono un 4 miliardi Pagina rubrica a metà? Quindi è in realtà 32, prendere o lasciare. E solo così 32 volte, fuori di 4 miliardi di pagine, può trovare qualcuno come Mike Smith. E questo è l'efficienza. Questo è un buon algoritmo, oserei dire. Ma poi ci siamo trasferiti da quella per cercare di formalizzare esso. E ho proposto questo codice pseudocodice. Codice pseudocodice non è nulla formale. Non è qualcosa a memorizzare. E 'solo qualcosa che si esprimono abbastanza intuitivo usando l'inglese, o qualsiasi linguaggio davvero, che trasmette le tue idee in modo succinto. Ma cosa c'è di chiave su codice pseudocodice è che si cercare di anticipare tutte le casi possibili che potrebbero accadere. E infatti, in questo pseudocodice codice, ci sono stati davvero tre casi ogni volta che ho diviso l'elenco telefonico. Mike potrebbe essere a fianco. Mike potrebbe essere quella di destra. Oppure potrebbe essere proprio sulla pagina Sono su. O un quarto caso angolo, per così dire. Uno scenario cattivo potrebbe essere uno which-- ciò che sta accadendo? Mike non è solo in la rubrica a tutti. E quando i programmi crash-- quando Mac e software per PC che voi ragazzi Run sui computer a volte si blocca o si chiude in modo imprevisto, ciò significa generalmente che alcuni programmatore, qualche essere umano come voi presto, appena avvitato e fatto qualche errore. Forse non anticipare che forse ci c'è Mike Smith nella rubrica. E se in realtà non scrive codice per gestire situazioni del genere, generalmente imprevedibile cose possono accadere. La macchina può congelare. Si può riavviare. Il programma può chiudere. E così tutti questi stupidaggini che si può hanno incontrato nel vostro attuale vita usando solo i computer, sarà sempre più essere solo spiegato via da questa intuizione e questa comprensione di ciò che è realmente accadendo sotto il cofano. Ora proviamo a dare un'occhiata ad un problema più generale. Piuttosto che prendere presenza in un posto come questo, che sarebbe molto lenta per fare uno, due, tre, quattro. O forse due, quattro, sei, otto. Concentriamoci, invece, sulla come possiamo formalizzare l'algoritmo del processo che potremmo prendere presenze. E lungo la strada, cominciamo applicare alcuni nomenclatura che useremo oggi quando abbiamo effettivamente iniziare a programmare in un linguaggio. Quindi vi do ora, un video di quattro minuti che abbiamo messo insieme con i nostri amici da TED, l'organizzazione. Per cui abbiamo fornito uno script e hanno portato i loro animatori a sopportare, ed effettivamente creato un 2D Animazione di ciò che un algoritmo è. Se potessimo abbassare le luci. [GIOCO MUSICA] NARRATORE: Che cos'è un algoritmo? In informatica, un algoritmo è un insieme di istruzioni per risolvere qualche problema passo-passo. Tipicamente, gli algoritmi sono eseguito dal computer, ma noi esseri umani abbiamo algoritmi pure. Ad esempio, come sarebbe si va di contare il numero di persone in una stanza? Beh, se siete come me, si sarebbe probabilmente puntare ad ogni persona alla volta e contare da zero. Uno, due, tre, quattro, e così via. Beh, questo è un algoritmo. In realtà, cerchiamo di esprimere un po 'più formale nel codice pseudocodice. Sintassi inglese-simile assomiglia un linguaggio di programmazione. Sia n uguale a 0. Per ogni persona in camera, impostare n uguale a n + 1. Come interpretare il pseudocodice? Beh linea si dichiara, per così dire, una variabile chiamato n e inizializza il suo valore a 0 Questo solo significa che al inizio del nostro algoritmo, la cosa con la quale siamo conteggio ha un valore di 0. Dopo tutto, prima di cominciare a contare non abbiamo ancora contato nulla. Chiamare questa variabile n è solo una convenzione. Avrei potuto chiamato più nulla. Ora allineare due demarks l'inizio di un ciclo, una sequenza di passi che sarà ripetere certo numero di volte. Quindi, nel nostro esempio, il passo siamo presa conta persone nella stanza. Sotto la linea due è la linea tre che descrive esattamente come andremo a contare. Il rientro implica che è la linea tre che si ripeterà. Quindi, con il codice pseudocodice è dicendo è che dopo aver iniziato a 0 per ogni persona in camera aumenteremo n da 1 Ora, questo algoritmo è corretto? Beh diciamo bang su un po '. Funziona se ci sono due persone in camera? Vediamo. In linea uno inizializziamo n a 0. Per ciascuna di queste due persone, abbiamo poi incrementiamo n da 1. Così nel primo viaggio attraverso l' loop, aggiorniamo n da 0 a 1. Sul secondo viaggio attraverso quella stesso loop, aggiorniamo n 1-2. E così, da questo algoritmo di end, n è 2, che in effetti corrisponde al numero di persone nella stanza. Fin qui tutto bene. Come su un caso d'angolo però? Supponiamo che ci sono 0 persone nel camera-- oltre a me, chi è facendo il conteggio. In linea uno, abbiamo di nuovo inizializziamo n a 0. Questa volta, però, la linea tre non esegue affatto poiché non c'è una persona nella stanza. E così n rimane 0, che in effetti corrisponde il numero di persone nella stanza. Abbastanza semplice, giusto? Ma a contare le persone una alla volta è piuttosto inefficiente, troppo, no? Sicuramente possiamo fare di meglio. Perché non contare due persone alla volta, invece di contare uno, due, tre, quattro, cinque, sei, sette, otto, e così via. Perché non contare due, quattro, sei, otto, e così via? E anche i suoni più velocemente. Ed è sicuramente. Esprimiamo questa ottimizzazione nel codice pseudocodice. Sia n uguale a 0. Per ogni coppia di persone camera, impostare n pari a n + 2. Abbastanza semplice cambiamento, giusto? Invece di contare le persone una alla volta, noi invece li contiamo due alla volta. Questo algoritmo di, così, due volte più veloce del precedente. Ma è corretto? Vediamo. Funziona se ci sono due persone in camera? In linea uno, inizializziamo n a 0. Per questo una coppia di persone, abbiamo poi incrementiamo n da 2. E così da questo algoritmo di fine n è 2, che in effetti corrisponde al numero di persone nella stanza. Supponiamo successivo che ci sono a zero persone nella stanza. In linea uno inizializziamo n a 0. Come in precedenza, la linea tre non eseguirlo tutto dal momento che non ci sono coppie di persone nella stanza, e quindi n rimane 0. Quali effetti corrisponde al numero di persone nella stanza. Ma cosa succede se ci sono tre persone nella stanza? Come funziona questa tariffa algoritmo? Vediamo, in linea uno, inizializziamo n a 0. Per un paio di quelle persone, abbiamo poi incrementiamo n da 2. Ma allora che cosa? Non c'è un altro pieno coppia di persone nella stanza, quindi la linea due non è più applicabile. E così entro la fine di questo algoritmo, n è ancora 2 che non è corretto. Infatti questo algoritmo di disse essere bacato perché ha un errore. Facciamo ricorso con una certa nuovo codice pseudocodice. Sia n uguale a 0. Per ogni coppia di persone camera, impostare N pari a n + 2. Se una persona rimane spaiato, impostare N pari a n + 1. Per risolvere questo particolare problema, abbiamo introdotto in linea di quattro condizioni, altrimenti noto come ramo, che solo esegue se c'è una persona che non poteva accoppiare con un altro. E così ora, se ce n'è uno, o tre, o un qualsiasi numero dispari di persone nella stanza, questo algoritmo ora contarli. Possiamo fare ancora meglio? Beh, potremmo contare in gruppi di tre, o quattro, o anche cinque e dieci, ma oltre a questo, sta andando a ottenere un po 'difficile da puntare. Alla fine della giornata, se eseguita da computer o esseri umani, algoritmi sono solo una serie di istruzioni con cui risolvere i problemi. Questi erano solo tre. Che problema faresti risolvere con un algoritmo? DAVID J. MALAN: Così deliberatamente, un programma molto semplice, un algoritmo molto semplice, per ottenere qualcosa molto semplice, contando il numero di persone nella stanza. Ma cerchiamo di prendere in giro a parte alcuni del rappresentante caratteristiche qui che sono in realtà sta per essere utile anche quando attua il più complesso di software. Così, per esempio, in questa prima linea, abbiamo quello che chiamiamo la variabile, e da algebra, sei generalmente familiare con x e y e z volte, e così via. Ma in programmazione, le variabili sono ancora, al termine della giornata, molto simile a quella. Ma è forse più semplice di pensare di una variabile come solo un contenitore. E, in realtà, è certo numero di bit implementato in qualche modo nel vostro hard disk o nella memoria del computer, ma più su che in futuro. E 'solo un contenitore. E se dici qualcosa come sia n uguale a 0, bene che è come chiamare questo vetro ciotola qui n, solo un nome arbitrario, e la messa in nulla inizialmente. Quindi il valore di questo ciotola in questo momento è pari a zero. E, naturalmente, se si percepisce in una riga successiva, per incrementare realmente qualche linea di codice, come nella terza riga qui, da 1, che è come dire qual è la valore corrente di n, è 0, più 1, mettere qualcosa come un ping pong palla qui. Ora il valore di questo variabile è semplicemente 1. E si potrebbe molto rapidamente estrapolare, ma ora è 2, ora è 3, e così via. Quindi questo è tutto una variabile è. E 'un pezzo di archiviazione per effettivamente memorizzare alcuni dati. Per ora si tratta di una pallina da ping pong. Vi è un numero. Ma potrebbe essere parole in un dizionario, come il correttore ortografico Ho accennato il Mercoledì per uno degli insiemi di problemi dello scorso anno. Ora un'altra idea fondamentale, che allo stesso modo è abbastanza intuitivo vorrei affermare, è quello di un ciclo. E il ciclo nel processo di contare tutti è, naturalmente, facendo la stessa cosa di nuovo e again-- uno dei due alla volta o due alla volta. E si può esprimere questo in inglese, o codice pseudocodice, in qualsiasi numero di modi, ma usando questa preposizione "per" è un modo molto comune di farlo. Per ogni persona nella stanza, fare questo. Ancora e ancora. E il fatto che è frastagliata, linea tre, significa solo che quello che si suppone di fare è la roba che è rientrato sotto la linea due stessa. Solo una convenzione umana, ma un comune come vedremo in maggiore effettivo linguaggi di programmazione di livello. Ora, poco più interessante è quando si arriva in un caso d'angolo. Per esempio, un angolo caso è stato quando ci erano tre persone, o cinque, o sette, o un qualsiasi numero dispari di persone nella stanza, perché farlo a due a due freni infine perché la vostra intenzione perdere qualcuno, sia al molto all'inizio o alla fine a seconda di come lo si fa. E così, adesso, ho questo ramo, o condizione, se una persona rimane, poi andare avanti e di gestire quella persona solitaria che non ha ottenuto in coppia con qualcun altro. Ecco, questo è quello che noi chiameremmo una condizione, o di un ramo. Codice Ora pseudocodice più in generale, può essere scritta per risolvere qualsiasi numero di problemi. E quello che ho pensato di fare qui è prendere un momento di invitare diciamo CS50 di proprio Rob Bowden sul palco di essere raggiunto da due volontari, che non hanno idea di cosa vi aspetta. Una mano è andato giù, non appena ho detto. Come su di te sul finisce qui, vieni su. E che dire da più lontano via, come su strada nella parte posteriore. Seconda fila, vieni su con le mani alzate. Va bene, e qual è il tuo nome? ANITA: Anita. DAVID J. MALAN: Anita. Va bene, piacere di conoscerti. Lasciate che vi presento Rob Bowden. Questo è Anita. E qual è il tuo nome? Kiersten: Kiersten DAVID J. MALAN: Kiersten. Kiersten, vieni su e incontrare Rob Bowden e Anita. Piacere di conoscerti. Kiersten: Piacere di conoscerti. DAVID J. MALAN: Va bene, Rob. ROB BOWDEN: Piacere di conoscerti. DAVID J. MALAN: Anita. Kiersten: Ciao Anita. DAVID J. MALAN: E la tua diverse centinaia di compagni di classe. Così, ora lasciami andare avanti e tirare up solo un semplice programma qui su Mac OS che mi lasci in realtà annotare alcune note verso il basso. E se voi volete prendere una ogni posizione in una di quelle scuole lì, lasciami andare avanti e inizia una lista di codice pseudocodice, se si vuole. E quello che voglio fare qui, in ultima analisi, è il tipo per te alcune istruzioni che il nostro membri del pubblico sono in realtà andando a recitare per noi. Lasciami andare avanti e basta cambiare questo a un elenco numerato a corrispondere a ciò che stavamo facendo lì. E che cosa ho intenzione di fare con il vostro aiuto, è scrivere un programma in pseudocodice, con cui questi ragazzi stanno andando attuare una nocciolina burro e gelatina di sandwich. Quindi è forse a proposito di mostrare qualcosa di un po 'di voi potrebbe aver visto su internet solo per un breve momento fastidioso. [MUSICA BUCKEWHEAT RAGAZZI, "BURRO DI ARACHIDI  Jelly Time "] DAVID J. MALAN: OK. Questo è abbastanza. Così qui nel frattempo, ho un paio di Google Glasses cui metteremo su di CS50 proprio Rob Bowden di vedere il mondo attraverso i suoi occhi. E noi faremo del nostro meglio in post produzione effettivamente tessere le riprese di quello che Rob sta vedendo ora, in questa conferenza effettivo video con i nostri due volontari accanto a lui. Così che cosa ho intenzione di fare è, io sarò il dattilografo. Abbiamo l'obiettivo qui di in realtà la scrittura di un programma con cui fare, in definitiva, un burro di arachidi e gelatina di panino, ma questi tre stanno andando a comportarsi come se fossero dei computer. E computer, al termine della giornata, sono in realtà dispositivi piuttosto stupidi. Sono super veloce, ma solo può fare, letteralmente, ciò che viene detto. Non si può semplicemente dire fare una nocciolina burro e gelatina di sandwich. Devi programmare loro di farlo. Devi dire loro con precisione cosa fare, meno le cose vanno terribilmente e, si spera, in modo divertente storto. Quindi, con quello detto, abbiamo bisogno un call-out da parte del pubblico per quello che dovrebbe fare un passo un essere, se l'obiettivo qui è quello di fare una nocciolina burro e gelatina di sandwich. Sì? PUBBLICO: [incomprensibile] il sacchetto di pane. DAVID J. MALAN: Aprire la busta del pane. Quindi, se i tre concorrenti avrebbero come procedere per farlo letteralmente. Aprire la busta del pane. [Il pubblico ride] DAVID J. MALAN: Quindi cerchiamo di lavorare su questo. Bene. Così passo due, how-- prendiamo questo ulteriore. Sì, nella parte anteriore. PUBBLICO: [incomprensibile] il pane. DAVID J. MALAN: Che cos'è? PUBBLICO: Togliere il pane. DAVID J. MALAN: Togliere il pane. Allo stesso modo succinto. Grazie. [Applausi] DAVID J. MALAN: Questo è tutto? OK, quindi passo due sta andando essere togliere il pane. Va bene, qualcuno vuole noi scrivere una frase più lunga? Qualcun altro? Un po 'più [incomprensibile]. No, niente ora. Sì? PUBBLICO: Luogo due fette una accanto all'altra. DAVID J. MALAN: Luogo due fette una accanto all'altra. [Il pubblico ride] DAVID J. MALAN: Luogo due fette una accanto all'altra. Fase quattro. Sì? PUBBLICO: Prendete il vostro mano e lo mise alla leggera sulla parte superiore del coperchio burro di arachidi. [Il pubblico ride] PUBBLICO: [incomprensibile] accanto al burro di arachidi. DAVID J. MALAN: Cosa? Dire ancora una volta che. PUBBLICO: svitare il coperchio e mettere delicatamente accanto al burro di arachidi. DAVID J. MALAN: Mettere delicatamente accanto al burro di arachidi. OK, il progresso. Fase cinque. Eccellente. Sì? Pick up coltello. DAVID J. MALAN: Pick up coltello. OK, punto sei. Sì? PUBBLICO: Tenere coltello dalla parte del manico. DAVID J. MALAN: Tenere coltello per il manico. Tenere coltello dalla parte del manico. Passo sette. Sì? PUBBLICO: coltello [incomprensibile] in arachidi il burro e il poco fuori [incomprensibile]. DAVID J. MALAN: Metti coltello dentro-- I sentito "mettere il coltello nel burro di arachidi e prendere come poco fuori il più possibile. " A proposito, rimuovere la carta prima. Va bene, passo nove. Passo nove. Passo nove. Non abbiamo effettivamente fatto ancora un panino. Sì? PUBBLICO: Utilizzo di coltello nel burro di arachidi, applicare burro di arachidi su detto pane. DAVID J. MALAN: Utilizzo di coltello burro di arachidi, applicare burro di arachidi su detto pane. [Il pubblico ride] DAVID J. MALAN: Va bene il punto 10. Passo 10. Sì? PUBBLICO: Gusto di arachidi burro per garantire la qualità. [Il pubblico ride] DAVID J. MALAN: Passo 11. Passo 11. Passo 11. Dai. Sì? Proprio lì. PUBBLICO: raccogliere con cautela gelatina. DAVID J. MALAN: raccogliere con cautela gelatina. OK, e poi un'altra mano era su. Proprio dietro di te. Sì, in blu. PUBBLICO: Va bene, togliere coperchio da [incomprensibile], sì, rimuovere il coperchio dalla gelatina. [Il pubblico ride] DAVID J. MALAN: Da gelatina. Ah ah. [Il pubblico ride] DAVID J. MALAN: E? PUBBLICO: E a malapena spazzare qualsiasi [incomprensibile]. [Il pubblico ride] PUBBLICO: Naturalmente, prima di [incomprensibile], rimuovere la carta da gelatina. DAVID J. MALAN: Rimuovere la carta dalla gelatina. Passo 14. Ci siamo quasi. Sì? PUBBLICO: bottiglia gelatina Inverti prima che tutto cade. DAVID J. MALAN: Inverti gelatina bottiglia prima di gelatina cade. Passo 15. PUBBLICO: Sostituire il tappo. DAVID J. MALAN: sostituire il tappo. Passo 16. Sì? PUBBLICO: [incomprensibile] DAVID J. MALAN: Dire ancora una volta che. PUBBLICO: Prendere cappuccio della vostra gelatina. DAVID J. MALAN: Off vostra gelatina. Così really-- Oops. Dai. Rimettere il tappo. Mettere cap-- Hai detto rimuovere il tappo di gelatina. Sento come se fossimo in un po 'di un loop. Passo 17. Sì? PUBBLICO: [incomprensibile] DAVID J. MALAN: Dire ancora una volta che. PUBBLICO: [incomprensibile] DAVID J. MALAN: Torna step-- PUBBLICO: [incomprensibile] DAVID J. MALAN: Rimuovere berretto da burro di arachidi. Sì? PUBBLICO: goccia tutto il gelatina sul pane. DAVID J. MALAN: goccia tutto la gelatina sul pane. DAVID J. MALAN: ci siamo quasi. Passo 19. PUBBLICO: Rimuovere gelatina in eccesso. DAVID J. MALAN: Haha, gelatina. [Applausi] DAVID J. MALAN: Perché non we-- un altro passo a prendere questa casa. Ancora un passo e poi ci serviamo panini. Sì? PUBBLICO: [incomprensibile] DAVID J. MALAN: Mentre ogni panino trattino della let remains-- questo-- mangiare. [Risate del pubblico] DAVID J. MALAN: Va bene, grazie di nostri volontari qui. [Applausi} DAVID J. MALAN: Abbiamo qualche bella separazione regali per ognuno di voi. Il tuo burro di arachidi, gelatina, e il pane da portare a casa. Grazie. Kiersten: Grazie. DAVID J. MALAN: [incomprensibile] benvenuto. [Applausi] DAVID J. MALAN: Quindi, questo è, di Naturalmente, un esempio ridicolo. Giusto? Ma questo tipo di rivela come gli esseri umani basta prendere chiarezza per scontato. E il fatto che io sono stato parlando con un altro essere umano, lui o lei sa solo quello che vuoi dire. I computer non sono in corso per sapere quello che vuoi dire, anche quando si utilizza, come stiamo per fare oggi, programmare qualcosa in Scratch, una resistenza and drop, la lingua di puzzle stile pezzo. Anche progettata per i giovani bambini, si hanno essere così esplicito e così letterale con che cosa volete che il vostro programma di fare. Ora in ultima analisi, siamo sta per essere la programmazione non nel codice pseudocodice, Inglese come sintassi, ma il codice o, più propriamente, il codice sorgente. Il codice sorgente è solo il modo di fantasia per descrivere il codice che effettivamente scrivere con una tastiera che è non in inglese di per sé. E 'in C o Java o C ++ o qualcosa così, come vedremo tra poco. E infatti, solo per spaventare un pochi di voi, a prima vista, questo è un programma scritto in un linguaggio chiamato C. Ma per non-paura alcuni di voi, si sarà completamente capire cosa sta succedendo il venire Lunedi prossimo, quando viene a qualcosa di simile. Francamente, questo è un linguaggio vecchio. E 'abbastanza arcano, ma è rappresentativo di un sacco di lingue in questi giorni che hanno un sacco di parentesi e ricci bretelle e virgolette e virgola. E un sacco di questo roba sintattica che non è a tutti intellettualmente interessante. In effetti, si tratta di una distrazione assoluta dalle idee molto semplici che ci stanno fissando in faccia. Questo programma, come si può solo immaginare, stampe a schermo del computer di qualcuno le parole "Ciao mondo virgola." Questo è tutto. Quindi, chiaramente, c'è un sacco di roba che è ottenere nel modo di alcune ovvietà lì, ma sta andando a scivolare molto rapidamente di distanza ed essere completamente intuitiva. Infatti, che cosa stiamo andando a fare oggi è distillare questa abbastanza complessa programma cerca, che ancora una volta si verrà a di capire rapidamente, ma a qualcosa di molto più semplice. Diciamo solo che cosa intendiamo. Facciamo disegnare un quadro di ciò che noi intendiamo, per mezzo di questi pezzi del puzzle qui. Quindi questa è una programmazione lingua conosciuta come Scratch. È stato sviluppato da Media Lab del MIT. E quello che vedrete nel problema set a zero, che sarà rilasciato entro questa sera, dovremo andare a questo URL qui scratch.mit.edu. E hanno un sito web interfaccia basata via che potrete scrivere il primo programma. O quelli di voi con la prima esperienza, i tuoi secondo programma, ma in un ambiente che è probabilmente un po 'sconosciuto e che spingerà a creare qualcosa usando questo ambiente molto visivo. Ora, che cosa ho intenzione di fare qui è aprire il programma stesso. Esiste non solo come un browser web, ma anche come un programma scaricabile in modo che si può effettivamente utilizzare se non si dispone di accesso a Internet. E ho intenzione di farlo qui, in Sanders, appena nel caso in cui il Wi-Fi non lo fa collaborare super-bene. E che cosa ho intenzione di fare è punto fuori alcune caratteristiche di questo programma. Quindi, per essere chiari, ho appena letto cliccato l'icona sul mio desktop, o equivalentemente andato a scratch.mit.edu, ed è tirato su questa finestra. Questo è un ambiente di programmazione. E 'un pezzo di software che alcuni dei nostri amici del MIT scrisse che ti permette di noi e si scrive programmi in un linguaggio chiamato Scratch. Ora, questo sembra essere un casalingo che anche il nome Scratch e questo è il suo mondo in cui vive. Questa è la fase, per così dire, che rettangolo in alto a sinistra. E lui non deve apparire come un gatto. Puoi farlo sembrare come niente e ti può avere molti di questi sprite, o caratteri, in un programma. Nel frattempo, qui in fondo a a destra, è un grande foglio bianco. Ed è qui che, in un momento, stiamo per iniziare la programmazione trascinando questi puzzle di grafica pezzi che è giusto qui in mezzo. E non c'è modo più di loro che passeremo il tempo qui in classe perché troverete che sono tutti abbastanza intuitivo. Ancora una volta, è progettato per i bambini, ma noi usarlo per prendere in giro a parte alcuni di quelli idee fondamentali di variabili, cicli, le condizioni, e, presto, le cose come funzioni ed eventi e filetti e altre cose di fantasia ti raggiungere in breve tempo a creare effettivamente qualcosa da zero. Gioco di parole. Ora, che cosa ho intenzione di fare qui è clicca su moto non, ma il controllo. E questo è solo un categorizzazione di qui-- e vedo un diverso set di colori dei blocchi. Ma bando poche parole familiari. "Se" e "else if" e "repeat". E si può intuire che ricorda del ramo, o le condizioni che abbiamo visto, e anche il costrutto di ciclo. Così abbiamo blocchi simili qui. Ma la più interessante uno è questo qui. Quando si fa clic su questa bandiera verde, questo, per quelli con preventiva programmazione esperienza, è equivalente a una funzione principale. Ma per chi non conosce, questo è il pezzo del puzzle che dovrebbe dare il via tutto il nostro programma. Letteralmente significa quando vado, in questo programma, e fare clic su un flag-- verde che potete vedere qui in alto a sinistra dell'interfaccia utente, in modo da vedere la bandiera verde accanto al segnale di stop rosso? Quando faccio clic su questo, il mio programma è andare a correre. Ora, ho intenzione di fare qualcosa super semplice con Scratch. Ho intenzione di andare avanti e andare al pannello di sguardi qui, dove ho un sacco di pezzi del puzzle viola, e ho intenzione di andare avanti e fare qualcosa di super semplice come, dicono. E preavviso then-- questo il testo nella casella bianca è editable-- ho intenzione di dire "Ciao mondo", proprio come noi ha fatto in quella testuale versione un momento fa. E ora se vado e fare clic su questo verde bandiera, ora ho programmato. Non è particolarmente programma interessante, ma ho fatto il computer fare qualcosa. Ho iniziato un programma e fatto quello che ho detto di fare. Ora, posso continuare a trascinare sempre di più di questi pezzi del puzzle e che stanno andando a interblocco, ma cerchiamo di schiaffo po 'di terminologia qui che vedremo ricorrenti durante tutto il corso, e davvero tutta l'informatica e programmazione, più in generale. Questa "dire" block, in viola, cerchiamo di basta iniziare a chiamare una dichiarazione. E 'come un dato di fatto. Fate questo. Quindi, si tratta di una categoria di istruzioni che si potrebbe alimentare un computer come parte di un programma o di un algoritmo. E per essere chiari, hai probabilmente dato per scontato che avete programmi sul computer. E sono tipi di algoritmi, ma un programma è davvero un mucchio di algoritmi che alcuni esseri umani hanno scritto. Sono confezionati in su e hanno venduto in modo che lei, oppure pubblicate su un sito web per il download. Così, un programma è solo un tutta una serie di zero e uno che, in qualche modo, gli esseri umani creati. E quei modelli di zeri e rappresentano quelle cose, in ultima analisi, come "dire ciao mondo" o "gioco questo music "o" riprodurre il video " o "invia una e-mail." Ma ci torneremo in modo più dettagliato cosa un programma è quando, te, li scrivono. Ecco un altro statement-- "Aspetta un secondo." Non ho ancora usato questo, ma se voglio il mio programma per mettere in pausa per un momento di fare qualcosa, posso dire di farlo. Aspetta un secondo. Ora, un altro potrebbe essere "riprodurre il suono." Quindi, questo è unico a zero, ha la capacità di riprodurre suoni. Quindi, una dichiarazione che potrebbe utilizzo è, qui, "giocare suono." Nel frattempo, espressione booleana, quindi questa è una parola più elaborato prende il nome da solo un ragazzo di nome Mr. Bool, e questo è tutto una domanda. Vero o false-- è il mouse verso il basso? Un'espressione booleana è solo qualche espressione in inglese che è o vera o falsa. ON o OFF. O uno o zero. Si può pensare ad esso in qualsiasi numero di modi, ma è vero o questa falsa, in ultima analisi. Quindi "mouse verso il basso punto interrogativo," che sarebbe una espressione booleana. E si può pensare agli altri, forse. Ad esempio, "è il numero di sinistra inferiore al numero giusto? " Anche questo sarebbe un'espressione booleana. "Meno" è una espressione booleana. Questo, anche, "il puntatore del mouse commovente." Non sono sicuro perché chiamato puntatore del mouse. Significa solo, è il cursore, è il freccia sullo schermo, toccare il gatto, per esempio. O qualche altro aspetto della schermata. Ed è una questione, ancora una volta, e che denota un'espressione booleana. Qualcosa che si potrebbe desidera utilizzare in una condizione. Quindi verremo a che in un attimo. È possibile "e" le cose insieme. Quindi, se si vuole verificare se questo è il caso e che è il caso, è possibile utilizzare un "e" block come questo. Ed ecco quella condizione. Notare la forma della piccola apertura nella parte superiore di questo pezzo di puzzle di colore giallo, è che ricorda la forma che abbiamo appena visto un momento fa. Ognuna di queste espressioni booleane avere questi bordi appuntiti a sinistra ea destra. E questo perché la gente del MIT ha deciso che da forme di trasporto visivamente, è possibile genere di aiutare le persone, studenti e bambini, al tipo di riempire gli spazi vuoti letteralmente. Ora che puzzle-- che apertura è un po 'piccola, e come vedremo nel programma, in Scratch, che crescerà per adattarsi. Manterrà la sua forma, in ultima analisi. Quindi una condizione ti permette di decidere "Devo fare qualcosa o no?" Un'espressione booleana è la domanda reale si sta utilizzando per decidere vado a sinistra o devo andare a destra quando ho incontrato questo cosiddetto bivio? È possibile avere due rami. Se qualcosa è vero, fare questo, altrimenti andate in questo modo, o si può semplicemente fare nulla tutto, come questo blocco implicita. Allo stesso modo, possiamo nido queste cose. Quindi, se si vuole triplicare forchetta nel strada, o fare questo o questo o quello, si può solo nido queste cose insieme. E comincia a diventare un po ' brutto, alla fine, di sicuro, ma la logica è sempre la stessa. Si può letteralmente leggere questa cima a fondo e dice ciò che means-- se questo è vero, fai questo, altrimenti se altrimenti. Un ciclo non ottiene più semplice in Scratch. Sempre fare quanto segue. Ora si potrebbe pensare che non può fare molto perché non c'è molto spazio tra la parte superiore e la fondo di questa apertura pezzo di puzzle. Ma vedrete Scratch sta per crescere per soddisfare il maggior numero di pezzi di puzzle come si vuole stipare in là. Un altro ciclo potrebbe essere espresse con ripetizioni. Se si conosce in anticipo, "I voglia di fare qualcosa di 10 volte, " si può solo dire Scratch di fare qualcosa per 10 volte. E, nel frattempo, possiamo avere variabili. Così qui è arbitraria, è arancione in questo caso, e questo è un tour. Anche in questo caso, troverete questo molto accessibile una volta che si inizia puntando e cliccando. Ho chiamato il mio variabile n, ma io avrebbe potuto chiamò tutto ciò che voglio, e sto impostando qui, in questo esempio arbitrario, a zero. Ora vedendo un programma come ciao mondo non è poi così avvincente, quindi cerchiamo di realtà aprono qualcosa che un ex studente ha fatto. Lasciami andare avanti e di aprire, per esempio, questo qui, per cui mi piacerebbe avere un volontario. Va bene, come about-- andiamo più lontano. Sì, vieni su. Come ti chiami? ABBY: Abby. DAVID J. MALAN: Abby, vieni su. Quindi avete mai giocato questo gioco prima? ABBY: No. DAVID J. MALAN: Va bene. David, piacere di conoscerti. Andiamo oltre. E qual è la vostra programmazione sfondo, se presente. ABBY: ho imparato un po 'di C ++. DAVID J. MALAN: Hai imparato qualche C ++. E qual è il vostro gioco la riproduzione di sfondo? ABBY: Non molto. DAVID J. MALAN: OK, quindi prenderemo quello. Quindi, ecco come il gioco sta andando a lavorare. Ho intenzione di andare avanti e clicca la bandiera verde, che è qui in alto a destra. Ora il vostro predecessore nella classe vi ha dato qui alcune istruzioni. E in un attimo, si dice "spazio per iniziare." Quindi, andare avanti e colpire la barra spaziatrice. GIOCO DI COMPUTER: Pikachu. DAVID J. MALAN: E l'obiettivo è quello di prendere il cibo, come illustrato là sulla sinistra. E per [incomprensibile] [GAME MUSIC GIOCO] DAVID J. MALAN: Aww, bene, grazie per la riproduzione. Abbiamo qui un po ' separazione regalo per voi. Abbiamo palla antistress CS50, se vuoi scegliere. Va bene, buono per incontrare voi. Grazie per essere venuto e stimolante. Così abbiamo più palle di stress, così facciamo un esempio più per motivare. Un volontario? Va bene, come su proprio qui di fronte. Come ti chiami? PHILLIP: Phillip. DAVID J. MALAN: Phillip. Vieni su, Phillip. Così, Phillip sta per essere sfidato con un altro gioco che uno dei suoi predecessori ha scritto come parte del problema impostato a zero, chiamato gioco più difficile di Ivy. E vedremo in un momento che cosa si intende con questo. Filippo, piacere di conoscerti. Qual è il tuo background? PHILLIP: Fatto un sacco di codifica. Fatto un po 'di gioco, troppo. DAVID J. MALAN: OK. Hai un sacco di gioco, troppo. E hai giocato a questo gioco prima? PHILLIP: No DAVID J. MALAN: Tutti a destra, ecco andiamo. Ho intenzione di andare avanti e fare clic sulla bandiera verde. [MUSIC GAME] [MUSICA MC Hammer, "U NON PUO 'TOCCARE QUESTO"] PHILLIP: [incomprensibile] DAVID J. MALAN: [incomprensibile] PHILLIP: [incomprensibile] [Ride] [MUSICA MC Hammer, "U NON PUO 'TOCCARE QUESTO"] DAVID J. MALAN: [incomprensibile] Aratro attraverso di essa. PHILLIP: [incomprensibile] DAVID J. MALAN: Vai avanti. [MUSICA MC Hammer, "U NON PUO 'TOCCARE QUESTO"] DAVID J. MALAN: Va bene. Complimenti. [Applausi] DAVID J. MALAN: Ci sarà post che in linea poi così che si può procrastinare con esso pure. Princeton viene accanto, dopo. Così ora andiamo in realtà procediamo di ripartire da zero, per così dire, e in realtà costruire fino siamo in grado di prendere in giro a parte alcune di queste idee e arrivare a qualcosa di ancora più complessa dalla fine. Ho intenzione di andare qui e ho intenzione di andare avanti e creare un nuovo file. Così ancora una volta, il problema insieme camminerà attraverso alcuni di questi passaggi. Ma, tutto quello che ho fatto è stato andare al menu File e io ha detto "nuovo", in modo molto simile a Microsoft Word, o qualsiasi programma del genere. E andiamo avanti now-- e noi implementato "Ciao mondo" un momento fa, ma facciamo qualcosa di un po 'più carino. Ho intenzione di andare fino agli eventi. E ho intenzione di fare "quando bandiera verde cliccato. " E poi ho intenzione di utilizzare, per così dire, un ramo. Quindi ho intenzione di utilizzare un "se" condizione. E notare come appena mi avvicino ad essa, vuole scatto insieme. Così ho lasciato andare e non scatta insieme. E ora posso fare qualcosa di interessante. Se io scorrere qui, io vado per vedere un sacco di blocchi. Se vado a "dati" - mi lascia lo zoom dentro-- c'è qualcosa sulle variabili. Se vado in "movimento", è possibile apparentemente cambiare le cose. Se vado a "operatori" - Oh, questo è interessante, Posso scegliere un numero casuale. Quindi, mi permetta di fare qualcosa solo con una certa probabilità, solo perché. Ho intenzione di andare avanti e trascinare il pezzo di puzzle, questo è che meno blocco, quindi è solo "È questo numero inferiore a quello?" Ma io non voglio un codice dura un numero perché che sia abbastanza inutile. Quindi ho intenzione di trascinare questo pezzo qui, e notare come non scatta in, e ora lasciami andare avanti e dire "se il numero che è scelto in modo casuale è inferiore a sei, procedere nel modo seguente. " Ora, perché meno di sei? Che probabilità è questo in modo efficace andando a dare me, solo intuitivamente? Circa il 50%, giusto? Se il numero di indovinare a caso tra 1 e 10 è inferiore a sei, chiaramente si tratta di uno, due, tre, quattro, o cinque. E così che sta andando a darmi una Probabilità del 50% di quello che succede? Beh, facciamo qualcosa di simile questo, "giocare meow suono." E notate, ancora una volta, il pezzo del puzzle cresce per misura, purché le forme corrispondono. Questo è ciò che è importante. Lascia che io vada a Scratch qui e fare clic su "gioco". Non succede nulla. È che un bug? No, non è necessario. Potrebbe essere solo che una è stato scelto il numero più grande. Quindi cerchiamo di farlo di nuovo. Niente. [Miao] DAVID J. MALAN: Eccola. [Miao] DAVID J. MALAN: Ancora una volta. No. [Miagolare] DAVID J. MALAN: Quindi, se avete mai giocato un gioco, ovviamente, dove roba che sta accadendo in modo casuale, come i cattivi stanno arrivando o non arrivando a schermo, o le cose stanno cadendo o che non rientrano, questo è solo perché qualcosa di super semplice come questo sta accadendo. Scegli un numero casuale, e se è meno di un certo valore, forse fare questo o forse farlo. Siamo in grado di incorporare che in una condizione. Facciamo qualcosa di diverso. Lasciatemi buttare via tutto. Si può sbarazzarsi di roba da semplicemente trascinandolo verso sinistra e lasciarsi andare. Lasciatemi andare avanti e fare un blocco per sempre e molto rapidamente fare qualcosa di fastidioso. Lasciami andare avanti e dire "meow riprodurre il suono." Ma io non voglio che questo sia troppo fastidioso, per cui vorrei afferrare questo blocco, "Aspetta un secondo" e preavviso non c'è più spazio per esso. Ma se si va abbastanza vicino, vuole andare lì. Così ho lasciato andare e si crescere fino a riempire il blocco. Così ora, questo è un loop. [Miagolare] DAVID J. MALAN: io sono letteralmente fare questo per sempre. Ancora e ancora. Che non è solo suono naturale. Lasciami andare avanti e cambiare questo non a un secondo, o due secondi e premere Invio. E ciò che è bello di Scratch è che si può programmare in modo interattivo. Fare un cambiamento, forse premere Invio o Play di nuovo, e sarà solo andare avanti. Bene, ora perché non facciamo qualcosa di un po 'più carino? Invece di fare tutto da zero, lasciami andare avanti e apro un anticipo fatto uno, che ho precotto, chiamato "Pet il gatto." E postiamo tutti questi file online, e problema di impostare lo zero vi dirà come accedervi e aprirli. E notate, questo è abbastanza semplice. Ma in anticipo, mi sembra di aver afferrato un blocco "per sempre", così ho un ciclo. E poi ho un "se" condizione. Ho una espressione booleana. Quindi, in inglese, un semplice sguardo alla questo, soprattutto se non hai mai programmato prima, solo intuitivamente, che cosa è questa intenzione di fare, questo programma? [CHATTER PUBBLICO] DAVID J. MALAN: Se accarezzare i gatti, il gatto sta andando a miagolare, giusto? Perché "per sempre deselezionando" è il puntatore del mouse toccando il gatto. Quindi, per essere chiari, e non ho detto questa prima, tutti questi rompicapo pezzi e lo script che li abbiamo combinati in, per così dire, uno script è sinonimo di programma, in realtà, appartiene a questo gatto. E la ragione è-- perché preavviso come questo stesso gatto qui è evidenziato, qui è possibile creare un secondo gatto o cane o realmente tutto ciò che si desidera graficamente. È possibile importare qualcosa da Photoshop, o simili, e integrare qualcosa se vuole fare per un progetto. E ciò che troverete, in definitiva, è che si può aggiungere script, aggiungere di puzzle pezzi, ai singoli caratteri. Quindi tutti questi appartengono a questo particolare gatto. Così ora se vado avanti e giocare questo programma, nulla succede. Ma è in esecuzione. Il programma è in questo eterno ciclo, tipo di attesa di cosa succederà? [CHATTER PUBBLICO] DAVID J. MALAN: Per accarezzare il gatto. Quindi, se io muovo il mouse verso lui-- [Miagolare] DAVID J. MALAN: Così ora Sto accarezzare il gatto. Nel frattempo, possiamo avere un doppio ramo. Lasciami andare avanti e aprire up non accarezzare il gatto. Pubblicheremo questa linea pure. Questo è un po 'più complessa, ma senza dire si può intuire forse cosa succederà. [Miagolare] DAVID J. MALAN: Cat è miagolando, grande vecchio tempo. Ma questo programma è naturalmente chiamato "Non Pet il gatto," così chiaramente, voglio accarezzare il gatto. [ROARING] DAVID J. MALAN: Non accarezzare il gatto. Ora, diamo uno sguardo un altro esempio qui. Questa sarà chiamata "Ciao, Ciao, Ciao," per ragioni che sarà chiaro, perché appena ho eseguito questo cosa-- [BARKING SEAL] DAVID J. MALAN: Molto facile scrivere programmi Scratch fastidiosi. [BARKING SEAL] DAVID J. MALAN: Ora non andremo in grande dettaglio con tutti questi, ma notare vi è una paio di nuove funzionalità qui. C'è una variabile, denominata "sordina" e poi c'è un sacco di condizioni. E per ora, lasciatemi appena si prendono in giro dicendo che se questo ragazzo diventa troppo fastidioso, Posso colpire la barra spaziatrice e lui si ferma. Poiché il ruolo svolto dalla questi due script è il seguente. Uno di loro sta facendo il abbaiare ogni pochi secondi. L'altro è solo in attesa per me per colpire la barra spaziatrice. E se lo faccio colpito la barra spaziatrice, sta andando a cambiare lo stato di questa variabile, il valore di questa variabile, che è apparentemente chiamato "sordina," Io non ho chiamato è qualcosa di noioso come n, Ho chiamato una parola inglese, "silenziato". Da 1 a 0 o 0 a 1. Da true a false o false a true. E così si può effettivamente vedere ora, che si potrebbe avere due script, due programmi in esecuzione contemporaneamente, e ciascuno di essi potrebbe essere seduti in un loop di fare qualcosa. Aspettando l'uomo a fare qualcosa come colpire la barra spaziatrice. [BARKING SEAL] DAVID J. MALAN: Ed ora lui è il suo modo di nuovo. [BARKING SEAL] DAVID J. MALAN: Quindi, che cosa potremmo fare con questi esempi? Bene, andiamo avanti e fare un esempio di contare le pecore. Continueremo questo lungo le linee qui di-- apriamo l'esempio delle pecore. E notate, proprio come prima, questo, per fortuna, è un po 'meno fastidioso. Una volta mi ha colpito giocare qui-- Oh no, questo è fastidioso. Sta per baa con una certa probabilità. Giochiamo di nuovo. [BLEETING PECORE] DAVID J. MALAN: L'unica differenza è abbiamo cambiato il costume, per così dire, e stiamo dimezzando e dire cosa che il numero reale è. Bene andiamo avanti e prendere ulteriormente questo un passo. E lasciate che vi prendono in giro con un'altra caratteristica qui. Andiamo avanti e aprono un programma chiamato Threads. Così tanto come si può avere una sprite, avendo più script, si possono avere due sprite, un uccello in un gatto, ciascuno con il proprio copione. E ognuno di loro può operare contemporaneamente. Se hai mai sentito il parola "multithreading" un computer significa "multithread" si può fare più cose in una volta, e, anzi, così possono graffiare. E ora notate l'uccello è una specie di muto. Sta solo facendo le cose a caso, rimbalza fuori dallo schermo. Chiaramente è stato programmato il gatto avere tipo di ricerca di capacità a casa in sull'uccello perché lui è sempre rivolto a lui. Fino alla fine, ha cattura l'uccello reale. Quindi non mi dilungo sui dettagli qui, ma si può tipo di intravedere le stesse forme, alcune "Se" le condizioni, alcune variabili, forse alcuni loop, sono in ultima analisi, facendo la stessa cosa. Ora lasciami andare avanti e aprire qualcos'altro del tutto, prendere in giro alcuni di voi, in particolare quelli più confortevole, quello che si può effettivamente fare con questo. Ho intenzione di andare avanti e di aprire Button qui. E questo è un super programma di semplice apparentemente, ma guarda cosa succede quando I-- guardare quello che succede quando apro questa versione di esso, qui nel browser, scratch.mit.edu. E quando clicco questo grande rosso pulsante, vedere cosa succede. Così che cosa sta succedendo qui? In realtà c'è molto di più la complessità succedendo sotto il cofano, anche se ho implementato questo, o francamente, Dan Bradley ha implementato questo in modo semplice. Ha disegnato un puzzle Scratch personalizzato pezzo, conosciuta come estensione Scratch, lo chiamò Toggle. E che cosa fa Toggle è invia un messaggio su internet. E che messaggio stesso sembra un po 'criptico. Ma anche questo, ti comprendere entro la fine del periodo. Il messaggio che sta effettivamente inviando sembra un po 'qualcosa di simile. E 'solo testo. Cryptic. Capirai che per il momento otteniamo il problema impostare sette. E 'solo l'invio di un messaggio di testo su internet ad un server. E questo server è, in ultima analisi, parlando con questa lampadina, che è una di quelle lampadine di fantasia in modo che, a sua volta, sta parlando alla rete Wi-Fi in rete qui, dove un dispositivo locale giù qui-- e, in ultima analisi, in realtà è trasformando quella luce e si spegne. Ma possiamo fare di più cose interessanti ancora. Notate ciò che Dan ha fatto anche per noi. Ha fatto più sprites, ciascuna delle che ha uno script in attesa di un click. E se clicco rosso, va rosso. Se ottengo blu, va bluastro. Verde, giallo, arancione. E tutto questo sta accadendo da andando via d'uscita su internet, marcia indietro qui al lampadina, on e off. E se si può credere it-- e questo è forse uno dei più complessi Scratch progetti qualcuno ha implemented-- lo ha fatto, in tutta onestà, in un giorno. E che era la sfida che abbiamo buttato giù di Dan quando abbiamo visto avere lampadine binari, abbiamo Scratch, come possiamo combinarli? E, in effetti, questo è assolutamente qualcosa che chiunque in questa stanza potrebbe fare da end-- del semestre è lui lampadine binari reimplementata utilizzando la stessa interfaccia che era sul nostro iPad il Mercoledì. Così ora, se ho effettivamente fare clic sul più qui, abbiamo uno, due, tre. Posso colpire il 16 e accendere quella su. 128, e così via. Ora, se questo da solo ha e soffiato la vostra mente, si potrebbe fare cose molto più accessibile, non implichi qualsiasi hardware certamente. Solo cose sullo schermo stesso. E, in effetti, ciò che la maggior parte degli studenti finisce per fare è una sorta di gioco, qualche pezzo del lavoro artistico, o una sorta di animazione interattiva. E dirò uno dei nostri preferiti è stato questo. E ho pensato che se ci potrebbe abbassare le luci, daremo uno sguardo a questa finale Progetto Scratch in conclusione. Ma cosa ti dovrebbe tenere a mente, come Posso prendere in giro voi con un ultimo dettaglio, sezionamento inizierà la prossima settimana. Orario di ricevimento inizieranno la prossima settimana. Problema impostato sarà inviato a zero CS50.harvard.edu più tardi oggi. E sarete accolti nel problema set a zero al di CS50 proprio Zamyla Chan, che guida la maggior parte del nostro procedure dettagliate. Questi sono i video incorporati negli insiemi di problemi che si terrà la mano attraverso un sacco della configurazione iniziale e attraverso molti delle possibili scelte progettuali. Quindi, se hai mai avuto quell'emozione al momento del ritiro un compito per casa e si chiede, da dove comincio? Avrà la risposta per voi. E ora, un programma definitivo da uno dei suoi predecessori in risposta alla domanda "Che cosa dice la volpe?" [MUSICA YLVIS, "COSA DICE LA VOLPE?] YLVIS: (CANTO) Cane va woof. Cat va meow. Uccello va Tweet e mouse va squittio. Mucca va moo. Rana va gracidio. E l'elefante va toot. Anatre dicono ciarlatano e pesce vanno blub. E il sigillo va ow ow ow, ma c'è un suono che non si sa, che cosa dice la volpe? E DAVID J. MALAN: Questo è tutto per CS50. Ci vediamo a Puzzle Day e il Lunedi. [Applausi] [MUSICA YLVIS, "COSA LA VOLPE dire?"] NARRATORE: E ora profondo pensieri, da Daven Farnham. Oggi sono stato colpito in faccia con una rubrica telefonica. Confondere, come sono al casa a guardare on-line.