1 00:00:00,000 --> 00:00:15,059 >> [RIPRODUZIONE DI BRANI MUSICALI] 2 00:00:15,059 --> 00:00:19,170 >> Questo è CS50-- Harvard l'introduzione di Università 3 00:00:19,170 --> 00:00:22,070 per l'intellettuale aziende di informatica 4 00:00:22,070 --> 00:00:23,800 e l'arte della programmazione. 5 00:00:23,800 --> 00:00:27,020 E il mio nome è David Malan e Stavo pensando di questa mattina, 6 00:00:27,020 --> 00:00:33,120 è stato incredibilmente 20 anni oggi dal momento che l'ultima seduta in cui voi ragazzi fare ora. 7 00:00:33,120 --> 00:00:33,840 >> Era il 1996. 8 00:00:33,840 --> 00:00:37,550 Ero al secondo anno, e stavo prendendo CS50 per la prima volta. 9 00:00:37,550 --> 00:00:40,890 E io non avevo ancora ottenuto il coraggio a prendere io stesso anno da matricola, 10 00:00:40,890 --> 00:00:42,500 in parte a causa del tempo. 11 00:00:42,500 --> 00:00:44,782 informatica a me è stato un po 'come, meh. 12 00:00:44,782 --> 00:00:46,990 Ero un po 'di un geek in crescita up, ma non ho davvero 13 00:00:46,990 --> 00:00:49,180 avere alcuna intellettuale interesse per quello che sembrava 14 00:00:49,180 --> 00:00:51,920 di essere solo un insieme di la gente di programmazione per tutto il tempo. 15 00:00:51,920 --> 00:00:53,904 >> E avevo paura di essere onesti. 16 00:00:53,904 --> 00:00:56,820 Il corso e informatica più generalmente avuto e in una certa misura, 17 00:00:56,820 --> 00:01:01,230 ancora ha questa reputazione di un campo per attenzione, se non altro perché tanti di noi 18 00:01:01,230 --> 00:01:04,410 non hanno familiarità con essa e sicuri di esso. 19 00:01:04,410 --> 00:01:08,480 E in realtà non era fino a quando ho fatto acquisti questa classe che sophomore fall-- 20 00:01:08,480 --> 00:01:10,880 e anche allora, ho solo iscritto perché il professor-- 21 00:01:10,880 --> 00:01:13,950 uno dei miei primi mentori, Brian Kernighan ora a Princeton-- 22 00:01:13,950 --> 00:01:15,700 mi ha permesso di prendere il passaggio di classe sicuro. 23 00:01:15,700 --> 00:01:18,020 E infatti, ecco perché oggi permettiamo e incoraggiamo 24 00:01:18,020 --> 00:01:20,030 agli studenti di prendere questa classe sat / UNSAT. 25 00:01:20,030 --> 00:01:22,040 >> E solo allora, dal fine del semestre 26 00:01:22,040 --> 00:01:24,870 mi sono reso conto come, wow, questo non era un campo così poco familiare. 27 00:01:24,870 --> 00:01:26,850 Infatti, questo era un molto potente campo, 28 00:01:26,850 --> 00:01:28,970 e più eccitante, in particolare in seguito, 29 00:01:28,970 --> 00:01:32,809 come ho preso corsi di Arte Drammatica 101 e latino A 30 00:01:32,809 --> 00:01:34,600 e poi alla fine archeologia anno di dottorato, 31 00:01:34,600 --> 00:01:37,860 ho davvero iniziare a vedere il intersezioni di questo campo, calcolatore 32 00:01:37,860 --> 00:01:41,979 la scienza, con le discipline umanistiche, scienze naturali, le arti, la medicina, 33 00:01:41,979 --> 00:01:42,520 e simili. 34 00:01:42,520 --> 00:01:44,420 Ed è quello che è solo così accurata circa informatica 35 00:01:44,420 --> 00:01:46,930 in ultima analisi, come ci auguriamo che see-- è la sua applicabilità 36 00:01:46,930 --> 00:01:50,280 a questi altri campi, e come si può prendere un po 'di oggi e il semestre di 37 00:01:50,280 --> 00:01:53,070 le idee e le competenze pratiche di nuovo al vostro proprio dominio, 38 00:01:53,070 --> 00:01:58,200 ed effettivamente esplorare questa intersezione delle arti liberali e le scienze. 39 00:01:58,200 --> 00:02:02,690 >> Quindi, il 73% di voi, se l'ultima anno è alcuna indicazione, 40 00:02:02,690 --> 00:02:04,390 non hanno mai seguito un corso CS prima. 41 00:02:04,390 --> 00:02:06,389 Quindi se, come me, siete sensazione un po ' 42 00:02:06,389 --> 00:02:09,190 paura, o francamente non sei davvero sicuro perché sei ancora qui. 43 00:02:09,190 --> 00:02:11,510 Forse solo un po 'di seguito amici oltre a Sanders adesso. 44 00:02:11,510 --> 00:02:12,490 Questo è totalmente bene. 45 00:02:12,490 --> 00:02:15,059 L'obiettivo è quello di agganciare si e rassicurarvi 46 00:02:15,059 --> 00:02:17,100 che se si guarda a sinistra ea destra, 47 00:02:17,100 --> 00:02:21,480 si sta andando a vedere i compagni di classe con come poco o tanto esperienza 48 00:02:21,480 --> 00:02:22,890 che lei stesso potrebbe avere. 49 00:02:22,890 --> 00:02:25,280 E in effetti, noi condivideremo alcune statistiche più tardi di oggi 50 00:02:25,280 --> 00:02:28,120 Quanto a quello che i dati demografici dei la classe tipicamente assomigliare. 51 00:02:28,120 --> 00:02:31,440 >> E come ha aggiunto reassurance-- e questo ci voglio dire da quando ho assunto nel corso 52 00:02:31,440 --> 00:02:33,252 alcuni anni fa, si era in programma del corso 53 00:02:33,252 --> 00:02:35,460 è questo-- che ciò che in ultima analisi, le questioni in questo corso 54 00:02:35,460 --> 00:02:38,040 non è tanto dove si finisce up relativi ai vostri compagni di classe, 55 00:02:38,040 --> 00:02:43,110 ma dove in settimana 11, la fine del semestre, finiscono per rispetto a te stesso 56 00:02:43,110 --> 00:02:46,280 in settimana 0, che è dove siamo qui oggi. 57 00:02:46,280 --> 00:02:48,704 E questo è quello che ho capito tanti anni fa. 58 00:02:48,704 --> 00:02:50,620 E so che un sacco di classi dicono questo, ma è 59 00:02:50,620 --> 00:02:52,450 particolarmente vero in informatica. 60 00:02:52,450 --> 00:02:55,320 Alla fine della giornata, questo campo è poco familiare come lo era per me 61 00:02:55,320 --> 00:02:58,590 e potrebbe essere a voi, è davvero solo di problem solving. 62 00:02:58,590 --> 00:03:01,324 E come tale, non ha questa applicabilità per ottenere altri campi. 63 00:03:01,324 --> 00:03:03,490 Ed infatti, se abbiamo provato di distillare ciò che questo significa, 64 00:03:03,490 --> 00:03:06,897 questo è la soluzione dei problemi nella sua essenza, oserei dire. 65 00:03:06,897 --> 00:03:09,480 C'è input-- così qualunque cosa è che si sta cercando di risolvere. 66 00:03:09,480 --> 00:03:12,264 Non c'è uscita, che è si spera la soluzione a questo problema. 67 00:03:12,264 --> 00:03:14,180 E poi, come faremmo dire in informatica, 68 00:03:14,180 --> 00:03:17,310 c'è questa scatola nera in mezzo che non necessariamente 69 00:03:17,310 --> 00:03:19,450 devono preoccuparsi di come funziona. 70 00:03:19,450 --> 00:03:22,230 Tu stesso alla fine potrebbe implementare cosa c'è dentro quella scatola. 71 00:03:22,230 --> 00:03:25,194 Ma per scopi di oggi e di più in generale nella vita, tutto ciò che interessa 72 00:03:25,194 --> 00:03:26,610 è che questi problemi vengono risolti. 73 00:03:26,610 --> 00:03:29,340 >> E che questo corso è in ultima analisi, circa sta esplorando 74 00:03:29,340 --> 00:03:31,700 l'intersezione di questi ingressi e uscite, 75 00:03:31,700 --> 00:03:34,410 e questi cosiddetti algoritmi, come vedremo tra poco, 76 00:03:34,410 --> 00:03:37,450 che implementano ciò che è sotto lì, la cappa. 77 00:03:37,450 --> 00:03:40,487 Ma questi ingressi e questi outputs-- cosa vuol davvero dire? 78 00:03:40,487 --> 00:03:43,570 Ebbene, alla fine della giornata, abbiamo bisogno un modo di rappresentazione delle informazioni. 79 00:03:43,570 --> 00:03:46,660 Questo è particolarmente vero in un computer, che come fantasia e complesso come 80 00:03:46,660 --> 00:03:48,160 potrebbe sembrare, è un dispositivo abbastanza stupida. 81 00:03:48,160 --> 00:03:52,240 Prende electricity-- se da un cavo o una batteria come input-- 82 00:03:52,240 --> 00:03:55,820 e quindi produce alcuni risposte preprogrammato sullo schermo. 83 00:03:55,820 --> 00:03:57,970 >> Ma come si arriva da iniziare a finire lì? 84 00:03:57,970 --> 00:03:59,470 Ebbene, che cosa è un problema da risolvere? 85 00:03:59,470 --> 00:04:01,050 Beh, forse potremmo, a all'inizio di ogni semestre, 86 00:04:01,050 --> 00:04:02,841 cercare di prendere presenze in una stanza come questa. 87 00:04:02,841 --> 00:04:04,750 Così potrei fare come uno, due, tre. 88 00:04:04,750 --> 00:04:07,060 O forse, se l'ho fatto per una sorta di tenere traccia 89 00:04:07,060 --> 00:04:10,560 di myself-- per tenere traccia di things-- Potrei correre rapidamente fuori dita. 90 00:04:10,560 --> 00:04:14,650 Così potrei solo fare hash marks-- persona, due, tre, quattro, cinque, sei, 91 00:04:14,650 --> 00:04:15,431 sette otto. 92 00:04:15,431 --> 00:04:17,930 E tutti noi abbiamo probabilmente fatto questo, se sulle mani 93 00:04:17,930 --> 00:04:19,680 o su un foglio di carta. 94 00:04:19,680 --> 00:04:22,140 E questo è in realtà solo qualcosa chiamato notation-- unario 95 00:04:22,140 --> 00:04:26,130 dove se si dispone di una sola lettera nel vostro alfabeto, uno o hash 96 00:04:26,130 --> 00:04:29,440 mark in questo caso, per ogni ingresso che si desidera contare, 97 00:04:29,440 --> 00:04:32,330 è necessario mettere giù uno di questi letters-- uno di questi segni. 98 00:04:32,330 --> 00:04:32,510 >> Tutto ok. 99 00:04:32,510 --> 00:04:34,790 Questo è tutto bello e buono e non tutto ciò che complicato. 100 00:04:34,790 --> 00:04:37,800 Ma i computer non sono tutti che molto più complicato. 101 00:04:37,800 --> 00:04:40,770 In effetti, la maggior parte di voi probabilmente sapere anche se non hai veramente 102 00:04:40,770 --> 00:04:44,080 considerato che cosa questo significa, che i computer capiscono solo zeri 103 00:04:44,080 --> 00:04:45,870 e ones-- il cosiddetto sistema binario. 104 00:04:45,870 --> 00:04:49,390 Noi esseri umani, al contrario, sono così molto più sofisticata misura 105 00:04:49,390 --> 00:04:51,770 come ci fa capire zeri attraverso nove. 106 00:04:51,770 --> 00:04:55,740 >> Ma anche se binario è, in prima sguardo, non tutto ciò che familiare, 107 00:04:55,740 --> 00:05:00,330 si scopre che è proprio come i sistemi e le idee che già conosciamo. 108 00:05:00,330 --> 00:05:02,420 Così, per esempio, prendere in considerazione questo. 109 00:05:02,420 --> 00:05:03,896 Questo è solo una sequenza di simboli. 110 00:05:03,896 --> 00:05:05,770 E tutti voi, quando guardando, probabilmente 111 00:05:05,770 --> 00:05:09,380 pensare 123-- nulla davvero interessante lì. 112 00:05:09,380 --> 00:05:11,940 Ma perché è questo numero, 123? 113 00:05:11,940 --> 00:05:14,440 Questi sono solo glifi il screen-- solo modelli 114 00:05:14,440 --> 00:05:16,387 che qualcuno potrebbe aver disegnato o digitato. 115 00:05:16,387 --> 00:05:18,970 Ma se siete come me, ricordano probabilmente dalla scuola elementare 116 00:05:18,970 --> 00:05:21,610 che ci sono specie di colonne o posti qui. 117 00:05:21,610 --> 00:05:25,340 C'è posto e del si posto dieci del luogo e il centinaio di. 118 00:05:25,340 --> 00:05:29,820 E la ragione per cui questo è 123 e non solo un modello di tre simboli 119 00:05:29,820 --> 00:05:33,090 è perché, ovviamente, se avere uno collocati centinaia, 120 00:05:33,090 --> 00:05:36,610 fate i conti di 100 volte uno, e poi due al posto dei dieci del. 121 00:05:36,610 --> 00:05:41,390 Ecco, questo è 10 volte 2, e poi tre in il posto del uno e questo è 1 volte 3. 122 00:05:41,390 --> 00:05:45,670 E quando si aggiungono tutti coloro up, di Naturalmente, si ottiene 100 più 20 più 3. 123 00:05:45,670 --> 00:05:48,220 >> Così abbiamo iniziato con solo un modello di symbols-- un alphabet-- 124 00:05:48,220 --> 00:05:51,670 ma poi abbiamo mappato significato su esso per mezzo di queste colonne. 125 00:05:51,670 --> 00:05:54,450 Beh, si scopre che computer non sono realmente 126 00:05:54,450 --> 00:05:56,300 così diverso da te e me. 127 00:05:56,300 --> 00:06:01,840 Ma invece di utilizzare potenze di 10, così speak-- 1, 10, 100, 1000, 128 00:06:01,840 --> 00:06:04,330 10.000 posto e così forth-- in realtà 129 00:06:04,330 --> 00:06:08,930 basta usare poteri di 2-- così uno, 2, 4, e poi 130 00:06:08,930 --> 00:06:12,810 se mettiamo più cifre, 8, 16, 32, 64, 128, e così via. 131 00:06:12,810 --> 00:06:16,050 E così questo è come un computer rappresenterebbe il numero 0, 132 00:06:16,050 --> 00:06:17,300 proprio come noi umani. 133 00:06:17,300 --> 00:06:21,660 >> 0, 0, 0-- e probabilmente si può intuire quale schema di zero e uno, 134 00:06:21,660 --> 00:06:24,610 se un computer può solo parlare 0 o 1-- cosa 135 00:06:24,610 --> 00:06:29,110 modello sta per rappresentare il numero che gli esseri umani sanno come 1? 136 00:06:29,110 --> 00:06:30,590 Yeah-- 0, 0, 1. 137 00:06:30,590 --> 00:06:31,090 Tutto ok. 138 00:06:31,090 --> 00:06:35,900 Così 0, 0, 1 è il modo in cui rappresentiamo 1, per cui si potrebbe essere inclini poi 139 00:06:35,900 --> 00:06:39,510 per rappresentare il numero 2, se avete luogo le quattro del luogo e le due di 140 00:06:39,510 --> 00:06:48,290 come l'unico luogo, si potrebbe dire, beh, se abbiamo avuto un 1 in di un unico luogo, 141 00:06:48,290 --> 00:06:50,430 e ora vogliamo contare fino a 2, si potrebbe 142 00:06:50,430 --> 00:06:53,310 fare questo e lasciare che questo è uno zero. 143 00:06:53,310 --> 00:06:56,397 Ma naturalmente questo non è il modo il sistema decimale funziona sia. 144 00:06:56,397 --> 00:06:58,230 Se si mette una cifra in entrambe le colonne, 145 00:06:58,230 --> 00:06:59,563 hai avuto modo di fare la media aritmetica. 146 00:06:59,563 --> 00:07:01,930 Allora, cosa ha fatto il numero che accidentalmente solo rappresentare? 147 00:07:01,930 --> 00:07:06,710 >> Quindi è 3, perché 2 volte 1 più 1 volte 1, naturalmente, ci dà tre. 148 00:07:06,710 --> 00:07:08,340 Quindi questo sarebbe due. 149 00:07:08,340 --> 00:07:12,730 Il bit sorta di lancia, per così dire, come 0 diventa uno, molto simile a un 9 ruoli oltre 150 00:07:12,730 --> 00:07:14,840 e diventa un 0 quando si trasporta il 1. 151 00:07:14,840 --> 00:07:16,510 Questo allora sarebbero tre naturalmente. 152 00:07:16,510 --> 00:07:20,170 Four-- un'altra cosa interessante accade, dove quelli rotolano 153 00:07:20,170 --> 00:07:21,750 e si portano il 1, per così dire. 154 00:07:21,750 --> 00:07:23,320 Quindi questo, naturalmente, è 4. 155 00:07:23,320 --> 00:07:25,160 >> Ma se l'avanzamento veloce ora, qual è il più grande numero di andare 156 00:07:25,160 --> 00:07:26,660 essere che un computer può rappresentare? 157 00:07:26,660 --> 00:07:30,420 158 00:07:30,420 --> 00:07:32,380 Quindi è solo sette in questo caso, giusto? 159 00:07:32,380 --> 00:07:35,570 Perché avete un uno su quattro, uno in due, uno in uno. 160 00:07:35,570 --> 00:07:36,900 Ecco, questo è 4 più 2 più 1. 161 00:07:36,900 --> 00:07:37,972 In modo che ti dà sette. 162 00:07:37,972 --> 00:07:39,680 E in effetti, sarebbe sembrare a prima vista 163 00:07:39,680 --> 00:07:43,750 che i computer possono contare non superiore a questa. 164 00:07:43,750 --> 00:07:45,210 >> Ma questo naturalmente non è vero. 165 00:07:45,210 --> 00:07:48,243 Che cosa ci fanno gli esseri umani quando vogliamo a contare più alto come 999? 166 00:07:48,243 --> 00:07:51,000 167 00:07:51,000 --> 00:07:53,900 Basta portare il e proprio aggiungere una quarta cifra a sinistra. 168 00:07:53,900 --> 00:07:55,070 E così in effetti abbiamo potuto. 169 00:07:55,070 --> 00:07:57,900 Potremmo avere un otto di luogo e posto di un 16 °, 170 00:07:57,900 --> 00:08:02,000 e il luogo di un 32 di, 64, 128-- e può solo continuare ad andare avanti fino all'infinito. 171 00:08:02,000 --> 00:08:04,640 Così questi zeri e ones-- il cosiddetto system-- binario 172 00:08:04,640 --> 00:08:10,290 sono ciò che un informatico sarebbe generalmente chiamare un po ', o cifra binaria. 173 00:08:10,290 --> 00:08:13,590 >> Ma ora, come si arriva dalla concetto o la grafica di queste cose 174 00:08:13,590 --> 00:08:14,620 a un computer vero e proprio? 175 00:08:14,620 --> 00:08:17,170 Ci sembra di essere saltare un passo qui. 176 00:08:17,170 --> 00:08:20,210 Ebbene, l'unico input alla fine del giorno, al mio portatile qui 177 00:08:20,210 --> 00:08:22,060 è questo flusso di energia elettrica. 178 00:08:22,060 --> 00:08:24,560 Anche se è stato un lungo tempo da quando hai pensato di 179 00:08:24,560 --> 00:08:26,580 o mai pensato come l'elettricità funziona, 180 00:08:26,580 --> 00:08:30,909 c'è elettroni che scorre in o fuori, e questo è il mio tipo di input. 181 00:08:30,909 --> 00:08:34,659 >> Quindi, se questo è tutto ciò che siamo ricevendo come input qui, 182 00:08:34,659 --> 00:08:36,830 cosa possiamo fare con queste informazioni? 183 00:08:36,830 --> 00:08:40,040 Beh, si potrebbe pensare ad uno zero come solo una mancanza di energia elettrica. 184 00:08:40,040 --> 00:08:42,540 Nulla è flowinw, nulla è in movimento, non sta succedendo niente. 185 00:08:42,540 --> 00:08:44,690 Questo è solo il default state-- zero. 186 00:08:44,690 --> 00:08:48,200 Ma se c'è energia elettrica che scorre, perché non è vero solo in modo arbitrario, ma a livello globale 187 00:08:48,200 --> 00:08:50,250 coerentemente, chiamare che uno. 188 00:08:50,250 --> 00:08:54,760 >> Così semplicemente sprovviste di alimentazione, abbiamo uno zero, sì il potere, 189 00:08:54,760 --> 00:08:57,520 abbiamo un tra-- nessun potere, sì il potere. 190 00:08:57,520 --> 00:09:01,520 E in questo modo, utilizzando qualcosa più fisico o elettronico 191 00:09:01,520 --> 00:09:05,340 iniziamo a implementare questo concetto di qualcosa sia essendo uno o uno zero. 192 00:09:05,340 --> 00:09:07,230 In effetti, potremmo farlo qui. 193 00:09:07,230 --> 00:09:10,590 Non in questo caso, ho tre, ma otto lampadine, ciascuna delle quali 194 00:09:10,590 --> 00:09:11,810 dispone di un proprio interruttore. 195 00:09:11,810 --> 00:09:15,760 >> E così, se ho voluto rappresentare il numero sette qui, 196 00:09:15,760 --> 00:09:18,510 Potrei girare su questi tre lampadine. 197 00:09:18,510 --> 00:09:21,470 E in effetti, all'interno di il mio computer è milioni, 198 00:09:21,470 --> 00:09:25,650 miliardi di cose che sono solo più piccolo di quello, detti transistori, 199 00:09:25,650 --> 00:09:27,330 interruttori, che basta accendere e spegnere. 200 00:09:27,330 --> 00:09:30,420 Quindi questi sono relativamente big-- interruttori big-- dentro la mia laptop-- 201 00:09:30,420 --> 00:09:32,150 sono molti, molti, molti, molti altri interruttori. 202 00:09:32,150 --> 00:09:35,160 Ma tutto quello che fanno è esattamente che-- girare qualcosa, girare qualcosa fuori. 203 00:09:35,160 --> 00:09:38,076 E come tale, un computer può rappresentare, con quei milioni o miliardi 204 00:09:38,076 --> 00:09:40,480 di transistor, e un sacco un sacco di zero e uno. 205 00:09:40,480 --> 00:09:43,160 E c'è ancora un altro hardware che consente di memorizzare le informazioni a lungo termine, 206 00:09:43,160 --> 00:09:45,243 in modo che quando si tira il spina, non si perde. 207 00:09:45,243 --> 00:09:46,900 Ma questa è una storia per un altro giorno. 208 00:09:46,900 --> 00:09:51,170 >> Quindi cosa possiamo fare con questi bit? 209 00:09:51,170 --> 00:09:54,309 Potremmo solo per prendere la pressione di me-- 210 00:09:54,309 --> 00:09:56,600 Potrebbe qualcuno vuole venire qui e offrire una demo? 211 00:09:56,600 --> 00:09:57,516 Ho visto la prima volta questa mano. 212 00:09:57,516 --> 00:09:58,709 Come ti chiami? 213 00:09:58,709 --> 00:09:59,250 Maday: Maday. 214 00:09:59,250 --> 00:10:00,542 DAVID MALAN: Maday, vieni su. 215 00:10:00,542 --> 00:10:01,250 Piacere di conoscerti. 216 00:10:01,250 --> 00:10:02,390 Maday: Piacere di conoscerti. 217 00:10:02,390 --> 00:10:02,930 >> DAVID MALAN: Da questa parte. 218 00:10:02,930 --> 00:10:04,182 Non avrò a labbro in su. 219 00:10:04,182 --> 00:10:04,682 Tutto ok. 220 00:10:04,682 --> 00:10:11,090 Così qui, abbiamo, notice-- uno, two-- faremo di modifica che fuori-- uno, due, quattro, 221 00:10:11,090 --> 00:10:13,350 otto, 16, 32, 64, 128. 222 00:10:13,350 --> 00:10:14,220 Questo è intenzionale. 223 00:10:14,220 --> 00:10:17,370 C'è otto bit qui-- binario zeri digits-- e uno. 224 00:10:17,370 --> 00:10:21,460 E un bit è un'utile unità di measure-- non come utile unità di misura 225 00:10:21,460 --> 00:10:21,999 su se stessa. 226 00:10:21,999 --> 00:10:24,290 Di solito si vuole almeno otto di queste cose, pseudonimo 227 00:10:24,290 --> 00:10:24,790 un byte. 228 00:10:24,790 --> 00:10:26,230 Quindi abbiamo un byte di bit qui. 229 00:10:26,230 --> 00:10:31,130 >> Quindi, se volessimo sfida con, per esempio, enunciando, in binario, 230 00:10:31,130 --> 00:10:33,230 questo valore qui-- 42. 231 00:10:33,230 --> 00:10:35,140 Vuoi prendere una pugnalata a che? 232 00:10:35,140 --> 00:10:36,034 >> Maday: [INCOMPRENSIBILE]. 233 00:10:36,034 --> 00:10:38,700 DAVID MALAN: Sì, basta premere il piccoli interruttori bianchi di fronte. 234 00:10:38,700 --> 00:10:41,290 E si desidera precisare fuori 42, e in palio 235 00:10:41,290 --> 00:10:44,061 è questo stress CS50 palla se si ottiene questo. 236 00:10:44,061 --> 00:10:44,560 Tutto ok. 237 00:10:44,560 --> 00:10:46,420 In modo da avere 32. 238 00:10:46,420 --> 00:10:48,430 Stiamo andando ad avere bisogno 42. 239 00:10:48,430 --> 00:10:51,410 Ecco, questo è un otto, così che è 40. 240 00:10:51,410 --> 00:10:54,160 E eccellente-- molto ben fatto. 241 00:10:54,160 --> 00:10:55,186 Grazie. 242 00:10:55,186 --> 00:10:58,790 >> [APPLAUSI] 243 00:10:58,790 --> 00:10:59,290 Tutto ok. 244 00:10:59,290 --> 00:11:00,623 Così abbiamo ancora una palla antistress. 245 00:11:00,623 --> 00:11:03,595 Facciamo così una volta di più, se possiamo. 246 00:11:03,595 --> 00:11:05,368 Un altro volontario? 247 00:11:05,368 --> 00:11:07,970 palla senza stress, palla senza stress. 248 00:11:07,970 --> 00:11:08,470 OK. 249 00:11:08,470 --> 00:11:11,640 Nel corso qui in mezzo, vuoi venire giù? 250 00:11:11,640 --> 00:11:14,100 Tutto ok. 251 00:11:14,100 --> 00:11:15,552 Lo so. 252 00:11:15,552 --> 00:11:16,360 Ecco quà. 253 00:11:16,360 --> 00:11:20,818 >> Così i numeri qui-- venire in giù. 254 00:11:20,818 --> 00:11:21,567 Come ti chiami? 255 00:11:21,567 --> 00:11:21,984 >> DAVEY: Davey. 256 00:11:21,984 --> 00:11:22,820 >> DAVID MALAN: Davey. 257 00:11:22,820 --> 00:11:23,320 OK. 258 00:11:23,320 --> 00:11:24,810 Vieni su, Davey. 259 00:11:24,810 --> 00:11:25,890 Piacere di conoscerti. 260 00:11:25,890 --> 00:11:28,639 E quello che stiamo andando ad avere te spell-- se si poteva indugiare lì 261 00:11:28,639 --> 00:11:32,810 per un solo moment-- è il numero 50. 262 00:11:32,810 --> 00:11:36,293 Ma, ma, ma, ma, ma, questi sono magneti della scuola elementare per un motivo. 263 00:11:36,293 --> 00:11:39,370 264 00:11:39,370 --> 00:11:43,327 Appena ricevuto un po 'più difficile, va bene? 265 00:11:43,327 --> 00:11:44,160 C'è ancora otto. 266 00:11:44,160 --> 00:11:46,820 267 00:11:46,820 --> 00:11:47,320 Tutto ok. 268 00:11:47,320 --> 00:11:48,486 Quindi, che cosa abbiamo in là? 269 00:11:48,486 --> 00:11:51,356 Abbiamo 32. 270 00:11:51,356 --> 00:11:54,344 Bello. 271 00:11:54,344 --> 00:11:58,610 32 più 16 ci dà 48-- così vicino. 272 00:11:58,610 --> 00:12:00,390 E meraviglioso. 273 00:12:00,390 --> 00:12:02,831 Congratulazioni a Davey pure. 274 00:12:02,831 --> 00:12:05,720 >> [APPLAUSI] 275 00:12:05,720 --> 00:12:06,516 >> Tutto ok. 276 00:12:06,516 --> 00:12:09,390 Così possiamo fare questo per tutto il giorno, e non ottiene tutto che molto più 277 00:12:09,390 --> 00:12:10,800 interessante e più impegnativo. 278 00:12:10,800 --> 00:12:13,250 Ma questo è davvero il Point-- è come relativamente semplice 279 00:12:13,250 --> 00:12:16,930 è, alla fine della giornata, che computer fa per memorizzare le informazioni, 280 00:12:16,930 --> 00:12:21,740 memorizzare ingressi ed infine memorizzare o rappresentare queste uscite. 281 00:12:21,740 --> 00:12:23,750 Ma i numeri da soli non sono tutto ciò che interessa. 282 00:12:23,750 --> 00:12:26,069 >> Così gli esseri umani, alcuni anni fa, deciso, sai una cosa? 283 00:12:26,069 --> 00:12:27,860 Sarebbe bello se i computer non erano solo 284 00:12:27,860 --> 00:12:31,030 calcolatrici per l'aritmetica operazioni, ma in realtà potrebbe 285 00:12:31,030 --> 00:12:35,209 fare le cose come l'elaborazione di testi, o e-mail, o incarnazioni più moderne 286 00:12:35,209 --> 00:12:36,500 di questi tipi di tecnologie. 287 00:12:36,500 --> 00:12:40,680 E così il mondo ha deciso arbitrariamente, ma universalmente, 288 00:12:40,680 --> 00:12:44,380 che, se si desidera memorizzare la capitale la lettera A in un computer, sai una cosa? 289 00:12:44,380 --> 00:12:47,730 Diciamo solo tutti d'accordo per memorizzare qualche modello di zeri e ones-- 290 00:12:47,730 --> 00:12:52,422 bits-- che alla fine rappresenta il numero decimale 65. 291 00:12:52,422 --> 00:12:53,630 Dobbiamo solo tutti d'accordo su questo. 292 00:12:53,630 --> 00:12:56,620 >> 66 rappresenterebbe B, 67 rappresenterebbe C, 293 00:12:56,620 --> 00:13:00,210 e ci sono mazzi di altri modelli di zero e uno, o numeri sottostanti, 294 00:13:00,210 --> 00:13:02,224 che rappresenterebbe altre lettere ancora. 295 00:13:02,224 --> 00:13:04,390 Quindi, se si tipo di mente assorbire questo per un momento, 296 00:13:04,390 --> 00:13:10,900 Ho volutamente messo su da A I, dove H a 72 e mi è 73. 297 00:13:10,900 --> 00:13:15,830 Se un computer poi, nel contesto un programma di elaborazione testi o di una e-mail, 298 00:13:15,830 --> 00:13:19,620 rivelato sotto la cappa di avere questi modelli di modello bits-- 299 00:13:19,620 --> 00:13:22,500 di bit che rappresentano 72, poi 73, poi 33-- 300 00:13:22,500 --> 00:13:26,640 Cosa potrebbe significare in quel programma? 301 00:13:26,640 --> 00:13:28,150 >> Quindi ciao, e poi qualcosa. 302 00:13:28,150 --> 00:13:31,460 Non necessariamente lo sappiamo, ma anzi 33-- non sulla carta earlier-- 303 00:13:31,460 --> 00:13:33,170 era semplicemente un punto esclamativo. 304 00:13:33,170 --> 00:13:38,870 Così 72 era H, 73 sono io, 33 accade per essere un punto esclamativo ancora. 305 00:13:38,870 --> 00:13:41,719 Ma questo è tutto bello e buono, e infatti oggi, piuttosto che 306 00:13:41,719 --> 00:13:43,760 basta usare sette o otto bit, grazie a qualcosa 307 00:13:43,760 --> 00:13:46,530 chiamato Unicode in contrapposizione in ASCII back in the day, 308 00:13:46,530 --> 00:13:50,010 abbiamo effettivamente in grado di rappresentare ancora di più personaggi interessanti che solo 309 00:13:50,010 --> 00:13:52,980 questi originale inglese lettere prevenuto. 310 00:13:52,980 --> 00:13:56,030 Ma possiamo anche rappresentare anche le cose più ordinato come i colori. 311 00:13:56,030 --> 00:13:59,750 >> Se hai mai sentito l'acronimo RGB, rosso, verde, blu, che 312 00:13:59,750 --> 00:14:03,510 significa solo che un computer in genere utilizza tre set di bits-- 313 00:14:03,510 --> 00:14:06,760 un numero di bit che rappresentano un numero per quanto rosso che si desidera, 314 00:14:06,760 --> 00:14:08,940 un altro insieme di bit per la quantità di verde che si desidera, 315 00:14:08,940 --> 00:14:11,430 e un altro numero fisso per la quantità di blu che si desidera. 316 00:14:11,430 --> 00:14:14,457 Così un gran numero significa un sacco di rosso, piccolo numero significa che non rosso. 317 00:14:14,457 --> 00:14:16,290 E così questi sono specie dei valori medi qui. 318 00:14:16,290 --> 00:14:20,180 >> Quindi, dammi un po 'rosso, dammi un po' verde, e mi danno un po 'di blu. 319 00:14:20,180 --> 00:14:24,260 E se si mescolano i tre tonalità di colore insieme, in questo caso, 320 00:14:24,260 --> 00:14:26,850 si ottiene questa tonalità torbida di giallo o marrone. 321 00:14:26,850 --> 00:14:32,330 Ma questo modello di otto più otto più eight-- così 24 bits-- 322 00:14:32,330 --> 00:14:36,550 sinistra a destra, è come un computer rappresenterebbe quel colore particolare. 323 00:14:36,550 --> 00:14:38,090 Ora, questo è solo un punto su uno schermo. 324 00:14:38,090 --> 00:14:42,230 Se si guarda davvero da vicino il televisore vostra del computer, vedrete punti o pixel. 325 00:14:42,230 --> 00:14:45,420 E se si dispone di una intera griglia di pixel, orizzontalmente e verticalmente, 326 00:14:45,420 --> 00:14:46,630 hai delle immagini. 327 00:14:46,630 --> 00:14:49,029 E poi se si prende un'immagine e poi lavare 328 00:14:49,029 --> 00:14:52,070 mostrare se stessi un'altra immagine, un altro immagine, un'altra immagine, un'altra immagine, 329 00:14:52,070 --> 00:14:54,760 veramente veloce, è naturalmente avete film. 330 00:14:54,760 --> 00:14:56,109 >> E così notare da dove siamo partiti. 331 00:14:56,109 --> 00:14:57,650 Abbiamo iniziato con questi zero e uno. 332 00:14:57,650 --> 00:15:00,570 Abbiamo lavorato da lì a decimale numeri, come li rappresentano. 333 00:15:00,570 --> 00:15:02,070 Ora abbiamo lettere dell'alfabeto. 334 00:15:02,070 --> 00:15:05,664 Ma in altri contesti aspettare, possiamo usare Ancora qualche bit e rappresentare i colori. 335 00:15:05,664 --> 00:15:07,830 Non appena si ha la capacità di rappresentare i colori, 336 00:15:07,830 --> 00:15:11,200 si avrà la possibilità di rappresentare fotografie e gif animate 337 00:15:11,200 --> 00:15:13,780 e altri tali caratteri sullo schermo. 338 00:15:13,780 --> 00:15:17,160 E quando si ha un sacco di immagini che vola dal umana in una sola volta, 339 00:15:17,160 --> 00:15:21,480 sembra che le immagini in movimento, e in modo da ottenere video pure. 340 00:15:21,480 --> 00:15:23,460 >> Quindi, utilizzando questi molto semplici primitive fanno noi 341 00:15:23,460 --> 00:15:28,070 avere il modo di rappresentare infine tutte queste forme di media. 342 00:15:28,070 --> 00:15:30,450 E abbiamo ancora Sottratto e ancora e ancora, fino a quando non 343 00:15:30,450 --> 00:15:33,467 ottenere dal livello più basso a questo livello più alto. 344 00:15:33,467 --> 00:15:35,550 In modo che ci dà questa idea generale di astrazione. 345 00:15:35,550 --> 00:15:36,990 Ma abbiamo iniziato qui. 346 00:15:36,990 --> 00:15:38,790 >> Qui ora, potremmo rappresentare in un computer 347 00:15:38,790 --> 00:15:41,920 i nostri ingressi con zero e uno, le nostre uscite in zero e uno, 348 00:15:41,920 --> 00:15:43,640 ma ciò che accade dentro la scatola? 349 00:15:43,640 --> 00:15:46,080 Ecco dove calcolatore la scienza si fa interessante. 350 00:15:46,080 --> 00:15:49,770 Ecco dove realmente portare il menti da tenere per risolvere i problemi. 351 00:15:49,770 --> 00:15:52,590 Possiamo ora stabilire, per la resto del semestre, sì. 352 00:15:52,590 --> 00:15:53,870 So come funziona binari. 353 00:15:53,870 --> 00:15:57,942 Ricordo come ASCII o Unicode-- la mappatura di letters-- opere. 354 00:15:57,942 --> 00:15:59,650 E com'è certamente per ragione per cui noi 355 00:15:59,650 --> 00:16:03,470 potrebbe rappresentare rosso e verde e blu, e rappresentano multimediale pure. 356 00:16:03,470 --> 00:16:05,390 Ma questa è la roba interessante. 357 00:16:05,390 --> 00:16:09,790 Questo è ciò che rende qualcuno capace di risolvere i problemi. 358 00:16:09,790 --> 00:16:11,980 >> E un tale problema ci piace fare, anzi, 359 00:16:11,980 --> 00:16:15,345 sta prendendo presenze, o facendo questo algoritmicamente. 360 00:16:15,345 --> 00:16:16,470 E ancora, potrei farlo. 361 00:16:16,470 --> 00:16:19,580 Potrei fare uno, due, tre, quattro cinque, sei, sette, otto nove. 362 00:16:19,580 --> 00:16:21,520 E potrei scriverlo giù per tenere traccia di esso. 363 00:16:21,520 --> 00:16:23,769 Ma questo è solo come vorrei rappresentare le informazioni. 364 00:16:23,769 --> 00:16:27,550 Oppure potrei fare questo faster-- due, quattro, sei, otto, dieci, 12, 14, 16, 18, 20, 365 00:16:27,550 --> 00:16:30,380 22-- ci si sente come due volte il più veloce ma è ancora 366 00:16:30,380 --> 00:16:32,050 andando a prendere un sacco di tempo. 367 00:16:32,050 --> 00:16:35,990 >> Ma si scopre, se facciamo leva ancora un altro computer resource-- e in effetti 368 00:16:35,990 --> 00:16:38,940 in questi giorni hanno più CPU o il cervello. 369 00:16:38,940 --> 00:16:41,970 Si scopre computer può fare un sacco di cose in una volta, 370 00:16:41,970 --> 00:16:44,460 e in effetti noi, in questa sala, potrebbe rappresentare esattamente questo. 371 00:16:44,460 --> 00:16:47,130 >> Quindi è un po 'socialmente imbarazzante, ma se si farebbe mi umorismo 372 00:16:47,130 --> 00:16:51,550 solo per un processo in tre fasi, per non mi chiedono tutti nel posto lì solo 373 00:16:51,550 --> 00:16:54,640 a stare in piedi per un momento. 374 00:16:54,640 --> 00:16:57,380 In piedi. 375 00:16:57,380 --> 00:17:01,580 Quindi, pensare a te stesso, il numero tra-- in modo che tutti in questa stanza, 376 00:17:01,580 --> 00:17:05,010 tranne le persone che non hanno oblige, stanno pensando numero uno. 377 00:17:05,010 --> 00:17:06,510 Quindi, questo è il vostro numero di adesso. 378 00:17:06,510 --> 00:17:09,399 Questo è il primo passo, o come informatico o di un programmatore 379 00:17:09,399 --> 00:17:11,827 tipicamente avrebbe fatto, stiamo andando iniziare a contare da zero. 380 00:17:11,827 --> 00:17:14,410 Se il numero più piccolo possibile rappresentare con quelle lampadine 381 00:17:14,410 --> 00:17:17,410 è pari a zero, semplicemente lasciandoli il tutto, mi potrebbe anche solo 382 00:17:17,410 --> 00:17:19,271 iniziare il conteggio da zero è invece di uno. 383 00:17:19,271 --> 00:17:21,020 Ed è quello che scienziati informatici fanno. 384 00:17:21,020 --> 00:17:23,750 Così passo pari a zero, alzarsi in piedi e pensare al numero uno. 385 00:17:23,750 --> 00:17:26,339 Il passo successivo è questo-- coppia via con qualcuno in piedi 386 00:17:26,339 --> 00:17:27,660 e aggiungere i numeri insieme. 387 00:17:27,660 --> 00:17:30,660 388 00:17:30,660 --> 00:17:32,850 Meraviglioso. 389 00:17:32,850 --> 00:17:37,640 >> Quindi in questo momento nel tempo, letteralmente tutti i partecipanti 390 00:17:37,640 --> 00:17:41,930 sta pensando il numero 2, ad eccezione per una persona strana se abbiamo 391 00:17:41,930 --> 00:17:43,450 un numero dispari di persone nella stanza. 392 00:17:43,450 --> 00:17:50,640 E ora il terzo passo qui sta per essere questo-- uno di voi deve sedersi. 393 00:17:50,640 --> 00:17:54,490 Uno di voi dovrebbe sedersi, e se si sta ancora in piedi, 394 00:17:54,490 --> 00:17:56,590 tornare al punto uno. 395 00:17:56,590 --> 00:18:44,799 396 00:18:44,799 --> 00:18:45,790 Tutto ok. 397 00:18:45,790 --> 00:19:00,760 398 00:19:00,760 --> 00:19:01,650 Tutto ok. 399 00:19:01,650 --> 00:19:03,880 Così sempre più persone dovrebbe essere seduti. 400 00:19:03,880 --> 00:19:08,280 Si noti che questo ha indotto un loop-- una sorta di ciclo. 401 00:19:08,280 --> 00:19:11,983 Alcuni di voi dovrebbe essere goffamente bloccato, andando avanti e indietro tra il passo uno 402 00:19:11,983 --> 00:19:14,180 e due, uno e due, uno e due. 403 00:19:14,180 --> 00:19:21,190 404 00:19:21,190 --> 00:19:21,810 Va bene. 405 00:19:21,810 --> 00:19:22,630 Il nostro primo errore. 406 00:19:22,630 --> 00:19:24,740 Ci occuperemo di questo. 407 00:19:24,740 --> 00:19:25,320 Tutto ok. 408 00:19:25,320 --> 00:19:27,370 Vorrei cercare di stimolare le cose insieme. 409 00:19:27,370 --> 00:19:31,454 >> In teoria, solo una persona è in piedi come tutti continua ad accoppiarsi. 410 00:19:31,454 --> 00:19:33,870 Ma mi permetta di accelerare le cose con le persone ancora in piedi. 411 00:19:33,870 --> 00:19:35,480 Che numero stai pensando? 412 00:19:35,480 --> 00:19:36,070 46. 413 00:19:36,070 --> 00:19:36,570 OK. 414 00:19:36,570 --> 00:19:37,820 Andare avanti e sedersi. 415 00:19:37,820 --> 00:19:39,190 Voi ragazzi sono ancora in piedi. 416 00:19:39,190 --> 00:19:42,130 Chi è ancora in piedi? 417 00:19:42,130 --> 00:19:45,240 Che numero stai pensando? 418 00:19:45,240 --> 00:19:46,160 OK. 419 00:19:46,160 --> 00:19:47,900 >> Quindi torneremo a voi. 420 00:19:47,900 --> 00:19:49,630 Nella parte posteriore? 421 00:19:49,630 --> 00:19:50,790 Cos'è quello? 422 00:19:50,790 --> 00:19:53,100 22. 423 00:19:53,100 --> 00:19:56,540 OK qualcun altro fino top-- sì? 424 00:19:56,540 --> 00:19:57,720 34. 425 00:19:57,720 --> 00:19:58,300 OK. 426 00:19:58,300 --> 00:20:02,780 Qui sul mio destra- sopra qui? 427 00:20:02,780 --> 00:20:06,820 132, molto bello. 428 00:20:06,820 --> 00:20:08,380 22? 429 00:20:08,380 --> 00:20:08,990 >> OK. 430 00:20:08,990 --> 00:20:10,031 E che è ancora in piedi? 431 00:20:10,031 --> 00:20:11,000 Qui? 432 00:20:11,000 --> 00:20:14,520 46, molto bello. 433 00:20:14,520 --> 00:20:16,890 72. 434 00:20:16,890 --> 00:20:18,220 Non riesco ancora a lungo in stallo. 435 00:20:18,220 --> 00:20:20,520 Sì? 436 00:20:20,520 --> 00:20:22,490 30, piacevole. 437 00:20:22,490 --> 00:20:24,120 Qui? 438 00:20:24,120 --> 00:20:26,200 23? 439 00:20:26,200 --> 00:20:27,270 23. 440 00:20:27,270 --> 00:20:30,920 >> E penso che sia tutto tranne voi ragazzi, nessuna pressione. 441 00:20:30,920 --> 00:20:32,860 Oh, aspetta. 442 00:20:32,860 --> 00:20:33,360 28? 443 00:20:33,360 --> 00:20:37,500 444 00:20:37,500 --> 00:20:38,281 Solo otto. 445 00:20:38,281 --> 00:20:38,780 OK. 446 00:20:38,780 --> 00:20:41,030 Solo otto. 447 00:20:41,030 --> 00:20:42,580 Qui sotto? 448 00:20:42,580 --> 00:20:44,570 30. 449 00:20:44,570 --> 00:20:47,344 23. 450 00:20:47,344 --> 00:20:47,843 24. 451 00:20:47,843 --> 00:20:50,810 452 00:20:50,810 --> 00:20:52,310 18. 453 00:20:52,310 --> 00:20:54,690 Questo è il peggior attuazione di questo algoritmo mai. 454 00:20:54,690 --> 00:20:55,190 OK. 455 00:20:55,190 --> 00:20:59,760 Così chiunque altro? 456 00:20:59,760 --> 00:21:00,421 Chiunque altro? 457 00:21:00,421 --> 00:21:00,920 OK. 458 00:21:00,920 --> 00:21:03,300 Uno di più. 459 00:21:03,300 --> 00:21:04,400 16? 460 00:21:04,400 --> 00:21:04,900 OK. 461 00:21:04,900 --> 00:21:05,510 16. 462 00:21:05,510 --> 00:21:06,010 Tutto ok. 463 00:21:06,010 --> 00:21:09,070 Quindi, se non ho perso nessuno in il bagliore qui, quando ho colpito Enter, 464 00:21:09,070 --> 00:21:13,091 vedremo, algoritmicamente, la numero totale di persone a Sanders. 465 00:21:13,091 --> 00:21:16,340 Perché ancora una volta, è come se tutti come si sedette, superato il proprio numero off 466 00:21:16,340 --> 00:21:19,215 a qualcun altro, a qualcun altro, a qualcun altro, in modo che, in teoria, 467 00:21:19,215 --> 00:21:22,304 alla fine, solo uno scomodo persona dovrebbe essere lasciato in piedi. 468 00:21:22,304 --> 00:21:22,970 Ma va bene. 469 00:21:22,970 --> 00:21:24,290 Abbiamo accelerato le cose manualmente. 470 00:21:24,290 --> 00:21:27,590 E 'particolarmente difficile da vedere in questo particolare spazio. 471 00:21:27,590 --> 00:21:34,200 >> E il numero totale di persone pensiamo che ci sono qui è 546. 472 00:21:34,200 --> 00:21:37,330 Il numero totale mi è stato consegnato dai compagni di insegnamento, 473 00:21:37,330 --> 00:21:40,660 chi l'ha fatto il vecchio scuola di modo lento, era 820. 474 00:21:40,660 --> 00:21:43,660 >> [Ride] 475 00:21:43,660 --> 00:21:47,170 >> [APPLAUSI] 476 00:21:47,170 --> 00:21:48,670 >> Va bene. 477 00:21:48,670 --> 00:21:50,740 Quindi sicuramente poi, ci sono questi bug. 478 00:21:50,740 --> 00:21:51,460 E va bene. 479 00:21:51,460 --> 00:21:53,810 E così ripensare a questo la prima volta qualcosa 480 00:21:53,810 --> 00:21:55,420 si scrive non necessariamente funziona. 481 00:21:55,420 --> 00:21:57,620 Questo è successo a me qui. 482 00:21:57,620 --> 00:22:00,844 Ma andiamo ora considerare come potremmo applicare questa stessa idea di qualcosa 483 00:22:00,844 --> 00:22:03,760 si potrebbe avere visto prima, che è questa vecchia tecnologia qui-- scuola 484 00:22:03,760 --> 00:22:05,130 una rubrica molto grande. 485 00:22:05,130 --> 00:22:09,380 E pensare che questa rubrica ha 1.000 pagine e 1.000 nomi 486 00:22:09,380 --> 00:22:11,360 e numeri alfabetico all'interno di esso. 487 00:22:11,360 --> 00:22:14,860 >> Beh, potremmo specie di applicare una simile idea a questo problema molto fisico, 488 00:22:14,860 --> 00:22:16,270 solo a me usando. 489 00:22:16,270 --> 00:22:18,810 Ho solo un po 'barato sfruttando tutti voi 490 00:22:18,810 --> 00:22:23,240 con un sacco di diverse CPU o cervelli esecuzione di qualche algoritmo. 491 00:22:23,240 --> 00:22:25,440 Ma se è solo poco vecchio me, posso ancora 492 00:22:25,440 --> 00:22:29,630 sfruttare la stessa essenza di un'idea di dividere e conquistare quel problema 493 00:22:29,630 --> 00:22:32,970 ancora e ancora, per cui la metà di voi, la metà di voi, metà di voi, metà di voi, 494 00:22:32,970 --> 00:22:35,830 teoricamente tenuto seduto, fino a quando ci hanno lasciato, in teoria, 495 00:22:35,830 --> 00:22:36,990 con una sola persona. 496 00:22:36,990 --> 00:22:39,810 >> Quindi, in questo vecchia scuola tecnologici, quali non lo facciamo 497 00:22:39,810 --> 00:22:43,030 bisogno di questo map-- questo La tecnologia vecchia scuola, 498 00:22:43,030 --> 00:22:47,300 potremmo iniziare la ricerca di qualcuno come Mike Smith, una pagina alla volta. 499 00:22:47,300 --> 00:22:49,410 E vedo che nessuno, Mike non è qui. 500 00:22:49,410 --> 00:22:51,110 Sono ancora nella sezione A. 501 00:22:51,110 --> 00:22:53,900 Alla fine, ho trovato io nella sezione B. 502 00:22:53,900 --> 00:22:56,910 E questo è un algorithm-- passo-passo le istruzioni. 503 00:22:56,910 --> 00:22:59,890 Inizia la pagina di inizio e uno alla volta, cercare Mike Smith. 504 00:22:59,890 --> 00:23:03,410 È questo correct-- questo algoritmo o metodo? 505 00:23:03,410 --> 00:23:04,550 >> Sì, è corretto. 506 00:23:04,550 --> 00:23:06,840 Se Mike è qui, alla fine Io riesco anche a lui. 507 00:23:06,840 --> 00:23:08,139 Ma non è efficiente. 508 00:23:08,139 --> 00:23:09,180 È ovviamente molto lento. 509 00:23:09,180 --> 00:23:11,340 Quindi posso sfruttare la stessi twosies avvicinano. 510 00:23:11,340 --> 00:23:15,350 Posso fare una sorta di due, quattro, sei, otto, 10, 12. 511 00:23:15,350 --> 00:23:16,330 E 'due volte più veloce. 512 00:23:16,330 --> 00:23:18,290 Ho intenzione di arrivare a Mike più velocemente se lui è lì. 513 00:23:18,290 --> 00:23:20,770 È corretto? 514 00:23:20,770 --> 00:23:22,320 Sì, ma ho sentito un no little--. 515 00:23:22,320 --> 00:23:24,200 Ora ho sentito un no. 516 00:23:24,200 --> 00:23:24,700 Sì. 517 00:23:24,700 --> 00:23:26,190 C'è un bug potenzialmente. 518 00:23:26,190 --> 00:23:29,374 Forse Mike ottiene solo accidentalmente inserita tra due pagine, 519 00:23:29,374 --> 00:23:31,290 perché sto volando attraverso questo due alla volta. 520 00:23:31,290 --> 00:23:33,580 Così almeno abbiamo bisogno di qualche tipo di correzione condizionale. 521 00:23:33,580 --> 00:23:35,330 Ho bisogno di dire, hey, se ho colpito qualcuno il cui 522 00:23:35,330 --> 00:23:39,190 nome inizia con T invece di un S, E 'meglio il doppio di nuovo almeno una pagina. 523 00:23:39,190 --> 00:23:40,767 Così buggy in un primo momento, ma risolvibile. 524 00:23:40,767 --> 00:23:43,850 Ma nessuno di noi stanno andando a cercare Mike Smith attraverso un telefono di 1000 pagine 525 00:23:43,850 --> 00:23:45,290 prenotare una pagina alla volta. 526 00:23:45,290 --> 00:23:48,486 Che cosa è una persona normale intenzione di fare? 527 00:23:48,486 --> 00:23:50,860 Hai intenzione di andare alle S di, se si sapeva dove le S di. 528 00:23:50,860 --> 00:23:54,230 Si potrebbe andare o meno a metà o leggermente sbilanciata verso la fine. 529 00:23:54,230 --> 00:23:56,850 E guardo qui e Sono nella sezione M. 530 00:23:56,850 --> 00:23:58,952 Ma che ne sai su questo problema ora, 531 00:23:58,952 --> 00:24:02,160 che non abbiamo necessariamente sappiamo prima con tutti noi stessi solo contando 532 00:24:02,160 --> 00:24:03,030 equivalentemente? 533 00:24:03,030 --> 00:24:06,010 Beh, Mike è chiaramente andando essere in questa metà del libro 534 00:24:06,010 --> 00:24:07,920 se lui è qui a tutti perché è ordinato. 535 00:24:07,920 --> 00:24:10,160 >> E così si può molto dramatically-- 536 00:24:10,160 --> 00:24:11,250 >> [Senza fiato] 537 00:24:11,250 --> 00:24:12,300 >> Lo so. 538 00:24:12,300 --> 00:24:16,940 >> [APPLAUSI] 539 00:24:16,940 --> 00:24:19,450 >> In realtà è molto semplice, se lo si fa lungo la spina dorsale lì. 540 00:24:19,450 --> 00:24:22,070 Ma si può poi gettare metà del problema di distanza. 541 00:24:22,070 --> 00:24:25,950 Ora, io sono rimasto con la stessa problem-- trovare Mike Smith in un telefono book-- 542 00:24:25,950 --> 00:24:29,610 ma ora l'elenco telefonico inizia a M e va a Z, ma è la metà più grande. 543 00:24:29,610 --> 00:24:30,890 >> Ma questo è ciò che è impressionante. 544 00:24:30,890 --> 00:24:34,170 Proprio come nella teoria, ragazzi, quando si sedettero tutti solo mezzo alla volta, 545 00:24:34,170 --> 00:24:37,150 il problema ha ottenuto la metà più grande, la metà più grande, ancora e ancora. 546 00:24:37,150 --> 00:24:40,260 Così è diventato il problema della stesso problema, ma la metà più grande. 547 00:24:40,260 --> 00:24:42,670 Ora si tratta di un problema di 250 pagine. 548 00:24:42,670 --> 00:24:45,340 Appena mi rendo conto, oh, io sono nella sezione T accidentalmente. 549 00:24:45,340 --> 00:24:46,590 Sono andato troppo lontano. 550 00:24:46,590 --> 00:24:48,500 Posso buttare che la metà della rubrica via. 551 00:24:48,500 --> 00:24:50,410 Ora, io sono fino a un quarto del problema. 552 00:24:50,410 --> 00:24:53,910 >> E si può ripetere, ripetere, ripetere fino a quando, in teoria, sei 553 00:24:53,910 --> 00:24:55,460 sinistra con una sola pagina. 554 00:24:55,460 --> 00:24:59,010 E se Mike è su quella pagina, Ora posso risolvere questo problema. 555 00:24:59,010 --> 00:25:00,810 Ma quanto velocemente ho risolverlo? 556 00:25:00,810 --> 00:25:05,420 Nel primo caso, ci ho messo come forse 1.000 passaggi per trovare Mike Smith. 557 00:25:05,420 --> 00:25:09,260 Potrebbe aver preso me-- Ho preso l'elenco telefonico 558 00:25:09,260 --> 00:25:11,440 e ho iniziato a guardare una pagina alla volta, 559 00:25:11,440 --> 00:25:13,480 e Mike potrebbe essere 1.000 pagine dopo. 560 00:25:13,480 --> 00:25:16,020 >> Secondo approccio forse mi porta a 500 punti, 561 00:25:16,020 --> 00:25:17,960 perché sto volando attraverso due alla volta. 562 00:25:17,960 --> 00:25:21,082 E il terzo approccio, però, è particolarmente potente. 563 00:25:21,082 --> 00:25:23,790 Ma prendiamo in considerazione ciò che realmente ha fatto con questo terzo approccio. 564 00:25:23,790 --> 00:25:27,590 Avrò quello che chiamerò appena questi qui le istruzioni, uno alla volta. 565 00:25:27,590 --> 00:25:28,560 Prendete una rubrica telefonica. 566 00:25:28,560 --> 00:25:30,130 Aperto al centro della rubrica telefonica. 567 00:25:30,130 --> 00:25:31,419 Guardate i nomi. 568 00:25:31,419 --> 00:25:33,960 E poi le cose si fanno un po ' intellettualmente più interessante, 569 00:25:33,960 --> 00:25:35,170 se ancora semplice. 570 00:25:35,170 --> 00:25:38,350 Se Smith è tra i nomi su quella pagina corrente, 571 00:25:38,350 --> 00:25:40,170 poi fare qualcosa in modo condizionale. 572 00:25:40,170 --> 00:25:41,840 E 'come un bivio. 573 00:25:41,840 --> 00:25:42,660 Chiama Mike. 574 00:25:42,660 --> 00:25:44,930 Se Mike è tra i nomi su quella pagina, chiamato Mike. 575 00:25:44,930 --> 00:25:49,720 Ma solo fare la linea a quattro se la linea albero, se si vuole, è vero. 576 00:25:49,720 --> 00:25:51,590 La risposta a questa domanda è sì. 577 00:25:51,590 --> 00:25:55,520 >> Altrimenti se Smith è prima nel book-- in altre parole, se sono nella sezione M 578 00:25:55,520 --> 00:25:58,540 e sto cercando qualcuno per sinistra, allora quello che dovrebbe fare 579 00:25:58,540 --> 00:26:00,300 è qualcosa di molto simile. 580 00:26:00,300 --> 00:26:03,440 Poi dovrei aprire a metà della metà sinistra del libro. 581 00:26:03,440 --> 00:26:07,930 Quindi, andare a sinistra, e poi tornare al passo due. 582 00:26:07,930 --> 00:26:09,290 Guardate i nomi lì. 583 00:26:09,290 --> 00:26:12,779 >> Quindi, in altre parole, fare la stessa cosa, ma su un problema che è stato dimezzato. 584 00:26:12,779 --> 00:26:13,570 Sai cosa altro? 585 00:26:13,570 --> 00:26:16,470 Se Smith è più avanti nel libro sulla base della pagina che sto guardando, 586 00:26:16,470 --> 00:26:18,790 aperto al centro del metà destra del libro 587 00:26:18,790 --> 00:26:22,050 e poi tornare di nuovo al punto due, else-- 588 00:26:22,050 --> 00:26:24,000 c'è una quarta possibilità qui. 589 00:26:24,000 --> 00:26:28,830 Mike sia qui oa sinistra oppure a destra o meno. 590 00:26:28,830 --> 00:26:30,570 E qui è meglio considerare questo. 591 00:26:30,570 --> 00:26:33,360 E infatti, se hai mai avuto il computer solo in crash su di voi, 592 00:26:33,360 --> 00:26:36,822 cioè a volte, ma non sempre, il risultato di solo un programmatore umano non 593 00:26:36,822 --> 00:26:39,280 realizzando, oh sparare, non c'è In realtà questo quarto scenario. 594 00:26:39,280 --> 00:26:41,650 E se non si scrive il codice per gestire questo scenario, 595 00:26:41,650 --> 00:26:43,220 a volte non si sa ciò che il computer potrebbe fare. 596 00:26:43,220 --> 00:26:44,770 E infatti un programma potrebbe bloccarsi. 597 00:26:44,770 --> 00:26:47,550 >> Ma in questo caso, ho pensato a questo proposito, e ho detto, altrimenti uscire, 598 00:26:47,550 --> 00:26:49,850 perché questa è la quarta logica scenario possibile. 599 00:26:49,850 --> 00:26:51,950 Ora, facciamo solo aggiungere un vocabolario così abbiamo 600 00:26:51,950 --> 00:26:55,320 può iniziare a gettare intorno termini che sono altrimenti abbastanza intuitivo. 601 00:26:55,320 --> 00:26:57,870 Tutte le cose che ho appena evidenziato in giallo qui, 602 00:26:57,870 --> 00:27:00,140 Sto solo andando al funzioni o delle procedure. 603 00:27:00,140 --> 00:27:01,590 Sono solo tipo di azioni. 604 00:27:01,590 --> 00:27:04,900 Così pick up, aperto a, guardare a, chiamata, aperto, aperto, 605 00:27:04,900 --> 00:27:09,170 quit-- queste sono solo le azioni, o faremo li chiamano più formalmente, funzioni. 606 00:27:09,170 --> 00:27:11,410 >> Nel frattempo, oggi in giallo, Ho evidenziato le cose 607 00:27:11,410 --> 00:27:14,084 che-- facciamo solo iniziare a chiamare loro condizioni o rami. 608 00:27:14,084 --> 00:27:16,750 Questi sono i punti di decisione in cui si potrebbe andare in questo modo, in questo modo, 609 00:27:16,750 --> 00:27:18,100 o qualche altra direzione ancora. 610 00:27:18,100 --> 00:27:19,430 Quindi, quelli saranno le condizioni. 611 00:27:19,430 --> 00:27:20,930 E ora questo è un po 'più elaborato. 612 00:27:20,930 --> 00:27:24,600 Chiamiamo queste domande espressioni booleane, 613 00:27:24,600 --> 00:27:26,530 dopo che qualcuno con un cognome Bool. 614 00:27:26,530 --> 00:27:28,340 >> E una espressione booleana è solo qualcosa 615 00:27:28,340 --> 00:27:30,290 questo è vero o falso, sì o no. 616 00:27:30,290 --> 00:27:35,870 Quindi è la domanda la cui risposta si cura di, in modo da in una condizione 617 00:27:35,870 --> 00:27:39,210 fare una decision-- tornare una risposta, e poi andare a sinistra oa destra, o qualcosa del genere 618 00:27:39,210 --> 00:27:40,450 un'altra cosa. 619 00:27:40,450 --> 00:27:42,860 >> E poi, infine, questi Linee qui-- risalgono 620 00:27:42,860 --> 00:27:44,737 al punto due, tornare indietro al punto two-- Potremmo 621 00:27:44,737 --> 00:27:46,320 implementare questa idea in modi diversi. 622 00:27:46,320 --> 00:27:49,028 E poi quelli di voi con esperienza di programmazione avrebbe potuto fare 623 00:27:49,028 --> 00:27:50,670 o può immaginare di fare questo in modo diverso. 624 00:27:50,670 --> 00:27:53,170 Ma per scopi di oggi, e ' solo l'idea che conta. 625 00:27:53,170 --> 00:27:55,400 Questo è ciò che induce ci generalmente chiamiamo 626 00:27:55,400 --> 00:28:00,110 un loop-- una sorta di ciclo, perché è facendomi fare qualcosa di nuovo. 627 00:28:00,110 --> 00:28:03,340 >> Così ora, facciamo solo in considerazione quanto è buono questo algoritmo è. 628 00:28:03,340 --> 00:28:03,899 È corretto. 629 00:28:03,899 --> 00:28:06,940 Se Mike nel libro, è uno dei quei quattro scenarios-- ancora e ancora 630 00:28:06,940 --> 00:28:08,023 e ancora una volta, lo troveremo. 631 00:28:08,023 --> 00:28:08,890 Ma quanto è buono è? 632 00:28:08,890 --> 00:28:10,150 Beh, non abbiamo di essere troppo formale qui. 633 00:28:10,150 --> 00:28:12,066 Ma facciamo solo localizziamo qualcosa, X e Y, per ottenere 634 00:28:12,066 --> 00:28:14,470 un senso della forma di questo problema. 635 00:28:14,470 --> 00:28:17,160 >> Su l'asse x è qui la dimensione del mio problema. 636 00:28:17,160 --> 00:28:20,256 E un asse y qui sarà il tempo di risolvere. 637 00:28:20,256 --> 00:28:21,630 Quindi forse questo è il numero di pagine. 638 00:28:21,630 --> 00:28:24,400 Forse questo è secondi o Pagina turns-- qualunque. 639 00:28:24,400 --> 00:28:27,290 Tuttavia si desidera contare è cosa questa immagine rappresenterà. 640 00:28:27,290 --> 00:28:30,630 E questo primo algoritmo, sto andando descrivere come solo una linea retta. 641 00:28:30,630 --> 00:28:33,120 Se c'è n pagine la rubrica telefonica, allora 642 00:28:33,120 --> 00:28:36,010 mi potrebbe prendere come molti come n passi per trovare Mike. 643 00:28:36,010 --> 00:28:38,930 Se Verizon o la società telefonica aggiunge un altro pagina il prossimo anno, 644 00:28:38,930 --> 00:28:42,170 potrebbe prendere me uno più step-- un'altra unità di tempo per trovare Mike. 645 00:28:42,170 --> 00:28:44,230 Quindi c'è solo questo rapporto uno a uno. 646 00:28:44,230 --> 00:28:45,970 Si tratta di un pendio linea retta. 647 00:28:45,970 --> 00:28:49,110 >> Nel frattempo, che secondo algorithm-- se sono 648 00:28:49,110 --> 00:28:51,570 andare a due a due tempo-- due, quattro, sei, otto, o double-- 649 00:28:51,570 --> 00:28:54,550 passando attraverso le pagine di due volte alla volta, due alla volta, 650 00:28:54,550 --> 00:28:55,710 è ancora retta. 651 00:28:55,710 --> 00:28:58,720 C'è ora un 1-2 rapporto, ma solo un po 'più basso. 652 00:28:58,720 --> 00:29:02,240 Quindi, se c'è questo molte pagine sul grafico qui in giallo, 653 00:29:02,240 --> 00:29:04,800 che mi potrebbe prendere questa molti passi o secondi, 654 00:29:04,800 --> 00:29:07,980 altrimenti è andare a prendere me il doppio sulla linea rossa. 655 00:29:07,980 --> 00:29:10,190 >> Ma la linea verde è il vero asporto. 656 00:29:10,190 --> 00:29:12,290 Questo è ciò che generalmente chiamare un registro logorithm-- 657 00:29:12,290 --> 00:29:13,840 di n, dove n è il numero di pagine. 658 00:29:13,840 --> 00:29:16,450 Ma è la forma che conta oggi, perché non abbiamo 659 00:29:16,450 --> 00:29:17,950 di pensare anche a tracciare punti. 660 00:29:17,950 --> 00:29:19,830 >> Pensate a uno scenario estremo. 661 00:29:19,830 --> 00:29:23,070 Supponiamo che Verizon domani raddoppia la numero di pagine che guida telefonica, 662 00:29:23,070 --> 00:29:24,900 da 1.000 a 2.000. 663 00:29:24,900 --> 00:29:28,440 Nel primo algoritmo, I potrebbe perdere un extra di 1.000 664 00:29:28,440 --> 00:29:32,080 passi alla ricerca di Mike, solo perché Verizon ha raddoppiato le dimensioni del libro. 665 00:29:32,080 --> 00:29:34,740 Il secondo algorithm-- Potrebbe portami un extra di 500 gradini. 666 00:29:34,740 --> 00:29:38,370 1.000 più pagine, ho andare a due a due tempo-- 500 più passi per trovare Mike. 667 00:29:38,370 --> 00:29:41,020 >> Ma questo terzo algoritmo è una specie di magico. 668 00:29:41,020 --> 00:29:44,270 Verizon raddoppia il numero di pagine da 1.000 a 2.000, 669 00:29:44,270 --> 00:29:47,730 Ma quanti più passaggi fa mi ci vorrà per cercare per Mike? 670 00:29:47,730 --> 00:29:51,220 E 'solo uno, perché posso solo strappare la rubrica una volta di più 671 00:29:51,220 --> 00:29:55,280 da un problema 2.000 pagina ad un 1.000 problema pagina, e voilà. 672 00:29:55,280 --> 00:29:57,030 Ho preso un morso enorme fuori di esso. 673 00:29:57,030 --> 00:29:59,405 >> E se si va veramente estrema, supporre che la rubrica telefonica 674 00:29:59,405 --> 00:30:03,600 società aveva qualcosa di folle come una rubrica 4 miliardi di pagina. 675 00:30:03,600 --> 00:30:07,020 Bene quanti passi Potrebbe prendere trovare Mike Smith in 4 miliardi 676 00:30:07,020 --> 00:30:09,990 Pagina rubrica telefonica? 677 00:30:09,990 --> 00:30:16,450 E 'un grande numero, ma solo 4 miliardi di 2000 a 1000 milioni a 500 milioni, 678 00:30:16,450 --> 00:30:18,720 250 million-- ancora suona come grandi numeri, 679 00:30:18,720 --> 00:30:20,980 ma io sono molto rapidamente arrivare a valori più bassi. 680 00:30:20,980 --> 00:30:24,790 >> E infatti, se faccio la matematica a destra, posso dividere solo 4 miliardi 681 00:30:24,790 --> 00:30:28,750 da circa 32 volte prima Scendo a uno solo. 682 00:30:28,750 --> 00:30:31,640 Quindi, se questo fosse rubrica 4 lungo miliardi di pagine, un grosso problema. 683 00:30:31,640 --> 00:30:35,270 In pochi secondi, forse 32 secondi, ho potuto dividerlo a metà 684 00:30:35,270 --> 00:30:39,560 e, infine, trovare Mike o concludere che lui non c'è. 685 00:30:39,560 --> 00:30:42,219 E questo è l'essenza di un algorithm-- un buon algoritmo. 686 00:30:42,219 --> 00:30:44,260 E questo è uno dei obiettivi di una classe come questa, 687 00:30:44,260 --> 00:30:47,350 sta cercando di capire come faccio risolvere il problema non solo correttamente, 688 00:30:47,350 --> 00:30:52,360 come ho sempre saputo come fare uno pagina alla tempo-- ma correttamente e bene. 689 00:30:52,360 --> 00:30:55,034 Come faccio a progettare bene soluzioni ai problemi? 690 00:30:55,034 --> 00:30:57,200 Quindi cerchiamo di prendere un momento qui e vi darà un senso ora 691 00:30:57,200 --> 00:31:00,260 del CS50 corso itself-- introdurre i membri del personale un paio di corsi. 692 00:31:00,260 --> 00:31:02,010 Poco prima di 02:00, faremo prendere una breve pausa 693 00:31:02,010 --> 00:31:03,520 in modo che quelli di voi che sono lo shopping può 694 00:31:03,520 --> 00:31:05,130 anatra fuori e prendere un guardare qualche altra classe 695 00:31:05,130 --> 00:31:06,580 e guardare il resto di questa linea. 696 00:31:06,580 --> 00:31:09,250 Ma per ora, mi permetta di introdurre CS50, la classe stessa, 697 00:31:09,250 --> 00:31:11,330 e in particolare ciò che è nuovo. 698 00:31:11,330 --> 00:31:13,960 >> Così la scorsa primavera, abbiamo trascorso un bel po 'di tempo-- 699 00:31:13,960 --> 00:31:17,911 il personale del corso e I-- pensare su ciò che vogliamo CS50 sia, 700 00:31:17,911 --> 00:31:19,910 e tornare a prima principi, per così dire, 701 00:31:19,910 --> 00:31:22,760 da considerare che cosa è che vogliamo questo corso per assomigliare ed essere 702 00:31:22,760 --> 00:31:23,740 come per i suoi studenti. 703 00:31:23,740 --> 00:31:26,480 E così vedrete nel problema set a zero, così, un invito 704 00:31:26,480 --> 00:31:28,780 a dare un'occhiata a quel URL che riassume 705 00:31:28,780 --> 00:31:33,270 alcune delle motivazioni che stanno dietro la le seguenti caratteristiche di caduta 2016. 706 00:31:33,270 --> 00:31:35,570 >> Quindi, come si può avere spigolato dal TL: volantino DR, 707 00:31:35,570 --> 00:31:39,060 il programma di oggi, così come da il catalogo dei corsi, quest'anno in CS50, 708 00:31:39,060 --> 00:31:42,540 ci si aspetta solo di partecipare oggi-- bene così lavoro done-- 709 00:31:42,540 --> 00:31:45,960 e l'ultima lezione il 21 novembre. 710 00:31:45,960 --> 00:31:49,150 E tu sei il benvenuto, ma non dovrebbe partecipare a tali lezioni nel mezzo, 711 00:31:49,150 --> 00:31:51,180 perché quello che stiamo facendo quest'anno, sta girando 712 00:31:51,180 --> 00:31:52,661 in tempo reale materiale del corso. 713 00:31:52,661 --> 00:31:54,660 Quindi, tutto rimarrà corrente e incorporato 714 00:31:54,660 --> 00:31:57,410 come meglio can-- eventi in corso e le conversazioni che la gente potrebbe 715 00:31:57,410 --> 00:32:00,400 essere avere nell'industria in mondo, ma facendo che il materiale 716 00:32:00,400 --> 00:32:03,892 disponibili, di conseguenza, anche earlier-- completo di trascrizioni di testo completo 717 00:32:03,892 --> 00:32:05,850 e di ricerca e la collegamenti ad altre risorse. 718 00:32:05,850 --> 00:32:07,930 >> E in effetti, siamo stati protestando per un po 'di tempo 719 00:32:07,930 --> 00:32:10,830 e noi ora crediamo questo, che possiamo creare, in digitale, 720 00:32:10,830 --> 00:32:15,170 un più coinvolgente, una più convincente esperienza educativa, al contrario 721 00:32:15,170 --> 00:32:19,110 a raccogliere qui circa 23 volte di persona, qualcuno sentendo come me 722 00:32:19,110 --> 00:32:22,925 semplicemente parlare di informatica, al contrario di un impegno più attivo. 723 00:32:22,925 --> 00:32:25,800 Così si vedrà nel programma del corso uno schizzo del semestre qui, 724 00:32:25,800 --> 00:32:27,840 insieme a quando lezioni saranno essere filmato, a cui si è 725 00:32:27,840 --> 00:32:29,710 benvenuti, ma non ci si aspetta, e quando lo faranno 726 00:32:29,710 --> 00:32:31,640 essere rilasciato sul sito web del corso. 727 00:32:31,640 --> 00:32:34,300 >> E quello che faremo qui Mercoledì partire dalla prossima settimana, 728 00:32:34,300 --> 00:32:37,362 è molto più intimamente, con la sola quelle persone che vogliono partecipare, 729 00:32:37,362 --> 00:32:39,820 è una cosiddetta passeggiata, dove io e le teste del corso 730 00:32:39,820 --> 00:32:41,730 sarà effettivamente fare le cose un po 'più intimo 731 00:32:41,730 --> 00:32:44,313 qui in orchestra sezione, hanno ancora qualche tecnologia 732 00:32:44,313 --> 00:32:46,365 e camminare attraverso il problema set di settimana corrente, 733 00:32:46,365 --> 00:32:50,020 e offrirvi particularly-- se tra quelli meno comfortable-- tanto più 734 00:32:50,020 --> 00:32:52,790 una guida che si potrebbe desiderare o necessità di sfida della settimana. 735 00:32:52,790 --> 00:32:55,820 E allo stesso modo, per coloro che non possono partecipare a quelli di persona, un grosso problema. 736 00:32:55,820 --> 00:32:58,486 Ci saranno allo stesso modo guidata da uno del personale di alto livello del corso, 737 00:32:58,486 --> 00:33:02,650 Zamalya, la stessa opportunità incorporato nel problema si pone. 738 00:33:02,650 --> 00:33:04,960 >> Problema imposta quest'anno sarà rilasciato il venerdì 739 00:33:04,960 --> 00:33:08,080 e non più fare sette giorni più tardi, ma 10 giorni later-- deliberatamente 740 00:33:08,080 --> 00:33:10,910 sovrapposizione con ogni problema impostare, in modo da accogliere meglio, 741 00:33:10,910 --> 00:33:13,050 ci auguriamo, flusso e riflusso in orari degli studenti, 742 00:33:13,050 --> 00:33:16,550 soprattutto quando midterms o l'atletica o accademici o extracurriculars 743 00:33:16,550 --> 00:33:18,465 tendono ad andare e venire soprattutto di metà semestre. 744 00:33:18,465 --> 00:33:21,340 Questo dovrebbe dare un po 'di più discrezione, come se si frontale 745 00:33:21,340 --> 00:33:25,690 caricare la settimana con CS50 o del carico posteriore sul fine settimana successivo, invece. 746 00:33:25,690 --> 00:33:28,817 Quindi guardare al programma del corso qui per il programma della stessa. 747 00:33:28,817 --> 00:33:30,900 E si noterà anche tra i cambiamenti di quest'anno, 748 00:33:30,900 --> 00:33:34,082 per quelli più familiarità con programmazione in passato, 749 00:33:34,082 --> 00:33:36,290 inizieremo il semestre come ci sarà oggi in Scratch, 750 00:33:36,290 --> 00:33:39,730 concentrarsi soprattutto sulla lingua chiamato C, e poi non transizione 751 00:33:39,730 --> 00:33:43,430 per PHP, ma di un linguaggio chiamato Python verso la fine del semestre 752 00:33:43,430 --> 00:33:46,565 nel contesto della programmazione web, insieme a SQL e JavaScript, 753 00:33:46,565 --> 00:33:48,930 HTML, CSS, e ancor più. 754 00:33:48,930 --> 00:33:51,790 >> E in risposta ad una FAQ, è infatti il ​​caso 755 00:33:51,790 --> 00:33:55,520 che CS non è così spaventoso come una volta pensava che fosse, ma è tanto il lavoro 756 00:33:55,520 --> 00:33:57,280 come avevo sentito che potrebbe essere. 757 00:33:57,280 --> 00:34:03,210 Ma questo è il dire che qui sono alcuni statistiche autunno 2015 corpo studentesco, 758 00:34:03,210 --> 00:34:06,460 per cui le linee blu orizzontali rappresentano il numero medio di ore 759 00:34:06,460 --> 00:34:06,960 segnalati. 760 00:34:06,960 --> 00:34:10,570 E vedrai una media di da sei a 10 per 12-- forse 16 761 00:34:10,570 --> 00:34:14,580 o così e così via, ma con alta varianza per essere chiari. 762 00:34:14,580 --> 00:34:18,570 E così rendersi conto che non c'è solo studenti più comodo e meno 763 00:34:18,570 --> 00:34:22,150 confortevole in corso, ma un corrispondente supporto 764 00:34:22,150 --> 00:34:25,699 struttura per ottenere quegli studenti attraverso il semestre con successo. 765 00:34:25,699 --> 00:34:29,409 >> Infatti, in risposta ad una FAQ, dovrebbe si prende CS50 come un primo anno? 766 00:34:29,409 --> 00:34:30,139 Assolutamente. 767 00:34:30,139 --> 00:34:32,690 E infatti, io mi pento Non avendo trovato la mia strada 768 00:34:32,690 --> 00:34:35,170 o trovato un nuovo campo quel primo anno pure. 769 00:34:35,170 --> 00:34:39,149 E si dovrebbe prendere CS50 con altri corsi, certamente well-- come 770 00:34:39,149 --> 00:34:41,940 e il consiglio generale si potrebbe dare agli studenti, che probabilmente è CS50 771 00:34:41,940 --> 00:34:44,929 non il tipo di classe o di classe intro che si dovrebbe prendere con tre 772 00:34:44,929 --> 00:34:47,199 altra o le altre quattro classi P-SET. 773 00:34:47,199 --> 00:34:50,583 Ma se si sta prendendo altri due p-set classi, qualcosa d'altro, e CS50, 774 00:34:50,583 --> 00:34:51,499 assolutamente gestibile. 775 00:34:51,499 --> 00:34:54,900 Ho avuto molti studenti del passato fatto così con successo. 776 00:34:54,900 --> 00:34:57,490 >> E per arrivare verso quella traguardo con successo, 777 00:34:57,490 --> 00:35:00,260 fa il corso ha sections-- diverse tracce per gli studenti 778 00:35:00,260 --> 00:35:03,100 meno comodo, più confortevole, e da qualche parte in mezzo, 779 00:35:03,100 --> 00:35:04,850 per cui nel corso del primo set problema, 780 00:35:04,850 --> 00:35:06,360 ti verrà chiesto di descrivere se stessi. 781 00:35:06,360 --> 00:35:09,151 E se siete tra quelli meno confortevole, è il genere di cose 782 00:35:09,151 --> 00:35:10,420 che hai appena piuttosto sapere. 783 00:35:10,420 --> 00:35:13,010 E in effetti, questo è stato il crescita demografica in CS50 784 00:35:13,010 --> 00:35:14,090 per parecchi anni. 785 00:35:14,090 --> 00:35:17,680 >> Come lo scorso autunno per esempio, 58% della categoria 786 00:35:17,680 --> 00:35:20,560 si è definito come tra quelli meno confortevole, 787 00:35:20,560 --> 00:35:23,210 con il 9% tra quelli di più comodo, e poi 788 00:35:23,210 --> 00:35:25,900 gli altri studenti lì a rosso descrivere se stessi 789 00:35:25,900 --> 00:35:27,890 come una via di mezzo. 790 00:35:27,890 --> 00:35:31,980 E vedrete qui gli argomenti complessiva e lo schema di sezioni, tutte 791 00:35:31,980 --> 00:35:34,820 sono offerti in prima persona, in in tempo reale, con il corso di 792 00:35:34,820 --> 00:35:38,320 sorprendente il personale di compagni di insegnamento e gli assistenti dei corsi, alcuni dei quali 793 00:35:38,320 --> 00:35:39,660 si incontra in un attimo. 794 00:35:39,660 --> 00:35:42,993 >> stessi sezioni, come si vedrà, sarà essere lunedì e il martedì e il mercoledì, 795 00:35:42,993 --> 00:35:45,910 in modo da consentire di immergersi in dopo coinvolgente, se lo 796 00:35:45,910 --> 00:35:48,110 scegliere, nel corso del lezione in precedenza che settimana. 797 00:35:48,110 --> 00:35:51,420 E poi l'orario di ufficio, che Certamente, con il passare degli anni, 798 00:35:51,420 --> 00:35:54,110 sono stati non meno di un lottare per il corso. 799 00:35:54,110 --> 00:35:57,040 E quest'anno, non siamo in programma solo dalla carica hours-- uno 800 00:35:57,040 --> 00:36:00,300 su una opportunità di aiuto per gli studenti il ​​mercoledì giovedì 801 00:36:00,300 --> 00:36:03,790 e la domenica, l'ultimo di questi essendo nel pomeriggio in base alla progettazione 802 00:36:03,790 --> 00:36:06,910 di ridurre alcuni dello stress che invariabilmente si pone con a tarda notte 803 00:36:06,910 --> 00:36:10,180 p-settting con una scadenza looming-- ma l'orario di ufficio sarà anche offerto 804 00:36:10,180 --> 00:36:14,920 il lunedì e il martedì e il Il mercoledì e il venerdì e il sabato, 805 00:36:14,920 --> 00:36:17,080 grazie ai nostri amici di HSA. 806 00:36:17,080 --> 00:36:20,330 >> CS50 ora ha il suo spazio per gli studenti e il personale CS50, 807 00:36:20,330 --> 00:36:23,070 in cima 67 Mount Auburn Street, proprio lì in Harvard Square. 808 00:36:23,070 --> 00:36:26,340 La visione per la quale è che CS50 di TF e CA per tutta la settimana, 809 00:36:26,340 --> 00:36:29,052 più o meno per la maggior parte giorni, sarà lì per il supporto. 810 00:36:29,052 --> 00:36:30,760 Quindi, se hai un po ' domanda su un P-SET 811 00:36:30,760 --> 00:36:33,093 o ti senti un po ' bloccato o un po 'confuso, 812 00:36:33,093 --> 00:36:35,640 e diamine, hai un'ora o mezz'ora tra le classi, 813 00:36:35,640 --> 00:36:38,920 soprattutto nel square-- può voi pop e hanno risposto a questa domanda 814 00:36:38,920 --> 00:36:41,720 di avere quella confusione clarified-- molto nello spirito, 815 00:36:41,720 --> 00:36:45,490 si ha familiarità, della matematica proprio centro di domande di matematica di reparto, 816 00:36:45,490 --> 00:36:49,300 ma praticamente tutto il giorno per [? Gcal?] Che verranno pubblicate on-line. 817 00:36:49,300 --> 00:36:52,400 >> Tutoring è disponibile anche per quelli studenti, liberamente dal corso del 818 00:36:52,400 --> 00:36:54,750 personale proprio se si desidera più intimo uno contro uno, 819 00:36:54,750 --> 00:36:58,940 o solo due o tre compagni di classe, di lavoro con uno dei membri dello staff del corso. 820 00:36:58,940 --> 00:37:02,320 E in effetti, questi qui sono solo alcuni dei membri dello staff del corso, 821 00:37:02,320 --> 00:37:04,120 alcuni dei quali avrete incontrare in un attimo. 822 00:37:04,120 --> 00:37:07,440 In realtà, la propria CS50 insegnamento collega testa, 823 00:37:07,440 --> 00:37:09,790 e naturalmente la testa assistente e maestro, 824 00:37:09,790 --> 00:37:12,998 potrebbe venire su, consentire loro di dire ciao. 825 00:37:12,998 --> 00:37:22,498 >> [APPLAUSI] 826 00:37:22,498 --> 00:37:23,456 SPEAKER 1: [INCOMPRENSIBILE]. 827 00:37:23,456 --> 00:37:51,842 828 00:37:51,842 --> 00:37:57,856 >> [APPLAUSI] 829 00:37:57,856 --> 00:37:58,814 SPEAKER 2: [INCOMPRENSIBILE]. 830 00:37:58,814 --> 00:38:17,240 831 00:38:17,240 --> 00:38:27,238 >> [APPLAUSI] 832 00:38:27,238 --> 00:38:28,196 SPEAKER 3: [INCOMPRENSIBILE]. 833 00:38:28,196 --> 00:38:58,951 834 00:38:58,951 --> 00:39:03,120 >> [APPLAUSI] 835 00:39:03,120 --> 00:39:06,740 >> DAVID MALAN: E ci permette di portare a bordo due dei CS50 di più 836 00:39:06,740 --> 00:39:09,730 personale dirigente, Rob e Zamayla pure. 837 00:39:09,730 --> 00:39:15,120 >> [APPLAUSI] 838 00:39:15,120 --> 00:39:17,226 >> In effetti, sia Rob e Zamayla sono stati con noi 839 00:39:17,226 --> 00:39:19,940 per così tanto tempo, che ho potuto di andare in archivi di CS50 840 00:39:19,940 --> 00:39:22,470 e trovare questo molto SD filmati di loro partecipare 841 00:39:22,470 --> 00:39:25,402 in scena se stessi alcuni anni fa. 842 00:39:25,402 --> 00:39:26,110 ROB: [INCOMPRENSIBILE]. 843 00:39:26,110 --> 00:39:53,660 844 00:39:53,660 --> 00:39:59,247 >> [APPLAUSI] 845 00:39:59,247 --> 00:40:00,080 ZAMAYLA: [INAUDIBLE] 846 00:40:00,080 --> 00:40:50,888 847 00:40:50,888 --> 00:40:52,467 >> [APPLAUSI] 848 00:40:52,467 --> 00:40:53,425 DAVID MALAN: Grazie. 849 00:40:53,425 --> 00:40:56,160 850 00:40:56,160 --> 00:40:58,030 Quindi, in aggiunta a questi i membri del team qui, 851 00:40:58,030 --> 00:41:01,662 CS50 ha un team di quasi 100 membri dello staff, i quali 852 00:41:01,662 --> 00:41:04,370 sarà disponibile per sezioni e l'orario di ufficio e molto altro ancora. 853 00:41:04,370 --> 00:41:06,920 E come dice anche Rob, questo è la revisione più significativa 854 00:41:06,920 --> 00:41:09,534 dei CS50 nei 10 anni che Sono stato in [INCOMPRENSIBILE]. 855 00:41:09,534 --> 00:41:12,200 [INAUDIBLE] concentrato soprattutto nel fornire una struttura di supporto, 856 00:41:12,200 --> 00:41:14,050 rifilatura via un sacco di la massa che è stata 857 00:41:14,050 --> 00:41:16,870 accumulata in 10 anni sviluppi di iterativi 858 00:41:16,870 --> 00:41:18,120 sui set il problema del corso. 859 00:41:18,120 --> 00:41:21,470 >> Così quest'anno, non solo in classe, ma anche nella forma del problema del corso 860 00:41:21,470 --> 00:41:24,800 set, si dovrebbe trovare cose da essere più snella, trimmer, molto 861 00:41:24,800 --> 00:41:26,700 più maneggevole di negli anni passati, come noi 862 00:41:26,700 --> 00:41:31,330 gettare un po 'del bagaglio che è sviluppato dalla natura di anno in evoluzione 863 00:41:31,330 --> 00:41:32,970 dopo anno e iterazione. 864 00:41:32,970 --> 00:41:35,110 Così il nuovo e migliorato inizia oggi. 865 00:41:35,110 --> 00:41:37,860 >> Potrai incontrare un po 'di Lo staff di corso nel [INAUDIBLE] 866 00:41:37,860 --> 00:41:40,186 alle 2:30, dove viene servita, come tradizione, torta. 867 00:41:40,186 --> 00:41:42,060 C'è un po 'di più la torta Oltre a questo, ma vi 868 00:41:42,060 --> 00:41:44,690 si incontrano Erin e Tobias e altri ancora. 869 00:41:44,690 --> 00:41:46,470 E lasciate che vi dia un giro prima di sentire 870 00:41:46,470 --> 00:41:49,600 da alcuni degli altri membri del personale nella classe, di ciò che attende pure. 871 00:41:49,600 --> 00:41:52,730 In realtà, partiamo sempre CS50 di semestre il prossimo Sabato, 872 00:41:52,730 --> 00:41:54,330 con quello che viene chiamato CS50 Puzzle giorno. 873 00:41:54,330 --> 00:41:56,710 >> Non ha nulla a che fare con informatica per sé, 874 00:41:56,710 --> 00:41:58,669 ma con circa problema risolvere più in generale. 875 00:41:58,669 --> 00:42:01,210 E se lo si sceglie di partecipare, per alcuni degli inviti, 876 00:42:01,210 --> 00:42:03,460 si potrebbe avere visto porta caduto o sul palco qui, 877 00:42:03,460 --> 00:42:05,830 si tratta di una opportunità in squadre di due o tre o quattro, 878 00:42:05,830 --> 00:42:10,680 a partecipare per i puzzle e pizza e premi e more-- questo Sabato, 879 00:42:10,680 --> 00:42:12,560 Restate sintonizzati per ulteriori. 880 00:42:12,560 --> 00:42:15,082 >> Troverete anche che ogni Venerdì, a Fire and Ice, 881 00:42:15,082 --> 00:42:16,790 non CS50 portare un intero gruppo di studenti 882 00:42:16,790 --> 00:42:19,100 a pranzo, per fare un grande Classe sentire più intimo, 883 00:42:19,100 --> 00:42:21,820 e in generale riunire ex-alunni e amici provenienti dall'industria 884 00:42:21,820 --> 00:42:24,710 per parlare di quello che hanno fatto da quando la laurea. 885 00:42:24,710 --> 00:42:27,820 Allo stesso modo, quest'anno, saremo inaugurerà il primo CS50 50 886 00:42:27,820 --> 00:42:31,390 codifica contest-- una metà semestre possibilità di permettere a tutti 887 00:42:31,390 --> 00:42:35,430 su un opt in base ad un sfida di ingegni contro compagni di classe, 888 00:42:35,430 --> 00:42:39,250 nuovo in gruppi di due o tre o quattro, utilizzando solo che la programmazione 889 00:42:39,250 --> 00:42:41,920 savvy che poi avete sotto la cintura dopo appena sei o sette 890 00:42:41,920 --> 00:42:44,710 settimane della classe, e la partecipazione in questo tipo di competizione 891 00:42:44,710 --> 00:42:50,261 online-- se vuoi per affinare il proprio abilità tanto più in quella sfida. 892 00:42:50,261 --> 00:42:52,760 Alla fine del semestre è il cosiddetto CS50 Hackathon-- 893 00:42:52,760 --> 00:42:56,970 un'opportunità che inizia alle 7:00 PM termina alle 07:00, e lungo la strada 894 00:42:56,970 --> 00:43:01,900 sono 12 ore serali in cui tuffarsi in project-- finale del corso 895 00:43:01,900 --> 00:43:04,820 l'opportunità di progettare e implementare la maggior parte qualcosa di interessante 896 00:43:04,820 --> 00:43:06,980 a voi con il vostro insegnamento la guida di colleghi. 897 00:43:06,980 --> 00:43:09,600 Intorno 09:00 dobbiamo tipicamente servire la pizza, 01:00, 898 00:43:09,600 --> 00:43:13,210 Philippe, e pochi di noi che sono ancora sveglio alle 5:00 del mattino, 899 00:43:13,210 --> 00:43:16,310 sono shuttle arrivavano giù per la strada per IHOP per la prima colazione. 900 00:43:16,310 --> 00:43:19,340 >> E poi un paio di giorni più tardi è il cosiddetto CS50 fare-- 901 00:43:19,340 --> 00:43:23,450 una mostra di fine semestre, in celebrazione di quanto lontano tanti 902 00:43:23,450 --> 00:43:28,200 di CS50 studenti sono venuti da settimana di zero fino a settimana, 903 00:43:28,200 --> 00:43:32,610 e tenendo presente che il 73% di quelli compagni di classe e il tuo quest'anno hanno 904 00:43:32,610 --> 00:43:34,840 mai preso una classe di CS prima. 905 00:43:34,840 --> 00:43:39,226 Infatti, per sottolineare nuovamente quanto, qui è un paio di facce da parte del personale di CS50. 906 00:43:39,226 --> 00:43:40,184 SPEAKER 4: [INCOMPRENSIBILE]. 907 00:43:40,184 --> 00:43:45,909 908 00:43:45,909 --> 00:43:46,867 SPEAKER 5: [INCOMPRENSIBILE]. 909 00:43:46,867 --> 00:43:51,332 910 00:43:51,332 --> 00:43:52,290 SPEAKER 6: [INCOMPRENSIBILE]. 911 00:43:52,290 --> 00:43:55,276 912 00:43:55,276 --> 00:43:56,234 SPEAKER 7: [INCOMPRENSIBILE]. 913 00:43:56,234 --> 00:44:01,727 914 00:44:01,727 --> 00:44:02,643 SPEAKER 8: [INAUDIBLE] 915 00:44:02,643 --> 00:44:10,066 916 00:44:10,066 --> 00:44:11,024 SPEAKER 9: [INCOMPRENSIBILE]. 917 00:44:11,024 --> 00:44:14,475 918 00:44:14,475 --> 00:44:15,461 >> SPEAKER 4: [INCOMPRENSIBILE]. 919 00:44:15,461 --> 00:44:16,461 >> SPEAKER 10: [INCOMPRENSIBILE]. 920 00:44:16,461 --> 00:44:21,456 921 00:44:21,456 --> 00:44:23,438 SPEAKER 11: [INCOMPRENSIBILE]. 922 00:44:23,438 --> 00:44:24,438 SPEAKER 12: [INCOMPRENSIBILE]. 923 00:44:24,438 --> 00:44:30,438 924 00:44:30,438 --> 00:44:31,396 SPEAKER 13: [INAUDIBLE] 925 00:44:31,396 --> 00:44:37,360 926 00:44:37,360 --> 00:44:40,342 >> SPEAKER 14: [INCOMPRENSIBILE]. 927 00:44:40,342 --> 00:44:42,863 >> SPEAKER 13: [INCOMPRENSIBILE]. 928 00:44:42,863 --> 00:44:43,821 SPEAKER 15: [INAUDIBLE] 929 00:44:43,821 --> 00:44:48,785 930 00:44:48,785 --> 00:44:49,785 SPEAKER 16: [INCOMPRENSIBILE]. 931 00:44:49,785 --> 00:44:53,761 932 00:44:53,761 --> 00:44:55,252 >> SPEAKER 11: [INAUDIBLE] 933 00:44:55,252 --> 00:44:57,773 934 00:44:57,773 --> 00:44:58,731 SPEAKER 5: [INCOMPRENSIBILE]. 935 00:44:58,731 --> 00:45:11,250 936 00:45:11,250 --> 00:45:15,130 DAVID MALAN: alcuni dei team sono essi stessi lo shopping classi. 937 00:45:15,130 --> 00:45:17,760 Ma se quei membri del personale CS50 sono qui, 938 00:45:17,760 --> 00:45:19,230 potrebbe venire in su per un attimo. 939 00:45:19,230 --> 00:45:23,450 di CS50 TF e CAS e [? personale ?] membri qui-- questi sono solo alcuni 940 00:45:23,450 --> 00:45:28,880 del faces-- uno dei quali è sufficiente ha visto, e qualche other-- e pochi altri 941 00:45:28,880 --> 00:45:30,020 ancora. 942 00:45:30,020 --> 00:45:33,242 Perché non andiamo avanti e permettiamo voi ragazzi una pausa di cinque minuti. 943 00:45:33,242 --> 00:45:35,450 Se avete bisogno di anatra fuori per classi negozio, va bene. 944 00:45:35,450 --> 00:45:38,900 E in cinque minuti, ci riprendiamo, dare un'occhiata a Scratch-- primo 945 00:45:38,900 --> 00:45:42,420 del nostro linguaggio di programmazione, si incontrano il personale del corso qui un po 'di più, 946 00:45:42,420 --> 00:45:45,020 e concentrarsi in ultima analisi, il problema set a zero. 947 00:45:45,020 --> 00:45:46,710 Così saremo di nuovo in cinque minuti. 1 00:45:46,864 --> 00:45:47,370 >> Tutto ok. 2 00:45:47,370 --> 00:45:48,590 Quindi siamo indietro. 3 00:45:48,590 --> 00:45:51,330 E nel nostro rimanenti il tempo oggi, l'obiettivo 4 00:45:51,330 --> 00:45:54,320 è quello di livellare il campo di gioco in termini di alcuni termini, 5 00:45:54,320 --> 00:45:55,297 in termini di alcune idee. 6 00:45:55,297 --> 00:45:57,380 Poiché infatti, secondo alcuni grafici precedenti, 7 00:45:57,380 --> 00:46:00,130 ci sta per essere un intervallo di i livelli di esperienza nella classe, 8 00:46:00,130 --> 00:46:03,210 di cui alcuni studenti hanno preso un po 'di programmazione prima, 9 00:46:03,210 --> 00:46:04,200 alcuni dei quali non hanno. 10 00:46:04,200 --> 00:46:07,430 E così con questo primo problema set e con questa prima lingua 11 00:46:07,430 --> 00:46:10,830 Non abbiamo l'opportunità di iniziare dare per scontato dopo oggi 12 00:46:10,830 --> 00:46:12,960 un po 'di vocabolario e un'idea comune. 13 00:46:12,960 --> 00:46:15,590 >> E lo faremo attraverso prima languages-- del corso 14 00:46:15,590 --> 00:46:21,070 oltre a C e Python e JavaScript e SQL e HTML e CSS, 15 00:46:21,070 --> 00:46:24,450 ci concentreremo inizialmente e solo per il problema del punto zero 16 00:46:24,450 --> 00:46:28,160 su questo linguaggio grafico, chiamato Scratch, sviluppato da MIT Media Lab 17 00:46:28,160 --> 00:46:30,880 lungo la strada, per aiutare studenti e bambini soprattutto 18 00:46:30,880 --> 00:46:35,070 esprimersi algorithmically-- in modo più coerente con quello 19 00:46:35,070 --> 00:46:37,300 che potremmo chiamare pensiero computazionale. 20 00:46:37,300 --> 00:46:40,985 >> Ed è un linguaggio utile perché molto rapidamente la prossima settimana in settimana uno, 21 00:46:40,985 --> 00:46:44,360 facciamo la transizione ad una più lingua tradizionale e arcana chiamato 22 00:46:44,360 --> 00:46:46,370 C, che è puramente testuale. 23 00:46:46,370 --> 00:46:48,930 Si usa solo la tastiera in Per scrivere le istruzioni 24 00:46:48,930 --> 00:46:50,230 come questi sullo schermo. 25 00:46:50,230 --> 00:46:52,840 Ma anche se non avete mai visto un linguaggio di programmazione prima, 26 00:46:52,840 --> 00:46:55,170 in un semplice sguardo alla questo, tutto che si tratti criptico, 27 00:46:55,170 --> 00:47:00,010 probabilmente si può intuire che Probabilmente stampa Ciao Mondo. 28 00:47:00,010 --> 00:47:02,050 Ma c'è un sacco di spese generali sintattica lì. 29 00:47:02,050 --> 00:47:05,770 C'è l'hash strano simbolo o hash tag sulla parte superiore. 30 00:47:05,770 --> 00:47:08,900 Ci sono le parentesi angolari, un po ' parentesi, parentesi graffe, semi-colon-- 31 00:47:08,900 --> 00:47:11,880 c'è solo così tanto visiva sintassi che si mette di mezzo. 32 00:47:11,880 --> 00:47:13,940 Si comincia con il corso Scratch in modo da ottenere 33 00:47:13,940 --> 00:47:17,600 passato tutti quelli intellettualmente distrazioni poco interessanti, 34 00:47:17,600 --> 00:47:20,290 e concentrarsi invece sulle idee. 35 00:47:20,290 --> 00:47:22,540 >> In realtà, questo potrebbe essere prima. 36 00:47:22,540 --> 00:47:24,830 Questo, per questo, la settimana sarà dopo. 37 00:47:24,830 --> 00:47:26,760 Questo, in questa grafica lingua Scratch, 38 00:47:26,760 --> 00:47:29,870 è come si potrebbe implementare la stessa program-- un programma che, quando eseguito, 39 00:47:29,870 --> 00:47:31,340 dice semplicemente ciao mondo. 40 00:47:31,340 --> 00:47:34,740 E ciò che è bello di Scratch è che è questa programmazione grafica 41 00:47:34,740 --> 00:47:38,780 ambiente che utilizza pezzi del puzzle o blocchi, che solo interblocco insieme 42 00:47:38,780 --> 00:47:40,440 se ha senso logico per farlo. 43 00:47:40,440 --> 00:47:43,810 E con Scratch si può sviluppare animazioni e giochi interattivi 44 00:47:43,810 --> 00:47:47,270 e l'arte, e qualsiasi numero di cose che si potrebbe immaginare nella vostra mente, 45 00:47:47,270 --> 00:47:51,200 e la loro attuazione, semplicemente trascinando pezzi di un puzzle. 46 00:47:51,200 --> 00:47:54,265 >> E infatti, avremo la possibilità esprimere alcune delle stesse idee 47 00:47:54,265 --> 00:47:56,890 che ho appena citato un attimo fa nel contesto di Mike Smith 48 00:47:56,890 --> 00:48:00,670 e la ricerca di cose un telefono book-- come funzioni, solo le azioni, 49 00:48:00,670 --> 00:48:03,070 cose come i cicli che fanno cose ancora e ancora, 50 00:48:03,070 --> 00:48:05,170 variabili, che è qualcosa che presenteremo, 51 00:48:05,170 --> 00:48:08,086 ma è familiare, forse da algebra-- solo una sorta di segnaposto 52 00:48:08,086 --> 00:48:10,840 per memorizzare un certo valore si potrebbe bisogno di espressioni booleane later--, 53 00:48:10,840 --> 00:48:13,720 dove chi si no o vero falsi domande da prima. 54 00:48:13,720 --> 00:48:17,117 Le condizioni sono tali forcelle nel strada-- quei rami così dire. 55 00:48:17,117 --> 00:48:19,700 E poi ci sono alcuni più operato caratteristiche che vedremo ancora oggi, 56 00:48:19,700 --> 00:48:22,850 chiamati array e fili e eventi, che faremo poi rivisitare oltre 57 00:48:22,850 --> 00:48:24,460 tempo in diverse lingue. 58 00:48:24,460 --> 00:48:26,790 Ma Scratch ci permette di esplorare tutti questi. 59 00:48:26,790 --> 00:48:30,779 Così qui in Scratch, questo viola blocco è quello che una funzione è tipicamente 60 00:48:30,779 --> 00:48:31,570 andare a guardare come. 61 00:48:31,570 --> 00:48:35,620 Questo pezzo di puzzle viola che ha un certo parola come esempio, che è l'azione, 62 00:48:35,620 --> 00:48:38,490 e allora potrebbe avere argomento o un parameter-- qualche modo 63 00:48:38,490 --> 00:48:41,140 di tipo di personalizzazione cosa che fa blocco 64 00:48:41,140 --> 00:48:45,182 in modo che non è pre-determinato MIT che cosa questo blocco viola dice. 65 00:48:45,182 --> 00:48:47,390 In realtà, si vedrà in un momento che sono in grado di digitare 66 00:48:47,390 --> 00:48:49,931 le parole come ciao mondo, o ciao David, o ciao Zamayla, 67 00:48:49,931 --> 00:48:53,750 o quello che voglio, nell'argomento a quel puzzle piece-- la scatola bianca 68 00:48:53,750 --> 00:48:54,251 Là. 69 00:48:54,251 --> 00:48:57,166 Nel frattempo, se voglio un ciclo, faremo vedere che non c'è pezzi di un puzzle che 70 00:48:57,166 --> 00:48:58,640 guardare un po 'arancione come questo. 71 00:48:58,640 --> 00:49:01,690 E loro forma tipo di suggerisce che succede qualcosa di nuovo e di nuovo 72 00:49:01,690 --> 00:49:02,680 in un ciclo. 73 00:49:02,680 --> 00:49:06,800 >> Quindi, se ho avvolgere un blocco dire ciao mondo con una sempre bloccare in Scratch, 74 00:49:06,800 --> 00:49:10,307 è solo andando a continuare a dire ciao mondo per sempre, letteralmente. 75 00:49:10,307 --> 00:49:12,390 Nel frattempo, c'è un altro tipo di ciclo a Scratch 76 00:49:12,390 --> 00:49:14,348 che saremo see-- una ripetizione block-- dove, se si 77 00:49:14,348 --> 00:49:17,940 sapere in anticipo quante volte si desidera che il ciclo di esecuzione 78 00:49:17,940 --> 00:49:21,850 un numero finito di volte in voi fact-- può specificare che digitando un numero 79 00:49:21,850 --> 00:49:25,380 o anche collegare una variabile, come X o Y come vedremo. 80 00:49:25,380 --> 00:49:27,690 >> In effetti, variabili come i in questo caso, che 81 00:49:27,690 --> 00:49:30,109 è un nome comune per un variabile intera che 82 00:49:30,109 --> 00:49:31,900 solo memorizza un number-- un intero potrebbe essere, 83 00:49:31,900 --> 00:49:35,470 Per utilizzare questo blocco arancione qui per impostare una variabile come ho a zero. 84 00:49:35,470 --> 00:49:38,900 Ecco un esempio in verde di un espressione booleana in Scratch. 85 00:49:38,900 --> 00:49:43,700 Anche se questo sembra un matematico formula, le disuguaglianze di matematica come questo 86 00:49:43,700 --> 00:49:45,320 in realtà sono espressioni booleane. 87 00:49:45,320 --> 00:49:46,570 Questo è vero o falso. 88 00:49:46,570 --> 00:49:48,300 Mi è inferiore a 50. 89 00:49:48,300 --> 00:49:51,815 E 'sia un sì o un no o risposta vero o falso. 90 00:49:51,815 --> 00:49:53,940 E noi generalmente chiamiamo quelle espressioni booleane. 91 00:49:53,940 --> 00:49:55,148 E non deve essere 50. 92 00:49:55,148 --> 00:49:57,970 Può essere x inferiore y, maggiore di y, uguale a y-- 93 00:49:57,970 --> 00:50:00,020 qualsiasi numero di altri le domande possono essere poste. 94 00:50:00,020 --> 00:50:03,250 >> Ora, a prima vista, questo potrebbe sembrare improvvisamente abbastanza audace qui, e lo è. 95 00:50:03,250 --> 00:50:06,540 Ma il concetto saggio, è abbastanza familiare da prima. 96 00:50:06,540 --> 00:50:09,370 Se x è minore di y, che dire altrettanto. 97 00:50:09,370 --> 00:50:12,230 Altrimenti se x è maggiore di y, quindi dire altrettanto. 98 00:50:12,230 --> 00:50:14,260 Altrimenti dire x è uguale ay. 99 00:50:14,260 --> 00:50:17,220 Così abbiamo un esempio là di una terza scenario-- 100 00:50:17,220 --> 00:50:20,600 l'unico terzo possibility-- x è o superiore, inferiore o uguale a. 101 00:50:20,600 --> 00:50:22,420 Così abbiamo una forchetta a tre vie in mezzo alla strada. 102 00:50:22,420 --> 00:50:26,290 >> E notare ciò che è cool qui-- Scratch, sembrerebbe, ha solo un puzzle 103 00:50:26,290 --> 00:50:28,840 piece, in questo caso, se blocco else. 104 00:50:28,840 --> 00:50:32,090 Eppure che sembrerebbe implicare si può hanno solo una forchetta bidirezionale nella strada. 105 00:50:32,090 --> 00:50:34,631 Si può andare a destra oa sinistra, ma che dire di quel terzo scenario? 106 00:50:34,631 --> 00:50:35,760 Che cosa succede se x è uguale a Y? 107 00:50:35,760 --> 00:50:36,500 Nessun grosso problema. 108 00:50:36,500 --> 00:50:39,640 Prendete un pezzo di puzzle, mettere un altro suo interno 109 00:50:39,640 --> 00:50:45,759 per creare l'equivalente semantico di se, else if, else-- e ora si 110 00:50:45,759 --> 00:50:47,300 avere la forchetta a tre vie in mezzo alla strada. 111 00:50:47,300 --> 00:50:49,091 E come vedremo, la pezzi del puzzle Scratch 112 00:50:49,091 --> 00:50:51,820 può essere allungato e crescere, così come di stipare più roba in loro. 113 00:50:51,820 --> 00:50:54,420 Non è necessario per adattarsi tutto ciò nella sua dimensione predefinita. 114 00:50:54,420 --> 00:50:56,690 >> Questo è qualcosa faremo presto si chiama un array. 115 00:50:56,690 --> 00:51:00,880 E 'come un list-- un modo di memorizzazione di più pezzi di informazione 116 00:51:00,880 --> 00:51:02,886 in una variabile, non solo un numero. 117 00:51:02,886 --> 00:51:05,760 Questi vedremo un rappresentante una cosa chiamata multi-threading. 118 00:51:05,760 --> 00:51:08,280 In realtà, tutto il vostro Mac e PC in questi giorni 119 00:51:08,280 --> 00:51:10,810 supporto multi-threading, il che significa che si può letteralmente 120 00:51:10,810 --> 00:51:12,390 fare più cose alla volta. 121 00:51:12,390 --> 00:51:15,390 È possibile disporre di Microsoft Word nella primo piano, lavorando su alcuni saggio. 122 00:51:15,390 --> 00:51:17,160 Si potrebbe avere un browser nell'apertura sfondo 123 00:51:17,160 --> 00:51:18,720 G-mail o Facebook o simili. 124 00:51:18,720 --> 00:51:22,730 Il computer può fare più cose oggi, perché è multi-threaded, 125 00:51:22,730 --> 00:51:26,390 ed i programmi sono in in particolare sono anche multi-threaded. 126 00:51:26,390 --> 00:51:28,970 >> Ci sono cose chiamati eventi come bene nel mondo di Scratch, 127 00:51:28,970 --> 00:51:32,640 e poi c'è un modo troppo, per fare i nostri pezzi del puzzle personalizzati, se le cose 128 00:51:32,640 --> 00:51:34,810 in realtà non esistono in anticipo. 129 00:51:34,810 --> 00:51:38,260 Quindi cerchiamo di motivare questo come segue. 130 00:51:38,260 --> 00:51:40,580 Alcuni anni fa, quando ho prima scoperto Scratch, 131 00:51:40,580 --> 00:51:43,530 quando ero in realtà un laureando al MIT, abbiamo 132 00:51:43,530 --> 00:51:45,640 noi avevano il compito di fare i compiti a casa. 133 00:51:45,640 --> 00:51:47,614 E io implemented-- che, in retrospettiva, 134 00:51:47,614 --> 00:51:50,780 è stata una decisione molto povera, perché è la canzone più irritante del mondo 135 00:51:50,780 --> 00:51:53,321 ad ascoltare per otto ore mentre si lavora sul homework-- 136 00:51:53,321 --> 00:51:57,180 ma qualcosa che avevo chiamato Oscar Tempo, che è forse una canzone familiare. 137 00:51:57,180 --> 00:51:59,820 >> CS50s possiedono Jordan Hayashi, uno dei i nostri più membri del personale di alto livello, 138 00:51:59,820 --> 00:52:03,920 ha aggiornato per il 2015 e ora 2016, dal momento che di nuovo nel corso della giornata, 139 00:52:03,920 --> 00:52:06,610 Avevo tutto solo andando in cestino di Oscar. 140 00:52:06,610 --> 00:52:09,320 Ora noi sosteniamo il riciclaggio e il compostaggio. 141 00:52:09,320 --> 00:52:12,050 >> Ma per dipingere il quadro di ciò che possiamo fare qui 142 00:52:12,050 --> 00:52:14,130 e motivare alcune delle esempi di livello inferiore, 143 00:52:14,130 --> 00:52:16,400 potremmo ottenere un altro volontario per venire solo su un massimo 144 00:52:16,400 --> 00:52:18,331 e giocare il mio primo compito a casa mai? 145 00:52:18,331 --> 00:52:18,830 Vieni su. 146 00:52:18,830 --> 00:52:19,250 Come ti chiami? 147 00:52:19,250 --> 00:52:20,030 >> HENRY: Henry. 148 00:52:20,030 --> 00:52:22,660 >> DAVID MALAN: Henry, vieni su. 149 00:52:22,660 --> 00:52:24,190 Vieni su. 150 00:52:24,190 --> 00:52:27,070 Testa in entrambi i casi, e vedrete in un momento, 151 00:52:27,070 --> 00:52:29,870 Ho intenzione di andare avanti e colpire il bandiera verde nella mano in alto a destra 152 00:52:29,870 --> 00:52:31,100 angolo, il che significa andare. 153 00:52:31,100 --> 00:52:33,320 L'icona segno piccola fermata sta per dire basta, 154 00:52:33,320 --> 00:52:35,490 e che quando si inizia a e arrestare il programma. 155 00:52:35,490 --> 00:52:36,450 Piacere di conoscerti. 156 00:52:36,450 --> 00:52:36,950 Tutto ok. 157 00:52:36,950 --> 00:52:39,100 Quindi stiamo andando a vedere le istruzioni sullo schermo in un attimo. 158 00:52:39,100 --> 00:52:41,450 E proprio per questo gioco per pochi secondi-- fiducia in me, 159 00:52:41,450 --> 00:52:43,670 non stiamo andando a voler giocare tutto il modo per la end-- si vuole 160 00:52:43,670 --> 00:52:45,470 avere un'idea di cosa fa il programma. 161 00:52:45,470 --> 00:52:49,170 E più che concentrarsi su Henry essere buono o cattivo a questo gioco, messa a fuoco 162 00:52:49,170 --> 00:52:52,600 e come è stato implementato da me Originariamente e poi da Jordan. 163 00:52:52,600 --> 00:52:54,640 In altre parole, dove sono le variabili? 164 00:52:54,640 --> 00:52:55,520 Dove sono i loop? 165 00:52:55,520 --> 00:52:56,520 Dove sono le funzioni? 166 00:52:56,520 --> 00:53:00,700 E vedremo se non vediamo quelli sotto la cappa. 167 00:53:00,700 --> 00:53:03,660 >> Basta fare clic e trascinare spazzatura al raccoglitore appropriata. 168 00:53:03,660 --> 00:54:02,100 >> [RIPRODUZIONE DI BRANI MUSICALI] 169 00:54:02,100 --> 00:54:02,600 Tutto ok. 170 00:54:02,600 --> 00:54:03,160 Ciò è molto buono. 171 00:54:03,160 --> 00:54:04,286 Perché non ci fermiamo lì. 172 00:54:04,286 --> 00:54:04,786 Grazie. 173 00:54:04,786 --> 00:54:05,830 Congratulazioni a Henry. 174 00:54:05,830 --> 00:54:07,002 Grazie. 175 00:54:07,002 --> 00:54:10,690 >> [APPLAUSI] 176 00:54:10,690 --> 00:54:12,450 >> Provate a immaginare il debug quel programma. 177 00:54:12,450 --> 00:54:15,880 Se c'è un problema a due minuti dall'inizio della song-- ma così 178 00:54:15,880 --> 00:54:17,430 cosa sta succedendo qui davvero? 179 00:54:17,430 --> 00:54:20,900 Così complicato come si potrebbe iniziare a sembrare per ottenere nel corso del tempo, 180 00:54:20,900 --> 00:54:22,910 infatti sempre più roba ha iniziato a cadere, 181 00:54:22,910 --> 00:54:25,370 ciò che è interessante questo tipo di example-- 182 00:54:25,370 --> 00:54:27,270 e vedremo alcuni others-- è che se si 183 00:54:27,270 --> 00:54:30,416 guardare oltre la complessità o la la raffinatezza del gioco, 184 00:54:30,416 --> 00:54:33,040 c'è un edificio molto semplice blocchi che play-- tutte, 185 00:54:33,040 --> 00:54:35,840 se li distillare a quelli blocchi di costruzione, sono molto accessibili 186 00:54:35,840 --> 00:54:37,401 e implementabile a se stessi. 187 00:54:37,401 --> 00:54:39,150 Per esempio, è stato un po 'di tempo, ma sono 188 00:54:39,150 --> 00:54:42,900 abbastanza sicuro di quello che inizialmente fatto quando rendendo questo gioco per la prima volta 189 00:54:42,900 --> 00:54:44,787 ero completamente come procrastinato. 190 00:54:44,787 --> 00:54:47,120 Non mi concentro a tutti sul logica o i pezzi del puzzle, 191 00:54:47,120 --> 00:54:50,810 Mi sono concentrato sulla grafica e scoperta il palo di strada e il cestino 192 00:54:50,810 --> 00:54:51,540 e tutto questo. 193 00:54:51,540 --> 00:54:53,456 Ma quelli erano requisito gli ingredienti in un primo momento. 194 00:54:53,456 --> 00:54:57,220 E una volta che ho finito procrastinare e recante il quadro generale, 195 00:54:57,220 --> 00:55:00,337 Ho deciso, vorrei solo fare una pezzo di caduta spazzatura dal cielo. 196 00:55:00,337 --> 00:55:02,170 E vedremo Scratch sostiene cose chiamate 197 00:55:02,170 --> 00:55:06,386 caratteri che possono sprites-- hanno costumi diversi in modo da 198 00:55:06,386 --> 00:55:07,010 un aspetto diverso. 199 00:55:07,010 --> 00:55:09,660 >> E così ho messo un cestino costume in una di queste sprite. 200 00:55:09,660 --> 00:55:12,007 E ho appena avuto bisogno a cadere dal cielo. 201 00:55:12,007 --> 00:55:14,590 E così si scopre, Scratch, come la maggior parte dei linguaggi di programmazione, 202 00:55:14,590 --> 00:55:18,099 supporta numeri casuali o numeri casuali tecnicamente pseudocodice 203 00:55:18,099 --> 00:55:20,390 cosicché trascinando e far cadere alcuni pezzi del puzzle, 204 00:55:20,390 --> 00:55:22,890 Sono stato in grado di avere il cestino provenire da sinistra a prima. 205 00:55:22,890 --> 00:55:25,580 E allora la prossima volta è caduto, da destra e poi dal mezzo. 206 00:55:25,580 --> 00:55:28,060 E tutto il gioco si era solo hanno spazzatura che cade dal cielo. 207 00:55:28,060 --> 00:55:29,770 Non si poteva puntare a esso o fare clic su di esso. 208 00:55:29,770 --> 00:55:31,103 Non si poteva aprire il cestino. 209 00:55:31,103 --> 00:55:32,160 Non si poteva fare nulla. 210 00:55:32,160 --> 00:55:34,450 Ma è stato un passo bambino verso la mia visione finale. 211 00:55:34,450 --> 00:55:36,720 >> E dopo che, in realtà ho implementato qualche tipo 212 00:55:36,720 --> 00:55:41,230 di rilevamento in modo che se è stata selezionata e trascinare sul pezzo di spazzatura 213 00:55:41,230 --> 00:55:44,350 il cestino, Oscar coperchio sarebbe aprire e chiudere. 214 00:55:44,350 --> 00:55:47,650 Nulla sarebbe accaduto nel cestino, ma almeno il coperchio si apre e si chiude. 215 00:55:47,650 --> 00:55:49,642 Così quindi controllare, passo a due di due. 216 00:55:49,642 --> 00:55:52,100 E questo è ciò che sta per essere chiave sia problema impostato a zero 217 00:55:52,100 --> 00:55:55,970 e in programmazione, più in generale, è di prendere questi piccoli passi molto intenzionali. 218 00:55:55,970 --> 00:55:59,390 Perché non solo si consente di sento onestamente realizzato molto di più 219 00:55:59,390 --> 00:56:01,250 quickly-- è il cosa peggiore del mondo 220 00:56:01,250 --> 00:56:06,149 per cercare di implementare tutti Oscar tempo, poi ore più tardi ha colpito la bandiera verde, 221 00:56:06,149 --> 00:56:08,440 e nulla funziona come previsto perché dove si fa anche 222 00:56:08,440 --> 00:56:11,150 cominciare a debug o per risolvere i problemi che il programma? 223 00:56:11,150 --> 00:56:12,470 E 'solo schiacciante. 224 00:56:12,470 --> 00:56:16,792 >> E così veramente abbracciare questa idea di prendere di nuovo piccoli passi steps-- 225 00:56:16,792 --> 00:56:19,000 e again-- costruzione qualcosa che è, alla fine, 226 00:56:19,000 --> 00:56:23,672 davvero impressionante e complessa, ma in un primo momento, non è quasi tanto così. 227 00:56:23,672 --> 00:56:24,630 In realtà, cerchiamo di fare questo. 228 00:56:24,630 --> 00:56:28,989 Lasciami andare avanti e- Scratch stesso esiste sul web a Scratch.MIT.edu, 229 00:56:28,989 --> 00:56:30,780 e ti verrà detto come molto di nuovo nel problema 230 00:56:30,780 --> 00:56:34,200 set a zero, la specifica per che è già sul sito di CS50. 231 00:56:34,200 --> 00:56:35,725 >> Ma questo è ciò che Scratch è di per sé. 232 00:56:35,725 --> 00:56:38,210 E c'è davvero solo tre aree principali. 233 00:56:38,210 --> 00:56:40,980 In alto a sinistra c'è è la cosiddetta fase. 234 00:56:40,980 --> 00:56:41,810 Si tratta di Scratch. 235 00:56:41,810 --> 00:56:43,710 Il costume di default è un gatto. 236 00:56:43,710 --> 00:56:46,950 E questo è il mondo rettangolare il quale è possibile move-- su, giù, sinistra, 237 00:56:46,950 --> 00:56:48,130 destra e alcune altre cose. 238 00:56:48,130 --> 00:56:51,839 Nel mezzo ecco le nostre categorie o ai nostri pallet di pezzi di un puzzle, 239 00:56:51,839 --> 00:56:53,630 e colori diversi significare cose diverse. 240 00:56:53,630 --> 00:56:56,520 E se si frugare, vedrete cose come i cicli e condizioni 241 00:56:56,520 --> 00:56:58,160 e variabili e altri ingredienti. 242 00:56:58,160 --> 00:57:00,060 >> E poi qui è la zona script. 243 00:57:00,060 --> 00:57:03,020 Questo è dove posso trascinare e rilasciare quei pezzi del puzzle per fare le cose. 244 00:57:03,020 --> 00:57:04,690 Quindi cerchiamo di fare una cosa del genere. 245 00:57:04,690 --> 00:57:06,630 Lasciami andare avanti e- e so dove si trova. 246 00:57:06,630 --> 00:57:10,110 Quindi ho intenzione di cliccare immediatamente sul dove So che le cose sono pronti per essere, 247 00:57:10,110 --> 00:57:13,140 ma puntando e cliccando e rovistando sono inevitabili. 248 00:57:13,140 --> 00:57:15,320 Così, quando la bandiera verde cliccato, cosa voglio fare? 249 00:57:15,320 --> 00:57:17,100 Ho intenzione di fare questo. 250 00:57:17,100 --> 00:57:20,699 Ho intenzione di trascinare questo puzzle viola pezzo, dire ciao per due secondi, 251 00:57:20,699 --> 00:57:21,490 e mi permetta di Zoom avanti. 252 00:57:21,490 --> 00:57:23,865 >> E ho intenzione di cambiare questa per essere quello che voglio essere-- 253 00:57:23,865 --> 00:57:26,471 Ciao mondo per due secondi va bene. 254 00:57:26,471 --> 00:57:28,970 Ora, ho intenzione di fare clic sul bandiera verde, o se voglio davvero, 255 00:57:28,970 --> 00:57:31,820 Posso schermo intero e poi tornare indietro. 256 00:57:31,820 --> 00:57:34,060 Sarà solo continuare tutto in una finestra. 257 00:57:34,060 --> 00:57:36,141 Verde mondo ciao flag--. 258 00:57:36,141 --> 00:57:36,640 Tutto ok. 259 00:57:36,640 --> 00:57:38,789 Non tutto ciò che interessante. 260 00:57:38,789 --> 00:57:40,080 Quindi, mi permetta di andare avanti e fare questo. 261 00:57:40,080 --> 00:57:41,038 Vorrei cercare un altro. 262 00:57:41,038 --> 00:57:44,740 Quando bandiera verde clicked-- facciamo fare qualcosa di simile a un suono. 263 00:57:44,740 --> 00:57:46,880 E notare che fuori la casella libera si ottiene 264 00:57:46,880 --> 00:57:49,910 un suono gatto, così come lo sprite di default. 265 00:57:49,910 --> 00:57:52,380 Così ora lasciami andare avanti e ha colpito la bandiera verde ora. 266 00:57:52,380 --> 00:57:53,224 >> [Miagolando] 267 00:57:53,224 --> 00:57:54,490 >> Aw. 268 00:57:54,490 --> 00:57:55,370 È adorabile. 269 00:57:55,370 --> 00:57:57,040 Sto programmando. 270 00:57:57,040 --> 00:57:58,550 Allora, cosa ho fatto? 271 00:57:58,550 --> 00:58:00,430 Questo è l'equivalente di un programma. 272 00:58:00,430 --> 00:58:01,600 E 'ovviamente super semplice. 273 00:58:01,600 --> 00:58:05,300 Non ha davvero prendere più di tanto sforzo e MIT fatto maggior parte del lavoro, 274 00:58:05,300 --> 00:58:07,890 ma vi ho chiamati una funzione. 275 00:58:07,890 --> 00:58:08,940 Ho usato una funzione. 276 00:58:08,940 --> 00:58:12,480 Ho fatto qualche azione, usando solo che un pezzo di puzzle viola. 277 00:58:12,480 --> 00:58:15,960 >> Beh, se voglio fare tre miagolii di fila? 278 00:58:15,960 --> 00:58:18,570 Mi permetta di andare avanti e fare due e tre. 279 00:58:18,570 --> 00:58:20,910 E notare che quando si librarsi nei pressi di un pezzo di puzzle, 280 00:58:20,910 --> 00:58:22,970 viene visualizzata una piccola linea bianca sorta di magneticamente, 281 00:58:22,970 --> 00:58:25,190 e si aggancerà insieme quando si lascia andare. 282 00:58:25,190 --> 00:58:26,600 Vediamo cosa succede qui. 283 00:58:26,600 --> 00:58:27,920 >> [Miagolando] 284 00:58:27,920 --> 00:58:32,390 285 00:58:32,390 --> 00:58:34,510 >> C'è un bug. 286 00:58:34,510 --> 00:58:35,650 Ho sentito solo un miagolio. 287 00:58:35,650 --> 00:58:37,440 Perché che potrebbe essere? 288 00:58:37,440 --> 00:58:39,001 Sì? 289 00:58:39,001 --> 00:58:39,500 Sì. 290 00:58:39,500 --> 00:58:41,650 Noi in realtà non lo sentiamo, ma questo è un buon intuito. 291 00:58:41,650 --> 00:58:43,400 Sono tutti a giocare allo stesso tempo. 292 00:58:43,400 --> 00:58:44,000 Perché? 293 00:58:44,000 --> 00:58:46,587 Ebbene, il computer è solo andare di fare ciò che si dice di fare. 294 00:58:46,587 --> 00:58:48,670 Quindi, se si dice, il suono del gioco, riprodurre l'audio, riprodurre l'audio, 295 00:58:48,670 --> 00:58:52,887 ma non si dice di giocare fino a quando il gioco è fatto, giocare fino a quando il gioco è fatto, 296 00:58:52,887 --> 00:58:54,970 sta andando a soffiare il programma veramente veloce 297 00:58:54,970 --> 00:58:56,830 e non solo quello che si dice di fare. 298 00:58:56,830 --> 00:58:59,040 >> Così ho davvero bisogno di risolvere il problema questo in un paio di modi. 299 00:58:59,040 --> 00:59:00,623 Ho potuto solo fare questo, sbarazzarsi di questo. 300 00:59:00,623 --> 00:59:04,180 Fammi provare questo Puzzle piece-- riprodurre meow suono fino al fatto, 301 00:59:04,180 --> 00:59:07,072 e quindi trascinare tre questi e fare clic su Play. 302 00:59:07,072 --> 00:59:09,430 >> [Miagolando] 303 00:59:09,430 --> 00:59:13,350 >> Non è proprio very-- grazie you-- molto naturale. 304 00:59:13,350 --> 00:59:16,590 Allora, perché non lasciare che I-- andare a controllare qui. 305 00:59:16,590 --> 00:59:17,090 Bello. 306 00:59:17,090 --> 00:59:22,230 Aspetta un secondo, e ora lasciami andare indietro ai suoni, e il suono del gioco fino al fatto, 307 00:59:22,230 --> 00:59:24,620 e poi mi permetta di ottenere attendere un secondo. 308 00:59:24,620 --> 00:59:28,692 E poi mi permetta di andare a prendere una più sana, e qui andiamo. 309 00:59:28,692 --> 00:59:31,350 >> [Miagolando] 310 00:59:31,350 --> 00:59:35,930 >> Un po 'più naturale, ma questo non è molto efficiente. 311 00:59:35,930 --> 00:59:39,830 Come stavo annoiando, essere tutti in breve, cliccando avanti e indietro 312 00:59:39,830 --> 00:59:42,724 e davvero duplicare il mio work-- praticamente copia e incolla. 313 00:59:42,724 --> 00:59:44,640 Infatti, Se controllo cliccato o destra cliccato, 314 00:59:44,640 --> 00:59:46,500 Avrei potuto semplicemente copiato e incollato. 315 00:59:46,500 --> 00:59:49,870 Quale potrebbe essere una migliore costrutto da usare? 316 00:59:49,870 --> 00:59:51,090 Che idea da prima? 317 00:59:51,090 --> 00:59:51,990 >> Sì, così un ciclo. 318 00:59:51,990 --> 00:59:54,580 E infatti, se ci curiosato, potremmo trovare esattamente questo. 319 00:59:54,580 --> 00:59:57,730 Lasciami andare a Eventi o meglio, di controllo. 320 00:59:57,730 --> 00:59:59,650 Quindi repeat-- non lo faccio voglio che sia 10 volte. 321 00:59:59,650 --> 01:00:01,370 Che sta per ottenere fastidioso rapidamente. 322 01:00:01,370 --> 01:00:03,380 Ma io ripeterò tre volte. 323 01:00:03,380 --> 01:00:06,355 Mi permetta di tornare a suonare e riprodurre il suono fino a quando il gioco è fatto. 324 01:00:06,355 --> 01:00:08,480 Mi permetta di tornare a controllo e aspettare un secondo. 325 01:00:08,480 --> 01:00:10,271 E preavviso, si potrebbe penso che non va bene, 326 01:00:10,271 --> 01:00:13,520 ma ancora una volta, se si lascia che magneticamente scatto in atto, che crescerà a riempire. 327 01:00:13,520 --> 01:00:14,971 Com'è giocare ora? 328 01:00:14,971 --> 01:00:18,500 >> [Miagolando] 329 01:00:18,500 --> 01:00:19,000 OK. 330 01:00:19,000 --> 01:00:19,660 Bello. 331 01:00:19,660 --> 01:00:22,540 E questo è quello che sarebbe stato chiamato un programma che è anche corretto. 332 01:00:22,540 --> 01:00:27,590 Si miagolava tre volte abbastanza naturalmente, ma è meglio progettato. 333 01:00:27,590 --> 01:00:29,580 Sto usando meno la ridondanza. 334 01:00:29,580 --> 01:00:30,970 Io non copiare e incollare qualsiasi cosa. 335 01:00:30,970 --> 01:00:32,470 Ho appena usato una migliore idea. 336 01:00:32,470 --> 01:00:35,340 >> Ora, questo non è ancora tutto quello interessante con Scratch non fare 337 01:00:35,340 --> 01:00:35,930 qualsiasi cosa. 338 01:00:35,930 --> 01:00:37,388 Quindi cerchiamo di fare qualcos'altro. 339 01:00:37,388 --> 01:00:38,670 Facciamo qualcosa per sempre. 340 01:00:38,670 --> 01:00:39,420 E sai una cosa? 341 01:00:39,420 --> 01:00:40,470 Movimento sembra interessante. 342 01:00:40,470 --> 01:00:45,760 Diamo farlo muovere 10 passi e ha colpito il gioco ora. 343 01:00:45,760 --> 01:00:46,570 >> OK. 344 01:00:46,570 --> 01:00:49,300 Bene possiamo tipo di trascinamento indietro, e lui è ancora 345 01:00:49,300 --> 01:00:51,250 esecuzione perché sta facendo questo per sempre. 346 01:00:51,250 --> 01:00:53,150 Così il ciclo sta facendo quello che sta dicendo di fare, 347 01:00:53,150 --> 01:00:54,650 ma questo non è tutto ciò che interessa. 348 01:00:54,650 --> 01:00:55,310 Facciamolo. 349 01:00:55,310 --> 01:00:59,870 Permettetemi di aggiungere un blocco di controllo, e utilizzare una tali condizioni per la prima volta. 350 01:00:59,870 --> 01:01:03,119 >> Così sta andando a muoversi 10 steps-- 10 punti, 10 pixel sul screen-- 351 01:01:03,119 --> 01:01:04,660 poi sta andando a fare questa domanda. 352 01:01:04,660 --> 01:01:09,340 Se qualcosa è vero, allora fare qualcosa dentro questo blocco. 353 01:01:09,340 --> 01:01:13,060 Così si scopre rilevamento ha un intero mucchio di expressions-- booleano 354 01:01:13,060 --> 01:01:16,580 domande del sì no o vero falso form-- mi permetta di fare questo. 355 01:01:16,580 --> 01:01:19,260 >> Se touching-- e poi c'è questo piccolo menu a discesa. 356 01:01:19,260 --> 01:01:20,410 Posso parametrizzato. 357 01:01:20,410 --> 01:01:23,010 Se toccando il edge-- facciamo fare qualcosa di simile. 358 01:01:23,010 --> 01:01:27,310 Quindi, se toccando edge-- mi permetta di tornare a movimento. 359 01:01:27,310 --> 01:01:32,281 E perché non abbiamo solo girarsi di 180 gradi? 360 01:01:32,281 --> 01:01:32,780 Tutto ok. 361 01:01:32,780 --> 01:01:35,070 Così per sempre, spostare 10 passi. 362 01:01:35,070 --> 01:01:37,670 Se stai toccando il bordo, girare di 180 gradi. 363 01:01:37,670 --> 01:01:39,720 E non è la fine del programma perché sei in un sempre bloccare, 364 01:01:39,720 --> 01:01:42,053 quindi è intenzione di andare di nuovo e Ancora e ancora e ancora. 365 01:01:42,053 --> 01:01:43,980 Quindi vediamo cosa succede. 366 01:01:43,980 --> 01:01:44,785 OK. 367 01:01:44,785 --> 01:01:48,270 Un po 'buggy, ma genere di freddo. 368 01:01:48,270 --> 01:01:51,710 >> E possiamo aggiungere a questo alcune cose stupide che non sono tutti che intellettuale 369 01:01:51,710 --> 01:01:52,270 interessante. 370 01:01:52,270 --> 01:01:57,210 Ma se ci ha colpito questo piccolo microfono button-- ouch. 371 01:01:57,210 --> 01:01:58,480 Mi permetta di pulire questo. 372 01:01:58,480 --> 01:02:01,540 Mi permetta di migliorare questo come avrebbero detto in TV. 373 01:02:01,540 --> 01:02:05,400 Pulire che fino, Salva, e ora salire agli script. 374 01:02:05,400 --> 01:02:07,500 >> E ora, lasciami andare a suonare. 375 01:02:07,500 --> 01:02:09,002 Permettetemi di fare un nome. 376 01:02:09,002 --> 01:02:12,440 Chiamerò questo Ouch. 377 01:02:12,440 --> 01:02:13,840 E ora giocare ouch suono. 378 01:02:13,840 --> 01:02:16,520 Si noti che viene visualizzata nella piccolo menu a discesa. 379 01:02:16,520 --> 01:02:17,612 Vediamo. 380 01:02:17,612 --> 01:02:20,444 >> [AHIA] 381 01:02:20,444 --> 01:02:24,377 >> [Ride] 382 01:02:24,377 --> 01:02:25,835 Ma possiamo cambiare t sua al volo. 383 01:02:25,835 --> 01:02:28,106 Possiamo essere due volte più fastidioso. 384 01:02:28,106 --> 01:02:31,760 >> [AHIA] 385 01:02:31,760 --> 01:02:35,332 >> Oppure, se facciamo come 1.000 passi alla tempo-- 386 01:02:35,332 --> 01:02:39,900 387 01:02:39,900 --> 01:02:40,670 >> OK. 388 01:02:40,670 --> 01:02:42,295 Quindi stiamo andando a lasciare che uno solo. 389 01:02:42,295 --> 01:02:45,290 Così ancora una volta, la costruzione I blocks-- iniziare con qualcosa di super semplice, 390 01:02:45,290 --> 01:02:47,930 e poi ho aggiunto una funzione, aggiunto una funzione, ha aggiunto una caratteristica. 391 01:02:47,930 --> 01:02:50,721 E non ho più bisogno di preoccuparsi di come il primo di tali caratteristiche 392 01:02:50,721 --> 01:02:53,690 è stato implementato come continuo per sovrapporre le cose in cima. 393 01:02:53,690 --> 01:02:55,430 Quindi, in realtà, mi permetta di fare un altro qui. 394 01:02:55,430 --> 01:03:00,580 Lasciami andare avanti e aprire un file che Ho portato in anticipo, chiamato pecore. 395 01:03:00,580 --> 01:03:03,970 >> Così ha una leggermente diverso personaggio che assomiglia a questo. 396 01:03:03,970 --> 01:03:07,370 E vediamo se non ci riesco fare qualcosa utilizzando un contatore 397 01:03:07,370 --> 01:03:09,310 in questo case-- una variabile cosiddetto. 398 01:03:09,310 --> 01:03:15,540 Ho intenzione di andare avanti e sotto Events-- mi permetta di ottenere una bandiera verde cliccato. 399 01:03:15,540 --> 01:03:19,030 Poi lasciami andare a Data, che so da solo giocando intorno prima, 400 01:03:19,030 --> 01:03:20,214 è dove le variabili sono. 401 01:03:20,214 --> 01:03:21,880 E ho intenzione di andare avanti e trascinare questo. 402 01:03:21,880 --> 01:03:25,144 >> Quindi una variabile chiamata contatore, e Ho intenzione di inizializzare a zero. 403 01:03:25,144 --> 01:03:27,560 Posso chiamarla anything-- xo y o z-- ma in programmazione, 404 01:03:27,560 --> 01:03:30,410 chiamando qualcosa in un semanticamente modo utile, come contatore, 405 01:03:30,410 --> 01:03:34,540 che descrive quello che è, si tratta di un molto più facile da leggere il codice di seguito. 406 01:03:34,540 --> 01:03:37,460 Mi permetta di andare avanti e ottenere un blocco per sempre qui. 407 01:03:37,460 --> 01:03:41,289 E mi permetta di andare agli sguardi pagina e fare un blocco di Say. 408 01:03:41,289 --> 01:03:44,330 Ma cosa c'è di fresco sulle variabili sono io non c'è bisogno di digitare semplicemente a qualcosa 409 01:03:44,330 --> 01:03:47,850 come ciao mondo, che abbiamo già fatto, posso invece andare a dati 410 01:03:47,850 --> 01:03:50,690 e trascinare la mia variabile, e anche se la forma non abbastanza 411 01:03:50,690 --> 01:03:53,000 guardare come dovrebbe andare bene, che crescerà da riempire. 412 01:03:53,000 --> 01:03:58,396 E mi limiterò a dire il contatore per un spoiler-- secondo-- ha intenzione di contare. 413 01:03:58,396 --> 01:04:00,380 Lo diremo per un secondo. 414 01:04:00,380 --> 01:04:02,840 Poi ho intenzione di andare a lo hanno aspettare per un secondo, 415 01:04:02,840 --> 01:04:04,650 in modo che non conta troppo in fretta. 416 01:04:04,650 --> 01:04:08,430 E poi, infine, cambiare contatore da tra-- in altre parole, 417 01:04:08,430 --> 01:04:13,520 incrementare il contatore di uno valore aggiunto e fare questo per sempre. 418 01:04:13,520 --> 01:04:16,129 >> Così le pecore troppo, come un programmatore, conta da 0. 419 01:04:16,129 --> 01:04:20,350 420 01:04:20,350 --> 01:04:23,740 E se aspettiamo abbastanza a lungo, farà questo per sempre. 421 01:04:23,740 --> 01:04:27,740 Ma non è esattamente vero, perché In realtà, come scopriremo nella prima settimana, 422 01:04:27,740 --> 01:04:31,871 interi e computer più in generale, tecnicamente avere solo un finite-- bene, 423 01:04:31,871 --> 01:04:33,829 piuttosto, quando i computer essi rappresentano numeri interi, 424 01:04:33,829 --> 01:04:35,670 hanno solo un numero finito di bit. 425 01:04:35,670 --> 01:04:37,860 Quelle lampadine lì può contare solo così in alto 426 01:04:37,860 --> 01:04:39,239 prima sei fuori di lampadine. 427 01:04:39,239 --> 01:04:41,590 E un computer troppo, ha solo tanta memoria, 428 01:04:41,590 --> 01:04:44,640 ha solo tanti transistori, quindi può contare così elevato solo. 429 01:04:44,640 --> 01:04:47,409 >> Così si scopre che le pecore, Penso, in grado di contare fino a 2 miliardi 430 01:04:47,409 --> 01:04:48,409 o qualcosa di abbastanza grande. 431 01:04:48,409 --> 01:04:50,325 Quindi non stiamo andando a aspettare che questo accada. 432 01:04:50,325 --> 01:04:54,850 Ma alla fine un po 'di bug accadrà che può avere qualche mondo reale 433 01:04:54,850 --> 01:04:55,970 ramificazioni. 434 01:04:55,970 --> 01:04:58,861 Ma al di là delle pecore, che solo introduce una variabile. 435 01:04:58,861 --> 01:05:01,110 Andiamo avanti e aprono qualcosa che ho fatto in anticipo 436 01:05:01,110 --> 01:05:07,430 qui chiamato Pet il Cat-- Pet il gatto qui. 437 01:05:07,430 --> 01:05:10,420 E notare qui è poco blocchi, ma quando la bandiera verde 438 01:05:10,420 --> 01:05:12,474 cliccato, sempre facendo quanto segue. 439 01:05:12,474 --> 01:05:15,265 Se stai toccando il mouse pointer-- modo che il cursore sullo schermo, 440 01:05:15,265 --> 01:05:18,529 il gioco arrow-- miagolio suono e quindi attendere due secondi. 441 01:05:18,529 --> 01:05:19,570 E proprio fare questo per sempre. 442 01:05:19,570 --> 01:05:22,619 Basta aspettare costantemente per vedere se il pointer-- 443 01:05:22,619 --> 01:05:24,710 se il gatto è a contatto con il puntatore. 444 01:05:24,710 --> 01:05:26,060 >> Così mi ha colpito il gioco. 445 01:05:26,060 --> 01:05:26,920 Niente sta succedendo. 446 01:05:26,920 --> 01:05:28,980 Ma, come ho spostare il cursore sopra il gatto, 447 01:05:28,980 --> 01:05:31,960 >> [Miagolando] 448 01:05:31,960 --> 01:05:34,750 >> E se allontanarlo, non accarezzare il gatto più. 449 01:05:34,750 --> 01:05:38,090 Così alcuni logica condizionale nidificato all'interno di un ciclo. 450 01:05:38,090 --> 01:05:43,070 Che ne dite di questo esempio, deliberatamente Non chiamato Pet il gatto? 451 01:05:43,070 --> 01:05:45,253 Che cosa è questo andando a fare? 452 01:05:45,253 --> 01:05:47,880 >> [Miagolando] 453 01:05:47,880 --> 01:05:50,215 >> Perché si deve non accarezzare il gatto? 454 01:05:50,215 --> 01:05:59,440 >> [Miagolando] 455 01:05:59,440 --> 01:06:00,699 >> OK. 456 01:06:00,699 --> 01:06:03,880 Quindi questo è un esempio di un altro caso. 457 01:06:03,880 --> 01:06:06,482 E 'un punto di decisione e perché è seduto nel ciclo, 458 01:06:06,482 --> 01:06:07,690 sono entrambi sempre controllato. 459 01:06:07,690 --> 01:06:08,280 È vero? 460 01:06:08,280 --> 01:06:08,760 È vero? 461 01:06:08,760 --> 01:06:09,250 È vero? 462 01:06:09,250 --> 01:06:09,791 È vero? 463 01:06:09,791 --> 01:06:11,880 E infine, uno dei coloro sta per applicare 464 01:06:11,880 --> 01:06:16,480 e così si sente sia il miagolio o il ruggito del leone in questo caso. 465 01:06:16,480 --> 01:06:21,400 >> Bene, facciamo un un po 'più di fantasia che ho fatto in anticipo too-- discussioni. 466 01:06:21,400 --> 01:06:25,210 Quindi un filo è solo uno cosa che un computer può fare. 467 01:06:25,210 --> 01:06:29,349 Quindi un programma multi-threaded è un programma che può fare più cose contemporaneamente. 468 01:06:29,349 --> 01:06:31,140 E tutti questi esempi finora hanno avuto 469 01:06:31,140 --> 01:06:35,980 un solo script, per così speak-- un programma come questo qui. 470 01:06:35,980 --> 01:06:38,810 Ma notare questo programma ha due sprite, due caratteri. 471 01:06:38,810 --> 01:06:40,020 Uno è un uccello. 472 01:06:40,020 --> 01:06:40,870 Uno è un gatto. 473 01:06:40,870 --> 01:06:45,080 >> E notare quando clicco su questi giù sinistra, ognuno ha i propri script 474 01:06:45,080 --> 01:06:47,120 o programmi ad essi associati. 475 01:06:47,120 --> 01:06:49,420 E sia di quelli programmi, avviso, avvio 476 01:06:49,420 --> 01:06:52,600 Con Quando la bandiera verde clicked-- diamo un'occhiata al cat-- 477 01:06:52,600 --> 01:06:54,030 quando la bandiera verde cliccato. 478 01:06:54,030 --> 01:06:58,220 E così in effetti, quando ho colpito il gioco ora, due cose stanno per accadere in una sola volta. 479 01:06:58,220 --> 01:07:01,750 Il gatto e l'uccello sono entrambi andando a operare simultaneamente 480 01:07:01,750 --> 01:07:03,815 per creare questo effetto. 481 01:07:03,815 --> 01:07:05,440 E si può immaginare cosa sta succedendo. 482 01:07:05,440 --> 01:07:08,340 C'è un ciclo e l'uccello e il gatto sono in un ciclo. 483 01:07:08,340 --> 01:07:11,270 L'uccello è solo rimbalzando come Ero prima quando ho detto ahi. 484 01:07:11,270 --> 01:07:13,040 Ma il gatto ha chiaramente un vantaggio. 485 01:07:13,040 --> 01:07:16,040 C'è un altro blocco di rilevamento che punta deliberatamente il gatto 486 01:07:16,040 --> 01:07:19,836 l'uccello in questo caso qui. 487 01:07:19,836 --> 01:07:22,960 Così abbiamo potuto prendere in giro a parte, cercando attraverso quei blocchi, cosa sta succedendo. 488 01:07:22,960 --> 01:07:25,460 Ma l'ingrediente chiave qui è uno. 489 01:07:25,460 --> 01:07:28,520 L'uccello, in modo che questo gioco non è completamente boring-- o questo animation-- 490 01:07:28,520 --> 01:07:30,060 inizia ad una direzione casuale. 491 01:07:30,060 --> 01:07:32,890 E il computer è in ripresa un numero compreso tra 90 e 180 492 01:07:32,890 --> 01:07:36,110 in sostanza, in modo che sia leggermente diverso l'animazione ogni volta. 493 01:07:36,110 --> 01:07:39,480 >> E poi notare qui, se il gatto è a contatto con l'uccello, poi 494 01:07:39,480 --> 01:07:42,030 giocare il leone quattro sound-- il rombo. 495 01:07:42,030 --> 01:07:46,330 Ma intanto nel uccello tavolozza, abbiamo questo. 496 01:07:46,330 --> 01:07:49,229 Per sempre, se non toccare il gatto, basta continuare a muoversi tre passaggi. 497 01:07:49,229 --> 01:07:50,770 E poi ecco un altro pezzo del puzzle. 498 01:07:50,770 --> 01:07:52,030 Se siete sul bordo, di rimbalzo. 499 01:07:52,030 --> 01:07:54,840 Così l'uccello è solo tipo di badando il proprio business, 500 01:07:54,840 --> 01:07:57,330 solo che volano intorno e rimbalzare, ed è davvero 501 01:07:57,330 --> 01:08:01,780 il gatto che ha avuto la logica condizionale per determinare se avesse catturato l'uccello. 502 01:08:01,780 --> 01:08:02,280 Tutto ok. 503 01:08:02,280 --> 01:08:08,800 Allora, facciamo un altro qui, questo essere chiamato Hi Hi Hi. 504 01:08:08,800 --> 01:08:15,100 E questo qui solo fa questo in un ciclo infinito. 505 01:08:15,100 --> 01:08:18,925 Ma notice-- come possiamo fermare questo programma molto fastidioso? 506 01:08:18,925 --> 01:08:21,600 507 01:08:21,600 --> 01:08:22,640 Ha colpito la barra spaziatrice. 508 01:08:22,640 --> 01:08:27,990 Perché se lo faccio, il program-- mano sinistra 509 01:08:27,990 --> 01:08:31,550 si noti che è costantemente listening-- è lo spazio premere il tasto. 510 01:08:31,550 --> 01:08:34,090 Se la barra spaziatrice premuto, e se sì, che cosa fa? 511 01:08:34,090 --> 01:08:35,980 Lo fa una tecnica molto comune. 512 01:08:35,980 --> 01:08:38,590 Si imposta una variabile uguale a un valore. 513 01:08:38,590 --> 01:08:39,741 Ma alterna quel valore. 514 01:08:39,741 --> 01:08:41,490 [? Così aspetto?] basato sul I shape-- 515 01:08:41,490 --> 01:08:43,160 avere una variabile che ha scritto in anticipo chiamato 516 01:08:43,160 --> 01:08:44,770 Sordina, che dice semplicemente sì o no. 517 01:08:44,770 --> 01:08:45,880 È il suono silenziato o no? 518 01:08:45,880 --> 01:08:46,990 Vero o falso? 519 01:08:46,990 --> 01:08:51,580 E notate, sto dicendo questo-- se sordina è pari a zero, poi cambiare a uno, 520 01:08:51,580 --> 01:08:53,840 altrimenti impostare muto a zero. 521 01:08:53,840 --> 01:08:55,540 Quindi, basta capovolgere il valore da zero a uno. 522 01:08:55,540 --> 01:08:58,320 Avrei potuto done-- cambiarlo da due a tre e 01:57 523 01:08:58,320 --> 01:09:00,162 o quattro a cinque o quattro a sei. 524 01:09:00,162 --> 01:09:01,870 Ma non importa quello che i numeri che uso, 525 01:09:01,870 --> 01:09:04,090 finché io continuo cambiando il contrario. 526 01:09:04,090 --> 01:09:07,290 >> E la maggior parte qualsiasi programmatore sarebbe solo scegliere zero e tra-- falso e vero, 527 01:09:07,290 --> 01:09:09,510 off e on-- per rappresentare questo. 528 01:09:09,510 --> 01:09:10,930 E questo è ancora in esecuzione. 529 01:09:10,930 --> 01:09:12,190 Se mi ha colpito di nuovo la barra spaziatrice 530 01:09:12,190 --> 01:09:13,590 >> [SEAL SUONI] 531 01:09:13,590 --> 01:09:15,440 >> Il programma è ancora in esecuzione. 532 01:09:15,440 --> 01:09:18,400 Perché c'è questo altro script che dice, sempre fare quanto segue. 533 01:09:18,400 --> 01:09:21,390 534 01:09:21,390 --> 01:09:24,770 Se la variabile è uguale sordina zero-- quindi se non siete in MUTE 535 01:09:24,770 --> 01:09:29,609 è il logic-- se è falso o no, quindi riprodurre il suono, 536 01:09:29,609 --> 01:09:30,650 perché non siete disattivato. 537 01:09:30,650 --> 01:09:33,358 Si dovrebbe riprodurre il suono e poi pensare hi hi hi per due secondi 538 01:09:33,358 --> 01:09:35,790 e poi aspettare e farlo Ancora e ancora e ancora. 539 01:09:35,790 --> 01:09:40,760 >> E in questo modo abbiamo un modo per persone a-- per i programmi di interagire. 540 01:09:40,760 --> 01:09:43,120 E non devono essere come datato come gli altri. 541 01:09:43,120 --> 01:09:46,280 In realtà, frugando around-- no pun intended-- 542 01:09:46,280 --> 01:09:49,250 qualcuno ha speso una quantità enorme di tempo su internet attuazione 543 01:09:49,250 --> 01:09:51,580 PokemonGo in Scratch. 544 01:09:51,580 --> 01:09:55,440 Ti geolocates anche in Cambridge o Allston qui. 545 01:09:55,440 --> 01:10:03,120 Quindi, se volete vedere anche ciò che la gente può fare è questo-- menu molto di fantasia. 546 01:10:03,120 --> 01:10:04,780 Clicca qui. 547 01:10:04,780 --> 01:10:07,430 >> Questo mi è con i miei tasti freccia ora. 548 01:10:07,430 --> 01:10:09,446 Ho intenzione di andare dopo questo. 549 01:10:09,446 --> 01:10:09,946 Clic. 550 01:10:09,946 --> 01:10:12,949 551 01:10:12,949 --> 01:10:14,240 E ora si fa clic sul Pokeball. 552 01:10:14,240 --> 01:10:17,130 553 01:10:17,130 --> 01:10:20,260 Voglio dire, penso che tu sia dovrebbe fare clic sul Pokeball. 554 01:10:20,260 --> 01:10:20,760 Tutto ok. 555 01:10:20,760 --> 01:10:22,680 Così ho fatto. 556 01:10:22,680 --> 01:10:23,950 Posso andare qui. 557 01:10:23,950 --> 01:10:27,790 E questa persona implementato ancora un po ' Pokeballs oltre qui-- tre Pokeballs. 558 01:10:27,790 --> 01:10:29,950 >> Postiamo un link a questo on-line in modo da poter giocare. 559 01:10:29,950 --> 01:10:32,364 Ma notate c'è solo alcuni elementi di base. 560 01:10:32,364 --> 01:10:33,780 Sembra molto più elaborato, e lo è. 561 01:10:33,780 --> 01:10:35,905 Questo è impressionante e molto altro ancora di quello che sarebbe normalmente 562 01:10:35,905 --> 01:10:37,740 aspetta, certamente per il problema del punto zero. 563 01:10:37,740 --> 01:10:40,809 Non ho idea di quanto tempo questa persona ha speso on-line. 564 01:10:40,809 --> 01:10:41,850 Ma è tutto solo un ciclo. 565 01:10:41,850 --> 01:10:43,180 C'è un gioco suono. 566 01:10:43,180 --> 01:10:44,850 C'è una specie di cappio ascoltando se sono 567 01:10:44,850 --> 01:10:47,558 colpendo la freccia verso l'alto o verso il basso il freccia o la sinistra e la destra, 568 01:10:47,558 --> 01:10:49,834 e poi, in caso affermativo, si sta muovendo è un numero di pixel. 569 01:10:49,834 --> 01:10:51,750 E poi se clicco su un altro sprite, c'è 570 01:10:51,750 --> 01:10:53,390 una sorta di se la condizione là. 571 01:10:53,390 --> 01:10:54,806 Sì, questo sta diventando troppo intenso. 572 01:10:54,806 --> 01:10:56,100 Stiamo andando a fermarsi. 573 01:10:56,100 --> 01:10:57,750 E 'tutte quelle componenti di base. 574 01:10:57,750 --> 01:11:01,530 Non ci sono altri ingredienti altri rispetto a quelli che abbiamo già esaminato. 575 01:11:01,530 --> 01:11:04,670 >> Eppure qui, mi permetta di fare una serie finale di esempi 576 01:11:04,670 --> 01:11:06,960 che dipinge un quadro troppo di che cosa si può fare qui. 577 01:11:06,960 --> 01:11:10,481 Ecco un programma molto semplice che appena fa questo-- tosse, tosse, tosse. 578 01:11:10,481 --> 01:11:12,480 E solo in base abbiamo esaminato finora, 579 01:11:12,480 --> 01:11:14,570 dove è l'ovvio possibilità di miglioramento. 580 01:11:14,570 --> 01:11:15,570 Questo programma è corretto. 581 01:11:15,570 --> 01:11:17,980 Tossisce tre volte, che è quello che intendevo. 582 01:11:17,980 --> 01:11:19,650 Ma è mal implementato. 583 01:11:19,650 --> 01:11:20,600 E 'mal progettato. 584 01:11:20,600 --> 01:11:22,000 Perché? 585 01:11:22,000 --> 01:11:22,500 Sì. 586 01:11:22,500 --> 01:11:23,230 Non è un ciclo. 587 01:11:23,230 --> 01:11:24,610 E non è tanto che non è un ciclo, 588 01:11:24,610 --> 01:11:26,400 è che c'è un sacco di ridondanza. 589 01:11:26,400 --> 01:11:28,830 Ci viene copiato e codice incollato, per così dire. 590 01:11:28,830 --> 01:11:31,830 E la soluzione probabilmente è infatti un ciclo. 591 01:11:31,830 --> 01:11:34,350 Quindi, mi permetta di andare avanti e migliorare su quella. 592 01:11:34,350 --> 01:11:36,250 E ho intenzione di trascinare questi qui. 593 01:11:36,250 --> 01:11:39,986 Mi permetta di andare avanti e ottenere una ripetizione blocco, cambiare questo a tre. 594 01:11:39,986 --> 01:11:41,860 Ho intenzione di buttare via alcuni di questi blocchi. 595 01:11:41,860 --> 01:11:43,150 >> E si noterà che è abbastanza intuitivo. 596 01:11:43,150 --> 01:11:45,691 Si trascina e cose appaiono e scompaiono alla fine. 597 01:11:45,691 --> 01:11:49,170 E posso solo trascinare questo qui, e ora ho una versione più pulita ancora. 598 01:11:49,170 --> 01:11:50,730 Ma sai una cosa? 599 01:11:50,730 --> 01:11:52,940 C'è questa opportunità ora abstraction-- 600 01:11:52,940 --> 01:11:56,350 per iniziare a definire un nuovo vocabolario che il MIT non anticipare. 601 01:11:56,350 --> 01:11:59,110 C'è aspettare e ripetere e per sempre e se, 602 01:11:59,110 --> 01:12:02,590 ma cosa succede se voglio introdurre la parola tosse come blocco? 603 01:12:02,590 --> 01:12:06,230 Cosa succede se voglio un pezzo di puzzle il cui scopo nella vita è quello di tosse? 604 01:12:06,230 --> 01:12:10,720 >> Bene, diamo un'occhiata a questa versione qui, che ho fatto come segue. 605 01:12:10,720 --> 01:12:13,579 Magicamente, ho creato questo pezzo di puzzle qui, 606 01:12:13,579 --> 01:12:14,870 che Scratch ti permette di fare. 607 01:12:14,870 --> 01:12:16,787 E in effetti C e Python e JavaScript sono 608 01:12:16,787 --> 01:12:18,370 andando a consentire di fare questo. 609 01:12:18,370 --> 01:12:21,830 È possibile creare il proprio personalizzato pezzi che si chiama quello che vuoi. 610 01:12:21,830 --> 01:12:24,890 In questo caso, tosse sente come una definizione ragionevole. 611 01:12:24,890 --> 01:12:27,880 E poi con questi pezzi verso il basso qui si può definire che cosa significa. 612 01:12:27,880 --> 01:12:30,290 >> Ho trascinati da questa palette qui-- più 613 01:12:30,290 --> 01:12:33,500 blocks-- questo grande viola blocco, dove ho digitato tosse 614 01:12:33,500 --> 01:12:35,290 come il nome del mio nuovo pezzo di puzzle. 615 01:12:35,290 --> 01:12:39,920 E poi sto dicendo ogni volta che un utente chiama questo nuovo pezzo di puzzle tosse, 616 01:12:39,920 --> 01:12:41,770 fare un dire e un'attesa. 617 01:12:41,770 --> 01:12:46,160 E così qui nel mio blocco di ripetizione, Posso solo tosse tre volte. 618 01:12:46,160 --> 01:12:49,972 >> E direi, soprattutto se ora si nasconde questo dettaglio. 619 01:12:49,972 --> 01:12:51,430 Chi se ne frega di come la tosse è implementato? 620 01:12:51,430 --> 01:12:54,390 Tutto mi interessa come programmatore che posso tossire. 621 01:12:54,390 --> 01:12:56,280 Non mi importa come dice è implementata. 622 01:12:56,280 --> 01:12:58,620 Ho appena attenzione che il gatto può dire qualcosa. 623 01:12:58,620 --> 01:13:02,720 Posso astrarre quel dettaglio e concentrarsi solo su ciò che è sullo schermo qui. 624 01:13:02,720 --> 01:13:04,400 Ma posso prendere questo un ulteriore passo avanti. 625 01:13:04,400 --> 01:13:08,070 >> Si noti che qui, ho attuato il ciclo tre volte. 626 01:13:08,070 --> 01:13:11,560 Ma cosa succede se invece prendo questa versione? 627 01:13:11,560 --> 01:13:14,640 E se invece in questa versione qui, 628 01:13:14,640 --> 01:13:18,730 Mi limito a cambiare il mio pezzo di puzzle di prendere un argomento e l'ingresso a se stessa? 629 01:13:18,730 --> 01:13:21,100 E questo ingresso può essere un numero come tre. 630 01:13:21,100 --> 01:13:24,580 Così ora, se sto scrivendo un programma e voglio che il gatto a tossire, 631 01:13:24,580 --> 01:13:28,270 Posso realmente dire il puzzle piece quante volte a tossire, 632 01:13:28,270 --> 01:13:31,990 perché in fondo qui, un fancier versione di questi pezzi del puzzle personalizzato 633 01:13:31,990 --> 01:13:34,500 Consente che specificare che tosse in realtà prende 634 01:13:34,500 --> 01:13:36,951 un input-- prende un argomento come questo. 635 01:13:36,951 --> 01:13:37,700 E sai una cosa? 636 01:13:37,700 --> 01:13:38,890 Forse mi rendo conto, aspetta un attimo. 637 01:13:38,890 --> 01:13:40,680 La tosse è il stesso-- è fondamentalmente 638 01:13:40,680 --> 01:13:42,120 la stessa idea come starnuti. 639 01:13:42,120 --> 01:13:44,040 E 'solo un diverso parola sullo schermo. 640 01:13:44,040 --> 01:13:46,550 Posso astrarre e l'attuazione 641 01:13:46,550 --> 01:13:48,750 questa versione finale di un tosse, che a prima vista 642 01:13:48,750 --> 01:13:50,660 è molto più complessa cercando. 643 01:13:50,660 --> 01:13:52,140 A meno di notare quello che ho fatto. 644 01:13:52,140 --> 01:13:55,930 Ho ora generalized-- genericized really-- questo pezzo di puzzle 645 01:13:55,930 --> 01:13:59,900 di essere chiamato dire parola n volte. 646 01:13:59,900 --> 01:14:04,410 >> E ora ho due nuovi pezzi del puzzle qui definire tosse n volte. 647 01:14:04,410 --> 01:14:06,790 E che cosa fa la funzione di tosse fare? 648 01:14:06,790 --> 01:14:08,420 Che cosa significa il mio pezzo di puzzle personalizzati fare? 649 01:14:08,420 --> 01:14:11,996 Si chiama semplicemente il blocco per dire, passando la parola che voglio dire, 650 01:14:11,996 --> 01:14:13,870 passando il numero di volte che voglio dire. 651 01:14:13,870 --> 01:14:18,210 Perché ora posso realizzare starnuto semplicemente dicendo achoo, 652 01:14:18,210 --> 01:14:20,320 in questo caso, un numero di volte. 653 01:14:20,320 --> 01:14:22,360 >> E così sto stratificazione e stratificazione. 654 01:14:22,360 --> 01:14:25,690 E ancora una volta, la chiave qui non è come ho implementato, ma il fatto 655 01:14:25,690 --> 01:14:28,070 che se ho appena letteralmente spostarli fuori dallo schermo, 656 01:14:28,070 --> 01:14:31,280 guarda come se non semplice piuttosto il mio programma ora sembra. 657 01:14:31,280 --> 01:14:33,930 Perché si fa quello che dice, ho astratte 658 01:14:33,930 --> 01:14:37,640 via ciò che è dentro quella scatola nera. capita di essere una scatola viola qui, 659 01:14:37,640 --> 01:14:41,430 ma ho ostruito via quello che c'è dentro perché non mi interessa come funziona. 660 01:14:41,430 --> 01:14:43,650 Ho appena importa, ora che funziona. 661 01:14:43,650 --> 01:14:46,375 >> E infatti, nel problem set a zero, questo è esattamente 662 01:14:46,375 --> 01:14:49,250 il tipo di stratificazione di aggiornamento! hanno l'opportunità di esplorare. 663 01:14:49,250 --> 01:14:53,510 E 'esattamente l'opportunità di applicare le tecniche di problem solving, 664 01:14:53,510 --> 01:14:55,550 a ciò che è probabilmente un ambiente non familiare. 665 01:14:55,550 --> 01:14:57,890 E se non avete programmato prima o programmato prima, 666 01:14:57,890 --> 01:14:59,500 troverete che non c'è un po 'di qualcosa 667 01:14:59,500 --> 01:15:00,874 in questo ambiente per tutti. 668 01:15:00,874 --> 01:15:02,770 E con il problema set uno in una settimana, 669 01:15:02,770 --> 01:15:06,630 saremo la transizione alla messa a fuoco su un linguaggio di alto livello chiamato 670 01:15:06,630 --> 01:15:09,290 C-- o meglio una più bassa linguaggio di livello chiamato 671 01:15:09,290 --> 01:15:11,347 C-- che è ancora più potente, anche se è 672 01:15:11,347 --> 01:15:12,930 un po 'più criptico a prima vista. 673 01:15:12,930 --> 01:15:16,740 >> E vi renderete conto per TL di oggi: DR, che questo problema insieme ha una più breve 674 01:15:16,740 --> 01:15:19,880 finestra di tempo di quelli futuri, semplicemente perché si dovrebbe trovare abbastanza 675 01:15:19,880 --> 01:15:20,420 accessibile. 676 01:15:20,420 --> 01:15:22,211 E non preoccupatevi se si aggiunge la classe in ritardo. 677 01:15:22,211 --> 01:15:23,920 Ci rivolgiamo che tra non molto. 678 01:15:23,920 --> 01:15:28,480 E prima di rinviare per la torta, andiamo finire con un solo sguardo di due minuti 679 01:15:28,480 --> 01:15:30,500 a quello che vi aspetta qui a CS50. 680 01:15:30,500 --> 01:15:40,950 681 01:15:40,950 --> 01:17:20,803 [RIPRODUZIONE DI BRANI MUSICALI] 682 01:17:20,803 --> 01:17:21,302 Tutto ok. 683 01:17:21,302 --> 01:17:22,690 Questo è tutto per CS50. 684 01:17:22,690 --> 01:17:23,650 Ci vediamo presto. 685 01:17:23,650 --> 01:17:25,526 La torta è ora servito. 686 01:17:25,526 --> 01:17:28,998 687 01:17:28,998 --> 01:18:14,267 [RIPRODUZIONE DI BRANI MUSICALI] 688 01:18:14,267 --> 01:18:16,350 SPEAKER 17: Avete sentito di un anno sabbatico, capo? 689 01:18:16,350 --> 01:18:29,490 690 01:18:29,490 --> 01:18:31,920 SPEAKER 18: Forse c'è più sotto il cofano. 691 01:18:31,920 --> 01:18:38,279