1 00:00:00,000 --> 00:00:15,059 >> [Musik spelar] 2 00:00:15,059 --> 00:00:19,170 >> Detta är CS50-- Harvard University introduktion 3 00:00:19,170 --> 00:00:22,070 till den intellektuella företag i datavetenskap 4 00:00:22,070 --> 00:00:23,800 och konsten att programmera. 5 00:00:23,800 --> 00:00:27,020 Och mitt namn är David Malan, och Jag tänkte bara i morse, 6 00:00:27,020 --> 00:00:33,120 det har varit otroligt 20 år idag sedan jag senast satt där ni gör nu. 7 00:00:33,120 --> 00:00:33,840 >> Det var 1996. 8 00:00:33,840 --> 00:00:37,550 Jag var en sophomore, och jag tog CS50 för allra första gången. 9 00:00:37,550 --> 00:00:40,890 Och jag hade inte ens fått upp nerven att ta det själv första år, 10 00:00:40,890 --> 00:00:42,500 delvis på grund av tiden. 11 00:00:42,500 --> 00:00:44,782 Datavetenskap till mig var typ av, meh. 12 00:00:44,782 --> 00:00:46,990 Jag var lite av en nörd växer upp, men jag visste inte riktigt 13 00:00:46,990 --> 00:00:49,180 har någon intellektuell intresse i vad som föreföll 14 00:00:49,180 --> 00:00:51,920 att bara vara en massa människor programmering hela tiden. 15 00:00:51,920 --> 00:00:53,904 >> Och jag var rädd för att vara ärlig. 16 00:00:53,904 --> 00:00:56,820 Kursen och datalogi mer i allmänhet haft och i viss mån, 17 00:00:56,820 --> 00:01:01,230 fortfarande har detta rykte av ett fält för att akta, om bara för att så många av oss 18 00:01:01,230 --> 00:01:04,410 är obekanta med det och osäker på det. 19 00:01:04,410 --> 00:01:08,480 Och det var verkligen inte förrän jag shoppade denna klass som sophomore fall-- 20 00:01:08,480 --> 00:01:10,880 och även då, jag bara inskrivna eftersom professor-- 21 00:01:10,880 --> 00:01:13,950 en av mina första mentorer, Brian Kernighan nu på Princeton-- 22 00:01:13,950 --> 00:01:15,700 tillät mig att ta klassen pass misslyckas. 23 00:01:15,700 --> 00:01:18,020 Och faktiskt, det är därför idag vi tillåter och uppmuntrar 24 00:01:18,020 --> 00:01:20,030 studenter att ta denna klass satt / omättad. 25 00:01:20,030 --> 00:01:22,040 >> Och först då, vid slutet av terminen 26 00:01:22,040 --> 00:01:24,870 jag inser som, wow, detta var inte en sådan obekant område. 27 00:01:24,870 --> 00:01:26,850 I själva verket var detta en mycket ge fält, 28 00:01:26,850 --> 00:01:28,970 och mer spännande, speciellt senare, 29 00:01:28,970 --> 00:01:32,809 som jag tog kurser i Dramatiska Arts 101 och Latin A 30 00:01:32,809 --> 00:01:34,600 och sedan så småningom magister arkeologi, 31 00:01:34,600 --> 00:01:37,860 började jag verkligen att se korsningar i detta fält, dator 32 00:01:37,860 --> 00:01:41,979 vetenskap, med humaniora, naturvetenskap, konst, medicin, 33 00:01:41,979 --> 00:01:42,520 och liknande. 34 00:01:42,520 --> 00:01:44,420 Och så det är vad är bara så snyggt om datavetenskap 35 00:01:44,420 --> 00:01:46,930 i slutändan, som vi hoppas att du see-- är dess tillämplighet 36 00:01:46,930 --> 00:01:50,280 dessa andra områden, och hur du kan ta del av dagens och terminens 37 00:01:50,280 --> 00:01:53,070 idéer och praktiska färdigheter tillbaka till din egen domän, 38 00:01:53,070 --> 00:01:58,200 och faktiskt utforska denna korsning av de fria konsterna och vetenskaperna. 39 00:01:58,200 --> 00:02:02,690 >> Så 73% av dig, om förra år är någon indikation, 40 00:02:02,690 --> 00:02:04,390 har aldrig tagit en CS kurs innan. 41 00:02:04,390 --> 00:02:06,389 Så om, liksom jag, du är känner mig lite 42 00:02:06,389 --> 00:02:09,190 rädd, eller ärligt talat du inte verkligen säker på varför du även här. 43 00:02:09,190 --> 00:02:11,510 Kanske du bara följde några vänner över till Sanders just nu. 44 00:02:11,510 --> 00:02:12,490 Det är helt bra. 45 00:02:12,490 --> 00:02:15,059 Målet här är att koppla du och för att försäkra dig 46 00:02:15,059 --> 00:02:17,100 att om man ser till vänster och till höger, 47 00:02:17,100 --> 00:02:21,480 du kommer att se klasskamrater med så lite eller så mycket erfarenhet 48 00:02:21,480 --> 00:02:22,890 att du själv kan ha. 49 00:02:22,890 --> 00:02:25,280 Och faktiskt, vi delar del statistik senare i dag 50 00:02:25,280 --> 00:02:28,120 När det gäller vad demografin i klassen ser normalt ut. 51 00:02:28,120 --> 00:02:31,440 >> Och som extra reassurance-- och detta har vi menar eftersom jag tog under loppet 52 00:02:31,440 --> 00:02:33,252 några år ago-- i kursens kursplan 53 00:02:33,252 --> 00:02:35,460 är this-- att det i slutändan frågor i den här kursen 54 00:02:35,460 --> 00:02:38,040 är inte så mycket när du avslutar upp i förhållande till dina klasskamrater, 55 00:02:38,040 --> 00:02:43,110 men där man i vecka 11, i slutet av den termin, hamnar i förhållande till sig själv 56 00:02:43,110 --> 00:02:46,280 i vecka 0, vilket är där vi är här i dag. 57 00:02:46,280 --> 00:02:48,704 Och detta är vad jag insåg alla dessa år sedan. 58 00:02:48,704 --> 00:02:50,620 Och jag vet en hel del klasser säga detta, men det är 59 00:02:50,620 --> 00:02:52,450 särskilt i datavetenskap. 60 00:02:52,450 --> 00:02:55,320 Vid slutet av dagen, detta fält är obekant som det var för mig 61 00:02:55,320 --> 00:02:58,590 och kan vara att du är verkligen bara om problemlösning. 62 00:02:58,590 --> 00:03:01,324 Och som sådan har den här tillämplighet att få andra områden. 63 00:03:01,324 --> 00:03:03,490 Och i själva verket, om vi försökte att destillera vad detta innebär, 64 00:03:03,490 --> 00:03:06,897 detta är problemlösning i sitt väsen, jag förmodar. 65 00:03:06,897 --> 00:03:09,480 Det finns input-- så vad det är att du försöker lösa. 66 00:03:09,480 --> 00:03:12,264 Det finns utgång, vilket är förhoppningsvis lösningen på detta problem. 67 00:03:12,264 --> 00:03:14,180 Och sedan, när vi skulle säga i datavetenskap, 68 00:03:14,180 --> 00:03:17,310 Det är det här svarta lådan i mitten som du inte nödvändigtvis 69 00:03:17,310 --> 00:03:19,450 måste bry sig om hur det fungerar. 70 00:03:19,450 --> 00:03:22,230 Du själv så småningom kanske genomföra vad som finns inuti den rutan. 71 00:03:22,230 --> 00:03:25,194 Men för dagens ändamål och fler i allmänhet i livet, allt du bryr dig om 72 00:03:25,194 --> 00:03:26,610 är att dessa problem lösas. 73 00:03:26,610 --> 00:03:29,340 >> Och vad denna kurs är i slutändan om undersöker 74 00:03:29,340 --> 00:03:31,700 skärningspunkten mellan dessa ingångar och utgångar, 75 00:03:31,700 --> 00:03:34,410 och dessa så kallade algoritmer, som vi snart kommer att se, 76 00:03:34,410 --> 00:03:37,450 att genomföra det är under det, huven. 77 00:03:37,450 --> 00:03:40,487 Men dessa ingångar och dessa outputs-- Vad innebär det egentligen? 78 00:03:40,487 --> 00:03:43,570 Ja, vid slutet av dagen, behöver vi något sätt att representera information. 79 00:03:43,570 --> 00:03:46,660 Detta gäller särskilt i en dator, som så snygga och komplicerat som det 80 00:03:46,660 --> 00:03:48,160 kan tyckas, är en ganska dum enhet. 81 00:03:48,160 --> 00:03:52,240 Det tar electricity-- om från en kabel eller ett batteri som input-- 82 00:03:52,240 --> 00:03:55,820 och sedan ger det några förprogrammerad svar på skärmen. 83 00:03:55,820 --> 00:03:57,970 >> Men hur får vi från början till slut där? 84 00:03:57,970 --> 00:03:59,470 Tja, vad ett problem som ska lösas? 85 00:03:59,470 --> 00:04:01,050 Tja, kanske vi kan, på I början av varje termin, 86 00:04:01,050 --> 00:04:02,841 Försök att ta närvaro i ett rum så här. 87 00:04:02,841 --> 00:04:04,750 Så jag kan göra som en, två, tre. 88 00:04:04,750 --> 00:04:07,060 Eller kanske, om jag gjorde det till slags hålla koll 89 00:04:07,060 --> 00:04:10,560 av myself-- att hålla reda på saker-- Jag kunde snabbt slut på fingrarna. 90 00:04:10,560 --> 00:04:14,650 Så jag kan bara göra hash marks-- en person, två, tre, fyra, fem, sex, 91 00:04:14,650 --> 00:04:15,431 sju, åtta. 92 00:04:15,431 --> 00:04:17,930 Och alla av oss har förmodligen gjort detta, vare sig på händerna 93 00:04:17,930 --> 00:04:19,680 eller på en bit papper. 94 00:04:19,680 --> 00:04:22,140 Och det är faktiskt bara något som kallas unära notation-- 95 00:04:22,140 --> 00:04:26,130 där om du bara har en bokstav i alfabetet, en eller hash 96 00:04:26,130 --> 00:04:29,440 märke i detta fall, för varje ingång du vill räkna, 97 00:04:29,440 --> 00:04:32,330 du måste lägga ner en av dessa letters-- ett av dessa märken. 98 00:04:32,330 --> 00:04:32,510 >> Okej. 99 00:04:32,510 --> 00:04:34,790 Det är allt bra och gott och inte så komplicerat. 100 00:04:34,790 --> 00:04:37,800 Men datorer är inte alla så mycket mer komplicerat. 101 00:04:37,800 --> 00:04:40,770 I själva verket de flesta av er förmodligen ens vet om du har inte riktigt 102 00:04:40,770 --> 00:04:44,080 funderat på vad det innebär att datorer bara förstår nollor 103 00:04:44,080 --> 00:04:45,870 och ones-- det så kallade binära systemet. 104 00:04:45,870 --> 00:04:49,390 Vi människor, däremot, är så mycket mer sofistikerad mån 105 00:04:49,390 --> 00:04:51,770 som vi förstår nollor genom nior. 106 00:04:51,770 --> 00:04:55,740 >> Men även om binär är, vid första blick, inte så bekant, 107 00:04:55,740 --> 00:05:00,330 Det visar sig att det är precis som de system och de idéer som vi redan vet. 108 00:05:00,330 --> 00:05:02,420 Så till exempel, överväga detta. 109 00:05:02,420 --> 00:05:03,896 Detta är bara en sekvens av symboler. 110 00:05:03,896 --> 00:05:05,770 Och alla ni, när blick på det, förmodligen 111 00:05:05,770 --> 00:05:09,380 tror 123-- ingenting verkligen intressant där. 112 00:05:09,380 --> 00:05:11,940 Men varför är det här numret, 123? 113 00:05:11,940 --> 00:05:14,440 Dessa är bara glyfer på den Screen-- bara mönster 114 00:05:14,440 --> 00:05:16,387 att någon skulle ha dragit eller skrivit. 115 00:05:16,387 --> 00:05:18,970 Men om du är som jag, du förmodligen minns från grundskolan 116 00:05:18,970 --> 00:05:21,610 att det är typ av kolumner eller platser här. 117 00:05:21,610 --> 00:05:25,340 Det är en plats och tio plats och hundra plats. 118 00:05:25,340 --> 00:05:29,820 Och anledningen till att detta är 123 och inte bara ett mönster av tre symboler 119 00:05:29,820 --> 00:05:33,090 är därför att, naturligtvis, om vi har en på hundra plats, 120 00:05:33,090 --> 00:05:36,610 du räknar 100 gånger en, och sedan två på tio plats. 121 00:05:36,610 --> 00:05:41,390 Så det är 10 gånger 2 och sedan tre den plats och det är 1 gånger 3. 122 00:05:41,390 --> 00:05:45,670 Och när du lägger alla dessa upp av Naturligtvis får du 100 plus 20 plus tre. 123 00:05:45,670 --> 00:05:48,220 >> Så vi började med bara ett mönster av symbols-- en alphabet-- 124 00:05:48,220 --> 00:05:51,670 men då vi kartlagt mening på det med hjälp av dessa kolumner. 125 00:05:51,670 --> 00:05:54,450 Tja, visar det sig att datorer är egentligen inte 126 00:05:54,450 --> 00:05:56,300 allt som skiljer sig från dig och mig. 127 00:05:56,300 --> 00:06:01,840 Men istället för att använda befogenheter 10, så att speak-- 1, 10, 100, 1000, 128 00:06:01,840 --> 00:06:04,330 10.000 plats och så forth-- de faktiskt 129 00:06:04,330 --> 00:06:08,930 bara använda befogenheter 2-- så en, två, fyra, och sedan 130 00:06:08,930 --> 00:06:12,810 Om vi ​​sätter fler siffror, 8, 16, 32, 64, 128, och så vidare. 131 00:06:12,810 --> 00:06:16,050 Och så detta är hur en dator skulle representera siffran 0, 132 00:06:16,050 --> 00:06:17,300 precis som vi människor. 133 00:06:17,300 --> 00:06:21,660 >> 0, 0, 0-- och du kan nog gissa vilket mönster av ettor och nollor, 134 00:06:21,660 --> 00:06:24,610 Om en dator kan bara tala 0 eller 1-- vad 135 00:06:24,610 --> 00:06:29,110 mönster kommer att representera siffer vi människor känner som en? 136 00:06:29,110 --> 00:06:30,590 Yeah-- 0, 0, 1. 137 00:06:30,590 --> 00:06:31,090 Okej. 138 00:06:31,090 --> 00:06:35,900 Så 0, 0, 1 är hur vi representerar 1, så att du kan vara benägna sedan 139 00:06:35,900 --> 00:06:39,510 att representera nummer två, om du har fyra plats och de två plats 140 00:06:39,510 --> 00:06:48,290 som en plats, skulle man kunna säga, ja, Om vi ​​hade en 1 i en plats, 141 00:06:48,290 --> 00:06:50,430 och nu vill vi räkna upp till två, kanske du 142 00:06:50,430 --> 00:06:53,310 göra detta och lämna detta för att vara en nolla. 143 00:06:53,310 --> 00:06:56,397 Men detta är naturligtvis inte hur decimalsystemet fungerar heller. 144 00:06:56,397 --> 00:06:58,230 Om du sätter en siffra i båda dessa kolumner, 145 00:06:58,230 --> 00:06:59,563 du har att göra det aritmetiska. 146 00:06:59,563 --> 00:07:01,930 Så hur många gjorde jag oavsiktligt bara representerar? 147 00:07:01,930 --> 00:07:06,710 >> Så det är tre, eftersom 2 gånger 1 plus 1 gånger 1, naturligtvis, ger oss tre. 148 00:07:06,710 --> 00:07:08,340 Så det skulle vara två. 149 00:07:08,340 --> 00:07:12,730 Biten slags flips, så att säga, som 0 blir en, ungefär som en 9 roller över 150 00:07:12,730 --> 00:07:14,840 och blir en 0 när du bär en. 151 00:07:14,840 --> 00:07:16,510 Detta skulle då vara tre naturligtvis. 152 00:07:16,510 --> 00:07:20,170 Four-- annan intressant sak händer, där de som rullar över 153 00:07:20,170 --> 00:07:21,750 och du bär en, så att säga. 154 00:07:21,750 --> 00:07:23,320 Så detta, naturligtvis, är fyra. 155 00:07:23,320 --> 00:07:25,160 >> Men om du snabbt framåt nu, Vad är det största antalet kommer 156 00:07:25,160 --> 00:07:26,660 vara att en dator kan representera? 157 00:07:26,660 --> 00:07:30,420 158 00:07:30,420 --> 00:07:32,380 Så det är bara sju i det här fallet, eller hur? 159 00:07:32,380 --> 00:07:35,570 Eftersom du har en i fyra, en en i två, en en i en. 160 00:07:35,570 --> 00:07:36,900 Så det är fyra plus två plus ett. 161 00:07:36,900 --> 00:07:37,972 Så som ger dig sju. 162 00:07:37,972 --> 00:07:39,680 Och faktiskt, skulle det verkar vid första anblicken 163 00:07:39,680 --> 00:07:43,750 att datorer kan räkna inte högre än detta. 164 00:07:43,750 --> 00:07:45,210 >> Men detta är naturligtvis inte sant. 165 00:07:45,210 --> 00:07:48,243 Vad gör vi människor gör när vi vill att räkna högre än som 999? 166 00:07:48,243 --> 00:07:51,000 167 00:07:51,000 --> 00:07:53,900 Bara bära en och bara lägga till en fjärde siffra till vänster. 168 00:07:53,900 --> 00:07:55,070 Och så verkligen vi kunde. 169 00:07:55,070 --> 00:07:57,900 Vi skulle kunna ha en åtta s plats och en 16: e plats, 170 00:07:57,900 --> 00:08:02,000 och en 32 plats, 64, 128-- och du kan bara fortsätta på upp till oändligheten. 171 00:08:02,000 --> 00:08:04,640 Så dessa nollor och ones-- den så kallade binära system-- 172 00:08:04,640 --> 00:08:10,290 är det en datorforskare skulle vanligen kallar en bit, eller binär siffra. 173 00:08:10,290 --> 00:08:13,590 >> Men nu, hur vi får från koncept eller grafiken i dessa saker 174 00:08:13,590 --> 00:08:14,620 till en faktisk dator? 175 00:08:14,620 --> 00:08:17,170 Vi verkar vara att hoppa över ett steg här. 176 00:08:17,170 --> 00:08:20,210 Tja, den enda ingången i slutet av dagen, till min laptop här 177 00:08:20,210 --> 00:08:22,060 är detta flöde av elektricitet. 178 00:08:22,060 --> 00:08:24,560 Även om det har varit en lång tid eftersom du tänkt på 179 00:08:24,560 --> 00:08:26,580 eller aldrig tänkt på hur el fungerar, 180 00:08:26,580 --> 00:08:30,909 Det finns elektroner flyter i eller ut, och det är min typ av ingång. 181 00:08:30,909 --> 00:08:34,659 >> Så om det är allt som vi är få som indata här, 182 00:08:34,659 --> 00:08:36,830 Vad kan vi göra med den informationen? 183 00:08:36,830 --> 00:08:40,040 Tja, kanske vi tänker på en nolla som bara en frånvaro av elektricitet. 184 00:08:40,040 --> 00:08:42,540 Ingenting är flowinw, är ingenting flytta, ingenting händer. 185 00:08:42,540 --> 00:08:44,690 Det är bara den förvalda state-- noll. 186 00:08:44,690 --> 00:08:48,200 Men om det finns elektricitet flyter, varför gör vi inte bara godtyckligt, men globalt 187 00:08:48,200 --> 00:08:50,250 konsekvent, kalla det en etta. 188 00:08:50,250 --> 00:08:54,760 >> Så helt enkelt genom att ha någon makt, vi har en nolla, ja makt, 189 00:08:54,760 --> 00:08:57,520 vi har en en-- ingen makt, ja makt. 190 00:08:57,520 --> 00:09:01,520 Och på det sättet, med hjälp av något mer fysisk eller elektronisk 191 00:09:01,520 --> 00:09:05,340 vi börjar genomföra detta begreppet något som antingen är en eller en nolla. 192 00:09:05,340 --> 00:09:07,230 I själva verket kunde vi bara göra det här. 193 00:09:07,230 --> 00:09:10,590 Så här har jag inte tre utan åtta glödlampor, vilka var och en 194 00:09:10,590 --> 00:09:11,810 har sin egen brytare. 195 00:09:11,810 --> 00:09:15,760 >> Och så om jag ville representera siffran sju här, 196 00:09:15,760 --> 00:09:18,510 Jag kan slå på dessa tre glödlampor. 197 00:09:18,510 --> 00:09:21,470 Och faktiskt, insida min dator är miljoner, 198 00:09:21,470 --> 00:09:25,650 miljarder saker som är bara mindre än den, som kallas transistorer, 199 00:09:25,650 --> 00:09:27,330 växlar, att du bara sätta på och stänga. 200 00:09:27,330 --> 00:09:30,420 Så dessa big-- relativt big-- omkopplare inuti min laptop-- 201 00:09:30,420 --> 00:09:32,150 är många, många, många, många fler växlar. 202 00:09:32,150 --> 00:09:35,160 Men allt de gör är exakt that-- aktivera något på, slå något utanför. 203 00:09:35,160 --> 00:09:38,076 Och som sådan, kan en dator representera med de miljoner eller miljarder 204 00:09:38,076 --> 00:09:40,480 transistorer, partier och massor av ettor och nollor. 205 00:09:40,480 --> 00:09:43,160 Och det finns andra hårdvara fortfarande att kan du lagra information på lång sikt, 206 00:09:43,160 --> 00:09:45,243 så att när du drar plugga, att du inte förlorar det. 207 00:09:45,243 --> 00:09:46,900 Men det är en historia för en annan dag. 208 00:09:46,900 --> 00:09:51,170 >> Så vad kan vi göra med dessa bitar? 209 00:09:51,170 --> 00:09:54,309 Kan vi bara ta avlasta av mig-- 210 00:09:54,309 --> 00:09:56,600 kanske någon vill komma upp här och erbjuder upp en demo? 211 00:09:56,600 --> 00:09:57,516 Jag såg denna hand först. 212 00:09:57,516 --> 00:09:58,709 Vad heter du? 213 00:09:58,709 --> 00:09:59,250 Maday: Maday. 214 00:09:59,250 --> 00:10:00,542 DAVID MALAN: Maday, kom upp. 215 00:10:00,542 --> 00:10:01,250 Trevligt att träffas. 216 00:10:01,250 --> 00:10:02,390 Maday: Trevligt att träffas. 217 00:10:02,390 --> 00:10:02,930 >> DAVID MALAN: Kom det här sättet. 218 00:10:02,930 --> 00:10:04,182 Jag kommer inte att behöva läpp dig. 219 00:10:04,182 --> 00:10:04,682 Okej. 220 00:10:04,682 --> 00:10:11,090 Så här har vi, notice-- en, two-- vi redigera den out-- en, två, fyra, 221 00:10:11,090 --> 00:10:13,350 åtta, 16, 32, 64, 128. 222 00:10:13,350 --> 00:10:14,220 Detta är avsiktligt. 223 00:10:14,220 --> 00:10:17,370 Det finns åtta bitar här-- binär digits-- nollor och ettor. 224 00:10:17,370 --> 00:10:21,460 Och en bit är en användbar enhet av measure-- inte lika användbar en måttenhet 225 00:10:21,460 --> 00:10:21,999 på sig själv. 226 00:10:21,999 --> 00:10:24,290 Vanligtvis vill åtminstone åtta av dessa saker, alias 227 00:10:24,290 --> 00:10:24,790 en byte. 228 00:10:24,790 --> 00:10:26,230 Så vi har en byte bitar här. 229 00:10:26,230 --> 00:10:31,130 >> Så om vi ville utmana dig med, till exempel stava ut, binärt, 230 00:10:31,130 --> 00:10:33,230 detta värde här-- 42. 231 00:10:33,230 --> 00:10:35,140 Vill du ta en stab på det? 232 00:10:35,140 --> 00:10:36,034 >> Maday: [OHÖRBART]. 233 00:10:36,034 --> 00:10:38,700 DAVID MALAN: Ja, bara trycka på små vita växlar fram. 234 00:10:38,700 --> 00:10:41,290 Och du vill stava ut 42, och hänger i luften 235 00:10:41,290 --> 00:10:44,061 Detta CS50 stressen boll om du får detta. 236 00:10:44,061 --> 00:10:44,560 Okej. 237 00:10:44,560 --> 00:10:46,420 Så du har 32. 238 00:10:46,420 --> 00:10:48,430 Vi kommer att behöva 42. 239 00:10:48,430 --> 00:10:51,410 Så det är en åtta, så det är 40. 240 00:10:51,410 --> 00:10:54,160 Och excellent-- mycket snyggt gjort. 241 00:10:54,160 --> 00:10:55,186 Tack. 242 00:10:55,186 --> 00:10:58,790 >> [APPLÅDER] 243 00:10:58,790 --> 00:10:59,290 Okej. 244 00:10:59,290 --> 00:11:00,623 Så vi har en mer stress boll. 245 00:11:00,623 --> 00:11:03,595 Låt oss göra detta en gång om vi kan. 246 00:11:03,595 --> 00:11:05,368 En annan volontär? 247 00:11:05,368 --> 00:11:07,970 Fri stress boll, fri stress boll. 248 00:11:07,970 --> 00:11:08,470 OK. 249 00:11:08,470 --> 00:11:11,640 Hit i mitten, vill du komma ner? 250 00:11:11,640 --> 00:11:14,100 Okej. 251 00:11:14,100 --> 00:11:15,552 Jag vet. 252 00:11:15,552 --> 00:11:16,360 Det går vi. 253 00:11:16,360 --> 00:11:20,818 >> Så nummer kommer här-- ner. 254 00:11:20,818 --> 00:11:21,567 Vad heter du? 255 00:11:21,567 --> 00:11:21,984 >> DAVEY: Davey. 256 00:11:21,984 --> 00:11:22,820 >> DAVID MALAN: Davey. 257 00:11:22,820 --> 00:11:23,320 OK. 258 00:11:23,320 --> 00:11:24,810 Kom upp, Davey. 259 00:11:24,810 --> 00:11:25,890 Trevligt att träffas. 260 00:11:25,890 --> 00:11:28,639 Och vad vi kommer att ha dig spell-- om du kunde dröja 261 00:11:28,639 --> 00:11:32,810 för bara ett moment-- är antalet 50. 262 00:11:32,810 --> 00:11:36,293 Men, men, men men, men dessa är grundskola magneter för en anledning. 263 00:11:36,293 --> 00:11:39,370 264 00:11:39,370 --> 00:11:43,327 Bara fick lite hårdare, okej? 265 00:11:43,327 --> 00:11:44,160 Det finns fortfarande åtta. 266 00:11:44,160 --> 00:11:46,820 267 00:11:46,820 --> 00:11:47,320 Okej. 268 00:11:47,320 --> 00:11:48,486 Så vad har vi på det? 269 00:11:48,486 --> 00:11:51,356 Vi har 32. 270 00:11:51,356 --> 00:11:54,344 Trevlig. 271 00:11:54,344 --> 00:11:58,610 32 plus 16 ger oss 48-- så nära. 272 00:11:58,610 --> 00:12:00,390 Och underbart. 273 00:12:00,390 --> 00:12:02,831 Grattis till Davey liksom. 274 00:12:02,831 --> 00:12:05,720 >> [APPLÅDER] 275 00:12:05,720 --> 00:12:06,516 >> Okej. 276 00:12:06,516 --> 00:12:09,390 Så vi kan göra detta hela dagen lång, och det kan inte bli så mycket mer 277 00:12:09,390 --> 00:12:10,800 intressant och mer utmanande. 278 00:12:10,800 --> 00:12:13,250 Men det är verkligen point-- är hur relativt enkelt 279 00:12:13,250 --> 00:12:16,930 det är, i slutet av dagen, vad en dator gör att lagra information, 280 00:12:16,930 --> 00:12:21,740 att lagra ingångar och slutligen lagra eller representera dessa utgångar. 281 00:12:21,740 --> 00:12:23,750 Men enbart siffror är inte så intressant. 282 00:12:23,750 --> 00:12:26,069 >> Så människor, för några år sedan, bestämt, vet du vad? 283 00:12:26,069 --> 00:12:27,860 Det skulle vara trevligt om datorer var inte bara 284 00:12:27,860 --> 00:12:31,030 räknare för aritmetik verksamhet, men i själva verket kunde 285 00:12:31,030 --> 00:12:35,209 göra saker som ordbehandling, eller e-post, eller mer moderna inkarnationer 286 00:12:35,209 --> 00:12:36,500 av dessa typer av tekniker. 287 00:12:36,500 --> 00:12:40,680 Och så världen bestämde godtyckligt, men allmänt, 288 00:12:40,680 --> 00:12:44,380 att om du vill spara kapital bokstaven A i en dator, vet du vad? 289 00:12:44,380 --> 00:12:47,730 Låt oss bara alla överens om att lagra vissa mönster av nollor och ones-- 290 00:12:47,730 --> 00:12:52,422 bits-- som i slutändan representerar decimaltalet 65. 291 00:12:52,422 --> 00:12:53,630 Vi ska bara alla överens om. 292 00:12:53,630 --> 00:12:56,620 >> 66 skulle representera B, 67 skulle representera C, 293 00:12:56,620 --> 00:13:00,210 och det finns knippen av andra mönster av nollor och ettor, eller bakomliggande siffror, 294 00:13:00,210 --> 00:13:02,224 som skulle representera andra bokstäver fortfarande. 295 00:13:02,224 --> 00:13:04,390 Så om du slags mentalt absorbera detta för ett ögonblick, 296 00:13:04,390 --> 00:13:10,900 Jag medvetet sätta upp A genom Jag, där H 72 och jag är 73. 297 00:13:10,900 --> 00:13:15,830 Om en dator då, i samband med ett program för ordbehandling eller en e-post, 298 00:13:15,830 --> 00:13:19,620 avslöjade under huven för att ha dessa mönster av bits-- mönster 299 00:13:19,620 --> 00:13:22,500 bitar som representerar 72, därefter 73, då 33-- 300 00:13:22,500 --> 00:13:26,640 vad kan detta innebära att programmet? 301 00:13:26,640 --> 00:13:28,150 >> Så hej, och sedan något. 302 00:13:28,150 --> 00:13:31,460 Vi behöver inte nödvändigtvis vet, men i själva verket 33-- inte i diagrammet earlier-- 303 00:13:31,460 --> 00:13:33,170 var helt enkelt ett utropstecken. 304 00:13:33,170 --> 00:13:38,870 Så 72 var H, 73 är I, 33 händer att vara ett utropstecken fortfarande. 305 00:13:38,870 --> 00:13:41,719 Men det är alla fina och bra, och i själva verket numera, snarare än 306 00:13:41,719 --> 00:13:43,760 bara använda sju eller åtta bitar, tack vare något 307 00:13:43,760 --> 00:13:46,530 kallas Unicode i motsats ASCII tillbaka i dag, 308 00:13:46,530 --> 00:13:50,010 vi faktiskt kan representera ännu mer intressanta karaktärer än bara 309 00:13:50,010 --> 00:13:52,980 dessa ursprungliga engelska partisk bokstäver. 310 00:13:52,980 --> 00:13:56,030 Men vi kan också representera även nättare saker som färger. 311 00:13:56,030 --> 00:13:59,750 >> Om du någonsin har hört förkortningen RGB, röd, grön, blå, som 312 00:13:59,750 --> 00:14:03,510 bara innebär att en dator typiskt använder tre uppsättningar bits-- 313 00:14:03,510 --> 00:14:06,760 vissa antal bitar som representerar ett nummer för hur mycket rött du vill, 314 00:14:06,760 --> 00:14:08,940 en annan uppsättning bitar för hur mycket grönt du vill, 315 00:14:08,940 --> 00:14:11,430 och en annan uppsättning nummer för hur mycket blå du vill. 316 00:14:11,430 --> 00:14:14,457 Så ett stort antal betyder massor av rött, litet antal innebär ingen röd. 317 00:14:14,457 --> 00:14:16,290 Och så dessa är typ av mellanvärden här. 318 00:14:16,290 --> 00:14:20,180 >> Så ge mig lite rött, ge mig lite grön, och ge mig lite blå. 319 00:14:20,180 --> 00:14:24,260 Och om du blandar dessa tre nyanser av färg tillsammans, i detta fall, 320 00:14:24,260 --> 00:14:26,850 du får denna skumma skugga av gult eller brunt. 321 00:14:26,850 --> 00:14:32,330 Men det mönstret av åtta plus åtta plus eight-- så 24 bits-- 322 00:14:32,330 --> 00:14:36,550 vänster till höger, är hur en dator skulle innebära att viss färg. 323 00:14:36,550 --> 00:14:38,090 Nu är detta bara en prick på en skärm. 324 00:14:38,090 --> 00:14:42,230 Om man tittar riktigt nära på din TV din dator, ser du punkter eller pixlar. 325 00:14:42,230 --> 00:14:45,420 Och om du har en hel rutnät av pixlar, horisontellt och vertikalt, 326 00:14:45,420 --> 00:14:46,630 du har bilder. 327 00:14:46,630 --> 00:14:49,029 Och sedan om du tar en bild och sedan tvätta 328 00:14:49,029 --> 00:14:52,070 visa dig en annan bild, en annan bild, en annan bild, en annan bild, 329 00:14:52,070 --> 00:14:54,760 riktigt snabbt, du naturligtvis har filmer. 330 00:14:54,760 --> 00:14:56,109 >> Och så märker där vi började. 331 00:14:56,109 --> 00:14:57,650 Vi började med dessa nollor och ettor. 332 00:14:57,650 --> 00:15:00,570 Vi arbetade därifrån till decimal siffror, hur vi representerar dem. 333 00:15:00,570 --> 00:15:02,070 Nu har vi bokstäverna i alfabetet. 334 00:15:02,070 --> 00:15:05,664 Men i andra sammanhang vänta, kan vi använda några fler bitar och representerar färger. 335 00:15:05,664 --> 00:15:07,830 Så snart du har förmåga att representera färger, 336 00:15:07,830 --> 00:15:11,200 du har förmågan att representera fotografier och animerad gif 337 00:15:11,200 --> 00:15:13,780 och andra sådana tecken på skärmen. 338 00:15:13,780 --> 00:15:17,160 Och när du har en massa bilder som flyger av människo på en gång, 339 00:15:17,160 --> 00:15:21,480 det ser ut som rörliga bilder, och så får du video också. 340 00:15:21,480 --> 00:15:23,460 >> Så använder dessa mycket enkla primitiver gör vi 341 00:15:23,460 --> 00:15:28,070 ha sätt att representera i slutändan alla dessa former av media. 342 00:15:28,070 --> 00:15:30,450 Och vi har sammandrag igen och om och om igen, tills vi 343 00:15:30,450 --> 00:15:33,467 får från den lägsta nivån till denna högsta nivå. 344 00:15:33,467 --> 00:15:35,550 Så det ger oss detta allmän uppfattning om abstraktion. 345 00:15:35,550 --> 00:15:36,990 Men vi började här. 346 00:15:36,990 --> 00:15:38,790 >> Här nu, vi kanske representera i en dator 347 00:15:38,790 --> 00:15:41,920 våra ingångar med nollor och ettor, våra resultat i nollor och ettor, 348 00:15:41,920 --> 00:15:43,640 men vad som händer inne i lådan? 349 00:15:43,640 --> 00:15:46,080 Det är där datorn vetenskap blir intressant. 350 00:15:46,080 --> 00:15:49,770 Det är där du faktiskt ta med egna sinnen att stå ut med att lösa problem. 351 00:15:49,770 --> 00:15:52,590 Vi kan nu fastställa för resten av terminen, ja. 352 00:15:52,590 --> 00:15:53,870 Jag vet hur binära fungerar. 353 00:15:53,870 --> 00:15:57,942 Jag minns hur Ascii eller Unicode-- mappningen till letters-- verk. 354 00:15:57,942 --> 00:15:59,650 Och det verkligen står självklart att vi 355 00:15:59,650 --> 00:16:03,470 kan representera rött och grönt och blått, och representerar multimedia också. 356 00:16:03,470 --> 00:16:05,390 Men detta är den intressanta saker. 357 00:16:05,390 --> 00:16:09,790 Detta är vad som gör någon kapabel att lösa problem. 358 00:16:09,790 --> 00:16:11,980 >> Och ett sådant problem vi vill göra, ja, 359 00:16:11,980 --> 00:16:15,345 tar närvaro, eller gör detta algoritm. 360 00:16:15,345 --> 00:16:16,470 Och återigen, kan jag göra det. 361 00:16:16,470 --> 00:16:19,580 Jag kan göra en, två, tre, fyra fem, sex, sju, åtta nio. 362 00:16:19,580 --> 00:16:21,520 Och jag skulle kunna skriva det ner för att hålla reda på det. 363 00:16:21,520 --> 00:16:23,769 Men det är bara hur jag skulle representerar informationen. 364 00:16:23,769 --> 00:16:27,550 Eller jag kunde göra detta faster-- två, fyra, sex, åtta, tio, tolv, 14, 16, 18, 20, 365 00:16:27,550 --> 00:16:30,380 22-- det känns som två gånger så fort men det är fortfarande 366 00:16:30,380 --> 00:16:32,050 kommer att ta en hel del tid. 367 00:16:32,050 --> 00:16:35,990 >> Men det visar sig, om vi utnyttja ännu annan resource-- och faktiskt datorer 368 00:16:35,990 --> 00:16:38,940 dessa dagar har flera processorer eller hjärna. 369 00:16:38,940 --> 00:16:41,970 Det visar sig datorer kan göra massor av saker på en gång, 370 00:16:41,970 --> 00:16:44,460 och faktiskt vi i det här rummet, kan representera just detta. 371 00:16:44,460 --> 00:16:47,130 >> Så det är lite socialt obekväma, men om du skulle humor mig 372 00:16:47,130 --> 00:16:51,550 för bara en process i tre steg, låt jag be alla på plats där bara 373 00:16:51,550 --> 00:16:54,640 att stå upp för ett ögonblick. 374 00:16:54,640 --> 00:16:57,380 Stå upp. 375 00:16:57,380 --> 00:17:01,580 Så tänk dig själv, antal en-- så att alla i det här rummet, 376 00:17:01,580 --> 00:17:05,010 utom de som inte gjorde det oblige, funderar nummer ett. 377 00:17:05,010 --> 00:17:06,510 Så det är ditt nummer just nu. 378 00:17:06,510 --> 00:17:09,399 Som är det första steget, eller som en dator vetenskapsman eller en programmerare 379 00:17:09,399 --> 00:17:11,827 typiskt göra, kommer vi att börja räkna på noll. 380 00:17:11,827 --> 00:17:14,410 Om det minsta antalet som vi kan representera dessa glödlampor 381 00:17:14,410 --> 00:17:17,410 är noll, genom att bara lämna dem allt utanför, jag kan lika gärna 382 00:17:17,410 --> 00:17:19,271 börja räkna från noll är i stället för en. 383 00:17:19,271 --> 00:17:21,020 Och så det är vad datavetare göra. 384 00:17:21,020 --> 00:17:23,750 Så steg noll, stå upp och tänk på nummer ett. 385 00:17:23,750 --> 00:17:26,339 Nästa steg är this-- par off med någon stående 386 00:17:26,339 --> 00:17:27,660 och lägg till dina siffror tillsammans. 387 00:17:27,660 --> 00:17:30,660 388 00:17:30,660 --> 00:17:32,850 Underbar. 389 00:17:32,850 --> 00:17:37,640 >> Så vid denna tidpunkt, bokstavligen alla som deltar 390 00:17:37,640 --> 00:17:41,930 tänker på siffran 2, med undantag för en udda person om vi har 391 00:17:41,930 --> 00:17:43,450 ett udda antal personer i rummet. 392 00:17:43,450 --> 00:17:50,640 Och nu det tredje steget här kommer att vara this-- en av er ska sitta ner. 393 00:17:50,640 --> 00:17:54,490 En av er ska sitta ner, och om du fortfarande står, 394 00:17:54,490 --> 00:17:56,590 gå tillbaka till steg ett. 395 00:17:56,590 --> 00:18:44,799 396 00:18:44,799 --> 00:18:45,790 Okej. 397 00:18:45,790 --> 00:19:00,760 398 00:19:00,760 --> 00:19:01,650 Okej. 399 00:19:01,650 --> 00:19:03,880 Så fler och fler människor bör sitta ned. 400 00:19:03,880 --> 00:19:08,280 Lägg märke till att detta har inducerat en loop-- någon form av cykel. 401 00:19:08,280 --> 00:19:11,983 Några av er skulle vara olyckligt fastnat, gå fram och tillbaka mellan steg ett 402 00:19:11,983 --> 00:19:14,180 och två, ett och två, ett och två. 403 00:19:14,180 --> 00:19:21,190 404 00:19:21,190 --> 00:19:21,810 Det är ok. 405 00:19:21,810 --> 00:19:22,630 Vår första felet. 406 00:19:22,630 --> 00:19:24,740 Vi tar hand om det. 407 00:19:24,740 --> 00:19:25,320 Okej. 408 00:19:25,320 --> 00:19:27,370 Låt mig försöka sporra saker tillsammans. 409 00:19:27,370 --> 00:19:31,454 >> I teorin är endast en person som står som alla fortsätter att para ut. 410 00:19:31,454 --> 00:19:33,870 Men låt mig påskynda saker med människor kvar. 411 00:19:33,870 --> 00:19:35,480 Vilket nummer är du tänker på? 412 00:19:35,480 --> 00:19:36,070 46. 413 00:19:36,070 --> 00:19:36,570 OK. 414 00:19:36,570 --> 00:19:37,820 Gå vidare och sitta ner. 415 00:19:37,820 --> 00:19:39,190 Ni är fortfarande kvar. 416 00:19:39,190 --> 00:19:42,130 Vem kvar? 417 00:19:42,130 --> 00:19:45,240 Vilket nummer är du tänker på? 418 00:19:45,240 --> 00:19:46,160 OK. 419 00:19:46,160 --> 00:19:47,900 >> Så vi kommer tillbaka till dig. 420 00:19:47,900 --> 00:19:49,630 Där bak? 421 00:19:49,630 --> 00:19:50,790 Vad är det? 422 00:19:50,790 --> 00:19:53,100 22. 423 00:19:53,100 --> 00:19:56,540 OK någon annan upp top-- ja? 424 00:19:56,540 --> 00:19:57,720 34. 425 00:19:57,720 --> 00:19:58,300 OK. 426 00:19:58,300 --> 00:20:02,780 Hit på min right-- upp här? 427 00:20:02,780 --> 00:20:06,820 132, mycket trevligt. 428 00:20:06,820 --> 00:20:08,380 22? 429 00:20:08,380 --> 00:20:08,990 >> OK. 430 00:20:08,990 --> 00:20:10,031 Och vem är kvar? 431 00:20:10,031 --> 00:20:11,000 Här borta? 432 00:20:11,000 --> 00:20:14,520 46, mycket trevligt. 433 00:20:14,520 --> 00:20:16,890 72. 434 00:20:16,890 --> 00:20:18,220 Jag kan inte stanna mycket längre. 435 00:20:18,220 --> 00:20:20,520 Ja? 436 00:20:20,520 --> 00:20:22,490 30, trevlig. 437 00:20:22,490 --> 00:20:24,120 Här borta? 438 00:20:24,120 --> 00:20:26,200 23? 439 00:20:26,200 --> 00:20:27,270 23. 440 00:20:27,270 --> 00:20:30,920 >> Och jag tror att det är alla utom ni, ingen press. 441 00:20:30,920 --> 00:20:32,860 Oh vänta. 442 00:20:32,860 --> 00:20:33,360 28? 443 00:20:33,360 --> 00:20:37,500 444 00:20:37,500 --> 00:20:38,281 Bara åtta. 445 00:20:38,281 --> 00:20:38,780 OK. 446 00:20:38,780 --> 00:20:41,030 Bara åtta. 447 00:20:41,030 --> 00:20:42,580 Här nere? 448 00:20:42,580 --> 00:20:44,570 30. 449 00:20:44,570 --> 00:20:47,344 23. 450 00:20:47,344 --> 00:20:47,843 24. 451 00:20:47,843 --> 00:20:50,810 452 00:20:50,810 --> 00:20:52,310 18. 453 00:20:52,310 --> 00:20:54,690 Detta är den värsta genomförandet av denna algoritm någonsin. 454 00:20:54,690 --> 00:20:55,190 OK. 455 00:20:55,190 --> 00:20:59,760 Så någon annan? 456 00:20:59,760 --> 00:21:00,421 Någon annan? 457 00:21:00,421 --> 00:21:00,920 OK. 458 00:21:00,920 --> 00:21:03,300 En till. 459 00:21:03,300 --> 00:21:04,400 16? 460 00:21:04,400 --> 00:21:04,900 OK. 461 00:21:04,900 --> 00:21:05,510 16. 462 00:21:05,510 --> 00:21:06,010 Okej. 463 00:21:06,010 --> 00:21:09,070 Så om jag inte har missat någon i skenet här, när jag trycker på Retur, 464 00:21:09,070 --> 00:21:13,091 vi kommer att få se, algoritm den Antalet personer i Sanders. 465 00:21:13,091 --> 00:21:16,340 Eftersom igen, det är som om alla som du satt ner, passerade ditt nummer av 466 00:21:16,340 --> 00:21:19,215 till någon annan, till någon annan, till någon annan, så att i teorin, 467 00:21:19,215 --> 00:21:22,304 i slutändan bara en besvärlig person bör lämnas stående. 468 00:21:22,304 --> 00:21:22,970 Men det är bra. 469 00:21:22,970 --> 00:21:24,290 Vi accelererade saker manuellt. 470 00:21:24,290 --> 00:21:27,590 Det är särskilt svårt att se i detta utrymme. 471 00:21:27,590 --> 00:21:34,200 >> Och det totala antalet personer vi tror att det är här är 546. 472 00:21:34,200 --> 00:21:37,330 Det totala antalet jag överlämnades av undervisnings medmänniskor, 473 00:21:37,330 --> 00:21:40,660 som gjorde det gamla skola långsamt sätt, var 820. 474 00:21:40,660 --> 00:21:43,660 >> [SKRATTANDE] 475 00:21:43,660 --> 00:21:47,170 >> [APPLÅDER] 476 00:21:47,170 --> 00:21:48,670 >> Det är ok. 477 00:21:48,670 --> 00:21:50,740 Så säkert då, finns dessa buggar. 478 00:21:50,740 --> 00:21:51,460 Och det är bra. 479 00:21:51,460 --> 00:21:53,810 Och så tänker tillbaka på detta första gången något 480 00:21:53,810 --> 00:21:55,420 du skriver inte nödvändigtvis fungerar. 481 00:21:55,420 --> 00:21:57,620 Detta har hänt mig här. 482 00:21:57,620 --> 00:22:00,844 Men låt oss nu överväga hur vi kan tillämpa samma idé till något 483 00:22:00,844 --> 00:22:03,760 du kanske har sett tidigare, vilket Detta är old school teknik här-- 484 00:22:03,760 --> 00:22:05,130 en riktigt stor telefonbok. 485 00:22:05,130 --> 00:22:09,380 Och antar att denna telefonbok har 1000 sidor och 1000 namn 486 00:22:09,380 --> 00:22:11,360 och siffror i bokstavsordning inne i den. 487 00:22:11,360 --> 00:22:14,860 >> Jo, vi kunde slags tillämpa en liknande Tanken med detta mycket fysiska problem, 488 00:22:14,860 --> 00:22:16,270 bara använda mig. 489 00:22:16,270 --> 00:22:18,810 Jag bara typ av lurad genom att utnyttja alla er 490 00:22:18,810 --> 00:22:23,240 med massor av olika processorer eller hjärna utför någon algoritm. 491 00:22:23,240 --> 00:22:25,440 Men om det är bara lite gamla mig, kan jag fortfarande 492 00:22:25,440 --> 00:22:29,630 utnyttja samma väsen av en idé att dela upp och erövra det problemet 493 00:22:29,630 --> 00:22:32,970 om och om igen, där hälften av er, hälften av er, hälften av er, hälften av er, 494 00:22:32,970 --> 00:22:35,830 teoretiskt hålls sitta ned, tills vi kvar, teoretiskt, 495 00:22:35,830 --> 00:22:36,990 med bara en person. 496 00:22:36,990 --> 00:22:39,810 >> Så i denna gamla skola technology-- vi inte 497 00:22:39,810 --> 00:22:43,030 behöver detta map-- detta old school-teknik, 498 00:22:43,030 --> 00:22:47,300 vi kan börja leta efter någon gillar Mike Smith, en sida i taget. 499 00:22:47,300 --> 00:22:49,410 Och jag ser att ingen, inte Mike här. 500 00:22:49,410 --> 00:22:51,110 Jag är fortfarande i A-sektionen. 501 00:22:51,110 --> 00:22:53,900 Slutligen finner jag själv i B sektionen. 502 00:22:53,900 --> 00:22:56,910 Och detta är en algorithm-- steg-för-steg instruktioner. 503 00:22:56,910 --> 00:22:59,890 Börja från början och en sida vid en tidpunkt, leta efter Mike Smith. 504 00:22:59,890 --> 00:23:03,410 Är detta correct-- detta algoritm eller strategi? 505 00:23:03,410 --> 00:23:04,550 >> Ja, det är korrekt. 506 00:23:04,550 --> 00:23:06,840 Om Mike är här, så småningom Jag kommer till honom. 507 00:23:06,840 --> 00:23:08,139 Men det är inte effektiv. 508 00:23:08,139 --> 00:23:09,180 Det är naturligtvis mycket långsam. 509 00:23:09,180 --> 00:23:11,340 Så jag kan utnyttja Samma twosies närma. 510 00:23:11,340 --> 00:23:15,350 Jag kan göra slags två, fyra, sex, åtta, tio, tolv. 511 00:23:15,350 --> 00:23:16,330 Det är dubbelt så snabbt. 512 00:23:16,330 --> 00:23:18,290 Jag kommer att få Mike snabbare om han är där. 513 00:23:18,290 --> 00:23:20,770 Är det korrekt? 514 00:23:20,770 --> 00:23:22,320 Ja, men jag hörde en little-- nej. 515 00:23:22,320 --> 00:23:24,200 Nu hörde jag ett nej. 516 00:23:24,200 --> 00:23:24,700 Ja. 517 00:23:24,700 --> 00:23:26,190 Det finns en bugg potentiellt. 518 00:23:26,190 --> 00:23:29,374 Kanske Mike bara misstag blir inklämt mellan två sidor, 519 00:23:29,374 --> 00:23:31,290 eftersom jag flyger genom detta två åt gången. 520 00:23:31,290 --> 00:23:33,580 Så åtminstone vi behöver typ av villkorad fix. 521 00:23:33,580 --> 00:23:35,330 Jag måste säga, hej, om jag slog någon vars 522 00:23:35,330 --> 00:23:39,190 namn börjar med en T istället för en S, Jag bättre dubbelt tillbaka åtminstone en sida. 523 00:23:39,190 --> 00:23:40,767 Så buggy i början, men repareras. 524 00:23:40,767 --> 00:23:43,850 Men ingen av oss kommer att leta efter Mike Smith genom en 1000 sida telefon 525 00:23:43,850 --> 00:23:45,290 boka en sida i taget. 526 00:23:45,290 --> 00:23:48,486 Vad är en normal person ska göra? 527 00:23:48,486 --> 00:23:50,860 Du kommer att gå till S, om du visste var S. 528 00:23:50,860 --> 00:23:54,230 Du kan gå ungefär till mitten eller något skev mot slutet. 529 00:23:54,230 --> 00:23:56,850 Och jag ser här nere och Jag är i M avsnittet. 530 00:23:56,850 --> 00:23:58,952 Men vad vet du om detta problem nu, 531 00:23:58,952 --> 00:24:02,160 att vi inte nödvändigtvis visste innan med alla av oss bara räkna oss 532 00:24:02,160 --> 00:24:03,030 ekvivalent? 533 00:24:03,030 --> 00:24:06,010 Tja, Mike tydligt går att vara i denna halv av boken 534 00:24:06,010 --> 00:24:07,920 om han är här alls eftersom det är sortering. 535 00:24:07,920 --> 00:24:10,160 >> Och så kan du mycket dramatically-- 536 00:24:10,160 --> 00:24:11,250 >> [Kippar] 537 00:24:11,250 --> 00:24:12,300 >> Jag vet. 538 00:24:12,300 --> 00:24:16,940 >> [APPLÅDER] 539 00:24:16,940 --> 00:24:19,450 >> Det är faktiskt väldigt enkelt om du gör det ner ryggraden där. 540 00:24:19,450 --> 00:24:22,070 Men du kan kasta halv av problemet bort. 541 00:24:22,070 --> 00:24:25,950 Nu, jag är kvar med samma problem-- hitta Mike Smith i en telefon book-- 542 00:24:25,950 --> 00:24:29,610 men nu telefonboken börjar på M och går till Z, men det är hälften så stor. 543 00:24:29,610 --> 00:24:30,890 >> Men detta är vad som är imponerande. 544 00:24:30,890 --> 00:24:34,170 Precis som i teorin, ni, när ni alla satt bara hälften åt gången, 545 00:24:34,170 --> 00:24:37,150 problemet fick hälften så stor, hälften så stor, om och om igen. 546 00:24:37,150 --> 00:24:40,260 Så har detta problem blivit samma problem men hälften så stor. 547 00:24:40,260 --> 00:24:42,670 Nu är det en 250 sida problem. 548 00:24:42,670 --> 00:24:45,340 Så fort jag inser, åh, jag är i T avsnitt av misstag. 549 00:24:45,340 --> 00:24:46,590 Jag har gått för långt. 550 00:24:46,590 --> 00:24:48,500 Jag kan kasta att hälften av telefonboken bort. 551 00:24:48,500 --> 00:24:50,410 Nu är jag ner till en fjärdedel av problemet. 552 00:24:50,410 --> 00:24:53,910 >> Och du kan upprepa, upprepa, upprepa tills i teorin, är du 553 00:24:53,910 --> 00:24:55,460 vänster med bara en sida. 554 00:24:55,460 --> 00:24:59,010 Och om Mike är på den sidan, Jag kan nu lösa detta problem. 555 00:24:59,010 --> 00:25:00,810 Men hur snabbt jag lösa det? 556 00:25:00,810 --> 00:25:05,420 I det första fallet, det tog mig som kanske 1000 steg för att hitta Mike Smith. 557 00:25:05,420 --> 00:25:09,260 Det kan ha tagit mig-- Jag plockade upp telefonboken 558 00:25:09,260 --> 00:25:11,440 och jag började leta en sida i taget, 559 00:25:11,440 --> 00:25:13,480 och Mike kanske 1.000 sidor senare. 560 00:25:13,480 --> 00:25:16,020 >> Andra tillvägagångssätt kanske tar mig 500 steg, 561 00:25:16,020 --> 00:25:17,960 eftersom jag flyger genom två åt gången. 562 00:25:17,960 --> 00:25:21,082 Och det tredje tillvägagångssättet dock, det är särskilt kraftfull. 563 00:25:21,082 --> 00:25:23,790 Men låt oss fundera över vad vi faktiskt gjorde med denna tredje tillvägagångssätt. 564 00:25:23,790 --> 00:25:27,590 Jag har vad jag ska kalla just dessa uttalanden här, en i taget. 565 00:25:27,590 --> 00:25:28,560 Plocka upp en telefonbok. 566 00:25:28,560 --> 00:25:30,130 Öppna till mitten av telefonboken. 567 00:25:30,130 --> 00:25:31,419 Titta på namn. 568 00:25:31,419 --> 00:25:33,960 Och då det blir lite mer intellektuellt intressant, 569 00:25:33,960 --> 00:25:35,170 om det fortfarande enkelt. 570 00:25:35,170 --> 00:25:38,350 Om Smith är bland de namn på den aktuella sidan, 571 00:25:38,350 --> 00:25:40,170 sedan göra något villkorligt. 572 00:25:40,170 --> 00:25:41,840 Det är som en gaffel i vägen. 573 00:25:41,840 --> 00:25:42,660 Ringa Mike. 574 00:25:42,660 --> 00:25:44,930 Om Mike är bland namnen på den sidan, som kallas Mike. 575 00:25:44,930 --> 00:25:49,720 Men bara göra linje fyra om linjen träd, om man så vill, är sant. 576 00:25:49,720 --> 00:25:51,590 Svaret på den frågan är ja. 577 00:25:51,590 --> 00:25:55,520 >> Else om Smith är tidigare i book-- Med andra ord, om jag är i M avsnittet 578 00:25:55,520 --> 00:25:58,540 och jag letar efter någon att vänster, vad jag ska göra 579 00:25:58,540 --> 00:26:00,300 är något liknande. 580 00:26:00,300 --> 00:26:03,440 Då ska jag öppna till mitten av den vänstra halvan av boken. 581 00:26:03,440 --> 00:26:07,930 Så gå till vänster, och sedan gå tillbaka till steg två. 582 00:26:07,930 --> 00:26:09,290 Titta på namnen där. 583 00:26:09,290 --> 00:26:12,779 >> Så med andra ord, gör samma sak, men på ett problem som har halverats. 584 00:26:12,779 --> 00:26:13,570 Vet du vad? 585 00:26:13,570 --> 00:26:16,470 Om Smith är senare i boken baserad på sidan jag tittar på, 586 00:26:16,470 --> 00:26:18,790 öppen mot mitten av högra halvan av boken 587 00:26:18,790 --> 00:26:22,050 och sedan gå tillbaka igen till steg två, else-- 588 00:26:22,050 --> 00:26:24,000 det finns en fjärde möjlighet här. 589 00:26:24,000 --> 00:26:28,830 Mike är antingen här eller till vänster eller till höger eller inte där. 590 00:26:28,830 --> 00:26:30,570 Och här har vi bättre överväga detta. 591 00:26:30,570 --> 00:26:33,360 Och i själva verket, om du någonsin har haft datorn bara kraschar på dig, 592 00:26:33,360 --> 00:26:36,822 det är ibland, men inte alltid, resultat av bara en mänsklig programmerare inte 593 00:26:36,822 --> 00:26:39,280 inse, oh shoot, det finns faktiskt denna fjärde scenario. 594 00:26:39,280 --> 00:26:41,650 Och om du inte skriva kod att hantera detta scenario, 595 00:26:41,650 --> 00:26:43,220 ibland inte vet vad datorn kan göra. 596 00:26:43,220 --> 00:26:44,770 Och faktiskt ett program kan krascha. 597 00:26:44,770 --> 00:26:47,550 >> Men i detta fall, tänkte jag om det, och jag sa, annars sluta, 598 00:26:47,550 --> 00:26:49,850 eftersom det är den fjärde logiskt tänkbart scenario. 599 00:26:49,850 --> 00:26:51,950 Nu ska vi bara lägga några ordförråd så vi 600 00:26:51,950 --> 00:26:55,320 kan börja kasta runt termer som i övrigt är ganska intuitivt. 601 00:26:55,320 --> 00:26:57,870 Alla de saker som jag har bara gulmarkerad här, 602 00:26:57,870 --> 00:27:00,140 Jag bara gå till funktioner eller tillvägagångssätt. 603 00:27:00,140 --> 00:27:01,590 De är bara typ av åtgärder. 604 00:27:01,590 --> 00:27:04,900 Så plocka upp, öppen för, titta på, ring, öppna, öppna, 605 00:27:04,900 --> 00:27:09,170 quit-- dessa är bara åtgärder, eller vi ska kalla dem mer formellt, funktioner. 606 00:27:09,170 --> 00:27:11,410 >> Samtidigt nu i gult, Jag har markerat saker 607 00:27:11,410 --> 00:27:14,084 that-- låt oss bara börja ringa dem villkor eller grenar. 608 00:27:14,084 --> 00:27:16,750 Dessa är beslutspunkter där du kan gå på detta sätt, på detta sätt, 609 00:27:16,750 --> 00:27:18,100 eller någon annan riktning alltjämt. 610 00:27:18,100 --> 00:27:19,430 Så de kommer att vara villkor. 611 00:27:19,430 --> 00:27:20,930 Och nu detta är lite snyggare. 612 00:27:20,930 --> 00:27:24,600 Låt oss kalla dessa frågor Booleska uttryck, 613 00:27:24,600 --> 00:27:26,530 efter någon med ett efternamn Bool. 614 00:27:26,530 --> 00:27:28,340 >> Och ett booleskt uttryck är bara något 615 00:27:28,340 --> 00:27:30,290 det är antingen sant eller falskt, ja eller nej. 616 00:27:30,290 --> 00:27:35,870 Så det är frågan vars svar du bryr sig om, så att i ett tillstånd 617 00:27:35,870 --> 00:27:39,210 göra en decision-- få tillbaka ett svar, och sedan gå till vänster eller höger, eller något 618 00:27:39,210 --> 00:27:40,450 annars helt och hållet. 619 00:27:40,450 --> 00:27:42,860 >> Och sedan slutligen, dessa linjer här-- gå tillbaka 620 00:27:42,860 --> 00:27:44,737 till steg två, gå tillbaka till steg two-- vi kunde 621 00:27:44,737 --> 00:27:46,320 genomföra denna idé på olika sätt. 622 00:27:46,320 --> 00:27:49,028 Och då de av er med programmeringserfarenhet kan ha gjort 623 00:27:49,028 --> 00:27:50,670 eller kan tänka sig att göra detta på olika sätt. 624 00:27:50,670 --> 00:27:53,170 Men för dagens ändamål, är det bara tanken som räknas. 625 00:27:53,170 --> 00:27:55,400 Detta framkalla vad vi i allmänhet kallar 626 00:27:55,400 --> 00:28:00,110 en loop-- någon form av cykel, eftersom det gör mig att göra något nytt. 627 00:28:00,110 --> 00:28:03,340 >> Så nu, låt oss bara betrakta hur bra denna algoritm är. 628 00:28:03,340 --> 00:28:03,899 Det är rätt. 629 00:28:03,899 --> 00:28:06,940 Om Mike i boken, det är en av de fyra scenarios-- igen och igen 630 00:28:06,940 --> 00:28:08,023 och igen, ska vi hitta honom. 631 00:28:08,023 --> 00:28:08,890 Men hur bra är det? 632 00:28:08,890 --> 00:28:10,150 Tja, vi har inte att vara alltför formell här. 633 00:28:10,150 --> 00:28:12,066 Men låt oss bara rita något, x och y, för att få 634 00:28:12,066 --> 00:28:14,470 en känsla av formen på detta problem. 635 00:28:14,470 --> 00:28:17,160 >> På x-axeln här är storleken på mitt problem. 636 00:28:17,160 --> 00:28:20,256 Och de en y-axel här kommer att vara tid att lösa. 637 00:28:20,256 --> 00:28:21,630 Så kanske det finns flera sidor. 638 00:28:21,630 --> 00:28:24,400 Kanske är detta sekunder sida turns-- vad som helst. 639 00:28:24,400 --> 00:28:27,290 Men du vill räkna är vad den här bilden kommer att representera. 640 00:28:27,290 --> 00:28:30,630 Och det första algoritm, jag kommer att beskriva som bara en rak linje. 641 00:28:30,630 --> 00:28:33,120 Om det finns n sidor telefonboken, då det 642 00:28:33,120 --> 00:28:36,010 kan ta mig så många som n steg för att hitta Mike. 643 00:28:36,010 --> 00:28:38,930 Om Verizon eller telefonbolaget adderar ytterligare en sida nästa år, 644 00:28:38,930 --> 00:28:42,170 det kan ta mig en step-- en enhet av tid att hitta Mike. 645 00:28:42,170 --> 00:28:44,230 Så det finns bara denna 12:59 förhållande. 646 00:28:44,230 --> 00:28:45,970 Det är en rak linje lutning. 647 00:28:45,970 --> 00:28:49,110 >> Under tiden, för det andra att algorithm-- om jag 648 00:28:49,110 --> 00:28:51,570 kommer två vid en time-- två, fyra, sex, åtta eller double-- 649 00:28:51,570 --> 00:28:54,550 gå igenom sidorna två gånger åt gången, två åt gången, 650 00:28:54,550 --> 00:28:55,710 det är fortfarande rak linje. 651 00:28:55,710 --> 00:28:58,720 Det finns nu 01:59 förhållande, men bara en liten aning lägre. 652 00:28:58,720 --> 00:29:02,240 Så om det finns så många sidor i diagrammet här i gult, 653 00:29:02,240 --> 00:29:04,800 som kan ta mig här många steg eller sekunder, 654 00:29:04,800 --> 00:29:07,980 annars det kommer att ta mig dubbelt så många på den röda linjen. 655 00:29:07,980 --> 00:29:10,190 >> Men den gröna linjen är den verkliga takeaway. 656 00:29:10,190 --> 00:29:12,290 Detta är vad vi i allmänhet kallar en logorithm-- logg 657 00:29:12,290 --> 00:29:13,840 av n, där n är antalet sidor. 658 00:29:13,840 --> 00:29:16,450 Men det är formen som räknas i dag, eftersom vi inte har 659 00:29:16,450 --> 00:29:17,950 att ens tänka på att rita punkter. 660 00:29:17,950 --> 00:29:19,830 >> Tänk på en extrem situation. 661 00:29:19,830 --> 00:29:23,070 Antag Verizon morgon fördubblar antalet sidor i det telefonboken 662 00:29:23,070 --> 00:29:24,900 från 1000 till 2000. 663 00:29:24,900 --> 00:29:28,440 I den första algoritmen, I kan slösa bort en extra 1000 664 00:29:28,440 --> 00:29:32,080 steg efter Mike, bara för att Verizon fördubblade boken. 665 00:29:32,080 --> 00:29:34,740 Den andra algorithm-- det kanske ta mig en extra 500 steg. 666 00:29:34,740 --> 00:29:38,370 1000 fler sidor, jag gå två på en time-- 500 fler steg för att hitta Mike. 667 00:29:38,370 --> 00:29:41,020 >> Men det tredje algoritm är slags magisk. 668 00:29:41,020 --> 00:29:44,270 Verizon fördubblar antalet sidor från 1000 till 2000, 669 00:29:44,270 --> 00:29:47,730 men hur många fler steg gör det tar mig att leta efter Mike? 670 00:29:47,730 --> 00:29:51,220 Det är bara en, eftersom jag kan bara riva telefonboken en gång 671 00:29:51,220 --> 00:29:55,280 från en 2000 sida problem att en 1000 sida problem, och voila. 672 00:29:55,280 --> 00:29:57,030 Jag har tagit en massiv bit av det. 673 00:29:57,030 --> 00:29:59,405 >> Och om du går verkligen extrem, Anta att telefonboken 674 00:29:59,405 --> 00:30:03,600 Företaget hade något galet som en 4 miljarder sida telefonboken. 675 00:30:03,600 --> 00:30:07,020 Nå hur många steg kan det ta att hitta Mike Smith i en 4 miljarder 676 00:30:07,020 --> 00:30:09,990 sida telefonbok? 677 00:30:09,990 --> 00:30:16,450 Det är ett stort antal, men bara 4 miljarder 2000000000-1000000000 till 500 miljoner som 678 00:30:16,450 --> 00:30:18,720 250 million-- fortfarande låter som stora siffror, 679 00:30:18,720 --> 00:30:20,980 men jag är mycket snabbt komma till mindre värden. 680 00:30:20,980 --> 00:30:24,790 >> Och faktiskt, om jag gör matten rätt, jag kan bara dela 4 miljarder 681 00:30:24,790 --> 00:30:28,750 med cirka 32 gånger innan Jag komma ner till bara en. 682 00:30:28,750 --> 00:30:31,640 Så om det telefonboken var 4 miljarder sidor lång, no big deal. 683 00:30:31,640 --> 00:30:35,270 Inom några sekunder, kanske 32 sekunder, jag kunde dela den i två halvor 684 00:30:35,270 --> 00:30:39,560 och så småningom hitta Mike eller dra slutsatsen att han inte är där. 685 00:30:39,560 --> 00:30:42,219 Och det är kärnan i en algorithm-- en bra algoritm. 686 00:30:42,219 --> 00:30:44,260 Och det är en av de målen för en klass som denna, 687 00:30:44,260 --> 00:30:47,350 försöker räkna ut hur gör jag lösa problemet inte bara på rätt sätt, 688 00:30:47,350 --> 00:30:52,360 som jag alltid visste hur man gör det en sida vid en time-- men korrekt och väl. 689 00:30:52,360 --> 00:30:55,034 Hur gör jag designar bra lösningar på problem? 690 00:30:55,034 --> 00:30:57,200 Så låt oss ta en stund här och ge dig en känsla nu 691 00:30:57,200 --> 00:31:00,260 av CS50 kursen itself-- introducerar några kursens anställda. 692 00:31:00,260 --> 00:31:02,010 Strax före 02:00, vi ska ta en kort paus 693 00:31:02,010 --> 00:31:03,520 så att de av er som handlar kan 694 00:31:03,520 --> 00:31:05,130 anka ut och ta en titta på några andra klass 695 00:31:05,130 --> 00:31:06,580 och se resten av detta online. 696 00:31:06,580 --> 00:31:09,250 Men nu, låt mig presentera CS50, klassen själv, 697 00:31:09,250 --> 00:31:11,330 och i synnerhet det som är nytt. 698 00:31:11,330 --> 00:31:13,960 >> Så våras vi tillbringade en hel del time-- 699 00:31:13,960 --> 00:31:17,911 kursens personal och Jag-- tänkande om vad det är vi vill CS50 att vara, 700 00:31:17,911 --> 00:31:19,910 och gå tillbaka till första principer, så att säga, 701 00:31:19,910 --> 00:31:22,760 att fundera över vad det är vi vill denna kurs för att se ut och vara 702 00:31:22,760 --> 00:31:23,740 som för sina studenter. 703 00:31:23,740 --> 00:31:26,480 Och så du ser i problem ange noll samt en inbjudan 704 00:31:26,480 --> 00:31:28,780 att ta en titt på det URL som sammanfattar 705 00:31:28,780 --> 00:31:33,270 några av motiven bakom följande egenskaper hösten 2016. 706 00:31:33,270 --> 00:31:35,570 >> Som du kanske har samlat från TL: DR allmosor, 707 00:31:35,570 --> 00:31:39,060 kursplanen i dag samt från kurskatalogen, i år i CS50, 708 00:31:39,060 --> 00:31:42,540 du bara förväntas delta today-- så bra jobb done-- 709 00:31:42,540 --> 00:31:45,960 och den sista föreläsning den 21 november. 710 00:31:45,960 --> 00:31:49,150 Och du är välkommen, men inte förväntas närvara vid dessa föreläsningar i mitten, 711 00:31:49,150 --> 00:31:51,180 eftersom det vi gör i år, skytte 712 00:31:51,180 --> 00:31:52,661 i realtid banans material. 713 00:31:52,661 --> 00:31:54,660 Så allt kommer att stanna ström och införlivas 714 00:31:54,660 --> 00:31:57,410 så gott vi can-- aktuella och samtal som folk kanske 715 00:31:57,410 --> 00:32:00,400 att ha inom industrin i värld, men att göra detta material 716 00:32:00,400 --> 00:32:03,892 tillgängliga, som ett resultat, även earlier-- komplett med fulltext transkriptioner 717 00:32:03,892 --> 00:32:05,850 och sökbarhet och länkar till andra källor. 718 00:32:05,850 --> 00:32:07,930 >> Och faktiskt, har vi varit anspråk på en viss tid 719 00:32:07,930 --> 00:32:10,830 och vi tror nu detta, att vi kan skapa, digitalt, 720 00:32:10,830 --> 00:32:15,170 en mer engagerande, en mer övertygande pedagogisk erfarenhet, i motsats 721 00:32:15,170 --> 00:32:19,110 att samla här cirka 23 gånger personligen, höra någon som mig 722 00:32:19,110 --> 00:32:22,925 helt enkelt tala om datavetenskap, i motsats till att engagera mer aktivt. 723 00:32:22,925 --> 00:32:25,800 Så du ser i kursens kursplan en skiss av terminen här, 724 00:32:25,800 --> 00:32:27,840 tillsammans med när Föreläsningarna filmas, som du är 725 00:32:27,840 --> 00:32:29,710 Välkommen men förväntas inte, och när de kommer 726 00:32:29,710 --> 00:32:31,640 släppas på kursens hemsida. 727 00:32:31,640 --> 00:32:34,300 >> Och vad vi ska göra här på Onsdagar som börjar nästa vecka, 728 00:32:34,300 --> 00:32:37,362 är mycket mer intimt, med endast de folk som vill delta, 729 00:32:37,362 --> 00:32:39,820 är ett så kallat promenad genom, där jag och kursens huvuden 730 00:32:39,820 --> 00:32:41,730 kommer faktiskt att göra det lite mer intim 731 00:32:41,730 --> 00:32:44,313 här nere i orkestern avsnitt, fortfarande har en del teknik 732 00:32:44,313 --> 00:32:46,365 och gå igenom aktuella veckan problem set, 733 00:32:46,365 --> 00:32:50,020 och erbjuder dig particularly-- om bland de mindre comfortable-- desto mer 734 00:32:50,020 --> 00:32:52,790 vägledning som du kanske vill eller behovet av veckans utmaning. 735 00:32:52,790 --> 00:32:55,820 Och på samma sätt, för dem som inte kan åtföljer dem personligen, no big deal. 736 00:32:55,820 --> 00:32:58,486 Det kommer att finnas på samma sätt leds av en av kursens högre tjänstemän, 737 00:32:58,486 --> 00:33:02,650 Zamalya, samma möjlighet inbäddade i problemet sätter sig. 738 00:33:02,650 --> 00:33:04,960 >> Problem skiljer detta år kommer att släppas på fredagar 739 00:33:04,960 --> 00:33:08,080 och inte längre göra sju dagar senare, men 10 dagar later-- medvetet 740 00:33:08,080 --> 00:33:10,910 överlappning med varje problem set, för att bättre kunna tillgodose, 741 00:33:10,910 --> 00:33:13,050 Vi hoppas, ebb och flod i student scheman, 742 00:33:13,050 --> 00:33:16,550 speciellt när midterms eller idrott eller akademiker eller extracurriculars 743 00:33:16,550 --> 00:33:18,465 tenderar att komma och gå särskilt i mitten av terminen. 744 00:33:18,465 --> 00:33:21,340 Det borde ge dig lite mer diskretion på om du front 745 00:33:21,340 --> 00:33:25,690 ladda din vecka med CS50 eller tillbaka last det på följande helgen i stället. 746 00:33:25,690 --> 00:33:28,817 Så se till kursens kursplan här för schemat därav. 747 00:33:28,817 --> 00:33:30,900 Och du kommer att märka också bland de förändringar i år, 748 00:33:30,900 --> 00:33:34,082 för de mer bekanta med programmering i det förflutna, 749 00:33:34,082 --> 00:33:36,290 vi börjar terminen som Vi kommer i dag i Scratch, 750 00:33:36,290 --> 00:33:39,730 fokusera särskilt på språket kallas C, och sedan övergången inte 751 00:33:39,730 --> 00:33:43,430 till PHP, men till ett språk som kallas Python mot slutet av terminen 752 00:33:43,430 --> 00:33:46,565 i samband med webbprogrammering, tillsammans med SQL och JavaScript 753 00:33:46,565 --> 00:33:48,930 HTML, CSS, och ännu mer. 754 00:33:48,930 --> 00:33:51,790 >> Och som svar på en FAQ, det är verkligen är fallet 755 00:33:51,790 --> 00:33:55,520 att CS är inte lika skrämmande som jag en gång trodde att det var, men det är så mycket arbete 756 00:33:55,520 --> 00:33:57,280 som jag hade hört att det kan vara. 757 00:33:57,280 --> 00:34:03,210 Men detta är att säga att här är några statistik från hösten 2015 studentkåren, 758 00:34:03,210 --> 00:34:06,460 varvid de horisontella blå linjerna representerar det genomsnittliga antalet timmar 759 00:34:06,460 --> 00:34:06,960 rapporterad. 760 00:34:06,960 --> 00:34:10,570 Och du ser ett genomsnitt av sex till tio till 12-- kanske 16 761 00:34:10,570 --> 00:34:14,580 eller så och så vidare, men med hög varians att vara tydlig. 762 00:34:14,580 --> 00:34:18,570 Och så inse att det inte bara är studenter mer bekväm och mindre 763 00:34:18,570 --> 00:34:22,150 bekväm i kursen men en motsvarande stöd 764 00:34:22,150 --> 00:34:25,699 struktur för att få dessa studenter genom terminen framgångsrikt. 765 00:34:25,699 --> 00:34:29,409 >> I själva verket, som svar på en FAQ, bör du tar CS50 som ett första år? 766 00:34:29,409 --> 00:34:30,139 Absolut. 767 00:34:30,139 --> 00:34:32,690 Och faktiskt, jag ångrar inte har hittat min väg 768 00:34:32,690 --> 00:34:35,170 eller hittat ett nytt fält det första året också. 769 00:34:35,170 --> 00:34:39,149 Och skulle du ta CS50 med andra kurser, förvisso som well-- 770 00:34:39,149 --> 00:34:41,940 och allmänna råd vi kanske ge eleverna, det är CS50 förmodligen 771 00:34:41,940 --> 00:34:44,929 inte den typ av klass eller intro klass att du bör ta med tre 772 00:34:44,929 --> 00:34:47,199 andra eller fyra andra p-set klasser. 773 00:34:47,199 --> 00:34:50,583 Men om du tar två andra p-set klasser, något annat, och CS50, 774 00:34:50,583 --> 00:34:51,499 helt hanterbar. 775 00:34:51,499 --> 00:34:54,900 Jag har haft många elever i tidigare gjort det ganska framgångsrikt. 776 00:34:54,900 --> 00:34:57,490 >> Och för att få dig mot det mållinjen framgångsrikt, 777 00:34:57,490 --> 00:35:00,260 inte kursen har sections-- olika spår för studenter 778 00:35:00,260 --> 00:35:03,100 mindre bekväm, bekvämare, och någonstans däremellan, 779 00:35:03,100 --> 00:35:04,850 varvid i banans första problemet set, 780 00:35:04,850 --> 00:35:06,360 du kommer att bli ombedd att beskriva dig själv. 781 00:35:06,360 --> 00:35:09,151 Och om du är bland de mindre bekväm, det är sånt 782 00:35:09,151 --> 00:35:10,420 att du bara ganska vet. 783 00:35:10,420 --> 00:35:13,010 Och faktiskt, det har varit den växande demografiska i CS50 784 00:35:13,010 --> 00:35:14,090 för ett par år. 785 00:35:14,090 --> 00:35:17,680 >> Från och med i höstas för Exempelvis 58% av klassen 786 00:35:17,680 --> 00:35:20,560 beskrev sig själva som bland de mindre bekväm, 787 00:35:20,560 --> 00:35:23,210 med 9% bland dem mer bekväm, och sedan 788 00:35:23,210 --> 00:35:25,900 de andra eleverna där i röd beskriver sig själva 789 00:35:25,900 --> 00:35:27,890 som någonstans däremellan. 790 00:35:27,890 --> 00:35:31,980 Och du ser här ämnena övergripande och schema av sektioner, som alla 791 00:35:31,980 --> 00:35:34,820 erbjuds personligen, i realtid, med banans 792 00:35:34,820 --> 00:35:38,320 fantastiska personal undervisningsassistenter och kursassistenter, vissa av dem 793 00:35:38,320 --> 00:35:39,660 möter du i ett ögonblick. 794 00:35:39,660 --> 00:35:42,993 >> Sektioner själva, som du ser, kommer vara måndagar och tisdagar och onsdagar, 795 00:35:42,993 --> 00:35:45,910 så att du kan dyka in efter engagerande, om du så 796 00:35:45,910 --> 00:35:48,110 välja, i banans föreläsa tidigare denna vecka. 797 00:35:48,110 --> 00:35:51,420 Och sedan kontorstid, som säkert, med varje år som går, 798 00:35:51,420 --> 00:35:54,110 har varit mindre av en utmana om kursen. 799 00:35:54,110 --> 00:35:57,040 Och i år, planerar vi inte bara för att hålla kontor hours-- en 800 00:35:57,040 --> 00:36:00,300 vid ett möjligheter till hjälp för studenter på onsdagar torsdagar 801 00:36:00,300 --> 00:36:03,790 och söndagar, den sista av de vara i eftermiddag vid utformningen 802 00:36:03,790 --> 00:36:06,910 att minska en del av den stress som alltid uppstår med sena 803 00:36:06,910 --> 00:36:10,180 p-settting med en tidsfrist looming-- men kontorstid kommer också att erbjudas 804 00:36:10,180 --> 00:36:14,920 på måndagar och tisdagar och Onsdagar och fredagar och lördagar, 805 00:36:14,920 --> 00:36:17,080 tack vare våra vänner på HSA. 806 00:36:17,080 --> 00:36:20,330 >> CS50 har nu sitt eget utrymme för studenter och CS50 personal, 807 00:36:20,330 --> 00:36:23,070 ovanpå 67 Mount Auburn Street, direkt i Harvard Square. 808 00:36:23,070 --> 00:36:26,340 Visionen som är att CS50: s TF och CA hela veckan, 809 00:36:26,340 --> 00:36:29,052 ganska mycket under större delen dagar, kommer att vara där för stöd. 810 00:36:29,052 --> 00:36:30,760 Så om du har några fråga om en p-set 811 00:36:30,760 --> 00:36:33,093 eller om du känner dig lite blockerade eller lite förvirrad, 812 00:36:33,093 --> 00:36:35,640 och fan, du har en timme eller en halvtimme mellan klasser, 813 00:36:35,640 --> 00:36:38,920 speciellt i square-- kan man pop i och har den frågan besvaras 814 00:36:38,920 --> 00:36:41,720 av har denna förvirring clarified-- mycket i anden, 815 00:36:41,720 --> 00:36:45,490 du är bekant, av matte avdelningens egna matematiska frågor centrum 816 00:36:45,490 --> 00:36:49,300 men ganska mycket dygnet per runt [? Gcal?] Som vi kommer att lägga upp på nätet. 817 00:36:49,300 --> 00:36:52,400 >> Handledning är också tillgängliga för dem studenter, fritt från banans 818 00:36:52,400 --> 00:36:54,750 egen personal om du vill mer intim en på en, 819 00:36:54,750 --> 00:36:58,940 eller bara två eller tre klasskamrater, som arbetar med en av kursens personal. 820 00:36:58,940 --> 00:37:02,320 Och faktiskt, dessa här är bara några av kursens personal, 821 00:37:02,320 --> 00:37:04,120 några av dem du kommer träffas på bara ett ögonblick. 822 00:37:04,120 --> 00:37:07,440 I själva verket, CS50: s egen huvud undervisning karl, 823 00:37:07,440 --> 00:37:09,790 och huvudet kurs assistent, och preceptor, 824 00:37:09,790 --> 00:37:12,998 kunde komma på upp, tillåta dem att säga hej. 825 00:37:12,998 --> 00:37:22,498 >> [APPLÅDER] 826 00:37:22,498 --> 00:37:23,456 TALARE 1: [OHÖRBART]. 827 00:37:23,456 --> 00:37:51,842 828 00:37:51,842 --> 00:37:57,856 >> [APPLÅDER] 829 00:37:57,856 --> 00:37:58,814 TALARE 2: [OHÖRBART]. 830 00:37:58,814 --> 00:38:17,240 831 00:38:17,240 --> 00:38:27,238 >> [APPLÅDER] 832 00:38:27,238 --> 00:38:28,196 TALARE 3: [OHÖRBART]. 833 00:38:28,196 --> 00:38:58,951 834 00:38:58,951 --> 00:39:03,120 >> [APPLÅDER] 835 00:39:03,120 --> 00:39:06,740 >> DAVID MALAN: Och ge oss möjlighet att ta ombord två av CS50 mest 836 00:39:06,740 --> 00:39:09,730 högre tjänstemän, Rob och Zamayla också. 837 00:39:09,730 --> 00:39:15,120 >> [APPLÅDER] 838 00:39:15,120 --> 00:39:17,226 >> Faktum är att både Rob och Zamayla har varit med oss 839 00:39:17,226 --> 00:39:19,940 så länge, att jag kunde att gå in CS50: s arkiv 840 00:39:19,940 --> 00:39:22,470 och hitta denna mycket SD tagningar av dem deltar 841 00:39:22,470 --> 00:39:25,402 på scenen själva för några år sedan. 842 00:39:25,402 --> 00:39:26,110 ROB: [OHÖRBART]. 843 00:39:26,110 --> 00:39:53,660 844 00:39:53,660 --> 00:39:59,247 >> [APPLÅDER] 845 00:39:59,247 --> 00:40:00,080 ZAMAYLA: [OHÖRBART] 846 00:40:00,080 --> 00:40:50,888 847 00:40:50,888 --> 00:40:52,467 >> [APPLÅDER] 848 00:40:52,467 --> 00:40:53,425 DAVID MALAN: Tack. 849 00:40:53,425 --> 00:40:56,160 850 00:40:56,160 --> 00:40:58,030 Så utöver dessa lagmedlemmar här, 851 00:40:58,030 --> 00:41:01,662 CS50 har ett team på nästan 100 anställda, som alla 852 00:41:01,662 --> 00:41:04,370 kommer att finnas tillgänglig för sektioner och kontorstid och så mycket mer. 853 00:41:04,370 --> 00:41:06,920 Och som Rob säger också, är detta den mest signifikanta översyn 854 00:41:06,920 --> 00:41:09,534 av CS50 i de 10 år som Jag har varit i [OHÖRBART]. 855 00:41:09,534 --> 00:41:12,200 [OHÖRBART] fokuserat speciellt i att tillhandahålla en stödstruktur, 856 00:41:12,200 --> 00:41:14,050 putsning bort en hel del huvuddelen som har varit 857 00:41:14,050 --> 00:41:16,870 ackumuleras i 10 år av iterativa utvecklingen 858 00:41:16,870 --> 00:41:18,120 på kursens problemsamlingar. 859 00:41:18,120 --> 00:41:21,470 >> Så detta år, inte bara i klassen men även i form av kursen s problem 860 00:41:21,470 --> 00:41:24,800 set, bör du hitta saker till vara mer strömlinjeformad, trimmer, mycket 861 00:41:24,800 --> 00:41:26,700 mer hanterbar än i år tidigare, som vi 862 00:41:26,700 --> 00:41:31,330 sprida lite av bagaget som är utvecklad av natur utvecklas år 863 00:41:31,330 --> 00:41:32,970 efter år och iteration. 864 00:41:32,970 --> 00:41:35,110 Så det nya och förbättrade börjar idag. 865 00:41:35,110 --> 00:41:37,860 >> Du kommer att träffa lite mer av den Naturligtvis personal i [OHÖRBART] 866 00:41:37,860 --> 00:41:40,186 vid 02:30, där vi tjänar, som en tradition, tårta. 867 00:41:40,186 --> 00:41:42,060 Det finns lite mer tårta än så, men du kommer 868 00:41:42,060 --> 00:41:44,690 Möt Erin och Tobias och andra fortfarande. 869 00:41:44,690 --> 00:41:46,470 Och låt mig ge dig en turné innan vi hör 870 00:41:46,470 --> 00:41:49,600 från några av de andra anställda i klassen, av vad som väntar också. 871 00:41:49,600 --> 00:41:52,730 Faktum är att vi alltid börjar CS50: s termin denna kommande lördag, 872 00:41:52,730 --> 00:41:54,330 med vad som kallas CS50 Puzzle dag. 873 00:41:54,330 --> 00:41:56,710 >> Det har ingenting att göra med datateknik per se, 874 00:41:56,710 --> 00:41:58,669 men med ca problem lösa mer generellt. 875 00:41:58,669 --> 00:42:01,210 Och om du så önskar att delta, per några av inbjudningarna, 876 00:42:01,210 --> 00:42:03,460 du kanske har sett dörr tappas eller på scenen här, 877 00:42:03,460 --> 00:42:05,830 Det är en möjlighet i team av två eller tre eller fyra, 878 00:42:05,830 --> 00:42:10,680 att delta för pussel och pizza och priser och more-- denna lördag, 879 00:42:10,680 --> 00:42:12,560 håll ögonen öppna för mer. 880 00:42:12,560 --> 00:42:15,082 >> Du hittar också att varje Fredag, på Fire and Ice, 881 00:42:15,082 --> 00:42:16,790 inte CS50 föra en massa studenter 882 00:42:16,790 --> 00:42:19,100 till lunch, för att göra en stor klass känner sig mer intim, 883 00:42:19,100 --> 00:42:21,820 och i allmänhet föra samman alumner och vänner från industrin 884 00:42:21,820 --> 00:42:24,710 att tala om vad de har varit upp till sedan examen. 885 00:42:24,710 --> 00:42:27,820 På samma sätt, i år kommer vi inviga den första någonsin CS50 50 886 00:42:27,820 --> 00:42:31,390 kodning contest-- en mid-termin möjlighet att låta alla 887 00:42:31,390 --> 00:42:35,430 på en opt i grunden, att ha en utmaning av intelligens mot klasskamrater, 888 00:42:35,430 --> 00:42:39,250 igen i grupper om två eller tre eller fyra, med angivande av enbart programmering 889 00:42:39,250 --> 00:42:41,920 kunniga som du sedan har enligt bältet efter bara sex eller sju 890 00:42:41,920 --> 00:42:44,710 veckor för klassen och deltagande i denna typ av konkurrens 891 00:42:44,710 --> 00:42:50,261 online-- om du vill finslipa din egen färdigheter allt mer i denna utmaning. 892 00:42:50,261 --> 00:42:52,760 I slutet av terminen är den så kallade CS50 Hackathon-- 893 00:42:52,760 --> 00:42:56,970 en möjlighet som börjar vid 07:00 PM slutar vid 07:00, och längs vägen 894 00:42:56,970 --> 00:43:01,900 är 12 kväll timmar på sig att dyka i kursens sista project-- 895 00:43:01,900 --> 00:43:04,820 en möjlighet att utforma och genomföra de flesta något av intresse 896 00:43:04,820 --> 00:43:06,980 till dig med din undervisning karl vägledning. 897 00:43:06,980 --> 00:43:09,600 Omkring 09:00 gör vi vanligtvis servera pizza, 01:00, 898 00:43:09,600 --> 00:43:13,210 Philippes och några av oss som fortfarande är vaken på 5:00, 899 00:43:13,210 --> 00:43:16,310 är shuttle bussed ner vägen till IHOP för frukost. 900 00:43:16,310 --> 00:43:19,340 >> Och sedan ett par dagar senare är den så kallade CS50 fare-- 901 00:43:19,340 --> 00:43:23,450 ett slut på termin utställning i firandet av hur långt så många 902 00:43:23,450 --> 00:43:28,200 av CS50 studenter har kommit från vecka noll ända till vecka, 903 00:43:28,200 --> 00:43:32,610 och med tanke på att 73% av de klasskamrater och din i år har 904 00:43:32,610 --> 00:43:34,840 aldrig tagit en CS klass innan. 905 00:43:34,840 --> 00:43:39,226 I själva verket, att reemphasize så mycket, här är några fler ansikten från CS50 personal. 906 00:43:39,226 --> 00:43:40,184 SPEAKER 4: [OHÖRBART]. 907 00:43:40,184 --> 00:43:45,909 908 00:43:45,909 --> 00:43:46,867 SPEAKER 5: [OHÖRBART]. 909 00:43:46,867 --> 00:43:51,332 910 00:43:51,332 --> 00:43:52,290 SPEAKER 6: [OHÖRBART]. 911 00:43:52,290 --> 00:43:55,276 912 00:43:55,276 --> 00:43:56,234 SPEAKER 7: [OHÖRBART]. 913 00:43:56,234 --> 00:44:01,727 914 00:44:01,727 --> 00:44:02,643 SPEAKER 8: [OHÖRBART] 915 00:44:02,643 --> 00:44:10,066 916 00:44:10,066 --> 00:44:11,024 SPEAKER 9: [OHÖRBART]. 917 00:44:11,024 --> 00:44:14,475 918 00:44:14,475 --> 00:44:15,461 >> SPEAKER 4: [OHÖRBART]. 919 00:44:15,461 --> 00:44:16,461 >> SPEAKER 10: [OHÖRBART]. 920 00:44:16,461 --> 00:44:21,456 921 00:44:21,456 --> 00:44:23,438 SPEAKER 11: [OHÖRBART]. 922 00:44:23,438 --> 00:44:24,438 SPEAKER 12: [OHÖRBART]. 923 00:44:24,438 --> 00:44:30,438 924 00:44:30,438 --> 00:44:31,396 SPEAKER 13: [OHÖRBART] 925 00:44:31,396 --> 00:44:37,360 926 00:44:37,360 --> 00:44:40,342 >> Högtalaren 14: [OHÖRBART]. 927 00:44:40,342 --> 00:44:42,863 >> SPEAKER 13: [OHÖRBART]. 928 00:44:42,863 --> 00:44:43,821 SPEAKER 15: [OHÖRBART] 929 00:44:43,821 --> 00:44:48,785 930 00:44:48,785 --> 00:44:49,785 SPEAKER 16: [OHÖRBART]. 931 00:44:49,785 --> 00:44:53,761 932 00:44:53,761 --> 00:44:55,252 >> SPEAKER 11: [OHÖRBART] 933 00:44:55,252 --> 00:44:57,773 934 00:44:57,773 --> 00:44:58,731 SPEAKER 5: [OHÖRBART]. 935 00:44:58,731 --> 00:45:11,250 936 00:45:11,250 --> 00:45:15,130 DAVID MALAN: En del av laget själva handlar klasser. 937 00:45:15,130 --> 00:45:17,760 Men om dessa medlemmar av CS50 personal är här, 938 00:45:17,760 --> 00:45:19,230 kunde komma på för bara ett ögonblick. 939 00:45:19,230 --> 00:45:23,450 CS50: s TF och CA och [? personal?] medlemmar här-- dessa är bara några 940 00:45:23,450 --> 00:45:28,880 av faces-- varav du bara såg, och några other-- och några andra 941 00:45:28,880 --> 00:45:30,020 fortfarande. 942 00:45:30,020 --> 00:45:33,242 Varför vi inte gå vidare och tillåta ni en fem minuters paus. 943 00:45:33,242 --> 00:45:35,450 Om du behöver ducka ut till butiks klasser, det är bra. 944 00:45:35,450 --> 00:45:38,900 Och i fem minuter, kommer vi att återuppta, ta en titt på Scratch-- den första 945 00:45:38,900 --> 00:45:42,420 av vår programmeringsspråk, träffa kursens personalen här lite mer, 946 00:45:42,420 --> 00:45:45,020 och fokusera ultimately på problem set noll. 947 00:45:45,020 --> 00:45:46,710 Så vi ska vara tillbaka i fem minuter. 1 00:45:46,864 --> 00:45:47,370 >> Okej. 2 00:45:47,370 --> 00:45:48,590 Så vi är tillbaka. 3 00:45:48,590 --> 00:45:51,330 Och i våra återstående tid idag, målet 4 00:45:51,330 --> 00:45:54,320 är att jämna ut spelplanen i termer av vissa terminologi, 5 00:45:54,320 --> 00:45:55,297 i termer av några idéer. 6 00:45:55,297 --> 00:45:57,380 Eftersom faktiskt, enligt några av listorna tidigare, 7 00:45:57,380 --> 00:46:00,130 Det kommer att bli en rad erfarenhetsnivåer i klassen, 8 00:46:00,130 --> 00:46:03,210 några av vars elever har tagit del programmering innan, 9 00:46:03,210 --> 00:46:04,200 några av dem har inte. 10 00:46:04,200 --> 00:46:07,430 Och så med detta första problem set och med denna första språk 11 00:46:07,430 --> 00:46:10,830 har vi en möjlighet att starta att ta för givet efter idag 12 00:46:10,830 --> 00:46:12,960 några vanliga ordförråd och idé. 13 00:46:12,960 --> 00:46:15,590 >> Och vi kommer att göra detta med hjälp av kursens första languages-- 14 00:46:15,590 --> 00:46:21,070 Förutom C och Python och JavaScript och SQL och HTML och CSS, 15 00:46:21,070 --> 00:46:24,450 Vi kommer att fokusera initialt och bara för problem in noll 16 00:46:24,450 --> 00:46:28,160 på denna grafiska språket, kallas Scratch, utvecklad av MIT Media Lab 17 00:46:28,160 --> 00:46:30,880 väg, för att hjälpa studenter och barn i synnerhet 18 00:46:30,880 --> 00:46:35,070 uttrycka sig algorithmically-- på ett sätt mer i linje med vad 19 00:46:35,070 --> 00:46:37,300 vi kan kalla beräknings tänkande. 20 00:46:37,300 --> 00:46:40,985 >> Och det är ett användbart språk eftersom mycket snabbt nästa vecka i vecka ett, 21 00:46:40,985 --> 00:46:44,360 vi övergå till ett mer traditionell och svårbegripliga språk som kallas 22 00:46:44,360 --> 00:46:46,370 C, vilket är rent text. 23 00:46:46,370 --> 00:46:48,930 Du använder bara tangentbordet i För att skriva instruktioner 24 00:46:48,930 --> 00:46:50,230 som dessa på skärmen. 25 00:46:50,230 --> 00:46:52,840 Men även om du har aldrig sett ett programmeringsspråk före, 26 00:46:52,840 --> 00:46:55,170 på bara kasta en blick på detta, alla vara det kryptiskt, 27 00:46:55,170 --> 00:47:00,010 du kan nog gissa att förmodligen skriver Hello World. 28 00:47:00,010 --> 00:47:02,050 Men det finns en hel del syntaktisk overhead där. 29 00:47:02,050 --> 00:47:05,770 Det är konstigt hash symbol eller hash-taggen där uppe. 30 00:47:05,770 --> 00:47:08,900 Det finns vinkeljärnen, några parenteser, klamrar, halv colon-- 31 00:47:08,900 --> 00:47:11,880 det är bara så mycket visuell syntax som kommer i vägen. 32 00:47:11,880 --> 00:47:13,940 Vi börjar kursen med Skrapa för att få 33 00:47:13,940 --> 00:47:17,600 förbi alla dem intellektuellt ointressanta distraktioner, 34 00:47:17,600 --> 00:47:20,290 och i stället fokusera på idéer. 35 00:47:20,290 --> 00:47:22,540 >> I själva verket kan detta vara innan. 36 00:47:22,540 --> 00:47:24,830 Detta för detta, skall vecka vara efter. 37 00:47:24,830 --> 00:47:26,760 Detta i denna grafiska språk Scratch, 38 00:47:26,760 --> 00:47:29,870 är hur du skulle genomföra samma program-- ett program som när det körs, 39 00:47:29,870 --> 00:47:31,340 helt enkelt säger Hej världen. 40 00:47:31,340 --> 00:47:34,740 Och vad är trevligt om Scratch är att det är det här grafisk programmering 41 00:47:34,740 --> 00:47:38,780 miljö som använder pusselbitar eller block, som bara låsa ihop 42 00:47:38,780 --> 00:47:40,440 om det gör logisk mening att göra det. 43 00:47:40,440 --> 00:47:43,810 Och med Scratch kan du utveckla animeringar och interaktiva spel 44 00:47:43,810 --> 00:47:47,270 och konst, och ett antal saker som ni kan föreställa i ditt eget sinne, 45 00:47:47,270 --> 00:47:51,200 och genomföra dem genom att helt enkelt att dra och släppa pusselbitar. 46 00:47:51,200 --> 00:47:54,265 >> Och faktiskt, vi har förmågan att uttrycka några av samma idéer 47 00:47:54,265 --> 00:47:56,890 som jag nämnde bara ett ögonblick sedan inom ramen för Mike Smith 48 00:47:56,890 --> 00:48:00,670 och söka en telefon book-- saker liknande funktioner, bara åtgärder, 49 00:48:00,670 --> 00:48:03,070 saker som loopar som kan göra saker om och om igen, 50 00:48:03,070 --> 00:48:05,170 variabler, vilket är något som vi ska presentera, 51 00:48:05,170 --> 00:48:08,086 men det är bekant kanske från algebra-- bara någon form av platshållare 52 00:48:08,086 --> 00:48:10,840 att lagra ett visst värde som du kanske behöver later-- booleska uttryck, 53 00:48:10,840 --> 00:48:13,720 där de ja nej eller sant falska frågor från tidigare. 54 00:48:13,720 --> 00:48:17,117 Förutsättningarna är de gafflar i road-- dessa grenar så att säga. 55 00:48:17,117 --> 00:48:19,700 Och sedan finns det några finare funktioner som vi kommer att se även idag, 56 00:48:19,700 --> 00:48:22,850 kallade matriser och trådar och händelser, som vi sedan återkomma över 57 00:48:22,850 --> 00:48:24,460 tid på olika språk. 58 00:48:24,460 --> 00:48:26,790 Men Scratch tillåter oss att utforska alla dessa. 59 00:48:26,790 --> 00:48:30,779 Så här i Scratch, lila blocket är vad en funktion är typiskt 60 00:48:30,779 --> 00:48:31,570 kommer att se ut. 61 00:48:31,570 --> 00:48:35,620 Denna purpurfärgade pusselbit som har några ord som säg, som är den handling, 62 00:48:35,620 --> 00:48:38,490 och då kan det ha en argument eller ett parameter-- något sätt 63 00:48:38,490 --> 00:48:41,140 av typ av skräddarsy vad som blockerar gör 64 00:48:41,140 --> 00:48:45,182 så att det inte i förväg har fastställt MIT vad denna lila blocket säger. 65 00:48:45,182 --> 00:48:47,390 I själva verket kommer du se i en ögonblick som jag kan skriva 66 00:48:47,390 --> 00:48:49,931 ord som Hej världen, eller Hej David, eller hej Zamayla, 67 00:48:49,931 --> 00:48:53,750 eller vad jag vill, i argumentet till det pusslet piece-- den vita rutan 68 00:48:53,750 --> 00:48:54,251 det. 69 00:48:54,251 --> 00:48:57,166 Under tiden, om jag vill ha en slinga, vi ska se att det finns pusselbitar som 70 00:48:57,166 --> 00:48:58,640 ser en liten orange som denna. 71 00:48:58,640 --> 00:49:01,690 Och deras form slags antyder att något händer igen och igen 72 00:49:01,690 --> 00:49:02,680 i en cykel. 73 00:49:02,680 --> 00:49:06,800 >> Så om jag svepa en säga hej världen blocket med en evigt blockera i Scratch, 74 00:49:06,800 --> 00:49:10,307 det är bara kommer att fortsätta att säga hej världen för alltid, bokstavligt talat. 75 00:49:10,307 --> 00:49:12,390 Samtidigt finns det en annan typ av slinga i Scratch 76 00:49:12,390 --> 00:49:14,348 att vi kommer att see-- en upprepning block-- där, om du 77 00:49:14,348 --> 00:49:17,940 i förväg veta hur många gånger du vill att slingan för att verkställa 78 00:49:17,940 --> 00:49:21,850 ett begränsat antal gånger i fact-- dig kan ange att genom att skriva i ett antal 79 00:49:21,850 --> 00:49:25,380 eller ens koppla in en variabel, som x eller y som vi får se. 80 00:49:25,380 --> 00:49:27,690 >> I själva verket, variabler som Jag i detta fall, som 81 00:49:27,690 --> 00:49:30,109 är ett gemensamt namn för en heltalsvariabel som 82 00:49:30,109 --> 00:49:31,900 bara lagrar en number-- ett heltal kan vara, 83 00:49:31,900 --> 00:49:35,470 att använda denna orange blocket här ställa in en variabel som jag till noll. 84 00:49:35,470 --> 00:49:38,900 Här är ett exempel på gröna en Boolean uttryck i Scratch. 85 00:49:38,900 --> 00:49:43,700 Även om det ser ut som en matte formel, matematik ojämlikhet som detta 86 00:49:43,700 --> 00:49:45,320 verkligen är booleska uttryck. 87 00:49:45,320 --> 00:49:46,570 Detta är antingen sant eller falskt. 88 00:49:46,570 --> 00:49:48,300 I är mindre än 50. 89 00:49:48,300 --> 00:49:51,815 Det är antingen ett ja eller nej svar eller sant eller falskt svar. 90 00:49:51,815 --> 00:49:53,940 Och vi i allmänhet kallar de booleska uttryck. 91 00:49:53,940 --> 00:49:55,148 Och det behöver inte vara 50. 92 00:49:55,148 --> 00:49:57,970 Det kan vara x mindre än y, större än y, lika med y-- 93 00:49:57,970 --> 00:50:00,020 vilket som helst antal andra frågor kan ställas. 94 00:50:00,020 --> 00:50:03,250 >> Nu, vid en första anblick kan det se plötsligt ganska fet här, och det är. 95 00:50:03,250 --> 00:50:06,540 Men koncept klokt, det ganska bekant från förut. 96 00:50:06,540 --> 00:50:09,370 Om x är mindre än y, än att säga lika mycket. 97 00:50:09,370 --> 00:50:12,230 Annars om x är större än y, sedan säga så mycket. 98 00:50:12,230 --> 00:50:14,260 Else säga x är lika med y. 99 00:50:14,260 --> 00:50:17,220 Så vi har ett exempel det av en tredje scenario-- 100 00:50:17,220 --> 00:50:20,600 den enda tredje possibility-- x är antingen större än, mindre än, eller lika med. 101 00:50:20,600 --> 00:50:22,420 Så vi har en trevägs vägskäl. 102 00:50:22,420 --> 00:50:26,290 >> Och lägg märke till vad är hett här-- Scratch, det verkar, har bara ett pussel 103 00:50:26,290 --> 00:50:28,840 stycke, i det här fallet, i om annat block. 104 00:50:28,840 --> 00:50:32,090 Och ändå verkar innebära att du kan bara har en tvåvägs vägskäl. 105 00:50:32,090 --> 00:50:34,631 Du kan gå till vänster eller höger, men hur är det tredje scenariot? 106 00:50:34,631 --> 00:50:35,760 Vad händer om x är lika y? 107 00:50:35,760 --> 00:50:36,500 Ingen stor grej. 108 00:50:36,500 --> 00:50:39,640 Ta en pusselbit, sätta ytterligare en insida av det 109 00:50:39,640 --> 00:50:45,759 att skapa den semantiska motsvarande av om, annars om else-- och nu 110 00:50:45,759 --> 00:50:47,300 har dina tre sätt vägskäl. 111 00:50:47,300 --> 00:50:49,091 Och som vi ser, den Scratch pusselbitar 112 00:50:49,091 --> 00:50:51,820 kan sträckas och växa, så att klämma mer saker i dem. 113 00:50:51,820 --> 00:50:54,420 Du behöver inte passa allt i standardstorlek. 114 00:50:54,420 --> 00:50:56,690 >> Detta är något vi kommer Snart ser kallas en matris. 115 00:50:56,690 --> 00:51:00,880 Det är som en list-- något sätt av lagra flera bitar av information 116 00:51:00,880 --> 00:51:02,886 i en variabel, inte bara en siffra. 117 00:51:02,886 --> 00:51:05,760 Dessa kommer vi att se en representant för något som kallas multi-threading. 118 00:51:05,760 --> 00:51:08,280 I själva verket, alla dina Mac och PC i dessa dagar 119 00:51:08,280 --> 00:51:10,810 stödja multi-threading, vilket innebär att du kan bokstavligen 120 00:51:10,810 --> 00:51:12,390 göra flera saker samtidigt. 121 00:51:12,390 --> 00:51:15,390 Du kan ha Microsoft Word upp i förgrund, som arbetar på någon uppsats. 122 00:51:15,390 --> 00:51:17,160 Du kanske har en webbläsare i bakgrunden öppningen 123 00:51:17,160 --> 00:51:18,720 G-post eller Facebook eller liknande. 124 00:51:18,720 --> 00:51:22,730 Datorn kan göra flera saker idag eftersom det är flertrådade, 125 00:51:22,730 --> 00:51:26,390 och program som de är ii synnerhet är också multi-gängade. 126 00:51:26,390 --> 00:51:28,970 >> Det finns saker som kallas händelser som väl i en värld av Scratch, 127 00:51:28,970 --> 00:51:32,640 och sedan finns det en alldeles, att göra våra egna anpassade pusselbitar om saker och ting 128 00:51:32,640 --> 00:51:34,810 faktiskt inte existerar i förväg. 129 00:51:34,810 --> 00:51:38,260 Så låt oss motivera detta på följande sätt. 130 00:51:38,260 --> 00:51:40,580 För några år sedan, när jag först upptäckte Scratch, 131 00:51:40,580 --> 00:51:43,530 när jag var faktiskt en grad student vid MIT, vi 132 00:51:43,530 --> 00:51:45,640 oss fick i uppdrag att göra läxor. 133 00:51:45,640 --> 00:51:47,614 Och jag implemented-- som i efterhand, 134 00:51:47,614 --> 00:51:50,780 var ett mycket dåligt beslut eftersom det är den mest upprörande låt i världen 135 00:51:50,780 --> 00:51:53,321 att lyssna på under åtta timmar medan du arbetar med homework-- 136 00:51:53,321 --> 00:51:57,180 men något jag hade kallat Oscar tid, vilket kanske är en bekant sång. 137 00:51:57,180 --> 00:51:59,820 >> CS50s äger Jordan Hayashi, en av våra mer seniora medarbetare, 138 00:51:59,820 --> 00:52:03,920 har uppgraderat det för 2015 och nu 2016, sedan tillbaka i dag, 139 00:52:03,920 --> 00:52:06,610 Jag hade allt bara gå i Oscars papperskorgen. 140 00:52:06,610 --> 00:52:09,320 Nu stöder vi återvinning och kompostering. 141 00:52:09,320 --> 00:52:12,050 >> Men att måla bilden av vad vi kan göra här 142 00:52:12,050 --> 00:52:14,130 och för att motivera några av exemplen på lägre nivå, 143 00:52:14,130 --> 00:52:16,400 skulle vi kunna få en annan volontär att bara komma på upp 144 00:52:16,400 --> 00:52:18,331 och spela min första hemuppgift någonsin? 145 00:52:18,331 --> 00:52:18,830 Kom upp. 146 00:52:18,830 --> 00:52:19,250 Vad heter du? 147 00:52:19,250 --> 00:52:20,030 >> HENRY: Henry. 148 00:52:20,030 --> 00:52:22,660 >> DAVID MALAN: Henry, kom upp. 149 00:52:22,660 --> 00:52:24,190 Kom upp. 150 00:52:24,190 --> 00:52:27,070 Huvudet åt båda hållen, och du ser i ett ögonblick, 151 00:52:27,070 --> 00:52:29,870 Jag kommer att gå vidare och träffa gröna flaggan i övre högra 152 00:52:29,870 --> 00:52:31,100 hörn, vilket innebär att gå. 153 00:52:31,100 --> 00:52:33,320 Den lilla stoppskylt ikon kommer att säga stopp, 154 00:52:33,320 --> 00:52:35,490 och det är när du startar och stoppa programmet. 155 00:52:35,490 --> 00:52:36,450 Trevligt att träffas. 156 00:52:36,450 --> 00:52:36,950 Okej. 157 00:52:36,950 --> 00:52:39,100 Så vi kommer att se instruktionerna på skärmen i ett ögonblick. 158 00:52:39,100 --> 00:52:41,450 Och bara genom att spela detta spel för några seconds-- lita på mig, 159 00:52:41,450 --> 00:52:43,670 Vi kommer inte att vilja spela hela vägen till end-- du kommer 160 00:52:43,670 --> 00:52:45,470 få en känsla för vad programmet gör. 161 00:52:45,470 --> 00:52:49,170 Och mer än bara fokusera på Henry är bra eller dåligt på detta spel, fokus 162 00:52:49,170 --> 00:52:52,600 och hur var det genomförs av mig ursprungligen och sedan av Jordan. 163 00:52:52,600 --> 00:52:54,640 Med andra ord, där är de variabler? 164 00:52:54,640 --> 00:52:55,520 Var är slingorna? 165 00:52:55,520 --> 00:52:56,520 Var är funktionerna? 166 00:52:56,520 --> 00:53:00,700 Och vi får se om vi inte ser de under huven. 167 00:53:00,700 --> 00:53:03,660 >> Bara klicka och dra papperskorgen till lämpligt fack. 168 00:53:03,660 --> 00:54:02,100 >> [Musik spelar] 169 00:54:02,100 --> 00:54:02,600 Okej. 170 00:54:02,600 --> 00:54:03,160 Det är väldigt bra. 171 00:54:03,160 --> 00:54:04,286 Varför vi inte stoppa det där. 172 00:54:04,286 --> 00:54:04,786 Tack. 173 00:54:04,786 --> 00:54:05,830 Grattis till Henry. 174 00:54:05,830 --> 00:54:07,002 Tack. 175 00:54:07,002 --> 00:54:10,690 >> [APPLÅDER] 176 00:54:10,690 --> 00:54:12,450 >> Tänk felsökning programmet. 177 00:54:12,450 --> 00:54:15,880 Om det finns ett problem två minuter song-- men så 178 00:54:15,880 --> 00:54:17,430 vad som händer här egentligen? 179 00:54:17,430 --> 00:54:20,900 Så komplicerat som det kanske börja verkar komma över tiden, 180 00:54:20,900 --> 00:54:22,910 faktiskt mer och mer saker började falla, 181 00:54:22,910 --> 00:54:25,370 Vad som är intressant denna typ av example-- 182 00:54:25,370 --> 00:54:27,270 och vi kommer att se ett fåtal others-- är att om du 183 00:54:27,270 --> 00:54:30,416 titta förbi komplexitet eller förfining av spelet, 184 00:54:30,416 --> 00:54:33,040 Det finns en mycket enkel byggnad block som play-- som alla, 185 00:54:33,040 --> 00:54:35,840 Om du destillera dem till de byggstenar, är mycket lättillgängligt 186 00:54:35,840 --> 00:54:37,401 och genomförbara sig själva. 187 00:54:37,401 --> 00:54:39,150 Till exempel är det varit en tid, men jag är 188 00:54:39,150 --> 00:54:42,900 ganska säker på vad jag gjorde först när gör det här spelet för första gången 189 00:54:42,900 --> 00:54:44,787 var jag helt som procrastinated. 190 00:54:44,787 --> 00:54:47,120 Jag ville inte fokusera alls på logik eller pusselbitarna, 191 00:54:47,120 --> 00:54:50,810 Jag fokuserade på grafiken och fynd gatan post och papperskorgen 192 00:54:50,810 --> 00:54:51,540 och allt detta. 193 00:54:51,540 --> 00:54:53,456 Men de var nödvändiga ingredienser i början. 194 00:54:53,456 --> 00:54:57,220 Och när jag slutade förhala och om en ram övergripande, 195 00:54:57,220 --> 00:55:00,337 Jag bestämde Låt mig bara göra en bit skräp faller från himlen. 196 00:55:00,337 --> 00:55:02,170 Och vi får se Scratch stöder saker som kallas 197 00:55:02,170 --> 00:55:06,386 sprites-- tecken som kan har olika dräkter på så att de 198 00:55:06,386 --> 00:55:07,010 se annorlunda ut. 199 00:55:07,010 --> 00:55:09,660 >> Och så jag satte en papperskorg dräkt en sådan sprite. 200 00:55:09,660 --> 00:55:12,007 Och jag bara behövde det falla från himlen. 201 00:55:12,007 --> 00:55:14,590 Och så visar det sig, Scratch, som de flesta programmeringsspråk, 202 00:55:14,590 --> 00:55:18,099 stöder slumptal eller tekniskt pseudokod slumptal, 203 00:55:18,099 --> 00:55:20,390 så att genom att dra och släppa vissa pusselbitar, 204 00:55:20,390 --> 00:55:22,890 Jag kunde ha papperskorgen kommer från vänster först. 205 00:55:22,890 --> 00:55:25,580 Och sedan nästa gång den föll, från höger och sedan från mitten. 206 00:55:25,580 --> 00:55:28,060 Och alla djur gjorde var bara har skräp som faller från himlen. 207 00:55:28,060 --> 00:55:29,770 Du kan inte peka på den eller klicka på den. 208 00:55:29,770 --> 00:55:31,103 Du kunde inte öppna papperskorgen. 209 00:55:31,103 --> 00:55:32,160 Du kan inte göra någonting. 210 00:55:32,160 --> 00:55:34,450 Men det var en baby steg mot min ultimata vision. 211 00:55:34,450 --> 00:55:36,720 >> Och efter det, jag faktiskt genomfört någon form 212 00:55:36,720 --> 00:55:41,230 av avkänning så att om du har klickat och dra på bit skräp 213 00:55:41,230 --> 00:55:44,350 över papperskorgen, Oscar locket skulle öppna och stänga. 214 00:55:44,350 --> 00:55:47,650 Inget skulle hända till papperskorgen, men åtminstone locket skulle öppna och stänga. 215 00:55:47,650 --> 00:55:49,642 Så då kontrollera, steg två av två. 216 00:55:49,642 --> 00:55:52,100 Och detta är vad som kommer att vara nyckel i både problembild noll 217 00:55:52,100 --> 00:55:55,970 och programmering i allmänhet, är att ta dessa mycket medvetna baby steg. 218 00:55:55,970 --> 00:55:59,390 Eftersom den inte bara tillåter dig att känner ärligt åstadkommit mycket mer 219 00:55:59,390 --> 00:56:01,250 quickly-- det är värsta i världen 220 00:56:01,250 --> 00:56:06,149 att försöka genomföra alla Oscar tid, sedan timmar senare slog den gröna flaggan, 221 00:56:06,149 --> 00:56:08,440 och ingenting fungerar som förväntat eftersom där ni även 222 00:56:08,440 --> 00:56:11,150 börja felsöka eller felsöka programmet? 223 00:56:11,150 --> 00:56:12,470 Det är bara överväldigande. 224 00:56:12,470 --> 00:56:16,792 >> Och så äkta omslutande denna idé ta steps-- baby steg igen 225 00:56:16,792 --> 00:56:19,000 och igen-- bygga upp något som är i slutändan, 226 00:56:19,000 --> 00:56:23,672 verkligen imponerande och komplexa, men vid första, är inte alls lika mycket så. 227 00:56:23,672 --> 00:56:24,630 I själva verket, låt oss göra detta. 228 00:56:24,630 --> 00:56:28,989 Låt mig gå vidare och-- Scratch själv finns på webben på Scratch.MIT.edu, 229 00:56:28,989 --> 00:56:30,780 och du kommer att höra som mycket igen i problem 230 00:56:30,780 --> 00:56:34,200 ställa noll, specifikationen för som redan finns på CS50: s hemsida. 231 00:56:34,200 --> 00:56:35,725 >> Men detta är vad Scratch själv är. 232 00:56:35,725 --> 00:56:38,210 Och det är egentligen bara tre huvudområden. 233 00:56:38,210 --> 00:56:40,980 Längst upp till vänster där är den så kallade stadium. 234 00:56:40,980 --> 00:56:41,810 Detta är Scratch. 235 00:56:41,810 --> 00:56:43,710 Standard kostym är en katt. 236 00:56:43,710 --> 00:56:46,950 Och detta är den rektangulära världen som du kan move-- upp, ner, vänster, 237 00:56:46,950 --> 00:56:48,130 höger och några andra saker. 238 00:56:48,130 --> 00:56:51,839 I mitten här är våra kategorier eller våra lastpallar av pusselbitar, 239 00:56:51,839 --> 00:56:53,630 och olika färger betyda olika saker. 240 00:56:53,630 --> 00:56:56,520 Och om du rota runt, ser du saker som loopar och villkor 241 00:56:56,520 --> 00:56:58,160 och variabler och andra ingredienser. 242 00:56:58,160 --> 00:57:00,060 >> Och sedan över här är det skript området. 243 00:57:00,060 --> 00:57:03,020 Det är där jag kan dra och släppa dessa pusselbitar för att göra saker. 244 00:57:03,020 --> 00:57:04,690 Så låt oss göra en sådan sak. 245 00:57:04,690 --> 00:57:06,630 Låt mig gå vidare och-- och jag vet var det är. 246 00:57:06,630 --> 00:57:10,110 Så jag kommer att omedelbart klicka på där jag vet att saker är redo att bli, 247 00:57:10,110 --> 00:57:13,140 men att peka och klicka och peta runt är oundvikliga. 248 00:57:13,140 --> 00:57:15,320 Så när grön flagg klickade, Vad vill jag göra? 249 00:57:15,320 --> 00:57:17,100 Jag kommer att göra detta. 250 00:57:17,100 --> 00:57:20,699 Jag kommer att dra denna lila pussel bit, säga hej till två sekunder, 251 00:57:20,699 --> 00:57:21,490 och låt mig zooma in. 252 00:57:21,490 --> 00:57:23,865 >> Och jag kommer att ändra detta att vara vad jag vill att det ska be-- 253 00:57:23,865 --> 00:57:26,471 hallå världen i två sekunder är bra. 254 00:57:26,471 --> 00:57:28,970 Nu, jag kommer att klicka på gröna flaggan, eller om jag verkligen vill, 255 00:57:28,970 --> 00:57:31,820 Jag kan fullskärms det och sedan komma tillbaka. 256 00:57:31,820 --> 00:57:34,060 Det kommer bara att hålla allt i ett fönster. 257 00:57:34,060 --> 00:57:36,141 Grön flag-- hallå världen. 258 00:57:36,141 --> 00:57:36,640 Okej. 259 00:57:36,640 --> 00:57:38,789 Inte så intressant. 260 00:57:38,789 --> 00:57:40,080 Så låt mig gå vidare och göra det. 261 00:57:40,080 --> 00:57:41,038 Låt mig prova en annan. 262 00:57:41,038 --> 00:57:44,740 När grön flagga clicked-- låt oss göra något som ett ljud. 263 00:57:44,740 --> 00:57:46,880 Och märker att ur rutan för gratis får 264 00:57:46,880 --> 00:57:49,910 en katt ljud, som är standard spriten. 265 00:57:49,910 --> 00:57:52,380 Så låt mig nu gå vidare och träffa den gröna flaggan nu. 266 00:57:52,380 --> 00:57:53,224 >> [Meowing] 267 00:57:53,224 --> 00:57:54,490 >> Aw. 268 00:57:54,490 --> 00:57:55,370 Det är bedårande. 269 00:57:55,370 --> 00:57:57,040 Jag programmering. 270 00:57:57,040 --> 00:57:58,550 Så vad har jag gjort? 271 00:57:58,550 --> 00:58:00,430 Detta motsvarar ett program. 272 00:58:00,430 --> 00:58:01,600 Det är naturligtvis super enkelt. 273 00:58:01,600 --> 00:58:05,300 Det tog inte riktigt ta så mycket ansträngning och MIT gjorde det mesta av arbetet, 274 00:58:05,300 --> 00:58:07,890 men jag har kallat en funktion. 275 00:58:07,890 --> 00:58:08,940 Jag har använt en funktion. 276 00:58:08,940 --> 00:58:12,480 Jag har gjort vissa åtgärder, med bara att en lila pusselbit. 277 00:58:12,480 --> 00:58:15,960 >> Tja, om jag vill göra tre jamar i rad? 278 00:58:15,960 --> 00:58:18,570 Låt mig gå vidare och göra två och tre. 279 00:58:18,570 --> 00:58:20,910 Och märker att när du sväva i närheten en pusselbit, 280 00:58:20,910 --> 00:58:22,970 en liten vit linje visas sortera av magnetiskt, 281 00:58:22,970 --> 00:58:25,190 och det kommer att snäppa tillsammans när du släpper. 282 00:58:25,190 --> 00:58:26,600 Låt oss se vad som händer här. 283 00:58:26,600 --> 00:58:27,920 >> [Meowing] 284 00:58:27,920 --> 00:58:32,390 285 00:58:32,390 --> 00:58:34,510 >> Det finns en bugg. 286 00:58:34,510 --> 00:58:35,650 Jag hör bara ett mjau. 287 00:58:35,650 --> 00:58:37,440 Varför skulle det vara? 288 00:58:37,440 --> 00:58:39,001 Ja? 289 00:58:39,001 --> 00:58:39,500 Ja. 290 00:58:39,500 --> 00:58:41,650 Vi vet inte riktigt höra det, men det är bra intuition. 291 00:58:41,650 --> 00:58:43,400 De är alla spelar på samma gång. 292 00:58:43,400 --> 00:58:44,000 Varför? 293 00:58:44,000 --> 00:58:46,587 Tja, är datorn bara kommer att göra vad du säger den att göra. 294 00:58:46,587 --> 00:58:48,670 Så om du säger, spela ljud, spela upp ljud, spela upp ljud, 295 00:58:48,670 --> 00:58:52,887 men du behöver inte berätta det att spela tills du är klar, spela tills du är klar, 296 00:58:52,887 --> 00:58:54,970 det kommer att blåsa igenom programmet riktigt snabbt 297 00:58:54,970 --> 00:58:56,830 och gör bara vad du säger den att göra. 298 00:58:56,830 --> 00:58:59,040 >> Så jag behöver faktiskt fixa detta på ett par olika sätt. 299 00:58:59,040 --> 00:59:00,623 Jag kunde bara göra detta, bli av med detta. 300 00:59:00,623 --> 00:59:04,180 Låt mig prova denna andra pussel piece-- spela upp ljud jama tills gjort, 301 00:59:04,180 --> 00:59:07,072 och sedan dra tre av dessa och klicka på Spela. 302 00:59:07,072 --> 00:59:09,430 >> [Meowing] 303 00:59:09,430 --> 00:59:13,350 >> Det är inte riktigt very-- tacka du-- mycket naturligt. 304 00:59:13,350 --> 00:59:16,590 Så varför inte Jag-- låt mig gå att kontrollera här. 305 00:59:16,590 --> 00:59:17,090 Trevlig. 306 00:59:17,090 --> 00:59:22,230 Vänta en sekund, och nu vill jag gå tillbaka till ljud och spela tills ljudet gjort, 307 00:59:22,230 --> 00:59:24,620 och sedan låta mig få vänta en sekund. 308 00:59:24,620 --> 00:59:28,692 Och låt mig gå och få en mer ljud, och här går vi. 309 00:59:28,692 --> 00:59:31,350 >> [Meowing] 310 00:59:31,350 --> 00:59:35,930 >> Lite mer naturlig, men detta är inte särskilt effektiv. 311 00:59:35,930 --> 00:59:39,830 Som jag började bli uttråkad, alla vara Kort sagt, klicka fram och tillbaka 312 00:59:39,830 --> 00:59:42,724 och verkligen duplicera min work-- ganska mycket kopiera och klistra in. 313 00:59:42,724 --> 00:59:44,640 Faktum är att om jag styra klickade eller högerklickar på den, 314 00:59:44,640 --> 00:59:46,500 Jag kunde bara kopieras och klistras. 315 00:59:46,500 --> 00:59:49,870 Vad skulle vara en bättre konstruktion att använda? 316 00:59:49,870 --> 00:59:51,090 Vad idé från tidigare? 317 00:59:51,090 --> 00:59:51,990 >> Ja, så en slinga. 318 00:59:51,990 --> 00:59:54,580 Och i själva verket, om vi stötas runt, vi kan hitta just det. 319 00:59:54,580 --> 00:59:57,730 Låt mig gå till händelser eller snarare Control. 320 00:59:57,730 --> 00:59:59,650 Så repeat-- jag inte vill att det ska vara 10 gånger. 321 00:59:59,650 --> 01:00:01,370 Det kommer att få irriterande snabbt. 322 01:00:01,370 --> 01:00:03,380 Men jag kommer att upprepa tre gånger. 323 01:00:03,380 --> 01:00:06,355 Låt mig gå tillbaka till ljud och spela upp ljudet tills det är gjort. 324 01:00:06,355 --> 01:00:08,480 Låt mig gå tillbaka till Kontroll och bara vänta en sekund. 325 01:00:08,480 --> 01:00:10,271 Och varsel, kanske du tror att det inte passar, 326 01:00:10,271 --> 01:00:13,520 men igen om magnetiskt du låter det snap på plats, kommer det att växa för att fylla. 327 01:00:13,520 --> 01:00:14,971 Vad det spelar nu? 328 01:00:14,971 --> 01:00:18,500 >> [Meowing] 329 01:00:18,500 --> 01:00:19,000 OK. 330 01:00:19,000 --> 01:00:19,660 Trevlig. 331 01:00:19,660 --> 01:00:22,540 Och detta är vad som skulle kunna kallas ett program som är också korrekt. 332 01:00:22,540 --> 01:00:27,590 Det jamade tre gånger ganska naturligtvis, men det är bättre utformade. 333 01:00:27,590 --> 01:00:29,580 Jag använder mindre redundans. 334 01:00:29,580 --> 01:00:30,970 Jag ville inte kopiera och klistra in något. 335 01:00:30,970 --> 01:00:32,470 Jag använde bara en bättre idé. 336 01:00:32,470 --> 01:00:35,340 >> Nu är det fortfarande inte så intressant med Scratch inte göra 337 01:00:35,340 --> 01:00:35,930 vad som helst. 338 01:00:35,930 --> 01:00:37,388 Så låt oss göra något annat istället. 339 01:00:37,388 --> 01:00:38,670 Låt oss göra något för evigt. 340 01:00:38,670 --> 01:00:39,420 Och vet du vad? 341 01:00:39,420 --> 01:00:40,470 Motion verkar intressant. 342 01:00:40,470 --> 01:00:45,760 Låt oss ha honom flytta 10 steg och slog spela nu. 343 01:00:45,760 --> 01:00:46,570 >> OK. 344 01:00:46,570 --> 01:00:49,300 Väl vi kan slags dra honom tillbaka, och han är fortfarande 345 01:00:49,300 --> 01:00:51,250 visas eftersom han gör detta för alltid. 346 01:00:51,250 --> 01:00:53,150 Så slingan gör vad det säger att göra, 347 01:00:53,150 --> 01:00:54,650 men det är inte så intressant. 348 01:00:54,650 --> 01:00:55,310 Nu gör vi det. 349 01:00:55,310 --> 01:00:59,870 Låt mig tillägga ett kontrollblock, och använda en av dessa villkor för första gången. 350 01:00:59,870 --> 01:01:03,119 >> Så det kommer att röra sig 10 steps-- 10 punkter, 10 pixlar på Screen-- 351 01:01:03,119 --> 01:01:04,660 då det kommer att ställa denna fråga. 352 01:01:04,660 --> 01:01:09,340 Om något är sant, då gör något i detta block. 353 01:01:09,340 --> 01:01:13,060 Så visar det sig avkänning har en hel gäng Boolean expressions-- 354 01:01:13,060 --> 01:01:16,580 frågor om ja nej eller sant false form-- låt mig göra detta. 355 01:01:16,580 --> 01:01:19,260 >> Om touching-- och sedan finns det denna lilla rullgardinsmenyn. 356 01:01:19,260 --> 01:01:20,410 Jag kan parametrisera den. 357 01:01:20,410 --> 01:01:23,010 Om vidröra edge-- låt oss göra något liknande. 358 01:01:23,010 --> 01:01:27,310 Så om att röra edge-- Låt mig gå tillbaka till rörelse. 359 01:01:27,310 --> 01:01:32,281 Och varför inte vi bara vända 180 grader? 360 01:01:32,281 --> 01:01:32,780 Okej. 361 01:01:32,780 --> 01:01:35,070 Så för evigt, flytta 10 steg. 362 01:01:35,070 --> 01:01:37,670 Om du vidrör kant, vänder 180 grader. 363 01:01:37,670 --> 01:01:39,720 Och det är inte slutet av programmet eftersom du är i en evigt blockera 364 01:01:39,720 --> 01:01:42,053 så det kommer att gå igen och igen och igen och igen. 365 01:01:42,053 --> 01:01:43,980 Så låt oss se vad som händer. 366 01:01:43,980 --> 01:01:44,785 OK. 367 01:01:44,785 --> 01:01:48,270 Lite buggy, men ganska häftigt. 368 01:01:48,270 --> 01:01:51,710 >> Och vi kan lägga till denna del dumma saker som är inte så intellektuellt 369 01:01:51,710 --> 01:01:52,270 intressant. 370 01:01:52,270 --> 01:01:57,210 Men om vi träffade denna lilla mikrofon button-- aj. 371 01:01:57,210 --> 01:01:58,480 Låt mig rensa upp detta. 372 01:01:58,480 --> 01:02:01,540 Låt mig förstärka denna som de skulle säga på TV. 373 01:02:01,540 --> 01:02:05,400 Rengör det upp, Spara, och nu gå upp till manus. 374 01:02:05,400 --> 01:02:07,500 >> Och nu, låt mig gå till ljud. 375 01:02:07,500 --> 01:02:09,002 Låt mig ge den ett namn. 376 01:02:09,002 --> 01:02:12,440 Jag kallar detta aj. 377 01:02:12,440 --> 01:02:13,840 Och nu spela upp ljud aj. 378 01:02:13,840 --> 01:02:16,520 Lägg märke till den visas i lite rullgardinsmenyn. 379 01:02:16,520 --> 01:02:17,612 Låt oss se. 380 01:02:17,612 --> 01:02:20,444 >> [AJ] 381 01:02:20,444 --> 01:02:24,377 >> [SKRATTANDE] 382 01:02:24,377 --> 01:02:25,835 Men vi kan ändra t hans i farten. 383 01:02:25,835 --> 01:02:28,106 Vi kan vara dubbelt så irriterande. 384 01:02:28,106 --> 01:02:31,760 >> [AJ] 385 01:02:31,760 --> 01:02:35,332 >> Eller om vi gör det som 1000 steg på en time-- 386 01:02:35,332 --> 01:02:39,900 387 01:02:39,900 --> 01:02:40,670 >> OK. 388 01:02:40,670 --> 01:02:42,295 Så vi kommer att lämna den en ensam. 389 01:02:42,295 --> 01:02:45,290 Så återigen, att bygga blocks-- jag igång med något superenkel, 390 01:02:45,290 --> 01:02:47,930 och sedan jag lagt till en funktion, lagt till en funktion, lagt till en funktion. 391 01:02:47,930 --> 01:02:50,721 Och jag behöver inte längre oroa sig för hur den första av dessa funktioner 392 01:02:50,721 --> 01:02:53,690 genomfördes som jag fortsätter att lagret saker på toppen. 393 01:02:53,690 --> 01:02:55,430 Så i själva verket, låt mig göra en annan här. 394 01:02:55,430 --> 01:03:00,580 Låt mig gå vidare och öppna en fil som Jag tog i förväg, kallas Får. 395 01:03:00,580 --> 01:03:03,970 >> Så det har en något annorlunda karaktär som ser ut så här. 396 01:03:03,970 --> 01:03:07,370 Och låt mig se om jag kan inte göra något med en räknare 397 01:03:07,370 --> 01:03:09,310 i detta case-- en så kallad variabel. 398 01:03:09,310 --> 01:03:15,540 Jag kommer att gå vidare och under Events-- Låt mig få en grön flagga klickade. 399 01:03:15,540 --> 01:03:19,030 Låt mig gå till Data, som jag vet från bara spela runt innan, 400 01:03:19,030 --> 01:03:20,214 är där variablerna är. 401 01:03:20,214 --> 01:03:21,880 Och jag kommer att gå vidare och dra detta. 402 01:03:21,880 --> 01:03:25,144 >> Så en variabel som heter räknare, och Jag kommer att initiera den till noll. 403 01:03:25,144 --> 01:03:27,560 Jag kan kalla det anything-- x eller y eller z-- men i programmering, 404 01:03:27,560 --> 01:03:30,410 ringer något i en semantiskt användbart sätt, såsom räknare, 405 01:03:30,410 --> 01:03:34,540 som beskriver vad det är, det är en mycket lättare att läsa koden senare. 406 01:03:34,540 --> 01:03:37,460 Låt mig gå vidare och få en evigt blockerar här. 407 01:03:37,460 --> 01:03:41,289 Och låt mig gå till utseende sida och gör en Say block. 408 01:03:41,289 --> 01:03:44,330 Men vad är hett om variabler är jag behöver inte bara skriva in något 409 01:03:44,330 --> 01:03:47,850 som Hello World, som vi redan har gjort, kan jag i stället gå till Data 410 01:03:47,850 --> 01:03:50,690 och dra min variabel, och även även om formen inte riktigt 411 01:03:50,690 --> 01:03:53,000 ser ut som det skulle passa, det kommer att växa för att fylla. 412 01:03:53,000 --> 01:03:58,396 Och jag ska bara säga räknaren för en second-- spoiler-- han kommer att räkna. 413 01:03:58,396 --> 01:04:00,380 Vi säger det för en sekund. 414 01:04:00,380 --> 01:04:02,840 Då kommer jag att gå och har han vänta en sekund, 415 01:04:02,840 --> 01:04:04,650 så det räknas inte upp för fort. 416 01:04:04,650 --> 01:04:08,430 Och sedan slutligen ändra disk genom en-- med andra ord, 417 01:04:08,430 --> 01:04:13,520 öka räknaren med ett mervärde och göra det för evigt. 418 01:04:13,520 --> 01:04:16,129 >> Så fåren också, som en programmerare, räknar från 0. 419 01:04:16,129 --> 01:04:20,350 420 01:04:20,350 --> 01:04:23,740 Och om vi väntar tillräckligt länge, han kommer att göra detta för alltid. 421 01:04:23,740 --> 01:04:27,740 Men det är inte riktigt sant, eftersom i själva verket, som vi kommer att upptäcka i veckan en, 422 01:04:27,740 --> 01:04:31,871 heltal och datorer mer allmänt, tekniskt har bara en finite-- väl, 423 01:04:31,871 --> 01:04:33,829 snarare datorer, när de representerar heltal, 424 01:04:33,829 --> 01:04:35,670 bara har ett ändligt antal bitar. 425 01:04:35,670 --> 01:04:37,860 Dessa lampor där kan bara räkna så högt 426 01:04:37,860 --> 01:04:39,239 innan du är ute på glödlampor. 427 01:04:39,239 --> 01:04:41,590 Och en dator också, endast har så mycket minne, 428 01:04:41,590 --> 01:04:44,640 endast har så många transistorer, så det kan bara räkna så högt. 429 01:04:44,640 --> 01:04:47,409 >> Så visar det sig att den får, Jag tror, ​​kan räkna till 2 miljarder 430 01:04:47,409 --> 01:04:48,409 eller något ganska stor. 431 01:04:48,409 --> 01:04:50,325 Så vi kommer inte att vänta för att detta ska ske. 432 01:04:50,325 --> 01:04:54,850 Men så småningom en del buggar som kommer att hända som kan ha några mycket verkliga världen 433 01:04:54,850 --> 01:04:55,970 förgreningar. 434 01:04:55,970 --> 01:04:58,861 Men bortom fåren, att bara introducerar en variabel. 435 01:04:58,861 --> 01:05:01,110 Låt oss gå vidare och öppna upp något som jag gjort i förväg 436 01:05:01,110 --> 01:05:07,430 här kallad pet Cat-- Klappa katten hit. 437 01:05:07,430 --> 01:05:10,420 Och märker här är det få block, men när grön flagg 438 01:05:10,420 --> 01:05:12,474 klickade, alltid göra följande. 439 01:05:12,474 --> 01:05:15,265 Om du röra musen pointer-- så markören på skärmen, 440 01:05:15,265 --> 01:05:18,529 den arrow-- play ljud jama och sedan vänta två sekunder. 441 01:05:18,529 --> 01:05:19,570 Och bara göra det för evigt. 442 01:05:19,570 --> 01:05:22,619 Bara ständigt vänta för att se om pointer-- 443 01:05:22,619 --> 01:05:24,710 om katten vidrör pekaren. 444 01:05:24,710 --> 01:05:26,060 >> Så jag slog spela. 445 01:05:26,060 --> 01:05:26,920 Ingenting händer. 446 01:05:26,920 --> 01:05:28,980 Men som jag flyttar markören över katten, 447 01:05:28,980 --> 01:05:31,960 >> [Meowing] 448 01:05:31,960 --> 01:05:34,750 >> Och om jag flyttar bort, inte petting katten längre. 449 01:05:34,750 --> 01:05:38,090 Så några villkorslogik kapslade i en slinga. 450 01:05:38,090 --> 01:05:43,070 Vad sägs om det här exemplet, medvetet heter inte klappa katten? 451 01:05:43,070 --> 01:05:45,253 Vad detta kommer att göra? 452 01:05:45,253 --> 01:05:47,880 >> [Meowing] 453 01:05:47,880 --> 01:05:50,215 >> Varför skulle du inte klappa katten? 454 01:05:50,215 --> 01:05:59,440 >> [Meowing] 455 01:05:59,440 --> 01:06:00,699 >> OK. 456 01:06:00,699 --> 01:06:03,880 Så det här är ett exempel på en om annat. 457 01:06:03,880 --> 01:06:06,482 Det är en beslutspunkt och eftersom det sitter i en slinga, 458 01:06:06,482 --> 01:06:07,690 de är båda få kontrolleras. 459 01:06:07,690 --> 01:06:08,280 Är detta sant? 460 01:06:08,280 --> 01:06:08,760 Är detta sant? 461 01:06:08,760 --> 01:06:09,250 Är detta sant? 462 01:06:09,250 --> 01:06:09,791 Är detta sant? 463 01:06:09,791 --> 01:06:11,880 Och så småningom, en av de som kommer att gälla 464 01:06:11,880 --> 01:06:16,480 och så hör du antingen mjau eller bruset av lejon i det fallet. 465 01:06:16,480 --> 01:06:21,400 >> Nåväl, låt oss göra en något mer fantasifullt en som jag gjorde i förväg too-- trådar. 466 01:06:21,400 --> 01:06:25,210 Så en tråd är bara en sak som en dator kan göra. 467 01:06:25,210 --> 01:06:29,349 Så en flertrådad program är ett program som kan göra flera saker samtidigt. 468 01:06:29,349 --> 01:06:31,140 Och alla dessa exempel hittills har haft 469 01:06:31,140 --> 01:06:35,980 bara ett manus, så att speak-- ett program som detta upp här. 470 01:06:35,980 --> 01:06:38,810 Men märker detta program har två sprites, två tecken. 471 01:06:38,810 --> 01:06:40,020 Den ena är en fågel. 472 01:06:40,020 --> 01:06:40,870 Den ena är en katt. 473 01:06:40,870 --> 01:06:45,080 >> Och märker när jag klickar på dessa ned vänster, de har alla sina egna skript 474 01:06:45,080 --> 01:06:47,120 eller program som är associerade med dem. 475 01:06:47,120 --> 01:06:49,420 Och båda av dem program, meddelande, start 476 01:06:49,420 --> 01:06:52,600 med när grön flagga clicked-- låt oss titta på cat-- 477 01:06:52,600 --> 01:06:54,030 när grön flagg klickade. 478 01:06:54,030 --> 01:06:58,220 Och så sannerligen, när jag slog spela nu, två saker kommer att hända på en gång. 479 01:06:58,220 --> 01:07:01,750 Katten och fågeln är båda kommer att arbeta samtidigt 480 01:07:01,750 --> 01:07:03,815 att skapa denna effekt. 481 01:07:03,815 --> 01:07:05,440 Och du kan föreställa sig vad som händer. 482 01:07:05,440 --> 01:07:08,340 Det finns en slinga och fågeln och katten finns i en slinga. 483 01:07:08,340 --> 01:07:11,270 Fågeln är bara studsar som Jag var innan när jag sa aj. 484 01:07:11,270 --> 01:07:13,040 Men katten har en klar fördel. 485 01:07:13,040 --> 01:07:16,040 Det finns en annan sensorblocket som pekar katten medvetet 486 01:07:16,040 --> 01:07:19,836 till fågeln i detta fallet här. 487 01:07:19,836 --> 01:07:22,960 Så vi kan retas isär, genom att titta genom dessa block, vad som händer. 488 01:07:22,960 --> 01:07:25,460 Men den viktigaste ingrediensen här är ett. 489 01:07:25,460 --> 01:07:28,520 Fågeln, så att detta spel är inte helt boring-- eller denna animation-- 490 01:07:28,520 --> 01:07:30,060 startar vid en slumpmässig riktning. 491 01:07:30,060 --> 01:07:32,890 Och datorn plockar ett tal mellan 90 och 180 492 01:07:32,890 --> 01:07:36,110 i huvudsak, så att det är en aning annan animering varje gång. 493 01:07:36,110 --> 01:07:39,480 >> Och sedan märker här, om katt röra fågeln, då 494 01:07:39,480 --> 01:07:42,030 spela lejonet fyra sound-- bruset. 495 01:07:42,030 --> 01:07:46,330 Men under tiden i fågelns palett, har vi redan. 496 01:07:46,330 --> 01:07:49,229 Evigt, om inte vidröra katt, bara hålla rörliga tre steg. 497 01:07:49,229 --> 01:07:50,770 Och så här är en annan pusselbit. 498 01:07:50,770 --> 01:07:52,030 Om du är på kanten, studsa. 499 01:07:52,030 --> 01:07:54,840 Så fågeln är bara typ av skötte sin egen verksamhet, 500 01:07:54,840 --> 01:07:57,330 bara flyga runt och studsar, och det är verkligen 501 01:07:57,330 --> 01:08:01,780 katten som hade den villkorslogik för att avgöra om det hade fångat fågeln. 502 01:08:01,780 --> 01:08:02,280 Okej. 503 01:08:02,280 --> 01:08:08,800 Så låt oss göra en annan här, detta kallas hi hi hi. 504 01:08:08,800 --> 01:08:15,100 Och detta här bara gör detta i ett evigt slinga. 505 01:08:15,100 --> 01:08:18,925 Men notice-- hur vi slutar detta mycket irriterande program? 506 01:08:18,925 --> 01:08:21,600 507 01:08:21,600 --> 01:08:22,640 Hit mellanslagstangenten. 508 01:08:22,640 --> 01:08:27,990 För om jag gör det, den vänstra program-- 509 01:08:27,990 --> 01:08:31,550 märker det ständigt listening-- är nyckeln utrymme press. 510 01:08:31,550 --> 01:08:34,090 Om mellanslagstangenten trycks in, och om så är fallet, vad gör det? 511 01:08:34,090 --> 01:08:35,980 Det gör en mycket vanlig teknik. 512 01:08:35,980 --> 01:08:38,590 Det sätter en variabel lika med ett visst värde. 513 01:08:38,590 --> 01:08:39,741 Men det växlar det värdet. 514 01:08:39,741 --> 01:08:41,490 [? Så utseende?] baserad på den shape-- I 515 01:08:41,490 --> 01:08:43,160 har en variabel som jag skrev i förväg kallas 516 01:08:43,160 --> 01:08:44,770 Avstängt, som bara säger ja eller nej. 517 01:08:44,770 --> 01:08:45,880 Är ljudet avstängt eller inte? 518 01:08:45,880 --> 01:08:46,990 Sant eller falskt? 519 01:08:46,990 --> 01:08:51,580 Och varsel, säger jag this-- om avstängt är noll, sedan byta till en, 520 01:08:51,580 --> 01:08:53,840 annars satt stum det till noll. 521 01:08:53,840 --> 01:08:55,540 Så bara vända värdet från noll till ett. 522 01:08:55,540 --> 01:08:58,320 Jag kunde ha done-- ändra det från två till tre och 3-2 523 01:08:58,320 --> 01:09:00,162 eller 4-5 eller 4-6. 524 01:09:00,162 --> 01:09:01,870 Men det spelar ingen roll vilka nummer som jag använder, 525 01:09:01,870 --> 01:09:04,090 så länge jag håller ändra det tvärtom. 526 01:09:04,090 --> 01:09:07,290 >> Och de flesta någon programmerare skulle bara välja noll och en-- falskt och äkta, 527 01:09:07,290 --> 01:09:09,510 off och on-- att representera denna. 528 01:09:09,510 --> 01:09:10,930 Och detta är fortfarande igång. 529 01:09:10,930 --> 01:09:12,190 Om jag tryck på mellanslagstangenten igen 530 01:09:12,190 --> 01:09:13,590 >> [SEAL LJUD] 531 01:09:13,590 --> 01:09:15,440 >> Programmet är fortfarande igång. 532 01:09:15,440 --> 01:09:18,400 Eftersom det är det här andra script som säger, alltid göra följande. 533 01:09:18,400 --> 01:09:21,390 534 01:09:21,390 --> 01:09:24,770 Om dämpad variabeln är lika med zero-- så om du inte är avstängt 535 01:09:24,770 --> 01:09:29,609 är logic-- om det är falskt eller ingen, sedan spela upp ljudet, 536 01:09:29,609 --> 01:09:30,650 eftersom du inte avstängt. 537 01:09:30,650 --> 01:09:33,358 Du borde spela upp ljudet och sedan tror hi hi hi i två sekunder 538 01:09:33,358 --> 01:09:35,790 och sedan vänta och göra det igen och igen och igen. 539 01:09:35,790 --> 01:09:40,760 >> Och så på detta sätt har vi ett sätt för människor att-- för program för att interagera. 540 01:09:40,760 --> 01:09:43,120 Och de behöver inte vara som dateras som andra. 541 01:09:43,120 --> 01:09:46,280 I själva verket, att peta around-- no pun intended-- 542 01:09:46,280 --> 01:09:49,250 någon tillbringade en stor mängd tid på internet genomförande 543 01:09:49,250 --> 01:09:51,580 PokemonGo i Scratch. 544 01:09:51,580 --> 01:09:55,440 Det geolocates även dig Cambridge eller Allston här. 545 01:09:55,440 --> 01:10:03,120 Så om du vill se också vad folk kan göra är this-- mycket fint meny. 546 01:10:03,120 --> 01:10:04,780 Klicka här. 547 01:10:04,780 --> 01:10:07,430 >> Detta är jag med mina piltangenterna nu. 548 01:10:07,430 --> 01:10:09,446 Jag kommer att gå efter detta. 549 01:10:09,446 --> 01:10:09,946 Klick. 550 01:10:09,946 --> 01:10:12,949 551 01:10:12,949 --> 01:10:14,240 Och nu du klickar på pokeball. 552 01:10:14,240 --> 01:10:17,130 553 01:10:17,130 --> 01:10:20,260 Jag menar, jag tror att du är tänkt att klicka på pokeball. 554 01:10:20,260 --> 01:10:20,760 Okej. 555 01:10:20,760 --> 01:10:22,680 Så jag gjorde det. 556 01:10:22,680 --> 01:10:23,950 Jag kan gå hit. 557 01:10:23,950 --> 01:10:27,790 Och denna person genomfört några mer PokeBalls över här-- tre PokeBalls. 558 01:10:27,790 --> 01:10:29,950 >> Vi kommer att lägga en länk till detta nätet så att du kan spela. 559 01:10:29,950 --> 01:10:32,364 Men meddelandet finns det bara vissa grundläggande byggstenar. 560 01:10:32,364 --> 01:10:33,780 Det ser mycket snyggare, och det är. 561 01:10:33,780 --> 01:10:35,905 Detta är imponerande och mer än vi skulle normalt 562 01:10:35,905 --> 01:10:37,740 förväntar, säkert för problem in noll. 563 01:10:37,740 --> 01:10:40,809 Jag har ingen aning om hur länge den här personen spenderas online. 564 01:10:40,809 --> 01:10:41,850 Men det är bara en slinga. 565 01:10:41,850 --> 01:10:43,180 Det finns en god spela. 566 01:10:43,180 --> 01:10:44,850 Det finns något slags slinga lyssna efter om jag är 567 01:10:44,850 --> 01:10:47,558 slå på uppåt- eller nedåt pil eller vänster och höger, 568 01:10:47,558 --> 01:10:49,834 och sedan om så är fallet, är det att flytta det ett visst antal bildpunkter. 569 01:10:49,834 --> 01:10:51,750 Och sedan om jag klickar på en annan sprite, det finns 570 01:10:51,750 --> 01:10:53,390 något slags om tillstånd där. 571 01:10:53,390 --> 01:10:54,806 Ja, detta blir för intensiv. 572 01:10:54,806 --> 01:10:56,100 Vi kommer att sluta. 573 01:10:56,100 --> 01:10:57,750 Det är alla dessa grundläggande byggstenar. 574 01:10:57,750 --> 01:11:01,530 Det finns inga andra andra ingredienser än de som vi har tittat på redan. 575 01:11:01,530 --> 01:11:04,670 >> Och ändå här, låt mig göra en slutlig uppsättning av exempel 576 01:11:04,670 --> 01:11:06,960 som målar en bild för av vad du kan göra här. 577 01:11:06,960 --> 01:11:10,481 Här är ett mycket enkelt program som bara gör this-- hosta, hosta, hosta. 578 01:11:10,481 --> 01:11:12,480 Och baserat enbart på vad Vi har tittat på hittills, 579 01:11:12,480 --> 01:11:14,570 där är det självklara möjlighet till förbättring. 580 01:11:14,570 --> 01:11:15,570 Detta program är korrekt. 581 01:11:15,570 --> 01:11:17,980 Det hostar tre gånger, vilket är vad jag tänkt. 582 01:11:17,980 --> 01:11:19,650 Men det är dåligt genomförs. 583 01:11:19,650 --> 01:11:20,600 Det är dåligt utformade. 584 01:11:20,600 --> 01:11:22,000 Varför? 585 01:11:22,000 --> 01:11:22,500 Ja. 586 01:11:22,500 --> 01:11:23,230 Det är inte en loop. 587 01:11:23,230 --> 01:11:24,610 Och det är inte så mycket att det inte är en slinga, 588 01:11:24,610 --> 01:11:26,400 det är att det finns en hel del redundans. 589 01:11:26,400 --> 01:11:28,830 Det kopieras och klistras kod, så att säga. 590 01:11:28,830 --> 01:11:31,830 Och lösningen troligen är verkligen en slinga. 591 01:11:31,830 --> 01:11:34,350 Så låt mig gå vidare och förbättra det. 592 01:11:34,350 --> 01:11:36,250 Och jag kommer att dra dessa över här. 593 01:11:36,250 --> 01:11:39,986 Låt mig gå vidare och få en rapport blocket, ändra detta till tre. 594 01:11:39,986 --> 01:11:41,860 Jag kommer att kasta bort vissa av dessa block. 595 01:11:41,860 --> 01:11:43,150 >> Och du kommer att märka att det är ganska intuitivt. 596 01:11:43,150 --> 01:11:45,691 Du dra och släpp och saker dyka upp och försvinna så småningom. 597 01:11:45,691 --> 01:11:49,170 Och jag kan bara dra detta i här, och Nu har jag en renare version fortfarande. 598 01:11:49,170 --> 01:11:50,730 Men vet du vad? 599 01:11:50,730 --> 01:11:52,940 Det finns denna möjlighet nu för abstraction-- 600 01:11:52,940 --> 01:11:56,350 att börja definiera nya ord att MIT inte förutse. 601 01:11:56,350 --> 01:11:59,110 Det finns vänta och upprepa och för evigt och om 602 01:11:59,110 --> 01:12:02,590 men vad händer om jag vill presentera ordet hosta som ett block? 603 01:12:02,590 --> 01:12:06,230 Vad händer om jag vill ha en pusselbit vars syfte i livet är att hosta? 604 01:12:06,230 --> 01:12:10,720 >> Nåväl, låt oss titta på den här versionen här, som jag gjort på följande sätt. 605 01:12:10,720 --> 01:12:13,579 Magiskt, har jag skapat denna pusselbit här, 606 01:12:13,579 --> 01:12:14,870 som Scratch låter dig göra. 607 01:12:14,870 --> 01:12:16,787 Och faktiskt C och Python och JavaScript är 608 01:12:16,787 --> 01:12:18,370 kommer att tillåta dig att göra detta. 609 01:12:18,370 --> 01:12:21,830 Du kan skapa dina egna bitar som du ringer vad du vill. 610 01:12:21,830 --> 01:12:24,890 I detta fall känns hosta som en rimlig definition. 611 01:12:24,890 --> 01:12:27,880 Och sedan med dessa bitar ner Här kan du definiera vad det innebär. 612 01:12:27,880 --> 01:12:30,290 >> Jag dras och släppas från denna palett här-- mer 613 01:12:30,290 --> 01:12:33,500 blocks-- denna stora lila kvarter, där jag skrev i hosta 614 01:12:33,500 --> 01:12:35,290 som namnet på mitt nya pusselbit. 615 01:12:35,290 --> 01:12:39,920 Och då jag säger varje gång en användare kallar denna nya hosta pusselbit, 616 01:12:39,920 --> 01:12:41,770 gör något att säga och en väntan. 617 01:12:41,770 --> 01:12:46,160 Och så här uppe i min upprepa blocket, Jag kan bara hosta tre gånger. 618 01:12:46,160 --> 01:12:49,972 >> Och jag vill hävda, i synnerhet om nu du dölja denna detalj. 619 01:12:49,972 --> 01:12:51,430 Vem bryr sig om hur hosta genomförs? 620 01:12:51,430 --> 01:12:54,390 Allt jag bryr mig om som en programmerare att jag kan hosta. 621 01:12:54,390 --> 01:12:56,280 Jag bryr mig inte hur säga genomförs. 622 01:12:56,280 --> 01:12:58,620 Jag bryr bara att katt kan säga något. 623 01:12:58,620 --> 01:13:02,720 Jag kan abstrakt bort den detaljen och bara fokusera på vad som finns på skärmen här. 624 01:13:02,720 --> 01:13:04,400 Men jag kan ta detta ett steg längre. 625 01:13:04,400 --> 01:13:08,070 >> Lägg märke till att här, jag har implementerat slingan tre gånger. 626 01:13:08,070 --> 01:13:11,560 Men vad händer om jag istället ta den här versionen? 627 01:13:11,560 --> 01:13:14,640 Och vad händer om istället i denna version här, 628 01:13:14,640 --> 01:13:18,730 Jag ändrar bara min pusselbit för att ta ett argument och input åt sig själv? 629 01:13:18,730 --> 01:13:21,100 Och den ingången kan vara ett antal som tre. 630 01:13:21,100 --> 01:13:24,580 Så nu, om jag skriver ett program och jag vill att katten att hosta, 631 01:13:24,580 --> 01:13:28,270 Jag kan faktiskt säga pusslet pussla hur många gånger att hosta, 632 01:13:28,270 --> 01:13:31,990 eftersom längst ner här, en snyggare versionen av dessa anpassade pusselbitar 633 01:13:31,990 --> 01:13:34,500 låter mig ange att hosta faktiskt tar 634 01:13:34,500 --> 01:13:36,951 en input-- tar ett argument som denna. 635 01:13:36,951 --> 01:13:37,700 Och vet du vad? 636 01:13:37,700 --> 01:13:38,890 Kanske jag inser, vänta en minut. 637 01:13:38,890 --> 01:13:40,680 Hosta är den same-- Det är fundamentalt 638 01:13:40,680 --> 01:13:42,120 samma idé som nysningar. 639 01:13:42,120 --> 01:13:44,040 Det är bara en annan ord på skärmen. 640 01:13:44,040 --> 01:13:46,550 Jag kan abstrakt bort vidare och genomföra 641 01:13:46,550 --> 01:13:48,750 Detta slutliga versionen av en hosta, som vid första anblicken 642 01:13:48,750 --> 01:13:50,660 är mycket mer komplex ser. 643 01:13:50,660 --> 01:13:52,140 Men lägg märke till vad jag har gjort. 644 01:13:52,140 --> 01:13:55,930 Jag har nu generalized-- genericized really-- denna pusselbit 645 01:13:55,930 --> 01:13:59,900 att kallas säga ordet n gånger. 646 01:13:59,900 --> 01:14:04,410 >> Och nu har jag två nya pusselbitar här nere definiera hosta n gånger. 647 01:14:04,410 --> 01:14:06,790 Och vad hosta funktionen gör? 648 01:14:06,790 --> 01:14:08,420 Vad gör min egen pusselbit göra? 649 01:14:08,420 --> 01:14:11,996 Det uppmanar bara säga blocket, passerar i ord jag vill säga, 650 01:14:11,996 --> 01:14:13,870 passerar i antalet gånger jag vill säga. 651 01:14:13,870 --> 01:14:18,210 För nu kan jag genomföra nysa genom att helt enkelt säga achoo, 652 01:14:18,210 --> 01:14:20,320 i detta fall, en del antal gånger. 653 01:14:20,320 --> 01:14:22,360 >> Och så jag skiktning och skiktning. 654 01:14:22,360 --> 01:14:25,690 Och återigen, är inte nyckeln här hur jag genomfört det, men faktum 655 01:14:25,690 --> 01:14:28,070 att om jag bara bokstavligen flytta dessa utanför skärmen, 656 01:14:28,070 --> 01:14:31,280 se hur enkelt om inte ganska mitt program ser nu. 657 01:14:31,280 --> 01:14:33,930 Eftersom det gör vad den säger, jag har sammandrag 658 01:14:33,930 --> 01:14:37,640 bort vad som finns i den svarta lådan. det råkar vara en lila rutan här, 659 01:14:37,640 --> 01:14:41,430 men jag har blockerat bort vad som finns inuti eftersom jag inte bryr sig om hur det fungerar. 660 01:14:41,430 --> 01:14:43,650 Jag bryr just nu att det fungerar. 661 01:14:43,650 --> 01:14:46,375 >> Och faktiskt, i problem set noll, är det exakt 662 01:14:46,375 --> 01:14:49,250 den typ av skiktning av idéer du kommer har möjlighet att utforska. 663 01:14:49,250 --> 01:14:53,510 Det är precis den möjlighet att tillämpa problemlösningstekniker, 664 01:14:53,510 --> 01:14:55,550 vad är förmodligen en obekant miljö. 665 01:14:55,550 --> 01:14:57,890 Och om du inte har programmerat före eller förprogrammerats, 666 01:14:57,890 --> 01:14:59,500 du kommer att upptäcka att det finns en liten sak 667 01:14:59,500 --> 01:15:00,874 i denna miljö för alla. 668 01:15:00,874 --> 01:15:02,770 Och med problem inställd en i en veckas tid, 669 01:15:02,770 --> 01:15:06,630 vi kommer att flyttas över till att fokusera på ett språk högre nivå kallas 670 01:15:06,630 --> 01:15:09,290 C- eller snarare en lägre nivå språk som kallas 671 01:15:09,290 --> 01:15:11,347 C- det är ännu mer kraftfull, även om det är 672 01:15:11,347 --> 01:15:12,930 lite mer kryptiskt vid första anblicken. 673 01:15:12,930 --> 01:15:16,740 >> Och du inser per dagens TL: DR, att detta problem set har en kortare 674 01:15:16,740 --> 01:15:19,880 tidsfönster än framtida sådana, helt enkelt eftersom du ska hitta det ganska 675 01:15:19,880 --> 01:15:20,420 tillgänglig. 676 01:15:20,420 --> 01:15:22,211 Och inte oroa dig om du lägger klassen sent. 677 01:15:22,211 --> 01:15:23,920 Vi kommer att ta itu med det inom kort. 678 01:15:23,920 --> 01:15:28,480 Och innan vi ajournera för tårta, låt oss avsluta med bara två minuters look 679 01:15:28,480 --> 01:15:30,500 på vad som väntar dig här i CS50. 680 01:15:30,500 --> 01:15:40,950 681 01:15:40,950 --> 01:17:20,803 [Musik spelar] 682 01:17:20,803 --> 01:17:21,302 Okej. 683 01:17:21,302 --> 01:17:22,690 Det var allt för CS50. 684 01:17:22,690 --> 01:17:23,650 Vi kommer att se dig snart. 685 01:17:23,650 --> 01:17:25,526 Kaka serveras nu. 686 01:17:25,526 --> 01:17:28,998 687 01:17:28,998 --> 01:18:14,267 [Musik spelar] 688 01:18:14,267 --> 01:18:16,350 TALARE 17: Har du hört av ett sabbatsår, Chief? 689 01:18:16,350 --> 01:18:29,490 690 01:18:29,490 --> 01:18:31,920 TALARE 18: Kanske finns det mer under huven. 691 01:18:31,920 --> 01:18:38,279