1 00:00:00,000 --> 00:00:10,980 >> [MUSIK SPELA] 2 00:00:10,980 --> 00:00:13,260 >> -Alright! 3 00:00:13,260 --> 00:00:16,400 >> Det här är CS50. 4 00:00:16,400 --> 00:00:18,220 >> Det här är CS50. 5 00:00:18,220 --> 00:00:19,324 >> Det här är CS50. 6 00:00:19,324 --> 00:00:20,615 [MUSIK - IGGY AZALEA, "snygga"] 7 00:00:20,615 --> 00:00:29,925 8 00:00:29,925 --> 00:00:33,570 >> -Min Favorit minne från CS50 var när jag åkte till Puzzle dag. 9 00:00:33,570 --> 00:00:35,797 >> -Troligtvis Bara tiden bringade arbetar med problemsamlingar 10 00:00:35,797 --> 00:00:38,630 med mina vänner och människor som Wold så småningom bli mina blockmates. 11 00:00:38,630 --> 00:00:40,421 >> -Min Bästa minne från CS50 är Hackathon. 12 00:00:40,421 --> 00:00:41,630 -The CS50 Hackathon. 13 00:00:41,630 --> 00:00:42,130 >> -Hackathon. 14 00:00:42,130 --> 00:00:42,800 >> -Hackathon. 15 00:00:42,800 --> 00:00:43,300 -Hackathon. 16 00:00:43,300 --> 00:00:43,883 -The Hackathon 17 00:00:43,883 --> 00:00:45,027 -Rob Bowden. 18 00:00:45,027 --> 00:00:46,110 Bara allt om honom. 19 00:00:46,110 --> 00:00:47,401 >> [MUSIK - IGGY AZALEA, "snygga"] 20 00:00:47,401 --> 00:00:56,790 21 00:00:56,790 --> 00:01:02,512 >> -Min Favorit minne är när jag var på skede och jag spelade den prestigefyllda rollen 22 00:01:02,512 --> 00:01:04,220 av en nod [? i Linked?] [? List. ?] 23 00:01:04,220 --> 00:01:08,470 >> -När Vi alla fick gratis Dropbox-utrymme och David var som, titta under era platser. 24 00:01:08,470 --> 00:01:10,520 Och det var, plats för alla! 25 00:01:10,520 --> 00:01:11,811 >> [MUSIK - IGGY AZALEA, "snygga"] 26 00:01:11,811 --> 00:01:20,940 27 00:01:20,940 --> 00:01:22,830 >> -Min Rådgivning för alla inkommande studenten skulle 28 00:01:22,830 --> 00:01:26,170 vara att verkligen arbeta med P-apparater med vänner. 29 00:01:26,170 --> 00:01:27,960 >> -Kontor Timmar är väldigt mycket din vän. 30 00:01:27,960 --> 00:01:30,870 >> -Gör Det mesta av din erfarenhet och träffa så många människor som möjligt. 31 00:01:30,870 --> 00:01:32,390 >> -Var Inte rädd för att be om hjälp. 32 00:01:32,390 --> 00:01:33,890 -Start P-set i början av veckan. 33 00:01:33,890 --> 00:01:36,723 Jag tror att den största är att utnyttja alla resurser 34 00:01:36,723 --> 00:01:37,950 som CS50 har. 35 00:01:37,950 --> 00:01:39,960 >> -Gå Till kontorstid i början av veckan. 36 00:01:39,960 --> 00:01:41,430 >> -Definitivt Titta shortsen. 37 00:01:41,430 --> 00:01:42,989 >> -Var Förhala på din P-set. 38 00:01:42,989 --> 00:01:45,780 -Kontrollera Att du hittar en bra grupp människor att arbeta på P-apparater med. 39 00:01:45,780 --> 00:01:48,530 Du kan ha mycket roligt och få arbetet gjort tillsammans. 40 00:01:48,530 --> 00:01:50,370 >> -Var Inte rädd för att skjuta dig själv. 41 00:01:50,370 --> 00:01:52,080 Gå för hacker upplagan ibland. 42 00:01:52,080 --> 00:01:55,410 >> Skrivning av saker på papper innan du någonsin röra din dator. 43 00:01:55,410 --> 00:01:58,380 >> -CS50 Är riktigt bra på tillhandahåller sätt att få hjälp. 44 00:01:58,380 --> 00:02:01,134 >> -Min Ett råd är sömn. 45 00:02:01,134 --> 00:02:02,050 Har någon sagt det? 46 00:02:02,050 --> 00:02:04,100 Sömn, för säker. 47 00:02:04,100 --> 00:02:08,919 Det är lätt att inte göra, men du måste göra det, tror jag. 48 00:02:08,919 --> 00:02:12,982 >> Jag skulle säga egentligen vara mentalt förberedd eftersom du kommer att älska det. 49 00:02:12,982 --> 00:02:14,273 [MUSIK - IGGY AZALEA, "snygga"] 50 00:02:14,273 --> 00:02:17,750 51 00:02:17,750 --> 00:02:18,940 >> Det här är CS50. 52 00:02:18,940 --> 00:02:22,090 53 00:02:22,090 --> 00:02:23,066 >> Det här är CS50. 54 00:02:23,066 --> 00:02:26,400 55 00:02:26,400 --> 00:02:26,989 >> Det här är CS50. 56 00:02:26,989 --> 00:02:28,280 [MUSIK - IGGY AZALEA, "snygga"] 57 00:02:28,280 --> 00:02:31,290 58 00:02:31,290 --> 00:02:31,964 >> Det här är CS50. 59 00:02:31,964 --> 00:02:36,020 60 00:02:36,020 --> 00:02:42,270 >> [Applåder] 61 00:02:42,270 --> 00:02:46,040 >> DAVID J. MALAN: Så detta är CS50 och detta är slutet på vecka 0. 62 00:02:46,040 --> 00:02:48,770 Och det var bara några av CS50: s personal som 63 00:02:48,770 --> 00:02:51,100 väntar inte bara i avsnitten Mottagning, men, 64 00:02:51,100 --> 00:02:54,390 också, denna kommande helg vid CS50 Puzzle dag. 65 00:02:54,390 --> 00:02:56,410 Vilket, återigen, inte allt om programmering. 66 00:02:56,410 --> 00:02:59,710 I själva verket är det troligt att du kommer inte att behöva programmera något, 67 00:02:59,710 --> 00:03:03,780 utan snarare lösa problem med hjälp av intelligens och vänner tillsammans dig. 68 00:03:03,780 --> 00:03:06,400 >> Vi kommer att få sällskap av några av våra vänner på Facebook-- 69 00:03:06,400 --> 00:03:08,980 Om du registrerar här-- som under de senaste åren, 70 00:03:08,980 --> 00:03:11,450 har faktiskt skrivit dessa utmaningar med oss. 71 00:03:11,450 --> 00:03:14,822 Och så kommer de att vara de i slutändan kör Puzzle dag. 72 00:03:14,822 --> 00:03:17,530 Och så kommer du att utmanas med just den typen av saker 73 00:03:17,530 --> 00:03:20,520 och problem som folks vid Facebook gillar att tänka på. 74 00:03:20,520 --> 00:03:21,860 Så det är i morgon. 75 00:03:21,860 --> 00:03:25,980 Registrera dig på cs50.harvard.edu/register. 76 00:03:25,980 --> 00:03:28,120 >> Nu ett ord om ett par av personal i synnerhet. 77 00:03:28,120 --> 00:03:30,090 Detta här är Ansel Duff, vem är faktiskt en 78 00:03:30,090 --> 00:03:33,860 av medförfattarna till dessa binära lökar som vi såg på onsdagen, 79 00:03:33,860 --> 00:03:36,710 förutom CS50 egen Dan Bradley. 80 00:03:36,710 --> 00:03:40,094 Ansel Duff var också en före detta förstaårselev advisee av mina 3 år sedan 81 00:03:40,094 --> 00:03:41,760 och han faktiskt även byggt denna talarstol. 82 00:03:41,760 --> 00:03:45,330 Han har gått på att göra ingenjörsvetenskap och mer. 83 00:03:45,330 --> 00:03:49,279 Nu är hans bild här faktiskt Ansel 3 år sedan i CS50 Hackathon 84 00:03:49,279 --> 00:03:51,820 när han lånade en av våra ballonger, fast den till sin bärbara dator, 85 00:03:51,820 --> 00:03:55,240 och, för nästa 12 vissa udda timmar, med fokus på hans sista projekt, 86 00:03:55,240 --> 00:03:59,150 tar pauser bara öppna påsar med godis på Hackathon. 87 00:03:59,150 --> 00:04:02,210 >> Men han fortsatte senare till bringar i somras med oss, 88 00:04:02,210 --> 00:04:05,270 sedan CS50 för sin personal, och nu eleverna denna termin, 89 00:04:05,270 --> 00:04:06,770 har en egen 3D-skrivare. 90 00:04:06,770 --> 00:04:10,180 Och i ett nötskal en 3D-skrivare är en enhet som ser ganska så här. 91 00:04:10,180 --> 00:04:15,700 Du fyller den med en plast spole som smälts ned av enheten 92 00:04:15,700 --> 00:04:18,940 och du bygger saker bokstavligen från ingenting. 93 00:04:18,940 --> 00:04:22,660 Ungefär som en bläckstråleskrivare, börjar du spotta ut små prickar av plast 94 00:04:22,660 --> 00:04:24,990 den formen tillsammans bilda hela objekt. 95 00:04:24,990 --> 00:04:28,430 Och så Ansel exempelvis tidigare i sommar, har en iPhone 5 96 00:04:28,430 --> 00:04:30,722 och beslutade att han verkligen ville att stötta upp på hans skrivbord. 97 00:04:30,722 --> 00:04:32,638 Men han ville inte gå ut och köpa något 98 00:04:32,638 --> 00:04:36,030 från Apple Store eller liknande, så han satte sig ner och började rita något. 99 00:04:36,030 --> 00:04:38,280 Han tog några mätningar hur tjock 100 00:04:38,280 --> 00:04:41,270 och hur stort hans iPhone var, Han drog denna bilden här, 101 00:04:41,270 --> 00:04:43,870 Han bestämde att han ville att ha en 75 graders lutning 102 00:04:43,870 --> 00:04:46,150 som stirrade på honom på hans skrivbord där. 103 00:04:46,150 --> 00:04:50,440 Han vände då detta, med hjälp av programvara, till en 3D CAD-modell 104 00:04:50,440 --> 00:04:52,400 det såg lite ungefär så här. 105 00:04:52,400 --> 00:04:55,940 Och så fortsatte han, i slutändan, att faktiskt skapa den. 106 00:04:55,940 --> 00:05:00,250 Så i själva verket, om någon av er här, kanske i rad som jag kan kasta till, har 107 00:05:00,250 --> 00:05:06,780 an-- där har vi folk med iPhone 5, och här har vi två till. 108 00:05:06,780 --> 00:05:10,650 109 00:05:10,650 --> 00:05:17,037 >> Nu, inte vara sämre, CS50 egen Cheng Gong fastställs också i sommar 110 00:05:17,037 --> 00:05:19,870 att bygga en hel del saker och, i själva verket, för skäl som fortfarande är 111 00:05:19,870 --> 00:05:23,970 oklara, har varit långsamt utskrift av en armé av elefanter 112 00:05:23,970 --> 00:05:27,250 med ledade armar och stammar. 113 00:05:27,250 --> 00:05:32,515 Ett par av dem är faktiskt här om någon skulle nu like-- en elefant. 114 00:05:32,515 --> 00:05:35,650 115 00:05:35,650 --> 00:05:40,522 Okej,. men vad Cheng gjorde också för oss är han mycket vänligt inrätta en kamera 116 00:05:40,522 --> 00:05:42,230 eftersom det elefant, tro det eller ej, 117 00:05:42,230 --> 00:05:44,690 tar cirka två och en halv timme för att skriva ut. 118 00:05:44,690 --> 00:05:47,840 Även iPhone monter tog en och en halv timme för att skriva ut. 119 00:05:47,840 --> 00:05:51,490 Och vad Cheng gick framåt och gjorde inrättades en trevlig kamera framför 120 00:05:51,490 --> 00:05:55,580 i denna 3D-skrivare, filmat i en timme och en halv som Ansel design skrivs ut. 121 00:05:55,580 --> 00:05:58,090 Vi överdrog några sexig musik till den för 122 00:05:58,090 --> 00:06:00,570 för att ge dig det här för att titta hur 3D tryckeri. 123 00:06:00,570 --> 00:06:02,494 Och även om detta är faktiskt i plast, 124 00:06:02,494 --> 00:06:05,160 inser att om detta är ett område av intresse för dig akademiskt, 125 00:06:05,160 --> 00:06:07,120 det finns folk, bland dem Jennifer Lewis här 126 00:06:07,120 --> 00:06:09,036 på Högskolan för Engineering, som faktiskt 127 00:06:09,036 --> 00:06:10,920 arbetar med 3D-utskrifter av plastföremål. 128 00:06:10,920 --> 00:06:14,150 Men även, i allt större utsträckning, biologiska material för att lösa 129 00:06:14,150 --> 00:06:16,530 fysiologiska problem för människor. 130 00:06:16,530 --> 00:06:19,944 Men här är en liten något från CS50. 131 00:06:19,944 --> 00:06:31,625 >> [LOUD mekaniska ljud] 132 00:06:31,625 --> 00:06:34,250 DAVID J. MALAN: Det låter inte något liknande i verkligheten, 133 00:06:34,250 --> 00:06:37,240 men det är mycket svalare att titta på det vid den hastigheten, och med det ljudet. 134 00:06:37,240 --> 00:06:40,000 >> Nu på onsdag, hur fick vi först hit? 135 00:06:40,000 --> 00:06:43,345 Vi började prata om datorn vetenskap och vi frågade vad det var. 136 00:06:43,345 --> 00:06:46,470 Och det handlar om ett antal saker, och det finns så många olika riktningar 137 00:06:46,470 --> 00:06:48,477 där du kan bege efter en kurs som CS50. 138 00:06:48,477 --> 00:06:50,810 I själva verket om du plockat upp en av dessa icke-officiella guiderna 139 00:06:50,810 --> 00:06:54,080 till CS utsidan, häftet som Vi har förutsatt, oavsett om du är 140 00:06:54,080 --> 00:06:57,150 funderar på att ta just CS50, eller kanske göra en sekundär, 141 00:06:57,150 --> 00:06:59,557 eller kanske till och koncentrera i CS, behöver bläddra igenom det. 142 00:06:59,557 --> 00:07:01,390 Och du kommer att se ett diagram mot slutet som 143 00:07:01,390 --> 00:07:04,950 visar de många olika riktningar i CS som du kan gå ut i. 144 00:07:04,950 --> 00:07:09,030 >> Men i dag, kommer vi att fokusera, igen, på verkligen en av de grundläggande åsikter, 145 00:07:09,030 --> 00:07:11,500 kanske, där du har ingångar på problem, 146 00:07:11,500 --> 00:07:13,430 du har utgångar från problem, och du har 147 00:07:13,430 --> 00:07:17,420 algoritmer som man kan skapa dessa utgångar från dessa ingångar. 148 00:07:17,420 --> 00:07:20,330 Och ett sådant exempel var av Naturligtvis denna telefonbok här. 149 00:07:20,330 --> 00:07:24,180 Och vi som ett exempel för att gå genom en algoritm som var korrekt. 150 00:07:24,180 --> 00:07:26,490 Och sedan en annan var korrekt, men lite snabbare. 151 00:07:26,490 --> 00:07:29,448 Och sedan en annan som var lite mer dramatiskt, men i grunden 152 00:07:29,448 --> 00:07:30,000 snabbare. 153 00:07:30,000 --> 00:07:32,720 >> Just denna telefonbok vi hävdade hade cirka 1.000 sidor. 154 00:07:32,720 --> 00:07:36,200 Och hur många gånger har jag har att riva telefonboken i hälften 155 00:07:36,200 --> 00:07:39,930 att hitta någon som Mike Smith, maximalt, av 1000 sidig bok? 156 00:07:39,930 --> 00:07:41,040 Så, 10 ge och ta. 157 00:07:41,040 --> 00:07:45,050 Och så när jag rev den här saken i hälften, eller helt enkelt, mer moget, 158 00:07:45,050 --> 00:07:48,490 uppdelad på mitten, det är bara 10 sidor av 1000. 159 00:07:48,490 --> 00:07:51,470 Och om du extrapolera, lite orealistiskt för en telefonbok, 160 00:07:51,470 --> 00:07:56,540 men om detta telefonbok hade vissa 4 miljard sidor i den, så helt 161 00:07:56,540 --> 00:07:59,680 otymplig fysiskt, hur många gånger ska du delar ett 4 miljarder 162 00:07:59,680 --> 00:08:01,460 sida telefonbok i hälften? 163 00:08:01,460 --> 00:08:03,035 Så det är faktiskt 32, ge eller ta. 164 00:08:03,035 --> 00:08:07,090 Och bara så 32 gånger, ut 4 miljarder sidor, kan 165 00:08:07,090 --> 00:08:08,700 du hittar någon som Mike Smith. 166 00:08:08,700 --> 00:08:09,740 Och det är effektiviteten. 167 00:08:09,740 --> 00:08:12,130 Det är en bra algoritm, förmodar. 168 00:08:12,130 --> 00:08:14,480 >> Men sedan flyttade vi från det att försöka formalisera det. 169 00:08:14,480 --> 00:08:16,100 Och jag föreslog denna pseudokoden. 170 00:08:16,100 --> 00:08:17,800 Pseudokod kod är inte något formellt. 171 00:08:17,800 --> 00:08:18,880 Det är inte något du memorera. 172 00:08:18,880 --> 00:08:21,588 Det är bara något du uttrycker ganska intuitivt att använda engelska, 173 00:08:21,588 --> 00:08:24,990 eller något språk riktigt, att förmedlar dina idéer fattat. 174 00:08:24,990 --> 00:08:26,990 Men vad är nyckeln om pseudokod kod är att du 175 00:08:26,990 --> 00:08:30,331 försöka förutse alla de möjliga fall som kan hända. 176 00:08:30,331 --> 00:08:33,080 Och faktiskt, i denna pseudo kod, fanns det egentligen tre fall 177 00:08:33,080 --> 00:08:34,700 varje gång jag delade telefonboken. 178 00:08:34,700 --> 00:08:36,006 Mike kan vara till vänster. 179 00:08:36,006 --> 00:08:37,130 Mike kan vara till höger. 180 00:08:37,130 --> 00:08:39,240 Eller han kan vara rätt på sidan jag är på. 181 00:08:39,240 --> 00:08:42,110 Eller en fjärde hörn fall, så att säga. 182 00:08:42,110 --> 00:08:46,470 En dålig scenario skulle kunna vara en which-- vad som händer? 183 00:08:46,470 --> 00:08:48,860 Mike är bara inte in telefonboken alls. 184 00:08:48,860 --> 00:08:52,720 >> Och när programmen crash-- när Mac och PC-program som ni kör 185 00:08:52,720 --> 00:08:56,400 på dina datorer ibland hänger eller avslutas oväntat, 186 00:08:56,400 --> 00:08:59,770 som i allmänhet innebär att vissa programmerare, en del människa som dig snart, 187 00:08:59,770 --> 00:09:01,650 bara skruvas upp och gjorde några misstag. 188 00:09:01,650 --> 00:09:05,207 Kanske inte räknar med att det kanske finns är inte Mike Smith i telefonboken. 189 00:09:05,207 --> 00:09:08,040 Och om du inte faktiskt skriva kod för att hantera situationer som detta, 190 00:09:08,040 --> 00:09:09,890 i allmänhet oförutsägbar saker kan hända. 191 00:09:09,890 --> 00:09:10,960 Maskinen kan frysa. 192 00:09:10,960 --> 00:09:11,730 Den kan starta. 193 00:09:11,730 --> 00:09:12,889 Programmet kan sluta. 194 00:09:12,889 --> 00:09:14,722 Och så alla dessa dumheter som du kan 195 00:09:14,722 --> 00:09:18,030 har stött på i din faktiska livet bara med hjälp av datorer, 196 00:09:18,030 --> 00:09:20,710 kommer också att bli precis förklaras bort av denna intuition 197 00:09:20,710 --> 00:09:24,920 och denna förståelse av vad som är faktiskt händer under huven. 198 00:09:24,920 --> 00:09:27,329 >> Nu ska försöka att ta en titt på ett mer allmänt problem. 199 00:09:27,329 --> 00:09:29,120 I stället för att ta närvaro på en plats som 200 00:09:29,120 --> 00:09:32,230 detta, vilket skulle vara ganska långsam att göra en, två, tre, fyra. 201 00:09:32,230 --> 00:09:34,070 Eller kanske två, fyra, sex, åtta. 202 00:09:34,070 --> 00:09:36,080 Låt oss fokusera i stället på hur vi kan formalisera 203 00:09:36,080 --> 00:09:39,400 algoritmen i den process genom som vi kunde ta närvaro. 204 00:09:39,400 --> 00:09:42,290 Och längs vägen, låt oss börja att tillämpa vissa nomenklatur 205 00:09:42,290 --> 00:09:47,130 att vi använder i dag, när vi faktiskt börja programmera i ett språk. 206 00:09:47,130 --> 00:09:50,910 Så jag ger er nu, en fyra minuters video att vi tillsammans med våra vänner 207 00:09:50,910 --> 00:09:52,820 från TED, organisationen. 208 00:09:52,820 --> 00:09:56,380 Där vi levererade ett manus och de förde sina animatörer att bära, 209 00:09:56,380 --> 00:10:00,970 och faktiskt skapade en 2D animering av vad en algoritm är. 210 00:10:00,970 --> 00:10:02,776 Om vi ​​kunde dämpa belysningen. 211 00:10:02,776 --> 00:10:06,664 >> [MUSIK SPELA] 212 00:10:06,664 --> 00:10:17,890 213 00:10:17,890 --> 00:10:19,140 BERÄTTARE: Vad är en algoritm? 214 00:10:19,140 --> 00:10:21,620 I datavetenskap, en algoritm är en uppsättning 215 00:10:21,620 --> 00:10:24,840 av instruktioner lösa vissa problem steg-för-steg. 216 00:10:24,840 --> 00:10:27,310 Typiskt algoritmer är utförs av datorer, 217 00:10:27,310 --> 00:10:29,365 men vi människor har algoritmer som väl. 218 00:10:29,365 --> 00:10:31,240 Till exempel, hur skulle du går om att räkna 219 00:10:31,240 --> 00:10:32,990 antalet personer i ett rum? 220 00:10:32,990 --> 00:10:36,840 Tja, om du är som jag, skulle du antagligen peka på varje person ett i taget 221 00:10:36,840 --> 00:10:38,370 och räkna upp från noll. 222 00:10:38,370 --> 00:10:41,200 Ett, två, tre, fyra, och så vidare. 223 00:10:41,200 --> 00:10:42,410 Tja, det är en algoritm. 224 00:10:42,410 --> 00:10:45,820 Faktum är, låt oss försöka uttrycka det en lite mer formellt i pseudokod kod. 225 00:10:45,820 --> 00:10:48,940 Engelsk-liknande syntax som liknar ett programmeringsspråk. 226 00:10:48,940 --> 00:10:50,880 >> Låt n lika med 0. 227 00:10:50,880 --> 00:10:55,210 För varje person i rummet, ställa n lika med n plus 1. 228 00:10:55,210 --> 00:10:56,790 Hur man tolka pseudokoden? 229 00:10:56,790 --> 00:10:59,490 Tja linje ett deklarerar, så att säga, en variabel 230 00:10:59,490 --> 00:11:02,880 kallade n och initierar dess värde till 0 här just 231 00:11:02,880 --> 00:11:05,080 innebär att vid början av vår algoritm, 232 00:11:05,080 --> 00:11:07,910 sak som vi är räkning har ett värde på 0. 233 00:11:07,910 --> 00:11:10,860 När allt innan vi börjar räkna Vi har inte räknat något ännu. 234 00:11:10,860 --> 00:11:13,580 Ringa denna variabel n är bara en konvention. 235 00:11:13,580 --> 00:11:15,130 Jag kunde har kallat det mest något. 236 00:11:15,130 --> 00:11:17,460 Nu linje två avgränsar början av en slinga, 237 00:11:17,460 --> 00:11:20,550 en sekvens av steg som kommer att upprepa några antal gånger. 238 00:11:20,550 --> 00:11:24,130 Så i vårt exempel, steg vi tagande räknar personer i rummet. 239 00:11:24,130 --> 00:11:26,260 Under linjen två är linje tre som beskriver 240 00:11:26,260 --> 00:11:28,400 exakt hur vi ska gå till väga för att räkna. 241 00:11:28,400 --> 00:11:31,720 Inbuktningen innebär att Det är linje tre som kommer att upprepa. 242 00:11:31,720 --> 00:11:35,190 Så med pseudokod-koden är tale är att efter start vid 0 243 00:11:35,190 --> 00:11:38,940 för varje person i Rummet vi öka n med 1 244 00:11:38,940 --> 00:11:41,310 Nu är den här algoritmen korrekt? 245 00:11:41,310 --> 00:11:42,820 Bra låt oss bang på det lite. 246 00:11:42,820 --> 00:11:45,520 >> Fungerar det om det finns två personer i rummet? 247 00:11:45,520 --> 00:11:46,420 Låt oss se. 248 00:11:46,420 --> 00:11:48,500 I linje man initiera vi n till 0. 249 00:11:48,500 --> 00:11:51,910 För var och en av dessa två personer, vi sedan öka n med 1. 250 00:11:51,910 --> 00:11:55,570 Så i första resa genom loop, uppdaterar vi n från 0 till 1. 251 00:11:55,570 --> 00:11:59,320 Den andra resan genom det samma slinga, uppdaterar vi n från 1 till 2. 252 00:11:59,320 --> 00:12:02,850 Och så, med denna algoritm är ände, är n 2, vilket 253 00:12:02,850 --> 00:12:04,950 faktiskt motsvarar det antal av personer i rummet. 254 00:12:04,950 --> 00:12:06,040 Så långt är allt väl. 255 00:12:06,040 --> 00:12:07,870 >> Vad sägs om ett hörn fall om? 256 00:12:07,870 --> 00:12:11,090 Antag att det finns 0 personer i room-- förutom mig, vem är 257 00:12:11,090 --> 00:12:12,420 gör räkna. 258 00:12:12,420 --> 00:12:15,380 I linje ett, vi återigen initiera n till 0. 259 00:12:15,380 --> 00:12:17,810 Den här gången dock, linje tre körs inte alls 260 00:12:17,810 --> 00:12:19,610 eftersom det inte finns en person i rummet. 261 00:12:19,610 --> 00:12:23,540 Och så n är fortfarande 0, vilket verkligen matchar antalet personer i rummet. 262 00:12:23,540 --> 00:12:24,670 Ganska enkelt, eller hur? 263 00:12:24,670 --> 00:12:27,880 Men räkna människor en i taget är ganska ineffektivt, också, nej? 264 00:12:27,880 --> 00:12:29,160 Visst kan vi göra bättre. 265 00:12:29,160 --> 00:12:33,440 Varför inte räkna två personer åt gången, stället för att räkna ett, två, tre, 266 00:12:33,440 --> 00:12:36,470 fyra, fem, sex, sju, åtta, och så vidare. 267 00:12:36,470 --> 00:12:39,106 Varför inte räkna två, fyra, sex, åtta, och så vidare? 268 00:12:39,106 --> 00:12:40,670 Det låter ännu snabbare. 269 00:12:40,670 --> 00:12:41,940 Och det säkert är. 270 00:12:41,940 --> 00:12:44,490 >> Låt oss uttrycka denna optimering i pseudokod kod. 271 00:12:44,490 --> 00:12:46,040 Låt n lika med 0. 272 00:12:46,040 --> 00:12:50,760 För varje par av människor i rum, satt n lika med n plus 2. 273 00:12:50,760 --> 00:12:52,360 Ganska enkel förändring, eller hur? 274 00:12:52,360 --> 00:12:56,560 I stället räknar människor en i taget, vi istället räkna dem två åt gången. 275 00:12:56,560 --> 00:12:59,240 Denna algoritm har sålunda dubbelt så fort som den sista. 276 00:12:59,240 --> 00:13:00,530 Men är det korrekt? 277 00:13:00,530 --> 00:13:01,160 Låt oss se. 278 00:13:01,160 --> 00:13:03,580 Fungerar det om det finns två personer i rummet? 279 00:13:03,580 --> 00:13:05,800 I linje ett, vi initiera n till 0. 280 00:13:05,800 --> 00:13:09,160 För att ett par personer, vi sedan öka n med 2. 281 00:13:09,160 --> 00:13:11,910 Och så av denna algoritm s ände n är 2, vilket 282 00:13:11,910 --> 00:13:13,910 faktiskt motsvarar det antal av personer i rummet. 283 00:13:13,910 --> 00:13:16,610 >> Antag därefter att det finns noll personer i rummet. 284 00:13:16,610 --> 00:13:19,080 I linje man initiera vi n till 0. 285 00:13:19,080 --> 00:13:21,260 Liksom tidigare linje tre inte köra allt 286 00:13:21,260 --> 00:13:25,270 eftersom det inte finns några par människor i rummet, och så n förblir 0. 287 00:13:25,270 --> 00:13:27,840 Vilket verkligen matchar antal personer i rummet. 288 00:13:27,840 --> 00:13:30,520 Men tänk om det finns tre personer i rummet? 289 00:13:30,520 --> 00:13:32,380 Hur fungerar denna algoritm biljettpriset? 290 00:13:32,380 --> 00:13:35,710 Låt oss se, i linje ett, Vi initiera n till 0. 291 00:13:35,710 --> 00:13:39,140 För ett par av dessa människor, vi sedan öka n med 2. 292 00:13:39,140 --> 00:13:40,050 Men sen då? 293 00:13:40,050 --> 00:13:42,340 Det finns inte en annan full par personer i rummet, 294 00:13:42,340 --> 00:13:44,430 så linje två inte längre gäller. 295 00:13:44,430 --> 00:13:48,790 Och så av denna algoritm slut, n är fortfarande 2 som inte är korrekt. 296 00:13:48,790 --> 00:13:52,070 I själva verket sade denna algoritm är att vara barnvagn eftersom det har ett misstag. 297 00:13:52,070 --> 00:13:54,070 >> Låt oss upprättelse med några ny pseudokod kod. 298 00:13:54,070 --> 00:13:56,110 Låt n lika med 0. 299 00:13:56,110 --> 00:14:00,790 För varje par av människor i rum, satt N till n plus 2. 300 00:14:00,790 --> 00:14:05,410 Om en person fortfarande oparade, set N lika med n plus 1. 301 00:14:05,410 --> 00:14:09,340 För att lösa detta problem, vi har introducerades i linje fyra villkor, 302 00:14:09,340 --> 00:14:12,120 annars känd som en gren, bara att exekverar 303 00:14:12,120 --> 00:14:14,890 om det finns en person som vi kunde inte para ihop med en annan. 304 00:14:14,890 --> 00:14:17,140 Och så nu, oavsett om det finns en, eller tre, 305 00:14:17,140 --> 00:14:21,550 eller någon udda antal personer i rummet, denna algoritm kommer nu räkna dem. 306 00:14:21,550 --> 00:14:22,810 Kan vi göra ännu bättre? 307 00:14:22,810 --> 00:14:25,890 Jo, vi kunde räkna in tre och tre, eller fyror, eller till och med femmor och tior, 308 00:14:25,890 --> 00:14:29,390 men utöver det, det kommer att få lite svårt att peka. 309 00:14:29,390 --> 00:14:32,900 >> Vid slutet av dagen, oavsett om utförs av datorer eller människor, 310 00:14:32,900 --> 00:14:34,870 algoritmer är bara en uppsättning instruktioner 311 00:14:34,870 --> 00:14:36,560 med som att lösa problem. 312 00:14:36,560 --> 00:14:38,360 Dessa var bara tre. 313 00:14:38,360 --> 00:14:41,860 Vilka problem skulle du lösa med en algoritm? 314 00:14:41,860 --> 00:14:44,261 >> DAVID J. MALAN: Så medvetet, ett mycket enkelt program, 315 00:14:44,261 --> 00:14:46,260 en mycket enkel algoritm, för att uppnå något 316 00:14:46,260 --> 00:14:48,280 mycket enkelt, att räkna antal personer i rummet. 317 00:14:48,280 --> 00:14:50,370 >> Men låt oss retas isär en del av den representativa 318 00:14:50,370 --> 00:14:52,870 terar här som faktiskt kommer att vara till nytta även när 319 00:14:52,870 --> 00:14:54,880 genomföra den mest komplex av programvara. 320 00:14:54,880 --> 00:14:58,060 Så till exempel, i detta första raden, Vi har vad vi kallar variabeln, 321 00:14:58,060 --> 00:15:01,040 och från algebra, du allmänt bekant med x och y 322 00:15:01,040 --> 00:15:02,930 och z ibland, och så vidare. 323 00:15:02,930 --> 00:15:05,770 Men i programmering, variabler fortfarande, i slutet av dagen, 324 00:15:05,770 --> 00:15:06,680 mycket lik den som. 325 00:15:06,680 --> 00:15:09,910 Men det är kanske enklare att tänka på en variabel som bara en behållare. 326 00:15:09,910 --> 00:15:13,520 Och i själva verket är det ett visst antal bitar genomfört något sätt i din hårddisk 327 00:15:13,520 --> 00:15:16,410 eller i datorns minne, men mer om det i framtiden. 328 00:15:16,410 --> 00:15:17,670 Det är bara en container. 329 00:15:17,670 --> 00:15:20,310 Och om du säger något som låter n lika med 0, 330 00:15:20,310 --> 00:15:24,310 Ja, det är som att kalla detta glas skål här n, bara ett godtyckligt namn, 331 00:15:24,310 --> 00:15:26,230 och sätta något i den till en början. 332 00:15:26,230 --> 00:15:28,940 Så värdet av denna skålen är just nu noll. 333 00:15:28,940 --> 00:15:31,380 Och naturligtvis om du uppfattar i en efterföljande linje, 334 00:15:31,380 --> 00:15:35,070 att faktiskt öka något linje kod, som i detta tredje raden här, 335 00:15:35,070 --> 00:15:39,857 med 1, det är som att säga vad som är det aktuella värdet på n, det är 0, plus 1, 336 00:15:39,857 --> 00:15:41,690 sätta något som en ping pong boll här. 337 00:15:41,690 --> 00:15:45,140 Nu värdet av denna variabel är helt enkelt 1. 338 00:15:45,140 --> 00:15:50,064 Och du kan mycket snabbt extrapolera, men nu är det 2, nu är det 3, och så vidare. 339 00:15:50,064 --> 00:15:51,230 Så det är allt en variabel är. 340 00:15:51,230 --> 00:15:53,740 Det är en bit av lagring till faktiskt lagra vissa uppgifter. 341 00:15:53,740 --> 00:15:55,050 För nu är det en ping pong boll. 342 00:15:55,050 --> 00:15:55,883 Där är det ett nummer. 343 00:15:55,883 --> 00:15:58,910 Men det kan vara ord i ett lexikon, som stavningskontrollen 344 00:15:58,910 --> 00:16:02,300 Jag hänvisade till på onsdag för en av förra årets problemsamlingar. 345 00:16:02,300 --> 00:16:05,640 >> Nu en annan viktig idé, som på liknande sätt är ganska intuitivt skulle jag påstå, 346 00:16:05,640 --> 00:16:06,690 är det av en slinga. 347 00:16:06,690 --> 00:16:08,930 Och slingan i processen att räkna alla 348 00:16:08,930 --> 00:16:12,540 är, naturligtvis, att göra samma sak igen och igen-- endera 349 00:16:12,540 --> 00:16:14,140 åt gången eller två åt gången. 350 00:16:14,140 --> 00:16:17,690 Och du kan uttrycka detta på engelska, eller pseudokod kod, i en rad olika sätt, 351 00:16:17,690 --> 00:16:21,560 men med användning av denna preposition "för" är ett mycket vanligt sätt att göra det. 352 00:16:21,560 --> 00:16:24,460 För varje person i rummet, gör det här. 353 00:16:24,460 --> 00:16:25,350 Om och om igen. 354 00:16:25,350 --> 00:16:27,700 Och det faktum att det är indragen, linje tre, 355 00:16:27,700 --> 00:16:29,840 betyder bara att det som du ska göra 356 00:16:29,840 --> 00:16:33,490 är saker som är indragen under linjen två själv. 357 00:16:33,490 --> 00:16:35,590 Bara en mänsklig konvention, men en vanlig man 358 00:16:35,590 --> 00:16:39,010 som vi ser i själva högre nivå programmeringsspråk. 359 00:16:39,010 --> 00:16:41,870 >> Nu lite mer intressant är när du får i ett hörn fall. 360 00:16:41,870 --> 00:16:43,970 Till exempel, ett hörn fallet var när det 361 00:16:43,970 --> 00:16:48,060 var tre personer, eller fem, eller sju, eller någon udda antal personer i rummet, 362 00:16:48,060 --> 00:16:51,630 eftersom att göra det två och två bromsar så småningom eftersom din kommer 363 00:16:51,630 --> 00:16:54,265 att missa någon, antingen vid början eller slutet 364 00:16:54,265 --> 00:16:55,390 beroende på hur du gör det. 365 00:16:55,390 --> 00:16:59,800 Och så, nu har jag denna gren, eller tillstånd, om en person som kvarstår, 366 00:16:59,800 --> 00:17:04,490 sedan gå vidare och hantera att en lonesome person som inte fick 367 00:17:04,490 --> 00:17:05,690 parat med någon annan. 368 00:17:05,690 --> 00:17:09,030 Så det är vad vi skulle kalla ett tillstånd, eller en filial. 369 00:17:09,030 --> 00:17:11,500 >> Nu pseudokod kod mer generellt kan vara 370 00:17:11,500 --> 00:17:13,730 skriven för att lösa eventuella antal problem. 371 00:17:13,730 --> 00:17:16,490 Och vad jag tyckte vi skulle göra här är att ta en stund 372 00:17:16,490 --> 00:17:20,089 att bjuda in ska vi säga CS50 s äger Rob Bowden på scen 373 00:17:20,089 --> 00:17:25,040 att få sällskap av två volontärer, som inte har någon aning om vad som väntar. 374 00:17:25,040 --> 00:17:26,890 En hand gick ner så fort jag sa det. 375 00:17:26,890 --> 00:17:28,700 Vad sägs om dig på slut här, kom upp. 376 00:17:28,700 --> 00:17:33,040 Och vad sägs om från längre bort, vad sägs om vägen i ryggen. 377 00:17:33,040 --> 00:17:35,200 Bakre raden, kom upp med händerna. 378 00:17:35,200 --> 00:17:36,475 Okej, och vad heter du? 379 00:17:36,475 --> 00:17:36,960 >> ANITA: Anita. 380 00:17:36,960 --> 00:17:37,655 >> DAVID J. MALAN: Anita. 381 00:17:37,655 --> 00:17:38,613 Okej, trevligt att träffas. 382 00:17:38,613 --> 00:17:41,010 Låt mig presentera dig för Rob Bowden. 383 00:17:41,010 --> 00:17:42,890 Det här är Anita. 384 00:17:42,890 --> 00:17:44,033 Och vad heter du? 385 00:17:44,033 --> 00:17:44,800 >> Kiersten: Kiersten 386 00:17:44,800 --> 00:17:46,020 >> DAVID J. MALAN: Kiersten. 387 00:17:46,020 --> 00:17:49,790 Kiersten, kom upp och träffa Rob Bowden och Anita. 388 00:17:49,790 --> 00:17:51,036 Trevligt att träffas. 389 00:17:51,036 --> 00:17:52,160 Kiersten: Trevligt att träffas. 390 00:17:52,160 --> 00:17:53,368 DAVID J. MALAN: Alright, Rob. 391 00:17:53,368 --> 00:17:54,650 ROB BOWDEN: Trevligt att träffas. 392 00:17:54,650 --> 00:17:55,566 DAVID J. MALAN: Anita. 393 00:17:55,566 --> 00:17:56,520 Kiersten: Hi Anita. 394 00:17:56,520 --> 00:17:58,686 DAVID J. MALAN: Och din flera hundra klasskamrater. 395 00:17:58,686 --> 00:18:02,490 Så, nu vill jag gå vidare och dra upp bara ett enkelt program här 396 00:18:02,490 --> 00:18:05,690 på Mac OS som låter mig faktiskt krafsa ner några anteckningar. 397 00:18:05,690 --> 00:18:09,570 Och om ni vill var och en vidta en ställning på en av dessa skolor där, 398 00:18:09,570 --> 00:18:16,360 Låt mig gå vidare och startar en lista av pseudokod kod, om du kommer. 399 00:18:16,360 --> 00:18:19,970 Och vad jag vill göra här, i slutändan är typ för dig 400 00:18:19,970 --> 00:18:22,470 några instruktioner om att vår publiken är faktiskt 401 00:18:22,470 --> 00:18:23,569 kommer att recitera för oss. 402 00:18:23,569 --> 00:18:25,860 Låt mig gå vidare och bara ändra detta till en numrerad lista 403 00:18:25,860 --> 00:18:27,720 att matcha det vi gjorde där uppe. 404 00:18:27,720 --> 00:18:30,990 Och vad jag ska göra med din hjälp, är att skriva ett program 405 00:18:30,990 --> 00:18:34,620 i pseudokod, med vilken dessa killar går 406 00:18:34,620 --> 00:18:38,150 att genomföra en jordnöt smör och gelé smörgås. 407 00:18:38,150 --> 00:18:40,880 Så det är kanske apropos till visa något vissa av er 408 00:18:40,880 --> 00:18:44,560 kanske har sett på internet för bara en kort stund irriterande. 409 00:18:44,560 --> 00:18:47,650 >> [MUSIK BUCKEWHEAT BOYS, "JORDNÖTSSMÖR  JELLY TIME "] 410 00:18:47,650 --> 00:19:08,119 411 00:19:08,119 --> 00:19:08,910 DAVID J. MALAN: OK. 412 00:19:08,910 --> 00:19:10,050 Det är nog av det. 413 00:19:10,050 --> 00:19:12,690 Så här tiden, jag har en par Google Glasses som 414 00:19:12,690 --> 00:19:16,500 vi ska sätta på CS50 egen Rob Bowden att se världen genom hans ögon. 415 00:19:16,500 --> 00:19:19,140 Och vi ska göra vårt bästa i tjänst produktionen att faktiskt väva 416 00:19:19,140 --> 00:19:23,100 filmen om vad Rob är att se Nu, i denna faktiska föreläsning 417 00:19:23,100 --> 00:19:26,420 video med våra två volontärer bredvid honom. 418 00:19:26,420 --> 00:19:28,480 Så vad jag ska göra är, ska jag vara maskinskriverska. 419 00:19:28,480 --> 00:19:31,849 Vi har som mål här i faktiskt skriver ett program 420 00:19:31,849 --> 00:19:34,640 som man kan göra, i slutändan, en jordnötssmör och gelé smörgås, 421 00:19:34,640 --> 00:19:37,680 men dessa tre kommer att bete sig som om de är datorer. 422 00:19:37,680 --> 00:19:40,638 Och datorer, i slutet av dagen, är faktiskt ganska dumma enheter. 423 00:19:40,638 --> 00:19:44,432 De är supersnabb, men de bara kan gör, bokstavligen, vad de sagt. 424 00:19:44,432 --> 00:19:46,890 Man kan inte bara säga att en jordnöt smör och gelé smörgås. 425 00:19:46,890 --> 00:19:48,640 Du måste programmera dem att göra det. 426 00:19:48,640 --> 00:19:51,420 Du måste berätta för dem med precision vad man ska göra, 427 00:19:51,420 --> 00:19:54,400 mindre saker går fruktansvärt och, förhoppningsvis roande snett. 428 00:19:54,400 --> 00:19:57,460 >> Så med det sagt, vi behöver ett samtal ut från publiken 429 00:19:57,460 --> 00:19:59,440 för vad som bör öka man vara, om målet här 430 00:19:59,440 --> 00:20:01,356 är att göra en jordnöt smör och gelé smörgås. 431 00:20:01,356 --> 00:20:01,910 Ja? 432 00:20:01,910 --> 00:20:03,647 >> PUBLIK: [ohörbart] påse med bröd. 433 00:20:03,647 --> 00:20:05,230 DAVID J. MALAN: Öppna påsen med brödet. 434 00:20:05,230 --> 00:20:08,360 Så om de tre tävlande skulle vilja fortsätta att göra det bokstavligt. 435 00:20:08,360 --> 00:20:12,394 Öppna påsen av bröd. 436 00:20:12,394 --> 00:20:15,810 >> [PUBLIK SKRATTA] 437 00:20:15,810 --> 00:20:20,717 438 00:20:20,717 --> 00:20:22,300 DAVID J. MALAN: Så låt oss arbeta med det. 439 00:20:22,300 --> 00:20:23,180 Okej. 440 00:20:23,180 --> 00:20:25,400 Så steg två, how-- låt oss ta detta vidare. 441 00:20:25,400 --> 00:20:26,480 Ja, i fronten. 442 00:20:26,480 --> 00:20:27,240 >> PUBLIK: [ohörbart] brödet. 443 00:20:27,240 --> 00:20:27,735 >> DAVID J. MALAN: Vad är det? 444 00:20:27,735 --> 00:20:28,836 >> PUBLIK: Ta bort brödet. 445 00:20:28,836 --> 00:20:30,210 DAVID J. MALAN: Ta brödet. 446 00:20:30,210 --> 00:20:31,190 Likaså kortfattad. 447 00:20:31,190 --> 00:20:33,667 Tack. 448 00:20:33,667 --> 00:20:43,777 >> [Applåder] 449 00:20:43,777 --> 00:20:44,860 DAVID J. MALAN: Det är det? 450 00:20:44,860 --> 00:20:48,830 OK, så steg två kommer vara avlägsna brödet. 451 00:20:48,830 --> 00:20:51,790 Okej, någon vill skriva oss ett längre straff? 452 00:20:51,790 --> 00:20:52,640 Någon annan? 453 00:20:52,640 --> 00:20:53,920 Lite mer [ohörbart]. 454 00:20:53,920 --> 00:20:54,810 Nej, ingenting nu. 455 00:20:54,810 --> 00:20:56,094 Ja? 456 00:20:56,094 --> 00:20:58,900 >> PUBLIK: Placera två skivor bredvid varandra. 457 00:20:58,900 --> 00:21:03,575 >> DAVID J. MALAN: Placera två skivor bredvid varandra. 458 00:21:03,575 --> 00:21:06,420 >> [PUBLIK SKRATTA] 459 00:21:06,420 --> 00:21:09,590 >> DAVID J. MALAN: Placera två skivor bredvid varandra. 460 00:21:09,590 --> 00:21:11,334 Steg fyra. 461 00:21:11,334 --> 00:21:12,816 Ja? 462 00:21:12,816 --> 00:21:14,792 >> PUBLIK: Ta din hand och sätta den lätt 463 00:21:14,792 --> 00:21:17,756 ovanpå locket jordnötssmör. 464 00:21:17,756 --> 00:21:19,710 >> [PUBLIK SKRATTA] 465 00:21:19,710 --> 00:21:21,710 PUBLIK: [ohörbart] bredvid jordnötssmör. 466 00:21:21,710 --> 00:21:21,870 DAVID J. MALAN: Vad? 467 00:21:21,870 --> 00:21:22,520 Säg det igen. 468 00:21:22,520 --> 00:21:26,308 >> PUBLIK: Skruva av locket och sätta den försiktigt bredvid jordnötssmör. 469 00:21:26,308 --> 00:21:31,490 >> DAVID J. MALAN: Lägg den försiktigt bredvid jordnötssmör. 470 00:21:31,490 --> 00:21:37,770 471 00:21:37,770 --> 00:21:40,090 OK, framsteg. 472 00:21:40,090 --> 00:21:41,080 Steg fem. 473 00:21:41,080 --> 00:21:42,380 Utmärkt. 474 00:21:42,380 --> 00:21:43,261 Ja? 475 00:21:43,261 --> 00:21:44,163 >> Plocka upp kniven. 476 00:21:44,163 --> 00:21:46,380 477 00:21:46,380 --> 00:21:47,630 DAVID J. MALAN: Plocka upp kniven. 478 00:21:47,630 --> 00:21:52,320 479 00:21:52,320 --> 00:21:53,631 OK, steg sex. 480 00:21:53,631 --> 00:21:54,130 Yeah? 481 00:21:54,130 --> 00:21:56,237 >> PUBLIK: Håll kniven i handtaget. 482 00:21:56,237 --> 00:21:57,945 DAVID J. MALAN: Håll kniv i handtaget. 483 00:21:57,945 --> 00:22:00,710 484 00:22:00,710 --> 00:22:03,230 Håll kniven i handtaget. 485 00:22:03,230 --> 00:22:04,880 Steg sju. 486 00:22:04,880 --> 00:22:05,692 Ja? 487 00:22:05,692 --> 00:22:10,030 >> PUBLIK: [ohörbart] kniven i jordnöts smör och så lite ut [ohörbart]. 488 00:22:10,030 --> 00:22:13,070 >> DAVID J. MALAN: Sätt kniven in-- jag hört "sätta kniven i jordnötssmör 489 00:22:13,070 --> 00:22:19,500 och ta så lite ut som möjligt. " 490 00:22:19,500 --> 00:22:22,480 Förresten, ta bort papperet. 491 00:22:22,480 --> 00:22:29,320 492 00:22:29,320 --> 00:22:31,890 Okej, steg nio. 493 00:22:31,890 --> 00:22:34,910 Steg nio. 494 00:22:34,910 --> 00:22:35,624 Steg nio. 495 00:22:35,624 --> 00:22:37,290 Vi har faktiskt inte gjort en smörgås än. 496 00:22:37,290 --> 00:22:37,790 Ja? 497 00:22:37,790 --> 00:22:41,570 PUBLIK: Använda kniv i jordnötssmör, tillämpa jordnötssmör på nämnda bröd. 498 00:22:41,570 --> 00:22:47,440 >> DAVID J. MALAN: Att använda kniv i jordnötssmör, tillämpa jordnötssmör på 499 00:22:47,440 --> 00:22:48,736 nämnda bröd. 500 00:22:48,736 --> 00:22:56,030 >> [PUBLIK SKRATTA] 501 00:22:56,030 --> 00:22:59,480 DAVID J. MALAN: Okej steg 10. 502 00:22:59,480 --> 00:23:01,762 Steg 10. 503 00:23:01,762 --> 00:23:02,750 Ja? 504 00:23:02,750 --> 00:23:05,220 >> PUBLIK: Taste jordnöt smör för att säkerställa kvaliteten. 505 00:23:05,220 --> 00:23:15,960 >> [PUBLIK SKRATTA] 506 00:23:15,960 --> 00:23:16,960 David J. MALAN: Steg 11. 507 00:23:16,960 --> 00:23:19,500 508 00:23:19,500 --> 00:23:21,340 Steg 11. 509 00:23:21,340 --> 00:23:22,101 Steg 11. 510 00:23:22,101 --> 00:23:22,600 Kom igen. 511 00:23:22,600 --> 00:23:23,099 Yeah? 512 00:23:23,099 --> 00:23:24,208 Just där. 513 00:23:24,208 --> 00:23:25,840 >> PUBLIK: plocka försiktigt upp gelé. 514 00:23:25,840 --> 00:23:28,220 >> DAVID J. MALAN: plocka försiktigt upp gelé. 515 00:23:28,220 --> 00:23:29,970 OK, och sedan en annan hand var upp. 516 00:23:29,970 --> 00:23:32,812 517 00:23:32,812 --> 00:23:33,520 Bakom dig. 518 00:23:33,520 --> 00:23:35,761 Ja, i blått. 519 00:23:35,761 --> 00:23:40,671 >> PUBLIK: Okej, ta bort lock från [ohörbart], ja, 520 00:23:40,671 --> 00:23:42,635 ta bort locket från jelly. 521 00:23:42,635 --> 00:23:43,617 >> [PUBLIK SKRATTA] 522 00:23:43,617 --> 00:23:44,742 >> David J. MALAN: Från gelé. 523 00:23:44,742 --> 00:23:45,581 Ha ha. 524 00:23:45,581 --> 00:23:48,967 >> [PUBLIK SKRATTA] 525 00:23:48,967 --> 00:23:49,800 DAVID J. MALAN: Och? 526 00:23:49,800 --> 00:23:52,490 PUBLIK: Och knappt sopa något [ohörbart]. 527 00:23:52,490 --> 00:23:59,536 [PUBLIK SKRATTA] 528 00:23:59,536 --> 00:24:04,456 Publik: Naturligtvis, innan [ohörbart], bort papperet från jelly. 529 00:24:04,456 --> 00:24:06,940 DAVID J. MALAN: Ta bort papper från jelly. 530 00:24:06,940 --> 00:24:08,229 Steg 14. 531 00:24:08,229 --> 00:24:09,020 Vi är nästan där. 532 00:24:09,020 --> 00:24:09,857 Ja? 533 00:24:09,857 --> 00:24:12,600 >> PUBLIK: Vänd gelé flaska innan allt faller ut. 534 00:24:12,600 --> 00:24:16,515 >> DAVID J. MALAN: Invert gelé flaska innan gelé faller ut. 535 00:24:16,515 --> 00:24:19,070 536 00:24:19,070 --> 00:24:19,890 Steg 15. 537 00:24:19,890 --> 00:24:21,130 >> PUBLIK: Sätt tillbaka locket. 538 00:24:21,130 --> 00:24:22,463 >> DAVID J. MALAN: Sätt tillbaka locket. 539 00:24:22,463 --> 00:24:25,880 540 00:24:25,880 --> 00:24:28,190 Steg 16. 541 00:24:28,190 --> 00:24:28,931 Yeah? 542 00:24:28,931 --> 00:24:29,806 >> PUBLIK: [ohörbart] 543 00:24:29,806 --> 00:24:34,109 544 00:24:34,109 --> 00:24:35,400 DAVID J. MALAN: Säg det igen. 545 00:24:35,400 --> 00:24:38,100 PUBLIK: Ta locket från din gelé. 546 00:24:38,100 --> 00:24:39,650 DAVID J. MALAN: Av din gelé. 547 00:24:39,650 --> 00:24:43,720 548 00:24:43,720 --> 00:24:49,510 Så really-- Oj. 549 00:24:49,510 --> 00:24:50,420 Kom igen. 550 00:24:50,420 --> 00:24:51,740 Sätt tillbaka locket. 551 00:24:51,740 --> 00:24:56,660 Sätt cap-- Du sa ta bort locket från jelly. 552 00:24:56,660 --> 00:24:58,950 Känns som att vi är i lite av en slinga. 553 00:24:58,950 --> 00:24:59,640 Steg 17. 554 00:24:59,640 --> 00:25:00,398 Ja? 555 00:25:00,398 --> 00:25:02,639 >> PUBLIK: [ohörbart] 556 00:25:02,639 --> 00:25:03,930 DAVID J. MALAN: Säg det igen. 557 00:25:03,930 --> 00:25:05,150 PUBLIK: [ohörbart] 558 00:25:05,150 --> 00:25:07,835 DAVID J. MALAN: Gå tillbaka till step-- 559 00:25:07,835 --> 00:25:10,110 PUBLIK: [ohörbart] 560 00:25:10,110 --> 00:25:13,760 DAVID J. MALAN: Ta bort locket från jordnötssmör. 561 00:25:13,760 --> 00:25:14,492 Ja? 562 00:25:14,492 --> 00:25:16,430 >> PUBLIK: Släpp alla gelé på brödet. 563 00:25:16,430 --> 00:25:19,040 >> DAVID J. MALAN: Släpp alla gelé på brödet. 564 00:25:19,040 --> 00:25:25,372 565 00:25:25,372 --> 00:25:26,830 DAVID J. MALAN: Vi är nästan där. 566 00:25:26,830 --> 00:25:27,800 Steg 19. 567 00:25:27,800 --> 00:25:30,250 >> PUBLIK: Ta bort överflödig gelé. 568 00:25:30,250 --> 00:25:31,720 >> DAVID J. MALAN: Haha, gelé. 569 00:25:31,720 --> 00:25:36,615 >> [Applåder] 570 00:25:36,615 --> 00:25:39,240 DAVID J. MALAN: Varför inte Vi-- ett steg att ta detta hem. 571 00:25:39,240 --> 00:25:41,720 Ett steg till och sedan serverar vi smörgåsar. 572 00:25:41,720 --> 00:25:42,900 Ja? 573 00:25:42,900 --> 00:25:45,570 >> PUBLIK: [ohörbart] 574 00:25:45,570 --> 00:25:50,704 >> DAVID J. MALAN: Även om alla sandwich remains-- låter strecksatsen detta-- äta. 575 00:25:50,704 --> 00:25:56,400 >> [Publiken skratt] 576 00:25:56,400 --> 00:26:00,395 >> DAVID J. MALAN: Okej, tack dig till våra volontärer här. 577 00:26:00,395 --> 00:26:06,150 >> [Applåder} 578 00:26:06,150 --> 00:26:08,940 >> DAVID J. MALAN: Vi har några trevliga parting gåvor till var och en av er. 579 00:26:08,940 --> 00:26:14,350 Din egen jordnötssmör, gelé, och bröd att ta med hem. 580 00:26:14,350 --> 00:26:15,774 Tack. 581 00:26:15,774 --> 00:26:17,118 >> Kiersten: Tack. 582 00:26:17,118 --> 00:26:18,618 DAVID J. MALAN: [ohörbart] välkomna. 583 00:26:18,618 --> 00:26:21,849 [Applåder] 584 00:26:21,849 --> 00:26:24,390 DAVID J. MALAN: Så det här är, om naturligtvis ett löjligt exempel. 585 00:26:24,390 --> 00:26:24,890 Rätt? 586 00:26:24,890 --> 00:26:28,890 Men det slags avslöjar hur vi människor tar bara tydlighet för givet. 587 00:26:28,890 --> 00:26:30,890 Och det faktum jag har varit prata med en annan människa, 588 00:26:30,890 --> 00:26:33,300 han eller hon bara vet vad du menar. 589 00:26:33,300 --> 00:26:35,220 >> Datorer kommer inte att veta vad du menar, 590 00:26:35,220 --> 00:26:37,430 även vid användning av, som vi håller på att göra i dag, 591 00:26:37,430 --> 00:26:42,300 programmering något i Scratch, ett drag och släpp, pusselbit stil språk. 592 00:26:42,300 --> 00:26:44,310 Även avsedd för unga barn, har du 593 00:26:44,310 --> 00:26:48,726 att vara så tydlig och så bokstav med vad du vill att ditt program ska göra. 594 00:26:48,726 --> 00:26:50,600 Nu i slutändan, är vi kommer att vara programmering 595 00:26:50,600 --> 00:26:53,550 inte i pseudokod-koden, Engelska liknande syntax, 596 00:26:53,550 --> 00:26:56,370 men kod eller, mer korrekt, källkod. 597 00:26:56,370 --> 00:26:59,260 Källkod är bara finare sätt för att beskriva kod du faktiskt 598 00:26:59,260 --> 00:27:01,730 skriva med ett tangentbord som är inte på engelska per se. 599 00:27:01,730 --> 00:27:06,480 Det är i C eller Java eller C ++ eller något så där, så vi får snart se. 600 00:27:06,480 --> 00:27:09,510 >> Och faktiskt, bara för att skrämma en några av er, vid första anblicken, 601 00:27:09,510 --> 00:27:13,769 detta är ett program skrivet på ett språk heter C. Men för att un-skrämma några av er, 602 00:27:13,769 --> 00:27:15,560 du kommer helt förstå vad som händer 603 00:27:15,560 --> 00:27:18,980 på kommer nästa måndag när det kommer till ungefär så här. 604 00:27:18,980 --> 00:27:20,510 Ärligt talat, det här är en äldre språk. 605 00:27:20,510 --> 00:27:22,430 Det är ganska svårbegriplig, men det är representativt 606 00:27:22,430 --> 00:27:26,120 av en massa språk dessa dagar som har massor av parenteser och lockigt 607 00:27:26,120 --> 00:27:28,630 hängslen och citationstecken och semikolon. 608 00:27:28,630 --> 00:27:30,780 Och en hel del av detta syntaktisk saker som inte 609 00:27:30,780 --> 00:27:32,450 alls intellektuellt intressant. 610 00:27:32,450 --> 00:27:35,790 I själva verket är det en fullkomlig distraktion från de mycket enkla idéer 611 00:27:35,790 --> 00:27:37,370 som stirrar oss i ansiktet. 612 00:27:37,370 --> 00:27:41,760 Detta program, som ni kanske bara gissa, utskrifter till någons datorskärm 613 00:27:41,760 --> 00:27:44,070 orden "Hej kommatecken världen." 614 00:27:44,070 --> 00:27:44,860 Det är allt. 615 00:27:44,860 --> 00:27:46,580 Så klart, det finns en massa saker som är 616 00:27:46,580 --> 00:27:48,970 komma i vägen för någon uppenbar där, 617 00:27:48,970 --> 00:27:52,490 men det kommer att mycket snabbt glida bort och vara helt intuitivt. 618 00:27:52,490 --> 00:27:55,617 >> Ja, vad vi ska göra idag är destillera denna ganska komplicerade 619 00:27:55,617 --> 00:27:58,950 ser programmet, som återigen kommer att komma att förstå snabbt, utan att något 620 00:27:58,950 --> 00:27:59,710 mycket enklare. 621 00:27:59,710 --> 00:28:01,640 Låt oss bara säga vad vi menar. 622 00:28:01,640 --> 00:28:05,590 Låt oss rita en bild av vad vi menar, genom dessa pusselbitar här. 623 00:28:05,590 --> 00:28:09,110 >> Så detta är en programmering språk kallas Scratch. 624 00:28:09,110 --> 00:28:11,080 Det utvecklades av MIT: s Media Lab. 625 00:28:11,080 --> 00:28:14,830 Och vad du ser i problembild noll, som kommer att släppas senare i kväll, 626 00:28:14,830 --> 00:28:18,980 vi måste du gå till denna URL här scratch.mit.edu. 627 00:28:18,980 --> 00:28:20,940 Och de har en webb baserat gränssnitt via vilket 628 00:28:20,940 --> 00:28:22,540 du kommer att skriva ditt första program. 629 00:28:22,540 --> 00:28:25,330 Eller de av er med tidigare erfarenhet, dina andra program, 630 00:28:25,330 --> 00:28:28,090 men i en miljö som är förmodligen lite obekanta och att 631 00:28:28,090 --> 00:28:32,930 kommer att driva dig att skapa något användning av denna mycket visuell miljö. 632 00:28:32,930 --> 00:28:35,940 >> Nu, vad jag ska göra här är öppna själva programmet. 633 00:28:35,940 --> 00:28:41,911 Den existerar inte bara som en webbläsare, men också som ett nedladdningsbart program 634 00:28:41,911 --> 00:28:44,660 så att du faktiskt kan använda den Om du inte har tillgång till internet. 635 00:28:44,660 --> 00:28:46,743 Och jag kommer att göra det här, i Sanders, bara 636 00:28:46,743 --> 00:28:49,580 ifall Wi-Fi inte samarbeta super bra. 637 00:28:49,580 --> 00:28:52,640 Och vad jag ska göra är att peka ut några funktioner i programmet. 638 00:28:52,640 --> 00:28:55,720 Så, för att vara tydlig, jag har bara dubbel klickade på ikonen på skrivbordet, 639 00:28:55,720 --> 00:28:59,830 eller ekvivalent gått till scratch.mit.edu, och det drog upp det här fönstret. 640 00:28:59,830 --> 00:29:01,650 Detta är en programmeringsmiljö. 641 00:29:01,650 --> 00:29:04,110 Det är en programvara som några av våra vänner på MIT 642 00:29:04,110 --> 00:29:08,850 skrev att låt oss och du skriver program i ett språk som kallas Scratch. 643 00:29:08,850 --> 00:29:12,010 >> Nu råkar det vara en katt som är också heter Scratch 644 00:29:12,010 --> 00:29:13,890 och detta är hans värld där han bor. 645 00:29:13,890 --> 00:29:17,175 Detta är det skede, så att säga, att rektangel på det övre vänstra hörnet. 646 00:29:17,175 --> 00:29:18,800 Och han behöver inte se ut som en katt. 647 00:29:18,800 --> 00:29:20,591 Du kan få honom att se som någonting och du 648 00:29:20,591 --> 00:29:23,700 kan ha många sådana sprites, eller tecken, i ett program. 649 00:29:23,700 --> 00:29:27,450 Under tiden här borta på långt höger, är en stor tom yta. 650 00:29:27,450 --> 00:29:30,260 Och det är här, i ett ögonblick, vi kommer att börja programmera 651 00:29:30,260 --> 00:29:32,750 genom att dra och släppa dessa grafiska pussel 652 00:29:32,750 --> 00:29:35,300 bitar som är rätt här i mitten. 653 00:29:35,300 --> 00:29:38,140 Och det finns mycket mer av dem än Vi tillbringar tid på här i klassen 654 00:29:38,140 --> 00:29:40,080 eftersom du kommer att upptäcka att de är alla ganska intuitivt. 655 00:29:40,080 --> 00:29:41,788 Återigen, det är utformat för barn, men vi 656 00:29:41,788 --> 00:29:45,759 använda den för att retas isär en del av dem grundtankar variabler, loopar, 657 00:29:45,759 --> 00:29:48,050 villkor och, snart, saker liknande tillställningar och evenemang 658 00:29:48,050 --> 00:29:51,810 och gängor och andra fina saker som vi kommer komma till inom kort för att faktiskt skapa 659 00:29:51,810 --> 00:29:53,840 något från Scratch. 660 00:29:53,840 --> 00:29:54,810 Pun intended. 661 00:29:54,810 --> 00:29:58,740 >> Nu, vad jag ska göra här är klicka på inte motion, utan kontroll. 662 00:29:58,740 --> 00:30:01,400 Och detta är bara en kategorisering av här-- 663 00:30:01,400 --> 00:30:03,150 och jag ser en annan färguppsättning av block. 664 00:30:03,150 --> 00:30:05,030 Men märker några välbekanta ord. 665 00:30:05,030 --> 00:30:07,830 "Om" och "else if" och "repeat". 666 00:30:07,830 --> 00:30:10,440 Och du kan nog gissa det är som påminner om filialen, 667 00:30:10,440 --> 00:30:12,870 eller villkoren som vi såg, och även den looping konstruktet. 668 00:30:12,870 --> 00:30:14,760 Så vi har liknande kvarter här. 669 00:30:14,760 --> 00:30:16,720 Men det mest intressanta en är det en här. 670 00:30:16,720 --> 00:30:20,690 När denna gröna flaggan klickas, detta, för dem med tidigare programmering 671 00:30:20,690 --> 00:30:23,110 erfarenhet, motsvarar till en huvudfunktion. 672 00:30:23,110 --> 00:30:25,300 Men för dem obekanta, detta är den pusselbit 673 00:30:25,300 --> 00:30:27,320 som kommer att få igång hela vårt program. 674 00:30:27,320 --> 00:30:31,350 Det betyder bokstavligen när jag går, i detta program, och klicka på en grön flag-- 675 00:30:31,350 --> 00:30:35,560 som du kan se här uppe i övre vänstra hörnet på UI, 676 00:30:35,560 --> 00:30:38,570 så ser den gröna flaggan bredvid den röda stoppskylten? 677 00:30:38,570 --> 00:30:41,475 När jag klickar på det, min Programmet kommer att löpa. 678 00:30:41,475 --> 00:30:43,850 Nu ska jag göra något super enkelt med Scratch. 679 00:30:43,850 --> 00:30:46,640 Jag kommer att gå vidare och gå till ser panelen 680 00:30:46,640 --> 00:30:50,010 Här, där jag har ett gäng av lila pusselbitar, 681 00:30:50,010 --> 00:30:53,887 och jag kommer att gå vidare och göra något super enkelt ut, säger. 682 00:30:53,887 --> 00:30:55,720 Och sen-- meddelande här text i den vita rutan 683 00:30:55,720 --> 00:30:59,290 är editable-- jag ska säga "Hej världen", precis som vi 684 00:30:59,290 --> 00:31:01,470 gjorde i den text version för en stund sedan. 685 00:31:01,470 --> 00:31:05,920 Och nu om jag går och klicka här grön flagg, har jag nu programmerat. 686 00:31:05,920 --> 00:31:07,810 Det är inte en särskilt intressant program, 687 00:31:07,810 --> 00:31:09,760 men jag gjorde datorn göra något. 688 00:31:09,760 --> 00:31:13,120 Jag startade ett program och det gjorde vad jag sa till den att göra. 689 00:31:13,120 --> 00:31:16,170 Nu kan jag fortsätta att dra och släppa mer och mer av dessa pusselbitar 690 00:31:16,170 --> 00:31:19,220 och de kommer att låsa, men låt oss smälla lite terminologi här 691 00:31:19,220 --> 00:31:21,680 att vi får se återkommande under hela kursen, 692 00:31:21,680 --> 00:31:24,610 och verkligen hela datavetenskap och programmering i allmänhet. 693 00:31:24,610 --> 00:31:27,990 >> Denna "säger" block, i lila, låt oss bara börja ringa ett uttalande. 694 00:31:27,990 --> 00:31:29,240 Det är som ett konstaterande. 695 00:31:29,240 --> 00:31:30,380 Gör detta. 696 00:31:30,380 --> 00:31:32,590 Så det är en kategori av instruktioner som du 697 00:31:32,590 --> 00:31:36,760 kan mata en dator som en del av ett program eller en algoritm. 698 00:31:36,760 --> 00:31:39,270 Och för att vara tydlig, du har förmodligen tas för givet 699 00:31:39,270 --> 00:31:41,930 att du har program på din dator. 700 00:31:41,930 --> 00:31:45,850 Och de är typ av algoritmer, men ett Programmet är verkligen ett gäng algoritmer 701 00:31:45,850 --> 00:31:47,160 att vissa människor skrev. 702 00:31:47,160 --> 00:31:49,040 De förpackade det upp och de sålde det så att du, 703 00:31:49,040 --> 00:31:51,330 eller de publiceras på en webbplats som du kan hämta. 704 00:31:51,330 --> 00:31:54,930 Så, är ett program bara en massa nollor och ettor 705 00:31:54,930 --> 00:31:56,970 det, på något sätt, skapade människan. 706 00:31:56,970 --> 00:32:00,080 Och de mönster av nollor och ettor representerar saker, slutligen, 707 00:32:00,080 --> 00:32:04,030 som "säga hej världen" eller "play denna musik "eller" spela upp den här videon " 708 00:32:04,030 --> 00:32:05,129 eller "skicka ett mail." 709 00:32:05,129 --> 00:32:06,920 Men vi kommer tillbaka i sätt mer i detalj vad 710 00:32:06,920 --> 00:32:08,780 ett program är när du, själv, skriver dem. 711 00:32:08,780 --> 00:32:11,320 >> Här är en annan statement-- "Vänta en sekund." 712 00:32:11,320 --> 00:32:14,330 Jag använde inte detta ännu, men om jag vill mitt program att stanna upp en stund 713 00:32:14,330 --> 00:32:16,540 att göra något, kan jag tala om för den att göra det. 714 00:32:16,540 --> 00:32:18,450 Vänta en sekund. 715 00:32:18,450 --> 00:32:20,150 Nu en annan kan vara "spela upp ljud." 716 00:32:20,150 --> 00:32:23,270 Så detta är unikt för Scratch, det har förmågan att spela upp ljud. 717 00:32:23,270 --> 00:32:26,130 Så, ett uttalande jag kanske användning, här ", spela upp ljud." 718 00:32:26,130 --> 00:32:29,530 Samtidigt Booleskt uttryck, så detta är en snyggare ord 719 00:32:29,530 --> 00:32:34,490 uppkallad efter bara en kille som heter Mr Bool, och det handlar om en fråga. 720 00:32:34,490 --> 00:32:37,470 Sant eller false-- är musen ner? 721 00:32:37,470 --> 00:32:41,100 Ett booleskt uttryck är bara några uttryck på engelska 722 00:32:41,100 --> 00:32:42,860 som är antingen sant eller falskt. 723 00:32:42,860 --> 00:32:44,140 Antingen på eller av. 724 00:32:44,140 --> 00:32:45,130 Antingen en eller noll. 725 00:32:45,130 --> 00:32:46,960 Du kan tänka på det i ett antal olika sätt, 726 00:32:46,960 --> 00:32:49,220 men det är antingen sant eller denna falska, i slutändan. 727 00:32:49,220 --> 00:32:52,540 Så "musen ner frågetecken," det skulle vara ett booleskt uttryck. 728 00:32:52,540 --> 00:32:54,300 Och du kan tänka på andra, kanske. 729 00:32:54,300 --> 00:32:57,510 Till exempel, "är den vänstra antal mindre än rätt nummer? " 730 00:32:57,510 --> 00:32:59,410 Även detta skulle vara ett booleskt uttryck. 731 00:32:59,410 --> 00:33:01,540 "Mindre än" är ett booleskt uttryck. 732 00:33:01,540 --> 00:33:03,280 >> Den här också, "röra muspekaren." 733 00:33:03,280 --> 00:33:05,196 Jag är inte säker på varför de kallade det muspekaren. 734 00:33:05,196 --> 00:33:08,430 Det betyder bara, är markören är pil på skärmen, peka på katt, 735 00:33:08,430 --> 00:33:09,022 till exempel. 736 00:33:09,022 --> 00:33:10,480 Eller någon annan aspekt av skärmen. 737 00:33:10,480 --> 00:33:13,710 Och det är en fråga, igen, och som betecknar ett booleskt uttryck. 738 00:33:13,710 --> 00:33:17,130 Något som du kanske vill använda i ett tillstånd. 739 00:33:17,130 --> 00:33:19,100 Så vi kommer till det på bara ett ögonblick. 740 00:33:19,100 --> 00:33:20,350 Du kan "och" saker tillsammans. 741 00:33:20,350 --> 00:33:23,099 Så, om du vill kontrollera om detta är fallet och det är fallet, 742 00:33:23,099 --> 00:33:25,580 Du kan använda en "och" block så här. 743 00:33:25,580 --> 00:33:26,850 Och här är det tillståndet. 744 00:33:26,850 --> 00:33:31,290 Lägg märke till formen på den lilla öppningen i toppen av denna gula pusselbit, 745 00:33:31,290 --> 00:33:34,480 det är som påminner om formen att vi bara såg en stund sedan. 746 00:33:34,480 --> 00:33:37,920 Var och en av dessa booleska uttryck ha dessa spetsiga kanter 747 00:33:37,920 --> 00:33:39,030 till vänster och höger. 748 00:33:39,030 --> 00:33:43,140 Och det beror på MIT folks beslutade att genom att visuellt rörtransport former, 749 00:33:43,140 --> 00:33:45,780 du kan sorts hjälpa människor, studenter och barn, 750 00:33:45,780 --> 00:33:47,650 till typ av fylla i tomrummen bokstavligt. 751 00:33:47,650 --> 00:33:49,780 >> Nu puzzle-- att öppningen är lite liten, 752 00:33:49,780 --> 00:33:52,750 och som vi får se i programmet, i Scratch, kommer det att växa för att passa. 753 00:33:52,750 --> 00:33:54,830 Det kommer att behålla sin form, i slutändan. 754 00:33:54,830 --> 00:33:58,350 Så en förutsättning låter dig bestämma "Ska jag göra något eller inte?" 755 00:33:58,350 --> 00:34:00,470 Ett booleskt uttryck är den verkliga frågan 756 00:34:00,470 --> 00:34:04,100 du använder för att bestämma går jag till vänster eller går jag åt höger 757 00:34:04,100 --> 00:34:06,710 när jag stöter på det här sk vägskäl? 758 00:34:06,710 --> 00:34:07,980 Du kan ha två grenar. 759 00:34:07,980 --> 00:34:10,909 Om något är sant, gör detta, annars går den vägen, 760 00:34:10,909 --> 00:34:14,590 eller så kan du bara göra ingenting allt eftersom detta block förstådda. 761 00:34:14,590 --> 00:34:16,360 På samma sätt kan vi bo här sakerna. 762 00:34:16,360 --> 00:34:20,204 Så om du vill att tredubbla gaffel i väg, antingen göra det eller det eller det, 763 00:34:20,204 --> 00:34:21,870 du kan bara bo dessa saker tillsammans. 764 00:34:21,870 --> 00:34:24,520 Och det börjar bli lite fult, så småningom, säkert, 765 00:34:24,520 --> 00:34:26,120 men logiken är fortfarande densamma. 766 00:34:26,120 --> 00:34:28,000 Du kan bokstavligen läsa denna topp till botten 767 00:34:28,000 --> 00:34:33,290 och det säger vad det means-- om detta är sant, gör det, annars om annat. 768 00:34:33,290 --> 00:34:36,179 >> En slinga blir inte enklare i Scratch. 769 00:34:36,179 --> 00:34:37,422 För alltid gör följande. 770 00:34:37,422 --> 00:34:39,880 Nu kanske du inte tror att du kan göra mycket för det finns inte 771 00:34:39,880 --> 00:34:42,839 mycket utrymme mellan den övre och den ner på denna pusselbit öppning. 772 00:34:42,839 --> 00:34:45,671 Men du ser Scratch kommer att växa för att passa så många pusselbitar 773 00:34:45,671 --> 00:34:47,060 som du vill klämma in där. 774 00:34:47,060 --> 00:34:48,960 En annan slinga kan vara uttryckt med upprepningar. 775 00:34:48,960 --> 00:34:51,590 Om du vet i förväg, "I vill göra något 10 gånger, " 776 00:34:51,590 --> 00:34:54,010 du kan bara berätta Scratch att göra något 10 gånger. 777 00:34:54,010 --> 00:34:57,260 Och under tiden kan vi få variabler. 778 00:34:57,260 --> 00:34:59,572 Så här är godtyckligt, det är orange i det här fallet, 779 00:34:59,572 --> 00:35:00,780 och detta är en virvelvind turné. 780 00:35:00,780 --> 00:35:04,540 Återigen hittar du här mycket tillgänglig när du börjar peka och klicka. 781 00:35:04,540 --> 00:35:07,930 Jag har namngav min variabeln n, men jag kunde ha heter det vad jag vill, 782 00:35:07,930 --> 00:35:11,280 och jag ställer in det här, i denna godtyckliga exempel till noll. 783 00:35:11,280 --> 00:35:14,250 >> Nu ser ett program som hello världen är inte så övertygande, 784 00:35:14,250 --> 00:35:17,900 så låt oss faktiskt öppna upp något att en före detta elev gjort. 785 00:35:17,900 --> 00:35:23,100 Låt mig gå vidare och öppna upp, till exempel den här, 786 00:35:23,100 --> 00:35:26,780 där skulle jag älska att ha en frivillig. 787 00:35:26,780 --> 00:35:28,450 Okej, hur om-- låt oss gå vidare. 788 00:35:28,450 --> 00:35:29,240 Ja, kom upp. 789 00:35:29,240 --> 00:35:30,056 Vad heter du? 790 00:35:30,056 --> 00:35:30,635 >> ABBY: Abby. 791 00:35:30,635 --> 00:35:32,010 DAVID J. MALAN: Abby, kom upp. 792 00:35:32,010 --> 00:35:35,930 Så har du någonsin spelat det här spelet förut? 793 00:35:35,930 --> 00:35:36,430 ABBY: Nej 794 00:35:36,430 --> 00:35:37,370 DAVID J. MALAN: Okej. 795 00:35:37,370 --> 00:35:38,380 David, trevligt att träffas. 796 00:35:38,380 --> 00:35:39,620 Kom över. 797 00:35:39,620 --> 00:35:42,300 Och vad är din programmering bakgrund, om någon. 798 00:35:42,300 --> 00:35:43,914 >> ABBY: Jag har lärt mig en del C ++. 799 00:35:43,914 --> 00:35:45,580 DAVID J. MALAN: Du har lärt dig lite C ++. 800 00:35:45,580 --> 00:35:48,382 Och vad är ditt spel leka bakgrund? 801 00:35:48,382 --> 00:35:49,505 >> ABBY: Inte mycket. 802 00:35:49,505 --> 00:35:51,130 DAVID J. MALAN: OK, så vi tar det. 803 00:35:51,130 --> 00:35:52,700 Så här är hur spelet kommer att fungera. 804 00:35:52,700 --> 00:35:54,510 Jag kommer att gå vidare och klicka på den gröna flaggan, som 805 00:35:54,510 --> 00:35:55,830 är här uppe längst upp till höger. 806 00:35:55,830 --> 00:35:59,710 Nu är din föregångare i klassen har gett dig några instruktioner här. 807 00:35:59,710 --> 00:36:02,306 Och på bara ett ögonblick, det säger "utrymme för att börja." 808 00:36:02,306 --> 00:36:03,680 Så sätt igång och slår på mellanslagstangenten. 809 00:36:03,680 --> 00:36:05,507 >> Dataspel: Pikachu. 810 00:36:05,507 --> 00:36:08,340 DAVID J. MALAN: Och målet är att fånga mat, som visas där 811 00:36:08,340 --> 00:36:09,320 till vänster. 812 00:36:09,320 --> 00:36:11,388 Och till [ohörbart] 813 00:36:11,388 --> 00:36:15,356 >> [GAME musik spelar] 814 00:36:15,356 --> 00:36:27,280 815 00:36:27,280 --> 00:36:29,610 >> DAVID J. MALAN: AWW, ja, tack för att spela. 816 00:36:29,610 --> 00:36:32,800 Vi har här en liten parting gåva till dig. 817 00:36:32,800 --> 00:36:35,574 Vi har CS50 stress boll, Om du vill välja. 818 00:36:35,574 --> 00:36:36,820 Okej, bra att träffas. 819 00:36:36,820 --> 00:36:39,680 Tack för att ni kom och utmanande. 820 00:36:39,680 --> 00:36:42,410 821 00:36:42,410 --> 00:36:46,910 Så vi har mer stress bollar, så låt oss göra ett exempel för att motivera. 822 00:36:46,910 --> 00:36:48,150 En volontär? 823 00:36:48,150 --> 00:36:50,510 Okej, vad sägs om här framför. 824 00:36:50,510 --> 00:36:51,250 Vad heter du? 825 00:36:51,250 --> 00:36:51,660 >> PHILLIP: Phillip. 826 00:36:51,660 --> 00:36:52,660 >> DAVID J. MALAN: Phillip. 827 00:36:52,660 --> 00:36:54,530 Kom upp, Phillip. 828 00:36:54,530 --> 00:36:57,340 Så, är Phillip kommer att bli utmanades med ett annat spel 829 00:36:57,340 --> 00:37:00,840 att en av era föregångare skrev som en del av problemet set noll, 830 00:37:00,840 --> 00:37:03,510 heter Ivy s svåraste spelet. 831 00:37:03,510 --> 00:37:05,980 Och vi får se på bara ögonblick vad som menas med detta. 832 00:37:05,980 --> 00:37:07,400 Phillip, trevligt att träffas. 833 00:37:07,400 --> 00:37:09,060 Vad är din bakgrund? 834 00:37:09,060 --> 00:37:10,310 PHILLIP: Gjort en hel del kodning. 835 00:37:10,310 --> 00:37:11,110 Gjort lite spel också. 836 00:37:11,110 --> 00:37:11,570 >> DAVID J. MALAN: OK. 837 00:37:11,570 --> 00:37:12,620 Fick en hel del spel också. 838 00:37:12,620 --> 00:37:14,230 Och har du spelat det här spelet förut? 839 00:37:14,230 --> 00:37:14,730 >> PHILLIP: Nej 840 00:37:14,730 --> 00:37:16,438 DAVID J. MALAN: Alla rätt, så nu kör vi. 841 00:37:16,438 --> 00:37:18,434 Jag kommer att gå vidare och klicka på den gröna flaggan. 842 00:37:18,434 --> 00:37:24,160 >> [GAME MUSIK] 843 00:37:24,160 --> 00:37:27,770 >> [MUSIK MC HAMMER, "U kan inte handlag detta"] 844 00:37:27,770 --> 00:38:39,790 845 00:38:39,790 --> 00:38:41,635 >> PHILLIP: [ohörbart] 846 00:38:41,635 --> 00:38:42,760 DAVID J. MALAN: [ohörbart] 847 00:38:42,760 --> 00:38:44,740 PHILLIP: [ohörbart] 848 00:38:44,740 --> 00:38:49,056 [Skrattar] 849 00:38:49,056 --> 00:38:50,680 [MUSIK MC HAMMER, "U kan inte handlag detta"] 850 00:38:50,680 --> 00:38:52,660 DAVID J. MALAN: [ohörbart] Plow genom den. 851 00:38:52,660 --> 00:38:54,094 PHILLIP: [ohörbart] 852 00:38:54,094 --> 00:38:55,135 DAVID J. MALAN: Sätt i gång. 853 00:38:55,135 --> 00:39:01,570 [MUSIK MC HAMMER, "U kan inte handlag detta"] 854 00:39:01,570 --> 00:39:15,832 855 00:39:15,832 --> 00:39:16,915 DAVID J. MALAN: Okej. 856 00:39:16,915 --> 00:39:18,400 Gratulerar. 857 00:39:18,400 --> 00:39:25,150 >> [Applåder] 858 00:39:25,150 --> 00:39:27,330 >> DAVID J. MALAN: Vi kommer inlägg att online senare så 859 00:39:27,330 --> 00:39:29,820 att du kan dra ut på tiden med det också. 860 00:39:29,820 --> 00:39:32,550 Princeton kommer upp nästa, efter det. 861 00:39:32,550 --> 00:39:35,470 >> Så nu ska vi faktiskt gå vidare börja om från början, 862 00:39:35,470 --> 00:39:39,310 så att säga, och faktiskt bygga upp tills Vi kan reta sönder några av dessa idéer 863 00:39:39,310 --> 00:39:41,970 och få till något ännu mer komplex genom utgången. 864 00:39:41,970 --> 00:39:45,240 Jag kommer att gå hit och jag ska att gå vidare och skapa en ny fil. 865 00:39:45,240 --> 00:39:47,460 Så återigen, kommer problemet set promenad dig genom några av dessa steg. 866 00:39:47,460 --> 00:39:49,300 Men det var allt jag gjorde go till Arkiv-menyn och jag 867 00:39:49,300 --> 00:39:52,760 sade "nya", så mycket som Microsoft Word, eller något program som. 868 00:39:52,760 --> 00:39:56,630 >> Och låt oss gå vidare nu-- och vi genomföras "Hej världen" för en stund sedan, 869 00:39:56,630 --> 00:39:58,410 men låt oss göra något lite sötare. 870 00:39:58,410 --> 00:40:00,150 Jag kommer att gå upp till händelser. 871 00:40:00,150 --> 00:40:02,350 Och jag ska göra "när grön flagg klickade. " 872 00:40:02,350 --> 00:40:05,830 Och sedan ska jag använda, ska vi säga, en gren. 873 00:40:05,830 --> 00:40:07,610 Så jag kommer att använda ett "om" tillstånd. 874 00:40:07,610 --> 00:40:10,940 Och märker hur fort jag kommer nära till det, vill man att knäppa ihop. 875 00:40:10,940 --> 00:40:13,020 Så jag släppa taget och den snäpper ihop. 876 00:40:13,020 --> 00:40:15,150 Och nu kan jag göra något intressant. 877 00:40:15,150 --> 00:40:19,150 Om jag bläddrar igenom här, jag kommer att se en massa block. 878 00:40:19,150 --> 00:40:22,620 Om jag går till "data" - låt mig zooma in-- finns det något om variabler. 879 00:40:22,620 --> 00:40:26,160 Om jag går till "rörelse", kan du tydligen vända utvecklingen. 880 00:40:26,160 --> 00:40:28,760 Om jag går till "operatörer" - åh, det här är intressant, 881 00:40:28,760 --> 00:40:31,000 Jag kan plocka ett slumptal. 882 00:40:31,000 --> 00:40:34,119 Så låt mig göra något med bara viss sannolikhet, bara för att. 883 00:40:34,119 --> 00:40:36,160 Jag kommer att gå vidare och drar denna pusselbit, 884 00:40:36,160 --> 00:40:37,910 detta är att mindre än blocket, så det är bara 885 00:40:37,910 --> 00:40:39,480 "Är denna siffra lägre än en?" 886 00:40:39,480 --> 00:40:42,438 Men jag vill inte ha en hård kod ett nummer eftersom det är ganska meningslöst. 887 00:40:42,438 --> 00:40:46,270 Så jag kommer att dra denna pjäs här, och märker hur den klickar in, 888 00:40:46,270 --> 00:40:49,480 och nu vill jag gå vidare och säga "om numret som är plockade slumpmässigt 889 00:40:49,480 --> 00:40:51,820 är mindre än sex, gör följande. " 890 00:40:51,820 --> 00:40:52,790 Nu varför mindre än sex? 891 00:40:52,790 --> 00:40:56,400 Vilken sannolikhet är detta effektivt kommer att ge mig, bara intuitivt? 892 00:40:56,400 --> 00:40:57,440 Cirka 50%, eller hur? 893 00:40:57,440 --> 00:41:01,190 Om det nummer som är gissa slumpmässigt mellan 1 och 10 är lägre än sex, 894 00:41:01,190 --> 00:41:03,480 klart det är en, två, tre, fyra eller fem. 895 00:41:03,480 --> 00:41:06,740 Och så det kommer att ge mig en 50% sannolikhet för vad som händer? 896 00:41:06,740 --> 00:41:09,890 >> Bra låt oss göra något liknande detta, "spela upp ljud mjau." 897 00:41:09,890 --> 00:41:11,750 Och varsel, återigen, pusselbiten växer 898 00:41:11,750 --> 00:41:13,700 för att passa, så länge som de former matcha. 899 00:41:13,700 --> 00:41:14,910 Det är det som är viktigt. 900 00:41:14,910 --> 00:41:18,000 Låt mig gå över till Scratch här och klicka på "play". 901 00:41:18,000 --> 00:41:19,300 Ingenting händer. 902 00:41:19,300 --> 00:41:21,160 Är det en bugg? 903 00:41:21,160 --> 00:41:21,999 Nej, inte nödvändigt. 904 00:41:21,999 --> 00:41:24,040 Det kan bara vara att en större antal valdes. 905 00:41:24,040 --> 00:41:25,762 Så låt oss göra det igen. 906 00:41:25,762 --> 00:41:27,550 Ingenting. 907 00:41:27,550 --> 00:41:28,344 >> [MEOW] 908 00:41:28,344 --> 00:41:29,510 DAVID J. MALAN: Där är det. 909 00:41:29,510 --> 00:41:30,280 [MEOW] 910 00:41:30,280 --> 00:41:31,690 DAVID J. MALAN: Igen. 911 00:41:31,690 --> 00:41:32,300 Nej 912 00:41:32,300 --> 00:41:32,922 >> [Jamar] 913 00:41:32,922 --> 00:41:35,380 DAVID J. MALAN: Så om du har någonsin spelat ett spel, naturligtvis, 914 00:41:35,380 --> 00:41:38,500 där saker händer slumpmässigt, som skurkarna kommer eller inte 915 00:41:38,500 --> 00:41:41,350 kommer ut på skärmen, eller saker faller eller inte faller, 916 00:41:41,350 --> 00:41:43,610 det är bara för att något super enkelt som detta händer. 917 00:41:43,610 --> 00:41:46,010 Plocka ett slumptal, och om det är mindre än ett visst värde, 918 00:41:46,010 --> 00:41:49,100 kanske göra detta eller kanske göra det. 919 00:41:49,100 --> 00:41:51,340 Vi kan införliva som i ett tillstånd. 920 00:41:51,340 --> 00:41:52,600 Låt oss göra något annorlunda. 921 00:41:52,600 --> 00:41:53,559 >> Låt mig kasta bort det. 922 00:41:53,559 --> 00:41:56,058 Du kan bli av med grejer från bara dra den av till vänster 923 00:41:56,058 --> 00:41:56,810 och släppa taget. 924 00:41:56,810 --> 00:42:00,310 Låt mig gå vidare och göra ett evigt blocket och mycket snabbt göra något irriterande. 925 00:42:00,310 --> 00:42:03,010 Låt mig gå vidare och säger "spela upp ljud mjau." 926 00:42:03,010 --> 00:42:06,620 Men jag vill inte att detta ska vara för irriterande, så låt mig ta detta block, 927 00:42:06,620 --> 00:42:09,090 "Vänta en sekund," och varsel det finns inget mer utrymme för det. 928 00:42:09,090 --> 00:42:11,310 Men om du går tillräckligt nära, den vill gå dit. 929 00:42:11,310 --> 00:42:14,100 Så jag släppa taget och det kommer växer för att fylla blocket. 930 00:42:14,100 --> 00:42:15,932 Så nu, detta är en slinga. 931 00:42:15,932 --> 00:42:16,432 [Jamar] 932 00:42:16,432 --> 00:42:18,473 DAVID J. MALAN: Jag är bokstavligen gör detta för alltid. 933 00:42:18,473 --> 00:42:19,360 Om och om igen. 934 00:42:19,360 --> 00:42:21,510 Det är helt enkelt inte naturligt klingande. 935 00:42:21,510 --> 00:42:24,800 Låt mig gå vidare och ändra detta att inte en sekund, två sekunder 936 00:42:24,800 --> 00:42:25,854 och tryck på Retur. 937 00:42:25,854 --> 00:42:28,770 Och vad är trevligt om Scratch är som du kan programmera interaktivt. 938 00:42:28,770 --> 00:42:32,450 Gör en ändring, kanske trycka Enter eller Play igen, och det kommer bara fortsätta. 939 00:42:32,450 --> 00:42:34,962 Nåväl, nu varför inte vi gör något lite sötare? 940 00:42:34,962 --> 00:42:39,680 I stället för att göra allt från grunden, Låt mig gå vidare och öppna upp ett förskott 941 00:42:39,680 --> 00:42:43,180 gjorde en, som jag förgräddade, kallas "Pet katten." 942 00:42:43,180 --> 00:42:44,920 Och vi kommer att lägga upp alla dessa filer på nätet, 943 00:42:44,920 --> 00:42:48,464 och problembild noll kommer att säga hur man kommer åt dem och öppna dem. 944 00:42:48,464 --> 00:42:49,880 Och varsel, detta är ganska enkel. 945 00:42:49,880 --> 00:42:53,860 Men i förväg, jag verkar ha gripit ett "evigt" block, så jag har en loop. 946 00:42:53,860 --> 00:42:55,500 Och så har jag ett "om" tillstånd. 947 00:42:55,500 --> 00:42:57,410 Jag har ett booleskt uttryck. 948 00:42:57,410 --> 00:43:00,100 >> Så i engelska, bara kasta en blick på detta, särskilt om du har aldrig 949 00:43:00,100 --> 00:43:04,278 programmerat förut, bara intuitivt, Vad kommer detta att göra, det här programmet? 950 00:43:04,278 --> 00:43:06,910 >> [Publik prat] 951 00:43:06,910 --> 00:43:09,960 >> DAVID J. MALAN: Om du klappa katten, katten kommer att jama, eller hur? 952 00:43:09,960 --> 00:43:14,560 Eftersom "forever avmarkera" är muspekaren röra katten. 953 00:43:14,560 --> 00:43:17,630 Så för att vara tydlig, och jag sa inte detta innan, alla dessa pussel 954 00:43:17,630 --> 00:43:20,750 bitar och det skript som Vi har kombinerat dem i, 955 00:43:20,750 --> 00:43:25,510 så att säga, är ett skript synonymt med Programmet, egentligen, tillhör denna katt. 956 00:43:25,510 --> 00:43:30,110 Och anledningen är-- eftersom varsel hur denna samma katt här är markerat, 957 00:43:30,110 --> 00:43:32,710 här nere kan du skapa en andra katt eller hund eller egentligen 958 00:43:32,710 --> 00:43:33,970 vad du vill grafiskt. 959 00:43:33,970 --> 00:43:35,900 Du kan importera något från Photoshop, eller liknande, 960 00:43:35,900 --> 00:43:38,300 och integrera något om du vill göra det till ett projekt. 961 00:43:38,300 --> 00:43:40,174 Och vad du hittar, i slutändan, är att du 962 00:43:40,174 --> 00:43:44,800 kan lägga till manus, lägg pussel bitar, till enskilda tecken. 963 00:43:44,800 --> 00:43:47,210 Så dessa tillhör alla denna speciella katt. 964 00:43:47,210 --> 00:43:51,770 Så nu om jag går vidare och spela detta program är inget som händer. 965 00:43:51,770 --> 00:43:52,970 Men den är igång. 966 00:43:52,970 --> 00:43:56,364 Programmet är i detta forever loop, slags väntar på vad som ska hända? 967 00:43:56,364 --> 00:43:57,230 >> [Publik prat] 968 00:43:57,230 --> 00:43:58,130 >> DAVID J. MALAN: Att klappa katten. 969 00:43:58,130 --> 00:43:59,800 Så om jag flyttar min mus mot honom-- 970 00:43:59,800 --> 00:44:02,420 >> [Jamar] 971 00:44:02,420 --> 00:44:04,450 >> DAVID J. MALAN: Så nu Jag klappa katten. 972 00:44:04,450 --> 00:44:07,330 Under tiden kan vi ha en dubbel gren. 973 00:44:07,330 --> 00:44:10,370 Låt mig gå vidare och öppna upp inte klappa katten. 974 00:44:10,370 --> 00:44:12,160 Vi kommer att lägga ut på nätet också. 975 00:44:12,160 --> 00:44:16,760 Detta är lite mer komplex, men utan att säga 976 00:44:16,760 --> 00:44:18,780 du kan gissa kanske vad som kommer att hända. 977 00:44:18,780 --> 00:44:20,160 >> [Jamar] 978 00:44:20,160 --> 00:44:23,900 >> DAVID J. MALAN: Cat är jamar, grand old tid. 979 00:44:23,900 --> 00:44:26,690 Men det här programmet är naturligtvis heter "Inte klappa katten," 980 00:44:26,690 --> 00:44:29,350 så tydligt, jag vill klappa katten. 981 00:44:29,350 --> 00:44:30,490 >> [Roaring] 982 00:44:30,490 --> 00:44:31,940 >> DAVID J. MALAN: inte klappa katten. 983 00:44:31,940 --> 00:44:34,230 Nu ska vi ta en titt på ett annat exempel här. 984 00:44:34,230 --> 00:44:38,035 Den här kommer att kallas "Hej, Hej, Hej," skäl 985 00:44:38,035 --> 00:44:40,410 som kommer att vara klar, eftersom så fort jag kör denna sak-- 986 00:44:40,410 --> 00:44:41,401 >> [SEAL BARKING] 987 00:44:41,401 --> 00:44:43,942 DAVID J. MALAN: Mycket lätt att skriva irriterande Scratch program. 988 00:44:43,942 --> 00:44:45,300 [SEAL BARKING] 989 00:44:45,300 --> 00:44:48,540 DAVID J. MALAN: Nu kommer vi inte att gå in i detalj med alla dessa, 990 00:44:48,540 --> 00:44:51,150 men märker att det finns en par nya funktioner här. 991 00:44:51,150 --> 00:44:55,540 Det finns en variabel, kallad "dämpad", och sedan finns det en massa villkor. 992 00:44:55,540 --> 00:44:57,900 Och nu, låt mig bara reta dig genom att säga 993 00:44:57,900 --> 00:45:03,170 att om den här killen blir för irriterande, Jag kan slå på mellanslagstangenten och han stannar. 994 00:45:03,170 --> 00:45:05,880 Eftersom den roll som spelas av dessa två skript är som följer. 995 00:45:05,880 --> 00:45:08,510 En av dem är att göra det skällande med några sekunders mellanrum. 996 00:45:08,510 --> 00:45:11,305 Den andra är bara väntar för mig att slå på mellanslagstangenten. 997 00:45:11,305 --> 00:45:14,780 Och om jag slår på mellanslagstangenten, det kommer att förändra 998 00:45:14,780 --> 00:45:18,096 tillståndet för denna variabel, värdet denna variabel, det är uppenbarligen 999 00:45:18,096 --> 00:45:20,470 kallade "dämpad," jag inte ringa det något tråkigt som n, 1000 00:45:20,470 --> 00:45:22,370 Jag kallade det ett engelskt ord, "dämpad". 1001 00:45:22,370 --> 00:45:24,740 Från 1 till 0 eller 0 till 1. 1002 00:45:24,740 --> 00:45:26,830 Från true till false eller falskt till sant. 1003 00:45:26,830 --> 00:45:28,930 Och så kan du faktiskt se nu, att du 1004 00:45:28,930 --> 00:45:31,720 skulle kunna ha två manus, två program körs samtidigt, 1005 00:45:31,720 --> 00:45:34,360 och båda kan sitta i en slinga gör något. 1006 00:45:34,360 --> 00:45:38,067 Väntar på det mänskliga att göra något som att slå på mellanslagstangenten. 1007 00:45:38,067 --> 00:45:38,650 [SEAL BARKING] 1008 00:45:38,650 --> 00:45:40,566 DAVID J. MALAN: Och nu han är på väg igen. 1009 00:45:40,566 --> 00:45:41,640 [SEAL BARKING] 1010 00:45:41,640 --> 00:45:45,220 DAVID J. MALAN: Så vad mer kan vi göra med dessa exempel? 1011 00:45:45,220 --> 00:45:50,920 Nåväl, låt oss gå vidare och göra en exempel med räkna får. 1012 00:45:50,920 --> 00:45:59,210 Vi fortsätter denna linje här of-- låt oss öppna upp fåren exemplet. 1013 00:45:59,210 --> 00:46:02,460 Och varsel, ungefär som förut, den här, tack och lov, är lite mindre irriterande. 1014 00:46:02,460 --> 00:46:06,940 När jag slog spela här-- Åh nej, det är irriterande. 1015 00:46:06,940 --> 00:46:10,130 Han kommer att BAA med viss sannolikhet. 1016 00:46:10,130 --> 00:46:11,050 Låt oss spela detta igen. 1017 00:46:11,050 --> 00:46:15,221 >> [Får bleeting] 1018 00:46:15,221 --> 00:46:18,470 DAVID J. MALAN: Den enda skillnaden är Vi har ändrat kostym, så att säga, 1019 00:46:18,470 --> 00:46:21,710 och vi halvera och säger vad det verkliga antalet är. 1020 00:46:21,710 --> 00:46:24,680 Nåväl låt oss gå vidare och ta detta ett steg längre. 1021 00:46:24,680 --> 00:46:28,190 Och låt mig reta dig med en annan funktion här. 1022 00:46:28,190 --> 00:46:31,800 Låt oss gå vidare och öppna upp ett program som kallas trådar. 1023 00:46:31,800 --> 00:46:36,620 Så mycket som du kan ha en sprite, som har flera skript, 1024 00:46:36,620 --> 00:46:41,250 du kan ha två älvor, en fågel i en katt, var och en har sitt eget manus. 1025 00:46:41,250 --> 00:46:43,976 Och var och en av dem kan arbeta samtidigt. 1026 00:46:43,976 --> 00:46:45,980 Om du någonsin har hört Ordet "multithreading" 1027 00:46:45,980 --> 00:46:49,240 en dator är "flertrådade" betyder det kan göra flera saker på en gång, 1028 00:46:49,240 --> 00:46:50,880 och, faktiskt, så kan Scratch. 1029 00:46:50,880 --> 00:46:52,690 >> Och nu märker fågeln är typ av dum. 1030 00:46:52,690 --> 00:46:55,100 Det är bara att göra saker slumpmässigt, studsar utanför skärmen. 1031 00:46:55,100 --> 00:46:59,460 Helt klart är att katten har programmerats att typ av få som söker kapacitet 1032 00:46:59,460 --> 00:47:02,680 hem i på fågeln eftersom han alltid pekar på honom. 1033 00:47:02,680 --> 00:47:06,176 Tills slutligen, han fångar den färdiga fågel. 1034 00:47:06,176 --> 00:47:08,550 Så jag kommer inte att uppehålla mig vid detaljerna här, men du kan typ av 1035 00:47:08,550 --> 00:47:12,160 skymt samma former, några "Om" förhållanden, vissa variabler, 1036 00:47:12,160 --> 00:47:15,740 kanske några slingor, är i slutändan gör samma sak. 1037 00:47:15,740 --> 00:47:18,400 >> Låt mig gå vidare och öppna upp något helt annat, 1038 00:47:18,400 --> 00:47:20,920 att retas några av er, särskilt de bekvämare, 1039 00:47:20,920 --> 00:47:22,760 vad du faktiskt kan göra med detta. 1040 00:47:22,760 --> 00:47:26,080 Jag kommer att gå vidare och öppna upp knapp här. 1041 00:47:26,080 --> 00:47:28,740 Och detta är en super enkel-skenprogram, 1042 00:47:28,740 --> 00:47:34,190 men se vad som händer när Jag-- Titta vad 1043 00:47:34,190 --> 00:47:39,860 händer när jag öppnar denna version av den, Här i webbläsaren, scratch.mit.edu. 1044 00:47:39,860 --> 00:47:43,460 Och när jag klickar på den här stora röda knappen, ser vad som sker. 1045 00:47:43,460 --> 00:47:46,110 1046 00:47:46,110 --> 00:47:47,647 Så vad händer här? 1047 00:47:47,647 --> 00:47:50,480 Det finns faktiskt mycket mer komplicerad händer under huven, 1048 00:47:50,480 --> 00:47:52,896 trots att jag har genomfört detta, eller ärligt talat, Dan Bradley 1049 00:47:52,896 --> 00:47:54,660 har genomfört det så enkelt. 1050 00:47:54,660 --> 00:47:59,540 Han har designat en egen Scratch pussel pjäs, kallad Scratch förlängning, 1051 00:47:59,540 --> 00:48:01,300 Han kallade det Toggle. 1052 00:48:01,300 --> 00:48:06,332 >> Och vad Toggle gör är det skickar ett meddelande över Internet. 1053 00:48:06,332 --> 00:48:08,290 Och det budskapet i sig ser lite kryptiskt. 1054 00:48:08,290 --> 00:48:10,248 Men även detta, du ska menar med begreppet slut. 1055 00:48:10,248 --> 00:48:14,930 Budskapet han faktiskt skicka ser lite ut så här. 1056 00:48:14,930 --> 00:48:15,921 Det är bara text. 1057 00:48:15,921 --> 00:48:16,420 Cryptic. 1058 00:48:16,420 --> 00:48:19,130 Du kommer att förstå det när vi få problemet satt sju. 1059 00:48:19,130 --> 00:48:22,180 Det är bara att skicka ett textmeddelande över internet till en server. 1060 00:48:22,180 --> 00:48:24,330 Och den servern är, i slutändan, prata med denna lampa, som 1061 00:48:24,330 --> 00:48:27,240 har en av dessa tjusiga glödlampor i det som, i sig, talar 1062 00:48:27,240 --> 00:48:30,760 till Wi-Fi i nätverket här, där en lokal enhet ned här-- 1063 00:48:30,760 --> 00:48:34,400 och i slutändan är det faktiskt vrida det ljuset på och av. 1064 00:48:34,400 --> 00:48:36,240 Men vi kan göra mer intressanta saker fortfarande. 1065 00:48:36,240 --> 00:48:38,270 Lägg märke till vad Dan också gjorde för oss. 1066 00:48:38,270 --> 00:48:42,210 Han gjorde flera sprites, var och en av som har ett manus som väntar på ett klick. 1067 00:48:42,210 --> 00:48:44,030 Och om jag klickar rött, går det rött. 1068 00:48:44,030 --> 00:48:46,780 Om jag får blå, det går blåaktig. 1069 00:48:46,780 --> 00:48:49,854 Grön, gul, orange. 1070 00:48:49,854 --> 00:48:52,520 Och allt detta sker med gå vägen ut på internet, 1071 00:48:52,520 --> 00:48:54,690 backa hit till glödlampa, på och av. 1072 00:48:54,690 --> 00:48:57,981 >> Och om du kan tro det-- och det är kanske en av de mest komplexa Scratch 1073 00:48:57,981 --> 00:49:00,930 projekt någon har implemented-- han gjorde det, i rättvisans namn, på en dag. 1074 00:49:00,930 --> 00:49:04,180 Och det var den utmaning som vi kastade ner till Dan när vi såg har binära lökar, 1075 00:49:04,180 --> 00:49:05,810 vi har Scratch, hur kan vi kombinera dem? 1076 00:49:05,810 --> 00:49:08,410 Och faktiskt, detta är absolut något som någon i det här rummet 1077 00:49:08,410 --> 00:49:14,250 skulle kunna göra med termins end-- Är han implementerats om binära glödlampor som använder 1078 00:49:14,250 --> 00:49:18,310 samma gränssnitt som var på vår iPad på onsdag. 1079 00:49:18,310 --> 00:49:22,000 Så att nu, om jag faktiskt Klicka på plus hit, 1080 00:49:22,000 --> 00:49:25,250 Vi har en, två, tre. 1081 00:49:25,250 --> 00:49:27,550 Jag kan slå 16 och slå den en på. 1082 00:49:27,550 --> 00:49:29,440 128, och så vidare. 1083 00:49:29,440 --> 00:49:31,250 >> Nu om det enbart har och blåst ditt sinne, 1084 00:49:31,250 --> 00:49:35,680 du kan göra saker mycket mer tillgängligt, som inte innebär någon hårdvara säkert. 1085 00:49:35,680 --> 00:49:38,320 Bara saker på själva skärmen. 1086 00:49:38,320 --> 00:49:41,110 Och, faktiskt, vad de flesta studenter sluta göra är någon form av spel, 1087 00:49:41,110 --> 00:49:44,600 någon bit av konstnärligt arbete, eller någon typ av interaktiv animation. 1088 00:49:44,600 --> 00:49:47,352 Och jag kommer att säga en av våra Favoriter har varit här. 1089 00:49:47,352 --> 00:49:49,060 Och jag tänkte att om vi skulle kunna dämpa belysningen, 1090 00:49:49,060 --> 00:49:52,960 vi tar en inblick i denna final Scratch projektet avslutningsvis. 1091 00:49:52,960 --> 00:49:57,460 Men vad du bör tänka på, som Jag kan reta dig med en detalj, 1092 00:49:57,460 --> 00:49:59,140 sektione börjar nästa vecka. 1093 00:49:59,140 --> 00:50:00,830 Öppettider kommer att börja nästa vecka. 1094 00:50:00,830 --> 00:50:04,410 Problem set noll kommer att finnas CS50.harvard.edu senare idag. 1095 00:50:04,410 --> 00:50:06,430 Och du kommer att välkomnas i problembild noll 1096 00:50:06,430 --> 00:50:10,070 till CS50 egen Zamyla Chan, som styr de flesta av våra genomgångar. 1097 00:50:10,070 --> 00:50:11,952 Dessa är inbäddade videoklipp i problemsamlingar 1098 00:50:11,952 --> 00:50:15,160 som kommer att hålla din hand genom en hel del av den ursprungliga uppsättningen upp och genom många 1099 00:50:15,160 --> 00:50:16,570 av de möjliga designbeslut. 1100 00:50:16,570 --> 00:50:19,570 Så allt om du har haft den känslan när du plockar upp en hemuppgift 1101 00:50:19,570 --> 00:50:21,030 och undrar, var ska jag börja? 1102 00:50:21,030 --> 00:50:23,510 Hon kommer att få det svaret för dig. 1103 00:50:23,510 --> 00:50:27,720 Och nu, ett slutligt program från en av era föregångare 1104 00:50:27,720 --> 00:50:30,659 i svaret på frågan "Vad räven säga?" 1105 00:50:30,659 --> 00:50:32,242 [MUSIK YLVIS, "VAD GÖR FOX SÄGA?] 1106 00:50:32,242 --> 00:50:40,178 1107 00:50:40,178 --> 00:50:41,666 >> YLVIS: (sjunger) Hund går woof. 1108 00:50:41,666 --> 00:50:43,650 Katt går jama. 1109 00:50:43,650 --> 00:50:47,520 Bird går tweet och mus går knyst. 1110 00:50:47,520 --> 00:50:49,240 Ko går moo. 1111 00:50:49,240 --> 00:50:51,690 Groda går croak. 1112 00:50:51,690 --> 00:50:54,630 Och elefanten går toot. 1113 00:50:54,630 --> 00:50:59,040 Ducks säger kvacksalvare och fisk går blub. 1114 00:50:59,040 --> 00:51:07,370 Och tätningen går ow ow ow, men det finns ett ljud som ingen vet, 1115 00:51:07,370 --> 00:51:10,330 vad räven säga? 1116 00:51:10,330 --> 00:51:11,020 Och 1117 00:51:11,020 --> 00:51:12,478 >> DAVID J. MALAN: Det är det för CS50. 1118 00:51:12,478 --> 00:51:15,436 Vi kommer att se dig på Puzzle dag och på måndag. 1119 00:51:15,436 --> 00:51:16,424 >> [Applåder] 1120 00:51:16,424 --> 00:51:19,882 >> [MUSIK YLVIS, "HUR SER FOX SAY?"] 1121 00:51:19,882 --> 00:51:24,840 1122 00:51:24,840 --> 00:51:28,820 >> BERÄTTARE: Och nu djupt tankar, av Daven Farnham. 1123 00:51:28,820 --> 00:51:31,770 1124 00:51:31,770 --> 00:51:34,570 Idag blev jag träffad i ansikte med en telefonbok. 1125 00:51:34,570 --> 00:51:38,160 Förvirrande, eftersom jag är på hemma tittar på nätet. 1126 00:51:38,160 --> 00:51:42,528