1 00:00:00,000 --> 00:00:11,120 2 00:00:11,120 --> 00:00:12,590 >> SPEAKER: Jeg er [uhørlig]. 3 00:00:12,590 --> 00:00:14,820 Og jeg er en senior på Leverett House. 4 00:00:14,820 --> 00:00:18,700 Jeg studerer informatikk, og jeg er en TF for CS50. 5 00:00:18,700 --> 00:00:21,640 Som førsteårsstudent, jeg visste ikke engang har en bærbar PC eller en smarttelefon. 6 00:00:21,640 --> 00:00:23,550 Jeg hadde ingen erfaring med programmering. 7 00:00:23,550 --> 00:00:29,690 CS50 var den mest minneverdige kurs som Jeg tok på Harvard fordi det var 8 00:00:29,690 --> 00:00:32,960 en kamp, ​​men det var en virkelig fun sliter på samme tid. 9 00:00:32,960 --> 00:00:37,670 Og jeg har gjort mye fantastisk, permanent venner, og jeg har lært mye av virkelig 10 00:00:37,670 --> 00:00:38,830 relevant kompetanse. 11 00:00:38,830 --> 00:00:43,480 Jeg er bare så glad for at jeg ikke la min mangel på bakgrunn være en unnskyldning for meg 12 00:00:43,480 --> 00:00:44,840 ikke ta CS50. 13 00:00:44,840 --> 00:00:46,220 Jeg er [uhørlig]. 14 00:00:46,220 --> 00:00:48,910 Jeg er en senior på Leverett Hus, klasse av 2014. 15 00:00:48,910 --> 00:00:51,670 Og jeg tok CS50. 16 00:00:51,670 --> 00:00:52,380 >> DAVID MALAN: Så dette er CS50. 17 00:00:52,380 --> 00:00:54,400 Dette er slutten av uken null. 18 00:00:54,400 --> 00:00:58,500 Og husker hvor vi startet den siste tiden, var med disse lampene, som var 19 00:00:58,500 --> 00:01:01,420 så populært at vi gikk og kjøpte litt mer i dag. 20 00:01:01,420 --> 00:01:03,790 Så jeg tror dette vil være våre ting i år - 21 00:01:03,790 --> 00:01:07,230 bordlamper hvis du kommer opp på scenen, i hvert fall inntil vi kjører ut. 22 00:01:07,230 --> 00:01:11,570 >> Men vi brukte disse tilbakekalling, for å introdusere det grunnleggende om representasjon av data. 23 00:01:11,570 --> 00:01:15,640 Vi trengte måte å starte representerer informasjon inne i en datamaskin. 24 00:01:15,640 --> 00:01:18,650 Og den enkleste måten å gjøre det var med én ingrediens, elektrisitet. 25 00:01:18,650 --> 00:01:21,760 Og den enkleste ting du kan gjøre med strøm er å slå den på og den av. 26 00:01:21,760 --> 00:01:23,520 La elektronene flyter eller ikke. 27 00:01:23,520 --> 00:01:27,930 Og ved hjelp av disse to grunnleggende tilstander, off og på, eller falsk og ekte, eller null og 28 00:01:27,930 --> 00:01:31,290 en, begynte vi å se at vi kunne bygge opp, i dette tilfellet, med lyset 29 00:01:31,290 --> 00:01:33,720 pærer, flere tall enn bare null og én. 30 00:01:33,720 --> 00:01:36,160 Vi telles så høyt som syv, for eksempel, siste gang. 31 00:01:36,160 --> 00:01:38,840 Men alt vi trenger å gjøre er å fortsette å kaste flere og flere lyspærer at 32 00:01:38,840 --> 00:01:41,820 problem og, egentlig, kan vi representere et tall som vi 33 00:01:41,820 --> 00:01:42,970 kanskje muligens. 34 00:01:42,970 --> 00:01:47,230 >> Vel, overført vi raskt deretter på Onsdag til denne byte av frivillige. 35 00:01:47,230 --> 00:01:52,040 8 bits er det vi vanligvis kaller en byte, så her hadde vi åtte frivillige 36 00:01:52,040 --> 00:01:54,900 på onsdag som til sammen var som representerer åtte bits. 37 00:01:54,900 --> 00:01:56,750 Og når hendene gikk opp, var de ett. 38 00:01:56,750 --> 00:01:58,530 Og når deres hender var ned, var det et null. 39 00:01:58,530 --> 00:02:01,970 Og vi hadde disse folkene komme opp på scenen hvorfor? 40 00:02:01,970 --> 00:02:06,530 Hva vi kan gjøre med denne sekvens av biter? 41 00:02:06,530 --> 00:02:07,510 >> Å skape et alfabet. 42 00:02:07,510 --> 00:02:11,550 Vi var i stand til å bygge på toppen av det forrige leksjon lært og faktisk 43 00:02:11,550 --> 00:02:14,200 begynne å gjøre mer interessant informasjon som er minst mer 44 00:02:14,200 --> 00:02:15,330 kjent for oss mennesker. 45 00:02:15,330 --> 00:02:18,360 Og dette kommer til å være et tilbakevendende tema gjennom 50, men også datamaskinen 46 00:02:18,360 --> 00:02:21,470 vitenskap mer generelt, denne ide lagdeling, hvor, ved enden av den 47 00:02:21,470 --> 00:02:24,820 dag, hvis du virkelig startet grunnleggende med en datamaskin, ja, 48 00:02:24,820 --> 00:02:25,760 det er nuller og enere. 49 00:02:25,760 --> 00:02:27,480 Og under at det er bare elektrisitet. 50 00:02:27,480 --> 00:02:30,840 Men vi svært raskt begynne å ta dem lavt nivå detaljer for gitt 51 00:02:30,840 --> 00:02:35,600 og begynner å lag på toppen av tidligere jobbet gjort slik at vi til slutt, etter 52 00:02:35,600 --> 00:02:38,610 slutten av semesteret og, egentlig, mer generelt som dataforskere 53 00:02:38,610 --> 00:02:42,790 og programmerere, kan gjøre noen virkelig kraftige ting ved å utnytte arbeid 54 00:02:42,790 --> 00:02:46,620 at vi selv har gjort og også stå på skuldrene til andre. 55 00:02:46,620 --> 00:02:49,300 >> Nå er vi raskt overført på onsdag fra bare måtte 56 00:02:49,300 --> 00:02:52,080 representerer informasjon til å ville å gjøre noe med det. 57 00:02:52,080 --> 00:02:54,170 Så hva gjorde vi definere en algoritme som? 58 00:02:54,170 --> 00:02:57,340 59 00:02:57,340 --> 00:02:58,900 En rekke instruksjoner. 60 00:02:58,900 --> 00:03:03,380 Så det er en rekke instruksjoner, en antall trinn som du, et menneske, eller 61 00:03:03,380 --> 00:03:07,160 en datamaskin, mere typisk ville utføre den ene etter den annen i rekkefølgen 62 00:03:07,160 --> 00:03:08,100 å oppnå noen mål. 63 00:03:08,100 --> 00:03:11,360 Og vi hadde et par mål forrige gang, hvorav den ene var å telle 64 00:03:11,360 --> 00:03:12,250 personer i rommet. 65 00:03:12,250 --> 00:03:15,560 Og et annet slikt eksempel var å finne Mike Smith i en telefonkatalog. 66 00:03:15,560 --> 00:03:19,750 >> Så du husker kanskje at jeg rev en telefon bok i halvparten mot dette ende opp 67 00:03:19,750 --> 00:03:21,280 finne Mike Smith. 68 00:03:21,280 --> 00:03:24,000 Hensikten med den visuelle var til demonstrere, igjen, at vi var 69 00:03:24,000 --> 00:03:27,770 bokstavelig talt rive dette problemet i halvparten, i to, i to, og veldig 70 00:03:27,770 --> 00:03:31,750 raskt kommer fra som 1000 sider til bare én enkelt side. 71 00:03:31,750 --> 00:03:34,860 De av dere som gikk glipp av dette på Onsdag, jeg trodde vi skulle spille tilbake 72 00:03:34,860 --> 00:03:36,820 noen bilder av hva du gikk glipp av. 73 00:03:36,820 --> 00:03:38,914 La oss ta en titt. 74 00:03:38,914 --> 00:03:40,906 >> [VIDEOAVSPILLING] 75 00:03:40,906 --> 00:03:55,360 76 00:03:55,360 --> 00:03:55,990 >> -Det vi går. 77 00:03:55,990 --> 00:04:01,432 1500 sider, Nice clean linje, legitim tåre. 78 00:04:01,432 --> 00:04:02,850 >> [END VIDEOAVSPILLING] 79 00:04:02,850 --> 00:04:05,230 >> DAVID MALAN: Så det var onsdag. 80 00:04:05,230 --> 00:04:09,150 Vi overgangen, men på onsdag nå til å ville representere algoritmer 81 00:04:09,150 --> 00:04:12,410 på noen noe standard måte, ikke bare beskriver dem verbalt, men 82 00:04:12,410 --> 00:04:16,290 prøver å uttrykke dem skriftlig eller på en dataskjerm, slik at vi kunne 83 00:04:16,290 --> 00:04:19,170 begynne å forbedre og modifisere dem, og, til slutt, faktisk 84 00:04:19,170 --> 00:04:21,160 analysere hvor riktig eller hvor fort de var. 85 00:04:21,160 --> 00:04:23,360 >> Så vi innførte dette begrepet av pseudokode, som i 86 00:04:23,360 --> 00:04:26,410 lekmann vilkår, er hva? 87 00:04:26,410 --> 00:04:26,930 OK, ord. 88 00:04:26,930 --> 00:04:28,730 La oss gå litt dypere enn det. 89 00:04:28,730 --> 00:04:32,540 Engelsk, sikker, er bare mot hva end? 90 00:04:32,540 --> 00:04:35,180 Ord som å opprette eller å representere algoritmer. 91 00:04:35,180 --> 00:04:38,380 Så det er ingen språk kjent som pseudokode i verden. 92 00:04:38,380 --> 00:04:41,110 Det er bare at du, på engelsk, eller uansett talespråk er, så bruk 93 00:04:41,110 --> 00:04:44,930 en slags overfladisk notasjon å formidle en idé veldig konsist. 94 00:04:44,930 --> 00:04:47,930 Men vi får se det, sikkert med en Norsk pseudokode, og det viser seg 95 00:04:47,930 --> 00:04:51,700 de fleste programmeringsspråk selv er avledet av engelsk i seg selv, 96 00:04:51,700 --> 00:04:55,750 vi vil finne at det er noen standard måter å representere pseudokode og 97 00:04:55,750 --> 00:04:57,150 også programmeringskode. 98 00:04:57,150 --> 00:05:00,200 Så når du begynner å se selv de enkleste eksempler i dag, innser disse 99 00:05:00,200 --> 00:05:02,160 samme mønstrene vil gjenta seg neste uke. 100 00:05:02,160 --> 00:05:04,710 >> Så pseudokode var en slags av språk som likner 101 00:05:04,710 --> 00:05:06,170 et programmeringsspråk. 102 00:05:06,170 --> 00:05:09,260 Og det første eksempelet vi så visuelt skrevet ned var denne. 103 00:05:09,260 --> 00:05:12,870 Det var bare en tre trinns program, den målet var å telle antallet 104 00:05:12,870 --> 00:05:15,650 av mennesker i en hybel for at video på onsdag. 105 00:05:15,650 --> 00:05:19,040 Men det var noen interessante aspekter av denne enkleste programmet. 106 00:05:19,040 --> 00:05:20,320 >> Og dette vil være tilbakevendende tema. 107 00:05:20,320 --> 00:05:22,930 Så for de som er ukjent med dette, en, innførte vi en variabel. 108 00:05:22,930 --> 00:05:25,650 Og sannsynligvis alle i dette rommet er kjent med en variabel i 109 00:05:25,650 --> 00:05:27,250 sammenheng med algebra. 110 00:05:27,250 --> 00:05:31,190 Men her i programmering, variabler er, en, kan bli 111 00:05:31,190 --> 00:05:32,220 heter noe vi ønsker. 112 00:05:32,220 --> 00:05:33,620 Vi har brukt n som en teller. 113 00:05:33,620 --> 00:05:37,490 Men vi kunne bruke ordet teller, eller, som du ser, de fleste enhver setning som 114 00:05:37,490 --> 00:05:40,240 du kanskje har lyst så lenge det er beskrivende, men det er egentlig bare en 115 00:05:40,240 --> 00:05:41,250 beholderen. 116 00:05:41,250 --> 00:05:44,170 Det er en del av minne, et antall biter, og det varierer fra datamaskinen, hvordan 117 00:05:44,170 --> 00:05:47,020 mange biter det er at komponere den variabelen. 118 00:05:47,020 --> 00:05:48,450 >> Men vi kan sette verdier i det. 119 00:05:48,450 --> 00:05:50,740 Så langt har vi bare sette tall. 120 00:05:50,740 --> 00:05:52,290 Men vi kan sette faktiske ord. 121 00:05:52,290 --> 00:05:53,420 Vi kan sette avsnitt. 122 00:05:53,420 --> 00:05:54,560 Vi kan sette bilder - 123 00:05:54,560 --> 00:05:57,860 noe, egentlig, kan vi representere med nuller og enere, kan vi sette i 124 00:05:57,860 --> 00:05:59,820 dette høyere nivået forestillingen av en variabel. 125 00:05:59,820 --> 00:06:01,350 >> Så ganske rett frem der. 126 00:06:01,350 --> 00:06:02,210 Og det er én. 127 00:06:02,210 --> 00:06:05,340 Men vi svært raskt flyttet fra linjen en å faktisk gjøre 128 00:06:05,340 --> 00:06:06,600 noe som variabelen. 129 00:06:06,600 --> 00:06:10,330 Og i linje tre, oppdaterte vi N. Vi økes N. Og vi kunne skrive denne 130 00:06:10,330 --> 00:06:11,330 en rekke måter. 131 00:06:11,330 --> 00:06:14,460 Men kanskje det mest åpenbare er bare for å si, sett N lik 132 00:06:14,460 --> 00:06:16,440 hva N er pluss en. 133 00:06:16,440 --> 00:06:17,740 Så det var vår tilvekst. 134 00:06:17,740 --> 00:06:18,740 >> Samtidig var det en løkke. 135 00:06:18,740 --> 00:06:20,720 Og dette også, er trolig ganske intuitivt. 136 00:06:20,720 --> 00:06:24,250 En løkke er bare noe i et program det skjer igjen og igjen, noen 137 00:06:24,250 --> 00:06:25,190 slags syklus. 138 00:06:25,190 --> 00:06:29,300 Og denne nøkkelen setning her, for hver, faktisk svært vanlig i det meste 139 00:06:29,300 --> 00:06:32,300 programmeringsspråk, inkludert de vi får se på kurset. 140 00:06:32,300 --> 00:06:35,850 Hver gang du ser ordet for, det typisk formidler ideen om at en 141 00:06:35,850 --> 00:06:38,410 loop, noe syklisk, er i ferd med å skje. 142 00:06:38,410 --> 00:06:40,980 >> Men det er verdt å merke seg en andre syntaktisk detalj. 143 00:06:40,980 --> 00:06:44,660 Det faktum at det tredje linje er faktisk innrykket av å ha truffet 144 00:06:44,660 --> 00:06:46,920 space bar noen ganger er bevisst. 145 00:06:46,920 --> 00:06:49,870 Fordi menneskelig konvensjonen er slik at, når du gjør noe nytt og 146 00:06:49,870 --> 00:06:54,860 igjen, i en sløyfe, som har begynt på linje to, du rykke noe som tilhørte 147 00:06:54,860 --> 00:06:58,880 til at løkken bare for å gjøre det klart at det er tre linjer, og ikke, for eksempel, 148 00:06:58,880 --> 00:07:01,910 linje fire eller fem, hvis det var linjer for eller fem, som er 149 00:07:01,910 --> 00:07:03,010 En del av det looper. 150 00:07:03,010 --> 00:07:07,340 Så dette enkle innrykk formidler at grunnleggende ideen. 151 00:07:07,340 --> 00:07:09,390 >> Så vi søkte denne algoritmen, nå, til et par eksempler. 152 00:07:09,390 --> 00:07:12,620 Og også dette enkle eksemplet i den virkelige verden. 153 00:07:12,620 --> 00:07:15,440 Men det kommer til å være representative for hvordan du vil gå om testing 154 00:07:15,440 --> 00:07:17,500 eier stadig mer komplekse programmer. 155 00:07:17,500 --> 00:07:21,050 Du prøver noen scenarier, noen representanter innganger, og se om du 156 00:07:21,050 --> 00:07:22,180 få de ønskede utganger. 157 00:07:22,180 --> 00:07:25,090 >> Så dette eksempelet hadde to personer sitter i hybel. 158 00:07:25,090 --> 00:07:27,170 På venstre er det samme pseudo-kode. 159 00:07:27,170 --> 00:07:30,800 Og dette er et skjermbilde av de aller Siste trinn i anvendelsen av denne 160 00:07:30,800 --> 00:07:35,270 Algoritmen til disse innganger, hvor det var to personer i rommet og, 161 00:07:35,270 --> 00:07:39,190 husker, som vi går gjennom linjene ett, og to og tre, og to 162 00:07:39,190 --> 00:07:41,000 og tre og gjort - 163 00:07:41,000 --> 00:07:44,870 innen utgangen av denne algoritmen, hadde vi faktisk telte to karer som er 164 00:07:44,870 --> 00:07:45,360 i rommet. 165 00:07:45,360 --> 00:07:47,190 >> Så da vi prøvde et annet eksempel. 166 00:07:47,190 --> 00:07:48,990 Og vi sa hva om det er null personer i rommet? 167 00:07:48,990 --> 00:07:50,490 Er denne koden fortsatt er riktig? 168 00:07:50,490 --> 00:07:51,305 Og det var faktisk. 169 00:07:51,305 --> 00:07:55,240 Det bare skjer, slik at linje to og, således, linje eller tre 170 00:07:55,240 --> 00:07:56,620 ikke kommer til å utføre. 171 00:07:56,620 --> 00:07:59,790 De kommer ikke til å skje i det hele tatt fordi de er bare ikke til anvendelse dersom 172 00:07:59,790 --> 00:08:01,210 det er null personer i rommet. 173 00:08:01,210 --> 00:08:02,300 >> Men ikke en stor avtale. 174 00:08:02,300 --> 00:08:06,620 Linje en initialisert N til null, så selv om bare én linje av denne 175 00:08:06,620 --> 00:08:10,930 Programmet avsluttes faktisk opp med å bli nyttig, det gir fortsatt det riktige svaret, som 176 00:08:10,930 --> 00:08:13,780 Knappene er orange null ved bunnen. 177 00:08:13,780 --> 00:08:16,300 Men da vi besluttet at det var slag av en dum algoritme. 178 00:08:16,300 --> 00:08:17,060 Det var ganske treg. 179 00:08:17,060 --> 00:08:19,720 Sannelig, det kan jeg gjøre to, fire, seks, åtte, ti, når 180 00:08:19,720 --> 00:08:20,990 telle mennesker i et rom. 181 00:08:20,990 --> 00:08:25,030 >> Så vi forskjøvet algoritmen, den pseudokode, å si, nå på linje to, 182 00:08:25,030 --> 00:08:29,710 for hvert par av mennesker i rommet, fortsett til, på linje tre, tilvekst 183 00:08:29,710 --> 00:08:32,200 i av to på hver iterasjon. 184 00:08:32,200 --> 00:08:35,530 Så det ville ha jobbet her i denne par personer i rommet. 185 00:08:35,530 --> 00:08:38,530 >> Men så, hvis du begynner å tenke på dette, og det tar ikke lang tid å 186 00:08:38,530 --> 00:08:40,710 realisere, vent litt dette er kommer til å bryte, bryter det 187 00:08:40,710 --> 00:08:42,679 på hva enkel sak? 188 00:08:42,679 --> 00:08:45,500 Hvis det er tre personer i rommet, eller, mer generelt, når det er en 189 00:08:45,500 --> 00:08:47,660 odde antall personer i rom, inkludert en. 190 00:08:47,660 --> 00:08:50,390 Vi ville savne den personen her fordi det ikke er noen slike par. 191 00:08:50,390 --> 00:08:58,510 Så vi raskt løses ved stedet introdusere det ekstra 192 00:08:58,510 --> 00:09:02,560 programmering konstruerer til pseudo-kode. 193 00:09:02,560 --> 00:09:04,955 >> Så en tilstand, kalte vi det, eller en gren. 194 00:09:04,955 --> 00:09:08,420 Og det er ment å formidle, Visuelt, ide av gren, en gaffel i veien 195 00:09:08,420 --> 00:09:11,080 Her kan du enten gjøre dette eller, kanskje, noe annet. 196 00:09:11,080 --> 00:09:15,750 Og ja, tar vi dette problemet ved legge linje 4, ved å si, egentlig, på 197 00:09:15,750 --> 00:09:20,820 Helt til slutt, hvis en person gjenstår, så gå videre og telle dem spesielle. 198 00:09:20,820 --> 00:09:24,460 Så du liksom spesielt tilfelle dem, så å snakke, slik at vi nå kan håndtere 199 00:09:24,460 --> 00:09:27,810 både et likt antall mennesker og et odde antall mennesker. 200 00:09:27,810 --> 00:09:30,260 >> Nå er det en rekke måter vi kunne ha uttrykt dette. 201 00:09:30,260 --> 00:09:33,590 Og ærlig talt, jeg kunne har vært enda mer nit kresen når det kom til mitt valg av 202 00:09:33,590 --> 00:09:35,040 Engelsk for pseudokode. 203 00:09:35,040 --> 00:09:36,970 Men minst ånd ideen formidles. 204 00:09:36,970 --> 00:09:40,725 Hvis du levert denne koden til en venn som ikke er i CS, eller har aldri tatt 205 00:09:40,725 --> 00:09:44,560 CS, oddsen er at de kunne finne ut, gitt tre personer i rommet, hvordan 206 00:09:44,560 --> 00:09:46,870 telle dem basert på disse instruksjonene. 207 00:09:46,870 --> 00:09:49,920 Og det er alt egentlig vi ønsker å oppnå med pseudokode, liksom 208 00:09:49,920 --> 00:09:54,300 standardisere hvordan vi skal om som representerer ideer, slik at vi kan 209 00:09:54,300 --> 00:09:56,670 begynne å gjøre mer komplisert ting fortsatt. 210 00:09:56,670 --> 00:09:58,845 >> Så det fører oss da, i dag, til selve koden. 211 00:09:58,845 --> 00:10:01,950 Vi begynner å programmere i dag, om enn i et vennlig miljø. 212 00:10:01,950 --> 00:10:05,940 Og da vi overgangen svært raskt å en mer uforståelige syntaks, men en som 213 00:10:05,940 --> 00:10:10,340 du vil se er fundamentalt den samme som ideene vil se manifestert med 214 00:10:10,340 --> 00:10:11,990 denne andre språk i dag. 215 00:10:11,990 --> 00:10:13,920 Det er bare kommer til å se litt annerledes. 216 00:10:13,920 --> 00:10:16,590 >> Så heller enn å bare ringe denne koden, jeg kommer til å være litt mer presis 217 00:10:16,590 --> 00:10:20,170 og si fra nå, når du skriver en programmet, du skriver kildekoden. 218 00:10:20,170 --> 00:10:21,990 Det er typen som pseudokode. 219 00:10:21,990 --> 00:10:26,540 Men vi vil se det er ikke slags løs når det gjelder å velge de ordene 220 00:10:26,540 --> 00:10:27,310 som du bruker. 221 00:10:27,310 --> 00:10:31,300 Når programmering i et språk, må du å bruke ordene, fraser, 222 00:10:31,300 --> 00:10:36,020 syntaksen, at andre mennesker har bestemt representere 223 00:10:36,020 --> 00:10:37,240 det aktuelle språket. 224 00:10:37,240 --> 00:10:38,510 Så pseudocodes er opp til deg. 225 00:10:38,510 --> 00:10:42,330 En faktisk programmeringsspråk som C, som vi vil til slutt se, er 226 00:10:42,330 --> 00:10:43,590 standardisert av andre mennesker. 227 00:10:43,590 --> 00:10:45,590 >> Så hvordan går vi om å skrive noen kildekoden? 228 00:10:45,590 --> 00:10:46,810 Vel jeg kommer til å gå videre og gjøre dette. 229 00:10:46,810 --> 00:10:49,100 Jeg kommer til å gå videre og åpne opp et vindu her. 230 00:10:49,100 --> 00:10:50,210 Mer om dette i neste uke. 231 00:10:50,210 --> 00:10:52,300 Men dette er en enhet som kalles den CS50 apparatet. 232 00:10:52,300 --> 00:10:55,480 Jeg kjører et stykke programvare på min Mac, men du kan gjøre det samme 233 00:10:55,480 --> 00:11:00,580 på en Windows-maskin, er at det å gi meg illusjonen kjører en annen 234 00:11:00,580 --> 00:11:03,700 operativsystemet helt rett her i et vindu på min Mac. 235 00:11:03,700 --> 00:11:06,790 Jeg har bare full vist det slik at du ikke faktisk se Mac OS akkurat nå. 236 00:11:06,790 --> 00:11:08,340 >> Dette er et operativsystem kalt Linux. 237 00:11:08,340 --> 00:11:09,300 Det er veldig populært. 238 00:11:09,300 --> 00:11:10,120 Det er veldig fort. 239 00:11:10,120 --> 00:11:12,950 Det er veldig fri, noe som har gjort det svært overbevisende, spesielt i 240 00:11:12,950 --> 00:11:13,970 kommersielle verden. 241 00:11:13,970 --> 00:11:17,200 Og mer om det mot slutten av semester når vi bruker Linux ganske mye 242 00:11:17,200 --> 00:11:21,230 for web programmering og hosting av faktiske nettsteder og prosjekter. 243 00:11:21,230 --> 00:11:24,910 Så nå, bare vet at dette er en stasjonær som er ment å se vagt 244 00:11:24,910 --> 00:11:26,750 kjent for Windows og Mac OS. 245 00:11:26,750 --> 00:11:29,110 Den har bare noen forskjellige navn og ikoner for ting. 246 00:11:29,110 --> 00:11:32,510 Men dette er den såkalte CS50 apparat, en virtuell maskin som, 247 00:11:32,510 --> 00:11:35,310 starter neste uke, vil dere kjøre innsiden av et vindu på 248 00:11:35,310 --> 00:11:36,960 din egen Mac eller PC. 249 00:11:36,960 --> 00:11:39,760 >> For i dag, jeg kommer til å åpne opp den enkleste av programmer. 250 00:11:39,760 --> 00:11:41,110 Det kalles gedit. 251 00:11:41,110 --> 00:11:42,565 Og dette er bare en grafisk editor. 252 00:11:42,565 --> 00:11:44,695 Det er typen som Microsoft Word, men enklere. 253 00:11:44,695 --> 00:11:47,110 Det er typen som tekst edit eller notepad. 254 00:11:47,110 --> 00:11:50,280 Det er bare et veldig enkelt program med som å skrive ord på skjermen. 255 00:11:50,280 --> 00:11:54,510 Det bare så hva skjer at hvis jeg sparer filer som jeg lager når dette programmet 256 00:11:54,510 --> 00:11:59,860 i en spesiell forlengelse som. c, i stedet av. doc, eller. xls, eller hva 257 00:11:59,860 --> 00:12:04,190 du er kjent med, kan jeg faktisk lage programmer som bruker selv denne enkle 258 00:12:04,190 --> 00:12:05,130 teksteditor. 259 00:12:05,130 --> 00:12:05,770 >> Så la meg gjøre det. 260 00:12:05,770 --> 00:12:09,330 La meg gå videre og lagre denne fil først som hello.c. 261 00:12:09,330 --> 00:12:12,350 Og igjen, dette brukergrensesnittet vil bli kjent med deg raskt. 262 00:12:12,350 --> 00:12:14,160 Men for nå er jeg bare å skrive i et filnavn. 263 00:12:14,160 --> 00:12:17,410 Jeg kommer til å spare det inn i min John Harvard hjemmeområde. 264 00:12:17,410 --> 00:12:20,810 Og nå har jeg denne kategorien som indikerer Jeg er faktisk redigering 265 00:12:20,810 --> 00:12:23,070 en fil som heter hello.c. 266 00:12:23,070 --> 00:12:24,510 Så ingenting så interessant ennå. 267 00:12:24,510 --> 00:12:26,000 >> Og nå kommer det til å bli ganske kryptisk. 268 00:12:26,000 --> 00:12:28,370 Jeg kommer til å zoome inn, bare så det er mer synlig. 269 00:12:28,370 --> 00:12:35,780 Og jeg kommer til å begynne å skrive omfatte stdio.h, int main, ugyldig, åpen krøllete 270 00:12:35,780 --> 00:12:40,140 spenne, en, to, tre, fire plasser av innrykk, print f, for print 271 00:12:40,140 --> 00:12:44,450 noe formatert, sitat unquote, "Hello, World" backslash, n, nær 272 00:12:44,450 --> 00:12:49,640 sitat, lukket parentes, semikolon skriv backspace, backspace, backspace, 273 00:12:49,640 --> 00:12:52,310 backspace, lukket klammeparentes - 274 00:12:52,310 --> 00:12:53,350 Jeg har programmert. 275 00:12:53,350 --> 00:12:57,380 >> Greit, så dette er en super enkel program, egentlig, programmet som 276 00:12:57,380 --> 00:12:59,070 noen starter programmering med. 277 00:12:59,070 --> 00:13:02,300 Og alt den gjør, for all sin kompleksitet, er skrive ut på 278 00:13:02,300 --> 00:13:04,160 skjermen, gjett hva? 279 00:13:04,160 --> 00:13:04,910 Hei verden. 280 00:13:04,910 --> 00:13:07,500 Men det er ikke nok bare å skrive et program. 281 00:13:07,500 --> 00:13:08,155 Så dette er koden. 282 00:13:08,155 --> 00:13:11,300 Dette er kildekoden i et språk som heter c. 283 00:13:11,300 --> 00:13:14,380 Den er lagret for tiden i en fil som heter hello.c. 284 00:13:14,380 --> 00:13:16,180 >> Nå ser på bunnen av skjermen her. 285 00:13:16,180 --> 00:13:17,890 Mer om dette, igjen, i ukene som kommer. 286 00:13:17,890 --> 00:13:19,570 Men dette er hva vi kaller en terminal vindu. 287 00:13:19,570 --> 00:13:21,290 Det er en blinkende, svart og hvit prompt. 288 00:13:21,290 --> 00:13:24,390 Det er liksom en gammel skole grensesnitt til en datamaskin som vanligvis ikke 289 00:13:24,390 --> 00:13:27,050 bruke en mus eller andre grafiske elementer. 290 00:13:27,050 --> 00:13:28,320 Den bruker bare tastaturet. 291 00:13:28,320 --> 00:13:30,970 Og jeg kan skrive kommandoer på Dette blinker hurtig. 292 00:13:30,970 --> 00:13:33,820 >> Og for dagens formål, jeg er bare kommer til å skrive følgende - 293 00:13:33,820 --> 00:13:35,610 gjøre hallo. 294 00:13:35,610 --> 00:13:39,370 Og det programmet, gjør, er bare en program som, i den virkelige verden disse 295 00:13:39,370 --> 00:13:40,690 dager, ville vi dobbeltklikker på. 296 00:13:40,690 --> 00:13:44,580 Men i dette grensesnittet for i dag, er vi kommer til å skrive sitt navn på dette spørsmålet. 297 00:13:44,580 --> 00:13:47,980 gjøre hallo er bokstavelig talt skal gjør meg et program som heter hei. 298 00:13:47,980 --> 00:13:51,360 Og det kommer til å gjøre det ved å se for en fil, bare ved 299 00:13:51,360 --> 00:13:53,460 standard, kalt hello.c. 300 00:13:53,460 --> 00:13:57,260 Det kommer til å anta jeg vil ha en C-program etter arten av hvordan denne maskinen 301 00:13:57,260 --> 00:13:58,230 er konfigurert. 302 00:13:58,230 --> 00:13:59,550 >> Så jeg gå videre og trykk enter. 303 00:13:59,550 --> 00:14:02,050 Jeg ser noen kryptiske utgang, men dette vil bli altfor 304 00:14:02,050 --> 00:14:03,330 kjent før lenge. 305 00:14:03,330 --> 00:14:06,870 Dette skjedde til å kjøre en kompilator, mer om det i et øyeblikk, kalt Clang. 306 00:14:06,870 --> 00:14:09,080 Men nå har jeg fått bare en annen blinkende be. 307 00:14:09,080 --> 00:14:13,060 Og jeg kan gå videre nå og skriver dot slash, for uinteressante grunner vi vil 308 00:14:13,060 --> 00:14:14,730 komme tilbake til neste uke - 309 00:14:14,730 --> 00:14:15,910 hallo. 310 00:14:15,910 --> 00:14:19,650 >> Så alt av dette forsøk hittil bare for å skrive de enkleste programmene som, 311 00:14:19,650 --> 00:14:22,640 så snart jeg trykker på Enter, gjør det. 312 00:14:22,640 --> 00:14:24,510 Så jeg har skrevet min første program. 313 00:14:24,510 --> 00:14:27,500 Så jeg bevisst poking moro på dette veldig enkelt program 314 00:14:27,500 --> 00:14:28,540 for et par grunner. 315 00:14:28,540 --> 00:14:31,990 One, er det vanskelig å bli begeistret om å ta en klasse dersom 316 00:14:31,990 --> 00:14:33,430 Dette er slutten spillet. 317 00:14:33,430 --> 00:14:37,100 >> Men mer enn det, det er en masse distraksjoner her oppe. 318 00:14:37,100 --> 00:14:40,640 Den første gangen du lærer å programmere, for de av dere mindre komfortable, og 319 00:14:40,640 --> 00:14:43,410 selv jeg, tilbake i dag, når jeg først så noe som dette - du kan slags 320 00:14:43,410 --> 00:14:46,500 av figuren at, greit, dette er i en print hello world. 321 00:14:46,500 --> 00:14:47,860 Men det er så mye distraksjon. 322 00:14:47,860 --> 00:14:52,110 Det er så mye syntaks på skjermen at det blir i veien for meget 323 00:14:52,110 --> 00:14:54,170 enkle, ellers enkel, ideer. 324 00:14:54,170 --> 00:14:56,700 >> Så hva vi skal gjøre i dag er at vi er kommer til å sette til side C og komme 325 00:14:56,700 --> 00:14:57,630 tilbake til det på mandag. 326 00:14:57,630 --> 00:15:00,860 Og vi kommer til å bruke en grafisk programmeringsspråk som heter Scratch. 327 00:15:00,860 --> 00:15:04,470 Dette er et programmeringsspråk, som jeg hentydet til onsdag, som kommer 328 00:15:04,470 --> 00:15:08,870 å tillate oss å gjøre det samme type ting men snu det blinde øyet til, for i dag, 329 00:15:08,870 --> 00:15:12,270 til de klammeparentes, parentes, de semikolon, og alle disse dumme 330 00:15:12,270 --> 00:15:15,680 distraksjoner som kommer i veien, i denne første dagen, for noen grunnleggende, ganske 331 00:15:15,680 --> 00:15:17,230 interessante ideer. 332 00:15:17,230 --> 00:15:21,350 >> Så mot dette målet, jeg kommer til å gå tilbake til skrivebordet mitt over her og 333 00:15:21,350 --> 00:15:25,890 introdusere deg til alternativ til det programmet, som kommer til å se en 334 00:15:25,890 --> 00:15:30,790 litt noe lys dette. 335 00:15:30,790 --> 00:15:33,930 Det er hvordan vi skal gjennomføre det samme programmet i dag - to puslespill 336 00:15:33,930 --> 00:15:37,710 stykker som, når den låste og klikket på, vil si til verden, 337 00:15:37,710 --> 00:15:39,000 hello world. 338 00:15:39,000 --> 00:15:41,200 >> Så la oss faktisk gå dit. 339 00:15:41,200 --> 00:15:44,965 Så jeg kommer til å gå foran og åpne en nettside kalt scratch.mit.edu. 340 00:15:44,965 --> 00:15:47,980 341 00:15:47,980 --> 00:15:52,040 Og dette vil føre meg til denne nettsiden her. 342 00:15:52,040 --> 00:15:54,660 På forhånd har jeg logget inn i dette hjemmeside og de første problemene som 343 00:15:54,660 --> 00:15:55,910 vil lede deg gjennom noen av disse trinnene. 344 00:15:55,910 --> 00:15:58,930 Jeg kommer til å gå videre og klikk på min scratch mappe her. 345 00:15:58,930 --> 00:16:00,720 >> Og dette kommer til å vise meg noen prosjekter som jeg har 346 00:16:00,720 --> 00:16:02,570 faktisk laget på forhånd. 347 00:16:02,570 --> 00:16:05,860 Og det viser seg at dette grafisk programmeringsspråk ikke bare kommer 348 00:16:05,860 --> 00:16:08,480 å la oss program ved å dra og slippe disse brikkene, du 349 00:16:08,480 --> 00:16:09,730 ikke engang trenger spesiell programvare. 350 00:16:09,730 --> 00:16:13,190 Det er alle integrert i en nettleser så at du kan gjøre dette, i teorien, på 351 00:16:13,190 --> 00:16:16,810 datamaskinene akkurat nå, som noen av dere kan godt være, uten engang å måtte 352 00:16:16,810 --> 00:16:19,870 programvare som CS50 apparatet, som vil komme neste uke. 353 00:16:19,870 --> 00:16:24,200 >> Så jeg kommer til å gå opp mot krysset her og klikk på Opprett. 354 00:16:24,200 --> 00:16:27,840 Og i et øyeblikk jeg kommer til å få en blank skjermen via der jeg kan begynne 355 00:16:27,840 --> 00:16:30,380 programmering i denne grafiske programmering miljø. 356 00:16:30,380 --> 00:16:36,140 Men denne gangen kommer det til å være mye, mye enklere å faktisk gjøre det. 357 00:16:36,140 --> 00:16:41,560 Så i løpet av et øyeblikk, når Wi-Fi samarbeider, har vi nå denne skjermen. 358 00:16:41,560 --> 00:16:44,870 Så en rask verbal tur, men jeg tør si, sikkert når du dykke inn i 359 00:16:44,870 --> 00:16:46,840 første problemet sett, vil du finner alt dette veldig 360 00:16:46,840 --> 00:16:48,315 tilgjengelig og ganske intuitivt. 361 00:16:48,315 --> 00:16:50,900 Men la oss male et mentalt bilde for bare et øyeblikk. 362 00:16:50,900 --> 00:16:54,620 >> Så under denne meldingen sier redning endringer, er det om å se bunnen av. 363 00:16:54,620 --> 00:16:55,570 Dette er en sprite. 364 00:16:55,570 --> 00:16:56,630 Det er et tegn. 365 00:16:56,630 --> 00:17:00,740 Og han bor på det vi vil kalle en scene, denne store hvite rektangelet på 366 00:17:00,740 --> 00:17:03,120 som han kan flytte opp, ned, til venstre, riktig og gjøre, egentlig, 367 00:17:03,120 --> 00:17:04,670 andre typer handlinger. 368 00:17:04,670 --> 00:17:08,780 >> I mellomtiden, i midten av denne brukeren grensesnitt, har vi en hel haug med 369 00:17:08,780 --> 00:17:09,750 puslebiter. 370 00:17:09,750 --> 00:17:14,060 Og du vil se at de sier ting som flytte 10 trinn, viste 15 grader, 371 00:17:14,060 --> 00:17:15,550 punkt i en bestemt retning. 372 00:17:15,550 --> 00:17:17,910 Men det er kategorier av blokker opp her også. 373 00:17:17,910 --> 00:17:21,410 Så hvis jeg går til utseende, vil du se at det er andre brikkene som 374 00:17:21,410 --> 00:17:25,530 tilsynelatende vil fortelle dette cit til si hei, å tenke, å vise 375 00:17:25,530 --> 00:17:26,780 seg, skjule seg. 376 00:17:26,780 --> 00:17:30,830 Hvis jeg går ned til Lyder, viser det seg det er måter å spille høres ut som mjaue, 377 00:17:30,830 --> 00:17:32,670 for å stoppe alle lyder, for å spille en tromme. 378 00:17:32,670 --> 00:17:36,530 >> Så, lang historie kort, det er en hel haug med puslespillbiter som lar deg 379 00:17:36,530 --> 00:17:40,920 å fortelle denne katten, eller en rekke andre tegn, hva du skal gjøre. 380 00:17:40,920 --> 00:17:43,850 Men for å gjøre alt dette skje deg trenger for å starte programmering. 381 00:17:43,850 --> 00:17:48,090 Og denne store hvite boksen, eller grå boks, på høyre side, dette er hvor 382 00:17:48,090 --> 00:17:50,170 Jeg skal faktisk dra og slippe disse brikkene. 383 00:17:50,170 --> 00:17:54,320 Det er min blank tekst vindu tilsvarende. 384 00:17:54,320 --> 00:17:57,070 >> Så jeg kommer til å gå videre og klikk Kontroll i midten. 385 00:17:57,070 --> 00:17:58,540 Eller rettere sagt, la meg starte opp under Events. 386 00:17:58,540 --> 00:18:01,530 Under Hendelser benk, vil du merke en få ting som er bevisst 387 00:18:01,530 --> 00:18:05,240 i bue på toppen på en slik måte at de sannsynligvis ikke sperre på 388 00:18:05,240 --> 00:18:06,710 toppen av brikkene. 389 00:18:06,710 --> 00:18:10,160 Og det er fordi de Demark starten av et program, starten på en 390 00:18:10,160 --> 00:18:11,910 script, så å si. 391 00:18:11,910 --> 00:18:16,290 Så hvis jeg går videre og dra, når grønn flagg klikket over her, og da jeg 392 00:18:16,290 --> 00:18:18,060 vil denne katten å si noe først. 393 00:18:18,060 --> 00:18:20,510 Så jeg kommer til å gå under det ser panel. 394 00:18:20,510 --> 00:18:24,060 Og jeg kommer til å gå videre og ta tak i si hei blokk, og dra og slipp, 395 00:18:24,060 --> 00:18:27,220 og la gå slik at den automatisk interlocks der. 396 00:18:27,220 --> 00:18:28,640 >> Og så merker jeg kan klikk på teksten. 397 00:18:28,640 --> 00:18:31,960 Og jeg kan overstyre det å være mer spesifikke liker, si, hallo verden. 398 00:18:31,960 --> 00:18:36,340 Og nå har vi programmet som jeg hevder er ekvivalent til den mye mer 399 00:18:36,340 --> 00:18:39,670 uforståelige program jeg implementert i C for et øyeblikk siden. 400 00:18:39,670 --> 00:18:43,130 >> Hvis jeg går over nå til venstre side, merker det er en stor stoppskilt 401 00:18:43,130 --> 00:18:44,520 og et stort grønt flagg. 402 00:18:44,520 --> 00:18:46,390 La meg zoome inn for klarhet. 403 00:18:46,390 --> 00:18:49,390 Og når jeg nå klikker på denne grønne flagget, du kan sikkert gjette hva dette først 404 00:18:49,390 --> 00:18:51,920 Programmet er nå kommer til å gjøre. 405 00:18:51,920 --> 00:18:55,420 Så der også, vi programmerer, men vi faktisk ikke å bli sugd ned 406 00:18:55,420 --> 00:18:58,980 i noen av disse syntaktiske, minutt detaljer. 407 00:18:58,980 --> 00:19:01,120 >> Men la oss prøve noe litt mer interessant. 408 00:19:01,120 --> 00:19:04,840 La meg gå inn i min Scratch mappe her. 409 00:19:04,840 --> 00:19:10,210 Og faktisk, la meg så la meg åpne opp et eget program her for bare en 410 00:19:10,210 --> 00:19:17,830 øyeblikk, Maksimer dette vinduet File Open, og jeg kommer til å gå inn i dagens 411 00:19:17,830 --> 00:19:18,620 kilde-katalog. 412 00:19:18,620 --> 00:19:21,660 Som alltid, finner du, i dag og videre, at alle dagens eksempler 413 00:19:21,660 --> 00:19:25,225 er tilgjengelige innsiden av kursets hjemmeside. 414 00:19:25,225 --> 00:19:31,170 >> Og jeg kommer til å gå videre her og plukke opp litt noe annet. 415 00:19:31,170 --> 00:19:33,970 Denne her, for hvilken Jeg trenger en frivillig. 416 00:19:33,970 --> 00:19:36,850 Hvem ønsker en bordlampe i dag? 417 00:19:36,850 --> 00:19:40,600 OK, hva med noen litt - er du på slutten? 418 00:19:40,600 --> 00:19:42,124 Kom ned. 419 00:19:42,124 --> 00:19:47,230 Nå ønsker du å delta, eller bare si starte med bordlampe? 420 00:19:47,230 --> 00:19:48,190 >> VANESSA: [uhørlig]. 421 00:19:48,190 --> 00:19:48,465 >> DAVID MALAN: OK. 422 00:19:48,465 --> 00:19:49,610 Utmerket, hva du heter? 423 00:19:49,610 --> 00:19:49,990 Vanessa? 424 00:19:49,990 --> 00:19:50,570 David. 425 00:19:50,570 --> 00:19:51,390 Hyggelig å treffe deg. 426 00:19:51,390 --> 00:19:53,840 Så kom igjen opp og Vanessas kommer å ta kontroll over min 427 00:19:53,840 --> 00:19:55,490 tastaturet for bare et øyeblikk. 428 00:19:55,490 --> 00:19:57,850 Og hva jeg har gjort her, bare for tids skyld, som jeg har innsett 429 00:19:57,850 --> 00:20:01,070 Wi-Fi var litt treg, Scratch, den programmering miljø som vi er 430 00:20:01,070 --> 00:20:04,110 bruker, kan også lastes ned og kjøre på din lokale maskin. 431 00:20:04,110 --> 00:20:06,360 Så det jeg gjorde i forkant av foredraget, i tilfelle det skjer, er jeg lastet ned 432 00:20:06,360 --> 00:20:09,120 alle filene vi er i ferd med å spille med slik at de kan kjøres litt mer 433 00:20:09,120 --> 00:20:10,840 raskt rett her på min laptop. 434 00:20:10,840 --> 00:20:13,460 Så det er derfor nå jeg ser en Mac-spesifikke grensesnitt. 435 00:20:13,460 --> 00:20:15,510 >> Så jeg kommer til å gå videre og åpne opp denne. 436 00:20:15,510 --> 00:20:18,400 Jeg kommer til å gå videre nå og full skjerm vinduet. 437 00:20:18,400 --> 00:20:21,740 Og som du ser, kan vi meget raskt, som denne elev gjorde, en av 438 00:20:21,740 --> 00:20:26,360 dine forgjengere, gå fra hello world til en mye mer overbevisende 439 00:20:26,360 --> 00:20:27,020 programmet. 440 00:20:27,020 --> 00:20:28,180 Så her er instruksjonene. 441 00:20:28,180 --> 00:20:29,500 Oh, og vi har en annen ting. 442 00:20:29,500 --> 00:20:31,640 Jeg trodde det ville være morsomt, siden, normalt, vi skal filme 443 00:20:31,640 --> 00:20:32,440 kameraer på denne måten. 444 00:20:32,440 --> 00:20:34,100 Jeg trodde det ville være morsomt hvis, Vanessa, vi kunne se verden 445 00:20:34,100 --> 00:20:35,120 gjennom dine øyne. 446 00:20:35,120 --> 00:20:36,670 Så her har vi noen Google Glass. 447 00:20:36,670 --> 00:20:39,290 >> [Forbauset gisper] 448 00:20:39,290 --> 00:20:41,610 >> DAVID MALAN: Vi vil bare være å gi unna bordlamper i dag. 449 00:20:41,610 --> 00:20:43,530 >> [Latter] 450 00:20:43,530 --> 00:20:45,260 >> Så la meg cue opp dette. 451 00:20:45,260 --> 00:20:49,340 Greit, så berører dette. 452 00:20:49,340 --> 00:20:51,910 OK, Glass, spille inn en video. 453 00:20:51,910 --> 00:20:55,700 454 00:20:55,700 --> 00:20:56,950 Greit, Vanessa? 455 00:20:56,950 --> 00:21:00,940 456 00:21:00,940 --> 00:21:05,560 Nå, som en side som har fått noe å gjøre med Scratch, hvis du ser 457 00:21:05,560 --> 00:21:08,540 litt opp og til høyre, vil du se bokstavelig glass, og du bør 458 00:21:08,540 --> 00:21:09,650 se litt rektangulært vindu. 459 00:21:09,650 --> 00:21:11,500 Du skal se alle dine klassekamerater blir filmet akkurat nå? 460 00:21:11,500 --> 00:21:11,840 Ja. 461 00:21:11,840 --> 00:21:12,340 >> VANESSA: Ja. 462 00:21:12,340 --> 00:21:12,920 >> DAVID MALAN: OK. 463 00:21:12,920 --> 00:21:15,170 Så det er fint. 464 00:21:15,170 --> 00:21:16,660 Vi vil slippe dette opptaket senere. 465 00:21:16,660 --> 00:21:18,460 For nå, vend oppmerksomheten til skjermen her. 466 00:21:18,460 --> 00:21:20,990 Og hva din forgjenger har gjort er sette noen instruksjoner på skjermen 467 00:21:20,990 --> 00:21:22,670 bare ved hjelp av en maling program. 468 00:21:22,670 --> 00:21:25,040 Så du kommer til, i et øyeblikk, Trykk space for å begynne. 469 00:21:25,040 --> 00:21:27,790 Og så noen brikkene kommer å begynne å bevege seg oppover på skjermen. 470 00:21:27,790 --> 00:21:30,900 Og du ønsker å treffe piltastene, bare som i det virkelige DDR, i samsvar 471 00:21:30,900 --> 00:21:32,740 med ting kø med disse pilene. 472 00:21:32,740 --> 00:21:33,020 >> VANESSA: OK. 473 00:21:33,020 --> 00:21:33,800 >> DAVID MALAN: Du har spille dette før. 474 00:21:33,800 --> 00:21:34,140 >> VANESSA: Yeah. 475 00:21:34,140 --> 00:21:37,330 >> DAVID MALAN: All right, Vanessa, gå videre og ta det bort. 476 00:21:37,330 --> 00:22:53,082 >> [MUSIC - Kayne WEST, "sterkere"] 477 00:22:53,082 --> 00:22:57,080 >> [APPLAUSE] 478 00:22:57,080 --> 00:22:59,750 >> DAVID MALAN: Så la oss nå ta et skritt fra det. 479 00:22:59,750 --> 00:23:01,230 Så klart, det er sluttspillet. 480 00:23:01,230 --> 00:23:02,880 Slutten spillet er ikke hello world. 481 00:23:02,880 --> 00:23:05,520 Men du trenger ikke å nødvendigvis gjøre ting som er så interaktiv. 482 00:23:05,520 --> 00:23:06,810 Du kan også gjøre animasjon. 483 00:23:06,810 --> 00:23:10,790 Så for eksempel, en annen av din etterfølgere gjorde dette programmet her, 484 00:23:10,790 --> 00:23:14,100 som forteller en historie mer enn det gjennomført et spill. 485 00:23:14,100 --> 00:23:19,180 Så la meg gå videre og åpne opp her en program i vår samme kilde katalog 486 00:23:19,180 --> 00:23:20,300 fra i dag. 487 00:23:20,300 --> 00:23:26,990 Dette en samtale, og la oss starte med en cookie kjærlighetshistorie. 488 00:23:26,990 --> 00:23:30,750 >> Og ikke å gjøre dette for akademisk, men, som du ser denne, tror til 489 00:23:30,750 --> 00:23:34,030 selv hvilke av de enkle programmering konsepter vi har snakket 490 00:23:34,030 --> 00:23:34,630 om så langt - 491 00:23:34,630 --> 00:23:39,250 variabler, og løkker og betingelser, gjorde din forgjenger sannsynligvis bruke bare 492 00:23:39,250 --> 00:23:41,090 å gjennomføre noen av visualiseringer. 493 00:23:41,090 --> 00:23:41,760 Du ser her. 494 00:23:41,760 --> 00:23:44,118 Så jeg gir deg En cookie kjærlighetshistorie. 495 00:23:44,118 --> 00:24:06,030 >> [MUSIC - GREEN DAY, "FERIE"] 496 00:24:06,030 --> 00:24:08,022 >> [CRASH] 497 00:24:08,022 --> 00:24:09,272 >> [MUSIC - skilpadder, "Happy Together"] 498 00:24:09,272 --> 00:24:58,328 499 00:24:58,328 --> 00:25:00,560 >> DAVID MALAN: All right, så det, vi hadde en cookie kjærlighetshistorie. 500 00:25:00,560 --> 00:25:01,360 Men selv der - 501 00:25:01,360 --> 00:25:01,755 >> [APPLAUSE] 502 00:25:01,755 --> 00:25:08,110 >> DAVID MALAN: All right, selv der, tenke på, som de hjertene gikk fra 503 00:25:08,110 --> 00:25:10,410 bunnen til toppen av skjermen, det var faktisk litt av 504 00:25:10,410 --> 00:25:11,440 tilfeldigheten skjer. 505 00:25:11,440 --> 00:25:14,150 Og ja, vi får se at selv i enkleste av miljøer, som 506 00:25:14,150 --> 00:25:18,180 Scratch, som i C, kan du generere tilfeldige tall, eller illusjonen av 507 00:25:18,180 --> 00:25:21,110 tilfeldige tall, slik at spillet er en litt mer interessant enn det kanskje 508 00:25:21,110 --> 00:25:23,390 være hvis du hadde absolutt hardkodet alt. 509 00:25:23,390 --> 00:25:26,360 >> I bevegelsen som du ser, er det det er noen form for respons. 510 00:25:26,360 --> 00:25:28,840 Så snart pepperkaker mann berører pepperkaker kvinne, hun 511 00:25:28,840 --> 00:25:30,000 ser ut til å bevege seg bort. 512 00:25:30,000 --> 00:25:33,580 Og så, ja, du kan implementere i de fleste programmeringsspråk, har tanken 513 00:25:33,580 --> 00:25:38,680 av hendelser, der hvis en hånd berører den annen side, som kan utløse noen 514 00:25:38,680 --> 00:25:41,270 av kildekoden til faktisk utføre. 515 00:25:41,270 --> 00:25:43,740 Du kan lytte til en slik ting på skjermen. 516 00:25:43,740 --> 00:25:47,310 >> Så la oss ta en rask tur, da, noen av de byggesteinene vi kan bruke 517 00:25:47,310 --> 00:25:48,790 å oppnå noen av disse målene. 518 00:25:48,790 --> 00:25:51,630 Så her er hva vi vil heretter kalle en uttalelse. 519 00:25:51,630 --> 00:25:55,030 En uttalelse skjer for å være lilla i Scratch, litt noe sånt som dette, 520 00:25:55,030 --> 00:25:56,120 men det er vilkårlig. 521 00:25:56,120 --> 00:26:00,140 En uttalelse er bare et puslespill brikke eller, mer generelt, en instruksjon, som 522 00:26:00,140 --> 00:26:03,370 vil maskinen gjøre noe, en uttalelse. 523 00:26:03,370 --> 00:26:04,680 >> Så her er en enkel prøve. 524 00:26:04,680 --> 00:26:05,930 Si hei verden. 525 00:26:05,930 --> 00:26:08,180 En annen kan vente ett sekund. 526 00:26:08,180 --> 00:26:10,840 Så dette puslespill brikke, som støttes i Scratch, vil vi la 527 00:26:10,840 --> 00:26:13,050 tegn pause for noen antall sekunder. 528 00:26:13,050 --> 00:26:15,330 Også dette er bare en uttalelse. 529 00:26:15,330 --> 00:26:18,640 >> Her neste, har vi en annen mer interessant, spille lyd mjaue, og 530 00:26:18,640 --> 00:26:21,480 den lille pilen betyr at i Scratch, Dette er en rullegardinmeny. 531 00:26:21,480 --> 00:26:22,590 Slik at du kan importere lyder. 532 00:26:22,590 --> 00:26:25,095 Du kan ta opp lyder og gjøre andre morsomme ting i bunnen av. 533 00:26:25,095 --> 00:26:28,450 Og det også, men på slutten av dagen, er bare en uttalelse. 534 00:26:28,450 --> 00:26:31,250 Men nå skal vi innføre en mer interessant stykke, som er kjent som en 535 00:26:31,250 --> 00:26:32,630 Boolsk uttrykk. 536 00:26:32,630 --> 00:26:35,180 Capital B, oppkalt etter en kar ved navn Bool. 537 00:26:35,180 --> 00:26:39,500 >> Og en boolsk uttrykk er bare en puslespill brikke eller, mer generelt, en 538 00:26:39,500 --> 00:26:42,980 stykke informasjon som er enten sant eller usant - 539 00:26:42,980 --> 00:26:45,830 én eller null, ja eller nei. 540 00:26:45,830 --> 00:26:48,420 Så det er bare en av dem to motpoler. 541 00:26:48,420 --> 00:26:52,840 Så et slikt Boolsk uttrykk i verden av Scratch ser slik ut blå 542 00:26:52,840 --> 00:26:53,560 puslespill brikke. 543 00:26:53,560 --> 00:26:56,735 Og det stiller et spørsmål, mus ned, og som enten kan være, av 544 00:26:56,735 --> 00:26:58,430 Selvfølgelig, sant eller usant. 545 00:26:58,430 --> 00:27:01,710 Så med dette puslespillet brikke i Scratch, vel, vil du være i stand til å oppdage om en 546 00:27:01,710 --> 00:27:05,490 puslespillet om musen er, faktisk, å være holdes nede ved det menneskelige vekselvirkende 547 00:27:05,490 --> 00:27:06,550 med programmet. 548 00:27:06,550 --> 00:27:08,860 >> Denne er en litt mer abstrakt, men de to hvite bokser 549 00:27:08,860 --> 00:27:09,740 er bare for tall. 550 00:27:09,740 --> 00:27:12,950 Så du kan gjøre ting som dette rekke mindre enn den andre? 551 00:27:12,950 --> 00:27:16,180 Og hvis så, vil Scratch oppføre ene eller den andre. 552 00:27:16,180 --> 00:27:17,505 Denne er en litt mer grafisk. 553 00:27:17,505 --> 00:27:21,840 Det er hvis sprite, hvis katten, for eksempel, er faktisk å berøre 554 00:27:21,840 --> 00:27:22,510 musepekeren. 555 00:27:22,510 --> 00:27:25,780 Så hvis den lille pilen hode er hovering over katten, da dette 556 00:27:25,780 --> 00:27:28,030 puslespill brikke vil vurdere å true. 557 00:27:28,030 --> 00:27:31,870 Det vil være sant, i så fall, hvis du bruke denne boolsk uttrykk, som vi vil 558 00:27:31,870 --> 00:27:36,340 se i et øyeblikk, i en gren, kan du enten gjøre dette, eller du kan gjøre det, 559 00:27:36,340 --> 00:27:39,940 mye som vi hadde en tilstand som kontrolleres, er det enda en siste person 560 00:27:39,940 --> 00:27:40,460 i rommet? 561 00:27:40,460 --> 00:27:42,070 I så fall legge en. 562 00:27:42,070 --> 00:27:44,430 Ellers, ikke bekymre deg videre. 563 00:27:44,430 --> 00:27:48,650 >> Så en boolsk uttrykk kan også være and-ed sammen eller or-ed sammen. 564 00:27:48,650 --> 00:27:53,120 Så du kan kombinere boolske uttrykk og si dette, og dette må være sant for 565 00:27:53,120 --> 00:27:54,710 hele greia til å være sant. 566 00:27:54,710 --> 00:27:56,520 Og her er en mer reell verden eksempel. 567 00:27:56,520 --> 00:28:00,060 Hvis du har brukt CS50 kurs for å gjøre kurset shopping, disse boksene 568 00:28:00,060 --> 00:28:03,520 der, der hvis du sjekke at boksen ved siden av til kurs, vil det si, ja, 569 00:28:03,520 --> 00:28:07,860 bare vise meg emner som Q verdien er 4,5 eller høyere. 570 00:28:07,860 --> 00:28:10,610 Hvis du fjerner den, nei, ikke gjør det bekymre deg for det. 571 00:28:10,610 --> 00:28:13,910 Eller tilsvarende, på høyre side, virker ikke Konflikt med kurs jeg tar, 572 00:28:13,910 --> 00:28:15,650 det er enten sant eller usant. 573 00:28:15,650 --> 00:28:16,715 Det er bare et boolsk uttrykk. 574 00:28:16,715 --> 00:28:20,080 Så hele denne tiden når du har brukt nettsteder med boksene, du er bare 575 00:28:20,080 --> 00:28:23,570 veksling tilsvarer en boolsk uttrykk og på. 576 00:28:23,570 --> 00:28:25,270 >> Så i hvilken form bruker du disse? 577 00:28:25,270 --> 00:28:28,820 Vel, i Scratch, vil vi se på et øyeblikk at det er forhold som 578 00:28:28,820 --> 00:28:29,560 se slik ut. 579 00:28:29,560 --> 00:28:33,130 Og det er slags fornuftig fordi mye som i pseudokode, innrykket vi 580 00:28:33,130 --> 00:28:38,550 den slags U-formede biter i et puslespill, mener at noe på innsiden av at U er 581 00:28:38,550 --> 00:28:41,390 kommer til å utføre, eller ikke, avhengig av hvor den er. 582 00:28:41,390 --> 00:28:45,310 Så hvis boolsk uttrykk, deretter hva som er inni vil bli henrettet. 583 00:28:45,310 --> 00:28:46,800 >> Samtidig er det en hvis / annet blokk. 584 00:28:46,800 --> 00:28:50,320 Så hvis du ønsker en gren som går denne måten eller på den, gir Scratch oss det. 585 00:28:50,320 --> 00:28:54,500 Og ved denne logikken, nå, selv om det puslespill brikke er helt klart for lite 586 00:28:54,500 --> 00:28:57,400 å kile noe annet innsiden av den, scratch brikkene, de er 587 00:28:57,400 --> 00:28:58,150 bare kommer til å vokse. 588 00:28:58,150 --> 00:29:01,370 Når du drar og slipper over noe, det vil bare vokse til å passe uansett hva det 589 00:29:01,370 --> 00:29:02,510 er du prøver å gjøre. 590 00:29:02,510 --> 00:29:07,230 >> Så vi kan ta to av disse tingene og lage en treveis gaffel i veien så 591 00:29:07,230 --> 00:29:11,300 at du enten gjøre dette, eller det, eller denne annen ting bare ved å hekke dem 592 00:29:11,300 --> 00:29:12,070 på den måten. 593 00:29:12,070 --> 00:29:14,370 Selvfølgelig, hvis du gjøre det også mye, det begynner å bli stygt. 594 00:29:14,370 --> 00:29:17,660 Men på det punktet, er du faktisk sannsynligvis ikke programmering veldig godt. 595 00:29:17,660 --> 00:29:20,490 Og slik at det vil være periodisk tema også at av stil. 596 00:29:20,490 --> 00:29:22,790 Akkurat hvor godt egentlig formatere koden? 597 00:29:22,790 --> 00:29:24,580 Eller hvor godt kan du designe din kode? 598 00:29:24,580 --> 00:29:26,430 Men mer om det i fremtiden. 599 00:29:26,430 --> 00:29:27,470 >> Og nå har vi sløyfer. 600 00:29:27,470 --> 00:29:30,310 Det er en fin evig løkke i Scratch som betyr bokstavelig talt at - gjøre 601 00:29:30,310 --> 00:29:32,710 hva er inni denne igjen, og igjen og igjen. 602 00:29:32,710 --> 00:29:35,880 Du kan være mer konkret og si, gjøre følgende ting 10 ganger. 603 00:29:35,880 --> 00:29:37,620 Du kan også bruke variabler. 604 00:29:37,620 --> 00:29:40,260 Du kan komme opp med noen navn i lite falle ned og si: gi meg en 605 00:29:40,260 --> 00:29:43,190 variabel kalt n og sette det lik noen verdi. 606 00:29:43,190 --> 00:29:44,910 Og så kan du ha funksjoner. 607 00:29:44,910 --> 00:29:46,850 Men mer om de i bare et øyeblikk. 608 00:29:46,850 --> 00:29:49,140 >> La meg gå tilbake til min Skrap grensesnitt. 609 00:29:49,140 --> 00:29:50,970 Og la meg gå videre denne gangen. 610 00:29:50,970 --> 00:29:56,660 Og la oss gå videre og åpne opp, la oss si, et eksempel fra - 611 00:29:56,660 --> 00:29:58,740 som er litt mer interessant. 612 00:29:58,740 --> 00:30:00,750 La meg gå videre, og, faktisk, la meg bare gjøre det selv. 613 00:30:00,750 --> 00:30:01,960 Jeg trenger ikke å åpne denne. 614 00:30:01,960 --> 00:30:03,390 La meg gå til File, New. 615 00:30:03,390 --> 00:30:04,740 Jeg kommer til å gå til Events. 616 00:30:04,740 --> 00:30:08,460 Jeg kommer til å gå til når grønt flagg klikket, og jeg kommer til å gå til Sound. 617 00:30:08,460 --> 00:30:11,590 Og jeg kommer til å dra og slippe dette puslespill brikke, spille av lyd mjaue. 618 00:30:11,590 --> 00:30:12,580 Det låsene sammen. 619 00:30:12,580 --> 00:30:14,327 Og nå, hvis jeg klikker på den grønne flagg - 620 00:30:14,327 --> 00:30:16,260 >> [MEOW SOUND] 621 00:30:16,260 --> 00:30:17,500 >> DAVID MALAN: Adorable. 622 00:30:17,500 --> 00:30:21,560 OK, så nå la oss gjøre noe litt mer logisk bare for å vise at 623 00:30:21,560 --> 00:30:22,760 vi kan, for nå. 624 00:30:22,760 --> 00:30:25,550 Jeg kommer til å løsne dette fra den fyren. 625 00:30:25,550 --> 00:30:27,000 Jeg kommer til å gå til kontroll. 626 00:30:27,000 --> 00:30:28,770 Og jeg kommer til å ta en betingelse. 627 00:30:28,770 --> 00:30:30,600 Så hvis noe da. 628 00:30:30,600 --> 00:30:32,020 Så det er slik det ser ut der. 629 00:30:32,020 --> 00:30:33,890 Så jeg trenger en boolsk uttrykk. 630 00:30:33,890 --> 00:30:38,130 Og la meg gå videre og si: la meg gå til operatører. 631 00:30:38,130 --> 00:30:40,270 Jeg kommer til å gjøre noe litt mathy, bare for morro skyld. 632 00:30:40,270 --> 00:30:43,600 Jeg kommer til å gå inn her og si, hvis noe er mindre enn noe annet, 633 00:30:43,600 --> 00:30:45,030 gå videre og gjøre noe. 634 00:30:45,030 --> 00:30:46,890 Så nå vet du hva, en tilfeldig blokk. 635 00:30:46,890 --> 00:30:51,620 Så legg merke til hvordan, hvis jeg sveve over dette ting her, som vil smette inn der. 636 00:30:51,620 --> 00:30:54,090 >> Så nå, varsel, jeg begynner å gjøre noe som allerede er mer logisk 637 00:30:54,090 --> 00:30:54,650 interessant. 638 00:30:54,650 --> 00:30:59,720 Dersom et tilfeldig tall mellom 1 og 10 er mindre enn, la oss si seks. 639 00:30:59,720 --> 00:31:03,670 Hvis jeg velger seks, som i hovedsak del, gjør følgende med 50% 640 00:31:03,670 --> 00:31:03,980 sannsynlighet. 641 00:31:03,980 --> 00:31:05,460 Det er som å flippe en mynt. 642 00:31:05,460 --> 00:31:07,330 Nå kan jeg gjøre noe betinget. 643 00:31:07,330 --> 00:31:10,800 Og at noe jeg kommer å gjøre er å spille av lyden. 644 00:31:10,800 --> 00:31:14,280 Så nå, når jeg klikker på skjermen flagg, er det som å kaste en mynt. 645 00:31:14,280 --> 00:31:14,610 >> [MEOW SOUND] 646 00:31:14,610 --> 00:31:17,160 >> DAVID MALAN: Det var hoder eller whatnot der. 647 00:31:17,160 --> 00:31:17,920 La oss gjøre det igjen. 648 00:31:17,920 --> 00:31:18,860 >> [MEOW SOUND] 649 00:31:18,860 --> 00:31:19,790 >> DAVID MALAN: Heads igjen. 650 00:31:19,790 --> 00:31:20,280 >> [MEOW SOUND] 651 00:31:20,280 --> 00:31:21,500 >> DAVID MALAN: Heads igjen. 652 00:31:21,500 --> 00:31:22,631 Phew, OK. 653 00:31:22,631 --> 00:31:24,720 Haler den tiden. 654 00:31:24,720 --> 00:31:29,545 Så 50% av tiden, hvis vi gjør dette uendelig lang, vil vi få 50% meows 655 00:31:29,545 --> 00:31:32,180 og 50% stillhet. 656 00:31:32,180 --> 00:31:34,850 Så der, bare en enkel bygning blokk som lar oss gjøre det. 657 00:31:34,850 --> 00:31:37,710 Men dette er slags kjedelig at jeg har å holde klikke på den knappen. 658 00:31:37,710 --> 00:31:39,810 Så la oss bare dra og kaste alle disse bort. 659 00:31:39,810 --> 00:31:42,270 Om du trekker dem til midten, de vil bare slette seg selv. 660 00:31:42,270 --> 00:31:43,760 >> La meg gå opp å kontrollere. 661 00:31:43,760 --> 00:31:46,060 La meg gå til evig tid. 662 00:31:46,060 --> 00:31:49,952 Og denne gangen kommer jeg til å gjøre noe minorly irriterende. 663 00:31:49,952 --> 00:31:51,560 >> [Latter] 664 00:31:51,560 --> 00:31:53,370 >> DAVID MALAN: Og la meg gå videre og gjøre kontrollen. 665 00:31:53,370 --> 00:31:57,260 Vent ett sekund, bare så det er ikke så rist. 666 00:31:57,260 --> 00:31:59,870 >> [MEOW SOUND] 667 00:31:59,870 --> 00:32:00,970 >> DAVID MALAN: Det er ikke naturlig. 668 00:32:00,970 --> 00:32:01,861 OK. 669 00:32:01,861 --> 00:32:04,510 >> [MEOW SOUND] 670 00:32:04,510 --> 00:32:06,406 >> DAVID MALAN: Og legg merke til hva som er fint, om Scratch, for de av dere som 671 00:32:06,406 --> 00:32:09,210 har tidligere programmering erfaring, du trenger ikke å starte og stoppe. 672 00:32:09,210 --> 00:32:10,060 Du trenger ikke å kompilere. 673 00:32:10,060 --> 00:32:13,210 Du bare endre det, og programmet vil tilpasse seg dynamisk. 674 00:32:13,210 --> 00:32:14,620 Så dette blir en litt interessant. 675 00:32:14,620 --> 00:32:16,930 Men la oss ta det ett skritt videre. 676 00:32:16,930 --> 00:32:19,760 La meg gå videre og få kvitt det programmet. 677 00:32:19,760 --> 00:32:23,300 >> [MEOW SOUND] 678 00:32:23,300 --> 00:32:25,520 >> DAVID MALAN: Det er det vi vil ringe en bug i spillene. 679 00:32:25,520 --> 00:32:26,770 Han bør ikke fortsette å lage den lyden. 680 00:32:26,770 --> 00:32:28,340 Så vi vil vi fortelle ham å stoppe. 681 00:32:28,340 --> 00:32:30,435 Ok, så nå er jeg kommer til å gå inn - 682 00:32:30,435 --> 00:32:32,180 Jeg skal la MIT vite. 683 00:32:32,180 --> 00:32:35,160 Vi vil gå over her i Forever. 684 00:32:35,160 --> 00:32:37,240 Og nå ønsker jeg å gjøre noe igjen og igjen. 685 00:32:37,240 --> 00:32:38,760 Jeg kommer til å gå inn i kontroll. 686 00:32:38,760 --> 00:32:41,570 >> Og la oss se, jeg kommer til å dra min hvis tilstanden der. 687 00:32:41,570 --> 00:32:42,850 Så nå merke til logikken. 688 00:32:42,850 --> 00:32:46,430 Når det grønne flagget er klikket, gjør noe for alltid, men bare gjøre det 689 00:32:46,430 --> 00:32:48,890 noe om dette andre tingen er sant. 690 00:32:48,890 --> 00:32:51,480 Jeg kommer til å gå til, la oss si, sensing. 691 00:32:51,480 --> 00:32:54,430 Og jeg kommer til å gå videre og velge rørende og slipp den der. 692 00:32:54,430 --> 00:32:55,930 Det er en boolsk uttrykk. 693 00:32:55,930 --> 00:32:57,740 >> Og nå, legge merke til, i dette fallet down menyen, er det 694 00:32:57,740 --> 00:32:59,050 noen forhåndsdefinerte verdier. 695 00:32:59,050 --> 00:33:00,910 Så jeg kan si, er du berører kanten av skjermen? 696 00:33:00,910 --> 00:33:03,900 Eller er du berører musepekeren, pilen på skjermen? 697 00:33:03,900 --> 00:33:04,620 Så jeg kommer til å gjøre det. 698 00:33:04,620 --> 00:33:08,770 Og hvis så, så jeg kommer til å gå videre og spille av lyd mjaue. 699 00:33:08,770 --> 00:33:11,250 Så nå er jeg slags har begynnelsen av et spill - 700 00:33:11,250 --> 00:33:13,110 en søt spill. 701 00:33:13,110 --> 00:33:14,060 >> [MEOW SOUND] 702 00:33:14,060 --> 00:33:17,250 >> DAVID MALAN: OK, en søt, buggy spillet. 703 00:33:17,250 --> 00:33:20,770 La meg vente, la oss si, ett sekund der. 704 00:33:20,770 --> 00:33:24,910 Nå spille igjen, ved å klikke det grønne flagget. 705 00:33:24,910 --> 00:33:27,860 >> [MEOW SOUND] 706 00:33:27,860 --> 00:33:30,460 >> DAVID MALAN: Så nå er det som klappe en katt. 707 00:33:30,460 --> 00:33:31,850 >> [MEOW SOUND] 708 00:33:31,850 --> 00:33:34,460 >> DAVID MALAN: Ok, nå dette en jeg gjorde på forhånd. 709 00:33:34,460 --> 00:33:39,250 Veldig sent, det blir slags lett å gjøre dumme ting. 710 00:33:39,250 --> 00:33:40,240 Så la meg gå inn her. 711 00:33:40,240 --> 00:33:43,720 La oss si, som ble Pet katten. 712 00:33:43,720 --> 00:33:46,600 La oss nå åpne Ikke Pet katten. 713 00:33:46,600 --> 00:33:48,330 Nå, hvis vi spiller denne, du kan gjette, hvis du er 714 00:33:48,330 --> 00:33:49,650 se på skjermen - 715 00:33:49,650 --> 00:33:51,090 >> [MEOW SOUND] 716 00:33:51,090 --> 00:33:52,170 >> DAVID MALAN: Nå, hvis jeg klappe katten 717 00:33:52,170 --> 00:33:55,420 >> [LION'S ROAR] 718 00:33:55,420 --> 00:33:57,260 >> DAVID MALAN: Så ikke egentlig pet katten i så fall. 719 00:33:57,260 --> 00:34:01,350 Så nå er det bare et eksempel på en gren som kommer i to retninger. 720 00:34:01,350 --> 00:34:03,130 Nå la meg gå videre og åpne en ny en her. 721 00:34:03,130 --> 00:34:07,120 Denne, også blant vår kilde kode filer for dagen. 722 00:34:07,120 --> 00:34:13,199 Så la meg gå tilbake til Source min katalog og gå inn i, la oss velge 723 00:34:13,199 --> 00:34:15,610 denne fyren her og se hva som er annerledes. 724 00:34:15,610 --> 00:34:17,449 >> Wow, ok, så nå er det å få litt mer komplisert. 725 00:34:17,449 --> 00:34:21,300 Og før vi ser hva denne fyren gjør, la oss prøve å antyde, fra programmet 726 00:34:21,300 --> 00:34:22,219 på høyre side. 727 00:34:22,219 --> 00:34:25,590 Og nå scratch gjør klart oss til har flere skript, flere 728 00:34:25,590 --> 00:34:29,730 programmer forbundet med en sprite, med ett tegn, og, tilsynelatende, 729 00:34:29,730 --> 00:34:31,760 de er begge kommer til å kjøre i lockstep. 730 00:34:31,760 --> 00:34:35,570 Fordi begge disse programmene starter med når grønt flagg klikk, er dette 731 00:34:35,570 --> 00:34:38,650 antyder at en mer avansert tema, med som noen av dere kan bli kjent, 732 00:34:38,650 --> 00:34:40,580 kjent som threading, eller multi-threading. 733 00:34:40,580 --> 00:34:44,400 >> Slår ut, lang historie kort, datamaskiner i dag kan faktisk gjøre flere 734 00:34:44,400 --> 00:34:45,270 ting på en gang. 735 00:34:45,270 --> 00:34:48,659 Eller de kan gjøre én ting om gangen, slik fort at du ikke engang merke til at 736 00:34:48,659 --> 00:34:50,150 det er faktisk gjør en ting om gangen. 737 00:34:50,150 --> 00:34:53,320 Men for nå, la oss anta at begge disse programmene kommer til å kjøre på 738 00:34:53,320 --> 00:34:54,310 samme tid. 739 00:34:54,310 --> 00:34:57,350 Og legg merke til, både av dem har alltid puslebiter. 740 00:34:57,350 --> 00:35:01,270 Så de begge kommer til å holde i gang før jeg traff den røde stoppskiltet. 741 00:35:01,270 --> 00:35:02,100 >> Så hva skal de gjøre? 742 00:35:02,100 --> 00:35:06,030 På venstre side, jeg er tydeligvis erklære en variabel kalt dempet. 743 00:35:06,030 --> 00:35:09,030 Så jeg ikke kalle det noe sånt kjedelig som N. Jeg kalte det dempet dette 744 00:35:09,030 --> 00:35:10,240 tid til å formidle mening. 745 00:35:10,240 --> 00:35:11,780 Jeg satte den lik null. 746 00:35:11,780 --> 00:35:16,200 La oss tenke på det som Usann eller la oss tenke på at så False. 747 00:35:16,200 --> 00:35:17,490 >> Nå alltid gjøre følgende. 748 00:35:17,490 --> 00:35:23,280 Hvis tastaturet er plass bar er trykket, så hvis dempet lik null, 749 00:35:23,280 --> 00:35:25,930 deretter endre dempet til lik én. 750 00:35:25,930 --> 00:35:27,580 Else, satt dempet til null. 751 00:35:27,580 --> 00:35:30,530 Så logisk, selv om det er en helt haug med biter i et puslespill som er 752 00:35:30,530 --> 00:35:33,160 bare sier, når jeg treffer på mellomromstasten, hva skal jeg gjøre for å variabelen 753 00:35:33,160 --> 00:35:34,750 kalt dempet? 754 00:35:34,750 --> 00:35:37,170 Endre den fra en til null, eller null til en. 755 00:35:37,170 --> 00:35:37,840 Det er alt. 756 00:35:37,840 --> 00:35:40,740 Så det er som å snu en lysbryter på eller av og huske, med en 757 00:35:40,740 --> 00:35:42,330 variable, at jeg har gjort det. 758 00:35:42,330 --> 00:35:45,990 >> I mellomtiden, på høyre side, i lekmann vilkår, hva er hensikten med 759 00:35:45,990 --> 00:35:47,547 manuset til høyre? 760 00:35:47,547 --> 00:35:48,860 >> STUDENT: For å spille sjøløve lyd. 761 00:35:48,860 --> 00:35:52,500 >> DAVID MALAN: For å spille Sea Lion lyd, hvis han ikke er dempet, etter 762 00:35:52,500 --> 00:35:53,480 natur at variabelen. 763 00:35:53,480 --> 00:35:57,360 Så vi deler staten, så å si, deling av informasjon på tvers av disse to 764 00:35:57,360 --> 00:36:00,540 skript fordi, merke her er vi alltid gjøre følgende. 765 00:36:00,540 --> 00:36:04,620 Hvis dempet er null, så hvis det ikke er dempet - hvis dempet er falsk, og deretter spille 766 00:36:04,620 --> 00:36:05,980 Dette Sea Lion lyd. 767 00:36:05,980 --> 00:36:09,930 Og tenker for deg selv, hi, hi, hi, for to sekunder, vent et øyeblikk, og deretter 768 00:36:09,930 --> 00:36:11,140 sjekk igjen. 769 00:36:11,140 --> 00:36:15,150 Så hvis vi går nå over her til venstre, til hvor denne fyren er, og traff 770 00:36:15,150 --> 00:36:16,662 grønt flagg, 771 00:36:16,662 --> 00:36:30,260 >> [SEA LION SOUND] 772 00:36:30,260 --> 00:36:31,910 >> DAVID MALAN: På hvilket punkt gjør dette bli veldig irriterende? 773 00:36:31,910 --> 00:36:33,440 Fordi dette vil bare fortsette i det uendelige. 774 00:36:33,440 --> 00:36:36,490 Så noen ganger, uendelige løkker, så å si, er bevisst. 775 00:36:36,490 --> 00:36:41,140 Men i dette tilfellet, så snart jeg treffer på mellomromstasten, slutter han. 776 00:36:41,140 --> 00:36:42,800 Nå er programmet ikke har sluttet. 777 00:36:42,800 --> 00:36:44,760 Det er fortsatt kjører i disse løkkene. 778 00:36:44,760 --> 00:36:46,540 Men hvis jeg får plass bar igjen - 779 00:36:46,540 --> 00:36:47,851 >> [SEA LION SOUND] 780 00:36:47,851 --> 00:36:49,650 >> DAVID MALAN: Han kommer til å plukke opp der han slapp. 781 00:36:49,650 --> 00:36:53,240 Så det er en måte for oss å gjøre noe igjen og igjen, men at 782 00:36:53,240 --> 00:36:54,920 tid, bare betinget. 783 00:36:54,920 --> 00:36:58,940 Vel, mens vi er i denne vene å gjøre tingene igjen og igjen, la meg 784 00:36:58,940 --> 00:37:01,370 gå inn i et annet slikt eksempel her. 785 00:37:01,370 --> 00:37:04,370 Dette vil vi ringe telle sauer. 786 00:37:04,370 --> 00:37:05,710 >> Og legg merke til hva denne fyren gjør. 787 00:37:05,710 --> 00:37:08,540 Det er faktisk litt mer som pseudokode vi spilte med på 788 00:37:08,540 --> 00:37:12,230 Onsdag, der han setter noen counter, tenker på det som N igjen, for å 789 00:37:12,230 --> 00:37:14,030 null, gjør han alltid følgende. 790 00:37:14,030 --> 00:37:17,960 Han sier disken er verdi for en sekund, venter en andre, og deretter 791 00:37:17,960 --> 00:37:19,430 forandrer telleren ved en. 792 00:37:19,430 --> 00:37:21,570 Og i denne sammenheng, som bare betyr intervaller det. 793 00:37:21,570 --> 00:37:23,250 Så han legger man til det. 794 00:37:23,250 --> 00:37:25,830 Så dette er bokstavelig talt - 795 00:37:25,830 --> 00:37:27,890 det er ikke helt hva vi tenker av å telle sauer. 796 00:37:27,890 --> 00:37:33,120 Det er sauene gjør tellingen, alltid, opp fra null. 797 00:37:33,120 --> 00:37:35,560 >> Så vi kan gjøre lignende ting der, logisk. 798 00:37:35,560 --> 00:37:37,750 Men la oss nå prøve å rengjøre noen av disse tingene opp. 799 00:37:37,750 --> 00:37:43,440 La meg gå videre nå inn i en enkel eksempel der vår katt er bare kommer til 800 00:37:43,440 --> 00:37:44,750 starte hoste. 801 00:37:44,750 --> 00:37:48,830 Ok, så her har vi hoste 0 - 802 00:37:48,830 --> 00:37:50,685 dataforskere starter regnet fra 0. 803 00:37:50,685 --> 00:37:53,480 Så denne katten er bare kommer å hoste tre ganger. 804 00:37:53,480 --> 00:37:54,890 Og her er hvordan jeg implementert det. 805 00:37:54,890 --> 00:38:00,130 Når grønne flagget er klikket, hoste, vente, hoste, vent, hoste, vent. 806 00:38:00,130 --> 00:38:02,470 Og jeg gjorde dette bare ved å dra og slippe brikkene. 807 00:38:02,470 --> 00:38:04,740 Eller hvis du begynner å tinker med Scratch, vil du se at du kan faktisk 808 00:38:04,740 --> 00:38:08,620 duplisere brikkene slik at du kan gjøre ting raskere, uten å dra 809 00:38:08,620 --> 00:38:10,310 og slippe ad nauseum. 810 00:38:10,310 --> 00:38:12,680 >> Men vi er ikke på den beste veien her. 811 00:38:12,680 --> 00:38:15,210 Fordi hvordan gjør jeg ham hoste en fjerde gang? 812 00:38:15,210 --> 00:38:16,790 Vel, jeg kunne liksom gå ned her. 813 00:38:16,790 --> 00:38:19,420 Jeg kunne kopiere og deretter lim denne inn der. 814 00:38:19,420 --> 00:38:21,740 Hvordan gjør jeg ham hoste en femte gang? 815 00:38:21,740 --> 00:38:23,230 Vel, kopiere og lime igjen. 816 00:38:23,230 --> 00:38:24,210 Eller dra dråpe igjen. 817 00:38:24,210 --> 00:38:26,920 Og veldig raskt, starter dette programmet å bli virkelig, virkelig overflødig, 818 00:38:26,920 --> 00:38:28,880 veldig lang, men egentlig uinteressant. 819 00:38:28,880 --> 00:38:30,120 Men det er en måte å rydde opp i dette. 820 00:38:30,120 --> 00:38:33,680 Hva er den opplagte måten å rydde opp i dette? 821 00:38:33,680 --> 00:38:36,280 >> OK, så vi kunne faktisk virkelig gå ut, og når du treffer plass 822 00:38:36,280 --> 00:38:37,070 bar, ha ham hoste. 823 00:38:37,070 --> 00:38:40,150 Men hvis jeg bare ønsker å gjøre noe gjentagelser, husker at vi har 824 00:38:40,150 --> 00:38:41,310 noen kontroll konstruerer. 825 00:38:41,310 --> 00:38:43,800 La meg flytte dette ut av måte, gå under kontroll. 826 00:38:43,800 --> 00:38:47,340 La meg bare gjøre en gjentakelse, si, tre ganger. 827 00:38:47,340 --> 00:38:49,410 Og nå la meg stjele noen av disse brikkene. 828 00:38:49,410 --> 00:38:50,980 La meg knipse dette her. 829 00:38:50,980 --> 00:38:52,400 La meg kaste disse bort helt. 830 00:38:52,400 --> 00:38:55,400 >> Og nå har jeg en bedre utformet program. 831 00:38:55,400 --> 00:38:55,920 Hvorfor? 832 00:38:55,920 --> 00:39:00,540 Hvis jeg ønsker å endre antall ganger denne katten hoste, alt jeg har å 833 00:39:00,540 --> 00:39:05,640 gjøre er å endre en variabel, eller en verdi, heller fra tre til fire, eller 834 00:39:05,640 --> 00:39:06,700 fem, eller seks. 835 00:39:06,700 --> 00:39:09,060 Eller jeg kunne gjøre noe betinget, selv, med plassen 836 00:39:09,060 --> 00:39:10,320 bar hvis jeg ville. 837 00:39:10,320 --> 00:39:11,780 >> Så dette er et generelt prinsipp. 838 00:39:11,780 --> 00:39:14,950 Når du begynner å kopiere og lime inn koden, enten det er i Scratch, eller i 839 00:39:14,950 --> 00:39:18,340 C, du gjør noe galt, mest sannsynlig. 840 00:39:18,340 --> 00:39:21,950 Eller i det minste, når du har overskredet noen rimelig antall kopier og 841 00:39:21,950 --> 00:39:24,610 pastaer, er du sannsynligvis gjør noe galt. 842 00:39:24,610 --> 00:39:26,740 >> Men vet du hva? 843 00:39:26,740 --> 00:39:27,590 Jeg liker egentlig ikke dette. 844 00:39:27,590 --> 00:39:28,980 Dette er ikke den reneste utforming. 845 00:39:28,980 --> 00:39:32,860 Jeg skulle ønske det var et puslespill brikke kalt hoste fordi da ville jeg ikke 846 00:39:32,860 --> 00:39:36,100 nødt til å implementere dette selv, den gammeldagse måten, ved å 847 00:39:36,100 --> 00:39:38,220 ha si, og vent - 848 00:39:38,220 --> 00:39:40,320 hva om de var bare en hoste puslespill brikke. 849 00:39:40,320 --> 00:39:41,330 >> Vel, kan jeg faktisk gjøre det. 850 00:39:41,330 --> 00:39:45,010 La meg gå under flere blokker, klikk Lag en blokk, og nå får jeg dette 851 00:39:45,010 --> 00:39:45,610 vinduet her. 852 00:39:45,610 --> 00:39:47,540 Jeg kommer til å kalle denne tingen hoste. 853 00:39:47,540 --> 00:39:49,400 Jeg kommer til å gå videre og klikk på OK. 854 00:39:49,400 --> 00:39:53,150 Og nå varsel, får jeg en ny start stykke som er buet på toppen. 855 00:39:53,150 --> 00:39:56,590 Og hva jeg skal gjøre med dette, er jeg kommer til å bare stjele disse blokkene. 856 00:39:56,590 --> 00:39:57,800 Jeg kommer til å sette dem her. 857 00:39:57,800 --> 00:40:00,490 >> Og nå, med disse tre stykker, har jeg implementert hva jeg skal kalle en 858 00:40:00,490 --> 00:40:03,530 funksjon, eller en fremgangsmåte eller en rekke du kanskje kjenner det som en metode. 859 00:40:03,530 --> 00:40:05,050 Små forskjeller mellom ordene. 860 00:40:05,050 --> 00:40:06,950 Men for nå, la oss bare kaller dette en funksjon. 861 00:40:06,950 --> 00:40:08,750 Dette er bare et nytt puslespill brikke. 862 00:40:08,750 --> 00:40:11,000 Nå er implementert som dette. 863 00:40:11,000 --> 00:40:15,170 >> Men legg merke til at spillene har gitt oss en fysisk representasjon av det hele 864 00:40:15,170 --> 00:40:16,570 blokkere over her. 865 00:40:16,570 --> 00:40:21,930 Så nå kan jeg bare dra dette over her, si, gjenta tre ganger, og 866 00:40:21,930 --> 00:40:26,420 hva kommer til å skje nå, når jeg spiller dette skriptet, er bare ett program 867 00:40:26,420 --> 00:40:27,500 kjører på en gang. 868 00:40:27,500 --> 00:40:29,880 Det er bare én når grønt flagg klikket. 869 00:40:29,880 --> 00:40:34,010 Men det lilla blokken kalt hoste er forteller effektivt Scratch, hver 870 00:40:34,010 --> 00:40:38,160 gang du ser at puslespill brikke, faktisk utføre disse trinnene som jeg 871 00:40:38,160 --> 00:40:40,420 skje å gjennomføre manuelt. 872 00:40:40,420 --> 00:40:41,410 >> Så det er litt artig. 873 00:40:41,410 --> 00:40:44,650 Men nå, antar at jeg bestemte meg, vet jeg ikke vil denne katten bare å hoste. 874 00:40:44,650 --> 00:40:46,660 Jeg vil at han skal være i stand å nyse også. 875 00:40:46,660 --> 00:40:48,905 Vel, hvordan kunne vi gå om implementere nys? 876 00:40:48,905 --> 00:40:51,310 Vel jeg kunne ganske mye gjøre det samme. 877 00:40:51,310 --> 00:40:52,690 Jeg kunne lage en annen blokk. 878 00:40:52,690 --> 00:40:55,940 Jeg kunne kalle dette nys, klikker du OK. 879 00:40:55,940 --> 00:40:59,250 >> Så, her kunne jeg faktisk har, la meg kopiere denne - 880 00:40:59,250 --> 00:41:02,850 og det er der du skal føle deg som du sannsynligvis ikke gjør noe i 881 00:41:02,850 --> 00:41:03,780 på beste måte. 882 00:41:03,780 --> 00:41:06,670 Jeg kunne si noe sånt, Achoo, i ett sekund. 883 00:41:06,670 --> 00:41:07,440 Vent ett sekund. 884 00:41:07,440 --> 00:41:08,715 Nå har jeg en ny blokk kalt nys. 885 00:41:08,715 --> 00:41:10,210 Og ja, det er det. 886 00:41:10,210 --> 00:41:14,010 >> Men også dette, bør begynne å føle - kanskje ikke den første uken av klasse, men 887 00:41:14,010 --> 00:41:15,730 ved den andre - bare litt overflødig. 888 00:41:15,730 --> 00:41:17,800 Klart, det er noen redundans her. 889 00:41:17,800 --> 00:41:22,090 Så la meg foreslå, i stedet, at vi avgrense denne definisjonen som følger. 890 00:41:22,090 --> 00:41:24,820 >> La meg gå opp til min filmenyen. 891 00:41:24,820 --> 00:41:26,090 Jeg kommer ikke til å lagre denne versjonen. 892 00:41:26,090 --> 00:41:29,080 Jeg kommer til å gå inn i en av mine forhåndslagde filer her. 893 00:41:29,080 --> 00:41:31,190 Og jeg kommer til å gå videre og åpne opp hoste to. 894 00:41:31,190 --> 00:41:32,220 Uff da det var hoste to. 895 00:41:32,220 --> 00:41:36,900 La meg gå videre og åpne opp hoste tre, som er denne kilden katalogen. 896 00:41:36,900 --> 00:41:42,450 Hoste tre og merke - oh, fortalte jeg historien i feil rekkefølge. 897 00:41:42,450 --> 00:41:45,030 La meg komme seg fra denne historien. 898 00:41:45,030 --> 00:41:48,990 >> Historien jeg mente å si ender med hoste 4 - 899 00:41:48,990 --> 00:41:50,270 det er det. 900 00:41:50,270 --> 00:41:54,380 Så hva om jeg i stedet definere et større puslespill brikke kalt 901 00:41:54,380 --> 00:41:57,250 definere, sier ordet n ganger. 902 00:41:57,250 --> 00:41:59,930 Nysing er bare tilsynelatende, i Scratch, Achoo. 903 00:41:59,930 --> 00:42:01,680 Så vi uttrykke det som et ord, bare fordi det er den 904 00:42:01,680 --> 00:42:02,750 begrensningen av programmet. 905 00:42:02,750 --> 00:42:07,860 Og en hoste er [hoste], men hoste, C-O-U-G-H. Så det er bare to 906 00:42:07,860 --> 00:42:10,820 forskjellige ord gjør, i hovedsak, det samme. 907 00:42:10,820 --> 00:42:12,820 >> Så jeg kan faktisk gjøre en ny blokk som dette. 908 00:42:12,820 --> 00:42:14,220 Jeg brukte ikke dette menyvalget før. 909 00:42:14,220 --> 00:42:16,960 Men når du klikker Gjør Block, du kan velge noen alternativer. 910 00:42:16,960 --> 00:42:20,900 Og du kan si at denne blokken faktisk tar noen innspill, ellers 911 00:42:20,900 --> 00:42:24,710 kjent som argumenter, eller parametre, slik at du kan endre oppførselen til 912 00:42:24,710 --> 00:42:25,520 din blokk. 913 00:42:25,520 --> 00:42:28,780 >> Så det jeg gjorde for et øyeblikk siden var Jeg ringte denne blokken Si. 914 00:42:28,780 --> 00:42:30,880 Og så sa jeg, det tar en streng inngang. 915 00:42:30,880 --> 00:42:32,810 Og nå legger merke til, som standard, det står streng en. 916 00:42:32,810 --> 00:42:35,440 En streng er bare et ord, eller en setning, for vårt formål. 917 00:42:35,440 --> 00:42:37,810 Men jeg skal bare sette noen Plassholderteksten der, akkurat som i et 918 00:42:37,810 --> 00:42:40,620 hjemmeside, når du ser brukernavn eller passord, og deretter forsvinner når 919 00:42:40,620 --> 00:42:41,550 du begynner å skrive. 920 00:42:41,550 --> 00:42:42,720 Det er alt som er. 921 00:42:42,720 --> 00:42:44,590 >> Og nå skal jeg til legge til en rekke innspill. 922 00:42:44,590 --> 00:42:47,180 Og jeg kommer til å kalle dette n - men det er ganske vilkårlig. 923 00:42:47,180 --> 00:42:49,510 Og så bare en etikett, å bare gjøre denne blokken litt mer selvtillit 924 00:42:49,510 --> 00:42:50,570 forklarende - 925 00:42:50,570 --> 00:42:53,010 ganger, det er hva jeg nettopp gjorde. 926 00:42:53,010 --> 00:42:56,540 Og sluttresultatet er at jeg får en blokk som ser slik ut. 927 00:42:56,540 --> 00:42:58,880 >> Og nå legge merke til, jeg bruker en gjentakelse blokk. 928 00:42:58,880 --> 00:43:03,480 Men heller enn hardt koding tre, jeg dra og slippe n der så jeg 929 00:43:03,480 --> 00:43:05,530 kan parametrize funksjonen. 930 00:43:05,530 --> 00:43:08,590 Jeg kan gjøre denne funksjonen gjør noe et forskjellig antall ganger er basert på 931 00:43:08,590 --> 00:43:09,410 denne verdien. 932 00:43:09,410 --> 00:43:14,270 >> Og legg merke til, si, dette er hva jeg gjorde her, hvis jeg drar ord, kan jeg si ikke en 933 00:43:14,270 --> 00:43:17,860 hardkodet ord, men uansett er gått i ett sekund. 934 00:43:17,860 --> 00:43:20,200 I mellomtiden, hvordan kan jeg re-implementere hoste? 935 00:43:20,200 --> 00:43:26,980 Jeg i stedet definere hoste som sier hoste n ganger. 936 00:43:26,980 --> 00:43:30,480 >> Så kort sagt, jeg kommer gjennom dette hurtig, men den grunnleggende ideen er så fort 937 00:43:30,480 --> 00:43:32,750 som du begynner å se i programmet det, vent litt, jeg har gjort 938 00:43:32,750 --> 00:43:36,610 noe som dette før, kan jeg faktor ut noen felles 939 00:43:36,610 --> 00:43:37,090 funksjonalitet? 940 00:43:37,090 --> 00:43:41,090 Kan jeg separerte hva jeg gjør inn i noen grunnleggende ideer? 941 00:43:41,090 --> 00:43:42,070 Det er det vi gjør her. 942 00:43:42,070 --> 00:43:44,830 Og jeg har stablet disse tingene, visuelt, oppå hverandre 943 00:43:44,830 --> 00:43:47,710 fordi det er testament til at ideen om starter med binære, kommer til ASCII, 944 00:43:47,710 --> 00:43:51,530 lage grafiske programmer, liksom lagdeling stadig mer komplekse ideer om 945 00:43:51,530 --> 00:43:52,570 toppen av hverandre. 946 00:43:52,570 --> 00:43:53,730 >> Samme ideen her. 947 00:43:53,730 --> 00:43:56,870 Jeg startet fra scratch, implementere hoste, så innså hoste er 948 00:43:56,870 --> 00:43:58,540 egentlig bare si noe. 949 00:43:58,540 --> 00:44:01,630 Så la meg i stedet implementere oppfatningen av å si noe. 950 00:44:01,630 --> 00:44:05,200 Og på toppen av det, kan jeg implementere Achoo, eller hoste? 951 00:44:05,200 --> 00:44:07,990 Og vi kunne gjøre flere slike variantene fortsatt. 952 00:44:07,990 --> 00:44:10,400 >> Så fra dette grunnleggende prinsippet, vi kan begynne å gjøre 953 00:44:10,400 --> 00:44:12,180 stadig mer komplekse programmer. 954 00:44:12,180 --> 00:44:14,100 La meg åpne opp denne. 955 00:44:14,100 --> 00:44:18,020 Vi kan faktisk ha flere sprites samspill på skjermen på en gang. 956 00:44:18,020 --> 00:44:23,470 Hvis jeg går inn i min kilde katalog og ta en såkalte tråder, husker at en 957 00:44:23,470 --> 00:44:26,920 tråden er bare virkelig muligheten av to skript for å kjøre side ved 958 00:44:26,920 --> 00:44:28,350 side samtidig. 959 00:44:28,350 --> 00:44:34,490 >> Legg merke til nå, har både en fugl sprite og en katt sprite, som begge har 960 00:44:34,490 --> 00:44:35,270 sine egne skript. 961 00:44:35,270 --> 00:44:37,690 Så varsel, når jeg klikker på cat, får jeg disse skriptene. 962 00:44:37,690 --> 00:44:39,830 Når jeg klikker på fuglen, Jeg får disse skriptene. 963 00:44:39,830 --> 00:44:42,070 Slik at hver av disse gutta har sine egne programmer. 964 00:44:42,070 --> 00:44:46,680 Når jeg nå klikker det grønne flagget, merker at hva dette programmet gjør er 965 00:44:46,680 --> 00:44:54,090 har katten, utrolig sakte, jage fuglen. 966 00:44:54,090 --> 00:44:57,120 Men katten har fordelen av å ha blitt programmert på en slik måte 967 00:44:57,120 --> 00:45:00,540 at uansett hvor fuglen er, går katten mot ham. 968 00:45:00,540 --> 00:45:02,150 >> Vi kan spille det spillet mye raskere. 969 00:45:02,150 --> 00:45:07,750 Så hvis jeg er på katten, merker at jeg er hjelp, la oss si flytte en trinn. 970 00:45:07,750 --> 00:45:11,680 La oss ha ham flytte fem trinn på gangen, slik at fem punkter på en gang. 971 00:45:11,680 --> 00:45:13,580 La meg klikker spille. 972 00:45:13,580 --> 00:45:14,490 >> [LION'S ROAR] 973 00:45:14,490 --> 00:45:17,170 >> DAVID MALAN: Greit, nå kan vi virkelig gi katten en fordel. 974 00:45:17,170 --> 00:45:18,600 10 skritt om gangen. 975 00:45:18,600 --> 00:45:20,120 >> [LION'S ROAR] 976 00:45:20,120 --> 00:45:22,770 >> DAVID MALAN: All right, så veldig raskt, det blir litt fordel 977 00:45:22,770 --> 00:45:23,280 for katten. 978 00:45:23,280 --> 00:45:25,310 Men jeg skal vinke min hånd på noen av detaljene. 979 00:45:25,310 --> 00:45:28,240 Men på grunn av at denne banen er starter litt forskjellig hver gang 980 00:45:28,240 --> 00:45:29,700 er at jeg gjør litt av tilfeldigheter. 981 00:45:29,700 --> 00:45:33,700 Jeg er faktisk peker katten i en annen retning basert på hvor jeg 982 00:45:33,700 --> 00:45:38,710 vil at han skal begynne slik at hver gang spillet, eller animasjon, er en 983 00:45:38,710 --> 00:45:39,760 litt annerledes. 984 00:45:39,760 --> 00:45:41,950 >> Nå, la meg presentere en andre konstruere her. 985 00:45:41,950 --> 00:45:43,860 Så i dette tilfellet hadde vi funksjoner. 986 00:45:43,860 --> 00:45:46,950 Det er også tenkt å være et puslespill brikke kjent som en matrise, eller en liste, 987 00:45:46,950 --> 00:45:50,980 som lar deg lagre flere tall inne i en variabel. 988 00:45:50,980 --> 00:45:53,410 Vi så trådene, og nå det er arrangementer. 989 00:45:53,410 --> 00:45:56,330 >> Så her er en hendelse ved hjelp disse to gutta her. 990 00:45:56,330 --> 00:46:02,490 Og hvis jeg åpner opp filen som heter Hendelser fra dagens eksempler, vil vi 991 00:46:02,490 --> 00:46:06,940 se et program som ser litt som dette. 992 00:46:06,940 --> 00:46:09,630 Og nå merke denne fyren - 993 00:46:09,630 --> 00:46:11,620 så merker jeg har den blå Muppet klikket - 994 00:46:11,620 --> 00:46:12,990 han gjør kun det følgende. 995 00:46:12,990 --> 00:46:15,540 Han har ikke en av dem Grønt Flagg brikkene. 996 00:46:15,540 --> 00:46:18,620 Han har en når jeg mottar hendelse - 997 00:46:18,620 --> 00:46:19,970 så noen vilkårlig ord. 998 00:46:19,970 --> 00:46:21,590 Jeg bare skrev ut arrangementet der - 999 00:46:21,590 --> 00:46:23,740 han kommer til å si, Polo, i to sekunder. 1000 00:46:23,740 --> 00:46:25,800 >> Så de av dere som er kjent med dette spillet kanskje vet 1001 00:46:25,800 --> 00:46:26,460 hvor dette går. 1002 00:46:26,460 --> 00:46:29,800 Hvis jeg nå klikke på den oransje Muppet, hans program gjør dette. 1003 00:46:29,800 --> 00:46:35,020 Forever, hvis tastaturet mellomromstasten undertrykt, han kommer til å si, Marco, 1004 00:46:35,020 --> 00:46:36,580 i to sekunder på skjermen. 1005 00:46:36,580 --> 00:46:39,590 Men han også kommer til å bruke denne mer avansert blokkere kjent som kringkasting. 1006 00:46:39,590 --> 00:46:42,270 Han kommer til å kringkaste sitat unquote, "event". 1007 00:46:42,270 --> 00:46:47,540 >> I mellomtiden er den blå fyren, husker, lytter etter sitat unquote, "event". 1008 00:46:47,540 --> 00:46:50,760 Så en eller annen måte, nå kan vi ha to sprites samspill. 1009 00:46:50,760 --> 00:46:53,790 Og når vi kommer til web-programmering, senere på sikt, på samme måte vil dette 1010 00:46:53,790 --> 00:46:58,320 være en fordel å ha ditt nettsted gjøre noe som respons på, for 1011 00:46:58,320 --> 00:47:00,130 eksempel, et klikk på tastaturet. 1012 00:47:00,130 --> 00:47:02,120 >> Så la meg gå videre og traff space bar. 1013 00:47:02,120 --> 00:47:04,020 Oransje fyren sier Marco. 1014 00:47:04,020 --> 00:47:05,840 Blå fyren sier Polo. 1015 00:47:05,840 --> 00:47:10,780 Hvis jeg gjør det igjen oransje fyren sier Marco, sier blå fyren polo. 1016 00:47:10,780 --> 00:47:14,130 Så la oss ta dette ett skritt videre. 1017 00:47:14,130 --> 00:47:18,790 Denne gangen vil vi gå, sannsynligvis, bare noen få minutter her. 1018 00:47:18,790 --> 00:47:19,904 Har vi - 1019 00:47:19,904 --> 00:47:22,380 bordlampe, komme ned. 1020 00:47:22,380 --> 00:47:24,500 Du har rett på slutten. 1021 00:47:24,500 --> 00:47:25,740 OK, kan dere begge komme opp. 1022 00:47:25,740 --> 00:47:26,990 Vi har bordlamper for alle. 1023 00:47:26,990 --> 00:47:28,360 Kom igjen. 1024 00:47:28,360 --> 00:47:30,090 Jeg vet ikke om vi kan holde denne latterlige gag opp 1025 00:47:30,090 --> 00:47:32,035 hele semesteret, skjønt. 1026 00:47:32,035 --> 00:47:33,530 All right, kom ned. 1027 00:47:33,530 --> 00:47:40,260 >> Og i mellomtiden har vi følgende eksempler å trekke opp, bare for å 1028 00:47:40,260 --> 00:47:45,370 akselerere ting nå, slik at vi ha en manifestasjon fra en annen 1029 00:47:45,370 --> 00:47:48,360 forgjenger av deg som bruker samme grunnleggende byggesteiner. 1030 00:47:48,360 --> 00:47:48,975 Hva heter du? 1031 00:47:48,975 --> 00:47:49,240 >> JOHN: John. 1032 00:47:49,240 --> 00:47:49,770 >> DAVID MALAN: John. 1033 00:47:49,770 --> 00:47:50,400 Hyggelig for meg deg. 1034 00:47:50,400 --> 00:47:50,650 Og? 1035 00:47:50,650 --> 00:47:51,250 >> Setz: Setz. 1036 00:47:51,250 --> 00:47:53,130 >> DAVID MALAN: Setz, hyggelig for meg deg. 1037 00:47:53,130 --> 00:47:54,820 John, hvis du ønsker å komme opp først, dette er en gammel 1038 00:47:54,820 --> 00:47:55,910 school spill som heter Frogger. 1039 00:47:55,910 --> 00:47:57,530 Du kan bruke tastaturet for dette også. 1040 00:47:57,530 --> 00:48:02,425 Og målet er å komme over gaten og vann. 1041 00:48:02,425 --> 00:48:12,700 >> [Frogger MUSIKK OG Sound spiller] 1042 00:48:12,700 --> 00:48:14,970 >> DAVID MALAN: Jeg beklager, ingen bordlampe for deg i dag. 1043 00:48:14,970 --> 00:48:19,110 Greit, Setz, ville du liker å komme videre opp? 1044 00:48:19,110 --> 00:48:20,890 Greit, la oss gjøre det igjen. 1045 00:48:20,890 --> 00:48:21,430 >> Setz: Må jeg bruke pilene? 1046 00:48:21,430 --> 00:48:22,360 >> DAVID MALAN: Bare piltastene. 1047 00:48:22,360 --> 00:48:23,624 Opp, ned, venstre, høyre. 1048 00:48:23,624 --> 00:48:35,700 >> [Frogger MUSIKK OG Sound spiller] 1049 00:48:35,700 --> 00:48:37,880 >> DAVID MALAN: Vi kaller dem trøstepremier i dag, 1050 00:48:37,880 --> 00:48:38,950 da, veldig godt utført. 1051 00:48:38,950 --> 00:48:40,690 Her, for dere begge, John og Setz. 1052 00:48:40,690 --> 00:48:41,940 Gratulerer, all right. 1053 00:48:41,940 --> 00:48:46,720 1054 00:48:46,720 --> 00:48:50,620 Så igjen, da dette spillet spiller, tenke på hva som skjer? 1055 00:48:50,620 --> 00:48:52,060 >> En, det er helt klart mye bevegelse. 1056 00:48:52,060 --> 00:48:55,220 Men vi har sett hvordan, med katten og fugl eksempel, hvordan du kan gjøre 1057 00:48:55,220 --> 00:48:58,350 illusjon av bevegelse ved å bare flytte noen antall piksler igjen og igjen. 1058 00:48:58,350 --> 00:49:00,280 Og hvis du har en evig blokk, du kunne ha disse 1059 00:49:00,280 --> 00:49:02,120 biler gjør dette for alltid. 1060 00:49:02,120 --> 00:49:03,720 Vi har evnen til å har noen tilfeldighet. 1061 00:49:03,720 --> 00:49:06,310 Så dette spillet ikke trenger å være nøyaktig den samme hver gang. 1062 00:49:06,310 --> 00:49:09,940 Disse loggene, de biler, kan starte på litt forskjellige tider slik at 1063 00:49:09,940 --> 00:49:12,690 Spillet i seg selv er mer interessant med hvert spill. 1064 00:49:12,690 --> 00:49:15,320 >> Og mellomtiden har vi sett muligheten å høre på mellomromstasten. 1065 00:49:15,320 --> 00:49:18,830 Men klart, i bunnen av, kan du også lytte for opp, ned, venstre, høyre, og 1066 00:49:18,830 --> 00:49:20,760 virkelig en tast på tastaturet. 1067 00:49:20,760 --> 00:49:22,200 Og du kan også gjøre noen andre ting. 1068 00:49:22,200 --> 00:49:24,660 La meg gå videre og gå tilbake til web-versjonen. 1069 00:49:24,660 --> 00:49:30,280 >> La meg gå inn i vår samling eksempler her. 1070 00:49:30,280 --> 00:49:36,120 Og under Studio My, video som er, i hovedsak, en mappe på 1071 00:49:36,120 --> 00:49:37,780 scratch.mit.edu. 1072 00:49:37,780 --> 00:49:39,710 Vi har web-versjonene av alle disse prosjekter. 1073 00:49:39,710 --> 00:49:42,530 Og la oss se om jeg kan få min datamaskin til å samarbeide her. 1074 00:49:42,530 --> 00:49:47,180 Dette er skrevet av en av våre venner ved MIT, kalt Flytt Butterfly. 1075 00:49:47,180 --> 00:49:50,250 >> Og når dette åpner opp, er dette kommer til å faktisk bruke mer av 1076 00:49:50,250 --> 00:49:51,430 datamaskinens maskinvare. 1077 00:49:51,430 --> 00:49:53,325 Ripe skjer skal gjennomføres med Flash. 1078 00:49:53,325 --> 00:49:56,250 Flash kan snakke med webkameraet ditt, hvis du har en. 1079 00:49:56,250 --> 00:50:00,210 Så hvis jeg går videre og fullskjerm dette her, klikk på den grønne flagg, varsel 1080 00:50:00,210 --> 00:50:02,530 at Flash sikkerhetsmelding sier, vil du 1081 00:50:02,530 --> 00:50:04,210 tillate å bruke min webcam? 1082 00:50:04,210 --> 00:50:05,510 >> Normalt bør du trolig si Nekt. 1083 00:50:05,510 --> 00:50:07,180 Men i dette tilfellet, vil vi si tillate. 1084 00:50:07,180 --> 00:50:10,430 Så jeg kommer til å fortelle Chrome å tillate denne også. 1085 00:50:10,430 --> 00:50:15,010 Og nå, på bare et øyeblikk, du ser meg, Jepp, meg. 1086 00:50:15,010 --> 00:50:18,154 Og hvis hånden min går opp - 1087 00:50:18,154 --> 00:50:20,390 Jeg må ikke bevege hode samtidig. 1088 00:50:20,390 --> 00:50:21,740 Det er også en refleksjon på skjermen. 1089 00:50:21,740 --> 00:50:23,480 Kom igjen, det vi går - 1090 00:50:23,480 --> 00:50:27,616 du kan flytte det på skjermen fordi det er også brikkene - oh, du 1091 00:50:27,616 --> 00:50:31,640 vet hva det er, er det fordi du også se projektor skjermen bak meg. 1092 00:50:31,640 --> 00:50:33,870 Så vi har en liten uendelig ting som skjer der. 1093 00:50:33,870 --> 00:50:36,470 >> Ok, så jeg skal spille her nede. 1094 00:50:36,470 --> 00:50:37,220 Det vi går. 1095 00:50:37,220 --> 00:50:41,310 Så det er også et puslespill brikke som sier, når du ser bevegelse under 1096 00:50:41,310 --> 00:50:45,470 en av sprites, kan du ha det gå opp, ned, venstre, høyre eller lignende. 1097 00:50:45,470 --> 00:50:48,950 Så vi har en bit av virtuell virkelighet skjer her også, alt innenfor 1098 00:50:48,950 --> 00:50:52,570 rammen av nettleseren min, bare her bruker min webcam. 1099 00:50:52,570 --> 00:50:53,980 Så hva er da i horisonten. 1100 00:50:53,980 --> 00:50:58,350 Det første problemet settet, som du ser, eller nettsiden vil gå på nettet senere 1101 00:50:58,350 --> 00:51:01,100 i kveld på cs50.net, er ganske mye kommer til å være åpent. 1102 00:51:01,100 --> 00:51:04,410 Og gjennomføre en Scratch prosjekt av interesse for deg, et spill, en 1103 00:51:04,410 --> 00:51:08,350 interaksjon, noe kunstnerisk, og utfordre deg selv til å bruke så mange 1104 00:51:08,350 --> 00:51:09,660 av disse brikkene. 1105 00:51:09,660 --> 00:51:11,580 Og det kan enten være interaktiv på denne måten. 1106 00:51:11,580 --> 00:51:15,470 Eller det kan være noe mer bevisst laget for å fortelle en historie. 1107 00:51:15,470 --> 00:51:19,200 >> Og ja, det er der vi vil ende off i dag, med en siste eksempel. 1108 00:51:19,200 --> 00:51:21,290 La meg gå inn Scratch lokalt. 1109 00:51:21,290 --> 00:51:25,300 La meg gå videre og åpne denne, og spille en siste program skrevet av en 1110 00:51:25,300 --> 00:51:29,795 av dine forgjengere, nemlig at en her. 1111 00:51:29,795 --> 00:51:32,960 1112 00:51:32,960 --> 00:51:35,938 Bra, øke volumet for denne. 1113 00:51:35,938 --> 00:52:53,770 >> [Musikk spilles] 1114 00:52:53,770 --> 00:52:57,255 >> FORTELLER: Ved neste CS50, David inviterer en frivillig på scenen. 1115 00:52:57,255 --> 00:52:58,636 >> DAVID MALAN: For denne demonstrasjonen, vi kommer til å trenge en frivillig. 1116 00:52:58,636 --> 00:53:01,050 Har du lyst til å komme ned? 1117 00:53:01,050 --> 00:53:02,300 Hva heter du? 1118 00:53:02,300 --> 00:53:05,320 1119 00:53:05,320 --> 00:53:06,570 Flytte på. 1120 00:53:06,570 --> 00:53:08,394