1 00:00:00,000 --> 00:00:11,120 2 00:00:11,120 --> 00:00:12,590 >> Speak: Jag är [OHÖRBAR]. 3 00:00:12,590 --> 00:00:14,820 Och jag är en senior på Leverett House. 4 00:00:14,820 --> 00:00:18,700 Jag studerar datavetenskap, och jag är en TF för CS50. 5 00:00:18,700 --> 00:00:21,640 Som en nybörjare, jag visste inte ens har en bärbar dator eller en smartphone. 6 00:00:21,640 --> 00:00:23,550 Jag hade ingen erfarenhet av programmering. 7 00:00:23,550 --> 00:00:29,690 CS50 var den mest minnesvärda kurs som Jag tog på Harvard eftersom det var 8 00:00:29,690 --> 00:00:32,960 en kamp, ​​men det var en riktigt kul kamp samtidigt. 9 00:00:32,960 --> 00:00:37,670 Och jag gjorde en hel del fantastiska, permanent vänner och jag lärde mig en hel del riktigt 10 00:00:37,670 --> 00:00:38,830 tillämpliga färdigheter. 11 00:00:38,830 --> 00:00:43,480 Jag är bara så glad att jag inte lät min brist på bakgrunden vara en ursäkt för mig 12 00:00:43,480 --> 00:00:44,840 inte ta CS50. 13 00:00:44,840 --> 00:00:46,220 Jag är [OHÖRBAR]. 14 00:00:46,220 --> 00:00:48,910 Jag är en senior på Leverett Hus, klassificera av 2014. 15 00:00:48,910 --> 00:00:51,670 Och jag tog CS50. 16 00:00:51,670 --> 00:00:52,380 >> DAVID MALAN: Så detta är CS50. 17 00:00:52,380 --> 00:00:54,400 Detta är slutet på veckan noll. 18 00:00:54,400 --> 00:00:58,500 Och minns när vi började förra gången, var med dessa lampor, som var 19 00:00:58,500 --> 00:01:01,420 så populär att vi gick och köpte lite mer idag. 20 00:01:01,420 --> 00:01:03,790 Så jag tror att detta kommer att bli vår sak i år - 21 00:01:03,790 --> 00:01:07,230 bordslampor om du kommer upp på scenen, åtminstone tills vi kör ut. 22 00:01:07,230 --> 00:01:11,570 >> Men vi använde dessa minns, att införa grunderna för representation av data. 23 00:01:11,570 --> 00:01:15,640 Vi behövde sätt att börja representerar informationen insidan av en dator. 24 00:01:15,640 --> 00:01:18,650 Och det enklaste sättet att göra det var med en ingrediens, el. 25 00:01:18,650 --> 00:01:21,760 Och den enklaste sak du kan göra med el slå på och av den. 26 00:01:21,760 --> 00:01:23,520 Låt elektronerna flödar eller inte. 27 00:01:23,520 --> 00:01:27,930 Och med hjälp av dessa två grundläggande tillstånd, av och på, eller falskt och sant, eller noll och 28 00:01:27,930 --> 00:01:31,290 en, började vi att se att vi skulle kunna bygga upp, i detta fall, med ljus 29 00:01:31,290 --> 00:01:33,720 lökar, fler nummer än bara noll och ett. 30 00:01:33,720 --> 00:01:36,160 Vi räknas som högt som sju, till exempel, förra gången. 31 00:01:36,160 --> 00:01:38,840 Men allt vi behöver göra är att fortsätta slänga fler och fler glödlampor på att 32 00:01:38,840 --> 00:01:41,820 problem och, egentligen, kan vi representera valfritt antal som vi 33 00:01:41,820 --> 00:01:42,970 kanske eventuellt vill. 34 00:01:42,970 --> 00:01:47,230 >> Tja, övergick vi snabbt därefter på Onsdag till detta byte av volontärer. 35 00:01:47,230 --> 00:01:52,040 8 bitar är vad vi i allmänhet kallar en byte, så här hade vi åtta volontärer 36 00:01:52,040 --> 00:01:54,900 på onsdag som tillsammans var representerande åtta bitar. 37 00:01:54,900 --> 00:01:56,750 Och när deras händer gick upp, de var en man. 38 00:01:56,750 --> 00:01:58,530 Och när deras händer var ner, fanns det en nolla. 39 00:01:58,530 --> 00:02:01,970 Och vi hade dessa folks komma upp på scenen varför? 40 00:02:01,970 --> 00:02:06,530 Vad vi kan göra med denna sekvens av bitar? 41 00:02:06,530 --> 00:02:07,510 >> För att skapa ett alfabet. 42 00:02:07,510 --> 00:02:11,550 Vi kunde bygga på toppen av det tidigare lärdom och faktiskt 43 00:02:11,550 --> 00:02:14,200 börjar göra mer intressant information som är åtminstone mer 44 00:02:14,200 --> 00:02:15,330 bekant för oss människor. 45 00:02:15,330 --> 00:02:18,360 Och detta kommer att bli en återkommande tema i hela 50, men även dator 46 00:02:18,360 --> 00:02:21,470 vetenskapen mer generellt, denna idé om skiktning, där, i slutet av 47 00:02:21,470 --> 00:02:24,820 dag, om du började verkligen grunderna med en dator, ja, 48 00:02:24,820 --> 00:02:25,760 det är ettor och nollor. 49 00:02:25,760 --> 00:02:27,480 Och under att det är bara elektricitet. 50 00:02:27,480 --> 00:02:30,840 Men vi mycket snabbt börja ta dem låg nivå detaljer för beviljat 51 00:02:30,840 --> 00:02:35,600 och börja lager ovanpå tidigare arbetat göras så att vi i slutändan genom 52 00:02:35,600 --> 00:02:38,610 I slutet av terminen och, egentligen, mer allmänt som datavetare 53 00:02:38,610 --> 00:02:42,790 och programmerare, kan göra några riktigt kraftfulla saker genom att utnyttja arbete 54 00:02:42,790 --> 00:02:46,620 som vi själva har gjort och även står på axlarna av andra. 55 00:02:46,620 --> 00:02:49,300 >> Nu har vi övergått snabbt på onsdag från bara behöva 56 00:02:49,300 --> 00:02:52,080 representera information att vilja att göra något med det. 57 00:02:52,080 --> 00:02:54,170 Så vad gjorde vi definierar en algoritm som? 58 00:02:54,170 --> 00:02:57,340 59 00:02:57,340 --> 00:02:58,900 En serie instruktioner. 60 00:02:58,900 --> 00:03:03,380 Så det är en serie instruktioner, en antal steg som du, en människa, eller 61 00:03:03,380 --> 00:03:07,160 en dator, mer typiskt, skulle exekvera den ena efter den andra för att 62 00:03:07,160 --> 00:03:08,100 att uppnå något mål. 63 00:03:08,100 --> 00:03:11,360 Och vi hade några mål förra gången, varav en var att räkna 64 00:03:11,360 --> 00:03:12,250 personer i rummet. 65 00:03:12,250 --> 00:03:15,560 Och annat sådant exempel var att hitta Mike Smith i en telefonbok. 66 00:03:15,560 --> 00:03:19,750 >> Så du kanske minns att jag slet en telefon bok i hälften mot detta hamnar 67 00:03:19,750 --> 00:03:21,280 hitta Mike Smith. 68 00:03:21,280 --> 00:03:24,000 Syftet med det visuella var att visar, återigen, att vi var 69 00:03:24,000 --> 00:03:27,770 bokstavligen riva detta problem i halv, på mitten, på mitten, och mycket 70 00:03:27,770 --> 00:03:31,750 snabbt gå från liknande 1.000 sidor att bara en enda sida. 71 00:03:31,750 --> 00:03:34,860 De av er som missade detta på Onsdag, trodde jag att vi skulle spela upp 72 00:03:34,860 --> 00:03:36,820 några bilder av vad du missade. 73 00:03:36,820 --> 00:03:38,914 Låt oss ta en titt. 74 00:03:38,914 --> 00:03:40,906 >> [VIDEO SPELA] 75 00:03:40,906 --> 00:03:55,360 76 00:03:55,360 --> 00:03:55,990 >> -Där går vi. 77 00:03:55,990 --> 00:04:01,432 1500 sidor, Nice clean linje, legitima tår. 78 00:04:01,432 --> 00:04:02,850 >> [END VIDEOAVSPELNING] 79 00:04:02,850 --> 00:04:05,230 >> DAVID MALAN: Så det var onsdag. 80 00:04:05,230 --> 00:04:09,150 Vi övergång, men på onsdag nu att vilja representera algoritmer 81 00:04:09,150 --> 00:04:12,410 på något något standardiserat sätt, inte bara beskriver dem verbalt, men 82 00:04:12,410 --> 00:04:16,290 försöker uttrycka dem i skrift eller på en datorskärm så att vi kunde 83 00:04:16,290 --> 00:04:19,170 börja förbättra och modifiera dem, och, så småningom, faktiskt 84 00:04:19,170 --> 00:04:21,160 analysera hur korrekt eller hur snabbt de var. 85 00:04:21,160 --> 00:04:23,360 >> Så vi introducerade detta begrepp av pseudokod, som i 86 00:04:23,360 --> 00:04:26,410 lekmannaspråk, är vad? 87 00:04:26,410 --> 00:04:26,930 OK, ord. 88 00:04:26,930 --> 00:04:28,730 Låt oss gå lite djupare än så. 89 00:04:28,730 --> 00:04:32,540 Engelska, säker, är utan mot vilket syfte? 90 00:04:32,540 --> 00:04:35,180 Ord som att skapa eller att representera algoritmer. 91 00:04:35,180 --> 00:04:38,380 Så det finns ingen ett språk känt som pseudokod i världen. 92 00:04:38,380 --> 00:04:41,110 Det är precis som du, på engelska, eller Oavsett din talspråk är, använd 93 00:04:41,110 --> 00:04:44,930 en sorts ytlig notation att förmedla en idé mycket kortfattat. 94 00:04:44,930 --> 00:04:47,930 Men vi får se det, förvisso med en Engelska pseudokod, och det visar sig 95 00:04:47,930 --> 00:04:51,700 de flesta programmeringsspråk själva är derivat av engelska själv, 96 00:04:51,700 --> 00:04:55,750 vi kommer att upptäcka att det finns en viss standard sätt att representera pseudokod och 97 00:04:55,750 --> 00:04:57,150 också programmeringskod. 98 00:04:57,150 --> 00:05:00,200 Så när du börjar att se även den enklaste exempel idag, inser dessa 99 00:05:00,200 --> 00:05:02,160 Samma mönster återkommer nästa vecka. 100 00:05:02,160 --> 00:05:04,710 >> Så pseudokod var något slags av språket liknar 101 00:05:04,710 --> 00:05:06,170 ett programmeringsspråk. 102 00:05:06,170 --> 00:05:09,260 Och det första exemplet vi såg visuellt nedskrivna var här. 103 00:05:09,260 --> 00:05:12,870 Det var bara en tre steg program, mål var att räkna antalet 104 00:05:12,870 --> 00:05:15,650 av människor i ett studentrum för som video på onsdag. 105 00:05:15,650 --> 00:05:19,040 Men det fanns några intressanta aspekter av detta enklaste programmet. 106 00:05:19,040 --> 00:05:20,320 >> Och detta kommer att vara återkommande teman. 107 00:05:20,320 --> 00:05:22,930 Så för dem som är obekanta med detta, en, introducerade vi en variabel. 108 00:05:22,930 --> 00:05:25,650 Och förmodligen alla i det här rummet är bekant med en variabel i 109 00:05:25,650 --> 00:05:27,250 ramen för algebra. 110 00:05:27,250 --> 00:05:31,190 Men här i programmering, variabler är, en, kan vara 111 00:05:31,190 --> 00:05:32,220 heter vad vi vill. 112 00:05:32,220 --> 00:05:33,620 Vi har använt n som en räknare. 113 00:05:33,620 --> 00:05:37,490 Men vi skulle kunna använda ordet disken, eller, som du ser, de flesta någon fras som 114 00:05:37,490 --> 00:05:40,240 du kanske gillar så länge det är beskrivande, men det är egentligen bara en 115 00:05:40,240 --> 00:05:41,250 förvaringsbehållare. 116 00:05:41,250 --> 00:05:44,170 Det är en bit av minnet, ett visst antal bitar, och det varierar från dator, hur 117 00:05:44,170 --> 00:05:47,020 många bitar som finns att komponera den variabeln. 118 00:05:47,020 --> 00:05:48,450 >> Men vi kan sätta värden i det. 119 00:05:48,450 --> 00:05:50,740 Hittills har vi satt bara siffror. 120 00:05:50,740 --> 00:05:52,290 Men vi kan sätta faktiska ord. 121 00:05:52,290 --> 00:05:53,420 Vi kan sätta punkt. 122 00:05:53,420 --> 00:05:54,560 Vi kan sätta bilder - 123 00:05:54,560 --> 00:05:57,860 någonting, egentligen, kan vi representera med nollor och ettor, kan vi sätta in 124 00:05:57,860 --> 00:05:59,820 denna högre nivå begrepp av en variabel. 125 00:05:59,820 --> 00:06:01,350 >> Så ganska rakt fram där. 126 00:06:01,350 --> 00:06:02,210 Och det är linje ett. 127 00:06:02,210 --> 00:06:05,340 Men vi mycket snabbt gått från line en att faktiskt göra 128 00:06:05,340 --> 00:06:06,600 något med den variabeln. 129 00:06:06,600 --> 00:06:10,330 Och i linje tre, uppdaterade vi N. Vi ökas N. Och vi kunde skriva detta 130 00:06:10,330 --> 00:06:11,330 ett antal olika sätt. 131 00:06:11,330 --> 00:06:14,460 Men kanske det mest uppenbara är bara säga, ställa N till 132 00:06:14,460 --> 00:06:16,440 oavsett N är plus 1. 133 00:06:16,440 --> 00:06:17,740 Så det var vår ökning. 134 00:06:17,740 --> 00:06:18,740 >> Samtidigt fanns det en slinga. 135 00:06:18,740 --> 00:06:20,720 Och här också, är förmodligen ganska intuitiv. 136 00:06:20,720 --> 00:06:24,250 En slinga är bara något i ett program det händer igen och igen, några 137 00:06:24,250 --> 00:06:25,190 typ av cykel. 138 00:06:25,190 --> 00:06:29,300 Och denna nyckelfras här, för varje, är faktiskt mycket vanligt under större delen 139 00:06:29,300 --> 00:06:32,300 programmeringsspråk, inklusive som vi ser i kursen. 140 00:06:32,300 --> 00:06:35,850 När som helst du ser det ord för det vanligtvis förmedlar tanken att en 141 00:06:35,850 --> 00:06:38,410 slinga, något cyklisk, är på väg att hända. 142 00:06:38,410 --> 00:06:40,980 >> Men det är värt att notera en annan syntaktisk detalj. 143 00:06:40,980 --> 00:06:44,660 Det faktum att tredje raden finns faktiskt indragen med ha drabbat 144 00:06:44,660 --> 00:06:46,920 space bar några gånger är avsiktlig. 145 00:06:46,920 --> 00:06:49,870 Eftersom mänsklig konvention är sådan att, när du gör något nytt och 146 00:06:49,870 --> 00:06:54,860 igen, i en slinga, som börjat på rad två, du strecksats något som tillhörde 147 00:06:54,860 --> 00:06:58,880 till att slingan bara för att klargöra att det är linje tre och inte, till exempel, 148 00:06:58,880 --> 00:07:01,910 linje fyra eller fem, om det fanns linjer för eller fem, som är 149 00:07:01,910 --> 00:07:03,010 del av som loopar. 150 00:07:03,010 --> 00:07:07,340 Så här enkla indrag förmedlar den grundläggande idén. 151 00:07:07,340 --> 00:07:09,390 >> Så vi tillämpat denna algoritm, nu, till några exempel. 152 00:07:09,390 --> 00:07:12,620 Och även detta enkla exempel i den verkliga världen. 153 00:07:12,620 --> 00:07:15,440 Men det kommer att vara representativ för hur skulle du gå om att testa din 154 00:07:15,440 --> 00:07:17,500 äger allt mer komplexa program. 155 00:07:17,500 --> 00:07:21,050 Du försöker några scenarier, vissa representanter ingångar, och se om du 156 00:07:21,050 --> 00:07:22,180 få önskade resultat. 157 00:07:22,180 --> 00:07:25,090 >> Så här exemplet hade två personer sitter i studentrummet. 158 00:07:25,090 --> 00:07:27,170 Till vänster är samma pseudo-kod. 159 00:07:27,170 --> 00:07:30,800 Och detta är en skärmdump av den mycket sista steget i tillämpningen av denna 160 00:07:30,800 --> 00:07:35,270 algoritm på dessa resurser, där var två personer i rummet och, 161 00:07:35,270 --> 00:07:39,190 minns, när vi kliver genom ledningarna man, och två, och tre, och två 162 00:07:39,190 --> 00:07:41,000 och tre och gjort - 163 00:07:41,000 --> 00:07:44,870 i slutet av denna algoritm, hade vi faktiskt räknade de två män som är 164 00:07:44,870 --> 00:07:45,360 i rummet. 165 00:07:45,360 --> 00:07:47,190 >> Så då försökte vi ett annat exempel. 166 00:07:47,190 --> 00:07:48,990 Och vi sa att tänk om det finns noll personer i rummet? 167 00:07:48,990 --> 00:07:50,490 Är denna kod fortfarande korrekt? 168 00:07:50,490 --> 00:07:51,305 Och faktiskt var det. 169 00:07:51,305 --> 00:07:55,240 Det råkar vara så att linje två och sålunda, rad tre eller 170 00:07:55,240 --> 00:07:56,620 inte går att verkställa. 171 00:07:56,620 --> 00:07:59,790 De kommer inte att hända alls eftersom de är bara inte om 172 00:07:59,790 --> 00:08:01,210 Det finns noll personer i rummet. 173 00:08:01,210 --> 00:08:02,300 >> Men inte en big deal. 174 00:08:02,300 --> 00:08:06,620 Rad ett initierade N till noll, så även om endast en rad av detta 175 00:08:06,620 --> 00:08:10,930 Programmet slutar faktiskt upp att vara användbar, den ger fortfarande rätt svar, som 176 00:08:10,930 --> 00:08:13,780 framgår av den orange noll vid botten. 177 00:08:13,780 --> 00:08:16,300 Men sedan bestämde vi att var typ av en dum algoritm. 178 00:08:16,300 --> 00:08:17,060 Det var ganska långsam. 179 00:08:17,060 --> 00:08:19,720 Visst, kan jag göra två, fyra, sex, åtta, tio, när 180 00:08:19,720 --> 00:08:20,990 räkna människor i ett rum. 181 00:08:20,990 --> 00:08:25,030 >> Så vi tweaked algoritmen, den pseudokod, att säga, nu i linje två, 182 00:08:25,030 --> 00:08:29,710 för varje par av människor i rummet, vidare till, i linje tre, ökning 183 00:08:29,710 --> 00:08:32,200 in av två på varje iteration. 184 00:08:32,200 --> 00:08:35,530 Så det skulle ha fungerat här detta par personer i rummet. 185 00:08:35,530 --> 00:08:38,530 >> Men sedan, om man börjar tänka på detta, och det tar inte lång tid att 186 00:08:38,530 --> 00:08:40,710 inse, vänta en minut det är kommer att bryta, bryter det 187 00:08:40,710 --> 00:08:42,679 på vad enkelt fall? 188 00:08:42,679 --> 00:08:45,500 Om det finns tre personer i rummet eller, mer generellt, när det finns ett 189 00:08:45,500 --> 00:08:47,660 udda antal personer i rum, inklusive en. 190 00:08:47,660 --> 00:08:50,390 Vi skulle missa den personen här eftersom det finns inga sådana par. 191 00:08:50,390 --> 00:08:58,510 Så vi riktar snabbt genom att istället införa vilka ytterligare 192 00:08:58,510 --> 00:09:02,560 programmering konstruktioner till pseudokod. 193 00:09:02,560 --> 00:09:04,955 >> Så ett tillstånd, som kallas vi det, eller en filial. 194 00:09:04,955 --> 00:09:08,420 Och det är tänkt att förmedla, visuellt, det tanken på gren, ett vägskäl 195 00:09:08,420 --> 00:09:11,080 där du kan antingen göra detta eller, kanske, något annat. 196 00:09:11,080 --> 00:09:15,750 Och faktiskt, bemöter vi det här problemet genom att lägga linje 4, genom att säga, egentligen, på 197 00:09:15,750 --> 00:09:20,820 slutet, om en person kvar, sedan gå vidare och räkna dem speciella. 198 00:09:20,820 --> 00:09:24,460 Så du sortera av specialfall dem, så att tala, så att vi nu kan hantera 199 00:09:24,460 --> 00:09:27,810 både ett jämnt antal människor och ett udda antal människor. 200 00:09:27,810 --> 00:09:30,260 >> Nu finns det ett antal olika sätt vi kunde ha uttryckt detta. 201 00:09:30,260 --> 00:09:33,590 Och ärligt talat, jag kunde ha varit ännu mer nit kräsen när det kom till mitt val av 202 00:09:33,590 --> 00:09:35,040 Engelska för pseudokoden. 203 00:09:35,040 --> 00:09:36,970 Men åtminstone den anda av idén förmedlas. 204 00:09:36,970 --> 00:09:40,725 Om du lämnade denna kod till en vän som inte är i CS, eller har aldrig tagit 205 00:09:40,725 --> 00:09:44,560 CS, oddsen är att de kan räkna ut, gett tre personer i rummet, hur man 206 00:09:44,560 --> 00:09:46,870 räkna dem baserade folk på dessa instruktioner. 207 00:09:46,870 --> 00:09:49,920 Och det är allt vi verkligen vill uppnå med pseudokod, på något sätt 208 00:09:49,920 --> 00:09:54,300 standardisera hur vi ska om företräder idéer så att vi kan 209 00:09:54,300 --> 00:09:56,670 börja göra mer komplicerade sak stilla. 210 00:09:56,670 --> 00:09:58,845 >> Så det leder oss då, idag, till faktiska koden. 211 00:09:58,845 --> 00:10:01,950 Vi börjar programmera i dag, om än i en trevlig miljö. 212 00:10:01,950 --> 00:10:05,940 Och då vi övergången mycket snabbt till en mer svårbegripliga syntax, men en som 213 00:10:05,940 --> 00:10:10,340 du ser är i grunden densamma som idéerna kommer se manifesteras med 214 00:10:10,340 --> 00:10:11,990 detta andra språk idag. 215 00:10:11,990 --> 00:10:13,920 Det kommer bara att titta lite annorlunda. 216 00:10:13,920 --> 00:10:16,590 >> Så snarare än att bara ringa detta nummer, jag kommer att vara lite mer exakt 217 00:10:16,590 --> 00:10:20,170 och säger, hädanefter, när du skriver ett program, du skriver källkod. 218 00:10:20,170 --> 00:10:21,990 Det är ungefär som pseudokod. 219 00:10:21,990 --> 00:10:26,540 Men vi får se det är inte typ av löst när det gäller att välja orden 220 00:10:26,540 --> 00:10:27,310 som du använder. 221 00:10:27,310 --> 00:10:31,300 När programmering i ett språk, måste du att använda ord, fraser, 222 00:10:31,300 --> 00:10:36,020 syntax, att andra människor har beslutat utgör 223 00:10:36,020 --> 00:10:37,240 att visst språk. 224 00:10:37,240 --> 00:10:38,510 Så pseudocodes är upp till dig. 225 00:10:38,510 --> 00:10:42,330 En verklig programmeringsspråk som C, som vi så småningom se, är 226 00:10:42,330 --> 00:10:43,590 standardiserat av andra människor. 227 00:10:43,590 --> 00:10:45,590 >> Så hur går vi om att skriva några källkoden? 228 00:10:45,590 --> 00:10:46,810 Jo jag ska gå vidare och göra det. 229 00:10:46,810 --> 00:10:49,100 Jag kommer att gå vidare och öppna upp ett fönster här. 230 00:10:49,100 --> 00:10:50,210 Mer om detta nästa vecka. 231 00:10:50,210 --> 00:10:52,300 Men detta är en enhet som kallas den CS50 apparaten. 232 00:10:52,300 --> 00:10:55,480 Jag kör en mjukvara på min Mac, men du kan göra samma sak 233 00:10:55,480 --> 00:11:00,580 På en Windows-dator, är det som ger mig illusionen kör en annan 234 00:11:00,580 --> 00:11:03,700 operativsystem helt rätt här i ett fönster på min Mac. 235 00:11:03,700 --> 00:11:06,790 Jag har bara fullt skärmad det så att du inte faktiskt se Mac OS just nu. 236 00:11:06,790 --> 00:11:08,340 >> Detta är ett operativsystem heter Linux. 237 00:11:08,340 --> 00:11:09,300 Det är väldigt populärt. 238 00:11:09,300 --> 00:11:10,120 Det är väldigt snabbt. 239 00:11:10,120 --> 00:11:12,950 Det är väldigt fritt, vilket har gjort det mycket övertygande, särskilt i 240 00:11:12,950 --> 00:11:13,970 kommersiella världen. 241 00:11:13,970 --> 00:11:17,200 Och mer om det mot slutet av termin då vi använder Linux ganska lite 242 00:11:17,200 --> 00:11:21,230 för webbprogrammering och hosting av faktiska webbplatser och projekt. 243 00:11:21,230 --> 00:11:24,910 Så nu, vet bara att det är en stationär som är tänkt att se ut vagt 244 00:11:24,910 --> 00:11:26,750 bekant för Windows och Mac OS. 245 00:11:26,750 --> 00:11:29,110 Det finns bara några olika namn och ikoner för saker. 246 00:11:29,110 --> 00:11:32,510 Men detta är den så kallade CS50 apparat, en virtuell maskin som, 247 00:11:32,510 --> 00:11:35,310 börjar nästa vecka, kommer ni kör inne i ett fönster på 248 00:11:35,310 --> 00:11:36,960 din egen Mac eller PC. 249 00:11:36,960 --> 00:11:39,760 >> För idag, kommer jag att öppna upp den enklaste av programmen. 250 00:11:39,760 --> 00:11:41,110 Det kallas gedit. 251 00:11:41,110 --> 00:11:42,565 Och detta är bara en grafisk editor. 252 00:11:42,565 --> 00:11:44,695 Det är ungefär som Microsoft Word, men enklare. 253 00:11:44,695 --> 00:11:47,110 Det är ungefär som text redigera eller anteckningsblock. 254 00:11:47,110 --> 00:11:50,280 Det är bara ett mycket enkelt program med som att skriva ord på skärmen. 255 00:11:50,280 --> 00:11:54,510 Det bara så vad händer att om jag sparar filer som jag skapar när det här programmet 256 00:11:54,510 --> 00:11:59,860 i en särskild anknytning som. c, i stället av. doc eller. xls, eller vad 257 00:11:59,860 --> 00:12:04,190 du är bekant med, kan jag faktiskt skapa program som använder även denna enkla 258 00:12:04,190 --> 00:12:05,130 textredigerare. 259 00:12:05,130 --> 00:12:05,770 >> Så låt mig göra det. 260 00:12:05,770 --> 00:12:09,330 Låt mig gå vidare och spara fil första som hej.c. 261 00:12:09,330 --> 00:12:12,350 Och återigen, denna användargränssnitt kommer bekanta till dig snabbt. 262 00:12:12,350 --> 00:12:14,160 Men för nu, jag skriver bara i ett filnamn. 263 00:12:14,160 --> 00:12:17,410 Jag ska spara den till min John Harvard hemkatalog. 264 00:12:17,410 --> 00:12:20,810 Och nu har jag den här fliken som indikerar Jag är verkligen redigering 265 00:12:20,810 --> 00:12:23,070 en fil som heter hej.c. 266 00:12:23,070 --> 00:12:24,510 Så inget alltför intressant ännu. 267 00:12:24,510 --> 00:12:26,000 >> Och nu kommer det att bli ganska kryptiskt. 268 00:12:26,000 --> 00:12:28,370 Jag kommer att zooma in, precis så det är mer synliga. 269 00:12:28,370 --> 00:12:35,780 Och jag ska börja skriva inkludera stdio.h, int main, tomrum, öppen lockigt 270 00:12:35,780 --> 00:12:40,140 stag, en, två, tre, fyra platser av indrag, print f, för utskrift 271 00:12:40,140 --> 00:12:44,450 något formaterad, citationstecken unquote, "Hello, world" backslash, n, stäng 272 00:12:44,450 --> 00:12:49,640 citationstecken, sluten parentes, semikolon, Ange backsteg, backspace, backspace, 273 00:12:49,640 --> 00:12:52,310 backsteg, stängde klammerparentes - 274 00:12:52,310 --> 00:12:53,350 Jag har programmerat. 275 00:12:53,350 --> 00:12:57,380 >> Okej så detta är en super enkel program, verkligen, det program som 276 00:12:57,380 --> 00:12:59,070 någon börjar programmering med. 277 00:12:59,070 --> 00:13:02,300 Och allt den gör, för all dess komplexitet, är att skriva ut på 278 00:13:02,300 --> 00:13:04,160 skärm, gissa vad? 279 00:13:04,160 --> 00:13:04,910 Hej världen. 280 00:13:04,910 --> 00:13:07,500 Men det är inte tillräckligt precis att skriva ett program. 281 00:13:07,500 --> 00:13:08,155 Så det här är koden. 282 00:13:08,155 --> 00:13:11,300 Detta är källkod i ett språk som kallas c. 283 00:13:11,300 --> 00:13:14,380 Det sparas närvarande i en fil som heter hej.c. 284 00:13:14,380 --> 00:13:16,180 >> Titta nu på botten av skärmen här. 285 00:13:16,180 --> 00:13:17,890 Mer om detta, återigen, i de kommande veckorna. 286 00:13:17,890 --> 00:13:19,570 Men detta är vad vi kallar ett terminalfönster. 287 00:13:19,570 --> 00:13:21,290 Det är en blinkande, svart och vit prompt. 288 00:13:21,290 --> 00:13:24,390 Det är typ av en gammal skola gränssnitt till en dator som i allmänhet inte 289 00:13:24,390 --> 00:13:27,050 använda musen eller annan grafiska element. 290 00:13:27,050 --> 00:13:28,320 Den använder bara tangentbordet. 291 00:13:28,320 --> 00:13:30,970 Och jag kan skriva kommandon vid detta blinkande prompt. 292 00:13:30,970 --> 00:13:33,820 >> Och för dagens ändamål, jag är bara kommer att skriva följande - 293 00:13:33,820 --> 00:13:35,610 gör hej. 294 00:13:35,610 --> 00:13:39,370 Och det programmet gör är bara en program som, i den verkliga världen dessa 295 00:13:39,370 --> 00:13:40,690 dagar, skulle vi dubbelklicka på. 296 00:13:40,690 --> 00:13:44,580 Men i det här gränssnittet för idag, vi kommer att skriva sitt namn på denna prompt. 297 00:13:44,580 --> 00:13:47,980 gör hej är bokstavligen kommer att göra mig ett program som heter hej. 298 00:13:47,980 --> 00:13:51,360 Och det kommer att göra det genom att titta för en fil, bara genom 299 00:13:51,360 --> 00:13:53,460 standard, kallad hej.c. 300 00:13:53,460 --> 00:13:57,260 Det kommer att ta Jag vill ha ett C-program som på grund av hur den här datorn 301 00:13:57,260 --> 00:13:58,230 är konfigurerad. 302 00:13:58,230 --> 00:13:59,550 >> Så jag gå vidare och tryck enter. 303 00:13:59,550 --> 00:14:02,050 Jag ser några kryptiska utgång, men detta kommer att bli alltför 304 00:14:02,050 --> 00:14:03,330 bekant snart. 305 00:14:03,330 --> 00:14:06,870 Detta råkade köra en kompilator, mer om det i ett ögonblick, som kallas klang. 306 00:14:06,870 --> 00:14:09,080 Men nu, jag har bara en annan blinkande prompten. 307 00:14:09,080 --> 00:14:13,060 Och jag kan gå vidare nu och skriv prick slash, för ointressanta skäl som vi kommer 308 00:14:13,060 --> 00:14:14,730 komma tillbaka till nästa vecka - 309 00:14:14,730 --> 00:14:15,910 hej. 310 00:14:15,910 --> 00:14:19,650 >> Så allt detta arbete hittills bara skriva den enklaste av program som, 311 00:14:19,650 --> 00:14:22,640 så fort jag slog in, gör det. 312 00:14:22,640 --> 00:14:24,510 Så jag har skrivit min första programmet. 313 00:14:24,510 --> 00:14:27,500 Så jag medvetet narr på denna mycket enkla program 314 00:14:27,500 --> 00:14:28,540 för ett par anledningar. 315 00:14:28,540 --> 00:14:31,990 Ett, är det svårt att bli upphetsad om att ta en klass om 316 00:14:31,990 --> 00:14:33,430 detta är slutet spelet. 317 00:14:33,430 --> 00:14:37,100 >> Men mer än så, det finns en många distraktioner här uppe. 318 00:14:37,100 --> 00:14:40,640 Första gången du lär dig till programmet, för er mindre bekväm, och 319 00:14:40,640 --> 00:14:43,410 även jag, tillbaka i dag, när jag först såg något så här - du kan typ 320 00:14:43,410 --> 00:14:46,500 av figur som, okej, detta är en utskrift hej världen. 321 00:14:46,500 --> 00:14:47,860 Men det finns så mycket distraktion. 322 00:14:47,860 --> 00:14:52,110 Det finns så mycket syntax på skärmen att det blir i vägen för mycket 323 00:14:52,110 --> 00:14:54,170 enkla, annars enkla, idéer. 324 00:14:54,170 --> 00:14:56,700 >> Så vad vi ska göra i dag är att vi är kommer att lägga undan C och komma 325 00:14:56,700 --> 00:14:57,630 tillbaka till det på måndag. 326 00:14:57,630 --> 00:15:00,860 Och vi kommer att använda ett grafiskt programmeringsspråk som kallas Scratch. 327 00:15:00,860 --> 00:15:04,470 Detta är ett programmeringsspråk, som jag hänvisade till på onsdag, är det som kommer 328 00:15:04,470 --> 00:15:08,870 att tillåta oss att göra samma typ av saker men blundar, för idag, 329 00:15:08,870 --> 00:15:12,270 till klammerparenteser, parenteserna, de semikolon, och alla dessa dumma 330 00:15:12,270 --> 00:15:15,680 distraktioner som kommer i vägen, i denna första dag, i vissa grundläggande, nätt 331 00:15:15,680 --> 00:15:17,230 intressanta idéer. 332 00:15:17,230 --> 00:15:21,350 >> Så mot det slut, kommer jag att gå tillbaka till mitt skrivbord hit och 333 00:15:21,350 --> 00:15:25,890 introducera dig till alternativ till det Programmet, som kommer att se en 334 00:15:25,890 --> 00:15:30,790 little något ljus här. 335 00:15:30,790 --> 00:15:33,930 Det är hur vi ska genomföra det Samma program idag - två pussel 336 00:15:33,930 --> 00:15:37,710 bitar som, när de griper in i varandra och klickade på, kommer att säga till världen, 337 00:15:37,710 --> 00:15:39,000 hallå världen. 338 00:15:39,000 --> 00:15:41,200 >> Så låt oss faktiskt gå dit. 339 00:15:41,200 --> 00:15:44,965 Så jag kommer att gå vidare och öppna en webbplats kallas scratch.mit.edu. 340 00:15:44,965 --> 00:15:47,980 341 00:15:47,980 --> 00:15:52,040 Och detta leder mig till denna hemsida här. 342 00:15:52,040 --> 00:15:54,660 I förväg, jag har loggat in här hemsida och de första problemen som 343 00:15:54,660 --> 00:15:55,910 kommer att gå igenom några av dessa steg. 344 00:15:55,910 --> 00:15:58,930 Jag ska gå vidare och klicka på min scratch mapp här. 345 00:15:58,930 --> 00:16:00,720 >> Och detta kommer att visa mig vissa projekt som jag ve 346 00:16:00,720 --> 00:16:02,570 faktiskt skapas i förväg. 347 00:16:02,570 --> 00:16:05,860 Och det visar sig att denna grafiska programmeringsspråk inte bara går 348 00:16:05,860 --> 00:16:08,480 att låta oss program genom att dra och släppa dessa pusselbitarna, du 349 00:16:08,480 --> 00:16:09,730 inte ens behöver särskild programvara. 350 00:16:09,730 --> 00:16:13,190 Allt är inbäddat i en webbläsare så att du kan göra detta, i teorin, på 351 00:16:13,190 --> 00:16:16,810 dina datorer just nu, som en del av er kan mycket väl vara, utan att ens behöva 352 00:16:16,810 --> 00:16:19,870 programvara som CS50 apparaten, som kommer nästa vecka. 353 00:16:19,870 --> 00:16:24,200 >> Så jag kommer att gå upp till det övre hörnet här och klicka på Skapa. 354 00:16:24,200 --> 00:16:27,840 Och i ett ögonblick jag kommer att få en tom skärm via vilken jag kan börja 355 00:16:27,840 --> 00:16:30,380 programmering i denna grafiska programmering miljö. 356 00:16:30,380 --> 00:16:36,140 Men den här gången, det kommer att bli mycket, mycket enklare att faktiskt göra det. 357 00:16:36,140 --> 00:16:41,560 Så på bara ett ögonblick, då Wi-Fi samarbetar vi nu har den här skärmen. 358 00:16:41,560 --> 00:16:44,870 Så en snabb verbala turné, men jag vågar säga, säkert när du dyka in i 359 00:16:44,870 --> 00:16:46,840 första problemet set, får du hitta allt detta mycket 360 00:16:46,840 --> 00:16:48,315 lättillgänglig och ganska intuitiv. 361 00:16:48,315 --> 00:16:50,900 Men låt oss måla en mental bild för bara ett ögonblick. 362 00:16:50,900 --> 00:16:54,620 >> Så under denna prompt säger save förändringar, är du på väg att se scratch. 363 00:16:54,620 --> 00:16:55,570 Detta är en sprite. 364 00:16:55,570 --> 00:16:56,630 Det är ett tecken. 365 00:16:56,630 --> 00:17:00,740 Och han lever på vad vi kallar ett steg, denna stora vita rektangeln på 366 00:17:00,740 --> 00:17:03,120 som han kan flytta upp, ner, vänster, rätt, och gör, egentligen, 367 00:17:03,120 --> 00:17:04,670 andra typer av åtgärder. 368 00:17:04,670 --> 00:17:08,780 >> Under tiden, i mitten av denna användare gränssnitt, har vi en hel massa 369 00:17:08,780 --> 00:17:09,750 pusselbitar. 370 00:17:09,750 --> 00:17:14,060 Och du kommer att se att de säger saker som flytta 10 steg, vände 15 grader, 371 00:17:14,060 --> 00:17:15,550 punkt i en viss riktning. 372 00:17:15,550 --> 00:17:17,910 Men det finns kategorier av blockerar upp här också. 373 00:17:17,910 --> 00:17:21,410 Så om jag går till utseende, ser du att det finns andra pusselbitar som 374 00:17:21,410 --> 00:17:25,530 tydligen kommer att berätta detta cit till säga hej, att tänka, att visa 375 00:17:25,530 --> 00:17:26,780 själv, gömma sig. 376 00:17:26,780 --> 00:17:30,830 Om jag går ner till Sounds, visar det sig finns det sätt att spela låter som jamar, 377 00:17:30,830 --> 00:17:32,670 att stoppa alla ljud, för att spela en trumma. 378 00:17:32,670 --> 00:17:36,530 >> Så lång historia kort, det finns en hel massa pusselbitar som gör att du 379 00:17:36,530 --> 00:17:40,920 att berätta denna katt, eller valfritt antal andra tecken, hur man gör. 380 00:17:40,920 --> 00:17:43,850 Men för att göra allt detta hända dig behöver för att börja programmera. 381 00:17:43,850 --> 00:17:48,090 Och denna stora vita rutan, eller grå rutan, på höger sida, det är där 382 00:17:48,090 --> 00:17:50,170 Jag ska faktiskt dra och släppa de pusselbitar. 383 00:17:50,170 --> 00:17:54,320 Det är min blank text Fönstret motsvarande. 384 00:17:54,320 --> 00:17:57,070 >> Så jag kommer att gå vidare och klicka Kontroll i mitten. 385 00:17:57,070 --> 00:17:58,540 Eller snarare, låt mig börja upp enligt Events. 386 00:17:58,540 --> 00:18:01,530 Under Evenemang bänk, kommer du att märka en några saker som är medvetet 387 00:18:01,530 --> 00:18:05,240 krökt på toppen på ett sådant sätt att de förmodligen inte kompletterar varandra, inte på 388 00:18:05,240 --> 00:18:06,710 toppen av pusselbitar. 389 00:18:06,710 --> 00:18:10,160 Och det är eftersom de Demark starten av ett program, i början av en 390 00:18:10,160 --> 00:18:11,910 manus, så att säga. 391 00:18:11,910 --> 00:18:16,290 Så om jag går vidare och dra, när grönt flagga klickade hit, och då jag 392 00:18:16,290 --> 00:18:18,060 vill att denna katt att säga något i början. 393 00:18:18,060 --> 00:18:20,510 Så jag kommer att gå under det ser panelen. 394 00:18:20,510 --> 00:18:24,060 Och jag kommer att gå vidare och ta tag i säga hej blocket, och dra och släpp, 395 00:18:24,060 --> 00:18:27,220 och släppa så att den automatiskt låser det. 396 00:18:27,220 --> 00:18:28,640 >> Och sedan märker jag kan Klicka på texten. 397 00:18:28,640 --> 00:18:31,960 Och jag kan åsidosätta det att bli mer specifik gillar, säger, hej världen. 398 00:18:31,960 --> 00:18:36,340 Och nu har vi program som jag hävdar är ekvivalent med att mycket mer 399 00:18:36,340 --> 00:18:39,670 svårbegripliga program jag genomfört i C för en stund sedan. 400 00:18:39,670 --> 00:18:43,130 >> Om jag går över nu till den vänstra sidan, märker att det finns en stor stoppskylt 401 00:18:43,130 --> 00:18:44,520 och en stor grön flagga. 402 00:18:44,520 --> 00:18:46,390 Låt mig zooma in för tydlighetens skull. 403 00:18:46,390 --> 00:18:49,390 Och när jag nu klicka här gröna flaggan, du kan nog gissa vad det här första 404 00:18:49,390 --> 00:18:51,920 Programmet kommer nu att göra. 405 00:18:51,920 --> 00:18:55,420 Så även där vi programmering, men vi faktiskt inte att köra fast 406 00:18:55,420 --> 00:18:58,980 i vissa av dessa syntaktiska, små detaljer. 407 00:18:58,980 --> 00:19:01,120 >> Men låt oss prova något lite mer intressant. 408 00:19:01,120 --> 00:19:04,840 Låt mig gå in i min Scratch mapp här. 409 00:19:04,840 --> 00:19:10,210 Och faktiskt, låt mig så låt mig öppna upp ett separat program här för bara en 410 00:19:10,210 --> 00:19:17,830 ögonblick, Maximera fönstret, Arkiv Öppna, och jag kommer att gå in i dagens 411 00:19:17,830 --> 00:19:18,620 källkatalog. 412 00:19:18,620 --> 00:19:21,660 Som alltid hittar du, dag och framåt, att alla dagens exempel 413 00:19:21,660 --> 00:19:25,225 är tillgängliga inne i kursens hemsida. 414 00:19:25,225 --> 00:19:31,170 >> Och jag ska gå vidare här och plocka upp lite något annorlunda. 415 00:19:31,170 --> 00:19:33,970 Detta här, för vilka Jag behöver en frivillig. 416 00:19:33,970 --> 00:19:36,850 Vem skulle vilja ha en skrivbordslampa idag? 417 00:19:36,850 --> 00:19:40,600 OK, vad sägs om någon lite - är du på slutet? 418 00:19:40,600 --> 00:19:42,124 Kom ner. 419 00:19:42,124 --> 00:19:47,230 Nu, vill du delta, eller bara säga börja med skrivbordslampa? 420 00:19:47,230 --> 00:19:48,190 >> VANESSA: [OHÖRBAR]. 421 00:19:48,190 --> 00:19:48,465 >> DAVID MALAN: OK. 422 00:19:48,465 --> 00:19:49,610 Utmärkt, vad du heter? 423 00:19:49,610 --> 00:19:49,990 Vanessa? 424 00:19:49,990 --> 00:19:50,570 David. 425 00:19:50,570 --> 00:19:51,390 Trevligt att träffas. 426 00:19:51,390 --> 00:19:53,840 Så kom den upp och Vanessas gå att ta kontroll över min 427 00:19:53,840 --> 00:19:55,490 tangentbord för bara ett ögonblick. 428 00:19:55,490 --> 00:19:57,850 Och vad jag har gjort här, bara för tiden är skull, som jag har insett 429 00:19:57,850 --> 00:20:01,070 Wi-Fi var lite långsam, Scratch, den programmering miljö som vi är 430 00:20:01,070 --> 00:20:04,110 användning, kan också laddas ned och kör på den lokala datorn. 431 00:20:04,110 --> 00:20:06,360 Så vad jag gjorde innan föreläsningen, i fall det händer, är jag hämtat 432 00:20:06,360 --> 00:20:09,120 alla filer som vi är på väg att spela med så att de kan köra lite mer 433 00:20:09,120 --> 00:20:10,840 snabbt här på min laptop. 434 00:20:10,840 --> 00:20:13,460 Så det är därför nu ser jag ett Mac-specifika gränssnittet. 435 00:20:13,460 --> 00:20:15,510 >> Så jag kommer att gå vidare och öppna upp denna en. 436 00:20:15,510 --> 00:20:18,400 Jag ska gå vidare nu och helskärm fönstret. 437 00:20:18,400 --> 00:20:21,740 Och som du ser, kan vi mycket snabbt, eftersom detta elev gjorde, en av 438 00:20:21,740 --> 00:20:26,360 era föregångare, går från hallå världen till ett mycket mer övertygande 439 00:20:26,360 --> 00:20:27,020 ansökan. 440 00:20:27,020 --> 00:20:28,180 Så här är instruktionerna. 441 00:20:28,180 --> 00:20:29,500 Åh, och vi har en annan sak. 442 00:20:29,500 --> 00:20:31,640 Jag trodde det skulle vara kul, eftersom, Normalt kommer vi att filma 443 00:20:31,640 --> 00:20:32,440 kameror på detta sätt. 444 00:20:32,440 --> 00:20:34,100 Jag trodde det skulle vara kul om, Vanessa, vi kunde se världen 445 00:20:34,100 --> 00:20:35,120 genom dina ögon. 446 00:20:35,120 --> 00:20:36,670 Så här har vi några Google Glass. 447 00:20:36,670 --> 00:20:39,290 >> [Förvånad flämtar] 448 00:20:39,290 --> 00:20:41,610 >> DAVID MALAN: Vi kommer endast att ge bort skrivbordslampor idag. 449 00:20:41,610 --> 00:20:43,530 >> [SKRATT] 450 00:20:43,530 --> 00:20:45,260 >> Så låt mig cue upp detta. 451 00:20:45,260 --> 00:20:49,340 Okej, så tryck här. 452 00:20:49,340 --> 00:20:51,910 OK, glas, spela in en video. 453 00:20:51,910 --> 00:20:55,700 454 00:20:55,700 --> 00:20:56,950 Okej, Vanessa? 455 00:20:56,950 --> 00:21:00,940 456 00:21:00,940 --> 00:21:05,560 Nu, som en parentes som har fått något att göra med Scratch, om du ser 457 00:21:05,560 --> 00:21:08,540 något uppåt och till höger ser du bokstavlig glas, och du bör 458 00:21:08,540 --> 00:21:09,650 ser lite rektangulärt fönster. 459 00:21:09,650 --> 00:21:11,500 Du bör se alla dina klasskamrater filmas just nu? 460 00:21:11,500 --> 00:21:11,840 Ja. 461 00:21:11,840 --> 00:21:12,340 >> VANESSA: Ja. 462 00:21:12,340 --> 00:21:12,920 >> DAVID MALAN: OK. 463 00:21:12,920 --> 00:21:15,170 Så det är bra. 464 00:21:15,170 --> 00:21:16,660 Vi släpper denna filmen senare. 465 00:21:16,660 --> 00:21:18,460 För nu, vänd din uppmärksamhet till skärmen här. 466 00:21:18,460 --> 00:21:20,990 Och vad din föregångare har gjort är sätta några instruktioner på skärmen 467 00:21:20,990 --> 00:21:22,670 bara genom att använda ett ritprogram. 468 00:21:22,670 --> 00:21:25,040 Så du kommer att, i ett ögonblick, tryck på mellanslagstangenten för att starta. 469 00:21:25,040 --> 00:21:27,790 Och sedan några pusselbitar går att börja röra sig uppåt på skärmen. 470 00:21:27,790 --> 00:21:30,900 Och du vill träffa piltangenterna, precis som i verkliga DDR, i enlighet 471 00:21:30,900 --> 00:21:32,740 med saker kö med dessa pilar. 472 00:21:32,740 --> 00:21:33,020 >> VANESSA: OK. 473 00:21:33,020 --> 00:21:33,800 >> DAVID MALAN: Du har spela här innan. 474 00:21:33,800 --> 00:21:34,140 >> VANESSA: Yeah. 475 00:21:34,140 --> 00:21:37,330 >> DAVID MALAN: Okej, Vanessa, gå vidare och ta bort det. 476 00:21:37,330 --> 00:22:53,082 >> [MUSIK - Kayne WEST, "starkare"] 477 00:22:53,082 --> 00:22:57,080 >> [Applåder] 478 00:22:57,080 --> 00:22:59,750 >> DAVID MALAN: Så låt oss nu ta ett steg från det. 479 00:22:59,750 --> 00:23:01,230 Så klart, det är den avgörande matchen. 480 00:23:01,230 --> 00:23:02,880 Slutet Spelet är inte hej världen. 481 00:23:02,880 --> 00:23:05,520 Men du behöver inte nödvändigtvis göra saker som är så interaktivt. 482 00:23:05,520 --> 00:23:06,810 Du kan också göra animationer. 483 00:23:06,810 --> 00:23:10,790 Så till exempel, en annan av dina efterträdare gjorde detta program här, 484 00:23:10,790 --> 00:23:14,100 som berättar en historia mer än det gör genomfört en lek. 485 00:23:14,100 --> 00:23:19,180 Så låt mig gå vidare och öppna upp här en program i vår samma källa katalog 486 00:23:19,180 --> 00:23:20,300 från och med idag. 487 00:23:20,300 --> 00:23:26,990 Detta ett samtal, och låt oss börja med, en cookie kärlekshistoria. 488 00:23:26,990 --> 00:23:30,750 >> Och att inte göra detta alltför akademisk, men, som du tittar på den här, tror att 489 00:23:30,750 --> 00:23:34,030 själv vilken av dessa enkla programmering begrepp vi har pratat 490 00:23:34,030 --> 00:23:34,630 om hittills - 491 00:23:34,630 --> 00:23:39,250 variabler och loopar och villkor, har din företrädare använder nog bara 492 00:23:39,250 --> 00:23:41,090 att genomföra några av visualiseringar. 493 00:23:41,090 --> 00:23:41,760 Du ser här. 494 00:23:41,760 --> 00:23:44,118 Så jag ger dig en story kaka kärlek. 495 00:23:44,118 --> 00:24:06,030 >> [MUSIK - GREEN DAY, "SEMESTER"] 496 00:24:06,030 --> 00:24:08,022 >> [CRASH] 497 00:24:08,022 --> 00:24:09,272 >> [MUSIK - sköldpaddorna, "Happy Together"] 498 00:24:09,272 --> 00:24:58,328 499 00:24:58,328 --> 00:25:00,560 >> DAVID MALAN: Okej, så där, Vi hade en story kaka kärlek. 500 00:25:00,560 --> 00:25:01,360 Men även där - 501 00:25:01,360 --> 00:25:01,755 >> [Applåder] 502 00:25:01,755 --> 00:25:08,110 >> DAVID MALAN: Okej, även där, tänka på, eftersom dessa hjärtan gick från 503 00:25:08,110 --> 00:25:10,410 botten till toppen av skärmen, Det var faktiskt lite av 504 00:25:10,410 --> 00:25:11,440 slumpmässighet pågår. 505 00:25:11,440 --> 00:25:14,150 Och faktiskt, vi får se att även i enklaste av miljöer, t ex 506 00:25:14,150 --> 00:25:18,180 Scratch, som i C, kan du skapa slumptal, eller illusionen av 507 00:25:18,180 --> 00:25:21,110 slumptal, så att spelet är en lite mer intressant än det kanske 508 00:25:21,110 --> 00:25:23,390 vara om du hade absolut hårdkodade allt. 509 00:25:23,390 --> 00:25:26,360 >> I den rörelse som ni ser, det det finns någon form av respons. 510 00:25:26,360 --> 00:25:28,840 Så snart pepparkakor mannen vidrör pepparkakor kvinnan, hon 511 00:25:28,840 --> 00:25:30,000 verkar röra sig bort. 512 00:25:30,000 --> 00:25:33,580 Och så, i sanning, kan du implementera, i de flesta programmeringsspråk, begreppet 513 00:25:33,580 --> 00:25:38,680 av händelser, där om en hand berör däremot som kan utlösa vissa 514 00:25:38,680 --> 00:25:41,270 av din källkod till faktiskt utför. 515 00:25:41,270 --> 00:25:43,740 Du kan lyssna efter sådant saker på skärmen. 516 00:25:43,740 --> 00:25:47,310 >> Så låt oss ta en snabb tur, då, om några av de byggstenar vi kan använda 517 00:25:47,310 --> 00:25:48,790 att uppnå vissa av dessa mål. 518 00:25:48,790 --> 00:25:51,630 Så här är vad vi ska hädanefter ringa ett uttalande. 519 00:25:51,630 --> 00:25:55,030 Ett uttalande råkar vara lila i Scratch, en liten sak som denna, 520 00:25:55,030 --> 00:25:56,120 men det är godtyckligt. 521 00:25:56,120 --> 00:26:00,140 Ett uttalande är bara en pusselbit eller, mer allmänt, en instruktion, som 522 00:26:00,140 --> 00:26:03,370 talar om för datorn att göra något, ett uttalande. 523 00:26:03,370 --> 00:26:04,680 >> Så här är ett enkelt prov. 524 00:26:04,680 --> 00:26:05,930 Säg hej världen. 525 00:26:05,930 --> 00:26:08,180 En annan kan vara vänta en sekund. 526 00:26:08,180 --> 00:26:10,840 Så här pusselbit, som stöds i Scratch, kommer vi att meddela din 527 00:26:10,840 --> 00:26:13,050 tecken paus för vissa antal sekunder. 528 00:26:13,050 --> 00:26:15,330 Detta är också bara ett uttalande. 529 00:26:15,330 --> 00:26:18,640 >> Här intill har vi en annan mer intressant, lek ljud jamar, och 530 00:26:18,640 --> 00:26:21,480 den lilla pilen betyder att i Scratch, Detta är en rullgardinsmeny. 531 00:26:21,480 --> 00:26:22,590 Så du kan importera ljud. 532 00:26:22,590 --> 00:26:25,095 Du kan spela in ljud och göra andra roliga saker i början. 533 00:26:25,095 --> 00:26:28,450 Och det också, men i slutet av dagen, är bara ett uttalande. 534 00:26:28,450 --> 00:26:31,250 Men nu ska vi införa en mer intressant pjäs, som kallas en 535 00:26:31,250 --> 00:26:32,630 Booleskt uttryck. 536 00:26:32,630 --> 00:26:35,180 Capital B, uppkallad efter en man vid namn Bool. 537 00:26:35,180 --> 00:26:39,500 >> Och ett booleskt uttryck är bara ett pusselbit eller, mer allmänt, en 538 00:26:39,500 --> 00:26:42,980 bit information som är antingen sant eller falskt - 539 00:26:42,980 --> 00:26:45,830 ett eller noll, ja eller nej. 540 00:26:45,830 --> 00:26:48,420 Så det är bara en av dem två motsatser. 541 00:26:48,420 --> 00:26:52,840 Så en sådan booleskt uttryck i värld av Scratch ser ut så här blå 542 00:26:52,840 --> 00:26:53,560 pusselbit. 543 00:26:53,560 --> 00:26:56,735 Och det är att ställa en fråga, mus ner, och som antingen kan vara, av 544 00:26:56,735 --> 00:26:58,430 Naturligtvis, sant eller falskt. 545 00:26:58,430 --> 00:27:01,710 Så med denna pusselbit i Scratch, väl, kommer du att kunna upptäcka om ett 546 00:27:01,710 --> 00:27:05,490 pussel om musen är, i själva verket är hålls nere av den mänskliga interagerande 547 00:27:05,490 --> 00:27:06,550 med ditt program. 548 00:27:06,550 --> 00:27:08,860 >> Den här är lite mer abstrakt, men dessa två vita lådor 549 00:27:08,860 --> 00:27:09,740 är bara för siffror. 550 00:27:09,740 --> 00:27:12,950 Så du kan göra saker som är här nummer mindre än den andra? 551 00:27:12,950 --> 00:27:16,180 Och om så är fallet, kommer Scratch beter ett eller annat sätt. 552 00:27:16,180 --> 00:27:17,505 Detta är en lite mer grafisk. 553 00:27:17,505 --> 00:27:21,840 Det är om spriten, om katten, för exempel, är faktiskt vidrör 554 00:27:21,840 --> 00:27:22,510 muspekaren. 555 00:27:22,510 --> 00:27:25,780 Så om den lilla pilen huvudet svävar över katten, då detta 556 00:27:25,780 --> 00:27:28,030 pusselbit utvärderar till sant. 557 00:27:28,030 --> 00:27:31,870 Det kommer att vara sant, i vilket fall, om man Använd denna booleskt uttryck, eftersom vi kommer 558 00:27:31,870 --> 00:27:36,340 se i ett ögonblick, i en gren, kan du antingen göra detta, eller så kan du göra det, 559 00:27:36,340 --> 00:27:39,940 ungefär som vi hade ett tillstånd som kontrolleras, finns det en mer sista personen 560 00:27:39,940 --> 00:27:40,460 i rummet? 561 00:27:40,460 --> 00:27:42,070 Om så, lägga till en. 562 00:27:42,070 --> 00:27:44,430 Annars, oroa dig inte längre. 563 00:27:44,430 --> 00:27:48,650 >> Så ett booleskt uttryck kan också vara och-ed tillsammans eller eller-ed tillsammans. 564 00:27:48,650 --> 00:27:53,120 Så du kan kombinera booleska uttryck och säger detta och detta måste vara sant för 565 00:27:53,120 --> 00:27:54,710 det hela för att vara sant. 566 00:27:54,710 --> 00:27:56,520 Och här är en mer verklig värld exempel. 567 00:27:56,520 --> 00:28:00,060 Om du har använt CS50 Kurser för att göra kursen shopping, dessa kryssrutor 568 00:28:00,060 --> 00:28:03,520 där, där om du kontrollerar att rutan bredvid till kurser, kommer att säga, ja, 569 00:28:03,520 --> 00:28:07,860 bara visa mig kurser för vilka Q-värdet är 4,5 eller högre. 570 00:28:07,860 --> 00:28:10,610 Om du avmarkerar det, nej, gör inte oroa sig. 571 00:28:10,610 --> 00:28:13,910 Eller på liknande sätt, till höger, fungerar inte Konflikt med kurser jag tar, 572 00:28:13,910 --> 00:28:15,650 som är antingen sant eller falskt. 573 00:28:15,650 --> 00:28:16,715 Det är bara ett booleskt uttryck. 574 00:28:16,715 --> 00:28:20,080 Så hela den här tiden när du har använt webbplatser med kryssrutor, du är bara 575 00:28:20,080 --> 00:28:23,570 växla motsvarande en Boolean uttryck på och av. 576 00:28:23,570 --> 00:28:25,270 >> Så i vilken form använder du dessa? 577 00:28:25,270 --> 00:28:28,820 Tja, i Scratch, vi får se om en stund att det finns förutsättningar att 578 00:28:28,820 --> 00:28:29,560 se ut så här. 579 00:28:29,560 --> 00:28:33,130 Och det är ganska klokt eftersom mycket som i pseudokod, indragen vi 580 00:28:33,130 --> 00:28:38,550 den typ av U-formade pusselbitar, menar att något insidan av att U är 581 00:28:38,550 --> 00:28:41,390 kommer att utföra, eller inte, beroende på var den är. 582 00:28:41,390 --> 00:28:45,310 Så om booleskt uttryck, då vad är inne kommer att få utföras. 583 00:28:45,310 --> 00:28:46,800 >> Samtidigt finns det en if / else blocket. 584 00:28:46,800 --> 00:28:50,320 Så om du vill ha en gren som går här sätt eller att Scratch ger oss det. 585 00:28:50,320 --> 00:28:54,500 Och genom denna logik, nu, även om det pusselbit är alldeles för liten 586 00:28:54,500 --> 00:28:57,400 att kila något annat inne i det, scratch pusselbitar, de är 587 00:28:57,400 --> 00:28:58,150 bara kommer att växa. 588 00:28:58,150 --> 00:29:01,370 När du drar och släpper över något, Det kommer bara att växa för att passa vad det 589 00:29:01,370 --> 00:29:02,510 är du försöker göra. 590 00:29:02,510 --> 00:29:07,230 >> Så vi kan ta två av dessa saker och göra en trevägs vägskäl så 591 00:29:07,230 --> 00:29:11,300 att du antingen göra detta, eller det, eller denna andra sak bara genom att kapsla dem 592 00:29:11,300 --> 00:29:12,070 på det sättet. 593 00:29:12,070 --> 00:29:14,370 Självklart, om du gör det också mycket, börjar det att bli fult. 594 00:29:14,370 --> 00:29:17,660 Men på den punkten, är du faktiskt förmodligen inte programmering mycket väl. 595 00:29:17,660 --> 00:29:20,490 Och så det kommer att vara återkommande tema, också det av stil. 596 00:29:20,490 --> 00:29:22,790 Precis hur bra faktiskt formatera din kod? 597 00:29:22,790 --> 00:29:24,580 Eller hur väl du designa din kod? 598 00:29:24,580 --> 00:29:26,430 Men mer om det i framtiden. 599 00:29:26,430 --> 00:29:27,470 >> Och nu har vi slingor. 600 00:29:27,470 --> 00:29:30,310 Det finns en trevlig forever loop i Scratch vilket betyder bokstavligen att - göra 601 00:29:30,310 --> 00:29:32,710 vad är inne i det här igen, och igen, och igen. 602 00:29:32,710 --> 00:29:35,880 Du kan vara mer konkret och säga, göra följande sak 10 gånger. 603 00:29:35,880 --> 00:29:37,620 Du kan också använda variabler. 604 00:29:37,620 --> 00:29:40,260 Du kan komma med något namn i den Lite ner och säga, ge mig en 605 00:29:40,260 --> 00:29:43,190 variabel som heter n och definieras det är lika med ett visst värde. 606 00:29:43,190 --> 00:29:44,910 Och sedan kan du få funktioner. 607 00:29:44,910 --> 00:29:46,850 Men mer om dem på bara ett ögonblick. 608 00:29:46,850 --> 00:29:49,140 >> Låt mig gå tillbaka till min Scratch gränssnittet. 609 00:29:49,140 --> 00:29:50,970 Och låt mig gå vidare den här gången. 610 00:29:50,970 --> 00:29:56,660 Och låt oss gå vidare och öppna upp, låt oss säga, ett exempel från - 611 00:29:56,660 --> 00:29:58,740 som är lite mer intressant. 612 00:29:58,740 --> 00:30:00,750 Låt mig gå vidare, och, faktiskt, Låt mig bara göra det själv. 613 00:30:00,750 --> 00:30:01,960 Jag behöver inte öppna denna. 614 00:30:01,960 --> 00:30:03,390 Låt mig gå till Arkiv, Nytt. 615 00:30:03,390 --> 00:30:04,740 Jag ska gå till Evenemang. 616 00:30:04,740 --> 00:30:08,460 Jag ska gå till när grön flagg klickade, och jag kommer att gå till Sound. 617 00:30:08,460 --> 00:30:11,590 Och jag kommer att dra och släppa det här pusselbit, spela upp ljud jamar. 618 00:30:11,590 --> 00:30:12,580 Det spärrarna ihop. 619 00:30:12,580 --> 00:30:14,327 Och nu, när jag klickar på den gröna flaggan - 620 00:30:14,327 --> 00:30:16,260 >> [JAMA SOUND] 621 00:30:16,260 --> 00:30:17,500 >> DAVID MALAN: Adorable. 622 00:30:17,500 --> 00:30:21,560 OK, så nu ska vi göra något lite mer logiskt bara för att visa att 623 00:30:21,560 --> 00:30:22,760 Vi kan, för nu. 624 00:30:22,760 --> 00:30:25,550 Jag kommer att låsa detta från den killen. 625 00:30:25,550 --> 00:30:27,000 Jag kommer att gå till Kontrollpanelen. 626 00:30:27,000 --> 00:30:28,770 Och jag ska ta ett villkor. 627 00:30:28,770 --> 00:30:30,600 Så om något då. 628 00:30:30,600 --> 00:30:32,020 Så det är hur det ser ut där. 629 00:30:32,020 --> 00:30:33,890 Så jag behöver ett booleskt uttryck. 630 00:30:33,890 --> 00:30:38,130 Och låt mig gå vidare och säga, låt mig gå till operatörer. 631 00:30:38,130 --> 00:30:40,270 Jag ska göra något lite Mathy, bara för sparkar. 632 00:30:40,270 --> 00:30:43,600 Jag kommer att gå in här och säga, om något är mindre än något annat, 633 00:30:43,600 --> 00:30:45,030 gå vidare och göra något. 634 00:30:45,030 --> 00:30:46,890 Så nu vet du vad, en slumpmässig blocket. 635 00:30:46,890 --> 00:30:51,620 Så märker hur, om jag hovrar över detta sak här, det kommer att knäppa på det. 636 00:30:51,620 --> 00:30:54,090 >> Så nu, varsel, jag börjar att göra något som redan mer logiskt 637 00:30:54,090 --> 00:30:54,650 intressant. 638 00:30:54,650 --> 00:30:59,720 Om ett slumptal mellan 1 och 10 är mindre än, låt oss säga sex. 639 00:30:59,720 --> 00:31:03,670 Om jag väljer sex, som i huvudsak medel, göra följande med 50% 640 00:31:03,670 --> 00:31:03,980 sannolikhet. 641 00:31:03,980 --> 00:31:05,460 Det är som att vända ett mynt. 642 00:31:05,460 --> 00:31:07,330 Nu, kan jag göra något villkorligt. 643 00:31:07,330 --> 00:31:10,800 Och att något jag kommer göra är att spela upp ljudet. 644 00:31:10,800 --> 00:31:14,280 Så nu, när jag klickar på skärmen flagga, det är som att singla slant. 645 00:31:14,280 --> 00:31:14,610 >> [JAMA SOUND] 646 00:31:14,610 --> 00:31:17,160 >> DAVID MALAN: Det var heads eller allt där. 647 00:31:17,160 --> 00:31:17,920 Låt oss göra det igen. 648 00:31:17,920 --> 00:31:18,860 >> [JAMA SOUND] 649 00:31:18,860 --> 00:31:19,790 >> DAVID MALAN: Heads igen. 650 00:31:19,790 --> 00:31:20,280 >> [JAMA SOUND] 651 00:31:20,280 --> 00:31:21,500 >> DAVID MALAN: Heads igen. 652 00:31:21,500 --> 00:31:22,631 Phew, OK. 653 00:31:22,631 --> 00:31:24,720 Svansar den tiden. 654 00:31:24,720 --> 00:31:29,545 Så 50% av tiden, om vi gör detta oändligt lång, kommer vi att få 50% meows 655 00:31:29,545 --> 00:31:32,180 och 50% tystnader. 656 00:31:32,180 --> 00:31:34,850 Så där, bara en grundläggande byggnad block som låter oss göra det. 657 00:31:34,850 --> 00:31:37,710 Men detta är typ av tråkiga att jag har att fortsätta att klicka på den knappen. 658 00:31:37,710 --> 00:31:39,810 Så låt oss bara dra och kasta alla av dem bort. 659 00:31:39,810 --> 00:31:42,270 Om du drar dem till mitten, de ska bara bort sig själva. 660 00:31:42,270 --> 00:31:43,760 >> Låt mig gå upp för att styra. 661 00:31:43,760 --> 00:31:46,060 Låt mig gå evigt. 662 00:31:46,060 --> 00:31:49,952 Och den här gången kommer jag att göra något minorly irriterande. 663 00:31:49,952 --> 00:31:51,560 >> [SKRATT] 664 00:31:51,560 --> 00:31:53,370 >> DAVID MALAN: Och låt mig gå vidare och göra kontroll. 665 00:31:53,370 --> 00:31:57,260 Vänta en sekund, bara så det är inte för rivning. 666 00:31:57,260 --> 00:31:59,870 >> [JAMA SOUND] 667 00:31:59,870 --> 00:32:00,970 >> DAVID MALAN: Det är inte naturligt. 668 00:32:00,970 --> 00:32:01,861 OK. 669 00:32:01,861 --> 00:32:04,510 >> [JAMA SOUND] 670 00:32:04,510 --> 00:32:06,406 >> DAVID MALAN: Och varsel vad, trevligt om Scratch, för de av er som 671 00:32:06,406 --> 00:32:09,210 har tidigare programmering erfarenhet, du behöver inte starta och stoppa. 672 00:32:09,210 --> 00:32:10,060 Du behöver inte kompilera. 673 00:32:10,060 --> 00:32:13,210 Du ändrar bara det, och programmet kommer att anpassa sig dynamiskt. 674 00:32:13,210 --> 00:32:14,620 Så detta blir en lite intressant. 675 00:32:14,620 --> 00:32:16,930 Men låt oss ta det ett steg längre. 676 00:32:16,930 --> 00:32:19,760 Låt mig gå vidare och få bli av det programmet. 677 00:32:19,760 --> 00:32:23,300 >> [JAMA SOUND] 678 00:32:23,300 --> 00:32:25,520 >> DAVID MALAN: Det är vad vi ska kalla en bugg i Scratch. 679 00:32:25,520 --> 00:32:26,770 Han borde inte fortsätta att göra det ljudet. 680 00:32:26,770 --> 00:32:28,340 Så vi ska vi säga till honom att sluta. 681 00:32:28,340 --> 00:32:30,435 Okej, så nu är jag kommer att gå in i - 682 00:32:30,435 --> 00:32:32,180 Jag ska låta MIT veta. 683 00:32:32,180 --> 00:32:35,160 Vi går hit för att för evigt. 684 00:32:35,160 --> 00:32:37,240 Och nu vill jag göra något igen och igen. 685 00:32:37,240 --> 00:32:38,760 Jag kommer att gå in i Kontrollpanelen. 686 00:32:38,760 --> 00:32:41,570 >> Och låt oss se, jag kommer att dra min om tillstånd finns. 687 00:32:41,570 --> 00:32:42,850 Så nu märker logiken. 688 00:32:42,850 --> 00:32:46,430 När den gröna flaggan är tryckt, gör något evigt, utan bara göra det 689 00:32:46,430 --> 00:32:48,890 något om denna andra sak är sant. 690 00:32:48,890 --> 00:32:51,480 Jag ska gå till, låt oss säga, avkänning. 691 00:32:51,480 --> 00:32:54,430 Och jag ska gå vidare och välja röra och släpp den där. 692 00:32:54,430 --> 00:32:55,930 Det är ett booleskt uttryck. 693 00:32:55,930 --> 00:32:57,740 >> Och nu, märker, i detta släpp menyn finns 694 00:32:57,740 --> 00:32:59,050 vissa fördefinierade värden. 695 00:32:59,050 --> 00:33:00,910 Så jag kan säga, du vidrör kanten av skärmen? 696 00:33:00,910 --> 00:33:03,900 Eller är du röra muspekaren, pilen på skärmen? 697 00:33:03,900 --> 00:33:04,620 Så jag ska göra det. 698 00:33:04,620 --> 00:33:08,770 Och i så fall, så jag ska gå framåt och spela upp ljud mjau. 699 00:33:08,770 --> 00:33:11,250 Så nu jag har typ av den början av ett spel - 700 00:33:11,250 --> 00:33:13,110 en bedårande spel. 701 00:33:13,110 --> 00:33:14,060 >> [JAMA SOUND] 702 00:33:14,060 --> 00:33:17,250 >> DAVID MALAN: OK, en bedårande, buggy spel. 703 00:33:17,250 --> 00:33:20,770 Låt mig vänta, låt oss säga, en sekund där. 704 00:33:20,770 --> 00:33:24,910 Nu spela igen, genom att klicka den gröna flaggan. 705 00:33:24,910 --> 00:33:27,860 >> [JAMA SOUND] 706 00:33:27,860 --> 00:33:30,460 >> DAVID MALAN: Så nu är det som petting en katt. 707 00:33:30,460 --> 00:33:31,850 >> [JAMA SOUND] 708 00:33:31,850 --> 00:33:34,460 >> DAVID MALAN: Okej, nu detta en jag gjorde i förväg. 709 00:33:34,460 --> 00:33:39,250 Mycket sent, blir det slags lätt att göra dumma saker. 710 00:33:39,250 --> 00:33:40,240 Så låt mig gå in här. 711 00:33:40,240 --> 00:33:43,720 Låt oss säga, som klappa katten. 712 00:33:43,720 --> 00:33:46,600 Låt oss nu öppna inte klappa katten. 713 00:33:46,600 --> 00:33:48,330 Nu, om vi spelar här, du kan gissa, om du är 714 00:33:48,330 --> 00:33:49,650 tittar på skärmen - 715 00:33:49,650 --> 00:33:51,090 >> [JAMA SOUND] 716 00:33:51,090 --> 00:33:52,170 >> DAVID MALAN: Nu, om jag klappa katten 717 00:33:52,170 --> 00:33:55,420 >> [Lejons rytande] 718 00:33:55,420 --> 00:33:57,260 >> DAVID MALAN: Så egentligen inte klappa katten i det fallet. 719 00:33:57,260 --> 00:34:01,350 Så nu har vi bara ett exempel på ett gren som händer i två riktningar. 720 00:34:01,350 --> 00:34:03,130 Låt mig nu gå vidare och öppna ytterligare en här. 721 00:34:03,130 --> 00:34:07,120 Detta, även bland vår källa kodfiler för dagen. 722 00:34:07,120 --> 00:34:13,199 Så låt mig gå tillbaka till min källa katalog och gå in i, låt oss välja 723 00:34:13,199 --> 00:34:15,610 den här killen här och se vad som är annorlunda. 724 00:34:15,610 --> 00:34:17,449 >> Wow, okej, så nu det blir lite mer komplex. 725 00:34:17,449 --> 00:34:21,300 Och innan vi ser vad den här killen gör, låt oss försöka sluta, från programmet 726 00:34:21,300 --> 00:34:22,219 på den högra sidan. 727 00:34:22,219 --> 00:34:25,590 Och nu scratch tydligt låter oss har flera skript, flera 728 00:34:25,590 --> 00:34:29,730 program som är associerade med en sprite, med ett tecken, och, tydligen, 729 00:34:29,730 --> 00:34:31,760 de är båda kommer att köra i takt. 730 00:34:31,760 --> 00:34:35,570 Eftersom båda dessa program startar med när grön flagg klick, är detta 731 00:34:35,570 --> 00:34:38,650 antyder en mer avancerad ämne, med som vissa av er kanske känner, 732 00:34:38,650 --> 00:34:40,580 känd som gängning, eller multi-threading. 733 00:34:40,580 --> 00:34:44,400 >> Visar sig, lång historia kort, datorer idag kan i princip göra flera 734 00:34:44,400 --> 00:34:45,270 saker samtidigt. 735 00:34:45,270 --> 00:34:48,659 Eller de kan göra en sak i taget så snabbt att du inte ens märker att 736 00:34:48,659 --> 00:34:50,150 det faktiskt gör en sak i taget. 737 00:34:50,150 --> 00:34:53,320 Men för nu, låt oss anta att båda dessa program kommer att köras på 738 00:34:53,320 --> 00:34:54,310 samtidigt. 739 00:34:54,310 --> 00:34:57,350 Och varsel, båda har forever pusselbitar. 740 00:34:57,350 --> 00:35:01,270 Så de båda kommer att hålla igång tills jag träffade röd stoppskylt. 741 00:35:01,270 --> 00:35:02,100 >> Så vad ska de göra? 742 00:35:02,100 --> 00:35:06,030 På vänster sida, jag är tydligen deklarera en variabel som heter dämpad. 743 00:35:06,030 --> 00:35:09,030 Så jag inte kalla det något liknande tråkigt som N. Jag kallade det avstängt detta 744 00:35:09,030 --> 00:35:10,240 tid att förmedla innebörd. 745 00:35:10,240 --> 00:35:11,780 Jag satt det lika med noll. 746 00:35:11,780 --> 00:35:16,200 Låt oss tänka på det som falskt, eller Låt oss tänka på det som False. 747 00:35:16,200 --> 00:35:17,490 >> Nu, för alltid göra följande. 748 00:35:17,490 --> 00:35:23,280 Om tangentbordets mellanslag trycks, sedan om dämpad är lika med noll, 749 00:35:23,280 --> 00:35:25,930 sedan ändra dämpad till lika en. 750 00:35:25,930 --> 00:35:27,580 Else, som dämpat till noll. 751 00:35:27,580 --> 00:35:30,530 Så logiskt, även om det är en helt massa pusselbitar som är 752 00:35:30,530 --> 00:35:33,160 säger bara, när jag slår på mellanslagstangenten, vad ska jag göra för variabeln 753 00:35:33,160 --> 00:35:34,750 kallas avstängt? 754 00:35:34,750 --> 00:35:37,170 Ändra det från ett till noll, eller noll till ett. 755 00:35:37,170 --> 00:35:37,840 Det är allt. 756 00:35:37,840 --> 00:35:40,740 Så det är som att vända en strömbrytare på eller av och minnas, med en 757 00:35:40,740 --> 00:35:42,330 variabel, som jag har gjort det. 758 00:35:42,330 --> 00:35:45,990 >> Under tiden på den högra sidan, i lekmannaspråk, vad är syftet med 759 00:35:45,990 --> 00:35:47,547 skriptet till höger? 760 00:35:47,547 --> 00:35:48,860 >> STUDENT: Att spela sjölejon ljudet. 761 00:35:48,860 --> 00:35:52,500 >> DAVID MALAN: Att spela Sea Lion ljud, om han inte är avstängt, genom 762 00:35:52,500 --> 00:35:53,480 karaktär den variabeln. 763 00:35:53,480 --> 00:35:57,360 Så vi delar staten, så att säga, dela information över dessa två 764 00:35:57,360 --> 00:36:00,540 skript eftersom, märker här, är vi alltid göra följande. 765 00:36:00,540 --> 00:36:04,620 Om avstängt är noll, så om det inte är avstängt - Om avstängt är falskt, sedan spela 766 00:36:04,620 --> 00:36:05,980 Detta sjölejon ljud. 767 00:36:05,980 --> 00:36:09,930 Och tänk dig själv, hi, hi, hi, för två sekunder, vänta en stund, och sedan 768 00:36:09,930 --> 00:36:11,140 kolla igen. 769 00:36:11,140 --> 00:36:15,150 Så om vi går nu över här till vänster, där den här killen är, och slå 770 00:36:15,150 --> 00:36:16,662 gröna flaggan, 771 00:36:16,662 --> 00:36:30,260 >> [SJÖLEJONET SOUND] 772 00:36:30,260 --> 00:36:31,910 >> DAVID MALAN: Vid vilken punkt detta bli riktigt irriterande? 773 00:36:31,910 --> 00:36:33,440 Eftersom detta kommer bara att fortsätta för evigt. 774 00:36:33,440 --> 00:36:36,490 Så ibland, oändliga loopar, så att säga, är avsiktlig. 775 00:36:36,490 --> 00:36:41,140 Men i detta fall, så fort jag tryck på mellanslagstangenten, slutar han. 776 00:36:41,140 --> 00:36:42,800 Nu programmet inte har slutat. 777 00:36:42,800 --> 00:36:44,760 Det är fortfarande körs i dessa slingor. 778 00:36:44,760 --> 00:36:46,540 Men om jag får mellanslagstangenten igen - 779 00:36:46,540 --> 00:36:47,851 >> [SJÖLEJONET SOUND] 780 00:36:47,851 --> 00:36:49,650 >> DAVID MALAN: Han kommer att plocka upp där han slutade. 781 00:36:49,650 --> 00:36:53,240 Så det är ett sätt för oss att göra något om och om igen utan att 782 00:36:53,240 --> 00:36:54,920 tid, bara villkorligt. 783 00:36:54,920 --> 00:36:58,940 Nåväl, när vi ändå är i denna anda av att göra saker om och om igen, låt mig 784 00:36:58,940 --> 00:37:01,370 gå in i ett annat sådant exempel här. 785 00:37:01,370 --> 00:37:04,370 Den här vi kallar räkna får. 786 00:37:04,370 --> 00:37:05,710 >> Och märker vad den här killen gör. 787 00:37:05,710 --> 00:37:08,540 Det är faktiskt lite mer som pseudokod vi spelade med på 788 00:37:08,540 --> 00:37:12,230 Onsdag, varvid han ställer vissa räknare, tänker på det som N igen, till 789 00:37:12,230 --> 00:37:14,030 noll, gör han alltid följande. 790 00:37:14,030 --> 00:37:17,960 Han säger räknarens värde för en andra, väntar en sekund, och sedan 791 00:37:17,960 --> 00:37:19,430 ändrar räknaren med ett. 792 00:37:19,430 --> 00:37:21,570 Och i detta sammanhang, som bara innebär steg det. 793 00:37:21,570 --> 00:37:23,250 Så tillägger han en till det. 794 00:37:23,250 --> 00:37:25,830 Så detta är bokstavligen - 795 00:37:25,830 --> 00:37:27,890 det är inte riktigt vad vi tycker av så räkna får. 796 00:37:27,890 --> 00:37:33,120 Det är fåren gör rösträkningen, evigt, upp från noll. 797 00:37:33,120 --> 00:37:35,560 >> Så vi kan göra liknande saker det, logiskt. 798 00:37:35,560 --> 00:37:37,750 Men nu ska vi försöka att rengöra några av dessa saker upp. 799 00:37:37,750 --> 00:37:43,440 Låt mig gå vidare nu till en enkel exempel där vår katt är bara att 800 00:37:43,440 --> 00:37:44,750 börja hosta. 801 00:37:44,750 --> 00:37:48,830 Okej, så här har vi hosta 0 - 802 00:37:48,830 --> 00:37:50,685 datavetare startar räkna från 0. 803 00:37:50,685 --> 00:37:53,480 Så här katten är bara att gå att hosta tre gånger. 804 00:37:53,480 --> 00:37:54,890 Och här är hur jag genomfört det. 805 00:37:54,890 --> 00:38:00,130 När gröna flaggan är tryckt, hosta, vänta, hosta, vänta, hosta, vänta. 806 00:38:00,130 --> 00:38:02,470 Och jag gjorde detta genom att bara dra och släppa pusselbitarna. 807 00:38:02,470 --> 00:38:04,740 Eller om du börjar mixtra med Scratch, ser du att du faktiskt kan 808 00:38:04,740 --> 00:38:08,620 duplicera bitar så att du kan göra saker snabbare utan att dra 809 00:38:08,620 --> 00:38:10,310 och släppa till leda. 810 00:38:10,310 --> 00:38:12,680 >> Men vi är inte på den bästa vägen här. 811 00:38:12,680 --> 00:38:15,210 För hur gör jag honom hosta en fjärde gång? 812 00:38:15,210 --> 00:38:16,790 Tja, jag kunde sortera på gå ner hit. 813 00:38:16,790 --> 00:38:19,420 Jag kunde duplicera och sedan klistra in det. 814 00:38:19,420 --> 00:38:21,740 Hur gör jag honom hosta en femte gång? 815 00:38:21,740 --> 00:38:23,230 Tja, kopiera och klistra in igen. 816 00:38:23,230 --> 00:38:24,210 Eller dra släpp igen. 817 00:38:24,210 --> 00:38:26,920 Och mycket snabbt, börjar detta program att bli riktigt, riktigt överflödig, 818 00:38:26,920 --> 00:38:28,880 riktigt lång, men egentligen ointressant. 819 00:38:28,880 --> 00:38:30,120 Men det finns ett sätt att städa upp detta. 820 00:38:30,120 --> 00:38:33,680 Vad är det självklara sättet att städa upp detta? 821 00:38:33,680 --> 00:38:36,280 >> OK, så vi kunde faktiskt verkligen gå ut och, när du träffar utrymme 822 00:38:36,280 --> 00:38:37,070 bar, ha honom hosta. 823 00:38:37,070 --> 00:38:40,150 Men om jag bara vill göra något repetitivt, minns att vi har 824 00:38:40,150 --> 00:38:41,310 viss kontroll konstruktioner. 825 00:38:41,310 --> 00:38:43,800 Låt mig gå ut ur vägen, gå under kontroll. 826 00:38:43,800 --> 00:38:47,340 Låt mig bara göra en upprepning, säga, tre gånger. 827 00:38:47,340 --> 00:38:49,410 Och nu vill jag stjäla några av dessa pusselbitar. 828 00:38:49,410 --> 00:38:50,980 Låt mig knäppa detta här. 829 00:38:50,980 --> 00:38:52,400 Låt mig kasta dessa bort helt och hållet. 830 00:38:52,400 --> 00:38:55,400 >> Och nu har jag en bättre utformat program. 831 00:38:55,400 --> 00:38:55,920 Varför? 832 00:38:55,920 --> 00:39:00,540 Om jag vill ändra antalet gånger Denna katt hostar, allt jag har att 833 00:39:00,540 --> 00:39:05,640 göra är att ändra en variabel, eller ett värde, snarare från tre till fyra, eller 834 00:39:05,640 --> 00:39:06,700 fem eller sex. 835 00:39:06,700 --> 00:39:09,060 Eller jag kunde göra någonting villkorligt, även, med utrymmet 836 00:39:09,060 --> 00:39:10,320 bar om jag ville. 837 00:39:10,320 --> 00:39:11,780 >> Så detta är en allmän princip. 838 00:39:11,780 --> 00:39:14,950 När du börjar kopiera och klistra in koden, oavsett om det är i början, eller i 839 00:39:14,950 --> 00:39:18,340 C, du gör något fel, mest troligt. 840 00:39:18,340 --> 00:39:21,950 Eller åtminstone, när du har överskridit vissa rimligt antal kopior och 841 00:39:21,950 --> 00:39:24,610 pastor, är du förmodligen gör något fel. 842 00:39:24,610 --> 00:39:26,740 >> Men vet du vad? 843 00:39:26,740 --> 00:39:27,590 Jag gillar inte det här. 844 00:39:27,590 --> 00:39:28,980 Detta är inte den renaste designen. 845 00:39:28,980 --> 00:39:32,860 Jag önskar att det fanns en pusselbit kallas hosta för då skulle jag inte 846 00:39:32,860 --> 00:39:36,100 måste genomföra detta själv, på gammaldags sätt, genom 847 00:39:36,100 --> 00:39:38,220 har att säga, och vänta - 848 00:39:38,220 --> 00:39:40,320 Tänk om de bara var en hosta pusselbit. 849 00:39:40,320 --> 00:39:41,330 >> Tja, kan jag faktiskt göra det. 850 00:39:41,330 --> 00:39:45,010 Låt mig gå under fler block, klicka på Gör ett block, och nu får jag detta 851 00:39:45,010 --> 00:39:45,610 fönster här. 852 00:39:45,610 --> 00:39:47,540 Jag kommer att kalla denna sak hosta. 853 00:39:47,540 --> 00:39:49,400 Jag ska gå vidare och klicka på OK. 854 00:39:49,400 --> 00:39:53,150 Och nu varsel, får jag en ny start pjäs som är böjd på toppen. 855 00:39:53,150 --> 00:39:56,590 Och vad jag ska göra med detta, är jag kommer att bara stjäla dessa block. 856 00:39:56,590 --> 00:39:57,800 Jag ska sätta dem här. 857 00:39:57,800 --> 00:40:00,490 >> Och nu, med dessa tre stycken, har jag genomfört vad jag ska ringa en 858 00:40:00,490 --> 00:40:03,530 funktionen, eller ett förfarande, eller vissa av du kanske känner det som en metod. 859 00:40:03,530 --> 00:40:05,050 Små skillnader mellan orden. 860 00:40:05,050 --> 00:40:06,950 Men för nu, låt oss bara kalla detta en funktion. 861 00:40:06,950 --> 00:40:08,750 Detta är bara en ny pusselbit. 862 00:40:08,750 --> 00:40:11,000 Nu genomförs så här. 863 00:40:11,000 --> 00:40:15,170 >> Men märker att Scratch har gett oss en fysisk representation av det hela 864 00:40:15,170 --> 00:40:16,570 blockera hit. 865 00:40:16,570 --> 00:40:21,930 Så nu kan jag bara dra det över här, säga, upprepa tre gånger, och 866 00:40:21,930 --> 00:40:26,420 vad som kommer att hända nu, när jag spelar detta script, är bara ett program 867 00:40:26,420 --> 00:40:27,500 körs åt gången. 868 00:40:27,500 --> 00:40:29,880 Det finns bara en då grön flagga klickade. 869 00:40:29,880 --> 00:40:34,010 Men det lila blocket kallas hosta är effektivt träffande Scratch, varje 870 00:40:34,010 --> 00:40:38,160 gång du ser att pusselbit, faktiskt utföra dessa steg som jag 871 00:40:38,160 --> 00:40:40,420 hända att genomföra manuellt. 872 00:40:40,420 --> 00:40:41,410 >> Så det är ganska snyggt. 873 00:40:41,410 --> 00:40:44,650 Men nu, antar att jag bestämde, jag gör inte vill att denna katt bara att hosta. 874 00:40:44,650 --> 00:40:46,660 Jag vill att han ska kunna att nysa också. 875 00:40:46,660 --> 00:40:48,905 Nå, hur skulle vi gå om genomförande nysning? 876 00:40:48,905 --> 00:40:51,310 Jo jag kunde ganska mycket göra samma sak. 877 00:40:51,310 --> 00:40:52,690 Jag kunde göra annat block. 878 00:40:52,690 --> 00:40:55,940 Jag skulle kalla detta nysning, klickar du på OK. 879 00:40:55,940 --> 00:40:59,250 >> Då, här kunde jag faktiskt ha, låt mig duplicera detta - 880 00:40:59,250 --> 00:41:02,850 och det är där du ska känna sig som du förmodligen inte göra något i 881 00:41:02,850 --> 00:41:03,780 på bästa sätt. 882 00:41:03,780 --> 00:41:06,670 Jag skulle kunna säga något i stil med, achoo, under en sekund. 883 00:41:06,670 --> 00:41:07,440 Vänta en sekund. 884 00:41:07,440 --> 00:41:08,715 Nu har jag ett nytt block som heter nysa. 885 00:41:08,715 --> 00:41:10,210 Och ja, det är det. 886 00:41:10,210 --> 00:41:14,010 >> Men även detta borde börja känna - kanske inte den första veckan i klassen, men 887 00:41:14,010 --> 00:41:15,730 av den andra - bara lite överflödig. 888 00:41:15,730 --> 00:41:17,800 Klart det finns viss redundans här. 889 00:41:17,800 --> 00:41:22,090 Så låt mig föreslå istället att vi förfina denna definition enligt följande. 890 00:41:22,090 --> 00:41:24,820 >> Låt mig gå upp till min fil menyn. 891 00:41:24,820 --> 00:41:26,090 Jag kommer inte att spara den här versionen. 892 00:41:26,090 --> 00:41:29,080 Jag kommer att gå in i en av mina premade filer här. 893 00:41:29,080 --> 00:41:31,190 Och jag ska gå vidare och öppna upp hosta 2. 894 00:41:31,190 --> 00:41:32,220 Hoppsan det var hosta 2. 895 00:41:32,220 --> 00:41:36,900 Låt mig gå vidare och öppna upp hosta 3, vilket är denna källa katalogen. 896 00:41:36,900 --> 00:41:42,450 Hosta 3 och märker - Åh, sa jag berättelsen i fel ordning. 897 00:41:42,450 --> 00:41:45,030 Låt mig återhämta sig från denna historia. 898 00:41:45,030 --> 00:41:48,990 >> Berättelsen jag tänkt att berätta ändar med hosta 4 - 899 00:41:48,990 --> 00:41:50,270 det är det. 900 00:41:50,270 --> 00:41:54,380 Så vad händer om jag istället definiera en större pusselbit kallas 901 00:41:54,380 --> 00:41:57,250 definiera, säger ordet n gånger. 902 00:41:57,250 --> 00:41:59,930 Nysningar är precis, som synes, i Scratch, Achoo. 903 00:41:59,930 --> 00:42:01,680 Så vi uttrycka det som ett ord, bara för att det är 904 00:42:01,680 --> 00:42:02,750 begränsning av programmet. 905 00:42:02,750 --> 00:42:07,860 Och en hosta är [COUGH], men hosta, C-O-U-G-H. Så det är bara två 906 00:42:07,860 --> 00:42:10,820 olika ord gör, i huvudsak, samma sak. 907 00:42:10,820 --> 00:42:12,820 >> Så jag kan egentligen göra en nytt block som denna. 908 00:42:12,820 --> 00:42:14,220 Jag använde inte detta menyalternativ innan. 909 00:42:14,220 --> 00:42:16,960 Men när du klickar på Gör Block, Du kan välja vissa alternativ. 910 00:42:16,960 --> 00:42:20,900 Och du kan säga att detta block faktiskt tar några ingångar, annars 911 00:42:20,900 --> 00:42:24,710 känd som argument, eller parametrar, så att du kan ändra beteende för 912 00:42:24,710 --> 00:42:25,520 ditt kvarter. 913 00:42:25,520 --> 00:42:28,780 >> Så vad jag gjorde för en stund sedan var Jag kallade detta block Berätta. 914 00:42:28,780 --> 00:42:30,880 Och då sa jag, det tar en sträng ingång. 915 00:42:30,880 --> 00:42:32,810 Och nu märker, som standard, Det säger sträng 1. 916 00:42:32,810 --> 00:42:35,440 En sträng är bara ett ord, eller en fras, för våra ändamål. 917 00:42:35,440 --> 00:42:37,810 Men jag ska bara sätta några platshållartext där, precis som i en 918 00:42:37,810 --> 00:42:40,620 hemsida, när du ser användarnamn, eller lösenord, och sedan försvinner när 919 00:42:40,620 --> 00:42:41,550 du börjar skriva. 920 00:42:41,550 --> 00:42:42,720 Det är allt som är. 921 00:42:42,720 --> 00:42:44,590 >> Och nu ska jag lägga till ett nummer ingång. 922 00:42:44,590 --> 00:42:47,180 Och jag kommer att kalla denna N - men det är ganska godtyckligt. 923 00:42:47,180 --> 00:42:49,510 Och sedan bara en etikett, för att bara göra detta block lite mer själv 924 00:42:49,510 --> 00:42:50,570 förklarande - 925 00:42:50,570 --> 00:42:53,010 gånger, det är vad jag just gjorde. 926 00:42:53,010 --> 00:42:56,540 Och slutresultatet är att jag får ett block som ser ut så här. 927 00:42:56,540 --> 00:42:58,880 >> Och nu märker, jag använder en upprepning blocket. 928 00:42:58,880 --> 00:43:03,480 Men snarare än hård kodning tre, jag dra och släppa n på det så jag 929 00:43:03,480 --> 00:43:05,530 kan parametrisera funktionen. 930 00:43:05,530 --> 00:43:08,590 Jag kan göra denna funktion gör något ett annat antal gånger baserat på 931 00:43:08,590 --> 00:43:09,410 det värdet. 932 00:43:09,410 --> 00:43:14,270 >> Och märker, säger, detta är vad jag gjorde här, om jag drar ord, kan jag inte säga ett 933 00:43:14,270 --> 00:43:17,860 hårdkodade ord, men oavsett leds i under en sekund. 934 00:43:17,860 --> 00:43:20,200 Under tiden, hur jag ånyo verkställa hosta? 935 00:43:20,200 --> 00:43:26,980 Jag definierar istället hosta som säger hosta n gånger. 936 00:43:26,980 --> 00:43:30,480 >> Så kort sagt, jag går igenom detta snabbt, men den grundläggande idén är snarast 937 00:43:30,480 --> 00:43:32,750 när du börjar se i ditt program att, vänta lite, jag har gjort 938 00:43:32,750 --> 00:43:36,610 något ganska så här innan, kan jag räkna ut några vanliga 939 00:43:36,610 --> 00:43:37,090 funktionalitet? 940 00:43:37,090 --> 00:43:41,090 Kan jag bryta ner vad jag gör in några grundläggande idéer? 941 00:43:41,090 --> 00:43:42,070 Det är vad vi gör här. 942 00:43:42,070 --> 00:43:44,830 Och jag har staplat de här sakerna, visuellt, ovanpå varandra 943 00:43:44,830 --> 00:43:47,710 eftersom det är ett bevis på att idén om börjar med binära, gå till ASCII, 944 00:43:47,710 --> 00:43:51,530 göra grafiska program, typ av skiktning alltmer komplexa idéer om 945 00:43:51,530 --> 00:43:52,570 ovanpå varandra. 946 00:43:52,570 --> 00:43:53,730 >> Samma idé här. 947 00:43:53,730 --> 00:43:56,870 Jag startade från noll, genomföra hosta, sedan insåg hosta är 948 00:43:56,870 --> 00:43:58,540 egentligen bara säga något. 949 00:43:58,540 --> 00:44:01,630 Så låt mig istället genomföra begreppet säger något. 950 00:44:01,630 --> 00:44:05,200 Och på toppen av det, kan jag genomföra achoo, eller hosta? 951 00:44:05,200 --> 00:44:07,990 Och vi kunde göra mer sådant varianter fortfarande. 952 00:44:07,990 --> 00:44:10,400 >> Så från denna grundläggande princip, vi kan börja göra 953 00:44:10,400 --> 00:44:12,180 allt mer komplexa program. 954 00:44:12,180 --> 00:44:14,100 Låt mig öppna upp den här. 955 00:44:14,100 --> 00:44:18,020 Vi kan faktiskt ha flera sprites interagera på skärmen samtidigt. 956 00:44:18,020 --> 00:44:23,470 Om jag går in i min källa katalog och ta en kallas Trådar, minns att en 957 00:44:23,470 --> 00:44:26,920 tråden är bara riktigt förmågan av två skript körs sida vid 958 00:44:26,920 --> 00:44:28,350 sida på samma gång. 959 00:44:28,350 --> 00:44:34,490 >> Lägg märke till nu, har båda en fågel sprite och en katt sprite, som båda har 960 00:44:34,490 --> 00:44:35,270 sina egna manus. 961 00:44:35,270 --> 00:44:37,690 Så varsel, när jag klickar på katt, får jag dessa skript. 962 00:44:37,690 --> 00:44:39,830 När jag klickar på fågeln, Jag får dessa skript. 963 00:44:39,830 --> 00:44:42,070 Så var och en av dessa killar har sina egna program. 964 00:44:42,070 --> 00:44:46,680 När jag nu klicka på den gröna flaggan, märker att vad detta program gör är 965 00:44:46,680 --> 00:44:54,090 har katten, otroligt långsamt, jaga fågeln. 966 00:44:54,090 --> 00:44:57,120 Men katten har fördelen av att ha har programmerats på ett sådant sätt 967 00:44:57,120 --> 00:45:00,540 att oavsett var fågeln är, går katten mot honom. 968 00:45:00,540 --> 00:45:02,150 >> Vi kan spela det spelet mycket snabbare. 969 00:45:02,150 --> 00:45:07,750 Så om jag är på katten, märker att jag är hjälp, låt oss säga flytta ett steg. 970 00:45:07,750 --> 00:45:11,680 Vi har honom att flytta fem steg vid en tid, så fem punkter i taget. 971 00:45:11,680 --> 00:45:13,580 Låt mig klickar på play. 972 00:45:13,580 --> 00:45:14,490 >> [Lejons rytande] 973 00:45:14,490 --> 00:45:17,170 >> DAVID MALAN: Okej, nu kan vi verkligen ge katten fördel. 974 00:45:17,170 --> 00:45:18,600 10 steg i taget. 975 00:45:18,600 --> 00:45:20,120 >> [Lejons rytande] 976 00:45:20,120 --> 00:45:22,770 >> DAVID MALAN: Okej, så mycket snabbt, det blir en liten fördel 977 00:45:22,770 --> 00:45:23,280 för katten. 978 00:45:23,280 --> 00:45:25,310 Men jag ska vinka min hand på några av detaljerna. 979 00:45:25,310 --> 00:45:28,240 Men skälet till att den vägen är starta lite olika varje gång 980 00:45:28,240 --> 00:45:29,700 är att jag gör lite av slumpmässighet. 981 00:45:29,700 --> 00:45:33,700 Jag är faktiskt pekar katten i en annan riktning beroende på var jag 982 00:45:33,700 --> 00:45:38,710 vill att han ska börja så att varje gång spelet, eller animeringen är en 983 00:45:38,710 --> 00:45:39,760 lite annorlunda. 984 00:45:39,760 --> 00:45:41,950 >> Nu, låt mig presentera en andra konstruktionen här. 985 00:45:41,950 --> 00:45:43,860 Så i det här fallet hade vi fungerar. 986 00:45:43,860 --> 00:45:46,950 Det är också att vara en pusselbit känd som en array, eller en lista, 987 00:45:46,950 --> 00:45:50,980 som gör att du kan lagra flera värden inne i en variabel. 988 00:45:50,980 --> 00:45:53,410 Vi såg trådar, och nu Det finns händelser. 989 00:45:53,410 --> 00:45:56,330 >> Så här är en händelse med dessa två killar här. 990 00:45:56,330 --> 00:46:02,490 Och om jag öppnar upp filen som heter Händelser från dagens exempel, kommer vi 991 00:46:02,490 --> 00:46:06,940 se ett program som ser lite såhär. 992 00:46:06,940 --> 00:46:09,630 Och nu märker den här killen - 993 00:46:09,630 --> 00:46:11,620 så märker jag ha den blå Muppet klickade - 994 00:46:11,620 --> 00:46:12,990 han gör bara följande. 995 00:46:12,990 --> 00:46:15,540 Han har inte en av dem grön flagg pusselbitar. 996 00:46:15,540 --> 00:46:18,620 Han har en när jag får händelsen - 997 00:46:18,620 --> 00:46:19,970 så några godtyckliga ord. 998 00:46:19,970 --> 00:46:21,590 Jag skrev bara ut händelsen där - 999 00:46:21,590 --> 00:46:23,740 Han kommer att säga, Polo, i två sekunder. 1000 00:46:23,740 --> 00:46:25,800 >> Så de av er som är bekanta med detta spel kanske vet 1001 00:46:25,800 --> 00:46:26,460 om detta kommer. 1002 00:46:26,460 --> 00:46:29,800 Om jag nu klicka på den orange Muppet, hans program gör detta. 1003 00:46:29,800 --> 00:46:35,020 Forever, om tangentbordet mellanslagstangenten undertrycks, kommer han att säga, Marco, 1004 00:46:35,020 --> 00:46:36,580 i två sekunder på skärmen. 1005 00:46:36,580 --> 00:46:39,590 Men han kommer också att använda detta snyggare blockera kallas broadcast. 1006 00:46:39,590 --> 00:46:42,270 Han kommer att sända citat unquote, "händelse." 1007 00:46:42,270 --> 00:46:47,540 >> Samtidigt är den blå killen, minns, lyssna för offert unquote, "händelse." 1008 00:46:47,540 --> 00:46:50,760 Så på något sätt, nu kan vi ha två sprites interagera. 1009 00:46:50,760 --> 00:46:53,790 Och när vi kommer till webbprogrammering, senare på sikt, på samma sätt kommer detta 1010 00:46:53,790 --> 00:46:58,320 vara fördelaktigt att ha din hemsida göra något som svar på, till 1011 00:46:58,320 --> 00:47:00,130 exempel, ett klick på tangentbordet. 1012 00:47:00,130 --> 00:47:02,120 >> Så låt mig gå vidare och tryck på mellanslagstangenten. 1013 00:47:02,120 --> 00:47:04,020 Orange kille säger Marco. 1014 00:47:04,020 --> 00:47:05,840 Blue kille säger Polo. 1015 00:47:05,840 --> 00:47:10,780 Om jag gör det igen apelsin kille säger Marco, säger blå kille polo. 1016 00:47:10,780 --> 00:47:14,130 Så låt oss ta detta ett steg längre. 1017 00:47:14,130 --> 00:47:18,790 Denna gång ska vi gå, förmodligen, bara några minuter här. 1018 00:47:18,790 --> 00:47:19,904 Har vi - 1019 00:47:19,904 --> 00:47:22,380 skrivbordslampa, kom ner. 1020 00:47:22,380 --> 00:47:24,500 Du är rätt på slutet. 1021 00:47:24,500 --> 00:47:25,740 OK, kan du både komma upp. 1022 00:47:25,740 --> 00:47:26,990 Vi har skrivbordslampor för alla. 1023 00:47:26,990 --> 00:47:28,360 Kom igen. 1024 00:47:28,360 --> 00:47:30,090 Jag vet inte om vi kan hålla denna löjliga gag upp 1025 00:47:30,090 --> 00:47:32,035 hela terminen, men. 1026 00:47:32,035 --> 00:47:33,530 Okej, kom ner. 1027 00:47:33,530 --> 00:47:40,260 >> Och under tiden har vi följande exempel för att dra upp, bara för att 1028 00:47:40,260 --> 00:47:45,370 påskynda saker nu, så att vi har en manifestation från en annan 1029 00:47:45,370 --> 00:47:48,360 föregångare till dig som använder samma grundläggande byggstenar. 1030 00:47:48,360 --> 00:47:48,975 Vad är ditt namn? 1031 00:47:48,975 --> 00:47:49,240 >> JOHN: John. 1032 00:47:49,240 --> 00:47:49,770 >> DAVID MALAN: John. 1033 00:47:49,770 --> 00:47:50,400 Snäll mot mig dig. 1034 00:47:50,400 --> 00:47:50,650 Och? 1035 00:47:50,650 --> 00:47:51,250 >> Setz: Setz. 1036 00:47:51,250 --> 00:47:53,130 >> DAVID MALAN: Setz, snäll mot mig dig. 1037 00:47:53,130 --> 00:47:54,820 John, om du skulle vilja komma upp först, detta är en gammal 1038 00:47:54,820 --> 00:47:55,910 skola spel som heter Frogger. 1039 00:47:55,910 --> 00:47:57,530 Du använder tangentbordet för detta också. 1040 00:47:57,530 --> 00:48:02,425 Och målet är att komma över gatan och vatten. 1041 00:48:02,425 --> 00:48:12,700 >> [FROGGER MUSIK OCH Spelar ljud] 1042 00:48:12,700 --> 00:48:14,970 >> DAVID MALAN: Jag är ledsen, ingen skrivbordslampa för dig idag. 1043 00:48:14,970 --> 00:48:19,110 Okej, Setz, skulle du vilja komma vidare upp? 1044 00:48:19,110 --> 00:48:20,890 Okej, låt oss göra det igen. 1045 00:48:20,890 --> 00:48:21,430 >> Setz: Använder jag pilarna? 1046 00:48:21,430 --> 00:48:22,360 >> DAVID MALAN: Bara piltangenterna. 1047 00:48:22,360 --> 00:48:23,624 Upp, ner, vänster, höger. 1048 00:48:23,624 --> 00:48:35,700 >> [FROGGER MUSIK OCH Spelar ljud] 1049 00:48:35,700 --> 00:48:37,880 >> DAVID MALAN: Vi kallar dem tröstpris idag, 1050 00:48:37,880 --> 00:48:38,950 då, mycket bra gjort. 1051 00:48:38,950 --> 00:48:40,690 Här, för er båda, John och Setz. 1052 00:48:40,690 --> 00:48:41,940 Grattis, okej. 1053 00:48:41,940 --> 00:48:46,720 1054 00:48:46,720 --> 00:48:50,620 Så återigen, eftersom detta spel spelas, tänka på vad som händer? 1055 00:48:50,620 --> 00:48:52,060 >> Ett, det finns helt klart en hel del motion. 1056 00:48:52,060 --> 00:48:55,220 Men vi har sett hur, med katten och fågel exempel hur du kan göra 1057 00:48:55,220 --> 00:48:58,350 illusion av rörelse genom att bara flytta några antalet pixlar och om igen. 1058 00:48:58,350 --> 00:49:00,280 Och om du har ett evigt kvarter, du kan ha dessa 1059 00:49:00,280 --> 00:49:02,120 bilar gör detta för alltid. 1060 00:49:02,120 --> 00:49:03,720 Vi har förmågan att ha viss slumpmässighet. 1061 00:49:03,720 --> 00:49:06,310 Så detta spel inte behöver vara exakt samma varje gång. 1062 00:49:06,310 --> 00:49:09,940 Dessa stockar, dessa bilar, kan börja på något olika tidpunkter, så att 1063 00:49:09,940 --> 00:49:12,690 Spelet i sig är mer intressant med varje spel. 1064 00:49:12,690 --> 00:49:15,320 >> Och tiden har vi sett möjligheten att lyssna på mellanslagstangenten. 1065 00:49:15,320 --> 00:49:18,830 Men helt klart, i grunden, kan du också lyssna för upp, ner, vänster, höger, och 1066 00:49:18,830 --> 00:49:20,760 verkligen någon tangent på tangentbordet. 1067 00:49:20,760 --> 00:49:22,200 Och du kan också göra en del andra saker. 1068 00:49:22,200 --> 00:49:24,660 Låt mig gå vidare och gå tillbaka till webbversionen. 1069 00:49:24,660 --> 00:49:30,280 >> Låt mig gå in i vår samling av exempel här. 1070 00:49:30,280 --> 00:49:36,120 Och enligt min studio, video som är i huvudsak en mapp på 1071 00:49:36,120 --> 00:49:37,780 scratch.mit.edu. 1072 00:49:37,780 --> 00:49:39,710 Vi har web-versioner av alla dessa projekt. 1073 00:49:39,710 --> 00:49:42,530 Och låt oss se om jag kan få min dator att samarbeta här. 1074 00:49:42,530 --> 00:49:47,180 Detta är skrivet av en av våra vänner på MIT, som kallas Flytta Butterfly. 1075 00:49:47,180 --> 00:49:50,250 >> Och när detta öppnar upp den, detta kommer att faktiskt använda mer av 1076 00:49:50,250 --> 00:49:51,430 datorns maskinvara. 1077 00:49:51,430 --> 00:49:53,325 Scratch råkar genomföras med Flash. 1078 00:49:53,325 --> 00:49:56,250 Flash kan prata med din webbkamera, om du har en. 1079 00:49:56,250 --> 00:50:00,210 Så om jag går vidare och helskärm här här, klicka på den gröna flaggan, varsel 1080 00:50:00,210 --> 00:50:02,530 att Flash säkerhet budskap säger, vill du 1081 00:50:02,530 --> 00:50:04,210 möjligt att använda min webbkamera? 1082 00:50:04,210 --> 00:50:05,510 >> Normalt sett bör du nog säga Neka. 1083 00:50:05,510 --> 00:50:07,180 Men i det här fallet, ska vi säga tillåter. 1084 00:50:07,180 --> 00:50:10,430 Sedan kommer jag att berätta för Chrome för att tillåta detta. 1085 00:50:10,430 --> 00:50:15,010 Och nu, i ett ögonblick, du ser mig, yep, mig. 1086 00:50:15,010 --> 00:50:18,154 Och om min hand går upp - 1087 00:50:18,154 --> 00:50:20,390 Jag måste inte flytta min huvud på samma gång. 1088 00:50:20,390 --> 00:50:21,740 Det finns också en reflektion på skärmen. 1089 00:50:21,740 --> 00:50:23,480 Kom igen, det går vi - 1090 00:50:23,480 --> 00:50:27,616 du kan flytta den på skärmen eftersom det finns också pusselbitar - Åh, du 1091 00:50:27,616 --> 00:50:31,640 vet vad det är, det är därför du också se projektorns skärm bakom mig. 1092 00:50:31,640 --> 00:50:33,870 Så vi har en liten oändlig sak händer där. 1093 00:50:33,870 --> 00:50:36,470 >> Okej, så jag ska spela här nere. 1094 00:50:36,470 --> 00:50:37,220 Där vi går. 1095 00:50:37,220 --> 00:50:41,310 Så det finns också en pusselbit som säger, när du ser rörelse under 1096 00:50:41,310 --> 00:50:45,470 en av de sprites, kan du få det gå upp, ner, vänster, höger eller liknande. 1097 00:50:45,470 --> 00:50:48,950 Så vi har en bit av virtuell verklighet händer här också, allt inom 1098 00:50:48,950 --> 00:50:52,570 gränserna för min webbläsare, bara Här använder min webbkamera. 1099 00:50:52,570 --> 00:50:53,980 Så vad är då på horisonten. 1100 00:50:53,980 --> 00:50:58,350 Det första problemet set, som du ser, eller webbplatsen kommer gå online senare 1101 00:50:58,350 --> 00:51:01,100 ikväll på cs50.net, är ganska mycket kommer att vara öppet slut. 1102 00:51:01,100 --> 00:51:04,410 Och genomföra en Scratch projekt av intresse för dig, ett spel, en 1103 00:51:04,410 --> 00:51:08,350 interaktion, något konstnärligt, och utmana dig själv att använda valfritt antal 1104 00:51:08,350 --> 00:51:09,660 av dessa pusselbitar. 1105 00:51:09,660 --> 00:51:11,580 Och det kan antingen vara interaktiv på detta sätt. 1106 00:51:11,580 --> 00:51:15,470 Eller det kan vara något mer medvetet gjord för att berätta en historia. 1107 00:51:15,470 --> 00:51:19,200 >> Och faktiskt, det är där vi ska hamna utanför idag, med ett sista exempel. 1108 00:51:19,200 --> 00:51:21,290 Låt mig gå in Scratch lokalt. 1109 00:51:21,290 --> 00:51:25,300 Låt mig gå vidare och öppna det, och spela en sista program skrivet av en 1110 00:51:25,300 --> 00:51:29,795 av era föregångare, nämligen att man här. 1111 00:51:29,795 --> 00:51:32,960 1112 00:51:32,960 --> 00:51:35,938 Bra, höja volymen för detta. 1113 00:51:35,938 --> 00:52:53,770 >> [Musik Spela] 1114 00:52:53,770 --> 00:52:57,255 >> Berättare: Vid nästa CS50, David bjuder en volontär på scenen. 1115 00:52:57,255 --> 00:52:58,636 >> DAVID MALAN: För denna demonstration, vi kommer att behöva en volontär. 1116 00:52:58,636 --> 00:53:01,050 Vill du komma ner? 1117 00:53:01,050 --> 00:53:02,300 Vad är ditt namn? 1118 00:53:02,300 --> 00:53:05,320 1119 00:53:05,320 --> 00:53:06,570 Går vidare. 1120 00:53:06,570 --> 00:53:08,394