1 00:00:00,000 --> 00:00:15,059 >> [Speel van musiek] 2 00:00:15,059 --> 00:00:19,170 >> Dit is CS50-- Harvard Universiteit se bekendstelling 3 00:00:19,170 --> 00:00:22,070 om die intellektuele ondernemings van rekenaarwetenskap 4 00:00:22,070 --> 00:00:23,800 en die kuns van programmering. 5 00:00:23,800 --> 00:00:27,020 En my naam is David Malan, en Ek was net te dink vanoggend, 6 00:00:27,020 --> 00:00:33,120 dit wonder bo wonder was 20 jaar vandag sedert ek laas sit waar julle nou doen. 7 00:00:33,120 --> 00:00:33,840 >> Dit was 1996. 8 00:00:33,840 --> 00:00:37,550 Ek was 'n stage, en ek is die neem van CS50 vir die heel eerste keer. 9 00:00:37,550 --> 00:00:40,890 En ek het nie eens gekry het die senuwee om dit te neem myself eerste jaar, 10 00:00:40,890 --> 00:00:42,500 deels as gevolg van die tyd. 11 00:00:42,500 --> 00:00:44,782 Rekenaarwetenskap vir my is soort van soos, meh. 12 00:00:44,782 --> 00:00:46,990 Ek was 'n bietjie van 'n geek groeiende up, maar ek het nie regtig 13 00:00:46,990 --> 00:00:49,180 enige intellektuele belangstelling in wat verskyn 14 00:00:49,180 --> 00:00:51,920 om net 'n hele klomp van wees mense programmering al die tyd. 15 00:00:51,920 --> 00:00:53,904 >> En ek is bang om eerlik te wees. 16 00:00:53,904 --> 00:00:56,820 Die kursus en rekenaarwetenskap meer oor die algemeen het en tot 'n mate, 17 00:00:56,820 --> 00:01:01,230 nog hierdie reputasie van 'n stuk grond te pasop, al is dit net omdat so baie van ons 18 00:01:01,230 --> 00:01:04,410 is nie vertroud met dit en onseker oor dit. 19 00:01:04,410 --> 00:01:08,480 En dit was regtig nie totdat ek inkopies hierdie klas wat stage fall-- 20 00:01:08,480 --> 00:01:10,880 en selfs dan, ek het net ingeskryf omdat die professor-- 21 00:01:10,880 --> 00:01:13,950 een van my eerste mentors, Brian Kernighan nou by Princeton-- 22 00:01:13,950 --> 00:01:15,700 het my toegelaat om te neem die klas slaag misluk. 23 00:01:15,700 --> 00:01:18,020 En inderdaad, dit is hoekom vandag ons toelaat dat en aan te moedig 24 00:01:18,020 --> 00:01:20,030 studente om hierdie klas neem gesit / unsat. 25 00:01:20,030 --> 00:01:22,040 >> En eers dan, deur die einde van die semester 26 00:01:22,040 --> 00:01:24,870 het ek besef soos, wow, hierdie was nie so 'n onbekende gebied. 27 00:01:24,870 --> 00:01:26,850 Inderdaad, dit was 'n baie bemagtig veld, 28 00:01:26,850 --> 00:01:28,970 en meer spannende, veral later, 29 00:01:28,970 --> 00:01:32,809 soos Ek kursusse in Dramatiese Kunste 101 en Latyns-A 30 00:01:32,809 --> 00:01:34,600 en dan uiteindelik grad skool argeologie, 31 00:01:34,600 --> 00:01:37,860 het ek regtig begin om die sien kruisings van hierdie gebied, rekenaar 32 00:01:37,860 --> 00:01:41,979 wetenskap, met die geesteswetenskappe, natuurwetenskap, die kunste, medisyne, 33 00:01:41,979 --> 00:01:42,520 en dies meer. 34 00:01:42,520 --> 00:01:44,420 En so dit is wat net so netjiese oor rekenaarwetenskap 35 00:01:44,420 --> 00:01:46,930 uiteindelik, as ons hoop jy sal see-- is sy toepaslikheid 36 00:01:46,930 --> 00:01:50,280 hierdie ander velde, en hoe jy kan neem 'n paar van vandag se en die semester se 37 00:01:50,280 --> 00:01:53,070 idees en praktiese vaardighede terug na jou eie domein, 38 00:01:53,070 --> 00:01:58,200 en eintlik verken hierdie kruising van die liberale kunste en die wetenskappe. 39 00:01:58,200 --> 00:02:02,690 >> So 73% van jou, as laaste jaar is enige aanduiding is, 40 00:02:02,690 --> 00:02:04,390 het 'n CS natuurlik nog nooit tevore geneem. 41 00:02:04,390 --> 00:02:06,389 So as jy, soos ek, jy is voel 'n bietjie 42 00:02:06,389 --> 00:02:09,190 bang, of eerlik jy is nie regtig seker hoekom jy nog hier is. 43 00:02:09,190 --> 00:02:11,510 Miskien het jy net gevolg sommige vriende oor te Sanders nou. 44 00:02:11,510 --> 00:02:12,490 Dit is heeltemal fyn. 45 00:02:12,490 --> 00:02:15,059 Die doel hier is om te haak jy en jou gerusstel 46 00:02:15,059 --> 00:02:17,100 dat as jy kyk na links en regs, 47 00:02:17,100 --> 00:02:21,480 jy gaan klasmaats sien met so min of soveel ervaring 48 00:02:21,480 --> 00:02:22,890 dat jy jouself kan hê. 49 00:02:22,890 --> 00:02:25,280 En inderdaad, sal ons deel sommige statistieke later vandag 50 00:02:25,280 --> 00:02:28,120 oor wat die demografie van die klas tipies lyk. 51 00:02:28,120 --> 00:02:31,440 >> En as bygevoeg reassurance-- en dit ons moenie dat sedert ek oorgeneem het die kursus 52 00:02:31,440 --> 00:02:33,252 'n paar jaar ago-- in leerplan die kursus se 53 00:02:33,252 --> 00:02:35,460 is this-- dat wat uiteindelik aangeleenthede in hierdie kursus 54 00:02:35,460 --> 00:02:38,040 is nie soseer waar jy eindig up in vergelyking met jou klasmaats, 55 00:02:38,040 --> 00:02:43,110 maar waar jy in week 11, die einde van die semester, beland in vergelyking met jouself 56 00:02:43,110 --> 00:02:46,280 in week 0, wat waar ons is vandag hier. 57 00:02:46,280 --> 00:02:48,704 En dit is wat ek besef al daardie jare gelede. 58 00:02:48,704 --> 00:02:50,620 En ek weet baie van klasse sê dit, maar dit is 59 00:02:50,620 --> 00:02:52,450 veral waar in rekenaarwetenskap. 60 00:02:52,450 --> 00:02:55,320 Aan die einde van die dag, die veld onbekend soos dit was vir my 61 00:02:55,320 --> 00:02:58,590 en dalk vir jou, is regtig net oor probleemoplossing. 62 00:02:58,590 --> 00:03:01,324 En as sodanig, is dit hierdie het toepaslikheid om ander velde te kry. 63 00:03:01,324 --> 00:03:03,490 En in werklikheid, as ons probeer om distilleer wat dit beteken, 64 00:03:03,490 --> 00:03:06,897 dit is probleemoplossing in sy wese, ek daresay. 65 00:03:06,897 --> 00:03:09,480 Daar is input-- so wat dit ookal is dat jy probeer om op te los. 66 00:03:09,480 --> 00:03:12,264 Daar is uitset, wat hopelik die oplossing vir die probleem. 67 00:03:12,264 --> 00:03:14,180 En dan, as ons sou sê in rekenaarwetenskap, 68 00:03:14,180 --> 00:03:17,310 daar is hierdie swart boks in die middel wat jy nie noodwendig 69 00:03:17,310 --> 00:03:19,450 moet omgee hoe dit werk. 70 00:03:19,450 --> 00:03:22,230 Jy jouself kan uiteindelik implementeer wat binne daardie boks. 71 00:03:22,230 --> 00:03:25,194 Maar vir doeleindes vandag en meer oor die algemeen in die lewe, alles wat jy omgee 72 00:03:25,194 --> 00:03:26,610 is dat hierdie probleme ontslae opgelos. 73 00:03:26,610 --> 00:03:29,340 >> En wat hierdie kursus is uiteindelik oor is ondersoek 74 00:03:29,340 --> 00:03:31,700 die kruising van hierdie insette en uitsette, 75 00:03:31,700 --> 00:03:34,410 en hierdie sogenaamde algoritmes, soos ons binnekort sal sien, 76 00:03:34,410 --> 00:03:37,450 wat implementeer wat onder daar, die enjinkap. 77 00:03:37,450 --> 00:03:40,487 Maar hierdie insette en hierdie outputs-- wat beteken dat eintlik beteken? 78 00:03:40,487 --> 00:03:43,570 Wel, aan die einde van die dag, moet ons een of ander manier te verteenwoordig inligting. 79 00:03:43,570 --> 00:03:46,660 Dit is veral waar in 'n rekenaar, wat as fancy en kompleks as dit 80 00:03:46,660 --> 00:03:48,160 mag lyk, is 'n mooi dom toestel. 81 00:03:48,160 --> 00:03:52,240 Dit neem electricity-- of uit 'n kabel of 'n battery as input-- 82 00:03:52,240 --> 00:03:55,820 en dan produseer dit 'n paar preprogramed antwoorde op die skerm. 83 00:03:55,820 --> 00:03:57,970 >> Maar hoe kry ons uit begin om daar te voltooi? 84 00:03:57,970 --> 00:03:59,470 Wel, wat 'n probleem wat opgelos moet word? 85 00:03:59,470 --> 00:04:01,050 Wel, miskien het ons dalk op die begin van 'n semester, 86 00:04:01,050 --> 00:04:02,841 probeer om bywoning te neem in 'n kamer soos hierdie. 87 00:04:02,841 --> 00:04:04,750 So ek kan doen soos een, twee, drie. 88 00:04:04,750 --> 00:04:07,060 Of miskien, as ek dit gedoen het uit te sorteer van hou 89 00:04:07,060 --> 00:04:10,560 van myself-- om tred te hou van things-- hou Ek kon vinnig hardloop uit vingers. 90 00:04:10,560 --> 00:04:14,650 So kan ek net maak hash marks-- een persoon, twee, drie, vier, vyf, ses, 91 00:04:14,650 --> 00:04:15,431 sewe, agt. 92 00:04:15,431 --> 00:04:17,930 En almal van ons het waarskynlik gedoen het, of dit nou op jou hande 93 00:04:17,930 --> 00:04:19,680 of op 'n stuk papier. 94 00:04:19,680 --> 00:04:22,140 En dit is eintlik net iets genoem unêre notation-- 95 00:04:22,140 --> 00:04:26,130 waar as jy net 'n brief in jou alfabet, een of hash 96 00:04:26,130 --> 00:04:29,440 merk in hierdie geval, vir elke insette wat jy wil om te tel, 97 00:04:29,440 --> 00:04:32,330 wat jy nodig het om af te een van hierdie plaas letters-- een van hierdie punte. 98 00:04:32,330 --> 00:04:32,510 >> Alles reg. 99 00:04:32,510 --> 00:04:34,790 Dit is alles goed en wel en nie alles wat ingewikkeld. 100 00:04:34,790 --> 00:04:37,800 Maar rekenaars is nie almal wat baie meer ingewikkeld. 101 00:04:37,800 --> 00:04:40,770 Trouens, die meeste van julle seker weet selfs as jy het nie regtig 102 00:04:40,770 --> 00:04:44,080 beskou wat dit beteken, dat rekenaars verstaan ​​net nulle 103 00:04:44,080 --> 00:04:45,870 en ones-- die sogenaamde binêre stelsel. 104 00:04:45,870 --> 00:04:49,390 Ons mense, daarenteen, is so veel meer gesofistikeerd sover 105 00:04:49,390 --> 00:04:51,770 soos ons dit verstaan ​​nulle deur pragtig. 106 00:04:51,770 --> 00:04:55,740 >> Maar selfs as binêre is, op die eerste oogopslag, nie alles wat bekend is, 107 00:04:55,740 --> 00:05:00,330 dit blyk dit is net soos die stelsels en die idees wat ons weet reeds. 108 00:05:00,330 --> 00:05:02,420 So byvoorbeeld, kyk na hierdie. 109 00:05:02,420 --> 00:05:03,896 Dit is net 'n reeks van simbole. 110 00:05:03,896 --> 00:05:05,770 En almal van julle, wanneer skrams na dit wat moontlik deur ' 111 00:05:05,770 --> 00:05:09,380 dink 123-- niks baie interessant is daar. 112 00:05:09,380 --> 00:05:11,940 Maar hoekom is dit hierdie getal, 123? 113 00:05:11,940 --> 00:05:14,440 Dit is slegs karakters op die screen-- net patrone 114 00:05:14,440 --> 00:05:16,387 dat iemand dalk getrek of getik. 115 00:05:16,387 --> 00:05:18,970 Maar as jy soos ek, jy waarskynlik onthou van graad skool 116 00:05:18,970 --> 00:05:21,610 dat daar soort kolomme of plekke hier. 117 00:05:21,610 --> 00:05:25,340 Daar is die mens se plek en die tien se plek en die honderd se plek. 118 00:05:25,340 --> 00:05:29,820 En die rede dat dit 123 en nie net 'n patroon van drie simbole 119 00:05:29,820 --> 00:05:33,090 Die rede is, natuurlik, as ons 'n mens in die honderde plek, 120 00:05:33,090 --> 00:05:36,610 jy doen die wiskunde van 100 keer een, en dan twee in die tien se plek. 121 00:05:36,610 --> 00:05:41,390 So dit is 10 keer 2, en dan drie in die mens se plek en dit is 1 keer 3. 122 00:05:41,390 --> 00:05:45,670 En as jy al daardie optel, van Natuurlik, jy kry 100 plus 20 plus 3. 123 00:05:45,670 --> 00:05:48,220 >> So het ons begin met net 'n patroon van symbols-- n alphabet-- 124 00:05:48,220 --> 00:05:51,670 maar dan gekarteer ons betekenis op dit by wyse van hierdie kolomme. 125 00:05:51,670 --> 00:05:54,450 Wel, dit blyk dat rekenaars is regtig nie 126 00:05:54,450 --> 00:05:56,300 alles wat anders as ek en jy. 127 00:05:56,300 --> 00:06:01,840 Maar in plaas van magte van 10 gebruik van, so te speak-- 1, 10, 100, 1000, 128 00:06:01,840 --> 00:06:04,330 10,000 plek en so forth-- hulle eintlik 129 00:06:04,330 --> 00:06:08,930 net magte van gebruik 2-- sodat een, 2, 4, en dan 130 00:06:08,930 --> 00:06:12,810 as ons meer syfers, 8, 16, 32, 64, 128, en so meer. 131 00:06:12,810 --> 00:06:16,050 En so dit is hoe 'n rekenaar sou die getal 0 verteenwoordig, 132 00:06:16,050 --> 00:06:17,300 net soos ons mense. 133 00:06:17,300 --> 00:06:21,660 >> 0, 0, 0-- en jy kan seker raai Watter patroon van nulle en ene, 134 00:06:21,660 --> 00:06:24,610 As 'n rekenaar kan slegs spreek 0 of 1-- wat 135 00:06:24,610 --> 00:06:29,110 patroon gaan verteenwoordig die getal wat ons mense ken as 1? 136 00:06:29,110 --> 00:06:30,590 Yeah-- 0, 0, 1. 137 00:06:30,590 --> 00:06:31,090 Alles reg. 138 00:06:31,090 --> 00:06:35,900 So 0, 0, 1 is hoe ons verteenwoordig 1, sodat jy kan dan geneig 139 00:06:35,900 --> 00:06:39,510 om die nommer 2 verteenwoordig, as jy ' die vier se plek en die twee se plek 140 00:06:39,510 --> 00:06:48,290 as die een plek, kan jy sê, goed, As ons 'n 1 in die mens se plek, 141 00:06:48,290 --> 00:06:50,430 en nou wil ons tel tot 2, kan jy 142 00:06:50,430 --> 00:06:53,310 doen dit en laat dit vir 'n nul wees. 143 00:06:53,310 --> 00:06:56,397 Maar natuurlik is dit nie hoe die desimale stelsel werk nie. 144 00:06:56,397 --> 00:06:58,230 As jy 'n syfer in beide van die kolomme, 145 00:06:58,230 --> 00:06:59,563 jy het die somme maak. 146 00:06:59,563 --> 00:07:01,930 So hoeveel het ek per ongeluk net voor? 147 00:07:01,930 --> 00:07:06,710 >> Dit is dus 3, want 2 keer 1 plus 1 Kom 1, natuurlik, gee ons drie. 148 00:07:06,710 --> 00:07:08,340 So sal dit twee wees. 149 00:07:08,340 --> 00:07:12,730 Die bietjie soort flips, so te sê, as 0 word 'n mens, net soos 'n 9 rolle oor 150 00:07:12,730 --> 00:07:14,840 en word 'n 0 as jy die 1 dra. 151 00:07:14,840 --> 00:07:16,510 Dit sou drie natuurlik wees. 152 00:07:16,510 --> 00:07:20,170 Four-- nog 'n interessante ding gebeur, waar die kinders omrol 153 00:07:20,170 --> 00:07:21,750 en jy dra die 1, om so te praat. 154 00:07:21,750 --> 00:07:23,320 So hierdie, natuurlik, is 4. 155 00:07:23,320 --> 00:07:25,160 >> Maar as jy vinnig vorentoe nou, Wat is die grootste getal gaan 156 00:07:25,160 --> 00:07:26,660 te wees dat 'n rekenaar kan verteenwoordig? 157 00:07:26,660 --> 00:07:30,420 158 00:07:30,420 --> 00:07:32,380 So dit is net sewe in hierdie geval, reg? 159 00:07:32,380 --> 00:07:35,570 Omdat jy 'n mens in die vier, 'n mens in die twee, 'n mens in die een. 160 00:07:35,570 --> 00:07:36,900 So dit is 4 plus 2 plus 1. 161 00:07:36,900 --> 00:07:37,972 So wat gee jou sewe. 162 00:07:37,972 --> 00:07:39,680 En inderdaad, dit sou lyk op die eerste oogopslag 163 00:07:39,680 --> 00:07:43,750 dat rekenaars kan reken nie hoër as dit. 164 00:07:43,750 --> 00:07:45,210 >> Maar dit is natuurlik nie waar nie. 165 00:07:45,210 --> 00:07:48,243 Wat doen ons mense doen wanneer ons wil hoër as soos 999 tel? 166 00:07:48,243 --> 00:07:51,000 167 00:07:51,000 --> 00:07:53,900 dra net die een en net voeg 'n vierde syfer aan die linkerkant. 168 00:07:53,900 --> 00:07:55,070 En so wel ons kon. 169 00:07:55,070 --> 00:07:57,900 Ons kan 'n agt se plaas en plaas 'n 16's, 170 00:07:57,900 --> 00:08:02,000 en 'n 32 se plek, 64, 128-- en jy kan net voort te gaan op tot oneindigheid. 171 00:08:02,000 --> 00:08:04,640 So het hierdie nulle en ones-- die sogenaamde binêre system-- 172 00:08:04,640 --> 00:08:10,290 is wat 'n rekenaar wetenskaplike sou oor die algemeen noem 'n bietjie, of binêre syfer. 173 00:08:10,290 --> 00:08:13,590 >> Maar nou, hoe kry ons uit die konsep of die grafiese van hierdie dinge 174 00:08:13,590 --> 00:08:14,620 om 'n werklike rekenaar? 175 00:08:14,620 --> 00:08:17,170 Ons blyk te wees draai 'n stap hier. 176 00:08:17,170 --> 00:08:20,210 Wel, die enigste insette aan die einde van die dag, om my laptop hier 177 00:08:20,210 --> 00:08:22,060 is hierdie vloei van elektrisiteit. 178 00:08:22,060 --> 00:08:24,560 Selfs al is dit 'n lang was keer sedert jy al gedink oor 179 00:08:24,560 --> 00:08:26,580 of nooit gedink oor hoe elektrisiteit werk, 180 00:08:26,580 --> 00:08:30,909 daar is elektrone vloei in of uit, en dit is my soort insette. 181 00:08:30,909 --> 00:08:34,659 >> So as dit is al wat ons kry as insette hier, 182 00:08:34,659 --> 00:08:36,830 Wat kan ons doen met hierdie inligting? 183 00:08:36,830 --> 00:08:40,040 Wel, ons kan dink aan 'n nul as net 'n gebrek aan elektrisiteit. 184 00:08:40,040 --> 00:08:42,540 Niks is flowinw, niks is beweeg, is daar niks gebeur nie. 185 00:08:42,540 --> 00:08:44,690 Dit is net die standaard state-- nul. 186 00:08:44,690 --> 00:08:48,200 Maar as daar elektrisiteit vloei, waarom doen ons nie net na willekeur, maar wêreldwyd 187 00:08:48,200 --> 00:08:50,250 konsekwent, noem dat 'n mens. 188 00:08:50,250 --> 00:08:54,760 >> So eenvoudig deur sonder krag, Ons het 'n nul, ja krag, 189 00:08:54,760 --> 00:08:57,520 Ons het 'n one-- geen mag nie, ja krag. 190 00:08:57,520 --> 00:09:01,520 En op dié manier, met behulp van iets meer fisiese of elektroniese 191 00:09:01,520 --> 00:09:05,340 ons begin om hierdie idee van implementeer iets óf die feit dat een of 'n zero. 192 00:09:05,340 --> 00:09:07,230 Inderdaad, kan ons doen dit net hier. 193 00:09:07,230 --> 00:09:10,590 So hier, ek het nie drie, maar agt gloeilampe, wat elk 194 00:09:10,590 --> 00:09:11,810 het sy eie skakelaar. 195 00:09:11,810 --> 00:09:15,760 >> En so as ek wou verteenwoordig die nommer sewe hier, 196 00:09:15,760 --> 00:09:18,510 Ek kan draai op hierdie drie gloeilampe. 197 00:09:18,510 --> 00:09:21,470 En inderdaad, binnekant van my rekenaar is miljoene, 198 00:09:21,470 --> 00:09:25,650 biljoene dinge wat net kleiner as dié genoem transistors, 199 00:09:25,650 --> 00:09:27,330 skakelaars, dat jy net draai op en af. 200 00:09:27,330 --> 00:09:30,420 So dit is relatief big-- big-- skakelaars in my laptop-- 201 00:09:30,420 --> 00:09:32,150 is baie, baie, baie, nog vele meer skakelaars. 202 00:09:32,150 --> 00:09:35,160 Maar al wat hulle doen, is presies that-- draai iets op, draai iets af. 203 00:09:35,160 --> 00:09:38,076 En as sodanig, kan 'n rekenaar voor te stel, met die miljoene of biljoene 204 00:09:38,076 --> 00:09:40,480 transistors, baie, baie nulle en ene. 205 00:09:40,480 --> 00:09:43,160 En daar is ander hardeware steeds dat kan jy slaan inligting langtermyn, 206 00:09:43,160 --> 00:09:45,243 sodat wanneer jy trek die prop, jy hoef dit nie te verloor. 207 00:09:45,243 --> 00:09:46,900 Maar dis 'n storie vir 'n ander dag. 208 00:09:46,900 --> 00:09:51,170 >> So, wat kan ons doen met hierdie stukkies? 209 00:09:51,170 --> 00:09:54,309 Kan ons net om te neem die druk af van me-- 210 00:09:54,309 --> 00:09:56,600 kan iemand wil kom hier en bied 'n demo? 211 00:09:56,600 --> 00:09:57,516 Ek het dit gesien hand eerste. 212 00:09:57,516 --> 00:09:58,709 Wat is jou naam? 213 00:09:58,709 --> 00:09:59,250 MADAY: Maday. 214 00:09:59,250 --> 00:10:00,542 David Malan: Maday, kom op tot. 215 00:10:00,542 --> 00:10:01,250 Aangename kennis. 216 00:10:01,250 --> 00:10:02,390 MADAY: Nice om jou te ontmoet. 217 00:10:02,390 --> 00:10:02,930 >> David Malan: Kom hierdie manier. 218 00:10:02,930 --> 00:10:04,182 Ek sal nie vir jou lip up. 219 00:10:04,182 --> 00:10:04,682 Alles reg. 220 00:10:04,682 --> 00:10:11,090 So hier het ons, notice-- een, two-- ons sal wysig dat out-- een, twee, vier, 221 00:10:11,090 --> 00:10:13,350 agt, 16, 32, 64, 128. 222 00:10:13,350 --> 00:10:14,220 Dit is doelbewuste. 223 00:10:14,220 --> 00:10:17,370 Daar is agt stukkies here-- binêre digits-- nulle en ene. 224 00:10:17,370 --> 00:10:21,460 En 'n bietjie 'n nuttige eenheid van measure-- nie so nuttig 'n eenheid van meet 225 00:10:21,460 --> 00:10:21,999 op sigself. 226 00:10:21,999 --> 00:10:24,290 Gewoonlik jy wil ten minste agt van hierdie dinge, ook bekend as 227 00:10:24,290 --> 00:10:24,790 'n greep. 228 00:10:24,790 --> 00:10:26,230 So het ons 'n greep van stukkies hier. 229 00:10:26,230 --> 00:10:31,130 >> So as ons wil jou uitdaag met, byvoorbeeld, uitspel, in binêre, 230 00:10:31,130 --> 00:10:33,230 hierdie waarde here-- 42. 231 00:10:33,230 --> 00:10:35,140 Wil jy 'n steek op daardie te neem? 232 00:10:35,140 --> 00:10:36,034 >> MADAY: [onhoorbaar]. 233 00:10:36,034 --> 00:10:38,700 David Malan: Ja, net stoot die klein wit skakelaars voor. 234 00:10:38,700 --> 00:10:41,290 En jy wil om te spel uit 42, en op die spel 235 00:10:41,290 --> 00:10:44,061 is hierdie CS50 stres bal as jy dit. 236 00:10:44,061 --> 00:10:44,560 Alles reg. 237 00:10:44,560 --> 00:10:46,420 So jy het 32. 238 00:10:46,420 --> 00:10:48,430 Ons gaan benodig 42. 239 00:10:48,430 --> 00:10:51,410 So dit is 'n agt, so dit is 40. 240 00:10:51,410 --> 00:10:54,160 En excellent-- baie mooi gedoen. 241 00:10:54,160 --> 00:10:55,186 Dankie. 242 00:10:55,186 --> 00:10:58,790 >> [Applous] 243 00:10:58,790 --> 00:10:59,290 Alles reg. 244 00:10:59,290 --> 00:11:00,623 So ons het 'n meer stres bal. 245 00:11:00,623 --> 00:11:03,595 Kom ons hierdie keer meer te doen as wat ons kan. 246 00:11:03,595 --> 00:11:05,368 Een ander vrywilliger? 247 00:11:05,368 --> 00:11:07,970 Gratis stres bal, gratis stres bal. 248 00:11:07,970 --> 00:11:08,470 OK. 249 00:11:08,470 --> 00:11:11,640 Hier in die middel, doen wat jy wil om af te kom? 250 00:11:11,640 --> 00:11:14,100 Alles reg. 251 00:11:14,100 --> 00:11:15,552 Ek weet. 252 00:11:15,552 --> 00:11:16,360 Daar gaan ons. 253 00:11:16,360 --> 00:11:20,818 >> So het die getalle here-- kom neer. 254 00:11:20,818 --> 00:11:21,567 Wat is jou naam? 255 00:11:21,567 --> 00:11:21,984 >> DAVEY: Davey. 256 00:11:21,984 --> 00:11:22,820 >> David Malan: Davey. 257 00:11:22,820 --> 00:11:23,320 OK. 258 00:11:23,320 --> 00:11:24,810 Kom op, Davey. 259 00:11:24,810 --> 00:11:25,890 Aangename kennis. 260 00:11:25,890 --> 00:11:28,639 En wat ons gaan jy spell-- as jy daar kan vertoef 261 00:11:28,639 --> 00:11:32,810 vir net een moment-- is die getal 50. 262 00:11:32,810 --> 00:11:36,293 Maar, maar, maar maar, maar dit is graad skool magnete vir 'n rede. 263 00:11:36,293 --> 00:11:39,370 264 00:11:39,370 --> 00:11:43,327 Net 'n bietjie harder, alles reg? 265 00:11:43,327 --> 00:11:44,160 Daar is nog agt. 266 00:11:44,160 --> 00:11:46,820 267 00:11:46,820 --> 00:11:47,320 Alles reg. 268 00:11:47,320 --> 00:11:48,486 So wat het ons op daar? 269 00:11:48,486 --> 00:11:51,356 Ons het 32. 270 00:11:51,356 --> 00:11:54,344 Lekker. 271 00:11:54,344 --> 00:11:58,610 32 plus 16 gee vir ons 48-- so naby. 272 00:11:58,610 --> 00:12:00,390 En wonderlik. 273 00:12:00,390 --> 00:12:02,831 Baie geluk aan Davey sowel. 274 00:12:02,831 --> 00:12:05,720 >> [Applous] 275 00:12:05,720 --> 00:12:06,516 >> Alles reg. 276 00:12:06,516 --> 00:12:09,390 So kan ons dit doen die hele dag lank, en dit nie alles wat veel meer kry 277 00:12:09,390 --> 00:12:10,800 interessante en meer uitdagend. 278 00:12:10,800 --> 00:12:13,250 Maar dit is regtig die point-- is hoe relatief eenvoudige 279 00:12:13,250 --> 00:12:16,930 Dit is aan die einde van die dag, wat 'n rekenaar doen om inligting te stoor, 280 00:12:16,930 --> 00:12:21,740 om insette te slaan en uiteindelik stoor of verteenwoordig diegene uitgange. 281 00:12:21,740 --> 00:12:23,750 Maar getalle alleen nie alles wat interessant. 282 00:12:23,750 --> 00:12:26,069 >> So mense, 'n paar jaar gelede, besluit, jy weet wat? 283 00:12:26,069 --> 00:12:27,860 Dit sal lekker wees indien rekenaars was nie net 284 00:12:27,860 --> 00:12:31,030 sakrekenaars vir rekenkundige bedrywighede, maar eintlik kon 285 00:12:31,030 --> 00:12:35,209 doen dinge soos woordverwerking, of e-pos, of meer moderne inkarnasies 286 00:12:35,209 --> 00:12:36,500 van hierdie soort van tegnologie. 287 00:12:36,500 --> 00:12:40,680 En so het die wêreld besluit arbitrêr, maar universeel, 288 00:12:40,680 --> 00:12:44,380 As jy wil die hoofstad op te slaan letter A in 'n rekenaar, jy weet wat? 289 00:12:44,380 --> 00:12:47,730 Kom ons almal eens op te slaan 'n patroon van nulle en ones-- 290 00:12:47,730 --> 00:12:52,422 bits-- wat uiteindelik verteenwoordig die desimale getal 65. 291 00:12:52,422 --> 00:12:53,630 Ons sal net almal eens is oor wat. 292 00:12:53,630 --> 00:12:56,620 >> 66 sou verteenwoordig B, 67 sou C verteenwoordig, 293 00:12:56,620 --> 00:13:00,210 en daar is trosse van ander patrone van nulle en ene, of onderliggende getalle, 294 00:13:00,210 --> 00:13:02,224 wat sou verteenwoordig ander briewe steeds. 295 00:13:02,224 --> 00:13:04,390 So as jy n soort van verstandelik absorbeer dit vir 'n oomblik, 296 00:13:04,390 --> 00:13:10,900 Ek doelbewus sit 'n deur Ek, waar H 'n 72 en ek is 73. 297 00:13:10,900 --> 00:13:15,830 As 'n rekenaar dan, in die konteks van 'n woordverwerkingsprogram of 'n e-pos, 298 00:13:15,830 --> 00:13:19,620 aan die lig gebring onder die enjinkap te hê hierdie patrone van bits-- patroon 299 00:13:19,620 --> 00:13:22,500 bisse verteenwoordig 72, dan 73, dan 33-- 300 00:13:22,500 --> 00:13:26,640 Wat beteken hierdie spel in die program? 301 00:13:26,640 --> 00:13:28,150 >> So hi, en dan is daar iets. 302 00:13:28,150 --> 00:13:31,460 Ons hoef nie noodwendig weet nie, maar wel 33-- nie op die grafiek earlier-- 303 00:13:31,460 --> 00:13:33,170 was net 'n uitroepteken. 304 00:13:33,170 --> 00:13:38,870 So 72 was H, 73 is ek, 33 gebeur 'n uitroepteken steeds. 305 00:13:38,870 --> 00:13:41,719 Maar dit is alles goed en wel, en in die feit deesdae, eerder as om 306 00:13:41,719 --> 00:13:43,760 net gebruik sewe of agt stukkies, te danke aan iets 307 00:13:43,760 --> 00:13:46,530 genoem Unicode in teenstelling om terug te ASCII in die dag, 308 00:13:46,530 --> 00:13:50,010 Ons kan eintlik nog meer verteenwoordig interessante karakters as net 309 00:13:50,010 --> 00:13:52,980 Hierdie oorspronklike Engelse bevooroordeeld briewe. 310 00:13:52,980 --> 00:13:56,030 Maar ons kan ook selfs verteenwoordig netjieser dinge soos kleure. 311 00:13:56,030 --> 00:13:59,750 >> As jy al ooit die afkorting gehoor RGB, rooi, groen, blou, wat 312 00:13:59,750 --> 00:14:03,510 net beteken dat 'n rekenaar gebruik tipies drie stelle bits-- 313 00:14:03,510 --> 00:14:06,760 sommige aantal bisse wat verteenwoordig 'n nommer vir hoeveel rooi wat jy wil, 314 00:14:06,760 --> 00:14:08,940 'n ander stel van stukkies vir hoeveel groen wat jy wil, 315 00:14:08,940 --> 00:14:11,430 en 'n ander stel nommer vir hoeveel blou jy wil. 316 00:14:11,430 --> 00:14:14,457 So 'n groot aantal beteken baie rooi, klein aantal beteken nie rooi. 317 00:14:14,457 --> 00:14:16,290 En so dit is soort van middel waardes hier. 318 00:14:16,290 --> 00:14:20,180 >> So gee my 'n paar rooi, gee my 'n paar groen, en gee my 'n bietjie blou. 319 00:14:20,180 --> 00:14:24,260 En as jy meng die drie skakerings van kleur saam, in hierdie geval, 320 00:14:24,260 --> 00:14:26,850 jy hierdie donker skaduwee geel of bruin. 321 00:14:26,850 --> 00:14:32,330 Maar dit patroon van agt plus agt plus eight-- so 24 bits-- 322 00:14:32,330 --> 00:14:36,550 links na regs, is hoe 'n rekenaar sou daardie spesifieke kleur verteenwoordig. 323 00:14:36,550 --> 00:14:38,090 En dit is net 'n punt op 'n skerm. 324 00:14:38,090 --> 00:14:42,230 As jy kyk regtig naby aan jou TV jou rekenaar, sal jy sien kolle of pixels. 325 00:14:42,230 --> 00:14:45,420 En as jy 'n hele netwerk van pixels, horisontaal en vertikaal, 326 00:14:45,420 --> 00:14:46,630 jy beelde. 327 00:14:46,630 --> 00:14:49,029 En dan as jy neem 'n beeld en dan was 328 00:14:49,029 --> 00:14:52,070 wys jouself 'n ander beeld, 'n ander beeld, 'n ander beeld, 'n ander beeld, 329 00:14:52,070 --> 00:14:54,760 baie vinnig, jy natuurlik het films. 330 00:14:54,760 --> 00:14:56,109 >> En so sien waar ons begin het. 331 00:14:56,109 --> 00:14:57,650 Ons het begin met hierdie nulle en ene. 332 00:14:57,650 --> 00:15:00,570 Ons het van daar af na desimaal getalle, hoe ons verteenwoordig het. 333 00:15:00,570 --> 00:15:02,070 Nou het ons letters van die alfabet. 334 00:15:02,070 --> 00:15:05,664 Maar in ander kontekste wag, kan ons gebruik nog 'n paar stukkies en verteenwoordig kleure. 335 00:15:05,664 --> 00:15:07,830 Sodra jy die vermoë om kleure verteenwoordig, 336 00:15:07,830 --> 00:15:11,200 jy het die vermoë om te verteenwoordig foto's en animated gifs 337 00:15:11,200 --> 00:15:13,780 en ander sulke karakters op die skerm. 338 00:15:13,780 --> 00:15:17,160 En wanneer jy 'n hele klomp van die beelde wat deur die menslike gelyktydig, 339 00:15:17,160 --> 00:15:21,480 dit lyk soos rolprente, en so kry jy video's sowel. 340 00:15:21,480 --> 00:15:23,460 >> So die gebruik van hierdie baie eenvoudige primitiewes doen ons 341 00:15:23,460 --> 00:15:28,070 het die weg van wat uiteindelik al hierdie vorme van media. 342 00:15:28,070 --> 00:15:30,450 En ons het weer onttrek en weer en weer, totdat ons 343 00:15:30,450 --> 00:15:33,467 kry van die laagste vlak om hierdie hoogste vlak. 344 00:15:33,467 --> 00:15:35,550 So dit gee ons hierdie algemene idee van onttrekking. 345 00:15:35,550 --> 00:15:36,990 Maar ons hier begin. 346 00:15:36,990 --> 00:15:38,790 >> nou hier, kan ons verteenwoordig in 'n rekenaar 347 00:15:38,790 --> 00:15:41,920 ons insette met nulle en ene, ons uitsette in nulle en ene, 348 00:15:41,920 --> 00:15:43,640 Maar wat gaan binne-in die boks? 349 00:15:43,640 --> 00:15:46,080 Dit is waar die rekenaar wetenskap kry interessant. 350 00:15:46,080 --> 00:15:49,770 Dit is waar jy eintlik bring jou eie gedagtes uit te oefen om probleme op te los. 351 00:15:49,770 --> 00:15:52,590 Ons kan nou bepaal, vir die res van die semester, ja. 352 00:15:52,590 --> 00:15:53,870 Ek weet hoe binêre werke. 353 00:15:53,870 --> 00:15:57,942 Ek onthou hoe Ascii of Unicode-- die kartering werke letters--. 354 00:15:57,942 --> 00:15:59,650 En dit is beslis staan om dat ons redeneer 355 00:15:59,650 --> 00:16:03,470 kon rooi en groen verteenwoordig en pers en verteenwoordig multimedia sowel. 356 00:16:03,470 --> 00:16:05,390 Maar dit is die interessante dinge. 357 00:16:05,390 --> 00:16:09,790 Dit is wat iemand maak in staat is om probleme op te los. 358 00:16:09,790 --> 00:16:11,980 >> En een so 'n probleem ons wil doen, wel, 359 00:16:11,980 --> 00:16:15,345 neem bywoning, of om dit te doen algoritmies. 360 00:16:15,345 --> 00:16:16,470 En weer, kan ek dit doen. 361 00:16:16,470 --> 00:16:19,580 Ek kan een, twee, drie, vier doen vyf, ses, sewe, agt nege. 362 00:16:19,580 --> 00:16:21,520 En ek kon dit skryf af te spoor daarvan hou. 363 00:16:21,520 --> 00:16:23,769 Maar dit is net hoe ek sou verteenwoordig die inligting. 364 00:16:23,769 --> 00:16:27,550 Of ek kan dit doen faster-- twee, vier, ses, agt, tien, 12, 14, 16, 18, 20, 365 00:16:27,550 --> 00:16:30,380 22-- dit voel soos twee keer so vinnig, maar dit is nog steeds 366 00:16:30,380 --> 00:16:32,050 gaan 'n hele klomp van die tyd te neem. 367 00:16:32,050 --> 00:16:35,990 >> Maar dit blyk dat as ons nog hefboom 'n ander resource-- en inderdaad rekenaars 368 00:16:35,990 --> 00:16:38,940 deesdae verskeie CPUs of brein. 369 00:16:38,940 --> 00:16:41,970 Dit blyk rekenaars doen baie dinge op een slag, 370 00:16:41,970 --> 00:16:44,460 en inderdaad ons, in hierdie kamer, dalk presies hierdie verteenwoordig. 371 00:16:44,460 --> 00:16:47,130 >> Dit is dus 'n bietjie sosiaal ongemaklike, maar as jy sou humor my 372 00:16:47,130 --> 00:16:51,550 vir net 'n drie-stap proses, laat my vra almal in plek is daar net 373 00:16:51,550 --> 00:16:54,640 om op te staan ​​vir 'n oomblik. 374 00:16:54,640 --> 00:16:57,380 Staan op. 375 00:16:57,380 --> 00:17:01,580 So dink aan jouself, aantal one-- sodat almal in hierdie kamer, 376 00:17:01,580 --> 00:17:05,010 behalwe die mense wat nie dwing, dink nommer een. 377 00:17:05,010 --> 00:17:06,510 So dit is jou nommer nou. 378 00:17:06,510 --> 00:17:09,399 Dit is die eerste stap, of as 'n rekenaarwetenskaplike of 'n programmeerder 379 00:17:09,399 --> 00:17:11,827 sou tipies doen, ons gaan om te begin tel op nul. 380 00:17:11,827 --> 00:17:14,410 As die kleinste getal wat ons kan verteenwoordig met dié gloeilampe 381 00:17:14,410 --> 00:17:17,410 nul, deur net hulle verlaat al af, ek kan net sowel 382 00:17:17,410 --> 00:17:19,271 begin tel uit nul is in plaas van een. 383 00:17:19,271 --> 00:17:21,020 En so dit is wat rekenaar wetenskaplikes doen. 384 00:17:21,020 --> 00:17:23,750 So stap nul, opstaan ​​en Dink maar aan die nommer een. 385 00:17:23,750 --> 00:17:26,339 Die volgende stap is this-- paar af met iemand staan 386 00:17:26,339 --> 00:17:27,660 en voeg jou getalle bymekaar. 387 00:17:27,660 --> 00:17:30,660 388 00:17:30,660 --> 00:17:32,850 Wonderlik. 389 00:17:32,850 --> 00:17:37,640 >> So op hierdie oomblik in tyd, letterlik almal wat deelneem 390 00:17:37,640 --> 00:17:41,930 dink van die nommer 2, behalwe vir 'n vreemde persoon as ons 391 00:17:41,930 --> 00:17:43,450 'n onewe aantal mense in die kamer. 392 00:17:43,450 --> 00:17:50,640 En nou die derde stap hier gaan word this-- een van julle moet gaan sit. 393 00:17:50,640 --> 00:17:54,490 Een van julle moet gaan sit, en as jy nog steeds staan, 394 00:17:54,490 --> 00:17:56,590 gaan terug na een stap. 395 00:17:56,590 --> 00:18:44,799 396 00:18:44,799 --> 00:18:45,790 Alles reg. 397 00:18:45,790 --> 00:19:00,760 398 00:19:00,760 --> 00:19:01,650 Alles reg. 399 00:19:01,650 --> 00:19:03,880 Sodat meer en meer mense moet word sit. 400 00:19:03,880 --> 00:19:08,280 Let daarop dat hierdie is veroorsaak 'n loop-- 'n soort van siklus. 401 00:19:08,280 --> 00:19:11,983 Sommige van julle moet ongemaklik vas wees, heen en weer gaan tussen stap een 402 00:19:11,983 --> 00:19:14,180 en twee, een en twee, een en twee. 403 00:19:14,180 --> 00:19:21,190 404 00:19:21,190 --> 00:19:21,810 Dit is OK. 405 00:19:21,810 --> 00:19:22,630 Ons eerste fout. 406 00:19:22,630 --> 00:19:24,740 Ons sal gaan met dit. 407 00:19:24,740 --> 00:19:25,320 Alles reg. 408 00:19:25,320 --> 00:19:27,370 Laat ek probeer om dinge te spoor langs. 409 00:19:27,370 --> 00:19:31,454 >> In teorie, is net een persoon wat as almal gaan voort om af te paar. 410 00:19:31,454 --> 00:19:33,870 Maar laat my dinge bespoedig met die mense nog steeds staan. 411 00:19:33,870 --> 00:19:35,480 Watter getal dink jy van? 412 00:19:35,480 --> 00:19:36,070 46. 413 00:19:36,070 --> 00:19:36,570 OK. 414 00:19:36,570 --> 00:19:37,820 Gaan voort en gaan sit. 415 00:19:37,820 --> 00:19:39,190 Julle staan ​​nog steeds. 416 00:19:39,190 --> 00:19:42,130 Wie bly staan? 417 00:19:42,130 --> 00:19:45,240 Watter getal dink jy van? 418 00:19:45,240 --> 00:19:46,160 OK. 419 00:19:46,160 --> 00:19:47,900 >> So sal ons na julle terugkom. 420 00:19:47,900 --> 00:19:49,630 In die agterkant? 421 00:19:49,630 --> 00:19:50,790 Wat is dit? 422 00:19:50,790 --> 00:19:53,100 22. 423 00:19:53,100 --> 00:19:56,540 OK iemand anders op top-- ja? 424 00:19:56,540 --> 00:19:57,720 34. 425 00:19:57,720 --> 00:19:58,300 OK. 426 00:19:58,300 --> 00:20:02,780 Hier op my right-- hier? 427 00:20:02,780 --> 00:20:06,820 132, baie mooi. 428 00:20:06,820 --> 00:20:08,380 22? 429 00:20:08,380 --> 00:20:08,990 >> OK. 430 00:20:08,990 --> 00:20:10,031 En wie is nog steeds staan? 431 00:20:10,031 --> 00:20:11,000 Hier? 432 00:20:11,000 --> 00:20:14,520 46, baie mooi. 433 00:20:14,520 --> 00:20:16,890 72. 434 00:20:16,890 --> 00:20:18,220 Ek kan nie veel langer stalletjie. 435 00:20:18,220 --> 00:20:20,520 Ja? 436 00:20:20,520 --> 00:20:22,490 30, mooi. 437 00:20:22,490 --> 00:20:24,120 Hier? 438 00:20:24,120 --> 00:20:26,200 23? 439 00:20:26,200 --> 00:20:27,270 23. 440 00:20:27,270 --> 00:20:30,920 >> En ek dink dit is almal behalwe julle, geen druk. 441 00:20:30,920 --> 00:20:32,860 O, wag. 442 00:20:32,860 --> 00:20:33,360 28? 443 00:20:33,360 --> 00:20:37,500 444 00:20:37,500 --> 00:20:38,281 Net agt. 445 00:20:38,281 --> 00:20:38,780 OK. 446 00:20:38,780 --> 00:20:41,030 Net agt. 447 00:20:41,030 --> 00:20:42,580 Down hier? 448 00:20:42,580 --> 00:20:44,570 30. 449 00:20:44,570 --> 00:20:47,344 23. 450 00:20:47,344 --> 00:20:47,843 24. 451 00:20:47,843 --> 00:20:50,810 452 00:20:50,810 --> 00:20:52,310 18. 453 00:20:52,310 --> 00:20:54,690 Dit is die ergste implementering van hierdie algoritme ooit. 454 00:20:54,690 --> 00:20:55,190 OK. 455 00:20:55,190 --> 00:20:59,760 So iemand anders? 456 00:20:59,760 --> 00:21:00,421 Enige iemand anders? 457 00:21:00,421 --> 00:21:00,920 OK. 458 00:21:00,920 --> 00:21:03,300 Nog een. 459 00:21:03,300 --> 00:21:04,400 16? 460 00:21:04,400 --> 00:21:04,900 OK. 461 00:21:04,900 --> 00:21:05,510 16. 462 00:21:05,510 --> 00:21:06,010 Alles reg. 463 00:21:06,010 --> 00:21:09,070 So as ek nie gemis iemand in die glans hier, toe ek druk Enter, 464 00:21:09,070 --> 00:21:13,091 ons sal sien, algoritmies, die totale aantal mense in Sanders. 465 00:21:13,091 --> 00:21:16,340 Omdat weer, dis asof almal as jy gaan sit, geslaag jou nommer af 466 00:21:16,340 --> 00:21:19,215 om iemand anders, aan iemand anders, om iemand anders, sodat in teorie, 467 00:21:19,215 --> 00:21:22,304 Op die ou end net een ongemaklike persoon moet staande gelaat. 468 00:21:22,304 --> 00:21:22,970 Maar dit is goed. 469 00:21:22,970 --> 00:21:24,290 Ons jaag dinge met die hand. 470 00:21:24,290 --> 00:21:27,590 Dit is veral moeilik om te sien in hierdie spesifieke ruimte. 471 00:21:27,590 --> 00:21:34,200 >> En die totale aantal mense Ons dink daar is hier is 546. 472 00:21:34,200 --> 00:21:37,330 Die totale getal Ek oorhandig deur die onderrig genote, 473 00:21:37,330 --> 00:21:40,660 wat die ou gedoen het skool stadige manier, was 820. 474 00:21:40,660 --> 00:21:43,660 >> [ROOIBORSDUIFIE] 475 00:21:43,660 --> 00:21:47,170 >> [Applous] 476 00:21:47,170 --> 00:21:48,670 >> Dit is OK. 477 00:21:48,670 --> 00:21:50,740 So ja, dan is daar hierdie foute. 478 00:21:50,740 --> 00:21:51,460 En dit is goed. 479 00:21:51,460 --> 00:21:53,810 En so terugdink aan hierdie die eerste keer iets 480 00:21:53,810 --> 00:21:55,420 jy skryf nie noodwendig werk. 481 00:21:55,420 --> 00:21:57,620 Dit het met my gebeur het hier so goed. 482 00:21:57,620 --> 00:22:00,844 Maar laat ons nou kyk hoe ons kan toepas dieselfde idee om iets 483 00:22:00,844 --> 00:22:03,760 jy dalk gesien het nie, wat is hierdie ou skool tegnologie here-- 484 00:22:03,760 --> 00:22:05,130 'n baie groot telefoon boek. 485 00:22:05,130 --> 00:22:09,380 En veronderstel dat hierdie telefoon boek het 1000 bladsye en 1000 name 486 00:22:09,380 --> 00:22:11,360 en getalle alfabeties binnekant van dit. 487 00:22:11,360 --> 00:22:14,860 >> Wel, ons kon soort pas 'n soortgelyke idee om hierdie baie fisieke probleem, 488 00:22:14,860 --> 00:22:16,270 net die gebruik van my. 489 00:22:16,270 --> 00:22:18,810 Ek het net soort van verkul deur gebruik te maak van al jou 490 00:22:18,810 --> 00:22:23,240 met baie en baie van die verskillende CPUs of brein uitvoering paar algoritme. 491 00:22:23,240 --> 00:22:25,440 Maar al is dit net bietjie ou my, kan ek nog steeds 492 00:22:25,440 --> 00:22:29,630 hefboom dieselfde essensie van 'n idee verdeel en 'n oorwinnaar dat die probleem 493 00:22:29,630 --> 00:22:32,970 weer en weer, waardeur die helfte van julle, helfte van julle, die helfte van u, die helfte van u, 494 00:22:32,970 --> 00:22:35,830 teoreties gehou sit totdat ons oorgebly het, teoreties, 495 00:22:35,830 --> 00:22:36,990 met net een persoon. 496 00:22:36,990 --> 00:22:39,810 >> So in hierdie ou skool technology-- ons doen nie 497 00:22:39,810 --> 00:22:43,030 moet hierdie map-- hierdie ou skool tegnologie, 498 00:22:43,030 --> 00:22:47,300 Ons kan begin soek na iemand wil Mike Smith, een bladsy op 'n slag. 499 00:22:47,300 --> 00:22:49,410 En ek sien dat daar geen, Mike is nie hier nie. 500 00:22:49,410 --> 00:22:51,110 Ek is nog steeds in die A-afdeling. 501 00:22:51,110 --> 00:22:53,900 Uiteindelik vind ek myself in die afdeling B. 502 00:22:53,900 --> 00:22:56,910 En dit is 'n algorithm-- stap-vir-stap-instruksies. 503 00:22:56,910 --> 00:22:59,890 Begin by die begin en een bladsy op 'n tyd, kyk vir Mike Smith. 504 00:22:59,890 --> 00:23:03,410 Is dit correct-- hierdie algoritme of benadering? 505 00:23:03,410 --> 00:23:04,550 >> Ja, dit is korrek. 506 00:23:04,550 --> 00:23:06,840 As Mike's hier, uiteindelik Ek kry hom. 507 00:23:06,840 --> 00:23:08,139 Maar dit is nie doeltreffend. 508 00:23:08,139 --> 00:23:09,180 Dit is natuurlik 'n baie stadig. 509 00:23:09,180 --> 00:23:11,340 So ek kan die invloed van die Dieselfde twosies benader. 510 00:23:11,340 --> 00:23:15,350 Ek kan soort van twee doen, vier, ses, agt, 10, 12. 511 00:23:15,350 --> 00:23:16,330 Dit is twee keer so vinnig. 512 00:23:16,330 --> 00:23:18,290 Ek gaan Mike te kry vinniger as hy daar. 513 00:23:18,290 --> 00:23:20,770 Is dit korrek? 514 00:23:20,770 --> 00:23:22,320 Ja, maar ek het 'n little-- no. 515 00:23:22,320 --> 00:23:24,200 Nou hoor ek 'n no. 516 00:23:24,200 --> 00:23:24,700 Ja. 517 00:23:24,700 --> 00:23:26,190 Daar is 'n fout potensieel. 518 00:23:26,190 --> 00:23:29,374 Miskien Mike net per ongeluk raak landgebonde tussen twee bladsye, 519 00:23:29,374 --> 00:23:31,290 want ek vlieg deur hierdie twee op 'n slag. 520 00:23:31,290 --> 00:23:33,580 So ten minste wat ons nodig het 'n paar soort voorwaardelike fix. 521 00:23:33,580 --> 00:23:35,330 Ek moet sê, hey, As ek getref iemand wie se 522 00:23:35,330 --> 00:23:39,190 naam begin met 'n T in plaas van 'n S, Ek beter verdubbel ten minste een bladsy terug. 523 00:23:39,190 --> 00:23:40,767 So karretjie op die eerste, maar fixable. 524 00:23:40,767 --> 00:23:43,850 Maar niemand van ons gaan om te kyk vir Mike Smith deur 'n 1000 bladsy selfoon 525 00:23:43,850 --> 00:23:45,290 Bespreek een bladsy op 'n slag. 526 00:23:45,290 --> 00:23:48,486 Wat is 'n normale persoon gaan doen? 527 00:23:48,486 --> 00:23:50,860 Jy gaan om te gaan na die S se As jy geweet het waar die S se. 528 00:23:50,860 --> 00:23:54,230 Jy kan rofweg gaan na die middel of effens skeef teen die einde. 529 00:23:54,230 --> 00:23:56,850 En ek sien hier af en Ek is in die M-afdeling. 530 00:23:56,850 --> 00:23:58,952 Maar wat weet jy oor hierdie probleem nou, 531 00:23:58,952 --> 00:24:02,160 dat ons nie noodwendig weet voordat met almal van ons net tel onsself 532 00:24:02,160 --> 00:24:03,030 anders gestel? 533 00:24:03,030 --> 00:24:06,010 Wel, Mike is duidelik gaan te wees in hierdie deel van die boek 534 00:24:06,010 --> 00:24:07,920 As hy hier glad, want dit is gesorteer. 535 00:24:07,920 --> 00:24:10,160 >> En so kan jy baie dramatically-- 536 00:24:10,160 --> 00:24:11,250 >> [Snak] 537 00:24:11,250 --> 00:24:12,300 >> Ek weet. 538 00:24:12,300 --> 00:24:16,940 >> [Applous] 539 00:24:16,940 --> 00:24:19,450 >> Dit is eintlik baie maklik as jy doen dit in die rug is daar. 540 00:24:19,450 --> 00:24:22,070 Maar jy kan dan gooi helfte van die probleem weg. 541 00:24:22,070 --> 00:24:25,950 Nou, ek sit met dieselfde problem-- vind Mike Smith in 'n telefoon book-- 542 00:24:25,950 --> 00:24:29,610 maar nou is die telefoon boek begin by M en gaan na Z, maar dit is die helfte so groot. 543 00:24:29,610 --> 00:24:30,890 >> Maar dit is wat is indrukwekkend. 544 00:24:30,890 --> 00:24:34,170 Net soos in teorie, julle ouens, wanneer julle almal gaan sit net die helfte van 'n tyd, 545 00:24:34,170 --> 00:24:37,150 die probleem het die helfte so groot, helfte so groot, weer en weer. 546 00:24:37,150 --> 00:24:40,260 So het hierdie probleem geword het van die dieselfde probleem, maar die helfte so groot. 547 00:24:40,260 --> 00:24:42,670 Nou is dit 'n 250 bladsy probleem. 548 00:24:42,670 --> 00:24:45,340 Sodra ek besef, o, ek is in die T artikel ongeluk. 549 00:24:45,340 --> 00:24:46,590 Ek het te ver gegaan. 550 00:24:46,590 --> 00:24:48,500 Ek kan die helfte gooi van die telefoon boek weg. 551 00:24:48,500 --> 00:24:50,410 Nou, ek is af na 'n kwart van die probleem. 552 00:24:50,410 --> 00:24:53,910 >> En jy kan herhaal, herhaal, herhaal totdat, in teorie, is jy 553 00:24:53,910 --> 00:24:55,460 gelaat met net een bladsy. 554 00:24:55,460 --> 00:24:59,010 En as Mike is op die bladsy, Ek kan nou hierdie probleem op te los. 555 00:24:59,010 --> 00:25:00,810 Maar hoe vinnig het ek los dit? 556 00:25:00,810 --> 00:25:05,420 In die eerste geval, dit het my soos ' Miskien 1000 stappe om Mike Smith vind. 557 00:25:05,420 --> 00:25:09,260 Dit sou geneem me-- Ek opgetel het die telefoon boek 558 00:25:09,260 --> 00:25:11,440 en ek begin soek een bladsy op 'n tyd, 559 00:25:11,440 --> 00:25:13,480 en Mike dalk 1000 bladsye later word. 560 00:25:13,480 --> 00:25:16,020 >> Tweede benadering miskien neem my 500 stappe, 561 00:25:16,020 --> 00:25:17,960 want ek vlieg deur twee op 'n slag. 562 00:25:17,960 --> 00:25:21,082 En die derde benadering egter dis veral kragtig. 563 00:25:21,082 --> 00:25:23,790 Maar laat ons kyk wat ons eintlik het met hierdie derde benadering. 564 00:25:23,790 --> 00:25:27,590 Ek sal wat ek sal noem net hierdie stellings hier, een op 'n slag. 565 00:25:27,590 --> 00:25:28,560 Pick 'n telefoon boek. 566 00:25:28,560 --> 00:25:30,130 Oop vir die middel van die telefoon boek. 567 00:25:30,130 --> 00:25:31,419 Kyk na name. 568 00:25:31,419 --> 00:25:33,960 En dan dinge 'n bietjie meer intellektueel interessante, 569 00:25:33,960 --> 00:25:35,170 As nog eenvoudig. 570 00:25:35,170 --> 00:25:38,350 As Smith is een van die name op dat die huidige bladsy, 571 00:25:38,350 --> 00:25:40,170 dan iets te doen voorwaardelik. 572 00:25:40,170 --> 00:25:41,840 Dis soos 'n vurk in die pad. 573 00:25:41,840 --> 00:25:42,660 Bel Mike. 574 00:25:42,660 --> 00:25:44,930 As Mike is een van die name op daardie bladsy, genoem Mike. 575 00:25:44,930 --> 00:25:49,720 Maar net lyn vier as lyn boom, as jy wil, waar is. 576 00:25:49,720 --> 00:25:51,590 Die antwoord op daardie vraag is ja. 577 00:25:51,590 --> 00:25:55,520 >> Anders as Smith is vroeër in die book-- Met ander woorde, as ek in die M artikel 578 00:25:55,520 --> 00:25:58,540 en ek is op soek na iemand om te links, dan wat ek moet doen 579 00:25:58,540 --> 00:26:00,300 is iets baie soortgelyk. 580 00:26:00,300 --> 00:26:03,440 Dan moet ek maak om die middel van die linkerhelfte van die boek. 581 00:26:03,440 --> 00:26:07,930 So gaan verlaat, en dan gaan terug na stap twee. 582 00:26:07,930 --> 00:26:09,290 Kyk na die name daar. 583 00:26:09,290 --> 00:26:12,779 >> So met ander woorde, doen dieselfde ding, maar op 'n probleem wat al gehalveer. 584 00:26:12,779 --> 00:26:13,570 Jy weet wat anders? 585 00:26:13,570 --> 00:26:16,470 As Smith is later in die boek gebaseer op die bladsy wat ek is op soek na, 586 00:26:16,470 --> 00:26:18,790 oop vir die middel van die regter helfte van die boek 587 00:26:18,790 --> 00:26:22,050 en weer terug gaan dan te stap twee, else-- 588 00:26:22,050 --> 00:26:24,000 daar is 'n vierde moontlikheid hier. 589 00:26:24,000 --> 00:26:28,830 Mike se hetsy hier of links of na regs of daar nie. 590 00:26:28,830 --> 00:26:30,570 En hier is ons beter beskou dit. 591 00:26:30,570 --> 00:26:33,360 En in werklikheid, as jy al ooit gehad het jou rekenaar net crash op jou, 592 00:26:33,360 --> 00:26:36,822 dit is soms, maar nie altyd nie, die gevolg van net 'n menslike programmeerder nie 593 00:26:36,822 --> 00:26:39,280 besef, o skiet, daar is eintlik hierdie vierde scenario. 594 00:26:39,280 --> 00:26:41,650 En as jy nie kode te skryf om daardie scenario te hanteer, 595 00:26:41,650 --> 00:26:43,220 Soms moet jy weet nie wat die rekenaar kan doen. 596 00:26:43,220 --> 00:26:44,770 En inderdaad 'n program kan crash. 597 00:26:44,770 --> 00:26:47,550 >> Maar in hierdie geval, het ek gedink daaroor, en ek het gesê, anders hou, 598 00:26:47,550 --> 00:26:49,850 want dit is die vierde logiese moontlike scenario. 599 00:26:49,850 --> 00:26:51,950 Nou, laat ons net by te voeg sommige woordeskat sodat ons 600 00:26:51,950 --> 00:26:55,320 kan begin om te gooi om terme wat is anders mooi intuïtief. 601 00:26:55,320 --> 00:26:57,870 Al die dinge wat ek net uitgelig in geel hier, 602 00:26:57,870 --> 00:27:00,140 Ek gaan net om die funksies of prosedures. 603 00:27:00,140 --> 00:27:01,590 Hulle is net soort optrede. 604 00:27:01,590 --> 00:27:04,900 So haal, oop vir, kyk op, bel, oop, oop, 605 00:27:04,900 --> 00:27:09,170 quit-- dit is net stappe, of ons sal noem dit meer formeel, funksies. 606 00:27:09,170 --> 00:27:11,410 >> Intussen het nou in geel, Ek het dinge uitgelig 607 00:27:11,410 --> 00:27:14,084 that-- laat ons net begin roep hulle omstandighede of takke. 608 00:27:14,084 --> 00:27:16,750 Dit is besluit punte waar jy dalk op hierdie manier gaan, op hierdie manier, 609 00:27:16,750 --> 00:27:18,100 of 'n ander rigting steeds. 610 00:27:18,100 --> 00:27:19,430 So diegene sal wees voorwaardes. 611 00:27:19,430 --> 00:27:20,930 En nou hierdie een is 'n bietjie liefhebber. 612 00:27:20,930 --> 00:27:24,600 Kom ons noem hierdie vrae Boolse uitdrukkings, 613 00:27:24,600 --> 00:27:26,530 na iemand met 'n naam Bool. 614 00:27:26,530 --> 00:27:28,340 >> En 'n Boole-uitdrukking is net iets 615 00:27:28,340 --> 00:27:30,290 dit is waar of vals, ja of nee. 616 00:27:30,290 --> 00:27:35,870 Dit is dus die vraag wie antwoord wat jy omgee, ten einde in 'n toestand 617 00:27:35,870 --> 00:27:39,210 'n decision-- terug te kry 'n antwoord, en dan gaan jy links of regs, of iets 618 00:27:39,210 --> 00:27:40,450 heeltemal anders. 619 00:27:40,450 --> 00:27:42,860 >> En dan laastens, hierdie lyne here-- terug te gaan 620 00:27:42,860 --> 00:27:44,737 te stap twee, gaan terug om two-- stap ons kon 621 00:27:44,737 --> 00:27:46,320 uitvoering van hierdie idee in verskillende maniere. 622 00:27:46,320 --> 00:27:49,028 En dan dié van julle met programming ervaring kan gedoen 623 00:27:49,028 --> 00:27:50,670 of kan dink dit anders te doen. 624 00:27:50,670 --> 00:27:53,170 Maar vir doeleindes vandag, dis net die idee wat tel. 625 00:27:53,170 --> 00:27:55,400 Dit is induserende wat Ons sal oor die algemeen noem 626 00:27:55,400 --> 00:28:00,110 'n loop-- 'n soort van siklus, want dit maak my weer iets te doen. 627 00:28:00,110 --> 00:28:03,340 >> So nou, laat ons net oorweeg hoe goed hierdie algoritme is. 628 00:28:03,340 --> 00:28:03,899 Dit is korrek. 629 00:28:03,899 --> 00:28:06,940 As Mike se belang in die boek, dit is een van hierdie vier scenarios-- weer en weer 630 00:28:06,940 --> 00:28:08,023 en weer, sal ons hom nou juis aantref. 631 00:28:08,023 --> 00:28:08,890 Maar hoe goed is dit? 632 00:28:08,890 --> 00:28:10,150 Wel, ons het nie om hier te formeel wees. 633 00:28:10,150 --> 00:28:12,066 Maar laat ons net stip iets, x en y, uit te kom 634 00:28:12,066 --> 00:28:14,470 'n gevoel van die vorm van hierdie probleem. 635 00:28:14,470 --> 00:28:17,160 >> Op die x-as hier is die grootte van my probleem. 636 00:28:17,160 --> 00:28:20,256 En hulle het 'n y-as hier sal die tyd om op te los. 637 00:28:20,256 --> 00:28:21,630 So miskien is hierdie aantal bladsye. 638 00:28:21,630 --> 00:28:24,400 Miskien is dit sekondes of bladsy turns-- wat ook al. 639 00:28:24,400 --> 00:28:27,290 Maar jy wil om te tel is wat hierdie foto sal verteenwoordig. 640 00:28:27,290 --> 00:28:30,630 Hierdie eerste algoritme, ek gaan beskryf as net 'n reguit lyn. 641 00:28:30,630 --> 00:28:33,120 As daar 'n bladsye in die telefoon boek, dan is dit 642 00:28:33,120 --> 00:28:36,010 dalk my te vang soveel as N stappe om Mike vind. 643 00:28:36,010 --> 00:28:38,930 As Verizon of die telefoon maatskappy voeg nog 'n Volgende jaar, 644 00:28:38,930 --> 00:28:42,170 dit kan my neem nog een step-- nog 'n eenheid van tyd tot Mike vind. 645 00:28:42,170 --> 00:28:44,230 Daar is dus net hierdie 12:59 verhouding. 646 00:28:44,230 --> 00:28:45,970 Dit is 'n reguit lyn helling. 647 00:28:45,970 --> 00:28:49,110 >> Intussen het die tweede algorithm-- as ek 648 00:28:49,110 --> 00:28:51,570 gaan twee op 'n time-- twee, vier, ses, agt, of double-- 649 00:28:51,570 --> 00:28:54,550 gaan deur die bladsye twee keer op 'n tyd, twee op 'n tyd, 650 00:28:54,550 --> 00:28:55,710 dit is nog steeds reguit lyn. 651 00:28:55,710 --> 00:28:58,720 Daar is nou 'n 1-2 verhouding, maar net 'n bietjie laer. 652 00:28:58,720 --> 00:29:02,240 So as daar is soveel bladsye op die grafiek hier in geel, 653 00:29:02,240 --> 00:29:04,800 wat my kon neem hierdie baie stappe of sekondes, 654 00:29:04,800 --> 00:29:07,980 anders dit gaan om my te vang twee keer soveel op die rooi lyn. 655 00:29:07,980 --> 00:29:10,190 >> Maar die groen lyn is die ware afhaal. 656 00:29:10,190 --> 00:29:12,290 Dit is wat ons in die algemeen roep 'n logorithm-- log 657 00:29:12,290 --> 00:29:13,840 van N, waar N die aantal bladsye. 658 00:29:13,840 --> 00:29:16,450 Maar dit is die vorm wat saak maak vandag, want ons het nie ' 659 00:29:16,450 --> 00:29:17,950 om selfs te dink oor die plot punte. 660 00:29:17,950 --> 00:29:19,830 >> Dink aan 'n uiterste scenario. 661 00:29:19,830 --> 00:29:23,070 Veronderstel Verizon môre verdubbel die aantal bladsye in daardie telefoon boek, 662 00:29:23,070 --> 00:29:24,900 vanaf 1000 tot 2000. 663 00:29:24,900 --> 00:29:28,440 In die eerste algoritme, ek kan mors 'n ekstra 1000 664 00:29:28,440 --> 00:29:32,080 stappe op soek na Mike, net omdat Verizon verdubbel die grootte van die boek. 665 00:29:32,080 --> 00:29:34,740 Die tweede algorithm-- dit dalk neem my 'n ekstra 500 stappe. 666 00:29:34,740 --> 00:29:38,370 1000 meer bladsye, ek gaan twee op 'n time-- 500 meer stappe te Mike vind. 667 00:29:38,370 --> 00:29:41,020 >> Maar daardie derde algoritme is 'n soort van magiese. 668 00:29:41,020 --> 00:29:44,270 Verizon verdubbel die aantal bladsye van 1000 tot 2000, 669 00:29:44,270 --> 00:29:47,730 maar hoeveel meer stappe doen Dit neem my om te kyk vir Mike? 670 00:29:47,730 --> 00:29:51,220 Dis net een, want ek kan net skeur die telefoon boek nog een keer 671 00:29:51,220 --> 00:29:55,280 van 'n probleem 2000 bladsy na 'n probleem 1000 bladsy, en voila. 672 00:29:55,280 --> 00:29:57,030 Ek het 'n massiewe hap daaruit. 673 00:29:57,030 --> 00:29:59,405 >> En as jy gaan regtig uiterste, veronderstel dat die telefoon boek 674 00:29:59,405 --> 00:30:03,600 maatskappy het iets gek soos 'n 4 miljard page telefoon boek. 675 00:30:03,600 --> 00:30:07,020 Wel hoeveel stappe kan neem dit Mike Smith in 'n 4 miljard 676 00:30:07,020 --> 00:30:09,990 bladsy telefoon boek? 677 00:30:09,990 --> 00:30:16,450 Dis 'n groot aantal, maar net 4 miljard tot 2000000000-1000000000 om 500 miljoen 678 00:30:16,450 --> 00:30:18,720 250 million-- steeds klink soos 'n groot aantal, 679 00:30:18,720 --> 00:30:20,980 maar ek is baie vinnig om na kleiner waardes. 680 00:30:20,980 --> 00:30:24,790 >> En in werklikheid, as ek dit doen die wiskunde reg, ek kan net verdeel 4000000000 681 00:30:24,790 --> 00:30:28,750 deur ongeveer 32 keer voor Ek kry net een. 682 00:30:28,750 --> 00:30:31,640 So as wat telefoon boek was 4 miljard bladsye lank, geen big deal. 683 00:30:31,640 --> 00:30:35,270 Binne 'n paar sekondes, miskien 32 sekondes, ek kon dit verdeel in die helfte 684 00:30:35,270 --> 00:30:39,560 en uiteindelik vind Mike of aflei dat hy nie daar nie. 685 00:30:39,560 --> 00:30:42,219 En dit is die essensie van 'n algorithm-- n goeie algoritme. 686 00:30:42,219 --> 00:30:44,260 En dit is een van die doelwitte van 'n klas soos hierdie, 687 00:30:44,260 --> 00:30:47,350 probeer om uit te vind hoe doen ek die probleem op te los nie net korrek, 688 00:30:47,350 --> 00:30:52,360 soos ek het altyd geweet hoe om dit te doen 'n bladsy op 'n time-- maar korrek en goed. 689 00:30:52,360 --> 00:30:55,034 Hoe kan ek ontwerp goeie oplossings vir probleme? 690 00:30:55,034 --> 00:30:57,200 So laat ons neem 'n oomblik hier en gee jou 'n gevoel nou 691 00:30:57,200 --> 00:31:00,260 van CS50 die loop itself-- stel personeellede 'n paar natuurlik nie. 692 00:31:00,260 --> 00:31:02,010 Net voor 02:00, sal ons neem 'n kort pouse 693 00:31:02,010 --> 00:31:03,520 sodat dié van julle wat inkopies kan 694 00:31:03,520 --> 00:31:05,130 eend uit en neem 'n kyk na 'n ander klas 695 00:31:05,130 --> 00:31:06,580 en kyk na die res van hierdie aanlyn. 696 00:31:06,580 --> 00:31:09,250 Maar vir nou, laat ek CS50, die klas self, 697 00:31:09,250 --> 00:31:11,330 en veral wat nuut is. 698 00:31:11,330 --> 00:31:13,960 >> So het die afgelope jaar, het ons spandeer nogal 'n bietjie van time-- 699 00:31:13,960 --> 00:31:17,911 personeel die kursus en I-- dink oor wat dit is wat ons wil CS50 te wees, 700 00:31:17,911 --> 00:31:19,910 en terug te gaan na die eerste beginsels, om so te praat, 701 00:31:19,910 --> 00:31:22,760 om te oorweeg wat dit is wat ons wil hierdie kursus lyk en wees 702 00:31:22,760 --> 00:31:23,740 soos vir die studente. 703 00:31:23,740 --> 00:31:26,480 En so sien jy in probleem stel nul sowel, 'n uitnodiging 704 00:31:26,480 --> 00:31:28,780 'n blik op wat neem URL wat 'n opsomming van 705 00:31:28,780 --> 00:31:33,270 sommige van die motiverings agter die volgende eienskappe van val 2016. 706 00:31:33,270 --> 00:31:35,570 >> So as jy dalk opgetel van die TL: DR opdragstuk, 707 00:31:35,570 --> 00:31:39,060 die leerplan vandag sowel as uit die kursus katalogus, vanjaar in CS50, 708 00:31:39,060 --> 00:31:42,540 jy net verwag om by te woon today-- so werk goed done-- 709 00:31:42,540 --> 00:31:45,960 en die laaste lesing oor 21 November. 710 00:31:45,960 --> 00:31:49,150 En jy is welkom, maar nie na verwagting is woon die lesings in die middel, 711 00:31:49,150 --> 00:31:51,180 want wat ons doen vanjaar, skiet 712 00:31:51,180 --> 00:31:52,661 in real-time materiaal deur die loop se. 713 00:31:52,661 --> 00:31:54,660 So alles sal bly huidige en opgeneem 714 00:31:54,660 --> 00:31:57,410 as beste can-- ons huidige gebeure en gesprekke wat mense mag 715 00:31:57,410 --> 00:32:00,400 word met in die industrie in die wêreld nie, maar maak dat materiaal 716 00:32:00,400 --> 00:32:03,892 beskikbaar, as gevolg daarvan, selfs earlier-- kompleet met volledige teks transkripsies 717 00:32:03,892 --> 00:32:05,850 en soekbare en skakels na ander bronne. 718 00:32:05,850 --> 00:32:07,930 >> En inderdaad, het ons beweer 'n geruime tyd 719 00:32:07,930 --> 00:32:10,830 en ons het nou glo dat hierdie, dat ons kan skep, digitaal, 720 00:32:10,830 --> 00:32:15,170 'n meer meeslepende, 'n meer oortuigende opvoedkundige ervaring, in teenstelling 721 00:32:15,170 --> 00:32:19,110 om te versamel hier 'n paar 23 keer persoonlik, hoor iemand soos ek 722 00:32:19,110 --> 00:32:22,925 eenvoudig praat oor rekenaarwetenskap, in teenstelling met die beoefening meer aktief. 723 00:32:22,925 --> 00:32:25,800 So jy sal sien in leerplan die kursus se 'n skets van die semester hier, 724 00:32:25,800 --> 00:32:27,840 saam met wanneer lesings verfilm, waaraan jy 725 00:32:27,840 --> 00:32:29,710 welkom, maar nie verwag word, en wanneer hulle sal 726 00:32:29,710 --> 00:32:31,640 vrygestel op die webwerf die kursus se. 727 00:32:31,640 --> 00:32:34,300 >> En wat sal ons hier te doen op Woensdae begin volgende week, 728 00:32:34,300 --> 00:32:37,362 is 'n baie meer intiem, met slegs dié mense wat wil deelneem, 729 00:32:37,362 --> 00:32:39,820 is 'n sogenaamde loop deur, waar ek en koppe die kursus se 730 00:32:39,820 --> 00:32:41,730 sal eintlik dinge 'n bietjie meer intieme 731 00:32:41,730 --> 00:32:44,313 af hier in die orkes artikel, het nog 'n paar tegnologie 732 00:32:44,313 --> 00:32:46,365 en loop deur die huidige week se probleem stel, 733 00:32:46,365 --> 00:32:50,020 en bied jou particularly-- as onder diegene wat minder comfortable-- al hoe meer 734 00:32:50,020 --> 00:32:52,790 leiding wat jy dalk wil of nodig vir uitdaging die week se. 735 00:32:52,790 --> 00:32:55,820 En so, vir diegene wat nie kan woon diegene persoonlik, geen big deal. 736 00:32:55,820 --> 00:32:58,486 Daar sal op soortgelyke wyse gelei word deur een van senior personeel die kursus se 737 00:32:58,486 --> 00:33:02,650 Zamalya, dieselfde geleentheid ingesluit in die probleem stel hulself. 738 00:33:02,650 --> 00:33:04,960 >> Probleem stel vanjaar vrygestel sal word op Vrydae 739 00:33:04,960 --> 00:33:08,080 en nie meer sewe dae later doen, maar 10 dae later-- doelbewus 740 00:33:08,080 --> 00:33:10,910 oorvleuel met elke probleem stel, ten einde beter te akkommodeer, 741 00:33:10,910 --> 00:33:13,050 ons hoop, eb en vloei in studentegetalle skedules, 742 00:33:13,050 --> 00:33:16,550 veral wanneer midterms of atletiek of akademici of extracurriculars 743 00:33:16,550 --> 00:33:18,465 geneig om te kom en gaan veral die middel-semester. 744 00:33:18,465 --> 00:33:21,340 Dit moet gee jou 'n bietjie meer diskresie om te besluit of jy voor 745 00:33:21,340 --> 00:33:25,690 laai jou week met CS50 of terug vrag dit op die volgende naweek in plaas. 746 00:33:25,690 --> 00:33:28,817 So kyk na leerplan die kursus se hier vir die skedule daarvan. 747 00:33:28,817 --> 00:33:30,900 En jy sal ook onder sien die veranderinge vanjaar, 748 00:33:30,900 --> 00:33:34,082 vir diegene wat meer vertroud is met ontwikkeling in die verlede, 749 00:33:34,082 --> 00:33:36,290 ons sal die semester as begin Ons sal vandag in Scratch, 750 00:33:36,290 --> 00:33:39,730 fokus veral op die taal genoem C, en dan die oorgang nie 751 00:33:39,730 --> 00:33:43,430 PHP, maar om 'n taal, die sogenaamde Python teen die einde van die semester 752 00:33:43,430 --> 00:33:46,565 in die konteks van die web ontwikkeling, saam met SQL en JavaScript, 753 00:33:46,565 --> 00:33:48,930 HTML, CSS, en nog baie meer. 754 00:33:48,930 --> 00:33:51,790 >> En in antwoord op 'n FAQ, dis inderdaad die geval 755 00:33:51,790 --> 00:33:55,520 dat CS is nie so skrikwekkend soos ek een keer het gedink dit was, maar dit is net soveel werk 756 00:33:55,520 --> 00:33:57,280 soos ek gehoor het dit sou wees. 757 00:33:57,280 --> 00:34:03,210 Maar dit is die sê dat hier is 'n paar statistieke van val 2015 studentekorps, 758 00:34:03,210 --> 00:34:06,460 waardeur die horisontale blou lyne verteenwoordig die gemiddelde aantal ure 759 00:34:06,460 --> 00:34:06,960 berig. 760 00:34:06,960 --> 00:34:10,570 En jy sal 'n gemiddeld van sien ses tot 10 om miskien 16 12-- 761 00:34:10,570 --> 00:34:14,580 of so en so meer, maar met hoë variansie om duidelik te wees. 762 00:34:14,580 --> 00:34:18,570 En so besef dat daar nie net studente meer gemaklik en minder 763 00:34:18,570 --> 00:34:22,150 gemaklik in die loop, maar 'n ooreenstemmende ondersteuning 764 00:34:22,150 --> 00:34:25,699 struktuur aan dié studente te kry deur die semester suksesvol. 765 00:34:25,699 --> 00:34:29,409 >> Inderdaad, in antwoord op 'n FAQ, moet jy CS50 neem as 'n eerstejaar? 766 00:34:29,409 --> 00:34:30,139 Absoluut. 767 00:34:30,139 --> 00:34:32,690 En in werklikheid, ek is jammer nie my pad gevind het 768 00:34:32,690 --> 00:34:35,170 of het 'n nuwe veld daardie eerste jaar as well. 769 00:34:35,170 --> 00:34:39,149 En behoort jou CS50 met ander kursusse, beslis well-- as 770 00:34:39,149 --> 00:34:41,940 en die algemene raad mag ons gee studente, wat CS50 is waarskynlik 771 00:34:41,940 --> 00:34:44,929 nie die soort klas of intro klas wat jy moet neem met drie 772 00:34:44,929 --> 00:34:47,199 ander of vier ander p stel klasse. 773 00:34:47,199 --> 00:34:50,583 Maar as jy neem twee ander p-stel klasse, iets anders, en CS50, 774 00:34:50,583 --> 00:34:51,499 absoluut hanteerbaar. 775 00:34:51,499 --> 00:34:54,900 Ek het baie studente in die gehad verlede gedoen het baie suksesvol. 776 00:34:54,900 --> 00:34:57,490 >> En om jou te kry in die rigting wat eindstreep suksesvol, 777 00:34:57,490 --> 00:35:00,260 beteken die kursus het sections-- verskillende spore vir studente 778 00:35:00,260 --> 00:35:03,100 minder gemaklik, meer gemaklik, en iewers tussenin, 779 00:35:03,100 --> 00:35:04,850 waardeur in die loop se eerste probleem stel, 780 00:35:04,850 --> 00:35:06,360 jy sal gevra word om jouself te beskryf. 781 00:35:06,360 --> 00:35:09,151 En as jy een van diegene wat minder gemaklik, dit is die soort ding 782 00:35:09,151 --> 00:35:10,420 dat jy net eerder weet. 783 00:35:10,420 --> 00:35:13,010 En inderdaad, wat al die groeiende demografiese in CS50 784 00:35:13,010 --> 00:35:14,090 vir 'n hele paar jaar. 785 00:35:14,090 --> 00:35:17,680 >> Vanaf laaste val vir Byvoorbeeld, 58% van die klas 786 00:35:17,680 --> 00:35:20,560 beskryf hulself as onder diegene wat minder gemaklik, 787 00:35:20,560 --> 00:35:23,210 met 9% onder diegene meer gemaklik, en dan 788 00:35:23,210 --> 00:35:25,900 die ander studente daar in rooi hulself beskryf 789 00:35:25,900 --> 00:35:27,890 as iewers tussen in. 790 00:35:27,890 --> 00:35:31,980 En jy sal sien hier die onderwerpe algehele en skedule van artikels, wat almal 791 00:35:31,980 --> 00:35:34,820 word in persoon, in real-time, met die verloop van 792 00:35:34,820 --> 00:35:38,320 ongelooflike personeel van onderrig genote en natuurlik assistente, van wie sommige 793 00:35:38,320 --> 00:35:39,660 jy ontmoet in net 'n oomblik. 794 00:35:39,660 --> 00:35:42,993 >> Artikels gehandel soos jy sal sien, sal wees Maandae en Dinsdae en Woensdae, 795 00:35:42,993 --> 00:35:45,910 ten einde jou toelaat om te duik agter innemende, as jy so 796 00:35:45,910 --> 00:35:48,110 kies, in die loop se lesings vroeër die week. 797 00:35:48,110 --> 00:35:51,420 En dan kantoorure, wat beslis, met elke jaar wat verbygaan, 798 00:35:51,420 --> 00:35:54,110 het nie minder van 'n reeds uitdaging vir die kursus. 799 00:35:54,110 --> 00:35:57,040 En hierdie jaar het ons van plan is nie net amp hours-- een 800 00:35:57,040 --> 00:36:00,300 op een geleenthede om hulp vir studente op Woensdae Donderdae 801 00:36:00,300 --> 00:36:03,790 en Sondae, die laaste van daardie om in die middag deur ontwerp 802 00:36:03,790 --> 00:36:06,910 om 'n paar van die stres te verminder wat altyd ontstaan ​​met laatnag 803 00:36:06,910 --> 00:36:10,180 p-die stel van 'n sperdatum looming-- maar kantoorure sal ook aangebied word 804 00:36:10,180 --> 00:36:14,920 op Maandae en Dinsdae en Woensdae en Vrydae en Saterdae, 805 00:36:14,920 --> 00:36:17,080 te danke aan ons vriende by HSA. 806 00:36:17,080 --> 00:36:20,330 >> CS50 het nou sy eie ruimte vir studente en CS50 personeel, 807 00:36:20,330 --> 00:36:23,070 bo 67 Mount Auburn Street, net daar in Harvard Square. 808 00:36:23,070 --> 00:36:26,340 Die visie waarvoor is dat CS50 se TFS en GR'e die hele week, 809 00:36:26,340 --> 00:36:29,052 pretty much deur die grootste deel dae, sal daar wees vir ondersteuning. 810 00:36:29,052 --> 00:36:30,760 So as jy het 'n paar vraag op 'n p-stel 811 00:36:30,760 --> 00:36:33,093 of jy voel 'n bietjie geblokkeer of 'n bietjie verward, 812 00:36:33,093 --> 00:36:35,640 en klink, het jy 'n uur het of 'n halfuur tussen klasse, 813 00:36:35,640 --> 00:36:38,920 veral in die square-- kan jy pop in en het daardie vraag beantwoord 814 00:36:38,920 --> 00:36:41,720 van daardie verwarring clarified-- baie in die gees, 815 00:36:41,720 --> 00:36:45,490 jy vertroud, van die wiskunde eie wiskunde vrae sentrum departement se 816 00:36:45,490 --> 00:36:49,300 maar pretty much rondom die klok per [? Gcal?] Dat ons aanlyn sal lewer. 817 00:36:49,300 --> 00:36:52,400 >> Tutoring is ook beskikbaar vir diegene studente, vrylik uit die kursus se 818 00:36:52,400 --> 00:36:54,750 eie personeel as jy wil meer intieme een op een, 819 00:36:54,750 --> 00:36:58,940 of twee of drie klasmaats net werk met een van personeellede die kursus se. 820 00:36:58,940 --> 00:37:02,320 En inderdaad, hierdie hier is net sommige van personeellede die kursus se 821 00:37:02,320 --> 00:37:04,120 'n paar van wie jy ontmoet in net 'n oomblik. 822 00:37:04,120 --> 00:37:07,440 Trouens, CS50 se eie hoof onderrig mede, 823 00:37:07,440 --> 00:37:09,790 en kop loop assistent, en leermeester, 824 00:37:09,790 --> 00:37:12,998 kon kom op, laat hulle kom groet het. 825 00:37:12,998 --> 00:37:22,498 >> [Applous] 826 00:37:22,498 --> 00:37:23,456 SPREKER 1: [onhoorbaar]. 827 00:37:23,456 --> 00:37:51,842 828 00:37:51,842 --> 00:37:57,856 >> [Applous] 829 00:37:57,856 --> 00:37:58,814 Spreker 2: [onhoorbaar]. 830 00:37:58,814 --> 00:38:17,240 831 00:38:17,240 --> 00:38:27,238 >> [Applous] 832 00:38:27,238 --> 00:38:28,196 SPREKER 3: [onhoorbaar]. 833 00:38:28,196 --> 00:38:58,951 834 00:38:58,951 --> 00:39:03,120 >> [Applous] 835 00:39:03,120 --> 00:39:06,740 >> David Malan: En ons toelaat om bring aan boord twee van CS50 se mees 836 00:39:06,740 --> 00:39:09,730 senior personeel, Rob en Zamayla sowel. 837 00:39:09,730 --> 00:39:15,120 >> [Applous] 838 00:39:15,120 --> 00:39:17,226 >> Inderdaad, beide Rob en Zamayla het al met ons 839 00:39:17,226 --> 00:39:19,940 vir so lank, dat ek in staat was om te gaan in die argiewe CS50 se 840 00:39:19,940 --> 00:39:22,470 en vind dit baie SD beeldmateriaal van hulle deelname 841 00:39:22,470 --> 00:39:25,402 op die verhoog self 'n paar jaar gelede. 842 00:39:25,402 --> 00:39:26,110 ROB: [onhoorbaar]. 843 00:39:26,110 --> 00:39:53,660 844 00:39:53,660 --> 00:39:59,247 >> [Applous] 845 00:39:59,247 --> 00:40:00,080 ZAMAYLA: [onhoorbaar] 846 00:40:00,080 --> 00:40:50,888 847 00:40:50,888 --> 00:40:52,467 >> [Applous] 848 00:40:52,467 --> 00:40:53,425 David Malan: Dankie. 849 00:40:53,425 --> 00:40:56,160 850 00:40:56,160 --> 00:40:58,030 So bo en behalwe dié spanlede hier, 851 00:40:58,030 --> 00:41:01,662 CS50 het 'n span van byna 100 personeellede, wat almal 852 00:41:01,662 --> 00:41:04,370 sal beskikbaar wees vir artikels wees en kantoorure en soveel meer. 853 00:41:04,370 --> 00:41:06,920 En as Rob sê ook dit is die belangrikste opknapping 854 00:41:06,920 --> 00:41:09,534 van CS50 in die 10 jaar wat Ek het in [onhoorbaar] was. 855 00:41:09,534 --> 00:41:12,200 [Onhoorbaar] veral gefokus in die verskaffing van 'n ondersteuning struktuur, 856 00:41:12,200 --> 00:41:14,050 snoei weg baie die grootste deel wat was 857 00:41:14,050 --> 00:41:16,870 opgehoopte in 10 jaar van iteratiewe ontwikkelings 858 00:41:16,870 --> 00:41:18,120 op die baan se probleem stelle. 859 00:41:18,120 --> 00:41:21,470 >> So hierdie jaar, nie net in die klas, maar ook in die vorm van die probleem deur die loop se 860 00:41:21,470 --> 00:41:24,800 stelle, moet jy dinge om uit te vind meer vaartbelyn, trimmer, veel 861 00:41:24,800 --> 00:41:26,700 meer hanteerbaar as in die afgelope jare, soos ons 862 00:41:26,700 --> 00:41:31,330 werp 'n paar van die bagasie wat ontwikkel deur die natuur van ontwikkelende jaar 863 00:41:31,330 --> 00:41:32,970 na jaar en iterating. 864 00:41:32,970 --> 00:41:35,110 So het die nuwe en verbeterde begin vandag. 865 00:41:35,110 --> 00:41:37,860 >> Jy sal 'n paar meer van die ontmoet personeel in die [onhoorbaar] Natuurlik se 866 00:41:37,860 --> 00:41:40,186 by 02:30, waar ons dien, as 'n tradisie, koek. 867 00:41:40,186 --> 00:41:42,060 Daar is 'n bietjie meer koek as dit, maar jy sal 868 00:41:42,060 --> 00:41:44,690 Ontmoet Erin en Tobias en ander steeds. 869 00:41:44,690 --> 00:41:46,470 En laat ek jou gee 'n toer voordat ons hoor 870 00:41:46,470 --> 00:41:49,600 van 'n paar van die ander personeellede in die klas, wat wag as well. 871 00:41:49,600 --> 00:41:52,730 Trouens, ons begin altyd CS50 se semester eerskomende Saterdag, 872 00:41:52,730 --> 00:41:54,330 met wat genoem CS50 legkaart Dag. 873 00:41:54,330 --> 00:41:56,710 >> Dit het niks te doen met Rekenaarwetenskap per se nie, 874 00:41:56,710 --> 00:41:58,669 maar met sowat probleem die oplossing van meer algemeen. 875 00:41:58,669 --> 00:42:01,210 En as jy so verkies om deel te neem, per paar van die uitnodigings, 876 00:42:01,210 --> 00:42:03,460 jy dalk deur gesien gedaal of op die stadium hier, 877 00:42:03,460 --> 00:42:05,830 dit is 'n geleentheid in spanne van twee of drie of vier, 878 00:42:05,830 --> 00:42:10,680 om deel te neem vir raaisels en pizza en pryse en more-- hierdie Saterdag 879 00:42:10,680 --> 00:42:12,560 Bly ingeskakel vir meer. 880 00:42:12,560 --> 00:42:15,082 >> Jy sal ook vind dat elke Vrydag, op Vuur en ys, 881 00:42:15,082 --> 00:42:16,790 beteken CS50 bring 'n hele klomp van studente 882 00:42:16,790 --> 00:42:19,100 middagete, om 'n groot te maak klas voel meer intieme, 883 00:42:19,100 --> 00:42:21,820 en oor die algemeen saam te bring alumni en vriende van die industrie 884 00:42:21,820 --> 00:42:24,710 om te praat oor wat hulle het was tot aangesien sy studies. 885 00:42:24,710 --> 00:42:27,820 Net so, hierdie jaar sal ons huldig die eerste keer ooit CS50 50 886 00:42:27,820 --> 00:42:31,390 kodering contest-- n mid-semester geleentheid om almal te laat 887 00:42:31,390 --> 00:42:35,430 op 'n opt in basis, 'n moet uitdaging van Wits teen klasmaats, 888 00:42:35,430 --> 00:42:39,250 weer in spanne van twee of drie of vier, met behulp van slegs daardie programmering 889 00:42:39,250 --> 00:42:41,920 vaardig dat jy dan onder jou gordel ná net ses of sewe 890 00:42:41,920 --> 00:42:44,710 weke van die klas, en deelnemende in hierdie soort kompetisie 891 00:42:44,710 --> 00:42:50,261 online-- as jy wil om jou eie slyp vaardighede al hoe meer in daardie uitdaging. 892 00:42:50,261 --> 00:42:52,760 Aan die einde van die semester is die sogenaamde CS50 Hackathon-- 893 00:42:52,760 --> 00:42:56,970 'n geleentheid wat begin om 7:00 PM eindig by 07:00, en langs die pad 894 00:42:56,970 --> 00:43:01,900 12 aand ure waarin duik in finale project-- die kursus se 895 00:43:01,900 --> 00:43:04,820 'n geleentheid om te ontwerp en implementeer die meeste enigiets van belang 896 00:43:04,820 --> 00:43:06,980 om jou met jou onderrig leiding mede se. 897 00:43:06,980 --> 00:43:09,600 Rondom 09:00 het ons gewoonlik dien pizza, 01:00, 898 00:43:09,600 --> 00:43:13,210 Philippe se en die paar van ons wat nog wakker 05:00, 899 00:43:13,210 --> 00:43:16,310 is pendeltuig aangery af die pad na IHOP vir ontbyt. 900 00:43:16,310 --> 00:43:19,340 >> En dan 'n paar dae later is die sogenaamde CS50 fare-- 901 00:43:19,340 --> 00:43:23,450 'n einde van semester uitstalling in viering van net hoe ver so baie 902 00:43:23,450 --> 00:43:28,200 van CS50 studente kom uit week nul al die pad na week, 903 00:43:28,200 --> 00:43:32,610 en hou in gedagte dat 73% van diegene klasmaats en joune vanjaar het 904 00:43:32,610 --> 00:43:34,840 'n CS klas nooit tevore geneem. 905 00:43:34,840 --> 00:43:39,226 Trouens, om soveel reemphasize, hier is nog 'n paar gesigte van personeel CS50 se. 906 00:43:39,226 --> 00:43:40,184 SPREKER 4: [onhoorbaar]. 907 00:43:40,184 --> 00:43:45,909 908 00:43:45,909 --> 00:43:46,867 SPREKER 5: [onhoorbaar]. 909 00:43:46,867 --> 00:43:51,332 910 00:43:51,332 --> 00:43:52,290 SPREKER 6: [onhoorbaar]. 911 00:43:52,290 --> 00:43:55,276 912 00:43:55,276 --> 00:43:56,234 SPREKER 7: [onhoorbaar]. 913 00:43:56,234 --> 00:44:01,727 914 00:44:01,727 --> 00:44:02,643 SPREKER 8: [onhoorbaar] 915 00:44:02,643 --> 00:44:10,066 916 00:44:10,066 --> 00:44:11,024 SPREKER 9: [onhoorbaar]. 917 00:44:11,024 --> 00:44:14,475 918 00:44:14,475 --> 00:44:15,461 >> SPREKER 4: [onhoorbaar]. 919 00:44:15,461 --> 00:44:16,461 >> SPREKER 10: [onhoorbaar]. 920 00:44:16,461 --> 00:44:21,456 921 00:44:21,456 --> 00:44:23,438 SPREKER 11: [onhoorbaar]. 922 00:44:23,438 --> 00:44:24,438 SPREKER 12: [onhoorbaar]. 923 00:44:24,438 --> 00:44:30,438 924 00:44:30,438 --> 00:44:31,396 SPREKER 13: [onhoorbaar] 925 00:44:31,396 --> 00:44:37,360 926 00:44:37,360 --> 00:44:40,342 >> SPREKER 14: [onhoorbaar]. 927 00:44:40,342 --> 00:44:42,863 >> SPREKER 13: [onhoorbaar]. 928 00:44:42,863 --> 00:44:43,821 SPREKER 15: [onhoorbaar] 929 00:44:43,821 --> 00:44:48,785 930 00:44:48,785 --> 00:44:49,785 SPREKER 16: [onhoorbaar]. 931 00:44:49,785 --> 00:44:53,761 932 00:44:53,761 --> 00:44:55,252 >> SPREKER 11: [onhoorbaar] 933 00:44:55,252 --> 00:44:57,773 934 00:44:57,773 --> 00:44:58,731 SPREKER 5: [onhoorbaar]. 935 00:44:58,731 --> 00:45:11,250 936 00:45:11,250 --> 00:45:15,130 David Malan: Sommige van die span hulself inkopies klasse. 937 00:45:15,130 --> 00:45:17,760 Maar as daardie lede van CS50 personeel is hier, 938 00:45:17,760 --> 00:45:19,230 kon kom vir net 'n oomblik. 939 00:45:19,230 --> 00:45:23,450 CS50 se TFS en GR'e en [? personeel?] lede here-- dit is net 'n paar 940 00:45:23,450 --> 00:45:28,880 van die faces-- een van wie jy net sien, en 'n paar other-- en 'n paar ander 941 00:45:28,880 --> 00:45:30,020 steeds. 942 00:45:30,020 --> 00:45:33,242 Hoekom het ons nie voort te gaan en toelaat julle 'n vyf minute breek. 943 00:45:33,242 --> 00:45:35,450 As jy nodig het om eend uit te shop klasse, is dit goed. 944 00:45:35,450 --> 00:45:38,900 En binne vyf minute, sal ons weer, neem 'n blik op Scratch-- die eerste 945 00:45:38,900 --> 00:45:42,420 van ons programmeertaal, ontmoet personeel die kursus se hier 'n paar meer, 946 00:45:42,420 --> 00:45:45,020 en fokus uiteindelik op probleem gestel nul. 947 00:45:45,020 --> 00:45:46,710 So sal ons terug in vyf minute wees. 1 00:45:46,864 --> 00:45:47,370 >> Alles reg. 2 00:45:47,370 --> 00:45:48,590 So moet ons te kort. 3 00:45:48,590 --> 00:45:51,330 En in ons oorblywende tyd vandag, die doel 4 00:45:51,330 --> 00:45:54,320 is om die speelveld gelyk te maak in terme van 'n paar terme, 5 00:45:54,320 --> 00:45:55,297 in terme van 'n paar idees. 6 00:45:55,297 --> 00:45:57,380 Omdat inderdaad, soos per sommige van die kaarte vroeër, 7 00:45:57,380 --> 00:46:00,130 Daar gaan 'n verskeidenheid van wees vlakke van ondervinding in die klas, 8 00:46:00,130 --> 00:46:03,210 sommige van wie se studente het geneem 'n paar programme voor, 9 00:46:03,210 --> 00:46:04,200 sommige van hulle het nie. 10 00:46:04,200 --> 00:46:07,430 En so met die eerste probleem stel en met hierdie eerste taal 11 00:46:07,430 --> 00:46:10,830 het ons 'n geleentheid om te begin om as vanselfsprekend aanvaar ná vandag 12 00:46:10,830 --> 00:46:12,960 'n paar algemene woordeskat en idee. 13 00:46:12,960 --> 00:46:15,590 >> En ons sal dit doen deur middel van eerste languages-- die kursus se 14 00:46:15,590 --> 00:46:21,070 bykomend tot C en Python en JavaScript en SQL en HTML en CSS, 15 00:46:21,070 --> 00:46:24,450 Ons sal aanvanklik fokus en net vir probleem gestel nul 16 00:46:24,450 --> 00:46:28,160 op hierdie grafiese taal, genoem Kras, wat ontwikkel is deur MIT se Media Lab 17 00:46:28,160 --> 00:46:30,880 in die pad af, om te help studente en kinders veral 18 00:46:30,880 --> 00:46:35,070 uit te druk algorithmically-- in 'n manier om meer in ooreenstemming met wat 19 00:46:35,070 --> 00:46:37,300 Ons kan Rekenaardenke noem. 20 00:46:37,300 --> 00:46:40,985 >> En dit is 'n nuttige taal omdat baie vinnig aanstaande week in week een, 21 00:46:40,985 --> 00:46:44,360 ons oorgang na 'n meer tradisionele en arcane taal genoem 22 00:46:44,360 --> 00:46:46,370 C, wat suiwer tekstuele. 23 00:46:46,370 --> 00:46:48,930 Jy gebruik net jou sleutelbord in Om instruksies te skryf 24 00:46:48,930 --> 00:46:50,230 Sulke op die skerm. 25 00:46:50,230 --> 00:46:52,840 Maar selfs as jy nog nooit gesien 'n programmeertaal voor, 26 00:46:52,840 --> 00:46:55,170 in net skrams teen hierdie, al word dit kriptiese, 27 00:46:55,170 --> 00:47:00,010 jy kan seker raai wat waarskynlik druk Hello World. 28 00:47:00,010 --> 00:47:02,050 Maar daar is 'n baie sintaktiese oorhoofse daar. 29 00:47:02,050 --> 00:47:05,770 Daar is die vreemde hash simbool of hash tag op die top. 30 00:47:05,770 --> 00:47:08,900 Daar is die hoek tussen hakies, 'n paar hakies, krullerige draadjies, semi-colon-- 31 00:47:08,900 --> 00:47:11,880 Daar is net soveel visuele sintaksis wat in die pad. 32 00:47:11,880 --> 00:47:13,940 Ons begin die kursus met Kras so te kry 33 00:47:13,940 --> 00:47:17,600 verlede al daardie intellektueel oninteressant afleiding, 34 00:47:17,600 --> 00:47:20,290 en fokus plaas op die idees. 35 00:47:20,290 --> 00:47:22,540 >> Trouens, sou dit voor wees. 36 00:47:22,540 --> 00:47:24,830 Dit, vir hierdie, week word na. 37 00:47:24,830 --> 00:47:26,760 Dit, in hierdie grafiese taal nuuts af, 38 00:47:26,760 --> 00:47:29,870 is hoe jy daardie selfde sal implementeer program-- 'n program wat toe hardloop, 39 00:47:29,870 --> 00:47:31,340 eenvoudig sê hello world. 40 00:47:31,340 --> 00:47:34,740 En wat is lekker oor Scratch is dis hierdie grafiese programmering 41 00:47:34,740 --> 00:47:38,780 omgewing wat stukke van die legkaart of gebruik blokke, wat net saam verstrengel 42 00:47:38,780 --> 00:47:40,440 As dit maak logies sin om dit te doen. 43 00:47:40,440 --> 00:47:43,810 En met Scratch kan jy die ontwikkeling van animasie en interaktiewe speletjies 44 00:47:43,810 --> 00:47:47,270 en kuns, en 'n aantal van die dinge wat jy dalk dink in jou eie gemoed, 45 00:47:47,270 --> 00:47:51,200 en implementeer hulle eenvoudig deur sleep stukke van die legkaart. 46 00:47:51,200 --> 00:47:54,265 >> En inderdaad, sal ons die vermoë het om 'n paar van dieselfde idees uit te druk 47 00:47:54,265 --> 00:47:56,890 dat ek nou net genoem 'n oomblik gelede in die konteks van Mike Smith 48 00:47:56,890 --> 00:48:00,670 en soek 'n selfoon book-- dinge soos funksies, net aksies, 49 00:48:00,670 --> 00:48:03,070 dinge soos sirkelroetes doen dinge weer en weer, 50 00:48:03,070 --> 00:48:05,170 veranderlikes wat iets wat ons sal stel, 51 00:48:05,170 --> 00:48:08,086 maar dit is bekend miskien uit algebra-- net 'n soort van tydelike 52 00:48:08,086 --> 00:48:10,840 'n paar waarde wat jy dalk te stoor moet later-- Boolse uitdrukkings, 53 00:48:10,840 --> 00:48:13,720 waar diegene ja nee of ware valse vrae voor. 54 00:48:13,720 --> 00:48:17,117 Toestande is dié vurk in die road-- diegene takke om so te praat. 55 00:48:17,117 --> 00:48:19,700 En dan is daar is 'n paar liefhebber funksies wat ons sal vandag nog te sien, 56 00:48:19,700 --> 00:48:22,850 genoem skikkings en drade en gebeure, wat ons sal dan weer oor 57 00:48:22,850 --> 00:48:24,460 tyd in verskillende tale. 58 00:48:24,460 --> 00:48:26,790 Maar Scratch stel ons in staat om al hierdie te verken. 59 00:48:26,790 --> 00:48:30,779 So hier in Scratch, hierdie pers blok is wat 'n funksie is tipies 60 00:48:30,779 --> 00:48:31,570 gaan lyk. 61 00:48:31,570 --> 00:48:35,620 Dit pers legkaart stuk dat sommige het woord soos byvoorbeeld wat die aksie, 62 00:48:35,620 --> 00:48:38,490 en dan is dit dalk 'n moet argument of 'n parameter-- een of ander manier 63 00:48:38,490 --> 00:48:41,140 van soort opstel wat dit blok doen 64 00:48:41,140 --> 00:48:45,182 sodat dit nie vooraf bepaal deur MIT wat hierdie pers blok sê. 65 00:48:45,182 --> 00:48:47,390 Trouens, sal jy sien in 'n oomblik dat ek kan tik 66 00:48:47,390 --> 00:48:49,931 die woorde soos Hello World, of hallo Dawid, of hallo Zamayla, 67 00:48:49,931 --> 00:48:53,750 of wat ek wil, in die argument om dit legkaart piece-- die wit blokkie 68 00:48:53,750 --> 00:48:54,251 daar. 69 00:48:54,251 --> 00:48:57,166 Intussen, as ek wil 'n lus, sal ons sien dat daar stukke van die legkaart wat 70 00:48:57,166 --> 00:48:58,640 kyk 'n bietjie oranje soos hierdie. 71 00:48:58,640 --> 00:49:01,690 En hul vorm soort dui daarop dat iets gebeur weer en weer 72 00:49:01,690 --> 00:49:02,680 in 'n siklus. 73 00:49:02,680 --> 00:49:06,800 >> So as ek draai 'n sê hello world blok met 'n ewig te sluit in Scratch, 74 00:49:06,800 --> 00:49:10,307 dit is net gaan om te hou en sê hallo wêreld vir ewig, letterlik. 75 00:49:10,307 --> 00:49:12,390 Intussen is daar 'n ander tipe lus in Scratch 76 00:49:12,390 --> 00:49:14,348 dat ons 'n herhaling sal see-- block-- waar, as jy 77 00:49:14,348 --> 00:49:17,940 vooraf weet hoeveel keer jy wil die lus om uit te voer 78 00:49:17,940 --> 00:49:21,850 'n beperkte aantal kere in fact-- jy kan spesifiseer dat deur te tik in 'n aantal 79 00:49:21,850 --> 00:49:25,380 of selfs te steek in 'n veranderlike, soos x of y soos ons sal sien. 80 00:49:25,380 --> 00:49:27,690 >> Trouens, veranderlikes soos Ek in hierdie geval, wat 81 00:49:27,690 --> 00:49:30,109 is 'n algemene naam vir 'n heelgetal veranderlike wat 82 00:49:30,109 --> 00:49:31,900 net winkels 'n number-- 'n heelgetal kan wees, 83 00:49:31,900 --> 00:49:35,470 hierdie oranje blok hier gebruik om stel 'n veranderlike soos ek aan nul. 84 00:49:35,470 --> 00:49:38,900 Hier is 'n voorbeeld in die groen van 'n Boole-uitdrukking in Scratch. 85 00:49:38,900 --> 00:49:43,700 Selfs al is dit lyk soos 'n wiskunde formule, wiskunde ongelykhede soos hierdie 86 00:49:43,700 --> 00:49:45,320 werklik is Boolse uitdrukkings. 87 00:49:45,320 --> 00:49:46,570 Dit is waar of vals is. 88 00:49:46,570 --> 00:49:48,300 Ek is minder as 50. 89 00:49:48,300 --> 00:49:51,815 Dit is óf 'n ja of nee antwoord of waar of onwaar antwoord. 90 00:49:51,815 --> 00:49:53,940 En ons sal oor die algemeen noem diegene Boolse uitdrukkings. 91 00:49:53,940 --> 00:49:55,148 En dit hoef nie te wees 50. 92 00:49:55,148 --> 00:49:57,970 Dit kan wees x minder as y, groter as y, gelyk aan y-- 93 00:49:57,970 --> 00:50:00,020 enige aantal ander vrae kan gevra word. 94 00:50:00,020 --> 00:50:03,250 >> Nou, met die eerste oogopslag, dit kan lyk skielik baie vet hier, en dit is. 95 00:50:03,250 --> 00:50:06,540 Maar konsep wys, is dit mooi vertroud voor. 96 00:50:06,540 --> 00:50:09,370 As x minder as y, is as sê soveel. 97 00:50:09,370 --> 00:50:12,230 Anders as x groter as y, dan sê soveel. 98 00:50:12,230 --> 00:50:14,260 Anders sê x is gelyk aan y. 99 00:50:14,260 --> 00:50:17,220 Ons het dus 'n voorbeeld daar van 'n derde scenario-- 100 00:50:17,220 --> 00:50:20,600 die enigste derde possibility-- x is óf groter as, minder as, of gelyk aan. 101 00:50:20,600 --> 00:50:22,420 So het ons 'n drie manier vurk in die pad. 102 00:50:22,420 --> 00:50:26,290 >> Kyk wat is cool here-- nuuts af, Dit wil voorkom, het net een legkaart 103 00:50:26,290 --> 00:50:28,840 stuk, in hierdie geval, in indien anders blok. 104 00:50:28,840 --> 00:50:32,090 En tog sou dit lyk jy impliseer kan net 'n tweerigting vurk in die pad. 105 00:50:32,090 --> 00:50:34,631 Jy kan links of regs, maar Wat van daardie derde scenario? 106 00:50:34,631 --> 00:50:35,760 Wat gebeur as x gelyk aan y? 107 00:50:35,760 --> 00:50:36,500 Geen groot deal. 108 00:50:36,500 --> 00:50:39,640 Neem een ​​legkaart stuk, sit 'n ander een binnekant van dit 109 00:50:39,640 --> 00:50:45,759 om die semantiese ekwivalent te skep van As, anders as, else-- en nou is jy 110 00:50:45,759 --> 00:50:47,300 het jou drie wyse vurk in die pad. 111 00:50:47,300 --> 00:50:49,091 En as ons sal sien, die Kras stukke van die legkaart 112 00:50:49,091 --> 00:50:51,820 gerek kan word en groei, so as om meer dinge gedrang in hulle nie. 113 00:50:51,820 --> 00:50:54,420 Jy hoef nie aan te pas alles in sy verstek grootte. 114 00:50:54,420 --> 00:50:56,690 >> Dit is iets wat ons sal gou sien staan ​​bekend as 'n skikking. 115 00:50:56,690 --> 00:51:00,880 Dis soos 'n list-- een of ander manier van stoor verskeie stukke van inligting 116 00:51:00,880 --> 00:51:02,886 in 'n veranderlike, nie net 'n nommer. 117 00:51:02,886 --> 00:51:05,760 Hierdie ons 'n verteenwoordiger van sien iets genaamd multi-threading. 118 00:51:05,760 --> 00:51:08,280 Trouens, al jou Mac en PC deesdae 119 00:51:08,280 --> 00:51:10,810 ondersteun multi-threading, wat beteken dat jy kan letterlik 120 00:51:10,810 --> 00:51:12,390 doen verskeie dinge op 'n slag. 121 00:51:12,390 --> 00:51:15,390 Jy kan Microsoft Word het in die voorgrond, besig met 'n paar opstel. 122 00:51:15,390 --> 00:51:17,160 Jy kan 'n leser het in die agtergrond opening 123 00:51:17,160 --> 00:51:18,720 G-pos of Facebook of dies meer. 124 00:51:18,720 --> 00:51:22,730 Jou rekenaar kan verskeie dinge doen vandag, want dit is 'n multi-threaded, 125 00:51:22,730 --> 00:51:26,390 en programme wat hulle is in in veral ook multi-threaded. 126 00:51:26,390 --> 00:51:28,970 >> Daar is dinge genoem gebeure soos goed in die wêreld van nuuts af, 127 00:51:28,970 --> 00:51:32,640 en dan is daar 'n manier ook te maak ons eie persoonlike legkaart stukke as dinge 128 00:51:32,640 --> 00:51:34,810 nie werklik bestaan ​​in advance. 129 00:51:34,810 --> 00:51:38,260 So laat ons motiveer dit soos volg. 130 00:51:38,260 --> 00:51:40,580 'N Paar jaar gelede, toe ek die eerste keer ontdek nuuts af, 131 00:51:40,580 --> 00:51:43,530 toe ek was eintlik 'n grad student by MIT, ons 132 00:51:43,530 --> 00:51:45,640 onsself is getaak om huiswerk te maak. 133 00:51:45,640 --> 00:51:47,614 En ek implemented-- wat, in retrospek, 134 00:51:47,614 --> 00:51:50,780 was 'n baie swak besluit, want dit is die mees woedend lied in die wêreld 135 00:51:50,780 --> 00:51:53,321 om vir agt ure te luister terwyl jy werk op jou homework-- 136 00:51:53,321 --> 00:51:57,180 maar iets wat ek het Oscar Tyd genoem, wat dalk 'n bekende liedjie. 137 00:51:57,180 --> 00:51:59,820 >> CS50s besit Jordaan Hayashi, een van ons meer senior personeellede, 138 00:51:59,820 --> 00:52:03,920 het dit opgegradeer vir 2015 en nou 2016, aangesien terug in die dag, 139 00:52:03,920 --> 00:52:06,610 Ek het alles net gaan in Oscar se asblik. 140 00:52:06,610 --> 00:52:09,320 Nou ondersteun ons herwinning en kompos. 141 00:52:09,320 --> 00:52:12,050 >> Maar om die prentjie te verf van wat ons kan doen hier 142 00:52:12,050 --> 00:52:14,130 en 'n paar van motiveer die laer vlak voorbeelde, 143 00:52:14,130 --> 00:52:16,400 kon ons een ander vrywilliger om net te kom op tot 144 00:52:16,400 --> 00:52:18,331 en speel my eerste huiswerkopdrag ooit? 145 00:52:18,331 --> 00:52:18,830 Kom op. 146 00:52:18,830 --> 00:52:19,250 Wat is jou naam? 147 00:52:19,250 --> 00:52:20,030 >> HENRY: Henry. 148 00:52:20,030 --> 00:52:22,660 >> David Malan: Henry, kom op tot. 149 00:52:22,660 --> 00:52:24,190 Kom op. 150 00:52:24,190 --> 00:52:27,070 Kop In ieder geval, en jy sal sien in 'n oomblik, 151 00:52:27,070 --> 00:52:29,870 Ek gaan om voort te gaan en druk die groen vlag in die boonste regterkantste 152 00:52:29,870 --> 00:52:31,100 hoek, wat beteken gaan. 153 00:52:31,100 --> 00:52:33,320 Die teken ikoon bietjie stop gaan stop sê, 154 00:52:33,320 --> 00:52:35,490 en dit is wanneer jy begin en stop die program. 155 00:52:35,490 --> 00:52:36,450 Aangename kennis. 156 00:52:36,450 --> 00:52:36,950 Alles reg. 157 00:52:36,950 --> 00:52:39,100 So ons gaan die instruksies te sien op die skerm in net 'n oomblik. 158 00:52:39,100 --> 00:52:41,450 En net deur die speel van die spel vir 'n paar seconds-- glo my, 159 00:52:41,450 --> 00:52:43,670 Ons gaan nie wil speel al die pad na die end-- jy wil 160 00:52:43,670 --> 00:52:45,470 kry 'n gevoel van wat die program doen. 161 00:52:45,470 --> 00:52:49,170 En meer as net fokus op Henry goed of sleg die spel, fokus 162 00:52:49,170 --> 00:52:52,600 en hoe is dit geïmplementeer deur my oorspronklik en dan deur die Jordaan. 163 00:52:52,600 --> 00:52:54,640 Met ander woorde, waar is die veranderlikes? 164 00:52:54,640 --> 00:52:55,520 Waar is die lusse? 165 00:52:55,520 --> 00:52:56,520 Waar is die funksies? 166 00:52:56,520 --> 00:53:00,700 En ons sal sien of ons nie sien nie diegene onder die enjinkap. 167 00:53:00,700 --> 00:53:03,660 >> Net kliek en sleep asblik om die toepaslike bin. 168 00:53:03,660 --> 00:54:02,100 >> [Speel van musiek] 169 00:54:02,100 --> 00:54:02,600 Alles reg. 170 00:54:02,600 --> 00:54:03,160 Dit is baie goed. 171 00:54:03,160 --> 00:54:04,286 Hoekom het ons nie keer nie daar. 172 00:54:04,286 --> 00:54:04,786 Dankie. 173 00:54:04,786 --> 00:54:05,830 Baie geluk aan Henry. 174 00:54:05,830 --> 00:54:07,002 Dankie. 175 00:54:07,002 --> 00:54:10,690 >> [Applous] 176 00:54:10,690 --> 00:54:12,450 >> Dink net ontfouting die program. 177 00:54:12,450 --> 00:54:15,880 As daar 'n probleem twee minute in die song-- maar so 178 00:54:15,880 --> 00:54:17,430 wat gaan aan hier werklik? 179 00:54:17,430 --> 00:54:20,900 So ingewikkeld soos dit mag begin lyk met verloop van tyd te kry, 180 00:54:20,900 --> 00:54:22,910 inderdaad al hoe meer dinge begin val, 181 00:54:22,910 --> 00:54:25,370 Wat is interessant oor hierdie soort voorbeeld-- 182 00:54:25,370 --> 00:54:27,270 en ons sal sien 'n paar others-- is dat as jy 183 00:54:27,270 --> 00:54:30,416 kyk verby die kompleksiteit of die gesofistikeerdheid van die spel, 184 00:54:30,416 --> 00:54:33,040 daar is 'n baie eenvoudige gebou blokke wat almal play--, 185 00:54:33,040 --> 00:54:35,840 As jy dit distilleer aan diegene boublokke, is baie toeganklik 186 00:54:35,840 --> 00:54:37,401 en implementeerbare vir hulleself. 187 00:54:37,401 --> 00:54:39,150 Byvoorbeeld, dit is was 'n geruime tyd, maar ek is 188 00:54:39,150 --> 00:54:42,900 mooi seker wat ek aanvanklik gedoen het toe die maak van hierdie spel vir die eerste keer 189 00:54:42,900 --> 00:54:44,787 Ek was heeltemal soos procrastinated. 190 00:54:44,787 --> 00:54:47,120 Ek het glad nie fokus op die logika of die stukke van die legkaart, 191 00:54:47,120 --> 00:54:50,810 Ek het gefokus op die grafika en bevinding die straat post en die asblik 192 00:54:50,810 --> 00:54:51,540 en al wat. 193 00:54:51,540 --> 00:54:53,456 Maar dit was vereiste bestanddele by die eerste. 194 00:54:53,456 --> 00:54:57,220 En sodra ek klaar uitstel en uitlê van die oorkoepelende raamwerk, 195 00:54:57,220 --> 00:55:00,337 Ek het besluit, laat my net te maak een stuk asblik val uit die lug. 196 00:55:00,337 --> 00:55:02,170 En ons sal sien Scratch ondersteun dinge genoem 197 00:55:02,170 --> 00:55:06,386 sprites-- karakters wat kan verskillende kostuums op sodat hulle 198 00:55:06,386 --> 00:55:07,010 anders lyk. 199 00:55:07,010 --> 00:55:09,660 >> En so het ek 'n asblik kostuum op een so 'n sprite. 200 00:55:09,660 --> 00:55:12,007 En ek het net nodig gehad het om te val uit die lug. 201 00:55:12,007 --> 00:55:14,590 En so is dit blyk dat nuuts af, soos die meeste programmeertale, 202 00:55:14,590 --> 00:55:18,099 ondersteun ewekansige getalle of tegnies pseudokode ewekansige getalle, 203 00:55:18,099 --> 00:55:20,390 sodat deur te sleep en val sekere stukke van die legkaart, 204 00:55:20,390 --> 00:55:22,890 Ek was in staat om die asblik het kom van links by die eerste. 205 00:55:22,890 --> 00:55:25,580 En dan die volgende keer dit omval van die reg en dan vanaf die middel. 206 00:55:25,580 --> 00:55:28,060 En al die spel het net was het asblik wat uit die lug. 207 00:55:28,060 --> 00:55:29,770 Jy kan nie wys na dit of kliek op dit. 208 00:55:29,770 --> 00:55:31,103 Jy kan nie maak die asblik. 209 00:55:31,103 --> 00:55:32,160 Jy kan niks doen nie. 210 00:55:32,160 --> 00:55:34,450 Maar dit was 'n baba stap teenoor my uiteindelike visie. 211 00:55:34,450 --> 00:55:36,720 >> En daarna het ek eintlik geïmplementeer 'n soort 212 00:55:36,720 --> 00:55:41,230 van sensing sodat as jy nie op en sleep op die stuk van die asblik 213 00:55:41,230 --> 00:55:44,350 oor die asblik, Oscar se deksel sou oop en toe. 214 00:55:44,350 --> 00:55:47,650 Niks sal gebeur na die asblik, maar ten minste die deksel sou oop en toe. 215 00:55:47,650 --> 00:55:49,642 So dan kyk, stap twee van twee. 216 00:55:49,642 --> 00:55:52,100 En dit is wat gaan wees sleutel in beide probleem gestel nul 217 00:55:52,100 --> 00:55:55,970 en in programmering meer algemeen, is om neem hierdie baie doelbewuste baba stappe. 218 00:55:55,970 --> 00:55:59,390 Omdat dit beteken nie net toelaat dat jy voel eerlik bereik baie meer 219 00:55:59,390 --> 00:56:01,250 quickly-- dis die ergste ding in die wêreld 220 00:56:01,250 --> 00:56:06,149 om te probeer om al Oscar Tyd implementeer, dan ure later tref die groen vlag, 221 00:56:06,149 --> 00:56:08,440 en niks werk soos verwag want waar het jy al 222 00:56:08,440 --> 00:56:11,150 begin om debug of om los die program? 223 00:56:11,150 --> 00:56:12,470 Dis net oorweldigend. 224 00:56:12,470 --> 00:56:16,792 >> En so werklik omhels hierdie idee van die neem van steps-- baba stappe weer 225 00:56:16,792 --> 00:56:19,000 en again-- opbou iets wat op die ou end, 226 00:56:19,000 --> 00:56:23,672 werklik indrukwekkend en kompleks, maar Op die eerste, is nie naastenby so 'n mate. 227 00:56:23,672 --> 00:56:24,630 Trouens, laat ons dit doen. 228 00:56:24,630 --> 00:56:28,989 Laat my gaan voort and-- Krap self bestaan ​​op die web by Scratch.MIT.edu, 229 00:56:28,989 --> 00:56:30,780 en jy sal ingelig word as veel weer in probleem 230 00:56:30,780 --> 00:56:34,200 stel nul, die spesifikasie vir wat reeds op die webwerf CS50 se. 231 00:56:34,200 --> 00:56:35,725 >> Maar dit is wat Krap self is. 232 00:56:35,725 --> 00:56:38,210 En daar is regtig net drie primêre gebiede. 233 00:56:38,210 --> 00:56:40,980 Aan die bokant is daar gelaat is die sogenaamde stadium. 234 00:56:40,980 --> 00:56:41,810 Dit is te krap. 235 00:56:41,810 --> 00:56:43,710 Die verstek kostuum is 'n kat. 236 00:56:43,710 --> 00:56:46,950 En dit is die vierkantige wêreld in wat jy kan move-- op, af, links, 237 00:56:46,950 --> 00:56:48,130 reg en 'n paar ander dinge. 238 00:56:48,130 --> 00:56:51,839 In die middel hier is ons kategorieë of ons palette van die legkaart stukke, 239 00:56:51,839 --> 00:56:53,630 en verskillende kleure beteken verskillende dinge. 240 00:56:53,630 --> 00:56:56,520 En as jy rondom steek, sal jy sien dinge soos lusse en voorwaardes 241 00:56:56,520 --> 00:56:58,160 en veranderlikes en ander bestanddele. 242 00:56:58,160 --> 00:57:00,060 >> En dan hier is die skrifte gebied. 243 00:57:00,060 --> 00:57:03,020 Dit is hier waar ek kan sleep en diegene stukke van die legkaart om dinge te doen. 244 00:57:03,020 --> 00:57:04,690 So laat ons doen een so 'n ding. 245 00:57:04,690 --> 00:57:06,630 Laat my gaan voort and-- en ek weet waar dit is. 246 00:57:06,630 --> 00:57:10,110 So ek gaan onmiddellik klik op waar ek weet dinge is om gereed te wees, 247 00:57:10,110 --> 00:57:13,140 maar wys en kliek en skeer rond is onvermydelik. 248 00:57:13,140 --> 00:57:15,320 So wanneer groen vlag gekliek, wat doen wat ek wil doen? 249 00:57:15,320 --> 00:57:17,100 Ek gaan om dit te doen. 250 00:57:17,100 --> 00:57:20,699 Ek gaan hierdie pers legkaart sleep stuk, sê hallo vir twee sekondes, 251 00:57:20,699 --> 00:57:21,490 en laat my in te zoem. 252 00:57:21,490 --> 00:57:23,865 >> En ek gaan om dit te verander te wees wat ek wil hê dit moet be-- 253 00:57:23,865 --> 00:57:26,471 Hello World vir twee sekondes is fyn. 254 00:57:26,471 --> 00:57:28,970 Nou, ek gaan die klik groen vlag, of as ek regtig wil, 255 00:57:28,970 --> 00:57:31,820 Ek kan die volle screen dit en kom dan terug. 256 00:57:31,820 --> 00:57:34,060 Dit sal net aanhou alles in 'n venster. 257 00:57:34,060 --> 00:57:36,141 Groen flag-- hello world. 258 00:57:36,141 --> 00:57:36,640 Alles reg. 259 00:57:36,640 --> 00:57:38,789 Nie alles wat interessant. 260 00:57:38,789 --> 00:57:40,080 So laat ek gaan voort en doen dit. 261 00:57:40,080 --> 00:57:41,038 Laat ek probeer 'n ander een. 262 00:57:41,038 --> 00:57:44,740 Wanneer groen vlag se clicked-- laat iets soos 'n geluid te doen. 263 00:57:44,740 --> 00:57:46,880 En sien dat uit die boks gratis jy 264 00:57:46,880 --> 00:57:49,910 'n kat klank, soos die standaard sprite. 265 00:57:49,910 --> 00:57:52,380 So nou laat ek gaan voort en druk op die groen vlag nou. 266 00:57:52,380 --> 00:57:53,224 >> [Miaau] 267 00:57:53,224 --> 00:57:54,490 >> AW. 268 00:57:54,490 --> 00:57:55,370 Dit is adorable. 269 00:57:55,370 --> 00:57:57,040 Ek programmering. 270 00:57:57,040 --> 00:57:58,550 So, wat het ek gedoen? 271 00:57:58,550 --> 00:58:00,430 Dit is die ekwivalent van 'n program. 272 00:58:00,430 --> 00:58:01,600 Dit is natuurlik super eenvoudig. 273 00:58:01,600 --> 00:58:05,300 Dit het nie regtig al neem dat daar nog baie moeite en MIT het die meeste van die werk, 274 00:58:05,300 --> 00:58:07,890 maar ek het 'n funksie genoem. 275 00:58:07,890 --> 00:58:08,940 Ek het 'n funksie gebruik. 276 00:58:08,940 --> 00:58:12,480 Ek het 'n paar aksie gemaak, met net dat 'n mens pers legkaart stuk. 277 00:58:12,480 --> 00:58:15,960 >> Wel, as ek wil doen drie meows in 'n ry? 278 00:58:15,960 --> 00:58:18,570 Laat my gaan voort en doen twee en drie. 279 00:58:18,570 --> 00:58:20,910 En agterkom dat as jy Beweeg nabygeleë n legkaart stuk, 280 00:58:20,910 --> 00:58:22,970 'n bietjie wit streep verskyn soort magneties, 281 00:58:22,970 --> 00:58:25,190 en dit sal snap saam wanneer jy laat gaan. 282 00:58:25,190 --> 00:58:26,600 Kom ons kyk wat hier gebeur. 283 00:58:26,600 --> 00:58:27,920 >> [Miaau] 284 00:58:27,920 --> 00:58:32,390 285 00:58:32,390 --> 00:58:34,510 >> Daar is 'n fout. 286 00:58:34,510 --> 00:58:35,650 Ek hoor net een miauw. 287 00:58:35,650 --> 00:58:37,440 Hoekom kan dit wees? 288 00:58:37,440 --> 00:58:39,001 Ja? 289 00:58:39,001 --> 00:58:39,500 Ja. 290 00:58:39,500 --> 00:58:41,650 Ons het nie regtig hoor, maar dit is 'n goeie intuïsie. 291 00:58:41,650 --> 00:58:43,400 Hulle is almal speel op dieselfde tyd. 292 00:58:43,400 --> 00:58:44,000 Hoekom? 293 00:58:44,000 --> 00:58:46,587 Wel, die rekenaar is net gaan om te doen wat jy dit vertel om te doen. 294 00:58:46,587 --> 00:58:48,670 So as jy sê, speel klank, speel klank, speel klank, 295 00:58:48,670 --> 00:58:52,887 maar jy hoef dit nie te kenne gee om te speel totdat jy gedoen het, speel totdat jy klaar is, 296 00:58:52,887 --> 00:58:54,970 dit gaan deur blaas die program baie vinnig 297 00:58:54,970 --> 00:58:56,830 en doen slegs wat jy dit vertel om te doen. 298 00:58:56,830 --> 00:58:59,040 >> So ek moet eintlik op te los dit in 'n paar maniere. 299 00:58:59,040 --> 00:59:00,623 Ek kan dit net doen, ontslae te raak van hierdie. 300 00:59:00,623 --> 00:59:04,180 Laat ek probeer hierdie ander legkaart piece-- speel klank miauw tot gaar, 301 00:59:04,180 --> 00:59:07,072 en dan sleep drie hierdie en klik speel. 302 00:59:07,072 --> 00:59:09,430 >> [Miaau] 303 00:59:09,430 --> 00:59:13,350 >> Dit is nie regtig very-- dankie you-- baie natuurlike. 304 00:59:13,350 --> 00:59:16,590 So hoekom nie I-- laat my gaan hier te beheer. 305 00:59:16,590 --> 00:59:17,090 Lekker. 306 00:59:17,090 --> 00:59:22,230 Wag 'n sekonde, en nou wil ek teruggaan om klanke en speel klank tot gaar, 307 00:59:22,230 --> 00:59:24,620 en dan laat my sommer wag 'n sekonde. 308 00:59:24,620 --> 00:59:28,692 En dan laat my gaan en kry 'n meer klank, en hier gaan ons. 309 00:59:28,692 --> 00:59:31,350 >> [Miaau] 310 00:59:31,350 --> 00:59:35,930 >> 'N bietjie meer natuurlike, maar dit is nie baie doeltreffend nie. 311 00:59:35,930 --> 00:59:39,830 Soos ek verveeld, almal dit kortliks, kliek heen en weer 312 00:59:39,830 --> 00:59:42,724 en regtig duplisering my work-- pretty much kopieer en plak. 313 00:59:42,724 --> 00:59:44,640 Inderdaad, as ek Beheer kliek regs gekliek word, 314 00:59:44,640 --> 00:59:46,500 Ek kon net gekopieer en geplak. 315 00:59:46,500 --> 00:59:49,870 Wat sou 'n beter bou om te gebruik? 316 00:59:49,870 --> 00:59:51,090 Wat idee voor? 317 00:59:51,090 --> 00:59:51,990 >> Ja, so 'n lus. 318 00:59:51,990 --> 00:59:54,580 En in werklikheid, as ons poked rondom, Ons kan presies dit te vind. 319 00:59:54,580 --> 00:59:57,730 Laat my gaan na gebeure of eerder beheer. 320 00:59:57,730 --> 00:59:59,650 So repeat-- ek doen nie wil dit tot 10 keer wees. 321 00:59:59,650 --> 01:00:01,370 Dit gaan vinnig irriterende kry. 322 01:00:01,370 --> 01:00:03,380 Maar ek sal drie keer herhaal. 323 01:00:03,380 --> 01:00:06,355 Laat my terug te gaan om te blaas en speel die klank totdat dit gedoen. 324 01:00:06,355 --> 01:00:08,480 Laat my terug te gaan na die Beheer en net wag 'n sekonde. 325 01:00:08,480 --> 01:00:10,271 En kennis, kan jy dink dit pas nie, 326 01:00:10,271 --> 01:00:13,520 maar weer as magneties jy laat dit snap in plek is, sal dit groei te vul. 327 01:00:13,520 --> 01:00:14,971 Wat is dit nou speel? 328 01:00:14,971 --> 01:00:18,500 >> [Miaau] 329 01:00:18,500 --> 01:00:19,000 OK. 330 01:00:19,000 --> 01:00:19,660 Lekker. 331 01:00:19,660 --> 01:00:22,540 En dit is wat sal genoem word 'n program wat ook korrek. 332 01:00:22,540 --> 01:00:27,590 Dit meowed drie keer redelik natuurlik, maar dit is beter ontwerp. 333 01:00:27,590 --> 01:00:29,580 Ek gebruik minder ontslag. 334 01:00:29,580 --> 01:00:30,970 Ek het nie kopieer en plak enigiets. 335 01:00:30,970 --> 01:00:32,470 Ek het nou net gebruik om 'n beter idee. 336 01:00:32,470 --> 01:00:35,340 >> Nou, is dit nog steeds nie alles wat interessante met Scratch nie doen 337 01:00:35,340 --> 01:00:35,930 enigiets. 338 01:00:35,930 --> 01:00:37,388 So laat ons iets doen anders plaas. 339 01:00:37,388 --> 01:00:38,670 Kom ons altyd iets te doen. 340 01:00:38,670 --> 01:00:39,420 En weet jy wat? 341 01:00:39,420 --> 01:00:40,470 Beweging lyk interessant. 342 01:00:40,470 --> 01:00:45,760 Kom ons hom 10 beweeg stappe en druk nou speel. 343 01:00:45,760 --> 01:00:46,570 >> OK. 344 01:00:46,570 --> 01:00:49,300 Wel ons kan soort drag hom terug, en hy is nog steeds 345 01:00:49,300 --> 01:00:51,250 loop, omdat hy dit vir ewig doen. 346 01:00:51,250 --> 01:00:53,150 So het die lus is om te doen wat dit sê om te doen, 347 01:00:53,150 --> 01:00:54,650 maar dit is nie alles wat interessant. 348 01:00:54,650 --> 01:00:55,310 Kom ons doen dit. 349 01:00:55,310 --> 01:00:59,870 Laat my 'n kontrole blok voeg, en gebruik 'n van daardie voorwaardes vir die eerste keer. 350 01:00:59,870 --> 01:01:03,119 >> So dit gaan 10 steps-- beweeg 10 punte, 10 pixels op die screen-- 351 01:01:03,119 --> 01:01:04,660 dan is dit gaan om die vraag te vra. 352 01:01:04,660 --> 01:01:09,340 As daar iets is waar, dan doen iets in hierdie blok. 353 01:01:09,340 --> 01:01:13,060 So dit blyk sensing het 'n hele n klomp van die Boolese expressions-- 354 01:01:13,060 --> 01:01:16,580 vrae van die ja nee of ware valse form-- laat my dit doen. 355 01:01:16,580 --> 01:01:19,260 >> As touching-- en dan is daar hierdie klein drop down menu. 356 01:01:19,260 --> 01:01:20,410 Ek kan dit parameteriseren. 357 01:01:20,410 --> 01:01:23,010 As die aanraking van die edge-- laat so iets te doen. 358 01:01:23,010 --> 01:01:27,310 So as raak edge-- Laat my terug te gaan na beweging. 359 01:01:27,310 --> 01:01:32,281 En hoekom doen ons nie net omdraai 180 grade? 360 01:01:32,281 --> 01:01:32,780 Alles reg. 361 01:01:32,780 --> 01:01:35,070 So vir ewig, beweeg 10 stappe. 362 01:01:35,070 --> 01:01:37,670 As jy raak die rand, draai 180 grade. 363 01:01:37,670 --> 01:01:39,720 En dit is nie die einde van die program omdat jy in 'n ewig te sluit, 364 01:01:39,720 --> 01:01:42,053 so dit gaan om terug te gaan en weer en weer en weer. 365 01:01:42,053 --> 01:01:43,980 So kom ons kyk wat gebeur. 366 01:01:43,980 --> 01:01:44,785 OK. 367 01:01:44,785 --> 01:01:48,270 'N bietjie karretjie, maar gaaf. 368 01:01:48,270 --> 01:01:51,710 >> En ons kan byvoeg by hierdie paar dom dinge wat nie alles wat intellektueel 369 01:01:51,710 --> 01:01:52,270 interessant. 370 01:01:52,270 --> 01:01:57,210 Maar as ons getref hierdie klein mikrofoon button-- eina. 371 01:01:57,210 --> 01:01:58,480 Laat my skoon hierdie up. 372 01:01:58,480 --> 01:02:01,540 Laat my dit te verbeter as hulle sou sê op TV. 373 01:02:01,540 --> 01:02:05,400 Skoon dat up, Save, en Maar gaan nou tot skrifte. 374 01:02:05,400 --> 01:02:07,500 >> En nou, laat my gaan om te blaas. 375 01:02:07,500 --> 01:02:09,002 Kom ek gee dit 'n naam. 376 01:02:09,002 --> 01:02:12,440 Ek sal hierdie eina noem. 377 01:02:12,440 --> 01:02:13,840 En nou speel klank eina. 378 01:02:13,840 --> 01:02:16,520 Let daarop dat dit verskyn in die bietjie drop down menu. 379 01:02:16,520 --> 01:02:17,612 Kom ons sien. 380 01:02:17,612 --> 01:02:20,444 >> [Eina] 381 01:02:20,444 --> 01:02:24,377 >> [ROOIBORSDUIFIE] 382 01:02:24,377 --> 01:02:25,835 Maar ons kan verander t sy op die vlieg. 383 01:02:25,835 --> 01:02:28,106 Ons kan twee keer so irriterend. 384 01:02:28,106 --> 01:02:31,760 >> [Eina] 385 01:02:31,760 --> 01:02:35,332 >> Of as ons dit soos 1000 stappe teen 'n time-- 386 01:02:35,332 --> 01:02:39,900 387 01:02:39,900 --> 01:02:40,670 >> OK. 388 01:02:40,670 --> 01:02:42,295 So ons gaan dat 'n mens uit te los. 389 01:02:42,295 --> 01:02:45,290 So weer, die bou van blocks-- ek begin met iets super eenvoudige, 390 01:02:45,290 --> 01:02:47,930 en dan bygevoeg ek 'n funksie, bygevoeg 'n funksie, bygevoeg 'n funksie. 391 01:02:47,930 --> 01:02:50,721 En ek hoef nie meer te bekommer oor hoe die eerste van dié funksies 392 01:02:50,721 --> 01:02:53,690 geïmplementeer as ek voortgaan om dinge laag bo. 393 01:02:53,690 --> 01:02:55,430 So in werklikheid, laat my een ander doen hier. 394 01:02:55,430 --> 01:03:00,580 Laat my gaan voort en 'n lêer oop te maak dat Ek het vooraf, genoem skape. 395 01:03:00,580 --> 01:03:03,970 >> Dit het so 'n bietjie anders karakter wat so lyk. 396 01:03:03,970 --> 01:03:07,370 En laat ek sien of ek kan nie doen iets met behulp van 'n toonbank 397 01:03:07,370 --> 01:03:09,310 in hierdie case-- n sogenaamde veranderlike. 398 01:03:09,310 --> 01:03:15,540 Ek gaan voort en onder Events-- gaan laat my sommer 'n groen vlag gebruik. 399 01:03:15,540 --> 01:03:19,030 laat my dan na Data, wat ek weet van net rondspeel voor, 400 01:03:19,030 --> 01:03:20,214 is waar veranderlikes is. 401 01:03:20,214 --> 01:03:21,880 En ek gaan om voort te gaan en sleep dit. 402 01:03:21,880 --> 01:03:25,144 >> So 'n veranderlike genoem toonbank, en Ek gaan dit inisialiseer aan nul. 403 01:03:25,144 --> 01:03:27,560 Ek kan dit noem anything-- x of y of z-- maar in programmering, 404 01:03:27,560 --> 01:03:30,410 roep iets in 'n semanties nuttige manier, soos toonbank, 405 01:03:30,410 --> 01:03:34,540 wat beskryf wat dit is, dit is 'n baie makliker om jou kode later lees. 406 01:03:34,540 --> 01:03:37,460 Laat my gaan voort en kry 'n ewig blok hier. 407 01:03:37,460 --> 01:03:41,289 Dat ek kan gaan om die voorkoms bladsy en doen 'n sê blok. 408 01:03:41,289 --> 01:03:44,330 Maar wat is koel oor veranderlikes is ek hoef nie te tik in iets 409 01:03:44,330 --> 01:03:47,850 soos Hello World, wat ons reeds gedoen het, kan ek in plaas gaan na Data 410 01:03:47,850 --> 01:03:50,690 en sleep my veranderlike, en selfs alhoewel die vorm nie heeltemal 411 01:03:50,690 --> 01:03:53,000 lyk dit moet inpas, dit sal groei in te vul. 412 01:03:53,000 --> 01:03:58,396 En ek sal net sê die toonbank vir een second-- spoiler-- hy gaan tel. 413 01:03:58,396 --> 01:04:00,380 Ons sal dit sê vir 'n sekonde. 414 01:04:00,380 --> 01:04:02,840 Toe ek gaan om te gaan en het hom wag 'n sekonde, 415 01:04:02,840 --> 01:04:04,650 so dit tel nie op te vinnig. 416 01:04:04,650 --> 01:04:08,430 En dan laastens, verander toonbank deur one-- met ander woorde, 417 01:04:08,430 --> 01:04:13,520 inkrementeer die toonbank deur een bykomende waarde en doen dit vir ewig. 418 01:04:13,520 --> 01:04:16,129 >> So het die skape ook, soos 'n programmeerder, tel van 0. 419 01:04:16,129 --> 01:04:20,350 420 01:04:20,350 --> 01:04:23,740 En as ons lank genoeg wag, Hy sal dit vir ewig doen. 421 01:04:23,740 --> 01:04:27,740 Maar dit is nie presies waar nie, omdat Trouens, soos ons sal ontdek in week een, 422 01:04:27,740 --> 01:04:31,871 heelgetalle en rekenaars meer algemeen, tegnies net 'n finite-- goed, 423 01:04:31,871 --> 01:04:33,829 eerder rekenaars, wanneer hulle verteenwoordig heelgetalle, 424 01:04:33,829 --> 01:04:35,670 net 'n beperkte aantal bisse. 425 01:04:35,670 --> 01:04:37,860 Diegene gloeilampe daar kan net tel so hoog 426 01:04:37,860 --> 01:04:39,239 voordat jy uit gloeilampe. 427 01:04:39,239 --> 01:04:41,590 En 'n rekenaar ook net het soveel geheue, 428 01:04:41,590 --> 01:04:44,640 het net so baie transistors, sodat dit kan net tel so hoog. 429 01:04:44,640 --> 01:04:47,409 >> So dit blyk dat die skape, Ek dink, kan reken op 2000000000 430 01:04:47,409 --> 01:04:48,409 of iets mooi groot. 431 01:04:48,409 --> 01:04:50,325 So ons gaan nie wag vir dit om te gebeur. 432 01:04:50,325 --> 01:04:54,850 Maar uiteindelik 'n paar fout sal gebeur wat kan 'n paar baie werklike wêreld 433 01:04:54,850 --> 01:04:55,970 gevolge. 434 01:04:55,970 --> 01:04:58,861 Maar buite die skape, wat net stel 'n veranderlike. 435 01:04:58,861 --> 01:05:01,110 Kom ons gaan voort en oop te stel iets wat ek gemaak by voorbaat 436 01:05:01,110 --> 01:05:07,430 hier genoem Pet die Cat-- Troeteldier die kat hier. 437 01:05:07,430 --> 01:05:10,420 En sien hier is dit min blokke, maar wanneer groen vlag 438 01:05:10,420 --> 01:05:12,474 gekliek, vir ewig tot die volgende. 439 01:05:12,474 --> 01:05:15,265 As jy raak die muis pointer-- so die wyser op die skerm, 440 01:05:15,265 --> 01:05:18,529 die arrow-- speel klank miauw en dan wag twee sekondes. 441 01:05:18,529 --> 01:05:19,570 En dit net doen vir ewig. 442 01:05:19,570 --> 01:05:22,619 Net voortdurend wag om te sien of die pointer-- 443 01:05:22,619 --> 01:05:24,710 As die kat raak die wyser. 444 01:05:24,710 --> 01:05:26,060 >> So ek getref speel. 445 01:05:26,060 --> 01:05:26,920 Niks gebeur. 446 01:05:26,920 --> 01:05:28,980 Maar as ek beweeg die muis oor die kat, 447 01:05:28,980 --> 01:05:31,960 >> [Miaau] 448 01:05:31,960 --> 01:05:34,750 >> En as ek beweeg dit weg, nie troetel die kat nie. 449 01:05:34,750 --> 01:05:38,090 So 'n paar voorwaardelike logika geneste binnekant van 'n lus. 450 01:05:38,090 --> 01:05:43,070 Hoe gaan dit met hierdie voorbeeld met opset genoem Moenie Troeteldier die kat? 451 01:05:43,070 --> 01:05:45,253 Wat is dit gaan doen? 452 01:05:45,253 --> 01:05:47,880 >> [Miaau] 453 01:05:47,880 --> 01:05:50,215 >> Hoekom moet jy nie die kat troeteldier? 454 01:05:50,215 --> 01:05:59,440 >> [Miaau] 455 01:05:59,440 --> 01:06:00,699 >> OK. 456 01:06:00,699 --> 01:06:03,880 So dit is 'n voorbeeld van 'n as anders. 457 01:06:03,880 --> 01:06:06,482 Dit is 'n besluit punt en want dit is die vergadering in die lus, 458 01:06:06,482 --> 01:06:07,690 hulle is albei kry nagegaan. 459 01:06:07,690 --> 01:06:08,280 Is dit waar? 460 01:06:08,280 --> 01:06:08,760 Is dit waar? 461 01:06:08,760 --> 01:06:09,250 Is dit waar? 462 01:06:09,250 --> 01:06:09,791 Is dit waar? 463 01:06:09,791 --> 01:06:11,880 En uiteindelik, een van diegene gaan om aansoek te doen 464 01:06:11,880 --> 01:06:16,480 en sodat jy óf die miaau of hoor die brul van die leeu in daardie geval. 465 01:06:16,480 --> 01:06:21,400 >> Wel, laat ons doen 'n bietjie meer fancy een wat ek gemaak het vooruit too-- drade. 466 01:06:21,400 --> 01:06:25,210 So 'n draad is net een Al wat 'n rekenaar kan doen. 467 01:06:25,210 --> 01:06:29,349 So 'n multi-threaded program is 'n program wat kan verskeie dinge gelyktydig. 468 01:06:29,349 --> 01:06:31,140 En al hierdie voorbeelde tot dusver gehad het 469 01:06:31,140 --> 01:06:35,980 net een script, om so te speak-- een program soos hierdie hier. 470 01:06:35,980 --> 01:06:38,810 Maar let op die program het twee sprites, twee karakters. 471 01:06:38,810 --> 01:06:40,020 Een daarvan is 'n voël. 472 01:06:40,020 --> 01:06:40,870 Een daarvan is 'n kat. 473 01:06:40,870 --> 01:06:45,080 >> En sien toe ek op hierdie af klik links, hulle het elk hul eie skrifte 474 01:06:45,080 --> 01:06:47,120 of programme wat verband hou met hulle. 475 01:06:47,120 --> 01:06:49,420 En beide van diegene programme, kennisgewing, begin 476 01:06:49,420 --> 01:06:52,600 met wanneer groen vlag clicked-- Kom ons kyk na die cat-- 477 01:06:52,600 --> 01:06:54,030 wanneer groen vlag gebruik. 478 01:06:54,030 --> 01:06:58,220 En so ja, wanneer ek getref speel nou, twee dinge gaan gebeur in 'n keer. 479 01:06:58,220 --> 01:07:01,750 Die kat en die voël is albei gaan gelyktydig funksioneer 480 01:07:01,750 --> 01:07:03,815 om hierdie effek te skep. 481 01:07:03,815 --> 01:07:05,440 En jy kan dink wat gebeur. 482 01:07:05,440 --> 01:07:08,340 Daar is 'n lus en die voëls en die kat is in 'n lus. 483 01:07:08,340 --> 01:07:11,270 Die voël is net weerkaats soos Ek was voor toe ek gesê eina. 484 01:07:11,270 --> 01:07:13,040 Maar die kat het duidelik 'n voordeel. 485 01:07:13,040 --> 01:07:16,040 Daar is nog 'n sensing blok wat verwys die kat doelbewus 486 01:07:16,040 --> 01:07:19,836 om die voëls in hierdie geval hier. 487 01:07:19,836 --> 01:07:22,960 So ons kon terg uitmekaar, deur te kyk deur die blokke, wat gebeur. 488 01:07:22,960 --> 01:07:25,460 Maar die belangrikste bestanddeel hier is een. 489 01:07:25,460 --> 01:07:28,520 Die voël, sodat die spel is nie heeltemal boring-- of hierdie animation-- 490 01:07:28,520 --> 01:07:30,060 begin om 'n ewekansige rigting. 491 01:07:30,060 --> 01:07:32,890 En die rekenaar is pluk 'n getal tussen 90 en 180 492 01:07:32,890 --> 01:07:36,110 wese, sodat dit 'n effens verskillende animasie elke keer. 493 01:07:36,110 --> 01:07:39,480 >> En dan sien hier, indien die kat raak die voëls, dan 494 01:07:39,480 --> 01:07:42,030 speel die leeu vier sound-- die brul. 495 01:07:42,030 --> 01:07:46,330 Maar intussen in die voël se palet, ons het hierdie. 496 01:07:46,330 --> 01:07:49,229 Forever, as die kat nie raak, net bly beweeg drie stappe. 497 01:07:49,229 --> 01:07:50,770 En dan is hier is 'n ander legkaart stuk. 498 01:07:50,770 --> 01:07:52,030 As jy op die rand, hop. 499 01:07:52,030 --> 01:07:54,840 So het die voël is net soort van minding sy eie besigheid, 500 01:07:54,840 --> 01:07:57,330 net vlieg rond en weerkaats, en dit is regtig 501 01:07:57,330 --> 01:08:01,780 die kat wat die voorwaardelike logika het om te bepaal of dit die voël gevang. 502 01:08:01,780 --> 01:08:02,280 Alles reg. 503 01:08:02,280 --> 01:08:08,800 So laat ons doen een ander hier, hierdie een word Hi genoem Hi Hi. 504 01:08:08,800 --> 01:08:15,100 En hierdie een hier net doen dit in 'n ewig lus. 505 01:08:15,100 --> 01:08:18,925 Maar notice-- hoe kan ons stop hierdie baie irriterende program? 506 01:08:18,925 --> 01:08:21,600 507 01:08:21,600 --> 01:08:22,640 Klik op die space bar. 508 01:08:22,640 --> 01:08:27,990 Want as ek dit doen, die linkerhand program-- 509 01:08:27,990 --> 01:08:31,550 sien dis voortdurend listening-- is die sleutel ruimte pers. 510 01:08:31,550 --> 01:08:34,090 As die spasie balk gedruk, en indien wel, wat doen dit? 511 01:08:34,090 --> 01:08:35,980 Dit maak 'n baie algemene tegniek. 512 01:08:35,980 --> 01:08:38,590 Dit stel 'n veranderlike gelyk aan 'n bietjie waarde. 513 01:08:38,590 --> 01:08:39,741 Maar dit toggled wat waarde. 514 01:08:39,741 --> 01:08:41,490 [? So lyk?] gebaseer op die shape-- ek 515 01:08:41,490 --> 01:08:43,160 'n veranderlike wat ek geskryf vooraf genoem 516 01:08:43,160 --> 01:08:44,770 Gedemp, wat net sê ja of nee. 517 01:08:44,770 --> 01:08:45,880 Is die klank gedemp of nie? 518 01:08:45,880 --> 01:08:46,990 Waar of vals? 519 01:08:46,990 --> 01:08:51,580 En kennis, ek sê this-- as gedempte nul, dan verander na een, 520 01:08:51,580 --> 01:08:53,840 anders gestel stom dit aan nul. 521 01:08:53,840 --> 01:08:55,540 Dus net flip die waarde van nul tot een. 522 01:08:55,540 --> 01:08:58,320 Ek kon done-- dit verander van twee na drie en 01:57 523 01:08:58,320 --> 01:09:00,162 of 04:56 of 05:56. 524 01:09:00,162 --> 01:09:01,870 Maar dit maak nie saak Watter getalle wat ek gebruik, 525 01:09:01,870 --> 01:09:04,090 so lank as wat ek hou om dit te verander die teenoorgestelde. 526 01:09:04,090 --> 01:09:07,290 >> En die meeste enige programmeerder wil net kies nul en one-- valse en ware, 527 01:09:07,290 --> 01:09:09,510 af en is-- hierdie verteenwoordig. 528 01:09:09,510 --> 01:09:10,930 En dit is steeds aan die gang. 529 01:09:10,930 --> 01:09:12,190 As ek druk die space bar weer 530 01:09:12,190 --> 01:09:13,590 >> [SEAL SOUNDS] 531 01:09:13,590 --> 01:09:15,440 >> Die program is steeds aan die gang. 532 01:09:15,440 --> 01:09:18,400 Want daar is hierdie ander script wat sê, vir ewig die volgende te doen. 533 01:09:18,400 --> 01:09:21,390 534 01:09:21,390 --> 01:09:24,770 As die gedempte veranderlike gelyk aan zero-- so as jy nie gedemp 535 01:09:24,770 --> 01:09:29,609 is die logic-- as dit vals of nee, dan speel die klank, 536 01:09:29,609 --> 01:09:30,650 omdat jy nie gedemp. 537 01:09:30,650 --> 01:09:33,358 Jy moet die klank speel en dan dink hi hi hi vir twee sekondes 538 01:09:33,358 --> 01:09:35,790 en dan wag, en doen dit weer en weer en weer. 539 01:09:35,790 --> 01:09:40,760 >> En so op hierdie manier het ons 'n manier vir mense aan- vir programme om te gebruik. 540 01:09:40,760 --> 01:09:43,120 En hulle hoef nie te word as gedateer as ander. 541 01:09:43,120 --> 01:09:46,280 Trouens, skeer around-- geen woordspeling intended-- 542 01:09:46,280 --> 01:09:49,250 iemand het 'n groot hoeveelheid van die tyd op die internet te implementeer 543 01:09:49,250 --> 01:09:51,580 PokemonGo in Scratch. 544 01:09:51,580 --> 01:09:55,440 Dit geolocates jy selfs in Cambridge of Allston hier. 545 01:09:55,440 --> 01:10:03,120 So as jy wil om te sien wat mense kan doen, is this-- baie fancy spyskaart. 546 01:10:03,120 --> 01:10:04,780 Klik hier op. 547 01:10:04,780 --> 01:10:07,430 >> Dit is my met my pyl-knoppies nou. 548 01:10:07,430 --> 01:10:09,446 Ek gaan om te gaan na hierdie. 549 01:10:09,446 --> 01:10:09,946 Klik. 550 01:10:09,946 --> 01:10:12,949 551 01:10:12,949 --> 01:10:14,240 En nou is jy op die Pokeball. 552 01:10:14,240 --> 01:10:17,130 553 01:10:17,130 --> 01:10:20,260 Ek bedoel, ek dink jy veronderstel is om te klik op die Pokeball. 554 01:10:20,260 --> 01:10:20,760 Alles reg. 555 01:10:20,760 --> 01:10:22,680 So ek het dit gedoen. 556 01:10:22,680 --> 01:10:23,950 Ek kan hier gaan. 557 01:10:23,950 --> 01:10:27,790 En hierdie persoon geïmplementeer 'n paar meer PokeBalls oor here-- drie PokeBalls. 558 01:10:27,790 --> 01:10:29,950 >> Ons sal 'n skakel na hierdie post aanlyn, sodat jy kan speel. 559 01:10:29,950 --> 01:10:32,364 Maar kennisgewing daar is net 'n paar basiese boustene. 560 01:10:32,364 --> 01:10:33,780 Dit lyk baie liefhebber, en dit is. 561 01:10:33,780 --> 01:10:35,905 Dit is indrukwekkend en meer as wat ons sou tipies 562 01:10:35,905 --> 01:10:37,740 verwag, beslis vir probleem gestel nul. 563 01:10:37,740 --> 01:10:40,809 Ek het geen idee hoe lank hierdie persoon spandeer aanlyn. 564 01:10:40,809 --> 01:10:41,850 Maar dit is alles net 'n lus. 565 01:10:41,850 --> 01:10:43,180 Daar is 'n klank speel. 566 01:10:43,180 --> 01:10:44,850 Daar is 'n soort van lus luister vir of ek 567 01:10:44,850 --> 01:10:47,558 slaan die pyltjie of die af arrow of links en regs, 568 01:10:47,558 --> 01:10:49,834 en dan as dit so is, is dit beweeg dit 'n aantal pixels. 569 01:10:49,834 --> 01:10:51,750 En dan as ek klik op 'n ander sprite, daar is 570 01:10:51,750 --> 01:10:53,390 'n soort van as voorwaarde daar. 571 01:10:53,390 --> 01:10:54,806 Ja, dit is om te intens. 572 01:10:54,806 --> 01:10:56,100 Ons gaan om te stop. 573 01:10:56,100 --> 01:10:57,750 Dit is al die basiese boustene. 574 01:10:57,750 --> 01:11:01,530 Daar is geen ander ander bestanddele as die wat ons het gekyk na al. 575 01:11:01,530 --> 01:11:04,670 >> En tog hier, laat my doen 'n laaste stel voorbeelde 576 01:11:04,670 --> 01:11:06,960 wat verf 'n prentjie te van wat jy hier kan doen. 577 01:11:06,960 --> 01:11:10,481 Hier is 'n baie eenvoudige program wat net doen this-- hoes, hoes, hoes. 578 01:11:10,481 --> 01:11:12,480 En wat slegs gebaseer is op wat Ons het gekyk na wat tot dusver, 579 01:11:12,480 --> 01:11:14,570 waar is die voor die hand liggend geleentheid vir verbetering. 580 01:11:14,570 --> 01:11:15,570 Hierdie program is korrek. 581 01:11:15,570 --> 01:11:17,980 Dit hoes drie keer, en dit is wat ek bedoel. 582 01:11:17,980 --> 01:11:19,650 Maar dit is swak geïmplementeer. 583 01:11:19,650 --> 01:11:20,600 Dit is swak ontwerp. 584 01:11:20,600 --> 01:11:22,000 Hoekom? 585 01:11:22,000 --> 01:11:22,500 Ja. 586 01:11:22,500 --> 01:11:23,230 Dit is nie 'n lus. 587 01:11:23,230 --> 01:11:24,610 En dit is nie soseer dat dit nie 'n lus, 588 01:11:24,610 --> 01:11:26,400 dis dat daar is 'n baie ontslag. 589 01:11:26,400 --> 01:11:28,830 Daar is gekopieer en geplak kode, om so te praat. 590 01:11:28,830 --> 01:11:31,830 En die oplossing waarskynlik is inderdaad 'n lus. 591 01:11:31,830 --> 01:11:34,350 So laat ek gaan voort en te verbeter op dit. 592 01:11:34,350 --> 01:11:36,250 En ek gaan hierdie sleep oor hier. 593 01:11:36,250 --> 01:11:39,986 Laat my gaan voort en kry 'n herhaling blok, verander hierdie drie. 594 01:11:39,986 --> 01:11:41,860 Ek gaan weggooi sommige van die blokke. 595 01:11:41,860 --> 01:11:43,150 >> En jy sal sien dit is redelik intuïtief. 596 01:11:43,150 --> 01:11:45,691 Jy sleep en drop en dinge verskyn en verdwyn uiteindelik. 597 01:11:45,691 --> 01:11:49,170 En ek kan net hierdie sleep in hier, en nou het ek 'n skoner weergawe nog. 598 01:11:49,170 --> 01:11:50,730 Maar jy weet wat? 599 01:11:50,730 --> 01:11:52,940 Daar is hierdie geleentheid nou vir abstraction-- 600 01:11:52,940 --> 01:11:56,350 om te begin om nuwe woordeskat te definieer dat MIT het nie verwag. 601 01:11:56,350 --> 01:11:59,110 Daar is wag en herhaling en vir ewig en as, 602 01:11:59,110 --> 01:12:02,590 Maar wat as ek wil voer die woord hoes as 'n blok? 603 01:12:02,590 --> 01:12:06,230 Wat gebeur as ek wil 'n legkaart stuk wie se doel in die lewe is om te hoes? 604 01:12:06,230 --> 01:12:10,720 >> Wel, laat ons kyk na hierdie weergawe hier, wat ek gemaak soos volg. 605 01:12:10,720 --> 01:12:13,579 Nou het ek geskep hierdie legkaart stuk hier, 606 01:12:13,579 --> 01:12:14,870 wat Scratch kan jy doen. 607 01:12:14,870 --> 01:12:16,787 En inderdaad C en Python en JavaScript is 608 01:12:16,787 --> 01:12:18,370 gaan toelaat om dit te doen as goed. 609 01:12:18,370 --> 01:12:21,830 Jy kan jou eie persoonlike skep stukke wat jy noem wat jy wil. 610 01:12:21,830 --> 01:12:24,890 In hierdie geval, hoes voel soos 'n redelike definisie. 611 01:12:24,890 --> 01:12:27,880 En dan met hierdie stukke af hier kan jy definieer wat dit beteken. 612 01:12:27,880 --> 01:12:30,290 >> Ek gesleep en laat val van hierdie palet here-- meer 613 01:12:30,290 --> 01:12:33,500 blocks-- hierdie groot pers blok, waar ek getik in hoes 614 01:12:33,500 --> 01:12:35,290 as die naam van my nuwe legkaart stuk. 615 01:12:35,290 --> 01:12:39,920 En dan is ek te sê enige tyd 'n gebruiker noem hierdie nuwe hoes legkaart stuk, 616 01:12:39,920 --> 01:12:41,770 doen 'n sê en 'n wag. 617 01:12:41,770 --> 01:12:46,160 En so hier in my herhaling blok, Ek kan net hoes drie keer. 618 01:12:46,160 --> 01:12:49,972 >> En ek sou argumenteer, veral As jy nou weg te steek hierdie detail. 619 01:12:49,972 --> 01:12:51,430 Wie gee om hoe hoes geïmplementeer? 620 01:12:51,430 --> 01:12:54,390 Al wat ek omgee as 'n programmeerder wat ek kan hoes. 621 01:12:54,390 --> 01:12:56,280 Ek gee nie om hoe sê, is geïmplementeer. 622 01:12:56,280 --> 01:12:58,620 Ek sorg net dat die kat kan iets sê. 623 01:12:58,620 --> 01:13:02,720 Ek kan abstrakte weg met besonderhede en net fokus op wat op die skerm hier. 624 01:13:02,720 --> 01:13:04,400 Maar ek kan dit 'n stap verder te neem. 625 01:13:04,400 --> 01:13:08,070 >> Let daarop dat hier, ek het geïmplementeer om die lus drie keer. 626 01:13:08,070 --> 01:13:11,560 Maar wat as plaas ek hierdie weergawe gryp? 627 01:13:11,560 --> 01:13:14,640 En wat as plaas in hierdie weergawe hier, 628 01:13:14,640 --> 01:13:18,730 Ek verander net my legkaart stuk te neem 'n argument en insette vir homself? 629 01:13:18,730 --> 01:13:21,100 En dat insette kan wees 'n aantal soos drie. 630 01:13:21,100 --> 01:13:24,580 So nou, as ek skryf 'n program en ek wil die kat te hoes, 631 01:13:24,580 --> 01:13:28,270 Ek kan eintlik vertel die legkaart stuk hoeveel keer hoes, 632 01:13:28,270 --> 01:13:31,990 want aan die onderkant hier, 'n liefhebber weergawe van hierdie persoonlike stukke van die legkaart 633 01:13:31,990 --> 01:13:34,500 laat my spesifiseer wat hoes neem eintlik 634 01:13:34,500 --> 01:13:36,951 'n input-- neem 'n argument soos hierdie. 635 01:13:36,951 --> 01:13:37,700 En weet jy wat? 636 01:13:37,700 --> 01:13:38,890 Miskien het ek besef, wag 'n minuut. 637 01:13:38,890 --> 01:13:40,680 Hoes is die same-- dis fundamenteel 638 01:13:40,680 --> 01:13:42,120 dieselfde idee as nies. 639 01:13:42,120 --> 01:13:44,040 Dis net 'n ander woord op die skerm. 640 01:13:44,040 --> 01:13:46,550 Ek kan abstrakte weg verder en te implementeer 641 01:13:46,550 --> 01:13:48,750 Hierdie finale weergawe van 'n hoes, wat met die eerste oogopslag 642 01:13:48,750 --> 01:13:50,660 is manier om meer komplekse soek. 643 01:13:50,660 --> 01:13:52,140 Maar let op wat ek gedoen het. 644 01:13:52,140 --> 01:13:55,930 Ek het nou generalized-- genericized really-- hierdie legkaart stuk 645 01:13:55,930 --> 01:13:59,900 genoem te word sê woord N tye. 646 01:13:59,900 --> 01:14:04,410 >> En nou het ek twee nuwe stukke van die legkaart af hier definieer hoes N tye. 647 01:14:04,410 --> 01:14:06,790 En wat beteken die hoes funksie doen? 648 01:14:06,790 --> 01:14:08,420 Wat beteken my persoonlike legkaart stuk te doen? 649 01:14:08,420 --> 01:14:11,996 Dit is dan net die seggenskap blok, verby in die woord wat ek wil sê, 650 01:14:11,996 --> 01:14:13,870 verby in die aantal kere wat ek wil sê. 651 01:14:13,870 --> 01:14:18,210 Want nou kan ek implementeer nies deur eenvoudig te sê achoo, 652 01:14:18,210 --> 01:14:20,320 in hierdie geval, 'n aantal kere. 653 01:14:20,320 --> 01:14:22,360 >> En so ek gelaagdheid en gelaagdheid. 654 01:14:22,360 --> 01:14:25,690 En weer, die sleutel hier is nie hoe ek dit geïmplementeer word, maar die feit 655 01:14:25,690 --> 01:14:28,070 dat as ek net letterlik beweeg die die skerm af, 656 01:14:28,070 --> 01:14:31,280 kyk hoe eenvoudig as dit nie mooi my program lyk nou. 657 01:14:31,280 --> 01:14:33,930 Omdat dit doen wat dit sê, ek het onttrek 658 01:14:33,930 --> 01:14:37,640 weg wat binne daardie black box. Dit gebeur met hier 'n pers box wees, 659 01:14:37,640 --> 01:14:41,430 maar ek het weg versper wat binne want ek gee nie om hoe dit werk. 660 01:14:41,430 --> 01:14:43,650 Ek gee nou net dat dit werk. 661 01:14:43,650 --> 01:14:46,375 >> En inderdaad, in probleem stel nul, dit is presies 662 01:14:46,375 --> 01:14:49,250 die aard van die lae van idees wat jy het die geleentheid om te verken. 663 01:14:49,250 --> 01:14:53,510 Dit is presies die geleentheid om probleemoplossingstegnieke toe te pas, 664 01:14:53,510 --> 01:14:55,550 na wat waarskynlik 'n onbekende omgewing. 665 01:14:55,550 --> 01:14:57,890 En of jy het nie geprogrammeer voor of voor geprogrammeer, 666 01:14:57,890 --> 01:14:59,500 sal jy vind dat daar ' 'n ietsie 667 01:14:59,500 --> 01:15:00,874 in hierdie omgewing vir almal. 668 01:15:00,874 --> 01:15:02,770 En met die probleem sit een uit elke keer 'n week se 669 01:15:02,770 --> 01:15:06,630 ons sal transitioned te fokus op 'n hoër vlak taal genoem 670 01:15:06,630 --> 01:15:09,290 C-- of eerder 'n laer vlak taal genoem 671 01:15:09,290 --> 01:15:11,347 C-- dis nog meer kragtige, selfs al is dit 672 01:15:11,347 --> 01:15:12,930 'n bietjie meer kripties met die eerste oogopslag. 673 01:15:12,930 --> 01:15:16,740 >> En jy sal besef per vandag TL: DR, dat hierdie probleem gestel het 'n korter 674 01:15:16,740 --> 01:15:19,880 venster van die tyd as toekomstige kinders, bloot omdat jy dit redelik moet vind 675 01:15:19,880 --> 01:15:20,420 toeganklik. 676 01:15:20,420 --> 01:15:22,211 En moenie bekommerd wees as jy voeg die klas laat. 677 01:15:22,211 --> 01:15:23,920 Ons sal aanspreek wat kort voor lank. 678 01:15:23,920 --> 01:15:28,480 En voordat ons verdaag vir koek, laat ons klaar met net 'n twee-minuut blik 679 01:15:28,480 --> 01:15:30,500 na wat jy wag hier in CS50. 680 01:15:30,500 --> 01:15:40,950 681 01:15:40,950 --> 01:17:20,803 [Speel van musiek] 682 01:17:20,803 --> 01:17:21,302 Alles reg. 683 01:17:21,302 --> 01:17:22,690 Dit is dit vir CS50. 684 01:17:22,690 --> 01:17:23,650 Ons sal jou gou te sien. 685 01:17:23,650 --> 01:17:25,526 Koek is nou bedien. 686 01:17:25,526 --> 01:17:28,998 687 01:17:28,998 --> 01:18:14,267 [Speel van musiek] 688 01:18:14,267 --> 01:18:16,350 SPREKER 17: Het jy al gehoor van 'n sabbatsjaar, Hoof? 689 01:18:16,350 --> 01:18:29,490 690 01:18:29,490 --> 01:18:31,920 SPREKER 18: Dalk is daar ' meer onder die enjinkap. 691 01:18:31,920 --> 01:18:38,279