1 00:00:00,000 --> 00:00:10,980 >> [Musik spiller] 2 00:00:10,980 --> 00:00:13,260 >> -Alright! 3 00:00:13,260 --> 00:00:16,400 >> Det her er CS50. 4 00:00:16,400 --> 00:00:18,220 >> Det her er CS50. 5 00:00:18,220 --> 00:00:19,324 >> Det her er CS50. 6 00:00:19,324 --> 00:00:20,615 [MUSIC - IGGY AZALEA, "smarte"] 7 00:00:20,615 --> 00:00:29,925 8 00:00:29,925 --> 00:00:33,570 >> -Min Favorit hukommelse fra CS50 var, da jeg gik til Puzzle Day. 9 00:00:33,570 --> 00:00:35,797 >> -Sandsynligvis bare den tid brugt arbejder på problemet sæt 10 00:00:35,797 --> 00:00:38,630 med mine venner og folk, der wold i sidste ende blive mine blockmates. 11 00:00:38,630 --> 00:00:40,421 >> -Min Bedste hukommelse fra CS50 er hackathon. 12 00:00:40,421 --> 00:00:41,630 -Den 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, "smarte"] 20 00:00:47,401 --> 00:00:56,790 21 00:00:56,790 --> 00:01:02,512 >> -Min Favorit hukommelse er, når jeg var på fase, og jeg spillede den prestigefyldte rolle 22 00:01:02,512 --> 00:01:04,220 af et knudepunkt [? i Linked?] [? List. ?] 23 00:01:04,220 --> 00:01:08,470 >> -Når Vi alle fik gratis Dropbox plads og David var ligesom, se under jeres pladser. 24 00:01:08,470 --> 00:01:10,520 Og det var ligesom, plads til alle! 25 00:01:10,520 --> 00:01:11,811 >> [MUSIC - IGGY AZALEA, "smarte"] 26 00:01:11,811 --> 00:01:20,940 27 00:01:20,940 --> 00:01:22,830 >> -min Råd for enhver indkommende studerende ville 28 00:01:22,830 --> 00:01:26,170 være til virkelig at arbejde på P-sæt med venner. 29 00:01:26,170 --> 00:01:27,960 >> -Office Timer er meget din ven. 30 00:01:27,960 --> 00:01:30,870 >> -Gøre Mest ud af dine erfaringer og møde så mange mennesker som du kan. 31 00:01:30,870 --> 00:01:32,390 >> -Ikke Være bange for at bede om hjælp. 32 00:01:32,390 --> 00:01:33,890 -Start P-sæt tidligt på ugen. 33 00:01:33,890 --> 00:01:36,723 Jeg tror den største ting er at drage fordel af alle de ressourcer, 34 00:01:36,723 --> 00:01:37,950 at CS50 har. 35 00:01:37,950 --> 00:01:39,960 >> -Gå Til kontortid tidligt på ugen. 36 00:01:39,960 --> 00:01:41,430 >> -Definitely Se shorts. 37 00:01:41,430 --> 00:01:42,989 >> -Ikke Nøle på din P-sæt. 38 00:01:42,989 --> 00:01:45,780 -Sørg Du finde en stor gruppe af mennesker til at arbejde på P-sæt med. 39 00:01:45,780 --> 00:01:48,530 Du kan have en masse sjov og få udført arbejde sammen. 40 00:01:48,530 --> 00:01:50,370 >> -Ikke Være bange for at presse dig selv. 41 00:01:50,370 --> 00:01:52,080 Gå efter hacker-udgave til tider. 42 00:01:52,080 --> 00:01:55,410 >> Skrivning af ting på papiret, før du nogensinde røre din computer. 43 00:01:55,410 --> 00:01:58,380 >> -CS50 Er virkelig stor på at give dem muligheder for at få hjælp. 44 00:01:58,380 --> 00:02:01,134 >> -Min Ét stykke af rådgivning er søvn. 45 00:02:01,134 --> 00:02:02,050 Har nogen sagt det? 46 00:02:02,050 --> 00:02:04,100 Søvn, for sikker. 47 00:02:04,100 --> 00:02:08,919 Det er nemt ikke at gøre, men du har fået til at gøre det, tror jeg. 48 00:02:08,919 --> 00:02:12,982 >> Jeg ville sige virkelig være mentalt forberedt fordi du kommer til at elske det. 49 00:02:12,982 --> 00:02:14,273 [MUSIC - IGGY AZALEA, "smarte"] 50 00:02:14,273 --> 00:02:17,750 51 00:02:17,750 --> 00:02:18,940 >> Det her er CS50. 52 00:02:18,940 --> 00:02:22,090 53 00:02:22,090 --> 00:02:23,066 >> Det her er CS50. 54 00:02:23,066 --> 00:02:26,400 55 00:02:26,400 --> 00:02:26,989 >> Det her er CS50. 56 00:02:26,989 --> 00:02:28,280 [MUSIC - IGGY AZALEA, "smarte"] 57 00:02:28,280 --> 00:02:31,290 58 00:02:31,290 --> 00:02:31,964 >> Det her er CS50. 59 00:02:31,964 --> 00:02:36,020 60 00:02:36,020 --> 00:02:42,270 >> [Applaus] 61 00:02:42,270 --> 00:02:46,040 >> David J. MALAN: Så det er CS50 og det er i slutningen af ​​uge 0. 62 00:02:46,040 --> 00:02:48,770 Og det var blot nogle af CS50 personale, der 63 00:02:48,770 --> 00:02:51,100 venter dig ikke kun i sektioner og kontortid, men, 64 00:02:51,100 --> 00:02:54,390 Også denne kommende weekend på CS50 Puzzle Day. 65 00:02:54,390 --> 00:02:56,410 Som igen, er ikke Alt om programmering. 66 00:02:56,410 --> 00:02:59,710 Faktisk er det forventes, at du behøver ikke at programmere noget, 67 00:02:59,710 --> 00:03:03,780 men snarere at løse problemer ved hjælp af kløgt og venner sammen med dig. 68 00:03:03,780 --> 00:03:06,400 >> Vi får følgeskab af nogle af vores venner på Facebook-- 69 00:03:06,400 --> 00:03:08,980 hvis du tilmelder dig her-- der i de sidste mange år, 70 00:03:08,980 --> 00:03:11,450 har faktisk været at skrive disse udfordringer med os. 71 00:03:11,450 --> 00:03:14,822 Og så vil de være dem i sidste ende kører Puzzle Day. 72 00:03:14,822 --> 00:03:17,530 Og så vil du blive udfordret med netop den slags ting 73 00:03:17,530 --> 00:03:20,520 og problemer, folk på Facebook kan lide at tænke over. 74 00:03:20,520 --> 00:03:21,860 Så det er i morgen. 75 00:03:21,860 --> 00:03:25,980 Tilmeld dig på cs50.harvard.edu/register. 76 00:03:25,980 --> 00:03:28,120 >> Nu et par ord om et par af personale i særdeleshed. 77 00:03:28,120 --> 00:03:30,090 Dette her er Ansel Duff, der er faktisk en 78 00:03:30,090 --> 00:03:33,860 af medforfattere til disse binære pærer, som vi så på onsdag, 79 00:03:33,860 --> 00:03:36,710 foruden CS50 egen Dan Bradley. 80 00:03:36,710 --> 00:03:40,094 Ansel Duff var også en tidligere freshman advisee af mine 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 er gået på at gøre ingeniørvidenskab og meget mere. 83 00:03:45,330 --> 00:03:49,279 Nu hans billede her er faktisk Ansel 3 år siden på CS50 hackathon 84 00:03:49,279 --> 00:03:51,820 når han lånt en af ​​vores balloner, stak den til sin bærbare computer, 85 00:03:51,820 --> 00:03:55,240 og for de næste 12 nogle ulige timer, fokuseret på hans afsluttende projekt, 86 00:03:55,240 --> 00:03:59,150 tage pauser blot at åbne sække med slik på hackathon. 87 00:03:59,150 --> 00:04:02,210 >> Men han gik for nylig til tilbringe denne sidste sommer med os, 88 00:04:02,210 --> 00:04:05,270 siden CS50 for sine ansatte, og nu har de studerende dette semester 89 00:04:05,270 --> 00:04:06,770 har sin egen 3D-printer. 90 00:04:06,770 --> 00:04:10,180 Og i en nøddeskal en 3D-printere er en enhed, der ser helt sådan ud. 91 00:04:10,180 --> 00:04:15,700 Du fylder den med en plastik spole der er smeltet ned af enheden 92 00:04:15,700 --> 00:04:18,940 og du bygge ting bogstaveligt talt fra ingenting. 93 00:04:18,940 --> 00:04:22,660 Meget gerne en inkjet-printer, starter du spytte ud små prikker af plast 94 00:04:22,660 --> 00:04:24,990 denne form sammen danner hele objekter. 95 00:04:24,990 --> 00:04:28,430 Og så Ansel for eksempel tidligere denne sommer, har en iPhone 5 96 00:04:28,430 --> 00:04:30,722 og han besluttede virkelig ønskede prop det op på sit skrivebord. 97 00:04:30,722 --> 00:04:32,638 Men han ønskede ikke at gå ud og købe noget 98 00:04:32,638 --> 00:04:36,030 fra Apple Store eller lignende, så han satte sig ned og begyndte at tegne noget. 99 00:04:36,030 --> 00:04:38,280 Han tog et par målinger , hvordan tyk 100 00:04:38,280 --> 00:04:41,270 og hvor bred hans iPhone var, han trak dette billede her, 101 00:04:41,270 --> 00:04:43,870 besluttede han, at han ønskede at have en 75 graders hældning 102 00:04:43,870 --> 00:04:46,150 da det stirrede på ham på hans skrivebord der. 103 00:04:46,150 --> 00:04:50,440 Han vendte dette, ved hjælp af software i en 3D CAD-model 104 00:04:50,440 --> 00:04:52,400 der så lidt noget som dette. 105 00:04:52,400 --> 00:04:55,940 Og derefter fortsatte han, i sidste ende, faktisk at skabe den. 106 00:04:55,940 --> 00:05:00,250 Så i virkeligheden, hvis nogen af ​​jer her, måske i træk, 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 mere. 108 00:05:06,780 --> 00:05:10,650 109 00:05:10,650 --> 00:05:17,037 >> Nu, ikke at stå tilbage, CS50 egen Cheng Gong også indstille ud denne sommer 110 00:05:17,037 --> 00:05:19,870 til at bygge en hel del ting, og, i virkeligheden, af grunde, der stadig 111 00:05:19,870 --> 00:05:23,970 uklar, har været langsomt udskrivning af en hær af elefanter 112 00:05:23,970 --> 00:05:27,250 med artikulerende arme og badebukser. 113 00:05:27,250 --> 00:05:32,515 Et par af dem er faktisk her, hvis nogen ville nu like-- en elefant. 114 00:05:32,515 --> 00:05:35,650 115 00:05:35,650 --> 00:05:40,522 Okay,. men hvad Cheng også gjorde for os er han meget venligt oprettet et kamera 116 00:05:40,522 --> 00:05:42,230 fordi denne elefant, tro det eller ej, 117 00:05:42,230 --> 00:05:44,690 tager nogle to og en halv time at udskrive. 118 00:05:44,690 --> 00:05:47,840 Selv iPhone standen tog en time og en halv til at udskrive. 119 00:05:47,840 --> 00:05:51,490 Og hvad Cheng gik fremad og gjorde blev oprettet en nice kamera foran 120 00:05:51,490 --> 00:05:55,580 af denne 3D-printer, filmet i en time og en halvt så Ansel design udskrives. 121 00:05:55,580 --> 00:05:58,090 Vi overlejret nogle sexet musik til den for 122 00:05:58,090 --> 00:06:00,570 for at give dig den til at se på, hvordan 3D-trykkeri. 123 00:06:00,570 --> 00:06:02,494 Og selvom dette er faktisk i plast, 124 00:06:02,494 --> 00:06:05,160 indse, at hvis dette er et område af interesse for dig fagligt, 125 00:06:05,160 --> 00:06:07,120 Der er folk, blandt dem Jennifer Lewis her 126 00:06:07,120 --> 00:06:09,036 på School of Engineering, der er faktisk 127 00:06:09,036 --> 00:06:10,920 arbejder på 3D-print af plastik objekter. 128 00:06:10,920 --> 00:06:14,150 Men selv i stigende grad, biologiske materialer til at 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 lidt noget fra CS50. 131 00:06:19,944 --> 00:06:31,625 >> [LOUD mekanisk støj] 132 00:06:31,625 --> 00:06:34,250 David J. MALAN: Det lyder ikke noget lignende i virkeligheden, 133 00:06:34,250 --> 00:06:37,240 men det er meget køligere at se det ved denne hastighed, og med den lyd. 134 00:06:37,240 --> 00:06:40,000 >> Nu på onsdag, hvordan vi først komme her? 135 00:06:40,000 --> 00:06:43,345 Vi begyndte at tale om computer videnskab og vi spurgte, hvad det var. 136 00:06:43,345 --> 00:06:46,470 Og det handler om en række ting, og der er så mange forskellige retninger 137 00:06:46,470 --> 00:06:48,477 hvor du kan gå efter et kursus som CS50. 138 00:06:48,477 --> 00:06:50,810 I virkeligheden, hvis du tog en af disse uofficielle guider 139 00:06:50,810 --> 00:06:54,080 CS udenfor, hæftet som Vi har givet, uanset om du er 140 00:06:54,080 --> 00:06:57,150 tænker på at tage bare CS50, eller måske laver en sekundær, 141 00:06:57,150 --> 00:06:59,557 eller måske endda koncentrere i CS, skal du bladre gennem det. 142 00:06:59,557 --> 00:07:01,390 Og du vil se et diagram mod den ende, 143 00:07:01,390 --> 00:07:04,950 viser dig de mange forskellige retninger i CS, at du kan gå ud i. 144 00:07:04,950 --> 00:07:09,030 >> Men i dag vil vi fokusere igen, om virkelig en af ​​de grundlæggende synspunkter, 145 00:07:09,030 --> 00:07:11,500 måske, hvor du har input til problemer, 146 00:07:11,500 --> 00:07:13,430 du har udgange fra problemer, og du har 147 00:07:13,430 --> 00:07:17,420 algoritmer med til at skabe disse udgange fra disse indgange. 148 00:07:17,420 --> 00:07:20,330 Og et eksempel, var på Selvfølgelig er denne telefon bog her. 149 00:07:20,330 --> 00:07:24,180 Og vi bruges som et eksempel for at gå gennem en algoritme, som var korrekt. 150 00:07:24,180 --> 00:07:26,490 Og så en anden var korrekt, men lidt hurtigere. 151 00:07:26,490 --> 00:07:29,448 Og så en anden, der var lidt mere dramatisk, men grundlæggende 152 00:07:29,448 --> 00:07:30,000 hurtigere. 153 00:07:30,000 --> 00:07:32,720 >> Right, denne telefon bog, vi hævdede havde omkring 1.000 sider. 154 00:07:32,720 --> 00:07:36,200 Og hvor mange gange har jeg har at rive telefonbogen i halve 155 00:07:36,200 --> 00:07:39,930 at finde en som Mike Smith, maksimalt, i 1000 siders bog? 156 00:07:39,930 --> 00:07:41,040 Så 10 give eller tage. 157 00:07:41,040 --> 00:07:45,050 Og så når jeg rev denne ting i halvdelen, eller blot mere modent, 158 00:07:45,050 --> 00:07:48,490 delt i to halvdele, er det kun 10 sider ud af 1.000. 159 00:07:48,490 --> 00:07:51,470 Og hvis du ekstrapolere, lidt urealistisk for en telefonbog, 160 00:07:51,470 --> 00:07:56,540 men hvis denne telefonbog havde nogle 4 milliarder sider i det, så helt 161 00:07:56,540 --> 00:07:59,680 uhåndterlige fysisk, hvor mange gange skal du opdele en 4 milliarder 162 00:07:59,680 --> 00:08:01,460 side telefonbog i halve? 163 00:08:01,460 --> 00:08:03,035 Så det er faktisk 32, give eller tage. 164 00:08:03,035 --> 00:08:07,090 Og kun så 32 gange, ud 4 milliarder sider, kan 165 00:08:07,090 --> 00:08:08,700 du finder en 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 så flyttede vi fra det at forsøge at formalisere det. 169 00:08:14,480 --> 00:08:16,100 Og jeg foreslog denne pseudokode kode. 170 00:08:16,100 --> 00:08:17,800 Pseudokode kode er ikke noget formelt. 171 00:08:17,800 --> 00:08:18,880 Det er ikke noget, man lære udenad. 172 00:08:18,880 --> 00:08:21,588 Det er bare noget, du udtrykker forholdsvis intuitivt at bruge engelsk, 173 00:08:21,588 --> 00:08:24,990 eller ethvert sprog virkelig, at formidler dine ideer kortfattet. 174 00:08:24,990 --> 00:08:26,990 Men hvad er nøglen om pseudokode kode er, at du 175 00:08:26,990 --> 00:08:30,331 forsøge at forudse alle de mulige tilfælde, der kan ske. 176 00:08:30,331 --> 00:08:33,080 Og ja, i dette pseudokode kode, der var virkelig tre tilfælde 177 00:08:33,080 --> 00:08:34,700 hver gang jeg delte telefonbogen. 178 00:08:34,700 --> 00:08:36,006 Mike kunne være til venstre. 179 00:08:36,006 --> 00:08:37,130 Mike kan være til højre. 180 00:08:37,130 --> 00:08:39,240 Eller han kan være rigtige på den side jeg er på. 181 00:08:39,240 --> 00:08:42,110 Eller en fjerde hjørne sag, så at sige. 182 00:08:42,110 --> 00:08:46,470 En dårlig scenarie kunne være en which-- hvad sker der? 183 00:08:46,470 --> 00:08:48,860 Mike er bare ikke i telefonbogen på alle. 184 00:08:48,860 --> 00:08:52,720 >> Og når programmer crash-- når Mac og pc-software, som du fyre køre 185 00:08:52,720 --> 00:08:56,400 på dine computere til tider hænger eller afsluttes uventet, 186 00:08:56,400 --> 00:08:59,770 der generelt betyder, at nogle programmør, nogle menneske ligesom dig snart, 187 00:08:59,770 --> 00:09:01,650 bare skruet op og gjort nogle fejl. 188 00:09:01,650 --> 00:09:05,207 Måske ikke forventer, at måske er der er ingen Mike Smith i telefonbogen. 189 00:09:05,207 --> 00:09:08,040 Og hvis du ikke rent faktisk at skrive kode til at håndtere situationer som denne, 190 00:09:08,040 --> 00:09:09,890 generelt uforudsigelige ting kan ske. 191 00:09:09,890 --> 00:09:10,960 Din maskine kan fryse. 192 00:09:10,960 --> 00:09:11,730 Det kan genstarte. 193 00:09:11,730 --> 00:09:12,889 Programmet kan holde op. 194 00:09:12,889 --> 00:09:14,722 Og så alle disse dumheder, som du kan 195 00:09:14,722 --> 00:09:18,030 er stødt på i din faktiske livet bare bruger computere, 196 00:09:18,030 --> 00:09:20,710 vil i stigende grad være lige bortforklares af denne intuition 197 00:09:20,710 --> 00:09:24,920 og denne forståelse af, hvad der er faktisk foregår under motorhjelmen. 198 00:09:24,920 --> 00:09:27,329 >> Lad os nu prøve at tage et kig på et mere generelt problem. 199 00:09:27,329 --> 00:09:29,120 Snarere end at tage fremmøde på et sted som 200 00:09:29,120 --> 00:09:32,230 dette, hvilket ville være ganske langsomt at gøre en, to, tre, fire. 201 00:09:32,230 --> 00:09:34,070 Eller måske to, fire, seks, otte. 202 00:09:34,070 --> 00:09:36,080 Lad os fokusere i stedet på hvordan vi kan formalisere 203 00:09:36,080 --> 00:09:39,400 algoritmen af ​​processen ved som vi kunne tage fremmøde. 204 00:09:39,400 --> 00:09:42,290 Og langs vejen, lad os starte at anvende nogle nomenklatur 205 00:09:42,290 --> 00:09:47,130 at vi vil bruge i dag, når vi rent faktisk begynde at programmere i et sprog. 206 00:09:47,130 --> 00:09:50,910 Så jeg giver dig nu en fire minutters video at vi sætter sammen med vores venner 207 00:09:50,910 --> 00:09:52,820 fra TED organisationen. 208 00:09:52,820 --> 00:09:56,380 Hvorved vi leveret et script og de bragte deres animatorer til at bære, 209 00:09:56,380 --> 00:10:00,970 og faktisk skabt et 2D animation af hvad en algoritme er. 210 00:10:00,970 --> 00:10:02,776 Hvis vi kunne dæmpe lyset. 211 00:10:02,776 --> 00:10:06,664 >> [Musik spiller] 212 00:10:06,664 --> 00:10:17,890 213 00:10:17,890 --> 00:10:19,140 Fortæller: Hvad er en algoritme? 214 00:10:19,140 --> 00:10:21,620 I datalogi, En algoritme er et sæt 215 00:10:21,620 --> 00:10:24,840 instruktioner løse nogle problem trin-for-trin. 216 00:10:24,840 --> 00:10:27,310 Typisk algoritmer er udført af computere, 217 00:10:27,310 --> 00:10:29,365 men vi mennesker har algoritmer så godt. 218 00:10:29,365 --> 00:10:31,240 For eksempel, hvordan ville du går om at tælle 219 00:10:31,240 --> 00:10:32,990 antallet af personer i et rum? 220 00:10:32,990 --> 00:10:36,840 Tja, hvis du er ligesom mig, ville du sikkert pege på hver person ad gangen 221 00:10:36,840 --> 00:10:38,370 og tælle op fra nul. 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 Tja, det er en algoritme. 224 00:10:42,410 --> 00:10:45,820 Faktisk, lad os prøve at udtrykke det en bit mere formelt i pseudokode kode. 225 00:10:45,820 --> 00:10:48,940 Engelsk-lignende syntaks, ligner et programmeringssprog. 226 00:10:48,940 --> 00:10:50,880 >> Lad n lig 0. 227 00:10:50,880 --> 00:10:55,210 For hver person i rummet, sat n lig med n plus 1. 228 00:10:55,210 --> 00:10:56,790 Hvordan man skal fortolke pseudokoden? 229 00:10:56,790 --> 00:10:59,490 Nå linie et erklærer, så at sige, en variabel 230 00:10:59,490 --> 00:11:02,880 kaldet n og initialiseres dens værdi til 0 Dette blot 231 00:11:02,880 --> 00:11:05,080 betyder, at det begyndelsen af ​​vores algoritme, 232 00:11:05,080 --> 00:11:07,910 de ting, som vi er optælling har en værdi på 0. 233 00:11:07,910 --> 00:11:10,860 Efter alt, før vi begynder at tælle Vi har ikke talt noget endnu. 234 00:11:10,860 --> 00:11:13,580 Opkald denne variabel n er bare en konvention. 235 00:11:13,580 --> 00:11:15,130 Jeg kunne have kaldt det mest noget. 236 00:11:15,130 --> 00:11:17,460 Nu linje to demarks starten på en bue, 237 00:11:17,460 --> 00:11:20,550 en sekvens af skridt, der vil gentage nogle antal gange. 238 00:11:20,550 --> 00:11:24,130 Så i vores eksempel, det skridt, vi er tager, er at tælle personer i værelset. 239 00:11:24,130 --> 00:11:26,260 Under linie to er i overensstemmelse tre, som beskriver 240 00:11:26,260 --> 00:11:28,400 præcis hvordan vi vil gå om at tælle. 241 00:11:28,400 --> 00:11:31,720 Indrykningen indebærer, at det er linje tre, vil gentage. 242 00:11:31,720 --> 00:11:35,190 Så med pseudokode kode er siger, er, at efter start ved 0 243 00:11:35,190 --> 00:11:38,940 for hver person i Værelset vi vil øge n med 1 244 00:11:38,940 --> 00:11:41,310 Nu er denne algoritme korrekt? 245 00:11:41,310 --> 00:11:42,820 Jamen så lad os bang på det en smule. 246 00:11:42,820 --> 00:11:45,520 >> Virker det, hvis der er to personer i rummet? 247 00:11:45,520 --> 00:11:46,420 Lad os se. 248 00:11:46,420 --> 00:11:48,500 På linje én initialisere vi n til 0. 249 00:11:48,500 --> 00:11:51,910 For hver af disse to personer, vi så tilvækst n med 1. 250 00:11:51,910 --> 00:11:55,570 Så i den første tur gennem løkke, opdaterer vi n fra 0 til 1. 251 00:11:55,570 --> 00:11:59,320 På anden tur gennem det samme løkke, opdaterer vi n fra 1 til 2. 252 00:11:59,320 --> 00:12:02,850 Og så ved denne algoritme er ende, n er 2, som 253 00:12:02,850 --> 00:12:04,950 faktisk svarer til det antal af personer i lokalet. 254 00:12:04,950 --> 00:12:06,040 Så langt, så godt. 255 00:12:06,040 --> 00:12:07,870 >> Hvordan omkring et hjørne tilfælde selv? 256 00:12:07,870 --> 00:12:11,090 Antag, at der er 0 mennesker i room-- udover mig, hvem der er 257 00:12:11,090 --> 00:12:12,420 gør tælling. 258 00:12:12,420 --> 00:12:15,380 På linje et, vi igen initialisere n til 0. 259 00:12:15,380 --> 00:12:17,810 Denne gang dog, linje tre udfører ikke på alle 260 00:12:17,810 --> 00:12:19,610 da der ikke er en person i rummet. 261 00:12:19,610 --> 00:12:23,540 Og så n forbliver 0, hvilket faktisk passer antallet af personer i rummet. 262 00:12:23,540 --> 00:12:24,670 Temmelig enkel, right? 263 00:12:24,670 --> 00:12:27,880 Men tælle mennesker en ad gangen er temmelig ineffektiv, også, ikke? 264 00:12:27,880 --> 00:12:29,160 Sikkert kan vi gøre bedre. 265 00:12:29,160 --> 00:12:33,440 Hvorfor ikke tælle to personer ad gangen, stedet for at tælle en, to, tre, 266 00:12:33,440 --> 00:12:36,470 fire, fem, seks, syv, otte, og så videre. 267 00:12:36,470 --> 00:12:39,106 Hvorfor ikke tælle to, fire, seks, otte, og så videre? 268 00:12:39,106 --> 00:12:40,670 Det lyder endnu hurtigere. 269 00:12:40,670 --> 00:12:41,940 Og det helt sikkert er. 270 00:12:41,940 --> 00:12:44,490 >> Lad os udtrykke denne optimering i pseudokode kode. 271 00:12:44,490 --> 00:12:46,040 Lad n lig 0. 272 00:12:46,040 --> 00:12:50,760 For hvert par af mennesker i rum, der er n lig med n plus 2. 273 00:12:50,760 --> 00:12:52,360 Temmelig simpel ændring, ikke sandt? 274 00:12:52,360 --> 00:12:56,560 Snarere end at tælle mennesker en ad gangen, vi i stedet tælle dem to ad gangen. 275 00:12:56,560 --> 00:12:59,240 Denne algoritme er således dobbelt så hurtigt som den sidste. 276 00:12:59,240 --> 00:13:00,530 Men er det korrekt? 277 00:13:00,530 --> 00:13:01,160 Lad os se. 278 00:13:01,160 --> 00:13:03,580 Virker det, hvis der er to personer i rummet? 279 00:13:03,580 --> 00:13:05,800 På linje et, initialisere vi n til 0. 280 00:13:05,800 --> 00:13:09,160 For at et par af mennesker, vi så tilvækst n med 2. 281 00:13:09,160 --> 00:13:11,910 Og således ved denne algoritme er ende n er 2, som 282 00:13:11,910 --> 00:13:13,910 faktisk svarer til det antal af personer i lokalet. 283 00:13:13,910 --> 00:13:16,610 >> Antag næste, at der er nul personer i værelset. 284 00:13:16,610 --> 00:13:19,080 På linje én initialisere vi n til 0. 285 00:13:19,080 --> 00:13:21,260 Som før, linie tre udfører ikke det hele 286 00:13:21,260 --> 00:13:25,270 da der ikke er nogen par af mennesker i rummet, og så n forbliver 0. 287 00:13:25,270 --> 00:13:27,840 Hvilket faktisk matcher Antallet af personer i lokalet. 288 00:13:27,840 --> 00:13:30,520 Men hvad hvis der er tre personer i rummet? 289 00:13:30,520 --> 00:13:32,380 Hvordan denne algoritme billetpris? 290 00:13:32,380 --> 00:13:35,710 Lad os se på linje et, vi initialisere n til 0. 291 00:13:35,710 --> 00:13:39,140 For et par af de mennesker, vi så tilvækst n med 2. 292 00:13:39,140 --> 00:13:40,050 Men hvad så? 293 00:13:40,050 --> 00:13:42,340 Der er ikke en anden fuld par af mennesker i lokalet, 294 00:13:42,340 --> 00:13:44,430 så linie to ikke længere gælder. 295 00:13:44,430 --> 00:13:48,790 Og således ved denne algoritme udgang, n er stadig 2, som ikke er korrekt. 296 00:13:48,790 --> 00:13:52,070 Faktisk denne algoritme siges at være fejlbehæftet, fordi det har en fejl. 297 00:13:52,070 --> 00:13:54,070 >> Lad os oprejsning med nogle ny pseudokode kode. 298 00:13:54,070 --> 00:13:56,110 Lad n lig 0. 299 00:13:56,110 --> 00:14:00,790 For hvert par af mennesker i rum, der er N lig med n plus 2. 300 00:14:00,790 --> 00:14:05,410 Hvis én person fortsat er uparrede, sæt N lig med n plus 1. 301 00:14:05,410 --> 00:14:09,340 For at løse dette problem, vi har indført i linje fire en tilstand, 302 00:14:09,340 --> 00:14:12,120 ellers kendt som en filial, at kun Udfører 303 00:14:12,120 --> 00:14:14,890 hvis der er én person, vi kunne ikke parres med en anden. 304 00:14:14,890 --> 00:14:17,140 Og så nu, hvad enten der er én, eller tre, 305 00:14:17,140 --> 00:14:21,550 eller et ulige antal personer i rummet, denne algoritme vil nu tælle dem. 306 00:14:21,550 --> 00:14:22,810 Kan vi gøre det endnu bedre? 307 00:14:22,810 --> 00:14:25,890 Tja, vi kunne regne i tre, eller fire, eller endda fives og tiere, 308 00:14:25,890 --> 00:14:29,390 men ud over dette, er det kommer til at få lidt svært at pege. 309 00:14:29,390 --> 00:14:32,900 >> Ved slutningen af ​​dagen, om udføres af computere eller mennesker, 310 00:14:32,900 --> 00:14:34,870 algoritmer er blot et sæt af instruktioner 311 00:14:34,870 --> 00:14:36,560 med til at løse problemer. 312 00:14:36,560 --> 00:14:38,360 Disse var kun 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å bevidst, et meget simpelt program, 315 00:14:44,261 --> 00:14:46,260 en meget enkel algoritme, for at opnå noget 316 00:14:46,260 --> 00:14:48,280 meget enkel, tælle Antallet af personer i lokalet. 317 00:14:48,280 --> 00:14:50,370 >> Men lad os drille hinanden nogle af repræsentanten 318 00:14:50,370 --> 00:14:52,870 funktioner her, der faktisk vil være nyttigt, selv når 319 00:14:52,870 --> 00:14:54,880 gennemfører de mest kompleks af software. 320 00:14:54,880 --> 00:14:58,060 Så for eksempel i den første linje, vi har hvad vi kalder variablen, 321 00:14:58,060 --> 00:15:01,040 og fra algebra, er du generelt velkendt hjælp x og y 322 00:15:01,040 --> 00:15:02,930 og z tider, og så videre. 323 00:15:02,930 --> 00:15:05,770 Men i programmering, variabler er stadig i slutningen af ​​dagen, 324 00:15:05,770 --> 00:15:06,680 meget lig. 325 00:15:06,680 --> 00:15:09,910 Men det er måske lettere at tænke af en variabel som blot en beholder. 326 00:15:09,910 --> 00:15:13,520 Og i virkeligheden, det er nogle antal bits gennemført en eller anden måde på din harddisk 327 00:15:13,520 --> 00:15:16,410 eller i computerens hukommelse, men mere 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 siger noget ligesom lad n lig 0, 330 00:15:20,310 --> 00:15:24,310 godt, det er ligesom at kalde dette glas skål her n, blot et vilkårligt navn, 331 00:15:24,310 --> 00:15:26,230 og lægge noget i det i første omgang. 332 00:15:26,230 --> 00:15:28,940 Så værdien af ​​denne skål lige nu er nul. 333 00:15:28,940 --> 00:15:31,380 Og selvfølgelig, hvis du opfatter i en efterfølgende linie, 334 00:15:31,380 --> 00:15:35,070 faktisk forøge nogle linje kode, som i denne tredje linje her, 335 00:15:35,070 --> 00:15:39,857 med 1, det er ligesom at sige, hvad der er den aktuelle værdi af n, er det 0, plus 1, 336 00:15:39,857 --> 00:15:41,690 sætte noget som en bordtennisbold i her. 337 00:15:41,690 --> 00:15:45,140 Nu værdien af ​​denne variabel er simpelthen 1. 338 00:15:45,140 --> 00:15:50,064 Og du kan meget hurtigt ekstrapolere, men nu er det 2, nu er det 3, og så videre. 339 00:15:50,064 --> 00:15:51,230 Så det hele er en variabel er. 340 00:15:51,230 --> 00:15:53,740 Det er et stykke af lagerplads til faktisk gemme nogle data. 341 00:15:53,740 --> 00:15:55,050 For nu er det en bordtennisbold. 342 00:15:55,050 --> 00:15:55,883 Der er det et nummer. 343 00:15:55,883 --> 00:15:58,910 Men det kan være ord i en ordbog, som stavekontrollen 344 00:15:58,910 --> 00:16:02,300 Jeg hentydede til på onsdag for en af ​​sidste års problemet sæt. 345 00:16:02,300 --> 00:16:05,640 >> Nu anden vigtig idé, der på samme måde er temmelig intuitiv Jeg vil hævde, 346 00:16:05,640 --> 00:16:06,690 er, at en løkke. 347 00:16:06,690 --> 00:16:08,930 Og sløjfen i processen tælle alle 348 00:16:08,930 --> 00:16:12,540 er naturligvis, at gøre det samme ting igen og igen-- ene 349 00:16:12,540 --> 00:16:14,140 på en gang eller to ad gangen. 350 00:16:14,140 --> 00:16:17,690 Og du kan udtrykke dette på engelsk, eller pseudokode kode, i en række forskellige måder, 351 00:16:17,690 --> 00:16:21,560 men ved hjælp af denne forholdsord "for" er en meget almindelig måde at gøre det. 352 00:16:21,560 --> 00:16:24,460 For hver person i rummet, gøre dette. 353 00:16:24,460 --> 00:16:25,350 Igen og igen. 354 00:16:25,350 --> 00:16:27,700 Og det faktum, at det er indrykket, linje tre, 355 00:16:27,700 --> 00:16:29,840 betyder blot, at hvad du skulle gøre 356 00:16:29,840 --> 00:16:33,490 er det stof, der er indrykket under linjen to selv. 357 00:16:33,490 --> 00:16:35,590 Bare en menneskelig konvention, men et almindeligt 358 00:16:35,590 --> 00:16:39,010 som vi skal se i faktiske højere niveau programmeringssprog. 359 00:16:39,010 --> 00:16:41,870 >> Nu lidt mere interessant er når du kommer i et hjørne tilfælde. 360 00:16:41,870 --> 00:16:43,970 For eksempel, et hjørne tilfælde var, da der 361 00:16:43,970 --> 00:16:48,060 var tre personer, eller fem eller syv, eller et ulige antal personer i rummet, 362 00:16:48,060 --> 00:16:51,630 fordi at gøre det ved Twos bremser i sidste ende fordi din vil 363 00:16:51,630 --> 00:16:54,265 at gå glip af nogen, enten på starten eller slutningen 364 00:16:54,265 --> 00:16:55,390 afhængigt af, hvordan du gør det. 365 00:16:55,390 --> 00:16:59,800 Og ja, nu har jeg denne gren, eller tilstand, hvis en person, tilbage, 366 00:16:59,800 --> 00:17:04,490 derefter gå videre og håndtere, at man ensom person, der ikke fik 367 00:17:04,490 --> 00:17:05,690 parret med en anden. 368 00:17:05,690 --> 00:17:09,030 Så det er hvad vi ville kalde en tilstand, eller en filial. 369 00:17:09,030 --> 00:17:11,500 >> Nu pseudokode kode mere generelt kan være 370 00:17:11,500 --> 00:17:13,730 skrevet for at løse et antal problemer. 371 00:17:13,730 --> 00:17:16,490 Og hvad jeg troede, vi havde gøre her, er at tage et øjeblik 372 00:17:16,490 --> 00:17:20,089 at invitere skal vi sige CS50 s ejer Rob Bowden på scenen 373 00:17:20,089 --> 00:17:25,040 kan samles med to frivillige, som ikke har nogen idé om, hvad der venter. 374 00:17:25,040 --> 00:17:26,890 En hånd gik ned, så snart jeg sagde det. 375 00:17:26,890 --> 00:17:28,700 Hvad med dig på ende her, kom op. 376 00:17:28,700 --> 00:17:33,040 Og hvad med fra længere væk, hvad med måde i ryggen. 377 00:17:33,040 --> 00:17:35,200 Bageste række, kom op med dine hænder op. 378 00:17:35,200 --> 00:17:36,475 Okay, og hvad er dit navn? 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 Okay, rart at møde dig. 382 00:17:38,613 --> 00:17:41,010 Lad mig introducere dig 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 hvad er dit 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 op og mødes Rob Bowden og Anita. 388 00:17:49,790 --> 00:17:51,036 Rart at møde dig. 389 00:17:51,036 --> 00:17:52,160 Kiersten: Rart at møde dig. 390 00:17:52,160 --> 00:17:53,368 David J. MALAN: Okay, Rob. 391 00:17:53,368 --> 00:17:54,650 ROB BOWDEN: Rart at møde dig. 392 00:17:54,650 --> 00:17:55,566 David J. MALAN: Anita. 393 00:17:55,566 --> 00:17:56,520 Kiersten: Hej Anita. 394 00:17:56,520 --> 00:17:58,686 David J. MALAN: Og Deres flere hundrede klassekammerater. 395 00:17:58,686 --> 00:18:02,490 Så lad mig nu gå videre og trække op bare et simpelt program her 396 00:18:02,490 --> 00:18:05,690 på Mac OS, der vil lade mig faktisk skrive nogle noter ned. 397 00:18:05,690 --> 00:18:09,570 Og hvis du fyre ønsker at hver tage et holdning på en af ​​disse skoler der, 398 00:18:09,570 --> 00:18:16,360 lad mig gå videre og starter en liste af pseudokoden kode, hvis du vil. 399 00:18:16,360 --> 00:18:19,970 Og hvad jeg ønsker at gøre her, i sidste ende er type for dig 400 00:18:19,970 --> 00:18:22,470 nogle instruktioner, at vores publikum medlemmer er faktisk 401 00:18:22,470 --> 00:18:23,569 kommer til at recitere for os. 402 00:18:23,569 --> 00:18:25,860 Lad mig gå videre og bare ændre dette til en nummereret liste 403 00:18:25,860 --> 00:18:27,720 at matche, hvad vi lavede deroppe. 404 00:18:27,720 --> 00:18:30,990 Og hvad jeg har tænkt mig at gøre med din hjælp, er at skrive et program 405 00:18:30,990 --> 00:18:34,620 i pseudokode, som disse fyre går 406 00:18:34,620 --> 00:18:38,150 at gennemføre en peanut smør og gelé sandwich. 407 00:18:38,150 --> 00:18:40,880 Så det er måske apropos til vise noget nogle af jer 408 00:18:40,880 --> 00:18:44,560 kunne have set på internettet for blot en kort irriterende øjeblik. 409 00:18:44,560 --> 00:18:47,650 >> [MUSIC BUCKEWHEAT BOYS "jordnøddesmør  Gelé 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 af det. 413 00:19:10,050 --> 00:19:12,690 Så her i mellemtiden, jeg har en par Google Glasses som 414 00:19:12,690 --> 00:19:16,500 vi vil sætte på CS50 egen Rob Bowden at se verden gennem hans øjne. 415 00:19:16,500 --> 00:19:19,140 Og vi vil gøre vores bedste i post produktion faktisk væve 416 00:19:19,140 --> 00:19:23,100 optagelser af, hvad Rob er at se nu, i denne aktuelle foredrag 417 00:19:23,100 --> 00:19:26,420 video med vores to frivillige siden af ​​ham. 418 00:19:26,420 --> 00:19:28,480 Så hvad jeg har tænkt mig at gøre er, vil jeg være den maskinskriver. 419 00:19:28,480 --> 00:19:31,849 Vi har mål her af faktisk skriver et program 420 00:19:31,849 --> 00:19:34,640 med til at gøre i sidste ende en jordnøddesmør og gelé sandwich, 421 00:19:34,640 --> 00:19:37,680 men disse tre kommer til at opføre sig som om de er computere. 422 00:19:37,680 --> 00:19:40,638 Og computere, i slutningen af ​​dagen, er faktisk temmelig dumme enheder. 423 00:19:40,638 --> 00:19:44,432 De er super hurtig, men de kan kun gør, bogstaveligt talt, hvad de får at vide. 424 00:19:44,432 --> 00:19:46,890 Du kan ikke bare sige lave en peanut smør og gelé sandwich. 425 00:19:46,890 --> 00:19:48,640 Du er nødt til at programmere dem til at gøre det. 426 00:19:48,640 --> 00:19:51,420 Du er nødt til at fortælle dem med præcision, hvad de skal gøre, 427 00:19:51,420 --> 00:19:54,400 mindre det går grueligt og, forhåbentlig underholdende skævt. 428 00:19:54,400 --> 00:19:57,460 >> Så med det sagt, er vi nødt ét opkald ud fra publikum 429 00:19:57,460 --> 00:19:59,440 for hvad bør intensivere man være, hvis målet her 430 00:19:59,440 --> 00:20:01,356 er at gøre 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ørligt] posen brød. 433 00:20:03,647 --> 00:20:05,230 David J. MALAN: Åbn posen med brød. 434 00:20:05,230 --> 00:20:08,360 Så hvis de tre deltagere ville gerne gå videre til at gøre det bogstaveligt. 435 00:20:08,360 --> 00:20:12,394 Åbn posen med brød. 436 00:20:12,394 --> 00:20:15,810 >> [Audience LAUGHING] 437 00:20:15,810 --> 00:20:20,717 438 00:20:20,717 --> 00:20:22,300 David J. MALAN: Så lad os arbejde på det. 439 00:20:22,300 --> 00:20:23,180 Okay. 440 00:20:23,180 --> 00:20:25,400 Så trin to, Hvordan-- lad os tage dette yderligere. 441 00:20:25,400 --> 00:20:26,480 Ja, i front. 442 00:20:26,480 --> 00:20:27,240 >> Publikum: [uhørligt] brødet. 443 00:20:27,240 --> 00:20:27,735 >> David J. MALAN: Hvad er det? 444 00:20:27,735 --> 00:20:28,836 >> PUBLIKUM: Tag brødet. 445 00:20:28,836 --> 00:20:30,210 David J. MALAN: Tag brødet. 446 00:20:30,210 --> 00:20:31,190 Tilsvarende kortfattet. 447 00:20:31,190 --> 00:20:33,667 Tak. 448 00:20:33,667 --> 00:20:43,777 >> [Applaus] 449 00:20:43,777 --> 00:20:44,860 David J. MALAN: Er det alt? 450 00:20:44,860 --> 00:20:48,830 OK, så trin to går at fjerne brød. 451 00:20:48,830 --> 00:20:51,790 Okay, nogen ønsker at skrive os en længere sætning? 452 00:20:51,790 --> 00:20:52,640 En anden? 453 00:20:52,640 --> 00:20:53,920 Lidt mere [uhørligt]. 454 00:20:53,920 --> 00:20:54,810 Nej, intet nu. 455 00:20:54,810 --> 00:20:56,094 Ja? 456 00:20:56,094 --> 00:20:58,900 >> PUBLIKUM: Sted to skiver ved siden af ​​hinanden. 457 00:20:58,900 --> 00:21:03,575 >> David J. MALAN: Sted to skiver ved siden af ​​hinanden. 458 00:21:03,575 --> 00:21:06,420 >> [Audience LAUGHING] 459 00:21:06,420 --> 00:21:09,590 >> David J. MALAN: Sted to skiver ved siden af ​​hinanden. 460 00:21:09,590 --> 00:21:11,334 Trin fire. 461 00:21:11,334 --> 00:21:12,816 Ja? 462 00:21:12,816 --> 00:21:14,792 >> Publikum: Tag din hånd og sæt det let 463 00:21:14,792 --> 00:21:17,756 på toppen af ​​jordnøddesmør låget. 464 00:21:17,756 --> 00:21:19,710 >> [Audience LAUGHING] 465 00:21:19,710 --> 00:21:21,710 Publikum: [uhørligt] siden af ​​jordnøddesmør. 466 00:21:21,710 --> 00:21:21,870 David J. MALAN: Hvad? 467 00:21:21,870 --> 00:21:22,520 Sig det igen. 468 00:21:22,520 --> 00:21:26,308 >> Publikum: Skru låget og sætte det forsigtigt ud for jordnøddesmør. 469 00:21:26,308 --> 00:21:31,490 >> David J. MALAN: Sæt det forsigtigt siden af ​​jordnøddesmør. 470 00:21:31,490 --> 00:21:37,770 471 00:21:37,770 --> 00:21:40,090 OK, fremskridt. 472 00:21:40,090 --> 00:21:41,080 Trin fem. 473 00:21:41,080 --> 00:21:42,380 Fremragende. 474 00:21:42,380 --> 00:21:43,261 Ja? 475 00:21:43,261 --> 00:21:44,163 >> Pick up kniv. 476 00:21:44,163 --> 00:21:46,380 477 00:21:46,380 --> 00:21:47,630 David J. MALAN: Saml kniv. 478 00:21:47,630 --> 00:21:52,320 479 00:21:52,320 --> 00:21:53,631 OK, trin seks. 480 00:21:53,631 --> 00:21:54,130 Ja? 481 00:21:54,130 --> 00:21:56,237 >> PUBLIKUM: Hold kniven i håndtaget. 482 00:21:56,237 --> 00:21:57,945 David J. MALAN: Hold kniv ved håndtaget. 483 00:21:57,945 --> 00:22:00,710 484 00:22:00,710 --> 00:22:03,230 Hold kniven i håndtaget. 485 00:22:03,230 --> 00:22:04,880 Trin syv. 486 00:22:04,880 --> 00:22:05,692 Ja? 487 00:22:05,692 --> 00:22:10,030 >> Publikum: [uhørligt] kniv i peanut smør og så lidt ud [uhørligt]. 488 00:22:10,030 --> 00:22:13,070 >> David J. MALAN: Sæt kniv in-- jeg hørt "sætte kniv i jordnøddesmør 489 00:22:13,070 --> 00:22:19,500 og tage så lidt ud som muligt. " 490 00:22:19,500 --> 00:22:22,480 Af den måde, skal du fjerne papiret først. 491 00:22:22,480 --> 00:22:29,320 492 00:22:29,320 --> 00:22:31,890 Okay, trin ni. 493 00:22:31,890 --> 00:22:34,910 Trin ni. 494 00:22:34,910 --> 00:22:35,624 Trin ni. 495 00:22:35,624 --> 00:22:37,290 Vi har faktisk ikke lavet en sandwich endnu. 496 00:22:37,290 --> 00:22:37,790 Ja? 497 00:22:37,790 --> 00:22:41,570 PUBLIKUM: Brug kniv i jordnøddesmør, anvende jordnøddesmør på nævnte brød. 498 00:22:41,570 --> 00:22:47,440 >> David J. MALAN: Brug kniv i jordnøddesmør, anvende jordnøddesmør på 499 00:22:47,440 --> 00:22:48,736 sagde brød. 500 00:22:48,736 --> 00:22:56,030 >> [Audience LAUGHING] 501 00:22:56,030 --> 00:22:59,480 David J. MALAN: Okay trin 10. 502 00:22:59,480 --> 00:23:01,762 Trin 10. 503 00:23:01,762 --> 00:23:02,750 Ja? 504 00:23:02,750 --> 00:23:05,220 >> Publikum: Smag peanut smør for at sikre kvaliteten. 505 00:23:05,220 --> 00:23:15,960 >> [Audience LAUGHING] 506 00:23:15,960 --> 00:23:16,960 David J. MALAN: Trin 11. 507 00:23:16,960 --> 00:23:19,500 508 00:23:19,500 --> 00:23:21,340 Trin 11. 509 00:23:21,340 --> 00:23:22,101 Trin 11. 510 00:23:22,101 --> 00:23:22,600 Kom. 511 00:23:22,600 --> 00:23:23,099 Ja? 512 00:23:23,099 --> 00:23:24,208 Lige der. 513 00:23:24,208 --> 00:23:25,840 >> Publikum: afhente gelé forsigtigt. 514 00:23:25,840 --> 00:23:28,220 >> David J. MALAN: afhente gelé forsigtigt. 515 00:23:28,220 --> 00:23:29,970 OK, og derefter en anden hånd var op. 516 00:23:29,970 --> 00:23:32,812 517 00:23:32,812 --> 00:23:33,520 Lige bag dig. 518 00:23:33,520 --> 00:23:35,761 Ja, i blåt. 519 00:23:35,761 --> 00:23:40,671 >> PUBLIKUM: Okay, fjerne låget fra [uhørligt], ja, 520 00:23:40,671 --> 00:23:42,635 Fjern låget fra gelé. 521 00:23:42,635 --> 00:23:43,617 >> [Audience LAUGHING] 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 >> [Audience LAUGHING] 525 00:23:48,967 --> 00:23:49,800 David J. MALAN Og? 526 00:23:49,800 --> 00:23:52,490 Publikum: Og næppe feje enhver [uhørligt]. 527 00:23:52,490 --> 00:23:59,536 [Audience LAUGHING] 528 00:23:59,536 --> 00:24:04,456 PUBLIKUM: Selvfølgelig, før [uhørligt] 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 Trin 14. 531 00:24:08,229 --> 00:24:09,020 Vi er der næsten. 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 falder ud. 534 00:24:12,600 --> 00:24:16,515 >> David J. MALAN: Invert gelé flasken før gelé falder ud. 535 00:24:16,515 --> 00:24:19,070 536 00:24:19,070 --> 00:24:19,890 Trin 15. 537 00:24:19,890 --> 00:24:21,130 >> Publikum: Sæt hætten. 538 00:24:21,130 --> 00:24:22,463 >> David J. MALAN: Sæt hætten. 539 00:24:22,463 --> 00:24:25,880 540 00:24:25,880 --> 00:24:28,190 Trin 16. 541 00:24:28,190 --> 00:24:28,931 Ja? 542 00:24:28,931 --> 00:24:29,806 >> Publikum: [uhørligt] 543 00:24:29,806 --> 00:24:34,109 544 00:24:34,109 --> 00:24:35,400 David J. MALAN: Sig det igen. 545 00:24:35,400 --> 00:24:38,100 PUBLIKUM: Tag hætten af ​​din gelé. 546 00:24:38,100 --> 00:24:39,650 David J. MALAN: Fra din gelé. 547 00:24:39,650 --> 00:24:43,720 548 00:24:43,720 --> 00:24:49,510 Så virkelig-- Ups. 549 00:24:49,510 --> 00:24:50,420 Kom. 550 00:24:50,420 --> 00:24:51,740 Sæt hætten. 551 00:24:51,740 --> 00:24:56,660 Put cap-- Du sagde Fjern hætten fra gelé. 552 00:24:56,660 --> 00:24:58,950 Føle, at vi er i lidt af en løkke. 553 00:24:58,950 --> 00:24:59,640 Trin 17. 554 00:24:59,640 --> 00:25:00,398 Ja? 555 00:25:00,398 --> 00:25:02,639 >> Publikum: [uhørligt] 556 00:25:02,639 --> 00:25:03,930 David J. MALAN: Sig det igen. 557 00:25:03,930 --> 00:25:05,150 Publikum: [uhørligt] 558 00:25:05,150 --> 00:25:07,835 David J. MALAN: Gå tilbage step-- 559 00:25:07,835 --> 00:25:10,110 Publikum: [uhørligt] 560 00:25:10,110 --> 00:25:13,760 David J. MALAN: Fjern hætten fra jordnøddesmør. 561 00:25:13,760 --> 00:25:14,492 Ja? 562 00:25:14,492 --> 00:25:16,430 >> Publikum: Drop alle de gelé på brødet. 563 00:25:16,430 --> 00:25:19,040 >> David J. MALAN: Drop 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 der næsten. 566 00:25:26,830 --> 00:25:27,800 Trin 19. 567 00:25:27,800 --> 00:25:30,250 >> Publikum: Fjern overskydende gelé. 568 00:25:30,250 --> 00:25:31,720 >> David J. MALAN: Haha, gelé. 569 00:25:31,720 --> 00:25:36,615 >> [Applaus] 570 00:25:36,615 --> 00:25:39,240 David J. MALAN: Hvorfor ikke we-- endnu et skridt til at tage dette hjem. 571 00:25:39,240 --> 00:25:41,720 Et skridt til og derefter vi vil tjene sandwich. 572 00:25:41,720 --> 00:25:42,900 Ja? 573 00:25:42,900 --> 00:25:45,570 >> Publikum: [uhørligt] 574 00:25:45,570 --> 00:25:50,704 >> David J. MALAN: Mens enhver sandwich remains-- lad os led denne-- spise. 575 00:25:50,704 --> 00:25:56,400 >> [Latter] 576 00:25:56,400 --> 00:26:00,395 >> David J. MALAN: Okay, tak dig til vores frivillige her. 577 00:26:00,395 --> 00:26:06,150 >> [Applaus} 578 00:26:06,150 --> 00:26:08,940 >> David J. MALAN: Vi har nogle nice afsked gaver til hver af jer. 579 00:26:08,940 --> 00:26:14,350 Din egen jordnøddesmør, gelé, og brød til at tage med hjem. 580 00:26:14,350 --> 00:26:15,774 Tak. 581 00:26:15,774 --> 00:26:17,118 >> Kiersten: Tak. 582 00:26:17,118 --> 00:26:18,618 David J. MALAN: [uhørligt] velkommen. 583 00:26:18,618 --> 00:26:21,849 [Applaus] 584 00:26:21,849 --> 00:26:24,390 David J. MALAN: Så det er af selvfølgelig en latterlig eksempel. 585 00:26:24,390 --> 00:26:24,890 Right? 586 00:26:24,890 --> 00:26:28,890 Men det betyder slags afsløre, hvordan vi mennesker bare tage klarhed for givet. 587 00:26:28,890 --> 00:26:30,890 Og det faktum, jeg har været taler med et andet menneske, 588 00:26:30,890 --> 00:26:33,300 han eller hun bare ved, hvad du mener. 589 00:26:33,300 --> 00:26:35,220 >> Computere vil ikke at vide, hvad du mener, 590 00:26:35,220 --> 00:26:37,430 selv når du bruger, som vi er ved at gøre i dag, 591 00:26:37,430 --> 00:26:42,300 programmering noget i Scratch, et træk og slip, brik stil sprog. 592 00:26:42,300 --> 00:26:44,310 Selv designet til unge børn, har du 593 00:26:44,310 --> 00:26:48,726 at være så eksplicit og så bogstavelig med hvad du ønsker dit program til at gøre. 594 00:26:48,726 --> 00:26:50,600 Nu i sidste ende er vi vil være programmering 595 00:26:50,600 --> 00:26:53,550 ikke i pseudokode kode, Engelsk syntaks, 596 00:26:53,550 --> 00:26:56,370 men kode eller mere korrekt, kildekode. 597 00:26:56,370 --> 00:26:59,260 Kildekoden er bare fancy måde til beskrivelse af kode, du rent faktisk 598 00:26:59,260 --> 00:27:01,730 skrive med et tastatur, der er ikke på engelsk per se. 599 00:27:01,730 --> 00:27:06,480 Det er i C eller Java eller C ++ eller noget som det, som vi vil snart se. 600 00:27:06,480 --> 00:27:09,510 >> Og i virkeligheden, bare for at skræmme en få af jer, ved første øjekast, 601 00:27:09,510 --> 00:27:13,769 dette er et program skrevet i et sprog kaldet C. Men at un-skræmme nogle få af jer, 602 00:27:13,769 --> 00:27:15,560 du vil helt forstå, hvad der foregår 603 00:27:15,560 --> 00:27:18,980 på kommer næste mandag, når det kommer til noget som dette. 604 00:27:18,980 --> 00:27:20,510 Ærligt, det er en ældre sprog. 605 00:27:20,510 --> 00:27:22,430 Det er temmelig mystisk, men det er repræsentativt 606 00:27:22,430 --> 00:27:26,120 af mange sprog disse dage, har masser af parenteser og krøllet 607 00:27:26,120 --> 00:27:28,630 seler og anførselstegn og semikoloner. 608 00:27:28,630 --> 00:27:30,780 Og en masse af dette syntaktisk ting, der ikke er 609 00:27:30,780 --> 00:27:32,450 overhovedet intellektuelt interessant. 610 00:27:32,450 --> 00:27:35,790 Faktisk er det en total distraktion fra de meget enkle idéer 611 00:27:35,790 --> 00:27:37,370 der stirrer os i ansigtet. 612 00:27:37,370 --> 00:27:41,760 Dette program, som du måske bare gætte, udskriver til en anden persons computer skærm 613 00:27:41,760 --> 00:27:44,070 ordene "Hej 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, at der er en masse ting, der er 616 00:27:46,580 --> 00:27:48,970 komme i vejen for nogle nærliggende der, 617 00:27:48,970 --> 00:27:52,490 men det vil meget hurtigt glide væk og være helt intuitivt. 618 00:27:52,490 --> 00:27:55,617 >> Faktisk hvad vi vil gøre dag destillere dette forholdsvis kompleks 619 00:27:55,617 --> 00:27:58,950 søger program, som igen kommer du at forstå hurtigt, men noget 620 00:27:58,950 --> 00:27:59,710 meget enklere. 621 00:27:59,710 --> 00:28:01,640 Lad os bare sige, hvad vi mener. 622 00:28:01,640 --> 00:28:05,590 Lad os tegne et billede af, hvad vi mener, ved hjælp af disse puslespilsbrikker her. 623 00:28:05,590 --> 00:28:09,110 >> Så dette er et programmeringssprog sprog er kendt som Scratch. 624 00:28:09,110 --> 00:28:11,080 Den blev udviklet af MIT Media Lab. 625 00:28:11,080 --> 00:28:14,830 Og hvad du vil se i problem sæt nul, som vil blive frigivet senere i aften, 626 00:28:14,830 --> 00:28:18,980 vi får du går til denne URL her scratch.mit.edu. 627 00:28:18,980 --> 00:28:20,940 Og de har en web baseret interface via hvilket 628 00:28:20,940 --> 00:28:22,540 vil du skrive dit første program. 629 00:28:22,540 --> 00:28:25,330 Eller dem af jer med forudgående erfaring, dine andet programmer, 630 00:28:25,330 --> 00:28:28,090 men i et miljø, der er sandsynligvis lidt uvant, og at 631 00:28:28,090 --> 00:28:32,930 vil presse dig til at skabe noget ved hjælp af denne meget visuelle miljø. 632 00:28:32,930 --> 00:28:35,940 >> Nu, hvad jeg har tænkt mig at gøre her er åbne selve programmet. 633 00:28:35,940 --> 00:28:41,911 Den eksisterer ikke kun som en webbrowser, men også som en downloades program 634 00:28:41,911 --> 00:28:44,660 så at du rent faktisk kan bruge det hvis du ikke har adgang til internettet. 635 00:28:44,660 --> 00:28:46,743 Og jeg har tænkt mig at gøre det i her, i Sanders, bare 636 00:28:46,743 --> 00:28:49,580 i tilfælde af Wi-Fi ikke samarbejde super godt. 637 00:28:49,580 --> 00:28:52,640 Og hvad jeg har tænkt mig at gøre, er punkt ud et par funktioner i dette program. 638 00:28:52,640 --> 00:28:55,720 Så for at være klar, jeg har bare dobbeltklikke klikkede på ikonet på mit skrivebord, 639 00:28:55,720 --> 00:28:59,830 eller ækvivalent gået til scratch.mit.edu, og det er trukket op dette vindue. 640 00:28:59,830 --> 00:29:01,650 Dette er et programmeringsmiljø. 641 00:29:01,650 --> 00:29:04,110 Det er et stykke software, nogle af vores venner på MIT 642 00:29:04,110 --> 00:29:08,850 skrev, at lad os os, og du skriver programmer i et sprog kaldet Scratch. 643 00:29:08,850 --> 00:29:12,010 >> Nu er dette sker for at være en kat, der er også opkaldt Scratch 644 00:29:12,010 --> 00:29:13,890 og dette er hans verden, han lever. 645 00:29:13,890 --> 00:29:17,175 Det er den fase, så at sige, at rektangel i øverste venstre hjørne. 646 00:29:17,175 --> 00:29:18,800 Og han behøver ikke at ligne en kat. 647 00:29:18,800 --> 00:29:20,591 Du kan få ham til at se gerne noget, og du 648 00:29:20,591 --> 00:29:23,700 kan have mange sådanne sprites, eller tegn, i et program. 649 00:29:23,700 --> 00:29:27,450 I mellemtiden, her på den langt ret, er en stor blank tavle. 650 00:29:27,450 --> 00:29:30,260 Og det er her, i et øjeblik, vi kommer til at starte programmering 651 00:29:30,260 --> 00:29:32,750 ved at trække og slippe disse grafisk puslespil 652 00:29:32,750 --> 00:29:35,300 stykker, der er ret her i midten. 653 00:29:35,300 --> 00:29:38,140 Og der er langt mere af dem, end vi vil bruge tid på her i klassen 654 00:29:38,140 --> 00:29:40,080 fordi du opdage, at de er alle temmelig intuitiv. 655 00:29:40,080 --> 00:29:41,788 Igen, det er konstrueret for børn, men vi 656 00:29:41,788 --> 00:29:45,759 bruge den til at drille hinanden nogle af dem grundlæggende ideer om variabler, loops, 657 00:29:45,759 --> 00:29:48,050 betingelser, og snart tingene lignende funktioner og begivenheder 658 00:29:48,050 --> 00:29:51,810 og tråde og andre fancy ting, vi vil komme til inden længe til rent faktisk at skabe 659 00:29:51,810 --> 00:29:53,840 noget fra bunden. 660 00:29:53,840 --> 00:29:54,810 Pun intended. 661 00:29:54,810 --> 00:29:58,740 >> Nu, hvad jeg har tænkt mig at gøre her, er klik på ikke bevægelse, men kontrol. 662 00:29:58,740 --> 00:30:01,400 Og dette er blot en kategorisering af her-- 663 00:30:01,400 --> 00:30:03,150 og jeg kan se en anden farve sæt af blokke. 664 00:30:03,150 --> 00:30:05,030 Men bemærke et par velkendte ord. 665 00:30:05,030 --> 00:30:07,830 "Hvis" og "else if" og "gentagelse". 666 00:30:07,830 --> 00:30:10,440 Og du kan sikkert gætte Det er minder om den filial, 667 00:30:10,440 --> 00:30:12,870 eller de betingelser, vi har set, og selv en dublering konstruktionen. 668 00:30:12,870 --> 00:30:14,760 Så vi har tilsvarende blokke her. 669 00:30:14,760 --> 00:30:16,720 Men det mest interessante en er denne ene her. 670 00:30:16,720 --> 00:30:20,690 Når denne grønne flag er klikket, dette, for dem med forudgående programmering 671 00:30:20,690 --> 00:30:23,110 erfaring, er ækvivalent en hovedfunktion. 672 00:30:23,110 --> 00:30:25,300 Men for dem ukendte, dette er brik 673 00:30:25,300 --> 00:30:27,320 der vil kickstarte hele vores program. 674 00:30:27,320 --> 00:30:31,350 Det betyder bogstaveligt, når jeg går i denne program, og klik på en grøn flag-- 675 00:30:31,350 --> 00:30:35,560 som du kan se her i øverste venstre hjørne af UI, 676 00:30:35,560 --> 00:30:38,570 så se det grønne flag siden af ​​den røde stopskilt? 677 00:30:38,570 --> 00:30:41,475 Når jeg klikker det, min Programmet vil køre. 678 00:30:41,475 --> 00:30:43,850 Nu, jeg har tænkt mig at gøre noget super enkel med Scratch. 679 00:30:43,850 --> 00:30:46,640 Jeg har tænkt mig at gå videre og gå til panelet udseende 680 00:30:46,640 --> 00:30:50,010 her, hvor jeg har en masse lilla puslespilsbrikker, 681 00:30:50,010 --> 00:30:53,887 og jeg har tænkt mig at gå videre og gøre noget super enkel lignende, siger. 682 00:30:53,887 --> 00:30:55,720 Og then-- varsel dette tekst i den hvide boks 683 00:30:55,720 --> 00:30:59,290 er editable-- jeg har tænkt mig at sige "Hej verden", ligesom vi 684 00:30:59,290 --> 00:31:01,470 gjorde i at tekstmæssige udgave for et øjeblik siden. 685 00:31:01,470 --> 00:31:05,920 Og nu hvis jeg går og klik på denne grønt flag, jeg har nu programmeret. 686 00:31:05,920 --> 00:31:07,810 Det er ikke en særlig interessant program, 687 00:31:07,810 --> 00:31:09,760 men jeg gjorde computeren gøre noget. 688 00:31:09,760 --> 00:31:13,120 Jeg startede et program, og det gjorde, hvad jeg fortalte det til at gøre. 689 00:31:13,120 --> 00:31:16,170 Nu kan jeg fortsætte med at trække og slippe flere og flere af disse puslespilsbrikker 690 00:31:16,170 --> 00:31:19,220 og de kommer til at låse, men Lad os smide nogle terminologi på her 691 00:31:19,220 --> 00:31:21,680 at vi vil se tilbagevendende hele kurset, 692 00:31:21,680 --> 00:31:24,610 og virkelig hele datalogi og programmering mere generelt. 693 00:31:24,610 --> 00:31:27,990 >> Denne "siger" blok, i lilla, lad os bare begynde at kalde en erklæring. 694 00:31:27,990 --> 00:31:29,240 Det er ligesom en kendsgerning. 695 00:31:29,240 --> 00:31:30,380 Gør dette. 696 00:31:30,380 --> 00:31:32,590 Så det er en kategori af instruktioner, som du 697 00:31:32,590 --> 00:31:36,760 kunne fodre en computer som en del af et program eller en algoritme. 698 00:31:36,760 --> 00:31:39,270 Og for at være klar, du har sandsynligvis taget for givet 699 00:31:39,270 --> 00:31:41,930 at du har programmer på din computer. 700 00:31:41,930 --> 00:31:45,850 Og de er slags algoritmer, men en program er virkelig en flok af algoritmer 701 00:31:45,850 --> 00:31:47,160 at nogle mennesker skrev. 702 00:31:47,160 --> 00:31:49,040 De pakkede den op og de solgte det så dig, 703 00:31:49,040 --> 00:31:51,330 eller de lagt ud på en hjemmeside for dig at downloade. 704 00:31:51,330 --> 00:31:54,930 Så et program er blot en hel masse nuller og ettaller 705 00:31:54,930 --> 00:31:56,970 at en eller anden måde, mennesket skabte. 706 00:31:56,970 --> 00:32:00,080 Og de mønstre af nuller og dem repræsenterer ting, i sidste ende, 707 00:32:00,080 --> 00:32:04,030 ligesom "sige hej verden" eller "play denne musik "eller" afspille denne video " 708 00:32:04,030 --> 00:32:05,129 eller "Send en e-mail." 709 00:32:05,129 --> 00:32:06,920 Men vi kommer tilbage i måde mere detaljeret, hvad 710 00:32:06,920 --> 00:32:08,780 et program, når du, dig selv, skriv dem. 711 00:32:08,780 --> 00:32:11,320 >> Her er en anden statement-- "Vent et sekund." 712 00:32:11,320 --> 00:32:14,330 Jeg ikke bruge det endnu, men hvis jeg vil mit program til at stoppe op et øjeblik 713 00:32:14,330 --> 00:32:16,540 at gøre noget, kan jeg fortælle det til at gøre det. 714 00:32:16,540 --> 00:32:18,450 Vent et sekund. 715 00:32:18,450 --> 00:32:20,150 Nu en anden kunne være "afspille lyd." 716 00:32:20,150 --> 00:32:23,270 Så dette er enestående til bunden, det har evnen til at spille lyde. 717 00:32:23,270 --> 00:32:26,130 Så en erklæring jeg måske brug er, her, "afspille lyd." 718 00:32:26,130 --> 00:32:29,530 I mellemtiden Boolsk udtryk, så dette er en amatør ord 719 00:32:29,530 --> 00:32:34,490 opkaldt efter bare en fyr ved navn Mr. Bool, og det handler om et spørgsmål. 720 00:32:34,490 --> 00:32:37,470 Sandt eller false-- er musen ned? 721 00:32:37,470 --> 00:32:41,100 Et Boolesk udtryk er bare nogle udtryk på engelsk 722 00:32:41,100 --> 00:32:42,860 der er enten sande eller falske. 723 00:32:42,860 --> 00:32:44,140 Enten til eller fra. 724 00:32:44,140 --> 00:32:45,130 Enten den ene eller nul. 725 00:32:45,130 --> 00:32:46,960 Du kan tænke på det i en række forskellige måder, 726 00:32:46,960 --> 00:32:49,220 men det er enten sand eller denne falske, i sidste ende. 727 00:32:49,220 --> 00:32:52,540 Så "mus ned spørgsmålstegn," det ville være en boolsk udtryk. 728 00:32:52,540 --> 00:32:54,300 Og du kan tænke på andre, måske. 729 00:32:54,300 --> 00:32:57,510 For eksempel "er venstre antal mindre end det rigtige nummer? " 730 00:32:57,510 --> 00:32:59,410 Det ville også være et boolsk udtryk. 731 00:32:59,410 --> 00:33:01,540 "Mindre end" er en Boolsk udtryk. 732 00:33:01,540 --> 00:33:03,280 >> Denne ene, også, "rørende musemarkøren." 733 00:33:03,280 --> 00:33:05,196 Jeg er ikke sikker på, hvorfor de kaldte det musemarkøren. 734 00:33:05,196 --> 00:33:08,430 Det betyder blot, er markøren, er det pil på skærmen, rører ved katten, 735 00:33:08,430 --> 00:33:09,022 for eksempel. 736 00:33:09,022 --> 00:33:10,480 Eller en anden aspekt af skærmen. 737 00:33:10,480 --> 00:33:13,710 Og det er et spørgsmål, igen, og , der betegner et boolsk udtryk. 738 00:33:13,710 --> 00:33:17,130 Noget, som du måske ønsker at bruge i en tilstand. 739 00:33:17,130 --> 00:33:19,100 Så vi vil komme til at på bare et øjeblik. 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 at kontrollere, om dette er tilfældet, og det er tilfældet, 742 00:33:23,099 --> 00:33:25,580 du kan bruge en "og" blok som denne. 743 00:33:25,580 --> 00:33:26,850 Og her er denne betingelse. 744 00:33:26,850 --> 00:33:31,290 Bemærk formen af ​​den lille åbning i toppen af ​​denne gule brik, 745 00:33:31,290 --> 00:33:34,480 det minder om formen at vi lige så et øjeblik siden. 746 00:33:34,480 --> 00:33:37,920 Hver af disse boolske udtryk har disse spidse kanter 747 00:33:37,920 --> 00:33:39,030 til venstre og højre. 748 00:33:39,030 --> 00:33:43,140 Og det er fordi MIT folk besluttet at ved visuelt transportelementer former, 749 00:33:43,140 --> 00:33:45,780 du kan slags hjælpe mennesker, studerende og børn både, 750 00:33:45,780 --> 00:33:47,650 at slags udfylde de tomme felter bogstaveligt. 751 00:33:47,650 --> 00:33:49,780 >> Nu puzzle-- at åbning er lidt lille, 752 00:33:49,780 --> 00:33:52,750 og som vi vil se i programmet, i Scratch, vil det vokse til at passe. 753 00:33:52,750 --> 00:33:54,830 Det vil bevare sin form, i sidste ende. 754 00:33:54,830 --> 00:33:58,350 Så en betingelse lader dig bestemme "Skal jeg gøre noget eller ikke?" 755 00:33:58,350 --> 00:34:00,470 En Boolesk udtryk er den aktuelle spørgsmål 756 00:34:00,470 --> 00:34:04,100 du bruger til at afgøre går jeg til Venstre eller skal jeg gå til højre 757 00:34:04,100 --> 00:34:06,710 når jeg støder på dette såkaldt gaffel i vejen? 758 00:34:06,710 --> 00:34:07,980 Du kan have to grene. 759 00:34:07,980 --> 00:34:10,909 Hvis noget er sandt, gøre dette, ellers gå den vej, 760 00:34:10,909 --> 00:34:14,590 eller du kan bare ikke gøre noget ved alle, da denne blok stiltiende. 761 00:34:14,590 --> 00:34:16,360 Ligeledes kan vi rede disse ting. 762 00:34:16,360 --> 00:34:20,204 Så hvis du ønsker at tredoble gaffel i vej, enten gøre dette eller dette eller hint, 763 00:34:20,204 --> 00:34:21,870 du kan bare indlejre disse ting sammen. 764 00:34:21,870 --> 00:34:24,520 Og det begynder at blive lidt grim, i sidste ende, for sikker, 765 00:34:24,520 --> 00:34:26,120 men logikken er stadig det samme. 766 00:34:26,120 --> 00:34:28,000 Du kan bogstaveligt talt læse denne top til bund 767 00:34:28,000 --> 00:34:33,290 og det siger hvad det means-- hvis dette er sandt, at gøre dette, ellers hvis ellers. 768 00:34:33,290 --> 00:34:36,179 >> En løkke bliver ikke enklere i Scratch. 769 00:34:36,179 --> 00:34:37,422 Forever du gøre følgende. 770 00:34:37,422 --> 00:34:39,880 Nu kan du måske ikke tror, ​​du kan gøre meget, fordi der ikke er 771 00:34:39,880 --> 00:34:42,839 meget plads mellem den øverste og bunden af ​​denne brik åbning. 772 00:34:42,839 --> 00:34:45,671 Men du vil se Scratch kommer til at vokse til at passe så mange puslespilsbrikker 773 00:34:45,671 --> 00:34:47,060 som du ønsker at proppe derinde. 774 00:34:47,060 --> 00:34:48,960 En anden løkke kan være udtrykt med gentagelser. 775 00:34:48,960 --> 00:34:51,590 Hvis du kender i forvejen, "Jeg ønsker at gøre noget 10 gange, " 776 00:34:51,590 --> 00:34:54,010 du kan bare fortælle Scratch at gøre noget 10 gange. 777 00:34:54,010 --> 00:34:57,260 Og i mellemtiden kan vi have variabler. 778 00:34:57,260 --> 00:34:59,572 Så her er en vilkårlig, det orange i dette tilfælde 779 00:34:59,572 --> 00:35:00,780 og dette er en hurtig rundvisning. 780 00:35:00,780 --> 00:35:04,540 Igen, vil du finde dette meget tilgængelige når du begynder at pege og klikke. 781 00:35:04,540 --> 00:35:07,930 Jeg har opkaldt min variabel n, men jeg kunne have kaldt det noget jeg vil, 782 00:35:07,930 --> 00:35:11,280 og jeg sætte den her, i denne vilkårlige eksempel til nul. 783 00:35:11,280 --> 00:35:14,250 >> Nu ser et program ligesom goddag verden er ikke så overbevisende, 784 00:35:14,250 --> 00:35:17,900 så lad os faktisk åbne noget at en tidligere elev lavet. 785 00:35:17,900 --> 00:35:23,100 Lad mig gå videre og åbne op, for eksempel denne her, 786 00:35:23,100 --> 00:35:26,780 som jeg ville elske at have en frivillig. 787 00:35:26,780 --> 00:35:28,450 Okay, hvordan om-- lad os gå videre. 788 00:35:28,450 --> 00:35:29,240 Ja, kom op. 789 00:35:29,240 --> 00:35:30,056 Hvad er dit navn? 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 op. 792 00:35:32,010 --> 00:35:35,930 Så har du nogensinde spillet dette spil før? 793 00:35:35,930 --> 00:35:36,430 ABBY: Nej 794 00:35:36,430 --> 00:35:37,370 David J. MALAN: Okay. 795 00:35:37,370 --> 00:35:38,380 David, rart at møde dig. 796 00:35:38,380 --> 00:35:39,620 Kom forbi. 797 00:35:39,620 --> 00:35:42,300 Og hvad er din programmering baggrund, hvis nogen. 798 00:35:42,300 --> 00:35:43,914 >> ABBY: Jeg har lært nogle C ++. 799 00:35:43,914 --> 00:35:45,580 David J. MALAN: Du har lært nogle C ++. 800 00:35:45,580 --> 00:35:48,382 Og hvad er dit spil spille baggrund? 801 00:35:48,382 --> 00:35:49,505 >> ABBY: Ikke en masse. 802 00:35:49,505 --> 00:35:51,130 David J. MALAN: OK, så tager vi det. 803 00:35:51,130 --> 00:35:52,700 Så her er, hvordan spillet kommer til at fungere. 804 00:35:52,700 --> 00:35:54,510 Jeg har tænkt mig at gå videre og klikke på den grønne flag, der 805 00:35:54,510 --> 00:35:55,830 er op her øverst til højre. 806 00:35:55,830 --> 00:35:59,710 Nu er din forgænger i klassen har givet dig nogle instruktioner her. 807 00:35:59,710 --> 00:36:02,306 Og på bare et øjeblik, det siger "plads til at begynde." 808 00:36:02,306 --> 00:36:03,680 Så gå videre og ramte mellemrumstasten. 809 00:36:03,680 --> 00:36:05,507 >> Computerspil: Pikachu. 810 00:36:05,507 --> 00:36:08,340 David J. MALAN: Og målet er at fange fødevarer, som afbildet der 811 00:36:08,340 --> 00:36:09,320 til venstre. 812 00:36:09,320 --> 00:36:11,388 Og til [uhørligt] 813 00:36:11,388 --> 00:36:15,356 >> [Spil musik spiller] 814 00:36:15,356 --> 00:36:27,280 815 00:36:27,280 --> 00:36:29,610 >> David J. MALAN: Aww, godt, Tak for at spille. 816 00:36:29,610 --> 00:36:32,800 Vi har her en lille afsked gave til dig. 817 00:36:32,800 --> 00:36:35,574 Vi har CS50 stress bold, Hvis du gerne vil vælge. 818 00:36:35,574 --> 00:36:36,820 Okay, godt at møde dig. 819 00:36:36,820 --> 00:36:39,680 Tak fordi I kom og udfordrende. 820 00:36:39,680 --> 00:36:42,410 821 00:36:42,410 --> 00:36:46,910 Så vi har mere stress bolde, så lad os gøre endnu et eksempel at motivere. 822 00:36:46,910 --> 00:36:48,150 En frivillig? 823 00:36:48,150 --> 00:36:50,510 Okay, hvad med lige her foran. 824 00:36:50,510 --> 00:36:51,250 Hvad er dit navn? 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 op, Phillip. 828 00:36:54,530 --> 00:36:57,340 Så er Phillip vil være udfordret med et andet spil 829 00:36:57,340 --> 00:37:00,840 at en af ​​dine forgængere skrev som en del af problemet sæt nul, 830 00:37:00,840 --> 00:37:03,510 kaldet Ivy sværeste spil. 831 00:37:03,510 --> 00:37:05,980 Og vi vil se på blot et øjeblik, hvad der menes med dette. 832 00:37:05,980 --> 00:37:07,400 Phillip, rart at møde dig. 833 00:37:07,400 --> 00:37:09,060 Hvad er din baggrund? 834 00:37:09,060 --> 00:37:10,310 PHILLIP: gjort en masse kodning. 835 00:37:10,310 --> 00:37:11,110 Gjort lidt gaming, også. 836 00:37:11,110 --> 00:37:11,570 >> David J. MALAN: OK. 837 00:37:11,570 --> 00:37:12,620 Fik en masse spil, også. 838 00:37:12,620 --> 00:37:14,230 Og har du spillet dette spil før? 839 00:37:14,230 --> 00:37:14,730 >> PHILLIP: Nej 840 00:37:14,730 --> 00:37:16,438 David J. MALAN: Alle højre, så here we go. 841 00:37:16,438 --> 00:37:18,434 Jeg har tænkt mig at gå videre og klik på det grønne flag. 842 00:37:18,434 --> 00:37:24,160 >> [Game Music] 843 00:37:24,160 --> 00:37:27,770 >> [MUSIC MC Hammer, "U kan ikke røre dette"] 844 00:37:27,770 --> 00:38:39,790 845 00:38:39,790 --> 00:38:41,635 >> PHILLIP: [uhørligt] 846 00:38:41,635 --> 00:38:42,760 David J. MALAN: [uhørligt] 847 00:38:42,760 --> 00:38:44,740 PHILLIP: [uhørligt] 848 00:38:44,740 --> 00:38:49,056 [LAUGHING] 849 00:38:49,056 --> 00:38:50,680 [MUSIC MC Hammer, "U kan ikke røre dette"] 850 00:38:50,680 --> 00:38:52,660 David J. MALAN: [uhørligt] Pløje igennem det. 851 00:38:52,660 --> 00:38:54,094 PHILLIP: [uhørligt] 852 00:38:54,094 --> 00:38:55,135 David J. MALAN: Værsgo. 853 00:38:55,135 --> 00:39:01,570 [MUSIC MC Hammer, "U kan ikke røre dette"] 854 00:39:01,570 --> 00:39:15,832 855 00:39:15,832 --> 00:39:16,915 David J. MALAN: Okay. 856 00:39:16,915 --> 00:39:18,400 Tillykke med det. 857 00:39:18,400 --> 00:39:25,150 >> [Applaus] 858 00:39:25,150 --> 00:39:27,330 >> David J. MALAN: Vi vil indlæg, at online senere, så 859 00:39:27,330 --> 00:39:29,820 at du kan trække tiden ud med det så godt. 860 00:39:29,820 --> 00:39:32,550 Princeton kommer op næste, efter at. 861 00:39:32,550 --> 00:39:35,470 >> Så lad os nu faktisk fortsætte at starte fra bunden, 862 00:39:35,470 --> 00:39:39,310 så at sige, og faktisk opbygge indtil vi kan drille hinanden nogle af disse ideer 863 00:39:39,310 --> 00:39:41,970 og komme til noget endnu mere kompleks ved udgangen. 864 00:39:41,970 --> 00:39:45,240 Jeg har tænkt mig at gå over her, og jeg har tænkt mig at gå videre og oprette en ny fil. 865 00:39:45,240 --> 00:39:47,460 Så igen, vil problemet sæt gang dig igennem nogle af disse trin. 866 00:39:47,460 --> 00:39:49,300 Men, var alt, hvad jeg gik til menuen Filer, og jeg 867 00:39:49,300 --> 00:39:52,760 sagde "ny", så meget som Microsoft Word, eller et program som dette. 868 00:39:52,760 --> 00:39:56,630 >> Og lad os gå videre nu-- og vi implementeret "Hej verden" for et øjeblik siden, 869 00:39:56,630 --> 00:39:58,410 men lad os gøre noget lidt mere nuttet. 870 00:39:58,410 --> 00:40:00,150 Jeg har tænkt mig at gå op til arrangementer. 871 00:40:00,150 --> 00:40:02,350 Og jeg har tænkt mig at gøre ", når grønt flag klikket på. " 872 00:40:02,350 --> 00:40:05,830 Og så jeg har tænkt mig at bruge, skal vi sige, en filial. 873 00:40:05,830 --> 00:40:07,610 Så jeg har tænkt mig at bruge en "hvis" betingelse. 874 00:40:07,610 --> 00:40:10,940 Og bemærk, hvordan så snart jeg kommer tæt til det, den ønsker at snap sammen. 875 00:40:10,940 --> 00:40:13,020 Så jeg slip og den klikker sammen. 876 00:40:13,020 --> 00:40:15,150 Og nu kan jeg gøre noget interessant. 877 00:40:15,150 --> 00:40:19,150 Hvis jeg rulle igennem her, vil jeg at se en hel masse af blokke. 878 00:40:19,150 --> 00:40:22,620 Hvis jeg går til "data" - Lad mig zoome in-- der er noget om variabler. 879 00:40:22,620 --> 00:40:26,160 Hvis jeg går til "bevægelse", kan du tilsyneladende vende tingene rundt. 880 00:40:26,160 --> 00:40:28,760 Hvis jeg går til "operatører" - Åh, det er interessant, 881 00:40:28,760 --> 00:40:31,000 Jeg kan vælge et tilfældigt tal. 882 00:40:31,000 --> 00:40:34,119 Så lad mig gøre noget med kun vis sandsynlighed, bare fordi. 883 00:40:34,119 --> 00:40:36,160 Jeg har tænkt mig at gå videre og trække denne brik, 884 00:40:36,160 --> 00:40:37,910 dette er, at mindre end blok, så det er bare 885 00:40:37,910 --> 00:40:39,480 "Er dette tal mindre end den der?" 886 00:40:39,480 --> 00:40:42,438 Men jeg vil ikke have en hård kode et nummer fordi at være temmelig meningsløst. 887 00:40:42,438 --> 00:40:46,270 Så jeg har tænkt mig at trække dette stykke her, og bemærk, hvordan det klikker på, 888 00:40:46,270 --> 00:40:49,480 og lad mig nu gå videre og sige "hvis det nummer, der er valgt tilfældigt 889 00:40:49,480 --> 00:40:51,820 er mindre end seks, skal du gøre følgende. " 890 00:40:51,820 --> 00:40:52,790 Nu, hvorfor mindre end seks? 891 00:40:52,790 --> 00:40:56,400 Hvilken sandsynlighed er dette effektivt vil give mig, bare intuitivt? 892 00:40:56,400 --> 00:40:57,440 Omkring 50%, right? 893 00:40:57,440 --> 00:41:01,190 Hvis antallet at gætte, tilfældigt mellem 1 og 10 er mindre end 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 at give mig en 50% sandsynlighed for, hvad der sker? 896 00:41:06,740 --> 00:41:09,890 >> Jamen så lad os gøre noget lignende dette, "afspille lyd Meow". 897 00:41:09,890 --> 00:41:11,750 Og varsel, igen, brik vokser 898 00:41:11,750 --> 00:41:13,700 til at passe, så længe de figurer matche. 899 00:41:13,700 --> 00:41:14,910 Det er, hvad der er vigtigt. 900 00:41:14,910 --> 00:41:18,000 Lad mig gå over til Scratch her og klik på "play". 901 00:41:18,000 --> 00:41:19,300 Sker der intet. 902 00:41:19,300 --> 00:41:21,160 Er det en fejl? 903 00:41:21,160 --> 00:41:21,999 Nej, ikke nødvendigt. 904 00:41:21,999 --> 00:41:24,040 Det kunne bare være, at en større antal blev valgt. 905 00:41:24,040 --> 00:41:25,762 Så lad os gøre det igen. 906 00:41:25,762 --> 00:41:27,550 Ikke noget. 907 00:41:27,550 --> 00:41:28,344 >> [MEOW] 908 00:41:28,344 --> 00:41:29,510 David J. MALAN: Der er det. 909 00:41:29,510 --> 00:41:30,280 [MEOW] 910 00:41:30,280 --> 00:41:31,690 David J. MALAN: Igen. 911 00:41:31,690 --> 00:41:32,300 Nej 912 00:41:32,300 --> 00:41:32,922 >> [Mjavende] 913 00:41:32,922 --> 00:41:35,380 David J. MALAN: Så hvis du har nogensinde spillet et spil, selvfølgelig, 914 00:41:35,380 --> 00:41:38,500 hvor ting sker tilfældigt, ligesom de slemme fyre kommer eller ej 915 00:41:38,500 --> 00:41:41,350 kommer på skærmen, eller tingene falder eller ikke falder, 916 00:41:41,350 --> 00:41:43,610 det er bare fordi noget super simpelt som dette sker. 917 00:41:43,610 --> 00:41:46,010 Vælg et tilfældigt tal, og hvis det er mindre end en vis værdi, 918 00:41:46,010 --> 00:41:49,100 måske gøre dette eller måske gøre det. 919 00:41:49,100 --> 00:41:51,340 Vi kan inkorporere at i en tilstand. 920 00:41:51,340 --> 00:41:52,600 Lad os gøre noget anderledes. 921 00:41:52,600 --> 00:41:53,559 >> Lad mig smide det væk. 922 00:41:53,559 --> 00:41:56,058 Du kan slippe af med ting af bare trække det ud til venstre 923 00:41:56,058 --> 00:41:56,810 og give slip. 924 00:41:56,810 --> 00:42:00,310 Lad mig gå videre og gøre en evigt blok og meget hurtigt gøre noget irriterende. 925 00:42:00,310 --> 00:42:03,010 Lad mig gå videre og sige "afspille lyd Meow". 926 00:42:03,010 --> 00:42:06,620 Men jeg ønsker ikke dette for at være for irriterende, så lad mig få fat i denne blok, 927 00:42:06,620 --> 00:42:09,090 "Vent et sekund," og meddelelse der er ikke mere plads til det. 928 00:42:09,090 --> 00:42:11,310 Men hvis du går tæt nok, den ønsker at gå der. 929 00:42:11,310 --> 00:42:14,100 Så jeg lod gå, og det vil vokse til at fylde blokken. 930 00:42:14,100 --> 00:42:15,932 Så nu, dette er en løkke. 931 00:42:15,932 --> 00:42:16,432 [Mjavende] 932 00:42:16,432 --> 00:42:18,473 David J. MALAN: Jeg er bogstaveligt gør dette for evigt. 933 00:42:18,473 --> 00:42:19,360 Igen og igen. 934 00:42:19,360 --> 00:42:21,510 Det er bare ikke naturligt lydende. 935 00:42:21,510 --> 00:42:24,800 Lad mig gå videre og ændre denne til ikke et sekund til to sekunder 936 00:42:24,800 --> 00:42:25,854 og tryk på Enter. 937 00:42:25,854 --> 00:42:28,770 Og hvad er rart om Scratch er at man kunne programmere interaktivt. 938 00:42:28,770 --> 00:42:32,450 Foretag en ændring, måske trykke Enter eller Play igen, og det vil bare holde i gang. 939 00:42:32,450 --> 00:42:34,962 Nå, nu skal vi ikke gøre noget lidt mere nuttet? 940 00:42:34,962 --> 00:42:39,680 Snarere end at gøre alt fra bunden, lad mig gå videre og åbne op for et forskud 941 00:42:39,680 --> 00:42:43,180 lavet en, som jeg forbagte, kaldet "Pet Cat". 942 00:42:43,180 --> 00:42:44,920 Og vi vil sende alle disse filer online, 943 00:42:44,920 --> 00:42:48,464 og problemet sæt nul vil fortælle dig hvordan man kan få adgang til dem og åbne dem op. 944 00:42:48,464 --> 00:42:49,880 Og varsel, dette er temmelig simpelt. 945 00:42:49,880 --> 00:42:53,860 Men på forhånd, jeg synes at have grebet en "for evigt" blok, så jeg har en løkke. 946 00:42:53,860 --> 00:42:55,500 Og så har jeg fået en "hvis" betingelse. 947 00:42:55,500 --> 00:42:57,410 Jeg har fået en boolsk udtryk. 948 00:42:57,410 --> 00:43:00,100 >> Så i engelsk, bare et blik på dette, især hvis du aldrig har 949 00:43:00,100 --> 00:43:04,278 programmeret før, lige intuitivt hvad er dette vil gøre, dette program? 950 00:43:04,278 --> 00:43:06,910 >> [Audience CHATTER] 951 00:43:06,910 --> 00:43:09,960 >> David J. MALAN: Hvis du kæler katten, katten kommer til at mjave, right? 952 00:43:09,960 --> 00:43:14,560 Fordi "evigt fjerne markeringen" er musemarkøren rører ved katten. 953 00:43:14,560 --> 00:43:17,630 Så for at være klar, og jeg sagde ikke dette før, alle disse puslespil 954 00:43:17,630 --> 00:43:20,750 stykker og det script, Vi har kombineret dem ind, 955 00:43:20,750 --> 00:43:25,510 så at sige, et script er synonymt med program, virkelig, hører til denne kat. 956 00:43:25,510 --> 00:43:30,110 Og grunden er-- fordi varsel hvordan dette samme kat her er fremhævet, 957 00:43:30,110 --> 00:43:32,710 ned her kan du oprette en anden kat eller hund eller virkelig 958 00:43:32,710 --> 00:43:33,970 noget, du ønsker grafisk. 959 00:43:33,970 --> 00:43:35,900 Du kan importere noget fra Photoshop eller lignende, 960 00:43:35,900 --> 00:43:38,300 og integrere noget, hvis du ønsker at gøre det til et projekt. 961 00:43:38,300 --> 00:43:40,174 Og hvad du vil finde, i sidste ende, er det dig 962 00:43:40,174 --> 00:43:44,800 kan tilføje scripts, tilføje puslespil stykker, til de enkelte tegn. 963 00:43:44,800 --> 00:43:47,210 Så disse alle tilhører denne kat. 964 00:43:47,210 --> 00:43:51,770 Så nu, hvis jeg gå videre og spille dette program er intet sker. 965 00:43:51,770 --> 00:43:52,970 Men det kører. 966 00:43:52,970 --> 00:43:56,364 Programmet er i denne evigt loop, slags venter på hvad der skal ske? 967 00:43:56,364 --> 00:43:57,230 >> [Audience CHATTER] 968 00:43:57,230 --> 00:43:58,130 >> David J. MALAN: At kæle katten. 969 00:43:58,130 --> 00:43:59,800 Så hvis jeg flytter min mus mod him-- 970 00:43:59,800 --> 00:44:02,420 >> [Mjavende] 971 00:44:02,420 --> 00:44:04,450 >> David J. MALAN: Så nu Jeg kæler med katten. 972 00:44:04,450 --> 00:44:07,330 I mellemtiden kan vi have en dobbelt gren. 973 00:44:07,330 --> 00:44:10,370 Lad mig gå videre og åbne op ikke kæle katten. 974 00:44:10,370 --> 00:44:12,160 Vi vil bogføre dette online så godt. 975 00:44:12,160 --> 00:44:16,760 Dette er en lidt mere kompleks, men uden at sige 976 00:44:16,760 --> 00:44:18,780 du kan gætte måske hvad der kommer til at ske. 977 00:44:18,780 --> 00:44:20,160 >> [Mjavende] 978 00:44:20,160 --> 00:44:23,900 >> David J. MALAN: Cat er mjavende, grand gamle tid. 979 00:44:23,900 --> 00:44:26,690 Men dette program er selvfølgelig kaldet "Ikke Pet Cat" 980 00:44:26,690 --> 00:44:29,350 så tydeligt, jeg ønsker at kæle katten. 981 00:44:29,350 --> 00:44:30,490 >> [ROARING] 982 00:44:30,490 --> 00:44:31,940 >> David J. MALAN: Du må ikke kæle katten. 983 00:44:31,940 --> 00:44:34,230 Lad os nu tage et kig på et andet eksempel. 984 00:44:34,230 --> 00:44:38,035 Denne ene vil blive kaldt "Hej, Hej, Hej," grunde 985 00:44:38,035 --> 00:44:40,410 der vil være klar, fordi så snart jeg køre denne ting-- 986 00:44:40,410 --> 00:44:41,401 >> [SEAL BARKING] 987 00:44:41,401 --> 00:44:43,942 David J. MALAN: Meget let at 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: Nu skal vi ikke vil gå i detaljer med alle disse, 990 00:44:48,540 --> 00:44:51,150 men bemærker, at der er en par nye funktioner her. 991 00:44:51,150 --> 00:44:55,540 Der er en variabel, kaldet "dæmpet" og så er der en masse betingelser. 992 00:44:55,540 --> 00:44:57,900 Og for nu, lad mig bare drille dig ved at sige 993 00:44:57,900 --> 00:45:03,170 at hvis denne fyr bliver for irriterende, Jeg kan ramme mellemrumstasten, og han stopper. 994 00:45:03,170 --> 00:45:05,880 Fordi den rolle, som disse to scripts er som følger. 995 00:45:05,880 --> 00:45:08,510 En af dem er at gøre det gøen hvert par sekunder. 996 00:45:08,510 --> 00:45:11,305 Den anden er bare venter for mig at ramme mellemrumstasten. 997 00:45:11,305 --> 00:45:14,780 Og hvis jeg gør ramte mellemrumstasten, det kommer til at ændre 998 00:45:14,780 --> 00:45:18,096 tilstanden af ​​denne variabel værdi af denne variabel, det er tilsyneladende 999 00:45:18,096 --> 00:45:20,470 kaldet "dæmpet" Jeg kaldte ikke det noget kedeligt ligesom n 1000 00:45:20,470 --> 00:45:22,370 Jeg kaldte det et engelsk ord, "slået". 1001 00:45:22,370 --> 00:45:24,740 Fra 1 til 0 eller fra 0 til 1. 1002 00:45:24,740 --> 00:45:26,830 Fra sand til falsk eller falsk til sand. 1003 00:45:26,830 --> 00:45:28,930 Og så kan du faktisk se nu, at du 1004 00:45:28,930 --> 00:45:31,720 kunne have to scripts, to programmer, der kører samtidigt, 1005 00:45:31,720 --> 00:45:34,360 og begge af dem kan sidde i en løkke gør noget. 1006 00:45:34,360 --> 00:45:38,067 Venter på mennesket at gøre noget som rammer mellemrumstasten. 1007 00:45:38,067 --> 00:45:38,650 [SEAL BARKING] 1008 00:45:38,650 --> 00:45:40,566 David J. MALAN: Og nu han er på vej igen. 1009 00:45:40,566 --> 00:45:41,640 [SEAL BARKING] 1010 00:45:41,640 --> 00:45:45,220 David J. MALAN: Så hvad ellers kan vi med disse eksempler? 1011 00:45:45,220 --> 00:45:50,920 Nå, lad os gå videre og gøre en eksempel med at tælle får. 1012 00:45:50,920 --> 00:45:59,210 Vi vil fortsætte denne lighed her af-- lad os åbne op for eksempel får. 1013 00:45:59,210 --> 00:46:02,460 Og varsel, ligesom før, denne ene, heldigvis, er lidt mindre irriterende. 1014 00:46:02,460 --> 00:46:06,940 Når jeg ramte spille her-- Åh nej, det er irriterende. 1015 00:46:06,940 --> 00:46:10,130 Han kommer til Baa med en vis sandsynlighed. 1016 00:46:10,130 --> 00:46:11,050 Lad os spille dette igen. 1017 00:46:11,050 --> 00:46:15,221 >> [FÅR bleeting] 1018 00:46:15,221 --> 00:46:18,470 David J. MALAN: Den eneste forskel er vi har ændret kostume, så at sige, 1019 00:46:18,470 --> 00:46:21,710 og vi halvere og sige hvad det faktiske antal er. 1020 00:46:21,710 --> 00:46:24,680 Jamen så lad os gå videre og tage dette et skridt videre. 1021 00:46:24,680 --> 00:46:28,190 Og lad mig drille dig med en anden funktion her. 1022 00:46:28,190 --> 00:46:31,800 Lad os gå videre og åbne op et program kaldet tråde. 1023 00:46:31,800 --> 00:46:36,620 Så meget som du kan have en Sprite, der har flere scripts, 1024 00:46:36,620 --> 00:46:41,250 du kan have to sprites, en fugl i en kat, der hver har deres eget script. 1025 00:46:41,250 --> 00:46:43,976 Og hver af dem kan fungere samtidigt. 1026 00:46:43,976 --> 00:46:45,980 Hvis du nogensinde har hørt ordet "multithreading" 1027 00:46:45,980 --> 00:46:49,240 en computer er "flertrådede" betyder det kan gøre flere ting på én gang, 1028 00:46:49,240 --> 00:46:50,880 og, ja, så kan ridse. 1029 00:46:50,880 --> 00:46:52,690 >> Og nu mærke til fuglen er lidt dumt. 1030 00:46:52,690 --> 00:46:55,100 Det er bare at gøre tingene tilfældigt, preller skærmen. 1031 00:46:55,100 --> 00:46:59,460 Klart katten er blevet programmeret at slags har der søger kapaciteter 1032 00:46:59,460 --> 00:47:02,680 på hjemmet på fuglen, fordi han er altid peger på ham. 1033 00:47:02,680 --> 00:47:06,176 Indtil endelig, han fanger den faktiske fugl. 1034 00:47:06,176 --> 00:47:08,550 Så jeg vil ikke dvæle ved detaljerne her, men du kan slags 1035 00:47:08,550 --> 00:47:12,160 glimt samme form, nogle "Hvis" betingelser, nogle variabler, 1036 00:47:12,160 --> 00:47:15,740 måske nogle sløjfer, er i sidste ende gøre det samme. 1037 00:47:15,740 --> 00:47:18,400 >> Lad mig nu gå videre og åbne op noget helt andet, 1038 00:47:18,400 --> 00:47:20,920 at drille nogle af jer, især de mere komfortable, 1039 00:47:20,920 --> 00:47:22,760 hvad du rent faktisk kan gøre med dette. 1040 00:47:22,760 --> 00:47:26,080 Jeg har tænkt mig at gå videre og åbne op Button her. 1041 00:47:26,080 --> 00:47:28,740 Og det er en super enkel tilsyneladende program 1042 00:47:28,740 --> 00:47:34,190 men se hvad der sker når jeg-- Se, hvad 1043 00:47:34,190 --> 00:47:39,860 sker, når jeg åbner denne version af det, her i browseren, scratch.mit.edu. 1044 00:47:39,860 --> 00:47:43,460 Og når jeg klikker på denne store røde knap mærke til hvad der sker. 1045 00:47:43,460 --> 00:47:46,110 1046 00:47:46,110 --> 00:47:47,647 Så hvad sker der her? 1047 00:47:47,647 --> 00:47:50,480 Der er faktisk en hel del mere kompliceret foregår under kølerhjelmen, 1048 00:47:50,480 --> 00:47:52,896 selvom jeg har gennemført dette, eller ærligt, Dan Bradley 1049 00:47:52,896 --> 00:47:54,660 har gennemført det så enkelt. 1050 00:47:54,660 --> 00:47:59,540 Han har designet en brugerdefineret Scratch puslespil stykke, der er kendt som en ridse udvidelse, 1051 00:47:59,540 --> 00:48:01,300 han kaldte det Toggle. 1052 00:48:01,300 --> 00:48:06,332 >> Og hvad Toggle gør, er det sender en besked over internettet. 1053 00:48:06,332 --> 00:48:08,290 Og det budskab selv ser lidt kryptisk. 1054 00:48:08,290 --> 00:48:10,248 Men også dette, vil du forstår ved udtrykket udgang. 1055 00:48:10,248 --> 00:48:14,930 Det budskab, han faktisk sender ser lidt noget 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 med den tid, vi få problemet sat syv. 1059 00:48:19,130 --> 00:48:22,180 Det er bare at sende en tekstmeddelelse over internettet til en server. 1060 00:48:22,180 --> 00:48:24,330 Og denne server er, i sidste ende, taler til denne pære, som 1061 00:48:24,330 --> 00:48:27,240 har en af ​​disse smarte pærer i det, der i sig selv taler 1062 00:48:27,240 --> 00:48:30,760 til Wi-Fi i netværket her, hvor en lokal enhed ned her-- 1063 00:48:30,760 --> 00:48:34,400 og i sidste ende, det er faktisk dreje det og slukker lyset. 1064 00:48:34,400 --> 00:48:36,240 Men vi kan gøre mere interessante ting stille. 1065 00:48:36,240 --> 00:48:38,270 Læg mærke til hvad Dan også gjorde for os. 1066 00:48:38,270 --> 00:48:42,210 Han gjorde flere sprites, som hver som har et script venter et klik. 1067 00:48:42,210 --> 00:48:44,030 Og hvis jeg klikker rød, det går rødt. 1068 00:48:44,030 --> 00:48:46,780 Hvis jeg får blå, det går blålig. 1069 00:48:46,780 --> 00:48:49,854 Grøn, gul, orange. 1070 00:48:49,854 --> 00:48:52,520 Og alt dette sker ved går langt ud på internettet, 1071 00:48:52,520 --> 00:48:54,690 bakke ned her til pære, til og fra. 1072 00:48:54,690 --> 00:48:57,981 >> Og hvis du kan tro det--, og dette er måske en af ​​de mest komplekse Scratch 1073 00:48:57,981 --> 00:49:00,930 projekter nogen har implemented-- han gjorde det, i retfærdighed, på en dag. 1074 00:49:00,930 --> 00:49:04,180 Og det var den udfordring, vi kastede ned til Dan, da vi så have 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, det er absolut noget nogen i dette rum 1077 00:49:08,410 --> 00:49:14,250 kunne gøre ved semesters end-- Er han genimplementeret binære pærer anvender 1078 00:49:14,250 --> 00:49:18,310 den samme grænseflade, der var på vores iPad på onsdag. 1079 00:49:18,310 --> 00:49:22,000 Så nu, hvis jeg faktisk Klik på plus herovre, 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 ramme 16 og slå denne ene på. 1082 00:49:27,550 --> 00:49:29,440 128, og så videre. 1083 00:49:29,440 --> 00:49:31,250 >> Nu, hvis det alene har og blæst dit sind, 1084 00:49:31,250 --> 00:49:35,680 du kunne gøre tingene langt mere tilgængelige, ikke indebærer nogen hardware sikkert. 1085 00:49:35,680 --> 00:49:38,320 Bare ting på selve skærmen. 1086 00:49:38,320 --> 00:49:41,110 Og netop hvad de fleste studerende ende med at gøre er en slags spil, 1087 00:49:41,110 --> 00:49:44,600 nogle stykke kunstnerisk arbejde, eller en slags interaktive animation. 1088 00:49:44,600 --> 00:49:47,352 Og jeg vil sige en af ​​vores favoritter har været denne ene. 1089 00:49:47,352 --> 00:49:49,060 Og jeg tænkte, at hvis vi kunne dæmpe lyset, 1090 00:49:49,060 --> 00:49:52,960 vil vi tage et blik på denne sidste Scratch-projekt i konklusion. 1091 00:49:52,960 --> 00:49:57,460 Men hvad vil du skal huske på, som Jeg kan drille dig med en sidste detalje, 1092 00:49:57,460 --> 00:49:59,140 sektionering vil begynde i næste uge. 1093 00:49:59,140 --> 00:50:00,830 Kontortid vil begynde i næste uge. 1094 00:50:00,830 --> 00:50:04,410 Problem sæt nul vil blive offentliggjort CS50.harvard.edu senere i dag. 1095 00:50:04,410 --> 00:50:06,430 Og du vil blive mødt i problem sæt nul 1096 00:50:06,430 --> 00:50:10,070 til CS50 egen Zamyla Chan, som guider meste af vores walkthroughs. 1097 00:50:10,070 --> 00:50:11,952 Disse er indlejrede videoer i problemet sæt 1098 00:50:11,952 --> 00:50:15,160 der vil holde din hånd igennem en masse af den indledende opsætning og gennem mange 1099 00:50:15,160 --> 00:50:16,570 af de mulige afgørelser design. 1100 00:50:16,570 --> 00:50:19,570 Så hvis du nogensinde har haft at følelser når picking up en hjemmeopgave 1101 00:50:19,570 --> 00:50:21,030 og spørger, hvor skal jeg begynde? 1102 00:50:21,030 --> 00:50:23,510 Hun vil have, at svaret for dig. 1103 00:50:23,510 --> 00:50:27,720 Og nu, et endeligt program fra en af ​​dine forgængere 1104 00:50:27,720 --> 00:50:30,659 i svaret på spørgsmålet "Hvad ræven sige?" 1105 00:50:30,659 --> 00:50:32,242 [MUSIC YLVIS, "HVAD FOX sige?] 1106 00:50:32,242 --> 00:50:40,178 1107 00:50:40,178 --> 00:50:41,666 >> YLVIS: (sang) Hund går islæt. 1108 00:50:41,666 --> 00:50:43,650 Kat går miaver. 1109 00:50:43,650 --> 00:50:47,520 Fugl går tweet og mus går knirke. 1110 00:50:47,520 --> 00:50:49,240 Ko går moo. 1111 00:50:49,240 --> 00:50:51,690 Frog går Croak. 1112 00:50:51,690 --> 00:50:54,630 Og elefanten går dytte. 1113 00:50:54,630 --> 00:50:59,040 Ænder siger kvaksalver og fisk gå blub. 1114 00:50:59,040 --> 00:51:07,370 Og sælen går ow ow ow, men der er en lyd, som ingen kender, 1115 00:51:07,370 --> 00:51:10,330 hvad betyder ræven sige? 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 dig på Puzzle dag og på mandag. 1119 00:51:15,436 --> 00:51:16,424 >> [Applaus] 1120 00:51:16,424 --> 00:51:19,882 >> [MUSIC YLVIS, "HVAD FOX sige?"] 1121 00:51:19,882 --> 00:51:24,840 1122 00:51:24,840 --> 00:51:28,820 >> Fortæller: Og nu dyb tanker, ved Daven Farnham. 1123 00:51:28,820 --> 00:51:31,770 1124 00:51:31,770 --> 00:51:34,570 I dag fik jeg ramt i ansigt med en telefonbog. 1125 00:51:34,570 --> 00:51:38,160 Forvirrende, da jeg er på hjem ser online. 1126 00:51:38,160 --> 00:51:42,528