1 00:00:00,000 --> 00:00:09,840 2 00:00:09,840 --> 00:00:10,824 >> [VIDEO PLAYBACK] 3 00:00:10,824 --> 00:00:13,284 >> [Bildøra stenge] 4 00:00:13,284 --> 00:00:15,744 >> [Bilmotoren START] 5 00:00:15,744 --> 00:00:19,188 >> [MUSIC SPILLE] 6 00:00:19,188 --> 00:00:20,172 7 00:00:20,172 --> 00:00:24,516 >> -Moving Rett sammen i søke av gode tider og gode nyheter. 8 00:00:24,516 --> 00:00:26,871 Med gode venner kan du ikke tape. 9 00:00:26,871 --> 00:00:28,755 >> -Dette Kan bli en vane. 10 00:00:28,755 --> 00:00:32,460 >> -Opportunity Slag La oss bare komme ut og hente den. 11 00:00:32,460 --> 00:00:32,960 -Ja! 12 00:00:32,960 --> 00:00:34,920 -Sammen vi skal fakke den. 13 00:00:34,920 --> 00:00:37,370 -Vi Haike, buss, eller gul cab det. 14 00:00:37,370 --> 00:00:38,840 -Dammit. 15 00:00:38,840 --> 00:00:40,800 -Vi Flytte rett sammen. 16 00:00:40,800 --> 00:00:43,750 -Footloose Og fancy gratis. 17 00:00:43,750 --> 00:00:45,960 -Komme Det er halve moroa. 18 00:00:45,960 --> 00:00:47,718 Kom dele det med meg. 19 00:00:47,718 --> 00:00:49,654 >> -Vi Flytte rett sammen. 20 00:00:49,654 --> 00:00:52,558 >> -Vi Kommer til å dele lasten. 21 00:00:52,558 --> 00:00:57,604 >> -Vi Trenger ikke et kart til få dette showet på veien. 22 00:00:57,604 --> 00:01:00,520 -Hei Fozzy, jeg vil du skal ta til venstre Hvis du kommer til et veiskille. 23 00:01:00,520 --> 00:01:01,020 -Ja Sir. 24 00:01:01,020 --> 00:01:03,334 Ta til venstre ved veiskille. 25 00:01:03,334 --> 00:01:05,222 Ta til venstre. 26 00:01:05,222 --> 00:01:07,582 >> -Jeg Tror ikke det. 27 00:01:07,582 --> 00:01:11,720 >> -Cruising Rett sammen fant vi lysene på motorveien. 28 00:01:11,720 --> 00:01:13,664 >> -Og Vei eller min måte. 29 00:01:13,664 --> 00:01:16,154 >> -Så Stole på min navigasjon. 30 00:01:16,154 --> 00:01:21,134 >> -kino Stjerner med prangende biler og livet med toppen og ned. 31 00:01:21,134 --> 00:01:23,126 >> -Vi Storming de store bakkene. 32 00:01:23,126 --> 00:01:24,122 >> -Ja, Er storm rett. 33 00:01:24,122 --> 00:01:25,160 Bør det snør? 34 00:01:25,160 --> 00:01:26,220 >> -Nei, Jeg tror ikke det. 35 00:01:26,220 --> 00:01:28,505 >> -Moving Rett sammen. 36 00:01:28,505 --> 00:01:30,980 >> -Footloose Og fancy gratis. 37 00:01:30,980 --> 00:01:32,960 >> -Du Klar for den store tid. 38 00:01:32,960 --> 00:01:34,445 >> -Er Det klart for meg? 39 00:01:34,445 --> 00:01:38,900 40 00:01:38,900 --> 00:01:42,860 >> -Moving Rett sammen. 41 00:01:42,860 --> 00:01:47,315 Flytte rett sammen. 42 00:01:47,315 --> 00:01:52,265 Flytte rett sammen. 43 00:01:52,265 --> 00:01:56,131 Flytte rett sammen. 44 00:01:56,131 --> 00:01:57,380 -Jeg Tror du bedre trekke over. 45 00:01:57,380 --> 00:01:58,020 -Ja Sir. 46 00:01:58,020 --> 00:02:02,475 47 00:02:02,475 --> 00:02:03,960 >> [END PLAYBACK] 48 00:02:03,960 --> 00:02:07,425 >> [APPLAUSE] 49 00:02:07,425 --> 00:02:09,405 50 00:02:09,405 --> 00:02:11,930 >> DAVID J. MALAN: Dette er CS50. 51 00:02:11,930 --> 00:02:15,940 Og dette er slutten av uke 0, men starten på et vakkert vennskap. 52 00:02:15,940 --> 00:02:18,250 Vi er så glade for å være her ved Yale University 53 00:02:18,250 --> 00:02:21,530 for aller første gang med vår venn Scaz, og Jason, og Andy. 54 00:02:21,530 --> 00:02:24,320 Alle 40 av CS50 TF s og CA er her på Yale. 55 00:02:24,320 --> 00:02:25,440 Og alle dere. 56 00:02:25,440 --> 00:02:28,470 Og faktisk, er det nok på tide to-- 57 00:02:28,470 --> 00:02:31,914 >> [APPLAUSE] 58 00:02:31,914 --> 00:02:43,722 59 00:02:43,722 --> 00:02:47,920 >> Så selv om de fleste av forelesningene vil faktisk være i Cambridge i år, 60 00:02:47,920 --> 00:02:51,250 realiteten er at ved design, og veldig mye bevisst i CS50, 61 00:02:51,250 --> 00:02:54,740 Jeg tror vi nærmer oss punktet teknologisk og pedagogisk, 62 00:02:54,740 --> 00:02:57,930 der det kan være en overordnet pedagogisk erfaring til å engasjere seg med noen 63 00:02:57,930 --> 00:02:59,610 av kursets materiale på nettet. 64 00:02:59,610 --> 00:03:02,862 Faktisk reality-- og hvis jeg tror dette philosophically-- er at forelesningene 65 00:03:02,862 --> 00:03:05,070 er ikke en særlig effektive midler for å levere 66 00:03:05,070 --> 00:03:06,900 ganske kompleks informasjon. 67 00:03:06,900 --> 00:03:09,219 Absolutt over time pluss lange spenn av tid. 68 00:03:09,219 --> 00:03:11,760 Og faktisk hver noen minutes-- Jeg husker meg selv i college-- 69 00:03:11,760 --> 00:03:14,210 du sonen ut et øyeblikk, du savner noen komplisert emne, 70 00:03:14,210 --> 00:03:16,540 og du er borte ganske mye i de neste 45 minutter. 71 00:03:16,540 --> 00:03:19,414 Og realiteten er at om du er her i New Haven eller Cambridge 72 00:03:19,414 --> 00:03:22,930 eller utover, enkelheten av å ha muligheten til å pause og spole fremover, 73 00:03:22,930 --> 00:03:26,270 spole tilbake, hyperlink til relatert ressurser, søk fulltekst transkripsjoner 74 00:03:26,270 --> 00:03:29,900 og lignende, er det en mulighet Jeg tør si for våre online studenter 75 00:03:29,900 --> 00:03:32,530 godt utover New Haven, gir dem en mulighet 76 00:03:32,530 --> 00:03:34,700 å virkelig ta tak i konseptuelle materiale som vi 77 00:03:34,700 --> 00:03:36,700 introdusere i forelesninger alle bedre. 78 00:03:36,700 --> 00:03:39,415 >> Men til syvende og sist i CS50, er studentenes opplevelse 79 00:03:39,415 --> 00:03:43,099 karakteriseres så, så mye mer ved kursets oppgavesett, 80 00:03:43,099 --> 00:03:46,140 eller ukentlig programmering prosjekter, kursets seksjoner ledet av undervisningen 81 00:03:46,140 --> 00:03:49,600 stipendiater, nattlig kontortid ledet av kurs assistenter og undervisning 82 00:03:49,600 --> 00:03:52,330 stipendiater, og faktisk slik hendelser som CS50 Puzzle 83 00:03:52,330 --> 00:03:56,500 Day, CS50 er Hack-a-thon, den CS50 Fair, ukentlige lunsjer, og så mye mer. 84 00:03:56,500 --> 00:03:59,580 Og så om du er her i New Haven, eller tuning i langveis fra, 85 00:03:59,580 --> 00:04:02,270 i dag i Cambridge, og vi ser deg igjen snart, 86 00:04:02,270 --> 00:04:04,580 realiteten er dette er en og samme klasse. 87 00:04:04,580 --> 00:04:07,990 Og vi er så glade for å være her alle sammen i dag. 88 00:04:07,990 --> 00:04:11,110 Og så på slutten av semesteret, enten her eller afar, godt 89 00:04:11,110 --> 00:04:14,910 forhåpentligvis du bærer stolt, lykkelig, og kanskje med litt lettelse, 90 00:04:14,910 --> 00:04:19,459 skjorten som vitner til du har tatt CS50. 91 00:04:19,459 --> 00:04:21,700 >> Så der gjorde vi la ut på onsdag? 92 00:04:21,700 --> 00:04:24,410 Vi tok en titt på beregnings tenkning. 93 00:04:24,410 --> 00:04:27,830 Og det er mot hva vi destillert informatikk til, minst 94 00:04:27,830 --> 00:04:28,800 for nå. 95 00:04:28,800 --> 00:04:31,990 Men vi destillert det litt lenger inn minst tre komponenter elementer. 96 00:04:31,990 --> 00:04:34,570 >> Innganger, så hva er det Problemet vi prøver å løse? 97 00:04:34,570 --> 00:04:36,650 Utganger, hva er svarer vi håper å få? 98 00:04:36,650 --> 00:04:38,210 Og representasjon der av. 99 00:04:38,210 --> 00:04:41,870 Og vi vil ikke dvele her på etter på binære, eller ASCII, 100 00:04:41,870 --> 00:04:44,050 og lignende så mye, men heller ta for gitt 101 00:04:44,050 --> 00:04:47,520 at vi kan representere denne informasjonen, fordi de langt mer interessante delene 102 00:04:47,520 --> 00:04:51,010 av disse problemer er ikke bare innganger og utganger, men algoritmer 103 00:04:51,010 --> 00:04:53,020 som går inn i å løse disse problemene. 104 00:04:53,020 --> 00:04:55,120 >> Og du kanskje husker fra her om dagen at vi 105 00:04:55,120 --> 00:04:59,860 tok en ganske tradisjonell begrepet ser noen opp 106 00:04:59,860 --> 00:05:03,240 i en ganske stor telefonboken, eller mer generelt digitalt i disse dager, 107 00:05:03,240 --> 00:05:04,420 bare et meget stort datasett. 108 00:05:04,420 --> 00:05:07,840 Et virkelig stort kontaktlisten, med massevis av navn alfabetisk sortert. 109 00:05:07,840 --> 00:05:11,310 Og vi innså at mens jeg kunne nærme seg dette problemet ganske enkelt 110 00:05:11,310 --> 00:05:14,520 ved anvendelse av en lineær approach-- side for side, 111 00:05:14,520 --> 00:05:17,775 eller to er på en tid-- vi innså at jo mer intuitive algorithm-- 112 00:05:17,775 --> 00:05:20,840 bare slags dele og erobre problemet igjen, og igjen, 113 00:05:20,840 --> 00:05:24,670 og igjen-- halvere den med hver tid, ga oss denne grønne resultat. 114 00:05:24,670 --> 00:05:27,080 Og det er så mye flatere fordi det antyder 115 00:05:27,080 --> 00:05:29,160 at selv som dette problemet blir større og større, 116 00:05:29,160 --> 00:05:32,470 slik tilfellet er i disse dager med dataene sett og reality-- Facebook og Google 117 00:05:32,470 --> 00:05:34,630 søkeresultatene og like-- gjør vår algoritme 118 00:05:34,630 --> 00:05:37,660 utføre like effektivt med de større biter 119 00:05:37,660 --> 00:05:40,310 som det gjorde selv med mindre biter. 120 00:05:40,310 --> 00:05:45,330 >> Nå ber det spørsmålet, hva kan vi faktisk løse tilsvar 121 00:05:45,330 --> 00:05:46,820 med denne typen intuisjon? 122 00:05:46,820 --> 00:05:48,740 Denne typen divisjon og erobre? 123 00:05:48,740 --> 00:05:51,029 Vel, vi kunne gjøre noe som dette i dag her. 124 00:05:51,029 --> 00:05:52,070 Vi kunne ta frammøte. 125 00:05:52,070 --> 00:05:56,102 Så kanskje som 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11-- 126 00:05:56,102 --> 00:05:57,560 ikke kommer til å være alt som effektiv. 127 00:05:57,560 --> 00:05:58,990 Så vent, grunnskolen. 128 00:05:58,990 --> 00:06:02,770 2, 4, 6, 8, 10, 12, 14, 16, 18 og så videre. 129 00:06:02,770 --> 00:06:04,140 Men kan vi gjøre det litt bedre? 130 00:06:04,140 --> 00:06:06,630 >> Jeg er ganske sikker på at jeg ikke kan gjøre dette alene. 131 00:06:06,630 --> 00:06:09,420 Så hvis du vil humor oss for bare et øyeblikk, vi tok med oss 132 00:06:09,420 --> 00:06:11,640 en algoritme som er bare fikk tre trinn, 133 00:06:11,640 --> 00:06:15,130 men det require-- hvis du ikke mind-- oss alle stå opp, 134 00:06:15,130 --> 00:06:15,690 hvis du ville. 135 00:06:15,690 --> 00:06:23,901 136 00:06:23,901 --> 00:06:29,380 Så, med oss ​​alle nå står, step en av denne algoritmen er følgende. 137 00:06:29,380 --> 00:06:31,680 Stå opp og tilordne selv nummer 1. 138 00:06:31,680 --> 00:06:34,180 Så på dette tidspunktet, bokstavelig talt alle i dette rommet 139 00:06:34,180 --> 00:06:38,830 forhåpentligvis tenker på seg selv, imidlertid forkjært, nummer 1. 140 00:06:38,830 --> 00:06:42,020 >> Nå trinn to av denne algoritmen er kommer til å involvere følgende. 141 00:06:42,020 --> 00:06:44,680 Trinn to, koble av med noen stående, 142 00:06:44,680 --> 00:06:47,970 legge dine tall sammen, og vedta summen som din nye tall. 143 00:06:47,970 --> 00:06:53,110 144 00:06:53,110 --> 00:06:55,620 Hurtig tilregnelighet sjekk. 145 00:06:55,620 --> 00:06:58,180 Hvilket nummer er alle tenker på nå? 146 00:06:58,180 --> 00:07:01,930 >> Så to, unntatt kanskje for en, vanskelig, ensom person. 147 00:07:01,930 --> 00:07:04,269 Hvis vi har et oddetall av mennesker i rommet. 148 00:07:04,269 --> 00:07:06,560 Så en person kan fortsatt være nummer 1, er det helt greit. 149 00:07:06,560 --> 00:07:09,440 Men trinn tre her, en dere bør sette seg ned. 150 00:07:09,440 --> 00:07:13,620 Den andre bør gå tilbake til trinn to, og gjentar, hvis du ville. 151 00:07:13,620 --> 00:07:54,430 152 00:07:54,430 --> 00:07:58,240 >> Så hvis fremdeles står, bør du være blant de som skal tilbake til trinn to. 153 00:07:58,240 --> 00:08:13,910 154 00:08:13,910 --> 00:08:14,574 Fortsett. 155 00:08:14,574 --> 00:08:20,790 156 00:08:20,790 --> 00:08:22,130 Noen få mennesker fremdeles står. 157 00:08:22,130 --> 00:08:33,590 158 00:08:33,590 --> 00:08:35,614 >> Så, hvis det fortsatt står, koble opp med noen. 159 00:08:35,614 --> 00:08:53,710 160 00:08:53,710 --> 00:08:55,020 All right, minkende ned. 161 00:08:55,020 --> 00:09:06,394 162 00:09:06,394 --> 00:09:07,560 Noen få mennesker fremdeles står. 163 00:09:07,560 --> 00:09:08,600 Jeg skal hjelpe hvis behovet være. 164 00:09:08,600 --> 00:09:11,855 Husk nøkkelen takeaway her, er hvordan mye raskere er dette enn meg å telle. 165 00:09:11,855 --> 00:09:15,090 166 00:09:15,090 --> 00:09:16,200 >> Så la oss se. 167 00:09:16,200 --> 00:09:16,900 Jeg kan hjelpe til. 168 00:09:16,900 --> 00:09:19,425 Så hva nummeret er du fortsatt tenker på? 169 00:09:19,425 --> 00:09:20,320 >> PUBLIKUM: Jeg er på 44. 170 00:09:20,320 --> 00:09:22,400 >> DAVID J. MALAN: 44, så du gå videre og sette seg ned. 171 00:09:22,400 --> 00:09:23,733 Hvilket nummer er det du tenker på? 172 00:09:23,733 --> 00:09:24,840 PUBLIKUM: 74. 173 00:09:24,840 --> 00:09:27,006 >> DAVID J. MALAN: 74. 174 00:09:27,006 --> 00:09:28,380 All right, gå videre og sette seg ned. 175 00:09:28,380 --> 00:09:30,390 Hvem andre står fortsatt? 176 00:09:30,390 --> 00:09:31,550 86. 177 00:09:31,550 --> 00:09:33,340 Og er noen andre fortsatt står? 178 00:09:33,340 --> 00:09:34,976 >> Hvilket nummer? 179 00:09:34,976 --> 00:09:37,380 Jeg hørte 67. 180 00:09:37,380 --> 00:09:39,370 Og deretter i toppen? 181 00:09:39,370 --> 00:09:40,900 32. 182 00:09:40,900 --> 00:09:44,230 Alle andre som fremdeles står og tenker på et tall? 183 00:09:44,230 --> 00:09:44,730 >> Å, hei. 184 00:09:44,730 --> 00:09:45,230 Unnskyld. 185 00:09:45,230 --> 00:09:48,350 Straks tilbake. 186 00:09:48,350 --> 00:09:49,520 42. 187 00:09:49,520 --> 00:09:51,758 Noen andre? 188 00:09:51,758 --> 00:09:52,610 >> PUBLIKUM: 47. 189 00:09:52,610 --> 00:09:54,930 >> DAVID J. MALAN: 47. 190 00:09:54,930 --> 00:09:57,980 Er det noen andre som fremdeles står som ikke er blitt tellet? 191 00:09:57,980 --> 00:10:06,450 Så det endelige antall mennesker i et rom som har 497 seter er-- som alle 192 00:10:06,450 --> 00:10:10,930 er filled-- er 390. 193 00:10:10,930 --> 00:10:12,230 Så dette er flott. 194 00:10:12,230 --> 00:10:16,435 >> Vi vil snart diskutere begrepet av en feil i et dataprogram. 195 00:10:16,435 --> 00:10:19,660 Men vi vil komme tilbake til det før lenge. 196 00:10:19,660 --> 00:10:22,440 Men i teorien, hvilken kanskje ha skjedd akkurat nå? 197 00:10:22,440 --> 00:10:25,930 Så selv om det var tre store trinn til denne algoritmen, hver av disse 198 00:10:25,930 --> 00:10:27,510 var bare slags en stor operasjon. 199 00:10:27,510 --> 00:10:31,020 Og det var denne syklisitet til det i at hvis du ble fortsatt stående, 200 00:10:31,020 --> 00:10:34,870 du holdt gå fra trinn tre til to, trinn tre til to, trinn tre til to. 201 00:10:34,870 --> 00:10:37,330 >> Men hva holdt skjer på hver iterasjon? 202 00:10:37,330 --> 00:10:39,440 Hver syklus av denne sløyfen? 203 00:10:39,440 --> 00:10:41,940 Hva som skjedde andre steder i rommet? 204 00:10:41,940 --> 00:10:45,170 Ikke bare det samme, men hva skjedde med halvparten av dere? 205 00:10:45,170 --> 00:10:46,170 Sitte ned. 206 00:10:46,170 --> 00:10:49,710 Og så er det i løgn denne innsikten, omtrent som telefonboken eksempel 207 00:10:49,710 --> 00:10:52,050 i at hvis halvparten av dere er sitte ned hver gang, 208 00:10:52,050 --> 00:10:54,560 problemet begynner med kanskje 400 mennesker, 209 00:10:54,560 --> 00:10:57,780 deretter til 200 personer, 100 personer, da 50 mennesker, og så videre. 210 00:10:57,780 --> 00:11:00,660 >> Og så vi spikke ned i teori til bare én person, 211 00:11:00,660 --> 00:11:02,830 tenker på den totale verdien av alle. 212 00:11:02,830 --> 00:11:05,777 Nå virkeligheten, noen sosiale dynamikk, og noen regnefeil 213 00:11:05,777 --> 00:11:07,360 kan bidra til at ultimate bug. 214 00:11:07,360 --> 00:11:10,300 Men i teorien, mens jeg ble fortsatt teller unna, 215 00:11:10,300 --> 00:11:12,860 ta flere dusin trinn, eller hundrevis av trinnene 216 00:11:12,860 --> 00:11:16,240 å telle selv, å telle et rom fullt av 500 eller så folk 217 00:11:16,240 --> 00:11:20,560 burde ha tatt langt færre trinn, fordi du bare kan dele 500 og 1/2 218 00:11:20,560 --> 00:11:21,350 så mange ganger. 219 00:11:21,350 --> 00:11:24,120 Og så akkurat som med telefonen bestille eksempel her om dagen, 220 00:11:24,120 --> 00:11:26,740 vi har noe logaritmisk så å si, 221 00:11:26,740 --> 00:11:28,870 der hvis vi var alle opererer i samklang, 222 00:11:28,870 --> 00:11:32,000 og ignorerer tillegg feil, ville vi 223 00:11:32,000 --> 00:11:34,140 har oppnådd nøyaktig den slags kjøretiden? 224 00:11:34,140 --> 00:11:37,900 >> Nå for å være rettferdig, type jukset, i at jeg leveraged annen ressurs. 225 00:11:37,900 --> 00:11:40,320 Mens det er bare en av meg, Jeg leveraged hundrevis av deg. 226 00:11:40,320 --> 00:11:43,340 Men som kan sies å være en eksempel på parallell prosessering, 227 00:11:43,340 --> 00:11:46,400 eller en tilstand av kunst veldig mye på moten hvor datamaskiner i disse dager har 228 00:11:46,400 --> 00:11:49,830 flere prosessorer, eller mer teknisk, mer flere kjerner, 229 00:11:49,830 --> 00:11:52,550 og kan virkelig gjøre flere ting på en gang, akkurat som deg 230 00:11:52,550 --> 00:11:54,706 alt vi gjør der, parallelt. 231 00:11:54,706 --> 00:11:56,580 Men husker at det vi også gjorde på onsdag 232 00:11:56,580 --> 00:12:02,640 ble prøve å fange denne intuisjon og formalisere det i kode. 233 00:12:02,640 --> 00:12:04,165 Noe som pseudo-kode. 234 00:12:04,165 --> 00:12:07,040 Og faktisk, og jeg håper du vil tilgi, er det som 80 grader her inne. 235 00:12:07,040 --> 00:12:09,420 Så jeg kommer til å ta dette off for bare en liten bit. 236 00:12:09,420 --> 00:12:12,410 Det jeg trodde vi skulle gjøre, er overgangen nå til et program der 237 00:12:12,410 --> 00:12:16,300 vi igjen engasjere publikum, men skrive et program på engelsk 238 00:12:16,300 --> 00:12:19,537 lignende syntaks, som å løse dette problemet her. 239 00:12:19,537 --> 00:12:20,203 [VIDEO PLAYBACK] 240 00:12:20,203 --> 00:12:22,266 -Det Er peanut butter jelly tid. 241 00:12:22,266 --> 00:12:23,890 Peanøttsmør gelé tid. 242 00:12:23,890 --> 00:12:25,620 Peanøttsmør gelé tid. 243 00:12:25,620 --> 00:12:26,320 >> Way ya! 244 00:12:26,320 --> 00:12:26,927 Way ya! 245 00:12:26,927 --> 00:12:27,781 Way ya! 246 00:12:27,781 --> 00:12:28,350 Way ya! 247 00:12:28,350 --> 00:12:29,723 Nå er det du går! 248 00:12:29,723 --> 00:12:30,264 Der du går! 249 00:12:30,264 --> 00:12:30,805 Der du går! 250 00:12:30,805 --> 00:12:31,710 Der du går! 251 00:12:31,710 --> 00:12:33,156 Peanøttsmør gelé! 252 00:12:33,156 --> 00:12:34,602 Peanøttsmør gelé! 253 00:12:34,602 --> 00:12:36,530 >> Peanøttsmør gelé! 254 00:12:36,530 --> 00:12:37,494 Peanøttsmør gelé! 255 00:12:37,494 --> 00:12:38,940 Peanut, peanut butter jelly! 256 00:12:38,940 --> 00:12:39,904 Peanøttsmør gelé! 257 00:12:39,904 --> 00:12:41,840 Peanøttsmør gelé med et balltre. 258 00:12:41,840 --> 00:12:42,423 >> [END PLAYBACK] 259 00:12:42,423 --> 00:12:45,510 DAVID J. MALAN: --that video, men det er litt vanedannende, 260 00:12:45,510 --> 00:12:46,540 hvis ikke en smule irriterende. 261 00:12:46,540 --> 00:12:49,623 Men for å gjøre dette, tenkte jeg hva vi hadde gjøre er å prøve å skrive et program sammen, 262 00:12:49,623 --> 00:12:51,870 for som vi trenger tre frivillige. 263 00:12:51,870 --> 00:12:54,350 Nødt til å være komfortabel på kamera og internett. 264 00:12:54,350 --> 00:12:57,820 Sam, kom opp. 265 00:12:57,820 --> 00:12:59,830 Lilla skjorte, akkurat her, kom opp. 266 00:12:59,830 --> 00:13:03,470 >> Og fra over her, la meg gå litt lenger tilbake. 267 00:13:03,470 --> 00:13:05,280 Crimson og blå skjorter, kom opp. 268 00:13:05,280 --> 00:13:06,980 Perfekt. 269 00:13:06,980 --> 00:13:09,790 Kom igjen nå. 270 00:13:09,790 --> 00:13:12,490 Kom opp, kom opp. 271 00:13:12,490 --> 00:13:13,581 >> Og hva heter du? 272 00:13:13,581 --> 00:13:14,080 Erica. 273 00:13:14,080 --> 00:13:15,289 David, hyggelig å møte deg. 274 00:13:15,289 --> 00:13:16,830 Hvis du ønsker å ta dette setet her. 275 00:13:16,830 --> 00:13:17,900 Dette er Sam. 276 00:13:17,900 --> 00:13:19,690 >> Hva er navnet ditt? 277 00:13:19,690 --> 00:13:20,260 Antonio. 278 00:13:20,260 --> 00:13:21,595 Antonio, hyggelig å møte deg. 279 00:13:21,595 --> 00:13:23,790 Erica og Sam, hvis du hadde liker å ha en plass her. 280 00:13:23,790 --> 00:13:26,700 Hva vi har kommet forberedt med, som disse gutta oppdager, 281 00:13:26,700 --> 00:13:30,580 er ingrediensene som å gjøre en peanut smør og gelé sandwich. 282 00:13:30,580 --> 00:13:33,520 >> Nå kan dette være noe som du tar veldig mye for gitt. 283 00:13:33,520 --> 00:13:35,430 Men vi har gitt hver enkelt av våre tre frivillige 284 00:13:35,430 --> 00:13:40,500 her-- to frivillige og Sam her, en brød hver, en plate, en kniv, 285 00:13:40,500 --> 00:13:43,740 en krukke med gelé eller syltetøy, og en krukke med peanøttsmør. 286 00:13:43,740 --> 00:13:46,190 Og målet for hånden nå kommer til å være for disse tre 287 00:13:46,190 --> 00:13:48,030 for å lage en peanøttsmør og gelé sandwich. 288 00:13:48,030 --> 00:13:51,000 Men hva vi skal gjøre er å forvente den audience-- siden alle dere 289 00:13:51,000 --> 00:13:53,710 sikkert vet hvordan du gjør dette så godt i reality-- 290 00:13:53,710 --> 00:13:56,380 kommer til å gi oss den trinnvise instruksjoner. 291 00:13:56,380 --> 00:13:57,970 Pseudo-kode, hvis du vil. 292 00:13:57,970 --> 00:13:59,922 >> Så jeg skal spille rollen som skriver her. 293 00:13:59,922 --> 00:14:02,880 Og jeg har fått en liten liste over gjøremål, og slik at hver av dere, en om gangen, 294 00:14:02,880 --> 00:14:04,588 roper en potensiell instruksjons, vil jeg 295 00:14:04,588 --> 00:14:06,110 skrive det ned, gjenta det etter behov. 296 00:14:06,110 --> 00:14:09,650 Og så dere kommer til å gjøre en peanut smør og gelé sandwich 297 00:14:09,650 --> 00:14:11,171 bare ved å gjøre det du blir fortalt. 298 00:14:11,171 --> 00:14:12,670 Så tenk på dere selv som datamaskiner. 299 00:14:12,670 --> 00:14:13,740 >> Du kan bare gjøre det du blir fortalt. 300 00:14:13,740 --> 00:14:14,948 Ingen forutsetninger, ingen spørsmål. 301 00:14:14,948 --> 00:14:16,660 Du trenger bare å gjøre det. 302 00:14:16,660 --> 00:14:20,460 Så hvem vil våge den første instruksjon for å lage en PBJ smørbrød? 303 00:14:20,460 --> 00:14:21,460 På balkongen er det. 304 00:14:21,460 --> 00:14:22,801 >> PUBLIKUM: Åpne pose med brød. 305 00:14:22,801 --> 00:14:26,430 >> DAVID J. MALAN: Åpne pose med brød, hvis du vil. 306 00:14:26,430 --> 00:14:34,440 307 00:14:34,440 --> 00:14:35,230 Så la oss se. 308 00:14:35,230 --> 00:14:37,910 La oss iterere, og få litt mer presis. 309 00:14:37,910 --> 00:14:39,040 >> God måte å begynne skjønt. 310 00:14:39,040 --> 00:14:42,340 Trinn to, noen andre. 311 00:14:42,340 --> 00:14:43,590 Nå ingen ønsker å jobbe frivillig. 312 00:14:43,590 --> 00:14:44,616 Trinn to i front. 313 00:14:44,616 --> 00:14:46,532 PUBLIKUM: Åpne det indre pose med brød også. 314 00:14:46,532 --> 00:14:50,600 DAVID J. MALAN: Åpne indre sekk av brød også. 315 00:14:50,600 --> 00:14:51,880 Flott, vi lærer. 316 00:14:51,880 --> 00:14:57,880 317 00:14:57,880 --> 00:14:59,090 Litt mer presis. 318 00:14:59,090 --> 00:15:00,240 La oss få dette arbeidet. 319 00:15:00,240 --> 00:15:01,180 Ja, i grønn skjorte. 320 00:15:01,180 --> 00:15:04,608 >> PUBLIKUM: [uhørbart] 321 00:15:04,608 --> 00:15:05,108 322 00:15:05,108 --> 00:15:09,040 DAVID J. MALAN: brødskiver. 323 00:15:09,040 --> 00:15:11,110 Forsiktig fjerne to skiver brød. 324 00:15:11,110 --> 00:15:20,350 325 00:15:20,350 --> 00:15:21,000 Det er bra. 326 00:15:21,000 --> 00:15:24,300 Trinn fire, noen andre? 327 00:15:24,300 --> 00:15:25,170 Over her, ja? 328 00:15:25,170 --> 00:15:26,130 >> PUBLIKUM: [uhørbart] 329 00:15:26,130 --> 00:15:28,810 >> DAVID J. MALAN: Place brød på plate. 330 00:15:28,810 --> 00:15:33,490 331 00:15:33,490 --> 00:15:35,290 Trinn fem? 332 00:15:35,290 --> 00:15:36,020 Trinn fem, ja? 333 00:15:36,020 --> 00:15:39,440 >> PUBLIKUM: [uhørbart] 334 00:15:39,440 --> 00:15:39,940 335 00:15:39,940 --> 00:15:43,860 DAVID J. MALAN: På toppen of-- oh, hånd. 336 00:15:43,860 --> 00:15:46,967 Plasser hånden på toppen av peanøttsmør. 337 00:15:46,967 --> 00:15:47,800 Er det det jeg hodet? 338 00:15:47,800 --> 00:15:49,160 >> PUBLIKUM: Ja, og skru. 339 00:15:49,160 --> 00:15:51,370 >> DAVID J. MALAN: og-- si det igjen. 340 00:15:51,370 --> 00:15:52,696 >> PUBLIKUM: [uhørbart] 341 00:15:52,696 --> 00:15:57,990 >> DAVID J. MALAN: Og sette lokk ved siden av peanøttsmør. 342 00:15:57,990 --> 00:16:00,370 Lett plassere hånden på toppen av peanøttsmør, 343 00:16:00,370 --> 00:16:03,240 og skru, og legg lokk ved siden av peanøttsmør. 344 00:16:03,240 --> 00:16:14,760 345 00:16:14,760 --> 00:16:16,260 OK, trinn seks. 346 00:16:16,260 --> 00:16:17,520 Trinn seks, noen andre. 347 00:16:17,520 --> 00:16:19,366 Yeah? 348 00:16:19,366 --> 00:16:22,740 >> PUBLIKUM: [uhørbart] 349 00:16:22,740 --> 00:16:29,197 350 00:16:29,197 --> 00:16:30,405 DAVID J. MALAN: Si det igjen. 351 00:16:30,405 --> 00:16:31,946 PUBLIKUM: Gjenta trinn fem igjen. 352 00:16:31,946 --> 00:16:37,380 DAVID J. MALAN: And gjenta trinn fem igjen, 353 00:16:37,380 --> 00:16:39,400 som kommer til å skape litt av et problem 354 00:16:39,400 --> 00:16:42,600 nå hvis vi gjør dette steg for steg. 355 00:16:42,600 --> 00:16:44,640 Så nå går vi tilbake til trinn fem. 356 00:16:44,640 --> 00:16:47,760 Lett plasserer hånden på toppen peanøttsmør og skru 357 00:16:47,760 --> 00:16:50,990 og sette lokk ved siden av peanøttsmør. 358 00:16:50,990 --> 00:16:55,340 Deretter tar du tak i peanøttsmør og gjenta trinn fem igjen. 359 00:16:55,340 --> 00:16:58,410 >> Så vi vil overstyre det uendelig loop, hvis du vil. 360 00:16:58,410 --> 00:17:00,400 Trinn sju, noen andre. 361 00:17:00,400 --> 00:17:02,918 Ja, i ryggen. 362 00:17:02,918 --> 00:17:06,397 >> PUBLIKUM: [uhørbart] 363 00:17:06,397 --> 00:17:16,084 364 00:17:16,084 --> 00:17:17,769 >> DAVID J. MALAN: --På toppen av andre. 365 00:17:17,769 --> 00:17:20,529 >> PUBLIKUM: [uhørbart] 366 00:17:20,529 --> 00:17:23,175 >> DAVID J. MALAN: På Derimot på den andre toppen. 367 00:17:23,175 --> 00:17:28,880 368 00:17:28,880 --> 00:17:30,895 Vil du bare komme opp her? 369 00:17:30,895 --> 00:17:34,750 Hvordan avslutte jeg undervisningen? 370 00:17:34,750 --> 00:17:37,790 Hva er resten av undervisningen? 371 00:17:37,790 --> 00:17:39,140 >> PUBLIKUM: Ignorerer den delen. 372 00:17:39,140 --> 00:17:41,050 >> DAVID J. MALAN: Ignorerer den delen. 373 00:17:41,050 --> 00:17:44,192 374 00:17:44,192 --> 00:17:44,900 La oss starte på nytt. 375 00:17:44,900 --> 00:17:45,400 Trinn syv. 376 00:17:45,400 --> 00:17:48,516 377 00:17:48,516 --> 00:17:51,883 >> PUBLIKUM: [uhørbart] 378 00:17:51,883 --> 00:17:56,090 >> DAVID J. MALAN: Ta tak med opposisjon hand-- dette er bra. 379 00:17:56,090 --> 00:17:58,544 Dette er faktisk bra. 380 00:17:58,544 --> 00:18:01,750 >> PUBLIKUM: [uhørbart] 381 00:18:01,750 --> 00:18:03,975 >> DAVID J. MALAN: Og plast jar-- 382 00:18:03,975 --> 00:18:06,675 >> PUBLIKUM: [uhørbart] 383 00:18:06,675 --> 00:18:08,420 >> DAVID J. MALAN: Og twist-- 384 00:18:08,420 --> 00:18:11,488 >> PUBLIKUM: [uhørbart] 385 00:18:11,488 --> 00:18:13,730 >> DAVID J. MALAN: For to sekunder. 386 00:18:13,730 --> 00:18:15,800 Bare åpne peanøttsmør jar. 387 00:18:15,800 --> 00:18:19,020 388 00:18:19,020 --> 00:18:20,632 Jeg håper du vil tilgi. 389 00:18:20,632 --> 00:18:21,840 Så la oss anta at vi fikk det. 390 00:18:21,840 --> 00:18:23,240 Åpne peanøttsmør jar. 391 00:18:23,240 --> 00:18:27,008 392 00:18:27,008 --> 00:18:32,570 >> [APPLAUSE] 393 00:18:32,570 --> 00:18:34,790 >> DAVID J. MALAN: Trinn åtte, la oss gå. 394 00:18:34,790 --> 00:18:37,510 Trinn åtte, ja, i ryggen. 395 00:18:37,510 --> 00:18:38,470 >> PUBLIKUM: [uhørbart] 396 00:18:38,470 --> 00:18:44,772 397 00:18:44,772 --> 00:18:45,700 >> DAVID J. MALAN: Good. 398 00:18:45,700 --> 00:18:47,040 Trinn ni, ja? 399 00:18:47,040 --> 00:18:48,924 >> PUBLIKUM: [uhørbart] 400 00:18:48,924 --> 00:18:51,567 >> DAVID J. MALAN: --out av peanøttsmør jar. 401 00:18:51,567 --> 00:18:53,830 Og-- og hva? 402 00:18:53,830 --> 00:18:54,729 >> PUBLIKUM: [uhørbart] 403 00:18:54,729 --> 00:18:58,222 >> DAVID J. MALAN: Og sette kniv tilbake i peanøttsmør. 404 00:18:58,222 --> 00:19:11,130 405 00:19:11,130 --> 00:19:12,090 Trinn ti. 406 00:19:12,090 --> 00:19:13,050 Trinn ti. 407 00:19:13,050 --> 00:19:14,970 >> PUBLIKUM: [uhørbart] 408 00:19:14,970 --> 00:19:20,710 >> DAVID J. MALAN: Sett kniven ut, og deretter fjerne forseglingen. 409 00:19:20,710 --> 00:19:23,060 Fin. 410 00:19:23,060 --> 00:19:24,400 Av peanøttsmør. 411 00:19:24,400 --> 00:19:34,490 412 00:19:34,490 --> 00:19:36,406 All right, trinn 11. 413 00:19:36,406 --> 00:19:37,322 >> PUBLIKUM: [uhørbart] 414 00:19:37,322 --> 00:19:42,520 415 00:19:42,520 --> 00:19:48,164 >> DAVID J. MALAN: OK, grå datamaskin følg blå eller rød datamaskin. 416 00:19:48,164 --> 00:19:49,631 Good. 417 00:19:49,631 --> 00:19:53,054 >> [APPLAUSE] 418 00:19:53,054 --> 00:19:55,920 419 00:19:55,920 --> 00:19:57,170 DAVID J. MALAN: Ta med oss ​​hjem. 420 00:19:57,170 --> 00:19:59,570 Par flere trinn. 421 00:19:59,570 --> 00:20:00,250 Hva blir det neste? 422 00:20:00,250 --> 00:20:02,590 Trinn 12. 423 00:20:02,590 --> 00:20:04,161 Trinn 12. 424 00:20:04,161 --> 00:20:05,123 Yeah? 425 00:20:05,123 --> 00:20:14,262 >> PUBLIKUM: Sett en av skiver brød forsiktig på en av hendene. 426 00:20:14,262 --> 00:20:17,550 >> DAVID J. MALAN: En av dine hender. 427 00:20:17,550 --> 00:20:20,760 Og så, trinn 13. 428 00:20:20,760 --> 00:20:21,260 Yeah? 429 00:20:21,260 --> 00:20:22,220 >> PUBLIKUM: [uhørbart] 430 00:20:22,220 --> 00:20:25,580 431 00:20:25,580 --> 00:20:27,150 >> DAVID J. MALAN: --På brødskive. 432 00:20:27,150 --> 00:20:29,950 Good. 433 00:20:29,950 --> 00:20:32,260 Ganske bra. 434 00:20:32,260 --> 00:20:34,990 Trinn 14, ja. 435 00:20:34,990 --> 00:20:38,126 >> PUBLIKUM: Angre trinn 13. 436 00:20:38,126 --> 00:20:39,950 >> DAVID J. MALAN: Angre trinn 13. 437 00:20:39,950 --> 00:20:42,690 438 00:20:42,690 --> 00:20:44,770 La oss gå videre til gelé. 439 00:20:44,770 --> 00:20:47,900 Det er en 100- trinns program, men vi var på trinn 15. 440 00:20:47,900 --> 00:20:49,210 Yeah. 441 00:20:49,210 --> 00:20:50,170 >> PUBLIKUM: [uhørbart] 442 00:20:50,170 --> 00:20:53,050 443 00:20:53,050 --> 00:20:59,570 >> DAVID J. MALAN: 7 til 13 ved hjelp gelé, fordi de gikk så bra. 444 00:20:59,570 --> 00:21:02,530 Gjenta trinn 7 til 13, ved hjelp av gelé. 445 00:21:02,530 --> 00:21:07,940 Så ta tak i nedre halvdel av gelé krukke med en hånd på toppen. 446 00:21:07,940 --> 00:21:11,970 På den annen side av andre toppen, ignorerer den delen, 447 00:21:11,970 --> 00:21:15,430 gripe med motstridende hender, lokket og plastkrukke 448 00:21:15,430 --> 00:21:18,300 på bunnen, og vri i to sekunder. 449 00:21:18,300 --> 00:21:19,940 Deretter åpne gelé jar. 450 00:21:19,940 --> 00:21:23,290 451 00:21:23,290 --> 00:21:26,580 Og til slutt, la oss prøve å gi oss noe spiselig. 452 00:21:26,580 --> 00:21:27,270 Trinn 16. 453 00:21:27,270 --> 00:21:35,820 454 00:21:35,820 --> 00:21:37,130 Så hvorfor ikke vi la den være der. 455 00:21:37,130 --> 00:21:38,879 Tusen takk til våre tre frivillige. 456 00:21:38,879 --> 00:21:41,466 [APPLAUSE] 457 00:21:41,466 --> 00:21:45,920 458 00:21:45,920 --> 00:21:50,300 >> Vi har en liten CS50 stress ball for deg. 459 00:21:50,300 --> 00:21:54,540 Det skulle være en smørbrød men-- så hva 460 00:21:54,540 --> 00:21:57,130 var poenget, utover å ha en litt moro med algoritmen? 461 00:21:57,130 --> 00:22:00,140 Men realiteten er at selv når du programmere en datamaskin, 462 00:22:00,140 --> 00:22:02,050 du må være super presis. 463 00:22:02,050 --> 00:22:04,030 Så komplisert eller skremmende som din egen datamaskin 464 00:22:04,030 --> 00:22:06,670 kan godt være for deg, på minst når noe går galt, 465 00:22:06,670 --> 00:22:10,150 realiteten er det en ganske dum enhet som ble oppfunnet av oss mennesker, 466 00:22:10,150 --> 00:22:13,267 og kan bare gjøre et delsett av det vi do-- noen ganger absolutt faster-- 467 00:22:13,267 --> 00:22:15,100 men det vet ikke hvordan å gjøre antagelser. 468 00:22:15,100 --> 00:22:18,070 Det betyr ikke vet hvordan du skal være på samme bølgelengde som deg. 469 00:22:18,070 --> 00:22:20,280 >> Det vil bare gjøre nettopp hva du forteller det. 470 00:22:20,280 --> 00:22:22,070 Og du vil bli rammet, kanskje, som vi starter 471 00:22:22,070 --> 00:22:24,770 skrive selve koden med første oppgavesett og utover, 472 00:22:24,770 --> 00:22:27,490 hvor enkelt det er å lage en antagelse som et menneske, 473 00:22:27,490 --> 00:22:31,880 og ikke forventer jeg trenger for å håndtere dette tilfelle, eller i det hjørnet fall 474 00:22:31,880 --> 00:22:34,900 så å si, som kan veldig godt oppstå hvis for eksempel Sam hadde den eneste 475 00:22:34,900 --> 00:22:38,711 squeezable glass av gelé, mens alle andre hadde noen glasskrukker som 476 00:22:38,711 --> 00:22:39,210 godt. 477 00:22:39,210 --> 00:22:42,170 Så før vi slår vår hensyn til noen faktiske koden, 478 00:22:42,170 --> 00:22:44,680 tillate meg å introdusere kursets hoder her på Yale. 479 00:22:44,680 --> 00:22:49,058 Våre venner Scaz, Andy, og Jason til å komme opp og si hei. 480 00:22:49,058 --> 00:22:52,544 >> [APPLAUSE] 481 00:22:52,544 --> 00:22:58,022 482 00:22:58,022 --> 00:23:01,060 >> SCAZ: Vi har mistet Jason midlertidig. 483 00:23:01,060 --> 00:23:02,440 Hei igjen, alle sammen. 484 00:23:02,440 --> 00:23:03,610 Mitt navn er Scaz. 485 00:23:03,610 --> 00:23:06,860 Jeg har vært lærer på Yale siden 2001. 486 00:23:06,860 --> 00:23:10,820 Og når jeg ikke lærer, min forskning er i robotikk 487 00:23:10,820 --> 00:23:12,620 og kunstig intelligens. 488 00:23:12,620 --> 00:23:17,700 >> Og kunngjøringen om at jeg har i dag er at å starte i et par uker, 489 00:23:17,700 --> 00:23:22,170 vi kommer til å være å bringe noen supplerende materiale til CS50 å snakke 490 00:23:22,170 --> 00:23:24,510 om intelligence-programvare. 491 00:23:24,510 --> 00:23:28,230 Vi kommer til å snakke om hvordan steder som Netflix og Hulu 492 00:23:28,230 --> 00:23:31,780 kan anbefale filmer kan det være lurt å se på. 493 00:23:31,780 --> 00:23:35,710 Hvor vi skal snakke om hvordan fører mindre biler faktisk fungerer. 494 00:23:35,710 --> 00:23:39,020 Og vi vil være i stand til bakken disse tingene i begrepene 495 00:23:39,020 --> 00:23:41,730 at du lærer i denne klassen i dag. 496 00:23:41,730 --> 00:23:45,410 >> Fordi alle disse tingene er bygget på det samme grunnlaget. 497 00:23:45,410 --> 00:23:47,396 Og det er hva dette serien vil utforske. 498 00:23:47,396 --> 00:23:49,520 Så jeg ser virkelig frem til å se mer av deg 499 00:23:49,520 --> 00:23:53,260 alt, og du kommer til å få til se mer fra oss alle veldig snart. 500 00:23:53,260 --> 00:23:56,500 La meg så introduserer Jason. 501 00:23:56,500 --> 00:23:57,950 >> JASON: Hei alle. 502 00:23:57,950 --> 00:23:59,290 Mitt navn er Jason. 503 00:23:59,290 --> 00:24:03,540 Jeg dessverre gikk til Harvard som en undergrad. 504 00:24:03,540 --> 00:24:07,020 Det kommer til å bli kuttet ut av selve strømmen. 505 00:24:07,020 --> 00:24:09,870 >> Og nå er jeg her som foreleser i datavitenskapsavdelingen. 506 00:24:09,870 --> 00:24:14,825 Og jeg hjelper kjøre kurset med Scaz, David og Andy. 507 00:24:14,825 --> 00:24:17,140 >> ANDY: Hey guys. 508 00:24:17,140 --> 00:24:17,980 Jeg heter Andy. 509 00:24:17,980 --> 00:24:21,992 Jeg er faktisk den eneste Yale student på scenen akkurat nå. 510 00:24:21,992 --> 00:24:25,464 >> [APPLAUSE] 511 00:24:25,464 --> 00:24:29,440 512 00:24:29,440 --> 00:24:31,770 >> Jeg er i Berkeley College, opprinnelig fra Solon, Ohio. 513 00:24:31,770 --> 00:24:35,240 514 00:24:35,240 --> 00:24:37,930 Og jeg var en av de barna hvor, når jeg kom til Yale, 515 00:24:37,930 --> 00:24:42,030 Jeg trodde virkelig at jeg ville aldri nødt til å se på en rekke igjen. 516 00:24:42,030 --> 00:24:46,240 Og så skjønte jeg at du trengte både vitenskap og QR credits å oppgradere. 517 00:24:46,240 --> 00:24:51,340 Og så min freshman våren, tok jeg en klasse, en CS, intro CS klasse her 518 00:24:51,340 --> 00:24:52,230 ved Yale. 519 00:24:52,230 --> 00:24:54,710 Jeg var som, dette er som faktisk ganske kult. 520 00:24:54,710 --> 00:25:01,330 >> Og mens jeg faktisk endte opp med å erklære Som en global samanheng stor, ferdigheter 521 00:25:01,330 --> 00:25:04,910 Jeg lærte i CS og programmering er så gjelder for ethvert felt 522 00:25:04,910 --> 00:25:05,970 du velger å gjøre. 523 00:25:05,970 --> 00:25:09,770 Og de ansatte her ved Yale, vi har vært så hardt på jobben 524 00:25:09,770 --> 00:25:10,800 å forberede dere. 525 00:25:10,800 --> 00:25:13,410 Og vi ser frem til å se alt i seksjon og arbeidstid. 526 00:25:13,410 --> 00:25:14,874 Så ja. 527 00:25:14,874 --> 00:25:18,178 >> [APPLAUSE] 528 00:25:18,178 --> 00:25:19,297 529 00:25:19,297 --> 00:25:20,380 DAVID J. MALAN: Takk. 530 00:25:20,380 --> 00:25:22,940 Så like før timen begynte, vi hadde en mulighet 531 00:25:22,940 --> 00:25:25,660 å gå rundt campus med en mobiltelefon og ta 532 00:25:25,660 --> 00:25:30,530 noen selfies i video form av virkelig min første tur til Yale campus her. 533 00:25:30,530 --> 00:25:35,420 Og så vi tenkte vi skulle dele en grov kutt av akkurat dette som Scaz og Andy 534 00:25:35,420 --> 00:25:37,970 og Jason tok meg rundt campus. 535 00:25:37,970 --> 00:25:43,662 536 00:25:43,662 --> 00:25:44,328 [VIDEO PLAYBACK] 537 00:25:44,328 --> 00:25:47,322 [SIRENS] 538 00:25:47,322 --> 00:25:49,318 -David. 539 00:25:49,318 --> 00:25:50,132 -Velkommen Til Yale. 540 00:25:50,132 --> 00:25:50,840 -Godt å se deg. 541 00:25:50,840 --> 00:25:52,410 -Hyggelig å se deg. 542 00:25:52,410 --> 00:25:53,340 -Kan Vi gå på en tur? 543 00:25:53,340 --> 00:25:56,845 -La Oss gå på en tur. 544 00:25:56,845 --> 00:25:57,523 -Road tur. 545 00:25:57,523 --> 00:25:59,106 -Dette Skiltet har vært der en stund. 546 00:25:59,106 --> 00:26:00,200 -Whah, CS50. 547 00:26:00,200 --> 00:26:02,978 548 00:26:02,978 --> 00:26:05,293 >> -Hurry! 549 00:26:05,293 --> 00:26:08,970 Gå, gå, gå, gå. 550 00:26:08,970 --> 00:26:12,340 Du bør [uhørbart] Harkness Tower. 551 00:26:12,340 --> 00:26:13,850 >> -Og Så vi at et par ganger. 552 00:26:13,850 --> 00:26:16,760 553 00:26:16,760 --> 00:26:20,155 >> [APPLAUSE] 554 00:26:20,155 --> 00:26:21,130 555 00:26:21,130 --> 00:26:22,890 >> -Se Opp for sykkel! 556 00:26:22,890 --> 00:26:24,500 Ahh! 557 00:26:24,500 --> 00:26:25,030 Hei Frank. 558 00:26:25,030 --> 00:26:26,314 >> -Hva skjer folkens? 559 00:26:26,314 --> 00:26:26,855 -Hvordan har du det? 560 00:26:26,855 --> 00:26:28,474 -Godt å se deg. 561 00:26:28,474 --> 00:26:29,390 -Velkommen Til videoen. 562 00:26:29,390 --> 00:26:32,270 Ikke handle for opphisset. 563 00:26:32,270 --> 00:26:34,502 >> -Jeg Elsker Silliman. 564 00:26:34,502 --> 00:26:36,430 Ahh! 565 00:26:36,430 --> 00:26:39,780 >> -Det Har vært ca tre timer siden Jason hadde iskrem og Nutella. 566 00:26:39,780 --> 00:26:43,189 Så vi er nødt til å stoppe tilbake på Silliman for en liten bit. 567 00:26:43,189 --> 00:26:45,137 >> -Det Er ikke engang [uhørbart] ennå, bare det faktum 568 00:26:45,137 --> 00:26:47,270 at de har det her er så utrolig. 569 00:26:47,270 --> 00:26:49,830 Dude, det er Nutella til hvert måltid. 570 00:26:49,830 --> 00:26:51,830 >> -Det Var i fjor også. 571 00:26:51,830 --> 00:26:54,220 >> -Ja. 572 00:26:54,220 --> 00:26:56,440 >> -Fortell mye om Yale så langt. 573 00:26:56,440 --> 00:26:58,485 Men jeg vet nå at TD der borte. 574 00:26:58,485 --> 00:26:59,860 Og det er ansett som off campus. 575 00:26:59,860 --> 00:27:03,659 >> -Her Har vi gotisk arkitektur. 576 00:27:03,659 --> 00:27:04,200 Verdensberømte. 577 00:27:04,200 --> 00:27:06,758 Vi har noen mer gotisk arkitektur. 578 00:27:06,758 --> 00:27:10,614 Og konstruksjon, og mer gotisk arkitektur. 579 00:27:10,614 --> 00:27:11,114 Hei. 580 00:27:11,114 --> 00:27:15,470 Det er der vi har kontortid Tirsdager gjennom torsdager i Galtvort, 581 00:27:15,470 --> 00:27:16,922 som [uhørbart]. 582 00:27:16,922 --> 00:27:20,620 583 00:27:20,620 --> 00:27:21,120 -Greit. 584 00:27:21,120 --> 00:27:22,078 Det er det for turen. 585 00:27:22,078 --> 00:27:24,030 Vi er på Yale University Law School, hvor 586 00:27:24,030 --> 00:27:25,870 dagens forelesning er i ferd med å skje. 587 00:27:25,870 --> 00:27:29,220 La oss dra i. 588 00:27:29,220 --> 00:27:30,375 >> [END PLAYBACK] 589 00:27:30,375 --> 00:27:32,370 >> DAVID J. MALAN: And som bringer oss her nå. 590 00:27:32,370 --> 00:27:38,040 591 00:27:38,040 --> 00:27:40,770 Så så langt, har vi vært fokus på pseudokode, 592 00:27:40,770 --> 00:27:42,430 som er denne engelsk-lignende syntaks. 593 00:27:42,430 --> 00:27:45,030 Det har ingen foreskrevne spesifikasjon. 594 00:27:45,030 --> 00:27:47,030 Det er bare du bruker noen intuitive språket hvis du 595 00:27:47,030 --> 00:27:48,950 ønsker å forklare hva du vil gjøre. 596 00:27:48,950 --> 00:27:52,270 >> Men la oss begynne nå til overgangen å kode, som de fleste ville si. 597 00:27:52,270 --> 00:27:54,880 Men mer presist, noe kjent som kildekoden. 598 00:27:54,880 --> 00:27:58,210 Dette er språket som mennesker skrive at datamaskiner ultimately-- 599 00:27:58,210 --> 00:28:00,780 eventuelt etter et antall steps-- slutt forstår 600 00:28:00,780 --> 00:28:02,530 slik som å vite hvordan du gjør noe. 601 00:28:02,530 --> 00:28:05,120 At du så et glimt av dette er kanskje på onsdag. 602 00:28:05,120 --> 00:28:07,780 >> Dette er et eksempel på at utrolig, uimponerende 603 00:28:07,780 --> 00:28:10,220 når det kjøres bare sier "hello world". 604 00:28:10,220 --> 00:28:13,510 Og det er skrevet på et språk som heter C, noe som er svært lik syntaktisk 605 00:28:13,510 --> 00:28:15,676 til en rekke andre språk som du kanskje ikke vet, 606 00:28:15,676 --> 00:28:18,409 men har kanskje hørt om som Java, og C ++, og Python og Ruby, 607 00:28:18,409 --> 00:28:21,200 og lignende, og ja, vil vi tilbringer mye av semesteret ved hjelp av C, 608 00:28:21,200 --> 00:28:23,530 og så mot slutten av semester, og bygge på det, 609 00:28:23,530 --> 00:28:25,446 og innføre noen rekke andre språk. 610 00:28:25,446 --> 00:28:28,810 Blant dem PHP og Javascript, et databasespråk kalles SQL. 611 00:28:28,810 --> 00:28:31,526 Men med C, hva vi vil ha Dette bottom-up forståelse 612 00:28:31,526 --> 00:28:33,900 av nøyaktig hvordan datamaskiner fungerer, hva du kan gjøre med dem, 613 00:28:33,900 --> 00:28:37,252 og hvordan du kan løse problemer enda mer effektivt ved denne 614 00:28:37,252 --> 00:28:39,460 lagdeling som vi diskuterte på onsdag, og stående 615 00:28:39,460 --> 00:28:40,870 på skuldrene til andre. 616 00:28:40,870 --> 00:28:42,200 Men mer om det som kommer. 617 00:28:42,200 --> 00:28:46,650 >> I dag ser vi på en enklere miljø, men et fundamentalt identisk 618 00:28:46,650 --> 00:28:49,970 miljøet kjent som Scratch av våre venner på MIT Media Lab. 619 00:28:49,970 --> 00:28:52,570 Dette er en grafisk programmeringsspråk, Scratch, 620 00:28:52,570 --> 00:28:54,330 hvor du kan dra og slippe ting som 621 00:28:54,330 --> 00:28:57,430 ser ut som puslespillbrikker som bare sperre hvis det gjør 622 00:28:57,430 --> 00:28:59,872 logisk eller programma fornuftig å gjøre det. 623 00:28:59,872 --> 00:29:02,330 Men det kommer til å tillate oss å ha en samtale om alt 624 00:29:02,330 --> 00:29:04,604 av samme programmerings grunnleggende at noen av dere 625 00:29:04,604 --> 00:29:06,520 kanskje vet allerede, at mange av dere kanskje ikke 626 00:29:06,520 --> 00:29:09,670 vite noe om uten å ha å overbelastes ned ærlig, 627 00:29:09,670 --> 00:29:13,150 i intellektuelt uinteressant syntaks av semikolon, 628 00:29:13,150 --> 00:29:14,950 og parentes, og sitater og lignende. 629 00:29:14,950 --> 00:29:16,910 Alt dette, tidlig videre, er en distraksjon 630 00:29:16,910 --> 00:29:20,322 å hva er interessant og genuint nyttige ideer. 631 00:29:20,322 --> 00:29:22,280 Så la oss ta en rask blikk på miljøet 632 00:29:22,280 --> 00:29:24,180 her, slik at du vet hva som venter. 633 00:29:24,180 --> 00:29:28,060 Og faktisk, blant spillene vi kan spille er noen programmer skrevet 634 00:29:28,060 --> 00:29:30,810 av CS50 egne tidligere studenter. 635 00:29:30,810 --> 00:29:36,200 En av dem, meg selv, vil jeg være denne ene skrevet i gradsstudier for meg. 636 00:29:36,200 --> 00:29:39,030 >> Hvis jeg kunne ta en frivillig som er villig til å spille 637 00:29:39,030 --> 00:29:40,420 et spill for aller første gang. 638 00:29:40,420 --> 00:29:40,920 Sure. 639 00:29:40,920 --> 00:29:41,690 Kom opp. 640 00:29:41,690 --> 00:29:42,565 Hva er navnet ditt? 641 00:29:42,565 --> 00:29:43,372 >> PUBLIKUM: Angela. 642 00:29:43,372 --> 00:29:44,830 DAVID J. MALAN: Angela, kom opp. 643 00:29:44,830 --> 00:29:47,220 Så Scratch har vært ute i et par år. 644 00:29:47,220 --> 00:29:49,960 Og da jeg var student, Jeg var kryss registrert ved MIT, 645 00:29:49,960 --> 00:29:53,392 tar professor Mitchel Resnick s kurs om pedagogisk teknologier. 646 00:29:53,392 --> 00:29:56,350 Og vi var blant de aller første studenter i verden til faktisk beta 647 00:29:56,350 --> 00:29:57,120 test Scratch. 648 00:29:57,120 --> 00:30:00,090 Og prosjektet mitt var hva Angela har nå graciously frivillig 649 00:30:00,090 --> 00:30:02,060 å spille kalt oscartime. 650 00:30:02,060 --> 00:30:04,507 >> Så jeg kommer til å gå videre og dobbeltklikker du på ikonet her. 651 00:30:04,507 --> 00:30:07,590 Det kommer til å åpne opp et programmerings miljø som vi snart dykke inn. 652 00:30:07,590 --> 00:30:09,720 Jeg kommer til fullskjerm det for Angela, her. 653 00:30:09,720 --> 00:30:12,490 Jeg kommer til å treffe den grønne flagg i bare et øyeblikk. 654 00:30:12,490 --> 00:30:15,130 Og så en hel masse søppel kommer til å falle ned fra himmelen. 655 00:30:15,130 --> 00:30:17,830 Og du kommer til å bruke musen her å faktisk dra og slippe 656 00:30:17,830 --> 00:30:20,169 søppelet i Oscars søppelbøtter. 657 00:30:20,169 --> 00:30:23,210 Så hvis du ønsker å gå videre og klikk det grønne flagget, vil spillet begynne. 658 00:30:23,210 --> 00:30:26,890 >> [MUSIC SPILLE] 659 00:30:26,890 --> 00:30:29,980 >> Å, jeg elsker søppel. 660 00:30:29,980 --> 00:30:34,840 Noe skittent eller snusket eller støvete. 661 00:30:34,840 --> 00:30:39,300 Noe fillete eller råtten, eller rustne. 662 00:30:39,300 --> 00:30:43,155 Ja, jeg elsker søppel. 663 00:30:43,155 --> 00:30:45,530 Hvis du virkelig ønsker å se noe unyttig, se på dette. 664 00:30:45,530 --> 00:30:49,570 Jeg har her en sneaker det er fillete og slitt. 665 00:30:49,570 --> 00:30:53,750 Det er alle fulle av hull innehar og blonder er revet. 666 00:30:53,750 --> 00:30:57,590 En gave fra min mor den dagen jeg ble født. 667 00:30:57,590 --> 00:30:59,434 Jeg elsker det fordi it's-- 668 00:30:59,434 --> 00:31:02,600 DAVID J. MALAN: --green disse dager bare være å kaste alt i søpla. 669 00:31:02,600 --> 00:31:04,312 Og så hva en av CS50 egne ansatte did-- 670 00:31:04,312 --> 00:31:06,270 Jordan, som du kanskje møte today-- har faktisk 671 00:31:06,270 --> 00:31:08,030 oppdatert dette for dagens tider. 672 00:31:08,030 --> 00:31:10,800 Og så tillate meg å åpne opp en remix i stedet for Angela. 673 00:31:10,800 --> 00:31:13,600 Og vi skal spille dette i stedet for en liten stund der nå er du 674 00:31:13,600 --> 00:31:16,600 nødt til å bestemme seg mellom om å kaste noe i søpla, 675 00:31:16,600 --> 00:31:19,050 eller resirkulere den, eller kompostere det. 676 00:31:19,050 --> 00:31:21,280 Så det er litt av press på deg for å få 677 00:31:21,280 --> 00:31:28,040 denne rett foran 392 til 497 klassekamerater her i hallen, 678 00:31:28,040 --> 00:31:28,724 hvis du ville. 679 00:31:28,724 --> 00:31:29,390 [VIDEO PLAYBACK] 680 00:31:29,390 --> 00:31:32,540 [MUSIC SPILLE] 681 00:31:32,540 --> 00:31:36,280 -Å Jeg elsker trash. 682 00:31:36,280 --> 00:31:40,840 Noe skittent eller snusket eller støvete. 683 00:31:40,840 --> 00:31:44,910 Noe ujevn eller råtten eller rustne. 684 00:31:44,910 --> 00:31:48,830 Ja, jeg elsker søppel. 685 00:31:48,830 --> 00:31:51,480 >> Hvis du virkelig ønsker å se noe unyttig, se på dette. 686 00:31:51,480 --> 00:31:55,540 Jeg har her en sneaker det er fillete og slitt. 687 00:31:55,540 --> 00:31:59,440 Det er alle fulle av hull og blonder er revet. 688 00:31:59,440 --> 00:32:03,762 En gave fra min mor den dagen jeg ble født. 689 00:32:03,762 --> 00:32:07,630 Jeg elsker det fordi det er søppel. 690 00:32:07,630 --> 00:32:11,570 >> Å, jeg elsker søppel. 691 00:32:11,570 --> 00:32:15,512 Noe skittent, eller snusket, eller støvete. 692 00:32:15,512 --> 00:32:20,200 Noe ujevn eller råtten eller rustne. 693 00:32:20,200 --> 00:32:23,856 Ja, jeg elsker søppel. 694 00:32:23,856 --> 00:32:26,246 Her er litt mer råtten ting. 695 00:32:26,246 --> 00:32:28,240 Jeg har her noen newspaper-- 696 00:32:28,240 --> 00:32:28,889 >> [END PLAYBACK] 697 00:32:28,889 --> 00:32:30,680 DAVID J. MALAN: --are faktisk komposterbare. 698 00:32:30,680 --> 00:32:32,790 Men takk til våre frivillige, Angela. 699 00:32:32,790 --> 00:32:37,920 Vi har en stress ball for deg her også. 700 00:32:37,920 --> 00:32:38,790 Så takk. 701 00:32:38,790 --> 00:32:40,250 >> Så dette ble skrevet av meg. 702 00:32:40,250 --> 00:32:44,324 Men nå en etter en faktisk tidligere student som implementert dette, noe som er et spill. 703 00:32:44,324 --> 00:32:46,490 Alt i dette språket kalles Scratch, at vi snart 704 00:32:46,490 --> 00:32:47,850 skallet tilbake lag av. 705 00:32:47,850 --> 00:32:49,940 Men hvis vi hadde like-- hvordan om en annen frivillig? 706 00:32:49,940 --> 00:32:50,440 Høyre. 707 00:32:50,440 --> 00:32:50,970 >> Kom opp. 708 00:32:50,970 --> 00:32:52,070 Hva er navnet ditt? 709 00:32:52,070 --> 00:32:52,570 Blikk? 710 00:32:52,570 --> 00:32:53,280 Lance. 711 00:32:53,280 --> 00:32:54,082 Lance, kom opp. 712 00:32:54,082 --> 00:32:54,790 Hyggelig å møte deg. 713 00:32:54,790 --> 00:32:56,170 Kom på denne måten. 714 00:32:56,170 --> 00:32:59,940 Så dette kan ha en Temaet er kjent for noen av dere. 715 00:32:59,940 --> 00:33:02,180 Men du vil se for at det kan være interaktivitet, 716 00:33:02,180 --> 00:33:05,242 der du kan faktisk være rollen til karakteren flytte rundt. 717 00:33:05,242 --> 00:33:05,950 Hyggelig å møte deg. 718 00:33:05,950 --> 00:33:06,470 David. 719 00:33:06,470 --> 00:33:10,464 >> Jeg gir deg, Pikachu. 720 00:33:10,464 --> 00:33:12,380 Instruksjoner vil om komme på skjermen. 721 00:33:12,380 --> 00:33:16,070 Men kort sagt, du kommer til å ønsker å fange velsmakende ting, 722 00:33:16,070 --> 00:33:18,827 og unngå bomber og andre ting. 723 00:33:18,827 --> 00:33:19,910 Med pekere helt. 724 00:33:19,910 --> 00:33:21,320 Så traff mellomromstasten. 725 00:33:21,320 --> 00:33:21,820 -Pikachu. 726 00:33:21,820 --> 00:33:23,480 DAVID J. MALAN: Catch ting på venstre side, 727 00:33:23,480 --> 00:33:24,938 fanger ikke ting til høyre. 728 00:33:24,938 --> 00:33:27,576 729 00:33:27,576 --> 00:34:44,540 >> [MUSIC SPILLE] 730 00:34:44,540 --> 00:34:46,332 >> Så en siste her. 731 00:34:46,332 --> 00:34:48,040 Hvis vi kunne ha en mer frivillig her. 732 00:34:48,040 --> 00:34:50,760 Vi trodde vi skulle gjenskape noe from-- i den gule shirt-- 733 00:34:50,760 --> 00:34:53,110 fra onsdag. 734 00:34:53,110 --> 00:34:54,540 Hva er ditt navn? 735 00:34:54,540 --> 00:34:57,090 Mary, kom opp Mary. 736 00:34:57,090 --> 00:35:01,340 >> Og husker på onsdag vi introdusert begrepet binære, og binære pærer. 737 00:35:01,340 --> 00:35:03,930 Dette er faktisk nå en implementering av det samme grensesnittet 738 00:35:03,930 --> 00:35:07,360 som vi hadde på iPad med lys pærer, men her gjengis digitalt. 739 00:35:07,360 --> 00:35:11,220 Og i stedet gjøre en stress ball-- hyggelig å møte deg, David. 740 00:35:11,220 --> 00:35:14,600 Vi tok et par lys pærer fra Cambridge. 741 00:35:14,600 --> 00:35:18,650 >> Hvis du kan klikke på dem pærer for å slå dem av og på, 742 00:35:18,650 --> 00:35:29,510 komme opp med den binære representasjon av si 256. 743 00:35:29,510 --> 00:35:32,500 Og du vil se i midten dagens telleapparat. 744 00:35:32,500 --> 00:35:33,690 Slik at man er på. 745 00:35:33,690 --> 00:35:34,810 Så venstre biten er på. 746 00:35:34,810 --> 00:35:36,016 >> MARY: Ja, [uhørbart] 747 00:35:36,016 --> 00:35:39,292 748 00:35:39,292 --> 00:35:41,280 >> DAVID J. MALAN: Vel, så vi har just-- oh. 749 00:35:41,280 --> 00:35:42,780 Dette er altså 128 kolonnen. 750 00:35:42,780 --> 00:35:44,460 Så vi er opp til 128. 751 00:35:44,460 --> 00:35:46,769 Vi må få til 256. 752 00:35:46,769 --> 00:35:48,560 Og du kan tinker på og av, ingen big deal. 753 00:35:48,560 --> 00:35:53,700 Eller du kan treffe at 128 flere ganger hvis du vil. 754 00:35:53,700 --> 00:35:56,310 >> Greit, bra. 755 00:35:56,310 --> 00:35:58,090 24. 756 00:35:58,090 --> 00:35:59,790 Ja, nærmer seg. 757 00:35:59,790 --> 00:36:02,105 Nærmere! 758 00:36:02,105 --> 00:36:05,980 Oh, hva er problemet da? 759 00:36:05,980 --> 00:36:07,510 Så hva er problemet? 760 00:36:07,510 --> 00:36:10,040 >> Så hva trenger vi å løse dette problemet? 761 00:36:10,040 --> 00:36:11,060 Så vi trenger en annen bit. 762 00:36:11,060 --> 00:36:12,770 Og dette er helt rimelig i virkeligheten, ikke sant? 763 00:36:12,770 --> 00:36:15,800 Hvis du ønsker å telle fra antall 1 til 2 3 til 4 til 5, 6, 7, 8, 9 764 00:36:15,800 --> 00:36:18,880 å faktisk rulle over til 10, er du kommer til å trenge en ekstra bit. 765 00:36:18,880 --> 00:36:21,240 Så la oss faktisk spole tilbake her, og komme opp 766 00:36:21,240 --> 00:36:23,790 with-- det var tydeligvis ment å være et sett opp. 767 00:36:23,790 --> 00:36:25,590 >> Du kan ikke gjøre 256 med bare en pære. 768 00:36:25,590 --> 00:36:29,290 Så hva med bare nummer 50? 769 00:36:29,290 --> 00:36:29,977 Nummer 50. 770 00:36:29,977 --> 00:36:34,550 771 00:36:34,550 --> 00:36:35,100 Utmerket. 772 00:36:35,100 --> 00:36:39,050 En stor applaus for Mary og hennes også. 773 00:36:39,050 --> 00:36:41,840 Takk. 774 00:36:41,840 --> 00:36:45,570 >> Så dette topic-- tilsiktet som som var-- faktisk vil gjenta seg. 775 00:36:45,570 --> 00:36:50,020 Den største verdien som du kan representerer med åtte biter, eller en byte, 776 00:36:50,020 --> 00:36:51,750 er faktisk 256. 777 00:36:51,750 --> 00:36:55,770 Men ikke hvis du starter å telle fra 0, som vi 778 00:36:55,770 --> 00:36:58,060 ser ut til å fortsette å gjøre ved å ha alle disse bitene av. 779 00:36:58,060 --> 00:37:01,530 Men nå la oss dykke inn i den underliggende Gjennomføringen av dette miljøet, 780 00:37:01,530 --> 00:37:03,200 og erte hverandre litt av disse ideene. 781 00:37:03,200 --> 00:37:06,350 >> Så i et øyeblikk vi er i ferd med å se en noen forskjellige programmeringsfundamentale forhold. 782 00:37:06,350 --> 00:37:08,080 Den første av disse vil vi kaller uttalelsen. 783 00:37:08,080 --> 00:37:09,360 Sortering av verb, om du vil. 784 00:37:09,360 --> 00:37:09,960 Handlinger. 785 00:37:09,960 --> 00:37:11,180 Ting som bør gjøres. 786 00:37:11,180 --> 00:37:13,430 >> Og i et øyeblikk vil du se blokker som ser ut som dette. 787 00:37:13,430 --> 00:37:14,940 Si "hello world", for eksempel. 788 00:37:14,940 --> 00:37:16,330 Eller vente ett sekund. 789 00:37:16,330 --> 00:37:17,834 Eller spille av lyd meow. 790 00:37:17,834 --> 00:37:20,500 Og faktisk miljøet som vi kommer til å gjøre dette 791 00:37:20,500 --> 00:37:21,610 kalles Scratch. 792 00:37:21,610 --> 00:37:25,060 >> Og hvis jeg trekker opp Scratch uten preloading noen faktiske koden, 793 00:37:25,060 --> 00:37:27,830 la oss ta en rask titt på denne brukergrensesnitt, så å si. 794 00:37:27,830 --> 00:37:29,730 Kontrollene som vi samhandler. 795 00:37:29,730 --> 00:37:32,840 På toppen igjen her av skjermen, under menyene, 796 00:37:32,840 --> 00:37:34,650 vi har på scenen, så å si. 797 00:37:34,650 --> 00:37:36,550 Så Scratch er hva vi kaller Sprite. 798 00:37:36,550 --> 00:37:37,520 Det er et tegn. 799 00:37:37,520 --> 00:37:40,660 >> Og han kan være styrt av skrive programmer mot ham. 800 00:37:40,660 --> 00:37:43,950 Og han vil være i stand til å bevege seg opp og ned og venstre og høyre i dette miljøet, 801 00:37:43,950 --> 00:37:46,075 ikke bare ved å flytte mus, men programmatisk. 802 00:37:46,075 --> 00:37:48,930 Jeg kan fortelle ham gå rett, walk venstre, opp, ned eller lignende. 803 00:37:48,930 --> 00:37:51,440 Og jeg kan introdusere andre sprites eller tegn i tillegg. 804 00:37:51,440 --> 00:37:54,616 >> Faktisk, på bunnen her er der vil du se listen over sprites. 805 00:37:54,616 --> 00:37:56,865 For øyeblikket har jeg bare en, men jeg kan lage mer, 806 00:37:56,865 --> 00:37:58,880 og de vil vises nøyaktig der nede. 807 00:37:58,880 --> 00:38:02,630 Så hvis du spole tilbake for et øyeblikk, som Oscartime-- for eksempel, Oscar, 808 00:38:02,630 --> 00:38:04,590 til venstre, søppel kan, var en sprite. 809 00:38:04,590 --> 00:38:07,450 Og ting i midten, resirkulering bin, var en annen sprite. 810 00:38:07,450 --> 00:38:09,300 Og kompostbingen var en annen sprite. 811 00:38:09,300 --> 00:38:11,790 Og hvert stykke søppel eller resirkulerbare materialer 812 00:38:11,790 --> 00:38:14,590 som var falt fra himmelen er også en sprite, som hver for seg 813 00:38:14,590 --> 00:38:16,150 ble programmert individuelt. 814 00:38:16,150 --> 00:38:17,040 >> Hvordan programmere du? 815 00:38:17,040 --> 00:38:20,180 Vel, over her til høyre side er skript området. 816 00:38:20,180 --> 00:38:22,930 Og det er her vi kan dra og slipp brikkene. 817 00:38:22,930 --> 00:38:26,066 I en uke, kommer det til å være hvor vi equivalently skrive kode 818 00:38:26,066 --> 00:38:28,940 med mer av et tastatur, men for i dag vil det være å dra og slippe 819 00:38:28,940 --> 00:38:31,680 brikkene, den paletter som kan alt 820 00:38:31,680 --> 00:38:33,190 bli funnet her midt i midten. 821 00:38:33,190 --> 00:38:35,190 Faktisk, i midten her er det en hel haug 822 00:38:35,190 --> 00:38:37,910 kategorier av puslespillet stykker eller blokker. 823 00:38:37,910 --> 00:38:42,500 Ett er relatert til bevegelse, utseende, lyd, en penn går opp og ned, 824 00:38:42,500 --> 00:38:43,860 data, events kontrollere. 825 00:38:43,860 --> 00:38:45,654 Ikke helt sikker ennå hva alle disse betyr, 826 00:38:45,654 --> 00:38:47,820 men du vil se at de har pent blitt kategorisert. 827 00:38:47,820 --> 00:38:50,680 Og for å skrive et program i Scratch, la oss gjøre akkurat det. 828 00:38:50,680 --> 00:38:53,480 >> Jeg kommer til å starte i henhold Events, og drar denne her. 829 00:38:53,480 --> 00:38:55,470 Når grønt flagg klikket. 830 00:38:55,470 --> 00:38:56,704 Nå hvorfor den? 831 00:38:56,704 --> 00:38:59,120 Vel husker at våre frivillige kom opp, var det første jeg 832 00:38:59,120 --> 00:39:02,017 eller de gjorde var å klikke på den grønne flagg i øverste høyre hjørne. 833 00:39:02,017 --> 00:39:03,600 Og det betyr bare starte programmet. 834 00:39:03,600 --> 00:39:06,560 >> Så når hendelsen skjer, hva ønsker jeg å gjøre? 835 00:39:06,560 --> 00:39:10,070 Jeg kommer til å gå under Looks, og jeg kommer til å gjøre "si hei." 836 00:39:10,070 --> 00:39:14,000 Og jeg kommer til å endre dette og si noe sånt som "hei Yale." 837 00:39:14,000 --> 00:39:16,970 Og nå kommer jeg til å zoome ut, klikker du på det grønne flagget, 838 00:39:16,970 --> 00:39:19,050 og voila, jeg har skrevet et program. 839 00:39:19,050 --> 00:39:20,990 Det er ikke alt som er spennende ennå, men dette 840 00:39:20,990 --> 00:39:23,195 er akkurat der hver av de som forfatter startet, 841 00:39:23,195 --> 00:39:25,740 både med Pikachu, og binære pærer, og oscartime, 842 00:39:25,740 --> 00:39:26,890 og så mange flere eksempler. 843 00:39:26,890 --> 00:39:29,150 >> Du starter super enkelt, og så du begynner å lag, 844 00:39:29,150 --> 00:39:31,046 og legge på funksjoner og funksjonalitet. 845 00:39:31,046 --> 00:39:32,920 Så hva er disse lagene kommer til å bestå av? 846 00:39:32,920 --> 00:39:36,086 Vel, utover uttalelser, vil vi også har ting som er litt mer fancily 847 00:39:36,086 --> 00:39:38,910 kalt boolsk uttrykk, etter noen som heter Bool. 848 00:39:38,910 --> 00:39:42,820 Og en boolsk uttrykk er rett og slett en uttrykk som er enten sant eller usant, 849 00:39:42,820 --> 00:39:45,740 ja eller nei, 1 eller 0. 850 00:39:45,740 --> 00:39:47,480 >> Eventuelle motpoler sånn. 851 00:39:47,480 --> 00:39:48,902 Det er enten sant eller ikke. 852 00:39:48,902 --> 00:39:51,360 Men vi kommer også til å se de som kan se slik ut. 853 00:39:51,360 --> 00:39:52,925 Så for eksempel, er musen ned? 854 00:39:52,925 --> 00:39:54,550 De er liksom spørsmål, om du vil. 855 00:39:54,550 --> 00:39:57,650 >> Musen er enten ned, sant eller er det ikke, falsk. 856 00:39:57,650 --> 00:39:59,990 1 eller 0, om du vil, tendens til å være kartleggingen. 857 00:39:59,990 --> 00:40:01,740 Sann er 1, er falsk 0. 858 00:40:01,740 --> 00:40:03,740 Vel hva med mindre enn dette? 859 00:40:03,740 --> 00:40:05,400 Eller så er dette mindre enn dette? 860 00:40:05,400 --> 00:40:06,650 Det er et spørsmål av former. 861 00:40:06,650 --> 00:40:09,140 >> Og hvis du legger to Tallene i det, enten x 862 00:40:09,140 --> 00:40:12,010 kommer til å være mindre enn eller y y lik eller større enn y, 863 00:40:12,010 --> 00:40:14,635 men denne blokken vi får se, er bare kommer til å svare på spørsmålet, 864 00:40:14,635 --> 00:40:15,810 dette er mindre enn det? 865 00:40:15,810 --> 00:40:17,650 Vi kan også se noe som dette. 866 00:40:17,650 --> 00:40:18,790 Rørende musepekere. 867 00:40:18,790 --> 00:40:21,610 Så i Scratch, kan du spørre spørsmålet er Sprite 868 00:40:21,610 --> 00:40:22,800 berøre musepekeren? 869 00:40:22,800 --> 00:40:26,040 Med andre ord, er markøren svever over lokket, eller tilsvarende? 870 00:40:26,040 --> 00:40:28,100 >> Vi får se Anding ting sammen. 871 00:40:28,100 --> 00:40:30,970 Du kan stille to spørsmål, og sørge for at de begge 872 00:40:30,970 --> 00:40:34,920 gi deg ja eller sanne svar før en beslutning om å gjøre noe. 873 00:40:34,920 --> 00:40:36,709 Men hvordan tar du avgjørelser? 874 00:40:36,709 --> 00:40:38,000 Vel, vi har disse forholdene. 875 00:40:38,000 --> 00:40:40,041 >> Og vi så dette i vår eksempel på telefonboken. 876 00:40:40,041 --> 00:40:41,900 Ser til venstre eller rett for Mike Smith. 877 00:40:41,900 --> 00:40:45,140 Og i den tilstanden, du gjøre noe potensielt, 878 00:40:45,140 --> 00:40:47,240 hvis en boolsk uttrykk er sant. 879 00:40:47,240 --> 00:40:48,720 >> Og ja, merke figurene nå. 880 00:40:48,720 --> 00:40:52,250 Det er denne plassholder akkurat nå på overhead hvor vi kan fit-- 881 00:40:52,250 --> 00:40:54,532 hvis jeg spole man slide-- den formen. 882 00:40:54,532 --> 00:40:55,740 Det er ikke helt det samme størrelse. 883 00:40:55,740 --> 00:40:58,400 Og ja, vil du se at Scratch skale ting dynamisk 884 00:40:58,400 --> 00:41:01,479 å passe brikkene, men Formen er det som er viktig. 885 00:41:01,479 --> 00:41:03,270 Denne saken ser ut det, og faktisk er det 886 00:41:03,270 --> 00:41:05,410 omtrent samme form som skal passe inn der. 887 00:41:05,410 --> 00:41:09,520 Og hvis vi ønsker å gjøre noe denne måten eller på den måten, hvis eller annet, 888 00:41:09,520 --> 00:41:12,080 vi har dette puslespillet brikke i Scratch også. 889 00:41:12,080 --> 00:41:17,450 >> Nå antar du ønsket å gjøre hvis, annet hvis, eller annet. 890 00:41:17,450 --> 00:41:20,120 Med andre ord, en treveis veiskille. 891 00:41:20,120 --> 00:41:22,656 Og hva kan du gjøre bare ved å kaste et blikk på dette? 892 00:41:22,656 --> 00:41:25,030 Jeg kan ta dette puslespillet stykke, og det ser ikke ut til å passe, 893 00:41:25,030 --> 00:41:27,670 men igjen, er Scratch kommer å re-size pent for oss. 894 00:41:27,670 --> 00:41:29,940 Jeg kunne begynne å lag disse tingene sammen. 895 00:41:29,940 --> 00:41:32,900 >> Så nå har jeg en treveis gaffel Hvis dette er sant, gjør dette. 896 00:41:32,900 --> 00:41:36,560 Annet hvis dette andre ting er sant, gå denne veien, ellers går dette andre veien. 897 00:41:36,560 --> 00:41:39,200 Og i The Muppet Movie, den veiskille, så å si, 898 00:41:39,200 --> 00:41:42,610 mellom Yale eller Stanford, var akkurat det, bare to forhold. 899 00:41:42,610 --> 00:41:45,190 Enten gå denne veien, ellers går den veien. 900 00:41:45,190 --> 00:41:46,940 >> Vel, løkker også eksisterer i programmering. 901 00:41:46,940 --> 00:41:49,100 Og vi har brukt disse allerede i klasse og i pseudokode, 902 00:41:49,100 --> 00:41:51,060 og sikkert i de Skrape programmer for alltid. 903 00:41:51,060 --> 00:41:53,730 Scratch har dette puslespillet stykke som vil bare la deg gjøre noe for alltid. 904 00:41:53,730 --> 00:41:55,688 Og noen ganger du ønsker å gjøre noe for alltid. 905 00:41:55,688 --> 00:41:58,810 Det er ikke nødvendigvis en bug, det er fordi du vil ha en klokke å holde det gående, 906 00:41:58,810 --> 00:42:00,730 eller et spill for å fortsette å spille. 907 00:42:00,730 --> 00:42:04,800 Eller du kan angi et endelig antall trinn, som med dette gjentar blokken her, 908 00:42:04,800 --> 00:42:06,550 noe som vil gjenta noe 10 ganger. 909 00:42:06,550 --> 00:42:08,560 Vi kan sette variabler, vil vi snart se. 910 00:42:08,560 --> 00:42:12,300 Og med variabler, tilsvarende i ånden til algebra, som x, eller y eller z. 911 00:42:12,300 --> 00:42:16,390 Det er noe symbolsk som kan lagre noen verdi, noen opplysning, 912 00:42:16,390 --> 00:42:18,320 som du kanskje ønsker å huske til senere. 913 00:42:18,320 --> 00:42:21,080 >> Beste eksempel på dette kan være et spill der du har en poengsum, 914 00:42:21,080 --> 00:42:22,080 som i Pikachu. 915 00:42:22,080 --> 00:42:25,180 Hvor mange stykker av kaken og whatnot fikk du ta? 916 00:42:25,180 --> 00:42:29,340 Vel, det kan være en variabel heter poengsum som starter på 0. 917 00:42:29,340 --> 00:42:32,400 Og så hver gang vi fanget en stykke kake eller godteri, eller lignende, 918 00:42:32,400 --> 00:42:33,720 det blir økes. 919 00:42:33,720 --> 00:42:35,990 Det blir tilsatt til en om gangen. 920 00:42:35,990 --> 00:42:38,450 Og så en variabel lagrer en opplysning sånn. 921 00:42:38,450 --> 00:42:41,450 Så er det arrays, og vi vil komme tilbake til disse i en uke eller to tid, 922 00:42:41,450 --> 00:42:44,900 men en rekke er typen som en inventar eller en veske, inne 923 00:42:44,900 --> 00:42:46,940 som du kan sette virtuelle ting. 924 00:42:46,940 --> 00:42:49,852 Den lar deg lagre mer enn en opplysning. 925 00:42:49,852 --> 00:42:51,810 Og det kan være nyttig hvis du er i spillet, er du 926 00:42:51,810 --> 00:42:53,630 slags vandre rundt plukke opp ting. 927 00:42:53,630 --> 00:42:55,879 Og kanskje du vil beholde alle disse stykker av kaken 928 00:42:55,879 --> 00:42:58,260 rundt, og ikke bare spise dem en etter en. 929 00:42:58,260 --> 00:43:00,010 Og så er det en mer avansert konstruksjon vi vil 930 00:43:00,010 --> 00:43:02,932 kommer til å kalles funksjoner eller prosedyrer. 931 00:43:02,932 --> 00:43:04,640 Og selv om vi kommer raskere her, vil vi 932 00:43:04,640 --> 00:43:07,345 ser at dette er en meget naturlig løsning på problemer 933 00:43:07,345 --> 00:43:08,470 at vi skal møte. 934 00:43:08,470 --> 00:43:10,220 Som våre programmer starter får større vi vil 935 00:43:10,220 --> 00:43:12,640 begynner å legge merke til mønstre i koden som vi skriver, 936 00:43:12,640 --> 00:43:14,556 brikkene vi er å dra og slippe. 937 00:43:14,556 --> 00:43:18,240 Og så snart du oppdager deg selv å gjøre noe igjen og igjen, eller enda verre 938 00:43:18,240 --> 00:43:21,400 kopiere og lime inn programmering kode som du har skrevet, 939 00:43:21,400 --> 00:43:23,612 det er sannsynligvis en mulighet til å faktor ut 940 00:43:23,612 --> 00:43:25,820 uansett hva du holder kopiering og lime, og la ballen 941 00:43:25,820 --> 00:43:27,430 i noe som kalles en "funksjon". 942 00:43:27,430 --> 00:43:29,690 Men mer om de i mye nærmere før lenge. 943 00:43:29,690 --> 00:43:31,314 >> Og så er det enda mer avansert funksjoner. 944 00:43:31,314 --> 00:43:34,100 For de av dere mer komfortabel, eller tar APCS eller tilsvarende, 945 00:43:34,100 --> 00:43:37,600 Scratch faktisk støtter ting som tråder og hendelser og mye mer. 946 00:43:37,600 --> 00:43:39,840 Så skjønner at det har et ganske høyt under taket, 947 00:43:39,840 --> 00:43:42,540 selv om det er også veldig bredt tilgjengelig for folk 948 00:43:42,540 --> 00:43:44,460 som aldri har programmert før. 949 00:43:44,460 --> 00:43:47,130 Så ja, la oss ta en titt ved et enkelt program eller to. 950 00:43:47,130 --> 00:43:49,920 >> Vi har allerede sett på hvordan vi kanskje si hei med Scratch. 951 00:43:49,920 --> 00:43:52,800 La meg gå videre og åpne opp en litt mer interessant program 952 00:43:52,800 --> 00:43:54,100 som jeg skrev på forhånd. 953 00:43:54,100 --> 00:43:56,430 Og dette tallet kalt Pet Cat. 954 00:43:56,430 --> 00:43:58,954 Alle disse programmene vil være tilgjengelig på CS50 hjemmeside. 955 00:43:58,954 --> 00:43:59,870 Faktisk allerede der. 956 00:43:59,870 --> 00:44:01,190 >> Så du kan laste ned dem, og leke med dem, 957 00:44:01,190 --> 00:44:03,850 og med Problem Set 0, som er også på kursets hjemmeside, 958 00:44:03,850 --> 00:44:05,516 du oppfordres til å gå gjennom disse. 959 00:44:05,516 --> 00:44:07,820 Og dessuten har vi en antall walk-gjennom videoer 960 00:44:07,820 --> 00:44:10,951 online der jeg og CS50 team virkelig gå 961 00:44:10,951 --> 00:44:14,200 gjennom hver av disse eksemplene på en mye langsommere tempo, en svært rask fremførbare, 962 00:44:14,200 --> 00:44:18,530 eller omvikles tempo, slik at du kan gå gjennom disse på fritiden også. 963 00:44:18,530 --> 00:44:20,330 Så her er Scratch til venstre. 964 00:44:20,330 --> 00:44:22,920 Her er et program til rett at jeg allerede har pre-laget. 965 00:44:22,920 --> 00:44:24,880 Så la meg zoome inn på dette. 966 00:44:24,880 --> 00:44:28,780 Og kunne noen på engelsk, vel vitende hva du vet, bare fra nå som 967 00:44:28,780 --> 00:44:31,650 til hvordan Skrape verk, liksom si i en engelsk setning eller setning, 968 00:44:31,650 --> 00:44:35,450 hva betyr dette programmet tilsynelatende gjøre? 969 00:44:35,450 --> 00:44:36,836 >> Ja, i orange skjorte. 970 00:44:36,836 --> 00:44:40,804 >> PUBLIKUM: [uhørbart] 971 00:44:40,804 --> 00:44:41,796 972 00:44:41,796 --> 00:44:44,980 >> DAVID J. MALAN: Ja, hvis din markøren er på Scratch katten, 973 00:44:44,980 --> 00:44:46,220 spille en mjauende lyd. 974 00:44:46,220 --> 00:44:47,870 Men legg merke til hvordan vi uttrykker det. 975 00:44:47,870 --> 00:44:49,980 Det er tydeligvis en sløyfe der, alltid. 976 00:44:49,980 --> 00:44:53,000 Og så er det en tilstand, hvis uttrykket. 977 00:44:53,000 --> 00:44:55,090 Og kollektivt, hva de mener? 978 00:44:55,090 --> 00:44:57,210 Det betyr dette programmet er bare alltid kjører, 979 00:44:57,210 --> 00:44:59,510 og det har bare alltid venter og se og høre 980 00:44:59,510 --> 00:45:01,730 for meg å flytte musen over katten. 981 00:45:01,730 --> 00:45:04,810 >> Fordi hver gang jeg gjør det, så du foreslår, det kommer til å gjøre dette. 982 00:45:04,810 --> 00:45:06,475 La meg starte programmet. 983 00:45:06,475 --> 00:45:08,350 Ingenting ser ut til å være skjer, men legg merke til hvordan 984 00:45:08,350 --> 00:45:10,152 det er fremhevet nå i en gul linje. 985 00:45:10,152 --> 00:45:11,360 Det betyr bare at den kjører. 986 00:45:11,360 --> 00:45:13,770 Og fordi det er en evig loop, er det fortsatt kjører. 987 00:45:13,770 --> 00:45:19,610 >> Så la meg flytte min markøren over Scratch. [MEOW] [MEOW] Og hvis jeg flytter den av, 988 00:45:19,610 --> 00:45:25,444 [MEOW] nå stopper det, men programmets fortsatt kjører. [MEOW] Og så søt. 989 00:45:25,444 --> 00:45:28,550 [MEOW] Så la oss åpne opp litt mer avansert 990 00:45:28,550 --> 00:45:32,620 eksempel kalt Ikke Pet Cat. 991 00:45:32,620 --> 00:45:35,805 >> Og nå la oss se hva skjer her. [MEOW] mjauende. 992 00:45:35,805 --> 00:45:39,297 Så det er litt på auto pilot, hvis du vil. 993 00:45:39,297 --> 00:45:39,880 --pet katten. 994 00:45:39,880 --> 00:45:42,820 Jeg lurer på hvorfor. 995 00:45:42,820 --> 00:45:45,389 [ROAR] [MEOW] Så hvordan gjorde dette arbeidet? 996 00:45:45,389 --> 00:45:47,930 Vel, du kan slags grunn gjennom det intuitivt, kanskje. 997 00:45:47,930 --> 00:45:49,346 >> Men la oss se på selve koden. 998 00:45:49,346 --> 00:45:51,819 Så igjen, når det grønne flagget klikkes, gjør dette for alltid. 999 00:45:51,819 --> 00:45:53,110 Hva ønsker du å gjøre for alltid? 1000 00:45:53,110 --> 00:45:56,150 Vel, hvis rørende mus pekeren, og deretter spille 1001 00:45:56,150 --> 00:46:00,270 en lyd som er tilsynelatende kalt Lion 5, som er inne i dette prosjektet, annet 1002 00:46:00,270 --> 00:46:03,010 spille av lyd meow, og deretter vente to sekunder, så 1003 00:46:03,010 --> 00:46:04,510 at det ikke mjauende ustanselig. 1004 00:46:04,510 --> 00:46:07,650 Faktisk kan du raskt begynne å irritere deg selv og dine romkamerater. 1005 00:46:07,650 --> 00:46:08,690 >> La oss fjerne denne blokken. 1006 00:46:08,690 --> 00:46:10,580 Og legg merke til hva som er fint om Scratch. 1007 00:46:10,580 --> 00:46:13,070 Ting bare slags drag og slippe og interlock. 1008 00:46:13,070 --> 00:46:14,980 Så igjen, det vokser til fylle det du ønsker. 1009 00:46:14,980 --> 00:46:20,118 Men hvis jeg fjerner denne, og deretter hit lek, [COMPUTER blip SOUND] 1010 00:46:20,118 --> 00:46:22,904 >> --det er slags snuble over seg selv, fordi det er bokstavelig talt 1011 00:46:22,904 --> 00:46:23,820 gjør hva jeg sier. 1012 00:46:23,820 --> 00:46:27,080 Det er å si alltid spille denne lyden, men Jeg gir ikke det en sjanse til å fullføre. 1013 00:46:27,080 --> 00:46:28,205 Og så det ville være en feil. 1014 00:46:28,205 --> 00:46:30,700 Og det er derfor vi hadde denne tingen her nå. 1015 00:46:30,700 --> 00:46:34,030 Så la oss faktisk starte fra scratch-- slags ordspill litt intended-- 1016 00:46:34,030 --> 00:46:36,450 hvor vi nå har katten flytte. 1017 00:46:36,450 --> 00:46:38,130 >> Så jeg kommer til å gjøre dette på sparket. 1018 00:46:38,130 --> 00:46:40,910 Jeg kommer til å zoome inn her, bare å få meg i gang på Events. 1019 00:46:40,910 --> 00:46:42,000 Og grønt flagg klikket. 1020 00:46:42,000 --> 00:46:43,410 Og det er andre måter å starte skript. 1021 00:46:43,410 --> 00:46:44,920 Vi kommer til å holde det enkelt her. 1022 00:46:44,920 --> 00:46:48,049 >> Og nå kommer jeg til å gå fremover og gå under kontroll. 1023 00:46:48,049 --> 00:46:50,590 Og igjen, hvis du glemmer hvor ting er, klikker du bare rundt, 1024 00:46:50,590 --> 00:46:52,048 og til slutt du finne dem igjen. 1025 00:46:52,048 --> 00:46:53,680 Så jeg ønsker å alltid gjøre hva? 1026 00:46:53,680 --> 00:46:58,650 Jeg ønsker å bruke bevegelse blokk som jeg vet eksisterer, flytte 10 trinn. 1027 00:46:58,650 --> 00:47:02,016 >> Så la oss se hva som skjer her hvis jeg spiller dette spillet. 1028 00:47:02,016 --> 00:47:03,390 Heldigvis det ikke går for langt. 1029 00:47:03,390 --> 00:47:05,190 Jeg kan fortsatt slags hente ham i halen og dra ham tilbake. 1030 00:47:05,190 --> 00:47:07,860 Men programmet fortsatt kjører, så han er litt slåss meg. 1031 00:47:07,860 --> 00:47:10,870 Men det ville være slags hyggelig hvis jeg betinget fikse dette i kode. 1032 00:47:10,870 --> 00:47:12,800 >> Fordi dette er not-- faktisk dette er virkelig 1033 00:47:12,800 --> 00:47:15,770 ikke et morsomt spill for alle i alle aldre. 1034 00:47:15,770 --> 00:47:18,915 Så la oss prøve å fikse dette ved ha en slags betingelser. 1035 00:47:18,915 --> 00:47:21,670 Så jeg kommer til å gå under Kontroll, og hvis. 1036 00:47:21,670 --> 00:47:22,660 Jeg liker denne ideen. 1037 00:47:22,660 --> 00:47:27,470 Så etter flytting 10 trinn, if-- la meg ane hvor jeg er. 1038 00:47:27,470 --> 00:47:30,799 Jeg kommer til å gå under Sensing, og så det ser jeg kan gå her. 1039 00:47:30,799 --> 00:47:31,840 raden til form kamper. 1040 00:47:31,840 --> 00:47:34,380 >> Størrelse ikke, men det er kommer til å vokse å fylle. 1041 00:47:34,380 --> 00:47:35,984 Og nå er dette en liten meny. 1042 00:47:35,984 --> 00:47:38,650 Og nå mus pointer-- jeg ikke vil musen, jeg vil ha den kanten. 1043 00:47:38,650 --> 00:47:41,700 Så Scratch er smart nok til å vite når en sprite berører kanten. 1044 00:47:41,700 --> 00:47:44,360 Hva ønsker jeg ham å faktisk gjøre? 1045 00:47:44,360 --> 00:47:46,025 >> La meg gå videre og endre bevegelse. 1046 00:47:46,025 --> 00:47:46,940 Vet du hva? 1047 00:47:46,940 --> 00:47:49,242 Jeg kommer til å ha ham snu. 1048 00:47:49,242 --> 00:47:51,200 Så på 15 grader er ikke virkelig kommer til å hjelpe meg. 1049 00:47:51,200 --> 00:47:53,990 Jeg vil ha ham til å snu og gå den andre veien. 1050 00:47:53,990 --> 00:47:57,740 >> Så la oss se hva som skjer her, hvis jeg treffer Spill nå. 1051 00:47:57,740 --> 00:48:01,520 OK, litt dumt å se, men det gjør akkurat det jeg sa. 1052 00:48:01,520 --> 00:48:03,540 Og det er å rotere hele sprite. 1053 00:48:03,540 --> 00:48:04,900 Nå viser det seg at jeg kan fikse dette. 1054 00:48:04,900 --> 00:48:06,691 Og jeg visste ikke hvordan å fikse dette først. 1055 00:48:06,691 --> 00:48:09,190 Jeg slags måtte klusse rundt og se den beste måten å gjøre dette. 1056 00:48:09,190 --> 00:48:12,630 Men hvis jeg går to-- la oss se, bevegelse. 1057 00:48:12,630 --> 00:48:14,050 Åh, jeg fant dette. 1058 00:48:14,050 --> 00:48:15,660 Egentlig Sett Rotasjon stil. 1059 00:48:15,660 --> 00:48:18,431 Venstre, høyre, eller ikke rotere, eller rundt. 1060 00:48:18,431 --> 00:48:19,930 Og det viser seg det er det jeg vil. 1061 00:48:19,930 --> 00:48:22,920 Og jeg kommer til å sette dette er ikke min loop, fordi jeg ikke trenger å sette 1062 00:48:22,920 --> 00:48:24,487 rotasjonen stil flere ganger. 1063 00:48:24,487 --> 00:48:27,570 Jeg skal sette det helt på toppen av dette programmet slik at det blir satt en gang, 1064 00:48:27,570 --> 00:48:28,670 og deretter husker. 1065 00:48:28,670 --> 00:48:30,340 Og nå kommer jeg til å prøve dette igjen. 1066 00:48:30,340 --> 00:48:32,520 La meg stoppe programmet. 1067 00:48:32,520 --> 00:48:34,050 >> Og nå som løst denne feilen. 1068 00:48:34,050 --> 00:48:35,700 Så jeg iteratively bedre på dette. 1069 00:48:35,700 --> 00:48:37,900 Programmet blir en litt mer komplisert og større, 1070 00:48:37,900 --> 00:48:40,810 men jeg tar baby trinn så å si, og små biter ut av problemet 1071 00:48:40,810 --> 00:48:42,010 for å få det bedre og bedre. 1072 00:48:42,010 --> 00:48:43,260 Men også dette er slags halt. 1073 00:48:43,260 --> 00:48:43,900 >> Vet du hva? 1074 00:48:43,900 --> 00:48:49,860 Ville spørre noen med en virkelig god, skrekkelig stemme liker å komme opp? 1075 00:48:49,860 --> 00:48:51,210 Noen med en stemme. 1076 00:48:51,210 --> 00:48:54,070 1077 00:48:54,070 --> 00:48:54,570 Uh, ja. 1078 00:48:54,570 --> 00:48:55,550 Kom opp. 1079 00:48:55,550 --> 00:48:57,990 I grønn skjorte. 1080 00:48:57,990 --> 00:49:01,530 >> Så det viser seg at det er noen andre morsomme ting, estetikk og høres likt. 1081 00:49:01,530 --> 00:49:02,290 Her er meow. 1082 00:49:02,290 --> 00:49:04,000 Jeg klikker på kategorien Lyder. 1083 00:49:04,000 --> 00:49:08,730 [MEOW] Det er meow. [MEOW] [MEOW] [MEOW] --actually posten noe 1084 00:49:08,730 --> 00:49:10,310 av vår egen her. 1085 00:49:10,310 --> 00:49:13,120 >> Så la oss gjøre akkurat det. 1086 00:49:13,120 --> 00:49:17,670 I stedet for å bruke denne katten lyd, la oss gå videre her, og hva heter du? 1087 00:49:17,670 --> 00:49:18,850 Nick, hyggelig å møte deg. 1088 00:49:18,850 --> 00:49:19,350 Det er David. 1089 00:49:19,350 --> 00:49:21,474 Så i et øyeblikk, jeg kommer å treffe på opptaksknappen. 1090 00:49:21,474 --> 00:49:23,240 Og hvis du kan bare hyle inn i bærbare, 1091 00:49:23,240 --> 00:49:26,140 "au", som om du bare gikk inn i veggen, 1092 00:49:26,140 --> 00:49:28,180 som vil være mye verdsatt. 1093 00:49:28,180 --> 00:49:29,660 1, 2. 1094 00:49:29,660 --> 00:49:31,470 >> NICK: Ouch! 1095 00:49:31,470 --> 00:49:32,470 DAVID J. MALAN: Awesome. 1096 00:49:32,470 --> 00:49:34,410 Og nå kan gjøre litt redigering her. 1097 00:49:34,410 --> 00:49:35,910 Kommer til å kvitte seg med de rolige delene. 1098 00:49:35,910 --> 00:49:37,000 Og jeg tror det er bra. 1099 00:49:37,000 --> 00:49:37,690 Tusen takk. 1100 00:49:37,690 --> 00:49:38,315 >> NICK: Pleasure. 1101 00:49:38,315 --> 00:49:43,277 1102 00:49:43,277 --> 00:49:45,110 DAVID J. MALAN: Jeg har bare omdøpt den "au", 1103 00:49:45,110 --> 00:49:46,901 men nå kommer jeg til å gå tilbake til mine skript. 1104 00:49:46,901 --> 00:49:49,810 Og legg merke til det er faktisk lyd her. 1105 00:49:49,810 --> 00:49:53,520 Og jeg kommer til å gå videre og spille av lyden ouch, 1106 00:49:53,520 --> 00:49:56,991 og jeg kommer til å gjøre det hvis det berører bare kantene. 1107 00:49:56,991 --> 00:49:58,740 Og så kommer jeg til å har det snu. 1108 00:49:58,740 --> 00:50:00,250 Så la oss se hva som skjer her. 1109 00:50:00,250 --> 00:50:01,728 La oss gå full skjerm. 1110 00:50:01,728 --> 00:50:02,394 [VIDEO PLAYBACK] 1111 00:50:02,394 --> 00:50:03,790 -Au! 1112 00:50:03,790 --> 00:50:05,290 Au! 1113 00:50:05,290 --> 00:50:06,790 Au! 1114 00:50:06,790 --> 00:50:07,790 Au! 1115 00:50:07,790 --> 00:50:09,160 Au! 1116 00:50:09,160 --> 00:50:10,780 Au! 1117 00:50:10,780 --> 00:50:11,587 Au! 1118 00:50:11,587 --> 00:50:12,086 Au! 1119 00:50:12,086 --> 00:50:12,492 >> [END PLAYBACK] 1120 00:50:12,492 --> 00:50:14,490 >> DAVID J. MALAN: Så du skjønner at vi får en litt heldig. 1121 00:50:14,490 --> 00:50:17,110 Jeg kommer til å ha ham flytte som 100 skritt om gangen. 1122 00:50:17,110 --> 00:50:21,790 Effekten av som nå går å be-- [datamaskin svikt SOUND] Så 1123 00:50:21,790 --> 00:50:22,490 innenfor rimelighetens grenser. 1124 00:50:22,490 --> 00:50:25,470 Så en mulighet til å avgrense det videre hvis vi virkelig vil. 1125 00:50:25,470 --> 00:50:27,340 >> Så nå kan vi presentere et annet konsept. 1126 00:50:27,340 --> 00:50:30,660 Å la meg gå inn i en som heter Counting Sheep og bruk noe 1127 00:50:30,660 --> 00:50:31,610 kalt en variabel. 1128 00:50:31,610 --> 00:50:34,700 Dette er en søt liten sau, og Jeg endret sitt kostyme så å si. 1129 00:50:34,700 --> 00:50:37,450 Så selv om standarden er en katt, kan du laste opp, kan du tegne, 1130 00:50:37,450 --> 00:50:40,020 du kan gjøre en rekke tegnene på den sprite. 1131 00:50:40,020 --> 00:50:43,740 Her er et program som er kommer til å gjøre det på engelsk? 1132 00:50:43,740 --> 00:50:47,110 >> Basert igjen på akkurat det du vet nå. 1133 00:50:47,110 --> 00:50:48,230 Hva er dette programmet gjøre? 1134 00:50:48,230 --> 00:50:50,740 1135 00:50:50,740 --> 00:50:53,500 Ja, det kommer til å telle. 1136 00:50:53,500 --> 00:50:55,842 Ett nummer om gangen. 1137 00:50:55,842 --> 00:50:57,550 Vi har tilsynelatende har dette settet teller. 1138 00:50:57,550 --> 00:50:59,380 >> Jeg vet ikke hva det er, men kanskje det er en variabel. 1139 00:50:59,380 --> 00:51:00,740 Det er bare en container, x eller y. 1140 00:51:00,740 --> 00:51:04,290 Men ordet telleren er mer beskrivende enn matematiker er x eller y. 1141 00:51:04,290 --> 00:51:06,560 Så vi kan bruke engelske ord for ting. 1142 00:51:06,560 --> 00:51:08,490 Evig, betyr bare fortsette å gjøre dette. 1143 00:51:08,490 --> 00:51:10,020 >> Si teller. 1144 00:51:10,020 --> 00:51:11,270 Nå hvor kom denne fra? 1145 00:51:11,270 --> 00:51:13,240 Vel, det viser seg at telleren er en variabel. 1146 00:51:13,240 --> 00:51:15,645 Så det er bare en annen puslespill stykke jeg laget på forhånd. 1147 00:51:15,645 --> 00:51:18,020 Og selv om det skjer ikke å være den samme formen her, 1148 00:51:18,020 --> 00:51:20,540 normalt du ville si noe sånt hei her. 1149 00:51:20,540 --> 00:51:23,610 >> Du kan også dra en variabel slik at det er det som blir sagt. 1150 00:51:23,610 --> 00:51:26,170 Så jeg venter på et sekund, jeg endre telleren etter en, 1151 00:51:26,170 --> 00:51:27,940 økes det ved å legge en. 1152 00:51:27,940 --> 00:51:32,407 Slik at nettoeffekten er denne bedårende telle sauer. 1153 00:51:32,407 --> 00:51:33,615 Selv om han teller seg selv. 1154 00:51:33,615 --> 00:51:36,642 1155 00:51:36,642 --> 00:51:38,350 Nå er det veldig fort kommer til å bli kjedelig 1156 00:51:38,350 --> 00:51:40,900 fordi han kommer til å gjøre dette virkelig for alltid, 1157 00:51:40,900 --> 00:51:44,240 men det er akkurat hva det programmets utforming foreskriver. 1158 00:51:44,240 --> 00:51:48,090 Lar nå prøve et annet eksempel som utnytter en variabel. 1159 00:51:48,090 --> 00:51:51,140 Dette kalles Hi Hi Hi, at får irriterende raskt. 1160 00:51:51,140 --> 00:51:52,987 Nå er dette en har to skript. 1161 00:51:52,987 --> 00:51:54,570 Og så igjen, tar vi baby trinn. 1162 00:51:54,570 --> 00:51:57,236 >> Vi startet med noe super liten, lagt til det, lagt til det. 1163 00:51:57,236 --> 00:51:59,750 Nå ønsker jeg å gjøre noe enda mer dynamisk, 1164 00:51:59,750 --> 00:52:02,950 så jeg ønsker å bli lyttet til to forskjellige ting om gangen. 1165 00:52:02,950 --> 00:52:05,420 Så til venstre, når grønt flagg er klikket, 1166 00:52:05,420 --> 00:52:08,100 Jeg satt en variabel som jeg skrev på forhånd kalt dempet. 1167 00:52:08,100 --> 00:52:09,700 Og jeg vilkårlig satt den til 0. 1168 00:52:09,700 --> 00:52:13,290 Så Scratch ikke har sant og false, men det har 0 og 1. 1169 00:52:13,290 --> 00:52:15,270 >> Så jeg kan tilnærmet den samme ideen. 1170 00:52:15,270 --> 00:52:21,110 Og så for alltid, hvis mellomromstasten er trykket, og deretter sette variabelen til 0. 1171 00:52:21,110 --> 00:52:21,810 Eller lei meg. 1172 00:52:21,810 --> 00:52:25,920 Hvis Space trykkes, og hvis dempet, variabelen, er 0, 1173 00:52:25,920 --> 00:52:29,950 deretter satt dempet til 1, annet satt dempet til 0. 1174 00:52:29,950 --> 00:52:32,370 Dette virker liksom som vi er bare gjør og angre arbeid. 1175 00:52:32,370 --> 00:52:33,130 >> Men hva er effekten? 1176 00:52:33,130 --> 00:52:35,588 Hver gang jeg treffer på mellomromstasten, hva skjer med min variabel 1177 00:52:35,588 --> 00:52:38,150 kalt dempet, logisk? 1178 00:52:38,150 --> 00:52:39,100 Liksom blir snudd. 1179 00:52:39,100 --> 00:52:41,035 Det forandrer seg fra 0 til 1, eller 1 til 0. 1180 00:52:41,035 --> 00:52:43,035 Så det tok et par kvartaler å uttrykke det, men all 1181 00:52:43,035 --> 00:52:47,280 Jeg gjør er veksling staten denne variabelen til 0 eller 1, eller 0 eller 1 1182 00:52:47,280 --> 00:52:48,530 hver gang jeg treffer på mellomromstasten. 1183 00:52:48,530 --> 00:52:49,905 Nå over her, hva er dette å gjøre? 1184 00:52:49,905 --> 00:52:53,400 Forever er 0 hvis dempet, så hvis dempet er falsk. 1185 00:52:53,400 --> 00:52:57,910 Så hvis det ikke er dempet, er semantikk der, spille av lyd sjø løve, 1186 00:52:57,910 --> 00:53:00,810 og tror Hi Hi Hi for to sekunder, vent to sekunder. 1187 00:53:00,810 --> 00:53:02,710 Så oppdager nå disse skript er effektivt 1188 00:53:02,710 --> 00:53:07,100 kommer til å løpe parallelt, slik at man kan lytte til én handling, den andre 1189 00:53:07,100 --> 00:53:09,010 å ta en beslutning basert på handlingen. 1190 00:53:09,010 --> 00:53:10,655 Og det kan gjøre dette for alltid. 1191 00:53:10,655 --> 00:53:12,638 >> [SEA LION BARKING] 1192 00:53:12,638 --> 00:53:14,852 >> [SEA LION BARKING] 1193 00:53:14,852 --> 00:53:20,050 >> Det kommer til å gjøre dette for alltid og [SEA LION BARKING] som jeg nettopp har gjort. 1194 00:53:20,050 --> 00:53:23,010 Og nå er det fortsatt kjører men jeg har "dempet" spillet. 1195 00:53:23,010 --> 00:53:27,260 [SEA LION BARKING] Og det er all denne fyren gjør nå også. 1196 00:53:27,260 --> 00:53:28,660 >> La oss åpne et annet eksempel her. 1197 00:53:28,660 --> 00:53:31,840 La meg gå inn i Events, og nå denne bedårende også. 1198 00:53:31,840 --> 00:53:34,130 Men legg merke til den har to sprites. 1199 00:53:34,130 --> 00:53:37,520 Så det er ikke bare to skript med én sprite, men to sprites. 1200 00:53:37,520 --> 00:53:40,750 Og hvis jeg klikker på den blå fyr som jeg allerede har, ser jeg han som ett program 1201 00:53:40,750 --> 00:53:43,790 her oppe som bokstavelig talt bare sier dette, når jeg mottar en hendelse, 1202 00:53:43,790 --> 00:53:45,620 si "Polo" i to sekunder. 1203 00:53:45,620 --> 00:53:48,460 >> Så hvis du noen gang har spilt i et basseng, spillet Marco Polo, 1204 00:53:48,460 --> 00:53:52,500 hvis den oransje fyren skriptet er noen indikasjon, tilsynelatende 1205 00:53:52,500 --> 00:53:57,380 hver gang jeg treffer på mellomromstasten, hva er den oransje fyren kommer til å gjøre? 1206 00:53:57,380 --> 00:53:58,642 Han kommer til å si "Marco." 1207 00:53:58,642 --> 00:53:59,850 Og så er dette en ny blokk. 1208 00:53:59,850 --> 00:54:02,409 Vi har ikke sett dette før, men kringkaste en hendelse. 1209 00:54:02,409 --> 00:54:04,200 Og jeg kan kalle det event noe vi ønsker. 1210 00:54:04,200 --> 00:54:06,033 >> Vi vil komme tilbake til dette kanskje før lenge. 1211 00:54:06,033 --> 00:54:08,410 Men kringkasting en hendelse er en måte for en sprite 1212 00:54:08,410 --> 00:54:11,836 å snakke med en annen av i det vesentlige passerer den en melding. 1213 00:54:11,836 --> 00:54:12,960 Det er ikke en melding du ser. 1214 00:54:12,960 --> 00:54:14,130 Det er ikke noe visuelt. 1215 00:54:14,130 --> 00:54:17,370 Det er liksom en datamaskin melding at den andre fyren lytter etter. 1216 00:54:17,370 --> 00:54:21,210 Fordi ja, den blå fyr, tilbakekalling ikke har når grønt flagg klikket. 1217 00:54:21,210 --> 00:54:23,290 >> Han har i stedet, når jeg mottar en hendelse. 1218 00:54:23,290 --> 00:54:26,850 Når han får overlevert dette notatet i klassen, så å si, bør han si "Polo". 1219 00:54:26,850 --> 00:54:30,200 Og så nettoeffekten er at når jeg treffer det grønne flagget, skjer det ingenting. 1220 00:54:30,200 --> 00:54:34,940 Men når jeg treffer på mellomromstasten, sier han "Marco", han svarer med "Polo". 1221 00:54:34,940 --> 00:54:38,350 Men den eneste sprite jeg er samspill med er den orange. 1222 00:54:38,350 --> 00:54:40,980 Så dette er en måte å slags passerer meldinger mellom sprites 1223 00:54:40,980 --> 00:54:43,210 og ha dem kommunisere med hverandre. 1224 00:54:43,210 --> 00:54:46,280 >> Nå la oss se på en siste ett her kalles tråder. 1225 00:54:46,280 --> 00:54:49,370 Og legg merke til dette ved å spille det. 1226 00:54:49,370 --> 00:54:51,184 Så disse er to sprites. 1227 00:54:51,184 --> 00:54:52,600 Fuglen er slags flyr rundt. 1228 00:54:52,600 --> 00:54:53,310 Han spretter. 1229 00:54:53,310 --> 00:54:55,890 Det er ingen "au", men samme idé. 1230 00:54:55,890 --> 00:54:58,230 >> Men katten virker ganske smart. 1231 00:54:58,230 --> 00:55:01,010 Hva er katten tydeligvis gjør? 1232 00:55:01,010 --> 00:55:03,430 Og vente på det. 1233 00:55:03,430 --> 00:55:05,010 Hva er katten tydeligvis gjør? 1234 00:55:05,010 --> 00:55:07,740 Det er ikke bare hoppende. 1235 00:55:07,740 --> 00:55:09,860 >> Han følger fuglen. 1236 00:55:09,860 --> 00:55:13,920 Og så tilsynelatende, det er en måte med en kombinasjon av blokker her-- 1237 00:55:13,920 --> 00:55:15,760 og la oss se på katten virkelig fort. 1238 00:55:15,760 --> 00:55:20,270 For alltid, hvis berøre fugl, og deretter spille lyden Lion 4, uansett hva det er. 1239 00:55:20,270 --> 00:55:21,360 Vi hørte det en gang. 1240 00:55:21,360 --> 00:55:25,431 Ellers peker mot fugl, og flytt ett trinn. 1241 00:55:25,431 --> 00:55:27,680 Nå det faktum at det er en trinnet er det som gir fuglen 1242 00:55:27,680 --> 00:55:29,850 litt av en fordel i utgangspunktet, men hvis vi i stedet 1243 00:55:29,850 --> 00:55:32,980 gjør denne 10, for eksempel, så at hver iterasjon av loopen han er 1244 00:55:32,980 --> 00:55:34,100 flytte 10 trinn av gangen. 1245 00:55:34,100 --> 00:55:35,280 Så mer plass. 1246 00:55:35,280 --> 00:55:36,650 La oss se hva som skjer da. 1247 00:55:36,650 --> 00:55:38,740 [LION ROAR] Ikke alt så mye bedre. 1248 00:55:38,740 --> 00:55:41,460 Så nå la oss prøve å forbedre på disse litt iterativt, 1249 00:55:41,460 --> 00:55:43,330 og komme tilbake til det oppfatningen av en funksjon. 1250 00:55:43,330 --> 00:55:46,580 >> Og faktisk en av de grunnleggende gatekjøkken i klassen design. 1251 00:55:46,580 --> 00:55:49,560 Ikke bare skrive programmer som fungerer og det er riktig, men er vel 1252 00:55:49,560 --> 00:55:50,080 utformet. 1253 00:55:50,080 --> 00:55:54,349 Og design er mye mer subjektive, og du vil bli bedre på det over tid. 1254 00:55:54,349 --> 00:55:57,390 Men la oss ta noen baby skritt mot starter med et program som fungerer, 1255 00:55:57,390 --> 00:55:59,310 absolutt, men det er ikke veldig bra. 1256 00:55:59,310 --> 00:56:00,650 Det er ikke veldig godt skrevet. 1257 00:56:00,650 --> 00:56:03,830 >> Så her er et program som gjør dette. 1258 00:56:03,830 --> 00:56:08,060 Hoste, hoste, hoste. 1259 00:56:08,060 --> 00:56:09,880 Hva gjør programmet se ut? 1260 00:56:09,880 --> 00:56:11,330 Ser riktig ut for meg. 1261 00:56:11,330 --> 00:56:13,370 Det sier sofaen for en andre, deretter venter det. 1262 00:56:13,370 --> 00:56:14,515 >> Så det sier det igjen, så den venter. 1263 00:56:14,515 --> 00:56:16,056 Så det sier det igjen, så den venter. 1264 00:56:16,056 --> 00:56:18,770 Og så programmet implisitt slutter, fordi det er ingen loop. 1265 00:56:18,770 --> 00:56:21,325 Men hvorfor er dette et dårlig skrevet program? 1266 00:56:21,325 --> 00:56:22,950 Selv om du aldri har programmert før? 1267 00:56:22,950 --> 00:56:25,240 Liker, hva gnir feil måte, kanskje her? 1268 00:56:25,240 --> 00:56:26,016 Yeah? 1269 00:56:26,016 --> 00:56:29,278 >> PUBLIKUM: [uhørbart] 1270 00:56:29,278 --> 00:56:29,950 1271 00:56:29,950 --> 00:56:30,950 DAVID J. MALAN: Nettopp. 1272 00:56:30,950 --> 00:56:32,700 Du gjenta deg selv igjen og igjen. 1273 00:56:32,700 --> 00:56:36,190 Og bokstavelig talt, jeg kopiert og limt to av disse blokkene igjen og igjen. 1274 00:56:36,190 --> 00:56:39,237 Og det er akkurat den slags mental helse sjekk at du bør gjøre. 1275 00:56:39,237 --> 00:56:39,820 Vent et minutt. 1276 00:56:39,820 --> 00:56:41,070 Bør jeg virkelig gjøre dette? 1277 00:56:41,070 --> 00:56:43,610 Så hva er dette hva er åpenbare løsningen kanskje? 1278 00:56:43,610 --> 00:56:44,680 Har en slags loop. 1279 00:56:44,680 --> 00:56:46,860 Og jeg ikke helt husker hva puslespill brikke er, 1280 00:56:46,860 --> 00:56:48,810 men hvis jeg ser på neste iterasjon her, 1281 00:56:48,810 --> 00:56:50,560 ja, det er ikke bare evig loop, 1282 00:56:50,560 --> 00:56:52,560 det er gjenta noen antall ganger. 1283 00:56:52,560 --> 00:56:54,080 Og så jeg har spesifisert tre. 1284 00:56:54,080 --> 00:56:57,839 Og nå merke til hvor mye strammere, hvordan mye mer konsis dette programmet er. 1285 00:56:57,839 --> 00:56:59,630 Og på en måte, hvordan mye mer vedlikeholdsvennlig. 1286 00:56:59,630 --> 00:57:02,840 Hvis jeg ønsker å endre ordet fra hoste til noe annet, 1287 00:57:02,840 --> 00:57:07,530 som Achoo, som han nyser. 1288 00:57:07,530 --> 00:57:09,770 Deretter endrer jeg det i ett plass, og ikke tre. 1289 00:57:09,770 --> 00:57:12,050 Så dette føles allerede som litt bedre design. 1290 00:57:12,050 --> 00:57:14,610 La meg i stedet åpen hoste 2, vår tredje eksempel. 1291 00:57:14,610 --> 00:57:17,670 >> Legg merke til som en datamaskin vitenskapsmann, Jeg begynner å telle på 0, typisk. 1292 00:57:17,670 --> 00:57:20,950 Nå ser litt skumlere på første, men effekten er den samme. 1293 00:57:20,950 --> 00:57:22,590 Hoste, hoste, hoste. 1294 00:57:22,590 --> 00:57:26,920 Men hva synes å være fundamentalt nytt i den øverste del av programmet? 1295 00:57:26,920 --> 00:57:28,670 Jeg har fjernet si. 1296 00:57:28,670 --> 00:57:29,830 >> Jeg har fjernet ventetiden. 1297 00:57:29,830 --> 00:57:32,370 Og hva har jeg plugget i stedet? 1298 00:57:32,370 --> 00:57:32,890 En funksjon. 1299 00:57:32,890 --> 00:57:33,670 En hoste blokk. 1300 00:57:33,670 --> 00:57:35,410 Jeg mener, ærlig, synes jeg slags av en idiot hvis jeg ikke bare 1301 00:57:35,410 --> 00:57:37,285 starter med blokken som er tilsynelatende kalt 1302 00:57:37,285 --> 00:57:38,894 "hoste", hvis det er alt jeg vil ha ham til å gjøre. 1303 00:57:38,894 --> 00:57:40,310 Men som ikke finnes i Scratch. 1304 00:57:40,310 --> 00:57:43,396 Heller jeg gikk til en i palett kalt flere blokker her, 1305 00:57:43,396 --> 00:57:46,270 og jeg drar denne store lilla tingen her som lar meg definere en funksjon. 1306 00:57:46,270 --> 00:57:48,240 Det lar meg egentlig lage mitt eget puslespill 1307 00:57:48,240 --> 00:57:51,280 brikke som kan kalles noe jeg vil, kan det gjøre hva jeg vil, 1308 00:57:51,280 --> 00:57:52,360 men det gir den et navn. 1309 00:57:52,360 --> 00:57:57,050 Det gir meg en ny, lilla puslespill brikke som nå gjør alt jeg ber den om. 1310 00:57:57,050 --> 00:58:01,060 Så dette lilla brikke her tilsvarer dette en her. 1311 00:58:01,060 --> 00:58:01,960 >> Og hva gjør den? 1312 00:58:01,960 --> 00:58:03,930 Det sier hoste for en andre, og deretter venter det. 1313 00:58:03,930 --> 00:58:07,330 Og nå har jeg liksom opprettet mitt eget puslespill brikke, 1314 00:58:07,330 --> 00:58:10,040 slik at den oppfører seg akkurat det samme måte. 1315 00:58:10,040 --> 00:58:11,130 Så jeg kan fortsette å gjøre dette. 1316 00:58:11,130 --> 00:58:14,421 Og ja, det kommer til å bli mer og flere muligheter for modularisering, 1317 00:58:14,421 --> 00:58:16,630 og for lagdeling, kompleksitet oppå hverandre. 1318 00:58:16,630 --> 00:58:18,547 Men denne grunnleggende ideen, faktisk i problem sa 0. 1319 00:58:18,547 --> 00:58:20,338 Hva kommer du til å bli utfordret til å gjøre er 1320 00:58:20,338 --> 00:58:23,810 å laste ned Scratch, eller bare bruke den på nettet, og bare ha det gøy med det. 1321 00:58:23,810 --> 00:58:26,056 Vi vil gi deg et sett med krav, å ha en lyd, 1322 00:58:26,056 --> 00:58:27,430 og noen flere puslebiter. 1323 00:58:27,430 --> 00:58:28,480 Men du vil gjøre akkurat dette. 1324 00:58:28,480 --> 00:58:31,771 Og vil du innse at du kommer til å ønsker å ta noen små steg i utgangspunktet, 1325 00:58:31,771 --> 00:58:33,690 før programmet blir mer og mer kompleks. 1326 00:58:33,690 --> 00:58:36,010 Men vurderer dette er det beste måten jeg kunne gjøre dette? 1327 00:58:36,010 --> 00:58:39,210 Kan jeg unngå dette instinktet kanskje, for å kopiere og lime inn? 1328 00:58:39,210 --> 00:58:41,850 >> Men før Problem Set 0, og før vi utsette, 1329 00:58:41,850 --> 00:58:44,980 tenkte vi skulle ta opp ett mer frivillig hvis vi kunne, 1330 00:58:44,980 --> 00:58:46,820 for en endelig program det er kanskje den mest 1331 00:58:46,820 --> 00:58:49,150 fitting i det hele tatt, gitt dagens arena. 1332 00:58:49,150 --> 00:58:50,298 Kom ned. 1333 00:58:50,298 --> 00:58:51,234 Yeah. 1334 00:58:51,234 --> 00:58:52,170 Ja. 1335 00:58:52,170 --> 00:58:53,431 Hva er navnet ditt? 1336 00:58:53,431 --> 00:58:53,930 UH oh. 1337 00:58:53,930 --> 00:58:57,820 1338 00:58:57,820 --> 00:58:59,010 Det er greit. 1339 00:58:59,010 --> 00:59:01,230 Begge kommer ned. 1340 00:59:01,230 --> 00:59:05,520 Og jeg har vil håndtere dette liksom innen det neste ti sekunder. 1341 00:59:05,520 --> 00:59:06,550 Så kom ned. 1342 00:59:06,550 --> 00:59:08,370 Kom ned. 1343 00:59:08,370 --> 00:59:13,250 >> La meg komme opp hit. 1344 00:59:13,250 --> 00:59:16,050 Kom igjen. 1345 00:59:16,050 --> 00:59:16,685 Greit. 1346 00:59:16,685 --> 00:59:21,360 1347 00:59:21,360 --> 00:59:22,360 La oss se her. 1348 00:59:22,360 --> 00:59:25,735 Så merker virkelig fort her, Hvis du ønsker å komme videre opp. 1349 00:59:25,735 --> 00:59:28,650 1350 00:59:28,650 --> 00:59:29,926 >> Vi vil gjøre to runder med dette. 1351 00:59:29,926 --> 00:59:30,800 Og hva heter du? 1352 00:59:30,800 --> 00:59:31,270 >> SABRINA: Sabrina. 1353 00:59:31,270 --> 00:59:32,060 >> DAVID J. MALAN: Sabrina og? 1354 00:59:32,060 --> 00:59:32,622 >> YING GEE: Ying Gee. 1355 00:59:32,622 --> 00:59:33,360 >> DAVID J. MALAN: Ying Gee. 1356 00:59:33,360 --> 00:59:34,276 Hyggelig å møte dere begge. 1357 00:59:34,276 --> 00:59:34,970 David. 1358 00:59:34,970 --> 00:59:38,785 Så vårt siste eksempel her er heter Ivy Hardest Game. 1359 00:59:38,785 --> 00:59:41,160 Og hvorfor gjør vi ikke at dere skal gjøre Nivå 1, og du gjør nivå to. 1360 00:59:41,160 --> 00:59:43,350 >> Og vi får se hvor langt utover at vi faktisk går. 1361 00:59:43,350 --> 00:59:45,855 Skrevet av en student fjor, remikset av meg 1362 00:59:45,855 --> 00:59:48,840 så at dette ville gå over godt i New Haven. 1363 00:59:48,840 --> 00:59:53,180 Og jeg gir deg et spill som kommer til å innebære flytting pilene opp og ned, 1364 00:59:53,180 --> 00:59:55,771 og får Yale til mållinjen. 1365 00:59:55,771 --> 00:59:56,270 Here we go. 1366 00:59:56,270 --> 00:59:56,759 >> [VIDEO PLAYBACK] 1367 00:59:56,759 --> 00:59:58,092 >> [MUSIC - NFL ON FOX kjenningsmelodien] 1368 00:59:58,092 --> 00:59:59,369 1369 00:59:59,369 --> 01:00:01,160 [MUSIC - MC HAMMER, "U kan ikke røre  DENNE "] 1370 01:00:01,160 --> 01:00:04,590 1371 01:00:04,590 --> 01:00:07,900 >> -U Kan ikke røre dette. 1372 01:00:07,900 --> 01:00:11,634 U kan ikke røre dette. 1373 01:00:11,634 --> 01:00:14,252 Kan ikke røre dette. 1374 01:00:14,252 --> 01:00:19,490 Min, min, min, min musikk treffer meg så hardt, gjør meg si, oh, min herre. 1375 01:00:19,490 --> 01:00:22,927 Takk for at du velsigner meg med en tankene å rime og to hype føtter. 1376 01:00:22,927 --> 01:00:24,891 >> Det er bra når du vet du er nede. 1377 01:00:24,891 --> 01:00:26,855 En super dope homeboy fra Oaktown. 1378 01:00:26,855 --> 01:00:31,274 Og jeg er kjent som sådan, og dette en beat uh, kan du ikke røre. 1379 01:00:31,274 --> 01:00:34,672 Jeg fortalte deg homeboy U kan ikke røre dette. 1380 01:00:34,672 --> 01:00:38,656 Ja, det er hvordan vi lever og du vet U kan ikke røre dette. 1381 01:00:38,656 --> 01:00:40,135 >> Ser i mine øyne, mann. 1382 01:00:40,135 --> 01:00:43,093 U kan ikke røre dette. 1383 01:00:43,093 --> 01:00:44,572 Yo, la meg bust funky tekster. 1384 01:00:44,572 --> 01:00:45,363 U kan ikke røre dette. 1385 01:00:45,363 --> 01:00:46,544 Friske nye spark og bukser. 1386 01:00:46,544 --> 01:00:48,627 >> Du fikk det sånn og du vet at du wanna dance. 1387 01:00:48,627 --> 01:00:51,967 Så flytter ut av setet og få et fly jente og fange denne beat. 1388 01:00:51,967 --> 01:00:55,911 Mens det rullende tak på pumpe litt litt og la dem få vite hva som skjer. 1389 01:00:55,911 --> 01:00:56,890 Slik. 1390 01:00:56,890 --> 01:00:57,390 Slik. 1391 01:00:57,390 --> 01:00:59,362 >> Kald på et oppdrag så trekke på ryggen. 1392 01:00:59,362 --> 01:01:04,785 La dem vite at du er for mye og dette er et trekk uh du ikke kan røre. 1393 01:01:04,785 --> 01:01:07,743 Yo, jeg fortalte deg U kan ikke røre dette. 1394 01:01:07,743 --> 01:01:09,222 Hvorfor du står der mannen? 1395 01:01:09,222 --> 01:01:10,208 U kan ikke røre dette. 1396 01:01:10,208 --> 01:01:13,200 >> Yo, høres klokke skolens inn, sucker. 1397 01:01:13,200 --> 01:01:14,005 U kan ikke røre dette. 1398 01:01:14,005 --> 01:01:18,326 Gi meg en sang, en rytme som gjør dem svette det er hva jeg gir dem nå. 1399 01:01:18,326 --> 01:01:21,805 De vet når du snakker om Hammer du snakker om et show som er hyped. 1400 01:01:21,805 --> 01:01:24,290 Og stramme sangere er svette så sende dem en mikrofon. 1401 01:01:24,290 --> 01:01:27,272 >> Eller en tape for å lære hva det kommer til å ta og nå 1402 01:01:27,272 --> 01:01:29,260 han kommer til å brenne på hitlistene. 1403 01:01:29,260 --> 01:01:32,739 Legit enten jobbe hardt eller du kan like godt slutte. 1404 01:01:32,739 --> 01:01:37,709 Fordi du vet U ikke kan røre dette. 1405 01:01:37,709 --> 01:01:41,599 U kan ikke røre dette. 1406 01:01:41,599 --> 01:01:42,182 Bryte det ned. 1407 01:01:42,182 --> 01:01:56,095 1408 01:01:56,095 --> 01:01:56,595 Stoppe. 1409 01:01:56,595 --> 01:01:57,095 Hammer tid. 1410 01:01:57,095 --> 01:01:59,577 Gå med strømmen i spinn hvis du ikke kan flytte til dette 1411 01:01:59,577 --> 01:02:01,068 så har du sannsynligvis er døde. 1412 01:02:01,068 --> 01:02:04,547 Så bølge hendene i luften [uhørbart] 1413 01:02:04,547 --> 01:02:08,026 >> Dette er det for en vinner dans til dette, og du kommer til å bli tynnere. 1414 01:02:08,026 --> 01:02:12,996 Flytt gli rumpe bare for et minutt la oss alle gjøre bump. 1415 01:02:12,996 --> 01:02:13,990 Yeah. 1416 01:02:13,990 --> 01:02:14,984 U kan ikke røre dette. 1417 01:02:14,984 --> 01:02:17,966 1418 01:02:17,966 --> 01:02:19,457 >> U kan ikke røre dette. 1419 01:02:19,457 --> 01:02:23,433 Du bedre få hyped Gutten U kan ikke røre dette. 1420 01:02:23,433 --> 01:02:24,924 Ring gongongen skolens tilbake igjen. 1421 01:02:24,924 --> 01:02:25,918 Bryte det ned. 1422 01:02:25,918 --> 01:02:38,837 1423 01:02:38,837 --> 01:02:39,337 Stoppe. 1424 01:02:39,337 --> 01:02:40,828 Hammer tid 1425 01:02:40,828 --> 01:02:42,816 >> DAVID J. MALAN: Det er det for CS50! 1426 01:02:42,816 --> 01:02:45,301 Takk så mye for å bli med oss! 1427 01:02:45,301 --> 01:02:47,786 Se deg utenfor. 1428 01:02:47,786 --> 01:02:48,611 >> [END PLAYBACK] 1429 01:02:48,611 --> 01:02:49,277 [VIDEO PLAYBACK] 1430 01:02:49,277 --> 01:02:52,259 [MUSIC - "SEINFELD" kjenningsmelodien] 1431 01:02:52,259 --> 01:02:53,860 -Hei David. 1432 01:02:53,860 --> 01:02:54,500 -Hei, David. 1433 01:02:54,500 --> 01:02:55,912 Hvordan går det? 1434 01:02:55,912 --> 01:02:58,078 >> -God Jobb, i dag. 1435 01:02:58,078 --> 01:03:00,952 -Så Har du tenkt på hva du kommer til å gjøre for ut vitser? 1436 01:03:00,952 --> 01:03:03,207 -Nei, Jeg fikk ingenting. 1437 01:03:03,207 --> 01:03:07,550 -Hva If-- hva om dette er ute spøk? 1438 01:03:07,550 --> 01:03:08,970 -aktig, Utpakking vognene? 1439 01:03:08,970 --> 01:03:11,430 -Uh-He. 1440 01:03:11,430 --> 01:03:13,890 Du vet, det handler om ingenting. 1441 01:03:13,890 --> 01:03:17,559 >> -Så Liker, ingen historie, ingen konflikt, ingen løsning. 1442 01:03:17,559 --> 01:03:18,350 Jeg forstår ikke. 1443 01:03:18,350 --> 01:03:20,542 Hva handler det om da? 1444 01:03:20,542 --> 01:03:23,510 >> -ingenting. 1445 01:03:23,510 --> 01:03:27,427 >> -Så Vi har ut spøk handler om ingenting, og vi har ingen skuespillere. 1446 01:03:27,427 --> 01:03:28,510 Hvem kommer til å være i dette? 1447 01:03:28,510 --> 01:03:29,010 >> -Nei nei nei. 1448 01:03:29,010 --> 01:03:31,310 Jeg mener, jeg skal være i det. 1449 01:03:31,310 --> 01:03:32,109 >> -Du Være i det? 1450 01:03:32,109 --> 01:03:32,608 -Ja! 1451 01:03:32,608 --> 01:03:34,903 Folk er alltid forteller meg at jeg er et tegn. 1452 01:03:34,903 --> 01:03:36,029 >> -Vel, Jeg mener, det er sant. 1453 01:03:36,029 --> 01:03:37,445 Men hvem andre kommer til å være i det? 1454 01:03:37,445 --> 01:03:38,660 Det kan ikke bare være deg. 1455 01:03:38,660 --> 01:03:47,240 >> -Du Vil være i det, Gavin, Dan, Dan, Colton, Z'Myla, Alysse, Doug, 1456 01:03:47,240 --> 01:03:51,120 David, alle sammen. 1457 01:03:51,120 --> 01:03:53,630 >> -Så Det handler om ingenting, og alle er i den? 1458 01:03:53,630 --> 01:03:54,530 >> -Helt ingenting. 1459 01:03:54,530 --> 01:03:58,730 1460 01:03:58,730 --> 01:04:00,580 >> -Dette er latterlig.