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ør lukke] 4 00:00:13,284 --> 00:00:15,744 >> [Bilmotor START] 5 00:00:15,744 --> 00:00:19,188 >> [Musik spiller] 6 00:00:19,188 --> 00:00:20,172 7 00:00:20,172 --> 00:00:24,516 >> -I Højre ad i jagten af gode tider og gode nyheder. 8 00:00:24,516 --> 00:00:26,871 Med gode venner kan du ikke miste. 9 00:00:26,871 --> 00:00:28,755 >> -Det Kunne blive en vane. 10 00:00:28,755 --> 00:00:32,460 >> -Opportunity Slag Lad os lige nå ud og få fat i det. 11 00:00:32,460 --> 00:00:32,960 -Ja! 12 00:00:32,960 --> 00:00:34,920 -Sammen vil vi snuppe den. 13 00:00:34,920 --> 00:00:37,370 -Vi Hitch hike, bus eller gul cab det. 14 00:00:37,370 --> 00:00:38,840 -Dammit. 15 00:00:38,840 --> 00:00:40,800 -We're Bevæger højre langs. 16 00:00:40,800 --> 00:00:43,750 -Footloose Og fancy gratis. 17 00:00:43,750 --> 00:00:45,960 -Kom Der er halvt så sjovt. 18 00:00:45,960 --> 00:00:47,718 Kom dele det med mig. 19 00:00:47,718 --> 00:00:49,654 >> -We're Bevæger højre langs. 20 00:00:49,654 --> 00:00:52,558 >> -We're Vil dele belastningen. 21 00:00:52,558 --> 00:00:57,604 >> -Vi Har ikke brug for et kort for at få dette show på vejen. 22 00:00:57,604 --> 00:01:00,520 -Hey Fozzy, jeg vil have dig til at dreje til venstre hvis du kommer til en gaffel i vejen. 23 00:01:00,520 --> 00:01:01,020 -Ja hr. 24 00:01:01,020 --> 00:01:03,334 Drej til venstre ved udfletningen i vejen. 25 00:01:03,334 --> 00:01:05,222 Drej til venstre. 26 00:01:05,222 --> 00:01:07,582 >> -Jeg Tror ikke, at. 27 00:01:07,582 --> 00:01:11,720 >> -Cruising Højre langs vi fundet lysene på motorvejen. 28 00:01:11,720 --> 00:01:13,664 >> -Og Din vej eller min måde. 29 00:01:13,664 --> 00:01:16,154 >> -Så Tillid til min navigation. 30 00:01:16,154 --> 00:01:21,134 >> -film Stjerner med prangende biler og livet med toppen ned. 31 00:01:21,134 --> 00:01:23,126 >> -We're Stormede de store bakker. 32 00:01:23,126 --> 00:01:24,122 >> -Ja, Storm er rigtige. 33 00:01:24,122 --> 00:01:25,160 Skulle det være sner? 34 00:01:25,160 --> 00:01:26,220 >> Nej, tror jeg ikke det. 35 00:01:26,220 --> 00:01:28,505 >> -I Højre ad. 36 00:01:28,505 --> 00:01:30,980 >> -Footloose Og fancy gratis. 37 00:01:30,980 --> 00:01:32,960 >> -Du Klar til den store tid. 38 00:01:32,960 --> 00:01:34,445 >> -er Det klar til mig? 39 00:01:34,445 --> 00:01:38,900 40 00:01:38,900 --> 00:01:42,860 >> -I Højre ad. 41 00:01:42,860 --> 00:01:47,315 Flytning til højre ad. 42 00:01:47,315 --> 00:01:52,265 Flytning til højre ad. 43 00:01:52,265 --> 00:01:56,131 Flytning til højre ad. 44 00:01:56,131 --> 00:01:57,380 -Jeg Tror, du bedre trække over. 45 00:01:57,380 --> 00:01:58,020 -Ja hr. 46 00:01:58,020 --> 00:02:02,475 47 00:02:02,475 --> 00:02:03,960 >> [END AFSPIL] 48 00:02:03,960 --> 00:02:07,425 >> [Applaus] 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 slutningen af ​​uge 0, men starten på et smukt venskab. 52 00:02:15,940 --> 00:02:18,250 Vi er så glade for at være her på Yale University 53 00:02:18,250 --> 00:02:21,530 for første gang med vores ven SCAZ, og Jason, og Andy. 54 00:02:21,530 --> 00:02:24,320 Alle 40 af CS50 s TF s og CA er her på Yale. 55 00:02:24,320 --> 00:02:25,440 Og alle jer. 56 00:02:25,440 --> 00:02:28,470 Og i virkeligheden, er det nok tid at-- 57 00:02:28,470 --> 00:02:31,914 >> [Applaus] 58 00:02:31,914 --> 00:02:43,722 59 00:02:43,722 --> 00:02:47,920 >> Så selv om de fleste af forelæsningerne vil faktisk være i Cambridge i år, 60 00:02:47,920 --> 00:02:51,250 virkeligheden er, at ved design, og meget bevidst i CS50, 61 00:02:51,250 --> 00:02:54,740 Jeg tror, ​​vi nærmer det punkt teknologisk og pædagogisk, 62 00:02:54,740 --> 00:02:57,930 hvor det kan være en overlegen pædagogisk erfaring til at engagere sig med nogle 63 00:02:57,930 --> 00:02:59,610 af kurset materielle online. 64 00:02:59,610 --> 00:03:02,862 Faktisk reality-- og hvis jeg tror denne philosophically-- er, at forelæsninger 65 00:03:02,862 --> 00:03:05,070 er ikke en særlig effektive midler til levering af 66 00:03:05,070 --> 00:03:06,900 temmelig komplekse oplysninger. 67 00:03:06,900 --> 00:03:09,219 Bestemt løbet time plus lange spænd af tid. 68 00:03:09,219 --> 00:03:11,760 Og faktisk hver par minutes-- Jeg husker mig selv i college-- 69 00:03:11,760 --> 00:03:14,210 du zone ud for et øjeblik, du går glip af nogle komplekse emne, 70 00:03:14,210 --> 00:03:16,540 og du er gået temmelig meget for de næste 45 minutter. 71 00:03:16,540 --> 00:03:19,414 Og virkeligheden er, at uanset om du er her i New Haven eller Cambridge 72 00:03:19,414 --> 00:03:22,930 eller længere, enkelhed har evnen til at holde pause og spole frem, 73 00:03:22,930 --> 00:03:26,270 spole tilbage, hyperlink til relaterede ressourcer, søg fuld tekst udskrifter 74 00:03:26,270 --> 00:03:29,900 og lignende er en mulighed, Jeg tør sige for vores online studerende 75 00:03:29,900 --> 00:03:32,530 langt ud over New Haven, giver dem en mulighed 76 00:03:32,530 --> 00:03:34,700 til virkelig at forstå den konceptuelle materiale, som vi 77 00:03:34,700 --> 00:03:36,700 indføre i foredrag desto bedre. 78 00:03:36,700 --> 00:03:39,415 >> Men i sidste ende i CS50, er de studerendes erfaringer 79 00:03:39,415 --> 00:03:43,099 karakteriseres så, så meget mere ved kursets problemet sæt, 80 00:03:43,099 --> 00:03:46,140 eller ugentlige programmeringsprojekter, den kursets sektioner ledet af undervisningen 81 00:03:46,140 --> 00:03:49,600 stipendiater, de natlige kontortid ledet af kurset assistenter og undervisningen 82 00:03:49,600 --> 00:03:52,330 stipendiater og ja sådan begivenheder som CS50 Puzzle 83 00:03:52,330 --> 00:03:56,500 Day, CS50 s Hack-a-thon, det CS50 Fair, ugentlige frokoster, og så meget mere. 84 00:03:56,500 --> 00:03:59,580 Og så uanset om du er her i New Haven, eller tuning i langvejs fra, 85 00:03:59,580 --> 00:04:02,270 dag i Cambridge, og vi vil se dig igen snart, 86 00:04:02,270 --> 00:04:04,580 virkeligheden er det er én og samme klasse. 87 00:04:04,580 --> 00:04:07,990 Og vi er så glade for at være her alle sammen i dag. 88 00:04:07,990 --> 00:04:11,110 Og så i slutningen af ​​semestret, enten her eller afstand, godt 89 00:04:11,110 --> 00:04:14,910 forhåbentlig du bære med stolthed, glæde, og måske lidt af lettelse med, 90 00:04:14,910 --> 00:04:19,459 den skjorte, der vidner til dig at have taget CS50. 91 00:04:19,459 --> 00:04:21,700 >> Så hvor vi holder op på onsdag? 92 00:04:21,700 --> 00:04:24,410 Vi tog et kig på beregningsmæssige tænkning. 93 00:04:24,410 --> 00:04:27,830 Og det er i retning af, hvad vi destilleret datalogi til, i det mindste 94 00:04:27,830 --> 00:04:28,800 for nu. 95 00:04:28,800 --> 00:04:31,990 Men vi destilleret det lidt længere ind mindst tre komponenter elementer. 96 00:04:31,990 --> 00:04:34,570 >> Indgange, så hvad er det problem, vi prøver at løse? 97 00:04:34,570 --> 00:04:36,650 Udgange, hvad er besvare vi håber at få? 98 00:04:36,650 --> 00:04:38,210 Og repræsentation der for. 99 00:04:38,210 --> 00:04:41,870 Og vi vil ikke dvæle her på efter på binær eller endda ASCII, 100 00:04:41,870 --> 00:04:44,050 og lignende så meget, men snarere tager for givet 101 00:04:44,050 --> 00:04:47,520 at vi kan repræsentere denne information, fordi langt mere interessante dele 102 00:04:47,520 --> 00:04:51,010 af disse problemer er ikke blot den indgange og udgange, men algoritmer 103 00:04:51,010 --> 00:04:53,020 at gå ind i at løse disse problemer. 104 00:04:53,020 --> 00:04:55,120 >> Og du måske husker fra den anden dag, at vi 105 00:04:55,120 --> 00:04:59,860 tog en temmelig traditionelle Begrebet søger en person op 106 00:04:59,860 --> 00:05:03,240 i en temmelig stor telefonbog eller mere generelt digitalt i disse dage, 107 00:05:03,240 --> 00:05:04,420 blot et meget stort datasæt. 108 00:05:04,420 --> 00:05:07,840 En virkelig stor kontaktlisten, med masser af navne alfabetisk sorteret. 109 00:05:07,840 --> 00:05:11,310 Og vi indså, at mens jeg kunne nærme sig dette problem simpelthen 110 00:05:11,310 --> 00:05:14,520 ved anvendelse af en lineær approach-- side for side, 111 00:05:14,520 --> 00:05:17,775 eller endda to s på en time-- vi indså at jo mere intuitive algorithm-- 112 00:05:17,775 --> 00:05:20,840 bare lidt dividere og erobre problemet igen og igen, 113 00:05:20,840 --> 00:05:24,670 og igen-- halvere det med hver tid, gav os denne grønne resultat. 114 00:05:24,670 --> 00:05:27,080 Og det er så meget fladere fordi det antyder 115 00:05:27,080 --> 00:05:29,160 at selv som dette problem bliver større og større, 116 00:05:29,160 --> 00:05:32,470 som det er tilfældet i disse dage med data sæt og reality-- Facebook og Google 117 00:05:32,470 --> 00:05:34,630 søgeresultater og den like-- gør vores algoritme 118 00:05:34,630 --> 00:05:37,660 udføre lige så effektivt med disse større bid 119 00:05:37,660 --> 00:05:40,310 som det gjorde selv med de mindre bites. 120 00:05:40,310 --> 00:05:45,330 >> Nu rejser spørgsmålet, hvad kan vi faktisk løse tilsvarende 121 00:05:45,330 --> 00:05:46,820 med denne form for intuition? 122 00:05:46,820 --> 00:05:48,740 Denne form for splittelse og erobre? 123 00:05:48,740 --> 00:05:51,029 Tja, vi kunne gøre noget som denne dag her. 124 00:05:51,029 --> 00:05:52,070 Vi kunne tage fremmøde. 125 00:05:52,070 --> 00:05:56,102 Så måske gerne 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11-- 126 00:05:56,102 --> 00:05:57,560 ikke vil være alt det effektivt. 127 00:05:57,560 --> 00:05:58,990 Så vent, folkeskolen. 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 kunne vi gøre det lidt bedre? 130 00:06:04,140 --> 00:06:06,630 >> Jeg er temmelig sikker på, jeg ikke kan gøre dette ved mig selv. 131 00:06:06,630 --> 00:06:09,420 Så hvis du vil humor os for bare et øjeblik, vi bragt med os 132 00:06:09,420 --> 00:06:11,640 en algoritme, der er lige fået tre trin, 133 00:06:11,640 --> 00:06:15,130 men det require-- hvis du ikke mind-- os alle stå op, 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 alle os nu stående, trin en af ​​denne algoritme er følgende. 137 00:06:29,380 --> 00:06:31,680 Stå op og tildele selv nummer 1. 138 00:06:31,680 --> 00:06:34,180 Så på dette tidspunkt, bogstaveligt alle i dette rum 139 00:06:34,180 --> 00:06:38,830 forhåbentlig tænker på sig selv, imidlertid akavet, nummer 1. 140 00:06:38,830 --> 00:06:42,020 >> Nu trin to af denne algoritme er kommer til at involvere følgende. 141 00:06:42,020 --> 00:06:44,680 Trin to, parre sig med nogen stående, 142 00:06:44,680 --> 00:06:47,970 tilføje dine tal sammen, og vedtage beløbet som dit nye nummer. 143 00:06:47,970 --> 00:06:53,110 144 00:06:53,110 --> 00:06:55,620 Hurtig tilregnelighed check. 145 00:06:55,620 --> 00:06:58,180 Hvilket nummer er alle tænker på nu? 146 00:06:58,180 --> 00:07:01,930 >> Så 2, undtagen måske for en, akavet, ensom person. 147 00:07:01,930 --> 00:07:04,269 Hvis vi har et ulige antal af mennesker i lokalet. 148 00:07:04,269 --> 00:07:06,560 Så en person kan stadig være nummer 1, det er fint. 149 00:07:06,560 --> 00:07:09,440 Men trin tre her, en af jer skal sidde ned. 150 00:07:09,440 --> 00:07:13,620 Den anden skal gå tilbage til trin to, og gentag, hvis du ville. 151 00:07:13,620 --> 00:07:54,430 152 00:07:54,430 --> 00:07:58,240 >> Så hvis stadig stående, skal du være blandt dem, der går tilbage til trin to. 153 00:07:58,240 --> 00:08:13,910 154 00:08:13,910 --> 00:08:14,574 Bliv ved. 155 00:08:14,574 --> 00:08:20,790 156 00:08:20,790 --> 00:08:22,130 Nogle mennesker stadig stående. 157 00:08:22,130 --> 00:08:33,590 158 00:08:33,590 --> 00:08:35,614 >> Så hvis der stadig står, parre op med nogen. 159 00:08:35,614 --> 00:08:53,710 160 00:08:53,710 --> 00:08:55,020 Okay, svindende ned. 161 00:08:55,020 --> 00:09:06,394 162 00:09:06,394 --> 00:09:07,560 Nogle mennesker stadig stående. 163 00:09:07,560 --> 00:09:08,600 Jeg vil hjælpe, hvis nødvendigt. 164 00:09:08,600 --> 00:09:11,855 Husk nøglen takeaway her, er, hvordan meget hurtigere det er end mig tælle. 165 00:09:11,855 --> 00:09:15,090 166 00:09:15,090 --> 00:09:16,200 >> Så lad os se. 167 00:09:16,200 --> 00:09:16,900 Jeg kan hjælpe. 168 00:09:16,900 --> 00:09:19,425 Så hvad nummer er du stadig tænker 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 sætte sig ned. 171 00:09:22,400 --> 00:09:23,733 Hvilket nummer tænker du 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 Okay, gå videre og sætte sig ned. 175 00:09:28,380 --> 00:09:30,390 Hvem ellers er stadig stående? 176 00:09:30,390 --> 00:09:31,550 86. 177 00:09:31,550 --> 00:09:33,340 Og er nogen andre stadig stående? 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 derefter i toppen? 181 00:09:39,370 --> 00:09:40,900 32. 182 00:09:40,900 --> 00:09:44,230 Alle andre stadig stående og tænker på et nummer? 183 00:09:44,230 --> 00:09:44,730 >> Åh, hej. 184 00:09:44,730 --> 00:09:45,230 Undskyld. 185 00:09:45,230 --> 00:09:48,350 Er straks tilbage. 186 00:09:48,350 --> 00:09:49,520 42. 187 00:09:49,520 --> 00:09:51,758 Nogen 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 nogen andre stadig stående som ikke er blevet talt? 191 00:09:57,980 --> 00:10:06,450 Så det endelige antal personer i et værelse der har 497 pladser is-- 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 stor. 194 00:10:12,230 --> 00:10:16,435 >> Vi vil snart diskutere begrebet af en fejl i et computerprogram. 195 00:10:16,435 --> 00:10:19,660 Men vi vil vende tilbage til inden længe. 196 00:10:19,660 --> 00:10:22,440 Men i teorien, hvad der kan være sket lige nu? 197 00:10:22,440 --> 00:10:25,930 Så selv om der var tre store trin til denne algoritme, hver af dem 198 00:10:25,930 --> 00:10:27,510 var bare sådan en stor operation. 199 00:10:27,510 --> 00:10:31,020 Og der var denne cyclicity til det i, at hvis du stadig stod, 200 00:10:31,020 --> 00:10:34,870 du holdt går fra trin tre til to, trin tre til to, trin tre til to. 201 00:10:34,870 --> 00:10:37,330 >> Men hvad holdes sker på hver iteration? 202 00:10:37,330 --> 00:10:39,440 Hver cyklus af denne løkke? 203 00:10:39,440 --> 00:10:41,940 Hvad der skete andre steder i rummet? 204 00:10:41,940 --> 00:10:45,170 Ikke kun det samme, men hvad foregik til halvdelen af ​​jer? 205 00:10:45,170 --> 00:10:46,170 Sidder ned. 206 00:10:46,170 --> 00:10:49,710 Og så der i løgne denne indsigt, meget gerne telefonbog eksempel, 207 00:10:49,710 --> 00:10:52,050 i, at hvis halvdelen af ​​jer er sidder ned hver gang, 208 00:10:52,050 --> 00:10:54,560 problemet er begyndt med måske 400 mennesker, 209 00:10:54,560 --> 00:10:57,780 derefter til 200 mennesker, end 100 mennesker, derefter 50 personer, og så videre. 210 00:10:57,780 --> 00:11:00,660 >> Og så vi skære ned i teori til blot én person, 211 00:11:00,660 --> 00:11:02,830 tænker på den samlede værdi af alle. 212 00:11:02,830 --> 00:11:05,777 Nu virkelighed, nogle sociale dynamikker, og nogle regnefejl 213 00:11:05,777 --> 00:11:07,360 kan bidrage til det ultimative bug. 214 00:11:07,360 --> 00:11:10,300 Men i teorien, mens jeg var stadig tælle væk, 215 00:11:10,300 --> 00:11:12,860 tager flere dusin trin eller hundredvis af trin 216 00:11:12,860 --> 00:11:16,240 at tælle jer selv, for at tælle en stuen fuld af 500 eller så folk 217 00:11:16,240 --> 00:11:20,560 burde have taget langt færre trin, fordi du kun kan opdele 500 og 1/2 218 00:11:20,560 --> 00:11:21,350 så mange gange. 219 00:11:21,350 --> 00:11:24,120 Og så ligesom med telefonen bog eksempel den anden dag, 220 00:11:24,120 --> 00:11:26,740 gjorde vi har noget logaritmisk så at sige, 221 00:11:26,740 --> 00:11:28,870 hvorved hvis vi var alle opererer i fællesskab, 222 00:11:28,870 --> 00:11:32,000 og ignorerer tilføjelse fejl, ville vi 223 00:11:32,000 --> 00:11:34,140 har opnået nøjagtigt den slags køretid? 224 00:11:34,140 --> 00:11:37,900 >> Nu for at være fair, slags snydt, i at jeg gearede anden ressource. 225 00:11:37,900 --> 00:11:40,320 Det er bare en af ​​mig, Jeg gearede hundredvis af dig. 226 00:11:40,320 --> 00:11:43,340 Men der kan siges at være en eksempel på parallel behandling, 227 00:11:43,340 --> 00:11:46,400 eller en tilstand af kunst meget på mode hvor computere i disse dage har 228 00:11:46,400 --> 00:11:49,830 flere CPU'er, eller mere teknisk, mere flere kerner, 229 00:11:49,830 --> 00:11:52,550 og kan virkelig gøre flere ting på én gang, ligesom du 230 00:11:52,550 --> 00:11:54,706 alt, hvad vi laver der, parallelt. 231 00:11:54,706 --> 00:11:56,580 Men huske på, at det, vi også gjorde onsdag 232 00:11:56,580 --> 00:12:02,640 var at forsøge at indfange denne intuition og formalisere det i kode. 233 00:12:02,640 --> 00:12:04,165 Noget som pseudo-kode. 234 00:12:04,165 --> 00:12:07,040 Og i virkeligheden, og jeg håber, du vil tilgive, det er ligesom 80 grader i her. 235 00:12:07,040 --> 00:12:09,420 Så jeg har tænkt mig at tage denne off for bare en lille smule. 236 00:12:09,420 --> 00:12:12,410 Hvad jeg troede, vi ville gøre, er overgangen nu til et program, hvorved 237 00:12:12,410 --> 00:12:16,300 vi engagere igen publikum, men skrive et program på engelsk 238 00:12:16,300 --> 00:12:19,537 lignende syntaks, med til at løse dette problem her. 239 00:12:19,537 --> 00:12:20,203 [VIDEO PLAYBACK] 240 00:12:20,203 --> 00:12:22,266 -Det Er jordnøddesmør gelé tid. 241 00:12:22,266 --> 00:12:23,890 Jordnøddesmør gelé tid. 242 00:12:23,890 --> 00:12:25,620 Jordnøddesmør gelé tid. 243 00:12:25,620 --> 00:12:26,320 >> Måde ya! 244 00:12:26,320 --> 00:12:26,927 Måde ya! 245 00:12:26,927 --> 00:12:27,781 Måde ya! 246 00:12:27,781 --> 00:12:28,350 Måde ya! 247 00:12:28,350 --> 00:12:29,723 Nu er der du går! 248 00:12:29,723 --> 00:12:30,264 Værs'go! 249 00:12:30,264 --> 00:12:30,805 Værs'go! 250 00:12:30,805 --> 00:12:31,710 Værs'go! 251 00:12:31,710 --> 00:12:33,156 Jordnøddesmør gelé! 252 00:12:33,156 --> 00:12:34,602 Jordnøddesmør gelé! 253 00:12:34,602 --> 00:12:36,530 >> Jordnøddesmør gelé! 254 00:12:36,530 --> 00:12:37,494 Jordnøddesmør gelé! 255 00:12:37,494 --> 00:12:38,940 Peanut, jordnøddesmør gelé! 256 00:12:38,940 --> 00:12:39,904 Jordnøddesmør gelé! 257 00:12:39,904 --> 00:12:41,840 Jordnøddesmør gelé med et baseball bat. 258 00:12:41,840 --> 00:12:42,423 >> [END AFSPIL] 259 00:12:42,423 --> 00:12:45,510 DAVID J. MALAN: --that video, men det er lidt 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 at gøre dette, tænkte jeg, hvad vi havde gøre, er at forsøge at skrive et program sammen, 262 00:12:49,623 --> 00:12:51,870 som vi har brug for tre frivillige. 263 00:12:51,870 --> 00:12:54,350 Nødt til at være komfortable på kamera og internet. 264 00:12:54,350 --> 00:12:57,820 Sam, kom op. 265 00:12:57,820 --> 00:12:59,830 Lilla skjorte, lige her, kom op. 266 00:12:59,830 --> 00:13:03,470 >> Og fra herovre, lad mig gå lidt længere tilbage. 267 00:13:03,470 --> 00:13:05,280 Crimson og blå skjorter, kom op. 268 00:13:05,280 --> 00:13:06,980 Perfekt. 269 00:13:06,980 --> 00:13:09,790 Kom nu. 270 00:13:09,790 --> 00:13:12,490 Kom op, kom op. 271 00:13:12,490 --> 00:13:13,581 >> Og hvad er dit navn? 272 00:13:13,581 --> 00:13:14,080 Erica. 273 00:13:14,080 --> 00:13:15,289 David rart at møde dig. 274 00:13:15,289 --> 00:13:16,830 Hvis du gerne vil tage denne plads her. 275 00:13:16,830 --> 00:13:17,900 Det er Sam. 276 00:13:17,900 --> 00:13:19,690 >> Hvad er dit navn? 277 00:13:19,690 --> 00:13:20,260 Antonio. 278 00:13:20,260 --> 00:13:21,595 Antonio, rart at møde dig. 279 00:13:21,595 --> 00:13:23,790 Erica og Sam, hvis du ville gerne have en plads her. 280 00:13:23,790 --> 00:13:26,700 Hvad vi er kommet forberedt med, da disse fyre er ved at opdage, 281 00:13:26,700 --> 00:13:30,580 er de ingredienser med til at gøre en jordnøddesmør og gelé sandwich. 282 00:13:30,580 --> 00:13:33,520 >> Nu er dette måske noget, du tager meget for givet. 283 00:13:33,520 --> 00:13:35,430 Men vi har givet hver af vores tre frivillige 284 00:13:35,430 --> 00:13:40,500 her-- to frivillige og Sam her, en brød hver, en plade, en kniv, 285 00:13:40,500 --> 00:13:43,740 en krukke med gelé eller marmelade, og en krukke med jordnøddesmør. 286 00:13:43,740 --> 00:13:46,190 Og målet ved hånden nu er vil være for disse tre 287 00:13:46,190 --> 00:13:48,030 at foretage en jordnøddesmør og gelé sandwich. 288 00:13:48,030 --> 00:13:51,000 Men hvad vi vil gøre, er at forvente, den audience-- da alle jer 289 00:13:51,000 --> 00:13:53,710 sikkert ved, hvordan man gør det så godt i reality-- 290 00:13:53,710 --> 00:13:56,380 kommer til at give os trin for trin instruktioner. 291 00:13:56,380 --> 00:13:57,970 Den pseudo-kode, hvis du vil. 292 00:13:57,970 --> 00:13:59,922 >> Så jeg vil spille rollen som skriftklog her. 293 00:13:59,922 --> 00:14:02,880 Og jeg har lidt to-do liste, og så hver af jer, en ad gangen, 294 00:14:02,880 --> 00:14:04,588 kalder en potentiel instruktions, jeg vil 295 00:14:04,588 --> 00:14:06,110 skrive det ned, skal du gentage den efter behov. 296 00:14:06,110 --> 00:14:09,650 Og så du fyre vil gøre en jordnøddesmør og gelé sandwich 297 00:14:09,650 --> 00:14:11,171 kun ved at gøre, hvad du får at vide. 298 00:14:11,171 --> 00:14:12,670 Så tænk på jer selv som computere. 299 00:14:12,670 --> 00:14:13,740 >> Du kan kun gøre, hvad du får at vide. 300 00:14:13,740 --> 00:14:14,948 Ingen forudsætninger, ingen spørgsmål. 301 00:14:14,948 --> 00:14:16,660 Du skal bare nødt til at gøre det. 302 00:14:16,660 --> 00:14:20,460 Så der gerne vil vove den første instruktion for at gøre en PBJ sandwich? 303 00:14:20,460 --> 00:14:21,460 På balkonen er der. 304 00:14:21,460 --> 00:14:22,801 >> PUBLIKUM: Åbn posen med brød. 305 00:14:22,801 --> 00:14:26,430 >> DAVID J. MALAN: Åbn pose brød, hvis du vil. 306 00:14:26,430 --> 00:14:34,440 307 00:14:34,440 --> 00:14:35,230 Så lad os se. 308 00:14:35,230 --> 00:14:37,910 Lad os gentage, og få lidt mere præcis. 309 00:14:37,910 --> 00:14:39,040 >> God måde at starte selv. 310 00:14:39,040 --> 00:14:42,340 Trin to, en anden. 311 00:14:42,340 --> 00:14:43,590 Nu ingen ønsker at arbejde frivilligt. 312 00:14:43,590 --> 00:14:44,616 Trin to, foran. 313 00:14:44,616 --> 00:14:46,532 PUBLIKUM: Åbn den indre pose brød samt. 314 00:14:46,532 --> 00:14:50,600 DAVID J. MALAN: Åbn indvendig sæk af brød samt. 315 00:14:50,600 --> 00:14:51,880 Store, vi lærer. 316 00:14:51,880 --> 00:14:57,880 317 00:14:57,880 --> 00:14:59,090 Lidt mere præcis. 318 00:14:59,090 --> 00:15:00,240 Lad os få denne arbejdsgruppe. 319 00:15:00,240 --> 00:15:01,180 Ja, i grøn skjorte. 320 00:15:01,180 --> 00:15:04,608 >> PUBLIKUM: [uhørligt] 321 00:15:04,608 --> 00:15:05,108 322 00:15:05,108 --> 00:15:09,040 DAVID J. MALAN: Skiver af brød. 323 00:15:09,040 --> 00:15:11,110 Fjern forsigtigt to skiver brød. 324 00:15:11,110 --> 00:15:20,350 325 00:15:20,350 --> 00:15:21,000 Det er godt. 326 00:15:21,000 --> 00:15:24,300 Trin fire, en anden? 327 00:15:24,300 --> 00:15:25,170 Herovre, ja? 328 00:15:25,170 --> 00:15:26,130 >> PUBLIKUM: [uhørligt] 329 00:15:26,130 --> 00:15:28,810 >> DAVID J. MALAN: Sted brød på plade. 330 00:15:28,810 --> 00:15:33,490 331 00:15:33,490 --> 00:15:35,290 Trin fem? 332 00:15:35,290 --> 00:15:36,020 Trin fem, ja? 333 00:15:36,020 --> 00:15:39,440 >> PUBLIKUM: [uhørligt] 334 00:15:39,440 --> 00:15:39,940 335 00:15:39,940 --> 00:15:43,860 DAVID J. MALAN: På toppen of-- åh, hånd. 336 00:15:43,860 --> 00:15:46,967 Placer hånden på toppen af ​​jordnøddesmør. 337 00:15:46,967 --> 00:15:47,800 Er, at hvad jeg hovedet? 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-- sige det igen. 340 00:15:51,370 --> 00:15:52,696 >> PUBLIKUM: [uhørligt] 341 00:15:52,696 --> 00:15:57,990 >> DAVID J. MALAN: Og sætte låg ved siden af ​​jordnøddesmør. 342 00:15:57,990 --> 00:16:00,370 Let at placere hånden på toppen af ​​jordnøddesmør, 343 00:16:00,370 --> 00:16:03,240 og skru, og læg låg siden af ​​jordnøddesmør. 344 00:16:03,240 --> 00:16:14,760 345 00:16:14,760 --> 00:16:16,260 OK, trin seks. 346 00:16:16,260 --> 00:16:17,520 Trin seks, en anden. 347 00:16:17,520 --> 00:16:19,366 Ja? 348 00:16:19,366 --> 00:16:22,740 >> PUBLIKUM: [uhørligt] 349 00:16:22,740 --> 00:16:29,197 350 00:16:29,197 --> 00:16:30,405 DAVID J. MALAN: Sig det igen. 351 00:16:30,405 --> 00:16:31,946 PUBLIKUM: Gentag trin fem igen. 352 00:16:31,946 --> 00:16:37,380 DAVID J. MALAN: Og gentage trin fem igen, 353 00:16:37,380 --> 00:16:39,400 der vil skabe lidt af et problem 354 00:16:39,400 --> 00:16:42,600 nu, hvis vi gør dette skridt for skridt. 355 00:16:42,600 --> 00:16:44,640 Så nu går vi tilbage til trin fem. 356 00:16:44,640 --> 00:16:47,760 Let at placere hånden på toppen af jordnøddesmør og skru 357 00:16:47,760 --> 00:16:50,990 og sætte låg ved siden af ​​jordnøddesmør. 358 00:16:50,990 --> 00:16:55,340 Så fat i jordnøddesmør og gentag trin fem igen. 359 00:16:55,340 --> 00:16:58,410 >> Så vi vil negligere den uendelig løkke, hvis du vil. 360 00:16:58,410 --> 00:17:00,400 Trin syv, en anden. 361 00:17:00,400 --> 00:17:02,918 Ja, i ryggen. 362 00:17:02,918 --> 00:17:06,397 >> PUBLIKUM: [uhørligt] 363 00:17:06,397 --> 00:17:16,084 364 00:17:16,084 --> 00:17:17,769 >> DAVID J. MALAN: --on oven på andet. 365 00:17:17,769 --> 00:17:20,529 >> PUBLIKUM: [uhørligt] 366 00:17:20,529 --> 00:17:23,175 >> DAVID J. MALAN: På anden hånd på den anden toppen. 367 00:17:23,175 --> 00:17:28,880 368 00:17:28,880 --> 00:17:30,895 Vil du bare komme herop? 369 00:17:30,895 --> 00:17:34,750 Hvordan kan jeg afslutte instruktion? 370 00:17:34,750 --> 00:17:37,790 Hvad er resten af ​​instruktionen? 371 00:17:37,790 --> 00:17:39,140 >> PUBLIKUM: Ignorerer denne del. 372 00:17:39,140 --> 00:17:41,050 >> DAVID J. MALAN: Ignorerer denne del. 373 00:17:41,050 --> 00:17:44,192 374 00:17:44,192 --> 00:17:44,900 Lad os starte forfra. 375 00:17:44,900 --> 00:17:45,400 Trin syv. 376 00:17:45,400 --> 00:17:48,516 377 00:17:48,516 --> 00:17:51,883 >> PUBLIKUM: [uhørligt] 378 00:17:51,883 --> 00:17:56,090 >> DAVID J. MALAN: Tag fat med modsatrettede hand-- det er godt. 379 00:17:56,090 --> 00:17:58,544 Det er faktisk godt. 380 00:17:58,544 --> 00:18:01,750 >> PUBLIKUM: [uhørligt] 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ørligt] 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ørligt] 385 00:18:11,488 --> 00:18:13,730 >> DAVID J. MALAN: I to sekunder. 386 00:18:13,730 --> 00:18:15,800 Bare åbne jordnøddesmør krukke. 387 00:18:15,800 --> 00:18:19,020 388 00:18:19,020 --> 00:18:20,632 Jeg håber du vil tilgive. 389 00:18:20,632 --> 00:18:21,840 Så lad os antage, vi fik der. 390 00:18:21,840 --> 00:18:23,240 Åbn jordnøddesmør krukke. 391 00:18:23,240 --> 00:18:27,008 392 00:18:27,008 --> 00:18:32,570 >> [Applaus] 393 00:18:32,570 --> 00:18:34,790 >> DAVID J. MALAN: Trin otte, lad os gå. 394 00:18:34,790 --> 00:18:37,510 Trin otte, ja, i ryggen. 395 00:18:37,510 --> 00:18:38,470 >> PUBLIKUM: [uhørligt] 396 00:18:38,470 --> 00:18:44,772 397 00:18:44,772 --> 00:18:45,700 >> DAVID J. MALAN: Godt. 398 00:18:45,700 --> 00:18:47,040 Trin ni, ja? 399 00:18:47,040 --> 00:18:48,924 >> PUBLIKUM: [uhørligt] 400 00:18:48,924 --> 00:18:51,567 >> DAVID J. MALAN: --out af Jordnøddesmør krukken. 401 00:18:51,567 --> 00:18:53,830 Og-- og hvad? 402 00:18:53,830 --> 00:18:54,729 >> PUBLIKUM: [uhørligt] 403 00:18:54,729 --> 00:18:58,222 >> DAVID J. MALAN: Og sætte kniv tilbage i jordnøddesmør. 404 00:18:58,222 --> 00:19:11,130 405 00:19:11,130 --> 00:19:12,090 Trin ti. 406 00:19:12,090 --> 00:19:13,050 Trin ti. 407 00:19:13,050 --> 00:19:14,970 >> PUBLIKUM: [uhørligt] 408 00:19:14,970 --> 00:19:20,710 >> DAVID J. MALAN: Sæt kniven ud, og derefter fjerne forseglingen. 409 00:19:20,710 --> 00:19:23,060 Nice. 410 00:19:23,060 --> 00:19:24,400 Off the jordnøddesmør. 411 00:19:24,400 --> 00:19:34,490 412 00:19:34,490 --> 00:19:36,406 Okay, trin 11. 413 00:19:36,406 --> 00:19:37,322 >> PUBLIKUM: [uhørligt] 414 00:19:37,322 --> 00:19:42,520 415 00:19:42,520 --> 00:19:48,164 >> DAVID J. MALAN: OK, grå computer følg blå eller rød computer. 416 00:19:48,164 --> 00:19:49,631 Godt. 417 00:19:49,631 --> 00:19:53,054 >> [Applaus] 418 00:19:53,054 --> 00:19:55,920 419 00:19:55,920 --> 00:19:57,170 DAVID J. MALAN: Bring os hjem. 420 00:19:57,170 --> 00:19:59,570 Par flere trin. 421 00:19:59,570 --> 00:20:00,250 Hvad bliver det næste? 422 00:20:00,250 --> 00:20:02,590 Trin 12. 423 00:20:02,590 --> 00:20:04,161 Trin 12. 424 00:20:04,161 --> 00:20:05,123 Ja? 425 00:20:05,123 --> 00:20:14,262 >> PUBLIKUM: Sæt en af ​​skiver af brød forsigtigt på en af ​​dine hænder. 426 00:20:14,262 --> 00:20:17,550 >> DAVID J. MALAN: En af dine hænder. 427 00:20:17,550 --> 00:20:20,760 Og så, trin 13. 428 00:20:20,760 --> 00:20:21,260 Ja? 429 00:20:21,260 --> 00:20:22,220 >> PUBLIKUM: [uhørligt] 430 00:20:22,220 --> 00:20:25,580 431 00:20:25,580 --> 00:20:27,150 >> DAVID J. MALAN: --on skive brød. 432 00:20:27,150 --> 00:20:29,950 Godt. 433 00:20:29,950 --> 00:20:32,260 Ret godt. 434 00:20:32,260 --> 00:20:34,990 Trin 14, ja. 435 00:20:34,990 --> 00:20:38,126 >> PUBLIKUM: Fortryd trin 13. 436 00:20:38,126 --> 00:20:39,950 >> DAVID J. MALAN: Fortryd trin 13. 437 00:20:39,950 --> 00:20:42,690 438 00:20:42,690 --> 00:20:44,770 Lad os gå videre til gelé. 439 00:20:44,770 --> 00:20:47,900 Det er en 100- trin program, men vi var på trin 15. 440 00:20:47,900 --> 00:20:49,210 Ja. 441 00:20:49,210 --> 00:20:50,170 >> PUBLIKUM: [uhørligt] 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 hjælp af gelé, fordi dem gik så godt. 444 00:20:59,570 --> 00:21:02,530 Gentag trin 7 til 13, ved hjælp af gelé. 445 00:21:02,530 --> 00:21:07,940 Så forstå nederste halvdel af gelé krukke med den ene hånd på toppen. 446 00:21:07,940 --> 00:21:11,970 På den anden side af anden top, ignorere denne del, 447 00:21:11,970 --> 00:21:15,430 fat med modsatrettede hænder, låget og plastbeholder 448 00:21:15,430 --> 00:21:18,300 nederst, og twist i to sekunder. 449 00:21:18,300 --> 00:21:19,940 Derefter åbne gelé krukke. 450 00:21:19,940 --> 00:21:23,290 451 00:21:23,290 --> 00:21:26,580 Og endelig, lad os prøve at give os noget spiseligt. 452 00:21:26,580 --> 00:21:27,270 Trin 16. 453 00:21:27,270 --> 00:21:35,820 454 00:21:35,820 --> 00:21:37,130 Så hvorfor gør vi ikke forlade det der. 455 00:21:37,130 --> 00:21:38,879 Tak så meget til vores tre frivillige. 456 00:21:38,879 --> 00:21:41,466 [Applaus] 457 00:21:41,466 --> 00:21:45,920 458 00:21:45,920 --> 00:21:50,300 >> Vi har en lille CS50 stress bold for dig. 459 00:21:50,300 --> 00:21:54,540 Det skulle være en sandwich men-- hvad så 460 00:21:54,540 --> 00:21:57,130 var punktet, ud over at have en lidt sjov med den algoritme? 461 00:21:57,130 --> 00:22:00,140 Men virkeligheden er, at selv når du programmere en computer, 462 00:22:00,140 --> 00:22:02,050 du nødt til at være super præcis. 463 00:22:02,050 --> 00:22:04,030 Så komplekst eller truende som din egen computer 464 00:22:04,030 --> 00:22:06,670 kan meget vel være for dig, ved mindst når noget går galt, 465 00:22:06,670 --> 00:22:10,150 virkeligheden er det en temmelig dum enhed, der blev opfundet af os mennesker, 466 00:22:10,150 --> 00:22:13,267 og kan kun gøre en delmængde af det, vi do-- tider sikkert faster-- 467 00:22:13,267 --> 00:22:15,100 men det gør ikke, hvordan at gøre antagelser. 468 00:22:15,100 --> 00:22:18,070 Det er ikke, hvordan at være på samme bølgelængde som dig. 469 00:22:18,070 --> 00:22:20,280 >> Det vil kun gøre præcist hvad du fortæller det. 470 00:22:20,280 --> 00:22:22,070 Og du vil blive ramt, måske, som vi begynder 471 00:22:22,070 --> 00:22:24,770 skrive konkrete kode med Første problem sæt og uden for, 472 00:22:24,770 --> 00:22:27,490 hvor nemt det er at gøre en antagelse som menneske, 473 00:22:27,490 --> 00:22:31,880 og ikke forventer jeg nødt til at håndtere så fald eller dette hjørne tilfælde 474 00:22:31,880 --> 00:22:34,900 så at sige, der kan meget vel opstå, hvis for eksempel Sam havde den eneste 475 00:22:34,900 --> 00:22:38,711 squeezable krukke med gelé, hvorimod alle andre havde nogle glas som 476 00:22:38,711 --> 00:22:39,210 godt. 477 00:22:39,210 --> 00:22:42,170 Så før vi vende vores opmærksomheden på nogle konkrete kode, 478 00:22:42,170 --> 00:22:44,680 tillad mig at introducere kursets hoveder her på Yale. 479 00:22:44,680 --> 00:22:49,058 Vores venner SCAZ, Andy, og Jason til at komme op og sige hej. 480 00:22:49,058 --> 00:22:52,544 >> [Applaus] 481 00:22:52,544 --> 00:22:58,022 482 00:22:58,022 --> 00:23:01,060 >> SCAZ: Vi har mistet Jason midlertidigt. 483 00:23:01,060 --> 00:23:02,440 Hej igen, alle. 484 00:23:02,440 --> 00:23:03,610 Mit navn er SCAZ. 485 00:23:03,610 --> 00:23:06,860 Jeg har undervist på Yale siden 2001. 486 00:23:06,860 --> 00:23:10,820 Og når jeg ikke underviser, min forskning er i robotteknologi 487 00:23:10,820 --> 00:23:12,620 og kunstig intelligens. 488 00:23:12,620 --> 00:23:17,700 >> Og meddelelsen om, at jeg har i dag er, at der starter i et par uger, 489 00:23:17,700 --> 00:23:22,170 vi vil være at bringe nogle supplerende materiale til CS50 at tale 490 00:23:22,170 --> 00:23:24,510 om intelligence software. 491 00:23:24,510 --> 00:23:28,230 Vi kommer til at tale om, hvordan steder som Netflix og Hulu 492 00:23:28,230 --> 00:23:31,780 kan anbefale film du måske ønsker at se. 493 00:23:31,780 --> 00:23:35,710 Hvor vi vil tale om, hvordan driver-mindre biler rent faktisk arbejder. 494 00:23:35,710 --> 00:23:39,020 Og vi vil være i stand til at jorde disse ting i de begreber 495 00:23:39,020 --> 00:23:41,730 at du lærer i denne klasse i dag. 496 00:23:41,730 --> 00:23:45,410 >> Fordi alle disse ting er bygget på samme fundament. 497 00:23:45,410 --> 00:23:47,396 Og det er, hvad dette serien vil udforske. 498 00:23:47,396 --> 00:23:49,520 Så jeg ser virkelig frem til at se flere af jer 499 00:23:49,520 --> 00:23:53,260 alle, og du kommer til at komme til se mere fra os alle meget snart. 500 00:23:53,260 --> 00:23:56,500 Lad mig derefter introducere Jason. 501 00:23:56,500 --> 00:23:57,950 >> JASON: Hej alle. 502 00:23:57,950 --> 00:23:59,290 Mit navn er Jason. 503 00:23:59,290 --> 00:24:03,540 Jeg gik desværre til Harvard som en bachelorstuderendes. 504 00:24:03,540 --> 00:24:07,020 Det kommer til at få skåret ud af den faktiske strøm. 505 00:24:07,020 --> 00:24:09,870 >> Og nu er jeg her som en lektor i datalogi afdelingen. 506 00:24:09,870 --> 00:24:14,825 Og jeg hjælpe kø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 Mit navn er Andy. 509 00:24:17,980 --> 00:24:21,992 Jeg er faktisk det eneste Yale studerende på scenen lige nu. 510 00:24:21,992 --> 00:24:25,464 >> [Applaus] 511 00:24:25,464 --> 00:24:29,440 512 00:24:29,440 --> 00:24:31,770 >> Jeg er i Berkeley College, oprindeligt 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 af ​​de børn hvor, hvornår jeg kom til Yale, 515 00:24:37,930 --> 00:24:42,030 Jeg troede virkelig, at jeg ville aldrig nødt til at se på en række nogensinde igen. 516 00:24:42,030 --> 00:24:46,240 Og så indså jeg, at du havde brug for både videnskab og QR credits at opgradere. 517 00:24:46,240 --> 00:24:51,340 Og så mit første forår, tog jeg en klasse, en CS, intro CS klasse her 518 00:24:51,340 --> 00:24:52,230 på Yale. 519 00:24:52,230 --> 00:24:54,710 Jeg var ligesom, det er ligesom faktisk temmelig cool. 520 00:24:54,710 --> 00:25:01,330 >> Og mens jeg faktisk endte erklære Som en global anliggender stor, de færdigheder 521 00:25:01,330 --> 00:25:04,910 Jeg lærte i CS og programmering er så anvendes på ethvert område 522 00:25:04,910 --> 00:25:05,970 du vælger at gøre. 523 00:25:05,970 --> 00:25:09,770 Og personalet her på Yale, vi har været så hårdt på arbejde 524 00:25:09,770 --> 00:25:10,800 at forberede jer. 525 00:25:10,800 --> 00:25:13,410 Og vi ser frem til at se alle i afsnittet og kontortid. 526 00:25:13,410 --> 00:25:14,874 Så ja. 527 00:25:14,874 --> 00:25:18,178 >> [Applaus] 528 00:25:18,178 --> 00:25:19,297 529 00:25:19,297 --> 00:25:20,380 DAVID J. MALAN: Tak. 530 00:25:20,380 --> 00:25:22,940 Så lige før timen begyndte, vi havde en mulighed 531 00:25:22,940 --> 00:25:25,660 at gå rundt campus med en mobiltelefon og tage 532 00:25:25,660 --> 00:25:30,530 nogle selfies i video form af virkelig min første tur til Yale campus her. 533 00:25:30,530 --> 00:25:35,420 Og så vi troede, vi ville dele en ru skåret over præcis dette som SCAZ og Andy 534 00:25:35,420 --> 00:25:37,970 og Jason tog mig omkring 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 at se dig. 541 00:25:50,840 --> 00:25:52,410 -Dejligt at se dig. 542 00:25:52,410 --> 00:25:53,340 -Kan Vi gå på en tur? 543 00:25:53,340 --> 00:25:56,845 -Lad Os gå på en turné. 544 00:25:56,845 --> 00:25:57,523 -Road Tur. 545 00:25:57,523 --> 00:25:59,106 -Denne Tegn har været der i et stykke tid. 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ørligt] Harkness Tower. 551 00:26:12,340 --> 00:26:13,850 >> -Og Vi så, at et par gange. 552 00:26:13,850 --> 00:26:16,760 553 00:26:16,760 --> 00:26:20,155 >> [Applaus] 554 00:26:20,155 --> 00:26:21,130 555 00:26:21,130 --> 00:26:22,890 >> -Se Ud til cyklen! 556 00:26:22,890 --> 00:26:24,500 Ahh! 557 00:26:24,500 --> 00:26:25,030 Hi Frank. 558 00:26:25,030 --> 00:26:26,314 >> -Hvad Er op, gutter? 559 00:26:26,314 --> 00:26:26,855 -Hvordan har du det? 560 00:26:26,855 --> 00:26:28,474 -Godt at se dig. 561 00:26:28,474 --> 00:26:29,390 -Velkommen Til videoen. 562 00:26:29,390 --> 00:26:32,270 Må ikke handle alt for ophidset. 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æret omkring tre timer siden Jason havde is og Nutella. 566 00:26:39,780 --> 00:26:43,189 Så vi er nødt til at stoppe tilbage på Silliman for en lille smule. 567 00:26:43,189 --> 00:26:45,137 >> -Det Er ikke engang [uhørligt] endnu, bare det faktum 568 00:26:45,137 --> 00:26:47,270 at de har det her er så fantastisk. 569 00:26:47,270 --> 00:26:49,830 Dude, der er Nutella ved hvert måltid. 570 00:26:49,830 --> 00:26:51,830 >> -Der Var sidste år også. 571 00:26:51,830 --> 00:26:54,220 >> -Ja. 572 00:26:54,220 --> 00:26:56,440 >> -tell meget om Yale hidtil. 573 00:26:56,440 --> 00:26:58,485 Men jeg tror nu, at der er TD derovre. 574 00:26:58,485 --> 00:26:59,860 Og det anses for 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 nogle mere gotisk arkitektur. 578 00:27:06,758 --> 00:27:10,614 Og byggeri, og mere gotisk arkitektur. 579 00:27:10,614 --> 00:27:11,114 Hej. 580 00:27:11,114 --> 00:27:15,470 Det er her, vi har kontortid Tirsdage gennem torsdage i Hogwarts, 581 00:27:15,470 --> 00:27:16,922 som [uhørligt]. 582 00:27:16,922 --> 00:27:20,620 583 00:27:20,620 --> 00:27:21,120 -Okay. 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 foredrag er ved at finde sted. 587 00:27:25,870 --> 00:27:29,220 Lad os hovedet på. 588 00:27:29,220 --> 00:27:30,375 >> [END AFSPIL] 589 00:27:30,375 --> 00:27:32,370 >> DAVID J. MALAN: Og der bringer os her nu. 590 00:27:32,370 --> 00:27:38,040 591 00:27:38,040 --> 00:27:40,770 Så indtil videre har vi været fokus på pseudokode, 592 00:27:40,770 --> 00:27:42,430 som er det engelske-lignende syntaks. 593 00:27:42,430 --> 00:27:45,030 Det har ingen foreskrevne specifikation. 594 00:27:45,030 --> 00:27:47,030 Det er bare du bruge nogle intuitiv sprog, hvis du 595 00:27:47,030 --> 00:27:48,950 ønsker at forklare, hvad du vil gøre. 596 00:27:48,950 --> 00:27:52,270 >> Men lad os begynde nu til overgangen til koden, som de fleste mennesker ville sige. 597 00:27:52,270 --> 00:27:54,880 Men mere præcist, noget kendt som kildekode. 598 00:27:54,880 --> 00:27:58,210 Det er det sprog, der mennesker skriver, at computere ultimately-- 599 00:27:58,210 --> 00:28:00,780 eventuelt efter et bestemt antal steps-- sidste ende forstår 600 00:28:00,780 --> 00:28:02,530 således at vide, hvordan man gør noget. 601 00:28:02,530 --> 00:28:05,120 At du så et glimt af dette måske på onsdag. 602 00:28:05,120 --> 00:28:07,780 >> Dette er et eksempel, utroligt, underwhelming 603 00:28:07,780 --> 00:28:10,220 når den køres simpelthen siger "hej verden". 604 00:28:10,220 --> 00:28:13,510 Og det er skrevet på et sprog kaldet C, som er syntaktisk meget ens 605 00:28:13,510 --> 00:28:15,676 til en masse andre sprog som du måske ikke kender, 606 00:28:15,676 --> 00:28:18,409 men måske har hørt om som Java, og C ++ og Python og Ruby, 607 00:28:18,409 --> 00:28:21,200 og lignende, og faktisk, vi får bruger meget af semestret ved hjælp af C, 608 00:28:21,200 --> 00:28:23,530 og derefter mod slutningen af semester, der bygger på det, 609 00:28:23,530 --> 00:28:25,446 og indføre enhver række andre sprog. 610 00:28:25,446 --> 00:28:28,810 Blandt dem PHP, og JavaScript, en database sprog kaldes SQL. 611 00:28:28,810 --> 00:28:31,526 Men med C, hvad vi vil have denne bottom-up-forståelse 612 00:28:31,526 --> 00:28:33,900 af præcis hvordan computere arbejde, hvad du kan gøre med dem, 613 00:28:33,900 --> 00:28:37,252 og hvordan du kan løse problemer desto mere effektivt af denne 614 00:28:37,252 --> 00:28:39,460 lagdeling, at vi diskuterede på onsdag, og stående 615 00:28:39,460 --> 00:28:40,870 på skuldrene af andre. 616 00:28:40,870 --> 00:28:42,200 Men mere om det at komme. 617 00:28:42,200 --> 00:28:46,650 >> I dag ser vi på en enklere miljø, men en fundamentalt identiske 618 00:28:46,650 --> 00:28:49,970 miljø kendt som Scratch af vores venner på MIT Media Lab. 619 00:28:49,970 --> 00:28:52,570 Dette er en grafisk programmeringssprog, Scratch, 620 00:28:52,570 --> 00:28:54,330 hvorved du kan trække og slip ting, 621 00:28:54,330 --> 00:28:57,430 ligner puslespilsbrikker, der kun interlock hvis det gør 622 00:28:57,430 --> 00:28:59,872 logisk eller programmatisk mening at gøre det. 623 00:28:59,872 --> 00:29:02,330 Men det kommer til at tillade os at have en samtale om alle 624 00:29:02,330 --> 00:29:04,604 af samme programmering fundamentals at nogle af jer 625 00:29:04,604 --> 00:29:06,520 måske ved allerede, at mange af jer måske ikke 626 00:29:06,520 --> 00:29:09,670 vide noget af uden at at køre fast ærligt, 627 00:29:09,670 --> 00:29:13,150 i intellektuelt uinteressant syntaks af semikoloner, 628 00:29:13,150 --> 00:29:14,950 og parenteser, og citerer og lignende. 629 00:29:14,950 --> 00:29:16,910 Som alle, tidlig på, er en distraktion 630 00:29:16,910 --> 00:29:20,322 til hvad er interessante og virkelig nyttige idéer. 631 00:29:20,322 --> 00:29:22,280 Så lad os tage et hurtigt blik på miljøet 632 00:29:22,280 --> 00:29:24,180 her, så du ved, hvad der venter. 633 00:29:24,180 --> 00:29:28,060 Og i virkeligheden, blandt de spil, vi kan spille er et par programmer skrevet 634 00:29:28,060 --> 00:29:30,810 af CS50 egne tidligere studerende. 635 00:29:30,810 --> 00:29:36,200 En af dem, mig selv, jeg vil være denne ene skrevet i graduate skole for mig. 636 00:29:36,200 --> 00:29:39,030 >> Hvis jeg kunne tage en frivillig der er villig til at spille 637 00:29:39,030 --> 00:29:40,420 et spil for første gang. 638 00:29:40,420 --> 00:29:40,920 Sikker. 639 00:29:40,920 --> 00:29:41,690 Kom op. 640 00:29:41,690 --> 00:29:42,565 Hvad er dit navn? 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 op. 643 00:29:44,830 --> 00:29:47,220 Så Scratch har været ude i et par år. 644 00:29:47,220 --> 00:29:49,960 Og da jeg var i graduate skole, Jeg var kors, der er registreret på MIT, 645 00:29:49,960 --> 00:29:53,392 tager professor Mitchel Resnick s kursus om pædagogiske teknologier. 646 00:29:53,392 --> 00:29:56,350 Og vi var blandt de allerførste studerende i verden til rent faktisk beta 647 00:29:56,350 --> 00:29:57,120 test Scratch. 648 00:29:57,120 --> 00:30:00,090 Og mit projekt var, hvad Angela har nu allernådigst frivilligt 649 00:30:00,090 --> 00:30:02,060 at spille kaldt oscartime. 650 00:30:02,060 --> 00:30:04,507 >> Så jeg har tænkt mig at gå videre og dobbeltklikke på ikonet her. 651 00:30:04,507 --> 00:30:07,590 Det kommer til at åbne op for en programmering miljø, at vi snart vil dykke ned i. 652 00:30:07,590 --> 00:30:09,720 Jeg har tænkt mig at fuld skærm det for Angela, her. 653 00:30:09,720 --> 00:30:12,490 Jeg har tænkt mig at ramme den grønne flag på blot et øjeblik. 654 00:30:12,490 --> 00:30:15,130 Og så en hel masse skrald kommer til at falde fra himlen. 655 00:30:15,130 --> 00:30:17,830 Og du kommer til at bruge musen her til rent faktisk at trække og slippe 656 00:30:17,830 --> 00:30:20,169 papirkurven i Oscar s skraldespande. 657 00:30:20,169 --> 00:30:23,210 Så hvis du ønsker at gå videre og klik det grønne flag, vil spillet begynde. 658 00:30:23,210 --> 00:30:26,890 >> [Musik spiller] 659 00:30:26,890 --> 00:30:29,980 >> Åh, jeg elsker papirkurven. 660 00:30:29,980 --> 00:30:34,840 Noget snavset eller nusset eller støvet. 661 00:30:34,840 --> 00:30:39,300 Noget laset eller rådne, eller rusten. 662 00:30:39,300 --> 00:30:43,155 Ja, jeg elsker papirkurven. 663 00:30:43,155 --> 00:30:45,530 Hvis du virkelig ønsker at se noget tarvelige, se på dette. 664 00:30:45,530 --> 00:30:49,570 Jeg har her en sneaker det er laset og slidt. 665 00:30:49,570 --> 00:30:53,750 Det er alle fulde af huller besidder og snørebånd er revet. 666 00:30:53,750 --> 00:30:57,590 En gave fra min mor den dag, jeg blev 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 dage bare være at smide alt i papirkurven. 669 00:31:02,600 --> 00:31:04,312 Og så hvad en af CS50 eget personale did-- 670 00:31:04,312 --> 00:31:06,270 Jordan, som du måske mødes today-- har faktisk 671 00:31:06,270 --> 00:31:08,030 opdateret dette for dagens tider. 672 00:31:08,030 --> 00:31:10,800 Og så tillade mig at åbne op et remix stedet for Angela. 673 00:31:10,800 --> 00:31:13,600 Og vi vil spille dette i stedet for et par øjeblikke, hvor nu er du 674 00:31:13,600 --> 00:31:16,600 nødt til at vælge mellem, hvorvidt at smide noget i skraldespanden, 675 00:31:16,600 --> 00:31:19,050 eller genbruge det eller kompost det. 676 00:31:19,050 --> 00:31:21,280 Så der er lidt af pres på dig at få 677 00:31:21,280 --> 00:31:28,040 denne ret foran din 392 til 497 klassekammerater 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 [Musik spiller] 681 00:31:32,540 --> 00:31:36,280 -OH Jeg elsker papirkurven. 682 00:31:36,280 --> 00:31:40,840 Noget snavset eller nusset eller støvet. 683 00:31:40,840 --> 00:31:44,910 Noget laset eller rådne eller rusten. 684 00:31:44,910 --> 00:31:48,830 Ja, jeg elsker papirkurven. 685 00:31:48,830 --> 00:31:51,480 >> Hvis du virkelig ønsker at se noget tarvelige, se på dette. 686 00:31:51,480 --> 00:31:55,540 Jeg har her en sneaker det er laset og slidt. 687 00:31:55,540 --> 00:31:59,440 Det er alle fulde af huller og snørebånd er revet. 688 00:31:59,440 --> 00:32:03,762 En gave fra min mor den dag, jeg blev født. 689 00:32:03,762 --> 00:32:07,630 Jeg elsker det, fordi det er papirkurven. 690 00:32:07,630 --> 00:32:11,570 >> Åh, jeg elsker papirkurven. 691 00:32:11,570 --> 00:32:15,512 Noget beskidt eller nusset, eller støvet. 692 00:32:15,512 --> 00:32:20,200 Noget laset eller rådne eller rusten. 693 00:32:20,200 --> 00:32:23,856 Ja, jeg elsker papirkurven. 694 00:32:23,856 --> 00:32:26,246 Her er nogle flere rådne ting. 695 00:32:26,246 --> 00:32:28,240 Jeg har her nogle newspaper-- 696 00:32:28,240 --> 00:32:28,889 >> [END AFSPIL] 697 00:32:28,889 --> 00:32:30,680 DAVID J. MALAN: --are faktisk komposterbart. 698 00:32:30,680 --> 00:32:32,790 Men tak til vores frivillige, Angela. 699 00:32:32,790 --> 00:32:37,920 Vi har en stress bold til dig her. 700 00:32:37,920 --> 00:32:38,790 Så tak. 701 00:32:38,790 --> 00:32:40,250 >> Så denne ene blev skrevet af mig. 702 00:32:40,250 --> 00:32:44,324 Men nu er en af ​​en faktiske tidligere elev der gennemført denne, hvilket er et spil. 703 00:32:44,324 --> 00:32:46,490 Alt i dette sprog kaldes Scratch, at vi vil snart 704 00:32:46,490 --> 00:32:47,850 skrælle lagene af. 705 00:32:47,850 --> 00:32:49,940 Men hvis vi ville like-- hvordan om en anden frivillig? 706 00:32:49,940 --> 00:32:50,440 Højre. 707 00:32:50,440 --> 00:32:50,970 >> Kom op. 708 00:32:50,970 --> 00:32:52,070 Hvad er dit navn? 709 00:32:52,070 --> 00:32:52,570 Blik? 710 00:32:52,570 --> 00:32:53,280 Lance. 711 00:32:53,280 --> 00:32:54,082 Lance, kom op. 712 00:32:54,082 --> 00:32:54,790 Dejligt at møde dig. 713 00:32:54,790 --> 00:32:56,170 Kom denne måde. 714 00:32:56,170 --> 00:32:59,940 Så dette kunne man have en tema kender til nogle af jer. 715 00:32:59,940 --> 00:33:02,180 Men du vil se alt for, at kan der være interaktivitet, 716 00:33:02,180 --> 00:33:05,242 hvorved du rent faktisk kunne være rolle tegnet bevæger sig rundt. 717 00:33:05,242 --> 00:33:05,950 Dejligt at møde dig. 718 00:33:05,950 --> 00:33:06,470 David. 719 00:33:06,470 --> 00:33:10,464 >> Jeg giver dig, Pikachu. 720 00:33:10,464 --> 00:33:12,380 Instruktioner vil om at komme på skærmen. 721 00:33:12,380 --> 00:33:16,070 Men kort sagt, er du nødt til ønsker at fange den velsmagende ting, 722 00:33:16,070 --> 00:33:18,827 og undgå bomber og andre ting. 723 00:33:18,827 --> 00:33:19,910 Med markører helt. 724 00:33:19,910 --> 00:33:21,320 Så ramte mellemrumstasten. 725 00:33:21,320 --> 00:33:21,820 -Pikachu. 726 00:33:21,820 --> 00:33:23,480 DAVID J. MALAN: Catch de ting til venstre, 727 00:33:23,480 --> 00:33:24,938 ikke fange ting til højre. 728 00:33:24,938 --> 00:33:27,576 729 00:33:27,576 --> 00:34:44,540 >> [Musik spiller] 730 00:34:44,540 --> 00:34:46,332 >> Så en sidste her. 731 00:34:46,332 --> 00:34:48,040 Hvis vi kunne have en mere frivillig her. 732 00:34:48,040 --> 00:34:50,760 Vi troede, vi ville genskabe noget 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 Hvad er dit navn? 735 00:34:54,540 --> 00:34:57,090 Mary, kom op Maria. 736 00:34:57,090 --> 00:35:01,340 >> Og husker på onsdag vi introducerede begrebet binære, og binære pærer. 737 00:35:01,340 --> 00:35:03,930 Dette er faktisk nu en gennemførelse af denne samme interface 738 00:35:03,930 --> 00:35:07,360 at vi havde på iPad med lyset pærer, men her digitalt afsmeltet. 739 00:35:07,360 --> 00:35:11,220 Og snarere end at gøre en stress ball-- rart at møde dig, David. 740 00:35:11,220 --> 00:35:14,600 Vi bragte et par lys pærer fra Cambridge. 741 00:35:14,600 --> 00:35:18,650 >> Hvis du kan, klikke på dem pærer til at slå dem til og fra, 742 00:35:18,650 --> 00:35:29,510 komme op med den binære repræsentation af sige 256. 743 00:35:29,510 --> 00:35:32,500 Og du vil se i midten, den aktuelle tally. 744 00:35:32,500 --> 00:35:33,690 Så man er på. 745 00:35:33,690 --> 00:35:34,810 Så bitten længst til venstre er tændt. 746 00:35:34,810 --> 00:35:36,016 >> MARY: Ja, [uhørligt] 747 00:35:36,016 --> 00:35:39,292 748 00:35:39,292 --> 00:35:41,280 >> DAVID J. MALAN: Nå, så vi har bare-- oh. 749 00:35:41,280 --> 00:35:42,780 Så dette er den 128-søjle. 750 00:35:42,780 --> 00:35:44,460 Så vi er op til 128. 751 00:35:44,460 --> 00:35:46,769 Vi fik at komme til 256. 752 00:35:46,769 --> 00:35:48,560 Og du kan pille på og fra, nogen big deal. 753 00:35:48,560 --> 00:35:53,700 Eller du kan ramme den 128 flere gange, hvis du ønsker. 754 00:35:53,700 --> 00:35:56,310 >> Okay, godt. 755 00:35:56,310 --> 00:35:58,090 24.. 756 00:35:58,090 --> 00:35:59,790 Ja, komme tættere. 757 00:35:59,790 --> 00:36:02,105 Tættere! 758 00:36:02,105 --> 00:36:05,980 Åh, hvad er problemet så? 759 00:36:05,980 --> 00:36:07,510 Så hvad er problemet? 760 00:36:07,510 --> 00:36:10,040 >> Så hvad skal vi løse dette problem? 761 00:36:10,040 --> 00:36:11,060 Så vi har brug for en anden bit. 762 00:36:11,060 --> 00:36:12,770 Og det er helt rimelige i virkeligheden, ikke? 763 00:36:12,770 --> 00:36:15,800 Hvis du ønsker at tælle fra det antal 1 til 2 til 3 til 4 til 5, 6, 7, 8, 9 764 00:36:15,800 --> 00:36:18,880 til rent faktisk at rulle over til 10, er du vil få brug for en ekstra bit. 765 00:36:18,880 --> 00:36:21,240 Så lad os faktisk spole tilbage her, og komme op 766 00:36:21,240 --> 00:36:23,790 med-- det var selvfølgelig beregnet til at være et sæt op. 767 00:36:23,790 --> 00:36:25,590 >> Du kan ikke gøre 256 med blot en pære. 768 00:36:25,590 --> 00:36:29,290 Så hvad med blot 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 Fremragende. 772 00:36:35,100 --> 00:36:39,050 En stor runde af bifald for Mary og hendes så godt. 773 00:36:39,050 --> 00:36:41,840 Tak. 774 00:36:41,840 --> 00:36:45,570 >> Så dette topic-- bevidst som at was-- rent faktisk vil gentage sig. 775 00:36:45,570 --> 00:36:50,020 Den største værdi, som du kan repræsenterer med otte bits, 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 tælle fra 0, som vi 778 00:36:55,770 --> 00:36:58,060 synes at holde gør ved at have alle disse bits off. 779 00:36:58,060 --> 00:37:01,530 Men lad os nu dykke ned i den underliggende gennemførelsen af ​​dette miljø, 780 00:37:01,530 --> 00:37:03,200 og drille hinanden nogle af disse ideer. 781 00:37:03,200 --> 00:37:06,350 >> Så i et øjeblik, vi er ved at se en få forskellige programmeringssprog fundamentals. 782 00:37:06,350 --> 00:37:08,080 Det første, som vi vil kalde erklæring. 783 00:37:08,080 --> 00:37:09,360 Slags verber, hvis du vil. 784 00:37:09,360 --> 00:37:09,960 Handlinger. 785 00:37:09,960 --> 00:37:11,180 Ting, der skal gøres. 786 00:37:11,180 --> 00:37:13,430 >> Og om et øjeblik vil du se blokke, der ligner dette. 787 00:37:13,430 --> 00:37:14,940 Sig "hej verden," for eksempel. 788 00:37:14,940 --> 00:37:16,330 Eller vent et sekund. 789 00:37:16,330 --> 00:37:17,834 Eller afspille lyd meow. 790 00:37:17,834 --> 00:37:20,500 Og faktisk miljøet som vi kommer til at gøre dette 791 00:37:20,500 --> 00:37:21,610 kaldes Scratch. 792 00:37:21,610 --> 00:37:25,060 >> Og hvis jeg trækker op Scratch uden forbelastning nogen egentlig kode, 793 00:37:25,060 --> 00:37:27,830 lad os tage et hurtigt kig på dette brugergrænseflade, så at sige. 794 00:37:27,830 --> 00:37:29,730 Kontrollerne, som vi interagerer. 795 00:37:29,730 --> 00:37:32,840 På toppen venstre her på skærmen, under menuerne, 796 00:37:32,840 --> 00:37:34,650 Vi har scenen, så at sige. 797 00:37:34,650 --> 00:37:36,550 Så Scratch er, hvad vi vil kalde 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 styres ved skrive programmer mod ham. 800 00:37:40,660 --> 00:37:43,950 Og han vil være i stand til at bevæge sig op og ned og til venstre og højre i dette miljø, 801 00:37:43,950 --> 00:37:46,075 ikke kun ved at bevæge mus, men programmatisk. 802 00:37:46,075 --> 00:37:48,930 Jeg kan fortælle ham gå lige, gåtur venstre, op, ned eller lignende. 803 00:37:48,930 --> 00:37:51,440 Og jeg kan introducere andre sprites eller tegn så godt. 804 00:37:51,440 --> 00:37:54,616 >> Faktisk på bunden her er, hvor vil du se din liste over sprites. 805 00:37:54,616 --> 00:37:56,865 I øjeblikket, jeg bare har en, men jeg kan skabe mere, 806 00:37:56,865 --> 00:37:58,880 og de vil blive vist præcist dernede. 807 00:37:58,880 --> 00:38:02,630 Så hvis du spole tilbage et øjeblik, ligesom Oscartime-- for eksempel, Oscar, 808 00:38:02,630 --> 00:38:04,590 til venstre, papirkurven kan, var en sprite. 809 00:38:04,590 --> 00:38:07,450 Og de ting i midten, den genanvendelse bin, var en anden sprite. 810 00:38:07,450 --> 00:38:09,300 Og kompostbeholder var en anden sprite. 811 00:38:09,300 --> 00:38:11,790 Og hvert stykke skrald eller genanvendeligt 812 00:38:11,790 --> 00:38:14,590 der var ved at falde fra himlen er også en sprite, som hver 813 00:38:14,590 --> 00:38:16,150 blev programmeres individuelt. 814 00:38:16,150 --> 00:38:17,040 >> Hvordan du programmerer? 815 00:38:17,040 --> 00:38:20,180 Nå, her på den rigtige side er den scripts området. 816 00:38:20,180 --> 00:38:22,930 Og det er her vi kan trække og slippe puslespilsbrikker. 817 00:38:22,930 --> 00:38:26,066 I en uge, det vil være hvor vi ækvivalent skrive kode 818 00:38:26,066 --> 00:38:28,940 med mere af et tastatur, men for dag vil være at trække og slippe 819 00:38:28,940 --> 00:38:31,680 puslespilsbrikker, den paletter, som der alle 820 00:38:31,680 --> 00:38:33,190 findes her lige i midten. 821 00:38:33,190 --> 00:38:35,190 Faktisk i midten her er der en hel masse 822 00:38:35,190 --> 00:38:37,910 kategorier af puslespil stykker eller blokke. 823 00:38:37,910 --> 00:38:42,500 Man er relateret til bevægelse, se, lyd, en pen går op og ned, 824 00:38:42,500 --> 00:38:43,860 data, begivenheder styre. 825 00:38:43,860 --> 00:38:45,654 Ikke helt sikker på endnu hvad alle disse betyde, 826 00:38:45,654 --> 00:38:47,820 men du vil se, at de har været pænt kategoriseret. 827 00:38:47,820 --> 00:38:50,680 Og at skrive et program i Scratch, lad os gøre netop dette. 828 00:38:50,680 --> 00:38:53,480 >> Jeg har tænkt mig at starte i Events, og træk denne ene her. 829 00:38:53,480 --> 00:38:55,470 Når grønne flag klikkede. 830 00:38:55,470 --> 00:38:56,704 Nu hvorfor, at én? 831 00:38:56,704 --> 00:38:59,120 Nå minde om, at vores frivillige kom op, den første ting, jeg 832 00:38:59,120 --> 00:39:02,017 eller de gjorde var at klikke, at grøn flag i øverste højre hjørne. 833 00:39:02,017 --> 00:39:03,600 Og det betyder bare starte programmet. 834 00:39:03,600 --> 00:39:06,560 >> Så når begivenheden sker, hvad gør jeg ønsker at gøre? 835 00:39:06,560 --> 00:39:10,070 Jeg har tænkt mig at gå under Looks, og jeg har tænkt mig at gøre "sige hej". 836 00:39:10,070 --> 00:39:14,000 Og jeg har tænkt mig at ændre dette, og sige noget lignende "hello Yale." 837 00:39:14,000 --> 00:39:16,970 Og nu jeg har tænkt mig at zoome ud, skal du klikke på det grønne flag, 838 00:39:16,970 --> 00:39:19,050 og voila, har jeg skrevet et program. 839 00:39:19,050 --> 00:39:20,990 Det er ikke alt, spændende bare endnu, men dette 840 00:39:20,990 --> 00:39:23,195 er præcis, hvor hver af disse forfatteren startede, 841 00:39:23,195 --> 00:39:25,740 begge 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 enkel, og så du begynder at lag, 844 00:39:29,150 --> 00:39:31,046 og tilføje funktioner og funktionalitet. 845 00:39:31,046 --> 00:39:32,920 Så hvad er disse lag kommer til at bestå af? 846 00:39:32,920 --> 00:39:36,086 Nå, ud over udtalelser, vi vil også har ting, der er lidt mere fancily 847 00:39:36,086 --> 00:39:38,910 kaldet Boolesk udtryk, efter en person ved navn Bool. 848 00:39:38,910 --> 00:39:42,820 Og et Boolsk udtryk er simpelthen en udtryk, der er enten sandt eller falsk, 849 00:39:42,820 --> 00:39:45,740 ja eller nej, 1 eller 0. 850 00:39:45,740 --> 00:39:47,480 >> Eventuelle polære modsætninger sådan. 851 00:39:47,480 --> 00:39:48,902 Det er enten sandt eller ej. 852 00:39:48,902 --> 00:39:51,360 Men vi også kommer til at se dem, der kan se sådan ud. 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 en slags spørgsmål, hvis du vil. 855 00:39:54,550 --> 00:39:57,650 >> Musen er enten ned, sandt eller det er ikke, falsk. 856 00:39:57,650 --> 00:39:59,990 1 eller 0, hvis du vil, tendens til at være kortlægningen. 857 00:39:59,990 --> 00:40:01,740 Sandt er 1, falsk er 0. 858 00:40:01,740 --> 00:40:03,740 Nå hvad med mindre end dette? 859 00:40:03,740 --> 00:40:05,400 Eller deromkring, er det mindre end dette? 860 00:40:05,400 --> 00:40:06,650 Det er et spørgsmål slags. 861 00:40:06,650 --> 00:40:09,140 >> Og hvis du lægger to tal i der, enten x 862 00:40:09,140 --> 00:40:12,010 vil være mindre end y eller lig med y, eller større end y, 863 00:40:12,010 --> 00:40:14,635 men denne blok vil vi se, er bare kommer til at besvare spørgsmålet, 864 00:40:14,635 --> 00:40:15,810 er det mindre end det? 865 00:40:15,810 --> 00:40:17,650 Vi kunne også se noget som dette. 866 00:40:17,650 --> 00:40:18,790 Berøring musemarkører. 867 00:40:18,790 --> 00:40:21,610 Så i Scratch, kan du bede spørgsmålet, er Sprite 868 00:40:21,610 --> 00:40:22,800 røre musen? 869 00:40:22,800 --> 00:40:26,040 Med andre ord er markøren svævende over hætten, eller tilsvarende? 870 00:40:26,040 --> 00:40:28,100 >> Vi vil se Anding ting sammen. 871 00:40:28,100 --> 00:40:30,970 Du kan stille to spørgsmål, og sørge for, at de begge 872 00:40:30,970 --> 00:40:34,920 give dig ja eller sande svar før træffer en beslutning om at gøre noget. 873 00:40:34,920 --> 00:40:36,709 Men så hvordan kan du træffe beslutninger? 874 00:40:36,709 --> 00:40:38,000 Tja, vi har disse betingelser. 875 00:40:38,000 --> 00:40:40,041 >> Og vi så det i vores eksempel på telefonbogen. 876 00:40:40,041 --> 00:40:41,900 Ser til venstre eller rigtige for Mike Smith. 877 00:40:41,900 --> 00:40:45,140 Og i den stand, du gøre noget potentielt, 878 00:40:45,140 --> 00:40:47,240 hvis en boolesk udtryk er sandt. 879 00:40:47,240 --> 00:40:48,720 >> Og ja, mærke formerne nu. 880 00:40:48,720 --> 00:40:52,250 Der er denne pladsholder lige nu over hovedhøjde, hvor vi kan fit-- 881 00:40:52,250 --> 00:40:54,532 hvis jeg tilbage en slide-- denne form. 882 00:40:54,532 --> 00:40:55,740 Det er ikke helt den samme størrelse. 883 00:40:55,740 --> 00:40:58,400 Og ja, vil du se, at Scratch ændrer størrelse tingene dynamisk 884 00:40:58,400 --> 00:41:01,479 at passe puslespilsbrikker, men form er hvad der er vigtigt. 885 00:41:01,479 --> 00:41:03,270 Denne ting ligner det, og det er faktisk 886 00:41:03,270 --> 00:41:05,410 nogenlunde samme form der bør passe derind. 887 00:41:05,410 --> 00:41:09,520 Og hvis vi ønsker at gøre noget denne måde eller på den måde, hvis ellers, 888 00:41:09,520 --> 00:41:12,080 vi har dette puslespil brik i Scratch så godt. 889 00:41:12,080 --> 00:41:17,450 >> Nu formoder du ville gøre, hvis, ellers hvis, eller andet. 890 00:41:17,450 --> 00:41:20,120 Med andre ord, en tre-vejs gaffel i vejen. 891 00:41:20,120 --> 00:41:22,656 Godt hvad kan du gøre blot ved et blik på dette? 892 00:41:22,656 --> 00:41:25,030 Jeg kan tage denne brik, og det ser ikke ud til at passe, 893 00:41:25,030 --> 00:41:27,670 men igen, er Scratch går at re-størrelse pænt for os. 894 00:41:27,670 --> 00:41:29,940 Jeg kunne begynde at lag disse ting sammen. 895 00:41:29,940 --> 00:41:32,900 >> Så nu har jeg en tre-vejs gaffel, hvis dette er sandt, gøre dette. 896 00:41:32,900 --> 00:41:36,560 Ellers hvis denne anden ting er sandt, gå denne vej, ellers gå denne anden vej. 897 00:41:36,560 --> 00:41:39,200 Og i The Muppet Movie, den gaffel i vejen, så at sige, 898 00:41:39,200 --> 00:41:42,610 mellem Yale eller Stanford, var præcis det, blot to forhold. 899 00:41:42,610 --> 00:41:45,190 Enten gå denne vej, ellers gå den vej. 900 00:41:45,190 --> 00:41:46,940 >> Nå, sløjfer også eksistere i programmeringen. 901 00:41:46,940 --> 00:41:49,100 Og vi har brugt disse allerede i klasse og i pseudokode kode, 902 00:41:49,100 --> 00:41:51,060 og sikkert i de Skrab programmer evigt. 903 00:41:51,060 --> 00:41:53,730 Scratch har dette puslespil brik, vil bare lade dig gøre noget for evigt. 904 00:41:53,730 --> 00:41:55,688 Og nogle gange, du ønsker til at gøre noget for evigt. 905 00:41:55,688 --> 00:41:58,810 Det er ikke nødvendigvis en fejl, er det fordi du ønsker et ur til at holde ud, 906 00:41:58,810 --> 00:42:00,730 eller et spil til at holde spille. 907 00:42:00,730 --> 00:42:04,800 Eller du kan angive et endeligt antal trin, som med denne gentagelse blok her, 908 00:42:04,800 --> 00:42:06,550 der vil gentage noget 10 gange. 909 00:42:06,550 --> 00:42:08,560 Vi kan sætte variabler, vil vi snart se. 910 00:42:08,560 --> 00:42:12,300 Og med variabler, der ligner i ånden til algebra, som x, y eller eller z. 911 00:42:12,300 --> 00:42:16,390 Det er noget symbolsk, der kan gemme en vis værdi, nogle stykke information, 912 00:42:16,390 --> 00:42:18,320 at du måske ønsker at huske til senere. 913 00:42:18,320 --> 00:42:21,080 >> Bedste eksempel på dette kunne være et spil, hvor du har en score, 914 00:42:21,080 --> 00:42:22,080 ligesom i Pikachu. 915 00:42:22,080 --> 00:42:25,180 Hvor mange stykker kage og whatnot har du fange? 916 00:42:25,180 --> 00:42:29,340 Tja, måske at være en variabel kaldet score, der starter ved 0. 917 00:42:29,340 --> 00:42:32,400 Og så hver gang vi fanget en stykke kage eller slik eller lignende, 918 00:42:32,400 --> 00:42:33,720 det bliver øges. 919 00:42:33,720 --> 00:42:35,990 Det bliver tilsat til en ad gangen. 920 00:42:35,990 --> 00:42:38,450 Og så en variabel gemmer en oplysning som. 921 00:42:38,450 --> 00:42:41,450 Så er der arrays, og vi vil komme tilbage til disse i en uge eller to gang, 922 00:42:41,450 --> 00:42:44,900 men en række er lidt ligesom en beholdning eller en skoletaske, inde 923 00:42:44,900 --> 00:42:46,940 som du kan sætte virtuelle ting. 924 00:42:46,940 --> 00:42:49,852 Det giver dig mulighed for at lagre mere end en oplysning. 925 00:42:49,852 --> 00:42:51,810 Og som kan være nyttige hvis i spillet, er du 926 00:42:51,810 --> 00:42:53,630 slags gå rundt plukke ting op. 927 00:42:53,630 --> 00:42:55,879 Og måske du ønsker at holde alle disse stykker kage 928 00:42:55,879 --> 00:42:58,260 rundt, og ikke bare spise dem en efter en. 929 00:42:58,260 --> 00:43:00,010 Og så er der en amatør konstruktion vi får 930 00:43:00,010 --> 00:43:02,932 kommer til kaldte funktioner eller procedurer. 931 00:43:02,932 --> 00:43:04,640 Og selv om vi skal hen hurtigere her, vi får 932 00:43:04,640 --> 00:43:07,345 se, at dette er en meget naturlig løsning på problemerne 933 00:43:07,345 --> 00:43:08,470 at vi vil støde på. 934 00:43:08,470 --> 00:43:10,220 Som vores programmer starter få større vi får 935 00:43:10,220 --> 00:43:12,640 begynde at lægge mærke til mønstre i den kode, vi skriver, 936 00:43:12,640 --> 00:43:14,556 puslespilsbrikker vi er trække og slippe. 937 00:43:14,556 --> 00:43:18,240 Og så snart du opdager dig selv gør noget igen og igen, eller værre endnu 938 00:43:18,240 --> 00:43:21,400 kopiere og indsætte programmering kode, som du har skrevet, 939 00:43:21,400 --> 00:43:23,612 det er nok en mulighed for at faktor ud 940 00:43:23,612 --> 00:43:25,820 uanset hvad du holder kopiering og indsætte, og sætte det 941 00:43:25,820 --> 00:43:27,430 i noget, der hedder en "funktion." 942 00:43:27,430 --> 00:43:29,690 Men mere om dem i meget mere detaljeret inden længe. 943 00:43:29,690 --> 00:43:31,314 >> Og så er der endnu mere avanceret funktioner. 944 00:43:31,314 --> 00:43:34,100 For dem af jer mere behageligt, eller tage APCS eller tilsvarende, 945 00:43:34,100 --> 00:43:37,600 Scratch faktisk understøtter ting som tråde og begivenheder og meget mere. 946 00:43:37,600 --> 00:43:39,840 Så indse, at det har en temmelig høj loft, 947 00:43:39,840 --> 00:43:42,540 selvom det er også meget bredt tilgængelige for folk 948 00:43:42,540 --> 00:43:44,460 der aldrig har programmeret før. 949 00:43:44,460 --> 00:43:47,130 Så ja, lad os tage et kig på et simpelt program eller to. 950 00:43:47,130 --> 00:43:49,920 >> Vi har allerede set på, hvordan vi kan sige goddag med Scratch. 951 00:43:49,920 --> 00:43:52,800 Lad mig gå videre og åbne op for en lidt mere interessant program 952 00:43:52,800 --> 00:43:54,100 at jeg skrev på forhånd. 953 00:43:54,100 --> 00:43:56,430 Og denne her er kaldet Pet Cat. 954 00:43:56,430 --> 00:43:58,954 Alle disse programmer vil være tilgængelig på CS50 hjemmeside. 955 00:43:58,954 --> 00:43:59,870 Faktisk, der allerede. 956 00:43:59,870 --> 00:44:01,190 >> Så kan du downloade dem, og lege 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 opfordres til at gå gennem disse. 959 00:44:05,516 --> 00:44:07,820 Og desuden har vi en Antallet af walk-through videoer 960 00:44:07,820 --> 00:44:10,951 online, hvor jeg og CS50 hold virkelig gå 961 00:44:10,951 --> 00:44:14,200 gennem hver af disse eksempler på et meget langsommere tempo, en meget hurtig kan videresendes, 962 00:44:14,200 --> 00:44:18,530 eller vikles tempo, så du kan gå gennem disse på din fritid så godt. 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 på det rigtige at jeg har allerede pre-made. 965 00:44:22,920 --> 00:44:24,880 Så lad mig zoome ind på dette. 966 00:44:24,880 --> 00:44:28,780 Og kunne nogen på engelsk, vel vidende hvad du ved, bare fra nu, som 967 00:44:28,780 --> 00:44:31,650 hvordan Scratch værker, en slags sige i en engelsk sætning eller en sætning, 968 00:44:31,650 --> 00:44:35,450 hvad betyder dette program tilsyneladende gøre? 969 00:44:35,450 --> 00:44:36,836 >> Ja, i orange trøje. 970 00:44:36,836 --> 00:44:40,804 >> PUBLIKUM: [uhørligt] 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 meowing lyd. 974 00:44:46,220 --> 00:44:47,870 Men læg mærke til hvordan vi udtrykker det. 975 00:44:47,870 --> 00:44:49,980 Der er tilsyneladende en loop der, for evigt. 976 00:44:49,980 --> 00:44:53,000 Og så er der en tilstand, hvis udtryk. 977 00:44:53,000 --> 00:44:55,090 Og kollektivt, hvad gør de, betyde? 978 00:44:55,090 --> 00:44:57,210 Det betyder dette program er bare altid kører, 979 00:44:57,210 --> 00:44:59,510 og det er bare altid venter og ser og lytter 980 00:44:59,510 --> 00:45:01,730 for mig at flytte min musen over katten. 981 00:45:01,730 --> 00:45:04,810 >> Fordi hver gang jeg gør det, så De foreslår, det vil gøre dette. 982 00:45:04,810 --> 00:45:06,475 Lad mig starte programmet. 983 00:45:06,475 --> 00:45:08,350 Intet synes at være sker, men bemærk, hvordan 984 00:45:08,350 --> 00:45:10,152 det er fremhævet nu i en gul linje. 985 00:45:10,152 --> 00:45:11,360 Det betyder bare, det kører. 986 00:45:11,360 --> 00:45:13,770 Og fordi der er en evigt loop, er det stadig kører. 987 00:45:13,770 --> 00:45:19,610 >> Så lad mig flytte min markøren over Scratch. [MEOW] [MEOW] Og hvis jeg flytter det ud, 988 00:45:19,610 --> 00:45:25,444 [MEOW] nu det stopper, men programmets stadig kører. [MEOW] Og så yndig. 989 00:45:25,444 --> 00:45:28,550 [MEOW] Så lad os åbne op lidt mere avanceret 990 00:45:28,550 --> 00:45:32,620 eksempel hedder Ikke Pet Cat. 991 00:45:32,620 --> 00:45:35,805 >> Og lad os nu se, hvad sker her. [MEOW] meowing. 992 00:45:35,805 --> 00:45:39,297 Så det er lidt 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 undrer mig hvorfor. 995 00:45:42,820 --> 00:45:45,389 [ROAR] [MEOW] Så hvordan gjorde dette arbejde? 996 00:45:45,389 --> 00:45:47,930 Nå, kan du slags grund igennem det intuitivt, måske. 997 00:45:47,930 --> 00:45:49,346 >> Men lad os se på den konkrete kode. 998 00:45:49,346 --> 00:45:51,819 Så igen, når det grønne flag klikkes, gør dette for evigt. 999 00:45:51,819 --> 00:45:53,110 Hvad vil du gøre for evigt? 1000 00:45:53,110 --> 00:45:56,150 Tja, hvis rørende mus pointer, så spiller 1001 00:45:56,150 --> 00:46:00,270 en lyd, der er tilsyneladende hedder Lion 5, der er inde i dette projekt, ellers 1002 00:46:00,270 --> 00:46:03,010 afspille lyd meow, og derefter vente to sekunder, så 1003 00:46:03,010 --> 00:46:04,510 at det ikke meowing ustandseligt. 1004 00:46:04,510 --> 00:46:07,650 I virkeligheden, kan du meget hurtigt begynde at irritere dig selv og dine bofæller. 1005 00:46:07,650 --> 00:46:08,690 >> Lad os fjerne denne blok. 1006 00:46:08,690 --> 00:46:10,580 Og læg mærke til, hvad der er rart om Scratch. 1007 00:46:10,580 --> 00:46:13,070 Ting bare lidt træk og slip og interlock. 1008 00:46:13,070 --> 00:46:14,980 Så igen, det vokser til udfylde hvad du ønsker. 1009 00:46:14,980 --> 00:46:20,118 Men hvis jeg fjerner denne, og derefter hit spil, [COMPUTER BLIP SOUND] 1010 00:46:20,118 --> 00:46:22,904 >> --Det er slags snuble over selv, fordi det er bogstaveligt talt 1011 00:46:22,904 --> 00:46:23,820 gør, hvad jeg siger. 1012 00:46:23,820 --> 00:46:27,080 Det siger evigt afspille denne lyd, men Jeg er ikke at give det en chance for at afslutte. 1013 00:46:27,080 --> 00:46:28,205 Og så det ville være en fejl. 1014 00:46:28,205 --> 00:46:30,700 Og det er derfor, vi havde denne ting herinde nu. 1015 00:46:30,700 --> 00:46:34,030 Så lad os faktisk starte fra scratch-- slags ordspil lidt intended-- 1016 00:46:34,030 --> 00:46:36,450 hvor vi nu har katten flytte. 1017 00:46:36,450 --> 00:46:38,130 >> Så jeg har tænkt mig at gøre dette på i farten. 1018 00:46:38,130 --> 00:46:40,910 Jeg har tænkt mig at zoome ind her, bare at få mig i gang på begivenheder. 1019 00:46:40,910 --> 00:46:42,000 Og grønne flag klikkede. 1020 00:46:42,000 --> 00:46:43,410 Og der er andre måder at starte scripts. 1021 00:46:43,410 --> 00:46:44,920 Vi kommer til at holde det enkelt her. 1022 00:46:44,920 --> 00:46:48,049 >> Og nu jeg har tænkt mig at gå fremad og gå under kontrol. 1023 00:46:48,049 --> 00:46:50,590 Og igen, hvis du glemmer, hvor tingene er, skal du blot klikke rundt, 1024 00:46:50,590 --> 00:46:52,048 og til sidst du finder dem igen. 1025 00:46:52,048 --> 00:46:53,680 Så jeg vil gerne evigt gøre hvad? 1026 00:46:53,680 --> 00:46:58,650 Jeg vil bruge bevægelse blok at jeg ved eksisterer, flytte 10 trin. 1027 00:46:58,650 --> 00:47:02,016 >> Så lad os se hvad der sker her, hvis jeg spiller dette spil. 1028 00:47:02,016 --> 00:47:03,390 Heldigvis er det ikke går for vidt. 1029 00:47:03,390 --> 00:47:05,190 Jeg kan stadig slags grab ham i halen og trække ham tilbage. 1030 00:47:05,190 --> 00:47:07,860 Men programmet er stadig kører, så han er lidt at kæmpe mig. 1031 00:47:07,860 --> 00:47:10,870 Men det ville være slags rart, hvis jeg betinget løse dette i kode. 1032 00:47:10,870 --> 00:47:12,800 >> Da dette er not-- faktisk det er virkelig 1033 00:47:12,800 --> 00:47:15,770 ikke et sjovt spil for nogen i enhver alder. 1034 00:47:15,770 --> 00:47:18,915 Så lad os prøve at løse dette ved at have en form for betingelser. 1035 00:47:18,915 --> 00:47:21,670 Så jeg har tænkt mig at gå under Kontrol, og derefter, hvis. 1036 00:47:21,670 --> 00:47:22,660 Jeg kan lide denne idé. 1037 00:47:22,660 --> 00:47:27,470 Så efter flytning 10 trin, if-- lad mig fornemmer, hvor jeg er. 1038 00:47:27,470 --> 00:47:30,799 Jeg har tænkt mig at gå under Sensing, og så det ser jeg kan gå her. 1039 00:47:30,799 --> 00:47:31,840 ro til formen kampe. 1040 00:47:31,840 --> 00:47:34,380 >> Størrelse ikke, men det er kommer til at vokse til at udfylde. 1041 00:47:34,380 --> 00:47:35,984 Og nu er det en lille menu. 1042 00:47:35,984 --> 00:47:38,650 Og nu mus pointer-- jeg ikke ønsker musen, jeg vil have kanten. 1043 00:47:38,650 --> 00:47:41,700 Så Scratch er smart nok til at vide når en sprite rører kanten. 1044 00:47:41,700 --> 00:47:44,360 Hvad ønsker jeg ham til rent faktisk at gøre? 1045 00:47:44,360 --> 00:47:46,025 >> Lad mig gå videre og ændre bevægelse. 1046 00:47:46,025 --> 00:47:46,940 Du ved hvad? 1047 00:47:46,940 --> 00:47:49,242 Jeg har tænkt mig at have ham vende rundt. 1048 00:47:49,242 --> 00:47:51,200 Så på 15 grader er ikke virkelig vil hjælpe mig. 1049 00:47:51,200 --> 00:47:53,990 Jeg vil have ham til at vende rundt og gå den anden vej. 1050 00:47:53,990 --> 00:47:57,740 >> Så lad os se hvad der sker her, hvis jeg ramte Spil nu. 1051 00:47:57,740 --> 00:48:01,520 OK, slags dumme leder, men det gør præcis, hvad jeg sagde. 1052 00:48:01,520 --> 00:48:03,540 Og det er at dreje hele Sprite. 1053 00:48:03,540 --> 00:48:04,900 Nu viser det sig, jeg kan løse dette. 1054 00:48:04,900 --> 00:48:06,691 Og jeg vidste ikke, hvordan at løse dette i første omgang. 1055 00:48:06,691 --> 00:48:09,190 Jeg slags måtte futz rundt og se den bedste måde at gøre dette. 1056 00:48:09,190 --> 00:48:12,630 Men hvis jeg går at-- lad os se, bevægelse. 1057 00:48:12,630 --> 00:48:14,050 Åh, jeg fandt denne. 1058 00:48:14,050 --> 00:48:15,660 Faktisk, Indstil Rotation Style. 1059 00:48:15,660 --> 00:48:18,431 Venstre, højre, eller ikke rotere eller hele vejen rundt. 1060 00:48:18,431 --> 00:48:19,930 Og det viser sig det er hvad jeg vil have. 1061 00:48:19,930 --> 00:48:22,920 Og jeg har tænkt mig at sætte dette er ikke min loop, fordi jeg ikke behøver at sætte 1062 00:48:22,920 --> 00:48:24,487 rotation stil flere gange. 1063 00:48:24,487 --> 00:48:27,570 Jeg har tænkt mig sætte det øverst på dette program, så det bliver sat én gang, 1064 00:48:27,570 --> 00:48:28,670 og derefter husker. 1065 00:48:28,670 --> 00:48:30,340 Og nu jeg har tænkt mig at prøve dette igen. 1066 00:48:30,340 --> 00:48:32,520 Lad mig stoppe programmet. 1067 00:48:32,520 --> 00:48:34,050 >> Og nu der er fastsat, at fejlen. 1068 00:48:34,050 --> 00:48:35,700 Så jeg iterativt forbedre på dette. 1069 00:48:35,700 --> 00:48:37,900 Programmet er at få en lidt mere komplekse og større, 1070 00:48:37,900 --> 00:48:40,810 men jeg tager små skridt så at sige, og små bites ud af problemet 1071 00:48:40,810 --> 00:48:42,010 at 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 >> Du ved hvad? 1074 00:48:43,900 --> 00:48:49,860 Vil bede en person med en rigtig god, frygtelig stemme gerne komme op? 1075 00:48:49,860 --> 00:48:51,210 Nogen med en stemme. 1076 00:48:51,210 --> 00:48:54,070 1077 00:48:54,070 --> 00:48:54,570 Øh, ja. 1078 00:48:54,570 --> 00:48:55,550 Kom op. 1079 00:48:55,550 --> 00:48:57,990 I grøn skjorte. 1080 00:48:57,990 --> 00:49:01,530 >> Så det viser sig der er nogle andre sjove ting, æstetik og lyder ens. 1081 00:49:01,530 --> 00:49:02,290 Her er meow. 1082 00:49:02,290 --> 00:49:04,000 Jeg klikker på fanen Lyde. 1083 00:49:04,000 --> 00:49:08,730 [MEOW] Der er den meow. [MEOW] [MEOW] [MEOW] --actually rekord noget 1084 00:49:08,730 --> 00:49:10,310 af vores egne her. 1085 00:49:10,310 --> 00:49:13,120 >> Så lad os gøre netop dette. 1086 00:49:13,120 --> 00:49:17,670 Stedet for at bruge denne kat lyd, lad os gå videre her, og hvad er dit navn? 1087 00:49:17,670 --> 00:49:18,850 Nick, rart at møde dig. 1088 00:49:18,850 --> 00:49:19,350 Det er David. 1089 00:49:19,350 --> 00:49:21,474 Så i et øjeblik, jeg skal at ramme knappen Optag. 1090 00:49:21,474 --> 00:49:23,240 Og hvis du kan bare råber i den bærbare computer, 1091 00:49:23,240 --> 00:49:26,140 "ouch", som om du bare gik ind i væggen, 1092 00:49:26,140 --> 00:49:28,180 der vil blive meget værdsat. 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 nu kan gøre lidt redigering her. 1097 00:49:34,410 --> 00:49:35,910 Kommer til at slippe af med de rolige dele. 1098 00:49:35,910 --> 00:49:37,000 Og jeg tror, ​​det er godt. 1099 00:49:37,000 --> 00:49:37,690 Mange tak. 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øbt det "ouch" 1103 00:49:45,110 --> 00:49:46,901 men nu vil jeg gå tilbage til mine scripts. 1104 00:49:46,901 --> 00:49:49,810 Og meddelelse der faktisk er forsvarlig her. 1105 00:49:49,810 --> 00:49:53,520 Og jeg har tænkt mig at gå videre og afspille lyden ouch, 1106 00:49:53,520 --> 00:49:56,991 og jeg har tænkt mig at gøre det, hvis det rører kun kanterne. 1107 00:49:56,991 --> 00:49:58,740 Og så vil jeg har det vende rundt. 1108 00:49:58,740 --> 00:50:00,250 Så lad os se hvad der sker her. 1109 00:50:00,250 --> 00:50:01,728 Lad os gå fuld skærm. 1110 00:50:01,728 --> 00:50:02,394 [VIDEO PLAYBACK] 1111 00:50:02,394 --> 00:50:03,790 -Av! 1112 00:50:03,790 --> 00:50:05,290 Av! 1113 00:50:05,290 --> 00:50:06,790 Av! 1114 00:50:06,790 --> 00:50:07,790 Av! 1115 00:50:07,790 --> 00:50:09,160 Av! 1116 00:50:09,160 --> 00:50:10,780 Av! 1117 00:50:10,780 --> 00:50:11,587 Av! 1118 00:50:11,587 --> 00:50:12,086 Av! 1119 00:50:12,086 --> 00:50:12,492 >> [END AFSPIL] 1120 00:50:12,492 --> 00:50:14,490 >> DAVID J. MALAN: Så du er klar at vi får lidt heldig. 1121 00:50:14,490 --> 00:50:17,110 Jeg har tænkt mig at have ham flytte ligesom 100 trin ad gangen. 1122 00:50:17,110 --> 00:50:21,790 Virkningen af ​​som nu går at være-- [computer fejl SOUND] Så 1123 00:50:21,790 --> 00:50:22,490 inden grund. 1124 00:50:22,490 --> 00:50:25,470 Så en mulighed for at forfine det yderligere, hvis vi virkelig vil. 1125 00:50:25,470 --> 00:50:27,340 >> Så lad os nu indføre et andet koncept. 1126 00:50:27,340 --> 00:50:30,660 At lade mig gå ind i en kaldet Tælle får og brug noget 1127 00:50:30,660 --> 00:50:31,610 kaldes en variabel. 1128 00:50:31,610 --> 00:50:34,700 Dette er en yndig lille får, og Jeg ændrede hans kostume så at sige. 1129 00:50:34,700 --> 00:50:37,450 Så selv om standard er en kat, kan du uploade, du kan tegne, 1130 00:50:37,450 --> 00:50:40,020 du kan gøre et vilkårligt antal tegn på din sprite. 1131 00:50:40,020 --> 00:50:43,740 Her er et program, der er kommer til at gøre hvad på engelsk? 1132 00:50:43,740 --> 00:50:47,110 >> Baseret igen på lige hvad du ved nu. 1133 00:50:47,110 --> 00:50:48,230 Hvad er dette program gøre? 1134 00:50:48,230 --> 00:50:50,740 1135 00:50:50,740 --> 00:50:53,500 Ja, det kommer til at tælle. 1136 00:50:53,500 --> 00:50:55,842 En række ad gangen. 1137 00:50:55,842 --> 00:50:57,550 Vi har tilsyneladende har dette sæt tæller. 1138 00:50:57,550 --> 00:50:59,380 >> Jeg ved ikke, hvad det er, men måske er det 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 tælleren er mere beskrivende end matematiker s x eller y. 1141 00:51:04,290 --> 00:51:06,560 Så vi kan bruge engelske ord for ting. 1142 00:51:06,560 --> 00:51:08,490 Forever, betyder bare holde gør dette. 1143 00:51:08,490 --> 00:51:10,020 >> Sig tæller. 1144 00:51:10,020 --> 00:51:11,270 Nu hvor kom det fra? 1145 00:51:11,270 --> 00:51:13,240 Tja, det viser sig, at tælleren er en variabel. 1146 00:51:13,240 --> 00:51:15,645 Så det er bare en anden puslespil stykke jeg skabte på forhånd. 1147 00:51:15,645 --> 00:51:18,020 Og selv om det sker ikke at være den samme form her, 1148 00:51:18,020 --> 00:51:20,540 normalt ville du sige noget som hej her. 1149 00:51:20,540 --> 00:51:23,610 >> Du kan også trække en variabel således at det er, hvad os komme sagt. 1150 00:51:23,610 --> 00:51:26,170 Så jeg venter på et sekund, jeg ændre tælleren med en, 1151 00:51:26,170 --> 00:51:27,940 forøgelse den ved at tilføje en. 1152 00:51:27,940 --> 00:51:32,407 Således at nettoeffekten er denne bedårende tælle får. 1153 00:51:32,407 --> 00:51:33,615 Selvom han selv er at tælle. 1154 00:51:33,615 --> 00:51:36,642 1155 00:51:36,642 --> 00:51:38,350 Nu er det meget hurtigt kommer til at blive kedeligt 1156 00:51:38,350 --> 00:51:40,900 fordi han kommer til at gøre dette virkelig for evigt, 1157 00:51:40,900 --> 00:51:44,240 men det er, hvad det præcist programmets udformning foreskriver. 1158 00:51:44,240 --> 00:51:48,090 Lader nu forsøge et andet eksempel der udnytter en variabel. 1159 00:51:48,090 --> 00:51:51,140 Denne ene kaldes Hi Hi Hi, at får irriterende hurtigt. 1160 00:51:51,140 --> 00:51:52,987 Nu er dette ene har to scripts. 1161 00:51:52,987 --> 00:51:54,570 Og så igen, vi tager små skridt. 1162 00:51:54,570 --> 00:51:57,236 >> Vi startede med noget super lille, tilføjes det, hvormed det. 1163 00:51:57,236 --> 00:51:59,750 Nu ønsker jeg at gøre noget endnu mere dynamisk, 1164 00:51:59,750 --> 00:52:02,950 så jeg vil gerne lytte til to forskellige ting ad gangen. 1165 00:52:02,950 --> 00:52:05,420 Så til venstre, når grønne flag klikkes, 1166 00:52:05,420 --> 00:52:08,100 Jeg sætte en variabel, som jeg skrev på forhånd kaldet Dæmpet. 1167 00:52:08,100 --> 00:52:09,700 Og jeg vilkårligt sæt den til 0. 1168 00:52:09,700 --> 00:52:13,290 Så Scratch har ikke sandt, og falsk, men det har 0 og 1. 1169 00:52:13,290 --> 00:52:15,270 >> Så jeg kan tilnærme den samme idé. 1170 00:52:15,270 --> 00:52:21,110 Og så evigt, hvis rummet bar er presset, derefter indstille variablen til 0. 1171 00:52:21,110 --> 00:52:21,810 Eller ked af det. 1172 00:52:21,810 --> 00:52:25,920 Hvis der trykkes på Space, og hvis dæmpet, variablen, er 0, 1173 00:52:25,920 --> 00:52:29,950 derefter indstille dæmpet til 1, ellers sat dæmpet til 0. 1174 00:52:29,950 --> 00:52:32,370 Dette synes lidt ligesom vi er bare gør og løsne arbejde. 1175 00:52:32,370 --> 00:52:33,130 >> Men hvad er effekten? 1176 00:52:33,130 --> 00:52:35,588 Hver gang jeg ramte mellemrumstasten, hvad sker der med min variabel 1177 00:52:35,588 --> 00:52:38,150 kaldet slået, logisk? 1178 00:52:38,150 --> 00:52:39,100 Slags bliver vendt. 1179 00:52:39,100 --> 00:52:41,035 Det ændrer fra 0 til 1, eller 1 til 0. 1180 00:52:41,035 --> 00:52:43,035 Så det tog et par blokke til at udtrykke det, men alle 1181 00:52:43,035 --> 00:52:47,280 Jeg gør er at skifte tilstand variablen til 0 eller 1, eller 0 eller 1 1182 00:52:47,280 --> 00:52:48,530 hver gang jeg ramte mellemrumstasten. 1183 00:52:48,530 --> 00:52:49,905 Nu herovre, hvad det gør? 1184 00:52:49,905 --> 00:52:53,400 Evigt, hvis dæmpet er 0, så hvis tavs er falsk. 1185 00:52:53,400 --> 00:52:57,910 Så hvis det ikke er slået fra, er den semantik der, afspille lyd søløve, 1186 00:52:57,910 --> 00:53:00,810 og tænke Hi Hi Hi for to sekunder, vente to sekunder. 1187 00:53:00,810 --> 00:53:02,710 Så opdager nu disse scripts er effektivt 1188 00:53:02,710 --> 00:53:07,100 kommer til at løbe parallelt, så man kan lytte til en handling, den anden 1189 00:53:07,100 --> 00:53:09,010 at træffe en beslutning baseret på denne handling. 1190 00:53:09,010 --> 00:53:10,655 Og det kan gøre det for evigt. 1191 00:53:10,655 --> 00:53:12,638 >> [Søløve BARKING] 1192 00:53:12,638 --> 00:53:14,852 >> [Søløve BARKING] 1193 00:53:14,852 --> 00:53:20,050 >> Det kommer til at gøre dette for evigt og [Sea Lion BARKING] som jeg lige har gjort. 1194 00:53:20,050 --> 00:53:23,010 Og nu er det stadig kører men jeg har "slået" spillet. 1195 00:53:23,010 --> 00:53:27,260 [Sea Lion BARKING] Og det er al denne fyr gør nu også. 1196 00:53:27,260 --> 00:53:28,660 >> Lad os åbne et andet eksempel her. 1197 00:53:28,660 --> 00:53:31,840 Lad mig gå ind i begivenheder, og nu denne bedårende også. 1198 00:53:31,840 --> 00:53:34,130 Men bemærke det har to sprites. 1199 00:53:34,130 --> 00:53:37,520 Så ikke bare to scripts 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, jeg se, at han som ét program 1201 00:53:40,750 --> 00:53:43,790 heroppe, der bogstaveligt talt bare siger dette, når jeg modtager en begivenhed, 1202 00:53:43,790 --> 00:53:45,620 sige "Polo" i to sekunder. 1203 00:53:45,620 --> 00:53:48,460 >> Så hvis du nogensinde har spillet i en pulje, spillet Marco Polo, 1204 00:53:48,460 --> 00:53:52,500 Hvis den orange fyr script er nogen indikation, tilsyneladende 1205 00:53:52,500 --> 00:53:57,380 hver gang jeg ramte mellemrumstasten, hvad er den orange fyr kommer til at gøre? 1206 00:53:57,380 --> 00:53:58,642 Han kommer til at sige "Marco". 1207 00:53:58,642 --> 00:53:59,850 Og så er det en ny blok. 1208 00:53:59,850 --> 00:54:02,409 Vi har ikke set det før, men transmittere en begivenhed. 1209 00:54:02,409 --> 00:54:04,200 Og jeg kunne kalde det begivenhed noget, vi ønsker. 1210 00:54:04,200 --> 00:54:06,033 >> Vi vil vende tilbage til dette måske inden længe. 1211 00:54:06,033 --> 00:54:08,410 Men udsende en begivenhed er en måde for en sprite 1212 00:54:08,410 --> 00:54:11,836 at tale til en anden ved væsentlige passerer det en meddelelse. 1213 00:54:11,836 --> 00:54:12,960 Det er ikke et budskab, du ser. 1214 00:54:12,960 --> 00:54:14,130 Det er ikke noget visuelt. 1215 00:54:14,130 --> 00:54:17,370 Det er en slags computer-meddelelse at den anden fyr lytter efter. 1216 00:54:17,370 --> 00:54:21,210 Fordi ja, den blå fyr, tilbagekaldelse ikke har, når grønne flag klikkes. 1217 00:54:21,210 --> 00:54:23,290 >> Han har i stedet, når jeg modtager en begivenhed. 1218 00:54:23,290 --> 00:54:26,850 Da han bliver afleveret denne note i klassen, så at sige, bør han sige "Polo". 1219 00:54:26,850 --> 00:54:30,200 Og så nettoeffekten er, at når jeg ramte den grønne flag, sker der ingenting. 1220 00:54:30,200 --> 00:54:34,940 Men da jeg ramte mellemrumstasten, siger han "Marco", han svarer med "Polo". 1221 00:54:34,940 --> 00:54:38,350 Men den eneste sprite jeg interagere med, er den orange en. 1222 00:54:38,350 --> 00:54:40,980 Så det er en måde at slags passerer beskeder mellem sprites 1223 00:54:40,980 --> 00:54:43,210 og have dem kommunikere med hinanden. 1224 00:54:43,210 --> 00:54:46,280 >> Lad os nu se på et sidste én her kaldet tråde. 1225 00:54:46,280 --> 00:54:49,370 Og bemærke dette ved at spille det. 1226 00:54:49,370 --> 00:54:51,184 Så det er to sprites. 1227 00:54:51,184 --> 00:54:52,600 Fuglen er slags flyver rundt. 1228 00:54:52,600 --> 00:54:53,310 Han hoppende. 1229 00:54:53,310 --> 00:54:55,890 Der er ingen "ouch", men samme idé. 1230 00:54:55,890 --> 00:54:58,230 >> Men katten synes temmelig smart. 1231 00:54:58,230 --> 00:55:01,010 Hvad er katten tilsyneladende gør? 1232 00:55:01,010 --> 00:55:03,430 Og vente på det. 1233 00:55:03,430 --> 00:55:05,010 Hvad er katten tilsyneladende gø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 efter fuglen. 1236 00:55:09,860 --> 00:55:13,920 Og så tilsyneladende, er der en vej med en kombination af blokke her-- 1237 00:55:13,920 --> 00:55:15,760 og lad os se på katten virkelig hurtigt. 1238 00:55:15,760 --> 00:55:20,270 Forever, hvis røre fugl, så spiller lyden Lion 4, hvad det så er. 1239 00:55:20,270 --> 00:55:21,360 Vi hørte det én gang. 1240 00:55:21,360 --> 00:55:25,431 Ellers peger i retning af fugl, og flytte et trin. 1241 00:55:25,431 --> 00:55:27,680 Det faktum, at det er nu en trin er det, der giver fuglen 1242 00:55:27,680 --> 00:55:29,850 lidt af en fordel i første omgang, men hvis vi i stedet 1243 00:55:29,850 --> 00:55:32,980 gør dette 10, for eksempel, så at hver iteration af løkken, han er 1244 00:55:32,980 --> 00:55:34,100 flytte 10 trin af tid. 1245 00:55:34,100 --> 00:55:35,280 Så mere plads. 1246 00:55:35,280 --> 00:55:36,650 Lad os se hvad der sker derefter. 1247 00:55:36,650 --> 00:55:38,740 [LION ROAR] Ikke alt, meget bedre. 1248 00:55:38,740 --> 00:55:41,460 Så lad os nu prøve at forbedre på disse lidt iterativt, 1249 00:55:41,460 --> 00:55:43,330 og komme tilbage til det forestillingen om en funktion. 1250 00:55:43,330 --> 00:55:46,580 >> Og faktisk en af ​​de grundlæggende grillbarer af klassen design. 1251 00:55:46,580 --> 00:55:49,560 Ikke bare at skrive programmer, der arbejder og som er korrekt, men er godt 1252 00:55:49,560 --> 00:55:50,080 designet. 1253 00:55:50,080 --> 00:55:54,349 Og design er langt mere subjektive, og du vil blive bedre til det med tiden. 1254 00:55:54,349 --> 00:55:57,390 Men lad os tage nogle små skridt i retning af begyndende med et program, der virker, 1255 00:55:57,390 --> 00:55:59,310 absolut, men det er ikke meget godt. 1256 00:55:59,310 --> 00:56:00,650 Det er ikke meget godt skrevet. 1257 00:56:00,650 --> 00:56:03,830 >> Så her er et program, der gør dette. 1258 00:56:03,830 --> 00:56:08,060 Hoste, hoste, hoste. 1259 00:56:08,060 --> 00:56:09,880 Hvad betyder det program ud? 1260 00:56:09,880 --> 00:56:11,330 Ser rigtige for mig. 1261 00:56:11,330 --> 00:56:13,370 Det siger sofa for en sekund, så den venter. 1262 00:56:13,370 --> 00:56:14,515 >> Så det siger det igen, så er det venter. 1263 00:56:14,515 --> 00:56:16,056 Så det siger det igen, så er det venter. 1264 00:56:16,056 --> 00:56:18,770 Og så programmet implicit ender, fordi der er ingen løkke. 1265 00:56:18,770 --> 00:56:21,325 Men hvorfor er det et dårligt skrevet program? 1266 00:56:21,325 --> 00:56:22,950 Selv hvis du aldrig har programmeret før? 1267 00:56:22,950 --> 00:56:25,240 Ligesom, hvad gnider forkerte vej, måske her? 1268 00:56:25,240 --> 00:56:26,016 Ja? 1269 00:56:26,016 --> 00:56:29,278 >> PUBLIKUM: [uhørligt] 1270 00:56:29,278 --> 00:56:29,950 1271 00:56:29,950 --> 00:56:30,950 DAVID J. MALAN: Præcis. 1272 00:56:30,950 --> 00:56:32,700 Du gentage dig selv igen og igen. 1273 00:56:32,700 --> 00:56:36,190 Og bogstaveligt, jeg kopieres og indsættes to af disse blokke igen og igen. 1274 00:56:36,190 --> 00:56:39,237 Og det er præcis den slags tilregnelighed kontrollere, at du skal gøre. 1275 00:56:39,237 --> 00:56:39,820 Vent et minut. 1276 00:56:39,820 --> 00:56:41,070 Skal jeg virkelig gøre dette? 1277 00:56:41,070 --> 00:56:43,610 Så hvad er det, hvad er det indlysende løsning måske? 1278 00:56:43,610 --> 00:56:44,680 Har en form for løkke. 1279 00:56:44,680 --> 00:56:46,860 Og jeg ikke helt huske hvad brik er, 1280 00:56:46,860 --> 00:56:48,810 men hvis jeg ser på næste iteration her, 1281 00:56:48,810 --> 00:56:50,560 ja, er der ikke lige evigt loop, 1282 00:56:50,560 --> 00:56:52,560 der er gentage nogle antal gange. 1283 00:56:52,560 --> 00:56:54,080 Og så jeg har angivet tre. 1284 00:56:54,080 --> 00:56:57,839 Og nu mærke til, hvor meget strammere, hvordan langt mere kortfattet dette program er. 1285 00:56:57,839 --> 00:56:59,630 Og i en vis forstand, hvor meget lettere at vedligeholde. 1286 00:56:59,630 --> 00:57:02,840 Hvis jeg ønsker at ændre ordet fra hoste til noget andet, 1287 00:57:02,840 --> 00:57:07,530 ligesom Achoo, ligesom han nysen. 1288 00:57:07,530 --> 00:57:09,770 Så jeg ændre det i en sted, og ikke tre. 1289 00:57:09,770 --> 00:57:12,050 Så dette allerede føles lidt bedre design. 1290 00:57:12,050 --> 00:57:14,610 Lad mig i stedet åbne hoste 2, vores tredje eksempel. 1291 00:57:14,610 --> 00:57:17,670 >> Læg mærke som en datalog, Jeg begynder at tælle ved 0, typisk. 1292 00:57:17,670 --> 00:57:20,950 Nu er dette ser lidt skræmmende på første, men virkningen 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 hvad synes at være fundamentalt nyt i den øverste del af programmet? 1295 00:57:26,920 --> 00:57:28,670 Jeg har fjernet sige. 1296 00:57:28,670 --> 00:57:29,830 >> Jeg har fjernet ventetiden. 1297 00:57:29,830 --> 00:57:32,370 Og hvad har jeg tilsluttet i stedet? 1298 00:57:32,370 --> 00:57:32,890 En funktion. 1299 00:57:32,890 --> 00:57:33,670 En hoste blok. 1300 00:57:33,670 --> 00:57:35,410 Jeg mener helt ærligt, jeg synes slags af en idiot, hvis jeg ikke bare 1301 00:57:35,410 --> 00:57:37,285 starte med blokken der er tilsyneladende kaldt 1302 00:57:37,285 --> 00:57:38,894 "hoste", hvis det er alt jeg vil have ham gøre. 1303 00:57:38,894 --> 00:57:40,310 Men det betyder ikke eksisterer i Scratch. 1304 00:57:40,310 --> 00:57:43,396 Jeg gik i stedet til en i palet kaldes flere blokke her, 1305 00:57:43,396 --> 00:57:46,270 og jeg trækker denne store lilla ting her, der lader mig definere en funktion. 1306 00:57:46,270 --> 00:57:48,240 Det væsentlige lader mig skabe min egen puslespil 1307 00:57:48,240 --> 00:57:51,280 stykke, der kan kaldes noget jeg vil, kan det gøre noget, jeg vil, 1308 00:57:51,280 --> 00:57:52,360 men det giver den et navn. 1309 00:57:52,360 --> 00:57:57,050 Det giver mig en ny, lilla brik at nu gør hvad jeg fortæller det at gøre. 1310 00:57:57,050 --> 00:58:01,060 Så denne lilla stykke her svarer til denne ene her. 1311 00:58:01,060 --> 00:58:01,960 >> Og hvad gør det? 1312 00:58:01,960 --> 00:58:03,930 Den siger hoste for en sekund, og derefter venter. 1313 00:58:03,930 --> 00:58:07,330 Og nu har jeg slags oprettet min egen tilpassede brik, 1314 00:58:07,330 --> 00:58:10,040 således at den opfører sig præcis det samme måde. 1315 00:58:10,040 --> 00:58:11,130 Så jeg kan holde gør dette. 1316 00:58:11,130 --> 00:58:14,421 Og ja, har der kommer til at være mere og flere muligheder for modularisering, 1317 00:58:14,421 --> 00:58:16,630 og lagdeling, kompleksitet oven på hinanden. 1318 00:58:16,630 --> 00:58:18,547 Men denne grundtanke, faktisk i problemet sagde 0. 1319 00:58:18,547 --> 00:58:20,338 Hvad du vil blive udfordret til at gøre, er 1320 00:58:20,338 --> 00:58:23,810 at hente Scratch, eller bare bruge det på internettet, og bare have det sjovt med det. 1321 00:58:23,810 --> 00:58:26,056 Vi giver dig et sæt af krav, der har en lyd, 1322 00:58:26,056 --> 00:58:27,430 og nogle antal puslespilsbrikker. 1323 00:58:27,430 --> 00:58:28,480 Men du vil gøre netop dette. 1324 00:58:28,480 --> 00:58:31,771 Og du vil indse, at du kommer til at ønsker at tage nogle små skridt i første omgang, 1325 00:58:31,771 --> 00:58:33,690 indtil dit program får mere og mere komplekse. 1326 00:58:33,690 --> 00:58:36,010 Men i betragtning er det den bedste måde jeg kunne gøre dette? 1327 00:58:36,010 --> 00:58:39,210 Kan jeg undgå dette instinkt måske, at kopiere og indsætte? 1328 00:58:39,210 --> 00:58:41,850 >> Men før Problem Set 0, og før vi afbryder, 1329 00:58:41,850 --> 00:58:44,980 troede, vi ville tage op en mere frivillig, hvis vi kunne, 1330 00:58:44,980 --> 00:58:46,820 til en sidste program det er måske den mest 1331 00:58:46,820 --> 00:58:49,150 montering på alle, givet dagens mødested. 1332 00:58:49,150 --> 00:58:50,298 Kom ned. 1333 00:58:50,298 --> 00:58:51,234 Ja. 1334 00:58:51,234 --> 00:58:52,170 Ja. 1335 00:58:52,170 --> 00:58:53,431 Hvad er dit navn? 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 ok. 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 beskæftige sig med dette en eller anden måde inden at næste 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 >> Lad mig komme videre op her. 1344 00:59:13,250 --> 00:59:16,050 Kom nu. 1345 00:59:16,050 --> 00:59:16,685 Okay. 1346 00:59:16,685 --> 00:59:21,360 1347 00:59:21,360 --> 00:59:22,360 Lad os se her. 1348 00:59:22,360 --> 00:59:25,735 Så opdager virkelig hurtigt her, Hvis du gerne vil komme videre op. 1349 00:59:25,735 --> 00:59:28,650 1350 00:59:28,650 --> 00:59:29,926 >> Vi vil gøre to runder af dette. 1351 00:59:29,926 --> 00:59:30,800 Og hvad er dit navn? 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 Rart at møde jer begge. 1357 00:59:34,276 --> 00:59:34,970 David. 1358 00:59:34,970 --> 00:59:38,785 Så vores sidste eksempel her er kaldet Ivy s hårdeste spil. 1359 00:59:38,785 --> 00:59:41,160 Og hvorfor ikke, vi har du Niveau 1, og du gør Niveau 2. 1360 00:59:41,160 --> 00:59:43,350 >> Og vi vil se, hvor langt ud over at vi faktisk gå. 1361 00:59:43,350 --> 00:59:45,855 Skrevet af en studerende sidste år, remixet af mig 1362 00:59:45,855 --> 00:59:48,840 således at dette ville gå løbet godt i New Haven. 1363 00:59:48,840 --> 00:59:53,180 Og jeg giver dig et spil, der kommer til at og bevæge sig pilene op og ned, 1364 00:59:53,180 --> 00:59:55,771 og få Yale til målstregen. 1365 00:59:55,771 --> 00:59:56,270 Nu sker det. 1366 00:59:56,270 --> 00:59:56,759 >> [VIDEO PLAYBACK] 1367 00:59:56,759 --> 00:59:58,092 >> [MUSIC - NFL på Fox TEMA SONG] 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 ved dette. 1372 01:00:07,900 --> 01:00:11,634 U kan ikke røre ved 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 musik rammer mig så hårdt, gør mig sige, åh, min herre. 1375 01:00:19,490 --> 01:00:22,927 Tak for velsignelse mig med en sind at rime og to hype fødder. 1376 01:00:22,927 --> 01:00:24,891 >> Det er godt, når du ved, 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 kendt som sådan, og dette et beat øh, kan du ikke røre ved. 1379 01:00:31,274 --> 01:00:34,672 Jeg fortalte dig Homeboy U kan ikke røre dette. 1380 01:00:34,672 --> 01:00:38,656 Ja, det er, hvordan vi lever og du ved U kan ikke røre dette. 1381 01:00:38,656 --> 01:00:40,135 >> Kig i mine øjne, mand. 1382 01:00:40,135 --> 01:00:43,093 U kan ikke røre ved dette. 1383 01:00:43,093 --> 01:00:44,572 Yo, lad mig buste de funky sangtekster. 1384 01:00:44,572 --> 01:00:45,363 U kan ikke røre ved 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 fik det sådan, og du ved, du ønsker at danse. 1387 01:00:48,627 --> 01:00:51,967 Så flytte ud af din plads og få en flyve pige og fange denne rytmen. 1388 01:00:51,967 --> 01:00:55,911 Mens det rullende hold på pumpe lidt bit og lade dem vide, hvad der foregår. 1389 01:00:55,911 --> 01:00:56,890 Sådan. 1390 01:00:56,890 --> 01:00:57,390 Sådan. 1391 01:00:57,390 --> 01:00:59,362 >> Koldt på en mission så trække tilbage. 1392 01:00:59,362 --> 01:01:04,785 Lad dem vide, at du er for meget og det er et træk Øh, du kan ikke røre. 1393 01:01:04,785 --> 01:01:07,743 Yo, jeg fortalte dig, U kan ikke røre dette. 1394 01:01:07,743 --> 01:01:09,222 Hvorfor du stå der mand? 1395 01:01:09,222 --> 01:01:10,208 U kan ikke røre ved dette. 1396 01:01:10,208 --> 01:01:13,200 >> Yo, lyder klokken skolens i, sugekop. 1397 01:01:13,200 --> 01:01:14,005 U kan ikke røre ved dette. 1398 01:01:14,005 --> 01:01:18,326 Giv mig en sang, en rytme at gøre dem sved det er hvad jeg giver dem nu. 1399 01:01:18,326 --> 01:01:21,805 De ved, når du taler om Hammer du taler om et show, der er hyped. 1400 01:01:21,805 --> 01:01:24,290 Og stramme sangere er sveden så videregive dem en mikrofon. 1401 01:01:24,290 --> 01:01:27,272 >> Eller et bånd at lære, hvad det kommer til at tage, og nu 1402 01:01:27,272 --> 01:01:29,260 han kommer til at brænde hitlisterne. 1403 01:01:29,260 --> 01:01:32,739 Legit enten arbejde hårdt eller du kan lige så godt holde op. 1404 01:01:32,739 --> 01:01:37,709 Fordi du ved U kan ikke røre dette. 1405 01:01:37,709 --> 01:01:41,599 U kan ikke røre ved dette. 1406 01:01:41,599 --> 01:01:42,182 Bryde det ned. 1407 01:01:42,182 --> 01:01:56,095 1408 01:01:56,095 --> 01:01:56,595 Stop. 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 et spin hvis du ikke kan flytte til dette 1411 01:01:59,577 --> 01:02:01,068 så har du sandsynligvis er døde. 1412 01:02:01,068 --> 01:02:04,547 Så bølge hænderne i luften [uhørligt] 1413 01:02:04,547 --> 01:02:08,026 >> Dette er det for en vinder dans til dette, og du kommer til at få tyndere. 1414 01:02:08,026 --> 01:02:12,996 Flyt slide din bagdel bare for et minut lad os alle gøre bump. 1415 01:02:12,996 --> 01:02:13,990 Ja. 1416 01:02:13,990 --> 01:02:14,984 U kan ikke røre ved dette. 1417 01:02:14,984 --> 01:02:17,966 1418 01:02:17,966 --> 01:02:19,457 >> U kan ikke røre ved dette. 1419 01:02:19,457 --> 01:02:23,433 Du må hellere få hyped Drengen U kan ikke røre dette. 1420 01:02:23,433 --> 01:02:24,924 Ring på klokken skolens igen. 1421 01:02:24,924 --> 01:02:25,918 Bryde det ned. 1422 01:02:25,918 --> 01:02:38,837 1423 01:02:38,837 --> 01:02:39,337 Stop. 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 Tak så meget for slutter sig til os! 1427 01:02:45,301 --> 01:02:47,786 Se dig udenfor. 1428 01:02:47,786 --> 01:02:48,611 >> [END AFSPIL] 1429 01:02:48,611 --> 01:02:49,277 [VIDEO PLAYBACK] 1430 01:02:49,277 --> 01:02:52,259 [MUSIC - "Seinfeld" TEMA SONG] 1431 01:02:52,259 --> 01:02:53,860 -Hey David. 1432 01:02:53,860 --> 01:02:54,500 -Hey, David. 1433 01:02:54,500 --> 01:02:55,912 Hvordan går det? 1434 01:02:55,912 --> 01:02:58,078 >> -god Job, dag. 1435 01:02:58,078 --> 01:03:00,952 -Så Har du tænkt over, hvad du kommer til at gøre for ud vittigheder? 1436 01:03:00,952 --> 01:03:03,207 Nej, jeg fik ikke noget. 1437 01:03:03,207 --> 01:03:07,550 -Hvad If-- hvad hvis det er den ude joke? 1438 01:03:07,550 --> 01:03:08,970 -lignende, Udpakning vogne? 1439 01:03:08,970 --> 01:03:11,430 Uh-huh. 1440 01:03:11,430 --> 01:03:13,890 Du ved, det handler om ingenting. 1441 01:03:13,890 --> 01:03:17,559 >> -Så Kan lide, ingen historie, ingen konflikt, ingen løsning. 1442 01:03:17,559 --> 01:03:18,350 Jeg forstår det ikke. 1443 01:03:18,350 --> 01:03:20,542 Hvad er det om så? 1444 01:03:20,542 --> 01:03:23,510 >> -Intet. 1445 01:03:23,510 --> 01:03:27,427 >> -Så Vi har ud vittighed handler om ingenting, og vi har ingen skuespillere. 1446 01:03:27,427 --> 01:03:28,510 Hvem kommer til at være i dette? 1447 01:03:28,510 --> 01:03:29,010 >> -Nej Nej Nej. 1448 01:03:29,010 --> 01:03:31,310 Jeg mener, vil jeg 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 altid fortæller mig jeg er et tegn. 1452 01:03:34,903 --> 01:03:36,029 >> Tja, jeg mener, det er sandt. 1453 01:03:36,029 --> 01:03:37,445 Men hvem der ellers kommer til at være i det? 1454 01:03:37,445 --> 01:03:38,660 Det kan ikke bare være dig. 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. 1457 01:03:51,120 --> 01:03:53,630 >> -Så Det handler om ingenting, og alle der er i den? 1458 01:03:53,630 --> 01:03:54,530 >> -Absolutely Ingenting. 1459 01:03:54,530 --> 01:03:58,730 1460 01:03:58,730 --> 01:04:00,580 >> -Dette Er latterligt.