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 datalogi, og jeg er en TF for CS50. 5 00:00:18,700 --> 00:00:21,640 Som freshman, jeg ikke selv har en bærbar computer eller en smartphone. 6 00:00:21,640 --> 00:00:23,550 Jeg havde ingen erfaring med programmering. 7 00:00:23,550 --> 00:00:29,690 CS50 var den mest mindeværdige kursus, Jeg tog på Harvard, fordi det var 8 00:00:29,690 --> 00:00:32,960 en kamp, ​​men det var en virkelig sjov kamp samtidig. 9 00:00:32,960 --> 00:00:37,670 Og jeg lavet en masse fantastiske, permanent venner, og jeg lærte en masse virkelig 10 00:00:37,670 --> 00:00:38,830 anvendelige færdigheder. 11 00:00:38,830 --> 00:00:43,480 Jeg er bare så glad for, at jeg ikke lod min manglende baggrunden være en undskyldning for mig 12 00:00:43,480 --> 00:00:44,840 ikke tage CS50. 13 00:00:44,840 --> 00:00:46,220 Jeg [uhørlig]. 14 00:00:46,220 --> 00:00:48,910 Jeg er en senior på Leverett House, klasse af 2014. 15 00:00:48,910 --> 00:00:51,670 Og jeg tog 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 slutningen af ​​ugen nul. 18 00:00:54,400 --> 00:00:58,500 Og huske, hvor vi startede sidste gang, var med disse lamper, som var 19 00:00:58,500 --> 00:01:01,420 så populær, at vi gik og købte nogle flere i dag. 20 00:01:01,420 --> 00:01:03,790 Så jeg tror, ​​det vil være vores ting i år - 21 00:01:03,790 --> 00:01:07,230 bordlamper, hvis du kommer op på scenen, i det mindste indtil vi løber tør. 22 00:01:07,230 --> 00:01:11,570 >> Men vi brugte disse tilbagekaldelse, at indføre det grundlæggende i repræsentation af data. 23 00:01:11,570 --> 00:01:15,640 Vi havde brug måde at starte repræsentere oplysninger inde i en computer. 24 00:01:15,640 --> 00:01:18,650 Og den enkleste måde at gøre det var med én ingrediens, elektricitet. 25 00:01:18,650 --> 00:01:21,760 Og den enkleste ting du kan gøre med elektricitet tænde den og det off. 26 00:01:21,760 --> 00:01:23,520 Lad elektronerne flow eller ej. 27 00:01:23,520 --> 00:01:27,930 Og ved hjælp af disse to grundlæggende tilstande, off og på eller falsk og sandt, eller nul og 28 00:01:27,930 --> 00:01:31,290 én, begyndte vi at se, at vi kunne bygge op, i dette tilfælde, med lys 29 00:01:31,290 --> 00:01:33,720 pærer, flere tal end bare nul og en. 30 00:01:33,720 --> 00:01:36,160 Vi tælles så højt som syv, for eksempel tid sidste. 31 00:01:36,160 --> 00:01:38,840 Men alt, hvad vi skal gøre, er at holde smide flere og flere pærer på det 32 00:01:38,840 --> 00:01:41,820 problem og virkelig, at vi kan repræsentere vilkårligt antal, vi 33 00:01:41,820 --> 00:01:42,970 eventuelt ønsker. 34 00:01:42,970 --> 00:01:47,230 >> Nå, vi skiftet hurtigt derefter Onsdag til denne byte af frivillige. 35 00:01:47,230 --> 00:01:52,040 8 bit er, hvad vi normalt kalder en byte, så her havde vi otte frivillige 36 00:01:52,040 --> 00:01:54,900 onsdag der tilsammen var repræsenterer otte bits. 37 00:01:54,900 --> 00:01:56,750 Og når deres hænder gik op, de var en én. 38 00:01:56,750 --> 00:01:58,530 Og når deres hænder var ned, der var et nul. 39 00:01:58,530 --> 00:02:01,970 Og vi havde disse folk komme op på scenen hvorfor? 40 00:02:01,970 --> 00:02:06,530 Hvad vi er i stand til at gøre med denne sekvens af bits? 41 00:02:06,530 --> 00:02:07,510 >> Hvis du vil oprette et alfabet. 42 00:02:07,510 --> 00:02:11,550 Vi var i stand til at bygge videre på toppen af ​​det forrige lektion lærte og faktisk 43 00:02:11,550 --> 00:02:14,200 begynde at gøre mere interessant oplysninger, der er i det mindste mere 44 00:02:14,200 --> 00:02:15,330 velkendt for os mennesker. 45 00:02:15,330 --> 00:02:18,360 Og det vil være en tilbagevendende tema i hele 50, men også computer 46 00:02:18,360 --> 00:02:21,470 videnskab mere generelt, denne idé om lagdeling, hvor der ved udgangen af 47 00:02:21,470 --> 00:02:24,820 dag, hvis du virkelig startede basics med en computer ja, 48 00:02:24,820 --> 00:02:25,760 Det er nuller og ettaller. 49 00:02:25,760 --> 00:02:27,480 Og under det er bare elektricitet. 50 00:02:27,480 --> 00:02:30,840 Men vi meget hurtigt begynde at tage dem lavt niveau detaljer for givet 51 00:02:30,840 --> 00:02:35,600 og begynde at lag oven på tidligere arbejdede gøres, så vi i sidste ende ved 52 00:02:35,600 --> 00:02:38,610 slutningen af ​​semestret og virkelig, mere generelt som dataloger 53 00:02:38,610 --> 00:02:42,790 og programmører kan gøre nogle rigtig kraftfulde ting ved at udnytte arbejdet 54 00:02:42,790 --> 00:02:46,620 som vi selv har gjort, og også stående på skuldrene af andre. 55 00:02:46,620 --> 00:02:49,300 >> Nu vi hurtigt skiftet på onsdag fra blot at skulle 56 00:02:49,300 --> 00:02:52,080 repræsentere information til at ville at gøre noget med det. 57 00:02:52,080 --> 00:02:54,170 Så hvad gjorde vi definerer en algoritme, som? 58 00:02:54,170 --> 00:02:57,340 59 00:02:57,340 --> 00:02:58,900 En serie instruktioner. 60 00:02:58,900 --> 00:03:03,380 Så det er en række instruktioner, en Antallet af trin, du, et menneske, eller 61 00:03:03,380 --> 00:03:07,160 en computer, mere typisk, ville udføre efter hinanden i rækkefølge 62 00:03:07,160 --> 00:03:08,100 at opnå en vis mål. 63 00:03:08,100 --> 00:03:11,360 Og vi havde et par mål sidste gang, hvoraf den ene var at tælle 64 00:03:11,360 --> 00:03:12,250 personer i rummet. 65 00:03:12,250 --> 00:03:15,560 Og en anden sådant eksempel var at finde Mike Smith i en telefonbog. 66 00:03:15,560 --> 00:03:19,750 >> Så du kan huske, at jeg rev en telefon bog i halvdelen mod denne ende 67 00:03:19,750 --> 00:03:21,280 finde Mike Smith. 68 00:03:21,280 --> 00:03:24,000 Formålet med denne visuelle var at demonstrere igen, at vi var 69 00:03:24,000 --> 00:03:27,770 bogstaveligt rive dette problem halvdelen i halve, i halve, meget og 70 00:03:27,770 --> 00:03:31,750 hurtigt går fra ligesom 1.000 sider til blot én enkelt side. 71 00:03:31,750 --> 00:03:34,860 De af jer, der gik glip af dette på Onsdag Jeg troede, vi ville afspille 72 00:03:34,860 --> 00:03:36,820 nogle optagelser af, hvad du gik glip af. 73 00:03:36,820 --> 00:03:38,914 Lad os tage et kig. 74 00:03:38,914 --> 00:03:40,906 >> [VIDEO AFSPIL] 75 00:03:40,906 --> 00:03:55,360 76 00:03:55,360 --> 00:03:55,990 >> -Der går vi. 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 VIDEOAFSPILNING] 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 overgang, selvom, onsdag nu at ville repræsentere algoritmer 81 00:04:09,150 --> 00:04:12,410 i nogle lidt standard måde, ikke bare beskriver dem verbalt, men 82 00:04:12,410 --> 00:04:16,290 prøver at udtrykke dem skriftligt eller på en computerskærm, så vi kunne 83 00:04:16,290 --> 00:04:19,170 begynde at forbedre på, og ændre dem, og i sidste ende faktisk 84 00:04:19,170 --> 00:04:21,160 analysere, hvor korrekt eller hvor hurtigt de var. 85 00:04:21,160 --> 00:04:23,360 >> Så vi introducerede dette begreb af pseudokode, som i 86 00:04:23,360 --> 00:04:26,410 lægmandssprog, er hvad? 87 00:04:26,410 --> 00:04:26,930 OK, ord. 88 00:04:26,930 --> 00:04:28,730 Lad os gå lidt dybere end det. 89 00:04:28,730 --> 00:04:32,540 Engelsk, sikker på, er, men retning af, hvad ende? 90 00:04:32,540 --> 00:04:35,180 Ord med til at skabe eller at repræsentere algoritmer. 91 00:04:35,180 --> 00:04:38,380 Så der er ingen kendte sprog som pseudokode i verden. 92 00:04:38,380 --> 00:04:41,110 Det er bare, at du på engelsk eller uanset din talesprog er, brug 93 00:04:41,110 --> 00:04:44,930 en slags overfladisk notation til at formidle en idé meget kortfattet. 94 00:04:44,930 --> 00:04:47,930 Men vi vil se, at, i hvert fald med et Engelsk pseudokode, og det viser sig 95 00:04:47,930 --> 00:04:51,700 de fleste programmeringssprog selv er afledt af engelsk selv, 96 00:04:51,700 --> 00:04:55,750 finder vi, at der er nogle standard måder at repræsentere pseudokode og 97 00:04:55,750 --> 00:04:57,150 også programkode. 98 00:04:57,150 --> 00:05:00,200 Så når du begynder at se selv de simpleste eksempler i dag, realisere disse 99 00:05:00,200 --> 00:05:02,160 samme mønstre vil gentage sig i næste uge. 100 00:05:02,160 --> 00:05:04,710 >> Så pseudokode var en slags sprog ligner 101 00:05:04,710 --> 00:05:06,170 et programmeringssprog. 102 00:05:06,170 --> 00:05:09,260 Og det første eksempel så vi visuelt nedskrevet var denne. 103 00:05:09,260 --> 00:05:12,870 Det var kun en tre trins-programmet, mål var at tælle antallet 104 00:05:12,870 --> 00:05:15,650 mennesker i et kollegieværelse til at video på onsdag. 105 00:05:15,650 --> 00:05:19,040 Men der var et par interessante aspekter af dette enkleste program. 106 00:05:19,040 --> 00:05:20,320 >> Og det vil være tilbagevendende temaer. 107 00:05:20,320 --> 00:05:22,930 Så for dem, der ikke er bekendt med dette, man introducerede vi en variabel. 108 00:05:22,930 --> 00:05:25,650 Og sandsynligvis alle i dette rum er bekendt med en variabel i 109 00:05:25,650 --> 00:05:27,250 forbindelse med algebra. 110 00:05:27,250 --> 00:05:31,190 Men her i programmeringen, variabler er, en, kan være 111 00:05:31,190 --> 00:05:32,220 kaldes noget, vi ønsker. 112 00:05:32,220 --> 00:05:33,620 Vi har brugt n som en tæller. 113 00:05:33,620 --> 00:05:37,490 Men vi kunne bruge ordet counter, eller som du kan se, de fleste helst sætning, 114 00:05:37,490 --> 00:05:40,240 du måske gerne, så længe det er beskrivende, men det er egentlig bare en 115 00:05:40,240 --> 00:05:41,250 opbevaringsbeholder. 116 00:05:41,250 --> 00:05:44,170 Det er en luns af hukommelse, nogle antallet af bits, og det varierer fra computeren, hvordan 117 00:05:44,170 --> 00:05:47,020 mange bit der er at komponere denne variabel. 118 00:05:47,020 --> 00:05:48,450 >> Men vi kan sætte værdierne i det. 119 00:05:48,450 --> 00:05:50,740 Hidtil har vi kun sætte tal. 120 00:05:50,740 --> 00:05:52,290 Men vi kan sætte konkrete ord. 121 00:05:52,290 --> 00:05:53,420 Vi kan sætte stykker. 122 00:05:53,420 --> 00:05:54,560 Vi kan sætte billeder - 123 00:05:54,560 --> 00:05:57,860 noget, virkelig, at vi kan repræsentere med nuller og ettaller, kan vi sætte i 124 00:05:57,860 --> 00:05:59,820 dette højere niveau begreb af en variabel. 125 00:05:59,820 --> 00:06:01,350 >> Så ret ligetil der. 126 00:06:01,350 --> 00:06:02,210 Og det er linie et. 127 00:06:02,210 --> 00:06:05,340 Men vi meget hurtigt flyttede fra line den ene til rent faktisk at gøre 128 00:06:05,340 --> 00:06:06,600 noget med denne variabel. 129 00:06:06,600 --> 00:06:10,330 Og i tråd tre, opdaterede vi N. Vi øges N. Og vi kunne skrive dette 130 00:06:10,330 --> 00:06:11,330 en række forskellige måder. 131 00:06:11,330 --> 00:06:14,460 Men måske den mest oplagte er bare for at sige, sæt N lig med 132 00:06:14,460 --> 00:06:16,440 uanset N er plus 1. 133 00:06:16,440 --> 00:06:17,740 Så det var vores tilvækst. 134 00:06:17,740 --> 00:06:18,740 >> I mellemtiden var der en løkke. 135 00:06:18,740 --> 00:06:20,720 Og denne, også er formentlig temmelig intuitiv. 136 00:06:20,720 --> 00:06:24,250 En løkke er bare noget i et program det sker igen og igen, nogle 137 00:06:24,250 --> 00:06:25,190 slags cyklus. 138 00:06:25,190 --> 00:06:29,300 Og denne centrale sætning her, for hver, er faktisk meget almindeligt i det meste 139 00:06:29,300 --> 00:06:32,300 programmeringssprog, herunder dem, vi vil se i løbet. 140 00:06:32,300 --> 00:06:35,850 Anytime du ser ordet for det typisk formidler idéen om, at en 141 00:06:35,850 --> 00:06:38,410 løkke, noget cyklisk, er ved at ske. 142 00:06:38,410 --> 00:06:40,980 >> Men det er værd at bemærke en andre syntaktiske detalje. 143 00:06:40,980 --> 00:06:44,660 Det faktum, at tredje linje er faktisk indrykket ved at have ramt 144 00:06:44,660 --> 00:06:46,920 mellemrumstasten par gange er bevidst. 145 00:06:46,920 --> 00:06:49,870 Da humant konvention er således, når du laver noget igen, og 146 00:06:49,870 --> 00:06:54,860 igen i en løkke, begyndt som på linje to, du led noget, der tilhørte 147 00:06:54,860 --> 00:06:58,880 til loop bare for at gøre det klart, at det er linie tre og ikke, for eksempel, 148 00:06:58,880 --> 00:07:01,910 linie fire eller fem, hvis der var linjer for eller fem, som er 149 00:07:01,910 --> 00:07:03,010 del af denne sløjfer. 150 00:07:03,010 --> 00:07:07,340 Så dette simple indrykning formidler det grundlæggende idé. 151 00:07:07,340 --> 00:07:09,390 >> Så vi anvendte denne algoritme, nu, at et par eksempler. 152 00:07:09,390 --> 00:07:12,620 Og også dette simpelt eksempel i den virkelige verden. 153 00:07:12,620 --> 00:07:15,440 Men det kommer til at være repræsentative for hvordan du ville gå om at teste din 154 00:07:15,440 --> 00:07:17,500 ejer mere komplekse programmer. 155 00:07:17,500 --> 00:07:21,050 Du prøver et par scenarier, nogle repræsentanter indgange, og se om du 156 00:07:21,050 --> 00:07:22,180 få de ønskede resultater. 157 00:07:22,180 --> 00:07:25,090 >> Så dette eksempel havde to personer sidder i kollegieværelse. 158 00:07:25,090 --> 00:07:27,170 Til venstre er den samme pseudo-kode. 159 00:07:27,170 --> 00:07:30,800 Og dette er et skærmbillede af den meget sidste trin af anvendelsen af ​​denne 160 00:07:30,800 --> 00:07:35,270 algoritme til disse input, hvor der var to personer i rummet, og 161 00:07:35,270 --> 00:07:39,190 huske, da vi træder gennem linjerne én, 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 ved udgangen af ​​denne algoritme, vi havde faktisk tælles de to fellows, der er 164 00:07:44,870 --> 00:07:45,360 i rummet. 165 00:07:45,360 --> 00:07:47,190 >> Så vi prøvede et andet eksempel. 166 00:07:47,190 --> 00:07:48,990 Og vi sagde, hvad hvis der er nul personer i rummet? 167 00:07:48,990 --> 00:07:50,490 Er denne kode stadig korrekt? 168 00:07:50,490 --> 00:07:51,305 Og faktisk var det. 169 00:07:51,305 --> 00:07:55,240 Det bare så sker det, at linje to og dermed linie tre eller 170 00:07:55,240 --> 00:07:56,620 ikke kommer til at udføre. 171 00:07:56,620 --> 00:07:59,790 De kommer ikke til at ske på alle fordi de er bare ikke, hvis 172 00:07:59,790 --> 00:08:01,210 Der er nul personer i lokalet. 173 00:08:01,210 --> 00:08:02,300 >> Men ikke en big deal. 174 00:08:02,300 --> 00:08:06,620 Line den ene initialiseret N til nul, så selvom kun én linje af dette 175 00:08:06,620 --> 00:08:10,930 program faktisk ender med at være nyttig, det stadig giver det korrekte svar, som 176 00:08:10,930 --> 00:08:13,780 angivet ved den orange nul ved bunden. 177 00:08:13,780 --> 00:08:16,300 Men så besluttede vi, at var slags dum algoritme. 178 00:08:16,300 --> 00:08:17,060 Det var temmelig langsomme. 179 00:08:17,060 --> 00:08:19,720 Sikkert, jeg kan gøre to, fire, seks, otte, ti, når 180 00:08:19,720 --> 00:08:20,990 optælling personer i et rum. 181 00:08:20,990 --> 00:08:25,030 >> Så vi sammenknebne algoritmen, den pseudokode, for at sige, nu på linje to, 182 00:08:25,030 --> 00:08:29,710 for hvert par af mennesker i rummet, videre til på linje tre, tilvækst 183 00:08:29,710 --> 00:08:32,200 i ved to på hver iteration. 184 00:08:32,200 --> 00:08:35,530 Så det ville have fungeret her dette par personer i rummet. 185 00:08:35,530 --> 00:08:38,530 >> Men så, hvis du begynder at tænke over dette, og det tager ikke lang tid at 186 00:08:38,530 --> 00:08:40,710 indser, vent et øjeblik er det vil bryde, det bryder 187 00:08:40,710 --> 00:08:42,679 på, hvad simpel sag? 188 00:08:42,679 --> 00:08:45,500 Hvis der er tre personer i rummet, eller mere generelt, når der er en 189 00:08:45,500 --> 00:08:47,660 ulige antal personer i værelse, herunder en. 190 00:08:47,660 --> 00:08:50,390 Vi ville brænde den person her, fordi der ikke findes sådanne par. 191 00:08:50,390 --> 00:08:58,510 Så vi hurtigt behandlet af stedet indføre hvilke yderligere 192 00:08:58,510 --> 00:09:02,560 programmering konstruktioner til pseudokode. 193 00:09:02,560 --> 00:09:04,955 >> Så en tilstand, der kaldes vi det, eller en filial. 194 00:09:04,955 --> 00:09:08,420 Og det er meningen at formidle visuelt, at idé filial, en gaffel i vejen 195 00:09:08,420 --> 00:09:11,080 hvor du kan enten gøre dette eller, måske, noget andet. 196 00:09:11,080 --> 00:09:15,750 Og ja, vi tager fat på dette problem ved tilføjer linje 4, ved at sige, virkelig, at 197 00:09:15,750 --> 00:09:20,820 allersidst, hvis én person tilbage, derefter gå videre og tælle dem specielle. 198 00:09:20,820 --> 00:09:24,460 Så du sortere i særlige tilfælde dem, så til at tale, så vi nu kan håndtere 199 00:09:24,460 --> 00:09:27,810 både et lige antal mennesker og et ulige antal mennesker. 200 00:09:27,810 --> 00:09:30,260 >> Nu er der en række forskellige måder vi kunne have udtrykt dette. 201 00:09:30,260 --> 00:09:33,590 Og helt ærligt, kunne jeg har været endnu mere nit picky når det kom til mit valg af 202 00:09:33,590 --> 00:09:35,040 Engelsk til pseudokode. 203 00:09:35,040 --> 00:09:36,970 Men i det mindste ånden i ideen føres. 204 00:09:36,970 --> 00:09:40,725 Hvis du udleveret denne kode til en ven der er ikke i CS, eller har aldrig taget 205 00:09:40,725 --> 00:09:44,560 KS, odds er, de kunne regne ud, givet tre personer i rummet, hvordan 206 00:09:44,560 --> 00:09:46,870 tælle dem, der bygger folk på disse vejledninger. 207 00:09:46,870 --> 00:09:49,920 Og det er alt vi virkelig ønsker at opnå med pseudokode, på en måde 208 00:09:49,920 --> 00:09:54,300 standardisere hvordan vi går om repræsenterer idéer, så vi kan 209 00:09:54,300 --> 00:09:56,670 begynde at gøre mere kompliceret ting stadig. 210 00:09:56,670 --> 00:09:58,845 >> Så det fører os derefter, i dag, til den faktiske kode. 211 00:09:58,845 --> 00:10:01,950 Vi begynder at programmere i dag, omend i et venligt miljø. 212 00:10:01,950 --> 00:10:05,940 Og så har vi overgangen meget hurtigt en mere mystisk syntaks, men en, 213 00:10:05,940 --> 00:10:10,340 du vil se, er grundlæggende de samme som ideerne vil se manifesteret med 214 00:10:10,340 --> 00:10:11,990 dette andet sprog i dag. 215 00:10:11,990 --> 00:10:13,920 Det er bare at kigge lidt anderledes. 216 00:10:13,920 --> 00:10:16,590 >> Så snarere end blot kalde denne kode, jeg er kommer til at være lidt mere præcis 217 00:10:16,590 --> 00:10:20,170 og sige, fremover når du skriver en program, du skriver kildekode. 218 00:10:20,170 --> 00:10:21,990 Det er lidt ligesom pseudokode. 219 00:10:21,990 --> 00:10:26,540 Men vi vil se det er ikke slags løs når det kommer til at vælge de ord, 220 00:10:26,540 --> 00:10:27,310 , du bruger. 221 00:10:27,310 --> 00:10:31,300 Når programmering på et sprog, du har til at bruge de ord, de sætninger, 222 00:10:31,300 --> 00:10:36,020 den syntaks, at andre mennesker har besluttet udgør 223 00:10:36,020 --> 00:10:37,240 det pågældende sprog. 224 00:10:37,240 --> 00:10:38,510 Så pseudocodes er op til dig. 225 00:10:38,510 --> 00:10:42,330 En egentlig programmeringssprog som C, da vi i sidste ende vil se, er 226 00:10:42,330 --> 00:10:43,590 standardiseret af andre mennesker. 227 00:10:43,590 --> 00:10:45,590 >> Så hvordan kan vi gå om at skrive nogle kildekoden? 228 00:10:45,590 --> 00:10:46,810 Jamen jeg har tænkt mig at gå videre og gøre dette. 229 00:10:46,810 --> 00:10:49,100 Jeg har tænkt mig at gå videre og åbne et vindue her. 230 00:10:49,100 --> 00:10:50,210 Mere om dette i næste uge. 231 00:10:50,210 --> 00:10:52,300 Men dette er en enhed kaldet Den CS50 apparatet. 232 00:10:52,300 --> 00:10:55,480 Jeg kører et stykke software på min Mac, selvom du kan gøre det samme 233 00:10:55,480 --> 00:11:00,580 på en Windows-computer, er, at give mig illusionen kører med et andet 234 00:11:00,580 --> 00:11:03,700 operativsystem helt ret her i et vindue på min Mac. 235 00:11:03,700 --> 00:11:06,790 Jeg har bare fuld screenet det, så du ikke faktisk se Mac OS lige nu. 236 00:11:06,790 --> 00:11:08,340 >> Dette er et operativsystem kaldet Linux. 237 00:11:08,340 --> 00:11:09,300 Det er meget populært. 238 00:11:09,300 --> 00:11:10,120 Det er meget hurtigt. 239 00:11:10,120 --> 00:11:12,950 Det er meget frit, hvilket har gjort det meget overbevisende, især i 240 00:11:12,950 --> 00:11:13,970 kommercielle verden. 241 00:11:13,970 --> 00:11:17,200 Og mere om det i slutningen af semester, når vi bruger Linux ganske lidt 242 00:11:17,200 --> 00:11:21,230 for web programmering og hosting af faktiske hjemmesider og projekter. 243 00:11:21,230 --> 00:11:24,910 Så nu, bare vide, at det er en desktop der er beregnet til at se vagt 244 00:11:24,910 --> 00:11:26,750 kender til Windows og Mac OS. 245 00:11:26,750 --> 00:11:29,110 Det bare har nogle forskellige navne og ikoner for ting. 246 00:11:29,110 --> 00:11:32,510 Men dette er den såkaldte CS50 apparat, en virtuel maskine, der, 247 00:11:32,510 --> 00:11:35,310 starter næste uge, vil du fyre kører inde i et vindue 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, vil jeg åbne op den enkleste af programmerne. 250 00:11:39,760 --> 00:11:41,110 Det hedder gedit. 251 00:11:41,110 --> 00:11:42,565 Og dette er blot en grafisk editor. 252 00:11:42,565 --> 00:11:44,695 Det er lidt ligesom Microsoft Word, men enklere. 253 00:11:44,695 --> 00:11:47,110 Det er lidt ligesom tekst redigere eller notesblok. 254 00:11:47,110 --> 00:11:50,280 Det er bare en meget simpel program med til at skrive ord på skærmen. 255 00:11:50,280 --> 00:11:54,510 Det bare så hvad sker der, hvis jeg gemmer filer, som jeg skaber, når dette program 256 00:11:54,510 --> 00:11:59,860 i en særlig forlængelse ud. c, i stedet af. doc, eller. xls, eller hvad 257 00:11:59,860 --> 00:12:04,190 du er fortrolig med, kan jeg faktisk skabe programmer ved hjælp selv dette simple 258 00:12:04,190 --> 00:12:05,130 teksteditor. 259 00:12:05,130 --> 00:12:05,770 >> Så lad mig gøre det. 260 00:12:05,770 --> 00:12:09,330 Lad mig gå videre og gemme denne fil først som hello.c. 261 00:12:09,330 --> 00:12:12,350 Og igen, denne brugergrænseflade bliver bekendt for dig hurtigt. 262 00:12:12,350 --> 00:12:14,160 Men for nu, jeg bare skrive i et filnavn. 263 00:12:14,160 --> 00:12:17,410 Jeg har tænkt mig at gemme det ind i min John Harvard hjemmebibliotek. 264 00:12:17,410 --> 00:12:20,810 Og nu har jeg denne fane, der angiver Jeg faktisk redigering 265 00:12:20,810 --> 00:12:23,070 en fil kaldet hello.c. 266 00:12:23,070 --> 00:12:24,510 Så intet også interessant alligevel. 267 00:12:24,510 --> 00:12:26,000 >> Og nu er det kommer til at få temmelig kryptisk. 268 00:12:26,000 --> 00:12:28,370 Jeg har tænkt mig at zoome ind, bare så det er mere synligt. 269 00:12:28,370 --> 00:12:35,780 Og jeg har tænkt mig at begynde at skrive omfatte stdio.h, int main, ugyldig, åben krøllet 270 00:12:35,780 --> 00:12:40,140 klampe, en, to, tre, fire rum af indrykning, print f, for print 271 00:12:40,140 --> 00:12:44,450 noget formateret, citat citat slut, "Hej, verden" omvendt skråstreg, n, close 272 00:12:44,450 --> 00:12:49,640 citerer, lukket parentes semikolon, indtaste 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 programmeret. 275 00:12:53,350 --> 00:12:57,380 >> Okay så dette er en super enkel program, virkelig, det program, 276 00:12:57,380 --> 00:12:59,070 nogen starter programmering med. 277 00:12:59,070 --> 00:13:02,300 Og alt det gør, for al sin kompleksitet, er udskrive på 278 00:13:02,300 --> 00:13:04,160 skærm, gæt hvad? 279 00:13:04,160 --> 00:13:04,910 Hej Verden. 280 00:13:04,910 --> 00:13:07,500 Men det er ikke nok blot at skrive et program. 281 00:13:07,500 --> 00:13:08,155 Så dette er kode. 282 00:13:08,155 --> 00:13:11,300 Dette er kildekoden i et sprog kaldet ca. 283 00:13:11,300 --> 00:13:14,380 Det er gemt i øjeblikket en fil kaldet hello.c. 284 00:13:14,380 --> 00:13:16,180 >> Nu se nederst af skærmen her. 285 00:13:16,180 --> 00:13:17,890 Mere om dette, igen, i de kommende uger. 286 00:13:17,890 --> 00:13:19,570 Men dette er, hvad vi vil kalde et terminalvindue. 287 00:13:19,570 --> 00:13:21,290 Det er en blinkende, sort og hvide prompt. 288 00:13:21,290 --> 00:13:24,390 Det er en slags en gammel skole grænseflade til en computer, der generelt ikke 289 00:13:24,390 --> 00:13:27,050 bruge en mus eller anden grafiske elementer. 290 00:13:27,050 --> 00:13:28,320 Det bare bruger dit tastatur. 291 00:13:28,320 --> 00:13:30,970 Og jeg kan skrive kommandoer på dette blinkende prompt. 292 00:13:30,970 --> 00:13:33,820 >> Og for nutidens formål, er jeg bare kommer til at skrive følgende - 293 00:13:33,820 --> 00:13:35,610 gøre hej. 294 00:13:35,610 --> 00:13:39,370 Og det program, gør, er bare en program, der i den virkelige verden disse 295 00:13:39,370 --> 00:13:40,690 dage, ville vi dobbeltklikke på. 296 00:13:40,690 --> 00:13:44,580 Men i denne grænseflade for i dag, er vi kommer til at skrive sit navn ved denne prompt. 297 00:13:44,580 --> 00:13:47,980 gøre hej bogstaveligt talt gå til gøre mig et program kaldet hej. 298 00:13:47,980 --> 00:13:51,360 Og det kommer til at gøre det ved at kigge efter en fil, ved blot 299 00:13:51,360 --> 00:13:53,460 standard, kaldet hello.c. 300 00:13:53,460 --> 00:13:57,260 Det kommer til at antage, jeg vil have et C-program ved karakter af, hvordan denne computer 301 00:13:57,260 --> 00:13:58,230 er konfigureret. 302 00:13:58,230 --> 00:13:59,550 >> Så jeg går videre og tryk enter. 303 00:13:59,550 --> 00:14:02,050 Jeg ser nogle kryptiske output, men dette vil blive alt for 304 00:14:02,050 --> 00:14:03,330 velkendt inden længe. 305 00:14:03,330 --> 00:14:06,870 Dette skete for at køre en compiler, mere om det i et øjeblik, kaldet Clang. 306 00:14:06,870 --> 00:14:09,080 Men nu har jeg fået bare en anden blinke bede. 307 00:14:09,080 --> 00:14:13,060 Og jeg kan gå videre nu, og skriv dot slash, for uinteressante grunde vil vi 308 00:14:13,060 --> 00:14:14,730 komme tilbage til næste uge - 309 00:14:14,730 --> 00:14:15,910 hej. 310 00:14:15,910 --> 00:14:19,650 >> Så alt i denne indsats hidtil blot at skriver den enkleste af programmer, der, 311 00:14:19,650 --> 00:14:22,640 så snart jeg trykker på Enter, gø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 bevidst grin på dette meget simpelt program 314 00:14:27,500 --> 00:14:28,540 for et par grunde. 315 00:14:28,540 --> 00:14:31,990 One, det er svært at blive ophidset om at tage en klasse, hvis 316 00:14:31,990 --> 00:14:33,430 dette er enden spillet. 317 00:14:33,430 --> 00:14:37,100 >> Men mere end det, er der en masser af distraktioner heroppe. 318 00:14:37,100 --> 00:14:40,640 Første gang du lærer at programmere, for dem af jer mindre komfortabel, og 319 00:14:40,640 --> 00:14:43,410 selv jeg, tilbage i dag, da jeg først så noget som dette - du kan slags 320 00:14:43,410 --> 00:14:46,500 af tal, der, okay, det er i en print hej verden. 321 00:14:46,500 --> 00:14:47,860 Men der er så meget distraktion. 322 00:14:47,860 --> 00:14:52,110 Der er så meget syntaks på skærmen at det bliver i vejen for meget 323 00:14:52,110 --> 00:14:54,170 enkle, ellers enkle, idéer. 324 00:14:54,170 --> 00:14:56,700 >> Så det, vi kommer til at gøre i dag, er vi kommer til at lægge C og kommer 325 00:14:56,700 --> 00:14:57,630 tilbage til det på mandag. 326 00:14:57,630 --> 00:15:00,860 Og vi kommer til at bruge en grafisk programmeringssprog kaldet Scratch. 327 00:15:00,860 --> 00:15:04,470 Dette er et programmeringssprog, som jeg hentydet til på onsdag, er, at gå 328 00:15:04,470 --> 00:15:08,870 at tillade os at gøre det samme slags ting men vender det blinde øje, for i dag, 329 00:15:08,870 --> 00:15:12,270 til de krøllede parenteser, parenteser, de semikolon og alle disse dumme 330 00:15:12,270 --> 00:15:15,680 distraktioner, der kommer i vejen, i denne første dag i nogle grundlæggende, smukke 331 00:15:15,680 --> 00:15:17,230 interessante idéer. 332 00:15:17,230 --> 00:15:21,350 >> Så mod denne ende, jeg kommer til at gå tilbage til mit skrivebord herover og 333 00:15:21,350 --> 00:15:25,890 introducere dig til alternativ til at program, som kommer til at se en 334 00:15:25,890 --> 00:15:30,790 lidt noget lys dette. 335 00:15:30,790 --> 00:15:33,930 Det er, hvordan vi kommer til at gennemføre denne samme program i dag - to puslespil 336 00:15:33,930 --> 00:15:37,710 stykker, når sammenføjningsanordninger og klikkede på, vil sige til verden, 337 00:15:37,710 --> 00:15:39,000 hej verden. 338 00:15:39,000 --> 00:15:41,200 >> Så lad os faktisk gå der. 339 00:15:41,200 --> 00:15:44,965 Så jeg har tænkt mig at gå videre og åbne en websted, kaldet scratch.mit.edu. 340 00:15:44,965 --> 00:15:47,980 341 00:15:47,980 --> 00:15:52,040 Og det vil føre mig til denne hjemmeside her. 342 00:15:52,040 --> 00:15:54,660 På forhånd har jeg logget ind i dette hjemmeside og de første problemer, der 343 00:15:54,660 --> 00:15:55,910 vil lede dig gennem nogle af disse trin. 344 00:15:55,910 --> 00:15:58,930 Jeg har tænkt mig at gå videre og klik på på min scratch mappe her. 345 00:15:58,930 --> 00:16:00,720 >> Og det kommer til at vise mig nogle projekter, som jeg har 346 00:16:00,720 --> 00:16:02,570 faktisk skabt på forhånd. 347 00:16:02,570 --> 00:16:05,860 Og det viser sig, at denne grafiske programmeringssprog ikke kun kommer 348 00:16:05,860 --> 00:16:08,480 at lade os program ved at trække og droppe disse puslespilsbrikker, du 349 00:16:08,480 --> 00:16:09,730 behøver ikke engang speciel software. 350 00:16:09,730 --> 00:16:13,190 Det hele er indlejret i en browser, så at du kan gøre dette, i teorien, om 351 00:16:13,190 --> 00:16:16,810 dine computere lige nu, som nogle af jer kan meget vel være, uden selv at skulle 352 00:16:16,810 --> 00:16:19,870 software som CS50 apparat, som vil komme i næste uge. 353 00:16:19,870 --> 00:16:24,200 >> Så jeg har tænkt mig at gå op til det øverste hjørne her og klik på Opret. 354 00:16:24,200 --> 00:16:27,840 Og i et øjeblik jeg har tænkt mig at få en blank skærm via som jeg kan begynde 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 gang, det vil være meget, meget enklere at rent faktisk gør det. 357 00:16:36,140 --> 00:16:41,560 Så i bare et øjeblik, hvor Wi-Fi samarbejder, vi nu har denne skærm. 358 00:16:41,560 --> 00:16:44,870 Så en hurtig verbal tour, men jeg tør sige, sikkert, når du dykke ned i 359 00:16:44,870 --> 00:16:46,840 første problem sæt, vil du finder dette alt sammen meget 360 00:16:46,840 --> 00:16:48,315 tilgængelig og temmelig intuitiv. 361 00:16:48,315 --> 00:16:50,900 Men lad os male et mentalt billede for bare et øjeblik. 362 00:16:50,900 --> 00:16:54,620 >> Så under denne prompt siger save ændringer, du er ved at se bunden. 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å, hvad vi vil kalde en scene, denne store hvide rektangel på 366 00:17:00,740 --> 00:17:03,120 som han kan bevæge sig op, ned, venstre, ret, og gør, virkelig, 367 00:17:03,120 --> 00:17:04,670 andre typer af handlinger. 368 00:17:04,670 --> 00:17:08,780 >> I mellemtiden, i midten af ​​denne bruger interface, har vi en hel masse 369 00:17:08,780 --> 00:17:09,750 puslespilsbrikker. 370 00:17:09,750 --> 00:17:14,060 Og du vil se, at de siger ting som flytte 10 trin, vendte 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 der er kategorier af blokke op her også. 373 00:17:17,910 --> 00:17:21,410 Så hvis jeg går til udseende, vil du se, at der er andre brikker, der 374 00:17:21,410 --> 00:17:25,530 tilsyneladende vil fortælle dette cit til sige goddag, til at tænke, for at vise 375 00:17:25,530 --> 00:17:26,780 selv, skjule sig. 376 00:17:26,780 --> 00:17:30,830 Hvis jeg går ned til Sounds, viser det sig der er måder at spille lyder som mjave, 377 00:17:30,830 --> 00:17:32,670 at stoppe alle lyde, til at spille en tromme. 378 00:17:32,670 --> 00:17:36,530 >> Så lang historie kort, er der en hel bundt af puslespilsbrikker, der giver dig 379 00:17:36,530 --> 00:17:40,920 at fortælle denne kat, eller en række af andre figurer, hvad de skal gøre. 380 00:17:40,920 --> 00:17:43,850 Men for at gøre alt dette ske dig nødt til at starte programmeringen. 381 00:17:43,850 --> 00:17:48,090 Og denne store hvide boks eller grå boks på højre side, det er her 382 00:17:48,090 --> 00:17:50,170 Jeg har tænkt mig at rent faktisk trække og droppe dem puslespilsbrikker. 383 00:17:50,170 --> 00:17:54,320 Det er min blank tekst vindue tilsvarende. 384 00:17:54,320 --> 00:17:57,070 >> Så jeg har tænkt mig at gå videre og klik på Kontrol i midten. 385 00:17:57,070 --> 00:17:58,540 Eller rettere, lad mig starte op under Events. 386 00:17:58,540 --> 00:18:01,530 Under Events bænk, vil du bemærke en nogle ting, der er bevidst 387 00:18:01,530 --> 00:18:05,240 buet på toppen på en sådan måde, at de sandsynligvis ikke interlock på 388 00:18:05,240 --> 00:18:06,710 toppen af ​​puslespilsbrikker. 389 00:18:06,710 --> 00:18:10,160 Og det er fordi de Demark start af et program, starten på en 390 00:18:10,160 --> 00:18:11,910 script, så at sige. 391 00:18:11,910 --> 00:18:16,290 Så hvis jeg gå videre og trække, når grøn flag klikkede herovre, og så er jeg 392 00:18:16,290 --> 00:18:18,060 ønsker denne kat til at sige noget i første omgang. 393 00:18:18,060 --> 00:18:20,510 Så jeg har tænkt mig at gå under ser panelet. 394 00:18:20,510 --> 00:18:24,060 Og jeg har tænkt mig at gå videre og få fat i sige goddag blok, og træk og slip, 395 00:18:24,060 --> 00:18:27,220 og slip, så den automatisk sammenlåser der. 396 00:18:27,220 --> 00:18:28,640 >> Og så bemærker jeg kan klikke på teksten. 397 00:18:28,640 --> 00:18:31,960 Og jeg kan tilsidesætte den til at være mere specifik gerne sige, hej verden. 398 00:18:31,960 --> 00:18:36,340 Og nu har vi det program, jeg hævder svarer til, at meget mere 399 00:18:36,340 --> 00:18:39,670 mystiske program jeg implementeret i C for et øjeblik siden. 400 00:18:39,670 --> 00:18:43,130 >> Hvis jeg går forbi nu til den venstre side, bemærke at der er en stor stop-skilt 401 00:18:43,130 --> 00:18:44,520 og et stort grønt flag. 402 00:18:44,520 --> 00:18:46,390 Lad mig zoome ind for klarhed. 403 00:18:46,390 --> 00:18:49,390 Og når jeg nu klikke denne grønne flag, kan du sikkert gætte, hvad denne første 404 00:18:49,390 --> 00:18:51,920 program er nu vil gøre. 405 00:18:51,920 --> 00:18:55,420 Så der også, vi programmerer, men vi faktisk ikke at køre fast 406 00:18:55,420 --> 00:18:58,980 i nogle af disse syntaktiske, mindste detaljer. 407 00:18:58,980 --> 00:19:01,120 >> Men lad os prøve noget lidt mere interessant. 408 00:19:01,120 --> 00:19:04,840 Lad mig gå ind i min Scratch folder her. 409 00:19:04,840 --> 00:19:10,210 Og faktisk, lad mig så lad mig åbne op et særskilt program her til blot en 410 00:19:10,210 --> 00:19:17,830 øjeblik, Maksimer vinduet, Fil Open, og jeg har tænkt mig at gå ind i nutidens 411 00:19:17,830 --> 00:19:18,620 source bibliotek. 412 00:19:18,620 --> 00:19:21,660 Som altid finder du, dag og og fremefter, at alle nutidens eksempler 413 00:19:21,660 --> 00:19:25,225 er tilgængelige inde i kursets hjemmeside. 414 00:19:25,225 --> 00:19:31,170 >> Og jeg har tænkt mig at gå videre her og pick op lidt noget andet. 415 00:19:31,170 --> 00:19:33,970 Denne ene her, som Jeg har brug for 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, hvordan om en person lidt - er du på enden? 418 00:19:40,600 --> 00:19:42,124 Kom ned. 419 00:19:42,124 --> 00:19:47,230 Nu vil du gerne deltage, eller bare sige 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 Fremragende, hvad er dit navn? 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 Hyggeligt at møde dig. 426 00:19:51,390 --> 00:19:53,840 Så kom op og Vanessa kommer at tage kontrol over min 427 00:19:53,840 --> 00:19:55,490 tastatur til bare et øjeblik. 428 00:19:55,490 --> 00:19:57,850 Og hvad jeg har gjort her, bare for tidens skyld, som jeg har indset den 429 00:19:57,850 --> 00:20:01,070 Wi-Fi var lidt langsomme, Scratch, den programmering miljø, som vi er 430 00:20:01,070 --> 00:20:04,110 bruger, kan også downloades og køre på din lokale computer. 431 00:20:04,110 --> 00:20:06,360 Så hvad jeg gjorde i forvejen foredrag i sag, der sker, er jeg downloadet 432 00:20:06,360 --> 00:20:09,120 alle de filer, vi er ved at lege med således at de kan køre lidt mere 433 00:20:09,120 --> 00:20:10,840 hurtigt lige her på min bærbare computer. 434 00:20:10,840 --> 00:20:13,460 Så det er derfor nu ser jeg en Mac-specifik grænseflade. 435 00:20:13,460 --> 00:20:15,510 >> Så jeg har tænkt mig at gå videre og åbne denne ene. 436 00:20:15,510 --> 00:20:18,400 Jeg har tænkt mig at gå videre nu, og fuld skærm vinduet. 437 00:20:18,400 --> 00:20:21,740 Og som du kan se, kan vi meget hurtigt, som denne elev gjorde, en af 438 00:20:21,740 --> 00:20:26,360 Deres forgængere, gå fra hej verden til en meget, meget mere overbevisende 439 00:20:26,360 --> 00:20:27,020 ansøgning. 440 00:20:27,020 --> 00:20:28,180 Så her er de instruktioner. 441 00:20:28,180 --> 00:20:29,500 Åh, og vi har en anden ting. 442 00:20:29,500 --> 00:20:31,640 Jeg troede det ville være sjovt, da normalt, vil vi filme 443 00:20:31,640 --> 00:20:32,440 kameraer på denne måde. 444 00:20:32,440 --> 00:20:34,100 Jeg troede, det ville være sjovt, hvis Vanessa, vi kunne se verden 445 00:20:34,100 --> 00:20:35,120 gennem dine øjne. 446 00:20:35,120 --> 00:20:36,670 Så her har vi nogle Google Glass. 447 00:20:36,670 --> 00:20:39,290 >> [Forbavset gisp] 448 00:20:39,290 --> 00:20:41,610 >> DAVID MALAN: Vi vil kun give væk bordlamper i dag. 449 00:20:41,610 --> 00:20:43,530 >> [Latter] 450 00:20:43,530 --> 00:20:45,260 >> Så lad mig cue dette op. 451 00:20:45,260 --> 00:20:49,340 Okay, så røre ved dette. 452 00:20:49,340 --> 00:20:51,910 OK, Glass, optage en video. 453 00:20:51,910 --> 00:20:55,700 454 00:20:55,700 --> 00:20:56,950 Okay, Vanessa? 455 00:20:56,950 --> 00:21:00,940 456 00:21:00,940 --> 00:21:05,560 Nu, som en sidebemærkning, der har fået noget at gøre med Scratch, hvis man ser 457 00:21:05,560 --> 00:21:08,540 lidt op og til højre, vil du se den bogstavelige glas, og du bør 458 00:21:08,540 --> 00:21:09,650 se et lille rektangulært vindue. 459 00:21:09,650 --> 00:21:11,500 Du bør se alle dine klassekammerater bliver filmet lige nu? 460 00:21:11,500 --> 00:21:11,840 Ja. 461 00:21:11,840 --> 00:21:12,340 >> VANESSA: Ja. 462 00:21:12,340 --> 00:21:12,920 >> DAVID MALAN: OK. 463 00:21:12,920 --> 00:21:15,170 Så det er fint. 464 00:21:15,170 --> 00:21:16,660 Vi frigive denne optagelserne senere. 465 00:21:16,660 --> 00:21:18,460 For nu, vende din opmærksomhed til skærmen her. 466 00:21:18,460 --> 00:21:20,990 Og hvad Deres forgænger har gjort, er sætte nogle instruktioner på skærmen 467 00:21:20,990 --> 00:21:22,670 blot ved hjælp af en maling program. 468 00:21:22,670 --> 00:21:25,040 Så du kommer til at, i et øjeblik, trykke på mellemrumstasten for at starte. 469 00:21:25,040 --> 00:21:27,790 Og så nogle puslespilsbrikker går at begynde at bevæge sig på skærmen. 470 00:21:27,790 --> 00:21:30,900 Og du ønsker at ramme piletasterne, bare ligesom i det virkelige DDR, i overensstemmelse 471 00:21:30,900 --> 00:21:32,740 med ting foring op med disse pile. 472 00:21:32,740 --> 00:21:33,020 >> VANESSA: OK. 473 00:21:33,020 --> 00:21:33,800 >> DAVID MALAN: Du har spillet det før. 474 00:21:33,800 --> 00:21:34,140 >> VANESSA: Ja. 475 00:21:34,140 --> 00:21:37,330 >> DAVID MALAN: Okay, Vanessa, gå videre og tage det væk. 476 00:21:37,330 --> 00:22:53,082 >> [MUSIC - Kayne WEST, "stærkere"] 477 00:22:53,082 --> 00:22:57,080 >> [Applaus] 478 00:22:57,080 --> 00:22:59,750 >> DAVID MALAN: Så lad os nu tage et skridt fra der. 479 00:22:59,750 --> 00:23:01,230 Så tydeligt, det er slutningen spillet. 480 00:23:01,230 --> 00:23:02,880 Enden Spillet er ikke hej verden. 481 00:23:02,880 --> 00:23:05,520 Men du behøver ikke nødvendigvis at gøre ting, der er så interaktivt. 482 00:23:05,520 --> 00:23:06,810 Du kan også gøre animation. 483 00:23:06,810 --> 00:23:10,790 Så for eksempel, en anden af ​​dine efterfølgere gjorde dette program her, 484 00:23:10,790 --> 00:23:14,100 som fortæller en historie mere end det gør implementeret et spil. 485 00:23:14,100 --> 00:23:19,180 Så lad mig gå videre og åbne op her en program i vores samme kilde bibliotek 486 00:23:19,180 --> 00:23:20,300 fra i dag. 487 00:23:20,300 --> 00:23:26,990 Denne ene opkald, og lad os starte med en cookie kærlighedshistorie. 488 00:23:26,990 --> 00:23:30,750 >> Og ikke for at gøre dette for akademisk, men som du ser dette, tænke at 489 00:23:30,750 --> 00:23:34,030 dig selv, hvilke af disse simple programmering begreber vi har talt 490 00:23:34,030 --> 00:23:34,630 om hidtil - 491 00:23:34,630 --> 00:23:39,250 variabler, og løkker og betingelser, har din forgænger formentlig bruge bare 492 00:23:39,250 --> 00:23:41,090 at gennemføre nogle af visualiseringer. 493 00:23:41,090 --> 00:23:41,760 Du ser her. 494 00:23:41,760 --> 00:23:44,118 Så jeg giver dig En cookie kærlighedshistorie. 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 - skildpadder, "Happy Together"] 498 00:24:09,272 --> 00:24:58,328 499 00:24:58,328 --> 00:25:00,560 >> DAVID MALAN: Okay, så der, vi havde en cookie kærlighedshistorie. 500 00:25:00,560 --> 00:25:01,360 Men selv der - 501 00:25:01,360 --> 00:25:01,755 >> [Applaus] 502 00:25:01,755 --> 00:25:08,110 >> DAVID MALAN: Okay, selv der, tænke, da disse hjerter gik fra 503 00:25:08,110 --> 00:25:10,410 bunden til toppen af ​​skærmen, der var faktisk en smule 504 00:25:10,410 --> 00:25:11,440 tilfældighed foregår. 505 00:25:11,440 --> 00:25:14,150 Og ja, vil vi se, at selv i enkleste af miljøer, ligesom 506 00:25:14,150 --> 00:25:18,180 Scratch, som i C, kan du generere tilfældige tal, eller illusionen om 507 00:25:18,180 --> 00:25:21,110 tilfældige tal, så spillet er et lidt mere interessant end det måske 508 00:25:21,110 --> 00:25:23,390 være, hvis du havde absolut hårdt kodet alt. 509 00:25:23,390 --> 00:25:26,360 >> I den bevægelse, du ser, er der er en vis form for lydhørhed. 510 00:25:26,360 --> 00:25:28,840 Så snart kagemand rører honningkager kvinde, hun 511 00:25:28,840 --> 00:25:30,000 synes at bevæge sig væk. 512 00:25:30,000 --> 00:25:33,580 Og så, ja, kan du implementere i de fleste programmeringssprog, begrebet 513 00:25:33,580 --> 00:25:38,680 af begivenheder, hvor Hvis en hånd rører den anden side, der kan udløse nogle 514 00:25:38,680 --> 00:25:41,270 af din kildekode til faktisk at gennemføre. 515 00:25:41,270 --> 00:25:43,740 Du kan lytte til en sådan ting på skærmen. 516 00:25:43,740 --> 00:25:47,310 >> Så lad os tage en hurtig tur, så med nogle af de byggesten, vi kan bruge 517 00:25:47,310 --> 00:25:48,790 at opnå nogle af disse mål. 518 00:25:48,790 --> 00:25:51,630 Så her er, hvad vi vil fremover kalde en erklæring. 519 00:25:51,630 --> 00:25:55,030 En erklæring sker for at være lilla i Scratch, lidt noget som dette, 520 00:25:55,030 --> 00:25:56,120 men det er vilkårlige. 521 00:25:56,120 --> 00:26:00,140 En erklæring er bare et brik, eller, mere generelt, en instruktion, der 522 00:26:00,140 --> 00:26:03,370 fortæller computeren til at gøre noget, en erklæring. 523 00:26:03,370 --> 00:26:04,680 >> Så her er en simpel prøve. 524 00:26:04,680 --> 00:26:05,930 Sig hej verden. 525 00:26:05,930 --> 00:26:08,180 En anden kunne være vente et sekund. 526 00:26:08,180 --> 00:26:10,840 Så dette brik, der er støttet i Scratch, vil vi lade din 527 00:26:10,840 --> 00:26:13,050 tegn pause for nogle antal sekunder. 528 00:26:13,050 --> 00:26:15,330 Også dette er blot en erklæring. 529 00:26:15,330 --> 00:26:18,640 >> Her næste, vi har en anden mere interessant, play lyd miaver og 530 00:26:18,640 --> 00:26:21,480 den lille pil betyder, at i Scratch, dette er en drop down menu. 531 00:26:21,480 --> 00:26:22,590 Så du kan importere lyde. 532 00:26:22,590 --> 00:26:25,095 Du kan optage lyde og gøre andet sjove ting i bunden. 533 00:26:25,095 --> 00:26:28,450 Og det også selvom i slutningen af dagen, er bare en erklæring. 534 00:26:28,450 --> 00:26:31,250 Men lad os nu indføre en mere interessant stykke, der er kendt som en 535 00:26:31,250 --> 00:26:32,630 Boolske udtryk. 536 00:26:32,630 --> 00:26:35,180 Capital B, opkaldt efter en fyr ved navn Bool. 537 00:26:35,180 --> 00:26:39,500 >> Og en boolesk udtryk er bare en brik eller mere generelt, en 538 00:26:39,500 --> 00:26:42,980 stykke information, der er enten sand eller falsk - 539 00:26:42,980 --> 00:26:45,830 en eller nul, ja eller nej. 540 00:26:45,830 --> 00:26:48,420 Så det er bare en af ​​dem to modsætninger. 541 00:26:48,420 --> 00:26:52,840 Så en sådan Boolske udtryk i verden af ​​Scratch ligner denne blå 542 00:26:52,840 --> 00:26:53,560 brik. 543 00:26:53,560 --> 00:26:56,735 Og det er at stille et spørgsmål, mus ned, og det kan enten være af 544 00:26:56,735 --> 00:26:58,430 Selvfølgelig sande eller falske. 545 00:26:58,430 --> 00:27:01,710 Så med dette puslespil brik i Scratch, godt, vil du være i stand til at opdage, hvis en 546 00:27:01,710 --> 00:27:05,490 puslespil om musen er, i virkeligheden, bliver holdt nede af den menneskelige interaktion 547 00:27:05,490 --> 00:27:06,550 med dit program. 548 00:27:06,550 --> 00:27:08,860 >> Denne ene er lidt mere abstrakt, men disse to hvide kasser 549 00:27:08,860 --> 00:27:09,740 er bare for tal. 550 00:27:09,740 --> 00:27:12,950 Så du kan gøre ting som dette er tal mindre end den anden? 551 00:27:12,950 --> 00:27:16,180 Og hvis ja, vil Scratch opfører ene eller den anden måde. 552 00:27:16,180 --> 00:27:17,505 Denne ene er lidt mere grafisk. 553 00:27:17,505 --> 00:27:21,840 Det er, hvis Sprite, hvis katten, for Eksempelvis er faktisk rører 554 00:27:21,840 --> 00:27:22,510 musemarkøren. 555 00:27:22,510 --> 00:27:25,780 Så hvis den lille pil hoved svæver over katten, så dette 556 00:27:25,780 --> 00:27:28,030 brik vil evaluere til true. 557 00:27:28,030 --> 00:27:31,870 Det vil være sandt, i hvilket tilfælde, hvis du bruge denne boolesk udtryk, som vi vil 558 00:27:31,870 --> 00:27:36,340 se i et øjeblik, i en filial, kan du enten gøre dette, eller du kan gøre det, 559 00:27:36,340 --> 00:27:39,940 meget ligesom vi havde en betingelse, at markeret, er der endnu et sidste person 560 00:27:39,940 --> 00:27:40,460 i rummet? 561 00:27:40,460 --> 00:27:42,070 Hvis ja, tilføje en. 562 00:27:42,070 --> 00:27:44,430 Ellers, så fortvivl ikke yderligere. 563 00:27:44,430 --> 00:27:48,650 >> Så en boolesk udtryk kan også være and-ed sammen eller or-ed sammen. 564 00:27:48,650 --> 00:27:53,120 Så du kan kombinere booleske udtryk og sige dette, og det skal være sandt for 565 00:27:53,120 --> 00:27:54,710 det hele til at være sandt. 566 00:27:54,710 --> 00:27:56,520 Og her er en mere virkelig verden eksempel. 567 00:27:56,520 --> 00:28:00,060 Hvis du har brugt CS50 Kurser til at gøre kurset shopping, disse afkrydsningsfelter 568 00:28:00,060 --> 00:28:03,520 der, hvor, hvis du kontrollere, at feltet ved siden af til kurser, vil der siger ja, 569 00:28:03,520 --> 00:28:07,860 kun vise mig kurser, hvor Q-værdien er 4,5 eller højere. 570 00:28:07,860 --> 00:28:10,610 Hvis du fjerne markeringen af ​​det, nej, gør ikke bekymre sig om det. 571 00:28:10,610 --> 00:28:13,910 Eller på lignende måde, på højre, Mener ikke Konflikt med kurser jeg tager, 572 00:28:13,910 --> 00:28:15,650 det er enten sande eller falske. 573 00:28:15,650 --> 00:28:16,715 Det er bare en boolesk udtryk. 574 00:28:16,715 --> 00:28:20,080 Så al den tid, når du har brugt hjemmesider med afkrydsningsfelter, du bare 575 00:28:20,080 --> 00:28:23,570 skifte svarer til en Boolean ekspression og slukkes. 576 00:28:23,570 --> 00:28:25,270 >> Så i hvilken form bruger du dem? 577 00:28:25,270 --> 00:28:28,820 Tja, i Scratch, vil vi se på et øjeblik at der er forhold, 578 00:28:28,820 --> 00:28:29,560 se sådan ud. 579 00:28:29,560 --> 00:28:33,130 Og der er slags fornuftigt, fordi meget ligesom i pseudokode, indrykket vi 580 00:28:33,130 --> 00:28:38,550 den slags U-formede puslespilsbrikker, betyder at noget inde i at U er 581 00:28:38,550 --> 00:28:41,390 vil udføre, eller ikke, afhængigt om, hvor det er. 582 00:28:41,390 --> 00:28:45,310 Så hvis Boolske udtryk, så hvad der er indeni, vil blive henrettet. 583 00:28:45,310 --> 00:28:46,800 >> I mellemtiden er der en hvis / andet blok. 584 00:28:46,800 --> 00:28:50,320 Så hvis du ønsker en gren, der går denne måde, eller at Scratch giver os det. 585 00:28:50,320 --> 00:28:54,500 Og ved denne logik, nu, selv om det brik er tydeligvis for lille 586 00:28:54,500 --> 00:28:57,400 at kile noget andet inde i det, scratch puslespilsbrikker, de er 587 00:28:57,400 --> 00:28:58,150 bare at vokse. 588 00:28:58,150 --> 00:29:01,370 Når du trækker og slipper over noget, det vil bare vokse til at passe hvad det 589 00:29:01,370 --> 00:29:02,510 er du forsøger at gøre. 590 00:29:02,510 --> 00:29:07,230 >> Så vi kan tage to af disse ting, og lave en tre-vejs gaffel i vejen, så 591 00:29:07,230 --> 00:29:11,300 at du enten gøre dette, eller at, eller denne anden ting bare ved indlejring dem 592 00:29:11,300 --> 00:29:12,070 på denne måde. 593 00:29:12,070 --> 00:29:14,370 Selvfølgelig, at hvis du gør alt meget, det begynder at blive grimt. 594 00:29:14,370 --> 00:29:17,660 Men på dette punkt, er du faktisk sandsynligvis ikke programmering meget godt. 595 00:29:17,660 --> 00:29:20,490 Og så der vil være tilbagevendende tema også, at af stil. 596 00:29:20,490 --> 00:29:22,790 Hvor godt kender faktisk formatere din kode? 597 00:29:22,790 --> 00:29:24,580 Eller hvor godt kender du designe din kode? 598 00:29:24,580 --> 00:29:26,430 Men mere om det i fremtiden. 599 00:29:26,430 --> 00:29:27,470 >> Og nu har vi sløjfer. 600 00:29:27,470 --> 00:29:30,310 Der er en dejlig evigt loop i Scratch som bogstaveligt betyder, at - gøre 601 00:29:30,310 --> 00:29:32,710 hvad der er inde i det igen, og igen og igen. 602 00:29:32,710 --> 00:29:35,880 Du kan være mere konkret og sige, gøre følgende ting 10 gange. 603 00:29:35,880 --> 00:29:37,620 Du kan også bruge variabler. 604 00:29:37,620 --> 00:29:40,260 Du kan komme op med noget navn i den lidt drop ned og sige, giv mig et 605 00:29:40,260 --> 00:29:43,190 variabel kaldet n og sæt det svarer til en vis værdi. 606 00:29:43,190 --> 00:29:44,910 Og så kan du have funktioner. 607 00:29:44,910 --> 00:29:46,850 Men mere på dem i bare et øjeblik. 608 00:29:46,850 --> 00:29:49,140 >> Lad mig gå tilbage til min Scratch grænseflade. 609 00:29:49,140 --> 00:29:50,970 Og lad mig gå videre denne gang. 610 00:29:50,970 --> 00:29:56,660 Og lad os gå videre og åbne op, lad os sige, et eksempel fra - 611 00:29:56,660 --> 00:29:58,740 der er lidt mere interessant. 612 00:29:58,740 --> 00:30:00,750 Lad mig gå videre, og faktisk, lad mig bare gøre det selv. 613 00:30:00,750 --> 00:30:01,960 Jeg behøver ikke at åbne denne ene. 614 00:30:01,960 --> 00:30:03,390 Lad mig gå til Fil, Ny. 615 00:30:03,390 --> 00:30:04,740 Jeg har tænkt mig at gå til Events. 616 00:30:04,740 --> 00:30:08,460 Jeg har tænkt mig at gå til, når grønt flag klikket på, og jeg har tænkt mig at gå til Sound. 617 00:30:08,460 --> 00:30:11,590 Og jeg har tænkt mig at trække og slippe det brik, afspille lyd miaver. 618 00:30:11,590 --> 00:30:12,580 Det låsene sammen. 619 00:30:12,580 --> 00:30:14,327 Og nu, hvis jeg klikker på den grønne flag - 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å lad os nu gøre noget lidt mere logisk bare at vise, at 623 00:30:21,560 --> 00:30:22,760 vi kan, for nu. 624 00:30:22,760 --> 00:30:25,550 Jeg har tænkt mig at frigøre dette fra den fyr. 625 00:30:25,550 --> 00:30:27,000 Jeg har tænkt mig at gå til Control. 626 00:30:27,000 --> 00:30:28,770 Og jeg har tænkt mig at få fat i en betingelse. 627 00:30:28,770 --> 00:30:30,600 Så hvis noget dengang. 628 00:30:30,600 --> 00:30:32,020 Så det er hvordan det ser ud der. 629 00:30:32,020 --> 00:30:33,890 Så jeg har brug for en boolesk udtryk. 630 00:30:33,890 --> 00:30:38,130 Og lad mig gå videre og sige, lad mig gå til Operatører. 631 00:30:38,130 --> 00:30:40,270 Jeg har tænkt mig at gøre noget lidt Mathy, bare for sjov. 632 00:30:40,270 --> 00:30:43,600 Jeg har tænkt mig at gå ind her og sige, at hvis noget er mindre end noget andet, 633 00:30:43,600 --> 00:30:45,030 gå videre og gøre noget. 634 00:30:45,030 --> 00:30:46,890 Så nu ved du hvad, en tilfældig blok. 635 00:30:46,890 --> 00:30:51,620 Så læg mærke til hvordan, hvis jeg svæver over dette ting her, som vil snappe derinde. 636 00:30:51,620 --> 00:30:54,090 >> Så nu, varsel, jeg begynder at gøre noget allerede mere logisk 637 00:30:54,090 --> 00:30:54,650 interessant. 638 00:30:54,650 --> 00:30:59,720 Hvis et tilfældigt tal mellem 1 og 10 er mindre end, lad os sige seks. 639 00:30:59,720 --> 00:31:03,670 Hvis jeg vælger seks, der hovedsagelig betyder, gøre følgende med 50% 640 00:31:03,670 --> 00:31:03,980 sandsynlighed. 641 00:31:03,980 --> 00:31:05,460 Det er som at bladre en mønt. 642 00:31:05,460 --> 00:31:07,330 Nu kan jeg gøre noget betinget. 643 00:31:07,330 --> 00:31:10,800 Og at noget jeg har tænkt mig at gøre, er at spille lyden. 644 00:31:10,800 --> 00:31:14,280 Så nu, når jeg klikker på skærmen flag, det er ligesom at kaste en mønt. 645 00:31:14,280 --> 00:31:14,610 >> [MEOW SOUND] 646 00:31:14,610 --> 00:31:17,160 >> DAVID MALAN: Det var hoveder eller whatnot der. 647 00:31:17,160 --> 00:31:17,920 Lad os gøre det igen. 648 00:31:17,920 --> 00:31:18,860 >> [MEOW SOUND] 649 00:31:18,860 --> 00:31:19,790 >> DAVID MALAN: Heads igen. 650 00:31:19,790 --> 00:31:20,280 >> [MEOW SOUND] 651 00:31:20,280 --> 00:31:21,500 >> DAVID MALAN: Heads igen. 652 00:31:21,500 --> 00:31:22,631 Pyha, OK. 653 00:31:22,631 --> 00:31:24,720 Haler pågældende tidspunkt. 654 00:31:24,720 --> 00:31:29,545 Så 50% af tiden, hvis vi gør det uendeligt længe, ​​vil vi få 50% mijaver 655 00:31:29,545 --> 00:31:32,180 og 50% tavshed. 656 00:31:32,180 --> 00:31:34,850 Så der, bare en grundlæggende bygning blok, der lader os gøre det. 657 00:31:34,850 --> 00:31:37,710 Men det er lidt kedelig, at jeg har at holde klikke på denne knap. 658 00:31:37,710 --> 00:31:39,810 Så lad os bare trække og kaste alle dem væk. 659 00:31:39,810 --> 00:31:42,270 Hvis du slæbte dem til midten, de vil bare slette sig selv. 660 00:31:42,270 --> 00:31:43,760 >> Lad mig gå op til kontrol. 661 00:31:43,760 --> 00:31:46,060 Lad mig gå til evigt. 662 00:31:46,060 --> 00:31:49,952 Og denne gang vil jeg gøre noget minorly irriterende. 663 00:31:49,952 --> 00:31:51,560 >> [Latter] 664 00:31:51,560 --> 00:31:53,370 >> DAVID MALAN: Og lad mig gå videre og gøre kontrollen. 665 00:31:53,370 --> 00:31:57,260 Vent et sekund, bare så det er ikke for 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 naturligt. 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 bemærk, hvad der er, nice om Scratch, for dem af jer, der 671 00:32:06,406 --> 00:32:09,210 have forudgående programmering erfaring, du behøver ikke at starte og stoppe. 672 00:32:09,210 --> 00:32:10,060 Du behøver ikke at kompilere. 673 00:32:10,060 --> 00:32:13,210 Du skal bare ændre det, og programmet vil tilpasse sig dynamisk. 674 00:32:13,210 --> 00:32:14,620 Så dette er at få en lidt interessant. 675 00:32:14,620 --> 00:32:16,930 Men lad os tage det et skridt videre. 676 00:32:16,930 --> 00:32:19,760 Lad mig gå videre og få slippe af 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, hvad vi vil kalde en fejl i Scratch. 679 00:32:25,520 --> 00:32:26,770 Han burde ikke holde gør den lyd. 680 00:32:26,770 --> 00:32:28,340 Så vi vil vi fortælle ham at stoppe. 681 00:32:28,340 --> 00:32:30,435 Okay, så nu er jeg gå i - 682 00:32:30,435 --> 00:32:32,180 Jeg lader MIT vide. 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 nu, jeg ønsker at gøre noget igen og igen. 685 00:32:37,240 --> 00:32:38,760 Jeg har tænkt mig at gå ind i Kontrolpanel. 686 00:32:38,760 --> 00:32:41,570 >> Og lad os se, jeg kommer til at trække min hvis tilstand der. 687 00:32:41,570 --> 00:32:42,850 Så nu mærke til logik. 688 00:32:42,850 --> 00:32:46,430 Når det grønne flag er klikket, skal du gøre noget evigt, men kun gøre det, 689 00:32:46,430 --> 00:32:48,890 noget, hvis denne anden ting er sandt. 690 00:32:48,890 --> 00:32:51,480 Jeg har tænkt mig at gå til, så lad os sige, sansning. 691 00:32:51,480 --> 00:32:54,430 Og jeg har tænkt mig at gå videre og vælge rørende og drop det der. 692 00:32:54,430 --> 00:32:55,930 Det er en boolesk udtryk. 693 00:32:55,930 --> 00:32:57,740 >> Og nu, mærke, i dette fald down menu, er der 694 00:32:57,740 --> 00:32:59,050 nogle foruddefinerede værdier. 695 00:32:59,050 --> 00:33:00,910 Så jeg kan sige, er du rører kanten af ​​skærmen? 696 00:33:00,910 --> 00:33:03,900 Eller er du rører musemarkøren, pilen på skærmen? 697 00:33:03,900 --> 00:33:04,620 Så jeg har tænkt mig at gøre det. 698 00:33:04,620 --> 00:33:08,770 Og hvis ja, så jeg har tænkt mig at gå fremad og afspille lyd miaver. 699 00:33:08,770 --> 00:33:11,250 Så nu jeg slags har begyndelse af et spil - 700 00:33:11,250 --> 00:33:13,110 en yndig spil. 701 00:33:13,110 --> 00:33:14,060 >> [MEOW SOUND] 702 00:33:14,060 --> 00:33:17,250 >> DAVID MALAN: OK, en yndig, buggy spil. 703 00:33:17,250 --> 00:33:20,770 Lad mig vente, lad os sige, en sekunder der. 704 00:33:20,770 --> 00:33:24,910 Nu spille igen, ved at klikke på det grønne flag. 705 00:33:24,910 --> 00:33:27,860 >> [MEOW SOUND] 706 00:33:27,860 --> 00:33:30,460 >> DAVID MALAN: Så nu er det ligesom petting en kat. 707 00:33:30,460 --> 00:33:31,850 >> [MEOW SOUND] 708 00:33:31,850 --> 00:33:34,460 >> DAVID MALAN: Okay, nu er denne en jeg gjorde i forvejen. 709 00:33:34,460 --> 00:33:39,250 Meget sent, det bliver slags let at gøre dumme ting. 710 00:33:39,250 --> 00:33:40,240 Så lad mig gå her. 711 00:33:40,240 --> 00:33:43,720 Lad os sige, der var Pet Cat. 712 00:33:43,720 --> 00:33:46,600 Lad os nu åbne ikke Pet Cat. 713 00:33:46,600 --> 00:33:48,330 Nu, hvis vi spiller denne ene, du kan gætte, hvis du er 714 00:33:48,330 --> 00:33:49,650 man ser på skærmen - 715 00:33:49,650 --> 00:33:51,090 >> [MEOW SOUND] 716 00:33:51,090 --> 00:33:52,170 >> DAVID MALAN: Nu, hvis jeg kæler katten 717 00:33:52,170 --> 00:33:55,420 >> [Løvens ROAR] 718 00:33:55,420 --> 00:33:57,260 >> DAVID MALAN: Så faktisk ikke kæle katten i denne sag. 719 00:33:57,260 --> 00:34:01,350 Så nu skal vi bare et eksempel på en gren, der foregår i to retninger. 720 00:34:01,350 --> 00:34:03,130 Lad mig nu gå videre og åbne en anden en her. 721 00:34:03,130 --> 00:34:07,120 Denne ene, også blandt vores kilde kode filer for dagen. 722 00:34:07,120 --> 00:34:13,199 Så lad mig gå tilbage til min kilde mappe og gå ind, lad os vælge 723 00:34:13,199 --> 00:34:15,610 denne fyr her og se hvad der er anderledes. 724 00:34:15,610 --> 00:34:17,449 >> Wow, okay, så nu det er at få lidt mere kompliceret. 725 00:34:17,449 --> 00:34:21,300 Og før vi ser, hvad denne fyr gør, lad os prøve at udlede, fra programmet 726 00:34:21,300 --> 00:34:22,219 på højre side. 727 00:34:22,219 --> 00:34:25,590 Og nu scratch klart tillader os at har flere scripts, flere 728 00:34:25,590 --> 00:34:29,730 programmer i forbindelse med én sprite, med ét tegn, og tilsyneladende 729 00:34:29,730 --> 00:34:31,760 de er begge kommer til at køre i lockstep. 730 00:34:31,760 --> 00:34:35,570 Da begge disse programmer starter med, når grønne flag klik, er det 731 00:34:35,570 --> 00:34:38,650 antyde en mere avanceret emne, med som nogle af jer kan være bekendt, 732 00:34:38,650 --> 00:34:40,580 kendt som gevindskæring, eller multi-threading. 733 00:34:40,580 --> 00:34:44,400 >> Slår ud, lang historie kort, computere dag, kan hovedsageligt gøre multiple 734 00:34:44,400 --> 00:34:45,270 ting på én gang. 735 00:34:45,270 --> 00:34:48,659 Eller de kan gøre én ting ad gangen, så hurtigt, at du ikke engang mærke til, at 736 00:34:48,659 --> 00:34:50,150 det er faktisk at gøre et ting ad gangen. 737 00:34:50,150 --> 00:34:53,320 Men for nu, lad os antage, at begge disse programmer kommer til at udføre på 738 00:34:53,320 --> 00:34:54,310 samme tid. 739 00:34:54,310 --> 00:34:57,350 Og varsel, begge af dem har evigt puslespillet. 740 00:34:57,350 --> 00:35:01,270 Så de er begge kommer til at holde kørende indtil jeg ramte det røde stopskilt. 741 00:35:01,270 --> 00:35:02,100 >> Så hvad vil de gøre? 742 00:35:02,100 --> 00:35:06,030 På venstre side, er jeg åbenbart erklære en variabel kaldet dæmpet. 743 00:35:06,030 --> 00:35:09,030 Så jeg ikke kalde det noget som kedeligt ligesom N. Jeg kaldte det dæmpet dette 744 00:35:09,030 --> 00:35:10,240 tid til at formidle mening. 745 00:35:10,240 --> 00:35:11,780 Jeg sætter den lig med nul. 746 00:35:11,780 --> 00:35:16,200 Lad os tænke på, at så False eller lad os tænke på, at så False. 747 00:35:16,200 --> 00:35:17,490 >> Nu, for evigt gøre følgende. 748 00:35:17,490 --> 00:35:23,280 Hvis tastaturet er rummet bar der trykkes så hvis dæmpet lig nul, 749 00:35:23,280 --> 00:35:25,930 derefter ændre dæmpet til lige én. 750 00:35:25,930 --> 00:35:27,580 Else satte dæmpet til nul. 751 00:35:27,580 --> 00:35:30,530 Så logisk, selvom det er en helt flok puslespil stykker, der er 752 00:35:30,530 --> 00:35:33,160 siger bare, når jeg ramte Space bar, hvad skal jeg gøre for at den variable 753 00:35:33,160 --> 00:35:34,750 hedder slået fra? 754 00:35:34,750 --> 00:35:37,170 Ændre det fra en til nul, eller nul til én. 755 00:35:37,170 --> 00:35:37,840 Det er alt. 756 00:35:37,840 --> 00:35:40,740 Så det er ligesom at dreje en lyskontakt tændt eller slukket og huske, med en 757 00:35:40,740 --> 00:35:42,330 variabel, at jeg har gjort det. 758 00:35:42,330 --> 00:35:45,990 >> I mellemtiden, på højre side, i lægmandssprog, hvad der er formålet med 759 00:35:45,990 --> 00:35:47,547 scriptet til højre? 760 00:35:47,547 --> 00:35:48,860 >> STUDENT: For at spille søløve lyd. 761 00:35:48,860 --> 00:35:52,500 >> DAVID MALAN: For at afspille Sea Lion lyd, hvis han ikke er slået fra ved 762 00:35:52,500 --> 00:35:53,480 beskaffenheden af ​​denne variabel. 763 00:35:53,480 --> 00:35:57,360 Så vi deler staten, så at sige, deling af oplysninger på tværs af disse to 764 00:35:57,360 --> 00:36:00,540 scripts fordi bemærke her, er vi evigt gøre følgende. 765 00:36:00,540 --> 00:36:04,620 Hvis dæmpet er nul, så hvis det ikke er slået fra - hvis dæmpet er falsk, så spiller 766 00:36:04,620 --> 00:36:05,980 denne Sea Lion lyd. 767 00:36:05,980 --> 00:36:09,930 Og tænk på dig selv, hej, hej, hej, for to sekunder vent et øjeblik, og så 768 00:36:09,930 --> 00:36:11,140 tjek igen. 769 00:36:11,140 --> 00:36:15,150 Så hvis vi går nu over her til venstre, hvor denne fyr er, og ramte 770 00:36:15,150 --> 00:36:16,662 grønt flag, 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 tidspunkt gør dette får virkelig irriterende? 773 00:36:31,910 --> 00:36:33,440 Fordi det bare vil gå på evigt. 774 00:36:33,440 --> 00:36:36,490 Så nogle gange, uendelige løkker, så at sige, er bevidst. 775 00:36:36,490 --> 00:36:41,140 Men i dette tilfælde, så snart jeg ramte mellemrumstasten, han stopper. 776 00:36:41,140 --> 00:36:42,800 Nu har programmet ikke op. 777 00:36:42,800 --> 00:36:44,760 Det er stadig kører i disse sløjfer. 778 00:36:44,760 --> 00:36:46,540 Men hvis jeg får den plads bar igen - 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 at plukke op, hvor han slap. 781 00:36:49,650 --> 00:36:53,240 Så der er en måde for os at gøre noget igen og igen, men at 782 00:36:53,240 --> 00:36:54,920 tid, kun betinget. 783 00:36:54,920 --> 00:36:58,940 Nå, mens vi er i denne ånd at gøre ting igen og igen, lad mig 784 00:36:58,940 --> 00:37:01,370 gå ind andet eksempel her. 785 00:37:01,370 --> 00:37:04,370 Denne ene vi kalder tælle får. 786 00:37:04,370 --> 00:37:05,710 >> Og læg mærke til, hvad denne fyr gør. 787 00:37:05,710 --> 00:37:08,540 Det er faktisk en smule mere som pseudokode vi spillede med på 788 00:37:08,540 --> 00:37:12,230 Onsdag hvorved han sætter nogle tæller, tænk på det som N igen, for at 789 00:37:12,230 --> 00:37:14,030 nul, han for evigt gør følgende. 790 00:37:14,030 --> 00:37:17,960 Han siger tælleren værdi for én sekund, venter et sekund, og derefter 791 00:37:17,960 --> 00:37:19,430 ændrer tælleren med én. 792 00:37:19,430 --> 00:37:21,570 Og i denne sammenhæng, at netop betyder intervaller det. 793 00:37:21,570 --> 00:37:23,250 Så tilføjer han en til det. 794 00:37:23,250 --> 00:37:25,830 Så dette er bogstaveligt talt - 795 00:37:25,830 --> 00:37:27,890 det er ikke helt, hvad vi mener af som at tælle får. 796 00:37:27,890 --> 00:37:33,120 Det er fårene gør optællingen, evigt, op fra nul. 797 00:37:33,120 --> 00:37:35,560 >> Så vi kan gøre lignende ting der, logisk. 798 00:37:35,560 --> 00:37:37,750 Men lad os nu forsøge at rense nogle af disse ting op. 799 00:37:37,750 --> 00:37:43,440 Lad mig gå videre nu i en simpel eksempel, hvor vores kat er bare at 800 00:37:43,440 --> 00:37:44,750 starte hoste. 801 00:37:44,750 --> 00:37:48,830 Okay, så her har vi hoste 0 - 802 00:37:48,830 --> 00:37:50,685 dataloger starter tælle fra 0. 803 00:37:50,685 --> 00:37:53,480 Så denne kat er bare at hoste tre gange. 804 00:37:53,480 --> 00:37:54,890 Og her er hvordan jeg implementeret det. 805 00:37:54,890 --> 00:38:00,130 Når grønt flag er klikket, hoste, vent, hoste, vent, hoste, vent. 806 00:38:00,130 --> 00:38:02,470 Og jeg gjorde det bare ved at trække og slippe puslespilsbrikker. 807 00:38:02,470 --> 00:38:04,740 Eller hvis du begynder at rode med Scratch, vil du se du kan faktisk 808 00:38:04,740 --> 00:38:08,620 duplikere stykker, så at du kan gøre tingene mere hurtigt uden at trække 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 bedste vej her. 811 00:38:12,680 --> 00:38:15,210 Fordi hvordan kan jeg gøre ham hoste en fjerde gang? 812 00:38:15,210 --> 00:38:16,790 Tja, jeg kunne sortere i går hernede. 813 00:38:16,790 --> 00:38:19,420 Jeg kunne kopiere og derefter indsæt denne derinde. 814 00:38:19,420 --> 00:38:21,740 Hvordan gør jeg ham hoste en femte gang? 815 00:38:21,740 --> 00:38:23,230 Nå, kopiere og indsætte igen. 816 00:38:23,230 --> 00:38:24,210 Eller træk drop igen. 817 00:38:24,210 --> 00:38:26,920 Og meget hurtigt, dette program starter at få virkelig, virkelig overflødig, 818 00:38:26,920 --> 00:38:28,880 virkelig lang, men virkelig uinteressant. 819 00:38:28,880 --> 00:38:30,120 Men der er en måde at rydde op. 820 00:38:30,120 --> 00:38:33,680 Hvad er den oplagte måde at rydde op? 821 00:38:33,680 --> 00:38:36,280 >> OK, så vi kunne faktisk rigtig go ud, og når du rammer den plads 822 00:38:36,280 --> 00:38:37,070 bar, få ham hoste. 823 00:38:37,070 --> 00:38:40,150 Men hvis jeg bare ønsker at gøre noget gentagne, minde om, at vi har 824 00:38:40,150 --> 00:38:41,310 vis kontrol konstruerer. 825 00:38:41,310 --> 00:38:43,800 Lad mig med at flytte det ud af måde gå under kontrol. 826 00:38:43,800 --> 00:38:47,340 Lad mig bare gøre en gentagelse, sige, tre gange. 827 00:38:47,340 --> 00:38:49,410 Og lad mig nu stjæle nogle af disse puslespilsbrikker. 828 00:38:49,410 --> 00:38:50,980 Lad mig snap dette her. 829 00:38:50,980 --> 00:38:52,400 Lad mig smide disse væk helt. 830 00:38:52,400 --> 00:38:55,400 >> Og nu har jeg en bedre designet program. 831 00:38:55,400 --> 00:38:55,920 Hvorfor? 832 00:38:55,920 --> 00:39:00,540 Hvis jeg ønsker at ændre det antal gange Denne kat hoster, alt hvad jeg skal 833 00:39:00,540 --> 00:39:05,640 behøver, er at ændre en variabel, eller én værdi, snarere 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 gøre noget betinget, selv med mellemrum 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 princip. 838 00:39:11,780 --> 00:39:14,950 Når du begynder at kopiere og indsætte kode, uanset om det er i Scratch, eller 839 00:39:14,950 --> 00:39:18,340 C, du laver noget forkert, mest sandsynligt. 840 00:39:18,340 --> 00:39:21,950 Eller i det mindste, når du har overskredet nogle rimelige antal kopier og 841 00:39:21,950 --> 00:39:24,610 pastaer, er du sikkert gør noget forkert. 842 00:39:24,610 --> 00:39:26,740 >> Men ved du hvad? 843 00:39:26,740 --> 00:39:27,590 Jeg kan ikke rigtig lide det. 844 00:39:27,590 --> 00:39:28,980 Dette er ikke den reneste design. 845 00:39:28,980 --> 00:39:32,860 Jeg ville ønske der var et puslespil kaldet brik hoste, fordi så ville jeg ikke 846 00:39:32,860 --> 00:39:36,100 nødt til at gennemføre dette selv, den gammeldags måde, ved 847 00:39:36,100 --> 00:39:38,220 have sige, og vent - 848 00:39:38,220 --> 00:39:40,320 hvad nu hvis de var bare en hoste brik. 849 00:39:40,320 --> 00:39:41,330 >> Tja, jeg kan faktisk gøre det. 850 00:39:41,330 --> 00:39:45,010 Lad mig gå under flere blokke, skal du klikke Lav en Block, og nu får jeg denne 851 00:39:45,010 --> 00:39:45,610 Vinduet her. 852 00:39:45,610 --> 00:39:47,540 Jeg har tænkt mig at kalde denne ting hoste. 853 00:39:47,540 --> 00:39:49,400 Jeg har tænkt mig at gå videre og klik på OK. 854 00:39:49,400 --> 00:39:53,150 Og nu varsel, får jeg en ny start stykke, der er buet på toppen. 855 00:39:53,150 --> 00:39:56,590 Og hvad jeg har tænkt mig at gøre med dette, er jeg vil bare stjæle disse blokke. 856 00:39:56,590 --> 00:39:57,800 Jeg har tænkt mig at sætte dem her. 857 00:39:57,800 --> 00:40:00,490 >> Og nu, med disse tre stykker, har jeg implementeret, hvad jeg har tænkt mig at kalde en 858 00:40:00,490 --> 00:40:03,530 funktion eller en procedure, eller nogle af du måske kender det som en metode. 859 00:40:03,530 --> 00:40:05,050 Små forskelle mellem ordene. 860 00:40:05,050 --> 00:40:06,950 Men for nu, lad os bare kalde dette en funktion. 861 00:40:06,950 --> 00:40:08,750 Dette er blot en ny brik. 862 00:40:08,750 --> 00:40:11,000 Nu er det implementeret på denne måde. 863 00:40:11,000 --> 00:40:15,170 >> Men bemærk, at Scratch har givet os en fysisk repræsentation af denne helhed 864 00:40:15,170 --> 00:40:16,570 blokere over her. 865 00:40:16,570 --> 00:40:21,930 Så nu kan jeg bare trække det herovre, sige, gentag tre gange, og 866 00:40:21,930 --> 00:40:26,420 hvad der kommer til at ske nu, hvor jeg spiller dette script, er kun ét program 867 00:40:26,420 --> 00:40:27,500 kører ad gangen. 868 00:40:27,500 --> 00:40:29,880 Der er kun én, når grønne flag klikkede. 869 00:40:29,880 --> 00:40:34,010 Men at lilla blok kaldet hoste er effektivt fortæller Scratch, hver 870 00:40:34,010 --> 00:40:38,160 gang du ser denne brik, der faktisk udføre disse trin, som jeg 871 00:40:38,160 --> 00:40:40,420 ske at gennemføre manuelt. 872 00:40:40,420 --> 00:40:41,410 >> Så det er lidt pæn. 873 00:40:41,410 --> 00:40:44,650 Men nu, formoder, at jeg besluttede, det gør jeg ikke ønsker, at denne kat bare at hoste. 874 00:40:44,650 --> 00:40:46,660 Jeg vil have ham til at være i stand at nyse så godt. 875 00:40:46,660 --> 00:40:48,905 Nå, hvordan kan vi gå om gennemføre nyse? 876 00:40:48,905 --> 00:40:51,310 Jamen jeg kunne temmelig meget gøre det samme. 877 00:40:51,310 --> 00:40:52,690 Jeg kunne gøre en anden blok. 878 00:40:52,690 --> 00:40:55,940 Jeg kunne kalde denne nys, skal du klikke på OK. 879 00:40:55,940 --> 00:40:59,250 >> Så herovre jeg kunne faktisk have, lad mig gentage det - 880 00:40:59,250 --> 00:41:02,850 og der er, hvor du skal føle du sandsynligvis ikke gør noget 881 00:41:02,850 --> 00:41:03,780 den bedste måde. 882 00:41:03,780 --> 00:41:06,670 Jeg kunne sige noget lignende, Achoo, i et sekund. 883 00:41:06,670 --> 00:41:07,440 Vent et sekund. 884 00:41:07,440 --> 00:41:08,715 Nu har jeg en ny blok kaldet nyse. 885 00:41:08,715 --> 00:41:10,210 Og ja, der er det. 886 00:41:10,210 --> 00:41:14,010 >> Men også dette skulle begynde at føle - måske ikke den første uge af klasse, men 887 00:41:14,010 --> 00:41:15,730 ved den anden - bare lidt overflødig. 888 00:41:15,730 --> 00:41:17,800 Det er klart, der er nogle redundans her. 889 00:41:17,800 --> 00:41:22,090 Så lad mig foreslå i stedet, at vi forfine denne definition som følger. 890 00:41:22,090 --> 00:41:24,820 >> Lad mig gå op til min fil-menuen. 891 00:41:24,820 --> 00:41:26,090 Jeg har ikke tænkt at redde denne version. 892 00:41:26,090 --> 00:41:29,080 Jeg har tænkt mig at gå ind i en af mine premade filer her. 893 00:41:29,080 --> 00:41:31,190 Og jeg har tænkt mig at gå videre og åbne op hoste 2.. 894 00:41:31,190 --> 00:41:32,220 Hovsa der var hoste 2. 895 00:41:32,220 --> 00:41:36,900 Lad mig gå videre og åbne op hoste 3, som er denne kilde mappe. 896 00:41:36,900 --> 00:41:42,450 Hoste 3 og mærke - oh, jeg fortalte historien i den forkerte rækkefølge. 897 00:41:42,450 --> 00:41:45,030 Lad mig komme sig efter denne historie. 898 00:41:45,030 --> 00:41:48,990 >> Den historie, jeg mente at fortælle ender med hoste 4 - 899 00:41:48,990 --> 00:41:50,270 der er det. 900 00:41:50,270 --> 00:41:54,380 Så hvad nu hvis jeg i stedet definere en større puslespil kaldet stykke 901 00:41:54,380 --> 00:41:57,250 definere, sige ord n ​​gange. 902 00:41:57,250 --> 00:41:59,930 Nysen er bare, tilsyneladende, i Scratch. Achoo 903 00:41:59,930 --> 00:42:01,680 Så vi udtrykke det som et ord, bare fordi det er den 904 00:42:01,680 --> 00:42:02,750 begrænsning af 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 blot to 906 00:42:07,860 --> 00:42:10,820 forskellige ord gør væsentlige, det samme. 907 00:42:10,820 --> 00:42:12,820 >> Så jeg kan faktisk gøre en ny blok som dette. 908 00:42:12,820 --> 00:42:14,220 Jeg ikke bruge dette menupunkt før. 909 00:42:14,220 --> 00:42:16,960 Men når du klikker Make Block, kan du vælge nogle valgmuligheder. 910 00:42:16,960 --> 00:42:20,900 Og du kan sige, at denne blok faktisk tager nogle inputs, ellers 911 00:42:20,900 --> 00:42:24,710 kendt som argumenter, eller parametre, så at du kan ændre adfærd 912 00:42:24,710 --> 00:42:25,520 din blok. 913 00:42:25,520 --> 00:42:28,780 >> Så hvad jeg gjorde for et øjeblik siden var Jeg kaldte denne blok Sig. 914 00:42:28,780 --> 00:42:30,880 Og så sagde jeg, det tager en streng indgang. 915 00:42:30,880 --> 00:42:32,810 Og nu mærke til, som standard, det siger string 1.. 916 00:42:32,810 --> 00:42:35,440 En streng er bare et ord eller en sætning, til vores formål. 917 00:42:35,440 --> 00:42:37,810 Men jeg bare at sætte nogle pladsholdertekst der, ligesom i en 918 00:42:37,810 --> 00:42:40,620 hjemmeside, når du ser brugernavn eller adgangskode og derefter forsvinder, når 919 00:42:40,620 --> 00:42:41,550 du begynder at skrive. 920 00:42:41,550 --> 00:42:42,720 Det er alt, der er. 921 00:42:42,720 --> 00:42:44,590 >> Og nu vil jeg tilføje et nummer input. 922 00:42:44,590 --> 00:42:47,180 Og jeg har tænkt mig at kalde denne n - men det er temmelig vilkårlig. 923 00:42:47,180 --> 00:42:49,510 Og så bare en etiket, at bare gøre denne blok lidt mere selv 924 00:42:49,510 --> 00:42:50,570 forklarende - 925 00:42:50,570 --> 00:42:53,010 gange, det er hvad jeg lige gjorde. 926 00:42:53,010 --> 00:42:56,540 Og slutresultatet er, at jeg får en blok, der ligner dette. 927 00:42:56,540 --> 00:42:58,880 >> Og nu mærke, jeg bruger en gentagelse blok. 928 00:42:58,880 --> 00:43:03,480 Men i stedet for hårde kodning tre, jeg er trække og slippe n derinde, så jeg 929 00:43:03,480 --> 00:43:05,530 kan parametrize funktionen. 930 00:43:05,530 --> 00:43:08,590 Jeg kan gøre denne funktion at gøre noget et andet antal gange baseret på 931 00:43:08,590 --> 00:43:09,410 denne værdi. 932 00:43:09,410 --> 00:43:14,270 >> Og mærke, siger, det er hvad jeg gjorde her hvis jeg trækker ordet, kan jeg sige ikke en 933 00:43:14,270 --> 00:43:17,860 hårdt kodet ord, men uanset hvad er gået ind for et sekund. 934 00:43:17,860 --> 00:43:20,200 I mellemtiden, hvordan jeg på ny at gennemføre hoste? 935 00:43:20,200 --> 00:43:26,980 Jeg stedet definere hoste sige hoste n gange. 936 00:43:26,980 --> 00:43:30,480 >> Så kort sagt, vil jeg gennem denne hurtigt, men den grundlæggende idé er, så snart 937 00:43:30,480 --> 00:43:32,750 som du begynder at se i dit program at, vent et øjeblik, jeg har gjort 938 00:43:32,750 --> 00:43:36,610 noget helt lignende før, kan jeg faktor nogle fælles 939 00:43:36,610 --> 00:43:37,090 funktionalitet? 940 00:43:37,090 --> 00:43:41,090 Kan jeg nedbrydes, hvad jeg gør ind i nogle grundlæggende ideer? 941 00:43:41,090 --> 00:43:42,070 Det er, hvad vi laver her. 942 00:43:42,070 --> 00:43:44,830 Og jeg har stablet disse ting, visuelt, oven på hinanden 943 00:43:44,830 --> 00:43:47,710 fordi det er bevis på, at ideen om begyndende med binær, går til ASCII, 944 00:43:47,710 --> 00:43:51,530 gør grafiske programmer slags lagdeling mere komplekse ideer på 945 00:43:51,530 --> 00:43:52,570 oven på hinanden. 946 00:43:52,570 --> 00:43:53,730 >> Samme idé her. 947 00:43:53,730 --> 00:43:56,870 Jeg startede fra bunden, gennemføre hoste, så indså hoste er 948 00:43:56,870 --> 00:43:58,540 egentlig bare at sige noget. 949 00:43:58,540 --> 00:44:01,630 Så lad mig i stedet at gennemføre begrebet siger noget. 950 00:44:01,630 --> 00:44:05,200 Og oven i det, kan jeg gennemføre Achoo eller hoste? 951 00:44:05,200 --> 00:44:07,990 Og vi kunne gøre mere sådan varianter stadig. 952 00:44:07,990 --> 00:44:10,400 >> Så fra dette grundprincip, kan vi begynde at gøre 953 00:44:10,400 --> 00:44:12,180 Stadig mere komplekse programmer. 954 00:44:12,180 --> 00:44:14,100 Lad mig åbne op denne ene. 955 00:44:14,100 --> 00:44:18,020 Vi kan faktisk have flere sprites interagere på skærmen på én gang. 956 00:44:18,020 --> 00:44:23,470 Hvis jeg går ind i min kilde mappe og Grib en kaldet Threads, minde om, at en 957 00:44:23,470 --> 00:44:26,920 tråd er bare virkelig evnen af to scripts til at køre ved siden af 958 00:44:26,920 --> 00:44:28,350 side på samme tid. 959 00:44:28,350 --> 00:44:34,490 >> Bemærk nu, har både en fugl sprite og en kat sprite, som begge har 960 00:44:34,490 --> 00:44:35,270 deres egne scripts. 961 00:44:35,270 --> 00:44:37,690 Så varsel, når jeg klikker på kat, jeg får disse scripts. 962 00:44:37,690 --> 00:44:39,830 Når jeg klikker på fuglen, Jeg får disse scripts. 963 00:44:39,830 --> 00:44:42,070 Så hver af disse fyre har hans egne programmer. 964 00:44:42,070 --> 00:44:46,680 Når jeg nu klikke på den grønne flag, mærke at hvad dette program gør, er 965 00:44:46,680 --> 00:44:54,090 har katten, utroligt langsomt, jage fuglen. 966 00:44:54,090 --> 00:44:57,120 Men katten har den fordel at have blevet programmeret på en sådan måde 967 00:44:57,120 --> 00:45:00,540 at uanset hvor fuglen er, katten går imod ham. 968 00:45:00,540 --> 00:45:02,150 >> Vi kan spille det spil meget hurtigere. 969 00:45:02,150 --> 00:45:07,750 Så hvis jeg er på katten, bemærke, at jeg er hjælp, lad os sige flytte et trin. 970 00:45:07,750 --> 00:45:11,680 Lad os få ham til at bevæge fem trin på en tid, så fem prikker ad gangen. 971 00:45:11,680 --> 00:45:13,580 Lad mig klikker lege. 972 00:45:13,580 --> 00:45:14,490 >> [Løvens ROAR] 973 00:45:14,490 --> 00:45:17,170 >> DAVID MALAN: Okay, nu kan vi virkelig give katten fordel. 974 00:45:17,170 --> 00:45:18,600 10 trin ad gangen. 975 00:45:18,600 --> 00:45:20,120 >> [Løvens ROAR] 976 00:45:20,120 --> 00:45:22,770 >> DAVID MALAN: Okay, så meget hurtigt, det bliver lidt fordel 977 00:45:22,770 --> 00:45:23,280 for katten. 978 00:45:23,280 --> 00:45:25,310 Men jeg vil vinke min hånd på nogle af detaljerne. 979 00:45:25,310 --> 00:45:28,240 Men grunden til, at denne vej er starter lidt anderledes, hver gang 980 00:45:28,240 --> 00:45:29,700 er, at jeg gør en smule tilfældighed. 981 00:45:29,700 --> 00:45:33,700 Jeg er faktisk peger kat i en anden retning er baseret på, hvor jeg 982 00:45:33,700 --> 00:45:38,710 vil have ham til at begynde, så hver gang spillet, eller animation, er en 983 00:45:38,710 --> 00:45:39,760 lidt anderledes. 984 00:45:39,760 --> 00:45:41,950 >> Nu, lad mig introducere en andre konstruere her. 985 00:45:41,950 --> 00:45:43,860 Så i dette tilfælde havde vi funktioner. 986 00:45:43,860 --> 00:45:46,950 Der er også kommer til at være en brik kendt som en matrix eller en liste 987 00:45:46,950 --> 00:45:50,980 der giver dig mulighed for at gemme flere værdier indeni en variabel. 988 00:45:50,980 --> 00:45:53,410 Vi så tråde, og nu Der er arrangementer. 989 00:45:53,410 --> 00:45:56,330 >> Så her er en hændelse ved hjælp disse to fyre her. 990 00:45:56,330 --> 00:46:02,490 Og hvis jeg åbner filen hedder Arrangementer fra dagens eksempler vil vi 991 00:46:02,490 --> 00:46:06,940 se et program, der ser lidt ligesom dette. 992 00:46:06,940 --> 00:46:09,630 Og nu mærke til denne fyr - 993 00:46:09,630 --> 00:46:11,620 så mærke jeg har den blå Muppet klikket - 994 00:46:11,620 --> 00:46:12,990 han kun gør følgende. 995 00:46:12,990 --> 00:46:15,540 Han har ikke en af ​​dem Grønt Flag puslespilsbrikker. 996 00:46:15,540 --> 00:46:18,620 Han har en, når jeg modtager begivenhed - 997 00:46:18,620 --> 00:46:19,970 så nogle vilkårlige ord. 998 00:46:19,970 --> 00:46:21,590 Jeg har lige skrevet ud begivenhed der - 999 00:46:21,590 --> 00:46:23,740 han kommer til at sige, Polo, i to sekunder. 1000 00:46:23,740 --> 00:46:25,800 >> Så dem af jer der kender med dette spil måske kender 1001 00:46:25,800 --> 00:46:26,460 hvor dette foregår. 1002 00:46:26,460 --> 00:46:29,800 Hvis jeg nu klikke på det orange Muppet, hans program gør dette. 1003 00:46:29,800 --> 00:46:35,020 Forever, hvis tastaturet mellemrumstasten undertrykt, vil han sige, Marco, 1004 00:46:35,020 --> 00:46:36,580 i to sekunder på skærmen. 1005 00:46:36,580 --> 00:46:39,590 Men han er også vil bruge denne amatør blokere kendt som broadcast. 1006 00:46:39,590 --> 00:46:42,270 Han kommer til at udsende citat citat slut, "begivenhed". 1007 00:46:42,270 --> 00:46:47,540 >> I mellemtiden, den blå fyr, tilbagekaldelse, er lytte efter citat citat slut, "begivenhed". 1008 00:46:47,540 --> 00:46:50,760 Så en eller anden måde, nu kan vi have to sprites interagere. 1009 00:46:50,760 --> 00:46:53,790 Og når vi kommer til web programmering, senere i udtrykket, vil ligeledes dette 1010 00:46:53,790 --> 00:46:58,320 være en fordel at have din hjemmeside gøre noget som reaktion på, for 1011 00:46:58,320 --> 00:47:00,130 Eksempelvis et klik på tastaturet. 1012 00:47:00,130 --> 00:47:02,120 >> Så lad mig gå videre og tryk på mellemrumstasten. 1013 00:47:02,120 --> 00:47:04,020 Orange fyr siger Marco. 1014 00:47:04,020 --> 00:47:05,840 Blå fyr siger Polo. 1015 00:47:05,840 --> 00:47:10,780 Hvis jeg gør det igen appelsin fyr siger Marco, blå fyr siger polo. 1016 00:47:10,780 --> 00:47:14,130 Så lad os tage et skridt videre. 1017 00:47:14,130 --> 00:47:18,790 Denne gang, vil vi gå, sandsynligvis blot et par minutter mere her. 1018 00:47:18,790 --> 00:47:19,904 Har vi - 1019 00:47:19,904 --> 00:47:22,380 bordlampe, kom ned. 1020 00:47:22,380 --> 00:47:24,500 Du er rigtigt på enden. 1021 00:47:24,500 --> 00:47:25,740 OK, du kan begge komme op. 1022 00:47:25,740 --> 00:47:26,990 Vi har bordlamper for alle. 1023 00:47:26,990 --> 00:47:28,360 Kom. 1024 00:47:28,360 --> 00:47:30,090 Jeg ved ikke, om vi kan holde denne latterlige gag op 1025 00:47:30,090 --> 00:47:32,035 al semester, selv om. 1026 00:47:32,035 --> 00:47:33,530 Okay, kom ned. 1027 00:47:33,530 --> 00:47:40,260 >> Og i mellemtiden har vi efter eksempler til at trække op, bare for at 1028 00:47:40,260 --> 00:47:45,370 fremskynde tingene nu, således at vi have en manifestation fra en anden 1029 00:47:45,370 --> 00:47:48,360 forgænger jeres hjælp af samme grundlæggende byggesten. 1030 00:47:48,360 --> 00:47:48,975 Hvad er dit navn? 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 Rart for mig dig. 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, rart at mig, du. 1037 00:47:53,130 --> 00:47:54,820 John, hvis du gerne vil komme først op, dette er en gammel 1038 00:47:54,820 --> 00:47:55,910 school spil opkaldt Frogger. 1039 00:47:55,910 --> 00:47:57,530 Du bruger tastaturet for det så godt. 1040 00:47:57,530 --> 00:48:02,425 Og målet er at komme på tværs gaden og vand. 1041 00:48:02,425 --> 00:48:12,700 >> [Frogger musik og lyd PLAYS] 1042 00:48:12,700 --> 00:48:14,970 >> DAVID MALAN: Undskyld, ingen bordlampe til dig i dag. 1043 00:48:14,970 --> 00:48:19,110 Okay, Setz, ville du gerne komme videre op? 1044 00:48:19,110 --> 00:48:20,890 Okay, lad os gøre det igen. 1045 00:48:20,890 --> 00:48:21,430 >> Setz: Har jeg brug pilene? 1046 00:48:21,430 --> 00:48:22,360 >> DAVID MALAN: Bare piletasterne. 1047 00:48:22,360 --> 00:48:23,624 Op, ned, venstre, højre. 1048 00:48:23,624 --> 00:48:35,700 >> [Frogger musik og lyd PLAYS] 1049 00:48:35,700 --> 00:48:37,880 >> DAVID MALAN: Vi kalder dem trøstepræmier i dag, 1050 00:48:37,880 --> 00:48:38,950 da meget godt klaret. 1051 00:48:38,950 --> 00:48:40,690 Her for jer begge, John og Setz. 1052 00:48:40,690 --> 00:48:41,940 Tillykke, okay. 1053 00:48:41,940 --> 00:48:46,720 1054 00:48:46,720 --> 00:48:50,620 Så igen, som dette spil spiller, tænke over, hvad der foregår? 1055 00:48:50,620 --> 00:48:52,060 >> Én, der er klart en masse bevægelse. 1056 00:48:52,060 --> 00:48:55,220 Men vi har set, hvordan, med katten og fugl eksempel hvordan du kan gøre 1057 00:48:55,220 --> 00:48:58,350 illusion af bevægelse ved blot at flytte nogle antal pixels igen og igen. 1058 00:48:58,350 --> 00:49:00,280 Og hvis du har en evigt blok, kunne du have disse 1059 00:49:00,280 --> 00:49:02,120 biler gør dette for evigt. 1060 00:49:02,120 --> 00:49:03,720 Vi har evnen til at har nogle tilfældighed. 1061 00:49:03,720 --> 00:49:06,310 Så dette spil ikke behøver at være nøjagtig den samme hver gang. 1062 00:49:06,310 --> 00:49:09,940 Disse logs, disse biler, kan starte på lidt forskellige tidspunkter, således at 1063 00:49:09,940 --> 00:49:12,690 Spillet i sig selv er mere interessant med hvert spil. 1064 00:49:12,690 --> 00:49:15,320 >> Og I mellemtiden har vi set muligheden til at lytte til den plads bar. 1065 00:49:15,320 --> 00:49:18,830 Men det er klart, i bunden, kan du også lytte til op, ned, venstre, højre 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å gøre nogle andre ting. 1068 00:49:22,200 --> 00:49:24,660 Lad mig gå videre og gå tilbage til web-versionen. 1069 00:49:24,660 --> 00:49:30,280 >> Lad mig gå ind i vores kollektion eksempler her. 1070 00:49:30,280 --> 00:49:36,120 Og under Mit studie, hvilken video er det væsentlige, 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 versioner af alle disse projekter. 1073 00:49:39,710 --> 00:49:42,530 Og lad os se om jeg kan få min computer til at samarbejde her. 1074 00:49:42,530 --> 00:49:47,180 Dette er skrevet af en af ​​vores venner på MIT, kaldet Flyt Butterfly. 1075 00:49:47,180 --> 00:49:50,250 >> Og når dette åbner op, dette er kommer til rent faktisk at bruge mere af 1076 00:49:50,250 --> 00:49:51,430 min computers hardware. 1077 00:49:51,430 --> 00:49:53,325 Scratch sker for at blive gennemført med Flash. 1078 00:49:53,325 --> 00:49:56,250 Flash kan tale med dit webcam, hvis du har en. 1079 00:49:56,250 --> 00:50:00,210 Så hvis jeg går videre og fuld skærm dette her, så klik på den grønne flag, varsel 1080 00:50:00,210 --> 00:50:02,530 at Flash sikkerhed budskab siger, vil du 1081 00:50:02,530 --> 00:50:04,210 gør det muligt at bruge mit webcam? 1082 00:50:04,210 --> 00:50:05,510 >> Normalt bør du nok sige Afvis. 1083 00:50:05,510 --> 00:50:07,180 Men i dette tilfælde, vil vi sige tillade. 1084 00:50:07,180 --> 00:50:10,430 Så jeg har tænkt mig at fortælle Chrome at tillade det så godt. 1085 00:50:10,430 --> 00:50:15,010 Og nu, i et øjeblik, du ser mig, jep, mig. 1086 00:50:15,010 --> 00:50:18,154 Og hvis min hånd går op - 1087 00:50:18,154 --> 00:50:20,390 I got ikke flytte min hoved på samme tid. 1088 00:50:20,390 --> 00:50:21,740 Der er også en refleksion på skærmen. 1089 00:50:21,740 --> 00:50:23,480 Kom, der går vi - 1090 00:50:23,480 --> 00:50:27,616 du kan flytte det på skærmen, da der er også puslespilsbrikker - oh, du 1091 00:50:27,616 --> 00:50:31,640 vide, hvad det er, det er fordi du også se projektoren skærmen bag mig. 1092 00:50:31,640 --> 00:50:33,870 Så vi har en lidt uendelig ting foregår dér. 1093 00:50:33,870 --> 00:50:36,470 >> Okay, så jeg vil spille hernede. 1094 00:50:36,470 --> 00:50:37,220 Der går vi. 1095 00:50:37,220 --> 00:50:41,310 Så der er også en brik, der siger, når du ser bevægelse beneath 1096 00:50:41,310 --> 00:50:45,470 en af ​​sprites, kan du få det gå op, ned, venstre, højre eller lignende. 1097 00:50:45,470 --> 00:50:48,950 Så vi har lidt af virtual reality foregår her så godt, alt sammen inden for 1098 00:50:48,950 --> 00:50:52,570 rammerne af min browser, bare her ved hjælp mit webcam. 1099 00:50:52,570 --> 00:50:53,980 Så hvad er så i horisonten. 1100 00:50:53,980 --> 00:50:58,350 Det første problem sæt, som du kan se, eller hjemmesiden vil gå online senere 1101 00:50:58,350 --> 00:51:01,100 aften på cs50.net, er temmelig meget kommer til at være åben sluttede. 1102 00:51:01,100 --> 00:51:04,410 Og gennemføre en Scratch projekt af interesse for dig, et spil, et 1103 00:51:04,410 --> 00:51:08,350 interaktion, noget kunstnerisk og udfordre dig selv til at bruge et vilkårligt antal 1104 00:51:08,350 --> 00:51:09,660 af disse puslespilsbrikker. 1105 00:51:09,660 --> 00:51:11,580 Og det kan enten være interaktive på denne måde. 1106 00:51:11,580 --> 00:51:15,470 Eller det kan være noget mere bevidst lavet til at fortælle en historie. 1107 00:51:15,470 --> 00:51:19,200 >> Og ja, det er hvor vi ender off i dag, med en sidste eksempel. 1108 00:51:19,200 --> 00:51:21,290 Lad mig gå ind i Scratch lokalt. 1109 00:51:21,290 --> 00:51:25,300 Lad mig gå videre og åbne denne og afspille en sidste program skrevet af en 1110 00:51:25,300 --> 00:51:29,795 af Deres forgængere, nemlig at man her. 1111 00:51:29,795 --> 00:51:32,960 1112 00:51:32,960 --> 00:51:35,938 Godt, hæve lydstyrken for denne ene. 1113 00:51:35,938 --> 00:52:53,770 >> [MUSIC Playing] 1114 00:52:53,770 --> 00:52:57,255 >> Fortæller: På det næste CS50, David inviterer en frivillig på scenen. 1115 00:52:57,255 --> 00:52:58,636 >> DAVID MALAN: Til denne demonstration, vi kommer til at bruge en frivillig. 1116 00:52:58,636 --> 00:53:01,050 Kunne du tænke dig at komme ned? 1117 00:53:01,050 --> 00:53:02,300 Hvad er dit navn? 1118 00:53:02,300 --> 00:53:05,320 1119 00:53:05,320 --> 00:53:06,570 Bevæger sig på. 1120 00:53:06,570 --> 00:53:08,394