1 00:00:08,483 --> 00:00:11,477 [Powered by Google Translate] [ROCK MUSIC] 2 00:00:32,435 --> 00:00:35,429 [MUSIC - "lykkelige sammen" skildpadder] 3 00:01:27,330 --> 00:01:30,170 DAVID Malan: I dag begynder vi vores udforskning af den 4 00:01:30,170 --> 00:01:32,710 grundlæggende elementer i datalogi og vores introduktion, 5 00:01:32,710 --> 00:01:35,070 nu til kunsten programmering, hvoraf det er 6 00:01:35,070 --> 00:01:36,260 blot ét eksempel. 7 00:01:36,260 --> 00:01:39,600 Men i samme ånd af problemløsning, ved, at 8 00:01:39,600 --> 00:01:42,080 CS50 traditionelle Puzzle Day er i morgen. 9 00:01:42,080 --> 00:01:45,190 Hvis du endnu ikke har RSVPed til denne begivenhed, kan du gå til 10 00:01:45,190 --> 00:01:47,510 cs50.net/rsvp. 11 00:01:47,510 --> 00:01:50,940 Du kan bringe hold af to eller tre eller fire. 12 00:01:50,940 --> 00:01:53,080 Du vil blive udfordret med problemer som den, du har set 13 00:01:53,080 --> 00:01:54,190 deroppe i begyndelsen. 14 00:01:54,190 --> 00:01:57,000 Alle nye problemer i år, hvis du spiste sidste år, og du 15 00:01:57,000 --> 00:01:59,680 vil have en chance derefter at vinde nogle fantastiske præmier. 16 00:01:59,680 --> 00:02:02,750 Blandt dem, en Wii og nogle gavekort og lignende 17 00:02:02,750 --> 00:02:05,650 alt mens du hænger ud med CS50 elever og klassekammerater 18 00:02:05,650 --> 00:02:07,720 og pizza og Facebook. 19 00:02:07,720 --> 00:02:10,430 Så mere om det i morgen, hvis du ønsker. 20 00:02:10,430 --> 00:02:13,330 >> Dette så er CS50, for dem af jer vil deltage i 21 00:02:13,330 --> 00:02:14,510 første gang. 22 00:02:14,510 --> 00:02:18,030 Og vid, at dette kursus er specielt fast besluttet på at få 23 00:02:18,030 --> 00:02:22,605 dig gennem dette kursus til sin endelige ende, på hvilket tidspunkt du 24 00:02:22,605 --> 00:02:24,270 har ikke blot en forståelse af disse 25 00:02:24,270 --> 00:02:26,450 grundlæggende elementer i datalogi, men du vil have 26 00:02:26,450 --> 00:02:29,120 dette meget praktisk færdighed sæt, som du derefter kan tage tilbage til 27 00:02:29,120 --> 00:02:31,370 din egen afdeling, uanset om det er ingeniørvidenskab, 28 00:02:31,370 --> 00:02:33,570 anvendt matematik, naturvidenskab, naturlige 29 00:02:33,570 --> 00:02:34,780 videnskab eller lignende. 30 00:02:34,780 --> 00:02:37,030 Faktisk, hvad er så spændende om datalogi disse 31 00:02:37,030 --> 00:02:39,900 dage er, at det er lige så gældende for 32 00:02:39,900 --> 00:02:40,990 alle mulige felter. 33 00:02:40,990 --> 00:02:46,210 Og selvom i dag, vil vi kun skrabe overfladen af ​​en 34 00:02:46,210 --> 00:02:49,020 meget traditionelle programmeringssprog kaldet C, vil vi 35 00:02:49,020 --> 00:02:51,040 i stedet se på noget, der hedder Scratch, noget med 36 00:02:51,040 --> 00:02:53,420 som denne cookie kærlighedshistorie blev gennemført ved en af ​​dine 37 00:02:53,420 --> 00:02:57,020 forgængere i de forløbne år, at fortælle historier, skabe spil, 38 00:02:57,020 --> 00:03:00,060 at skabe interaktiv kunst, og faktisk begynde at pakke vores 39 00:03:00,060 --> 00:03:02,240 sind omkring nogle af de fundamentale konstruktioner, 40 00:03:02,240 --> 00:03:05,390 ligge til grund for programmering, men i en sammenhæng, som du vil se, det er 41 00:03:05,390 --> 00:03:09,140 langt mindre skræmmende, det er langt mindre mystiske, end du vil se 42 00:03:09,140 --> 00:03:10,140 inden længe. 43 00:03:10,140 --> 00:03:12,410 Og indse, også for dem af jer bare slutter sig til os dette 44 00:03:12,410 --> 00:03:16,170 semester, de sætninger, som vi sluttede onsdag foredrag, 45 00:03:16,170 --> 00:03:20,260 det er ikke så vigtigt, hvor du ender i forhold til din 46 00:03:20,260 --> 00:03:22,950 klassekammerater i denne klasse, men hvor man, ved semesters afslutning 47 00:03:22,950 --> 00:03:27,190 i uge 11, ender i forhold til dig selv ret den dag i dag. 48 00:03:27,190 --> 00:03:32,000 >> Så uden videre, er det også værd at bemærke, at 49 00:03:32,000 --> 00:03:34,450 de mindre behagelige, dem midt imellem, er 50 00:03:34,450 --> 00:03:36,825 også ved udformningen af ​​dette kursus, ikke på noget ringere 51 00:03:36,825 --> 00:03:38,760 vis-a-vis de mere komfortabel 52 00:03:38,760 --> 00:03:39,920 kommer i denne klasse. 53 00:03:39,920 --> 00:03:41,810 Som du kan se i løbet af de kommende uger, vi har forskellige 54 00:03:41,810 --> 00:03:44,600 spor for uensartede ryg baggrund, sektioner for dem 55 00:03:44,600 --> 00:03:46,500 mindre behagelig, mere komfortabel, der et eller andet sted 56 00:03:46,500 --> 00:03:47,250 i mellem. 57 00:03:47,250 --> 00:03:49,520 Som du kan se i denne weekend og i næste uge, to versioner af 58 00:03:49,520 --> 00:03:52,410 De fleste problemer sæt i både standard-og hacker-udgave, så 59 00:03:52,410 --> 00:03:55,390 at I alle kan selv vælge ned ad stien, som du 60 00:03:55,390 --> 00:03:56,615 er mest bekvemt. 61 00:03:56,615 --> 00:03:58,770 >> Så i dag, dykke vi ind i denne programmering 62 00:03:58,770 --> 00:04:00,060 sprog kaldet Scratch. 63 00:04:00,060 --> 00:04:02,250 Det er en grafisk programmeringssprog, og alligevel har den 64 00:04:02,250 --> 00:04:04,500 samme træk ved nogle af de højere niveau sprog Vi vil 65 00:04:04,500 --> 00:04:07,050 udforske senere i semestret, blandt dem C og 66 00:04:07,050 --> 00:04:08,670 JavaScript og PHP. 67 00:04:08,670 --> 00:04:11,890 Men det vil give os mulighed for at undgå nogle af de distraktioner 68 00:04:11,890 --> 00:04:14,890 tidligt af syntaks, ting som semikolon, parenteser, 69 00:04:14,890 --> 00:04:17,720 og andre mystiske detaljer at der ved første øjekast, er bare ikke 70 00:04:17,720 --> 00:04:19,916 overhovedet intellektuelt interessant og har tendens til at komme i 71 00:04:19,916 --> 00:04:22,310 vejen fra nogle grundlæggende forståelse. 72 00:04:22,310 --> 00:04:24,870 Med hensyn til nu støttestrukturen forude, indså dette 73 00:04:24,870 --> 00:04:27,570 værktøj, CS50 Diskuter, som vil blive sammenkoblet på kursets 74 00:04:27,570 --> 00:04:30,320 website senere i dag, er det online diskussionsforum i 75 00:04:30,320 --> 00:04:32,480 som du vil være i stand til at stille spørgsmål til hinanden og 76 00:04:32,480 --> 00:04:35,020 personale, og det er også et værktøj, som vi vil se i næste uge, 77 00:04:35,020 --> 00:04:37,240 at vi vil bruge ganske integratedly i 78 00:04:37,240 --> 00:04:38,780 kontortid samt. 79 00:04:38,780 --> 00:04:41,670 Faktisk kontortid begynde på mandag, og helt ærligt, det første 80 00:04:41,670 --> 00:04:43,930 uge kontortid er temmelig lav nøgle. 81 00:04:43,930 --> 00:04:46,820 >> Jeg tror ikke du vil finde Scratch alt det utilgængelige. 82 00:04:46,820 --> 00:04:48,930 Det er temmelig selvforklarende, som vi vil se, og hvad så 83 00:04:48,930 --> 00:04:51,380 vi vil bruge det til i dag er at udvinde nogle af de 84 00:04:51,380 --> 00:04:53,990 grundlæggende idéer, der vil altså fortsat findes i hele 85 00:04:53,990 --> 00:04:54,900 resten af ​​semestret. 86 00:04:54,900 --> 00:04:57,980 Men fra mandag, 8:00 PM gennem 23:00 vil blive 87 00:04:57,980 --> 00:05:01,530 kontortid i Annenberg end hjernen pause. 88 00:05:01,530 --> 00:05:04,490 Sektionering to vil begynde denne aften, så engang i denne 89 00:05:04,490 --> 00:05:07,260 weekend, gå til cs50.net/section, og du vil 90 00:05:07,260 --> 00:05:08,530 blive stillet en række spørgsmål. 91 00:05:08,530 --> 00:05:10,290 Blandt dem, hvordan ville du beskrive din 92 00:05:10,290 --> 00:05:12,040 komfort niveau som i dag? 93 00:05:12,040 --> 00:05:14,450 Der er ingen hårde, fast regel om, hvem der er i hvilken spand. 94 00:05:14,450 --> 00:05:17,170 Det er bare den slags ting, som du sikkert vide, hvis du 95 00:05:17,170 --> 00:05:20,280 er blandt dem de mindre behagelig eller på anden måde. 96 00:05:20,280 --> 00:05:21,350 >> Og nu, walkthroughs. 97 00:05:21,350 --> 00:05:24,020 Problemet set specifikation for denne uge, både standard 98 00:05:24,020 --> 00:05:28,560 og hacker udgave ens, er online på cs50.net allerede nu. 99 00:05:28,560 --> 00:05:31,500 Og du vil se, at den første af disse udgaver, den 100 00:05:31,500 --> 00:05:33,940 standard udgave hver uge, er ledsaget af noget, vi 101 00:05:33,940 --> 00:05:36,550 call en kode gennemgang, en session ledet af en af 102 00:05:36,550 --> 00:05:39,100 kursets pædagogiske stipendiater til at guide dig igennem, giver 103 00:05:39,100 --> 00:05:42,290 tips om, og få dig ned et bestemt sti, når det kommer 104 00:05:42,290 --> 00:05:44,150 at starte disse problemområder sæt. 105 00:05:44,150 --> 00:05:46,790 Så med hver af disse problem indstiller, hvis du nogensinde ønsker 106 00:05:46,790 --> 00:05:50,250 for dig selv hvor skal jeg begynde, begynder du med disse 107 00:05:50,250 --> 00:05:50,890 walkthroughs. 108 00:05:50,890 --> 00:05:53,450 Og i virkeligheden, tillad mig at introducere Zamyla Chan, dette 109 00:05:53,450 --> 00:05:55,870 års undervisning fyr, som vil være førende hver eneste 110 00:05:55,870 --> 00:05:56,910 en af ​​disse walkthroughs. 111 00:05:56,910 --> 00:05:57,961 Zamyla? 112 00:05:57,961 --> 00:06:03,370 >> [Bifald] 113 00:06:03,370 --> 00:06:03,975 ZAMYLA CHAN: Oh, hej, alle. 114 00:06:03,975 --> 00:06:05,130 Mit navn er Zamyla. 115 00:06:05,130 --> 00:06:08,250 Jeg er en junior ingeniørstudiet i Winthrop House. 116 00:06:08,250 --> 00:06:10,890 Men jeg forsøge at passe på så mange datalogiske kurser som jeg 117 00:06:10,890 --> 00:06:13,350 kan, hvilket er grunden til jeg er virkelig spændt på at stå i spidsen for dette 118 00:06:13,350 --> 00:06:14,590 års walkthroughs. 119 00:06:14,590 --> 00:06:16,950 Walkthroughs, for mig, var en væsentlig del af min CS50 120 00:06:16,950 --> 00:06:17,910 erfaringer. 121 00:06:17,910 --> 00:06:22,710 Under gennemgang, der for hvert p-set vil vi gå igennem 122 00:06:22,710 --> 00:06:25,580 det problem, der er sammen, kigge over de problemer, slags 123 00:06:25,580 --> 00:06:27,360 del dem op i overskuelige bidder. 124 00:06:27,360 --> 00:06:28,990 Jeg vil give dig tips, teknikker, for at få 125 00:06:28,990 --> 00:06:30,820 igennem og komme i gang. 126 00:06:30,820 --> 00:06:33,510 Jeg håber at se jer alle på walkthroughs. 127 00:06:33,510 --> 00:06:34,720 Hvis du ikke kan gøre det i person, så 128 00:06:34,720 --> 00:06:36,580 du gøre tune i online. 129 00:06:36,580 --> 00:06:36,840 >> DAVID Malan: Excellent. 130 00:06:36,840 --> 00:06:37,950 Tak, Zamyla. 131 00:06:37,950 --> 00:06:40,870 Således indse, at walkthroughs er faktisk, på en fredag 132 00:06:40,870 --> 00:06:43,110 eftermiddag, men det er bevidst ved design, så 133 00:06:43,110 --> 00:06:45,750 selv hvis du hellere vil ikke deltage i klassen på en fredag 134 00:06:45,750 --> 00:06:48,490 eftermiddagen vil de videoer være op desto mere hurtigt over 135 00:06:48,490 --> 00:06:48,990 weekenden. 136 00:06:48,990 --> 00:06:51,880 Så indse, at cs50.net vil være alle Zamyla s 137 00:06:51,880 --> 00:06:53,130 walkthroughs. 138 00:06:54,800 --> 00:06:56,890 Og at der er dags dato og klokkeslæt, 3:00 PM, 139 00:06:56,890 --> 00:06:58,370 Harberd Hall, 104. 140 00:06:58,370 --> 00:07:00,080 Og nogle af de pædagogiske stipendiater har også forberedt 141 00:07:00,080 --> 00:07:03,250 nogle bemærkninger for dig i absentia for at give dig en smule af 142 00:07:03,250 --> 00:07:06,760 perspektiv om, hvad deres erfaringer kommer ind og 143 00:07:06,760 --> 00:07:08,990 gå ud af CS50 var ligesom. 144 00:07:08,990 --> 00:07:11,250 Så hvis vi kunne dæmpe lyset for bare et øjeblik, jeg giver dig 145 00:07:11,250 --> 00:07:18,100 nogle af CS50 personale. 146 00:07:18,100 --> 00:07:20,440 >> JACKSON Steinkamp: Jeg tog CS50 sidste år som en freshman i 147 00:07:20,440 --> 00:07:22,880 falde, og det absolut blæste mit sind. 148 00:07:22,880 --> 00:07:25,090 Jeg havde aldrig taget nogen programmering klasser før, 149 00:07:25,090 --> 00:07:26,380 og aldrig kom ind med enhver computer science 150 00:07:26,380 --> 00:07:27,320 erfaring overhovedet. 151 00:07:27,320 --> 00:07:29,240 Og bare, jeg hørt rygter om klassen og 152 00:07:29,240 --> 00:07:30,050 besluttede at tage det. 153 00:07:30,050 --> 00:07:31,780 >> JULIA MITELMAN: Det var virkelig sjovt, virkelig engagerende. 154 00:07:31,780 --> 00:07:33,480 Jeg stadig, den dag i dag - 155 00:07:33,480 --> 00:07:36,560 Jeg har lige for nylig så jeg har den diskette, at David gav os 156 00:07:36,560 --> 00:07:38,140 på vores første dag i foredrag. 157 00:07:38,140 --> 00:07:40,020 Jeg havde hængt det på min væg. 158 00:07:40,020 --> 00:07:42,410 Det er nok lidt nørdet, men jeg hang i på min 159 00:07:42,410 --> 00:07:46,930 væg i klassen som en påmindelse om, hvor fedt det var. 160 00:07:46,930 --> 00:07:49,240 >> TRAVIS DOWNS: Det er så pinligt. 161 00:07:49,240 --> 00:07:50,770 >> JACKSON Steinkamp: Datalogi er noget, du 162 00:07:50,770 --> 00:07:52,370 bør forsøge, selvom du ikke er en for 163 00:07:52,370 --> 00:07:54,980 de traditionelle videnskaber. 164 00:07:54,980 --> 00:07:58,510 Det er sin egen erfaring, og CS50 vil sørge for at du er 165 00:07:58,510 --> 00:08:01,520 støttet godt igennem det med sin veritabel hær af TFS. 166 00:08:01,520 --> 00:08:03,700 >> ALI Nahm: Jeg tog det som en freshman, så jeg lavede en masse 167 00:08:03,700 --> 00:08:04,215 af nye venner. 168 00:08:04,215 --> 00:08:07,170 Jeg fik også introduceret til hele denne koncentration og 169 00:08:07,170 --> 00:08:10,770 Hele School of Engineering, og så jeg stærkt anbefale det 170 00:08:10,770 --> 00:08:14,360 og byder dig velkommen til vores CS50 familie. 171 00:08:14,360 --> 00:08:17,510 >> Yaniv YACOBY: CS50 bare lærer dig, hvordan du bruger værktøjerne 172 00:08:17,510 --> 00:08:19,210 der er bredt tilgængelige. 173 00:08:19,210 --> 00:08:21,840 Du skal bare have en bærbar computer, skal du bruge en webbrowser, og du 174 00:08:21,840 --> 00:08:26,030 nødt til at lære at skrive noget kode, og du kan virkelig bygge 175 00:08:26,030 --> 00:08:27,400 pæne ting. 176 00:08:27,400 --> 00:08:31,660 >> KAREN XIAO: Det er bare så fedt at være i stand til at gøre noget 177 00:08:31,660 --> 00:08:34,580 og har folk bruger det og har folk se det, og det er 178 00:08:34,580 --> 00:08:35,900 hvad jeg virkelig elsker ved det. 179 00:08:35,900 --> 00:08:37,429 >> TIM MCLAUGHLIN: - en følelse af fællesskab, tror jeg, i dette 180 00:08:37,429 --> 00:08:39,470 selvfølgelig mere end nogen anden kursus jeg har taget hidtil. 181 00:08:39,470 --> 00:08:41,350 Du er ikke bare at tage en anden - 182 00:08:41,350 --> 00:08:42,740 du ikke udfylde et andet krav. 183 00:08:42,740 --> 00:08:45,310 Du er ikke bare foredrag og gå til afsnittet. 184 00:08:45,310 --> 00:08:49,630 Men du laver tonsvis af ting, der er alt om 185 00:08:49,630 --> 00:08:51,560 programmering og alt om teknologi, men det gør ikke 186 00:08:51,560 --> 00:08:53,090 virkelig føle sig som en klasse det meste af tiden. 187 00:08:53,090 --> 00:08:55,012 >> TRAVIS DOWNS: Og på den første dag, udleveres de ud kage, og 188 00:08:55,012 --> 00:08:56,215 Jeg blev straks solgt. 189 00:08:56,215 --> 00:08:57,822 >> JACOB PRITT: Gratis slik og pizza. 190 00:08:57,822 --> 00:08:59,820 >> ZAMYLA CHAN: - uanset din interesse niveau, tror jeg 191 00:08:59,820 --> 00:09:05,170 at CS50, vil du have det sjovt, og du vil være intellektuelt 192 00:09:05,170 --> 00:09:06,070 stimuleret. 193 00:09:06,070 --> 00:09:07,926 >> MARK GROZEN-SMITH: Det er altid en fest i klassen, og det er en 194 00:09:07,926 --> 00:09:09,990 part hver nat arbejder på din p-sæt. 195 00:09:09,990 --> 00:09:11,880 >> JACKSON Steinkamp: Hver gang du er færdig med et problem sæt, du 196 00:09:11,880 --> 00:09:13,710 vil føles som du er færdig med et projekt. 197 00:09:13,710 --> 00:09:16,580 >> MELISSA NIU: Det var første år, og jeg var færdig med at handle. 198 00:09:16,580 --> 00:09:19,030 Jeg havde mine fire klasser klar, og jeg var i Annenberg. 199 00:09:19,030 --> 00:09:21,670 Og jeg støder ind i en ven, og han siger, hey, jeg shopping 200 00:09:21,670 --> 00:09:24,330 denne klasse kaldet CS50, og du bør komme med mig. 201 00:09:24,330 --> 00:09:28,150 Endte med at tage det, der falder, og efter denne klasse, jeg 202 00:09:28,150 --> 00:09:30,510 tænkte måske jeg har tænkt mig at ringe i CS. 203 00:09:30,510 --> 00:09:33,760 Men her er jeg, tre år senere, stadig studerer computer 204 00:09:33,760 --> 00:09:36,680 videnskab og faktisk gør det som en stor, og jeg elskede hvert 205 00:09:36,680 --> 00:09:37,780 øjeblik af det. 206 00:09:37,780 --> 00:09:39,030 >> ROB BOWDEN: Jeg har ingen idé. 207 00:09:46,408 --> 00:09:48,060 >> ALI Nahm: Lad os se. 208 00:09:48,060 --> 00:09:49,200 >> MELISSA NIU: craziness. 209 00:09:49,200 --> 00:09:50,610 >> SPEAKER 1: Jeg føler, at jeg ville være meget kliché. 210 00:09:50,610 --> 00:09:52,530 Jeg ville bare sige, ligesom, awesome. 211 00:09:52,530 --> 00:09:53,540 >> Yaniv YACOBY: Tilgængelighed. 212 00:09:53,540 --> 00:09:55,080 >> JACOB PRITT: Gratis slik og pizza. 213 00:09:55,080 --> 00:09:57,310 >> TRAVIS DOWNS: Kan ikke skrue ned en klasse, der uddeler kage. 214 00:09:57,310 --> 00:09:58,510 >> TIM MCLAUGHLIN: Energetic. 215 00:09:58,510 --> 00:10:00,040 >> Vipul Shekhawat: Essential. 216 00:10:00,040 --> 00:10:02,636 >> ROB BOWDEN: Lad mig tænke på et svar. 217 00:10:02,636 --> 00:10:04,480 Jeg tror, ​​jeg har fundet noget. 218 00:10:04,480 --> 00:10:07,092 Åh, gud. 219 00:10:07,092 --> 00:10:13,370 Ja, mit navn er Rob Bowden, og dette er CS50. 220 00:10:13,370 --> 00:10:16,340 >> [Bifald] 221 00:10:20,810 --> 00:10:23,390 DAVID Malan: Okay, så lad os begynde at male et billede 222 00:10:23,390 --> 00:10:26,230 af, i hvilken retning vi kan gå, og lad os introducere 223 00:10:26,230 --> 00:10:28,190 dette begreb her kaldes pseudokode. 224 00:10:28,190 --> 00:10:29,560 Så pseudokode er ikke en programmering 225 00:10:29,560 --> 00:10:30,810 sproget i sig selv. 226 00:10:30,810 --> 00:10:33,250 Det er ikke noget teknisk i sig selv, men det er bare en slags 227 00:10:33,250 --> 00:10:36,490 generel måde at udtrykke dig selv temmelig præcist, 228 00:10:36,490 --> 00:10:39,730 temmelig algoritmisk, temmelig proceduremæssigt, men uden 229 00:10:39,730 --> 00:10:42,570 at skulle bekymre sig om, hvad sprog, du udtrykker 230 00:10:42,570 --> 00:10:43,150 dig i. 231 00:10:43,150 --> 00:10:46,280 Det er nogle model af engelsk og programmeringssprog med 232 00:10:46,280 --> 00:10:48,790 som du tilfældigvis være bekendt, så vi kan begynde 233 00:10:48,790 --> 00:10:50,600 skriver den slags ting, som vi går. 234 00:10:50,600 --> 00:10:54,450 Og i virkeligheden, Joseph, kunne jeg låne dig op på scenen for at være 235 00:10:54,450 --> 00:10:55,490 skriver her? 236 00:10:55,490 --> 00:11:00,130 Jeg har gået fremad her i forvejen, og glemt at sætte 237 00:11:00,130 --> 00:11:02,920 på nogle sokker i dag, og det vil være blandt vores mere 238 00:11:02,920 --> 00:11:03,780 latterlige eksempler. 239 00:11:03,780 --> 00:11:04,580 >> Nu har jeg brug for dig herovre. 240 00:11:04,580 --> 00:11:05,630 Jeg vil gøre det sokker del. 241 00:11:05,630 --> 00:11:08,040 Så her har vi en lille notesblok. 242 00:11:08,040 --> 00:11:09,940 Det er bogstavelig talt lige TextEdit i en Mac. 243 00:11:09,940 --> 00:11:12,270 Vi faktisk ikke vil skrive et runnable program, men 244 00:11:12,270 --> 00:11:14,220 vi bare vil begynde at skitsere pseudokode baseret 245 00:11:14,220 --> 00:11:17,830 på nogle af de råd, du giver til mig her. 246 00:11:17,830 --> 00:11:20,760 Så her er min bunke af sokker derhjemme. 247 00:11:20,760 --> 00:11:23,320 Jeg har ingen sokker på, når jeg vågner om morgenen, og vi har nu 248 00:11:23,320 --> 00:11:26,280 nødt til at skrive et program, en algoritme slags, som 249 00:11:26,280 --> 00:11:27,900 at få disse sokker på mine fødder. 250 00:11:27,900 --> 00:11:30,860 Og hen ad vejen, lad os se om vi snuble over den eller støde, 251 00:11:30,860 --> 00:11:32,860 nogle af de idéer, som du er nødt til at starte 252 00:11:32,860 --> 00:11:35,470 tænker meget mere alvorligt, når programmering 253 00:11:35,470 --> 00:11:37,950 lest dine programmer ikke opfører sig helt som planlagt. 254 00:11:37,950 --> 00:11:39,580 >> Så jeg sidder hernede. 255 00:11:39,580 --> 00:11:41,180 Jeg har fået min bunke af sokker. 256 00:11:41,180 --> 00:11:43,780 Hvad er den første ting en fornuftig menneske ville 257 00:11:43,780 --> 00:11:46,600 gøre, når målet er at sætte på et par sokker? 258 00:11:46,600 --> 00:11:49,190 Nogen give mig et skridt, og kun et trin. 259 00:11:49,190 --> 00:11:49,796 Ja? 260 00:11:49,796 --> 00:11:50,690 PUBLIKUM: Bøj ned. 261 00:11:50,690 --> 00:11:54,290 DAVID Malan: Bøj ned, Okay. 262 00:11:54,290 --> 00:11:55,540 Trin to. 263 00:11:59,975 --> 00:12:00,645 Trin to. 264 00:12:00,645 --> 00:12:01,840 PUBLIKUM: Saml din sok. 265 00:12:01,840 --> 00:12:03,220 DAVID Malan: Saml din sok. 266 00:12:03,220 --> 00:12:07,610 Okay, så lille tvetydighed her, og dette er en af ​​de første 267 00:12:07,610 --> 00:12:09,380 anstødssten at vi skulle bevidst 268 00:12:09,380 --> 00:12:10,290 støder her. 269 00:12:10,290 --> 00:12:14,110 Det er lidt tvetydig, så afhente din sok. 270 00:12:14,110 --> 00:12:17,425 Fint, jeg tager denne ene, men en computer, indser på bare et 271 00:12:17,425 --> 00:12:20,420 bit, kommer ikke til at have den slags menneskeligt instinkt til bare 272 00:12:20,420 --> 00:12:21,490 vælge den nærmeste. 273 00:12:21,490 --> 00:12:23,590 Vi bliver nødt til at starte inden længe, ​​udtrykker 274 00:12:23,590 --> 00:12:24,610 selv mere præcist. 275 00:12:24,610 --> 00:12:26,600 >> Okay, så trin to er afhente din sok. 276 00:12:26,600 --> 00:12:27,520 Vi tager det. 277 00:12:27,520 --> 00:12:28,620 Trin tre. 278 00:12:28,620 --> 00:12:29,532 I ryggen. 279 00:12:29,532 --> 00:12:30,900 PUBLIKUM: Find et matchende par. 280 00:12:30,900 --> 00:12:32,060 DAVID Malan: Find matchende par. 281 00:12:32,060 --> 00:12:34,740 Okay, så det er godt. 282 00:12:34,740 --> 00:12:35,650 Jeg var nødt til at vælge denne sok. 283 00:12:35,650 --> 00:12:39,200 Så målet er at finde en matchende sok, nu, men hvad 284 00:12:39,200 --> 00:12:39,990 betyder det? 285 00:12:39,990 --> 00:12:42,130 En rimelig menneske, meget gerne på onsdag, når jeg bare 286 00:12:42,130 --> 00:12:44,700 forstod at finde Mike Smith i en telefonbog, bare lidt 287 00:12:44,700 --> 00:12:45,640 gik med deres instinkt. 288 00:12:45,640 --> 00:12:49,220 Men her er det naturligvis denne sok her, men en computers 289 00:12:49,220 --> 00:12:51,350 ikke vil være så instinktiv. 290 00:12:51,350 --> 00:12:53,830 En computer vil have en samling af bits, som vi 291 00:12:53,830 --> 00:12:55,380 diskuteres på onsdag, og dem er 292 00:12:55,380 --> 00:12:56,710 organiseret eller anden måde i hukommelsen. 293 00:12:56,710 --> 00:13:00,400 Men pointen er, at en computer har kun mulighed 294 00:13:00,400 --> 00:13:03,390 at se på tingene én ad gangen, og i virkeligheden, selv vi 295 00:13:03,390 --> 00:13:05,980 mennesker - selvom det føles som om jeg kiggede ned, og en split 296 00:13:05,980 --> 00:13:08,900 sekund senere ved jeg, hvor sokken er, min hjerne og mine øjne 297 00:13:08,900 --> 00:13:12,000 formentlig havde en hurtig skimme af disse sokker, og derefter låst 298 00:13:12,000 --> 00:13:13,400 på det her omhandlede. 299 00:13:13,400 --> 00:13:15,780 >> Så hvis vi være så meget mere bevidst nu som en computer, 300 00:13:15,780 --> 00:13:17,780 hvordan finder jeg denne matchende par? 301 00:13:17,780 --> 00:13:18,890 Nuvel, vi har for at skifte. 302 00:13:18,890 --> 00:13:21,440 Vi er nødt til måske sløjfe over dette rod af sokker på 303 00:13:21,440 --> 00:13:25,760 gulv, hvorved jeg sige noget lignende FOR HVER sok, samle den 304 00:13:25,760 --> 00:13:30,195 op, og hvis den samme form og størrelse som den anden, SÅ 305 00:13:30,195 --> 00:13:32,150 prik, prik, prik, vil vi fortsætte historien. 306 00:13:32,150 --> 00:13:34,430 Så for hver sok, så jeg afhente denne ene. 307 00:13:34,430 --> 00:13:36,520 Jeg tjekke er dette lig med denne ene. 308 00:13:36,520 --> 00:13:38,250 Det er ikke, så puttede jeg disse side. 309 00:13:38,250 --> 00:13:39,220 Så jeg gentage igen. 310 00:13:39,220 --> 00:13:40,340 Er dette en lige? 311 00:13:40,340 --> 00:13:42,010 Nej, det er ikke, så jeg lagde den til side. 312 00:13:42,010 --> 00:13:42,710 Er dette en? 313 00:13:42,710 --> 00:13:43,200 Nej. 314 00:13:43,200 --> 00:13:43,670 Denne ene? 315 00:13:43,670 --> 00:13:44,520 Nej, og så videre. 316 00:13:44,520 --> 00:13:48,730 Og så endelig, forhåbentlig, vil jeg støder på denne sok her. 317 00:13:48,730 --> 00:13:51,350 Så hvis det er den samme form, størrelse, tag den. 318 00:13:51,350 --> 00:13:53,980 >> Og nu, hvad der ville være vores næste skridt her? 319 00:13:53,980 --> 00:13:54,402 Ja? 320 00:13:54,402 --> 00:13:56,090 PUBLIKUM: Identificer højre fra venstre. 321 00:13:56,090 --> 00:13:58,980 DAVID Malan: Okay, identificere højre og venstre, så 322 00:13:58,980 --> 00:14:01,870 heldigvis, den slags værker. 323 00:14:01,870 --> 00:14:04,020 En lille symmetrisk, eller jeg har lige slidt dem på den måde. 324 00:14:04,020 --> 00:14:07,020 Okay, så jeg har fundet det rette. 325 00:14:07,020 --> 00:14:09,980 Og nu, før vi går videre, lad mig påpege, hvad Josephs 326 00:14:09,980 --> 00:14:12,890 gjort her som en slags bevandret programmør. 327 00:14:12,890 --> 00:14:15,800 Så igen, der er ingen måde at gøre dette, men ud over blot 328 00:14:15,800 --> 00:14:18,480 nummerering af linjer, har Joseph allerede begyndt at gøre dette 329 00:14:18,480 --> 00:14:19,460 slags fordybning. 330 00:14:19,460 --> 00:14:21,950 Faktisk er det en meget almindelig konvention i programmeringen, 331 00:14:21,950 --> 00:14:26,110 hvorved når du gør noget iterativ, looping stil, som 332 00:14:26,110 --> 00:14:28,480 vi indebærer med det engelske udtryk "FOR HVER 333 00:14:28,480 --> 00:14:31,090 sok, "konventionen i pseudokode, og som vi vil se, 334 00:14:31,090 --> 00:14:33,410 normale programmeringssprog, er at bare led. 335 00:14:33,410 --> 00:14:36,240 Hit the space bar et par gange, ramte tabulatortasten eller lignende, 336 00:14:36,240 --> 00:14:40,660 så at indlejret under "FOR HVER sok" er bid af 337 00:14:40,660 --> 00:14:43,430 ting, du behøver at gøre som følge af denne løkke. 338 00:14:43,430 --> 00:14:45,940 Så det er alt der er at formidle semantisk. 339 00:14:45,940 --> 00:14:48,620 Nu i mellemtiden, "Hvis det er den samme form og størrelse," den 340 00:14:48,620 --> 00:14:51,590 kendsgerning, at "Take it" er indrykket yderligere betyder blot, 341 00:14:51,590 --> 00:14:54,370 det er det eneste, du skal gøre, hvis denne betingelse, 342 00:14:54,370 --> 00:14:59,770 hvis den gren, der skillevej, er faktisk sandt. 343 00:14:59,770 --> 00:15:02,130 >> Så nu her, vi er på trin fire, identificere højre og venstre. 344 00:15:02,130 --> 00:15:03,410 Jeg har identificeret ret. 345 00:15:03,410 --> 00:15:05,150 Giv mig trin fem. 346 00:15:05,150 --> 00:15:07,880 Og teknisk set kunne vi virkelig kalde 347 00:15:07,880 --> 00:15:09,510 den for hver ting - 348 00:15:09,510 --> 00:15:11,450 bør du nok nummerere alle linjer, hvis 349 00:15:11,450 --> 00:15:12,190 vi vil gøre dette. 350 00:15:12,190 --> 00:15:14,006 JOSEPH: [uhørligt] 351 00:15:14,006 --> 00:15:14,610 DAVID Malan: [uhørligt]? 352 00:15:14,610 --> 00:15:16,070 Okay, fint, okay, vil vi gøre det på din måde. 353 00:15:16,070 --> 00:15:19,590 Okay, så trin fem, hvordan gør vi det rigtige sok? 354 00:15:19,590 --> 00:15:22,310 Hvordan kommer vi videre næste, her? 355 00:15:22,310 --> 00:15:22,730 Ja? 356 00:15:22,730 --> 00:15:24,300 PUBLIKUM: Løft højre ben. 357 00:15:24,300 --> 00:15:27,100 DAVID Malan: Løft højre ben, Okay. 358 00:15:27,100 --> 00:15:29,330 Trin seks? 359 00:15:29,330 --> 00:15:30,728 Hurtigt. 360 00:15:30,728 --> 00:15:31,202 Yeah. 361 00:15:31,202 --> 00:15:33,100 AUDIENCE: Find en åben ende af sokken. 362 00:15:33,100 --> 00:15:34,440 DAVID Malan: God, find den åbne ende af sokken. 363 00:15:34,440 --> 00:15:34,840 Så godt. 364 00:15:34,840 --> 00:15:37,180 Så her, helt ærligt, ville en meget almindelig instinkt bare være 365 00:15:37,180 --> 00:15:39,880 sat på højre sok, men det er også er temmelig tvetydig. 366 00:15:39,880 --> 00:15:42,750 Medmindre computer eller menneske ved præcis, hvad det betyder, 367 00:15:42,750 --> 00:15:45,160 det kommer ikke til at være at udføre den, så her, jeg har 368 00:15:45,160 --> 00:15:46,520 fandt åbningen af ​​bestanden. 369 00:15:46,520 --> 00:15:48,222 Trin syv? 370 00:15:48,222 --> 00:15:49,700 PUBLIKUM: Tryk tæerne. 371 00:15:49,700 --> 00:15:51,070 DAVID Malan: Touch tæer. 372 00:15:51,070 --> 00:15:53,546 Okay, så nu går vi - 373 00:15:53,546 --> 00:15:56,480 Okay, jeg kommer til at tage nogle friheder her. 374 00:15:56,480 --> 00:15:57,110 Tak. 375 00:15:57,110 --> 00:15:59,210 Trin otte? 376 00:15:59,210 --> 00:16:00,060 Sæt sok. 377 00:16:00,060 --> 00:16:02,060 Okay, så nu jeg tror vi er tæt nok til at sortere i at tage 378 00:16:02,060 --> 00:16:03,480 denne ene hjemme. 379 00:16:03,480 --> 00:16:05,980 Okay, så det går op. 380 00:16:05,980 --> 00:16:07,950 Jeg tager nogle friheder med, hvad det betyder, faktisk. 381 00:16:07,950 --> 00:16:08,920 Sæt sok på. 382 00:16:08,920 --> 00:16:10,853 Okay, nu trin ni? 383 00:16:10,853 --> 00:16:11,740 PUBLIKUM: Sæt foden ned. 384 00:16:11,740 --> 00:16:12,510 DAVID Malan: Tak. 385 00:16:12,510 --> 00:16:15,610 Trin ni, satte foden ned, og nu kan vi gentage. 386 00:16:15,610 --> 00:16:19,540 Så formentlig kan vi nu gå ind i trin 10 og sige identificere 387 00:16:19,540 --> 00:16:21,960 venstre sok, men det er formentlig allerede har gjort. 388 00:16:21,960 --> 00:16:24,100 >> Og så så kan jeg sortere i gentage disse trin. 389 00:16:24,100 --> 00:16:25,260 Men denne form for rejser spørgsmålet. 390 00:16:25,260 --> 00:16:28,100 Før sidste gang vi ønskede at gentage noget, vi 391 00:16:28,100 --> 00:16:30,730 gjorde det iterativt, igen og igen, en FOR 392 00:16:30,730 --> 00:16:32,660 Hver sløjfe så at sige. 393 00:16:32,660 --> 00:16:36,420 Ville det være fornuftigt at bruge en løkke til at håndtere både 394 00:16:36,420 --> 00:16:38,470 venstre og højre sok? 395 00:16:38,470 --> 00:16:40,460 Fordi det føles som disse operationer er temmelig meget 396 00:16:40,460 --> 00:16:43,090 identiske bortset fra, at man starter her og en 397 00:16:43,090 --> 00:16:44,850 starter her? 398 00:16:44,850 --> 00:16:47,400 Har vi loop, eller skal vi bare holde skriftligt skridt 399 00:16:47,400 --> 00:16:48,745 10 og 11 og 12? 400 00:16:48,745 --> 00:16:50,540 PUBLIKUM: Loop. 401 00:16:50,540 --> 00:16:52,240 >> DAVID Malan: Okay, så loop. 402 00:16:52,240 --> 00:16:54,730 Jeg faktisk kunne have sagt bare holde ud. 403 00:16:54,730 --> 00:16:55,720 Så hvorfor er dette tilfældet? 404 00:16:55,720 --> 00:16:57,940 Nå, det er faktisk den første af vores ikke-indlysende 405 00:16:57,940 --> 00:17:01,210 design beslutninger, og i virkeligheden, et af de målinger, som 406 00:17:01,210 --> 00:17:03,990 vil vi begynde at vurdere, for os selv og for dig, 407 00:17:03,990 --> 00:17:06,780 Kvaliteten af ​​et program er bare hvor godt designet det er. 408 00:17:06,780 --> 00:17:09,619 Har du gjort den minimale mængde af arbejde, nødvendig for at 409 00:17:09,619 --> 00:17:12,480 få arbejdet gjort mest hurtigt, enten i form af 410 00:17:12,480 --> 00:17:15,430 din tid eller i forhold til computerens spilletid? 411 00:17:15,430 --> 00:17:17,589 Hvor mange operationer gør det tager at gennemføre? 412 00:17:17,589 --> 00:17:20,180 Så velsagtens, dette er en mulighed for en løkke, fordi 413 00:17:20,180 --> 00:17:22,829 så snart jeg begynder at kopiere og indsætte, som Joseph effektivt 414 00:17:22,829 --> 00:17:25,010 ville begynde at gøre i et øjeblik, du slags spilder din 415 00:17:25,010 --> 00:17:27,140 tid, og du bliver dobbelt udtryksfuld. 416 00:17:27,140 --> 00:17:30,260 >> Men på samme tid er disse virkelig bare to særlige 417 00:17:30,260 --> 00:17:31,890 sager, venstre og højre. 418 00:17:31,890 --> 00:17:34,930 Og mens før, kunne jeg have 10 eller 20 eller flere strømper i 419 00:17:34,930 --> 00:17:37,960 en bunke, er det absolut giver mening ikke at have 50 linjer 420 00:17:37,960 --> 00:17:40,180 kode siger tjek denne sok, så den næste, 421 00:17:40,180 --> 00:17:41,300 derefter den næste. 422 00:17:41,300 --> 00:17:43,450 Her, det er en lidt mindre indlysende, og jeg ville foreslået 423 00:17:43,450 --> 00:17:44,390 at vi kunne gå begge veje. 424 00:17:44,390 --> 00:17:46,720 Vi kunne enten have at sløjfe, selv om det kun sløjfer 425 00:17:46,720 --> 00:17:50,620 to gange, eller vi kunne blot kopiere og indsætte bare en lille smule 426 00:17:50,620 --> 00:17:53,270 her for at få arbejdet gjort. 427 00:17:53,270 --> 00:17:55,210 Men dette program er buggy, så at sige. 428 00:17:55,210 --> 00:17:59,120 Det kan have nogle fejl, fejl eller hjørne sager, så at 429 00:17:59,120 --> 00:18:00,860 taler, at vi virkelig ikke regnet med. 430 00:18:00,860 --> 00:18:03,400 Intet gik galt denne gang, men hvad der kunne være gået galt 431 00:18:03,400 --> 00:18:06,100 under udførelse af dette program? 432 00:18:06,100 --> 00:18:07,040 PUBLIKUM: Du har ikke nogen sokker. 433 00:18:07,040 --> 00:18:08,980 >> DAVID Malan: Så der kan ikke være nogen sokker der overhovedet. 434 00:18:08,980 --> 00:18:10,380 Så lad os antage, at hjørne sag. 435 00:18:10,380 --> 00:18:14,670 Så hvis vi kunne rulle tilbage op til trin et, så trin et var 436 00:18:14,670 --> 00:18:16,540 bøje sig ned, så der kontrollerer ud. 437 00:18:16,540 --> 00:18:21,250 Trin to, afhente din sok, men derefter finde matchende sokker, 438 00:18:21,250 --> 00:18:22,420 identificere højre. 439 00:18:22,420 --> 00:18:25,050 Vi slags gjorde en hel masse forudsætninger, og det er, 440 00:18:25,050 --> 00:18:27,720 helt ærligt, hvorfor programmet nogle gange ned. 441 00:18:27,720 --> 00:18:30,240 Hvis du, programmøren har gjort visse antagelser, som 442 00:18:30,240 --> 00:18:33,000 mon der kommer til at være sokker eller mon der sker 443 00:18:33,000 --> 00:18:35,310 at være hukommelse tilbage i computeren, så mon der sker 444 00:18:35,310 --> 00:18:37,420 at være diskplads tilbage på harddisken - 445 00:18:37,420 --> 00:18:39,040 Tja, hvis du laver disse antagelser, og det er ikke, 446 00:18:39,040 --> 00:18:41,880 i virkeligheden, virkeligheden, der kender til tider hvad computerens 447 00:18:41,880 --> 00:18:42,520 tænkt sig at gøre? 448 00:18:42,520 --> 00:18:44,450 Og nogle gange, når du får den roterende badebold eller 449 00:18:44,450 --> 00:18:47,750 frosne Windows eller lignende, det er netop fordi nogle 450 00:18:47,750 --> 00:18:50,980 programmør ikke foregribe de såkaldte hjørne sager. 451 00:18:50,980 --> 00:18:53,050 Hvad andet kunne være gået galt i dette program? 452 00:18:53,050 --> 00:18:53,330 Ja? 453 00:18:53,330 --> 00:18:55,950 >> PUBLIKUM: Du har ikke en højre ben og venstre ben. 454 00:18:55,950 --> 00:18:58,920 DAVID Malan: Okay, måske ikke har både en højre ben og en 455 00:18:58,920 --> 00:19:01,940 venstre ben, og så dette program måske ikke være universelt 456 00:19:01,940 --> 00:19:02,590 anvendelse. 457 00:19:02,590 --> 00:19:03,658 Andre? 458 00:19:03,658 --> 00:19:05,650 PUBLIKUM: Du har muligvis samlet op til sjældne sok. 459 00:19:05,650 --> 00:19:07,970 DAVID Malan: Jeg kunne have hentet sjældne sok, så en 460 00:19:07,970 --> 00:19:11,250 ikke-matchende sok, der bare ikke har nogen søskende, fordi jeg har 461 00:19:11,250 --> 00:19:13,650 mistede det, er det revet, det er i vask stadig, eller lignende. 462 00:19:13,650 --> 00:19:15,550 Så det også, har ikke rigtig blevet håndteret. 463 00:19:15,550 --> 00:19:15,790 Ja? 464 00:19:15,790 --> 00:19:17,510 PUBLIKUM: Du har måske allerede sokker på. 465 00:19:17,510 --> 00:19:19,050 DAVID Malan: Jeg måske allerede har sokker på. 466 00:19:19,050 --> 00:19:20,080 Jeg havde faktisk ikke kontrollere. 467 00:19:20,080 --> 00:19:23,350 HVIS du ikke har sokker på, så skride til at udføre 468 00:19:23,350 --> 00:19:24,330 line et og to. 469 00:19:24,330 --> 00:19:24,980 Og det kan ske. 470 00:19:24,980 --> 00:19:26,880 Du falder i søvn med dine sokker på og lignende, så 471 00:19:26,880 --> 00:19:28,860 at også en meget rimelig hjørne sag. 472 00:19:28,860 --> 00:19:29,630 Og måske en anden? 473 00:19:29,630 --> 00:19:31,310 PUBLIKUM: Sokken er vrangen ud. 474 00:19:31,310 --> 00:19:34,000 DAVID Malan: Så sokken er ud og ind, så vi gjorde ingen fejl 475 00:19:34,000 --> 00:19:35,330 kontrol, kort sagt. 476 00:19:35,330 --> 00:19:38,550 Vi ikke kontrollere, om verdens tilstand er, som vi forventer. 477 00:19:38,550 --> 00:19:41,310 Vi kontrollere ikke, hvis vi faktisk fundet, hvad vi leder efter. 478 00:19:41,310 --> 00:19:43,310 >> Og selvom dette er en slags latterlig eksempel 479 00:19:43,310 --> 00:19:46,110 involverer sokker, i slutningen af ​​dag det er præcis den 480 00:19:46,110 --> 00:19:48,740 slags tankegang skal du have, når man skriver programmer, 481 00:19:48,740 --> 00:19:51,740 selv i Scratch såvel som i C, i JavaScript, i PHP, 482 00:19:51,740 --> 00:19:53,920 for ellers vil dine programmer udviser den 483 00:19:53,920 --> 00:19:56,980 svarende til at spinde badebold eller bare give 484 00:19:56,980 --> 00:19:58,210 unøjagtige resultater. 485 00:19:58,210 --> 00:20:00,250 Så mange tak her til vores skriver Joseph. 486 00:20:00,250 --> 00:20:05,060 [Bifald] 487 00:20:05,060 --> 00:20:06,850 >> DAVID Malan: Okay, så hvad er i 488 00:20:06,850 --> 00:20:08,230 Faktisk et computerprogram? 489 00:20:08,230 --> 00:20:09,670 Nå, lad os tage et hurtigt blik på en 490 00:20:09,670 --> 00:20:11,100 repræsentant en her. 491 00:20:11,100 --> 00:20:15,260 Så dette er et program skrevet i et sprog kaldet C. C er 492 00:20:15,260 --> 00:20:17,830 temmelig gamle disse dage, men mange nyere sprog er bygget 493 00:20:17,830 --> 00:20:18,460 oven på det. 494 00:20:18,460 --> 00:20:21,180 Faktisk PHP, en af ​​de web-centreret sprog Vi vil 495 00:20:21,180 --> 00:20:24,050 brug mod sigt udgang, selv har det, der hedder en 496 00:20:24,050 --> 00:20:27,550 tolk, et program, der er skrevet i C, men mere om det 497 00:20:27,550 --> 00:20:28,690 i mange uger fra nu. 498 00:20:28,690 --> 00:20:30,840 Men dette program, og det er hvad det betyder at skrive en 499 00:20:30,840 --> 00:20:32,880 programmet, om end meget enkelt. 500 00:20:32,880 --> 00:20:35,540 Vi har nogle temmelig kryptisk syntaks her, men du kan 501 00:20:35,540 --> 00:20:38,340 sikkert gætte, selvom du aldrig har programmeret før, hvad 502 00:20:38,340 --> 00:20:39,750 dette program gør. 503 00:20:39,750 --> 00:20:43,640 Faktisk ved jeg ikke, hvad printf er, men udskrive sikkert 504 00:20:43,640 --> 00:20:45,700 fremmaner ideen om at udskrive noget ud. 505 00:20:45,700 --> 00:20:48,590 Og så ja, er dette program i sidste ende kommer til at udskrive 506 00:20:48,590 --> 00:20:50,250 ordene "Hej, verden." 507 00:20:50,250 --> 00:20:53,390 >> Nu, om du har en Mac eller en PC eller en Linux-computer, odds 508 00:20:53,390 --> 00:20:55,550 er, i hvert fald hvis du har hentet nogle frit 509 00:20:55,550 --> 00:20:58,000 tilgængelig software, du kunne have været at skrive programmer på 510 00:20:58,000 --> 00:21:00,310 din egen bærbare computer i temmelig lang tid nu. 511 00:21:00,310 --> 00:21:03,040 På Mac OS, for eksempel er der dette program kaldet 512 00:21:03,040 --> 00:21:05,340 Terminal der kommer med en Mac, det er normalt i dit 513 00:21:05,340 --> 00:21:07,550 Mappen Hjælpeprogrammer, og det generelt åbner en sort og 514 00:21:07,550 --> 00:21:09,820 hvid eller en hvid og sort vindue, hvor du har en 515 00:21:09,820 --> 00:21:11,410 prompt, hvor du kan skrive kommandoer. 516 00:21:11,410 --> 00:21:13,060 Så dette er faktisk minder om hvad computere 517 00:21:13,060 --> 00:21:15,100 plejede at være før grafiske brugergrænseflade 518 00:21:15,100 --> 00:21:16,710 grænseflader, GUI, kom. 519 00:21:16,710 --> 00:21:19,200 Nu, i Windows, har du en lignende mekanisme i form 520 00:21:19,200 --> 00:21:20,130 af kommandoprompten. 521 00:21:20,130 --> 00:21:23,430 >> Men hvad jeg har tænkt mig at gøre her, er at åbne op, lad os sige, 522 00:21:23,430 --> 00:21:26,580 TextEdit igen, så det samme program vi bruger til 523 00:21:26,580 --> 00:21:28,870 pseudokode for et øjeblik siden, og jeg har tænkt mig at gå videre og 524 00:21:28,870 --> 00:21:30,080 skrive min første program. 525 00:21:30,080 --> 00:21:34,030 Medtag stdio.h, hvad det så end betyder, int main 526 00:21:34,030 --> 00:21:36,880 tomrum, hvad det så end betyder, og derefter i midten her, 527 00:21:36,880 --> 00:21:40,560 printf ("Hello, World."). Og så tæt citat, 528 00:21:40,560 --> 00:21:42,340 lukke paren, semikolon. 529 00:21:42,340 --> 00:21:44,460 Nu vil jeg gå videre og blot trykke på Kommando-S. Jeg har tænkt mig 530 00:21:44,460 --> 00:21:47,650 at gå videre og gemme denne som hello.c, så konventionen i 531 00:21:47,650 --> 00:21:50,530 verden af ​​C programmering er navngive filen dot c. 532 00:21:50,530 --> 00:21:52,880 Jeg har tænkt mig at bare sætte i John Harvard hjemmemappe, 533 00:21:52,880 --> 00:21:56,370 her, klik på Gem, og nu jeg har tænkt mig at gå over til denne 534 00:21:56,370 --> 00:21:59,110 terminalvindue, som igen er denne sorte og hvide prompt 535 00:21:59,110 --> 00:22:00,860 hvor jeg kan udføre kommandoer. 536 00:22:00,860 --> 00:22:04,550 >> Jeg kan køre programmer ved at skrive deres navn, ikke ved 537 00:22:04,550 --> 00:22:06,710 dobbelt-klikke ikoner i gængs forstand. 538 00:22:06,710 --> 00:22:10,590 Men de ting er om C er, at et sprog som C først 539 00:22:10,590 --> 00:22:13,150 kommer i denne form, noget kaldet kildekode. 540 00:22:13,150 --> 00:22:15,400 Noget, der ser lidt ligesom engelsk, men er 541 00:22:15,400 --> 00:22:17,980 absolut mindre som engelsk end Josephs pseudokode en 542 00:22:17,980 --> 00:22:18,930 øjeblik siden. 543 00:22:18,930 --> 00:22:20,560 Det er lidt mere mystisk. 544 00:22:20,560 --> 00:22:22,830 Det synes at følge nogle mønstre eller regler. 545 00:22:22,830 --> 00:22:25,300 Det faktum, at jeg har krøllede parenteser, semikoloner, citater, 546 00:22:25,300 --> 00:22:28,240 vinkel seler, føles som en computer kom op med denne 547 00:22:28,240 --> 00:22:29,250 slags sprog. 548 00:22:29,250 --> 00:22:32,010 Men hvis jeg går nu, at denne terminal vindue, kan jeg køre en 549 00:22:32,010 --> 00:22:35,250 kommando, der kommer til at konvertere denne kildekode er 550 00:22:35,250 --> 00:22:36,610 noget, der hedder objekt kode. 551 00:22:36,610 --> 00:22:39,690 Det kommer til at omdanne engelsk-lignende syntaks til nuller 552 00:22:39,690 --> 00:22:41,760 og dem, de samme slags nuller og ettaller vi 553 00:22:41,760 --> 00:22:42,820 talte om onsdag. 554 00:22:42,820 --> 00:22:44,810 Nu vil jeg køre en kommando kaldet Dunk. 555 00:22:44,810 --> 00:22:47,750 Mere om dette i de kommende uger, men det er et program med 556 00:22:47,750 --> 00:22:52,330 som jeg kan konvertere hello.c til en hel bunke 557 00:22:52,330 --> 00:22:53,640 af nuller og ettaller. 558 00:22:53,640 --> 00:22:54,950 >> Nu har jeg kørt denne kommando. 559 00:22:54,950 --> 00:22:57,940 Jeg har kørt Dunk, og så sagde jeg køre dig selv på denne fil 560 00:22:57,940 --> 00:23:00,630 kaldet hello.c, som jeg oprettede for et øjeblik siden, og 561 00:23:00,630 --> 00:23:02,090 intet synes at ske. 562 00:23:02,090 --> 00:23:05,550 Men ja, hvis jeg stak omkring mit hjem bibliotek, ville jeg se 563 00:23:05,550 --> 00:23:09,620 at dette dumt navngivet program a.out eksisterer nu. 564 00:23:09,620 --> 00:23:12,250 Dette er blot den standard navn for et program, når du skriver i 565 00:23:12,250 --> 00:23:15,140 C. Vi kan tilsidesætte dette i sidste ende, men a.out er det 566 00:23:15,140 --> 00:23:18,340 navnet på det program jeg lige konverteres til nuller og ettaller. 567 00:23:18,340 --> 00:23:21,490 Og nu, hvor det er nuller og ettaller, min Mac, i dette tilfælde, eller 568 00:23:21,490 --> 00:23:24,670 din Windows-pc, kan forstå disse bit, de 569 00:23:24,670 --> 00:23:25,410 nuller og ettaller. 570 00:23:25,410 --> 00:23:29,130 Og så når jeg trykker på Enter, jeg ser "Hello, world!" 571 00:23:29,130 --> 00:23:31,270 >> Men det er en smule buggy. 572 00:23:31,270 --> 00:23:34,110 Jeg har ikke helt sige "hej, verden: luft: -! Jharvard." Luft er 573 00:23:34,110 --> 00:23:35,020 navnet på min computer. 574 00:23:35,020 --> 00:23:37,730 Jharvard er navnet på den konto, så hvad gjorde jeg tydeligt 575 00:23:37,730 --> 00:23:41,070 udelade fra programmet? 576 00:23:41,070 --> 00:23:42,480 En slags linjeskift. 577 00:23:42,480 --> 00:23:45,150 Jeg ramte ikke svarer til Enter eller vognretur, 578 00:23:45,150 --> 00:23:47,760 og det er igen vidnesbyrd om, at computere kan 579 00:23:47,760 --> 00:23:49,800 kun gøre, hvad du fortæller dem at gøre. 580 00:23:49,800 --> 00:23:52,400 Og det faktum, at jeg ikke fortælle computeren at flytte 581 00:23:52,400 --> 00:23:53,860 markøren til næste linje - 582 00:23:53,860 --> 00:23:55,200 godt, er det bestemt ikke vil bare gøre det 583 00:23:55,200 --> 00:23:56,750 formasteligt for mig. 584 00:23:56,750 --> 00:24:00,860 Så hvis jeg går tilbage til mit program, og jeg siger \ n - 585 00:24:00,860 --> 00:24:03,180 Så \ n, som vi snart vil se, er vejen for 586 00:24:03,180 --> 00:24:06,910 repræsenterer underlige ting som New Line figurer, ting 587 00:24:06,910 --> 00:24:08,840 der ellers ville være resultatet af 588 00:24:08,840 --> 00:24:09,940 rammer Enter-tasten. 589 00:24:09,940 --> 00:24:11,730 Men for nu, ved blot at trykke på Enter-tasten vil 590 00:24:11,730 --> 00:24:14,170 bare gøre vores kode ser mærkeligt, så verden besluttede, du kender 591 00:24:14,170 --> 00:24:16,580 hvad, at holde tingene smukkere, for at holde det på én linje, lad os 592 00:24:16,580 --> 00:24:19,070 bare sige \ n repræsenterer en ny linje. 593 00:24:19,070 --> 00:24:22,260 Lad mig gem min fil, skal du gå tilbage til terminalvinduet, og 594 00:24:22,260 --> 00:24:25,290 omvalg a.out, Enter. 595 00:24:25,290 --> 00:24:28,374 Stadig buggy, men hvorfor? 596 00:24:28,374 --> 00:24:29,750 >> PUBLIKUM: [uhørligt] 597 00:24:29,750 --> 00:24:31,540 DAVID Malan: Ja, så jeg er nødt til at kompilere den. 598 00:24:31,540 --> 00:24:34,610 Så for at udarbejde et program betyder blot konvertere det fra kilden 599 00:24:34,610 --> 00:24:37,660 kode til objekt kode, kildekode til nuller og ettaller. 600 00:24:37,660 --> 00:24:40,830 Nu er den omstændighed, at jeg ramte Gem i denne TextEdit har ingen 601 00:24:40,830 --> 00:24:43,450 bærer på disse nuller og ettaller, fordi jeg først nødt til at 602 00:24:43,450 --> 00:24:48,260 Sig Dunk hey, har jeg ændret disse linjer kode, det 603 00:24:48,260 --> 00:24:49,040 kildekode. 604 00:24:49,040 --> 00:24:51,010 Du er nødt til at regenerere a.out. 605 00:24:51,010 --> 00:24:52,990 Intet ser ud til at være sket, men i en computer, 606 00:24:52,990 --> 00:24:55,820 på en kommandolinje, så at sige, når der ikke sker noget, 607 00:24:55,820 --> 00:24:57,510 Det betyder som regel alt er godt. 608 00:24:57,510 --> 00:24:59,040 Når noget sker, betyder det 609 00:24:59,040 --> 00:25:00,420 du rodet op, generelt. 610 00:25:00,420 --> 00:25:04,020 >> Så lad os nu gå til a.out, og faktisk nu, jeg har "hej, 611 00:25:04,020 --> 00:25:04,440 verden. " 612 00:25:04,440 --> 00:25:05,990 Og nu, hvad disse nuller og ettaller? 613 00:25:05,990 --> 00:25:07,520 Hvor, i virkeligheden er de? 614 00:25:07,520 --> 00:25:10,710 Tja, jeg kan ikke rigtig bare lidt poke omkring meget 615 00:25:10,710 --> 00:25:11,210 effektivt. 616 00:25:11,210 --> 00:25:12,650 Lad mig åbne TextEdit. 617 00:25:12,650 --> 00:25:14,060 Her er a.out. 618 00:25:14,060 --> 00:25:17,390 Lad mig gå videre og åbne denne, og det er tilsyneladende, hvad min 619 00:25:17,390 --> 00:25:19,080 program ser ud. 620 00:25:19,080 --> 00:25:21,570 Så jeg har åbnet, ikke hello.c, men a.out. 621 00:25:21,570 --> 00:25:23,960 Men det er faktisk ikke hvad mit program virkelig er. 622 00:25:23,960 --> 00:25:26,450 Dette er tydeligvis en slags alfabetiske tegn. 623 00:25:26,450 --> 00:25:28,670 Jeg ser ingen nuller og ettaller, men dette er 624 00:25:28,670 --> 00:25:30,780 fordi a.out er et program. 625 00:25:30,780 --> 00:25:33,540 Nuller og ettaller - men TextEdit, som navnet antyder, er det 626 00:25:33,540 --> 00:25:37,130 ligesom Notepad på Windows, er blot en tekst editor, så det er 627 00:25:37,130 --> 00:25:39,730 forvirrende alle disse nuller og ettaller som 628 00:25:39,730 --> 00:25:41,870 selvom de var, hvad? 629 00:25:41,870 --> 00:25:43,380 ASCII-tegn. 630 00:25:43,380 --> 00:25:45,020 >> Så huske på onsdag, vi bare kom op med dette 631 00:25:45,020 --> 00:25:48,740 vilkårlig kortlægning af tal, eller bits, at bogstaverne i 632 00:25:48,740 --> 00:25:51,690 alfabet og tegnsætningssymboler og lignende. 633 00:25:51,690 --> 00:25:54,920 Så TextEdit, at det er en tekst editor fejlfortolke 634 00:25:54,920 --> 00:25:57,270 disse mønstre af nuller og ettaller, som formodes at være 635 00:25:57,270 --> 00:25:59,990 udskrivning ord, som "Hello, World." Det er at vise dem 636 00:25:59,990 --> 00:26:02,150 som ASCII, og det er derfor, det ser lidt rodet. 637 00:26:02,150 --> 00:26:04,910 Nu er der nogle hints af korrekthed i her. 638 00:26:04,910 --> 00:26:08,090 Varsel, hvis jeg fremhæve, at der er en antydning af faktisk "hallo, 639 00:26:08,090 --> 00:26:10,810 verden ", så et eller andet sted i dette program er 640 00:26:10,810 --> 00:26:12,120 den sætning jeg skrev. 641 00:26:12,120 --> 00:26:14,610 Men lad os gå videre og ser nu med et andet program. 642 00:26:14,610 --> 00:26:17,420 Dette er ikke en vi vil bruge det tit, men det kommer også med 643 00:26:17,420 --> 00:26:19,970 en Mac og vil være inde i CS50 apparatet. 644 00:26:19,970 --> 00:26:23,940 Lad mig gå videre og åbne med et program kaldet XXD. 645 00:26:23,940 --> 00:26:26,530 >> Tilbage i dag, blev de fleste programmer navngivet temmelig kryptisk, 646 00:26:26,530 --> 00:26:28,200 og så tendensen fortsætter. 647 00:26:28,200 --> 00:26:31,160 Men-b betyder spytte dette program ud som binær. 648 00:26:31,160 --> 00:26:32,330 Må ikke køre det. 649 00:26:32,330 --> 00:26:35,770 Vise det til mig som nuller og ettaller, og det er C 650 00:26:35,770 --> 00:26:37,190 programmere vi bare skrev. 651 00:26:37,190 --> 00:26:39,920 Nu, jeg, som et menneske her, jeg ærligt har ingen idé om, hvad 652 00:26:39,920 --> 00:26:42,230 disse forskellige mønstre af nuller og ettaller repræsenterer. 653 00:26:42,230 --> 00:26:45,320 Tilbage i dag, jeg med mine hulkort eller lignende, ville 654 00:26:45,320 --> 00:26:48,080 faktisk nødt til at kigge op, hvad disse forskellige mønstre af 655 00:26:48,080 --> 00:26:51,560 01111000, faktisk repræsenterer. 656 00:26:51,560 --> 00:26:54,390 Eller endnu værre, ville jeg nødt til at gøre stansning eller oprettelsen 657 00:26:54,390 --> 00:26:56,130 af disse mønstre af nuller og ettaller. 658 00:26:56,130 --> 00:27:00,410 Men for nu, tage på tro at en CPU, Intel indeni, så 659 00:27:00,410 --> 00:27:03,440 at tale, indersiden af ​​alle vores computere i disse dage, kender 660 00:27:03,440 --> 00:27:05,100 hvordan man skal fortolke disse nuller og ettaller. 661 00:27:05,100 --> 00:27:07,010 Og nogle nuller og ettaller betyde print. 662 00:27:07,010 --> 00:27:09,040 Nogle nuller og ettaller betyde afspille en lyd. 663 00:27:09,040 --> 00:27:13,630 Nogle nuller og ettaller betyde tage brugerinput fra et tastatur. 664 00:27:13,630 --> 00:27:15,960 Der er alle mulige forskellige mønstre, men vi heldigvis, 665 00:27:15,960 --> 00:27:19,680 som mennesker generelt kun behøver at bekymre sig om programmering på 666 00:27:19,680 --> 00:27:21,270 denne relativt højere niveau. 667 00:27:21,270 --> 00:27:24,320 Og i andre CS klasser kan du dykke ned dybere og se 668 00:27:24,320 --> 00:27:26,820 på ting som disse nuller og ettaller, endnu eller 669 00:27:26,820 --> 00:27:28,000 andre ting stadig. 670 00:27:28,000 --> 00:27:29,210 >> Så lad os nu konvertere dette. 671 00:27:29,210 --> 00:27:32,550 Lad os bevæge sig meget hurtigt væk fra C og flytte til noget 672 00:27:32,550 --> 00:27:36,390 lidt mere beroligende, lidt mere spændende, i det 673 00:27:36,390 --> 00:27:39,340 vi kan komme tilbage vores animationer og lyde og lignende, 674 00:27:39,340 --> 00:27:40,940 klart er undsluppet os i denne 675 00:27:40,940 --> 00:27:42,480 temmelig primitive interface. 676 00:27:42,480 --> 00:27:46,430 Så det samme program i C kan repræsenteres nu i denne 677 00:27:46,430 --> 00:27:50,060 programmeringssprog kaldet Scratch som følger. 678 00:27:50,060 --> 00:27:54,230 Dette svarer til dette hej verden program skrevet i 679 00:27:54,230 --> 00:27:57,370 denne brik stil sprog kaldet Scratch. 680 00:27:57,370 --> 00:28:00,600 Så lad mig gå videre og åbne netop denne program. 681 00:28:00,600 --> 00:28:01,850 Det atter kaldet Scratch. 682 00:28:01,850 --> 00:28:03,880 Det er frit tilgængelige, og det er det samme vi 683 00:28:03,880 --> 00:28:05,120 i gang i dag på. 684 00:28:05,120 --> 00:28:07,790 >> Så dette her er Scratch, og det er opdelt i et par 685 00:28:07,790 --> 00:28:09,700 forskellige stykker. 686 00:28:09,700 --> 00:28:12,690 På den øverste højre har vi den såkaldte fase, og 687 00:28:12,690 --> 00:28:13,670 ja, det er, hvor de cookies 688 00:28:13,670 --> 00:28:15,440 udføres kun lidt siden. 689 00:28:15,440 --> 00:28:19,660 Og på dette tidspunkt er ting kaldes sprites, tegn eller 690 00:28:19,660 --> 00:28:21,030 genstande eller enheder. 691 00:28:21,030 --> 00:28:23,320 Det er faktisk ligegyldigt, hvordan du tænker på dem, men de 692 00:28:23,320 --> 00:28:26,740 er programmerbare, bevægelige ting, og i dette tilfælde er dette 693 00:28:26,740 --> 00:28:30,730 program, at vores studerende skrev har et par honningkager 694 00:28:30,730 --> 00:28:32,990 cookies, et par af cirkulære cookies, en hel flok 695 00:28:32,990 --> 00:28:35,430 hjerter, en hel flok af briller. 696 00:28:38,170 --> 00:28:42,420 På grund af dette, er han eller hun i stand til at programmere hver af disse 697 00:28:42,420 --> 00:28:44,720 enkelte tegn separat. 698 00:28:44,720 --> 00:28:46,480 >> Nu, hvad betyder det at programmere disse tegn? 699 00:28:46,480 --> 00:28:49,440 Nå, lad mig gå videre og klik på denne venstre hånd cookie 700 00:28:49,440 --> 00:28:51,830 og rulle hen til det øverste venstre her. 701 00:28:51,830 --> 00:28:53,670 I øverste venstre af min skærm nu er 702 00:28:53,670 --> 00:28:55,280 såkaldte scripts området. 703 00:28:55,280 --> 00:28:58,790 Dette er slags en blank tavle, i første omgang, hvorpå jeg kan 704 00:28:58,790 --> 00:29:01,540 træk og slip puslespilsbrikker, der helt ærligt, 705 00:29:01,540 --> 00:29:03,020 præcis, hvad de siger. 706 00:29:03,020 --> 00:29:05,820 På selve toppen af ​​denne stak af puslespilsbrikker er ordet 707 00:29:05,820 --> 00:29:09,340 Når Grønt Flag Klikkede, og hvis du ikke har opdaget før, 708 00:29:09,340 --> 00:29:12,300 den måde, jeg startede denne cookie sang blev klikker, bogstaveligt talt, 709 00:29:12,300 --> 00:29:13,320 et grønt flag. 710 00:29:13,320 --> 00:29:16,590 Så det puslespilsbrik øverst til venstre der betyder, når den 711 00:29:16,590 --> 00:29:19,780 menneskelige klik på den grønne flag, fortsatte med at gøre 712 00:29:19,780 --> 00:29:21,110 følgende ting. 713 00:29:21,110 --> 00:29:23,330 >> Nu vidste hvad de cookie skride til at udføre? 714 00:29:23,330 --> 00:29:25,810 Jeg ved ikke rigtig, hvordan man skal fortolke dette endnu, men det 715 00:29:25,810 --> 00:29:29,220 cookie åbenbart sat sit rille til nul, så det ventede 716 00:29:29,220 --> 00:29:31,740 tre sekunder og derefter skiftede den gruppe til en, så det 717 00:29:31,740 --> 00:29:33,590 ventede et sekund, så det ændrede 718 00:29:33,590 --> 00:29:35,100 rille tilbage til én. 719 00:29:35,100 --> 00:29:37,373 Og så det faktisk ligner lidt af en bug, bør ikke 720 00:29:37,373 --> 00:29:39,440 nødt til at ændre sin rille igen og igen, medmindre det er 721 00:29:39,440 --> 00:29:43,380 bliver ændret andetsteds, men denne serie af trin er hvad der er 722 00:29:43,380 --> 00:29:46,800 dikterer opførsel af denne særlige cookie. 723 00:29:46,800 --> 00:29:49,180 Så lad os faktisk rulle tilbage og ikke se på noget 724 00:29:49,180 --> 00:29:50,430 helt så kompliceret endnu. 725 00:29:50,430 --> 00:29:52,260 Lad mig gå videre og gå til Filer, Ny, 726 00:29:52,260 --> 00:29:53,560 og få en ren tavle. 727 00:29:53,560 --> 00:29:56,590 >> Så nu, jeg virkelig har et tomt script område, en tom scene, 728 00:29:56,590 --> 00:29:59,380 med vores standard sprite Scratch, i og øverst til venstre 729 00:29:59,380 --> 00:30:01,670 på min skærm har jeg pallen af ​​alle deres 730 00:30:01,670 --> 00:30:03,400 tilgængelige puslespilsbrikker. 731 00:30:03,400 --> 00:30:06,300 Og vi vil ikke gå igennem næsten, at mange af disse ting 732 00:30:06,300 --> 00:30:09,470 dag, fordi, igen, de fleste er selvforklarende, men vi vil 733 00:30:09,470 --> 00:30:12,370 forsøge at kategorisere dem og påpege lighederne 734 00:30:12,370 --> 00:30:15,380 med disse fremtidige sprog, som vi vil dykke. 735 00:30:15,380 --> 00:30:19,180 Og øverst til venstre her er den første Når Grønt Flag klikket, 736 00:30:19,180 --> 00:30:22,170 så lad mig trække dette herovre, zoome ud en smule. 737 00:30:22,170 --> 00:30:25,780 Og hvis jeg klikker på den grønne flag, intet virkelig sker, fordi 738 00:30:25,780 --> 00:30:29,360 Jeg har ikke tilknyttet nogen logik, enhver erklæring så at sige, at 739 00:30:29,360 --> 00:30:31,040 at grøn flag, så lad mig gå op til den 740 00:30:31,040 --> 00:30:32,500 kategorier herovre. 741 00:30:32,500 --> 00:30:34,840 Jeg er i øjeblikket i Control kategori. 742 00:30:34,840 --> 00:30:37,630 Jeg stedet kommer til at gå ned til den ser ud kategori, og 743 00:30:37,630 --> 00:30:39,970 der er en hel masse ting her, siger Sig, 744 00:30:39,970 --> 00:30:43,110 Tænk, skifte farve, Switch Costume. 745 00:30:43,110 --> 00:30:44,860 >> Så du kan gøre dumme ting med kostumer og 746 00:30:44,860 --> 00:30:45,870 lyde og lignende. 747 00:30:45,870 --> 00:30:49,970 Lad mig gå videre og bare sige Say, og nu mærke til, da jeg trækker 748 00:30:49,970 --> 00:30:52,940 og slip denne brik, er det lyst til at hægte 749 00:30:52,940 --> 00:30:55,010 til den tilsvarende form. 750 00:30:55,010 --> 00:30:58,020 Så når jeg gå videre og slippe min mus, de låser 751 00:30:58,020 --> 00:31:01,770 sammen, og nu, hvis jeg gå over her og klik på den grønne flag, 752 00:31:01,770 --> 00:31:05,910 katten rent faktisk sige hej, fordi det er hvad der er indeni 753 00:31:05,910 --> 00:31:06,980 af denne hvide boks. 754 00:31:06,980 --> 00:31:08,900 Vi vil snart se, at denne hvide boks er, hvad der kaldes en 755 00:31:08,900 --> 00:31:10,250 argument, eller en parameter. 756 00:31:10,250 --> 00:31:12,560 Det er en metode til at ændre opførsel, i dette tilfælde en 757 00:31:12,560 --> 00:31:15,070 puslespilsbrik, men hvis jeg ønsker at sige præcis, hvad jeg sagde 758 00:31:15,070 --> 00:31:18,610 før, siger hej, verden, kan jeg nu gå tilbage herovre, 759 00:31:18,610 --> 00:31:21,990 klik spille, og "hej, verden" er hvad har sagt. 760 00:31:21,990 --> 00:31:24,340 >> Så vi er bogstaveligt talt programmering nu. 761 00:31:24,340 --> 00:31:27,540 Det er ikke alle, der overbevisende af et program, men mindst 762 00:31:27,540 --> 00:31:30,140 det er lidt mere overbevisende end noget, der ser på 763 00:31:30,140 --> 00:31:31,300 første øjekast, som denne. 764 00:31:31,300 --> 00:31:34,190 Og vi kan meget hurtigt få alle de mere ekspressive 765 00:31:34,190 --> 00:31:36,600 fordi i Scratch, ligesom på andre sprog, er der hele 766 00:31:36,600 --> 00:31:40,010 slags udsagn, ikke bare sige eller udskrivning noget, men 767 00:31:40,010 --> 00:31:42,650 du kan gøre ting som at vente, da vi lige set med 768 00:31:42,650 --> 00:31:44,240 cookien, nogle antal sekunder. 769 00:31:44,240 --> 00:31:46,440 Du kan spille lyde i miljøet af Scratch bare 770 00:31:46,440 --> 00:31:49,050 ligesom du kan i en normal computer program afspille lyd. 771 00:31:49,050 --> 00:31:52,440 Du kan kontrollere det, der kaldes booleske udtryk. 772 00:31:52,440 --> 00:31:55,630 Så nu, lad os begynde at føje til vores værktøjskasse nogle terminologi 773 00:31:55,630 --> 00:31:58,840 der faktisk vedrører det eksempel, at Joseph og jeg gjorde 774 00:31:58,840 --> 00:32:00,080 her med sokker. 775 00:32:00,080 --> 00:32:03,040 Så udsagn er blot konstateringer. 776 00:32:03,040 --> 00:32:04,160 Gør dette. 777 00:32:04,160 --> 00:32:07,370 Et direktiv for Sprite, eller mig den menneskelige, til at gøre noget. 778 00:32:07,370 --> 00:32:10,420 En boolesk udtryk er noget, der har en værdi, en 779 00:32:10,420 --> 00:32:14,580 såkaldte sandhed værdi, det er enten et nul eller et, falsk eller 780 00:32:14,580 --> 00:32:17,890 sandt, slukket eller på, ingen eller ja. 781 00:32:17,890 --> 00:32:19,730 Er faktisk ligegyldigt, hvordan du tænker på dette, men det er en 782 00:32:19,730 --> 00:32:20,700 binær tilstand. 783 00:32:20,700 --> 00:32:22,610 Som Nate diskuteret i onsdagens video, to 784 00:32:22,610 --> 00:32:23,570 forskellige ting. 785 00:32:23,570 --> 00:32:25,740 >> Så i Scratch, sker boolske udtryk til at se 786 00:32:25,740 --> 00:32:28,910 ligesom disse blå objekter her, og i dette tilfælde er spørgsmålet 787 00:32:28,910 --> 00:32:30,960 mark betyder, at du stiller et spørgsmål. 788 00:32:30,960 --> 00:32:34,250 Er katten, eller Sprite, røre musemarkøren? 789 00:32:34,250 --> 00:32:36,580 Så dette er blot ét eksempel på en Scratch blok, der sker 790 00:32:36,580 --> 00:32:39,950 at tillade os at kontrollere ja eller nej, er musen rører 791 00:32:39,950 --> 00:32:40,790 sprite på skærmen? 792 00:32:40,790 --> 00:32:42,840 Og det kan være nyttigt, hvis du rent faktisk ønsker at gøre ting 793 00:32:42,840 --> 00:32:43,820 med din mus. 794 00:32:43,820 --> 00:32:46,470 Ud over boolske udtryk, har vi ting 795 00:32:46,470 --> 00:32:49,110 ligesom er musen ned, så du kan opdage den slags 796 00:32:49,110 --> 00:32:50,200 spørgsmålstegn så godt. 797 00:32:50,200 --> 00:32:52,590 Vi kan gøre matematik, hvis du rent faktisk ønsker, og der er 798 00:32:52,590 --> 00:32:55,170 faktisk mere overbevisende anvendelsesmuligheder for denne end bare ren af 799 00:32:55,170 --> 00:32:56,400 aritmetik, som vi vil se. 800 00:32:56,400 --> 00:32:59,690 Pseudo tilfældighed og gøre dit program ser ud til at tænke 801 00:32:59,690 --> 00:33:03,490 eller opfører sig anderledes på baggrund af nogle tilsyneladende tilfældige værdier, 802 00:33:03,490 --> 00:33:06,610 og så har vi ting som boolske udtryk som AND. 803 00:33:06,610 --> 00:33:08,830 Så hvis du rent faktisk ønsker at kontrollere to værdier, vil vi se på 804 00:33:08,830 --> 00:33:11,110 Skrab, at vi faktisk kan teste, om dette er 805 00:33:11,110 --> 00:33:13,190 sand og det er sandt. 806 00:33:13,190 --> 00:33:15,300 For eksempel i tilfælde af mine sokker kunne jeg har på 807 00:33:15,300 --> 00:33:19,045 allersidst stillede spørgsmålet, hvis venstre sok er tændt og højre sok 808 00:33:19,045 --> 00:33:20,610 er på, holde op. 809 00:33:20,610 --> 00:33:22,710 Du er færdig for dagen, så det ville være en 810 00:33:22,710 --> 00:33:24,300 mulighed for. 811 00:33:24,300 --> 00:33:27,740 >> Så lad os gå videre og forsøge at stykke nogle af disse sammen 812 00:33:27,740 --> 00:33:31,570 og gå ind i et par eksempler mere 813 00:33:31,570 --> 00:33:32,610 overbevisende end denne ene. 814 00:33:32,610 --> 00:33:35,770 Så lad mig gå videre her og åbne nogle af eksemplerne 815 00:33:35,770 --> 00:33:38,350 der vil altid være på kursets hjemmeside så godt, og 816 00:33:38,350 --> 00:33:39,870 åbne hello2. 817 00:33:39,870 --> 00:33:42,910 Så i hello2 her har vi et program, der laver et par 818 00:33:42,910 --> 00:33:46,290 ting, men det er ikke gør det så effektivt, som vi kunne. 819 00:33:46,290 --> 00:33:48,900 Så her står der "Hello, World" i et sekund og derefter venter 820 00:33:48,900 --> 00:33:49,450 for en anden. 821 00:33:49,450 --> 00:33:51,720 Og så gør det igen, og så gør det igen. 822 00:33:51,720 --> 00:33:55,530 Så hvis jeg klikker på den grønne flag, Scratch siger "Hello, world. 823 00:33:55,530 --> 00:33:57,160 Hej, verden. 824 00:33:57,160 --> 00:34:00,080 Hello, world. "Og det er naturligvis kandidat nu 825 00:34:00,080 --> 00:34:00,860 forbedring. 826 00:34:00,860 --> 00:34:03,070 >> Hvad er den marginale forbedring, forhåbentlig, kan vi 827 00:34:03,070 --> 00:34:07,610 nu gøre hvis Scratch støtter konceptet? 828 00:34:07,610 --> 00:34:08,310 Nogle slags løkke. 829 00:34:08,310 --> 00:34:10,960 En slags gentagelse, nu ville være rart, så lad mig 830 00:34:10,960 --> 00:34:11,920 faktisk prøve det. 831 00:34:11,920 --> 00:34:13,870 Lad mig faktisk gå hen og flytte denne. 832 00:34:13,870 --> 00:34:16,449 Så varsel kan frigøre blokke så nemt som du kan føje til 833 00:34:16,449 --> 00:34:17,420 vedhæfte dem. 834 00:34:17,420 --> 00:34:20,730 Lad mig gå under kontrol, rulle ned her, og ja, 835 00:34:20,730 --> 00:34:24,000 der er denne brik her, Gentag og Forever og 836 00:34:24,000 --> 00:34:24,870 Forever If. 837 00:34:24,870 --> 00:34:28,500 Så der er en række måder at udtrykke looping konstruktioner 838 00:34:28,500 --> 00:34:29,340 i Scratch. 839 00:34:29,340 --> 00:34:31,730 Den ene jeg sikkert gerne her er ikke for evigt, fordi jeg kun 840 00:34:31,730 --> 00:34:34,639 ønsker, at dette skal ske tre gange, men sandsynligvis Gentag. 841 00:34:34,639 --> 00:34:38,449 Så lad mig trække Gentag herovre, trække og slippe den, og 842 00:34:38,449 --> 00:34:42,530 nu i stedet for at sige "Hello, World" tre særskilte gange, 843 00:34:42,530 --> 00:34:44,230 lad mig trække denne brik i her. 844 00:34:44,230 --> 00:34:46,610 Og selvom det ikke synes at passe, at programmet er smart 845 00:34:46,610 --> 00:34:48,920 nok til at indse det vil vokse til at fylde, så det er det 846 00:34:48,920 --> 00:34:51,270 figurer, der betyder noget, og ikke den absolutte størrelse. 847 00:34:51,270 --> 00:34:54,030 Lad mig ændre gentagelse til tre, og nu lad mig gå 848 00:34:54,030 --> 00:34:56,560 fremad og træk Vent et sekund i der. 849 00:34:56,560 --> 00:34:59,220 Det kommer til at snappe i så godt, og så nu har jeg tænkt mig at trække 850 00:34:59,220 --> 00:35:01,370 disse fyre herovre og bare smide dem væk, fordi jeg 851 00:35:01,370 --> 00:35:02,710 har ikke brug for dem længere. 852 00:35:02,710 --> 00:35:05,920 Lad mig zoome ud og klik den grønne flag nu, og vi har 853 00:35:05,920 --> 00:35:09,600 det samme program, men som jeg forudsagde før, bedre 854 00:35:09,600 --> 00:35:12,200 designet fordi du kan forestille dig, hvordan dårlig dette program 855 00:35:12,200 --> 00:35:14,410 ville få, i hvert fald æstetisk, hvis du skulle 856 00:35:14,410 --> 00:35:16,640 begynde at kopiere og indsætte, kopiere og indsætte, eller 857 00:35:16,640 --> 00:35:20,020 trække og slippe de samme darn ting igen og igen. 858 00:35:20,020 --> 00:35:22,260 >> Nu, blot at sige ting på skærmen, udskrive til 859 00:35:22,260 --> 00:35:25,350 skærm, virkelig alt ikke så spændende, så lad os åbne en 860 00:35:25,350 --> 00:35:26,580 3. varians her. 861 00:35:26,580 --> 00:35:29,810 Og nu, som du vil se, vil dette hurtigt blive irriterende - 862 00:35:29,810 --> 00:35:30,850 [MEOW] 863 00:35:30,850 --> 00:35:31,940 DAVID Malan: - men det er også ret sød. 864 00:35:31,940 --> 00:35:35,244 [MEOW] 865 00:35:35,244 --> 00:35:37,460 DAVID Malan: Okay, så bedre, og vi kan helt sikkert bruge det 866 00:35:37,460 --> 00:35:41,060 samme overgang chunking dette op i en løkke 867 00:35:41,060 --> 00:35:43,520 struktur, men lad os gøre det mere interessant endnu. 868 00:35:43,520 --> 00:35:47,480 >> Lad mig gå videre og åbne op kvart varians her, hvor jeg 869 00:35:47,480 --> 00:35:50,020 tage tingene et skridt videre. 870 00:35:50,020 --> 00:35:54,450 Så ifølge dette, dum om dette i første omgang 871 00:35:54,450 --> 00:35:58,530 blik, hvad dette program vil gøre? 872 00:35:58,530 --> 00:35:59,790 Det kommer til at mjave gang. 873 00:35:59,790 --> 00:36:00,160 Hvorfor? 874 00:36:00,160 --> 00:36:03,340 Tja, man er, så vidt jeg ved, altid er mindre end to. 875 00:36:03,340 --> 00:36:04,890 Der er ingen forestilling om tilfældighed her. 876 00:36:04,890 --> 00:36:07,240 Jeg har bogstavelig talt hard-coded et og to, men dette er en 877 00:36:07,240 --> 00:36:10,370 eksempel nu på rent faktisk at bruge en boolesk udtryk. 878 00:36:10,370 --> 00:36:13,650 Meget gerne som Josef gjorde i sin pseudokode, indrykningen IF 879 00:36:13,650 --> 00:36:17,170 du finde matchende sokker derefter gøre følgende, her har vi 880 00:36:17,170 --> 00:36:19,750 et udtryk, hvis man er mindre end to THEN - 881 00:36:19,750 --> 00:36:21,820 og faktisk vi har endda en lille smule af indrykning, 882 00:36:21,820 --> 00:36:24,480 hvor lilla er lidt indrykket til højre - 883 00:36:24,480 --> 00:36:26,600 SÅ du vil afspille lyden mjave. 884 00:36:26,600 --> 00:36:30,060 Nu, i dette tilfælde, er at man altid er mindre end to, så det 885 00:36:30,060 --> 00:36:31,970 er lidt af et spild af en betingelse. 886 00:36:31,970 --> 00:36:34,890 Men vi vil være i stand til, som vi vil se, at sætte andre ting i 887 00:36:34,890 --> 00:36:37,420 disse pladsholdere hvor et og to nu er. 888 00:36:37,420 --> 00:36:41,340 Så lad os nu gå videre til eksempel fem af disse flere 889 00:36:41,340 --> 00:36:45,850 hej'er og se på, hvad dette program kommer til at gøre. 890 00:36:45,850 --> 00:36:48,710 >> Så nu, i en engelsk sætning, hvordan dette 891 00:36:48,710 --> 00:36:51,460 program opføre sig? 892 00:36:51,460 --> 00:36:52,950 PUBLIKUM: Meows halvdelen af ​​tiden. 893 00:36:52,950 --> 00:36:55,380 DAVID Malan: Meow banehalvdel tid, så dette er en måde at 894 00:36:55,380 --> 00:36:56,700 formidle en meget enkel idé. 895 00:36:56,700 --> 00:36:59,400 Selvom vi tilfældigvis bruger nogle uligheder her 896 00:36:59,400 --> 00:37:01,860 i nogle numre, er det virkelig bare en programmatical 897 00:37:01,860 --> 00:37:09,490 måde, en præcis måde, at sige hvis mønten kommer op hoveder, gå 898 00:37:09,490 --> 00:37:10,270 fremad og miaver. 899 00:37:10,270 --> 00:37:13,540 Eller omvendt, hvis mønten kommer op haler, ikke meow. 900 00:37:13,540 --> 00:37:15,110 Og i dette tilfælde, hvordan kan vi udtrykke det? 901 00:37:15,110 --> 00:37:17,950 Vi vil vælge et tilfældigt tal fra 1 til 10, og hvis det 902 00:37:17,950 --> 00:37:21,110 nummer er mindre end 6, gå videre og mjave. 903 00:37:21,110 --> 00:37:22,260 Og hvordan gik det herind? 904 00:37:22,260 --> 00:37:24,620 Nå igen, bemærk blot at trække og slippe og 905 00:37:24,620 --> 00:37:26,190 tingene klikker på plads. 906 00:37:26,190 --> 00:37:28,020 >> Så lad os nu se om denne tilfældighed virker. 907 00:37:28,020 --> 00:37:29,845 Lad mig gå videre og klik på den grønne flag. 908 00:37:29,845 --> 00:37:31,120 [MEOW] 909 00:37:31,120 --> 00:37:32,000 DAVID Malan: Okay. 910 00:37:32,000 --> 00:37:33,430 [MEOW] 911 00:37:33,430 --> 00:37:35,260 DAVID Malan: Okay. 912 00:37:35,260 --> 00:37:38,510 Okay, godt, så vi fik hoveder, hoveder, haler effektivt. 913 00:37:38,510 --> 00:37:39,295 Tails. 914 00:37:39,295 --> 00:37:39,590 [MEOW] 915 00:37:39,590 --> 00:37:41,829 DAVID Malan: Heads. 916 00:37:41,829 --> 00:37:43,220 [MEOW] 917 00:37:43,220 --> 00:37:44,040 DAVID Malan: Excellent. 918 00:37:44,040 --> 00:37:46,220 Det er altid akavet, når bare statistisk du får en dårlig 919 00:37:46,220 --> 00:37:48,510 køre, og det er alle hoveder, og programmet faktisk ikke 920 00:37:48,510 --> 00:37:49,230 arbejde som du ville håbe. 921 00:37:49,230 --> 00:37:51,210 Men denne gang, det fungerede, og vi synes at have, hvis vi gjorde 922 00:37:51,210 --> 00:37:53,830 dette et uendeligt antal gange, 50% odds. 923 00:37:53,830 --> 00:37:56,950 Nu igen, ikke alt, interessant, bare at gøre katte 924 00:37:56,950 --> 00:37:59,840 mjave, så lad os se om vi ikke kan fremme denne lidt længere 925 00:37:59,840 --> 00:38:01,820 her i version seks. 926 00:38:01,820 --> 00:38:05,620 Så nu har vi virkelig irriterende version - 927 00:38:05,620 --> 00:38:08,215 [MEOWS med få sekunders mellemrum] 928 00:38:08,215 --> 00:38:10,640 DAVID Malan: - og det er hvad der er kendt, generelt, som en 929 00:38:10,640 --> 00:38:11,670 uendelig løkke. 930 00:38:11,670 --> 00:38:14,190 >> Så uendelig løkke i dette tilfælde føles skidt. 931 00:38:14,190 --> 00:38:16,970 Det er helt sikkert kommer til at starte lyde dårligt, og alligevel uendelig 932 00:38:16,970 --> 00:38:18,740 loops er ikke altid dårligt. 933 00:38:18,740 --> 00:38:20,910 Kan du tænke på sammenhæng i edb-programmer, hvor du gerne 934 00:38:20,910 --> 00:38:22,910 rent faktisk ønsker en uendelig løkke? 935 00:38:22,910 --> 00:38:23,691 Ja? 936 00:38:23,691 --> 00:38:26,520 PUBLIKUM: Når du vil kontrollere en betingelse. 937 00:38:26,520 --> 00:38:28,240 DAVID Malan: Okay, når du ønsker at holde øje med en tilstand? 938 00:38:28,240 --> 00:38:29,190 Som hvad? 939 00:38:29,190 --> 00:38:30,440 PUBLIKUM: [uhørligt] 940 00:38:36,060 --> 00:38:38,170 DAVID Malan: Okay, godt, så hvis du havde nogle program, nogle 941 00:38:38,170 --> 00:38:40,440 slags home automation ting, hvor du ønsker at konstant 942 00:38:40,440 --> 00:38:41,980 monitor er noget tilfældet. 943 00:38:41,980 --> 00:38:42,850 Er lysene? 944 00:38:42,850 --> 00:38:45,020 Er lyset tændt, fordi du måske har en timer, og 945 00:38:45,020 --> 00:38:47,360 du vil have dem til at gå væk, kan du nødt til at gøre noget 946 00:38:47,360 --> 00:38:48,290 igen og igen. 947 00:38:48,290 --> 00:38:50,540 Og i virkeligheden taler om timere, der har nogen af ​​jer 948 00:38:50,540 --> 00:38:53,100 ure på din computer eller digitale ure, det er en 949 00:38:53,100 --> 00:38:54,210 uendelig løkke. 950 00:38:54,210 --> 00:38:56,980 Den fortsætter med at opdatere klokkeslættet, fordi det er hele tiden 951 00:38:56,980 --> 00:38:59,750 kontrol og kontrol og kontrol har tid ændret sig, 952 00:38:59,750 --> 00:39:01,000 og hvis ja, åh, min Gud. 953 00:39:03,670 --> 00:39:04,740 Uret er endelig ændret. 954 00:39:04,740 --> 00:39:07,020 Det skal vise, at værdi for dig. 955 00:39:07,020 --> 00:39:10,880 Så mens det meste af tiden uendelige løkker er en fejl, 956 00:39:10,880 --> 00:39:13,950 eller i det mindste en dårlig design beslutning, nogle gange de gør 957 00:39:13,950 --> 00:39:14,785 har deres værdi. 958 00:39:14,785 --> 00:39:18,170 >> Nå, lad os gå videre her til hello7. 959 00:39:18,170 --> 00:39:20,410 Så nu vil programmet få lidt mere interaktiv. 960 00:39:20,410 --> 00:39:23,120 Lad mig zoome ind her, og igen, det er hvad der er rart 961 00:39:23,120 --> 00:39:23,640 om Scratch. 962 00:39:23,640 --> 00:39:26,760 Og vi vil bruge det til at være klar, Scratch, bare i dag og i 963 00:39:26,760 --> 00:39:27,780 næste uges problem indstillet. 964 00:39:27,780 --> 00:39:31,920 Men på mandag, dykke vi ind i C. I dette program her, det gør, 965 00:39:31,920 --> 00:39:33,190 for evigt, det følgende. 966 00:39:33,190 --> 00:39:35,890 HVIS røre musemarkøren - nu, hvem er den 967 00:39:35,890 --> 00:39:36,420 sammenhæng her? 968 00:39:36,420 --> 00:39:39,670 Nå, og bemærk, at der er markeret hernede på bunden 969 00:39:39,670 --> 00:39:43,060 højre er den kat, Sprite en, så disse scripts, dette 970 00:39:43,060 --> 00:39:45,720 program, gælder for ham specifikt. 971 00:39:45,720 --> 00:39:48,950 Så hvis det kat rører musemarkøren, så det går 972 00:39:48,950 --> 00:39:51,350 at spille denne ned og vente to sekunder, og 973 00:39:51,350 --> 00:39:53,030 gentag derefter ad nauseum. 974 00:39:53,030 --> 00:39:55,360 >> Så lad os gå videre og ramte play. 975 00:39:55,360 --> 00:39:57,580 Der sker ikke noget, men hvis jeg ønsker at kæle med 976 00:39:57,580 --> 00:39:59,310 kat nu, kan jeg simpelthen. 977 00:39:59,310 --> 00:40:01,130 [MEOW] 978 00:40:01,130 --> 00:40:02,244 DAVID Malan: Adorable. 979 00:40:02,244 --> 00:40:05,956 [MEOW] 980 00:40:05,956 --> 00:40:08,750 DAVID Malan: Okay, mindre irriterende, men også bliver kedelig, 981 00:40:08,750 --> 00:40:11,480 så lad os gå videre og se, om vi ikke kan injicere 982 00:40:11,480 --> 00:40:12,460 lidt mere logik. 983 00:40:12,460 --> 00:40:14,300 Det var eksempel syv. 984 00:40:14,300 --> 00:40:16,090 >> Her i eksempel otte, vi kommer til at 985 00:40:16,090 --> 00:40:18,670 indføre en ELSE tilstand. 986 00:40:18,670 --> 00:40:21,440 Så meget som en bogstavelig gaffel i vejen, hvor du kan gå 987 00:40:21,440 --> 00:40:24,260 til venstre eller du kan gå til højre, en tilstand i et programmeringssprog 988 00:40:24,260 --> 00:40:28,120 sprog som Scratch, eller som vi vil se C, kan tillade dig at 989 00:40:28,120 --> 00:40:32,230 gå i den ene eller anden retning via en IF ELSE konstruere. 990 00:40:32,230 --> 00:40:35,160 Så helt bogstaveligt, HVIS røre musemarkøren, dette 991 00:40:35,160 --> 00:40:38,680 vil spille noget lyd, ellers kommer til at spille denne anden 992 00:40:38,680 --> 00:40:39,800 lyd, mjave. 993 00:40:39,800 --> 00:40:42,510 Nu, hvis du kan udlede af navnet på disse lyde, kan du 994 00:40:42,510 --> 00:40:45,310 sikkert gætte, hvad dette program er beregnet til at fremmane 995 00:40:45,310 --> 00:40:46,250 ideen om. 996 00:40:46,250 --> 00:40:48,742 Denne kat er mjavende lykkeligt. 997 00:40:48,742 --> 00:40:49,230 [MEOW] 998 00:40:49,230 --> 00:40:51,410 DAVID Malan: Heldigvis, men ikke 999 00:40:51,410 --> 00:40:52,926 helt lide at blive rørt. 1000 00:40:52,926 --> 00:40:54,550 [Brøl] 1001 00:40:54,550 --> 00:40:57,500 DAVID Malan: Så nu har vi en kat, der vil råbe på dig. 1002 00:40:57,500 --> 00:41:00,570 >> Okay, godt, en sidste eksempel med katte her, og 1003 00:41:00,570 --> 00:41:02,920 Lad os åbne udgave ni af dette her. 1004 00:41:02,920 --> 00:41:06,190 Så nu har vi den næste mest irriterende lyd, som jeg kunne 1005 00:41:06,190 --> 00:41:11,630 finde, så vi har en hvalros eller søløve her, der kommer til at 1006 00:41:11,630 --> 00:41:13,222 skal du gøre følgende. 1007 00:41:13,222 --> 00:41:20,870 [SEAL BARK] 1008 00:41:20,870 --> 00:41:23,310 DAVID Malan: Okay, så dette vil fortsætte, indtil du regne ud, hvordan 1009 00:41:23,310 --> 00:41:24,640 dette program virker. 1010 00:41:24,640 --> 00:41:28,560 Så denne gang, har dette dyr to scripts, og hvad er 1011 00:41:28,560 --> 00:41:31,050 interessante her er, at disse scripts vil udføre 1012 00:41:31,050 --> 00:41:32,260 parallelt. 1013 00:41:32,260 --> 00:41:35,340 Så fordi de begge starter med en grøn flag klikket, 1014 00:41:35,340 --> 00:41:38,080 det er ligesom at gå på denne måde, og begge programmer begynder at køre det 1015 00:41:38,080 --> 00:41:41,370 en gang, selv om de er looping evigt. 1016 00:41:41,370 --> 00:41:44,420 Så i den øverste script, har jeg en vis logik. 1017 00:41:44,420 --> 00:41:49,275 Hvilke funktioner betyder det giver deroppe? 1018 00:41:49,275 --> 00:41:50,740 [SEAL BARK] 1019 00:41:50,740 --> 00:41:51,670 PUBLIKUM: [uhørligt] 1020 00:41:51,670 --> 00:41:53,295 DAVID Malan: Hvis det er hvad? 1021 00:41:53,295 --> 00:41:53,760 [SEAL BARK] 1022 00:41:53,760 --> 00:41:55,852 PUBLIKUM: Hvis dæmpet til nul, det vil holde spille 1023 00:41:55,852 --> 00:41:58,410 lyde. [SEAL BARK] 1024 00:41:58,410 --> 00:41:58,940 DAVID Malan: Okay, godt. 1025 00:41:58,940 --> 00:42:01,960 Så hvis dæmpet, uanset dette er, denne orange ting er nul, 1026 00:42:01,960 --> 00:42:05,370 Så spiller havet løve lyd og tænke "Åh, 1027 00:42:05,370 --> 00:42:06,770 hej, "i to sekunder. 1028 00:42:06,770 --> 00:42:09,380 Nu ved jeg ikke, hvad dæmpet er, men nul fremmaner den 1029 00:42:09,380 --> 00:42:11,230 idéen om falsk eller slukket. 1030 00:42:11,230 --> 00:42:14,490 Så hvis dæmpet er falsk, så hvis ikke slået fra, 1031 00:42:14,490 --> 00:42:15,660 holde spille lyden. 1032 00:42:15,660 --> 00:42:17,350 Okay, godt, hvordan vi deaktivere denne ting? 1033 00:42:17,350 --> 00:42:19,310 >> Nå, lad os se på det andet script dernede. 1034 00:42:19,310 --> 00:42:22,130 Det andet skrift siger sat dæmpet til nul. 1035 00:42:22,130 --> 00:42:25,180 Bemærk det er også orange, så hvad Scratch gør, er det farver 1036 00:42:25,180 --> 00:42:27,400 blokke i den samme farve, hvis det er sortering 1037 00:42:27,400 --> 00:42:28,850 af logisk forbundne. 1038 00:42:28,850 --> 00:42:32,850 Så lige så dæmpet op øverst var orange, så er dæmpet ned her 1039 00:42:32,850 --> 00:42:34,060 nævnt i orange blok. 1040 00:42:34,060 --> 00:42:36,170 Men det er en variabel opgaver, så ligesom i 1041 00:42:36,170 --> 00:42:39,170 algebra, du har x og y og z, i programmering du har 1042 00:42:39,170 --> 00:42:41,440 variabler, men de er generelt - 1043 00:42:41,440 --> 00:42:42,580 lad os stoppe op et øjeblik og figur, hvordan 1044 00:42:42,580 --> 00:42:44,280 at stoppe denne gøen. 1045 00:42:44,280 --> 00:42:45,480 Hvordan gør jeg det? 1046 00:42:45,480 --> 00:42:46,480 [SEAL BARK] 1047 00:42:46,480 --> 00:42:47,920 DAVID Malan: Okay. 1048 00:42:47,920 --> 00:42:49,490 Det stoppede. Okay. 1049 00:42:49,490 --> 00:42:52,230 >> Så ligesom i algebra De har variable x, y og z, men i 1050 00:42:52,230 --> 00:42:55,260 programmering, der variabler som x, y og z er generelt 1051 00:42:55,260 --> 00:42:57,330 ildeset, fordi de ikke er på alle udtryksfuld. 1052 00:42:57,330 --> 00:43:00,070 De har ingen semantisk mening overhovedet, så i de fleste 1053 00:43:00,070 --> 00:43:02,110 programmeringssprog, kan variabler have fuld 1054 00:43:02,110 --> 00:43:05,270 flyvefærdige navne eller ord eller sætninger, gerne dæmpet, for at sige 1055 00:43:05,270 --> 00:43:06,030 hvad de gør. 1056 00:43:06,030 --> 00:43:09,380 Så dette andet script også lyttede evigt, og det sagde 1057 00:43:09,380 --> 00:43:12,100 hvis nøglen, tastatur nøgle Space, er 1058 00:43:12,100 --> 00:43:13,370 presset, spørgsmålstegn. 1059 00:43:13,370 --> 00:43:16,300 Så der er en tilstand med et boolesk udtryk, der er 1060 00:43:16,300 --> 00:43:19,010 kommer til at besvare et spørgsmål enten sandfærdigt eller falsk, 1061 00:43:19,010 --> 00:43:22,880 så har jeg inde i det, hvis mellemrums-tasten trykkes ned og 1062 00:43:22,880 --> 00:43:28,020 HVIS dæmpet er nul, skal du indstille dæmpet til én, ELSE indstille dæmpet til nul. 1063 00:43:28,020 --> 00:43:30,510 Så denne anden gaffel i vejen, og bemærk, hvordan jeg har 1064 00:43:30,510 --> 00:43:33,500 indlejret de to IF betingelser, er en måde at kontrollere den 1065 00:43:33,500 --> 00:43:36,610 Space Bar presset, fordi hvis det er tilfældet, jeg enten ønsker at gå denne 1066 00:43:36,610 --> 00:43:38,000 måde eller på den måde. 1067 00:43:38,000 --> 00:43:40,210 Og hvordan kan jeg vende værdien af ​​dæmpet? 1068 00:43:40,210 --> 00:43:41,410 Jeg er nødt til at kontrollere, er det nul? 1069 00:43:41,410 --> 00:43:45,890 Hvis det er tilfældet, gør det en, ellers gør det nul til derfor skifte 1070 00:43:45,890 --> 00:43:47,670 sine to stater. 1071 00:43:47,670 --> 00:43:50,030 >> Okay, så vi har så nogle af disse grundlæggende 1072 00:43:50,030 --> 00:43:50,540 konstruktioner. 1073 00:43:50,540 --> 00:43:52,810 Vi har boolske udtryk, og indse, også er der tale om 1074 00:43:52,810 --> 00:43:54,050 ikke alle, at ukendte. 1075 00:43:54,050 --> 00:43:56,730 Faktisk er her en hurtig skærmbillede af Harvard kursets CS50 1076 00:43:56,730 --> 00:43:59,740 shopping værktøj, og enhver hjemmeside derude, der har afkrydsningsfelter 1077 00:43:59,740 --> 00:44:02,420 og rullemenuer har virkelig, al denne tid, har brugt 1078 00:44:02,420 --> 00:44:03,430 Booleske udtryk. 1079 00:44:03,430 --> 00:44:05,760 I dette tilfælde her, hvis du klikker på afkrydsningsfeltet ved siden af 1080 00:44:05,760 --> 00:44:08,620 Selvfølgelig er større end eller lig med 4,5, eller den samme siden af 1081 00:44:08,620 --> 00:44:11,200 fakultet, du angiver en boolsk udtryk. 1082 00:44:11,200 --> 00:44:14,780 Vis mig kurser, dette udtryk er sandt. 1083 00:44:14,780 --> 00:44:17,080 Eller til højre, ikke er i konflikt med kurser Jeg er 1084 00:44:17,080 --> 00:44:20,440 tager, hvis det er markeret, så ja, du vil kontrollere 1085 00:44:20,440 --> 00:44:22,890 denne betingelse, ellers du ønsker at ignorere det. 1086 00:44:22,890 --> 00:44:25,170 Så boolske udtryk er en slags hele vejen rundt, men når 1087 00:44:25,170 --> 00:44:28,080 vi sætter dem i forhold, hvad enten IF betingelser, hvis 1088 00:44:28,080 --> 00:44:30,480 Elses, eller vi kan endda simulere dybere 1089 00:44:30,480 --> 00:44:32,830 niveauer, hvis ELSE IF ELSE - 1090 00:44:32,830 --> 00:44:34,430 så det er en slags ternær stat. 1091 00:44:34,430 --> 00:44:36,920 Du kan gå på denne måde eller denne måde eller denne måde. 1092 00:44:36,920 --> 00:44:39,680 Vi kan holde indlejrer ting at gå i forskellige retninger. 1093 00:44:39,680 --> 00:44:41,800 >> Så Scratch har disse sløjfer, ligesom Forever. 1094 00:44:41,800 --> 00:44:44,750 Det har disse funktioner som Repeat 10, nogle 1095 00:44:44,750 --> 00:44:46,260 begrænset antal gange. 1096 00:44:46,260 --> 00:44:49,040 Vi har evnen nu at sætte variabler, så i dette tilfælde 1097 00:44:49,040 --> 00:44:51,810 Jeg har erklæret, for eksempel en variabel kaldet sokker. 1098 00:44:51,810 --> 00:44:54,340 Jeg har initialiseret til 0, og det er endnu en anden retning 1099 00:44:54,340 --> 00:44:56,940 vi kunne have taget op her med Joseph, hvor jeg måske 1100 00:44:56,940 --> 00:45:00,150 bare holde styr på hvor mange sokker jeg har på og afslutte 1101 00:45:00,150 --> 00:45:03,490 programmet, når den pågældende variabel værdi er 2. 1102 00:45:03,490 --> 00:45:05,660 Det ville være en anden måde at slags generalisering, at 1103 00:45:05,660 --> 00:45:08,820 problem og gøre noget igen og igen. 1104 00:45:08,820 --> 00:45:12,080 Nå, lad os gå videre og nu introducere et par nye ting. 1105 00:45:12,080 --> 00:45:14,100 Så dem af jer med tidligere programmering erfaring vil 1106 00:45:14,100 --> 00:45:17,120 ved, at en masse sprog har arrays, eller vektorer eller 1107 00:45:17,120 --> 00:45:19,970 lister, og ja, Scratch har noget som dette, også. 1108 00:45:19,970 --> 00:45:22,510 Så lad os se om vi ikke kan tage tingene til det næste niveau her. 1109 00:45:22,510 --> 00:45:24,920 Hvis jeg har mulighed for, nu, med disse puslespilsbrikker til 1110 00:45:24,920 --> 00:45:29,080 tilføje noget, ligesom et ord eller tal, til en variabel, jeg kan 1111 00:45:29,080 --> 00:45:30,550 begynder at hobe ting. 1112 00:45:30,550 --> 00:45:33,630 Og det er faktisk temmelig apropos for ting som spil, 1113 00:45:33,630 --> 00:45:35,810 rollespil, hvor du slags gå rundt 1114 00:45:35,810 --> 00:45:38,600 nogle fantasy verden indsamler ting, plukke ting op, 1115 00:45:38,600 --> 00:45:39,900 tjene point, eller lignende. 1116 00:45:39,900 --> 00:45:42,310 Du vil måske holde styr på en slags opgørelse, og 1117 00:45:42,310 --> 00:45:45,180 ja, det er hvad en af ​​vores tidligere studerende her gjorde med 1118 00:45:45,180 --> 00:45:47,750 noget, der hedder Fruitcraft RPG. 1119 00:45:47,750 --> 00:45:51,820 >> Så lad mig gå videre og åbne denne ting her, og i 1120 00:45:51,820 --> 00:45:56,260 Fruitcraft, har vi denne verden op på toppen. 1121 00:45:56,260 --> 00:45:58,820 Så lad mig gå videre og klik på den grønne flag. 1122 00:45:58,820 --> 00:46:01,040 Meddelelse øverst til venstre er en slags opgørelse. 1123 00:46:01,040 --> 00:46:04,110 Det er implementeret i Scratch som hvad vi vil kalde en matrix eller 1124 00:46:04,110 --> 00:46:06,890 en liste, og nu har vi denne lille animation. 1125 00:46:06,890 --> 00:46:10,440 Så ligesom vi startede tidligere med denne cookie kærlighedshistorie, 1126 00:46:10,440 --> 00:46:13,320 og derefter vi avancerede til katte og søløver, nu kan vi få 1127 00:46:13,320 --> 00:46:15,100 ting, der er endnu mere interaktiv. 1128 00:46:15,100 --> 00:46:18,250 Og denne lille blå fyr, kan jeg begynde at bevæge sig rundt om hans 1129 00:46:18,250 --> 00:46:19,500 lille hjem her. 1130 00:46:19,500 --> 00:46:22,570 Så det ser ud som om han har en exit hernede, så jeg bruger 1131 00:46:22,570 --> 00:46:25,260 piletasterne, op, ned, venstre til højre. 1132 00:46:25,260 --> 00:46:28,370 Og nu er jeg udenfor, så lad er hvad jeg har her. 1133 00:46:28,370 --> 00:46:30,920 Ligner en appelsin, og ja, så snart jeg rører 1134 00:46:30,920 --> 00:46:33,110 appelsin, det bliver plopped ind i min beholdning. 1135 00:46:33,110 --> 00:46:35,640 Hvis jeg går over her til de kirsebær, nu har jeg noget 1136 00:46:35,640 --> 00:46:36,760 andet i min beholdning. 1137 00:46:36,760 --> 00:46:39,100 Og det er alle nice og sød, men tænke over, hvordan, nu, dette 1138 00:46:39,100 --> 00:46:39,840 er implementeret. 1139 00:46:39,840 --> 00:46:42,490 Nuvel, vi har denne opfattelse af en liste, og det er tilsyneladende en 1140 00:46:42,490 --> 00:46:45,470 puslespilsbrik, at du bare sige hvad du vil føje til det, tilføje 1141 00:46:45,470 --> 00:46:46,950 orange, tilsættes kirsebær. 1142 00:46:46,950 --> 00:46:48,540 Nu, hvad denne lille blå fyr gør? 1143 00:46:48,540 --> 00:46:49,810 Tja, han er en sprite. 1144 00:46:49,810 --> 00:46:52,190 Og formodentlig, den orange og kirsebær - 1145 00:46:52,190 --> 00:46:54,140 de selv var separate sprites. 1146 00:46:54,140 --> 00:46:56,980 Og ved hjælp af forholdene i boolske udtryk, de 1147 00:46:56,980 --> 00:47:00,530 studerende var sandsynligvis i stand til at udtrykke IF blå fyr er 1148 00:47:00,530 --> 00:47:04,590 rørende kirsebær derefter tilføje ordet kirsebær til hans 1149 00:47:04,590 --> 00:47:07,890 opgørelse, og derefter også skjule cherry sprite. 1150 00:47:07,890 --> 00:47:10,600 Så under kølerhjelmen, der formentlig stadig er en kirsebær 1151 00:47:10,600 --> 00:47:11,350 sprite der. 1152 00:47:11,350 --> 00:47:14,160 Vi har lige fortalt, at det bliver effektivt usynlig. 1153 00:47:14,160 --> 00:47:16,340 >> Nu, hvis jeg fortsætter med at gå herover, kan vi også gøre det 1154 00:47:16,340 --> 00:47:19,150 proksimale ting, hvor jeg kan gå og læse skiltet. 1155 00:47:19,150 --> 00:47:23,170 Så hvis blå fyr røre skilt, kan vi have denne Say blok 1156 00:47:23,170 --> 00:47:26,455 ligesom katten talte til os i ord, hallo, tidligere "Got 1157 00:47:26,455 --> 00:47:26,880 noget frugt? 1158 00:47:26,880 --> 00:47:29,290 Bring det til frugten sted. "All right, så nu, tilsyneladende, 1159 00:47:29,290 --> 00:47:30,550 Jeg har mine retninger. 1160 00:47:30,550 --> 00:47:33,050 Jeg kan gå over her til frugt sted, linje mig op 1161 00:47:33,050 --> 00:47:33,740 med døren. 1162 00:47:33,740 --> 00:47:35,390 Nu er jeg her. 1163 00:47:35,390 --> 00:47:38,120 Jeg kan gå op til manden på tælleren. 1164 00:47:38,120 --> 00:47:40,330 Han opdager, at jeg er tæt på ham, så det behøver ikke at være 1165 00:47:40,330 --> 00:47:46,780 helt identisk rørende, og jeg har vundet spillet. 1166 00:47:46,780 --> 00:47:49,890 Så der har vi Fruitcraft RPG. 1167 00:47:49,890 --> 00:47:52,200 >> Så vi kan gøre tingene endnu mere avancerede end dette. 1168 00:47:52,200 --> 00:47:53,200 Vi kan tilføje lyde. 1169 00:47:53,200 --> 00:47:54,610 Vi kan tilføje pseudo tilfældighed. 1170 00:47:54,610 --> 00:47:56,260 Vi kan tilføje kompleksitet. 1171 00:47:56,260 --> 00:47:58,490 Lad mig gå videre her, og i stedet gøre det selv, 1172 00:47:58,490 --> 00:48:01,240 Lad mig vise dig en af ​​de mere sofistikerede indlæg 1173 00:48:01,240 --> 00:48:06,640 vi fik sidste år fra en bestemt person ved navn Blake. 1174 00:48:06,640 --> 00:48:08,910 Kan vi få en volontør, der er behageligt opført på 1175 00:48:08,910 --> 00:48:12,600 kamera og er op for at spille et spil? 1176 00:48:12,600 --> 00:48:13,450 Hvad med lige der? 1177 00:48:13,450 --> 00:48:15,380 Kom nu op. 1178 00:48:15,380 --> 00:48:19,680 Okay, så det spil, du lige har ubevidst 1179 00:48:19,680 --> 00:48:20,780 meldte sig frivilligt til at spille - 1180 00:48:20,780 --> 00:48:25,910 [Bifald] 1181 00:48:25,910 --> 00:48:28,610 DAVID Malan: - er noget fra gårsdagens kaldet 1182 00:48:28,610 --> 00:48:30,100 "Frogger." Hvad er dit navn? 1183 00:48:30,100 --> 00:48:30,730 Renda: Renda. 1184 00:48:30,730 --> 00:48:31,050 DAVID Malan: Redna? 1185 00:48:31,050 --> 00:48:32,530 Renda: Det er ligesom Brenda med en b. 1186 00:48:32,530 --> 00:48:33,190 DAVID Malan: Okay, Renda. 1187 00:48:33,190 --> 00:48:33,590 David. 1188 00:48:33,590 --> 00:48:34,580 Hyggeligt at møde dig. 1189 00:48:34,580 --> 00:48:38,690 >> Så her i "Frogger", og hvis vi kunne hæve lydstyrken bare 1190 00:48:38,690 --> 00:48:39,780 en lille smule, du er denne lille 1191 00:48:39,780 --> 00:48:41,010 grøn frø på bunden. 1192 00:48:41,010 --> 00:48:43,940 Du kan bruge venstre, højre, op og ned, og dit mål er at 1193 00:48:43,940 --> 00:48:46,510 krydser gaden, krydse floden, og berør lilje puder 1194 00:48:46,510 --> 00:48:47,760 øverst. 1195 00:48:52,090 --> 00:48:53,440 Aw. 1196 00:48:53,440 --> 00:48:54,630 Et mere t - 1197 00:48:54,630 --> 00:48:56,400 redo, okay? 1198 00:48:56,400 --> 00:48:58,890 Lad os hit stop. 1199 00:48:58,890 --> 00:49:00,140 Ingen så det. 1200 00:49:10,470 --> 00:49:12,930 [Bifald] 1201 00:49:17,023 --> 00:49:17,850 [Bifald] 1202 00:49:17,850 --> 00:49:19,341 DAVID Malan: Yeah. 1203 00:49:19,341 --> 00:49:20,832 Meget godt klaret. 1204 00:49:20,832 --> 00:49:22,082 Fremragende, tak. 1205 00:49:27,300 --> 00:49:29,430 >> Så at der var Frogger. Nu hvor du ved, hvad du har 1206 00:49:29,430 --> 00:49:32,170 fået jer ind i, en mere frivillig for en anden 1207 00:49:32,170 --> 00:49:34,910 spil indsendt af en anden elev. 1208 00:49:34,910 --> 00:49:35,560 Du ønsker at komme videre op? 1209 00:49:35,560 --> 00:49:36,576 Hvad er dit navn? 1210 00:49:36,576 --> 00:49:37,000 RICHARD: Richard. 1211 00:49:37,000 --> 00:49:37,420 DAVID Malan: Richard. 1212 00:49:37,420 --> 00:49:39,732 Okay, Richard, kom op. 1213 00:49:39,732 --> 00:49:42,187 [Bifald] 1214 00:49:45,140 --> 00:49:47,030 DAVID Malan: Du har noget, der vil lyde 1215 00:49:47,030 --> 00:49:54,180 velkendt snart, så her er dine instruktioner. 1216 00:49:54,180 --> 00:49:56,580 Så i et øjeblik, er nogle puslespilsbrikker kommer til at rulle op 1217 00:49:56,580 --> 00:49:58,150 fra skærmen, der ser enten efterladt 1218 00:49:58,150 --> 00:49:59,450 eller højre op eller ned. 1219 00:49:59,450 --> 00:50:01,230 Du er nødt til at ramme piletasterne på en sådan måde 1220 00:50:01,230 --> 00:50:04,540 at det svarer til disse puslespilsbrikker foring op med 1221 00:50:04,540 --> 00:50:05,720 pladsholderne øverst. 1222 00:50:05,720 --> 00:50:07,500 Så når du ser en venstre pil, og det flugter med venstre 1223 00:50:07,500 --> 00:50:09,260 pil, ramte venstre pil. 1224 00:50:09,260 --> 00:50:10,866 Du kan begynde. 1225 00:50:10,866 --> 00:50:13,674 [MUSIC - "stærkere" Kayne WEST] 1226 00:51:21,222 --> 00:51:23,470 DAVID Malan: Okay, store runde af bifald for Richard. 1227 00:51:23,470 --> 00:51:26,082 [Bifald] 1228 00:51:32,426 --> 00:51:33,720 DAVID Malan: Meget godt klaret. 1229 00:51:33,720 --> 00:51:34,110 Tak. 1230 00:51:34,110 --> 00:51:37,104 [Bifald] 1231 00:51:41,600 --> 00:51:44,330 >> DAVID Malan: Så sjovt og, tilsyneladende, en slags 1232 00:51:44,330 --> 00:51:46,590 skræmmende som det kan være at gennemføre noget så 1233 00:51:46,590 --> 00:51:49,550 tilsyneladende sofistikeret som dette, indser, at den studerende 1234 00:51:49,550 --> 00:51:51,450 ikke fastsat ud og bare skrive det hele på én gang. 1235 00:51:51,450 --> 00:51:54,200 I stedet kan du nedbryde et problem som tilsyneladende kompleks 1236 00:51:54,200 --> 00:51:56,840 da dette i meget mindre stykker, og også dette er 1237 00:51:56,840 --> 00:51:57,560 vil være et tema. 1238 00:51:57,560 --> 00:52:00,490 Det værste du kan gøre i at skrive et program i de fleste enhver 1239 00:52:00,490 --> 00:52:03,480 sprog er at sidde ned, få virkelig begejstret, skriver 1240 00:52:03,480 --> 00:52:07,200 hele den forbandede ting, og så bare håbe, at det virker som 1241 00:52:07,200 --> 00:52:08,510 gang du er færdig med at skrive. 1242 00:52:08,510 --> 00:52:10,920 Snarere processen med programmeringen skal generelt 1243 00:52:10,920 --> 00:52:13,440 være meget bevidst, meget iterative, hvor du bare 1244 00:52:13,440 --> 00:52:16,955 sat meget små skridt for jer selv, bide stykker på størrelse 1245 00:52:16,955 --> 00:52:20,070 vil du bide, og så du har disse sanity 1246 00:52:20,070 --> 00:52:21,740 checks, små milepæle du kan møde. 1247 00:52:21,740 --> 00:52:24,170 Og så skal du bygge oven på dem, for at skabe mere 1248 00:52:24,170 --> 00:52:25,400 sofistikerede ting stadig. 1249 00:52:25,400 --> 00:52:26,820 >> Så for eksempel, hvordan kunne vi gå om 1250 00:52:26,820 --> 00:52:28,380 gennemførelse af et spil som dette? 1251 00:52:28,380 --> 00:52:30,160 Nå, helt ærligt, ville jeg bestemt starte med bare 1252 00:52:30,160 --> 00:52:32,260 at støtte den ene tast ad gangen. 1253 00:52:32,260 --> 00:52:34,840 Lad os bare gennemføre støtte til den venstre pil. 1254 00:52:34,840 --> 00:52:37,610 Så den studerende skulle en eller anden måde skabe i Photoshop, eller i 1255 00:52:37,610 --> 00:52:40,340 Skrab selv ved hjælp af lille grafiske editor, en 1256 00:52:40,340 --> 00:52:42,680 piletast, der ligner den, der er øverst til venstre der, bare 1257 00:52:42,680 --> 00:52:43,910 den grå pladsholder. 1258 00:52:43,910 --> 00:52:46,610 Så den studerende skulle finde ud af, hvad x, y koordinere til 1259 00:52:46,610 --> 00:52:48,380 udtrykte det, hvor man kan sætte den i vinduet. 1260 00:52:48,380 --> 00:52:50,730 0, 0 er heroppe, så du er nødt til at regne ud hvor mange 1261 00:52:50,730 --> 00:52:53,690 pixels, eller punkter, for at udligne denne pil fra 1262 00:52:53,690 --> 00:52:54,800 Den øverste del af skærmen. 1263 00:52:54,800 --> 00:52:57,040 Og så en gang det er på plads, dit program faktisk ikke 1264 00:52:57,040 --> 00:53:00,380 gøre noget endnu, så du derefter brug for en anden sprite, for 1265 00:53:00,380 --> 00:53:04,470 eksempel en grøn pil, der er også peger mod venstre, og du 1266 00:53:04,470 --> 00:53:06,710 derefter nødt til at begynde at skrive nogle scripts for det. 1267 00:53:06,710 --> 00:53:09,310 >> Og du opdager måske, at disse ting begyndte at komme på 1268 00:53:09,310 --> 00:53:11,470 forskellige hastigheder, og farverne var i forskellige 1269 00:53:11,470 --> 00:53:13,750 steder, og det er fordi den studerende brugt lidt 1270 00:53:13,750 --> 00:53:14,990 pseudo tilfældighed. 1271 00:53:14,990 --> 00:53:17,440 Og ved pseudo tilfældighed, jeg bare betyde vælge et nummer 1272 00:53:17,440 --> 00:53:20,230 mellem noget og noget, fordi du kan 1273 00:53:20,230 --> 00:53:22,890 begynder at kort ting, som hvis antallet er mellem en og 1274 00:53:22,890 --> 00:53:24,940 fem, ja, lad os gøre noget grønt. 1275 00:53:24,940 --> 00:53:28,290 Hvis det er mellem 6 og 10, lad os gøre det puslespil brik 1276 00:53:28,290 --> 00:53:29,730 rød i stedet. 1277 00:53:29,730 --> 00:53:31,840 Så længe du har en måde at skabe en form for 1278 00:53:31,840 --> 00:53:34,730 tilfældighed, kan du derefter træffe beslutninger baseret på, at 1279 00:53:34,730 --> 00:53:35,260 tilfældighed. 1280 00:53:35,260 --> 00:53:37,490 Og jeg holder siger pseudo tilfældig, fordi der er en 1281 00:53:37,490 --> 00:53:38,390 lidt beskidt hemmelighed. 1282 00:53:38,390 --> 00:53:41,130 Computere kan ikke komme op med tilfældige tal. 1283 00:53:41,130 --> 00:53:42,800 De kan kun gøre, hvad man får besked fordi 1284 00:53:42,800 --> 00:53:44,110 de er menneskeskabte anordninger. 1285 00:53:44,110 --> 00:53:45,880 De kan ikke bare gætte et tal ligesom vi mennesker 1286 00:53:45,880 --> 00:53:46,960 føle, at vi kan. 1287 00:53:46,960 --> 00:53:50,970 En computer har at gøre noget matematisk at fremmane 1288 00:53:50,970 --> 00:53:53,970 illusion af matematiske antal, somme tider ved hjælp af 1289 00:53:53,970 --> 00:53:57,420 aktuelle dag af tid som et input til at regne ud, hvad 1290 00:53:57,420 --> 00:53:59,570 nummer til at vende tilbage, men mere om det en anden gang. 1291 00:53:59,570 --> 00:54:02,060 For nu, ved bare, at vi kan generere pseudo tilfældighed. 1292 00:54:02,060 --> 00:54:04,610 >> Så når jeg har mulighed for det venstre pil for at starte 1293 00:54:04,610 --> 00:54:07,990 optræder på forskellige tidspunkter og ved forskellige hastigheder, derefter 1294 00:54:07,990 --> 00:54:10,230 Jeg kan gå tilbage og tilføje nogle af disse IF betingelser. 1295 00:54:10,230 --> 00:54:14,950 HVIS dette sprite rører den anden, og den venstre pil 1296 00:54:14,950 --> 00:54:16,330 -tasten er blevet trykket - 1297 00:54:16,330 --> 00:54:17,900 så tre betingelser i denne sag. 1298 00:54:17,900 --> 00:54:20,750 Jeg kan bruge det og blokere måske i dette tilfælde - 1299 00:54:20,750 --> 00:54:23,210 SÅ jeg vil gerne gå videre og øg score. 1300 00:54:23,210 --> 00:54:25,130 Og øverst, vi har en score, vi har Awesome, 1301 00:54:25,130 --> 00:54:26,510 Cool, God, og Boo. 1302 00:54:26,510 --> 00:54:29,810 Så der er tilsyneladende fem variabler, at denne elev 1303 00:54:29,810 --> 00:54:32,220 anvendes til at holde styr på disse forskellige målinger. 1304 00:54:32,220 --> 00:54:34,180 Så kort sagt, er slutresultatet forbløffende. 1305 00:54:34,180 --> 00:54:37,320 Det er sjovt, det er sjovt at spille, det er spændende, men det er ikke 1306 00:54:37,320 --> 00:54:38,380 hvor eleven begyndte. 1307 00:54:38,380 --> 00:54:42,210 Han eller hun startede på et meget mindre sæt af trin. 1308 00:54:42,210 --> 00:54:44,470 >> Så hvad er nogle andre byggeklodser, som vi kan 1309 00:54:44,470 --> 00:54:45,760 vævning i disse programmer? 1310 00:54:45,760 --> 00:54:48,750 Tja, der er denne anden begreb i de fleste sprog, 1311 00:54:48,750 --> 00:54:50,730 Ridse blandt dem, kendt som tråde. 1312 00:54:50,730 --> 00:54:54,660 Så en computer kan faktisk ikke rigtig gøre flere ting på en 1313 00:54:54,660 --> 00:54:56,730 tid, i hvert fald ikke normalt. 1314 00:54:56,730 --> 00:54:59,930 Snarere en computer har i almindelighed kun en CPU, og selv 1315 00:54:59,930 --> 00:55:02,230 selvom computere er super hurtig og kan derfor 1316 00:55:02,230 --> 00:55:04,740 skabe en illusion af at gøre flere ting på én gang - 1317 00:55:04,740 --> 00:55:06,180 tjekker din mail, få en øjeblikkelig 1318 00:55:06,180 --> 00:55:07,770 besked, udskrivning af et dokument - 1319 00:55:07,770 --> 00:55:11,530 virkelig, er en computer bare hoppe fra print til IMing 1320 00:55:11,530 --> 00:55:15,160 at e-maile, tilbage og tilbage og frem og tilbage så hurtigt, at vi 1321 00:55:15,160 --> 00:55:18,170 langsomme opfattende mennesker bare ikke klar over, at det faktisk 1322 00:55:18,170 --> 00:55:21,240 kører disse programmer en lille smule ad gangen. 1323 00:55:21,240 --> 00:55:23,960 Nu, dette lidt af en hvid løgn disse dage, fordi, i dag, 1324 00:55:23,960 --> 00:55:26,740 mange vores computere er de såkaldte multi-core, så du 1325 00:55:26,740 --> 00:55:29,760 har én CPU, men flere kerner, hvilket er lidt ligesom 1326 00:55:29,760 --> 00:55:31,760 har flere CPU'er. 1327 00:55:31,760 --> 00:55:35,020 >> Og så nogle gange, kan computere virkelig gøre flere ting 1328 00:55:35,020 --> 00:55:38,500 på et tidspunkt, men generelt inden for et program, programmer 1329 00:55:38,500 --> 00:55:40,200 basere sig på disse ting kaldet tråde. 1330 00:55:40,200 --> 00:55:43,160 Så en tråd er lidt ligesom et miniature-program, der kan 1331 00:55:43,160 --> 00:55:46,540 eksistere side om side en anden miniature program og kan køre 1332 00:55:46,540 --> 00:55:51,250 parallelt eller i det mindste kan køre under den illusion, at 1333 00:55:51,250 --> 00:55:52,990 de kører samtidigt. 1334 00:55:52,990 --> 00:55:55,060 Så Scratch understøtter disse ting kaldet tråde. 1335 00:55:55,060 --> 00:55:57,580 Du kan have flere scripts fuldbyrdelsesstaten på én gang, ligesom vi 1336 00:55:57,580 --> 00:56:00,220 gjorde med søløver og dette giver os mulighed for at faktisk 1337 00:56:00,220 --> 00:56:03,620 derefter har samspillet mellem disse sprites. 1338 00:56:03,620 --> 00:56:09,910 Lad mig gå videre her og trække op, lad os sige, tråde, og 1339 00:56:09,910 --> 00:56:11,870 spille dette som følger. 1340 00:56:11,870 --> 00:56:13,950 Vi har to gigantiske lyn, hver af hvem vi vil se 1341 00:56:13,950 --> 00:56:15,720 har kun ét script. 1342 00:56:15,720 --> 00:56:18,000 Og du bemærker, at der synes at være nogle efterretninger i 1343 00:56:18,000 --> 00:56:21,335 kat i denne ene, fordi han nærmer sig - 1344 00:56:21,335 --> 00:56:21,730 [Brøl] 1345 00:56:21,730 --> 00:56:24,540 DAVID Malan: - og tættere på den lille fugl. 1346 00:56:24,540 --> 00:56:26,570 >> Så hvordan er den fugl driften? 1347 00:56:26,570 --> 00:56:28,200 Nå, lad os tage et kig på fuglen først. 1348 00:56:28,200 --> 00:56:31,220 Fuglen script sagde, da det grønne flag er klikket, skal du gå til x 1349 00:56:31,220 --> 00:56:34,020 lig negativ 115 og y lig 150. 1350 00:56:34,020 --> 00:56:37,010 Så jeg bare fundet ud af en tilfældig placering, hvor jeg ønskede 1351 00:56:37,010 --> 00:56:39,580 fugl til at starte, og jeg bare smed ham der som standard. 1352 00:56:39,580 --> 00:56:42,800 Så evigt, hvis ikke røre kat, så dette er en anden 1353 00:56:42,800 --> 00:56:45,080 slags looping konstruktion, men samme idé, gøre det igen og 1354 00:56:45,080 --> 00:56:45,780 igen og igen. 1355 00:56:45,780 --> 00:56:49,410 Så længe du ikke rører katten, flytte tre trin, og 1356 00:56:49,410 --> 00:56:51,680 hvis du er på kanten, bounce, hvor det er en slags 1357 00:56:51,680 --> 00:56:53,320 refleksion i billard forstand. 1358 00:56:53,320 --> 00:56:56,140 Så det er sådan fuglen bevæger sig rundt slags 1359 00:56:56,140 --> 00:56:58,890 tilsyneladende tilfældigt, men det er bare fordi det er preller 1360 00:56:58,890 --> 00:57:00,170 væggene i denne sag. 1361 00:57:00,170 --> 00:57:03,170 >> Nu katten, i mellemtiden, er lidt snyd. 1362 00:57:03,170 --> 00:57:05,520 Katten, når det grønne flag er klikket, ja, starter i 1363 00:57:05,520 --> 00:57:07,390 en placering, en vilkårlig placering - 1364 00:57:07,390 --> 00:57:09,590 i det mindste delvis som pr pick 1365 00:57:09,590 --> 00:57:11,430 tilfældig grønne blok der - 1366 00:57:11,430 --> 00:57:14,660 og derefter for evigt, hvis røre fuglen, spille løve lyd, 1367 00:57:14,660 --> 00:57:15,790 og derefter stoppe script. 1368 00:57:15,790 --> 00:57:18,560 Så da jeg sagde opsige, eller afslutte før, er der et puslespil 1369 00:57:18,560 --> 00:57:20,600 brik i Scratch, der vil bare dræbe programmet på det 1370 00:57:20,600 --> 00:57:22,900 punkt, fordi det er lidt logisk gjort. 1371 00:57:22,900 --> 00:57:25,030 Men ellers her, mærke til, hvad der kommer til at ske. 1372 00:57:25,030 --> 00:57:28,470 Peger mod fuglen og flytte et trin. 1373 00:57:28,470 --> 00:57:31,390 Så dette punkt mod fugl er sådan en fordel katten 1374 00:57:31,390 --> 00:57:34,640 har i, at det er homing ind på den bevægende fugl, og vi kan 1375 00:57:34,640 --> 00:57:37,370 nu gør dette program så meget desto mere interessant. 1376 00:57:37,370 --> 00:57:41,520 I stedet for at flytte et trin ad gangen pr CPU cyklus, pr 1377 00:57:41,520 --> 00:57:44,280 strejke vejafgift af klokken, så at sige, så lad mig gå videre og 1378 00:57:44,280 --> 00:57:47,350 flytte, lad os sige, fem trin ad gangen som katten. 1379 00:57:47,350 --> 00:57:51,120 Klik på Kør, og nu er han virkelig finder ham hurtigt. 1380 00:57:51,120 --> 00:57:55,620 Hvis vi fordoble dette yderligere til 10 trin, den slags går 1381 00:57:55,620 --> 00:57:56,370 højre for ham. 1382 00:57:56,370 --> 00:57:57,750 Nu kan vi give fuglen, 1383 00:57:57,750 --> 00:57:59,540 måske lidt af en fordel. 1384 00:57:59,540 --> 00:58:02,370 Lad os gå til fuglen og sige stedet for at flytte tre trin, 1385 00:58:02,370 --> 00:58:07,140 lad os komme ham 30 trin. 1386 00:58:07,140 --> 00:58:08,700 Men han stadig fik fanget i sidste ende. 1387 00:58:08,700 --> 00:58:10,430 >> Så her har vi to tråde. 1388 00:58:10,430 --> 00:58:13,230 Det er spærret inde i Scratch med to scripts og to 1389 00:58:13,230 --> 00:58:16,150 sprites, men tanken på andre sprog er, at du kan 1390 00:58:16,150 --> 00:58:19,220 skrive det væsentlige, for mange programmer som dette og har 1391 00:58:19,220 --> 00:58:22,950 dem løbe virkelig, eller imaginarily, parallelt. 1392 00:58:22,950 --> 00:58:25,280 >> Nu er der også dette begreb i programmering kendt som 1393 00:58:25,280 --> 00:58:28,010 begivenheder, og det er noget, vi vil ikke se i C, 1394 00:58:28,010 --> 00:58:30,500 sprog kendt som C. Vi vil se det hen semesters afslutning 1395 00:58:30,500 --> 00:58:33,240 i webprogrammering, vi når introducere JavaScript og 1396 00:58:33,240 --> 00:58:36,970 Begrebet bygge websider, der er dynamisk og interagere 1397 00:58:36,970 --> 00:58:37,710 med brugerne. 1398 00:58:37,710 --> 00:58:40,430 Så i dette tilfælde har vi et meget enkelt eksempel af to 1399 00:58:40,430 --> 00:58:43,860 sprites, dreng og pige, som hver især har deres respektive 1400 00:58:43,860 --> 00:58:48,040 tråde, men på en måde disse to er indbyrdes kommunikerer ved hjælp 1401 00:58:48,040 --> 00:58:49,490 af noget, der hedder begivenheder. 1402 00:58:49,490 --> 00:58:52,750 Så lad mig gå videre her og zoome ind på drengens script, 1403 00:58:52,750 --> 00:58:54,050 der ser sådan ud. 1404 00:58:54,050 --> 00:58:57,510 Når grønt flag klikket, for evigt gøre følgende. 1405 00:58:57,510 --> 00:59:01,510 Hvis nøglen Space, eller Space, er trykket, siger 1406 00:59:01,510 --> 00:59:03,900 Marco i to sekunder, det er rent æstetisk på 1407 00:59:03,900 --> 00:59:06,860 skærm, en lille taleboble, men derefter udsende. 1408 00:59:06,860 --> 00:59:09,240 >> Så udsendelse er en anden Scratch stykke, der er 1409 00:59:09,240 --> 00:59:12,050 repræsenterer en klasse af funktionalitet i programmeringen 1410 00:59:12,050 --> 00:59:15,080 der tillader forskellige programmer, forskellige tråde, 1411 00:59:15,080 --> 00:59:17,120 til inter-kommunikere, at en eller anden måde sende 1412 00:59:17,120 --> 00:59:18,520 beskeder, en til en anden. 1413 00:59:18,520 --> 00:59:21,930 Passing et stykke papir i klassen er en slags lav tech 1414 00:59:21,930 --> 00:59:22,700 ækvivalent. 1415 00:59:22,700 --> 00:59:24,300 Så udsendes begivenhed. 1416 00:59:24,300 --> 00:59:26,210 Jeg kan sende denne besked, og ordet begivenhed 1417 00:59:26,210 --> 00:59:27,270 er helt vilkårlig. 1418 00:59:27,270 --> 00:59:30,000 Scratch undertiden har disse rullemenuer, så jeg kom lige op 1419 00:59:30,000 --> 00:59:33,230 med en tilfældig ord som begivenhed, fordi nu, hvad drengen gør 1420 00:59:33,230 --> 00:59:36,600 når jeg trykker på tasten er han udsender denne begivenhed. 1421 00:59:36,600 --> 00:59:39,270 Og hvis jeg nu se på pigens script, hendes script er 1422 00:59:39,270 --> 00:59:42,690 super enkel, fordi alt, hvad hun skal gøre ikke handle, når 1423 00:59:42,690 --> 00:59:44,100 det grønne flag er klikket. 1424 00:59:44,100 --> 00:59:47,910 Hun er designet til handling, når hun modtager citat, citat slut, 1425 00:59:47,910 --> 00:59:51,210 "Begivenhed", og på det tidspunkt, hun lytter derfor til 1426 00:59:51,210 --> 00:59:52,960 den såkaldte begivenhed igen og igen. 1427 00:59:52,960 --> 00:59:55,790 Så snart hun modtager denne begivenhed, hun kommer til at skrige 1428 00:59:55,790 --> 00:59:57,680 Polo i to sekunder. 1429 00:59:57,680 --> 01:00:01,090 >> Og så kan du måske udlede dette præcis, hvad det 1430 01:00:01,090 --> 01:00:03,190 næste resultat bliver. 1431 01:00:03,190 --> 01:00:04,910 Lad mig klikke på det grønne flag. 1432 01:00:04,910 --> 01:00:06,610 Der sker ikke noget, fordi jeg er nødt til at gøre hvad? 1433 01:00:06,610 --> 01:00:07,310 PUBLIKUM: Space Bar. 1434 01:00:07,310 --> 01:00:08,630 DAVID Malan: Space Bar. 1435 01:00:08,630 --> 01:00:11,990 Boy siger Marco, pige siger Polo. 1436 01:00:11,990 --> 01:00:13,670 Men det er ikke svært kodet per se. 1437 01:00:13,670 --> 01:00:16,740 Det er inter-kommunikation mellem scripts, så nu har vi 1438 01:00:16,740 --> 01:00:19,240 har evnen til at gøre endnu mere komplekse programmer, hvor 1439 01:00:19,240 --> 01:00:22,830 disse to er en eller anden måde indbyrdes kommunikation. 1440 01:00:22,830 --> 01:00:25,260 >> Så i hvad retninger kan vi tage det? 1441 01:00:25,260 --> 01:00:28,260 Tja, i problem set 0, virkelig, er målet at 1442 01:00:28,260 --> 01:00:29,830 have det sjovt med Scratch. 1443 01:00:29,830 --> 01:00:32,440 For hacker udgave, vil du i stedet have det sjovt med en mere 1444 01:00:32,440 --> 01:00:35,850 sofistikeret udgave af Scratch kaldet BYOB, Byg 1445 01:00:35,850 --> 01:00:38,040 Dine egne blokke, men ideen er den samme. 1446 01:00:38,040 --> 01:00:38,780 Du vil være i stand til - 1447 01:00:38,780 --> 01:00:39,710 Ja, det var bevidst. 1448 01:00:39,710 --> 01:00:42,450 Det kom fra Berkeley. 1449 01:00:42,450 --> 01:00:45,200 BYOB er hacker udgave version af dette, men begge 1450 01:00:45,200 --> 01:00:48,180 demografi, standard udgave og hacker udgave ens, den 1451 01:00:48,180 --> 01:00:50,940 mål ved hånden til den kommende uge er egentlig bare at dykke i 1452 01:00:50,940 --> 01:00:53,050 dyb, få dine hænder beskidte med programmering, og gøre 1453 01:00:53,050 --> 01:00:55,240 noget interessant, gøre noget interaktivt, gøre 1454 01:00:55,240 --> 01:00:58,020 noget kunstnerisk, gøre noget sjovt til rent faktisk at 1455 01:00:58,020 --> 01:01:01,020 godtgøre, så vi ved ugens udgang, vil du have et projekt, 1456 01:01:01,020 --> 01:01:03,770 ikke kun for din første CS50 Pset, men du vil have en 1457 01:01:03,770 --> 01:01:05,620 lidt noget, som du kan vise i Annenberg til 1458 01:01:05,620 --> 01:01:08,830 venner eller endda familie ved at uploade det til MIT hjemmeside. 1459 01:01:08,830 --> 01:01:11,760 Og så jeg sagde onsdag, forventer vi 90% af klassen, 1460 01:01:11,760 --> 01:01:13,970 generelt, at gøre de almindelige udgaver. 1461 01:01:13,970 --> 01:01:16,660 Indse, at der er også denne afsætningsmulighed for dem af jer der 1462 01:01:16,660 --> 01:01:18,990 ellers kunne finde dig selv lidt kede med grundlæggende 1463 01:01:18,990 --> 01:01:21,650 og virkelig ønsker at dykke ned og udforme en vision, du allerede 1464 01:01:21,650 --> 01:01:25,380 har med forudgående baggrund i dette mere venlige 1465 01:01:25,380 --> 01:01:26,240 miljø. 1466 01:01:26,240 --> 01:01:29,030 >> Så lad mig trække op en anden eksempel, at en af ​​vores tidligere 1467 01:01:29,030 --> 01:01:33,830 studerende her gjorde og fortælle lidt noget gennem sang. 1468 01:01:33,830 --> 01:01:37,430 Det samme måde, som dette spiller, så tænk over, hvordan du går om 1469 01:01:37,430 --> 01:01:40,520 gennemførelsen af ​​dette program ved hjælp af netop disse samme 1470 01:01:40,520 --> 01:01:44,180 byggeklodser, en lille smule pseudo tilfældighed, og en 1471 01:01:44,180 --> 01:01:46,010 bit af velkendte sang. 1472 01:01:46,010 --> 01:01:47,910 Hvis vi kunne skrue op for volumen bare en lille smule? 1473 01:01:47,910 --> 01:01:49,160 [MUSIC - "Det regner MEN" The Weather Girls] 1474 01:03:02,261 --> 01:03:03,930 >> DAVID Malan: Det var det for CS50. 1475 01:03:03,930 --> 01:03:05,860 Vi vil se dig på mandag. 1476 01:03:05,860 --> 01:03:21,152 [Bifald]