[GROJA MUZIKA] Tai CS50-- Harvardo Universiteto Įvadas į intelektinės įmonės kompiuterių mokslo ir programavimo menas. Ir mano vardas yra Davidas Malan ir Aš tik galvoju, kad šis rytas, tai buvo nuostabiai 20 metų šiandien nes aš paskutinį kartą sėdėjo kur jus vaikinai tai daro dabar. Tai buvo 1996. Buvau antrakursis, ir aš buvo atsižvelgiant CS50 už labai pirmą kartą. Ir aš net ne Dotarłeś iki nervas jį priimti save pirmakursis metų iš dalies dėl laiko. Kompiuterių mokslas man buvo lyg, meh. Buvau Geek tiek auga aukštyn, bet aš tikrai ne turite kokių nors intelektinės domėjimasis, kas atrodė tiesiog būti visa krūva žmonės programavimo visą laiką. Ir aš buvau išsigandęs, kad būtų sąžiningas. Žinoma, ir kompiuterių mokslas daugiau paprastai turėjo ir tam tikru mastu, dar šį lauką reputaciją saugokitės, jei tik dėl to, kad daugelis iš mūsų yra susipažinę su juo ir nežinote apie jį. Ir tai tikrai nebuvo, kol aš pirko Į šią klasę, kad antrakursis fall-- ir net tada, aš tik mokosi nes professor-- vienas iš mano pirmųjų mentorių Brian Kernighan dabar Princeton-- leido man imtis klasės kamuolį nepavyks. Ir iš tiesų, tai kodėl šiandien mes leidžiame ir skatinti studentus imtis šioje klasėje sėdi / unsat. Ir tik tada, tokiu pabaiga semestro aš suprantame, kaip, Oho, tai nebuvo toks nepažįstamas laukas. Iš tiesų, tai buvo labai suteikiančio lauką, ir daugiau intriguojančiai, ypač vėliau, kaip aš paėmė kursai Dramatiški menai 101 ir Lotynų A ir tada galiausiai grad mokyklos archeologija, aš tikrai pradeda matyti Įsiskverbimo šioje srityje, kompiuterio mokslas, su humanitarinių, Gamtos mokslai, menai, medicina, ir panašiai. Ir taip tai kas tik tiek tvarkingas apie kompiuterių mokslo galiausiai, kaip mes tikimės, kad jūs see-- yra jos taikymas šių kitose srityse, ir kaip jūs galite imtis kai kurių šiandien ir semestro idėjų ir praktinių įgūdžių atgal į savo domeną, ir iš tikrųjų pažintį su šiuo sankryžą iš laisvųjų menų ir mokslų. Taigi 73% iš jūsų, jei paskutinis metus yra kokių nors požymių, niekada ėmėsi CS kursą anksčiau. Taigi, jei, kaip ir aš, esate jausmas truputį bijo, arba atvirai nesate tikrai, kodėl jūs net ir čia. Galbūt jūs tiesiog po kai draugai per į Sanders dabar. Štai visiškai gerai. Čia tikslas yra kablys jūs ir nuraminti jus kad jei atrodo, kad kairę ir į dešinę, jūs ketinate pamatyti klasiokai su kaip mažai arba daug patirties kad tu gali turėti. Ir iš tiesų, mes pasidalinti Tam tikri statistiniai vėliau šiandien kaip į ką demografija klasės paprastai atrodyti. Ir kaip pridūrė reassurance-- ir to mes do reiškia, nes aš perėmė žinoma Keletą metų ago-- į Kursas anketa programa yra this-- kad tai, ką galiausiai klausimai Šio kurso nėra tiek daug, jei jūs galų iki lyginant su savo bendraklasiais, bet kur 11 savaitę, kad galutinis semestrą, galų gale lyginant su savimi į savaitę 0, kuris yra kur mes esame šiandien. Ir tai, ką aš supratau, visi prieš tuos metus. Ir aš žinau, daug klases tai sakau, bet tai ypač aktualu kompiuterių mokslo. Tuo dienos pabaigoje, šis laukas yra susipažinę, nes jis buvo man ir gali būti jums, tai tikrai tik apie problemų sprendimo. Ir kaip toks, jis turi tai taikymas gauti kitose srityse. Ir iš tiesų, jei mes bandėme distiliuoti, ką tai reiškia, tai problemų sprendimas savo esme, aš Manyti. Yra input-- tiek kokia ji yra ta, kad jūs bandote išspręsti. Yra išėjimas, kuris yra tikiuosi sprendimas šią problemą. Ir tada, kaip mes norėtume pasakyti kompiuterių mokslo, ten tai juoda langelį viduryje, kad jūs nebūtinai turi rūpintis, kaip ji veikia. Jūs pats galiausiai galėtų įgyvendinti tai, kas toje dėžėje. Tačiau šiandienos reikmėms ir daugiau apskritai gyvenime, viskas, ko jums rūpi yra tai, kad šios problemos gauti išspręsta. O ką šis kursas yra galiausiai apie tiria susikirtimo Šie įėjimai ir išėjimai, ir šių vadinamųjų algoritmai, kaip ir mes netrukus pamatysite, kad įgyvendinti tai, kas yra po ten, gaubtas. Tačiau šie įėjimai ir jų outputs-- ką tai iš tikrųjų reiškia? Na, bent dienos pabaigoje, turime kai pateikiant informaciją būdas. Tai ypač pasakytina į kompiuterį, kuris, kaip išgalvotas ir sudėtingas, nes gali atrodyti, yra gana kvailas prietaisas. Tai užtrunka electricity-- ar iš kabelinės ar baterija kaip input-- ir tada ji gamina kai preprogramed atsakymai ekrane. Bet kaip mes gauti iš pradėti ten baigti? Na, o kas problema, kurią reikia išspręsti? Na, gal mes galime, ne bet kokio semestro pradžia, bandyti imtis lankomumas patalpoje panašaus į tai. Taigi, aš galėtų padaryti kaip vienas, du, trys. O gal, jei aš tai padariau rūšiuoti sekti iš myself-- sekti Quake Galėčiau greitai paleisti iš rankų. Taigi, aš gali tiesiog padaryti maišos marks-- vieną asmuo, dviejų, trijų, keturių, penkių, šešių, septyni, aštuoni. Ir mums visiems tikriausiai tai padarysite, ar ant rankų arba ant popieriaus lapo. Ir iš tikrųjų tai yra tik kažkas vadinamas Vienetinis notation-- kur, jei turite tik vieną raidę Jūsų abėcėlės, vienos ar maišos ženklas šiuo atveju, už kiekvieną įvesties norite skaičiuoti, jums reikia pribaigti vieną iš šių letters-- vieną iš šių ženklų. Gerai. Tai viskas gerai, ir gera, ir ne visi, kad sudėtinga. Tačiau kompiuterius ne visi kad daug sudėtinga. Iš tiesų, dauguma iš jūsų tikriausiai žinoti, net jei jūs tikrai ne laikoma, ką tai reiškia, kad kompiuteriai tik suprasti nulius ir ones-- vadinamosios dvejetainis sistemos. Mes, žmonės, priešingai, yra taip daug sudėtingas tiek kaip mes suprantame nulių per devynetų. Bet net jei dvejetainis yra, ne pirmas žvilgsnio, ne visi, kad pažįstamas, paaiškėja, kad tai kaip sistemų ir idėjų, kad mes jau žinome. Taigi, pavyzdžiui, kad tai. Tai tik simboliai, seka. Ir visi jūs, kai žvelgdamas į jį, ko gero manau 123-- nieko tikrai įdomu ten. Bet kodėl tai šis skaičius 123? Tai yra tik molio ant screen-- vos modeliai kad kas nors galėjo tempti arba įvedėte. Bet jei jūs panašus į mane, jūs turbūt prisimins iš pradinėje mokykloje kad yra tarsi čia stulpeliai ar vietas. Yra vienas, vieta ir Dešimt vieta ir šimto vieta. Ir todėl, kad tai yra 123 ir ne tik iš trijų simbolių modelis yra todėl, kad, žinoma, jei mes turi vieną šimtų vietoje, Jūs darote 100 kartų vieno matematikos, ir tada du iš dešimties vietą. Taigi, kad 10 kartų 2, ir tada trys Viena vieta ir tai 1 kartų 3. Ir kai jūs pridėti visi tie aukštyn, iš Žinoma, jūs gaunate 100 + 20 plius 3. Taigi mes pradėjome tik su modelio iš symbols-- žinutę alphabet-- bet tada mes priskirti reikšmę į ji būdu iš šių stulpelių. Na, paaiškėja, kad kompiuteriai yra tikrai ne visa tai skiriasi nuo jūsų ir manęs. Bet vietoj to, naudojant galių 10, taip speak-- 1, 10, 100, 1000, 10.000 vieta ir tt forth-- jie iš tikrųjų tiesiog naudokite įgaliojimus 2-- taip vienas, 2, 4, ir tada jei mes įdėti daugiau skaitmenų, 8, 16, 32, 64, 128, ir taip toliau. Ir todėl tai yra kaip kompiuteris reikštų skaičių 0, tiesiog, kaip mes žmones. 0, 0, 0-- ir jūs greičiausiai gali atspėti kas modelis nulių ir, jei kompiuteris gali tik kalbėti 0 arba 1--, ką modelis ketina atstovauti Skaičių mes, žmonės žino, kaip 1? Yeah-- 0, 0, 1. Gerai. Taigi 0, 0, 1, kaip mes atstovaujame 1, todėl jums gali būti linkusios tada atstovauti skaičių 2, jei turite keturių vieta ir du vieta kaip vienoje vietoje, galima sakyti, gerai, jei mes turėjo 1 vienerių vietą, ir dabar mes norime skaičiuoti iki 2, galbūt tai padaryti ir palikti, kad tai yra lygus nuliui. Bet, žinoma, tai nėra kaip dešimtainis sistema veikia arba. Jeigu jūs įtraukėte skaitmenį į abiejų šių stulpelių, jūs turite padaryti aritmetiką. Taigi, ką aš numeris netyčia tiesiog atstovauti? Taigi, tai 3, nes 2 kartus 1 plius 1 kartų 1, žinoma, suteikia mums tris. Taigi tai būtų du. Bitų tarsi salto, taip sakant, kaip 0 tampa viena, panašiai kaip 9 vaidmenis daugiau ir tampa 0 nešiodami 1 d. Tai tada būtų trijų žinoma. Four-- kitą įdomų dalyką atsitinka, kur tie paristi ir nešiodami 1, taip sakant. Todėl tai, žinoma, yra 4. Bet jei jūs greitai pirmyn dabar kas didžiausias skaičius vyksta būti, kad kompiuteris gali atstovauti? Taigi tai tik septyni, šiuo atveju, tiesa? Kadangi jūs turite vieną iš keturių, tik viena iš dviejų, tik viena iš pavaizduoto. Štai 4 plius 2 plius 1. Taigi, kad suteikia jums septyni. Ir iš tiesų, tai būtų atrodyti iš pirmo žvilgsnio kad kompiuteriai gali tikėtis yra ne didesnė nei šis. Bet tai, žinoma, yra ne teisinga. Ką mes, žmonės daro, kai norime skaičiuoti didesnės nei kaip 999? Išgerkite vieną ir tik pridėti ketvirtu skaitmeniu, į kairę. Ir taip iš tikrųjų mes galime. Mes gali turėti aštuonis ųjų vieta ir 16 vietą, ir 32 vieta, 64, 128-- ir jūs gali tiesiog laikyti vyksta iki begalybės. Todėl šie nuliai ir ones-- vadinamasis dvejetainis system-- yra tai, ką kompiuteris mokslininkas būtų paprastai vadina šiek tiek, ar dvejetainis skaitmuo. Bet dabar, kaip mes gauti iš koncepcija, arba šių dalykų grafika realų kompiuterį? Mes, atrodo, praleidžiant žingsnį čia. Na, tik įėjimas pabaigoje dienos, kad mano nešiojamas čia yra šis srautas elektros energijos. Net jei tai buvo seniai laikas nuo kada galvojote apie arba niekada maniau apie kaip elektros darbai, ten elektronai teka arba užduotis, ir kad mano natūra įėjimo. Taigi, jei tai visi, kad mes gauti kaip įvesties čia ką mes galime padaryti su šia informacija? Na, mes galime galvoti apie nulio tik elektros energijos nebuvimas. Nieko nėra flowinw, nieko nėra juda, niekas nevyksta. Tai tik numatytasis state-- nuliui. Bet jei yra elektra teka, kodėl ne mes tiesiog savavališkai, bet ir visame pasaulyje nuosekliai, skambinkite ta viena. Taigi tiesiog neturi jokios galios, turime nulinį, YES galią, turime one-- jokios galios, YES galią. Ir tokiu būdu, naudojant kažką kietesnis ar elektroninis mes pradedame įgyvendinti šią sąvoką kažkas arba yra vienas ar nulis. Iš tiesų, mes galime tiesiog padaryk tai čia. Taigi čia, aš turiu ne tris, bet aštuoni lemputes, kurių kiekvienas turi savo jungiklį. Ir taip, jei aš norėjau atstovauti skaičius septyni čia Galiu įjungti šių trijų lempučių. Ir iš tiesų, viduje Mano kompiuteris yra milijonai, milijardus dalykų, kurie tiesiog mažesnis nei, kad, vadinami tranzistorių, jungikliai, kad jūs tiesiog įjungti ir išjungti. Taigi jie big-- palyginti big-- jungikliai viduje mano laptop-- yra daug, daug, daug, daug daugiau jungikliai. Bet visi jie yra būtent that-- pasukite kažką, pasukite kažką išjungti. Ir kaip, pavyzdžiui, kompiuteris gali atstovauja, su tais milijonais ar milijardais tranzistorių, daug ir daug nulių ir. Ir ten kitos įrangos dar, kad leidžia saugoti informaciją ilgalaikis, taip, kad, kai jūs traukti PLUG, jūs neturite prarasti. Bet tai pasakojimas kitą dieną. Taigi, ką mes galime padaryti su šiais bitai? Gali mes tiesiog imtis slėgis išjungti me-- gali kas nors nori ateiti čia ir pasiūlyti iki demo? Mačiau šį ranką pirmas. Koks tavo vardas? MADAY: Maday. DAVID Malan: Maday, nagi iki. Malonu susipažinti. MADAY: Nice to meet jums. DAVID Malan: Ateik šį būdą. Aš ne iš lūpų tave. Gerai. Taigi čia mes turime, notice-- vieną, two-- mes redaguoti, kad out-- vienas, du, keturi, aštuonių, 16, 32, 64, 128. Tai sąmoningas. Yra aštuoni bitai here-- dvejetainis digits-- nulių ir. Ir šiek tiek yra naudinga vienetas measure-- ne taip naudinga matavimo vienetas ant savaime. Paprastai norite bent aštuonios iš šių dalykų, dar žinoma kaip baitas. Taigi mes turime bitai baitas čia. Taigi, jei mes norėjome iššūkis jums su, Pavyzdžiui, išdėstant, dvejetainiu, ši vertė here-- 42. Norite pažvelgti, kad Pabandyti? MADAY: [NESIGIRDI]. DAVID Malan: Taip, tik stumti mažai balti jungikliai priekyje. Ir jūs norite rašybos iš 42, o iki postą tai CS50 stresas kamuolys, jei jūs gaunate tai. Gerai. Taigi jūs turite 32. Mes ketiname reikia 42. Štai aštuoni, todėl, kad tai 40. Ir excellent-- labai gražiai padaryta. Ačiū. [Plojimai] Gerai. Taigi, mes turime dar vieną streso kamuolys. Leiskite tai padaryti dar kartą, jei mes gali. Vienas kitas savanoris? Nemokama streso kamuolys, nemokama streso kamuoliukas. GERAI. Čionai centru, Ar norite nusileisti? Gerai. Aš žinau. Čia mes eiti. Taigi skaičiai here-- ateiti žemyn. Koks tavo vardas? DAVEY: Deivis. DAVID Malan: Deivis. GERAI. Nagi aukštyn, Davey. Malonu susipažinti. Ir ką mes ketiname turėti tave spell-- jei galėtumėte svyruos ten tik vieną moment-- yra numeris 50. Bet, bet, bet bet, bet, tai yra pradinėje mokykloje magnetai priežasties. Just got šiek tiek sunkiau, viskas gerai? Yra dar aštuoni. Gerai. Taigi, ką mes turime ten? Mes turime 32. Gražus. 32 plius 16 suteikia mums 48-- taip arti. Ir nuostabu. Sveikiname Davey taip pat. [Plojimai] Gerai. Taigi, mes galime tai padaryti visą dieną, ir jis neturi gauti visi, kad daug daugiau įdomus ir sunkiau. Bet tai tikrai point-- kaip gana paprasta ji yra, tuo dienos pabaigoje, koks kompiuteris saugoti informaciją, saugoti įėjimai ir galiausiai saugoti arba atstovauti tuos išėjimus. Tačiau vien skaičiai nėra visi, kad įdomus. Taigi žmonėms, prieš keletą metų, nusprendė, žinote, ką? Būtų malonu, jei kompiuteriai buvo ne tik skaičiuotuvų aritmetika operacijas, tačiau iš tiesų gali daryti tokius dalykus kaip tekstų apdorojimo arba siųsti arba daugiau modernių įsikūnijimai Šių technologijų rūšių. Ir taip pasaulis nusprendė savavališkai, tačiau visuotinai, kad jei norite išsaugoti kapitalą raidė kompiuteryje, žinote, ką? Tegul tik visi sutinka saugoti kai nuliai ir ones-- modelis bits--, kad galiausiai atstovauja dešimtainį skaičių 65. Mes tiesiog visi sutinka, kad. 66 reikštų B, 67 reikštų C, ir ten kekių kitų modelių nulių ir ar pagrindinės numeriai, kad sudarytų kitos raidės vietoje. Taigi, jei jūs rūšies psichikos įsisavinti tai akimirkai, Aš sąmoningai supakuoti per Aš, čia H 72 ir I 73. Jei kompiuteris tada, kontekste tekstų apdorojimo programa arba elektroniniu paštu, atskleidė po kapotu turėti Šie bits-- modelio modeliai Bitų atstovaujančių 72, tada 73, tada 33-- kas gali tai rašybos toje programoje? Taigi Sveiki, ir tada kažkas. Mes nebūtinai žinau, bet iš tikrųjų 33-- ne grafike earlier-- buvo tiesiog šauktukas. Taigi 72 buvo O, 73 yra aš, 33 nutinka Būti šauktukas dar. Bet tai viskas gerai ir gerai, ir iš tikrųjų šiandien, o ne tiesiog naudokite septynis ar aštuonis bitai, dėka kažką vadinamas "Unicode", o ne ASCII atgal per dieną, mes iš tikrųjų gali kelti dar daugiau Įdomios simbolių ne tik tai originalus Anglų šališkas raides. Bet mes taip pat galime atstovauti net tvarkingesniai dalykų, pavyzdžiui, spalvų. Jeigu jūs kada nors girdėjote akronimas RGB, raudona, žalia, mėlyna, kad tiesiog reiškia, kad kompiuterio paprastai naudoja tris rinkinius bits-- kai bitų skaičius, kad atstovauti skaičius už kiek raudona norite, Kitas bitai rinkinys kiek žalia norite, ir dar vienas komplektas numeris kiek mėlyna norite. Taigi didelis skaičius reiškia daug raudona, nedidelis skaičius reiškia ne raudona. Ir taip tai yra natūra viduryje vertės čia. Taigi man kai raudona, duok man kai žalia, ir duok man šiek tiek mėlyna spalva. Ir jei jūs sumaišysite šiuos tris atspalvius spalvos kartu, šiuo atveju, jūs gaunate šį Tamsus atspalvis geltonos arba rudos spalvos. Bet, kad aštuonių modelis plius aštuoni plius eight-- taip 24 bits-- kairės į dešinę, yra, kaip kompiuteris reikštų, kad tam tikros spalvos. Dabar tai tik taškas ekrane. Jei pažvelgti tikrai arti prie televizoriaus savo kompiuteris, pamatysite taškus arba taškų. Ir jei jūs turite visą tinklelį taškų, horizontaliai ir vertikaliai, turite vaizdus. Ir tada, jei vartojate vaizdą ir tada plauti parodyti sau kitą vaizdą, kita įvaizdis, kitą vaizdą, kita vaizdo, tikrai greitai, jūs, žinoma, turime filmus. Ir taip pastebėti, kur pradėjome. Mes pradėjome su šių nulių ir. Dirbome iš ten į dešimtainį numeriai, kaip mes juos atstovauti. Dabar mes turime abėcėlės raides. Bet kitais atvejais laukti, mes galime naudoti keletas daugiau bitų ir atstovauja spalvos. Kai tik jūs turite gebėjimas atstovauti spalvas, Jūs turite galimybę atstovauti nuotraukos ir Animacinius Gif ir kiti tokie rašmenys ekrane. Ir, kai jūs turite visa krūva vaizdai skraido žmogaus vienu metu, atrodo, kad kino filmų, ir taip gausite filmai taip pat. Taigi, naudojant šių labai paprasti primityvai padaryti mes turėti atstovavimo būdas Be to, visi iš šių laikmenų formų. Ir mes vėl išgaunama ir vėl ir vėl, kol mes gauti iš žemiausio lygio Šis aukščiausio lygio. Taigi, kad suteikia mums tai Bendra idėja abstrakcijos. Bet mes pradėjome čia. Čia dabar, mes galime atstovauja kompiuterio Mūsų įėjimai su nulių ir, Mūsų išėjimai į nulių ir, bet tai, kas vyksta, esančių dėžutės viduje? Štai kur kompiuteris Mokslas gauna įdomu. Štai kur jūs iš tikrųjų pareikšti savo pačių protai padengti, siekiant išspręsti problemas. Dabar mes galime numatyti, nes poilsio semestro, taip. Aš žinau, kaip dvejetainiai darbus. Aš atsimenu, kaip ASCII arba Unicode-- kartografavimo į letters-- darbus. Ir tai tikrai stovi samprotauti, kad mes gali atstovauti raudona ir žalia ir mėlyna ir atstovauti multimedia taip pat. Bet tai yra įdomių dalykų. Tai, ką daro ką nors pajėgi spręsti problemas. Ir vienas iš tokių problemų mums patinka daryti, tiesą sakant, imasi lankomumą, arba Tokiu būdu pagal algoritmą. Ir vėl, galėčiau tai padaryti. Galiu padaryti vienas, du, trys, keturi penki, šeši, septyni, aštuoni devyni. Ir aš galėčiau ją parašyti žemyn sekti jį. Bet tai tik, kaip aš norėčiau atstovauja informaciją. Arba aš galėčiau padaryti tai faster-- dviejų, keturių, šešių, aštuonių, dešimt, 12, 14, 16, 18, 20, 22-- jis jaučiasi du kartus taip greitai, bet ji vis dar ketina imtis visai daug laiko. Bet it turns out, jei mes sverto dar dar resource-- Ir iš tiesų kompiuteriai šių dienų turi daug procesorių ar smegenis. Pasirodo, kompiuteriai gali daryti daug dalykų vienu metu, ir iš tiesų mes, šiame kambaryje, gali atstovauti būtent tai. Taigi tai šiek tiek socialiai nepatogi, bet jei būtų humoras mane tik už trijų etapų procesą, tegul man užduoti visiems savo vietoje ten tiesiog atsistoti už momentą. Atsistok. Taigi manau sau, skaičius one-- todėl kiekvienas šiame kambaryje, išskyrus žmones, kurie padarė ne įpareigoja, galvojate numeris vienas. Taigi tai yra jūsų numeris dabar. Kad yra pirmas žingsnis, arba kaip kompiuterių mokslininkas ar programuotojas būtų paprastai padaryti, mes ketiname pradėti skaičiuoti iki nulio. Jei mažiausias skaičius galime atstovauti su šiais lemputes yra lygus nuliui, tiesiog juos paliekant visi off, aš taip pat tik pradėti skaičiuoti nuo nulis vietoj vieno. Ir taip, kad yra kas kompiuterių mokslininkai. Taigi nulis veiksmo, atsistoti ir galvoti apie numeris vienas. Kitas žingsnis yra this-- pora ne su stovintysis ir pridėti savo numerius kartu. Nuostabus. Taigi šiuo momentu, tiesiog kiekvienas dalyvaujantis galvoja skaičius 2, išskyrus vienam keista asmeniui, jeigu mes turime nelyginis skaičius kambaryje. O dabar trečias žingsnis čia vyksta būti this-- vienas iš jūsų turėtų atsisėsti. Vienas turėtumėte atsisėsti, Ir jei jūs vis dar stovi, grįžti į vienas žingsnis. Gerai. Gerai. Todėl daugiau ir daugiau žmonių Reikėtų sėdi. Atkreipkite dėmesį, kad tai paskatino loop-- kai ciklo natūra. Kai kurie iš jūsų turėtų būti nerangiai pakimba, vyksta ir atgal tarp vieno žingsnio ir du, vienas du, vienas du. Tai gerai. Mūsų pirmasis klaidą. Mes susidoroti su tuo. Gerai. Leiskite man pabandyti paskatinti dalykus kartu. Teoriškai, tik vienas žmogus stovi kaip ir visi toliau suporuoti išjungtas. Bet leiskite man pagreitinti su žmonėmis, vis dar stovi. Kas numeris jūs galvojate? 46. GERAI. Eiti į priekį ir atsisėsti. Vaikinai vis dar stovi. Kas dar stovi? Kas numeris jūs galvojate? GERAI. Taigi mes su Jumis. Gale? Kas tai? 22. Gerai kažkas iki top-- Yeah? 34. GERAI. Čionai mano right-- čia? 132, labai gražus. 22? GERAI. Ir kas dar stovi? Čia? 46, labai gražus. 72. Aš negaliu sustoti daug ilgiau. Taip? 30, gražus. Čia? 23? 23. Ir aš manau, kad kiekvienas išskyrus jus vaikinai, jokio spaudimo. O palauk. 28? Tiesiog aštuoni. GERAI. Tiesiog aštuoni. Žemyn čia? 30. 23. 24. 18. Tai pats blogiausias įgyvendinimas Šio algoritmo kada. GERAI. Taigi kas dar? Kas nors kitas? GERAI. Dar vieną. 16? GERAI. 16. Gerai. Taigi, jei aš ne praleisti bet kas akinimo čia, kai aš paspauskite Enter matysime, algoritmą, The viso žmonių Sanders. Nes vėl, tai kaip nors visiems kaip jums atsisėdo, išlaikė savo numerį išjungtas kažkas, kam nors kitam, kažkam kitam, kad teoriškai, galų gale, tik vienas nepatogios asmuo turėtų būti paliktas stovėti. Bet tai gerai. Mes pagreitino viską rankiniu būdu. Tai ypač sunku pamatyti šiame tikroje erdvėje. Ir bendras skaičius žmonių mes manome, kad yra čia yra 546. Iš viso buvau ranka pagal mokymo bičiulių, kas tai padarė senas mokyklos lėtas būdas, buvo 820. [Juokiasi] [Plojimai] Tai gerai. Taigi tikrai tada, yra šie klaidas. Ir tai gerai. Ir taip manau atgal apie tai pirmą kartą kažkas rašote nebūtinai dirbti. Tai nutiko man čia taip pat. Bet tegul dabar apsvarstyti, kaip mes galime taikyti tą pačią idėją kažką Jūs galbūt jau matęs, kuris tai senosios mokyklos technologija here-- tikrai didelis telefonų knyga. Ir manau, kad šis telefonų knygoje turi 1000 puslapių ir 1000 vardus ir numeriai abėcėlę viduje ji. Na, mes galime rūšies taikomas panašus idėja tai labai fizinių problemų, nes tik naudojant mane. Aš tiesiog rūšies apgauti nukreipdama jums visiems su daug ir daug kitu CPU arba smegenys vykdyti tam tikrą algoritmą. Bet jei tai tik tiek metai man, aš vis dar gali sverto tą pačią esmę idėjos dalijant ir užkariauja šią problemą vėl ir vėl, pagal kurią pusę jums, pusė iš jūsų, pusė iš jūsų, pusė iš jūsų, teoriškai laikomi sėdi, kol mes liko teoriškai tik su vienu asmeniu. Taigi šiuo senosios mokyklos technology-- mes ne reikia tai map-- tai senosios mokyklos technologijų, mes galime pradėti ieškoti, kad kas nors patinka Mike Smith, vieną puslapį vienu metu. Ir matau, kad ne, Mike'as čia nėra. Aš vis dar A skyriuje. Galų gale, manau, aš į B skyriuje. Ir tai algorithm-- žingsnis po žingsnio instrukcija. Pradėti pradžioje ir vieno puslapio metu, ieškoti Mike Smith. Ar tai correct-- tai algoritmu arba požiūris? Taip, tai teisinga. Jei Mike čia galiausiai Aš gausiu jį. Bet tai nėra veiksminga. Tai akivaizdžiai labai lėtai. Taigi aš galiu išnaudoti tie patys twosies požiūris. Galiu padaryti tarsi du, keturi, šeši, aštuoni, 10, 12. Tai du kartus taip greitai. Aš ruošiuosi gauti Mike greičiau, jei jis ten. Ar tai teisinga? Taip, bet aš girdėjau little-- Nr. Dabar išgirdau, Nr. Taip. Yra klaidų potencialiai. Gal Mike'as tiesiog atsitiktinai pateko įtvirtinta tarp dviejų puslapių, nes aš plaukioja per tuo metu, šis dviejų. Taigi bent jau mums reikia šiek tiek rūšies sąlyginio nustatyti. Man reikia pasakyti, ei, jei aš paspauskite asmenį, kurio pavadinimas prasideda T Vietoj to, kad S, Aš geriau dvigubai atgal bent vieną puslapį. Taigi Buggy per pirmąjį, tačiau gali būti sutvirtinti. Tačiau nė vienas iš mūsų ketinate ieškoti Mike'as Smithas per 1000 puslapio telefoną užsakyti vieną puslapį vienu metu. Kas yra normalus žmogus ruošiasi daryti? Jūs ketinate eiti į S-aisiais, jeigu jūs žinojo, kur S-aisiais. Galite eiti maždaug į vidurį arba šiek tiek iškreiptas link pabaigos. Ir žiūriu žemyn čia ir Aš M skyriuje. Bet ką žinote apie šią problemą dabar kad mes ne visada žinoti prieš su mums visiems tik skaičiuoti save analogiškai? Na, Mike'as yra aiškiai vyksta būti šiame kėlinyje knygos jei jis čia ne visi, nes tai rūšiuojamos. Ir todėl jūs galite labai dramatically-- [Kvėpavimas] Aš žinau. [Plojimai] Tai tikrai labai paprasta, jei jūs jį žemyn stuburo ten. Bet jūs galite tada mesti pusė problemos toli. Dabar aš kairėje su tuo pačiu problem-- rasite Mike Smith telefonu book-- bet dabar telefonas knyga prasideda M ir eina iki Z, bet tai perpus didelis. Bet tai, kas įspūdingas. Tiesiog kaip ir teoriškai, jums vaikinai, kai jūs visi susėdo tik pusę metu, problema gavo perpus didelis, pusė tokie dideli, vėl ir vėl. Taigi ši problema tapo ta pati problema, bet pusė didelis. Dabar tai 250 puslapis problema. Kaip tik aš suprantu, Ech, man nuobodu į T skyriuje atsitiktinai. Aš nuėjo per toli. Galiu mesti, kad pusė iš telefonų knygos svečių. Dabar, aš žemyn iki A ketvirtadalis problemą. Ir jūs galite pakartoti, pakartoti, kartokite tol, kol, teoriškai, esate liko tik vienas puslapis. Ir jei Mike tame puslapyje, Aš dabar gali išspręsti šią problemą. Bet kaip greitai aš ją išspręsti? Pirmuoju atveju, jis paėmė mane, kaip gal 1000 žingsniai rasti Mike Smith. Tai gali ėmėsi me-- Pasiėmiau telefoną knyga ir aš pradėjau ieškoti vienas puslapis vienu metu, ir Mike'as gali būti 1000 puslapiai vėliau. Antrasis metodas gal priima mane 500 žingsnių, nes aš plaukioja per dvi dienas iš eilės metu. Ir trečias požiūris, nors, tai ypač galingas. Bet tegul mano ką mes iš tikrųjų padarė su šio trečiojo požiūrio. Aš turiu ką aš kviesiu tik tai pareiškimai čia, vienu metu. Pasiimti telefono knyga. Atvira telefono knygos viduryje. Pažvelkite pavadinimų. Ir tada viskas pasidaro šiek tiek daugiau intelektualiai įdomi, jei vis dar paprasta. Jei Smithas yra tarp pavadinimai tame esamą puslapį, tada kažką daryti sąlyginai. Tai tarsi kelio šakute. Skambinkite Mike. Jei Mike tarp pavadinimų tame puslapyje, vadinamas Mike. Bet tik padaryti liniją keturių jei linija medis, jei bus, tai tiesa. Atsakymas į šį klausimą yra "taip". Else if Smith anksčiau book-- Kitaip tariant, jei aš M skyriuje ir aš ieškau, kad kas nors kairė, tada ką turėčiau daryti yra kažkas labai panašūs. Tada aš turėtų atverti į vidurį iš kairės pusės knygos. Tad į kairę, o po to grįžti į du veiksmo. Pažvelgti ten pavadinimus. Taigi, kitaip tariant, daryti tą patį, bet problema, kad buvo perpus. Jūs žinote, kas dar? Jei Smith vėliau knygoje remiantis puslapyje Žiūriu, atvira viduryje teisę pusė knygos ir tada grįžti vėl į dvi žingsnis, else-- ten ketvirtoji galimybė čia. Mike'o arba čia arba į kairę arba į dešinę, ar nėra. Ir čia mes geriau išnagrinėti šį. Ir iš tiesų, jei jūs kada nors turėjo kompiuteris tiesiog katastrofos jus, kad yra kartais, tačiau ne visada, rezultatas tik žmogaus programuotojas nėra suprasdamas, oi šaudyti, ten iš tikrųjų tai ketvirtas scenarijus. Ir jei jūs neturite rašyti kodą dirbti šį scenarijų, kartais nežinau ką kompiuteris gali padaryti. Ir iš tiesų programa gali strigti. Tačiau šiuo atveju, aš maniau apie tai ir sakiau, dar mesti, nes tai ketvirta logiška galimas scenarijus. Dabar tegul tiesiog pridėti kai žodyną, todėl mes gali pradėti išmesti aplink sąlygomis, yra kitaip gana intuityvus. Visų dalykų aš tiesiog paryškinamas geltonai čia Aš tik ketina į funkcijos ar procedūros. Jie tiesiog rūšies veiksmai. Taigi pasiimti, atvira, ieškoti ne, skambinkite, atvira, atviri, quit-- tai tik veiksmai, ar mes skambinti jiems daugiau formaliai, funkcijas. Tuo tarpu dabar geltona, Aš pabrėžė dalykus that-- tegul tiesiog pradėkite skambinti jiems sąlygas arba filialai. Tai yra sprendimų vietose, kur galite eiti šiuo keliu, tokiu būdu, ar kokios nors kitos krypties vis dar. Taigi tie bus sąlygos. O dabar tai vienas šiek tiek mėgėjas. Leiskite skambinti į šiuos klausimus Būlio išraiškos, Po kažkas su pavarde Bool. Ir Bulio logikos išraiška yra tik kažkas tai arba true arba false, taip arba ne. Taigi, tai klausimas, kurio atsakymas jums rūpi, taip, kad būtų tokios būklės, padaryti decision-- grįžti atsakymą, ir tada eiti į kairę arba į dešinę, arba kažką dar visai. Ir tada galiausiai, tai linijos here-- grįžti į dvi žingsnis, grįžti dėti two-- galėtume įgyvendinti šią idėją įvairiais būdais. Ir tada tie iš jūsų, su programavimo patirtis galėjo padaryti ar galite įsivaizduoti tai daryti kitaip. Tačiau šiandienos reikmėms, tai tik idėja, kad svarbu. Tai verčia ką mes paprastai vadiname loop-- kai ciklo natūra, nes tai kad mane kažką daryti dar kartą. Taigi dabar galime tik svarstyti kaip gerai šis algoritmas yra. Teisingai. Jei Mike knygoje, tai vienas iš tie keturi scenarios-- vėl ir vėl ir vėl, mes jį rasti. Bet kaip gera tai? Na, mes neturime būti pernelyg formalus čia. Bet tegul tiesiog sklypas kažkas, X ir Y, gauti iš šios problemos formos pojūtis. Ant X ašies čia mano problema dydis. Ir jie Y ašis čia bus laikas išspręsti. Taigi gal tai puslapių skaičius. Gal tai sekundžių arba puslapis turns-- whatever. Tačiau norite skaičiuoti yra ką ši nuotrauka atstovaus. Ir tai pirmas algoritmas, aš ruošiuosi apibūdinti kaip tik tiesia linija. Jei yra n puslapių telefonų knyga, tada jis gali pasiimti mane, nes daugelis N žingsnių rasti Mike. Jei "Verizon arba telefonas įmonė prideda dar vieną puslapį Kitąmet ji gali imtis man dar vienas step-- dar vienas vienetas metu rasti Mike. Taigi ten tik tai vienas prie vieno santykiu. Tai tiesės. Tuo tarpu, kad antrasis algorithm-- jei aš vyksta du per LAIKĄ_ dviejų, keturi, šeši, aštuoni, ar double-- vyksta per puslapius du kartus vienu metu, du vienu metu, jis vis dar tiesia linija. Šiuo metu yra vienas, kad dviejų santykis, bet tik šiek tiek mažesnis. Taigi, jei ten tai daug puslapių grafike čia, geltona, kad gali užtrukti man tai daug priemonių ar sekundžių, kitaip ji ketina imtis mane dvigubai daugiau ant raudono linija. Bet žalia linija yra tikroji Takeaway. Tai yra tai, ką mes paprastai skambinti logorithm-- Prisijungti n, kur n yra puslapių skaičius. Bet tai forma, kad klausimai šiandien, nes mes neturime net galvoti apie braižymo taškų. Pagalvokite apie ekstremalių scenarijų. Tarkime, "Verizon" rytoj dvigubai puslapių skaičius toje telefonų knygoje, nuo 1000 iki 2000. Pirmoje algoritmu, aš gali gaišti papildomo 1000 žingsniai ieško Mike, tik todėl, kad "Verizon dvigubai knygos dydį. Antrasis algorithm-- ji gali imtis man papildomą 500 žingsnių. 1000 daugiau puslapių, aš einu du per LAIKĄ_ 500 daugiau priemonių, kad būtų rasti Mike. Bet kad trečiųjų algoritmas rūšies stebuklinga. "Verizon" padvigubina skaičių Puslapių iš 1,000 iki 2,000, bet kiek daugiau veiksmų ar jis mane ieškoti Mike? Tai tik vienas, nes aš galiu tik ašara telefonų knyga dar kartą nuo 2000 psl problemos A 1000 puslapis problema, ir voila. Aš ėmėsi masiškai Užkandote iš jo. Ir jei jūs einate tikrai ekstremalios, Tarkime, kad telefonų knygoje bendrovė turėjo kažką kvailai kaip 4 mlrd puslapis telefonų knyga. Na, kiek žingsnių jis gali imtis rasti Mike Smith į 4 mlrd puslapis telefonų knyga? Tai didelis skaičius, bet tik už 4 mlrd 2 mlrd 1 mlrd 500 mln 250 million-- dar skamba kaip didelis skaičius, bet aš labai greitai gauti mažesnes reikšmes. Ir iš tiesų, jei aš matematikos Gerai, galiu padalinti tik 4 mlrd iki maždaug 32 kartų, kol Aš kibti į tik vieną. Taigi, jei tas telefonas knyga buvo 4 milijardo puslapių ilgio, ne big deal. Per kelias sekundes, gal 32 sekundžių, galėčiau padalinti per pusę ir galiausiai susirasti Mike arba daryti išvadą, kad jis nėra ten. Ir tai Kurių esmė algorithm-- gerą algoritmą. Ir tai vienas iš tikslai, kaip šią klasę, bando išsiaiškinti, kaip aš išspręsti šią problemą ne tik teisingai, kaip aš visada žinojau, kaip tai padaryti vieną puslapis ne LAIKĄ_ bet teisingai ir gerai. Kaip man sukurti gera problemų sprendimai? Taigi leiskite šiek tiek laiko čia ir duoti jums jausmą dabar iš CS50 kursas itself-- pristatyti keletą žinoma personalo narių. Prieš 2:00, mes imtis trumpos pertraukos taip, kad tiems iš jūsų, kurie apsipirkti galima antis iš ir imtis pažvelgti kitu klasės ir žiūrėti į šią internetinę poilsio. Bet dabar, leiskite man pristatyti CS50, pati klasė, ir ypač tai, kas nauja. Taigi praėjusį pavasarį mes praleido gana LAIKĄ_ tiek Žinoma, darbuotojai ir I-- galvoju apie tai, kas yra mes norime CS50 būti, ir grįžta į pirmą principai, taip sakant, apsvarstyti, kur yra mes norime Šis kursas atrodyti ir būti kaip savo studentams. Ir todėl jūs pamatysite problemos nustatyti nulį, taip pat, kvietimą pažvelgti, kad išvaizdą URL kurioje apibendrinama kai motyvų, kodėl charakteristikų rudenį 2016. Taigi, kaip jums gali būti surinkta nuo Lt: DR prospektas, Mokymo programa šiandien taip pat iš kursas katalogas, šiemet CS50, jūs tikėtis tik dalyvauti today-- Taigi darbą gerai done-- ir paskutinis paskaita lapkričio 21 dieną. Ir jūs laukiami bet nesitikima dalyvauti tuose paskaitas centru, nes tai, ką mes darome Šiemet, šaudymo realiu laiku kurso materialinės. Taigi viskas liks srovės ir įtraukti kaip geriausia, ką can-- dabartinius įvykius ir pokalbius, kurie žmonės galėtų būti, turintys pramonėje į pasaulis, bet padaryti, kad medžiaga prieinamas, kaip rezultatas, net earlier-- visiškai su visateksčius nuorašai ir paieškai ir nuorodos į kitus išteklius. Ir iš tiesų, mes buvome teigdamas, tam tikrą laiką ir mes dabar manau, kad tai, kad mes galime sukurti, skaitmeniniu, daugiau svaiginančius, labiau įtikinama mokymosi patirtį, o ne rinkimu čia kai 23 kartus asmeniškai, klausos kažkas panašaus man tiesiog kalbėti apie kompiuterių mokslo, o ne sugriebimo žiedas aktyviai. Taigi jūs pamatysite aikštyno mokymo programos iš semestro eskizas čia kartu su kai paskaitos būti filmuojami, į kurį esate Sveiki, bet nesitikima, ir kada jie bus bus išleistas kurso tinklalapyje. Ir tai, ką mes darysime čia Trečiadieniais, pradedant kitą savaitę, yra daug daugiau artimai, tik su tie žmonės, kurie nori dalyvauti, yra vadinamasis pėsčiomis per, kur aš ir kurso galvutės tikrai, kad viskas šiek tiek daugiau intymus žemyn čia, orkestrui skyriuje, dar šiek technologijos ir vaikščioti per einamosios savaitės problema rinkinys, ir siūlome Jums particularly-- jei tarp tie mažiau comfortable-- juolab patarimai, kurie galbūt nori ar reikia savaitės iššūkis. Ir panašiai, ir tiems, kurie negali dalyvauti tiems, asmeniškai, ne big deal. Bus panašiai, vadovaujama vienas kurso vyresniojo pareigūno, Zamalya, tas pats galimybė įterpti į problemą nustato patys. Problema nustato šiemet bus išleistas penktadieniais ir nebegali daryti septynių dienų, bet 10 dienų later-- sąmoningai sutampa su kiekviena problema nustatyti, kad būtų galima geriau prisitaikyti, Tikimės, atoslūgis ir srauto į studentų tvarkaraščius, ypač kai kontrolinius ar atletika ar akademikai ar extracurriculars linkę ateina ir išeina ypač vidurio semestro. Tai turėtų duoti jums šiek tiek daugiau diskreciją nuspręsti, ar jums priekinio įkelti savaitę su CS50 ar nugaros apkrova ji ant šios savaitgalį, o ne. Taigi atrodo, kad aikštyno mokymo programos čia už jos grafiką. Ir jūs pastebėsite, per viena Šiemet pokyčiai, tiems labiau susipažinę su programavimo praeityje, mes pradėsime semestrą kaip mes šiandien nulio, ypač daug dėmesio į kalbą vadinamas C, ir tada pereiti ne PHP, bet su kalba vadinama Python link semestro pabaigoje atsižvelgiant į interneto programavimo kontekste, kartu su SQL ir Javascript, HTML, CSS, ir dar daugiau. Ir atsakydamas į DUK, tai iš tikrųjų atvejis kad AP yra ne taip baisu, kaip aš kažkada maniau jis buvo, bet tai, kiek darbas kaip aš girdėjau, jis gali būti. Bet tai yra pasakyti, kad čia yra kai statistika rudenį 2015 studentų organizacijos, kuriuo horizontali mėlyna linijas atstovauti vidutinį valandų skaičių pranešė. Ir pamatysite vidutiniškai šešių iki 10 iki 12-- gal 16 ar taip ir taip toliau, bet su aukštos dispersijos turi būti aiškus. Ir taip suprantu, kad yra ne tik studentai patogesnis ir mažiau patogus, žinoma, bet atitinkama parama struktūra gauti tuos studentus per sėkmingai semestro. Iš tiesų, atsakydamas į DUK, turėtų vartojate CS50 kaip pirmaisiais metais? Absoliučiai. Ir iš tiesų, aš apgailestauju neradę savo kelią ar rado naują lauką kad pirmieji metai, taip pat. Ir jūs turėtumėte imtis CS50 su kiti kursai, tikrai kaip well-- ir bendro pobūdžio konsultacija Galėtume suteikti studentams, kad CS50 tikriausiai ne klasės ar intro klasės natūra kad jums reikia imtis su trimis kitą arba kiti keturi p-nustatyti klases. Bet jei jūs vartojate kitų dviejų p-Set klases, kažkas ir CS50, visiškai valdomas. Turėjau daug studentų į praeityje padaryta gana sėkmingai. Ir jums link, kad finišo liniją sėkmingai nėra žinoma, turi sections-- skirtingų trasos studentams mažiau patogūs, patogiau, ir kažkur tarp jų, kuriuo į aikštyno Pirmoji problema rinkinys, jums bus paprašyta apibūdinti save. Ir jei jūs esate tarp tų mažiau patogiai, tai koks dalykas kad jūs tiesiog, o žinau. Ir iš tiesų, kad manimi buvo auga demografinius į CS50 gana kelerius metus. Nuo praeitą rudenį už pavyzdžiui, 58% klasės aprašyti save tarp tų, nekomfortiška, su 9% tarp tų daugiau patogus, ir tada kiti studentai ten raudona apibūdinti save kažkur tarp. Ir pamatysite čia temas Bendra ir grafikas sekcijų, kurios visos siūlomi asmeniškai, į realiu laiku, su aikštyno nuostabi darbuotojai mokymo bičiulių ir kursų padėjėjai, kai kurie iš jų jums susitikti vos akimirką. patys skyriai, kaip pamatysite, valią būti Pirmadieniais ir antradieniais ir trečiadieniais, taip, kad leidžia jums pasinerti After patrauklus, jei to pasirinkti, per s paskaitą anksčiau šią savaitę. Ir tada darbo valandos, kurios Žinoma, su kiekvienu praėjusiais metais, iki šiol nebuvo mažiau iššūkis kursui. Ir šiais metais, mes planuojame ne tik eiti pareigas hours-- vieną vienos galimybes Pagalba studentai trečiadieniais ketvirtadieniais ir sekmadieniais, paskutinės iš minėtų būdamas projektuojant popietę sumažinti kai streso, kad visada atsiranda su vėlyvo vakaro P-settting su termino looming-- bet darbo valandomis, taip pat bus pasiūlyta pirmadieniais ir antradieniais ir Trečiadieniais ir penktadieniais ir šeštadieniais, Dėka mūsų draugais HSA. CS50 dabar turi savo erdvę studentams ir CS50 darbuotojų, ant 67 Mount Auburn Street, teisę ten Harvardo aikštėje. Už kurią vizija, kad CS50 s TFS ir CAS per savaitę, gana daug beveik visoje dienas, ten bus parama. Taigi, jei jūs turite kai kurie klausimas dėl p-rinkinys ar jaučiatės šiek tiek užblokuotas arba šiek tiek supainioti, ir gi, jūs turite valandą ar pusę tarp klasių valandą, ypač square-- galite pop ir turėti šį klausimą atsakė iš turi tą painiavą clarified-- labai daug dvasios, esate susipažinę, iš matematikos departamento savo matematikos klausimai centras, bet gana daug aplink per parą [? Gcal?], Kad mes paskelbsime internete. Apmokymai taip pat prieinami tiems, studentų, laisvai iš aikštyno savo darbuotojų, jei norite intymesnis vienas prieš vieną, ar tik du ar trys klasiokai, darbo su vienu iš kurso personalo narių. Ir iš tiesų, tai čia yra tik Kai kurie kurso personalo narių, iš kurių keletas jums patenkinti vos akimirką. Tiesą sakant, CS50 savo paties galva mokymo kolegos, ir galvos Žinoma asistentas, ir auklėtojas, gali ateiti iki, leiskite jiems pasakyti labas. [Plojimai] GARSIAKALBIS 1: [NESIGIRDI]. [Plojimai] GARSIAKALBIS 2: [NESIGIRDI]. [Plojimai] GARSIAKALBIS 3: [NESIGIRDI]. [Plojimai] DAVID Malan: Ir leidžia mums atnešti laive du iš CS50 labiausiai vyresnysis personalas, Robas ir Zamayla taip pat. [Plojimai] Iš tiesų, tiek Robas ir Zamayla buvo su mumis taip ilgai, kad galėjau eiti į CS50 archyvų ir rasti šią labai SD filmuotą medžiagą iš jų dalyvavimo pačiose etape prieš keletą metų. ROB: [NESIGIRDI]. [Plojimai] ZAMAYLA: [NESIGIRDI] [Plojimai] DAVID Malan: Ačiū. Todėl be jų komandos nariai čia, CS50 turi beveik 100 komanda darbuotojai, visi kam bus galima skyriuose ir biuro valandos ir dar daugiau. Ir kaip sako per Robas, tai svarbiausia kapitalinis remontas iš CS50 per 10 metų, kad Aš buvo [NESIGIRDI]. [NESIGIRDI] sutelktas ypač teikiant paramos struktūrą, apdailos toli Loto urmu, kad manimi buvo sukaupta per 10 metų pakartotinų pokyčiai kurso problema rinkinių. Taigi šiais metais, o ne tik klasėje, bet taip pat kurso problema formos rinkiniai, turėtumėte rasti ką būti paprastesnės, žoliapjovės, daug lengviau valdomas nei metais anksčiau, nes mes barsto kai bagažo ŠTAI sukurta pobūdžio vystosi metų po metų ir kartojate. Taigi naujas ir patobulintas prasideda šiandien. Jūs patenkinti kai daugiau Kursas darbuotojai iš į [nesigirdi] 2:30, kur mes tarnauti, kaip tradicija, tortas. Yra šiek tiek daugiau tortas nei, bet jūs Susipažinkite Erin Tobias ir kiti dar. Ir leiskite man duoti jums kelionė iki girdime nuo kai kurių kitų darbuotojų klasėje, kas laukia taip pat. Iš tiesų, mes visada prasideda CS50-ųjų semestras tai ateinantį šeštadienį, su tuo, kas vadinama CS50 Dėlionės diena. Tai neturi nieko bendra su kompiuterių mokslas savaime, bet su apie problemą sprendžiant apskritai. Ir jei taip nuspręsite dalyvauti, už kai kurių kvietimų, galbūt mačiau duris sumažėjo arba ant scenos čia, tai yra komandose galimybė dviejų ar trijų ar keturių, dalyvauti už dėlionių ir picos ir prizai ir more-- šį šeštadienį, Laukite daugiau. Rasite per, kad kiekvienas Penktadienis, prie laužo ir ledo, nėra CS50 pareikšti visa krūva studentams pietų, kad didelė klasė jaučiasi labiau intymus, ir apskritai suburti Alumni ir draugai iš pramonės kalbėti apie tai, ką jie jau buvo iki nuo studijų baigimo. Be to, šiais metais, mes inauguruoti pirmasis CS50 50 kodavimo contest-- yra viduryje semestro galimybė leisti visiems ant baziniais opt, turėti iššūkis Ratio prieš klasiokais, vėl komandose po du ar tris ar keturi, naudojant tik kad programavimas išminties, kad jūs tada pagal Jūsų diržo vos po šešių ar septynių savaites klasės ir dalyvauja šiame konkurencijos rūšies online-- jei norėtumėte patobulinti jūsų pačių įgūdžiai visas tą iššūkį daugiau. Tuo semestro pabaigos yra vadinamasis CS50 Hackathon-- galimybė, kad prasideda 7:00 PM baigiasi 7:00, ir pakeliui Yra 12 vakare valandų, kurioje pasinerti į aikštyno galutinio project-- galimybė projektuoti ir įgyvendinti dauguma nieko interesų jums su savo mokymo kolegos gaires. Maždaug 9:00 mes taip paprastai tarnauti pica, 1:00, Philippe s, o nedaugelis iš mūsų kurie vis dar miega 5:00 AM, yra maršrutinis autobusas bussed žemyn Kelias į IHOP pusryčiams. Ir tada po kelių dienų yra vadinamasis CS50 fare-- semestro parodos pabaiga šventė, tik kiek tiek daug iš CS50 studentai iš savaitę nulis visą kelią iki savaitės ir turint omenyje, kad 73% tų, klasiokai ir tavo šiemet niekada ėmėsi CS klasę anksčiau. Iš tiesų, į reemphasize kaip daug, čia yra keli veidai iš CS50 darbuotojų. GARSIAKALBIS 4: [NESIGIRDI]. GARSIAKALBIS 5: [NESIGIRDI]. GARSIAKALBIS 6: [NESIGIRDI]. GARSIAKALBIS 7: [NESIGIRDI]. GARSIAKALBIS 8: [NESIGIRDI] GARSIAKALBIS 9: [NESIGIRDI]. GARSIAKALBIS 4: [NESIGIRDI]. GARSIAKALBIS 10: [NESIGIRDI]. GARSIAKALBIS 11: [NESIGIRDI]. GARSIAKALBIS 12: [NESIGIRDI]. GARSIAKALBIS 13: [NESIGIRDI] GARSIAKALBIS 14: [NESIGIRDI]. GARSIAKALBIS 13: [NESIGIRDI]. GARSIAKALBIS 15: [NESIGIRDI] GARSIAKALBIS 16: [NESIGIRDI]. GARSIAKALBIS 11: [NESIGIRDI] GARSIAKALBIS 5: [NESIGIRDI]. DAVID Malan: Kai komandos yra patys apsipirkti klases. Bet jei tie nariai iš CS50 darbuotojų yra čia gali ateiti iki tik už momentu. CS50 s TFS ir CAS ir [? darbuotojai?] prisijungę here-- tai tik keletas iš faces-- vienas iš jų tiesiog mačiau, ir keletas other-- ir keli kiti dar. Kodėl mes einame į priekį ir leidžia vaikinai penkių minučių pertraukos. Jei reikia antis dėmesį į parduotuvė klases, tai gerai. Ir per penkias minutes, mes atnaujinti, atsižvelgiant į Scratch-- pirmo žvilgsnio Mūsų programavimo kalba, susitikti Žinoma, darbuotojai čia šiek tiek daugiau, ir sutelkti galiausiai apie problemą nustatyti nulį. Taigi, mes grįšiu po penkių minučių. [Plojimai] Gerai. Taigi mes vėl. Ir mūsų likusių laiko šiandien, tikslas yra vienodas sąlygas kalbant apie kai kurių terminų, kalbant apie keletą idėjų. Nes iš tiesų, kaip už kai topų anksčiau, ten bus daug asortimentas lygiai patirtį klasėje, kurio kai kurie studentai turi imtis tam tikrų programavimo anksčiau, kai kurie iš jų neturi. Ir taip su šio pirmojo problemos nustatyti ir šio pirmojo kalba mes turime galimybę pradėti imtis už suteiktas po šiandien kai bendra žodyną ir idėja. Ir mes tai padaryti būdu Žinoma, pirmasis languages-- Be to su C, ir Python ir JavaScript ir SQL ir HTML ir CSS, mes būsite dėmesio iš pradžių ir tik problema nustatyti nulį šiuo grafinę kalba, vadinama Nulio, sukūrė MIT Media Lab žemyn kelio, padėti studentai ir ypač vaikai išreikšti save algorithmically-- taip nuosekliau su kuo galėtume pavadinti skaičiavimo mąstymą. Ir tai naudinga kalba, nes labai greitai, kitą savaitę per vieną savaitę, mes pereiti prie labiau Tradicinis ir paslaptinga kalba vadinama C, kuris yra grynai tekstinę. Galite naudoti tik savo klaviatūrą Siekiant rašyti instrukcijas kaip šie ekrane. Bet net jei jūs niekada programavimo kalba anksčiau, Vos skaitydamas tai visi tai būtų paslaptingas, jūs tikriausiai galite spėti, kad tikriausiai spausdina Sveiki pasaulis. Bet yra daug sintaksinis važtaraščius ten. Yra keistai maišos simbolis arba maišos tegus iki viršaus. Yra kampas skliausteliuose, kai skliaustai, garbanotas petnešos, pusiau colon-- Yra tik tiek daug vaizdo sintaksė, kad patenka į kelią. Mes pradėti kursą Įbrėžimams taip gauti praeitis visi tie intelektualiai neįdomios ramiai, ir sutelkti dėmesį, o ne į idėjas. Iš tiesų, tai gali būti anksčiau. Tai, už tai, savaitę turi būti po. Tai, šis grafinis Kalba nulio, yra kaip galėtumėte įgyvendinti, kad tos pačios program-- programą, kuri Paleidus tiesiog sako hello world. Ir kas malonu apie įbrėžimams yra kad tai tik grafinis programavimas aplinka, kuri naudoja įspūdį arba blokai, kad tik susikabinti kartu jei ji daro logine prasme tai daryti. Ir su Scratch galite sukurti animacija ir interaktyvios žaidimai ir menas, ir bet daug dalykų, kad galite įsivaizduoti savo paties proto, ir juos įgyvendinti, tiesiog velkant ir numetant įspūdį. Ir iš tiesų, mes turime galimybę išreikšti kai kurie iš tų pačių idėjos kad aš tik paminėta momentas prieš į Mike Smith kontekste ir ieškoti telefono book-- dalykus kaip funkcijų, tik veiksmai, dalykų, pavyzdžiui, kilpų, kurios viskas vėl ir vėl, kintamieji, kuris yra kažkas mes pristatyti, bet tai žino, galbūt iš algebra-- tik keletas vietos rezervavimo natūra saugoti tam tikrą vertę, kurią gali reikia later-- Bulio išraiškas, kur tie taip ne ar tiesa false Klausimai iš anksčiau. Sąlygos yra tos šakės eidami į road-- šie filialai taip sakant. Ir tada yra keletas mėgėjas funkcijos matysime net ir šiandien, vadinami matricas ir Verpalai ir įvykiai, tai mes tada iš naujo per laikas skirtingomis kalbomis. Bet įbrėžimams leidžia mums ištirti visiems. Taigi čia nulio, tai raudonos blokas yra tai, ką funkcija paprastai yra atrodys. Ši raudonos įspūdį, kad yra keletas žodis nėra kaip tarkim, kuri yra veiksmų, ir tada jis gali turėti argumentas ar parameter-- tam tikru būdu nuo rūšies tinkinti ką, kad blokas nėra taip, kad tai nėra iš anksto nustatyta pagal MIT ką šis violetinė blokas sako. Iš tiesų, jūs pamatysite A momentas, kad aš galėtų rašyti panašūs hello world žodžiai, arba Sveiki Deividai, ar labas Zamayla, arba ką noriu, o argumentas tai dėlionė piece-- baltą langelį ten. Tuo tarpu, jei noriu kilpą, mes matyti, kad ten įspūdį, kad atrodo šiek tiek apelsinų panašaus į tai. Ir jų forma rūšies rodo, kad kažkas atsitinka, vėl ir vėl cikle. Taigi, jei aš wrap say hello world blokas su amžinai blokuoti nulio, tai tik ketina išlaikyti saying hello Pasaulio amžinai, gana pažodžiui. Tuo tarpu, kita tipo linijos nulio kad mes see-- pakartotinis block-- kur, jei jums iš anksto žinoti, kiek kartų norite kilpa vykdyti baigtinio skaičiaus kartus fact-- jus galite nurodyti, kad įvesdami skaičių ar net prijungti kintamojo, kaip X arba Y, kaip matysime. Tiesą sakant, kintamieji, kaip i Šiuo atveju, kuriame yra bendras pavadinimas sveikasis skaičius kintamasis, tik išsaugos number-- sveikasis skaičius gali būti, naudoti šį oranžinį blokas čia nustatyti kintamąjį kaip aš iki nulio. Štai žaliai A pavyzdys Būlio išraiška nulio. Nors tai atrodo kaip matematika Formulė, matematikos nelygybė, kaip tai tikrai yra Būlio išraiškos. Tai yra arba true arba false. I yra mažiau nei 50. Tai arba "taip" arba "ne atsakymas arba true arba false atsakymas. Ir mes paprastai vadiname tie Būlio išraiškos. Ir tai neturi būti 50. Jis gali būti x mažiau nei y, didesnis nei y, lygus y-- bet kitas numeris klausimai gali būti paprašyta. Dabar, iš pirmo žvilgsnio, tai gali atrodyti staiga gana drąsus čia, ir ji yra. Bet koncepcija protinga, tai gana pažįstamas iš anksčiau. Jei x yra mažiau nei y, nei pasakyti, kaip daug. Else if x yra didesnis nei y, sakykite kiek. Kita sako x yra lygus y. Taigi, mes turime pavyzdį ten trečiosios scenario-- tik trečioji possibility-- x yra arba didesnis nei, mažiau nei arba lygi. Taigi, mes turime trieigis šakutės kelio. Ir pastebėsite, kas yra kietas here-- nulio, atrodytų, turi tik vieną galvosūkį gabalas, šiuo atveju, IF kitas bloko. Ir dar, kad reikštų, galite tik dvipusis kelio išsišakojimas. Jūs galite eiti į kairę arba į dešinę, bet ką apie tą trečiąją scenarijų? Ką daryti, jei x yra lygi Y? Nėra baisi. Gerkite po vieną dėlionės dalį, įdėti dar viena viduje ji sukurti semantinį ekvivalentą IF, kitur, jei else-- ir dabar jūs turėti savo trieigis šakutės kelio. Ir kaip mes matote, Įbrėžimams įspūdį gali būti ištemptas ir augti, todėl kaip prisikimšti daugiau daiktų į juos. Jūs neturite tilptų viskas savo numatytojo dydžio. Tai yra kažkas, mes greitai pamatyti vadinamas masyvas. Tai lyg list-- kai pusę saugoti kelis gabalus informacijos į kintamąjį, o ne tik skaičius. Tai mes matome atstovą kažką vadinama multi-Threading. Tiesą sakant, visi jūsų Mac ir PC šių dienų remti multi-Threading, o tai reiškia, jūs galite tiesiog padaryti kelis dalykus vienu metu. Jūs galite turėti Microsoft Word Aukštyn įgytos žinios, darbo dėl kai kurių esė. Jums gali tekti naršyklę fone atidarymo G paštas arba "Facebook" ar pan. Jūsų kompiuteris gali padaryti kelis dalykus šiandien, nes ji yra wielowątkowa, ir programas, jie in pirma taip pat Wielowątkowych. Yra dalykų, vadinami įvykiai kaip gerai nulio pasaulyje, ir tada ten per daug, kad mūsų pačių užsakymą įspūdį, jei ką ne iš tikrųjų egzistuoja iš anksto. Taigi leiskite motyvuoti tai taip. Prieš keletą metų, kai aš pirmą kartą atrado nulio, kai buvau tikrai grad studentas MIT, mes patys buvo pavesta atlikti namų darbus. Ir aš implemented-- kuris, retrospektyviai, buvo labai prastas sprendimas, nes tai labiausiai Doprowadzający į wściekłości daina pasaulyje klausytis aštuonias valandas dirbdami savo homework-- bet kažkas man buvo vadinamas Oskaras laikas, kuris yra galbūt pažįstamas daina. CS50s savo Jordanija Hayashi, vienas iš mūsų daugiau vyresnieji darbuotojai, atnaujino ją 2015 m dabar 2016, nes atgal per dieną, Turėjau viską tik ketina į Oscar šiukšliadėžės. Dabar mes remiame perdirbimo ir kompostavimo. Bet tapyti paveikslėlį ką mes galime padaryti čia ir motyvuoti kai žemesnio lygio pavyzdžiai, galėtume gauti vieną kitą savanoris tiesiog ateiti iki ir žaisti mano pirmasis Namų darbai kada? Nagi į viršų. Koks tavo vardas? HENRY: Henris. DAVID Malan: Henris, nagi iki. Nagi į viršų. Eikite Bet kokiu atveju, ir pamatysite iškart, Aš ruošiuosi eiti į priekį ir paspauskite Žaliosios vėliavos viršutiniame dešinės kampe, o tai reiškia eiti. Mažai stotelė ženklas piktograma ketina pasakyti stop, ir tai, kai jums pradėti ir sustabdyti programą. Malonu susipažinti. Gerai. Taigi, mes ketiname pamatyti instrukcijas ant vos per akimirką ekrane. Ir tiesiog žaisti šį žaidimą Jau keletą seconds-- pasitikėk manimi, mes neketiname nori žaisti visą kelią į end-- jums gauti kokia programa daro jausmą. Ir ne tik sutelkti dėmesį į Henry yra geras, ar blogas šiuo žaidimą, dėmesio ir kaip ji buvo įgyvendinta mane iš pradžių, o tada Jordaną. Kitaip tariant, kur yra kintamieji? Kur yra kilpos? Kur yra funkcijos? Ir mes pamatyti, jei mes nematome tie po kapotu. Tiesiog spustelėkite ir vilkite šiukšles į atitinkamą dėžę. [GROJA MUZIKA] Gerai. Tai yra labai gerai. Kodėl mes nustojame jį ten. Ačiū. Sveikiname Henry. Ačiū. [Plojimai] Įsivaizduokite derinti šią programą. Jei yra problema, du -ąją song-- bet taip tai, kas vyksta čia tikrai? Taip sudėtinga, kaip ji gali pradėti, atrodo, gauti, laikui bėgant, iš tikrųjų vis daugiau ir daugiau Daiktai pradėjo mažėja, kas įdomu apie tai rūšies example-- ir mes pamatyti, keletas others--, kad jei ieškoti praeityje sudėtingumo arba Žaidimo sudėtingumas, ten labai paprasta pastatas blokai, kad play-- kurie visi, Jei distiliuoti jas su blokai yra labai prieinama ir įgyvendinami pas save. Pavyzdžiui, tai buvo šiek tiek laiko, bet aš gana tikras, ką aš iš pradžių padarė, kai priėmimo šį žaidimą pirmą kartą man buvo visiškai kaip Atidėtos. Aš ne sutelkti dėmesį ne visi dėl logika ar įspūdį, Aš sutelktas į grafika ir išvados gatvės pašto ir šiukšliadėžės ir visa tai. Bet tai buvo sąlyga ingredientai ne pirmas. Ir kai aš baigiau atidedamos ir nustatančią kvalifikacijų sistemos, Aš nusprendžiau, leiskite man tiesiog padaryti vieną gabalas šiukšlių kritimo iš dangaus. Ir mes pamatysime nulio palaiko dalykus, vadinamus sprites-- simbolių, kurie gali turi skirtingus kostiumus ant Taigi jie atrodo kitaip. Ir todėl aš įdėti šiukšles kostiumas ant vieno tokio Sprite. Ir aš tiesiog reikia ją kristi iš dangaus. Ir taip it turns out, įbrėžimams, kaip ir dauguma programavimo kalbų, palaiko atsitiktiniai skaičiai arba techniškai Pseudocode atsitiktiniai skaičiai, kad vilkdami ir nuleisti tam tikrą įspūdį, Galėjau turėti šiukšlių ateiti iš kairės pirmas. Ir tada, kai kitą kartą jis nukrito nuo teisė ir tada nuo vidurio. Ir visa žaidimo nebuvo buvo tik turi šiukšles iškritimo iš dangaus. Jūs negalėjo atkreipti į jį arba paspauskite ant jo. Jūs negalėjo atidaryti šiukšliadėžės. Jūs negalėjo nieko padaryti. Bet tai buvo kūdikis žingsnis link mano galutinis vizija. Ir po to, aš iš tikrųjų įgyvendintos tam tikros rūšies stebėjimų, kad jei tu spustelėkite ir vilkite nuo šiukšlių gabalas virš krepšio skardinę, Oskaras dangtis būtų atidaryti ir uždaryti. Nieko nutiktų į šiukšlinę, bet bent dangtis būtų atidaryti ir uždaryti. Taigi tada patikrinkite, du dviejų etapų. Ir tai yra tai, kas vyksta, kad būtų pagrindinis tiek problemą nustatyti nulį ir programavimo apskritai, yra imtis šių labai sąmoningai kūdikių veiksmus. Kadangi ne tik jis leidžia jums jaustis sąžiningai atlikti daug daugiau quickly-- tai tas Blogiausia pasaulyje bandyti įgyvendinti visus Oscar Laikas, tada valandos vėliau nukentėjo žalią vėliavą, ir nieko veikia kaip tikėtasi nes kur jūs net pradeda derinti arba išspręsti šią programą? Tai tiesiog milžiniška. Ir taip tikrai apimantis šią idėją imtis steps-- kūdikių veiksmus vėl ir again-- kurti kažkas tai, galų gale, tikrai įspūdingas ir sudėtingas, tačiau per pirmąjį, yra ne beveik kaip daug,. Iš tiesų, tegul tai padaryti. Leiskite man eiti į priekį and-- Scratch save egzistuoja adresu Scratch.MIT.edu internete, ir jums bus pasakyta, kaip daug vėl problemos nustatyti nulį, už specifikacija kuri jau yra CS50 tinklalapyje. Bet tai, ką Scratch pati. Ir ten tikrai tik trys pagrindinės sritys. Viršuje kairėje yra yra taip vadinamas etapas. Tai nulio. Numatytoji kostiumas yra katė. Ir tai yra stačiakampio formos pasaulis, kurią galite move-- aukštyn, žemyn, į kairę, teisė ir kai kurių kitų dalykų. Per vidurį čia yra mūsų kategorijos arba mūsų padėklai įspūdį, ir įvairių spalvų reikšti skirtingus dalykus. Ir jei jūs kišti aplink, pamatysite dalykų, pavyzdžiui, kilpų ir sąlygos ir kintamieji ir kiti ingredientai. Ir tada per čia yra scenarijus plotas. Tai kur aš galiu vilkite ir upuść tie įspūdį daryti dalykus. Taigi padarykime vieną tokį dalyką. Leiskite man eiti į priekį and-- ir aš žinau, kur ji yra. Taigi, aš ruošiuosi iš karto spustelėkite kur aš žinau, viskas yra pasirengusi būti, tačiau pažymi ir spustelėdami ir išnyra aplink yra neišvengiamas. Taigi, kai žalia vėliava paspaudėte, ką aš noriu daryti? Aš ruošiuosi tai padaryti. Aš ruošiuosi vilkite šį purpurinį galvosūkį gabalas, pasakyti labas dvi sekundes, ir leiskite man padidinti. Ir aš ruošiuosi tai pakeisti būti tuo, kuo noriu, kad jis be-- hello world dvi sekundes yra gerai. Dabar aš ruošiuosi spustelėkite žalia vėliava, arba jei aš tikrai noriu, Galiu visą ekraną ir tada grįžti atgal. Tai bus tiesiog laikyti viskas viename lange. Žalioji flag-- hello world. Gerai. Ne visi, kad įdomus. Taigi leiskite man eiti į priekį ir tai padaryti. Leiskite man pabandyti kitą. Kai žalia vėliava clicked-- tegul padaryti kažką panašaus į garsą. Ir pastebėti, kad iš laisvą gausite langas katė garsas, kaip yra numatytasis Sprite. Taigi dabar leiskite man eiti į priekį ir hit žalia vėliava dabar. [Meowing] Aw. Štai žavinga. Aš programavimą. Taigi, ką aš padariau? Tai yra programos ekvivalentas. Tai akivaizdžiai super paprasta. Tai tikrai ne imtis visi, kad daug pastangų ir MIT padarė didžiąją darbo dalį, bet aš vadinamas funkcija. Aš naudoju funkciją. Aš atlikau tam tikrus veiksmus, naudojant tik kad viena violetinė įspūdį. Na, jei aš noriu padaryti trys Miau iš eilės? Leiskite man eiti į priekį ir daryti dviejų ir trijų. Ir pastebėti, kad, kai jūs užveskite netoliese yra įspūdį, atrodo šiek tiek balta linija rūšiuoti magnetiškai, ir jis bus rodomas kartu, kai jūs atleiskite. Pažiūrėkime, kas atsitiks čia. [Meowing] Yra klaidų. Aš tik išgirsti vieną meow. Kodėl taip gali būti? Taip? Taip. Mes tikrai ne išgirsti, bet tai gera intuicija. Jie visi žaisti tuo pačiu metu. Kodėl? Na, kompiuteris tiesiog vyksta daryti tai, ką galite pasakyti daryti. Taigi, jei jūs sakote, Groti garso, žaisti garsą, atkurti garso, bet jūs neturite pasakyti, žaisti, kol baigsite, žaisti, kol baigsite, jis ketina smūgis per programa tikrai greitai o tik tai, ką pasakyti, daryti. Taigi aš iš tikrųjų reikia nustatyti tai įvairiais būdais pora. Aš tiesiog negalėjo tai padaryti, atsikratyti tai. Leiskite man pabandyti šį kitą galvosūkį piece-- žaisti garso meow, kol padaryta, ir tada vilkite tris tai ir spustelėkite Atkurti. [Meowing] Tai tikrai ne very-- ačiū you-- labai natūralus. Taigi kodėl ne I-- tegul man eiti kontroliuoti čia. Gražus. Palaukite vieną sekundę, o dabar leiskite man grįžti garsų, ir žaisti garso, kol padaryta, ir tada leiskite man gauti palaukite vieną sekundę. Ir tada leiskite man eiti ir gauti vieną daugiau garso, ir čia mes einame. [Meowing] Šiek tiek daugiau gamtos, bet tai nėra labai efektyvus. Kaip aš buvo gauti nuobodu, visi bus jis trumpai Naršyti pirmyn ir atgal ir tikrai kartoti mano work-- gana daug kopijavimas ir įklijavimas. Iš tiesų, jei aš Kontroliuokite paspaudėte arba paspaudę dešiniuoju pelės, Galėjau tiesiog nukopijuoti ir įklijuoti. Ką būtų geriau statyti naudoti? Kokią idėją iš anksčiau? Taip, taip, kilpa. Ir iš tiesų, jei mes baksnodavo aplink, mes galime rasti būtent tai. Leiskite man eiti į renginius ar veikiau kontrolės. Taigi repeat-- aš ne noriu, kad ji būtų 10 kartų. Kad ketina gauti erzina greitai. Bet aš kartoti tris kartus. Leiskite grįžti į garsą ir žaisti garsą tol, kol tai daroma. Leiskite grįžti į kontrolės ir tiesiog laukti vieną sekundę. Ir pranešimas, galbūt manau, kad tai netelpa, bet vėlgi, jei magnetiškai leisite przystawkę į vietą, jis išaugs užpildyti. Kas tai Žaisk dabar? [Meowing] GERAI. Gražus. Ir tai, ką būtų galima pavadinti programa, kuri taip pat teisinga. Tai meowed tris kartus gana natūraliai, bet tai geriau sukurta. Aš naudoju mažiau atleidimą iš darbo. Aš ne kopijuoti ir įklijuoti nieko. Aš tiesiog naudoti geresnį supratimą. Dabar, tai yra vis dar ne visi, kad įdomus su įbrėžimams nedarote nieko. Taigi darykime ką nors kita vietoj. Darom ką nors amžinai. Ir žinote ką? Pasiūlymas atrodo įdomi. Leiskite turėti jį perkelti 10 žingsniai ir paspauskite žaisti dabar. GERAI. Na, mes galime rūšies drag jam atgal, ir jis vis dar veikia, nes jis daro tai amžinai. Taigi kilpa daro ką jis sako daryti, tačiau tai ne visi, kad įdomus. Padarykime tai. Leiskite pridėti valdymo blokas, o naudoti vieną iš šių sąlygų pirmą kartą. Taigi jis ketina perkelti 10 steps-- 10 taškų, 10 taškų ant screen-- tada jis ketina užduoti šį klausimą. Jei kažkas yra tiesa, tada daryti kažkas viduje šio bloko. Taigi paaiškėja, jutimo turi visą krūva Būlio expressions-- klausimai ir taip ne ar tiesa klaidinga form-- leiskite tai padaryti. Jei touching-- ir tada ten tai tiek išskleidžiamajame meniu. Galiu parameterize ją. Jei neliesti edge-- tegul padaryti kažką panašaus. Taigi, jei liečiant edge-- leiskite man grįžti į judesio. Ir kodėl gi ne, mes tiesiog apsisukti 180 laipsnių? Gerai. Taigi amžinai, perkelti 10 žingsnių. Jei neliesti kraštas, pasukite 180 laipsnių. Ir tai dar ne programos pabaiga nes esate amžinai blokuoti, todėl jis ketina eiti vėl ir vėl ir vėl ir vėl. Taigi pažiūrėkime, kas vyksta. GERAI. Šiek tiek Buggy, bet tipo kietas. Ir mes galime pridėti tai kai kvailus dalykus kad yra ne visi, kad intelektualiai įdomus. Bet jei mes paspauskite šis mažas mikrofonas button-- Ouch. Leiskite valyti tai padaryti. Leiskite sustiprinti tai kaip jie pasakytų TV. Nuvalykite, kad iki, įrašyti ir dabar eiti į scenarijų. O dabar leiskite man eiti į garsą. Leiskite man duoti jai vardą. Aš tai vadina Ouch. Ir dabar žaisti garso Ouch. Atkreipkite dėmesį, ji atsiras mažai išskleidžiamajame meniu. Pažiūrėkime. [OI] [Juokiasi] Bet mes galime pakeisti Š skristi. Mes galime būti dvigubai erzina. [OI] Arba, jei mes jį kaip 1000 žingsnių vienu LAIKĄ_ GERAI. Taigi, mes ketiname palikti, kad vienas ramybėje. Taigi dar kartą, pastato blocks-- I pradėjo su kažkuo super paprasta, ir tada aš pridėjo funkciją, pridėjo funkciją, pridėta funkciją. Ir aš nebereikia jaudintis kaip pirmasis iš šių požymių buvo įgyvendintas kaip aš toliau sluoksnis dalykų viršuje. Taigi iš tiesų, leiskite man padaryti vieną kitą čia. Leiskite man eiti į priekį ir atidaryti failą, kuris Aš išvedžiau iš anksto, vadinamas avių. Todėl jis turi šiek tiek kitoks charakteris, kad atrodo taip. Ir leiskite man pamatyti, jei aš negaliu kažką daryti naudojant skaitiklį šiame case-- vadinamąjį kintamasis. Aš ruošiuosi eiti į priekį ir pagal Events-- leiskite man gauti žalia vėliava paspaudėte. Tada leiskite man eiti į duomenis, kurie, aš žinau nuo tiesiog žaisti aplink ir anksčiau, kur kintamieji yra. Ir aš ruošiuosi eiti į priekį ir vilkite tai. Taigi kintamasis vadinamas skaitiklis, ir Aš ruošiuosi inicijuoti ją iki nulio. Galiu jį vadinti anything-- x arba Y arba z-- bet programavimo, paskambinę kažką A semantiškai naudingas būdas, kaip skaitiklis kad aprašoma, kas tai yra, tai Daug lengviau skaityti kodą vėliau. Leiskite man eiti į priekį ir gauti amžinai užblokuoti čia. Ir leiskite man eiti į išvaizda puslapis ir atlikti Say bloką. Bet kas kietas apie kintamųjų yra man neturite tiesiog įveskite kažką kaip Hello world, kurį mes jau ve padaryta, galiu vietoj eiti į duomenų ir vilkite mano kintamasis, ir net nors forma ne visai atrodo jis turi tilpti, jis išaugs užpildyti. Ir aš tiesiog pasakyti, kad vienas skaitiklis second-- spoiler-- jis ketina skaičiuoti. Mes tai pasakyti vieną sekundę. Tada aš ruošiuosi eiti ir turi jam laukti vieną sekundę, todėl nesiskaito per greitai. Ir tada galiausiai pakeisti skaitiklį pagal one-- kitaip tariant, prieaugio pagal vieną skaitiklį pridėtinė vertė ir tai padaryti amžinai. Taigi avys irgi tarsi programuotojas, skaičiuoja nuo 0. Ir jei mes laukti pakankamai ilgai, jis tai darys amžinai. Bet tai ne visai tiesa, nes Iš tikrųjų, kaip mes atrasti per vieną savaitę, sveikieji skaičiai ir kompiuteriai apskritai, techniškai yra tik finite-- gerai, o kompiuterių, kai jie atstovauja sveikieji skaičiai, turi tik baigtinį skaičių bitai. Tos lemputes ten Galima tik tikėtis, kad didelė Prieš jūs iš lempučių. Ir kompiuteris per, turi tik tiek atminties, turi tik tiek daug tranzistorių, todėl ji gali tik tikėtis, kad didelis. Taigi paaiškėja, kad avių, Manau, gali tikėtis iki 2 mlrd ar kažkas gana didelis. Taigi mes nesiruošia laukti, kad tai įvyktų. Bet galų gale kai klaidą nutiks kurie gali turėti keletą labai realų pasaulį pasekmių. Tačiau be to, avių, kad tik pristato kintamąjį. Vykime į priekį ir atverti ką aš iš anksto čia vadinamas PET Cat-- PET katę čia. Ir pastebėsite čia tai nedaug blokai, bet kai žalia vėliava paspaudėte, amžinai atlikdami šiuos veiksmus. Jei liečiant pelės pointer-- taip žymeklis ekrane, arrow-- klausytis garso miau ir tada laukti dvi sekundes. Ir tik tai padaryti amžinai. Tiesiog nuolat laukti pamatyti, jei pointer-- jei katė neliesti žymeklį. Taigi aš paspauskite žaisti. Nieko vyksta. Bet kaip aš perkelti žymeklį virš katė, [Meowing] Ir jei aš jį perkelti atokiau, o ne Petting katė nebėra. Taigi kai sąlyginis logika įdėtos viduje kilpa. Kaip apie šį Pavyzdžiui, sąmoningai vadinamas Negalima PET katę? Kas tai ketinate daryti? [Meowing] Kodėl turėtumėte ne naminių kačių? [Meowing] GERAI. Todėl tai yra toks, kuris turi, jei dar pavyzdys. Tai sprendimas taškas ir nes jis sėdi kilpą, jie abu vis patikrinti. Ar tai tiesa? Ar tai tiesa? Ar tai tiesa? Ar tai tiesa? Ir galų gale, vienas iš tiems ketina taikyti ir taip girdi arba į meow ar Iš šioje byloje liūto riaumojimas. Na, darykime šiek tiek daugiau išgalvotas vieną kad aš iš anksto too-- siūlų. Taigi tema yra tik vienas dalykas, kad kompiuteris gali padaryti. Todėl Wielowątkowych programa yra programa, kad galima padaryti kelis dalykus vienu metu. Ir visi šie pavyzdžiai iki šiol turėjo tik vienas scenarijus, taip speak-- viena programa, kaip tai čia. Tačiau pastebėti ši programa turi du animacinius, du simbolius. Vienas iš jų yra paukštis. Vienas iš jų yra katė. Ir pastebėsite, kai aš spustelėkite juos žemyn kairysis, kiekviena iš jų turi savo scenarijų ar programos, susijusios su jais. Ir tiek tų programos, pranešimas, pradžia su kai žalios vėliavos clicked-- pažvelkime į cat-- kai žalia vėliava paspaudėte. Ir taip iš tikrųjų, kai aš paspauskite žaisti dabar du dalykai yra nutiks ne vieną kartą. Katė ir paukštis yra tiek ketinate veikti vienu metu sukurti šį efektą. Ir galite įsivaizduoti, kas vyksta. Yra kilpos ir paukštis ir katė yra kilpa. Paukštis tiesiog šoktelėti kaip Buvau anksčiau, kai pasakiau Ouch. Bet katė aiškiai turi pranašumą. Yra dar vienas jutimo blokas kad atkreipia katė sąmoningai prie šio atveju paukštis. Taigi, mes galime erzinti vienas nuo kito, žiūri per tuos blokus, kas vyksta. Bet pagrindinis ingredientas čia yra vienas. Paukštis, todėl, kad šis žaidimas yra ne visiškai boring-- arba ši animation-- prasideda nuo atsitiktinai kryptimi. Ir kompiuteris yra skinti skaičius tarp 90 ir 180 iš esmės, kad tai šiek tiek skiriasi animacija kiekvieną kartą. Ir tada pranešimas čia, jei katė neliesti paukštis, tada žaisti liūtas keturių sound-- riaumojimas. Bet tuo tarpu paukščio paletė, mes turime tai. Amžinai, jei ne neliesti katė, tiesiog nuolat juda tris žingsnius. Ir tada čia dar įspūdį. Jei esate ant krašto, Bounce. Taip paukštis yra tiesiog rūšies Minding savo verslą, tiesiog plaukioja aplink ir šoktelėti, ir tai tikrai katė, kuris turėjo sąlyginę logika siekiant nustatyti, ar ji sugauti paukštį. Gerai. Taigi padarykime vieną kitą čia tai vienas yra vadinamas "Hi Hi Hi. Ir tai vienas čia tik daro tai amžinai kilpa. Bet notice-- kaip mes sustabdyti Tai labai erzina programa? Rezultatas tarpo. Nes jei aš tai padaryti, kairė ranka program-- pastebėsite, kad tai nuolat listening-- yra pagrindinis vietos spauda. Jei tarpo mygtuką, ir jei taip, ką jis daro? Ji labai bendrą techniką. Ji nustato kintamąjį lygų tam tikrą vertę. Bet tai perjungia šią vertę. [? Taigi išvaizda?] remiantis shape-- I turi kintamąjį, kad aš rašė anksto vadinamas Nutildytas, o tiesiog sako taip arba ne. Ar garsas nutildytas, ar ne? Tiesa ar melas? Ir pranešimas, aš sakau this-- jei išjungiamas yra lygus nuliui, tada pakeisti į vieną, kitas nustatytas nutildyti jį iki nulio. Taigi tiesiog apversti vertę nuo nulio iki vieno. Galėjau done-- jį pakeisti nuo dviejų iki trijų ir trijų iki dviejų arba 4-5 arba nuo keturių iki šešių. Bet tai nesvarbu kas numeriai aš naudoju, tol, kol aš nuolat jį pakeisti priešingai. Ir dauguma bet programuotojas tiesiog pasirinkti nulis ir one-- klaidinga ir teisinga, išjungti ir on-- atstovauti tai. Ir tai vis dar veikia. Jei aš paspauskite tarpo klavišą dar kartą [SEAL SOUNDS] Programa yra vis dar veikia. Nes ten tas kitas scenarijus kad sako, amžinai atlikite šiuos veiksmus. Jei prislopintas kintamasis lygus zero-- todėl, jei esate ne nutildytas yra logic-- jei ji klaidinga arba ne, tada žaisti garsą, nes nesate nutildytas. Jūs turėtumėte žaisti garsą ir tada manau hi hi hi dvi sekundes ir tada laukti, o tai padaryti vėl ir vėl ir vėl. Ir todėl tokiu būdu mes turime būdą, kaip žmonių to-- programoms bendrauti. Ir jie neturi būti toks, kaip nurodyta data, kaip kiti. Tiesą sakant, išnyra around-- ne kalambūras intended-- kažkas praleido didžiulis laikas internete įgyvendinimo PokemonGo į nulio. Jis net geolocates jums Kembridžo ar Alstonas čia. Taigi, jei norite pamatyti per ką žmonės galite padaryti, tai this-- labai išgalvotas meniu. Spauskite čia. Tai man su mano rodyklių klavišus dabar. Aš ruošiuosi eiti po to. Spauskite. Ir dabar jūs spustelėkite Pokeball. Aš turiu galvoje, aš manau, kad jūs turėtų spustelėkite Pokeball. Gerai. Taigi, aš padariau, kad. Galiu eiti per čia. Ir šis asmuo įgyvendino kai daugiau PokeBalls per here-- trijų PokeBalls. Mes įdėti nuorodą į šią direktyvą arba internete, kad jūs galite žaisti. Tačiau pranešimas yra tiesiog keletas pagrindinių statybinių blokų. Atrodo daug mėgėjas, o ji yra. Tai įspūdingas ir daugiau nei mes paprastai būtų tikėtis, tikrai turi problemų nustatyti nulį. Aš neįsivaizduoju, kaip ilgai Šis asmuo praleido internete. Bet visa tai tik kilpa. Yra garso žaisti. Yra keletas kilpa natūra klausytis, ar aš pataikyti rodyklę aukštyn arba žemyn arrow arba kairėje ir dešinėje, ir tada, jei taip, tai juda tai kai taškų skaičius. Ir tada, jei aš spustelėkite kitas Sprite, ten kai, jei sąlyga ten natūra. Taip, tai tampa pernelyg intensyvus. Mes ketiname sustabdyti. Tai visus tuos pagrindinius blokus. Nėra jokių kitų Pagalbinės medžiagos negu tie, mes pažvelgė jau. Ir dar čia, leiskite man padaryti Vienas galutinis rinkinys pavyzdžių kad dažai paveikslėlį per ką galite padaryti čia. Štai labai paprasta programa, kad tiesiog daro this-- kosulys, kosulys, kosulys. Ir tik remiantis kas mes pažvelgė šiol, kur yra akivaizdu, galimybė tobulinti. Ši programa yra teisinga. Tai kosulys tris kartus, o tai, ką aš paskirtį. Bet tai prastai įgyvendinta. Tai blogai sukurta. Kodėl? Taip. Tai ne kilpa. Ir tai ne tiek daug kad tai ne kilpa, tai, kad ten yra atleidimo iš darbo daug. Yra kopijuoti ir įklijuotas kodas, taip sakant. Ir tirpalas tikriausiai iš tiesų yra kilpa. Taigi leiskite man eiti į priekį ir patobulinti, kad. Ir aš ruošiuosi vilkite juos čia. Leiskite man eiti į priekį ir gauti kartojimą blokas, tai pakeisti iki trijų. Aš ruošiuosi išmesti kai kurie iš šių blokų. Ir jūs pastebėsite, kad tai gana intuityvus. Jūs vilkite ir upuść ir viskas atsiranda ir išnyksta, galų gale. Ir aš galiu tiesiog vilkite tai čia, ir dabar turiu švaresnę versiją vis dar. Bet žinote ką? Yra tokia galimybė dabar abstraction-- pradėti apibrėžti naują žodyną kad MIT nebuvo numatyti. Yra laukti ir pakartokite ir amžinai, ir jeigu, Bet kas, jei noriu pristatyti žodis kosulys kaip bloko? Ką daryti, jei aš noriu įspūdį kurių gyvenimo tikslas yra kosulys? Na, pažvelkime šioje versijoje čia, kurį padariau taip. Stebuklingai, aš sukūriau tai įspūdį čia kuri įbrėžimams leidžia jums padaryti. Ir iš tiesų, C ir Pitonas ir "JavaScript yra ketina leisti jums tai padaryti taip pat. Jūs galite kurti savo pasirinktinį vienetų, kad jūs skambinkite, ko norite. Šiuo atveju, kosulys jaučia kaip priimtiną apibrėžimą. Ir tada su šių vienetų žemyn Čia galite nustatyti, ką tai reiškia. Aš tempia ir nukrito nuo tai paletė here-- daugiau blocks-- tai didelis violetinė blokas, kur aš įvedėte kosulio kaip mano naujas galvosūkis gabalas pavadinimu. Ir tada aš sakau bet kuriuo metu vartotojas ragina šią naują kosulys įspūdį, padaryti žodį ir palaukti. Ir taip čia mano pakartoti blokas, Aš galiu tik kosulys tris kartus. Ir aš norėčiau ginčytis, ypač jei dabar jūs paslėpti šį detalę. Who cares, kaip kosulys yra įgyvendinama? Viskas, ką aš rūpi, kaip programuotojas, kad galiu kosulys. Man nerūpi, kaip pasakyti, įgyvendinti. Aš tik rūpintis, kad katė gali ką nors pasakyti. Galiu abstraktus toli, kad detalė ir sutelkti dėmesį tik į tai, kas ekrane čia. Bet galiu priimti vieną žingsnį toliau. Atkreipkite dėmesį, kad čia turiu įgyvendinti kilpa tris kartus. Bet kas, jei vietoj aš patraukti šią versiją? O kas, jei vietoj šioje versijoje čia Aš tiesiog pakeisti savo įspūdį imtis argumentas ir įėjimo pas save? Ir kad įėjimas gali būti skaičius kaip trys. Taigi dabar, jei aš rašau programą ir aš noriu katė kosulys, Aš iš tikrųjų galiu pasakyti galvosūkį gabalas, kiek kartų kosulys, nes apačioje čia, mėgėjas versija šių užsakymą įspūdį Leiskit man nurodyti, kad Kosulys iš tikrųjų užima input-- užima panašaus į tai argumentas. Ir žinote ką? Gal aš suprantu, palauk. Kosulys yra same-- tai iš esmės tą pačią idėją kaip čiaudulys. Tai tiesiog kitoks žodis ekrane. Galiu abstraktus toli dar ir įgyvendinti Ši galutinė versija kosulys, kuris iš pirmo žvilgsnio yra būdas sudėtingesnis ieško. Tačiau pastebėti, ką aš padariau. Turiu dabar generalized-- genericized really-- šį įspūdį būti vadinamas pasakyti žodį n kartų. Ir dabar turiu du naujus įspūdį žemyn čia apibrėžti kosulys n kartų. Ir ką kosulys funkcija daryti? Ką mano užsakymą įspūdį daryti? Jis tiesiog vadina tarkim blokas, einančios į žodžio noriu pasakyti, einančios į numerį kartų aš noriu pasakyti. Nes dabar galiu įgyvendinti čiaudėti tiesiog sakydamas achoo, šiuo atveju, kai kurie iš karto. Ir todėl aš sluoksniavimasis ir sluoksniavimasis. Ir vėl, čia svarbiausia yra ne kaip aš ją įgyvendino, bet faktas kad jei aš tiesiog pažodžiui perkelti šiuos išjungti ekrano, atrodo kaip paprasta, jei ne gana mano programa dabar atrodo. Nes tai ką ji sako, aš išgaunamo toli, kas yra tai, kad juodosios dėžės viduje. tai atsitinka būti violetinė dėžutė čia bet aš užtverta toli, kas viduje nes man nerūpi, kaip ji veikia. Aš tik rūpintis, kad dabar ji veikia. Ir iš tiesų, problema nustatyti nulis, tai yra būtent iš sluoksniavimasis idėjų natūra jums turi galimybę tyrinėti. Tai tiksliai galimybė taikyti problemų sprendimo būdus, į tai, kas tikriausiai susipažinę aplinka. Ir ar jūs ne užprogramuotas prieš ar užprogramuotas anksčiau, Jūs pamatysite, kad ten šiek tiek kažką šioje aplinkoje visiems. Ir su problema nustatyti vienas per savaitę laiko, mes bus perkelta į dėmesio ant aukštesnio lygio kalba vadinama C-- ar veikiau mažesnis lygio kalba vadinama C-- tai dar labiau galingas, nors tai šiek tiek daugiau paslaptingas iš pirmo žvilgsnio. Ir jūs suprasite už šiandienos TL: DR, kad ši problema nustatyti turi būti taikomas trumpesnis langas laiko, nei ateityje atsirasiančias, tiesiog nes jums reikia rasti, kad tai pakankamai prieinama. Ir ne nerimauti, jei pridėti klasės vėlu. Mes spręsti, kad prieš ilgas. Ir kol mes atidėti dėl torto, tegul baigti su tik dviejų minučių išvaizdą kokia jūsų laukia čia CS50. [GROJA MUZIKA] Gerai. Štai jį CS50. Mes see you soon. Tortas dabar tarnavo. [GROJA MUZIKA] GARSIAKALBIS 17: Ar esate girdėję apie kūrybines viršininkas? GARSIAKALBIS 18: Galbūt ten daugiau po kapotu.