[RIPRODUZIONE VIDEO] [Porta che si chiudeva CAR] [AUTO AVVIAMENTO MOTORE] [RIPRODUZIONE DI BRANI MUSICALI] -Moving Destra lungo alla ricerca di momenti belli e una buona notizia. Con i buoni amici non si può perdere. -Questo Potrebbe diventare un'abitudine. Urti -Opportunity Diamo solo raggiungere e afferrare. -Già! -insieme Ci Nab esso. Ll del `escursione intoppo, autobus o taxi giallo esso. -Dammit. -We're Spostamento a destra lungo. -Footloose E fantasia libera. Ci -Come è la metà del divertimento. Venite a condividere con me. -We're Spostamento a destra lungo. -We're Intenzione di condividere il carico. -Noi Non hanno bisogno di una mappa per ottenere questa esposizione sulla strada. Ehi Fozzy, voglio che svolta a sinistra se si arriva a un bivio. -Si signore. Svoltare a sinistra al bivio. Girare a sinistra. -Non Credo che. -Cruising Destra lungo abbiamo trovato le luci sulla strada principale. -e Proprio percorso o la mia strada. -Quindi Fiducia mia navigazione. Stelle -Movie con automobili flashy e la vita con la capote abbassata. -We're Assalto le grandi colline. -Sì, Tempesta è giusto. Dovrebbe essere nevicando? No, io non la penso così. -Moving Destra lungo. -Footloose E fantasia libera. -Sei Pronto per il grande momento. -E 'Pronto per me? -Moving Destra lungo. Spostare a destra lungo. Spostare a destra lungo. Spostare a destra lungo. -Penso Che è meglio tirare su. -Si signore. [FINE RIPRODUZIONE] [Applausi] DAVID J. MALAN: Questo è CS50. E questo è il fine settimana 0, ma l'inizio di una bella amicizia. Siamo così eccitati di essere qui all'Università di Yale per la prima volta con il nostro amico SCAZ, e Jason, e Andy. Tutti 40 di TF di di CS50 e CA è qui a Yale. E tutti voi. E in effetti, è probabilmente il momento a-- [Applausi] Così, anche se la maggior parte delle lezioni sarà davvero a Cambridge di quest'anno, la realtà è che di progettazione, e molto deliberatamente CS50, Io credo che ci stiamo avvicinando al punto tecnologicamente, e pedagogicamente, dove può essere un educativo superiore esperienza per impegnarsi con un certo dell'Enciclopedia di materiale didattico on-line. In effetti, il reality-- e se credo questo philosophically-- è che le lezioni Non sono particolarmente mezzi efficaci per realizzare informazioni abbastanza complesso. Certamente su un'ora più lunghi lassi di tempo. E infatti ogni pochi minutes-- Mi ricordo che in college-- si ZONE per un attimo, ti manca qualche argomento complesso, e te ne sei andato più o meno per i successivi 45 minuti. E la realtà è che se siete qui a New Haven o Cambridge o oltre, la semplicità di avere la capacità di mettere in pausa e avanti veloce, rewind, collegamento ipertestuale al relativo risorse, trascrizioni ricerca a testo integrale e simili è un'opportunità che Oserei dire per i nostri studenti online ben al di là di New Haven, offre loro un'opportunità di cogliere davvero il materiale concettuale che abbiamo introdurre nelle lezioni tanto meglio. Ma alla fine in CS50, è l'esperienza degli studenti è caratterizzato così, molto più da insiemi di problemi del corso, o progetti di programmazione settimanale, il sezioni del corso guidati dal insegnamento borsisti, le ore di ufficio notturne guidate da gli assistenti del corso e l'insegnamento borsisti, e in effetti così eventi come CS50 Puzzle Giorno, di CS50 Hack-a-thon, il CS50 Fiera, pranzi settimanali, e molto altro ancora. E così se siete qui a New Haven o sintonizzarsi da lontano, oggi a Cambridge, e ci vediamo presto, la realtà è questa è una stessa classe. E siamo così entusiasti di essere qui tutti insieme oggi. E così, alla fine del semestre, se qui o lontano, ben speriamo che si indossano con orgoglio, felicemente, e forse con un po 'di sollievo, la camicia che testimonia a voi dopo aver preso CS50. Allora, dove abbiamo lasciato fuori il Mercoledì? Abbiamo preso uno sguardo a pensiero computazionale. Ed è verso quello che abbiamo distillato informatica unto, almeno per adesso. Ma abbiamo distillato che po 'più in almeno tre elementi componenti. Ingressi, così che cosa è il problema che stiamo cercando di risolvere? Uscite, qual è la Rispondiamo noi stiamo sperando di ottenere? E la rappresentazione di lì. E non soffermarsi qui su dopo il binario, o anche ASCII, e simili tanto, ma piuttosto dare per scontato che possiamo rappresentare queste informazioni, perché le parti molto più interessante di questi problemi non sono solo il ingressi e uscite, ma gli algoritmi che vanno in soluzione di questi problemi. E si potrebbe ricordare da l'altro giorno che siamo ha preso una abbastanza tradizionale concetto di guardare qualcuno in un gran libro di telefono, o più in generale in digitale in questi giorni, solo un grande insieme di dati. Davvero un grande elenco di contatti, con un sacco di nomi in ordine alfabetico ordinati. E ci siamo resi conto che mentre io potrebbe affrontare questo problema semplicemente utilizzando lineare Pagina approach-- per pagina, o anche due di in un tempo-- ci siamo resi conto che il algorithm-- più intuitiva solo tipo di dividere e conquistare nuovamente il problema, e di nuovo, e again-- dimezzare con ogni tempo, ci ha dato questo risultato verde. Ed è così molto più piatta perché suggerisce che anche se questo problema diventa sempre più grande, come avviene attualmente con i dati set e reality-- Facebook e Google risultati di ricerca e la like-- fa il nostro algoritmo svolgere in modo altrettanto efficace con quei morsi più grandi come ha fatto anche con i piccoli morsi. Ora si pone la domanda, cosa possiamo davvero risolvere simile con questo tipo di intuizione? Questo tipo di divisione e conquistare? Beh, potremmo fare qualcosa come quella di oggi qui. Potremmo prendere presenze. Così forse come 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11-- non andare a essere tutto ciò che efficiente. Quindi aspettare, scuola elementare. 2, 4, 6, 8, 10, 12, 14, 16, 18 e così via. Ma potremmo fare un po 'meglio? Sono abbastanza sicuro che non posso farlo da solo. Quindi, se sarò umorismo noi solo un momento, abbiamo portato con noi un algoritmo che è appena ricevuto tre passi, ma non se si require-- non mind-- tutti noi si alzano, se tu volessi. Così, con tutti noi ora in piedi, passo uno di questo algoritmo è il seguente. Alzati e assegnare voi stessi il numero 1. Quindi, a questo punto nel tempo, letteralmente tutti in questa stanza speriamo che sta pensando a se stessi, tuttavia goffamente, il numero 1. Ora passo a due di questo algoritmo è andando a coinvolgere quanto segue. Fase due, in coppie con qualcuno in piedi, aggiungere i numeri insieme, e adottare l'importo che il tuo nuovo numero. Sanity check rapida. Che numero è tutti pensando ora? Quindi 2, tranne forse per uno, goffo, persona solitaria. Se abbiamo un numero dispari di persone nella stanza. Così una persona potrebbe essere ancora il numero 1, va bene. Ma punto tre qui, uno di voi dovrebbe sedersi. L'altro dovrebbe tornare al passo due, e ripetere, se si farebbe. Quindi, se ancora in piedi, si dovrebbe essere tra coloro che risale alla fase due. Andare avanti. Alcune persone ancora in piedi. Quindi, se ancora in piedi, coppia con qualcuno. Va bene, il calo verso il basso. Alcune persone ancora in piedi. Ti aiuto se necessario. Ricordate il takeaway chiave qui, è come molto più veloce di me questo è il conteggio. Quindi cerchiamo di vedere. Posso dare una mano. Così che numero sono ancora pensando? PUBBLICO: Sono a 44. DAVID J. MALAN: 44, così di andare avanti e sedersi. Che numero stai pensando? PUBBLICO: 74. DAVID J. MALAN: 74. Va bene, andare avanti e sedersi. Chi altro è ancora in piedi? 86. Ed è chiunque altro ancora in piedi? Che numero? Ho sentito 67. E poi in cima? 32. Chiunque altro ancora in piedi e pensare di un numero? Oh ciao. Scusate. Torno subito. 42. Chiunque altro? PUBBLICO: 47. DAVID J. MALAN: 47. Chiunque altro è ancora in piedi che non è stato contato? Quindi il numero finale di persone in una stanza che ha 497 posti è-- tutte sono filled-- è 390. Quindi questo è grande. Ci sarà presto discutere la nozione di un bug in un programma per computer. Ma torneremo a che tra non molto. Ma in teoria, ciò potrebbe essere successo solo ora? Così, anche se c'erano tre grandi passi per questo algoritmo, ognuno di quelli era solo tipo di un unico grande operazione. E c'era questa ciclicità ad esso nel senso che se si erano ancora in piedi, si continuava dal passaggio 3-2, step 3-2, passo 3-2. Ma ciò che ha tenuto accadendo ad ogni iterazione? Ogni ciclo di questo ciclo? Cosa stava succedendo altrove nella stanza? Non solo la stessa cosa, ma cosa stava accadendo alla metà di voi? Sedendosi. E così c'è nella menzogna questa intuizione, proprio come l'esempio rubrica telefonica, nel senso che se la metà di voi sono sedersi ogni volta, il problema sta iniziando con forse 400 persone, poi a 200 persone, di 100 persone, poi 50 persone, e così via. E così noi cercare di ridurre in teoria ad una sola persona, pensando al valore totale di tutti. Ora la realtà, alcune dinamiche sociali, e alcuni errori aritmetici potrebbe contribuire a quel bug finale. Ma in teoria, mentre era ancora contando via, prendendo alcune decine gradini, o centinaia di passi a contare voi stessi, per contare una stanza piena di circa 500 persone avrebbe dovuto prendere molto meno passaggi, perché si può dividere solo 500 e 1/2 così tante volte. E così, proprio come con il telefono prenotare esempio l'altro giorno, abbiamo dovuto qualcosa logaritmica per così dire, per cui se fossimo tutti operano all'unisono, e ignorando la errori di addizione, avremmo hanno ottenuto esattamente quel tipo di tempo di esecuzione? Ora, per essere onesti, un po 'truffati, in che ho sfruttato un'altra risorsa. Considerando che è solo uno di me, I Leveraged centinaia di voi. Ma che potrebbe essere detto di essere un esempio di elaborazione parallela, o di uno stato dell'arte molto in voga dove i computer in questi giorni hanno CPU multiple, o più tecnicamente, più più core, e può veramente fare di più cose in una volta, proprio come si tutto quello che stiamo facendo lì, in parallelo. Ma ricordare che quello che abbiamo anche fatto il Mercoledì è stato cercare di catturare questa intuizione e formalizzare nel codice. Qualcosa come pseudo-codice. E infatti, e spero che perdonare, è come 80 gradi in qui. Quindi ho intenzione di prendere questa off per appena un po '. Quello che ho pensato di fare è di transizione ora a una domanda in cui abbiamo ancora una volta coinvolgere il pubblico, ma scrivere un programma in inglese come la sintassi, con cui risolvere il problema qui. [RIPRODUZIONE VIDEO] Burro di arachidi tempo gelatina di -E. Burro di arachidi tempo gelatina. Burro di arachidi tempo gelatina. Way ya! Way ya! Way ya! Way ya! Ora ci si va! Ci si va! Ci si va! Ci si va! Burro di arachidi gelatina! Burro di arachidi gelatina! Burro di arachidi gelatina! Burro di arachidi gelatina! Arachidi, marmellata burro di arachidi! Burro di arachidi gelatina! Burro di arachidi gelatina con una mazza da baseball. [FINE RIPRODUZIONE] DAVID J. MALAN: --that video, ma è un po 'coinvolgente, se non un po 'fastidioso. Ma per fare questo, ho pensato che saremmo fare è cercare di scrivere un programma insieme, per il quale abbiamo bisogno di tre volontari. Devono essere confortevole sulla fotocamera e connessione internet. Sam, vieni su. Camicia viola, proprio qui, andiamo su. E da qui, lasciatemi andare un po 'più indietro. Crimson e camicie blu, andiamo su. Perfetto. Andiamo ora. Vieni su, vieni su. E qual'è il tuo nome? Erica. David, piacere di conoscerti. Se vuoi prendere questa sede qui. Questo è Sam. Come ti chiami? Antonio. Antonio, piacere di conoscerti. Erica e Sam, se aveste piace avere un posto qui. Che cosa siamo venuti preparati con, come questi ragazzi stanno scoprendo, è gli ingredienti con cui effettuare un burro di arachidi e gelatina sandwich. Ora, questo potrebbe essere qualcosa che si prende molto per scontato. Ma abbiamo dato ogni dei nostri tre volontari qui-- due volontari e Sam qui, un pagnotta di pane ciascuno, un piatto, un coltello, un barattolo di gelatina o marmellata, e un barattolo di burro di arachidi. E l'obiettivo a portata di mano ora è sarà per questi tre per fare un burro di arachidi e panino gelatina. Ma quello che andremo a fare è aspettare il audience-- poiché tutti voi sicuramente sapere come fare così bene in reality-- stanno per fornirci il passo per passo le istruzioni. La pseudo-codice, se si vuole. Così io interpreto il ruolo di scriba qui. E ho avuto un po 'to-do list, e così come ognuno di voi, uno alla volta, chiama fuori un potenziale didattico, io sarò scrivere in giù, ripetere se necessario. E poi voi ragazzi stanno andando a fare un burro di arachidi e gelatina di sandwich solo facendo ciò che ti viene detto. Quindi, pensare a voi stessi come i computer. Si può fare solo quello che ti dicono. Nessuna ipotesi, nessuna domanda. Hai solo bisogno di farlo. Allora, chi vorrebbe azzardare il primo istruzioni per fare un panino PBJ? Sul balcone c'è. AUDIENCE: Aprire la busta del pane. DAVID J. MALAN: Aprire il sacchetto di pane, se si vuole. Quindi cerchiamo di vedere. Andiamo a iterare, e ottenere un po 'più precisi. Buon modo per iniziare però. Fase due, qualcun altro. Ora nessuno vuole fare volontariato. Fase due, nella parte anteriore. AUDIENCE: Aprire il interno sacchetto di pane pure. DAVID J. MALAN: Aprire il sacchetto interno del pane pure. Ottimo, abbiamo l'apprendimento. Un po 'più precisi. Prendiamo questo lavoro. Sì, in camicia verde. PUBBLICO: [incomprensibile] DAVID J. MALAN: Fette di pane. Rimuovere delicatamente due fette di pane. Quello è buono. Fase quattro, qualcun altro? Qui, sì? PUBBLICO: [incomprensibile] DAVID J. MALAN: Luogo pane sul piatto. Fase cinque? Fase cinque, sì? PUBBLICO: [incomprensibile] DAVID J. MALAN: In cima di-- oh, mano. Mettere mano sulla parte superiore di burro di arachidi. E 'questo che ho la testa? PUBBLICO: Sì, e svitare. DAVID J. MALAN: e- dire di nuovo. PUBBLICO: [incomprensibile] DAVID J. MALAN: E mettere il coperchio accanto al burro di arachidi. Leggermente mettere mano su cima di burro di arachidi, e svitare, e mettere il coperchio accanto al burro di arachidi. OK, passo a sei. Fase sei, qualcun altro. Sì? PUBBLICO: [incomprensibile] DAVID J. MALAN: Dillo ancora. PUBBLICO: Ripetere il passaggio cinque di nuovo. DAVID J. MALAN: E ripetere il passaggio cinque di nuovo, che sta per creare un po 'un problema ora se stiamo facendo questo passo dopo passo. Così ora torniamo al punto cinque. Leggermente mettere mano sopra di burro di arachidi e svitare e mettere coperchio accanto al burro di arachidi. Poi afferrare il burro di arachidi e ripetere passo cinque. Quindi dovremo sovrascrivere che ciclo infinito, se si vuole. Passo sette, qualcun altro. Sì, in parte posteriore. PUBBLICO: [incomprensibile] DAVID J. MALAN: top --sul di altri. PUBBLICO: [incomprensibile] DAVID J. MALAN: Sul dall'altro dall'altro superiore. Vuoi venire solo qui? Come faccio a terminare l'istruzione? Qual è il resto della istruzione? PUBBLICO: Ignorare questa parte. DAVID J. MALAN: Ignorare questa parte. Ricominciamo. Passo sette. PUBBLICO: [incomprensibile] DAVID J. MALAN: Afferrare con opporsi mano-- questo è un bene. Questo in realtà è buono. PUBBLICO: [incomprensibile] DAVID J. MALAN: E plastica jar-- PUBBLICO: [incomprensibile] DAVID J. MALAN: E twist-- PUBBLICO: [incomprensibile] DAVID J. MALAN: Per due secondi. Basta aprire il barattolo di burro di arachidi. Spero che mi perdoni. Quindi supponiamo ci siamo arrivati. Aprire il barattolo di burro di arachidi. [Applausi] DAVID J. MALAN: Passo otto, andiamo. Passo otto, sì, sul retro. PUBBLICO: [incomprensibile] DAVID J. MALAN: Good. Passo nove, sì? PUBBLICO: [incomprensibile] DAVID J. MALAN: --out di il barattolo di burro di arachidi. E- e che cosa? PUBBLICO: [incomprensibile] DAVID J. MALAN: E mettere coltello torna in burro di arachidi. Passo dieci. Passo dieci. PUBBLICO: [incomprensibile] DAVID J. MALAN: Mettere il coltello fuori, e quindi rimuovere il sigillo. Bello. Fuori dal burro di arachidi. Va bene, punto 11. PUBBLICO: [incomprensibile] DAVID J. MALAN: OK, grigio computer seguire computer di blu o rosso. Bene. [Applausi] DAVID J. MALAN: Portaci a casa. Altro paio di passi. Cosa c'è dopo? Passi 12. Passo 12. Sì? PUBBLICO: Metta una delle fette di pane delicatamente su una delle tue mani. DAVID J. MALAN: Una delle vostre mani. E poi, punto 13. Sì? PUBBLICO: [incomprensibile] DAVID J. MALAN: fetta --sul di pane. Bene. Abbastanza buono. Passo 14, sì. PUBBLICO: Annulla passo 13. DAVID J. MALAN: Annulla passo 13. Passiamo alla gelatina. Si tratta di un programma di 100- passo, ma stiamo eravamo sul punto 15. Già. PUBBLICO: [incomprensibile] DAVID J. MALAN: da 7 a 13 utilizzando la gelatina, perché quelli è andato così bene. Ripetere i passaggi da 7 a 13, utilizzando la gelatina. Così afferrare la metà inferiore del barattolo di gelatina con la mano sulla parte superiore. D'altra parte la altri top, ignorando quella parte, afferrare con le mani avversarie, il coperchio e il vaso di plastica in basso, e torcere per due secondi. Quindi aprire il barattolo di gelatina. E, infine, cerchiamo di ci danno qualcosa di commestibile. Passo 16. Allora perché non la lasciamo lì. Grazie mille a i nostri tre volontari. [Applausi] Abbiamo un piccolo CS50 palla antistress per voi. Stava per essere un panino ma-- così che cosa era il punto, oltre ad avere un po 'di divertimento con l'algoritmo? Ma la realtà è che anche quando stai programmare un computer, è necessario essere super-precisi. Come complesso o intimidatorio come il vostro computer potrebbe benissimo essere a voi, a almeno quando qualcosa va storto, la realtà è che è un abbastanza stupida dispositivo che è stato inventato da noi esseri umani, e può fare solo un sottoinsieme di quello che abbiamo fare-- talvolta certamente faster-- ma non sa come per fare ipotesi. Non sa come essere su la stessa lunghezza d'onda, come si. E 'solo fare esattamente quello che gli si dice. E sarete colpiti, forse, come si comincia la scrittura di codice reale con il primi set di problemi e di là, proprio come è facile fare un assunto come un essere umano, e non prevedo che ho bisogno di gestire tal caso, o quel caso angolo, per così dire, che potrebbe molto bene sorgere se per esempio Sam aveva il solo barattolo di gelatina comprimibile, mentre tutti gli altri avevano alcuni barattoli di vetro come bene. Quindi, prima ci rivolgiamo il nostro attenzione ad alcuni codice vero e proprio, mi permetta di introdurre la teste del corso qui a Yale. I nostri amici SCAZ, Andy, e Jason a venire e dire ciao. [Applausi] SCAZ: Abbiamo temporaneamente interrotto Jason. Ciao di nuovo, tutti. Il mio nome è SCAZ. Ho insegnato a Yale dal 2001. E quando non sto insegnando, mia ricerca è nella robotica e l'intelligenza artificiale. E l'annuncio che ho oggi è che a partire in un paio di settimane, stiamo andando a portare un po ' materiale supplementare per CS50 per parlare su software di intelligenza. Stiamo per parlare di come luoghi come Netflix e Hulu può consigliare i film che si potrebbe desiderare di guardare. Dove parleremo di come auto-guidatore meno effettivamente lavoro. E noi saremo in grado di terra queste cose nei concetti che si sta imparando in questa classe oggi. Poiché tutte queste cose sono costruita sullo stesso fondamento. E questo è ciò che questo serie esplorerà. Quindi non vedo l'ora di vedere più di voi tutto, e si sta andando ad arrivare a vedere di più da tutti noi molto presto. Permettetemi quindi di presentarvi Jason. JASON: Ciao a tutti. Il mio nome è Jason. Io purtroppo andato a Harvard come studente non ancora laureato. Che sta per tagliarsi dal flusso effettivo. E ora sono qui come docente di il dipartimento di informatica. E io sto aiutando eseguire il corso con SCAZ, David e Andy. ANDY: Hey guys. Mi chiamo Andy. Io sono in realtà l'unico Yale studente sul palco in questo momento. [Applausi] Sono a Berkeley College, originario di Solon, Ohio. E io ero uno di quei ragazzi dove, quando sono arrivato a Yale, Ho davvero pensato che non avrei mai guardare a un numero sempre più. E poi ho capito che avevi bisogno scienza e QR credits per laurearsi. E così la mia primavera matricola, ho preso una classe, un CS, intro di classe CS qui a Yale. Ero come, questo è come in realtà piuttosto fresco. E mentre io in realtà finito per dichiarare come un affari globali importante, le competenze Ho imparato in CS e programmazione sono quindi applicabili a qualsiasi campo si sceglie di fare. E il personale qui a Yale, siamo stati così duramente al lavoro a preparare per voi ragazzi. E non vediamo l'ora di vedere tutto nella sezione e gli orari d'ufficio. Quindi sì. [Applausi] DAVID J. MALAN: Grazie. Quindi, appena prima della lezione è iniziata, abbiamo avuto l'opportunità camminare intorno alla città universitaria con un cellulare e prendere alcuni selfies in forma di video di veramente il mio primo tour della città universitaria di Yale qui. E così abbiamo pensato di condividere un ruvido taglio di esattamente questo come SCAZ e Andy e Jason mi ha portato all'interno del campus. [RIPRODUZIONE VIDEO] [SIRENE] -David. Il benvenuto al Yale. -É bello vederti. -Felice di vederti. -Può Andiamo in un tour? -Andiamo In un tour. Tour -Road. -Questo Segno è stato lì per un po '. -Whah, CS50. -Hurry! Vai vai vai vai. Si dovrebbe [incomprensibile] Harkness Tower. -E Abbiamo visto che un paio di volte. [Applausi] -Look Fuori per la moto! Ahh! Ciao Frank. -Cosa succede ragazzi? -Come stai? -É bello vederti. -Benvenuti Al video. Non agire troppo eccitato. -Amo Silliman. Ahh! -E C'è stato circa tre ore da quando Jason aveva gelato e nutella. Quindi dobbiamo smettere di nuovo a Silliman per un po '. -Non È nemmeno [incomprensibile] tuttavia, solo il fatto che l'hanno qui è così sorprendente. Amico, ci sono Nutella ad ogni pasto. -Ci È stato anche l'anno scorso. -Già. -tell molto di Yale finora. Ma io ora che TD laggiù. E questo è considerato fuori dal campus. -Qui Abbiamo architettura gotica. Di fama mondiale. Abbiamo un po 'un'architettura più gotica. E la costruzione e un'architettura più gotica. Salve. Questo è dove noi stiamo avendo orario d'ufficio Da martedì a giovedì di Hogwarts, come [incomprensibile]. -Tutto ok. Questo è tutto per il tour. Siamo alla Yale University di Law School, dove lezione di oggi è per avere luogo. Andiamo in testa. [FINE RIPRODUZIONE] DAVID J. MALAN: E che ci porta qui ora. Quindi finora, siamo stati concentrandosi su pseudocodice, che è questa sintassi inglese-like. Non ha specifica prescritta. E 'solo un po' si usa linguaggio intuitivo se vuole spiegare che cosa si vuole fare. Ma cominciamo ora a transizione in codice, come la maggior parte delle persone direbbe. Ma più precisamente, qualcosa noto come codice sorgente. Questo è il linguaggio che gli esseri umani scrivono che i computer ultimately-- possibilmente dopo un certo numero di steps-- capisce definitiva in modo da sapere come fare qualcosa. Che si è visto un assaggio di questo forse il Mercoledì. Questo è un esempio che incredibilmente, deludente quando eseguito dice semplicemente "ciao mondo". Ed è scritto in un linguaggio chiamato C, che è molto simile sintatticamente a un sacco di altre lingue che si potrebbe non sapere, ma potrebbe aver sentito parlare di come Java, e C ++ e Python e Ruby, e simili, e in effetti, faremo spendere molto del semestre in C, e poi verso la fine del semestre, costruendo su di essa, e l'introduzione di qualsiasi numero di altre lingue. Tra questi PHP e JavaScript, un linguaggio di database chiamato SQL. Ma con C, quello che avremo questa comprensione bottom-up esattamente come i computer di lavoro, cosa si può fare con loro, e come è possibile risolvere i problemi tanto più efficacemente questo stratificazione che abbiamo discusso il Mercoledì, e in piedi sulle spalle di altri. Ma più su quello a venire. Oggi guardiamo un ambiente semplice, ma fondamentalmente identica ambiente conosciuto come Scratch by i nostri amici a MIT Media Lab. Questo è un grafico linguaggio di programmazione, Scratch, per cui è possibile trascinare e cadere le cose che guardare come pezzi di un puzzle che solo blocco se fa senso logico o programmatico di farlo. Ma sta andando a permetterci di avere una conversazione su tutto della stessa programmazione elementi fondamentali che alcuni di voi potrebbe sapere già, che molti di voi non potrebbe sapere nulla di senza dover impantanarsi francamente, nel intellettualmente sintassi poco interessante il punto e virgola, e tra parentesi, e cita, e simili. Tutto ciò, in anticipo via, sono una distrazione a ciò che sono interessanti e idee davvero utili. Quindi facciamo un rapido sguardo alla ambiente qui, in modo da sapere ciò che attende. E infatti, tra i giochi che abbiamo può giocare sono alcuni programmi scritti dagli stessi ex studenti del CS50. Uno di loro, io stesso, sarò questo scritto in scuola di specializzazione per me. Se potessi prendere un volontario che è disposto a giocare un gioco per la prima volta. Certo. Vieni su. Come ti chiami? PUBBLICO: Angela. DAVID J. MALAN: Angela, vieni su. Così Scratch è stato fuori per un paio di anni. E quando ero a scuola di specializzazione, Ero croce iscritti al MIT, prendendo professore Mitchel Resnick di corso di tecnologie educative. E siamo stati tra i primi gli studenti in tutto il mondo a realtà beta scratch test. E il mio progetto era quello che Angela ora ha gentilmente offerto volontario di gioco chiamato oscartime. Quindi ho intenzione di andare avanti e fare doppio clic sull'icona qui. Sta andando ad aprire una programmazione ambiente che ci tuffiamo in presto. Io vado a schermo intero per Angela, qui. Sto andando a colpire il verde Bandiera in un attimo. E poi un sacco di spazzatura sta per cadere dal cielo. E avete intenzione di usare il mouse qui di trascinare e rilasciare realmente la spazzatura in bidoni della spazzatura di Oscar. Quindi, se si vuole andare avanti e fare clic la bandiera verde, il gioco avrà inizio. [RIPRODUZIONE DI BRANI MUSICALI] Oh, io amo spazzatura. Qualsiasi cosa sporca o sporco o impolverato. Tutto ciò lacero o marcio, o arrugginito. Sì, amo spazzatura. Se si vuole veramente vedere qualcosa trash, guarda questo. Ho qui una scarpa da tennis che è a brandelli e logori. E 'tutto pieno di buchi stive e i lacci sono strappati. Un regalo da mia madre il giorno in cui è nato. Mi piace perché it's-- DAVID J. MALAN: --green questi giorni proprio essere buttare tutto nella spazzatura. E così ciò che uno dei Proprio did-- personale del CS50 Jordan, che si potrebbe soddisfare oggi-- ha effettivamente aggiornato questo per i tempi di oggi. E così mi permetta di aprirmi un remix invece per Angela. E giocheremo questo invece per alcuni momenti in cui ora siete andando ad avere per decidere tra se di gettare qualcosa nel cestino, o riciclare o compostare esso. Quindi c'è un po 'di pressione su di voi per ottenere questo diritto davanti al 392 per 497 compagni di classe qui in sala, se tu volessi. [RIPRODUZIONE VIDEO] [RIPRODUZIONE DI BRANI MUSICALI] Oh io amo spazzatura. Qualsiasi cosa sporca o sporco o impolverato. Tutto ciò lacero o marcio o arrugginito. Sì, amo spazzatura. Se si vuole veramente vedere qualcosa trash, guarda questo. Ho qui una scarpa da tennis che è a brandelli e logori. E 'tutto pieno di buchi e i lacci sono strappati. Un regalo da mia madre il giorno in cui è nato. Mi piace perché è spazzatura. Oh, io amo spazzatura. Qualsiasi cosa sporca, o squallido, o polverosi. Tutto ciò lacero o marcio o arrugginito. Sì, amo spazzatura. Ecco alcune cose più marcio. Ho qui qualche newspaper-- [FINE RIPRODUZIONE] DAVID J. MALAN: --Siamo in realtà compostabile. Ma grazie al nostro volontario, Angela. Abbiamo una palla antistress per voi qui pure. Quindi grazie. Quindi questo è stato scritto da me. Ma ora uno da un ex studente reale che implementato questo, che è un gioco. Tutto questo in linguaggio chiamato Gratta e Vinci, che faremo presto buccia indietro gli strati di. Ma se avessimo like-- come su un altro volontario? Destra. Vieni su. Come ti chiami? Colpo d'occhio? Lance. Lance, andiamo su. Felice di conoscerti. Andiamo in questo modo. Quindi, questo potrebbe avere un tema familiare a qualcuno di voi. Ma vedrete anche che non ci può essere l'interattività, per cui si potrebbe effettivamente essere il ruolo del personaggio muoversi. Felice di conoscerti. Davide. Io ti do, Pikachu. Istruzioni sarà su venire sullo schermo. Ma insomma, si sta andando a vuole prendere la roba gustoso, ed evitare le bombe e altre cose. Con i cursori interamente. Quindi premere la barra spaziatrice. -Pikachu. DAVID J. MALAN: Cattura la roba di sinistra, non prendere la roba di destra. [RIPRODUZIONE DI BRANI MUSICALI] Quindi un ultimo uno qui. Se potessimo avere una altro volontario qui. Abbiamo pensato di ricreare qualcosa from-- nel shirt-- gialla da Mercoledì. Come ti chiami? Mary, andiamo su Maria. E richiamare il Mercoledì abbiamo introdotto la nozione di binario e lampadine binari. Questo è in realtà un ora attuazione della stessa interfaccia che abbiamo avuto su iPad con la luce bulbi, ma qui digitalmente resi. E piuttosto che fare uno stress ball-- piacere di conoscerti, David. Abbiamo portato un paio di luce lampadine da Cambridge. Se è possibile, cliccando su quelle lampadine a girare loro e fuori, venire con il binario rappresentazione di dire 256. E vedrete nella mezzo, il conteggio corrente. In modo che uno è su. Così il bit più a sinistra è acceso. MARY: Sì, [incomprensibile] DAVID J. MALAN: Beh, così abbiamo solo-- oh. Quindi questa è la colonna 128. Quindi siamo fino a 128. Abbiamo avuto modo di arrivare a 256. E si può sperimentare su e fuori, un grosso problema. Oppure si può colpire che 128 più volte se si desidera. Va bene, bene. 24. Sì, avvicinandosi. Closer! Oh, qual è il problema allora? Allora qual è il problema? Così che cosa abbiamo bisogno di risolvere questo problema? Quindi abbiamo bisogno di un altro po '. E questo è perfettamente ragionevole in realtà, giusto? Se si desidera contare dal numero 1 a 2 a 3 a 4 a 5, 6, 7, 8, 9 a rotolare in realtà oltre a 10, sei andando a bisogno di un ulteriore bit. Quindi cerchiamo di realtà riavvolgere qui, e venire with-- che era ovviamente vuole essere un set up. Non si può fare 256 con solo una lampadina. Così come su semplicemente il numero 50? Numero 50. Eccellente. Un grande applauso per Maria e lei pure. Grazie. Quindi questo topic-- intenzionale come che era-- effettivamente ripresentarsi. Il valore più grande che si può rappresentare con otto bit o un byte, è infatti 256. Ma se non si avvia contare da 0, mentre sembrano continuare a fare da avere tutti quei bit off. Ma ora diamo tuffarsi nel sottostante l'attuazione di questo ambiente, e prendere in giro a parte alcune di queste idee. Quindi, in un momento che stiamo per vedere un alcune nozioni basilari di programmazione differenti. Il primo dei quali chiameremo dichiarazione. Sorta di verbi, se si vuole. Azioni. Le cose che dovrebbe essere fatto. E in un momento in cui si vedrà blocchi che assomigliano a questo. Dire "ciao mondo", per esempio. O attendere un secondo. O giocare meow suono. E infatti l'ambiente che abbiamo intenzione di fare questo si chiama Scratch. E se mi tiro su Scratch senza precarico qualsiasi codice vero e proprio, diamo un rapido sguardo a questo interfaccia utente, per così dire. I controlli con le quali interagiscono. Sulla parte superiore sinistra della qui schermo, sotto i menu, abbiamo la fase, per così dire. Quindi Scratch è quello che chiameremo Sprite. E 'un personaggio. E può essere controllata da scrittura di programmi contro di lui. E lui sarà in grado di muoversi su e giù e destra e sinistra in questo ambiente, non solo muovendo il mouse, ma a livello di programmazione. Posso dirgli piedi a destra, a piedi sinistra, alto, basso o simili. E posso introdurre altro sprite o caratteri pure. Infatti, sul fondo qui è dove vedrete la vostra lista di sprite. In questo momento, devo solo uno, ma posso creare di più, e questi vengono visualizzati esattamente laggiù. Quindi, se si riavvolge per un attimo, come Oscartime-- per esempio, Oscar, sulla sinistra, il cestino può, era un folletto. E la cosa in mezzo, la riciclaggio bin, era un altro sprite. E la compostiera è stato un altro sprite. E ogni pezzo di spazzatura o riciclabili che stava cadendo dal cielo è anche uno sprite, ciascuna delle quali è stato programmato individualmente. Come si programma? Beh, qui a destra lato è l'area script. E questo è dove possiamo trascinare e rilasciare i pezzi del puzzle. In una settimana, che sta per essere dove abbiamo equivalentemente scrivere codice con più di una tastiera, ma per oggi Sarà trascinando e rilasciando pezzi del puzzle, palette per la quale tutti possiamo essere trovato qui proprio nel mezzo. Infatti, nel mezzo qui c'è un sacco di categorie del puzzle pezzi o blocchi. Uno è legato al movimento, guardare, suono, una penna che va su e giù, i dati, gli eventi di controllo. Non abbastanza sicuro ancora ciò che tutti questi significa, ma vedrai che essi hanno stato ben classificato. E per scrivere un programma in Scratch, facciamo esattamente questo. Ho intenzione di iniziare sotto Eventi, e trascinare questa qui. Quando bandiera verde cliccato. Ora, perché quello? Bene ricordare che i nostri volontari si avvicinò, la prima cosa che o hanno fatto è stato fare clic su quel verde bandierina in alto a destra. E questo significa che basta avviare il programma. Così, quando l'evento si verifica, cosa voglio fare? Ho intenzione di andare sotto sguardi, e ho intenzione di fare "dire ciao." E ho intenzione di cambiare questo e dire qualcosa come "ciao Yale." Ed ora vado per ingrandire fuori, fare clic sulla bandiera verde, e voilà, ho scritto un programma. Non è tutto così eccitante appena ancora, ma questo è esattamente dove ogni di quelli autore ha cominciato, entrambi con Pikachu, e lampadine binari e oscartime, e tanti altri esempi. Si inizia super semplice, e poi si inizia a strato, e aggiungere caratteristiche e funzionalità. Ma quali sono questi strati andando consistono di? Ebbene, al di là di dichiarazioni, faremo anche avere le cose che sono poco più fancily chiamato booleano espressioni, dopo che qualcuno di nome Bool. E una espressione booleana è semplicemente un espressione che è o vera o falsa, sì o no, 1 o 0. Eventuali poli opposti del genere. E 'vero o no. Ma stiamo anche andando a vedere quelli che potrebbero apparire come questo. Così, per esempio, è il mouse? Sono genere di domande, se si vuole. Il mouse è o verso il basso, vero o non lo è, falso. 1 o 0, se si vuole, tende ad essere la mappatura. Vero è 1, falso è 0. Beh che dire di meno di questa? O così, è questo a meno di questa? Questa è una questione di sorta. E se si mettono due numeri in là, sia x sta per essere inferiore a yo uguale ay, o maggiore di y, ma questo blocco si vedrà, è solo andando a rispondere alla domanda, questo è inferiore a quello? Potremmo anche vedere qualcosa di simile. Toccando puntatori del mouse. Quindi, in Scratch, potete chiedere la domanda, è la Sprite toccare il puntatore del mouse? Altre parole, è il cursore in bilico sopra il tappo, o l'equivalente? Vedremo cose Anding insieme. Potete chiedere due domande, e assicurarsi che entrambi dare sì o vere risposte prima di prendere una decisione di fare qualcosa. Ma allora come si fa a prendere decisioni? Beh, abbiamo queste condizioni. E abbiamo visto questo nella nostra esempio della rubrica telefonica. Guardando a sinistra o giusto per Mike Smith. E nella condizione, fare qualcosa di potenzialmente, se una espressione booleana è vero. E infatti, notare le forme ora. C'è questo segnaposto in questo momento sulla testa dove possiamo fit-- se riavvolgere un slide-- quella forma. Non è proprio la stessa dimensione. E infatti, vedrai che Scratch ridimensiona le cose in modo dinamico di adattare puzzle, ma la forma è ciò che è importante. Questa cosa sembra che, anzi è più o meno la stessa forma che dovrebbe andare bene in là. E se vogliamo fare qualcosa questo o in quel modo, se altrimenti, abbiamo questo puzzle pezzo Scratch pure. Ora si supponga di voler fare se, else if, o altro. In altre parole, un forcella a tre vie nella strada. Beh, cosa si può fare semplicemente guardando questo? Posso prendere questo pezzo di puzzle, e non sembra per adattarsi, ma ancora una volta, Scratch sta andando ridimensionare bene per noi. Potrei cominciare a strato queste cose insieme. Così ora ho una a tre vie forcella se questo è vero, fare questo. Altrimenti se quest'altra cosa è vera, andare in questo modo, altrimenti va questo altro modo. E in The Muppet Movie, il bivio, per così dire, tra Yale o Stanford, è stato esattamente che, solo due condizioni. O andare in questo modo, altrimenti andare in quel modo. Beh, loop esistere anche nella programmazione. E abbiamo usato questi già di classe e nel codice pseudocodice, e sicuramente in quelli Programmi Scratch per sempre. Scratch ha questo pezzo di puzzle che sarà solo consente di fare qualcosa per sempre. E a volte si desidera di fare qualcosa per sempre. Non è necessariamente un bug, è perché si vuole un orologio per andare avanti, o un gioco per continuare a giocare. In alternativa, è possibile specificare un numero finito di passi, come con questo blocco di ripetizione qui, che sarà ripetere qualcosa 10 volte. Siamo in grado di impostare le variabili, vedremo presto. E con le variabili, simile nello spirito all'algebra, come x, o y, z. E 'qualcosa di simbolico in grado di memorizzare certo valore, qualche pezzo di informazioni, che si potrebbe desiderare da ricordare per più tardi. Il miglior esempio di questo potrebbe essere un gioco in cui si dispone di un punteggio, come a Pikachu. Quanti pezzi di torta e quant'altro ha fatto si cattura? Beh, che potrebbe essere una variabile chiamato punteggio che parte da 0. E poi ogni volta che abbiamo preso una pezzo di torta o caramelle, o simili, esso viene incrementato. Esso viene aggiunto uno alla volta. E negozi così una variabile un pezzo di informazione del genere. Poi c'è array, e verremo torna a questi in una settimana o due di tempo, ma un array è un po 'come un inventario o una cartella, dentro di cui si può mettere le cose virtuali. Esso consente di memorizzare più di un pezzo di informazione. E che potrebbe essere utile se nel gioco, sei sorta di andare in giro raccogliere le cose. E magari si desidera mantenere tutti questi pezzi di torta intorno, e non solo mangiare uno dopo l'altro. E poi c'è un costrutto amatore faremo venire a funzioni chiamate o procedure. E anche se stiamo andando più veloce qui, ce la faremo vedere che questi sono molto la soluzione naturale ai problemi che stiamo andando incontro. Come i nostri programmi iniziano sempre più grande faremo iniziare a notare i modelli in il codice che stiamo scrivendo, i pezzi del puzzle Siamo trascinando. E non appena si nota se stessi facendo qualcosa di nuovo e di nuovo, o peggio ancora copia e incolla di programmazione codice che hai scritto, che è probabilmente un opportunità di fattore fuori qualunque cosa si mantiene copia e incolla, e la messa in qualcosa chiamato una "funzione". Ma più su quelli a molto più in dettaglio in breve tempo. E poi c'è anche caratteristiche amatore. Per quelli di voi più confortevole, o prendendo APCS o equivalente, Scratch in realtà sostiene cose come fili ed eventi e molto altro. Quindi rendersi conto che ha un soffitto abbastanza alto, anche se è anche molto ampiamente accessibile alla gente che non hanno mai programmato prima. Così infatti, diamo uno sguardo un semplice programma o due. Abbiamo già visto come noi potrebbe dire ciao con Scratch. Lasciami andare avanti e aprire un piccolo programma più interessante che ho scritto in anticipo. E di questo uno chiamato Pet the Cat. Tutti questi programmi saranno disponibile sul sito web di CS50. Infatti, già lì. Così si può scaricare loro e giocare con loro, e con Problem Set 0, che è anche sul sito web del corso, siete incoraggiati a camminare attraverso questi. Ed inoltre, abbiamo un il numero di video per walk-through on-line in cui io e La squadra di CS50 veramente a piedi attraverso ciascuno di questi esempi in un molto ritmo più lento, un forwardable molto veloce, o ritmo riavvolgibile, in modo che si può raggiungere a piedi attraverso questi a vostro piacimento pure. Quindi, ecco Scratch sulla sinistra. Ecco un programma a destra che ho già pre-fatto. Permettetemi quindi di ingrandire questa. E potrebbe qualcuno in inglese, sapendo ciò che si sa, solo da ora come di come funziona Scratch, sorta di dire in una frase o una frase inglese, che cosa fa questo programma apparentemente fare? Sì, in maglietta arancione. PUBBLICO: [incomprensibile] DAVID J. MALAN: Sì, se il vostro cursore si trova sulla Scratch il gatto, riprodurre un suono miagolare. Ma notiamo come esprimiamo che. C'è apparentemente un cappio lì, per sempre. E poi c'è un condizione, la se espressione. E collettivamente, che cosa quelli significa? Significa questo programma è solo sempre in esecuzione, ed è solo sempre in attesa e guardando e ascoltando per me, per spostare il mio mouse sopra il gatto. Perché ogni volta che lo faccio che, come proponi, che sta andando a fare questo. Permettetemi di iniziare il programma. Nulla sembra essere accadendo, ma notare come è evidenziato oggi in una linea gialla. Questo significa solo che è in esecuzione. E perché c'è una sempre cappio, è ancora in esecuzione. Permettetemi quindi di spostare il mio cursore sopra Scratch. [MEOW] [MEOW] E se io sposto fuori, [MEOW] ora si ferma, ma il programma di ancora in esecuzione. [MEOW] E così, adorabile. [MEOW] Quindi cerchiamo di aprono leggermente più avanzato esempio chiamato Non Animali il gatto. E ora vediamo cosa succede qui. [MEOW] Miagolare. Quindi è un po ' pilota automatico, se si vuole. --pet il gatto. Mi chiedo il perché. [ROAR] [MEOW] Così come ha fatto questo lavoro? Beh, è ​​possibile tipo di ragione attraverso di essa intuitivamente, forse. Ma diamo un'occhiata al codice vero e proprio. Quindi, di nuovo, quando la bandiera verde si fa clic, fare questo per sempre. Che cosa vuoi fare per sempre? Beh, se il mouse commovente puntatore, poi giocare un suono che è apparentemente chiamato Leone 5, che è all'interno di questo progetto, il resto riprodurre meow suono, e quindi attendere due secondi, in modo da che non è miagolando incessantemente. In realtà, si può iniziare molto rapidamente per infastidire te e dei tuoi compagni di stanza. Rimuoviamo questo blocco. E notare ciò che è bello su Scratch. Le cose solo tipo di resistenza and drop e di blocco. Quindi, di nuovo, cresce a riempire quello che vuoi. Ma se rimuovo questo, e poi gioco di successo, [COMPUTER BLIP SOUND] --è tipo di inciampare si, perché è letteralmente fare quello che sto dicendo. Si sta dicendo per sempre riprodurre questo suono, ma Io non sto dando la possibilità di finire. E in modo che sarebbe un errore. Ed è per questo che abbiamo avuto questa cosa qui ora. Quindi cerchiamo di iniziare effettivamente da scratch-- sorta di gioco di parole un po 'intended-- in cui ora abbiamo la mossa gatto. Quindi ho intenzione di fare questo al volo. Io vado per ingrandire qui, a fatemi parlare Eventi. E bandiera verde cliccato. E ci sono altri modi per avviare gli script. Stiamo andando a mantenere le cose semplici qui. E ora ho intenzione di andare avanti e passare sotto controllo. E ancora, se si dimentica dove le cose sono, basta cliccare in giro, e, infine, li trovate di nuovo. Così voglio fare sempre quello che? Voglio usare il blocco di movimento che io sappia esiste, spostare 10 passi. Quindi vediamo cosa succede qui se gioco a questo gioco. Per fortuna non va troppo lontano. Posso ancora sorta di afferrarlo per la coda e lo tira indietro. Ma il programma è ancora in esecuzione, quindi è sorta di combattere me. Ma sarebbe sorta di bello se condizionatamente risolvere questo problema nel codice. Perché questo è not-- in realtà questo è davvero non è un gioco divertente per chiunque di qualsiasi età. Quindi cerchiamo di risolvere questo problema avendo qualche tipo di condizioni. Quindi ho intenzione di andare sotto Controllo, e poi se. Mi piace questa idea. Così, dopo lo spostamento 10 passi, se: lascia che avverto dove mi trovo. Ho intenzione di andare sotto di rilevamento, e allora sembra posso andare qui. fila alle partite di forma. La dimensione non lo fa, ma è andando a crescere a riempire. Ed ora questo è un piccolo menu. E ora il mouse pointer-- non lo faccio vuole il mouse, voglio il bordo. Così Scratch è abbastanza intelligente per sapere quando uno sprite sta toccando il bordo. Cosa voglio che lui realmente fare? Lasciami andare avanti e cambiare moto. Sai cosa? Ho intenzione di farlo girare intorno. Così a 15 gradi non è davvero mi aiuterà. Voglio che girarsi e andare nella direzione opposta. Quindi vediamo cosa succede qui, se ho colpito Gioca subito. OK, un po 'stupido guardare, ma che sta facendo esattamente quello che ho detto. Ed è in rotazione l'intera sprite. Ora si scopre posso risolvere questo problema. E io non sapevo come per risolvere questo problema in un primo momento. I tipi dovuto futz intorno e vedere il modo migliore per farlo. Ma se vado a-- vediamo, movimento. Oh, ho trovato questo. In realtà, Set Style Rotation. A sinistra, a destra, o fare no ruotare e tutto intorno. E si scopre che è quello che voglio. E ho intenzione di mettere questo non è il mio cappio, perché non ho bisogno di impostare lo stile di rotazione più volte. Ho intenzione metterlo in cima della questo programma in modo che venga impostata una volta, e poi ricorda. E ora ho intenzione di provare questo nuovo. Mi permetta di fermare il programma. E ora che fissa quel bug. Così sto iterativo migliorare su questo. Il programma è sempre un po 'più complesso e più grande, ma sto prendendo piccoli passi per così dire, e piccoli morsi del problema per farlo sempre meglio. Ma anche questo, è un po 'stupido. Sai cosa? Sarebbe chiedere a qualcuno con una buona, voce spaventosa piace a venire? Qualcuno con una voce. Uh, si. Vieni su. In camicia verde. Così si scopre c'è qualche altro divertimento le cose, l'estetica e suoni simili. Ecco il miagolio. Clicco sulla scheda Suoni. [MEOW] C'è il miagolio. [MIAO MIAO] [MEOW] --actually qualcosa registrazione della nostra qui. Quindi cerchiamo di fare esattamente questo. Invece di usare questo suono gatto, andiamo andare avanti qui, e qual è il tuo nome? Nick, piacere di conoscerti. E 'David. Così, in un attimo, vado per colpire il pulsante Record. E se si può solo urlare nel computer portatile, "ahi", come se si appena entrato nel muro, che sarà molto apprezzato. 1, 2. NICK: Ouch! DAVID J. MALAN: Awesome. E ora può fare un po 'di editing qui. Andando a sbarazzarsi delle parti tranquille. E penso che sia buono. Grazie mille. NICK: Piacere. DAVID J. MALAN: Ho semplicemente ribattezzata "ahi," ma ora ho intenzione di tornare al mio script. E notate c'è davvero il suono qui. E ho intenzione di andare avanti e riprodurre il suono ahi, e ho intenzione di farlo, se è toccare solo i bordi. E poi ho intenzione di l'hanno girarsi. Quindi vediamo cosa succede qui. Andiamo a schermo intero. [RIPRODUZIONE VIDEO] -Ahia! Ahia! Ahia! Ahia! Ahia! Ahia! Ahia! Ahia! [FINE RIPRODUZIONE] DAVID J. MALAN: Così ti rendi conto che stiamo ottenendo un po 'di fortuna. Ho intenzione di avere lui mossa come 100 passi alla volta. L'effetto che ora sta essere-- [COMPUTER GLITCH SOUND] Quindi, entro limiti ragionevoli. Quindi l'opportunità di affinare che ulteriormente se vogliamo davvero. Così ora introduciamo un altro concetto. Di lasciarmi andare in uno chiamato Conteggio delle pecore e uso qualcosa chiamato una variabile. Si tratta di una pecorella adorabile, e Ho cambiato il suo costume per così dire. Così, anche se il valore predefinito è una gatto, è possibile caricare, è possibile disegnare, si può fare un qualsiasi numero di caratteri sul vostro sprite. Ecco un programma che è andando a fare quello che in inglese? Sulla base di nuovo solo su quello che sai ora. Che cosa è questo programma? Sì, sta andando a contare. Un numero alla volta. Abbiamo a quanto pare avere questo contatore insieme. Non so di cosa si tratta, ma forse è una variabile. E 'solo un contenitore, xo y. Ma il contatore parola è più descrittivo di x del matematico oppure y. Così possiamo usare le parole inglesi per le cose. Per sempre, significa solo continuare a fare questo. Dire contatore. Ora, da dove si è arrivati ​​da? Beh, si scopre che contatore è una variabile. Quindi è solo un altro puzzle pezzo che ho creato in anticipo. E anche se accade non essere la stessa forma qui, normalmente si direbbe qualcosa come ciao qui. È anche possibile trascinare una variabile in modo tale che questo è ciò che ha detto di ottenere. Poi mi aspetto un secondo, modificare il contatore di uno, incrementarlo aggiungendo uno. Così che l'effetto netto è questo contare le pecore adorabile. Anche se si sta contando. Ora è molto rapidamente andando a diventare noioso perché ha intenzione di farlo veramente per sempre, ma questo è esattamente ciò che il progettazione del programma prescrive. Ora lascia provare un altro esempio che sfrutta una variabile. Questa si chiama Hi Hi Hi, che fa arrivare fastidioso rapidamente. Ora, questo ha due sceneggiature. E così ancora una volta, stiamo prendendo le misure del bambino. Abbiamo iniziato con qualcosa di super piccolo, aggiunto ad essa, aggiunto ad essa. Ora voglio fare qualcosa ancora più dinamica, quindi voglio essere in ascolto per due cose diverse alla volta. Quindi a sinistra, quando bandiera verde viene cliccato, Ho impostato una variabile che ho scritto in anticipo chiamato Muto. E ho arbitrariamente impostato a 0. Quindi Scratch non ha vere e falso, ma ha 0 e 1. Così posso approssimare la stessa idea. E poi per sempre, se la barra spaziatrice è premuto, quindi impostare la variabile a 0. O mi dispiace. Se si preme il Spazio, e se disattivato, la variabile, è 0, quindi impostare sordina a 1, altro set in sordina a 0. Questo sembra un po 'come siamo solo facendo e disfare il lavoro. Ma qual è l'effetto? Ogni volta che ha colpito la barra spaziatrice, cosa succede alla mia variabile chiamato in sordina, logicamente? Più o meno viene capovolto. Si cambia da 0 a 1, o da 1 a 0. Così ci sono voluti pochi isolati per esprimere che, ma tutti Sto facendo si alterna lo stato di questa variabile a 0 o 1, oppure 0 o 1 ogni volta che ha colpito la barra spaziatrice. Ora qui, che cosa è questo che fa? Per sempre, se silenziato è 0, quindi se silenziato è falso. Quindi, se non è disattivato, è il semantica lì, giocare il suono leone di mare, e pensare Hi Hi Hi per due secondi, attendere due secondi. Così notare ora questi script sono efficacemente andare a correre in parallelo in modo che si può essere in ascolto per una azione, l'altra di prendere una decisione sulla base di tale azione. E può fare questo per sempre. [SEA LION BARKING] [SEA LION BARKING] Sta andando a fare questo per sempre e [SEA LION SCORTECCIAMENTO] come ho appena fatto. E ora è ancora in esecuzione ma ho "silenziato" il gioco. [SEA LION SCORTECCIAMENTO] E questo è tutto questo ragazzo fa anche ora. Apriamo un altro esempio qui. Lasciami andare in Eventi, e ora questo adorabile troppo. Ma bando ha due sprite. Quindi non solo due script con uno sprite, ma due sprite. E se clicco sul tizio blu come ho già, vedo lui come un programma qui che dice letteralmente questo, quando ricevo un evento, dire "Polo" per due secondi. Quindi, se hai mai giocato a una piscina, il gioco Marco Polo, se lo script arancione ragazzo è alcuna indicazione, apparentemente ogni volta che ha colpito la barra spaziatrice, qual è il ragazzo arancione intenzione di fare? Ha intenzione di dire "Marco". E allora questo è un nuovo blocco. Noi non abbiamo visto prima, ma trasmettere un avvenimento. E potrei chiamare evento tutto ciò che vogliamo. Torneremo a questo forse non molto. Ma la trasmissione di un evento è un modo per uno sprite a parlare con loro da essenzialmente passando un messaggio. Non è un messaggio che si vede. Non è qualcosa di visivo. E 'una sorta di un computer messaggio che l'altro ragazzo è in ascolto per. Perché in effetti, il ragazzo blu, richiamo non avere quando bandiera verde cliccato. Ha invece, quando ricevo un evento. Quando arriva consegnato questa nota in classe, per così dire, si dovrebbe dire "Polo". E così l'effetto netto è che quando ha colpito la bandiera verde, non accade nulla. Ma quando ho colpito la barra spaziatrice, dice "Marco", egli risponde con "Polo". Ma l'unico sprite Sono interagendo con l'arancione. Quindi questo è un modo di tipo di passare messaggi tra sprite e di farle comunicare tra loro. Ora diamo un'occhiata a un ultimo uno qui chiamati discussioni. E notare questo da giocare. Quindi queste sono due sprite. L'uccello è una specie di volano intorno. Sta rimbalzando. Non c'è "ahi", ma stessa idea. Ma il gatto sembra abbastanza intelligente. Che cosa è il gatto apparentemente facendo? E aspettare. Che cosa è il gatto apparentemente facendo? Non è solo rimbalzare. Ha seguito l'uccello. E così a quanto pare, c'è un modo con una combinazione di blocchi qui-- e diamo un'occhiata al gatto veloce reale. Per sempre, se toccando uccello, poi giocare il suono Leone 4, qualunque essa sia. Abbiamo sentito una volta. In caso contrario, puntare verso uccello, e muovere un passo. Ora il fatto che è un passo è ciò che dà l'uccello un po 'di vantaggio inizialmente, ma se invece fare questo 10, per esempio, così che ogni iterazione del ciclo e ' spostamento 10 passi di tempo. Quindi più spazio. Vediamo cosa succede allora. [LION ROAR] Non tutto molto meglio. Così ora proviamo a migliorare su questi un po iterativamente, e tornare a quella concetto di funzione. E infatti uno della fondamentale takeaway del design di classe. Non solo la scrittura di programmi che funzionano e che sono corretti, ma sono ben progettato. E il design è molto più soggettivo, e si otterrà meglio a questo nel corso del tempo. Ma facciamo qualche passo verso il bambino iniziando con un programma che funziona, assolutamente, ma non è molto buono. Non è molto ben scritto. Quindi, ecco un programma che fa questo. Tosse, tosse, tosse. Che cosa fa il programma assomiglia? Sembra corretto per me. Si sta dicendo divano per un secondo, quindi attende. Poi dice di nuovo, quindi attende. Poi dice di nuovo, quindi attende. E poi il programma implicitamente finisce, perché non c'è loop. Ma perché è un programma scritto male? Anche se non avete mai programmato prima? Come, cosa strofina il modo sbagliato, forse qui? Sì? PUBBLICO: [incomprensibile] DAVID J. MALAN: Esattamente. Stai ripetendo te ancora e ancora. E letteralmente, ho copiato e incollato due di nuovo e di nuovo i blocchi. E questo è esattamente il tipo di sanità mentale verificare che si dovrebbe fare. Apetta un minuto. Devo davvero facendo questo? Allora, qual è questo ciò che è il soluzione ovvia forse? Avere un qualche tipo di ciclo. E io ricordo non del tutto ciò che il pezzo del puzzle è, ma se guardo il prossima iterazione qui, infatti, non c'è appena il ciclo per sempre, c'è ripetere un determinato numero di volte. E così ho specificato tre. E ora notare come molto più stretto, come molto più succinta questo programma è. E in un certo senso, come molto più gestibile. Se voglio cambiare la parola da tosse a qualcos'altro, come achoo, come se stesse starnuti. Poi cambio in uno posto, e non tre. Quindi, questo si sente già come leggermente migliore progettazione. Lasciatemi tosse invece aperto 2, il nostro terzo esempio. Notate come un informatico, Comincio a contare da 0, in genere. Ora, questo sembra un po 'più paura a prima, ma l'effetto è lo stesso. Tosse, tosse, tosse. Ma quello che sembra essere fondamentalmente nuovo nella parte superiore del programma? Ho rimosso la parola. Ho rimosso l'attesa. E quello che ho ho collegato invece? Una funzione. Un blocco tosse. Voglio dire, francamente, mi sembra tipo di un idiota, se non l'ho fatto solo inizia con il blocco che è evidentemente chiama "tosse", se questo è tutto quello che voglio fargli fare. Ma che non esiste in Scratch. Piuttosto sono andato a uno nella tavolozza chiamato più blocchi qui, e trascino questa grande cosa viola qui che mi permette di definire una funzione. Mi lascia essenzialmente creare il mio rompicapo pezzo che può essere chiamato qualsiasi cosa vogliamo, che può fare tutto ciò che voglio, ma dà un nome. Mi dà un nuovo, viola pezzo di puzzle che ora fa qualunque cosa gli dico di fare. Quindi questo pezzo viola qui corrisponde a questo qui. E che cosa fa? Dice tosse per un secondo, e quindi attende. Ed ora ho creato una sorta di il mio pezzo di puzzle personalizzati, modo che si comporti esattamente allo stesso modo. Così posso continuare a fare questo. E infatti, ci sara 'sempre maggiori opportunità per modularizzazione, e per la stratificazione, la complessità uno sopra l'altro. Ma questa idea di base, anzi in problema detto 0. Che cosa hai intenzione di essere sfidato da fare è per scaricare Scratch, o semplicemente utilizzarlo sul web, e solo divertirsi con esso. Ti daremo una serie di requisiti, avendo un suono, e un numero di pezzi del puzzle. Ma farai esattamente questo. E vi renderete conto che si sta andando a vogliono prendere alcune iniziative per bambini inizialmente, fino a quando il programma ottiene più complesso. Ma considerando è questo il modo migliore che potessi fare questo? Posso evitare di questo istinto forse, per copiare e incollare? Ma prima di Problem Set 0, e prima di aggiornare, abbiamo pensato riprendiamo uno altro volontario se potessimo, per un programma finale questa è forse la più raccordo a tutti, dato luogo oggi. Vieni giù. Già. Sì. Come ti chiami? Uh Oh. Va bene. Entrambi scendono. E ho tratterà questo in qualche modo all'interno che dieci secondi. Quindi forza verso il basso. Vieni giù. Fammi venire quassù. Avanti. Tutto ok. Vediamo qui. Così notare veloce reale qui, se volete venire su. Faremo due turni di questo. E qual'è il tuo nome? SABRINA: Sabrina. DAVID J. MALAN: Sabrina e? YING GEE: Ying Gee. DAVID J. MALAN: Ying Gee. Piacere di conoscerti entrambi. Davide. Quindi il nostro esempio finale qui è chiamato gioco più difficile di Ivy. E perché non dobbiamo fare Livello 1, e si fanno Livello 2. E vedremo fino a che punto al di là che in realtà andiamo. Scritto da uno studente lo scorso anno, remixata da me in modo che ciò andrebbe oltre bene a New Haven. E vi do un gioco che sta per coinvolgere spostando le frecce su e giù, e ottenere Yale al traguardo. Andiamo. [RIPRODUZIONE VIDEO] [MUSICA - NFL SU FOX TEMA SONG] [MUSICA - MC Hammer, "U PUÒ NON TOCCARE  QUESTO "] -U Non può toccare questo. U non può toccare questo. Non può toccare questo. Il mio, il mio, il mio, la mia musica mi colpisce così duro, mi fa dire, oh, mio ​​signore. Grazie per avermi benedizione con un mente di rima e due piedi di hype. Questo è un bene quando si sa che sei giù. Una droga homeboy eccellente dal Oaktown. E io sono conosciuto come tale e questo un battito uh, non si può toccare. Ho detto che Homeboy U non può toccare questo. Sì, è così che stiamo vivendo e sai U non può toccare questo. Guardami negli occhi, l'uomo. U non può toccare questo. Yo, lasciatemi busto i testi funky. U non può toccare questo. Freschi nuovi calci e pantaloni. Avete capito bene così e sai che vuole ballare. Quindi spostare fuori del suo posto e ottenere una mosca ragazza e prendere questo ritmo. Mentre è a rotazione presa su pompare un po ' bit e far loro sapere che cosa sta succedendo. Come quello. Come quello. Freddo in una missione così tirare sul retro. Far loro sapere che sei troppo e questa è una mossa uh non si può toccare. Yo, ti ho detto U non può toccare questo. Perché lì l'uomo? U non può toccare questo. Yo, il suono nella scuola campana, ventosa. U non può toccare questo. Dammi una canzone, un ritmo che li rende sudore che è quello che sto dando loro ora. Sanno quando si parla di martello si parla di uno spettacolo che è pubblicizzato. E i cantanti sono stretti sudorazione così passare loro un microfono. O un nastro per imparare ciò che sta andando a prendere e ora ha intenzione di bruciare le classifiche. Legit o lavoro duro o si potrebbe anche smettere. Perché sai U non può toccare questo. U non può toccare questo. Rompilo. Stop. Hammer time. Vai con il flusso in un giro se non si può passare a questo allora probabilmente sei morto. Così onda le mani in l'aria [incomprensibile] Questo è tutto per un ballo vincitore questo e si sta andando ad ottenere più sottile. Spostare far scorrere il groppone solo per un minuto andiamo tutti fanno l'urto. Già. U non può toccare questo. U non può toccare questo. È meglio ottenere strombazzata ragazzo U non può toccare questo. Richiamata della scuola campana. Rompilo. Stop. Hammer time DAVID J. MALAN: Questo è tutto per CS50! Grazie mille per averci! Ci vediamo fuori. [FINE RIPRODUZIONE] [RIPRODUZIONE VIDEO] [MUSICA - "Seinfeld" theme song] -Ehi David. Ehi, David. Come sta andando? -Buona Lavoro, oggi. -Quindi Avete pensato a cosa si sta andando a fare per le battute fuori? No, non ho niente. -Che Cosa se: se questo è il fuori scherzo? -Come, Disimballaggio carrelli? -Uh Huh. Sai, si tratta di nulla. -Quindi Come, nessuna storia, nessun il conflitto, nessuna risoluzione. Non capisco. Di cosa si tratta allora? Nullafacente. -Quindi Abbiamo fuori battuta è su nulla, e non abbiamo attori. Chi va di essere in questo? -No no no. Voglio dire, io sarò in esso. -You 'Ll essere in esso? -Già! Le persone sono sempre dicendo mi sono un personaggio. -Bene, Voglio dire, è vero. Ma chi altro sta per essere in esso? Non può essere solo te. -Si Sarà in essa, Gavin, Dan, Dan, Colton, Z'Myla, Alysse, Doug, David, tutti. -Quindi Si tratta di nulla, e tutti sono in esso? -Assolutamente niente. -Questo è ridicolo.