[MUSIC MÄNGIB] See on CS50-- Harvard Ülikooli kasutuselevõttu intellektuaalse ettevõtete infotehnoloogia ja kunsti programmeerimine. Ja minu nimi on David Humala ja Ma lihtsalt mõtlesin täna hommikul, see on olnud hämmastavalt 20 aastat täna kuna ma viimati istunud kus kutid praegu. See oli 1996. Olin üliõpilane ning Olin CS50 jaoks väga esmakordselt. Ja ma isegi ei saanud üles närvi võtta ise uustulnuk aastal, osalt aeg. Arvutiteadus mulle oli selline nagu, meh. Ma olin natuke geek kasvab üles, kuid ma ei ole tegelikult on mis tahes intellektuaalse huvi, mida ilmus lihtsalt olla terve hunnik inimesed programmeerimine kogu aeg. Ja ma kartsin, et kui aus olla. Kursus ja infotehnoloogia rohkem Üldiselt oli ja mingil määral iseloomustab see maine valdkonnas ole ettevaatlik, kui ainult sellepärast, et paljud meist ei tunne seda ja kindel see. Ja see tõesti ei olnud, kuni ma sisseoste Selle klassi, et üliõpilane fall-- ja isegi siis, ma ainult registreerunud sest professor-- üks minu esimene mentorid, Brian Kernighan nüüd Princeton-- võimaldas mul teha klassi pass ei suuda. Ja tõepoolest, et põhjus, miks Täna võimaldama ja soodustama õpilastel võtta selles klassis istus / unsat. Ja alles siis, mille semestri lõpuks ma aru, nagu, wow, see ei olnud selline tunne valdkonnas. Tõepoolest, see oli väga volitatakse valdkonnas, ja põnevalt, eriti hiljem kui ma võtsin kursused Teatrikunst 101 ja Ladina ja siis lõpuks grad kooli arheoloogia ma tõesti alustada, et näha ristumiskohtades selles valdkonnas arvuti teaduse, humanitaar, loodusteaduste, kunsti, meditsiin, jms. Ja nii see on, mida on lihtsalt nii puhas arvutiteaduse lõpuks, kui loodame see-- on selle rakendatavuse Nende teistes valdkondades, ja kuidas te saate võtta mõned tänapäeva ja semestri ideed ja praktilised oskused tagasi oma domeen, ja tegelikult avastada seda ristmikul on vabade kunstide ja teaduste. Nii 73% sulle, kui viimane aastal on viiteid, ei ole kunagi võtnud CS muidugi enne. Nii et kui, nagu mina, siis on tunne natuke hirmul, või ausalt sa pole päris kindel, miks sa isegi siin. Võib-olla sa lihtsalt järgida mõningaid sõprade üle Sanders kohe. See on täiesti korras. Eesmärk siin on konks teid ja teid rahustada et kui sa vaadata vasakule ja paremale, sa lähed, et näha klassikaaslastega koos nii vähe või nii palju kogemusi et sa ise olla. Ja tõepoolest, me jagada Mõned statistika hiljem täna et mida demograafia klassi tavaliselt nägema. Ja kui lisada reassurance-- ja see meil ei tähenda, sest võtsin jooksul Mõne aasta ago-- sisse kursuse ainekava on see-- et mida lõppkokkuvõttes küsimusi selle kursuse ei ole nii palju, kui sa lõpuks üles võrreldes oma klassikaaslastega, kuid kuhu 11. nädalal, lõppu semestri lõpuks võrreldes ennast nädalal 0, mis on kus me oleme täna siin. Ja see on see, mida ma mõistsin kõik need aastad tagasi. Ja ma tean palju klasside öelda, aga see on Eriti kehtib arvutiteadus. Lõpus päeval, valdkonnas on võõras, sest see oli minu ja võib olla teile, on tõesti peaaegu probleemide lahendamine. Ja sellisena, see ei ole see rakendatavuse saada teistes valdkondades. Ja tegelikult, kui me püüdsime ajama, mida see tähendab, See on probleemide lahendamine oma olemuselt Julgen väita. Seal input-- nii iganes see on see, et sa üritad lahendada. Seal on väljund, mis on loodetavasti lahendus sellele probleemile. Ja siis, kui oleksime öelda, infotehnoloogia, seal on see must kast keskel, et sa ei pruugi hoolivad, kuidas see toimib. Sa ise lõpuks võiks rakendada, mis sees, et kasti. Aga tänapäeva eesmärkidel ja rohkem üldiselt elus, kõik sa hoolid on see, et need probleemid saavad lahendatud. Ja mis on see muidugi on lõppkokkuvõttes uurib ristmikul Nende sisendid ja väljundid, ja nende nn algoritme, nagu me kohe näha, et rakendada mis on all olemas, kapuuts. Aga need sisendid ja nende outputs-- Mida see tegelikult tähendab? Noh, lõpus päeval, me peame mingil moel esindada teavet. See kehtib eriti arvuti, mis väljamõeldud ja keeruline, sest see Võib tunduda, on päris loll seade. See võtab electricity-- kas alates kaabli või aku input-- ja seejärel ta toodab mõned preprogramed vastuseid ekraanil. Aga kuidas me saame algusest lõpuni olemas? Noh, mis on probleem, mis tuleb lahendada? Noh, võib-olla me võiksime juures algust igal semestril püüdke käimist ruumis niimoodi. Nii et ma võiks teha nagu üks, kaks, kolm. Või äkki, kui ma tegin seda et omamoodi jälgida ning myself-- jälgida things-- Ma võiks kiiresti otsa sõrmede. Nii et ma võiks lihtsalt teha hash marks-- üks inimene, kaks, kolm, neli, viis, kuus, seitse, kaheksa. Ja meil kõigil on ilmselt seda teinud, kas teie kätes või paberile. Ja see on tegelikult lihtsalt midagi, mida nimetatakse unaarse notation-- kus, kui sul on ainult üks täht oma tähestikku, ühe või hash märgi sel juhul iga sisend soovite loota, sa pead panema ühe sellise letters-- üks nendest märkidest. Hästi. See kõik on hea ja hea mitte kõik nii keeruline. Aga arvuti ei ole kõik et palju keerulisem. Tõepoolest, enamik teist ilmselt tean isegi siis, kui olete tõesti ei lugeda, mida see tähendab, et arvutite aru ainult nullid ja ones-- nn binaarse süsteemi. Meie inimestel seevastu on nii palju keerukam, kuivõrd kui me mõistame, nulle läbi nines. Aga isegi kui binaarne on esimesel pilgul ei ole kõik nii tuttav, Selgub see on nagu süsteemid ja ideid, mida me juba teame. Nii näiteks kaaluda seda. See on lihtsalt sümbolite jada. Ja kõik teie, kui riivav see ilmselt arvan 123-- midagi tõesti huvitav seal. Aga miks on nii, see arv 123? Need on vaid Märgid kohta screen-- lihtsalt mustrid et keegi oleks tõmmatud või kirjutatud. Aga kui sa oled nagu mina, siis Ilmselt mäletavad algkool et on olemas mingisugune veerud või kohti siin. Seal on üks koht ja kümme koha ja sada koha. Ja sel põhjusel, et see on 123 ja mitte ainult muster kolm sümbolit põhjuseks on asjaolu, muidugi, kui me on üks sadadest koht, sa matemaatikat 100 korda üks, ja siis kaks kümnes koht. Nii et 10 korda 2 ja seejärel kolm üks koht ja see on 1 korda 3. Ja kui lisate kõik need üles, ja Muidugi, sa saad 100 pluss 20 pluss 3. Nii alustasime vaid muster ning symbols-- alphabet-- aga siis me kaardistatud tähenduse peale seda, kuidas nende sambad. Noh, selgub, et arvutid on tõesti ei ole kõik, mis erineb sina ja mina. Kuid selle asemel, kasutades volitusi 10 nii et speak-- 1, 10, 100, 1000, 10000 kohas ja nii forth-- nad tegelikult lihtsalt kasutada volitused 2-- nii ühe, 2, 4, ja seejärel Kui me paneme rohkem numbreid, 8, 16, 32, 64, 128, ja nii edasi. Ja nii see on, kuidas arvuti oleks esindama arvu 0, just nagu meie, inimesed. 0, 0, 0-- ja saab ilmselt vist Mis mustri ühtede ja nullide, kui arvuti saab ainult räägi 0 või 1-- mida muster läheb esindama arvu meie, inimesed teavad, kui 1? Yeah-- 0, 0, 1. Hästi. Nii 0, 0, 1, kuidas me esindame 1, nii et siin võib olla kallutatud siis esindada number 2, kui teil on nelja koha ja kahe koha kui ühes kohas, siis võib öelda, noh, kui meil oli 1 üks koht, ja nüüd me tahame loota kuni 2 võite seda teha ja jätke see olla null. Aga muidugi ei ole see, kuidas koma süsteem toimib nii. Kui paned kohaline need mõlemad sambad, sul teha aritmeetika. Mis number tegin ma kogemata lihtsalt esindavad? Nii et see on 3, kuna 2 korda 1 pluss 1 korda 1 loomulikult annab meile kolm. Nii et see oleks kaks. Natuke omamoodi Peegeldab, nii et rääkida, kui 0 muutub ühe meelega 9 rollide üle ja muutub 0, kui kannad 1. See siis oleks kolm muidugi. Four-- veel üks huvitav asi juhtub, kui need ümbermineku ja kannad 1 ö. Nii see muidugi on 4. Aga kui sa kiiresti edasi nüüd, Milline on suurim arv läheb olema, et arvuti võib esindada? Nii et see on ainult seitse sel juhul, eks? Kuna teil on üks neljast, ühe kahe, ühe osana ühest. Nii et see 4 + 2 + 1. Nii, mis annab sulle seitse. Ja tõepoolest, see oleks tundub esmapilgul et arvutid võivad loota ei ole suurem kui see. Aga see muidugi ei ole tõsi. Mida me inimestel teha, kui me tahame loota kõrgem kui näiteks 999? Just kanda üks ja õige lisada neljanda numbri vasakule. Ja nii tõepoolest saime. Meil võiks olla kaheksa s koht ja 16. koht, ja 32 koht, 64, 128-- ja te lihtsalt hoida läheb kuni lõpmatuseni. Nii et need nullid ja ones-- nn binaarse süsteemis endale on, mida arvuti teadlane oleks Üldiselt nõuavad natuke või Kahendnumber. Aga nüüd, kuidas me saame alates mõiste või graafika need asjad tegeliku arvuti? Meil tundub, et vahele samm siin. Noh, ainult sisendi lõpus Päeva minu sülearvuti siin on see elektrienergia voog. Isegi siis, kui see on olnud pikk aega, sest olete mõelnud või kunagi mõelnud kuidas elektritööd, seal on elektronid voolab või välja, ja see on minu mingi sisend. Nii et kui see on kõik, mis me oleme saada sisendina siin Mida me saame teha, et andmed? Noh, me võiks mõelda nulli lihtsalt puudub elekter. Miski pole flowinw ei ole midagi liigub, ei juhtu midagi. See on lihtsalt default state-- null. Aga kui on elektri voolab, miks me lihtsalt ei meelevaldselt, vaid kogu maailmas järjekindlalt, kõne, et üks. Nii lihtsalt võttes ei ole võimu, meil on null, jah võimu meil one-- mingit võimu, jah võimu. Ja sel moel, kasutades midagi rohkem füüsilise või elektroonilise hakkame rakendama seda mõistet midagi asetsevad kas üks või null. Tõepoolest, me võiks lihtsalt teha siin. Nii et siin, ma ei ole kolm, kuid Kaheksa lambid, millest igaüks on oma lüliti. Ja nii kui ma tahtsin esindama arvu seitse siin Ma võiks sisse lülitada need kolm lambid. Ja tõepoolest, sees minu arvuti on miljoneid, miljardeid asju, mis on lihtsalt väiksem, mida nimetatakse transistorid, lülitid, et sa lihtsalt sisse ja välja lülitada. Nii et need on big-- suhteliselt big-- lülitid sees minu laptop-- On palju, palju, palju, palju lülitid. Aga kõik nad on täpselt selle-- keera midagi, keera midagi välja. Ja sellisena, arvuti võib esindada, neid miljoneid või miljardeid transistoride, palju ja palju ühtede ja nullide. Ja seal on muu riistvara ikka, et võimaldab salvestada informatsiooni pikaajaliseks nii et kui sa tõmba pistik, sa ei kaota. Aga see lugu teisele päevale. Mida me saame teha nende bitti? Võib me lihtsalt võtta surve välja mind-- võiks keegi taha tulla siin ja pakkuda kuni demo? Ma nägin seda käsitsi esimene. Mis su nimi on? MADAY: Maday. DAVID Humala: Maday, tule üles. Meeldiv tutvuda. MADAY: Meeldiv kohtuda. DAVID Humala: Tule sel viisil. Ma ei pea huule sind. Hästi. Nii et siin on meil, notice-- üks, two-- me muuta, et out-- üks, kaks, neli, kaheksa, 16, 32, 64, 128. See on tahtlik. Seal on kaheksa bitti siin-- binaarne digits-- ühtede ja nullide. Ja natuke on kasulik ühik measure-- ei ole nii kasulik mõõtühik peale ise. Tavaliselt soovid vähemalt Kaheksa neist asjadest teise nimega bait. Nii et meil on bait bitti siin. Nii et kui me tahtsime väljakutse teile, Näiteks tähthaaval, binaarne, see väärtus siin-- 42. Tahad võtta torkehaav tol? MADAY: [kuuldamatu]. DAVID Humala: Jah, just push väike valge lülitid ees. Ja sa tahad kirjutada välja 42 ja üles Kättesaadav see CS50 stress palli, kui sa selle. Hästi. Nii et teil on 32. Meil läheb vaja 42. Nii et kaheksa, nii et see on 40. Ja excellent-- väga ilusti tehtud. Aitäh. [APPLAUSE] Hästi. Nii et meil on veel üks stressi pall. Teeme seda veel kord, kui me võib. Üks teine ​​vabatahtlike? Vaba stressiga palli, tasuta stress palli. OKEI. Üle siin keset, Kas soovid alla tulema? Hästi. Ma tean. Seal me läheme. Nii numbrid siin-- tule alla. Mis su nimi on? Davey: Davey. DAVID Humala: Davey. OKEI. Tule üles, Davey. Meeldiv tutvuda. Ja mida me lähed on sul spell-- kui võid jõlkuma seal ainult ühe moment-- on number 50. Aga, kuid, kuid kuid, kuid need on algkool magnetid põhjusel. Just sain natuke raskem, eks? On veel kaheksa. Hästi. Niisiis, mida me seal? Meil on 32. Nice. 32 pluss 16 annab meile 48-- nii lähedal. Ja imeline. Õnnitleme Davey samuti. [APPLAUSE] Hästi. Nii et me saame seda teha kogu päeva pikk, ja see ei saa kõik, et palju rohkem huvitav ja väljakutsuv. Aga see on tõesti point-- kuidas suhteliselt lihtne see on, lõpus päeval, mida arvuti ei talletada informatsiooni, salvestada sisendid ja lõppkokkuvõttes salvestada või kujutavad need väljundid. Aga numbrid üksi ei kõik, mis huvitavad. Nii inimestel, mõned aastad tagasi otsustas, tead mis? Oleks tore, kui arvutid ei olnud lihtsalt kalkulaatorid aritmeetilise operatsioone, kuid tegelikult võiks asju nagu tekstitöötlus, või e-posti või moodsam kehastused taoliste tehnoloogiaid. Ja nii maailma otsustanud omavoliliselt, kuid üldiselt, et kui sa tahad hoida kapitali tähega A arvutis, tead mis? Olgem lihtsalt kõik ühel meelel, et salvestada mõned muster nulle ja ones-- bits-- et lõppkokkuvõttes esindab koma number 65. Me lihtsalt kõik ühel meelel, et. 66 kujutaks B, 67 kujutaks C, ja seal on kobarad teisi mudeleid ühtede ja nullide või esineb numbrid, mis esindavad teised tähed ikka. Nii et kui sa mingi vaimselt ima see hetk, Ma teadlikult panna läbi I, kus H 72 ja I on 73. Kui arvuti siis, kontekstis tekstitöötluse programmi või e-mail, näitas all kapuuts on Nende mustrite bits-- muster bittide esindavad 72, siis 73, siis 33-- milline võiks seda kirjutada, et programm? Nii tere ja siis midagi. Me ei pruugi teada, kuid tõepoolest 33-- tabelis ei ole earlier-- oli lihtsalt hüüumärk. Nii 72 oli H 73 on I, 33 juhtu olema hüüumärk ikka. Aga see on kõik hästi ja hea, ja tegelikult tänapäeval asemel lihtsalt kasutada seitse või kaheksa bitti, tänu midagi nimetatakse Unicode erinevalt ASCII juba järgmisel päeval, me tegelikult ei esinda veelgi huvitav tähemärki kui lihtsalt Nende esialgne inglise kallutatud tähed. Aga me ei saa esindada ka isegi korralikum asjad värve. Kui olete kunagi kuulnud akronüüm RGB, punane, roheline, sinine, et tähendab lihtsalt, et arvuti kasutab tavaliselt kolmed bits-- mõned bittide arv, mis esindavad number, kui palju punase soovite, veel mõni bitti kui palju rohelist soovite, ja veel mõni number kui palju sinist soovite. Nii suur arv tähendab palju punane, väike arv, siis ei ole punane. Ja nii need omamoodi Keskmise väärtused siin. Nii et anna mulle mõned punased, anna mulle roheline, ja anna mulle natuke sinine. Ja kui sa mix need kolm tooni värvi koos, sel juhul sa selle Kahtlane varju kollane või pruun. Aga see muster kaheksa pluss kaheksa pluss eight-- nii 24 bits-- vasakult paremale, on kuidas arvuti tähendaks selle värvi. Nüüd see on lihtsalt dot ekraanil. Kui sa vaatad tõesti lähedal oma TV oma arvuti, näete punkti või pikslit. Ja kui sul on terve võre pikslit, horisontaalselt ja vertikaalselt, sul on pilte. Ja siis, kui te võtate pilt ja seejärel pesta näita ennast teise pildi, teise pilt, teise pildi, teise pildi, tõesti kiire, siis muidugi on filme. Ja nii märkate, kust me alustasime. Alustasime nende ühtede ja nullide. Me töötasime sealt kümnendarvuks numbrid, kuidas me neid esindama. Nüüd on meil tähestiku tähti. Kuid teistes kontekstides oodata, saame kasutada veel mõned bitid ja esindavad värvid. Niipea, kui teil on võimet esindada värvid, teil on võime esindada fotode ja animeeritud gifid ja muud sellised tegelased ekraanil. Ja kui sul on terve hulk pildid sõidab inimese korraga tundub, filmides, ja nii saad videod samuti. Nii kasutades neid väga Lihtne primitiivid me on viis esindavad lõppkokkuvõttes kõik need meediavormid. Ja me oleme ammutatud jälle ja uuesti ja uuesti, kuni me saada madalaimale tasemele Selle kõige kõrgemal tasemel. Nii et see annab meile selle üldine idee võtmiseks. Aga me alustasime siin. Siin nüüd võiksime esindavad arvutis Meie sisendid ühtede ja nullide, Meie väljundid ühtede ja nullide, aga mis läheb karbi sees? See, kui arvuti teaduse läheb huvitavamaks. See, kui sa tegelikult tuua oma enda mõtetes kandma probleeme lahendada. Nüüd on võimalik ette näha, et Ülejäänud semestri, jah. Ma tean, kuidas binaarne teoseid. Mäletan, kuidas ASCII või Unicode-- kaardistamist, et letters-- teoseid. Ja see on loomulik et põhjus, et me võiks olla punane ja roheline ja sinine ja esindavad multimeedia samuti. Aga see on huvitav kraam. See teebki keegi suudab lahendada probleeme. Ja üks selline probleem me tahame teha, tõepoolest, võtab käimist, või Seejuures algoritmidega. Ja jälle, ma võin seda teha. I võiks teha ühe, kahe, kolme, nelja viie, kuue, seitsme, kaheksa üheksa. Ja ma võiks kirjutada maha jälgida seda. Aga see on just see, kuidas ma esindavad teavet. Või ma võiks seda teha faster-- kaks, neli, kuue, kaheksa, kümme, 12, 14, 16, 18, 20, 22-- tunne kaks korda nii kiiresti, kuid see on ikka aega võtab palju aega. Aga selgub, kui me ära veel teise resource-- ja tõepoolest arvutid nendel päevadel on mitme protsessoriga või aju. Selgub arvutid teha palju asju korraga, ja tõepoolest oleme, selles ruumis, võib esindada just seda. Nii et see on natuke sotsiaalselt ebamugav, aga kui sa oleks huumor mulle jaoks vaid kolme etappi, las mul küsida igaüks seal lihtsalt seisma hetkeks. Seisa. Nii et mõtle ise, number one-- nii et igaüks siin ruumis va inimesed, kes ei ole oblige, mõtled number üks. Nii et on oma number kohe. See on esimene samm, või kui arvuti teadlane või programmeerija oleks tavaliselt teha, me ei kavatse alustada nullist. Kui väiksema arvu saame esindavad nende lambid on null, lihtsalt jättes neile kõik maha, ma võin ka lihtsalt hakka lugema alates null on ühe asemel. Ja nii see ongi arvuti teadlased teevad. Nii samm nulli, püsti ja mõtle number üks. Järgmine samm on see-- paari off kellegi alalise lisada oma numbrid kokku. Wonderful. Nii on käesoleval hetkel, sõna otseses mõttes igaüks osalevad mõtleb number 2, välja arvatud üks kummaline inimene, kui meil on paaritu arv inimesi ruumis. Ja nüüd kolmas samm siin läheb see-- üks sa peaksid istuma. Üks siis tuleb maha istuda, ja kui sa veel püsti, minna tagasi astuma üks. Hästi. Hästi. Nii üha rohkem inimesi tuleks istudes. Pange tähele, et see on põhjustatud loop-- mingi tsükli. Mõned siis peaks olema kohmakalt kinni, läheb edasi ja tagasi vahel esimene etapp ja kaks, üks ja kaks, üks ja kaks. See on OK. Meie esimene viga. Me tegeleme sellega. Hästi. Las ma proovin kannus asju koos. Teoreetiliselt ainult üks inimene seisab kui kõik jätkub paarideks. Aga las ma asju kiirendada rahvaga veel püsti. Mis number on sa mõtled? 46. OKEI. Lase käia ja istuda. Te ei veel püsti. Kes veel püsti? Mis number on sa mõtled? OKEI. Nii et me tuleme teile. Taga? Mis see on? 22. OK kellegi kuni top-- jah? 34. OKEI. Üle siin minu right-- siin? 132, väga kena. 22? OKEI. Ja kes veel püsti? Siin? 46, väga kena. 72. Ma ei saa varisemine palju kauem. Jah? 30, kena. Siin? 23? 23. Ja ma arvan, et igaüks va kutid, ei rõhu. Oh, oota. 28? Just kaheksa. OKEI. Just kaheksa. Siin all? 30. 23. 24. 18. See on kõige halvem rakendamine Selle algoritmi kunagi. OKEI. Nii kui keegi teine? Keegi teine? OKEI. Üks veel. 16? OKEI. 16. Hästi. Nii et kui ma ei ole jäänud keegi pimestavad siin, kui ma Enter, näeme, algoritmidega on inimeste koguarv Sanders. Sest jälle, see on justkui igaühele kui istus, läbis oma number välja keegi teine, keegi teine, kellelegi teisele, nii et teoreetiliselt lõpuks, ainult üks ebamugav inimene tuleb jätta seisma. Aga see on hea. Me kiirustas asju käsitsi. See on eriti raske mõista selles ruumis. Ja inimeste koguarv me arvame, et siin on 546. Kokku olin kätega poolt õpetamise stipendiaatide kes seda tegi vana kooli aeglane viis, oli 820. [Naerab] [APPLAUSE] See on OK. Nii kindlasti siis on need vead. Ja see on hea. Ja nii mõelda tagasi selle Esmakordselt midagi Sa kirjutad, ei pruugi töötada. See juhtus minuga ka siin. Kuid olgem nüüd mõtlema, kuidas me võiksime kohaldatakse sama mõte midagi Te olete näinud enne, mis on see vana kooli tehnoloogia siin-- tõesti suur telefoniraamat. Ja oletame, et see telefoniraamat on 1000 lehekülge ja 1000 nimed ja numbrid tähestiku sees on. Noh, me võiks mingi kohaldada samasugust mõte seda väga füüsiline probleem, lihtsalt kasutades mind. Ma lihtsalt selline petnud võimendades teile kõigile palju ja palju erinevaid protsessoriga või aju täidesaatva mõned algoritm. Aga kui see on lihtsalt vähe vana mulle, ma ei saa ikka võimendada, et sama sisuliselt idee jagamise ja vallutavad selle probleemi ikka ja jälle, mille poole sa, poole sa, pool teile, pool teile, teoreetiliselt hoida istudes, kuni me jäid teoreetiliselt vaid üks inimene. Nii see vana kooli tehnoloogia-- me ei vaja seda map-- seda vana kooli tehnoloogia me võiks hakata otsima keegi meeldib Mike Smith, üks lehekülg korraga. Ja ma näen, et ei ole, Mike ei ole siin. Ma olen ikka sektsioon. Lõpuks leian mina B jagu. Ja see on algorithm-- samm-sammult juhiseid. Alusta alguses ja ühel lehel korraga, otsida Mike Smith. See correct-- seda algoritmi või lähenemine? Jah, see on õige. Kui Mike on siin lõpuks Ma saan temaga. Aga see ei ole tõhus. See on muidugi väga aeglane. Nii et ma ei võimendada Sama twosies läheneda. Ma võin teha mingi kaks, nelja, kuue, kaheksa, 10, 12. See on kaks korda kiirem. Ma lähen, et Mike kiiremini, kui ta on olemas. On see õige? Jah, aga ma kuulsin little-- ole. Nüüd kuulsin mingit. Jah. Seal on viga potentsiaalselt. Võib-olla Mike lihtsalt satub kogemata vahele kaks lehekülge, sest ma lendan läbi Selle kaks korraga. Nii vähemalt me ​​vajame Selline tingimisi fix. Mul on vaja öelda, hei, kui ma tabanud keegi, kelle nimi algab T asemel S, Ma parem topelt tagasi vähemalt ühel lehel. Nii lollakas alguses, kuid parandatav. Kuid keegi meist lähevad otsima Mike Smith läbi 1000 lehekülge telefon broneerida ühe lehekülje korraga. Mis on normaalne inimene tegema hakkad? Sa lähed minema Si, kui teaksid, kus S on. Sa võid minna umbes keskel või veidi viltu lõpus. Ja ma vaatan siin ja Olen M jagu. Aga mida sa tead selle probleemi nüüd, et me ei pruugi teada enne meile kõigile lihtsalt lugedes end samaväärselt? Noh, Mike ilmselgelt läheb olla selles poolel raamat kui ta on siin üldse, sest see on järjestatud. Ja nii saab väga dramatically-- [Himustama] Ma tean. [APPLAUSE] See on tegelikult väga lihtne, kui sa seda mööda selgroogu olemas. Aga sa võid visata poolel probleemi kaugusel. Nüüd ma jäänud sama problem-- leida Mike Smith telefoni book-- aga nüüd telefoniraamatus algab M ja läheb Z, kuid see on kaks korda väiksem. Aga see on see, mis on muljetavaldav. Just nagu teoreetiliselt kutid, kui te kõik istusid vaid pool korraga, probleem sai pool nii suur, poole nii suur, ikka ja jälle. Nii on see probleem muutunud Sama probleem, vaid kaks korda väiksem. Nüüd on 250 lehekülge probleem. Niipea, kui ma mõistan, oh, ma olen T paragrahvi kogemata. Olen läinud liiga kaugele. Ma ei viska, et pool telefoniraamatust kaugusel. Nüüd ma, et seda on kvartalis probleem. Ja võid korrata, korrata, korrata, kuni teoreetiliselt oled jäänud vaid üks lehekülg. Ja kui Mike on sellel lehel, Nüüd saan seda probleemi lahendada. Aga kui kiiresti ma seda lahendada? Esimesel juhul, ta võttis mind nagu võibolla 1000 sammud leida Mike Smith. See võis võtta mind-- Võtsin telefoniraamat ja hakkasin otsima ühe lehekülje korraga ja Mike võib olla 1000 lehekülge hiljem. Teine lähenemine võibolla võtab mul 500 sammu, sest ma lendan läbi kahe korraga. Ja kolmas lähenemine küll, see on eriti võimas. Kuid olgem kaaluma, mida me tegelikult tegi seda kolmandat lähenemist. Võtan mida ma helistan lihtsalt neid avaldused siin, ühekaupa. Korja telefoniraamat. Avatud keset telefoniraamat. Vaata nimed. Ja siis asjad natuke rohkem intellektuaalselt huvitav, kui ikka lihtne. Kui Smith on üks nimed, et praegune lehel siis midagi tinglikult. See on nagu teelahkmele. Helista Mike. Kui Mike on üks nimesid selle lehe nimega Mike. Aga ainult teha rida neli, kui liin puu, kui soovite, on tõsi. Vastus sellele küsimusele on jah. Või kui Smith on varem book-- Teisisõnu, kui ma olen M sektsioon ja ma otsin kedagi, kes Vasakul siis mida ma peaks tegema on midagi väga sarnast. Siis ma peaks avama keskele vasaku poole raamatust. Nii et mine vasakule ja seejärel naasta sammu kaks. Vaata nimed seal. Nii teisisõnu, teha sama asja, kuid probleem, mis on poole võrra vähenenud. Sa tead, mida veel? Kui Smith on hiljem raamatus põhineb lehel Otsin, avatud keskel paremal poolel raamat ja siis jälle tagasi astuda kaks, else-- seal on neljas võimalus siin. Mike'i kas siin või vasakule või paremale või mitte. Ja siin me parem kaaluda seda. Ja tegelikult, kui olete kunagi olnud arvuti lihtsalt lennuõnnetuse sa, mis on mõnikord, kuid mitte alati, tõttu vaid inimese programmeerija ei realiseerimisel, oh tulistada, seal tegelikult selle neljanda stsenaariumi. Ja kui sa ei kirjuta koodi hakkama, et stsenaarium, mõnikord sa ei tea mida arvuti võib teha. Ja tõepoolest programm võib põrgata. Aga sel juhul, ma arvasin sellest, ja ma ütlesin, muidu lõpetan, sest see on neljas loogiline võimalik stsenaarium. Nüüd saab lihtsalt lisada mõned sõnavara nii et me saab alustada Toss umbes poolest, et muidu päris arusaadavad. Kõik asjad, mida ma olen lihtsalt lajoonitud siin Ma lihtsalt lähen funktsioonid ja protseduurid. Nad on lihtsalt mingi tegevuse. Nii elavneb, avatud, otsige kell, helista, avatud, avatud, quit-- need on vaid tegevused, või jagame helista neile rohkem formaalselt funktsioone. Vahepeal nüüd kollane, Olen rõhutanud asju selle-- olgem lihtsalt alustada kutsudes neid tingimusi või oksad. Need on kohad, kus võite minna seda teed, seda teed, või mõne muu suuna ikka. Nii et need on tingimused. Ja nüüd see üks on natuke uhkemat. Kutsume neid küsimusi Loogiline väljendeid, pärast keegi, kelle perekonnanimi Bool. Ja Boole'i ​​väljendus on lihtsalt midagi see on kas õige või vale, jah või ei. Nii et see on küsimus, mille vastust sa hoolivad, et sellises seisukorras teha decision-- tagasi saada vastust, ja siis minna vasakule või paremale, või midagi muidu üldse. Ja siis lõpuks, need read siin-- tagasi minna astuda kaks, mine tagasi samm two-- võiksime selle idee elluviimiseks erinevalt. Ja siis need teile programmeerimise kogemus oleks võinud teha või kujutan ette, tehes seda erinevalt. Aga tänapäeva eesmärkidel, on lihtsalt mõte, mis loeb. See kutsub esile mida me tavaliselt nimetame loop-- mingi tsükli, sest see teeb mulle midagi uuesti. Nüüd, olgem lihtsalt kaaluda kui hea see algoritm on. See on õige. Kui Mike'i raamat, see on üks Nende nelja scenarios-- ikka ja jälle ja jälle leiame teda. Aga kui hea see on? Noh, meil ei ole liiga formaalne siin. Kuid olgem lihtsalt joonistada midagi, x ja y, et saada tunde kuju see probleem. X-telg on siin suurus minu probleem. Ja nad y-telg siin saab ajal lahendada. Ehk on see lehekülgede arv. Võib-olla on see sekundit lk turns-- iganes. Kuid soovite loota on mida see pilt esindab. Ja see esimene algoritm, ma lähen kirjeldada kui lihtsalt sirge. Kui seal on n lehekülge telefoniraamatus, siis võib mind nii palju kui n samme leida Mike. Kui Verizon või telefoni firma lisab veel ühe lehe järgmisel aastal see võib võtta mulle veel üks step-- ühe ühiku aega leida Mike. Nii et just sel 00:59 suhtega. See on sirge kalle. Vahepeal, et teine algorithm-- kui ma läheb kahekaupa AEG_ kaks, neli, kuus, kaheksa või double-- läbimas lehekülge korda korraga kaks korraga see on ikka sirge. Seal on nüüd 1-2 suhe, kuid napilt. Nii et kui seal on see palju lehti diagrammi siin kollane, mis võiks mind see palju samme või sekundi vastasel juhul läheb mind kaks korda nii palju punast joont. Aga roheline joon on tõeline Buffee. See on see, mida me üldiselt helistada logorithm-- log n, kus n on lehekülgede arvu. Aga see on kuju, mis loeb täna, sest meil ei ole isegi mõelda kandes punkti. Mõtle äärmuslik stsenaarium. Oletame, Verizon homme kahekordistab lehekülgede arv, et telefoniraamat, 1000 kuni 2000. Esimesel algoritm, ma võib raisata ekstra 1000 samme otsivad Mike, lihtsalt sellepärast, Verizon kahekordistunud suurus raamat. Teine algorithm-- see võib võta mind ekstra 500 sammu. 1000 rohkem lehekülgi, ma lähen kohe kahe AEG_ 500 rohkem samme, et leida Mike. Aga see kolmas algoritm on omamoodi maagiline. Verizon kahekordistab number lehekülgede alates 1000 kuni 2000, aga kui palju samme teeb see mind otsima Mike? See on vaid üks, sest ma lihtsalt pisar telefoniraamatust veel üks kord alates 2000 lk probleem kuni 1000 lk probleem, ja voila. Olen võtnud tohutu hammustada välja. Ja kui sa lähed tõesti äärmuslik, Oletame, et telefoniraamatus Ettevõte oli midagi hull nagu 4 miljardi dollarini telefoniraamat. Noh, kui palju samme võib see võtta leida Mike Smith on 4 miljardit lk telefoniraamat? See on suur number, kuid vaid 4 miljardi 2000000000-1000000000 to 500 miljoni 250 million-- veel kõlab nagu suur number, aga ma olen väga kiiresti saada väiksemaid väärtusi. Ja tegelikult, kui ma ei matemaatikat õige, ma ei saa jaguneda ainult 4 miljardit poolt umbes 32 korda, enne kui Ma saan alla vaid üks. Nii et kui see telefoniraamat olid 4 miljardit lehekülge pikk, ei ole suur asi. Mõne sekundi, võibolla 32 sekundit, võin jagada see pooleks ja lõpuks leida Mike või järeldada, et ta ei ole seal. Ja see põhiolemus algorithm-- hea algoritm. Ja see on üks eesmärkide klassi niimoodi, püüab välja selgitada, kuidas ma probleemi lahendada mitte ainult korrektselt, nagu ma alati teadnud, kuidas seda teha ühe lehekülje kaupa AEG_ aga õigesti ja hästi. Kuidas kujundada hea lahendusi probleemidele? Võtame hetkeks siin ja teile mõttes nüüd kohta CS50 käigus itself-- tutvustada mõne kursuse töötajad. Vahetult enne 02:00, jagame võtta pausi nii et neile, kes on ostetavad saab pardi välja ja võtta mõningaid muid klass ja vaadata ülejäänud seda online. Aga nüüd, lubage mul tutvustada CS50 klass omaette, eriti, mis on uus. Nii minevikus Kevadel veetis üsna natuke AEG_ käigus töötajad ja I-- mõtlemine mis see on me tahame CS50 olla, ja läheb tagasi esimese põhimõtteid, nii et rääkida, kaaluda, mida me tahame See muidugi nägema ja olema nagu oma õpilastele. Ja nii näete probleemi seatud null samuti, kutse võtta pilk, et URL, mis võtab kokku motivatsioonist taga järgmised omadused sügisel 2016. Nii nagu te võib järeldan alates TL: DR jaotusmaterjali, ainekava täna kui ka muidugi kataloogi, sel aastal CS50, sa ainult oodatakse osalema today-- nii tööd hästi done-- ja viimane loeng 21. novembril. Ja sa oled teretulnud, kuid mitte oodata osaleda need loengud keskel, sest mida me teeme Tänavu on pildistamise Reaalajas kursuse materjali. Nii et kõik jääb praeguste ja lisada nii hästi kui can-- praeguste sündmuste ja vestluste inimesed võiksid olla kellel on tööstus maailma, kuid muudab selle materjali saadaval, selle tulemusena isegi earlier-- koos täieliku teksti ärakirju ja selle otsimist ja seosed teiste vahenditega. Ja tõepoolest, me oleme olnud väites mõnda aega ja me nüüd uskuda seda, et me saame luua digitaalselt rohkem ümbritsevale, Köitvama õpetlik kogemus, mitte kogumisega siin mõned 23 korda isiklikult kohtuistungil keegi meeldib mulle lihtsalt rääkida infotehnoloogia, vastandina kaasates aktiivsemalt. Nii näete kursuse ainekava visand semestri siin koos kui loengud filmitakse, mille sa oled tere, aga mitte oodata, ja kui nad vabastatakse käigus kodulehel. Ja mida me teeme siin Kolmapäeviti algab järgmisel nädalal On palju tihedamalt, ainult need inimesed, kes soovivad osaleda, on nn jalutada, kus I ja muidugi peadesse tegelikult teeb asju natuke intiimsem siin orkestris paragrahvi veel mõned tehnoloogia ja kõndida läbi jooksva nädala probleem komplekti, ja pakkuda particularly-- kui üks neid vähem comfortable-- enam juhised, et te võiksite või vajavad nädala väljakutse. Ja täpselt samamoodi, neile, kes ei saa osaleda neid isiklikult, ei ole suur asi. Seal on sarnaselt eesotsas üks kursuse tippjuhte, Zamalya, samas võimalus varjatud probleemiga komplektid ise. Probleem seab sel aastal ilmub reedeti ja enam teha seitse päeva hiljem kuid 10 päeva later-- sihilikult kattuvad iga probleem seatud, et paremini mahutada, loodame, tõus ja mõõn õpilaste sõiduplaanid, eriti kui midterms või kergejõustik või teadlased või extracurriculars kipuvad tulema ja minema eriti keskel semester. See peaks andma teile veidi rohkem otsustada, kas teil ees laadida nädalas CS50 või tagasi koormus see järgmisel nädalavahetusel asemel. Nii vaatame kursuse ainekava siia ajakava selle. Ja märkad liiga hulgast muudatused sel aastal neile rohkem tuttavad programmeerimine minevikus, hakkame semestri kui me täna Scratch, Eriti keskendub keele nimetatakse C ja seejärel üleminek ei PHP, vaid keele nimetatakse Python poole semestri lõpuks kontekstis veebi programmeerimine, koos SQL ja JavaScript, HTML, CSS, ja veel enam. Ja vastuseks KKK, see on tõesti nii et CS ei ole nii hull kui ma ükskord arvasin, et see oli, aga see on nii palju tööd kui olin kuulnud, et võib olla. Aga see on öelda, et siin on mõned statistika sügisel 2015 üliõpilaskonna, kusjuures horisontaalsed sinised jooned esindavad keskmine tundide arv teatatud. Ja näete keskmiselt kuus kuni 10 12-- võibolla 16 või nii ja nii edasi, kuid suure varieerumise olema selge. Ja nii aru, et seal ei ole mitte ainult õpilased mugavam ja vähem mugav käigus, kuid vastav tugi struktuuri, et saada nendele üliõpilastele läbi semestri edukalt. Tõepoolest, vastuseks KKK, peaks te võtate CS50 kui esimesel aastal? Absoluutselt. Ja tegelikult ma ei kahetse ei leidnud minu moodi või leidnud uue valdkonna et esimesel aastal samuti. Ja peaks te võtate CS50 koos muid kursusi, kindlasti nii well-- ja üldist nõuannet me võiksime anda õpilastele, et CS50 on ilmselt ei ole selline klassi või intro klassi et sa peaksid võtma kolm muu või neli p-set klassid. Aga kui te võtate kaks p-komplekti klasside midagi muud, ja CS50, absoluutselt juhitavaks. Mul oli palju õpilasi Varem teinud üsna edukalt. Ja et sa poole, et finišijoonel edukalt ei muidugi on sections-- Lugude õpilastele ebamugavamate, mugavamaks, ja kusagil vahepeal, mille käigus on Esimene probleem komplekti, Teil palutakse kirjeldada ennast. Ja kui sa oled nende seas vähem mugav, see on selline asi, et sa lihtsalt pigem tea. Ja tõepoolest, mis on olnud kasvava demograafilise in CS50 üsna mitu aastat. Nagu eelmisel sügisel eest Näiteks 58% klassist kirjeldatud end nende hulgas vähem mugav, koos seas 9% rohkem mugav ja seejärel teiste õpilastega seal punane kirjeldavad end kui kusagil vahepeal. Ja näete siin teemasid üldist ja ajakava lõigud, mis kõik pakutakse isikut; reaalajas, mille käigus on hämmastav töötajad õpetamise stipendiaatide ja muidugi assistendid, kellest Teil kohtuvad hetkeks. Sektsioonid ise, nagu näete, tahe olla esmaspäeviti ja teisipäeviti ja kolmapäeviti nii, et saaksite sukelduda aastal pärast alustamas, kui sa nii vali käigus on loengut varem sel nädalal. Ja siis tööaega, mis kindlasti, iga aastaga, ole olnud vähem vaidlustada käigus. Ja sel aastal me plaanite ole Ainult ametist hours-- üks üks võimalusi abi õpilased kolmapäeviti neljapäeviti ja pühapäeval, viimasel neist olles pärastlõunal mille konstruktsioon vähendamiseks mõned stress et alati tekib hilisõhtul p-Seadistus tähtajaga looming-- kuid tööaega pakutakse ka esmaspäeviti ja teisipäeviti ja Kolmapäeviti ja reedeti ja laupäeviti, tänu meie sõprade HSA. CS50 on nüüd oma ruumi õpilastele ja CS50 personal atop 67 Mount Auburn Street, sealsamas Harvard Square. Visioon, mis seisneb selles, et CS50 on TF-i ja CAS kogu nädala jooksul, päris palju peaaegu kogu päeva, on seal toetust. Nii et kui sul on mõned küsimus p-komplekti või te ei tunne natuke blokeeritud või natuke segaduses, ja kuradit, sul tund või Poole tunni klasside vahel, eriti square-- saab pop ja on sellele küsimusele vastata kohta on, et segadust clarified-- väga vaimus, te olete juba tuttav, et matemaatika osakonna enda matemaatika küsimused keskus, aga päris palju ööpäevaringselt kohta [? Gcal?], Et paneme online. Õpetamine on olemas ka neid õpilased, vabalt kursuse oma töötajad kui soovid intiimsem üks ühele, kaks või kolm klassikaaslastega ainult tööd ühe kursuse töötajad. Ja tõepoolest, need siin on vaid mõned muidugi on töötajad, paari, kellest te tulen kohtuvad hetkeks. Tegelikult CS50 enda pea õpetamise mehe, ja pea muidugi assistent, ja kirikuõpetaja, võiks tulla kuni lubada neid tere öelda. [APPLAUSE] SPEAKER 1: [kuuldamatu]. [APPLAUSE] SPEAKER 2: [kuuldamatu]. [APPLAUSE] SPEAKER 3: [kuuldamatu]. [APPLAUSE] DAVID Humala: Ja võimaldavad meil tuua pardale kaks CS50 kõige tippjuhte, Rob ja Zamayla samuti. [APPLAUSE] Tõepoolest, nii Rob ja Zamayla on siin nii kaua, et ma ei suutnud minema CS50 arhiivid ja leida see väga SD filmimaterjali neist osalevad laval ise mõned aastad tagasi. ROB: [kuuldamatu]. [APPLAUSE] ZAMAYLA: [kuuldamatu] [APPLAUSE] DAVID Humala: Aitäh. Nii et lisaks nendele meeskonna liikmed siin, CS50 on meeskond ligi 100 töötajad, keda kõiki on saadaval lõigud ja tööaega ja nii palju. Ja nagu Rob ütleb Ka see on kõige põhjalikuma kohta CS50 on 10 aastat, et Olen olnud [kuuldamatu]. [Kuuldamatu] keskendunud eriti pakkudes tugistruktuuri korrastamist ära palju põhiosa, mis on olnud kogunenud 10 aastat iteratiivne arenguid muidugi probleem komplekti. Nii et sel aastal mitte ainult klassis, vaid Samuti kujul käigus probleem komplekti, tuleks leida asju rohkem ühtlustada, trimmer, palju juhitavuse üle varasematel aastatel, kui me shed mõned pagasi, mis on poolt välja töötatud arenevate aastal aastasse ja itereerimine. Nii uute ja paremate algab täna. Sul kohtuda mõned rohkem Muidugi töötajad läbi [kuuldamatu] kell 2.30, kus me teenime, Nagu tavaks, kooki. Seal on natuke rohkem kooki kui, aga sa pead kohtuvad Erin ja Tobias ja teised veel. Ja lubage mul anda teile Tour enne kuuleme mõnest teised töötajad klassis, mis ootab samuti. Tegelikult on meil alati alustada CS50 on semestri tuleval laupäeval mida nimetatakse CS50 Puzzle Day. See on midagi pistmist infotehnoloogia per se, kuid katkisest lahendamisel üldisemalt. Ja kui sa nii valida osa saada, kohta mõned kutsed, Te olete näinud uks kukkunud või laval siin see on võimalus meeskondades kahe või kolme või nelja, osaleda mõistatusi ja pizza ja auhindu ja more-- sel laupäeval, Hoia rohkem. Leiad ka, et iga Kell Tule ja Jää, ei CS50 tuua terve hulk õpilasi lõunat, teha suurt klassi tunda intiimsem, ja üldiselt koondada vilistlased ja sõbrad tööstuses rääkida sellest, mida nad pole olnud kuni alates kooli lõpetamist. Samamoodi tänavu me pidulikult esimene CS50 50 kodeerimine contest-- keskel semester võimalust, et võimaldada igaühel kohta opt in alusel, et on väljakutse Mõistmine vastu klassikaaslased jälle meeskonnad kaks või kolm või neli, kasutades ainult et programmeerimine Savvy, et siis pead alla vööle pärast vaid kuus või seitse nädalat klassi, ja osalevad sedalaadi konkurentsi online-- kui soovite lihvida oma oskusi enam, et väljakutse. Lõpus semestri on nn CS50 Hackathon-- võimalus, mis algab kell 7.00 PM lõpeb kell 7:00 ning mööda teed on 12 õhtutundidel, kus sukelduda arvesse muidugi lõplik project-- võimaluse kujundada ja rakendada kõige midagi huvipakkuvat et sa oma õpetuse mehe juhtimisel. Umbes 09:00 me tavaliselt teenida pitsa, 01:00, Philippe ja mõned meist kes veel ärkvel 5:00, on shuttle bussed alla tee IHOPi hommikusöögiks. Ja siis paar päeva hiljem on nn CS50 fare-- lõpu poolel näitus pidu, kui kaugele nii palju kohta CS50 õpilased on pärit nädal null kõik viis nädalat, ja pidades silmas, et 73% neist klassikaaslased ja sinu tänavu on kunagi võtnud CS klassi ees. Tegelikult on reemphasize nii palju, siin on veel mõned näod CS50 töötajad. SPEAKER 4: [kuuldamatu]. SPEAKER 5: [kuuldamatu]. SPEAKER 6: [kuuldamatu]. SPEAKER 7: [kuuldamatu]. SPEAKER 8: [kuuldamatu] SPEAKER 9: [kuuldamatu]. SPEAKER 4: [kuuldamatu]. SPEAKER 10: [kuuldamatu]. SPEAKER 11: [kuuldamatu]. SPEAKER 12: [kuuldamatu]. SPEAKER 13: [kuuldamatu] SPEAKER 14: [kuuldamatu]. SPEAKER 13: [kuuldamatu]. SPEAKER 15: [kuuldamatu] SPEAKER 16: [kuuldamatu]. SPEAKER 11: [kuuldamatu] SPEAKER 5: [kuuldamatu]. DAVID Humala: Mõned meeskond on ise sisseoste klassid. Aga kui need kohal kohta CS50 töötajad on siin, võiks tulla kuni hetkeks. CS50 on TF-i ja CAS ja [? töötajad?] kohal siin-- need on vaid mõned on faces-- kellest üks just nägin ja mõne other-- ja mõned teised veel. Miks me ei lähe edasi ja võimaldab kutid viieminutilise pausi. Kui teil on vaja pardi välja poes klassi, siis hästi. Ja viis minutit, siis me jätkata, võttes pilk Scratch-- esimene Meie programmeerimiskeelt vasta käigus töötajad siin veel mõned, ja keskenduda lõpuks probleemse seatud null. Nii me oleme juba viis minutit. [APPLAUSE] Hästi. Nii et me oleme tagasi. Ja meie ülejäänud aega täna, eesmärk on tasandil võrdsed nii mõned terminoloogia nii mõned ideed. Sest tõepoolest, kui ühe teatud graafikute varem seal saab olema vahemikus kogemuste tase klassis, mille mõned õpilased on võtta mõned programmeerimise enne, kellest mõned ei ole. Ja nii on see esimene probleem seada ja seda esimese keelena meil on võimalus alustada enesestmõistetavaks pärast täna mõned ühised sõnavara ja idee. Ja me teeme seda teel Kursuse esimene languages-- lisaks C ja Python ja JavaScript ja SQL ja HTML ja CSS, me keskendudes esialgu ja just probleem seatud null Selle graafiline keeles, mida nimetatakse Scratch arendatud MIT Media Lab mööda teed, et aidata õpilased ja lapsed eriti ennast väljendada algorithmically-- nii rohkem kooskõlas sellega, mida me võime nimetada arvutuslikke mõtlemist. Ja see on kasulik keeles, sest väga kiiresti järgmisel nädalal nädalas ühe, me üleminekut traditsiooniline ja kauge keeles nimetatakse C, mis on puhtalt tekstiline. Sa ainult kasutada oma klaviatuuri Selleks, et kirjutada juhised nagu need ekraanile. Kuid isegi kui te pole kunagi näinud programmeerimiskeelt enne, vaid põrkav see kõik on seda segasena, saab ilmselt arvata, et ilmselt trükib Hello World. Aga seal on palju süntaktiline õhuliini seal. On imelik hash sümbol või hash tag kuni top. Seal on noolsulgudega mõned sulgudes looksulg, semi-colon-- seal on lihtsalt nii palju visuaalset süntaks, mis jääb jalgu. Alustame muidugi Kraabi et saada Varem kõik need intellektuaalselt ebahuvitav distractions, ja keskenduda selle asemel ideid. Tegelikult võib see olla enne. See, selle, nädal peab olema pärast. See sellega graafilise keel Scratch, kuidas siis oleks rakendada sama program-- programmi, et kui joosta, lihtsalt ütleb tere. Ja mis tore Scratch on et see on graafiline programmeerimine keskkond, mis kasutab puzzle tükid või plokid, et ainult lukustavad kokku kui see muudab loogilisel teha. Ja Scratch saab arendada animatsioone ja interaktiivseid mänge ja kunsti, mis tahes mitmeid asju, mis võite ette kujutada oma meeles, ning rakendada neid lihtsalt lohistades puzzle tükki. Ja tõepoolest, me peame võime väljendada mõningaid samu ideid et just mainisin hetk tagasi kontekstis Mike Smith ja otsivad telefoni book-- asju nagu funktsioonid, vaid tegevused, asjad silmuseid, et teha asju ikka ja jälle, muutujad, mis on midagi me tutvustada, aga see on tuttav ehk alates algebra-- lihtsalt mingi kohatäide salvestada mingi väärtuse võite vaja later-- Loogiline väljendeid, kui need jah ei või tõsi vale küsimustele enne. Tingimused on need, kahvlid road-- need oksad nii rääkida. Ja siis on mõned Kasvataja funktsioone näeme ka täna, nimetatakse massiivid ja niidid ja sündmused, mis me siis vaadata üle aega erinevates keeltes. Aga Scratch lubab meil uurida kõiki neid. Nii et siin Scratch, see lilla plokk on see, mis funktsioon on tavaliselt hakkab välja nägema. See lilla puzzle tükk, mis on teatud sõna nagu ütleme, mis on meetme ja siis see võiks olla argument või parameter-- mingil moel on selline kohandamine mida see plokk ei nii, et see ei ole eelnevalt kindlaks määratud MIT mida see lilla plokk ütleb. Tegelikult, näete oma hetk, et ma olen võimeline kirjutama sõnad nagu tere, või tere David, või tere Zamayla, või mis iganes ma tahan, et argument Selle puzzle piece-- valge kast seal. Vahepeal, kui ma tahan silmus, jagame näha, et seal on puzzle tükki, et vaadata veidi apelsini niimoodi. Ja nende kuju liiki viitab sellele, et midagi juhtub ikka ja jälle tsükkel. Nii et kui ma wrap öelda tere plokk koos igavesti blokeerida Scratch, see on lihtsalt läheb ütleme tere maailma igaveseks sõna otseses mõttes. Vahepeal on veel üks tüüpi loop Scratch et me see-- korrata block-- kusjuures kui sa tea ette, kui palju kordi soovite silmus täita hulga korda fact-- sa on võimalik määrata, et kirjutades number või isegi ühendades muutuja, nagu x või y, nagu me näeme. Tegelikult muutujaid nagu i sel juhul mis on üldnimetus jaoks täisarv muutuja lihtsalt salvestab number-- täisarv võib olla, kasutada seda oranž blokk siin Muutuja nagu ma nulli. Siin on näide roheline on Loogiline väljenduse Scratch. Kuigi see näeb välja nagu matemaatika valem, matemaatika ebavõrdsust, nagu seda tegelikult on Boole'i ​​avaldised. See on kas tõene või väär. I on väiksem kui 50. See on kas jah või ei vastust või õige või vale vastus. Ja me tavaliselt nimetame need Boole'i ​​avaldised. Ja see ei pea olema 50. See võib olla x vähem kui y, suurem kui y, mis võrdub y-- mõnel teisel küsimused võidakse paluda. Nüüd Esmapilgul võib see pilk äkki üsna julge siin, ja see on. Aga kontseptsiooni tark, see on päris tuttav enne. Kui x on väiksem kui y, kui öelda nii palju. Või kui x on suurem kui y, siis öelda nii palju. Else öelda x on võrdne y. Nii on meil näiteks seal kolmanda scenario-- ainus kolmanda possibility-- x on kas suurem kui, väiksem või võrdne. Nii et meil on kolm teed teelahkmele. Ja pane tähele, mis on lahe siin-- Scratch, tundub, on vaid üks puzzle tükk, sel juhul on, kui teine ​​plokk. Ja veel, et tundub viitavat võite on ainult kaks teed teelahkmele. Võite minna vasakule või paremale, kuid Aga et kolmas stsenaarium? Mis siis, kui x on võrdne y? Pole probleemi. Võtke üks pusletükk, pane veel üks sees on luua semantiline samaväärne Ifi muud kui else-- ja nüüd on oma kolm teed teelahkmele. Ja nagu me näeme, Scratch puzzle tükki võib venitada ja kasvada, nii et kui tuupima rohkem asju neile. Sa ei pea sobivaks kõik selle vaikimisi suurus. See on midagi, mida me tulen kohe näha, nimetatakse massiivi. See on nagu list-- mingi võimalus ladustamiseks mitu tükki info muutuv, mitte ainult number. Need näeme esindaja midagi, mida nimetatakse multi-ja väliskeermestamiseks. Tegelikult on kõik oma Mac ja PC nendel päevadel toetab multi-ja väliskeermestamiseks, mis tähendab, et saate sõna otseses mõttes teha mitu asja korraga. Sul võib olla Microsoft Word üles Esiplaanil töötavad mõned essee. Sul võib olla brauseris taustal avamine G-posti või Facebook vms. Teie arvuti võib teha mitu asja täna, sest see on mitme keermestatud, ja programmide nad on in Eelkõige on ka multi-keermestatud. Seal on asju mida nimetatakse sündmuste ka maailma Scratch, ja siis seal on liiga, teha Meie omatehtud puzzle tükki, kui asjad tegelikult ei eksisteeri ette. Nii saab motiveerida seda järgmiselt. Mõned aastad tagasi, kui ma Esimene avastati Scratch, kui ma olin tegelikult Kraadiõppeüliõpilase MIT, me end ülesanne oli teha kodutöö. Ja ma implemented-- mis tagantjärele, oli väga halb otsus, sest see on Kõige vihaleajav laulu maailma kuulata kaheksa tundi töötamise ajal homework-- aga midagi ma kutsus Oscar aeg, mis on ilmselt tuttav lugu. CS50s ise Jordan Hayashi, üks meie kõrgema töötajad, on täiendatud ta 2015. ja nüüd 2016 aastast juba järgmisel päeval, Mul oli kõik lihtsalt läheb arvesse Oscar prügikastist. Nüüd me toetame ringlussevõtt ja kompostimine. Aga maalida pilt mida me saame teha siin ning motiveerida mõned madalamal tasemel näiteid, võiks saame ühe muu vabatahtlike lihtsalt tule üles ja mängida minu esimene kodutöö kunagi? Tule üles. Mis su nimi on? HENRY: Henry. DAVID Humala: Henry, tule üles. Tule üles. Head kas nii, ja näete hetkeks Ma lähen edasi minna ja tabas roheline lipp üleval paremal nurgal, mis tähendab minna. Väike stop märk ikooni läheb öelda stop, ja just siis, kui hakkate ja lõpetada programmi. Meeldiv tutvuda. Hästi. Nii et me näeme juhiseid ekraanil vaid hetk. Ja just mängides seda mängu paar seconds-- usu mind, me ei kavatse soovite mängida kõik viis väljatöötamiseni te saada tunnet, mida programm teeb. Ja rohkem kui lihtsalt keskenduda Henry oleks hea või halb see mäng, fookus ja kuidas ta rakendab mind algselt ja seejärel Jordan. Teisisõnu, kui need muutujad? Kus on silmad? Kus on funktsioonid? Ja me näeme, kui me ei näe Neil all kapuuts. Lihtsalt kliki ja lohista prügikasti sobiva prügikasti. [MUSIC MÄNGIB] Hästi. See on väga hea. Miks me ei peatu seal. Aitäh. Õnnitleme Henry. Aitäh. [APPLAUSE] Kujutlege silumine, et programm. Kui seal on probleem kahe mänguminutil song-- kuid nii mis toimub siin tõesti? Nii keeruline, nagu see võib hakkavad tundu, et saada aja jooksul, tõepoolest rohkem asjad hakkasid langevad, Mis on huvitav umbes selline example-- ja me näeme mõne others-- on see, et kui sa Vaata minevikku keerukuse või keerukuse mängu, seal on väga lihtne hoone plokid, mis play-- mis kõik, kui te destilleerida neid neile ehitusplokke, on väga kättesaadav ja rakendatavad enestele. Näiteks, see on olnud mõnda aega, kuid ma olen päris kindel, mida ma algselt tegi, kui tehes seda mängu esimest korda oli mul täiesti nagu viivitanud. Ma ei keskendunud üldse kohta loogika või puzzle tükki, Ma keskendunud graafika ja leid tänaval postituse ja prügikasti ja kõik see. Aga need olid vajalikud koostisosad alguses. Ja kui ma lõpetasin viivitamine ja millega nähakse ette üldine raamistik, Ma otsustasin, lubage mul teha üks tükk prügikasti kukuks. Ja me näeme Scratch toetab asju nimetatakse sprites-- märke, mida on erinevad kostüümid, et nad teistmoodi. Ja nii ma panna prügikasti kostüüm üks selline sprite. Ja ma lihtsalt vaja seda langevad taevast. Ja nii selgub, Scratch, nagu enamik programmeerimiskeeli, toetab juhuslike arvude või tehniliselt pseudokoodi juhuslike arvude, nii et tõmmates ja kukkumine teatud puzzle tükki, Mul oli võimalus on prügikasti tulevad vasakult esimene. Ja siis järgmine kord, kui ta kukkus, alates paremale ja seejärel keskelt. Ja kõik mängu ei olnud lihtsalt on prügikast kukkumise taevas. Sa ei osatud seda või klõpsake seda. Sa ei saa avada prügikasti. Sa ei saa midagi teha. Aga see oli beebi samm poole minu ülim nägemine. Ja pärast seda, ma tegelikult rakendatakse mingi kaugseire nii et kui sa ei vajuta ja lohistada tükk prügikasti üle prügikasti, Oscar kaas oleks avada ja sulgeda. Miski ei juhtu prügikasti, kuid vähemalt kaas oleks avada ja sulgeda. Nii siis vaadata samm Kahest. Ja see on see, mis saab olema võti nii probleem seatud null ja programmeerimine üldisemalt on võtta neid väga tahtliku beebi samme. Sest mitte ainult ei võimalda teil tunnen ausalt saavutatud palju quickly-- see on Halvim maailmas proovida rakendada kõiki Oscar aeg, Seejärel tundi hiljem tabas roheline lipp, ja miski toimib nii nagu sest kus sa isegi hakkavad siluda või tõrkeotsing et programm? See on lihtsalt suur. Ja nii tõeliselt omaks idee võttes steps-- beebi samme jälle ja again-- ülesehitamisel midagi, mis lõpuks, tõesti muljetavaldav ja keeruline, kuid alguses, ei ole kaugeltki nii palju teha. Tegelikult teeme selle ära. Lubage mul minna Ja-- Scratch ise olemas veebis aadressil Scratch.MIT.edu, ja sa jutust palju jälle probleem seatud null, spetsifikatsiooni mis on juba CS50 veebisaidil. Aga see on see, mida Scratch ise. Ja seal on tõesti ainult kolm peamist valdkonnad. Ülaosas vasakul seal on niinimetatud staadiumis. See on nullist. Vaikimisi kostüüm on kass. Ja see on ristkülikukujuline maailma millele saab move-- üles, alla, vasakule, paremale ja mõned muud asjad. Keset siin on meie kategooriaid või meie kaubaalused puzzle tükki, ja erinevate värvidega tähendada erinevaid asju. Ja kui sa tuhnima, näete asjad silmuseid ja tingimused ja muutujad ja muud koostisosad. Ja siis siin on skriptide ala. See on koht, kus ma ei saa lohistada need puzzle tükid teha asju. Nii teeme üks selline asi. Lubage mul minna Ja-- ja ma tean, kus see on. Nii et ma lähen kohe kliki kus ma tean asju valmis olla, kuid suunates ja klõpsates ja poking ümber on paratamatu. Nii et kui roheline lipp klõpsates Mida ma tahan teha? Ma teen seda. Ma lähen lohista see lilla puzzle tükk, tere öelda kaks sekundit, ja las ma suumida. Ja ma lähen muuta olema, mida ma tahan, et see olla-- tere kaks sekundit on hea. Nüüd ma lähen klõpsa roheline lipp, või kui ma tõesti tahan, Ma ei täisekraani ja siis tagasi tulla. See lihtsalt hoida kõik ühte aknasse. Roheline flag-- tere. Hästi. Mitte kõik, et huvitav. Nii et lubage mul minna ja seda teha. Las ma proovin veel ühe. Kui roheline lipp clicked-- olgem midagi sellist heli. Ja märgata, et välja kasti tasuta saad kass heli, kui on vaikimisi sprite. Nüüd lubage mul minna ja tabanud roheline lipp nüüd. [Meowing] Aw. See on jumalik. Ma programmeerimine. Mida ma olen teinud? See on samaväärne programm. See on ilmselt super lihtne. See ei ole tegelikult võtta kõik, et palju pingutust ja MIT tegi suurema osa tööst, aga ma olen kutsunud funktsioon. Olen kasutanud funktsiooni. Olen teinud mõningaid meetmeid, kasutades ainult et üks lilla puzzle tükk. Noh, kui ma tahan teha kolm Kompass järjest? Lubage mul minna ja teha kaks ja kolm. Ja märgata, et kui sa hõljuma lähedal puzzle tükk, väike valge joon ilmub omamoodi magnetiliselt ja see asetuks koos, kui sa lased minna. Vaatame, mis juhtub siin. [Meowing] Seal on viga. Ma ainult kuulda ühe mjäu. Miks see võiks olla? Jah? Jah. Me tõesti ei kuule seda, aga see on hea intuitsioon. Nad kõik mängivad samal ajal. Miks? Noh, et arvuti on lihtsalt läheb teha seda, mida sa öelda tahad. Nii et kui sa ütled, Heli, Heli, Heli, aga sa ei ütle seda mängida kuni sa oled teinud, mängida, kuni te olete lõpetanud, see läheb läbi puhuda programm tõesti kiire ja ärge ainult seda, mida sa öelda tahad. Nii et ma tegelikult vaja määrata Seda paar võimalust. Ma võiks lihtsalt seda, vabaneda sellest. Las ma proovin seda teiste puzzle piece-- mängida heli mjäu kuni teinud, ja tõmmake kolm Nende ja klõpsa Play. [Meowing] See ei ole tegelikult very-- tänan sina-- väga loomulik. Miks ei I-- lasta mul minna kontrollima siin. Nice. Oota üks sekund, ja nüüd ma lähen tagasi helisid ja mängida heli kuni teinud, ja siis las ma saan oodata ühe sekundi jooksul. Ja siis lase mul minna ja saada üks rohkem heli ja siin me läheme. [Meowing] Veidi rohkem loomulik, kuid see ei ole väga tõhus. Nagu ma Igavuse kõik olla ta lühidalt, klikkides edasi-tagasi ja tõesti dubleerida minu work-- päris palju kopeerimist ja kleepimist. Tõepoolest, kui kontrollida klõpsatud või klõpsata, Ma oleks võinud lihtsalt kopeerida ja kleepida. Mis oleks parem ehitada kasutada? Mis mõte enne? Jah, nii silmuse. Ja tegelikult, kui me torkasid ümber, me võiks leida just nii. Lubage mul minna sündmuste või pigem kontrolli. Nii repeat-- ma ei tahad seda 10 korda. See läheb aina tüütu kiiresti. Aga ma kordan kolm korda. Lubage mul minna tagasi heli ja Heli, kuni see on tehtud. Lubage mul minna tagasi kontrolli ja lihtsalt oodata ühe sekundi jooksul. Ja teate, võite arvan, et see ei sobi, kuid jällegi, kui magnetiliselt sa lased ta snap paika, see kasvab täita. Mis see mängida nüüd? [Meowing] OKEI. Nice. Ja see on see, mida oleks nn programm, mis on ka õige. See meowed kolm korda üsna loomulikult, aga see on parem loodud. Ma kasutan vähem koondamine. Ma ei kopeeri ja kleebi midagi. Ma lihtsalt kasutatav parem idee. Nüüd on see ikka ole nii huvitav Scratch ei tee midagi. Nii teeme midagi muud selle asemel. Teeme midagi igavesti. Ja teate mis? Resolutsiooni tundub huvitav. Lähme teda liigutada 10 samme ja vajuta play nüüd. OKEI. Noh me saame mingi drag ta tagasi ja ta on ikka näidata, sest ta teeb seda igavesti. Nii silmus teeb mida ta ütleb seda teha, kuid see ei ole nii huvitav. Teeme ära. Lubage mul lisada juhtploki ja kasutada ühte neist tingimustest esimest korda. Nii see läheb liikuma 10 steps-- 10 dots, 10 pikslit screen-- siis läheb selle küsimuse. Kui midagi on tõsi, siis tee midagi sees blokeerida. Nii selgub kaugseire on terve kamp Loogiline expressions-- küsimustele jah ei või tõsi vale form-- lase mul seda teha. Kui touching-- ja siis seal see väike rippmenüü. Ma ei parameterize ta. Kui puudutamata edge-- olgem midagi sellist. Nii et kui liigutav edge-- lase mul minna tagasi liikuma. Ja miks ei võiks lihtsalt ümber pöörata 180 kraadi? Hästi. Nii igavesti liikuma 10 sammu. Kui sa puudutamata serva, keera 180 kraadi. Ja see ei ole programmi lõppu sest sul on igavesti blokeerida, nii see läheb uuesti minema ja uuesti ja uuesti ja uuesti. Vaatame, mis juhtub. OKEI. Natuke lollakas, kuid selline lahe. Ja me saame lisada sellele mõned rumalusteks mis ei ole sugugi nii intellektuaalselt huvitav. Aga kui me tabanud see väike mikrofoni button-- ai. Las ma puhastan selle üles. Lubage mul tõsta seda nad ütlevad TV. Puhastage et üles Salvesta ja nüüd minna kuni skripte. Ja nüüd, ma lähen heli. Annan talle nime. Ma nimetan seda ai. Ja nüüd mängida heli ai. Pange tähele, ilmub see vähe rippmenüüst. Vaatame. [OUCH] [Naerab] Aga me ei saa muuta t tema sõita. Me võime olla kaks korda nii tüütu. [OUCH] Või kui me teeme seda nagu 1000 astmetena AEG_ OKEI. Nii et me läheme jätta, et üks üksi. Nii jälle, hoone blocks-- ma hakkas midagi super lihtne, ja siis lisasin funktsiooni lisatud funktsioon, lisatakse funktsioon. Ja ma ei pea enam muretsema kuidas esimesena nimetatud funktsioone rakendati nagu ma jätkata kiht asju peal. Nii et tegelikult, las ma teen ühe muu siin. Lubage mul minna ja avada faili, mis Ma tõin ette, mida nimetatakse lambad. Seega on veidi erinev märk, mis näeb välja selline. Ja las ma vaatan, kas ma ei saa midagi kasutades counter Käesolevas case-- niinimetatud muutuv. Ma lähen edasi minna ja alla Events-- las ma saan roheline lipp klõpsatud. Siis lase mul minna andmed, mida ma tean alates lihtsalt mängides enne, on koht, kus muutujad. Ja ma lähen edasi minna ja lohista see. Nii muutuja nimega counter, ja Ma lähen initsialiseerida see nulli. Ma ei helista ta anything-- x või y või · Z- kuid programmeerimine, kutsudes midagi on semantiliselt kasulikul viisil, nagu counter, mis kirjeldab, mis see on, see on Palju lihtsam lugeda oma koodi hiljem. Lubage mul minna ja saada igavesti blokeerida siin. Ja las ma minna välimus lehele ja teha Say blokeerida. Aga mis on cool umbes muutujad on mul ei pea lihtsalt kirjuta midagi nagu tere, mis me oleme juba teha, ma ei saa mitte minna andmed ja lohistada oma muutuja, ja isegi kuigi kuju ei ole päris näeb see peaks sobima, see kasvab täita. Ja ma lihtsalt öelda leti ühe second-- spoiler-- ta läheb loota. Me ütleme ühe sekundi jooksul. Siis ma lähen ja teda ootama ühe teise, nii et see ei lähe liiga kiiresti. Ja siis viimaks, muuta counter poolt one-- teisisõnu juurdekasvu counter üks lisaväärtust ja seda igavesti. Nii lammas liiga, nagu programmeerija, loeb 0. Ja kui me oodata piisavalt kaua, Ta teeb seda igavesti. Aga see ei ole täpselt õige, sest Tegelikult, nagu me teada nädalal üks, täisarvud ja arvutid üldisemalt tehniliselt on ainult finite-- hästi, pigem arvutite, kui nad esindavad täisarvud, on ainult piiratud arv bitte. Need lambid on võib ainult loota, et kõrge Enne sa välja lambid. Ja arvuti Ka ainult nii palju mälu, ainult nii palju transistorid, nii et see on võimalik ainult loota nii kõrge. Nii selgub, et lambad, Ma arvan, võib loota, et 2 miljardit või midagi päris suur. Nii et me ei kavatse ootama, kuni see juhtub. Aga lõpuks mõned bug juhtub mis võib olla väga reaalse maailma tagajärgi. Kuid lisaks lambad, et lihtsalt tutvustab muutuja. Lähme edasi ja avada midagi, mida ma teinud eelnevalt siin nimetatakse lemmiklooma Cat-- Pet Cat siin. Ja märkate siin see on mõne plokid, kuid kui roheline lipp klõpsatud, igavesti tehes järgmist. Kui sa puudutamata hiir pointer-- nii kursor ekraanil, arrow-- mängida heli mjäu ja siis ootama kaks sekundit. Ja just seda igavesti. Just pidevalt ootama et näha, kas pointer-- kui kass on liigutav kursorit. Nii et ma tabanud mängida. Midagi juhtub. Aga nagu ma liigutada kursor kass, [Meowing] Ja kui ma seda ära ei hellitus kass enam. Nii mõned tingimisi loogika nested sees silmus. Kuidas seda näiteks tahtlikult nimetatakse Ära lemmiklooma Cat? Mis see tegema hakkad? [Meowing] Miks peaks mitte lemmiklooma kass? [Meowing] OKEI. Nii et see on näide, kui mujal. See on otsus, punkti ja sest see istub loop, nad mõlemad saada kontrollida. Kas see on tõsi? Kas see on tõsi? Kas see on tõsi? Kas see on tõsi? Ja lõpuks, üks Neil läheb kohaldatakse ja nii sa kuuled kas mjäu või müha lõvi sel juhul. Noh, teeme veidi rohkem meeldima üks et ma tegin eelnevalt too-- teemasid. Nii niit on vaid üks asi, et arvuti saab teha. Nii multi-keermestatud programm on programm mida saab teha mitu asja korraga. Ja kõik need näited Senised pidanud lihtsalt üks skript, nii et speak-- üks programm nagu see siin. Aga seda märgata programm on kaks haldjaid, kaks märki. Üks on linnu. Üks on kass. Ja teate, kui ma vajutan need maha Vasakul nad on oma skripte või programmide nendega. Ja need mõlemad programmid, teate, start koos kui roheline lipp clicked-- olgem vaadata cat-- kui roheline lipp klõpsatud. Ja nii tõesti, kui ma tabanud mängida nüüd Kahe asjad hakkavad juhtuma korraga. Kass ja lind on nii läheb töötama üheaegselt luua selle mõju. Ja te võite ette kujutada, mis toimub. Seal on aas ja lindude ja kass tsüklina. Lind on lihtsalt kopsakas nagu Olin enne kui ma ütlesin ai. Aga kass on selgelt eelist. Seal on teine ​​sensori plokk mis osutab, et kass sihilikult et lind selles asjas. Nii võiksime tease peale, vaadates läbi nende plokid, mis toimub. Aga peamine koostisosa siin on üks. Lind, nii et see mäng ei ole täiesti boring-- või see animation-- algab suvalises suunas. Ja arvuti on korjamise number vahemikus 90 ja 180 sisuliselt nii, et see on veidi erinevat animatsioon iga kord. Ja siis märkate siin, kui kass on liigutav lind, siis mängida lõvi neli sound-- müha. Aga vahepeal linnu palett, meil on see. Forever, kui ei puutu kass, muudkui liigub kolme sammu. Ja siis siin on veel üks puzzle tükk. Kui oled äärel, põrge. Nii et lind on lihtsalt selline karjatamine oma äri, lihtsalt sõidavad ringi ja kopsakas, ja see on tõesti Kass, kes oli tingimisi loogika kas see oli püütud lind. Hästi. Nii teeme veel ühe siin, see üks kutsutakse Hi hi hi. Ja see siin lihtsalt ei see on igavesti silmus. Aga notice-- kuidas me peatada See on väga tüütu programm? Tulemus tühikut. Sest kui ma seda teen, Vasakul program-- märka seda on pidevalt listening-- on võti ruumi vajutage. Kui tühikut vajutatud, ja kui on, siis mida see teeb? Ta teeb väga levinud tehnikat. See seab muutuja on võrdne mingi väärtus. Aga see lülitab selle väärtuse. [? Nii välimus?] põhineb shape-- ma on muutuja, mis ma kirjutas ette, mida nimetatakse Vaigistatud, mis lihtsalt ütleb jah või ei. Kas heli vaigistatud või mitte? Õige või vale? Ja teate, ma räägin see-- kui summutatud on null, siis muutus ühe, muidu seatud mute see nulli. Nii lihtsalt flip väärtus nullist üheni. Oleksin võinud done-- muuta kahelt kolmele ja 3-2 või 4-5 või 4-6. Aga see ei ole oluline Mis numbrid ma kasutan, nii kaua kui ma hoida selle muutmist vastupidine. Ja kõige tahes programmeerija oleks lihtsalt vali nulli ja one-- vale ja õige, välja ja nüüd-- esindama seda. Ja see töötab endiselt. Kui ma tabanud tühikut uuesti [SEAL SOUNDS] Programm töötab endiselt. Sest seal on see teine ​​skript mis ütleb, igavesti teha järgmist. Kui summutatud muutuja võrdub zero-- nii et kui sa ei ole vaigistatud on logic-- kui see on vale või ei, siis Heli, sest sa ei ole vaigistatud. Sa peaksid Heli ja seejärel arvan hi hi hi kaks sekundit ja seejärel oodata, ja teha seda uuesti ja uuesti ja uuesti. Ja nii sel moel on meil teed inimesed mina-- programmidega suhelda. Ja nad ei pea olla nii kirjas kui teised. Tegelikult poking lihtsalt ringi no pun intended-- keegi kulutanud tohutult aega internetis rakendamisel PokemonGo Scratch. Ta isegi geolocates teid Cambridge'i või Allston siin. Nii et kui sa tahad näha ka, mida inimesed saab teha, on see-- väga uhke menüü. Vajuta siia. See on mind mu nooleklahve nüüd. Ma lähen pärast seda. Vajuta. Ja nüüd, kui klõpsate Pokeball. See tähendab, ma arvan, et sa oled peaks klõpsake Pokeball. Hästi. Nii et ma tegin seda. Ma ei saa minna siin. Ja see inimene rakendanud mõned rohkem PokeBalls üle siin-- kolm PokeBalls. Saadame link sellele online nii saab mängida. Aga teate seal on lihtsalt mõned põhilised ehitusplokid. Tundub palju Kasvataja, ja see on. See on muljetavaldav ja rohkem kui me oleks tavaliselt eeldada, kindlasti jaoks probleem seatud null. Ma ei tea, kui kaua see inimene veetis online. Aga see kõik on vaid loop. Seal on heli mängima. Seal on mingi loop kuulates, kas ma olen lööb üles- või allapoole nool või vasakule ja paremale, ja siis kui nii, siis see liigub see mõned pikslite arv. Ja siis, kui ma vajutan teise sprite, seal mingi kui tingimus on. Jah, see muutub liiga intensiivseks. Me läheme lõpetada. See kõik need põhilised ehitusplokid. Puuduvad teised koostisosad muu kui need, mida me vaatasime juba. Ja veel siin, las ma teen üks lõpuosas näiteid mis maalib pildi liiga mida saate teha siin. Siin on väga lihtne programm, mis lihtsalt ei see-- köha, köha, köha. Ja mis põhineb ainult sellest, mida vaatasime seni kus on selge, võimaluse parandada. See programm on õige. See köha kolm korda, mida ma ette nähtud. Aga see on halvasti rakendatud. See on halvasti projekteeritud. Miks? Jah. See ei ole silmus. Ja see ei ole nii palju et see ei ole loop, see, et seal on palju koondamine. Seal on kopeeritud ja kleebitud koodi, nii rääkida. Ja lahendus ilmselt on tõepoolest silmus. Nii et lubage mul minna ja täiustada seda. Ja ma lähen lohista neid siin. Lubage mul minna ja saada korrake plokk, muuta seda, et kolm. Ma lähen ära visata mõned nendest plokkidest. Ja märkad see on üsna intuitiivne. Sa pukseerida ja asjad tekivad ja kaovad lõpuks. Ja ma lihtsalt lohista see siia ja nüüd on mul puhtama versiooni ikka. Aga tead mis? Seal on seda võimalust nüüd abstraction-- alustada määratleda uut sõnavara et MIT ei osatud ette näha. Seal on oodata ja korrata ja igavesti ja kui, aga mis siis, kui ma tahan tutvustada Sõna köha plokk? Mis siis, kui ma tahan pusletükk mille eesmärk elus on köha? Noh, vaatame seda versiooni Siit võivad mis Tegin järgmiselt. Maagiliselt, olen loonud see pusletükk siin mis Scratch võimaldab teil teha. Ja tõepoolest C ja Python ja JavaScript on läheb võimaldab teil teha seda nii hästi. Saate luua oma kohandatud tükki, et te helistate, mida tahad. Sel juhul köha tunneb nagu mõistliku definitsiooni. Ja siis need tükid alla Siin saab määrata, mida see tähendab. Ma lohistada alates See palett siin-- rohkem blocks-- see suur lilla plokk, kus ma kirjutada köha nagu nimigi minu uus puzzle tükk. Ja siis ma räägin igal ajal kasutaja nimetab seda uut köha pusletükk, teha sõnaõigust ja ootama. Ja nii siin minu korrata blokaad, Ma lihtsalt köha kolm korda. Ja ma väidan, eriti Kui nüüd peidate selle detail. Keda huvitab, kuidas köha rakendatakse? Kõik ma hoolin kui programmeerija, et ma saan köha. Mind ei huvita, kuidas öelda ellu. Ma lihtsalt hoolitseda, et kass saab midagi öelda. Ma ei abstraktne ära, et detail ja ainult keskenduda sellele, mis ekraanil näidatakse siin. Aga ma ei saa seda ühe sammu edasi. Pange tähele, et siin on mul rakendanud loop kolm korda. Aga mis siis, kui selle asemel ma haarata selle versiooni? Ja mis siis, kui selle asemel selles versioonis siin Ma muudan pusletükk võtta argument ja sisendi juurde ise? Ja et sisend võib olla number nagu kolm. Nüüd, kui ma kirjutan programmi ja ma tahan, et kass köha, Ma ei saa tegelikult öelda puzzle panema mitu korda köha, sest allosas siin Kasvataja versioon Neid kohandatud puzzle tükki laseb mul täpsustada, et köha tegelikult kulub input-- võtab argumendiks niimoodi. Ja teate mis? Võib-olla ma mõistan, oota üks hetk. Köha on same-- see on põhimõtteliselt sama mõte nagu aevastamine. See on lihtsalt teistsugune Sõna ekraanil. Ma ei abstraktne ära edasi ja rakendada see lõplik versioon köha, mis esmapilgul on nii rohkem keeruline vaadates. Aga teate, mida ma olen teinud. Mul on nüüd generalized-- genericized really-- see pusletükk mida nimetatakse öelda sõna n korda. Ja nüüd on mul kaks uut puzzle tükki siin määratleda köha n korda. Ja mida see köha funktsioon teeb? Mida minu kohandatud pusletükk teha? See lihtsalt nõuab ütleme blokaad, kulgeb sõna ma tahan öelda, kulgeb arvu kordi ma tahan öelda. Sest nüüd ma saan rakendada aevastama lihtsalt öeldes achoo, sel juhul mõned arv kordi. Ja nii ma kihilisus ja kihistumist. Ja jälle, võti ei ole siin kuidas ma ellu, kuid asjaolu, et kui ma lihtsalt sõna otseses mõttes liikuda need ära ekraani, vaata kui lihtne, kui ei ole päris minu programm näeb nüüd välja. Sest see, mida ta ütleb, ma olen ammutatud ära selle, mis on sees, et musta kasti. see juhtub olema lilla kast siin, aga ma olen takistatud ära mis sees sest ma ei hooli, kuidas see toimib. Ma lihtsalt hoolivad nüüd, et see toimib. Ja tõepoolest, on probleem seatud null, see on täpselt selline kihilisus ideede sa tulen on võimalus uurida. See on täpselt see võimalus kohaldada probleemilahenduse tehnikad, mida on ilmselt võõras keskkonnas. Ja kas olete saa programmeerida enne või programmeeritud enne, leiad, et seal on natuke midagi selles keskkonnas kõigile. Ja probleem seatud üks nädal aega, saadame üle läinud, keskendudes kõrgemal tasemel keeles nimetatakse C- või pigem madalam tasandil keeles nimetatakse C-, mis on isegi rohkem võimas, kuigi see on veidi segasena esimesel pilgul. Ja siis saad aru ühe tänapäeva TL: DR, et see probleem seatud on lühem akna aega kui tulevased, lihtsalt sest siis peaks arvates on üsna kättesaadav. Ja mitte muretseda, kui lisada klass hilja. Me tegeleda, et enne pikk. Ja enne kui me peatada oma kook, olgem lõpeta vaid kahe minuti ilme kell, mis ootab teid siin CS50. [MUSIC MÄNGIB] Hästi. Ongi CS50. Me näeme varsti. Kook on nüüd teeninud. [MUSIC MÄNGIB] SPEAKER 17: Kas te olete kuulnud ning võetavale, Chief? SPEAKER 18: Võibolla seal rohkem kapoti alla.