1 00:00:00,000 --> 00:00:10,980 >> [Musikk spilles] 2 00:00:10,980 --> 00:00:13,260 >> -Alright! 3 00:00:13,260 --> 00:00:16,400 >> -Dette er CS50. 4 00:00:16,400 --> 00:00:18,220 >> -Dette er CS50. 5 00:00:18,220 --> 00:00:19,324 >> -Dette er CS50. 6 00:00:19,324 --> 00:00:20,615 [MUSIC - IGGY Azalea, "fancy"] 7 00:00:20,615 --> 00:00:29,925 8 00:00:29,925 --> 00:00:33,570 >> -Min Favoritt minne fra CS50 var da jeg gikk til Puzzle Day. 9 00:00:33,570 --> 00:00:35,797 >> -Antagelig Bare tid medgår til oppgavesett 10 00:00:35,797 --> 00:00:38,630 med mine venner og folk som wold slutt bli mine blockmates. 11 00:00:38,630 --> 00:00:40,421 >> -Min Beste minne fra CS50 er Hackathon. 12 00:00:40,421 --> 00:00:41,630 -The CS50 Hackathon. 13 00:00:41,630 --> 00:00:42,130 >> -Hackathon. 14 00:00:42,130 --> 00:00:42,800 >> -Hackathon. 15 00:00:42,800 --> 00:00:43,300 -Hackathon. 16 00:00:43,300 --> 00:00:43,883 -The Hackathon 17 00:00:43,883 --> 00:00:45,027 -Rob Bowden. 18 00:00:45,027 --> 00:00:46,110 Bare alt om ham. 19 00:00:46,110 --> 00:00:47,401 >> [MUSIC - IGGY Azalea, "fancy"] 20 00:00:47,401 --> 00:00:56,790 21 00:00:56,790 --> 00:01:02,512 >> -Min Favoritt minne er da jeg var på stadium og jeg spilte den prestisjetunge rollen 22 00:01:02,512 --> 00:01:04,220 av en node [? i Linked?] [? List. ?] 23 00:01:04,220 --> 00:01:08,470 >> -Når Vi alle fikk gratis Dropbox plass og David var som, se under setene. 24 00:01:08,470 --> 00:01:10,520 Og det var som, plass for alle! 25 00:01:10,520 --> 00:01:11,811 >> [MUSIC - IGGY Azalea, "fancy"] 26 00:01:11,811 --> 00:01:20,940 27 00:01:20,940 --> 00:01:22,830 >> -Min Råd for alle innkommende student ville 28 00:01:22,830 --> 00:01:26,170 være å virkelig jobbe med P-sett med venner. 29 00:01:26,170 --> 00:01:27,960 >> -Office Timer er veldig mye din venn. 30 00:01:27,960 --> 00:01:30,870 >> Klikk mest mulig ut av din erfaring og møte så mange mennesker som mulig. 31 00:01:30,870 --> 00:01:32,390 >> -Ikke Vær redd for å be om hjelp. 32 00:01:32,390 --> 00:01:33,890 -Start P-sett tidlig i uken. 33 00:01:33,890 --> 00:01:36,723 -Jeg tror den største tingen er å dra nytte av alle ressurser 34 00:01:36,723 --> 00:01:37,950 at CS50 har. 35 00:01:37,950 --> 00:01:39,960 >> -Gå Til kontortiden tidlig i uken. 36 00:01:39,960 --> 00:01:41,430 >> -Definitivt Se shorts. 37 00:01:41,430 --> 00:01:42,989 >> -Ikke Utsette på P-sett. 38 00:01:42,989 --> 00:01:45,780 Klikk for at du finner en stor gruppe av folk til å jobbe på P-sett med. 39 00:01:45,780 --> 00:01:48,530 Du kan ha mye moro og få arbeidet gjort sammen. 40 00:01:48,530 --> 00:01:50,370 >> -Ikke Være redd for å presse deg selv. 41 00:01:50,370 --> 00:01:52,080 Gå for hacker-utgaven noen ganger. 42 00:01:52,080 --> 00:01:55,410 >> -Skriv Ting på papir før du noen gang berøre datamaskinen. 43 00:01:55,410 --> 00:01:58,380 >> -CS50 Er virkelig store på gi måter å få hjelp. 44 00:01:58,380 --> 00:02:01,134 >> -Min Ett råd er å sove. 45 00:02:01,134 --> 00:02:02,050 Har noen sagt det? 46 00:02:02,050 --> 00:02:04,100 Søvn, sikkert. 47 00:02:04,100 --> 00:02:08,919 Det er lett å ikke gjøre, men du er nødt til å gjøre det, tror jeg. 48 00:02:08,919 --> 00:02:12,982 >> -Jeg Ville si egentlig være mentalt forberedt fordi du kommer til å elske det. 49 00:02:12,982 --> 00:02:14,273 [MUSIC - IGGY Azalea, "fancy"] 50 00:02:14,273 --> 00:02:17,750 51 00:02:17,750 --> 00:02:18,940 >> -Dette er CS50. 52 00:02:18,940 --> 00:02:22,090 53 00:02:22,090 --> 00:02:23,066 >> -Dette er CS50. 54 00:02:23,066 --> 00:02:26,400 55 00:02:26,400 --> 00:02:26,989 >> -Dette er CS50. 56 00:02:26,989 --> 00:02:28,280 [MUSIC - IGGY Azalea, "fancy"] 57 00:02:28,280 --> 00:02:31,290 58 00:02:31,290 --> 00:02:31,964 >> -Dette er CS50. 59 00:02:31,964 --> 00:02:36,020 60 00:02:36,020 --> 00:02:42,270 >> [APPLAUSE] 61 00:02:42,270 --> 00:02:46,040 >> DAVID J. MALAN: Så dette er CS50 og dette er slutten av uke 0. 62 00:02:46,040 --> 00:02:48,770 Og det var bare noen av CS50 ansatte som 63 00:02:48,770 --> 00:02:51,100 venter deg ikke bare i seksjoner og arbeidstid, men, 64 00:02:51,100 --> 00:02:54,390 også, denne kommende helg på CS50 Puzzle Day. 65 00:02:54,390 --> 00:02:56,410 Som, igjen, er ikke alt om programmering. 66 00:02:56,410 --> 00:02:59,710 Faktisk, er det forventet at du slipper å programmere noe, 67 00:02:59,710 --> 00:03:03,780 men heller løse problemer ved hjelp kløkt og venner sammen med deg. 68 00:03:03,780 --> 00:03:06,400 >> Vi får selskap av noen av våre venner på Facebook-- 69 00:03:06,400 --> 00:03:08,980 hvis du registrerer her-- som for de siste årene, 70 00:03:08,980 --> 00:03:11,450 har faktisk vært å skrive disse utfordringene med oss. 71 00:03:11,450 --> 00:03:14,822 Og så vil de være de slutt kjører Puzzle Day. 72 00:03:14,822 --> 00:03:17,530 Og så vil du bli utfordret med nettopp den slags ting 73 00:03:17,530 --> 00:03:20,520 og problemer som folk på Facebook liker å tenke på. 74 00:03:20,520 --> 00:03:21,860 Så det er i morgen. 75 00:03:21,860 --> 00:03:25,980 Registrer deg hos cs50.harvard.edu/register. 76 00:03:25,980 --> 00:03:28,120 >> Nå et ord på et par av personalet spesielt. 77 00:03:28,120 --> 00:03:30,090 Dette her er Ansel Duff, som er faktisk en 78 00:03:30,090 --> 00:03:33,860 av medforfatterne av disse binære pærer som vi så på onsdag, 79 00:03:33,860 --> 00:03:36,710 i tillegg til CS50 egen Dan Bradley. 80 00:03:36,710 --> 00:03:40,094 Ansel Duff var også en tidligere freshman advisee av meg 3 år siden 81 00:03:40,094 --> 00:03:41,760 og han faktisk selv bygget denne talerstol. 82 00:03:41,760 --> 00:03:45,330 Han har gått på å gjøre tekniske fag og mer. 83 00:03:45,330 --> 00:03:49,279 Nå er hans bilde her faktisk Ansel tre år siden på CS50 Hackathon 84 00:03:49,279 --> 00:03:51,820 da han lånte en av våre ballonger, stakk den til sin laptop, 85 00:03:51,820 --> 00:03:55,240 og, for de neste 12 noen odde timer, fokusert på hans siste prosjekt, 86 00:03:55,240 --> 00:03:59,150 tar pauser bare for å åpne poser med godteri på Hackathon. 87 00:03:59,150 --> 00:04:02,210 >> Men han gikk på mer nylig til tilbringe denne siste sommeren med oss, 88 00:04:02,210 --> 00:04:05,270 siden CS50 for sine ansatte, og nå studenter dette semesteret, 89 00:04:05,270 --> 00:04:06,770 har sin egen 3D-skriver. 90 00:04:06,770 --> 00:04:10,180 Og i et nøtteskall en 3D-skrivere er en enhet som ser helt som dette. 91 00:04:10,180 --> 00:04:15,700 Du fyller den med en plastsnelle som er smeltet ned ved anordningen 92 00:04:15,700 --> 00:04:18,940 og du bygger ting bokstavelig talt fra ingenting. 93 00:04:18,940 --> 00:04:22,660 Mye som en blekkskriver, begynner du spytter ut små prikker av plast 94 00:04:22,660 --> 00:04:24,990 at skjemaet sammen for å danne hele objekter. 95 00:04:24,990 --> 00:04:28,430 Og så Ansel for eksempel, tidligere denne sommeren, har en iPhone 5 96 00:04:28,430 --> 00:04:30,722 og besluttet at han virkelig ønsket å støtte den opp på pulten hans. 97 00:04:30,722 --> 00:04:32,638 Men han ønsket ikke å gå ut og kjøpe noe 98 00:04:32,638 --> 00:04:36,030 fra Apple Store eller lignende, så han satte seg ned og begynte å tegne noe. 99 00:04:36,030 --> 00:04:38,280 Han tok noen målinger som til hvor tykk 100 00:04:38,280 --> 00:04:41,270 og hvor bred sin iPhone var, han tegnet dette bildet her, 101 00:04:41,270 --> 00:04:43,870 bestemte han seg for at han ville å ha en 75 graders vippe 102 00:04:43,870 --> 00:04:46,150 som det ble stirret på ham på hans skrivebord der. 103 00:04:46,150 --> 00:04:50,440 Han snudde dette, bruker programvare, til en 3D CAD-modellen 104 00:04:50,440 --> 00:04:52,400 som så litt noe sånt som dette. 105 00:04:52,400 --> 00:04:55,940 Og da han gikk videre, slutt, for å faktisk lage den. 106 00:04:55,940 --> 00:05:00,250 Så faktisk, hvis noen av dere her, kanskje på rad at jeg kan kaste til, har 107 00:05:00,250 --> 00:05:06,780 an-- der har vi folk med iPhone 5, og her har vi to til. 108 00:05:06,780 --> 00:05:10,650 109 00:05:10,650 --> 00:05:17,037 >> Nå, for ikke å være dårligere, CS50 egen Cheng Gong også satt ut i sommer 110 00:05:17,037 --> 00:05:19,870 å bygge ganske mange ting og, faktisk, av grunner som fremdeles er 111 00:05:19,870 --> 00:05:23,970 uklart, har vært sakte skriver ut en hær av elefanter 112 00:05:23,970 --> 00:05:27,250 med svingarmer og badebukser. 113 00:05:27,250 --> 00:05:32,515 Et par av dem er faktisk her hvis noen ville nå like-- en elefant. 114 00:05:32,515 --> 00:05:35,650 115 00:05:35,650 --> 00:05:40,522 Greit,. men hva Cheng gjorde også for oss er han meget vennlig satt opp et kamera 116 00:05:40,522 --> 00:05:42,230 fordi at elefanten, tro det eller ei, 117 00:05:42,230 --> 00:05:44,690 tar litt to og en halv time å skrive ut. 118 00:05:44,690 --> 00:05:47,840 Selv iPhone stativ tok en og en halv time å skrive ut. 119 00:05:47,840 --> 00:05:51,490 Og hva Cheng gikk videre og gjorde ble satt opp et fint kamera foran 120 00:05:51,490 --> 00:05:55,580 av dette 3D printer, filmet i en time og en halv som Ansel design skrives ut. 121 00:05:55,580 --> 00:05:58,090 Vi kledde noen sexy musikk til det for 122 00:05:58,090 --> 00:06:00,570 for å gi deg dette å se på hvordan 3D-utskrift fungerer. 123 00:06:00,570 --> 00:06:02,494 Og selv om dette er faktisk i plast, 124 00:06:02,494 --> 00:06:05,160 innse at hvis dette er et område av interesse for deg faglig, 125 00:06:05,160 --> 00:06:07,120 det finnes folk blant dem Jennifer Lewis her 126 00:06:07,120 --> 00:06:09,036 ved School of Engineering, som er faktisk 127 00:06:09,036 --> 00:06:10,920 jobber med 3D-utskrift av plastgjenstander. 128 00:06:10,920 --> 00:06:14,150 Men selv i økende grad biologiske materialer for å løse 129 00:06:14,150 --> 00:06:16,530 fysiologiske problemer for mennesker. 130 00:06:16,530 --> 00:06:19,944 Men her er en liten noe fra CS50. 131 00:06:19,944 --> 00:06:31,625 >> [LOUD mekanisk støy] 132 00:06:31,625 --> 00:06:34,250 DAVID J. MALAN: Det høres ikke noe sånt i virkeligheten, 133 00:06:34,250 --> 00:06:37,240 men det er mye kulere å se den på den hastigheten, og med den lyden. 134 00:06:37,240 --> 00:06:40,000 >> Nå på onsdag, hvordan fikk vi først komme hit? 135 00:06:40,000 --> 00:06:43,345 Vi begynte å snakke om datamaskinen vitenskap og vi spurte hva det var. 136 00:06:43,345 --> 00:06:46,470 Og det handler om en rekke ting, og det er så mange forskjellige retninger 137 00:06:46,470 --> 00:06:48,477 der kan du ta turen etter et kurs som CS50. 138 00:06:48,477 --> 00:06:50,810 Faktisk, hvis du plukket opp en av disse uoffisielle guider 139 00:06:50,810 --> 00:06:54,080 til CS utenfor, heftet som vi har gitt, enten du er 140 00:06:54,080 --> 00:06:57,150 tenker på å ta bare CS50, eller kanskje gjør en sekundær, 141 00:06:57,150 --> 00:06:59,557 eller kanskje til og med å konsentrere i CS, trenger bla gjennom det. 142 00:06:59,557 --> 00:07:01,390 Og du vil se et diagram mot slutten at 143 00:07:01,390 --> 00:07:04,950 viser deg de mange forskjellige retninger i CS at du kan gå ned i. 144 00:07:04,950 --> 00:07:09,030 >> Men for i dag, vil vi fokusere, igjen, på virkelig en av de grunnleggende synspunkter, 145 00:07:09,030 --> 00:07:11,500 kanskje, der du har innganger på problemer, 146 00:07:11,500 --> 00:07:13,430 du har utganger fra problemer, og du har 147 00:07:13,430 --> 00:07:17,420 algoritmer som å skape disse utganger fra disse innganger. 148 00:07:17,420 --> 00:07:20,330 Og et slikt eksempel, var av Selvfølgelig, dette telefonboken her. 149 00:07:20,330 --> 00:07:24,180 Og vi brukte som et eksempel for å gå gjennom en algoritme som var riktig. 150 00:07:24,180 --> 00:07:26,490 Og så en annen en var riktig, men litt raskere. 151 00:07:26,490 --> 00:07:29,448 Og så en annen som var litt mer dramatisk, men fundamentalt 152 00:07:29,448 --> 00:07:30,000 raskere. 153 00:07:30,000 --> 00:07:32,720 >> Høyre, denne telefonen boken vi hevdet hadde ca 1000 sider. 154 00:07:32,720 --> 00:07:36,200 Og hvor mange ganger har jeg har å rive telefonboken i halvparten 155 00:07:36,200 --> 00:07:39,930 å finne noen som Mike Smith, maksimalt, i 1000 siders bok? 156 00:07:39,930 --> 00:07:41,040 Så, 10 gi eller ta. 157 00:07:41,040 --> 00:07:45,050 Og så når jeg rev denne tingen i halvparten, eller rett og slett, mer modent, 158 00:07:45,050 --> 00:07:48,490 delt i to, er det bare 10 sider av 1000. 159 00:07:48,490 --> 00:07:51,470 Og hvis du ekstrapolere, litt urealistisk for en telefonbok, 160 00:07:51,470 --> 00:07:56,540 men hvis dette telefonboken hadde noen 4 milliarder sider i den, så helt 161 00:07:56,540 --> 00:07:59,680 uhåndterlig fysisk, hvor mange ganger dele du en 4 milliarder 162 00:07:59,680 --> 00:08:01,460 siden telefonboken i omgang? 163 00:08:01,460 --> 00:08:03,035 Så det er faktisk 32, gi eller ta. 164 00:08:03,035 --> 00:08:07,090 Og så 32 ganger bare, ut av 4 milliarder sider, kan 165 00:08:07,090 --> 00:08:08,700 du finner noen som Mike Smith. 166 00:08:08,700 --> 00:08:09,740 Og det er effektivitet. 167 00:08:09,740 --> 00:08:12,130 Det er en god algoritme, daresay. 168 00:08:12,130 --> 00:08:14,480 >> Men da vi flyttet fra det å prøve å formalisere det. 169 00:08:14,480 --> 00:08:16,100 Og jeg foreslått denne pseudokoden. 170 00:08:16,100 --> 00:08:17,800 Pseudokode er ikke noe formelt. 171 00:08:17,800 --> 00:08:18,880 Det er ikke noe du huske. 172 00:08:18,880 --> 00:08:21,588 Det er bare noe du uttrykker ganske intuitivt å bruke engelsk, 173 00:08:21,588 --> 00:08:24,990 eller hvilket som helst språk egentlig, at formidler dine ideer konsist. 174 00:08:24,990 --> 00:08:26,990 Men hva er nøkkelen om pseudokode er at du 175 00:08:26,990 --> 00:08:30,331 forsøke å forutse alle mulige tilfeller som kan skje. 176 00:08:30,331 --> 00:08:33,080 Og ja, i dette pseudo kode, var det egentlig tre tilfeller 177 00:08:33,080 --> 00:08:34,700 hver gang jeg delt telefonboken. 178 00:08:34,700 --> 00:08:36,006 Mike kan være til venstre. 179 00:08:36,006 --> 00:08:37,130 Mike kan være til høyre. 180 00:08:37,130 --> 00:08:39,240 Eller han kan være rett på siden jeg er på. 181 00:08:39,240 --> 00:08:42,110 Eller en fjerde hjørnet sak, så å si. 182 00:08:42,110 --> 00:08:46,470 En dårlig scenario kan være en which-- hva som skjer? 183 00:08:46,470 --> 00:08:48,860 Mike er bare ikke i telefonboken i det hele tatt. 184 00:08:48,860 --> 00:08:52,720 >> Og når programmer crash-- når Mac og PC-programvare som dere kjøre 185 00:08:52,720 --> 00:08:56,400 på datamaskinene noen ganger henger eller avslutter uventet, 186 00:08:56,400 --> 00:08:59,770 som generelt medfører at noen programmerer, noen mennesker som deg snart, 187 00:08:59,770 --> 00:09:01,650 bare skrudd opp og gjort noen feil. 188 00:09:01,650 --> 00:09:05,207 Kanskje ikke hadde forutsett at kanskje det er ingen Mike Smith i telefonboken. 189 00:09:05,207 --> 00:09:08,040 Og hvis du ikke egentlig skrive kode for å håndtere situasjoner som det, 190 00:09:08,040 --> 00:09:09,890 generelt uforutsigbare ting kan skje. 191 00:09:09,890 --> 00:09:10,960 Maskinen kan fryse. 192 00:09:10,960 --> 00:09:11,730 Det kan starte på nytt. 193 00:09:11,730 --> 00:09:12,889 Programmet kan slutte. 194 00:09:12,889 --> 00:09:14,722 Og slik at alle disse dumheter som du kan 195 00:09:14,722 --> 00:09:18,030 har møtt i din faktiske liv bare ved hjelp av datamaskiner, 196 00:09:18,030 --> 00:09:20,710 vil i økende grad være like forklares bort av denne intuisjon 197 00:09:20,710 --> 00:09:24,920 og denne forståelsen av hva som er faktisk skjer under panseret. 198 00:09:24,920 --> 00:09:27,329 >> Nå prøver vi å ta en titt på et mer generelt problem. 199 00:09:27,329 --> 00:09:29,120 Snarere enn å ta oppmøte på et sted som 200 00:09:29,120 --> 00:09:32,230 dette, noe som vil være ganske langsom å gjøre en, to, tre, fire. 201 00:09:32,230 --> 00:09:34,070 Eller kanskje to, fire, seks, åtte. 202 00:09:34,070 --> 00:09:36,080 La oss fokus, i stedet, på hvordan vi kan formalisere 203 00:09:36,080 --> 00:09:39,400 algoritmen av prosessen ved som vi kunne ta frammøte. 204 00:09:39,400 --> 00:09:42,290 Og langs veien, la oss starte å bruke noen nomenklatur 205 00:09:42,290 --> 00:09:47,130 som vi bruker i dag når vi faktisk starte programmering på et språk. 206 00:09:47,130 --> 00:09:50,910 Så jeg gir dere nå, en fire minutters video at vi satt sammen med våre venner 207 00:09:50,910 --> 00:09:52,820 fra TED, organisasjonen. 208 00:09:52,820 --> 00:09:56,380 Hvor vi leverte et manus og de brakte sine animatører å bære, 209 00:09:56,380 --> 00:10:00,970 og faktisk skapt en 2D animasjon av hva en algoritme er. 210 00:10:00,970 --> 00:10:02,776 Hvis vi kunne dempe lysene. 211 00:10:02,776 --> 00:10:06,664 >> [Musikk spilles] 212 00:10:06,664 --> 00:10:17,890 213 00:10:17,890 --> 00:10:19,140 FORTELLER: Hva er en algoritme? 214 00:10:19,140 --> 00:10:21,620 I informatikk, en algoritme som er et sett 215 00:10:21,620 --> 00:10:24,840 instruksjoner løse noen problem trinn-for-trinn. 216 00:10:24,840 --> 00:10:27,310 Vanligvis er algoritmer utført av datamaskiner, 217 00:10:27,310 --> 00:10:29,365 men vi mennesker har algoritmer også. 218 00:10:29,365 --> 00:10:31,240 For eksempel, hvordan ville du går om å telle 219 00:10:31,240 --> 00:10:32,990 antall personer i et rom? 220 00:10:32,990 --> 00:10:36,840 Vel, hvis du er som meg, ville du sannsynligvis peke på hver person en om gangen 221 00:10:36,840 --> 00:10:38,370 og telle opp fra null. 222 00:10:38,370 --> 00:10:41,200 En, to, tre, fire, og så videre. 223 00:10:41,200 --> 00:10:42,410 Vel, det er en algoritme. 224 00:10:42,410 --> 00:10:45,820 Faktisk, la oss prøve å uttrykke det en litt mer formelt i pseudokode. 225 00:10:45,820 --> 00:10:48,940 Engelsk-lignende syntaks som ligner et programmeringsspråk. 226 00:10:48,940 --> 00:10:50,880 >> La n lik 0. 227 00:10:50,880 --> 00:10:55,210 For hver person i rommet, satt n lik n pluss 1.. 228 00:10:55,210 --> 00:10:56,790 Hvordan tolke pseudokode? 229 00:10:56,790 --> 00:10:59,490 Vel linje en erklærer så å si, en variabel 230 00:10:59,490 --> 00:11:02,880 kalt n og initialiserer verdien til 0 Dette bare 231 00:11:02,880 --> 00:11:05,080 betyr at på det begynnelsen av vår algoritme, 232 00:11:05,080 --> 00:11:07,910 ting som vi er telling har en verdi på 0. 233 00:11:07,910 --> 00:11:10,860 Tross alt, før vi begynner å telle vi har ikke regnet noe ennå. 234 00:11:10,860 --> 00:11:13,580 Ringe denne variabelen n er bare en konvensjon. 235 00:11:13,580 --> 00:11:15,130 Jeg kunne ha kalt det mest noe. 236 00:11:15,130 --> 00:11:17,460 Nå linje to demarks starten av en løkke, 237 00:11:17,460 --> 00:11:20,550 en sekvens av trinn som vil gjentas et antall ganger. 238 00:11:20,550 --> 00:11:24,130 Så i vårt eksempel, det skritt vi er tar er å telle mennesker i rommet. 239 00:11:24,130 --> 00:11:26,260 Beneath linje to er linje tre som beskriver 240 00:11:26,260 --> 00:11:28,400 nøyaktig hvordan vi skal gå om å telle. 241 00:11:28,400 --> 00:11:31,720 Innrykk innebærer at det er linje tre som vil gjenta. 242 00:11:31,720 --> 00:11:35,190 Så med pseudokoden er sier er at etter starter på 0 243 00:11:35,190 --> 00:11:38,940 for hver person i rom vil vi øke n med 1 244 00:11:38,940 --> 00:11:41,310 Nå er denne algoritmen riktig? 245 00:11:41,310 --> 00:11:42,820 Vel la oss banke på det litt. 246 00:11:42,820 --> 00:11:45,520 >> Fungerer det hvis det er to personer i rommet? 247 00:11:45,520 --> 00:11:46,420 La oss se. 248 00:11:46,420 --> 00:11:48,500 I tråd én initial vi n til 0. 249 00:11:48,500 --> 00:11:51,910 For hver av disse to personer, vi deretter øke n med 1. 250 00:11:51,910 --> 00:11:55,570 Så i den første turen gjennom loop, oppdaterer vi n fra 0 til 1. 251 00:11:55,570 --> 00:11:59,320 På den andre tur gjennom denne samme sløyfe, oppdaterer vi n fra 1 til 2. 252 00:11:59,320 --> 00:12:02,850 Og så, etter denne algoritmen er enden, n er 2, som 253 00:12:02,850 --> 00:12:04,950 faktisk samsvarer med antall av mennesker i rommet. 254 00:12:04,950 --> 00:12:06,040 Så langt, så bra. 255 00:12:06,040 --> 00:12:07,870 >> Hva med et hjørne tilfelle skjønt? 256 00:12:07,870 --> 00:12:11,090 Anta at det er 0 personer i rommet-- foruten meg, er hvem 257 00:12:11,090 --> 00:12:12,420 gjør telling. 258 00:12:12,420 --> 00:12:15,380 I tråd ett, vi igjen initial n til 0. 259 00:12:15,380 --> 00:12:17,810 Denne gangen om, linje tre utfører ikke i det hele tatt 260 00:12:17,810 --> 00:12:19,610 siden det ikke er en person i rommet. 261 00:12:19,610 --> 00:12:23,540 Og så n fortsatt 0, noe som faktisk passer antall personer i rommet. 262 00:12:23,540 --> 00:12:24,670 Ganske enkelt, ikke sant? 263 00:12:24,670 --> 00:12:27,880 Men å telle folk en om gangen er ganske ineffektiv, også, nei? 264 00:12:27,880 --> 00:12:29,160 Sikkert vi kan gjøre bedre. 265 00:12:29,160 --> 00:12:33,440 Hvorfor ikke telle to personer på en gang, i stedet for å telle en, to, tre, 266 00:12:33,440 --> 00:12:36,470 fire, fem, seks, sju, åtte, og så videre. 267 00:12:36,470 --> 00:12:39,106 Hvorfor ikke telle to, fire, seks, åtte, og så videre? 268 00:12:39,106 --> 00:12:40,670 Det høres enda raskere. 269 00:12:40,670 --> 00:12:41,940 Og det er sikkert. 270 00:12:41,940 --> 00:12:44,490 >> La oss uttrykke dette optimalisering i pseudokode. 271 00:12:44,490 --> 00:12:46,040 La n lik 0. 272 00:12:46,040 --> 00:12:50,760 For hvert par av mennesker rom, sett n lik n pluss 2. 273 00:12:50,760 --> 00:12:52,360 Ganske enkel endring, ikke sant? 274 00:12:52,360 --> 00:12:56,560 I stedet for å telle personer en av gangen, vi i stedet telle dem to om gangen. 275 00:12:56,560 --> 00:12:59,240 Denne algoritmen er således dobbelt så rask som den forrige. 276 00:12:59,240 --> 00:13:00,530 Men er det riktig? 277 00:13:00,530 --> 00:13:01,160 La oss se. 278 00:13:01,160 --> 00:13:03,580 Fungerer det hvis det er to personer i rommet? 279 00:13:03,580 --> 00:13:05,800 I tråd ett, vi initial n til 0. 280 00:13:05,800 --> 00:13:09,160 For at ett par av mennesker, vi deretter øke n med 2. 281 00:13:09,160 --> 00:13:11,910 Og så ved denne algoritmen er ende n er 2, som 282 00:13:11,910 --> 00:13:13,910 faktisk samsvarer med antall av mennesker i rommet. 283 00:13:13,910 --> 00:13:16,610 >> Anta at ved at det finnes null personer i rommet. 284 00:13:16,610 --> 00:13:19,080 I tråd én initial vi n til 0. 285 00:13:19,080 --> 00:13:21,260 Som før, linje tre utfører ikke alt 286 00:13:21,260 --> 00:13:25,270 siden det ikke er noen par av mennesker i rommet, og så n fortsatt 0. 287 00:13:25,270 --> 00:13:27,840 Som faktisk matcher antall personer i rommet. 288 00:13:27,840 --> 00:13:30,520 Men hva om det er tre personer i rommet? 289 00:13:30,520 --> 00:13:32,380 Hvordan virker denne algoritmen fare? 290 00:13:32,380 --> 00:13:35,710 La oss se, på linje en, vi initial n til 0. 291 00:13:35,710 --> 00:13:39,140 For et par av dem, vi deretter øke n med 2. 292 00:13:39,140 --> 00:13:40,050 Men hva så? 293 00:13:40,050 --> 00:13:42,340 Det er ikke en annen full par personer i rommet, 294 00:13:42,340 --> 00:13:44,430 slik linje to ikke lenger gjelder. 295 00:13:44,430 --> 00:13:48,790 Og så ved denne algoritmen er slutt, n er 2, som fremdeles ikke er riktig. 296 00:13:48,790 --> 00:13:52,070 Faktisk sa denne algoritmen er å være buggy fordi den har en feil. 297 00:13:52,070 --> 00:13:54,070 >> La oss oppreisning med noen nye pseudokode. 298 00:13:54,070 --> 00:13:56,110 La n lik 0. 299 00:13:56,110 --> 00:14:00,790 For hvert par av mennesker rom, sett N lik n pluss 2. 300 00:14:00,790 --> 00:14:05,410 Hvis en person er fortsatt uparet, satt N lik n pluss 1.. 301 00:14:05,410 --> 00:14:09,340 For å løse dette problemet, vi har introdusert på linje fire en tilstand, 302 00:14:09,340 --> 00:14:12,120 ellers kjent som en gren, at bare Utfører 303 00:14:12,120 --> 00:14:14,890 hvis det er en person vi kan ikke pare med en annen. 304 00:14:14,890 --> 00:14:17,140 Og så nå, enten det er ett eller tre, 305 00:14:17,140 --> 00:14:21,550 eller ulikt antall personer i rommet, denne algoritmen vil nå telle dem. 306 00:14:21,550 --> 00:14:22,810 Kan vi gjøre det enda bedre? 307 00:14:22,810 --> 00:14:25,890 Vel, vi kunne stole på treere, eller firere, eller til femmere og tiere, 308 00:14:25,890 --> 00:14:29,390 men utover det, det kommer til å få litt vanskelig å peke. 309 00:14:29,390 --> 00:14:32,900 >> På slutten av dagen, enten henrettet av datamaskiner eller mennesker, 310 00:14:32,900 --> 00:14:34,870 algoritmer er bare et sett med instruksjoner 311 00:14:34,870 --> 00:14:36,560 med å løse problemer. 312 00:14:36,560 --> 00:14:38,360 Disse var bare tre. 313 00:14:38,360 --> 00:14:41,860 Hvilket problem ville du løse med en algoritme? 314 00:14:41,860 --> 00:14:44,261 >> DAVID J. MALAN: Så bevisst, en meget enkel program 315 00:14:44,261 --> 00:14:46,260 en meget enkel algoritme, for å oppnå noe 316 00:14:46,260 --> 00:14:48,280 meget enkel, telle antall personer i rommet. 317 00:14:48,280 --> 00:14:50,370 >> Men la oss erte hverandre noen av de representative 318 00:14:50,370 --> 00:14:52,870 funksjoner her som faktisk er kommer til å være nyttig, selv når 319 00:14:52,870 --> 00:14:54,880 implementere den mest kompleks av programvare. 320 00:14:54,880 --> 00:14:58,060 Så for eksempel, i denne første linje, har vi det vi kaller variabelen, 321 00:14:58,060 --> 00:15:01,040 og fra algebra, er du generelt kjent med x og y 322 00:15:01,040 --> 00:15:02,930 og z noen ganger, og så videre. 323 00:15:02,930 --> 00:15:05,770 Men i programmering, variabler fremdeles, ved slutten av dagen, 324 00:15:05,770 --> 00:15:06,680 meget lik den som er. 325 00:15:06,680 --> 00:15:09,910 Men det er kanskje enklere å tenke av en variabel som bare en beholder. 326 00:15:09,910 --> 00:15:13,520 Og, faktisk, er det noen antall bits implementert en eller annen måte på harddisken 327 00:15:13,520 --> 00:15:16,410 eller i datamaskinens minne, men mer om det i fremtiden. 328 00:15:16,410 --> 00:15:17,670 Det er bare en beholder. 329 00:15:17,670 --> 00:15:20,310 Og hvis du sier noe som la n lik 0, 330 00:15:20,310 --> 00:15:24,310 vel det er som å kalle dette glasset bolle her n, bare et vilkårlig navn, 331 00:15:24,310 --> 00:15:26,230 og sette ingenting i den i utgangspunktet. 332 00:15:26,230 --> 00:15:28,940 Så verdien av denne bollen er akkurat nå null. 333 00:15:28,940 --> 00:15:31,380 Og selvfølgelig hvis du oppfatter i en etterfølgende linje, 334 00:15:31,380 --> 00:15:35,070 å faktisk øke noen linje av kode, som i denne tredje linje her, 335 00:15:35,070 --> 00:15:39,857 med 1, er som å si hva er det nåverdien av n, er det 0, pluss 1, 336 00:15:39,857 --> 00:15:41,690 sette noe sånt som en ping pong ball i her. 337 00:15:41,690 --> 00:15:45,140 Nå verdien av denne variabel er ganske enkelt ett. 338 00:15:45,140 --> 00:15:50,064 Og du kan veldig raskt ekstrapolere, men nå er det to, nå er det tre, og så videre. 339 00:15:50,064 --> 00:15:51,230 Så det er alt en variabel er. 340 00:15:51,230 --> 00:15:53,740 Det er et stykke lagringsplass til faktisk lagre noen data. 341 00:15:53,740 --> 00:15:55,050 For nå er det en ping pong ball. 342 00:15:55,050 --> 00:15:55,883 Det er det et tall. 343 00:15:55,883 --> 00:15:58,910 Men det kan være ord i en ordbok, som stavekontrollen 344 00:15:58,910 --> 00:16:02,300 Jeg antydet onsdag for en av fjorårets oppgavesett. 345 00:16:02,300 --> 00:16:05,640 >> Nå en annen viktig idé, som på samme måte er ganske intuitiv Jeg vil hevde, 346 00:16:05,640 --> 00:16:06,690 er som en løkke. 347 00:16:06,690 --> 00:16:08,930 Og sløyfen i prosessen for å telle alle 348 00:16:08,930 --> 00:16:12,540 er, selvfølgelig, gjør det samme ting igjen og igjen-- enten en 349 00:16:12,540 --> 00:16:14,140 på en gang eller to om gangen. 350 00:16:14,140 --> 00:16:17,690 Og du kan uttrykke dette på engelsk, eller pseudokode, i en rekke måter, 351 00:16:17,690 --> 00:16:21,560 men ved hjelp av denne preposisjonen "for" er en svært vanlig måte å gjøre det. 352 00:16:21,560 --> 00:16:24,460 For hver person i rommet, gjør dette. 353 00:16:24,460 --> 00:16:25,350 Igjen og igjen. 354 00:16:25,350 --> 00:16:27,700 Og det faktum at det finnes innrykket linje tre, 355 00:16:27,700 --> 00:16:29,840 betyr bare at det du er ment å gjøre 356 00:16:29,840 --> 00:16:33,490 er ting som er rykket inn under linjen to verket. 357 00:16:33,490 --> 00:16:35,590 Bare en menneskelig konvensjonen, men en vanlig en 358 00:16:35,590 --> 00:16:39,010 som vi skal se i faktiske høyere nivå programmeringsspråk. 359 00:16:39,010 --> 00:16:41,870 >> Nå litt mer interessant er når du kommer i et hjørne tilfelle. 360 00:16:41,870 --> 00:16:43,970 For eksempel, et hjørne tilfellet var når det 361 00:16:43,970 --> 00:16:48,060 var tre personer, eller fem, eller syv, eller ulikt antall personer i rommet, 362 00:16:48,060 --> 00:16:51,630 fordi du gjør at to og to bremser slutt fordi du kommer 363 00:16:51,630 --> 00:16:54,265 å gå glipp av noen, enten på helt i begynnelsen eller helt på slutten 364 00:16:54,265 --> 00:16:55,390 avhengig av hvordan du gjør det. 365 00:16:55,390 --> 00:16:59,800 Og så, nå har jeg denne grenen, eller tilstand, hvis en person er fortsatt, 366 00:16:59,800 --> 00:17:04,490 deretter gå videre og håndtere at en ensom person som ikke fikk 367 00:17:04,490 --> 00:17:05,690 sammen med noen andre. 368 00:17:05,690 --> 00:17:09,030 Så det er det vi vil kalle en tilstand, eller en gren. 369 00:17:09,030 --> 00:17:11,500 >> Nå pseudokode Mer generelt kan bli 370 00:17:11,500 --> 00:17:13,730 skrevet for å løse en rekke problemer. 371 00:17:13,730 --> 00:17:16,490 Og det jeg trodde vi skulle gjøre her er å ta et øyeblikk 372 00:17:16,490 --> 00:17:20,089 å invitere skal vi si CS50 er eier Rob Bowden på scenen 373 00:17:20,089 --> 00:17:25,040 å ha med to frivillige, som har ingen anelse om hva som venter. 374 00:17:25,040 --> 00:17:26,890 En hånd gikk ned så snart jeg sa det. 375 00:17:26,890 --> 00:17:28,700 Hva med deg på ende her, kom igjen opp. 376 00:17:28,700 --> 00:17:33,040 Og hva med fra lenger bort, hva med veien på baksiden. 377 00:17:33,040 --> 00:17:35,200 Tilbake rad, kom opp med hendene over hodet. 378 00:17:35,200 --> 00:17:36,475 Alright, og hva heter du? 379 00:17:36,475 --> 00:17:36,960 >> ANITA: Anita. 380 00:17:36,960 --> 00:17:37,655 >> DAVID J. MALAN: Anita. 381 00:17:37,655 --> 00:17:38,613 Ok, hyggelig å møte deg. 382 00:17:38,613 --> 00:17:41,010 La meg introdusere deg til Rob Bowden. 383 00:17:41,010 --> 00:17:42,890 Dette er Anita. 384 00:17:42,890 --> 00:17:44,033 Og hva er ditt navn? 385 00:17:44,033 --> 00:17:44,800 >> Kiersten: Kiersten 386 00:17:44,800 --> 00:17:46,020 >> DAVID J. MALAN: Kiersten. 387 00:17:46,020 --> 00:17:49,790 Kiersten, kom opp og møte Rob Bowden og Anita. 388 00:17:49,790 --> 00:17:51,036 Hyggelig å møte deg. 389 00:17:51,036 --> 00:17:52,160 Kiersten: Hyggelig å møte deg. 390 00:17:52,160 --> 00:17:53,368 DAVID J. MALAN: Alright, Rob. 391 00:17:53,368 --> 00:17:54,650 ROB BOWDEN: Hyggelig å møte deg. 392 00:17:54,650 --> 00:17:55,566 DAVID J. MALAN: Anita. 393 00:17:55,566 --> 00:17:56,520 Kiersten: Hei Anita. 394 00:17:56,520 --> 00:17:58,686 DAVID J. MALAN: Og din flere hundre klassekamerater. 395 00:17:58,686 --> 00:18:02,490 Så nå la meg gå videre og trekke opp bare et enkelt program her 396 00:18:02,490 --> 00:18:05,690 på Mac OS som vil la meg faktisk døyt noen notater ned. 397 00:18:05,690 --> 00:18:09,570 Og hvis dere vil hver ta en stilling ved en av disse skoler der, 398 00:18:09,570 --> 00:18:16,360 la meg gå videre og starter en liste av pseudokode, hvis du vil. 399 00:18:16,360 --> 00:18:19,970 Og hva jeg ønsker å gjøre her, til syvende og sist er typen for deg 400 00:18:19,970 --> 00:18:22,470 noen instruksjoner om at vår publikum er faktisk 401 00:18:22,470 --> 00:18:23,569 kommer til å resitere for oss. 402 00:18:23,569 --> 00:18:25,860 La meg gå videre og bare endre dette til en nummerert liste 403 00:18:25,860 --> 00:18:27,720 å matche hva vi gjorde der oppe. 404 00:18:27,720 --> 00:18:30,990 Og hva jeg skal gjøre med din hjelp, er å skrive et program 405 00:18:30,990 --> 00:18:34,620 i pseudokode, som disse gutta kommer 406 00:18:34,620 --> 00:18:38,150 å gjennomføre en peanøtt smør og gelé sandwich. 407 00:18:38,150 --> 00:18:40,880 Så det er kanskje apropos til viser noe noen av dere 408 00:18:40,880 --> 00:18:44,560 kan ha sett på internett for bare en kort irriterende øyeblikk. 409 00:18:44,560 --> 00:18:47,650 >> [MUSIC BUCKEWHEAT BOYS, "peanøttsmør  JELLY TIME "] 410 00:18:47,650 --> 00:19:08,119 411 00:19:08,119 --> 00:19:08,910 DAVID J. MALAN: OK. 412 00:19:08,910 --> 00:19:10,050 Det er nok av det. 413 00:19:10,050 --> 00:19:12,690 Så her i mellomtiden, jeg har en par av Google briller som 414 00:19:12,690 --> 00:19:16,500 vi vil sette på CS50 egen Rob Bowden å se verden gjennom hans øyne. 415 00:19:16,500 --> 00:19:19,140 Og vi vil gjøre vårt beste i innlegget produksjon til faktisk veve 416 00:19:19,140 --> 00:19:23,100 opptakene av hva Rob er å se nå, i denne selve forelesningen 417 00:19:23,100 --> 00:19:26,420 video med våre to frivillige ved siden av ham. 418 00:19:26,420 --> 00:19:28,480 Så hva jeg skal gjøre er, vil jeg være kontordame. 419 00:19:28,480 --> 00:19:31,849 Vi har mål her av faktisk å skrive et program 420 00:19:31,849 --> 00:19:34,640 med å gjøre, til slutt, en peanøttsmør og gelé sandwich, 421 00:19:34,640 --> 00:19:37,680 men disse tre kommer til å oppføre seg som om de er datamaskiner. 422 00:19:37,680 --> 00:19:40,638 Og datamaskiner, ved slutten av dagen, er faktisk ganske dumme enheter. 423 00:19:40,638 --> 00:19:44,432 De er super rask, men de kan bare gjør det, bokstavelig talt, hva de blir fortalt. 424 00:19:44,432 --> 00:19:46,890 Du kan ikke bare si lage en peanut smør og gelé sandwich. 425 00:19:46,890 --> 00:19:48,640 Du må programmere dem til å gjøre det. 426 00:19:48,640 --> 00:19:51,420 Du må fortelle dem med presisjon hva de skal gjøre, 427 00:19:51,420 --> 00:19:54,400 mindre noe går fryktelig og, forhåpentligvis, amusingly forkjært. 428 00:19:54,400 --> 00:19:57,460 >> Så med det sagt, trenger vi én samtale-out fra publikum 429 00:19:57,460 --> 00:19:59,440 for hva som bør gå man være, hvis målet her 430 00:19:59,440 --> 00:20:01,356 er å lage en peanut smør og gelé sandwich. 431 00:20:01,356 --> 00:20:01,910 Ja? 432 00:20:01,910 --> 00:20:03,647 >> PUBLIKUM: [uhørlig] pose med brød. 433 00:20:03,647 --> 00:20:05,230 DAVID J. MALAN: Åpne pose med brød. 434 00:20:05,230 --> 00:20:08,360 Så hvis de tre deltakerne ville liker å fortsette å gjøre det bokstavelig. 435 00:20:08,360 --> 00:20:12,394 Åpne pose med brød. 436 00:20:12,394 --> 00:20:15,810 >> [Publikum Ler] 437 00:20:15,810 --> 00:20:20,717 438 00:20:20,717 --> 00:20:22,300 DAVID J. MALAN: Så la oss jobbe med det. 439 00:20:22,300 --> 00:20:23,180 Greit. 440 00:20:23,180 --> 00:20:25,400 Så trinn to, how-- la oss ta dette videre. 441 00:20:25,400 --> 00:20:26,480 Ja, i front. 442 00:20:26,480 --> 00:20:27,240 >> PUBLIKUM: [uhørlig] brødet. 443 00:20:27,240 --> 00:20:27,735 >> DAVID J. MALAN: Hva er det? 444 00:20:27,735 --> 00:20:28,836 >> PUBLIKUM: Fjern brød. 445 00:20:28,836 --> 00:20:30,210 DAVID J. MALAN: Fjern brød. 446 00:20:30,210 --> 00:20:31,190 Tilsvar fyndig. 447 00:20:31,190 --> 00:20:33,667 Takk. 448 00:20:33,667 --> 00:20:43,777 >> [APPLAUSE] 449 00:20:43,777 --> 00:20:44,860 DAVID J. MALAN: Det er det? 450 00:20:44,860 --> 00:20:48,830 OK, så trinn to kommer å være fjerne brød. 451 00:20:48,830 --> 00:20:51,790 Alright, noen ønsker å skrive oss en lengre setning? 452 00:20:51,790 --> 00:20:52,640 Noen andre? 453 00:20:52,640 --> 00:20:53,920 Litt mer [uhørbart]. 454 00:20:53,920 --> 00:20:54,810 Nei, ingenting nå. 455 00:20:54,810 --> 00:20:56,094 Ja? 456 00:20:56,094 --> 00:20:58,900 >> PUBLIKUM: Place to skiver ved siden av hverandre. 457 00:20:58,900 --> 00:21:03,575 >> DAVID J. MALAN: Place to skiver ved siden av hverandre. 458 00:21:03,575 --> 00:21:06,420 >> [Publikum Ler] 459 00:21:06,420 --> 00:21:09,590 >> DAVID J. MALAN: Place to skiver ved siden av hverandre. 460 00:21:09,590 --> 00:21:11,334 Trinn fire. 461 00:21:11,334 --> 00:21:12,816 Ja? 462 00:21:12,816 --> 00:21:14,792 >> PUBLIKUM: Ta din hånd og satte den lett 463 00:21:14,792 --> 00:21:17,756 på toppen av peanøttsmør lokket. 464 00:21:17,756 --> 00:21:19,710 >> [Publikum Ler] 465 00:21:19,710 --> 00:21:21,710 PUBLIKUM: [uhørbart] ved siden av peanøttsmør. 466 00:21:21,710 --> 00:21:21,870 DAVID J. MALAN: Hva? 467 00:21:21,870 --> 00:21:22,520 Si det igjen. 468 00:21:22,520 --> 00:21:26,308 >> PUBLIKUM: Skru av lokket og sette den forsiktig ved siden av peanøttsmør. 469 00:21:26,308 --> 00:21:31,490 >> DAVID J. MALAN: Sett den forsiktig ved siden av peanøttsmør. 470 00:21:31,490 --> 00:21:37,770 471 00:21:37,770 --> 00:21:40,090 OK, fremdrift. 472 00:21:40,090 --> 00:21:41,080 Trinn fem. 473 00:21:41,080 --> 00:21:42,380 Utmerket. 474 00:21:42,380 --> 00:21:43,261 Ja? 475 00:21:43,261 --> 00:21:44,163 >> Plukk opp kniv. 476 00:21:44,163 --> 00:21:46,380 477 00:21:46,380 --> 00:21:47,630 DAVID J. MALAN: Plukk opp kniv. 478 00:21:47,630 --> 00:21:52,320 479 00:21:52,320 --> 00:21:53,631 OK, trinn seks. 480 00:21:53,631 --> 00:21:54,130 Yeah? 481 00:21:54,130 --> 00:21:56,237 >> PUBLIKUM: Hold kniven i håndtaket. 482 00:21:56,237 --> 00:21:57,945 DAVID J. MALAN: Hold kniven ved hjelp av håndtaket. 483 00:21:57,945 --> 00:22:00,710 484 00:22:00,710 --> 00:22:03,230 Hold kniven etter håndtaket. 485 00:22:03,230 --> 00:22:04,880 Trinn syv. 486 00:22:04,880 --> 00:22:05,692 Ja? 487 00:22:05,692 --> 00:22:10,030 >> PUBLIKUM: [uhørlig] kniv i peanut smør og så lite ut [uhørbart]. 488 00:22:10,030 --> 00:22:13,070 >> DAVID J. MALAN: Sett kniven i-- jeg hørt "sette kniven i peanøttsmør 489 00:22:13,070 --> 00:22:19,500 og ta ut så lite som mulig. " 490 00:22:19,500 --> 00:22:22,480 Forresten, fjerne papiret først. 491 00:22:22,480 --> 00:22:29,320 492 00:22:29,320 --> 00:22:31,890 Greit, trinn ni. 493 00:22:31,890 --> 00:22:34,910 Trinn ni. 494 00:22:34,910 --> 00:22:35,624 Trinn ni. 495 00:22:35,624 --> 00:22:37,290 Vi har faktisk ikke gjort en sandwich ennå. 496 00:22:37,290 --> 00:22:37,790 Ja? 497 00:22:37,790 --> 00:22:41,570 PUBLIKUM: Ved hjelp av kniv i peanøttsmør, gjelder peanøttsmør på nevnte brød. 498 00:22:41,570 --> 00:22:47,440 >> DAVID J. MALAN: Bruke kniv i peanøttsmør, gjelder peanøttsmør på 499 00:22:47,440 --> 00:22:48,736 sa brød. 500 00:22:48,736 --> 00:22:56,030 >> [Publikum Ler] 501 00:22:56,030 --> 00:22:59,480 DAVID J. MALAN: Greit trinn 10. 502 00:22:59,480 --> 00:23:01,762 Trinn 10. 503 00:23:01,762 --> 00:23:02,750 Ja? 504 00:23:02,750 --> 00:23:05,220 >> PUBLIKUM: Taste peanut smør for å sikre kvalitet. 505 00:23:05,220 --> 00:23:15,960 >> [Publikum Ler] 506 00:23:15,960 --> 00:23:16,960 DAVID J. MALAN: Trinn 11. 507 00:23:16,960 --> 00:23:19,500 508 00:23:19,500 --> 00:23:21,340 Trinn 11. 509 00:23:21,340 --> 00:23:22,101 Trinn 11. 510 00:23:22,101 --> 00:23:22,600 Kom igjen. 511 00:23:22,600 --> 00:23:23,099 Yeah? 512 00:23:23,099 --> 00:23:24,208 Akkurat der. 513 00:23:24,208 --> 00:23:25,840 >> PUBLIKUM: Nøye plukke opp gelé. 514 00:23:25,840 --> 00:23:28,220 >> DAVID J. MALAN: Nøye plukke opp gelé. 515 00:23:28,220 --> 00:23:29,970 OK, og deretter en annen hånd var opp. 516 00:23:29,970 --> 00:23:32,812 517 00:23:32,812 --> 00:23:33,520 Rett bak deg. 518 00:23:33,520 --> 00:23:35,761 Ja, i blått. 519 00:23:35,761 --> 00:23:40,671 >> PUBLIKUM: Greit, fjern lokk fra [uhørbart], ja, 520 00:23:40,671 --> 00:23:42,635 fjerne lokket fra gelé. 521 00:23:42,635 --> 00:23:43,617 >> [Publikum Ler] 522 00:23:43,617 --> 00:23:44,742 >> DAVID J. MALAN: Fra gelé. 523 00:23:44,742 --> 00:23:45,581 Ha ha. 524 00:23:45,581 --> 00:23:48,967 >> [Publikum Ler] 525 00:23:48,967 --> 00:23:49,800 DAVID J. MALAN: Og? 526 00:23:49,800 --> 00:23:52,490 PUBLIKUM: Og knapt feie noe [uhørbart]. 527 00:23:52,490 --> 00:23:59,536 [Publikum Ler] 528 00:23:59,536 --> 00:24:04,456 PUBLIKUM: Of course, før [uhørbart], fjerne papiret fra gelé. 529 00:24:04,456 --> 00:24:06,940 DAVID J. MALAN: Fjern papiret fra gelé. 530 00:24:06,940 --> 00:24:08,229 Trinn 14. 531 00:24:08,229 --> 00:24:09,020 Vi er nesten der. 532 00:24:09,020 --> 00:24:09,857 Ja? 533 00:24:09,857 --> 00:24:12,600 >> PUBLIKUM: Invert gelé flaske før alt faller ut. 534 00:24:12,600 --> 00:24:16,515 >> DAVID J. MALAN: Invert gelé flasken før gelé faller ut. 535 00:24:16,515 --> 00:24:19,070 536 00:24:19,070 --> 00:24:19,890 Trinn 15. 537 00:24:19,890 --> 00:24:21,130 >> PUBLIKUM: Sett lokket. 538 00:24:21,130 --> 00:24:22,463 >> DAVID J. MALAN: Sett lokket. 539 00:24:22,463 --> 00:24:25,880 540 00:24:25,880 --> 00:24:28,190 Trinn 16. 541 00:24:28,190 --> 00:24:28,931 Yeah? 542 00:24:28,931 --> 00:24:29,806 >> PUBLIKUM: [uhørbart] 543 00:24:29,806 --> 00:24:34,109 544 00:24:34,109 --> 00:24:35,400 DAVID J. MALAN: Si det igjen. 545 00:24:35,400 --> 00:24:38,100 PUBLIKUM: Ta lokket av av gelé. 546 00:24:38,100 --> 00:24:39,650 DAVID J. MALAN: Av ditt gelé. 547 00:24:39,650 --> 00:24:43,720 548 00:24:43,720 --> 00:24:49,510 Så really-- Oops. 549 00:24:49,510 --> 00:24:50,420 Kom igjen. 550 00:24:50,420 --> 00:24:51,740 Sett på lokket. 551 00:24:51,740 --> 00:24:56,660 Sett cap-- Du sa fjerne hetten fra gelé. 552 00:24:56,660 --> 00:24:58,950 Føler at vi er i en bit av en loop. 553 00:24:58,950 --> 00:24:59,640 Trinn 17. 554 00:24:59,640 --> 00:25:00,398 Ja? 555 00:25:00,398 --> 00:25:02,639 >> PUBLIKUM: [uhørbart] 556 00:25:02,639 --> 00:25:03,930 DAVID J. MALAN: Si det igjen. 557 00:25:03,930 --> 00:25:05,150 PUBLIKUM: [uhørbart] 558 00:25:05,150 --> 00:25:07,835 DAVID J. MALAN: Gå tilbake til step-- 559 00:25:07,835 --> 00:25:10,110 PUBLIKUM: [uhørbart] 560 00:25:10,110 --> 00:25:13,760 DAVID J. MALAN: Fjern cap fra peanøttsmør. 561 00:25:13,760 --> 00:25:14,492 Ja? 562 00:25:14,492 --> 00:25:16,430 >> PUBLIKUM: Slipp alle gelé på brød. 563 00:25:16,430 --> 00:25:19,040 >> DAVID J. MALAN: Slett alle gelé på brødet. 564 00:25:19,040 --> 00:25:25,372 565 00:25:25,372 --> 00:25:26,830 DAVID J. MALAN: Vi er nesten der. 566 00:25:26,830 --> 00:25:27,800 Trinn 19. 567 00:25:27,800 --> 00:25:30,250 >> PUBLIKUM: Fjern overflødig gelé. 568 00:25:30,250 --> 00:25:31,720 >> DAVID J. MALAN: Haha, gelé. 569 00:25:31,720 --> 00:25:36,615 >> [APPLAUSE] 570 00:25:36,615 --> 00:25:39,240 DAVID J. MALAN: Hvorfor ikke we-- ett skritt til å ta dette hjem. 571 00:25:39,240 --> 00:25:41,720 Ett skritt til og deretter vi vil tjene smørbrød. 572 00:25:41,720 --> 00:25:42,900 Ja? 573 00:25:42,900 --> 00:25:45,570 >> PUBLIKUM: [uhørbart] 574 00:25:45,570 --> 00:25:50,704 >> DAVID J. MALAN: Mens noen smørbrød remains-- la oss innrykk dette-- spise. 575 00:25:50,704 --> 00:25:56,400 >> [Latter] 576 00:25:56,400 --> 00:26:00,395 >> DAVID J. MALAN: Greit, takk til våre frivillige her. 577 00:26:00,395 --> 00:26:06,150 >> [APPLAUSE} 578 00:26:06,150 --> 00:26:08,940 >> DAVID J. MALAN: Vi har noen fine avskjed gaver til hver av dere. 579 00:26:08,940 --> 00:26:14,350 Din egen peanøttsmør, gelé, og brød å ta med hjem. 580 00:26:14,350 --> 00:26:15,774 Takk. 581 00:26:15,774 --> 00:26:17,118 >> Kiersten: Takk. 582 00:26:17,118 --> 00:26:18,618 DAVID J. MALAN: [uhørbart] velkommen. 583 00:26:18,618 --> 00:26:21,849 [APPLAUSE] 584 00:26:21,849 --> 00:26:24,390 DAVID J. MALAN: Så dette er, av Selvfølgelig et latterlig eksempel. 585 00:26:24,390 --> 00:26:24,890 Høyre? 586 00:26:24,890 --> 00:26:28,890 Men det gjør slags avsløre hvordan vi mennesker bare ta klarhet for gitt. 587 00:26:28,890 --> 00:26:30,890 Og det faktum at jeg har vært å snakke med et annet menneske, 588 00:26:30,890 --> 00:26:33,300 han eller hun bare vet hva du mener. 589 00:26:33,300 --> 00:26:35,220 >> Datamaskiner er ikke til å vite hva du mener, 590 00:26:35,220 --> 00:26:37,430 selv ved bruk av, som vi er i ferd med å gjøre i dag, 591 00:26:37,430 --> 00:26:42,300 programmere noe i Scratch, en dra og slipp, puslespill brikke stil språk. 592 00:26:42,300 --> 00:26:44,310 Selv designet for unge barn, har du 593 00:26:44,310 --> 00:26:48,726 å være så eksplisitt og så bokstavelig med hva du vil at programmet skal gjøre. 594 00:26:48,726 --> 00:26:50,600 Nå til slutt, vi er kommer til å bli programmering 595 00:26:50,600 --> 00:26:53,550 ikke i pseudokode, Engelsk som syntaks, 596 00:26:53,550 --> 00:26:56,370 men kode, eller mer korrekt, kildekoden. 597 00:26:56,370 --> 00:26:59,260 Kildekoden er bare fancy måte for å beskrive koden du faktisk 598 00:26:59,260 --> 00:27:01,730 skrive med et tastatur som er ikke på engelsk per se. 599 00:27:01,730 --> 00:27:06,480 Det er i C eller Java eller C ++ eller noe sånn, så vi vil snart se. 600 00:27:06,480 --> 00:27:09,510 >> Og faktisk, bare for å skremme en få av dere, ved første øyekast, 601 00:27:09,510 --> 00:27:13,769 Dette er et program som er skrevet i et språk kalt C. Men for å un-skremme noen av dere, 602 00:27:13,769 --> 00:27:15,560 du vil helt forstå hva som skjer 603 00:27:15,560 --> 00:27:18,980 på kommer neste mandag når det kommer til noe som dette. 604 00:27:18,980 --> 00:27:20,510 Oppriktig, dette er en eldre språk. 605 00:27:20,510 --> 00:27:22,430 Det er ganske uforståelige, men det er representativt 606 00:27:22,430 --> 00:27:26,120 av en rekke språk i disse dager som har mange parenteser og krøllete 607 00:27:26,120 --> 00:27:28,630 bukseseler og anførselstegn og semikolon. 608 00:27:28,630 --> 00:27:30,780 Og mange av denne syntaktisk ting som ikke er 609 00:27:30,780 --> 00:27:32,450 i det hele tatt intellektuelt interessant. 610 00:27:32,450 --> 00:27:35,790 Faktisk, det er en absolutt distraksjon fra de helt enkle ideer 611 00:27:35,790 --> 00:27:37,370 som stirrer oss i ansiktet. 612 00:27:37,370 --> 00:27:41,760 Dette programmet, som du kanskje bare gjette, utskrifter til noens dataskjerm 613 00:27:41,760 --> 00:27:44,070 ordene "Hei komma verden." 614 00:27:44,070 --> 00:27:44,860 Det er det. 615 00:27:44,860 --> 00:27:46,580 Så klart, det er en masse ting som er 616 00:27:46,580 --> 00:27:48,970 komme i veien for noen selvfølgelighet der, 617 00:27:48,970 --> 00:27:52,490 men det kommer til å veldig raskt skli bort og være helt intuitivt. 618 00:27:52,490 --> 00:27:55,617 >> Ja, hva vi skal gjøre i dag er destillere dette ganske komplisert 619 00:27:55,617 --> 00:27:58,950 ser programmet, som igjen vil du komme å forstå raskt, men til noe 620 00:27:58,950 --> 00:27:59,710 mye enklere. 621 00:27:59,710 --> 00:28:01,640 La oss bare si hva vi mener. 622 00:28:01,640 --> 00:28:05,590 La oss tegne et bilde av hva vi mener, ved hjelp av disse brikkene her. 623 00:28:05,590 --> 00:28:09,110 >> Så dette er et programmerings språket kalles Scratch. 624 00:28:09,110 --> 00:28:11,080 Den ble utviklet av MIT Media Lab. 625 00:28:11,080 --> 00:28:14,830 Og hva du vil se i oppgavesettet null, som vil bli utgitt senere i kveld, 626 00:28:14,830 --> 00:28:18,980 vi vil ha deg gå til denne URL her scratch.mit.edu. 627 00:28:18,980 --> 00:28:20,940 Og de har en web basert grensesnitt via hvilke 628 00:28:20,940 --> 00:28:22,540 du vil skrive ditt første program. 629 00:28:22,540 --> 00:28:25,330 Eller de av dere med før erfaring, andre programmer, 630 00:28:25,330 --> 00:28:28,090 men i et miljø som er trolig litt uvant, og at 631 00:28:28,090 --> 00:28:32,930 vil presse deg til å skape noe ved hjelp av denne svært visuelle miljøet. 632 00:28:32,930 --> 00:28:35,940 >> Nå, til hva jeg skal gjøre her er å åpne opp selve programmet. 633 00:28:35,940 --> 00:28:41,911 Den eksisterer ikke bare som en nettleser, men også som et nedlastbart program 634 00:28:41,911 --> 00:28:44,660 slik at du faktisk kan bruke den hvis du ikke har tilgang til internett. 635 00:28:44,660 --> 00:28:46,743 Og jeg kommer til å gjøre det her inne, i Sanders, bare 636 00:28:46,743 --> 00:28:49,580 i tilfelle Wi-Fi ikke samarbeide super godt. 637 00:28:49,580 --> 00:28:52,640 Og hva jeg skal gjøre er å peke ut noen funksjoner i dette programmet. 638 00:28:52,640 --> 00:28:55,720 Så, for å være klar, har jeg bare dobbelt klikket på ikonet på skrivebordet mitt, 639 00:28:55,720 --> 00:28:59,830 eller ekvivalent gått til scratch.mit.edu, og det er trukket opp dette vinduet. 640 00:28:59,830 --> 00:29:01,650 Dette er et programmeringsmiljøet. 641 00:29:01,650 --> 00:29:04,110 Det er et stykke programvare som noen av våre venner på MIT 642 00:29:04,110 --> 00:29:08,850 skrev at la oss oss og du skriver programmer i et språk som heter Scratch. 643 00:29:08,850 --> 00:29:12,010 >> Nå er dette skjer for å være en katt som er også kalt Scratch 644 00:29:12,010 --> 00:29:13,890 og dette er hans verden der han bor. 645 00:29:13,890 --> 00:29:17,175 Dette er scenen, så å si, at rektangel på øverst i venstre hjørne. 646 00:29:17,175 --> 00:29:18,800 Og han trenger ikke å se ut som en katt. 647 00:29:18,800 --> 00:29:20,591 Du kan gjøre ham ser liker noe, og du 648 00:29:20,591 --> 00:29:23,700 kan ha mange slike sprites, eller tegn, i et program. 649 00:29:23,700 --> 00:29:27,450 I mellomtiden, over her på langt høyre, er en stor blank tavle. 650 00:29:27,450 --> 00:29:30,260 Og det er her, i et øyeblikk, vi kommer til å starte programmering 651 00:29:30,260 --> 00:29:32,750 ved å dra og slippe disse grafisk puslespill 652 00:29:32,750 --> 00:29:35,300 stykker som er riktig her i midten. 653 00:29:35,300 --> 00:29:38,140 Og det er mye mer av dem enn vi vil bruke tid på her i klassen 654 00:29:38,140 --> 00:29:40,080 fordi du vil finne at de er alle ganske intuitivt. 655 00:29:40,080 --> 00:29:41,788 Igjen, er den utformet for barn, men vi 656 00:29:41,788 --> 00:29:45,759 bruke den til å erte hverandre noen av dem grunnleggende ideer om variabler, løkker, 657 00:29:45,759 --> 00:29:48,050 forhold, og snart, ting som funksjoner og hendelser 658 00:29:48,050 --> 00:29:51,810 og tråder og andre fancy ting vi vil komme til før lang tid å faktisk lage 659 00:29:51,810 --> 00:29:53,840 noe fra bunnen av. 660 00:29:53,840 --> 00:29:54,810 Pun intended. 661 00:29:54,810 --> 00:29:58,740 >> Nå, hva jeg skal gjøre her er klikk på ikke bevegelse, men kontroll. 662 00:29:58,740 --> 00:30:01,400 Og dette er bare en kategorisering av her-- 663 00:30:01,400 --> 00:30:03,150 og jeg ser en annen farge satt av blokker. 664 00:30:03,150 --> 00:30:05,030 Men legg merke til noen kjente ord. 665 00:30:05,030 --> 00:30:07,830 "Hvis" og "else if" og "repeat". 666 00:30:07,830 --> 00:30:10,440 Og du kan sikkert gjette som minner om den grenen, 667 00:30:10,440 --> 00:30:12,870 eller forholdene vi så, og selv looping konstruere. 668 00:30:12,870 --> 00:30:14,760 Så vi har lignende blokker her. 669 00:30:14,760 --> 00:30:16,720 Men det mest interessante en er dette en her. 670 00:30:16,720 --> 00:30:20,690 Når denne grønne flagget er klikket, dette, for de med forhånds programing 671 00:30:20,690 --> 00:30:23,110 erfaring, er tilsvarende til en hovedfunksjon. 672 00:30:23,110 --> 00:30:25,300 Men for de som ikke kjenner, Dette er puslespill brikke 673 00:30:25,300 --> 00:30:27,320 som vil sparke starte hele programmet. 674 00:30:27,320 --> 00:30:31,350 Det betyr bokstavelig talt når jeg går, i dette program, og klikk på en grønn flag-- 675 00:30:31,350 --> 00:30:35,560 som du kan se her oppe i øverst i venstre hjørne av UI, 676 00:30:35,560 --> 00:30:38,570 så ser det grønne flagget ved siden av det røde stoppskiltet? 677 00:30:38,570 --> 00:30:41,475 Når jeg klikker det, min Programmet kommer til å kjøre. 678 00:30:41,475 --> 00:30:43,850 Nå skal jeg gjøre noe super enkelt med Scratch. 679 00:30:43,850 --> 00:30:46,640 Jeg kommer til å gå videre og gå til utseende panel 680 00:30:46,640 --> 00:30:50,010 her, hvor jeg har en haug av lilla brikkene, 681 00:30:50,010 --> 00:30:53,887 og jeg kommer til å gå videre og gjøre noe super enkelt som, si. 682 00:30:53,887 --> 00:30:55,720 Og then-- varsel dette tekst i den hvite boksen 683 00:30:55,720 --> 00:30:59,290 er editable-- jeg kommer til å si "Hei verden", akkurat som vi 684 00:30:59,290 --> 00:31:01,470 gjorde i det tekstlige versjon for et øyeblikk siden. 685 00:31:01,470 --> 00:31:05,920 Og nå hvis jeg går og klikker på denne grønt flagg, Jeg har nå programmert. 686 00:31:05,920 --> 00:31:07,810 Det er ikke et spesielt interessant program, 687 00:31:07,810 --> 00:31:09,760 men jeg gjorde maskinen gjøre noe. 688 00:31:09,760 --> 00:31:13,120 Jeg startet et program, og det gjorde det jeg ble fortalt at det skal gjøre. 689 00:31:13,120 --> 00:31:16,170 Nå kan jeg fortsette å dra og slippe flere og flere av disse brikkene 690 00:31:16,170 --> 00:31:19,220 og de kommer til å sperre, men la oss klapse noen terminologi på her 691 00:31:19,220 --> 00:31:21,680 at vi får se gjentakende i løpet, 692 00:31:21,680 --> 00:31:24,610 og egentlig hele informatikk og programmering mer generelt. 693 00:31:24,610 --> 00:31:27,990 >> Denne "si" blokk, i lilla, la oss bare begynne å kalle en uttalelse. 694 00:31:27,990 --> 00:31:29,240 Det er som en uttalelse om faktum. 695 00:31:29,240 --> 00:31:30,380 Gjør dette. 696 00:31:30,380 --> 00:31:32,590 Så det er en kategori av instruksjoner som du 697 00:31:32,590 --> 00:31:36,760 kan mate en datamaskin som en del av et program eller en algoritme. 698 00:31:36,760 --> 00:31:39,270 Og for å være klar, har du trolig tatt for gitt 699 00:31:39,270 --> 00:31:41,930 at du har programmer på datamaskinen. 700 00:31:41,930 --> 00:31:45,850 Og de er slags algoritmer, men en Programmet er egentlig en haug av algoritmer 701 00:31:45,850 --> 00:31:47,160 at noen mennesker skrev. 702 00:31:47,160 --> 00:31:49,040 De pakket den opp og de solgte det så du, 703 00:31:49,040 --> 00:31:51,330 eller de lagt ut på en nettside du kan laste ned. 704 00:31:51,330 --> 00:31:54,930 Derfor, er et program bare hel haug med nuller og enere 705 00:31:54,930 --> 00:31:56,970 at en eller annen måte, mennesker skapt. 706 00:31:56,970 --> 00:32:00,080 Og disse mønstrene av nuller og de representerer ting, til slutt, 707 00:32:00,080 --> 00:32:04,030 som "sier hello world" eller "play denne musikken "eller" spille denne videoen " 708 00:32:04,030 --> 00:32:05,129 eller "send en e-post." 709 00:32:05,129 --> 00:32:06,920 Men vi vil komme tilbake i måten mer detalj hva 710 00:32:06,920 --> 00:32:08,780 et program er når du, selv, skrive dem. 711 00:32:08,780 --> 00:32:11,320 >> Her er en annen statement-- "Vent ett sekund." 712 00:32:11,320 --> 00:32:14,330 Jeg brukte ikke dette ennå, men hvis jeg vil mitt program for å ta en pause for et øyeblikk 713 00:32:14,330 --> 00:32:16,540 å gjøre noe, kan jeg fortelle det til å gjøre det. 714 00:32:16,540 --> 00:32:18,450 Vent ett sekund. 715 00:32:18,450 --> 00:32:20,150 Nå en annen kan være "spille av lyd." 716 00:32:20,150 --> 00:32:23,270 Så, dette er unikt for Scratch, det har evne til å spille av lyden. 717 00:32:23,270 --> 00:32:26,130 Så, en uttalelse jeg kan bruken er, her, "spille av lyd." 718 00:32:26,130 --> 00:32:29,530 I mellomtiden, boolsk uttrykk, så dette er en mer avansert ord 719 00:32:29,530 --> 00:32:34,490 oppkalt etter bare en fyr som heter Mr. Bool, og dette handler om et spørsmål. 720 00:32:34,490 --> 00:32:37,470 Sant eller false-- er musen ned? 721 00:32:37,470 --> 00:32:41,100 Et boolsk uttrykk er bare noen uttrykk på engelsk 722 00:32:41,100 --> 00:32:42,860 som er enten sann eller usann. 723 00:32:42,860 --> 00:32:44,140 Enten på eller av. 724 00:32:44,140 --> 00:32:45,130 Enten en eller null. 725 00:32:45,130 --> 00:32:46,960 Du kan tenke på det på en rekke måter, 726 00:32:46,960 --> 00:32:49,220 men det er enten sant eller denne falske, til slutt. 727 00:32:49,220 --> 00:32:52,540 Så "musen ned spørsmålstegn," som ville være et Boolsk uttrykk. 728 00:32:52,540 --> 00:32:54,300 Og du kan tenke på andre, kanskje. 729 00:32:54,300 --> 00:32:57,510 For eksempel, "er den venstre rekke mindre enn riktig nummer? " 730 00:32:57,510 --> 00:32:59,410 Som også ville være en boolsk uttrykk. 731 00:32:59,410 --> 00:33:01,540 "Mindre enn" er en boolsk uttrykk. 732 00:33:01,540 --> 00:33:03,280 >> Dette også, "rørende musepekeren." 733 00:33:03,280 --> 00:33:05,196 Jeg er ikke sikker på hvorfor de kalte det musepekeren. 734 00:33:05,196 --> 00:33:08,430 Det betyr bare, er markøren, er det pil på skjermen, berører katten, 735 00:33:08,430 --> 00:33:09,022 for eksempel. 736 00:33:09,022 --> 00:33:10,480 Eller noen andre aspekter av skjermen. 737 00:33:10,480 --> 00:33:13,710 Og det er et spørsmål, igjen, og som betegner en boolsk uttrykk. 738 00:33:13,710 --> 00:33:17,130 Noe som du kanskje ønsker å bruke i en tilstand. 739 00:33:17,130 --> 00:33:19,100 Så vi kommer til det i bare et øyeblikk. 740 00:33:19,100 --> 00:33:20,350 Du kan "og" ting sammen. 741 00:33:20,350 --> 00:33:23,099 Så, hvis du ønsker å sjekke om dette er tilfelle, og det er tilfelle, 742 00:33:23,099 --> 00:33:25,580 du kan bruke en "og" blokk som dette. 743 00:33:25,580 --> 00:33:26,850 Og her er den tilstanden. 744 00:33:26,850 --> 00:33:31,290 Legg merke til formen på den lille åpningen i toppen av denne gule puslespill brikke, 745 00:33:31,290 --> 00:33:34,480 det er som minner om formen at vi nettopp så et øyeblikk siden. 746 00:33:34,480 --> 00:33:37,920 Hver av disse boolske uttrykk har disse spisse kanter 747 00:33:37,920 --> 00:33:39,030 på venstre og høyre. 748 00:33:39,030 --> 00:33:43,140 Og det er fordi MIT folk besluttet at ved å visuelt formidle former, 749 00:33:43,140 --> 00:33:45,780 du kan slags hjelpe folk, studenter og barn, 750 00:33:45,780 --> 00:33:47,650 å slags fylle ut feltene bokstavelig. 751 00:33:47,650 --> 00:33:49,780 >> Nå som puzzle-- at Åpningen er litt liten, 752 00:33:49,780 --> 00:33:52,750 og som vi vil se i programmet, i Scratch, vil den vokse til å passe. 753 00:33:52,750 --> 00:33:54,830 Det vil opprettholde sin form, til slutt. 754 00:33:54,830 --> 00:33:58,350 Så en tilstand lar deg bestemme "Skal jeg gjøre noe eller ikke?" 755 00:33:58,350 --> 00:34:00,470 Et boolsk uttrykk er den aktuelle spørsmålet 756 00:34:00,470 --> 00:34:04,100 du bruker til å bestemme går jeg til Venstre eller må jeg gå til høyre 757 00:34:04,100 --> 00:34:06,710 når jeg opplever dette såkalte veiskille? 758 00:34:06,710 --> 00:34:07,980 Du kan ha to grener. 759 00:34:07,980 --> 00:34:10,909 Hvis noe er sant, gjør dette, ellers går den veien, 760 00:34:10,909 --> 00:34:14,590 eller du kan bare gjøre ingenting alt, som denne blokken underforstått. 761 00:34:14,590 --> 00:34:16,360 Likeledes kan vi reir disse tingene. 762 00:34:16,360 --> 00:34:20,204 Så hvis du ønsker å tredoble gaffel i veien, enten gjøre dette eller dette eller hint, 763 00:34:20,204 --> 00:34:21,870 du kan bare hekker disse tingene sammen. 764 00:34:21,870 --> 00:34:24,520 Og det begynner å bli litt stygge, til slutt, sikkert, 765 00:34:24,520 --> 00:34:26,120 men logikken er fremdeles det samme. 766 00:34:26,120 --> 00:34:28,000 Du kan bokstavelig talt lese denne topp til bunn 767 00:34:28,000 --> 00:34:33,290 og det står hva det means-- hvis dette er sant, gjør dette, annet hvis annet. 768 00:34:33,290 --> 00:34:36,179 >> En løkke blir ikke enklere i Scratch. 769 00:34:36,179 --> 00:34:37,422 Alltid gjør følgende. 770 00:34:37,422 --> 00:34:39,880 Nå kan du kanskje ikke tror du kan gjøre mye fordi det ikke er 771 00:34:39,880 --> 00:34:42,839 mye plass mellom den øvre og den nederst på denne puslespill brikke åpning. 772 00:34:42,839 --> 00:34:45,671 Men du vil se Scratch kommer til å vokse til å passe så mange puslebiter 773 00:34:45,671 --> 00:34:47,060 som du ønsker å stappe i det. 774 00:34:47,060 --> 00:34:48,960 En annen sløyfe kan være uttrykkes med gjentakelser. 775 00:34:48,960 --> 00:34:51,590 Hvis du vet på forhånd, "Jeg ønsker å gjøre noe 10 ganger, " 776 00:34:51,590 --> 00:34:54,010 du kan bare fortelle Scratch å gjøre noe 10 ganger. 777 00:34:54,010 --> 00:34:57,260 Og, i mellomtiden, kan vi ha variabler. 778 00:34:57,260 --> 00:34:59,572 Så her er en vilkårlig en, det orange i dette tilfellet, 779 00:34:59,572 --> 00:35:00,780 og dette er en rask tur. 780 00:35:00,780 --> 00:35:04,540 Igjen, vil du finne dette svært tilgjengelig når du begynner å peke og klikke. 781 00:35:04,540 --> 00:35:07,930 Jeg har kalt min variabel n, men jeg kunne ha kalt det noe jeg vil, 782 00:35:07,930 --> 00:35:11,280 og jeg setter den her, i Dette vilkårlig eksempel til null. 783 00:35:11,280 --> 00:35:14,250 >> Nå ser et program som hallo verden er ikke alle som overbevisende, 784 00:35:14,250 --> 00:35:17,900 så la oss faktisk åpne opp noe at en tidligere student gjort. 785 00:35:17,900 --> 00:35:23,100 La meg gå videre og åpne opp, for eksempel, denne her, 786 00:35:23,100 --> 00:35:26,780 for som jeg ville elske å ha en frivillig. 787 00:35:26,780 --> 00:35:28,450 Greit, hvordan om-- la oss gå lenger. 788 00:35:28,450 --> 00:35:29,240 Ja, kom igjen opp. 789 00:35:29,240 --> 00:35:30,056 Hva heter du? 790 00:35:30,056 --> 00:35:30,635 >> ABBY: Abby. 791 00:35:30,635 --> 00:35:32,010 DAVID J. MALAN: Abby, kom opp. 792 00:35:32,010 --> 00:35:35,930 Så har du noen gang spilt dette spillet før? 793 00:35:35,930 --> 00:35:36,430 ABBY: Nei 794 00:35:36,430 --> 00:35:37,370 DAVID J. MALAN: All right. 795 00:35:37,370 --> 00:35:38,380 David, hyggelig å møte deg. 796 00:35:38,380 --> 00:35:39,620 Kom over. 797 00:35:39,620 --> 00:35:42,300 Og hva er din programmering bakgrunnen, hvis noen. 798 00:35:42,300 --> 00:35:43,914 >> ABBY: Jeg har lært noen C ++. 799 00:35:43,914 --> 00:35:45,580 DAVID J. MALAN: Du har lært noen C ++. 800 00:35:45,580 --> 00:35:48,382 Og hva er ditt spill spille bakgrunn? 801 00:35:48,382 --> 00:35:49,505 >> ABBY: Ikke mye. 802 00:35:49,505 --> 00:35:51,130 DAVID J. MALAN: OK, så vi tar den. 803 00:35:51,130 --> 00:35:52,700 Så her er hvordan spillet kommer til å fungere. 804 00:35:52,700 --> 00:35:54,510 Jeg kommer til å gå videre og Klikk på den grønne flagg, som 805 00:35:54,510 --> 00:35:55,830 er opp her øverst til høyre. 806 00:35:55,830 --> 00:35:59,710 Nå din forgjenger i klassen har gitt deg noen instruksjoner her. 807 00:35:59,710 --> 00:36:02,306 Og i løpet av et øyeblikk, det sier "plass å begynne." 808 00:36:02,306 --> 00:36:03,680 Så gå videre og traff mellomromstasten. 809 00:36:03,680 --> 00:36:05,507 >> Pc spill: Pikachu. 810 00:36:05,507 --> 00:36:08,340 DAVID J. MALAN: Og målet er å fange mat, som avbildet der 811 00:36:08,340 --> 00:36:09,320 til venstre. 812 00:36:09,320 --> 00:36:11,388 Og til [uhørbart] 813 00:36:11,388 --> 00:36:15,356 >> [GAME musikk spilles] 814 00:36:15,356 --> 00:36:27,280 815 00:36:27,280 --> 00:36:29,610 >> DAVID J. MALAN: Aww, vel, takk for å spille. 816 00:36:29,610 --> 00:36:32,800 Vi har her en liten avskjeds gave til deg. 817 00:36:32,800 --> 00:36:35,574 Vi har CS50 stress ball, Hvis du ønsker å velge. 818 00:36:35,574 --> 00:36:36,820 Ok, godt å møte deg. 819 00:36:36,820 --> 00:36:39,680 Takk for at du kommer og utfordrende. 820 00:36:39,680 --> 00:36:42,410 821 00:36:42,410 --> 00:36:46,910 Så vi har mer stress baller, så la oss gjøre et eksempel for å motivere. 822 00:36:46,910 --> 00:36:48,150 En frivillig? 823 00:36:48,150 --> 00:36:50,510 Greit, hva med rett her foran. 824 00:36:50,510 --> 00:36:51,250 Hva heter du? 825 00:36:51,250 --> 00:36:51,660 >> PHILLIP: Phillip. 826 00:36:51,660 --> 00:36:52,660 >> DAVID J. MALAN: Phillip. 827 00:36:52,660 --> 00:36:54,530 Kom opp, Phillip. 828 00:36:54,530 --> 00:36:57,340 Så, Phillip kommer til å være utfordret med et annet spill 829 00:36:57,340 --> 00:37:00,840 at en av dine forgjengere skrev som en del av oppgavesettet null, 830 00:37:00,840 --> 00:37:03,510 kalt Ivy Hardest Game. 831 00:37:03,510 --> 00:37:05,980 Og vi får se i løpet av et øyeblikk hva som menes med dette. 832 00:37:05,980 --> 00:37:07,400 Phillip, hyggelig å møte deg. 833 00:37:07,400 --> 00:37:09,060 Hva er din bakgrunn? 834 00:37:09,060 --> 00:37:10,310 PHILLIP: Ferdig mye koding. 835 00:37:10,310 --> 00:37:11,110 Gjort litt gaming, også. 836 00:37:11,110 --> 00:37:11,570 >> DAVID J. MALAN: OK. 837 00:37:11,570 --> 00:37:12,620 Fikk en masse gaming, også. 838 00:37:12,620 --> 00:37:14,230 Og har du spilt dette spillet før? 839 00:37:14,230 --> 00:37:14,730 >> PHILLIP: Nei 840 00:37:14,730 --> 00:37:16,438 DAVID J. MALAN: All rett, så here we go. 841 00:37:16,438 --> 00:37:18,434 Jeg kommer til å gå videre og klikk på den grønne flagg. 842 00:37:18,434 --> 00:37:24,160 >> [Spillmusikk] 843 00:37:24,160 --> 00:37:27,770 >> [MUSIC MC Hammer, "U KAN IKKE røre denne"] 844 00:37:27,770 --> 00:38:39,790 845 00:38:39,790 --> 00:38:41,635 >> PHILLIP: [uhørbart] 846 00:38:41,635 --> 00:38:42,760 DAVID J. MALAN: [uhørbart] 847 00:38:42,760 --> 00:38:44,740 PHILLIP: [uhørbart] 848 00:38:44,740 --> 00:38:49,056 [Ler] 849 00:38:49,056 --> 00:38:50,680 [MUSIC MC Hammer, "U KAN IKKE røre denne"] 850 00:38:50,680 --> 00:38:52,660 DAVID J. MALAN: [uhørbart] Pløye gjennom den. 851 00:38:52,660 --> 00:38:54,094 PHILLIP: [uhørbart] 852 00:38:54,094 --> 00:38:55,135 DAVID J. MALAN: Sett i gang. 853 00:38:55,135 --> 00:39:01,570 [MUSIC MC Hammer, "U KAN IKKE røre denne"] 854 00:39:01,570 --> 00:39:15,832 855 00:39:15,832 --> 00:39:16,915 DAVID J. MALAN: All right. 856 00:39:16,915 --> 00:39:18,400 Gratulerer. 857 00:39:18,400 --> 00:39:25,150 >> [APPLAUSE] 858 00:39:25,150 --> 00:39:27,330 >> DAVID J. MALAN: Vi vil innlegg som online senere så 859 00:39:27,330 --> 00:39:29,820 at du kan utsette med det også. 860 00:39:29,820 --> 00:39:32,550 Princeton kommer opp neste, etter det. 861 00:39:32,550 --> 00:39:35,470 >> Så nå la oss faktisk gå å starte fra scratch, 862 00:39:35,470 --> 00:39:39,310 så å si, og faktisk bygge opp til vi kan skille fra hverandre noen av disse ideene 863 00:39:39,310 --> 00:39:41,970 og få til noe enda mer komplisert ved utgangen. 864 00:39:41,970 --> 00:39:45,240 Jeg kommer til å gå over her, og jeg kommer å gå videre og opprette en ny fil. 865 00:39:45,240 --> 00:39:47,460 Så igjen, vil problemet sett gå deg gjennom noen av disse trinnene. 866 00:39:47,460 --> 00:39:49,300 Men, alt jeg gjorde var å gå til Fil-menyen, og jeg 867 00:39:49,300 --> 00:39:52,760 sa "ny", så mye som Microsoft Word, eller hvilket som helst program sånn. 868 00:39:52,760 --> 00:39:56,630 >> Og la oss gå videre now-- og vi implementert "Hello world" for et øyeblikk siden, 869 00:39:56,630 --> 00:39:58,410 men la oss gjøre noe litt søtere. 870 00:39:58,410 --> 00:40:00,150 Jeg kommer til å gå opp til hendelser. 871 00:40:00,150 --> 00:40:02,350 Og jeg kommer til å gjøre "når grønt flagg klikket. " 872 00:40:02,350 --> 00:40:05,830 Og så kommer jeg til å bruke, skal vi si, en gren. 873 00:40:05,830 --> 00:40:07,610 Så jeg kommer til å bruke en "hvis" tilstand. 874 00:40:07,610 --> 00:40:10,940 Og legg merke til hvordan så snart jeg kommer nær til det, ønsker den å klikkes sammen. 875 00:40:10,940 --> 00:40:13,020 Så jeg la gå, og det klikker sammen. 876 00:40:13,020 --> 00:40:15,150 Og nå kan jeg gjøre noe interessant. 877 00:40:15,150 --> 00:40:19,150 Hvis jeg blar gjennom her, jeg kommer å se en hel haug med blokker. 878 00:40:19,150 --> 00:40:22,620 Hvis jeg går til "data" - la meg zoome i-- det er noe med variabler. 879 00:40:22,620 --> 00:40:26,160 Hvis jeg går til "bevegelse", kan du tilsynelatende snu ting rundt. 880 00:40:26,160 --> 00:40:28,760 Hvis jeg går til "operatører" - oh, er dette interessant, 881 00:40:28,760 --> 00:40:31,000 Jeg kan plukke et tilfeldig tall. 882 00:40:31,000 --> 00:40:34,119 Så la meg gjøre noe med bare en viss sannsynlighet, bare fordi. 883 00:40:34,119 --> 00:40:36,160 Jeg kommer til å gå videre og dra denne puslespill brikke, 884 00:40:36,160 --> 00:40:37,910 dette er at mindre enn blokk, så det er bare 885 00:40:37,910 --> 00:40:39,480 "Er dette tallet mindre enn det en?" 886 00:40:39,480 --> 00:40:42,438 Men jeg vil ikke ha en hard kode et nummer fordi det være ganske meningsløst. 887 00:40:42,438 --> 00:40:46,270 Så jeg kommer til å dra dette stykket her, og legge merke til hvordan den smetter inn, 888 00:40:46,270 --> 00:40:49,480 og nå la meg gå videre og si "hvis nummeret som er plukket tilfeldig 889 00:40:49,480 --> 00:40:51,820 er mindre enn seks, gjør følgende. " 890 00:40:51,820 --> 00:40:52,790 Nå hvorfor mindre enn seks? 891 00:40:52,790 --> 00:40:56,400 Hva sannsynligheten er dette effektivt kommer til å gi meg, bare intuitivt? 892 00:40:56,400 --> 00:40:57,440 Om lag 50%, ikke sant? 893 00:40:57,440 --> 00:41:01,190 Hvis nummeret som oss gjette tilfeldig mellom 1 og 10 er mindre enn seks, 894 00:41:01,190 --> 00:41:03,480 klart det er en, to, tre, fire eller fem. 895 00:41:03,480 --> 00:41:06,740 Og så det kommer til å gi meg en 50% sannsynlighet for hva som skjer? 896 00:41:06,740 --> 00:41:09,890 >> Vel la oss gjøre noe sånt dette, "spille av lyd meow." 897 00:41:09,890 --> 00:41:11,750 Og legg merke til, igjen, puslespill brikke vokser 898 00:41:11,750 --> 00:41:13,700 for å passe til, så lenge formene overens. 899 00:41:13,700 --> 00:41:14,910 Det er det som er viktig. 900 00:41:14,910 --> 00:41:18,000 La meg gå over til Scratch her og klikke på "play". 901 00:41:18,000 --> 00:41:19,300 Ingenting skjer. 902 00:41:19,300 --> 00:41:21,160 Er det en bug? 903 00:41:21,160 --> 00:41:21,999 Nei, ikke nødvendig. 904 00:41:21,999 --> 00:41:24,040 Det kan bare være at en større antall ble valgt. 905 00:41:24,040 --> 00:41:25,762 Så la oss gjøre det igjen. 906 00:41:25,762 --> 00:41:27,550 Ingenting. 907 00:41:27,550 --> 00:41:28,344 >> [MEOW] 908 00:41:28,344 --> 00:41:29,510 DAVID J. MALAN: Det er det. 909 00:41:29,510 --> 00:41:30,280 [MEOW] 910 00:41:30,280 --> 00:41:31,690 DAVID J. MALAN: Again. 911 00:41:31,690 --> 00:41:32,300 Nei 912 00:41:32,300 --> 00:41:32,922 >> [Meowing] 913 00:41:32,922 --> 00:41:35,380 DAVID J. MALAN: Så hvis du har noen gang spilt et spill, selvfølgelig, 914 00:41:35,380 --> 00:41:38,500 der ting skjer tilfeldig, som skurkene kommer eller ikke 915 00:41:38,500 --> 00:41:41,350 kommer på skjermen, eller ting faller eller ikke faller, 916 00:41:41,350 --> 00:41:43,610 det er bare fordi noe super enkelt som dette skjer. 917 00:41:43,610 --> 00:41:46,010 Plukk en tilfeldig tall, og hvis det er mindre enn en viss verdi, 918 00:41:46,010 --> 00:41:49,100 kanskje gjøre dette, eller kanskje gjøre det. 919 00:41:49,100 --> 00:41:51,340 Vi kan innlemme det inn i en tilstand. 920 00:41:51,340 --> 00:41:52,600 La oss gjøre noe annerledes. 921 00:41:52,600 --> 00:41:53,559 >> La meg kaste det bort. 922 00:41:53,559 --> 00:41:56,058 Du kan bli kvitt ting ved bare dra den av til venstre 923 00:41:56,058 --> 00:41:56,810 og la gå. 924 00:41:56,810 --> 00:42:00,310 La meg gå videre og gjøre en evig blokk og svært raskt gjøre noe irriterende. 925 00:42:00,310 --> 00:42:03,010 La meg gå videre og si "spille av lyd meow." 926 00:42:03,010 --> 00:42:06,620 Men jeg vil ikke at dette skal være for irriterende, så la meg ta denne blokken, 927 00:42:06,620 --> 00:42:09,090 "Vent ett sekund", og varsel det er ikke mer plass for den. 928 00:42:09,090 --> 00:42:11,310 Men hvis du går nær nok, den ønsker å gå dit. 929 00:42:11,310 --> 00:42:14,100 Så jeg la gå, og det vil vokser for å fylle blokken. 930 00:42:14,100 --> 00:42:15,932 Så nå, er dette en løkke. 931 00:42:15,932 --> 00:42:16,432 [Meowing] 932 00:42:16,432 --> 00:42:18,473 DAVID J. MALAN: Jeg er bokstavelig talt gjøre dette for alltid. 933 00:42:18,473 --> 00:42:19,360 Igjen og igjen. 934 00:42:19,360 --> 00:42:21,510 Det er bare ikke naturlig klingende. 935 00:42:21,510 --> 00:42:24,800 La meg gå videre og endre dette å ikke ett sekund, til to sekunder 936 00:42:24,800 --> 00:42:25,854 og trykk Enter. 937 00:42:25,854 --> 00:42:28,770 Og hva er fint om Scratch er som du kan programmere interaktivt. 938 00:42:28,770 --> 00:42:32,450 Gjøre en endring, kanskje trykk Enter eller Play igjen, og det vil bare holde det gående. 939 00:42:32,450 --> 00:42:34,962 Vel, nå er hvorfor ikke vi gjør noe litt søtere? 940 00:42:34,962 --> 00:42:39,680 Snarere enn å gjøre alt fra bunnen av, la meg gå videre og åpne opp et forskudd 941 00:42:39,680 --> 00:42:43,180 gjort en, at jeg pre-baked, kalt "Pet katten." 942 00:42:43,180 --> 00:42:44,920 Og vi vil legge ut alle disse filer på nettet, 943 00:42:44,920 --> 00:42:48,464 og oppgavesettet null vil fortelle deg hvordan å få tilgang til dem og åpne dem opp. 944 00:42:48,464 --> 00:42:49,880 Og legg merke til, dette er ganske enkel. 945 00:42:49,880 --> 00:42:53,860 Men på forhånd, synes jeg å ha fanget en "evig" blokk, så jeg har fått en løkke. 946 00:42:53,860 --> 00:42:55,500 Og så har jeg fått en "hvis" tilstand. 947 00:42:55,500 --> 00:42:57,410 Jeg har en boolsk uttrykk. 948 00:42:57,410 --> 00:43:00,100 >> Så i engelsk, bare skotter på dette, spesielt hvis du aldri har 949 00:43:00,100 --> 00:43:04,278 programmert før, bare intuitivt, hva dette kommer til å gjøre, dette programmet? 950 00:43:04,278 --> 00:43:06,910 >> [Publikum SKRAVLE] 951 00:43:06,910 --> 00:43:09,960 >> DAVID J. MALAN: Hvis du klapper katten, katten kommer til å mjaue, ikke sant? 952 00:43:09,960 --> 00:43:14,560 Fordi "forever fjerne merkingen" er musepekeren berøre katten. 953 00:43:14,560 --> 00:43:17,630 Så for å være klar, og jeg ikke si dette før, alle disse pusle 954 00:43:17,630 --> 00:43:20,750 stykker og manuset som vi har kombinert dem i, 955 00:43:20,750 --> 00:43:25,510 så å si, er synonymt med et skript program, egentlig, tilhører denne katten. 956 00:43:25,510 --> 00:43:30,110 Og grunnen er-- fordi varsel hvordan dette samme katt her er uthevet, 957 00:43:30,110 --> 00:43:32,710 her nede du kan opprette en andre katt eller hund eller virkelig 958 00:43:32,710 --> 00:43:33,970 alt du vil grafisk. 959 00:43:33,970 --> 00:43:35,900 Du kan importere noe fra Photoshop, eller lignende, 960 00:43:35,900 --> 00:43:38,300 og integrere noe hvis du ønsker å gjøre det til et prosjekt. 961 00:43:38,300 --> 00:43:40,174 Og hva du finner, til slutt, er at du 962 00:43:40,174 --> 00:43:44,800 kan legge til skript, legge puslespill stykker, til individuelle tegn. 963 00:43:44,800 --> 00:43:47,210 Så disse tilhører alle denne spesielle katt. 964 00:43:47,210 --> 00:43:51,770 Så nå hvis jeg går videre og spille dette programmet, er ingenting skjer. 965 00:43:51,770 --> 00:43:52,970 Men det er i gang. 966 00:43:52,970 --> 00:43:56,364 Programmet er i denne evig loop, slags venter på hva du skal skje? 967 00:43:56,364 --> 00:43:57,230 >> [Publikum SKRAVLE] 968 00:43:57,230 --> 00:43:58,130 >> DAVID J. MALAN: For å klappe katten. 969 00:43:58,130 --> 00:43:59,800 Så hvis jeg flytter min mus mot han-- 970 00:43:59,800 --> 00:44:02,420 >> [Meowing] 971 00:44:02,420 --> 00:44:04,450 >> DAVID J. MALAN: Så nå Jeg klappe katten. 972 00:44:04,450 --> 00:44:07,330 I mellomtiden kan vi ha en dobbel gren. 973 00:44:07,330 --> 00:44:10,370 La meg gå videre og åpne opp ikke klappe katten. 974 00:44:10,370 --> 00:44:12,160 Vi vil legge dette på nettet også. 975 00:44:12,160 --> 00:44:16,760 Dette er en litt mer kompleks, men uten å si 976 00:44:16,760 --> 00:44:18,780 du kan gjette kanskje hva kommer til å skje. 977 00:44:18,780 --> 00:44:20,160 >> [Meowing] 978 00:44:20,160 --> 00:44:23,900 >> DAVID J. MALAN: Cat er mjauende, grand old time. 979 00:44:23,900 --> 00:44:26,690 Men dette programmet er selvsagt kalt "Ikke Pet katten," 980 00:44:26,690 --> 00:44:29,350 så klart, jeg ønsker å klappe katten. 981 00:44:29,350 --> 00:44:30,490 >> [ROARING] 982 00:44:30,490 --> 00:44:31,940 >> DAVID J. MALAN: Ikke klappe katten. 983 00:44:31,940 --> 00:44:34,230 Nå, la oss ta en titt på et annet eksempel her. 984 00:44:34,230 --> 00:44:38,035 Dette vil bli kalt "Hei, hei, hei," grunner 985 00:44:38,035 --> 00:44:40,410 som vil være klart, fordi så snart jeg kjøre denne thing-- 986 00:44:40,410 --> 00:44:41,401 >> [SEAL BARKING] 987 00:44:41,401 --> 00:44:43,942 DAVID J. MALAN: Veldig lett å skrive irriterende Scratch programmer. 988 00:44:43,942 --> 00:44:45,300 [SEAL BARKING] 989 00:44:45,300 --> 00:44:48,540 DAVID J. MALAN: Nå vil ikke vi gå i stor detalj med alle av disse, 990 00:44:48,540 --> 00:44:51,150 men merker det er en par nye funksjoner her. 991 00:44:51,150 --> 00:44:55,540 Det er en variabel, kalt "dempet", og så er det en haug med forhold. 992 00:44:55,540 --> 00:44:57,900 Og for nå, la meg bare erte deg ved å si 993 00:44:57,900 --> 00:45:03,170 at hvis denne fyren blir for irriterende, Jeg kan trykke på mellomromstasten, og han stopper. 994 00:45:03,170 --> 00:45:05,880 Fordi rollen som spilles av disse to prosedyrer er som følger. 995 00:45:05,880 --> 00:45:08,510 En av dem er å gjøre det bjeffer hvert få sekunder. 996 00:45:08,510 --> 00:45:11,305 Den andre er bare venter for meg å treffe mellomromstasten. 997 00:45:11,305 --> 00:45:14,780 Og hvis jeg treffer på mellomromstasten, det kommer til å endre 998 00:45:14,780 --> 00:45:18,096 tilstanden av denne variable, verdien av denne variabelen, er det tilsynelatende 999 00:45:18,096 --> 00:45:20,470 kalt "dempet" Jeg ropte ikke det noe kjedelig som n, 1000 00:45:20,470 --> 00:45:22,370 Jeg kalte det et engelsk ord, "dempet". 1001 00:45:22,370 --> 00:45:24,740 Fra 1-0 eller 0-1. 1002 00:45:24,740 --> 00:45:26,830 Fra tro mot falsk eller usann til sann. 1003 00:45:26,830 --> 00:45:28,930 Og så kan du faktisk se nå, at du 1004 00:45:28,930 --> 00:45:31,720 kunne ha to skript, to programmer som kjører samtidig, 1005 00:45:31,720 --> 00:45:34,360 og begge kan bli sittende i en sløyfe gjør noe. 1006 00:45:34,360 --> 00:45:38,067 Venter på det menneskelige å gjøre noe som treffer mellomromstasten. 1007 00:45:38,067 --> 00:45:38,650 [SEAL BARKING] 1008 00:45:38,650 --> 00:45:40,566 DAVID J. MALAN: Og nå han er på vei igjen. 1009 00:45:40,566 --> 00:45:41,640 [SEAL BARKING] 1010 00:45:41,640 --> 00:45:45,220 DAVID J. MALAN: Så hva annet kan vi gjøre med disse eksemplene? 1011 00:45:45,220 --> 00:45:50,920 Vel, la oss gå videre og gjøre en eksempel med å telle sauer. 1012 00:45:50,920 --> 00:45:59,210 Vi vil fortsette dette langs linjene her of-- la oss åpne opp sauene eksempel. 1013 00:45:59,210 --> 00:46:02,460 Og legg merke til, mye som før, dette, heldigvis, er litt mindre irriterende. 1014 00:46:02,460 --> 00:46:06,940 Når jeg traff spille her-- Å nei, dette er irriterende. 1015 00:46:06,940 --> 00:46:10,130 Han kommer til å bæ med en viss sannsynlighet. 1016 00:46:10,130 --> 00:46:11,050 La oss spille dette igjen. 1017 00:46:11,050 --> 00:46:15,221 >> [SHEEP bleeting] 1018 00:46:15,221 --> 00:46:18,470 DAVID J. MALAN: Den eneste forskjellen er vi har endret drakt, så å si, 1019 00:46:18,470 --> 00:46:21,710 og vi halvere og si hva det faktiske antallet er. 1020 00:46:21,710 --> 00:46:24,680 Vel la oss gå videre og ta dette ett skritt videre. 1021 00:46:24,680 --> 00:46:28,190 Og la meg erte deg med en annen funksjon her. 1022 00:46:28,190 --> 00:46:31,800 La oss gå videre og åpne opp et program kalt tråder. 1023 00:46:31,800 --> 00:46:36,620 Så mye som du kan ha én sprite, har flere skript, 1024 00:46:36,620 --> 00:46:41,250 du kan ha to sprites, en fugl i en katt, som hver har sitt eget manus. 1025 00:46:41,250 --> 00:46:43,976 Og hver av dem kan operere samtidig. 1026 00:46:43,976 --> 00:46:45,980 Hvis du noen gang har hørt Ordet "multithreading" 1027 00:46:45,980 --> 00:46:49,240 en datamaskin er "flertrådede" betyr det kan gjøre flere ting på en gang, 1028 00:46:49,240 --> 00:46:50,880 og, ja, så kan ripe. 1029 00:46:50,880 --> 00:46:52,690 >> Og nå merker fuglen er slags dum. 1030 00:46:52,690 --> 00:46:55,100 Det er bare å gjøre ting tilfeldig, spretter ut av skjermen. 1031 00:46:55,100 --> 00:46:59,460 Tydelig at katten har blitt programmert å slags få som søker evner 1032 00:46:59,460 --> 00:47:02,680 å hjem på fuglen fordi han har alltid peker på ham. 1033 00:47:02,680 --> 00:47:06,176 Inntil endelig, han fanger selve fuglen. 1034 00:47:06,176 --> 00:47:08,550 Så jeg vil ikke dvele ved detaljene her, men du kan slags 1035 00:47:08,550 --> 00:47:12,160 skimte de samme formene, noen "Hvis" forhold, noen variabler, 1036 00:47:12,160 --> 00:47:15,740 kanskje noen looper, er slutt å gjøre det samme. 1037 00:47:15,740 --> 00:47:18,400 >> Nå la meg gå videre og åpne opp noe helt annet, 1038 00:47:18,400 --> 00:47:20,920 å erte noen av dere, spesielt de mer komfortable, 1039 00:47:20,920 --> 00:47:22,760 hva du faktisk kan gjøre med dette. 1040 00:47:22,760 --> 00:47:26,080 Jeg kommer til å gå videre og åpne opp Button her. 1041 00:47:26,080 --> 00:47:28,740 Og dette er en super enkelt-tilsynelatende program, 1042 00:47:28,740 --> 00:47:34,190 men se hva som skjer når jeg-- Se hva 1043 00:47:34,190 --> 00:47:39,860 skjer når jeg åpner denne versjonen av det, her i nettleseren, scratch.mit.edu. 1044 00:47:39,860 --> 00:47:43,460 Og når jeg klikker på denne store røde knappen, legge merke til hva som skjer. 1045 00:47:43,460 --> 00:47:46,110 1046 00:47:46,110 --> 00:47:47,647 Så hva er det som skjer her? 1047 00:47:47,647 --> 00:47:50,480 Det er faktisk mye mer kompleksitet skjer under panseret, 1048 00:47:50,480 --> 00:47:52,896 selv om jeg har implementert dette, eller ærlig, Dan Bradley 1049 00:47:52,896 --> 00:47:54,660 har implementert dette så enkelt. 1050 00:47:54,660 --> 00:47:59,540 Han har utviklet en tilpasset Scratch puslespill stykke, kjent som en Scratch forlengelse, 1051 00:47:59,540 --> 00:48:01,300 han kalte det Toggle. 1052 00:48:01,300 --> 00:48:06,332 >> Og hva Toggle gjør er det sender en melding over internett. 1053 00:48:06,332 --> 00:48:08,290 Og at meldingen selv ser litt kryptisk. 1054 00:48:08,290 --> 00:48:10,248 Men også dette, vil du forstår med begrepet slutt. 1055 00:48:10,248 --> 00:48:14,930 Meldingen han faktisk sender ser litt noe sånt som dette. 1056 00:48:14,930 --> 00:48:15,921 Det er bare tekst. 1057 00:48:15,921 --> 00:48:16,420 Cryptic. 1058 00:48:16,420 --> 00:48:19,130 Du vil forstå det etter den tid vi få problemet satt sju. 1059 00:48:19,130 --> 00:48:22,180 Det er bare å sende en tekstmelding over internett til en server. 1060 00:48:22,180 --> 00:48:24,330 Og at serveren er, til slutt, å snakke med denne lyspære, som 1061 00:48:24,330 --> 00:48:27,240 har en av de fancy lyspærer i det det, i seg selv, snakker 1062 00:48:27,240 --> 00:48:30,760 til Wi-Fi i nettverket her, hvor en lokal enhet ned her-- 1063 00:48:30,760 --> 00:48:34,400 og, til slutt, det er faktisk snu det lyset av og på. 1064 00:48:34,400 --> 00:48:36,240 Men vi kan gjøre mer interessante ting fortsatt. 1065 00:48:36,240 --> 00:48:38,270 Legg merke til hva Dan også gjorde for oss. 1066 00:48:38,270 --> 00:48:42,210 Han gjorde flere sprites, hver av som har et script venter på et klikk. 1067 00:48:42,210 --> 00:48:44,030 Og hvis jeg klikker rødt, går det rødt. 1068 00:48:44,030 --> 00:48:46,780 Hvis jeg får blå, går det blåaktig. 1069 00:48:46,780 --> 00:48:49,854 Grønn, gul, oransje. 1070 00:48:49,854 --> 00:48:52,520 Og alt dette skjer ved går entret internett, 1071 00:48:52,520 --> 00:48:54,690 nedover ryggen her til lyspære, på og av. 1072 00:48:54,690 --> 00:48:57,981 >> Og hvis du kan tro it, og dette er kanskje en av de mest komplekse Scratch 1073 00:48:57,981 --> 00:49:00,930 prosjekter noen har implemented-- han gjorde det, i rettferdighet, på en dag. 1074 00:49:00,930 --> 00:49:04,180 Og det var den utfordringen vi kastet ned Dan da vi så har binære pærer, 1075 00:49:04,180 --> 00:49:05,810 vi har Scratch, hvordan kan vi kombinere dem? 1076 00:49:05,810 --> 00:49:08,410 Og, ja, dette er helt noe alle i dette rommet 1077 00:49:08,410 --> 00:49:14,250 kunne gjøre etter semesters end-- Er han reimplemented binære pærer bruker 1078 00:49:14,250 --> 00:49:18,310 det samme grensesnittet som var på vår iPad på onsdag. 1079 00:49:18,310 --> 00:49:22,000 Så det nå, hvis jeg faktisk Klikk pluss over her, 1080 00:49:22,000 --> 00:49:25,250 vi har en, to, tre. 1081 00:49:25,250 --> 00:49:27,550 Jeg kan trykke på 16 og slå at en på. 1082 00:49:27,550 --> 00:49:29,440 128, og så videre. 1083 00:49:29,440 --> 00:49:31,250 >> Nå hvis det alene har og blåst tankene dine, 1084 00:49:31,250 --> 00:49:35,680 du kunne gjøre ting langt mer tilgjengelig, ikke medfører hardware sikkert. 1085 00:49:35,680 --> 00:49:38,320 Bare ting på skjermen selv. 1086 00:49:38,320 --> 00:49:41,110 Og, ja, hva de fleste studenter ende opp med å gjøre er noen form for spill, 1087 00:49:41,110 --> 00:49:44,600 noen stykke kunstnerisk arbeid, eller en slags interaktiv animasjon. 1088 00:49:44,600 --> 00:49:47,352 Og jeg vil si at en av våre favoritter har vært denne. 1089 00:49:47,352 --> 00:49:49,060 Og jeg tenkte at hvis vi kan dempe lysene, 1090 00:49:49,060 --> 00:49:52,960 vi vil ta en kikk på denne finalen Scratch prosjekt i konklusjonen. 1091 00:49:52,960 --> 00:49:57,460 Men hva du bør huske på, som Jeg kan erte deg med en siste detalj, 1092 00:49:57,460 --> 00:49:59,140 seksjonering vil begynne neste uke. 1093 00:49:59,140 --> 00:50:00,830 Arbeidstid vil begynne neste uke. 1094 00:50:00,830 --> 00:50:04,410 Problem satt null vil bli lagt ut CS50.harvard.edu senere i dag. 1095 00:50:04,410 --> 00:50:06,430 Og du vil bli møtt i oppgavesettet null 1096 00:50:06,430 --> 00:50:10,070 til CS50 egen Zamyla Chan, som guider de fleste av våre walkthroughs. 1097 00:50:10,070 --> 00:50:11,952 Disse er innebygd video i oppgavesett 1098 00:50:11,952 --> 00:50:15,160 som vil holde hånden din gjennom mye av den første satt opp og gjennom mange 1099 00:50:15,160 --> 00:50:16,570 av de mulige design beslutninger. 1100 00:50:16,570 --> 00:50:19,570 Så hvis du noen gang har hatt den følelsen når du plukker opp en hjemmelekse 1101 00:50:19,570 --> 00:50:21,030 og lurer på, hvor skal jeg begynne? 1102 00:50:21,030 --> 00:50:23,510 Hun vil ha det svaret for deg. 1103 00:50:23,510 --> 00:50:27,720 Og nå, endelig program fra en av dine forgjengere 1104 00:50:27,720 --> 00:50:30,659 i svaret på spørsmålet "Hva sier reven?" 1105 00:50:30,659 --> 00:50:32,242 [MUSIC Ylvis, "HVA ER DET FOX si?] 1106 00:50:32,242 --> 00:50:40,178 1107 00:50:40,178 --> 00:50:41,666 >> Ylvis: (synger) Hund går woof. 1108 00:50:41,666 --> 00:50:43,650 Katt går meow. 1109 00:50:43,650 --> 00:50:47,520 Bird går tweet og musen går knirker. 1110 00:50:47,520 --> 00:50:49,240 Ku går moo. 1111 00:50:49,240 --> 00:50:51,690 Frog går kvekk. 1112 00:50:51,690 --> 00:50:54,630 Og elefanten går Toot. 1113 00:50:54,630 --> 00:50:59,040 Ducks si kvakksalver og fisk går blub. 1114 00:50:59,040 --> 00:51:07,370 Og forseglingen går ow ow ow, men det er en lyd som ingen vet, 1115 00:51:07,370 --> 00:51:10,330 hva sier reven? 1116 00:51:10,330 --> 00:51:11,020 Og 1117 00:51:11,020 --> 00:51:12,478 >> DAVID J. MALAN: Det er det for CS50. 1118 00:51:12,478 --> 00:51:15,436 Vi vil se deg på Puzzle Day og på mandag. 1119 00:51:15,436 --> 00:51:16,424 >> [APPLAUSE] 1120 00:51:16,424 --> 00:51:19,882 >> [MUSIC Ylvis, "hva gjør FOX SAY?"] 1121 00:51:19,882 --> 00:51:24,840 1122 00:51:24,840 --> 00:51:28,820 >> FORTELLER: Og nå dypt tanker, etter Daven Farnham. 1123 00:51:28,820 --> 00:51:31,770 1124 00:51:31,770 --> 00:51:34,570 I dag fikk jeg truffet i ansikt med en telefonkatalog. 1125 00:51:34,570 --> 00:51:38,160 Forvirrende, som jeg er på hjemme å se på nettet. 1126 00:51:38,160 --> 00:51:42,528