[MUZIKO Ludanta] Jen CS50-- Harvard Universitato enkonduko al la intelekta entreprenoj de komputiko kaj la arto de programado. Kaj mia nomo estas David Malan, kaj Mi ĵus pensis ĉimatene, jam pasis mirinde 20 jaroj hodiaŭ kiam mi lastan sidis kie vi uloj faras nun. Estis 1996. Mi estis duajarulino, kaj mi prenis CS50 por la tre unua tempo. Kaj mi eĉ ne korpigas la nervo preni mem unuajaruljaro, parte pro la tempo. Komputiko min estis ia ŝatas, Meh. Mi estis iom de geek kreskanta supren, sed mi ne vere havas ajnan intelektan intereso en kio aspektis nur esti tuta aro de personoj programado tutan tempon. Kaj Mi estis timigita esti honesta. La kurso kaj komputiko pli ĝenerale havis kaj iagrade, ankoraŭ havas tiun reputacion de kampo al gardu vin, se nur ĉar tiel multaj el ni estas nekonataj kun ĝi kaj necerta de ĝi. Kaj ĝi vere estis ĝis mi shopped tiu klaso kiu duajarulina fall-- kaj eĉ tiam, mi nur enskribis ĉar la professor-- unu el miaj unuaj mentoroj, Brian Kernighan nun Princeton-- permesis al mi preni la klason enirpermesilo malsukcesas. Kaj efektive, jen kial hodiaŭ permesi kaj kuraĝigi studentoj preni ĉi klaso sidis / unsat. Kaj nur tiam, per la Fine de la semestro ĉu mi rimarkas kiel, humor, tio ne tia nekonata kampo. Efektive, tio estis tre sinpoviganta kampo, kaj pli excitingly, speciale poste, kiel Mi deturnis kursoj Dramaj Artoj 101 kaj latina A kaj tiam eventuale grad lernejo arkeologio, cxu mi vere komencas vidi la intersekcoj de tiu kampo, komputilo scienco, kun la homaroj, naturaj sciencoj, la artoj, medicino, kaj similaj. Kaj tial jen kio estas nur tiel neta pri komputiko finfine, kiel ni esperas ke vi see-- estas ĝia aplikebleco al tiuj aliaj kampoj, kaj kiel vi povas prenu el la hodiaŭa kaj la semestro la ideoj kaj praktikaj kapabloj reen al via propra domajno, kaj fakte esplori tiun komunaĵo de la liberalaj artoj kaj la sciencoj. Do 73% de vi, se lastan jaro estas ajna indiko, neniam prenis CS kurson antaŭe. Do se, kiel mi, vi sentante iomete timigita, aŭ malkaŝe vi ne vere certas kial vi eĉ tie. Eble vi simple sekvis iom amikojn super por Sanders nun. Tio tute bone. La celo tie estas conectarse vi kaj por trankviligi vin ke se vi rigardas maldekstren kaj dekstren, vi tuj vidos samklasanoj kun kiel malmulta aŭ tiel sperto ke vi mem povus havi. Kaj efektive, ni dividos kelkaj statistikoj poste hodiaŭ kiel al kio la demografio de la klaso tipe aspekti. Kaj kiel aldonita reassurance-- kaj tion ni ja signifas, kiam mi transprenis la kurson kelkaj jaroj ago-- en la kurso Syllabus Estas this-- ke kio finfine aferoj en tiu kurso ne tiel kie vi finos relativa al via samklasanoj, sed kie en semajno 11, la fino de la semestro, fini relativa al vi mem en semajno 0, kio estas kie ni estas ĉi tie hodiaŭ. Kaj jen kion mi konstatis ĉiuj tiuj jaroj. Kaj mi scias multajn klasoj diri tion, sed ĝi estas precipe vera en komputiko. Fine de la tago, tiu kampo estas nekonata kiel ĝi estis por mi kaj eble estos por vi, estas vere preskaŭ solvi problemojn. Kaj kiel tia, ĝi havas ĉi aplikebleco akiri aliajn kampojn. Kaj fakte, se ni provis distili kion tio signifas, tio estas problemo solvanta en ĝia esenco, mi komprenas. Ekzistas input-- tiom ajn ĝi estas ke vi provas solvi. Ekzistas eliro, kiuj estas espereble la solvo al tiu problemo. Kaj tiam, kiel ni farus diri en komputiko, ekzistas tiu nigra skatolo en la mezo ke vi ne nepre devas zorgi pri kiel ĝi funkcias. Vi mem eventuale povus apliki kio estas en tiu skatolo. Sed por la hodiaŭa celoj kaj pli ĝenerale en vivo, oni nur zorgas pri estas ke tiuj problemoj akiri solvita. Kaj kio ĉi tiu kurso estas finfine pri esploras la komunaĵo de tiuj eniroj kaj eliroj, kaj tiuj tielnomitaj algoritmoj, kiel ni baldaŭ vidos, kiu implementan kio estas sub tie, la kapuĉo. Sed tiuj enigoj kaj tiuj outputs-- kion tio vere signifas? Nu, fine de la tago, ni bezonas iel reprezenti informojn. Tio estas aparte vera en komputilo, kiu kiel kaprico kaj kompleksa kiel povus ŝajni, estas bela muta aparato. Ĝi prenas electricity-- ĉu el kablo aŭ kuirilaro kiel input-- kaj tiam ĝi produktas iun preprogramed respondojn sur la ekrano. Sed kiel ni preni de komenci fini tie? Nu, kio estas problemo por esti solvita? Nu, eble ni povus, je la komenco de ĉiu semestro, provi preni asistencia en ĉambro kiel ĉi. Kaj mi faros kiel unu, du, tri. Aŭ eble, se mi tion faris al ia konservi trako de mia volo konservi trako de things-- Mi povis rapide kuri el fingroj. Do mi nur povus fari hash marks-- unu persono, du, tri, kvar, kvin, ses, sep, ok. Kaj ni ĉiuj havas probable farante tiun, ĉu en via mano aŭ sur peco de papero. Kaj tio estas fakte nur iu nomita unuloka notation-- kie se vi nur havas unu litero en via alfabeto, aŭ hash markon en ĉi tiu kazo, por ĉiu enigo vi volas rakonti, vi devas meti malsupren unu el tiuj leterojn unu el tiuj markoj. Bone. Jen ĉio bone kaj bonan kaj Ne ĉiuj kiuj komplika. Sed komputiloj ne ĉiuj ke multe pli komplikita. Efektive, la plimulto el vi verŝajne scias eĉ se vi havas ne vere konsiderita kion tio signifas, ke komputiloj nur kompreni nuloj kaj ones-- la tn binara sistemo. Ni homoj, kontraste, estas tiel multe pli kompleksa mezuro kiel ni komprenas nuloj tra nines. Sed eĉ se duuma estas, unue rigardo, ne ĉiuj kiuj konas, rezultas ĝi estas nur kiel la sistemoj kaj la ideoj kiujn ni jam scias. Do ekzemple, konsideri ĉi. Tiu estas nur vico de simboloj. Kaj ĉiu el vi, kiam rigardante ĝin, verŝajne pensas 123-- nenio vere interesa tie. Sed kial tiu nombro, 123? Tiuj estas nur hieroglifoj sur la screen-- nur ŝablonoj ke iu povus esti tiritaj aŭ tajpita. Sed se vi estas kiel mi, vi verŝajne memoras de grado lernejo ke ekzistas ia kolumnoj aŭ lokoj tie. Ekzistas unu loko kaj la dek loko kaj la cent loko. Kaj la kialo ke estas 123 kaj ne nur mastro de tri simboloj estas ĉar, kompreneble, se ni havas unu en la centoj loko, vi faras la math de 100 fojojn unu, kaj tiam du en la dek loko. Do jen 10 fojojn 2, kaj tiam tri en la onies loko kaj tio estas 1 fojojn 3. Kaj kiam vi aldonas ĉiu el tiuj, pri Kompreneble, vi ricevas 100 plus 20 plus 3. Do ni komencis kun nur ŝablono de symbols-- an aboco sed tiam ni mapita signifon sur ĝin pere de tiuj kolumnoj. Nu, Ĝi rezultas ke komputiloj estas vere ne tiom malsimila al vi kaj mi. Sed anstataŭ uzi potencoj de 10, tiel diri 1, 10, 100, 1000, 10.000 loko kaj tiel forth-- ili efektive nur uzu potencoj de 2-- do unu, 2, 4, kaj poste se ni metas pli ciferoj, 8, 16, 32, 64, 128, kaj tiel plu. Do jen kiel komputilo reprezentus la nombron 0, nur ŝatas ni homoj. 0, 0, 0-- kaj vi versxajne povas diveni kio mastro de nuloj kaj, se komputilo povas nur paroli 0 aŭ 1-- kio mastro tuj reprezentos la nombro ni homoj scias kiel 1? Yeah-- 0, 0, 1. Bone. Do 0, 0, 1 estas kiel ni reprezentos 1, do vi eble klinis tiam reprezenti la numero 2, se vi havas la kvar loko kaj la du loko kiel tiu loko, vi povus diri, nu, se ni havis 1 en onies loko, kaj nun ni volas kalkuli ĝis 2, vi povus tion kaj foriri esti nulo. Sed kompreneble tio ne kiel la dekuma sistemo funkcias ĉu. Se vi metis cifero en ambaŭ de tiuj kolumnoj, Vi devas fari la aritmetiko. Do kiu nombro faris mi hazarde ĝuste reprezentas? Do ĝi estas 3, ĉar 2 fojoj 1 plus 1 fojojn 1 kompreneble donas al ni tri. Do tiu estus du. La iom ia klakas, por tiel diri, kiel 0 iĝas unu, multe kiel 9 rolojn trans kaj iĝas 0 kiam vi portas la 1. Ĉi tiam estus tri kompreneble. Four-- alia interesa okazas, kie tiuj ruliĝi super kaj vi portos la 1, por tiel diri. Do tiu, kompreneble, estas 4. Sed se vi rapide antaŭen nun, kio estas la plej granda nombro irante esti ke komputilo povas reprezenti? Do estas nur sep tiukaze, ĉu ne? Ĉar vi havas unu en la kvar, unu en la du, unu sur unu. Do jen 4 plus 2 plus 1. Tiel ke donas vin sep. Kaj fakte, ĝi estus ŝajnas unuavide ke komputiloj povas kalkuli ne pli alta ol tiu. Sed ĉi kompreneble ne estas vera. Kion ni homoj faras kiam ni volas kalkuli altaj ol kiel 999? Nur porti unu kaj nur aldoni kvaran cifero maldekstren. Kaj tiel ja ni povis. Ni povus havi ok la meti kaj 16a loko, kaj 32 loko, 64, 128-- kaj vi povas simple observu okazas ĝis malfinio. Do tiuj nuloj kaj ones-- la tn duuma system-- estas kion komputilo sciencisto farus ĝenerale nomas iom, aŭ duumaj ciferoj. Sed nun, kiel ni preni de la koncepto aŭ la grafikaĵo de tiuj aferoj al fakta komputilo? Ni ŝajnas esti saltante paŝo tie. Nu, la sola enigo fine de la tago, al mia tekkomputilo tie Estas ĉi fluo de elektro. Eĉ se jam pasis longa tempo ĉar vi pensis pri aŭ neniam pensis pri kiel elektro funkcias, ekzistas elektronoj fluas en aŭ eksteren, kaj tio estas mia speco de enigado. Do se tio estas ĉio, kion ni ricevas kiel enigo tie, kion ni povas fari kun tiu informo? Nu, ni povus pensi pri nulo kiel nur foresto de elektro. Nenio estas flowinw, nenio estas movanta, nenio okazas. Tio estas nur la defaŭlta state-- nulo. Sed se estas elektro fluas, kial cxu ne ni nur arbitre, sed tutmonde konsekvence, voki ke oni. Do simple por havi la rajton, Ni havas nulo, jes potenco, ni havos one-- neniun potencon, jes potenco. Kaj en tiu maniero, uzante ion pli fizika aŭ elektronika Ni komencu implementar ĉi nocio ion aŭ esti unu aŭ nulo. Efektive, ni povis nur fari ĝin tie. Do jen, mi ne tri sed ok ampoloj, ĉiu el kiuj havas propran ŝaltilo. Kaj do se mi volis reprezenti la nombro sep tien, Mi povus turni sur tiuj tri ampoloj. Kaj efektive, ene de mia komputilo estas milionoj, miliardoj da aferoj kiuj estas nur pli malgranda ol tiu, nomita transistoroj, ŝaltiloj, ke vi simple turni sur kaj for. Do tiuj estas big-- relative big-- ŝaltilojn ene mia laptop-- Estas multaj, multaj, multaj, multaj pli ŝaltiloj. Sed ĉiuj ili fari estas ĝuste that-- turni io plu, turni io ekstere. Kaj kiel tia, komputilo povas reprezenti, kun tiuj milionoj aŭ miliardoj de transistoroj, sunaj kaj multaj nuloj kaj aĵoj. Kaj ekzistas aliaj aparataro ankoraŭ ke permesas stoki informon longtempe, tiel ke kiam vi tiras la plug, vi ne perdos. Sed tio estas rakonto por alia tago. Do kion ni povas fari kun tiuj bitoj? Eble ni simple preni la premo ekstere de kunulinon povus iu volas veni ĝis tie kaj oferu demo? Mi vidis tiun manon unue. Kiel vi nomiĝas? MADAY: Maday. DAVID Malan: Maday, venu supren. Mi ĝojas renkonti vin. MADAY: Nice to meet you. DAVID Malan: Venu ĉi maniero. Mi ne devas lip vin. Bone. Do jen, ni havas, notice-- unu, two-- ni redakti ke fjordon unu, du, kvar, ok, 16, 32, 64, 128. Tio estas intenca. Ekzistas ok bitoj here-- duuma digits-- nuloj kaj aĵoj. Kaj iom estas utila unuo de measure-- Ne kiel utila unuo de mezuro sur sin. Kutime vi deziras almenaŭ ok el tiuj aferoj, a.k.a. bajto. Do ni havos bajto de bitoj tie. Do se ni volas defii vin kun, ekzemple, literumas eksteren, en duuma, tiu valoro here-- 42. Volas preni ponardopiko ĉe tio? MADAY: [inaudible]. DAVID Malan: Yeah, simple premi la iom blanka ŝaltiloj en fronto. Kaj vi volas literumi el 42, kaj ĉe kroĉas Estas ĉi CS50 streso pilko se vi ricevas tiun. Bone. Do vi havas 32. Ni tuj bezonas 42. Do jen ok, do tio estas 40. Kaj excellent-- tre bele farita. Dankon. [Aplaŭdo] Bone. Do ni havas unu pli streso pilko. Ni faru ĉi denove se ni povas. Unu alia volontulo? Libera streso pilko, libera streso pilko. BONE. Super tie en la mezo, ĉu vi volas veni malsupren? Bone. Mi scias. Tie ni iru. Tiel la nombroj here-- venu malsupren. Kio estas via nomo? DAVEY: Davey. DAVID Malan: Davey. BONE. Venu supren, Davey. Mi ĝojas renkonti vin. Kaj kion ni tuj havos vin spell-- se vi povus restadi tie por nur unu moment-- estas la numero 50. Sed, sed, sed sed, sed tiuj estas lernojaro lernejo magnetoj por kialo. Ĵus iomete pli malfacilan, bone? Ekzistas ankoraŭ ok. Bone. Do kion ni havas tie? Ni havas 32. Nice. 32 plus 16 donas ni 48-- tiel proksima. Kaj mirinda. Gratulojn al Davey ankaŭ. [Aplaŭdo] Bone. Do ni povas fari ĉi tutan tagon, kaj ne akiri ĉiujn ke multe pli interesa kaj pli defia. Sed tio estas vere la point-- Tiel relative simpla ĝi estas, fine de la tago, kia komputilo faras stoki informon, stoki enigoj kaj finfine stoki aŭ reprezenti tiuj eliroj. Sed nombroj sole ne ĉiuj ke interesa. Do homoj, antaŭ kelkaj jaroj, decidis, vi scias kion? Estus agrabla se komputiloj ne nur kalkuliloj por aritmetiko operacioj, sed fakte povis fari aferojn kiel tekstoprilaborado, aŭ retpoŝto, aŭ pli modernaj enkarniĝoj de tiuj specoj de teknologioj. Kaj tiel la mondo decidis arbitre, sed universale, ke se vi volas konservi la ĉefurbo litero A en komputilo, vi scias kion? Ni simple ĉiuj konsentas enteni iu mastro de nuloj kaj ones-- bits-- ke finfine reprezentas la decimalan numeron 65. Ni simple ĉiuj konsentas pri tio. 66 reprezentus B, 67 reprezentus C, kaj ekzistas aroj da aliaj ŝablonoj de nuloj kaj, aŭ suba nombroj, kiu reprezentus aliaj leteroj ankoraŭ. Do se vi speco de mense absorbi tiun momenton, Mi intence metis supren A tra Mi, kie H 72 kaj mi estas 73. Se komputilo tiam, en la kunteksto de vorto prilaborado programo aŭ retmesaĝon, malkaŝis sub la kapuĉo havi tiuj mastroj de bits-- padrono de bitoj reprezentantaj 72, tiam 73, tiam 33-- kio povus ĉi literumi en tiu programo? Tiel hi, kaj tiam io. Ni ne nepre scias, sed ja 33-- ne sur la diagramo earlier-- Estis simple ekkrion punkto. Do 72 estis H, 73 estas mi, 33 okazas esti ekkrion punkto ankoraŭ. Sed jen ĉio bone kaj bonan, kaj fakte nuntempe, anstataŭ nur uzi sep aŭ ok bitoj, danke al io nomata Unikodo kontraste al ascii reen en la tago, ni efektive povas reprezenti eĉ pli interesaj karakteroj ol nur tiuj originalaj Angla emata literoj. Sed ni povas ankaŭ reprezenti eĉ neater aĵoj kiel koloroj. Se vi iam aŭdis la akronimo RGB, ruĝa, verda, blua, ke nur signifas ke komputilo tipe uzas tri aroj de bits-- iu nombro de bitoj kiuj reprezentas kelkaj pri kiom ruĝa vi volas, alia aro de bitoj por kiom verdaj vi volas, kaj alia aro nombro por kiom blua vi volas. Tiom grandan nombron signifas multan ruĝa, malgranda nombro signifas neniu ruĝa. Kaj tial tiuj estas speco de meza valoroj tie. Tial donu al mi iom ruĝa, donu al mi iom da verda, kaj donu al mi iom da bluo. Kaj se vi miksas tiujn tri nuancojn de koloro kune, en tiu kazo, vi ricevas tiun malklaraj ombro de flava aŭ bruna. Sed tiu padrono de ok plus ok plus eight-- do 24 bits-- maldekstre dekstren, estas kiel komputilo reprezentus tiu aparta koloro. Nun tio estas nur punkto sur ekrano. Se vi rigardas vere fermi je via televido via komputilo, vi vidos punktoj aŭ rastrumeroj. Kaj se vi havas tuta krado de rastrumeroj, horizontale kaj vertikale, vi havas bildojn. Kaj tiam se vi prenas bildon kaj tiam lavon montru vin alian bildon, alian bildo, alia bildo, alia bildo, vere rapida, vi kompreneble havas filmojn. Kaj tiel rimarkos kie ni komencis. Ni komencis kun tiuj nuloj kaj aĵoj. Ni laboris de tie al decimala nombroj, kiel ni reprezentas ilin. Nun ni havas literojn de la alfabeto. Sed en aliaj kuntekstoj atendu, ni povas uzi kelkaj pli bitoj kaj reprezenti kolorojn. Kiam vi havas la kapablo por reprezenti kolorojn, vi havas la kapablon por reprezenti fotoj kaj vigla gifs kaj aliaj tiaj karakteroj sur la ekrano. Kaj kiam vi havas tutan faskon da bildoj flugante per la homa samtempe, ĝi aspektas kiel filmoj, kaj tiel vi ricevas filmetoj tiel. Do uzante tiujn tre simpla primitivoj ni havi la maniero reprezenti finfine ĉiuj tiuj formoj de amaskomunikilaro. Kaj ni abstraída denove kaj denove kaj denove, ĝis ni preni de la plej malalta nivelo al tiu plej alta nivelo. Tiel ke al ni tiun ĝenerala ideo de abstracción. Sed ni komencis tie. Tie nun, ni eble reprezentas en komputilo nia enigoj kun nuloj kaj, nia eliroj en nuloj kaj, sed kio eliras ene la skatolo? Tio estas kie komputilo scienco metas interesa. Tio estas kie vi vere kunportos propraj mensoj porti solvi problemojn. Ni povas nun kondiĉas, por la resto de la semestro, jes. Mi scias kiel duuma verkoj. Mi memoras kiom Ascii aŭ Unicode-- la surĵeto al leterojn verkoj. Kaj ĝi certe staras rezonadi ke ni povus reprezenti ruĝaj kaj verdaj kaj blua kaj reprezenti plurmedia tiel. Sed tiu estas la interesa materialo. Jen kion faras iu kapablas solvi problemojn. Kaj unu tia problemo ni ŝatas fari, ja, prenas asistencia, aŭ farante tiun algorítmicamente. Kaj denove, mi povus fari tion. Mi povus fari unu, du, tri, kvar kvin, ses, sep, ok naŭ. Kaj mi povus skribi ĝin malsupren al sekvigi ĝin. Sed tio estas nur kiel mi farus reprezenti la informon. Aŭ mi povus fari tion faster-- du, kvar, ses, ok, dek, 12, 14, 16, 18, 20, 22-- sentas dufoje kiel rapida sed ĝi estas ankoraŭ tuj prenos tuta multan tempon. Sed rezultas, se ni utiligi ankoraŭ alia resource-- kaj ja komputiloj tiuj tagoj havas multoblajn CPU aŭ cerbo. Rezultas komputiloj povas fari multajn aferojn samtempe, kaj ja ni, en tiu ĉambro, povus reprezenti ĝuste tio. Do ĝi estas iom socie mallerta, sed se vi farus humuro mi por nur tri paŝo procezo, lasu Mi demandas ĉiuj en loko ekzistas nur stari dum momento. Starig ^ i. Tiel pensas al vi mem, nombro one-- do ĉiuj en tiu ĉambro, krom la personoj kiuj ne oblige, pensas numero unu. Por ke estas via nombro nun. Kiu estas la unua paŝo, aŭ kiel komputila sciencisto aŭ programisto estus tipe fari, ni tuj por komenci kalkulon je nulo. Se la plej malgranda nombro kiu povas reprezenti kun tiuj ampoloj estas nulo, por nur lasi ilin ĉiuj ekstere, Mi povus tiel simple komenci kalkulon nulo estas anstataŭ unu. Kaj tial jen kio komputilo sciencistoj faras. Do paŝi nulo, ekstari kaj pensu pri la nombro unu. La sekva paŝo estas this-- paro ekstere kun iu staranta kaj aldoni viajn numerojn kune. Mirinda. Do tiumomente ĝustatempe, laŭvorte ĉiuj partoprenantaj pensas la numero 2, krom cxar unu nepara persono se ni havas nepara nombro de homoj en la ĉambro. Kaj nun la tria ŝtupo tie tuj esti this-- el vi devus sidiĝi. Unu el vi devus sidiĝi, kaj se vi ankoraŭ staras, reiru paŝi unu. Bone. Bone. Tiel pli kaj pli da homoj devus esti sidiĝante. Rimarku ke ĉi tio induktita oni loop-- ia ciklo. Iuj el vi estu mallerte ŝtopita, iri tien kaj reen inter paŝo unu kaj du, unu kaj du, unu kaj du. Estas bone. Nia unua cimo. Ni agos tiel. Bone. Lasu min provi sproni aferojn kune. Teorie, nur unu persono staras kiel ĉiu daŭre paro for. Sed lasu min akceli aĵojn kun la homoj ankoraŭ staras. Kio nombro vi pensas? 46. BONE. Antaŭeniri kaj sidiĝu. Vi infanoj daŭre staras. Kiu ankoraŭ staras? Kio nombro vi pensas? BONE. Do ni revenos al vi. En la dorso? Kio estas tio? 22. OK iu alia supren top-- yeah? 34. BONE. Super tie sur mia right-- ĉi tien? 132, tre bela. 22? BONE. Kaj kiu estas ankoraŭ staranta? Super tie? 46, tre agrable. 72. Mi ne povas ekhalti multe plu. Yeah? 30, bela. Super tie? 23? 23. Kaj mi pensas ke estas ĉiuj krom vi uloj, neniu premo. Ho, atendu. 28? Nur ok. BONE. Nur ok. Cxi tie? 30. 23. 24. 18. Tiu estas la plej malbona efektivigo de tiu algoritmo ĉiam. BONE. Do ajnulo? Ajnulo? BONE. Unu pli. 16? BONE. 16. Bone. Do se mi ne forgesis iun en la brilego tie, kiam mi batis Enter, ni vidos, algorítmicamente, la totala nombro de homoj en Sanders. Ĉar denove, ĝi estas kvazaŭ ĉiuj kiel vi sidiĝis, preteriris vian numeron for al iu alia, al iu alia, al iu alia, tiel ke en teorio, en la fino, nur unu malgracia persono devus resti staranta. Sed tio estas bone. Ni rapidis aĵojn permane. Ĝi estas speciale malfacile vidi en ĉi tiu aparta spaco. Kaj la tuta nombro de homoj Ni kredas ke estas tie estas 546. La totala nombro mi transdonis de la instruado uloj, kiu faris la malnova lernejo malrapida maniero, estis 820. [Ridante] [Aplaŭdo] Estas bone. Do tiam, estas tiuj cimoj. Kaj tio estas bone. Kaj tiel pensas reen sur tiu unuafoje ion vi skribas ne necese labori. Tio okazis al mi ĉi tie ankaŭ. Sed ni nun pripensu, kiel ni povus apliki tiun saman ideon al io vi eble vidis antaŭe, kiu estas tiu malnova lernejo teknologio here-- vere granda telefono libro. Kaj supozu ke tiu telefono libro Havas 1.000 paĝoj kaj 1.000 nomoj kaj nombrojn alfabete ene de ĝi. Nu, ni povus ia apliki similan ideo nuna fizika problemo, nur uzante min. Mi nur ia trompis per ekspluatanta vi ĉiuj kun multoj kaj multa malsama CPU aŭ cerboj ekzekuti iun algoritmon. Sed se ĝi estas nur malgranda malnova mi, mi povas ankoraŭ utiligi tiu sama esenco de ideo la dividadon kaj konkeri tiun problemon denove kaj denove, per duono de vi, duono el vi, duono el vi, duono el vi, teorie konservis sidon ĝis ni forlasis, teorie, kun nur unu persono. Do en ĉi tiu malnova lernejo technology-- ni ne bezonas tiun map-- ĉi malnova lernejo teknologio, ni povus komenci serĉi iun ŝatas Mike Smith, unu paĝo samtempe. Kaj mi vidas ke ne, Mike ne estas ĉi tie. Mi ankoraŭ en la Sekcio. Eventuale, mi trovas min en la B sekcio. Kaj tio estas algorithm-- paŝo post paŝo instrukcioj. Komencu ĉe la komenco kaj unu paĝo samtempe, serĉi Mike Smith. Estas ĉi correct-- ĉi algoritmo aŭ alproksimiĝo? Jes, ĝi estas ĝusta. Se Mike estas tie, eventuale Mi atingos lin. Sed ĝi ne estas efika. Estas evidente tre malrapida. Do mi povas utiligi la sama twosies alproksimigi. Mi povas fari ian du, kvar, ses, ok, 10, 12. Ĝi estas duoble pli rapida. Mi tuj atingos Mike rapida se ĝi estas tie. Ĉu ĝi estas ĝusta? Jes, sed mi aŭdis little-- ne. Nun mi aŭdis neniun. Yeah. Ekzistas cimo potenciale. Eble Mike ĵus hazarde ricevas krampitaj inter du paĝoj, ĉar mi flugas tra ĉi du samtempe. Tiel almenaŭ ni bezonas iujn speco de kondiĉa solvon. Mi devas diri, hej, se mi batis iun kies nomo komenciĝas per T anstataŭ S, Mi bone duobligi reen almenaŭ unu paĝo. Do kalesxo unue, sed fikseblaj. Sed neniu el ni tuj serĉi Mike Smith tra 1.000 paĝo telefonon rezervi unu paĝo samtempe. Kio estas normala persono faros? Vi tuj iru al la S-a, se vi sciis kie la S-aj jaroj. Vi eble iras malglate al la mezo aŭ iomete skewed al la fino. Kaj mi rigardas malsupren tie kaj Mi estas en la M sekcio. Sed kion vi scias pri tiu problemo nun, ke ni ne nepre scias antaŭe kun ĉiuj el ni simple rakonti nin ekvivalente? Nu, Mike estas direktata esti en tiu duono de la libro se li estas tie ĉe ĉiuj ĉar ĝi estas ordo. Kaj tiel vi povas tre dramatically-- [Anhelante] Mi scias. [Aplaŭdo] Ĝi estas vere vere facila se vi faras ĝin la spino tie. Sed vi povas tiam ĵeti duono de la problemo for. Nun, mi lasas kun la sama problem-- trovi Mike Smith en telefono book-- sed nun la telefono libro komenciĝas ĉe M kaj iras al Z, sed estas duone tiel granda. Sed tio kio estas impresa. Ĝuste kiel en teorio, vi infanoj, kiam vi ĉiuj sidiĝis nur duone samtempe, la problemo akiris duono tiel granda, duone tiom granda, denove kaj denove. Do tio ĉi problemo fariĝis la saman problemon sed duone tiel granda. Nun ĝi estas 250 paĝo problemon. Kiam mi rimarkas, ho, mi estas en la T sekcio hazarde. Mi iris tro malproksime. Mi povas ĵeti ke duono de la telefono libro for. Nun, mi estas malsupren al kvarono de la problemo. Kaj vi povas ripeti, ripeti, ripeti ĝis, en teorio, vi lasita kun nur unu paĝo. Kaj se Mike estas sur tiu paĝo, Mi povas nun solvi tiun problemon. Sed kiom rapide mi ja solvi ĝin? En la unua kazo, ĝi prenis min kiel eble 1.000 ŝtupoj trovi Mike Smith. Ĝi povus esti prenita kunulinon Mi kaptis la telefonon libro kaj mi komencis serĉi unu paĝo samtempe, kaj Mike povus esti 1.000 paĝoj poste. Dua alproksimiĝo eble prenas min 500 ŝtupoj, ĉar mi flugas tra du samtempe. Kaj la tria alproksimiĝo tamen, ĝi estas precipe potenca. Sed ni pripensu kion ni efektive faris kun tiu tria alproksimiĝo. Mi havas kion mi vokas nur tiuj deklaroj tie, unuope. Repreni telefono libro. Malfermi al la mezo de la telefono libro. Rigardu nomoj. Kaj tiam aĵoj iom pli intelekte interesa, se ankoraŭ simpla. Se Smith estas inter la nomoj en tiu aktuala paĝo, tiam fari ion kondiĉe. Estas kiel forko en la vojo. Nomas Mike. Se Mike estas inter la nomoj sur tiu paĝo, nomita Mike. Sed nur faras linion kvar se linio arbo, se vi volas, estas vera. La respondo al tiu demando estas jes. Alie se Smith estas pli frue en la book-- alivorte, se mi estas en la M sekcio kaj mi serĉas iun maldekstren, kion mi faru Estas io tre simila. Tiam mi devus malfermi al la mezo de la maldekstra duono de la libro. Iru do forlasis, kaj tiam reiru paŝi du. Rigardu la nomojn tie. Do alivorte, faru la samon, sed sur problemo kiu estas estis duonigita. Vi scias kion alian? Se Smith estas poste en la libro bazita sur la paĝo mi rigardas, malfermita al la mezo de la dekstra duono de la libro kaj tiam reiru paŝi du, else-- ekzistas kvara ebleco tie. Mike ĉu tie aŭ maldekstren aŭ al la dekstra aŭ ne ekzistas. Kaj tie ni pli bone pripensu tion. Kaj fakte, se vi iam havis via komputilo nur frakasi vin, ke estas kelkfoje, sed ne ĉiam, la rezulto de nur homa programisto ne rimarki, ho pafi, ekzistas fakte tiu kvara scenaro. Kaj se vi ne skribi kodo manipuli ke scenaro, foje vi ne scias kion la komputilo povus fari. Kaj ja programo povus frakasi. Sed en ĉi tiu kazo, mi kredas pri tio, kaj mi diris, alie forlasi, ĉar tio estas la kvara logikaj ebla scenaro. Nun ni nur aldonu kelkaj vortprovizo do ni povas komenci ĵeti ĉirkaŭ terminoj kiuj alispecaj bela intuicia. Ĉiujn aferojn Mi havas precize elstarigitaj en flava tie, Mi simple tuj al la funkcioj aŭ proceduroj. Ili estas nur speco de agoj. Tiel repreni, malfermita al, rigardi ĉe, telefoni malferma, malfermita, quit-- tiuj estas nur agoj, aŭ ni voki ilin pli formale, funkcioj. Dume, nun en flava, Mi reliefigis aferoj that-- ni komencu nomante ilin kondiĉoj aŭ branĉoj. Jen estas decido punktoj kie vi venu ĉi vojo, tiamaniere, aŭ alian direkton hejme. Do tiuj estos kondiĉoj. Kaj nun ĉi tiu estas iom amatoro. Ni nomas tiujn demandoj Buleaj esprimoj, post iu kun familinomo bool. Kaj Bulea esprimo Estas nur io tio ĉu vera aŭ malvera, jes aŭ ne. Do ĝi estas la demando kies respondon vi zorgi pri, por en kondiĉo fari decision-- reiri respondon, kaj poste iru maldekstren aŭ dekstren, nek ion alie tute. Kaj poste persiste, tiuj linioj here-- reiri paŝi du, reiri paŝi two-- ni povus apliki tiun ideon en malsamaj manieroj. Kaj poste tiuj de vi kun programado sperto eble faritan aŭ povas imagi faras tion malsame. Sed por la hodiaŭa celoj, estas nur la ideo kiu importas. Tio estas persvadanta kio ni ĝenerale nomas oni loop-- ia ciklo, ĉar ĝi faris min fari ion denove. Do nun, ni nur konsideri kiom bone tiu algoritmo estas. Ĝi estas korekta. Se Mike en la libro, ĝi estas unu el tiuj kvar scenarios-- multfoje kaj denove, ni trovos lin. Sed kiel bona estas? Nu, ni ne havas esti tro formala tie. Sed ni nur komploti io, x kaj y, por akiri sento de la formo de ĉi tiu problemo. Sur la x-akso tie estas la grandeco de mia problemo. Kaj ili y-akso tie estos la tempo por solvi. Do eble tio estas la numero de paĝoj. Eble tiu estas sekundojn aŭ paĝo turns-- ajn. Tamen vi volas rakonti estas kion ĉi bildo reprezentos. La unua algoritmo, mi tuj priskribi kiel simple kaj rekte. Se estas n paĝoj la telefono libro, tiam povus preni min kiel multaj kiel n paŝoj por trovi Mike. Se Verizon aŭ la telefona kompanio aldonas pli paĝo venontjare, ĝi povus preni min pli step-- pli unueco de tempo trovi Mike. Do ekzistas nur tiu unu al unu rilatumo. Ĝi estas rekta linio deklivo. Dume, tiu dua algorithm-- se mi iras du je time-- du, kvar, ses, ok, aŭ double-- irante tra la paĝoj dufoje samtempe, du je fojo, ĝi estas ankoraŭ rekto. Ekzistas nun unu al du rilatumo, sed nur iom pli malalta. Do, se estas tio multaj paĝoj en la diagramo tie en flava, kiuj povus porti min tiun multaj paŝoj aŭ sekundoj, alie ĝi estas tuj prenos min dufoje kiel multaj sur la ruĝa linio. Sed la verda linio estas la reala takeaway. Jen kion ni ĝenerale voki logorithm-- ŝtipo de n, kie n estas la nombro da paĝoj. Sed estas la formo kiu gravas hodiaŭ, ĉar ni ne havas eĉ pripensi komplotanta punktoj. Pensu pri ekstrema scenaro. Supozu Verizon morgaŭ duobligas la nombro de paĝoj en tiu telefono libro, de 1.000 al 2.000. En la unua algoritmo, mi povus malŝpari kroman 1000 paŝoj serĉas Mike, nur ĉar Verizon duobligis la grandecon de la libro. La dua algorithm-- ĝi povus prenu min ekstra 500 ŝtupoj. 1.000 pli paĝojn, mi iras du je time-- 500 pli paŝoj al trovi Mike. Sed tiu tria algoritmo Estas speco de magia. Verizon duobligas la nombron paĝojn el 1.000 al 2.000, sed kiom pli paŝoj faras ĝi portu min al serĉi Mike? Estas nur unu, ĉar mi povas nur ŝiri la telefonon libro pli tempo de 2.000 paĝo problemon al 1.000 paĝo problemo, kaj voila. Mi glutis amasa mordo el ĝi. Kaj se vi iros tre ekstremaj, supozu ke la telefono libro kompanio havis ion freneza kiel 4 miliardoj paĝo telefono libro. Nu kiom da paŝoj povus gxin preni trovi Mike Smith en 4 miliardoj paĝo telefono libro? Estas granda nombro, sed nur 4 miliardoj 2 miliardoj al 1 miliardo 500 milionoj, 250 million-- ankoraŭ sonas grandan nombroj, sed mi tre rapide alveni al malgrandaj valoroj. Kaj fakte, se mi faras la math Bone, mi povas nur dividi 4 miliardoj de malglate 32 epokojn Mi alvenas malsupren al nur unu. Do se tiu telefono libro estis 4 miliardoj paĝojn longa, neniu granda interkonsento. Ene de kelkaj sekundoj, eble 32 sekundoj, mi povus dividi ĝin en duono kaj eventuale trovi Mike aŭ konkludi ke ĝi ne ekzistas. Kaj tio estas la esenco de algorithm-- bona algoritmo. Kaj tio estas unu el la celoj de klaso kiel ĉi, estas provanta kalkuli ekstere kiel mi solvi la problemon ne nur ĝuste, kiel mi ĉiam sciis kiel fari ĝin unu paĝo je time-- sed korekte kaj bone. Kiel mi desegni bona solvojn al problemoj? Do ni preni momenton tie kaj doni vin sento nun de CS50 la kurso itself-- enkonduki kelkaj kurso laborantaranoj. Ĵus antaŭ 2:00, Ni preni mallongan ripozon tiel ke tiuj de vi kiu estas butikumado povas anaso eksteren kaj preni rigardi iun alian klason kaj spekti la resto de tiu linio. Sed nuntempe, mi konigu CS50, la klaso mem, kaj aparte kio estas nova. Tial la pasintaj printempo, ni Pasis sufiĉe da time-- la kurso de dungitaro kaj I-- pensante pri kio estas ni volas CS50 esti, kaj irante reen al unua principoj, por tiel diri, konsideri kio estas ni volas tiu kurso por simili kaj estu kiel por liaj studentoj. Kaj tiel vi vidos en problemo fiksita nulo tiel, invito preni rigardi ke URL kiu resumas kelkaj el la motivaciones malantaŭ la sekvaj karakterizaj de aŭtuno 2016. Do kiel vi eble kolektis el TL: DR almozon, la Syllabus hodiaŭ same kiel de la kurso katalogo, tiu jaro en CS50, vi nur atendas ĉeesti today-- tiel laboro bone done-- kaj la lasta prelego de novembro 21. Kaj vi estas bonvenaj sed ne atendas ĉeesti tiujn prelegojn en la mezo, ĉar kion ni faras tiu jaro, estas pafanta en reala tempo la kurso materialo. Do ĉio restos nuna kaj korpigita kiel bona ni can-- aktualaĵoj kaj konversacioj kiujn homoj povus esti havante en industrio en la mondo, sed farante ke materialo havebla, kiel rezulto, eĉ earlier-- kompleta kun plena teksto transskriboj kaj searchability kaj ligoj al aliaj rimedoj. Kaj efektive, ni estis asertanta por iu tempo kaj ni nun kredas tiun, ke ni povas krei, ciferece, pli mergan, pli konvinka eduka sperto, kontraste por kolektanta tie iuj 23 fojojn persone auxdis iu amas min simple paroli pri komputiko, kontraste al engaĝi pli aktive. Do vi vidos en la kurso Syllabus skizo de la semestro tie, kune kun kiam prelegoj volo filmado, al kiu vi estas bonvenon sed ne atendis, kaj kiam ili volas esti liberigita sur la kurson de afiŝinto. Kaj kion ni faros ĉi tie sur Merkredo komencanta sekvantan semajnon, Estas multe pli intime, kun nur tiuj homoj, kiuj volas partopreni, Estas tn promeno tra, kie mi kaj la kurso de kapoj efektive fari aferojn iom pli intimaj cxi tie en la orkestro sekcio, daŭre havas kelkajn teknologio kaj trairu la nuna semajno problemo aro, kaj proponi vin particularly-- se inter tiuj malpli comfortable-- ĉiuj pli gvido ke vi eble volas aŭ bezonas por la semajno defio. Kaj simile, por tiuj kiuj ne povas ĉeesti tiujn persone, ne granda interkonsento. Tie estos simile gvidata de unu el la kurso altranga personaro, Zamalya, la saman ŝancon enigita en la problemo aroj mem. Problemo aroj ĉi jaro Estos ĵetita la vendredo kaj ne plu faras sep tagoj poste, sed 10 tagojn later-- intence imbrikitaj kun ĉiu problemo starigis, por bone alĝustigi, Ni esperas, refluo kaj fluo en studentaj horaroj, speciale kiam midterms aŭ atletiko aŭ akademiuloj aŭ extracurriculars emas veni kaj iri speciale meze semestro. Tio devus doni vin iom pli diskreteco ĉu vi front ŝarĝi vian semajnon kun CS50 aŭ reen ŝarĝo sur la sekvanta semajnfino anstataŭe. Do rigardu al la kurso Syllabus tie por la horaro de tio. Kaj vi rimarkos tro inter la ŝanĝoj ĉi jaro, por tiuj pli familiara kun programadon en la pasinteco, ni komencos la semestro kiel ni volas hodiaŭ en Scratch, enfokusigi ĉefe sur la lingvo nomita C kaj tiam transiro ne al PHP, sed al lingvo nomata Python al la fino de la semestro en la kunteksto de ttt programado, kune kun SQL kaj JavaScript, HTML, CSS, kaj ankoraŭ pli. Kaj en respondo al FAQ, ĝi estas ja la kazo ke CS ne estas tiel timiga, kiel mi iam pensis ke estis, sed ĝi estas tiel laboro kiel mi aŭdis ĝin povus esti. Sed tiu estas la diri ke tie estas iuj statistiko de aŭtuno 2015 studentaro, per la horizontalaj bluaj linioj reprezenti la averaĝa nombro de horoj raportita. Kaj vi vidos averaĝe ses por 10 por 12-- eble 16 aŭ tiel kaj tiel antaŭen, sed kun alta varianco esti klara. Kaj do konscias ke ekzistas ne nur studentoj pli komforta kaj malpli komforta en la kurso, sed korespondan subteno strukturo akiri tiujn lernantojn tra la semestro sukcese. Efektive, en respondo al FAQ, devus vi prenas CS50 kiel unua jaro? Absolute. Kaj fakte, mi bedaŭras Ne trovinte mian vojon aŭ fondi novan kampon tiu unua jaro ankaŭ. Kaj vi volas preni CS50 kun aliaj kursoj, certe kiel well-- kaj la ĝenerala konsilo ni eble doni studentojn, ke CS50 estas probable ne tia klaso aŭ intro klaso ke vi devus preni kun tri aliaj aŭ kvar aliaj p-aro klasoj. Sed se vi prenas du aliaj p-aro klasoj, io alia, kaj CS50, absolute regebla. Mi havis multajn studentojn en la pasintaj faris tre sukcese. Kaj akiri vin al tiu cellinio sukcese, faras la kurson havas sections-- malsamaj aŭtoveturejoj por studentoj malpli komfortaj, pli komforta, kaj ie intere, per kiu en la kurso unua problemo aro, Vi estos petita por priskribi vin mem. Kaj se vi estas inter tiuj malpli komforta, ĝi estas la speco de afero ke vi nur iom konas. Kaj efektive, jen estis la kreskanta demografia en CS50 por tre kelkaj jaroj. Segun lasta falo por Ekzemple, 58% de la klaso priskribis sin kiel inter tiuj malpli komfortaj, kun 9% inter tiuj pli komforta, kaj tiam la aliaj studentoj tie ruĝaj priskribante sin kiel ie intere. Kaj vi vidos tie la temoj supertuto kaj horaro de sekcioj, ĉiu el kiuj proponas en persono, en reala tempo, kun la paso de mirinda kunlaborantaro de instruado uloj kaj kompreneble helpantoj, el kiuj kelkaj vi renkontos en nur momento. Sekcioj sin, kiel vi vidos, ĉu esti lundon kaj mardon kaj merkredo, tiel kiel por permesi al vi plonĝi post engaĝi, se vi tiel elekti, en la kurso prelegi frue tiun semajnon. Kaj tiam oficejo horoj, kiuj Certe, kun ĉiu pasanta jaro, estis neniu malpli de defii por la kurso. Kaj ĉi tiu jaro, ni planas ne nur teni oficejo hours-- unu sur unu ŝancoj helpon por studentoj merkrede ĵaŭdo kaj dimanĉoj, la lasta de tiuj estante en la posttagmezo de dezajno redukti iuj de la streso kiu nevarie ŝprucas kun malfrua nokto p-settting kun limdato looming-- sed oficejo horoj estos ankaŭ proponitaj lunde kaj marde kaj Merkredo kaj vendredo kaj sabatoj, danke al niaj amikoj en HSA. CS50 nun havas lian propran spacon por studentoj kaj CS50 bastonon, atop 67 Mount Auburn Street, Dekstre en Harvard Square. Vizio por kio estas ke CS50 TFS kaj CAS dum FESTO, preskaux tra plej tagojn, estos tie por subteno. Do se vi havas iun demando sur p-aro aŭ vi sentas iom blokita aŭ iom konfuzita, kaj heck, vi havas horon aŭ duonhoro inter klasoj, speciale en la square-- povas pop en kaj havas tiun demandon respondis de havi tiun konfuzon clarified-- tre en la spirito, vi konas, de la matematiko fako mem matematikaj demandoj centro, sed preskaux ĉirkaŭ la horloĝo por [? Gcal?] Ke ni afiŝos rete. Tutoring estas ankaŭ disponeblaj por tiuj studentoj, libere de la kurso propra dungitaro se vi ŝatus pli intima en unu, aŭ du aŭ tri samklasanoj nur, laboranta kun unu el la kurso de laborantaranoj. Kaj efektive, tiuj ĉi estas nur iuj de la kurso de laborantaranoj, kelkaj el kiuj vi instruos vin renkonti en nur momento. Fakte, CS50 propra kapo instruado ulo, kaj kapo kurson asistanto, kaj preceptor, povus veni supren, permesi ilin diri saluton. [Aplaŭdo] Parolanto 1: [inaudible]. [Aplaŭdo] Parolanto 2: [inaudible]. [Aplaŭdo] Parolanto 3: [inaudible]. [Aplaŭdo] DAVID Malan: Kaj permesu al ni alporti surŝipe du el CS50 la plej altranga personaro, Rob kaj Zamayla tiel. [Aplaŭdo] Efektive, ambaŭ Rob kaj Zamayla estis kun ni tiom longe, ke mi povis enirontajn en CS50 la arkivoj kaj trovi tiun tre SD bildoj de ilin partopreni sur scenejo mem kelkaj jaroj. ROB: [inaudible]. [Aplaŭdo] ZAMAYLA: [inaudible] [Aplaŭdo] DAVID Malan: Dankon. Do krom tiuj teamanoj ĉi tie, CS50 havas teamon de preskaŭ 100 stabanojn, kiuj ĉiuj Estos disponebla por sekcioj kaj oficejo horoj kaj tiel plu. Kaj kiel Rob diras ankaŭ, tiu estas la plej signifa revizio el CS50 en la 10 jaroj kiuj Mi estis en [inaudible]. [Inaudible] centris speciale en havigante apogo strukturo, borderas for multajn la macizo kiu estas estita amasigitaj en 10 jaroj de ripeta evoluoj en la paso de problemo aroj. Do ĉi tiu jaro, ne nur en klaso sed ankaŭ en la formo de la kurso la problemo aroj, se vi trovas aferoj esti pli stiligitaj, Trimmer, multe pli regebla ol en jaroj pasintaj, dum ni versxis iom el la pakaĵo tio disvolvita de naturo de evoluanta jaro post jaro kaj ripetanta. Do la nova kaj plibonigita komenciĝas hodiaŭ. Vi renkontos iun pli de la Kompreneble stabo en la [inaudible] ĉe 2:30, kie ni servos, kiel tradicio, kuko. Ekzistas iom pli kuko ol tiu, sed vi renkontas Erin kaj Tobias kaj aliaj ankoraŭ. Kaj mi donos al vi tour antaŭ ni aŭdas de iuj de la aliaj laborantaranoj en la klaso, de kio atendas ankaŭ. Fakte, ni ĉiam komencu CS50 semestro ĉi venas sabaton, kun kio nomiĝas CS50 Puzlo Tago. Ĝi havas nenion komunan kun komputiko per, sed kun ĉirkaŭ problemo solvanta pli ĝenerale. Kaj se vi tiel elektos partopreni, po kelkaj el la invitoj, vi eble vidis pordon faligita aŭ sur la scenejo ĉi tie, ĝi estas ŝanco en teamoj de du aŭ tri aŭ kvar, partopreni por puzloj kaj pico kaj premiojn kaj more-- tiu sabato, resti agordita por pli. Vi trovos ankaŭ, ke ĉiu Vendredo, je Fajro kaj Glacio, does CS50 alportos tuta aro da studentoj lunĉi, fari granda klaso sentas pli intima, kaj ĝenerale kunvenigi alumni kaj amikoj de industrio paroli pri kio oni havas estis ĝis ekde studentiĝado. Simile, tiu jaro, ni inaŭguri la unuan CS50 50 kodigo contest-- mez-semestre ŝanco permesi ĉiuj sur opt en formo, havi defio de menskapablo kontraŭ samklasanoj, denove en teamoj de du aŭ tri aŭ kvar, uzante nur ke programado savvy ke vi tiam havas sub via zono post nur ses aŭ sep semajnoj de la klaso, kaj partoprenante en tiu speco de konkurado online-- se vi ŝatus kulturi viajn proprajn lertecojn des pli en tiu defio. Fine de la semestro estas la tn CS50 Hackathon-- ŝanco kiu komenciĝas je 7:00 PM finiĝas je 7:00 AM, kaj survoje Estas 12 vesperaj horoj en kiuj plonĝi en la paso fino project-- ŝancon desegni kaj apliki plej ion de intereso al vi per via instruado ulo gvido. Ĉirkaŭ 9:00 AM ni tipe servi pico, 1:00 AM, Philippe, kaj la malmultaj el ni kiu ankoraŭ maldorma je 5:00 AM, Estas pramo bussed malsupren la vojo al IHOP por matenmanĝo. Kaj tiam post kelkaj tagoj estas la tn CS50 fare-- finis la semestro ekspozicio en okazigo de kiom ege multaj de CS50 studentoj venis de semajno nulo la tutan vojon al semajno, kaj tenanta en menso ke 73% de tiuj samklasanoj kaj via ĉi jaro havas neniam prenis CS klaso antaŭe. Fakte, al reemphasize tiel, tie Estas kelkaj pli vizaĝoj de CS50 bastonon. Parolanto 4: [inaudible]. Parolanto 5: [inaudible]. Parolanto 6: [inaudible]. Parolanto 7: [inaudible]. Parolanto 8: [inaudible] Parolanto 9: [inaudible]. Parolanto 4: [inaudible]. Parolanto 10: [inaudible]. Parolanto 11: [inaudible]. Parolanto 12: [inaudible]. Parolanto 13: [inaudible] Parolanto 14: [inaudible]. Parolanto 13: [inaudible]. Parolanto 15: [inaudible] Parolanto 16: [inaudible]. Parolanto 11: [inaudible] Parolanto 5: [inaudible]. DAVID Malan: Iuj de la teamo vidas butikumado klasoj. Sed se tiuj membroj de CS50 bastono estas tie, povus veni supren por nur momento. CS50 TFS kaj CAS kaj [? bastonon?] membroj here-- tiuj estas nur kelkaj de la faces-- unu el kiun vi ĵus vidis, kaj kelkaj alia lando kaj kelkaj aliaj ankoraŭ. Kial ni ne iru antaŭen kaj permesi vi uloj kvin minuta paŭzo. Se vi bezonas anaso al butiko klasoj, tio estas bone. Kaj post kvin minutoj, ni rekomencu, prenante rigardu Scratch-- la unua de nia programlingvo, renkonti la kurso de dungitaro tie iu pli, kaj enfokusigi finfine sur problemo aro nulo. Do ni revenos post kvin minutoj. [Aplaŭdo] Bone. Do ni estas dorso. Kaj en niaj ceteraj tempo hodiaŭ, la celo estas ebenigi la ludkampo laŭ iuj terminologio, laŭ iuj ideoj. Ĉar ja, kiel por kelkaj el la furorlisto antaŭe, tie tuj estos gamo de niveloj de sperto en la klaso, iuj de kies studentoj havas prenita iuj programado antaŭe, kelkaj el kiuj havas ne. Kaj tial kun ĉi tiu unua problemo aro kaj kun tiu unua lingvo ni havas ŝancon por komenci preni por donita post hodiaŭ iu komuna vortprovizo kaj ideo. Kaj ni faros ĉi tra la kurso unuaj languages-- krom C kaj Python kaj Javascript kaj SQL kaj HTML kaj CSS, ni estos koncentranta komence kaj ĝuste por problemo starigis nulo sur tiu grafika lingvo, nomita Nulo, disvolvita de MIT'S Media Lab laŭ la vojo, por helpi studentoj kaj infanoj ĉefe esprimi algorithmically-- en maniero pli konsekvenca kun kio ni povus nomi komputa pensado. Kaj ĝi estas utila lingvo, ĉar tre rapide venontsemajne en semajno unu, ni transiron al pli tradiciaj kaj arcano lingvo nomata C, kiu estas pure teksta. Vi nur uzas klavaron Por skribi instrukciojn kiel tiuj sur la ekrano. Sed eĉ se vi neniam vidis programlingvo antaŭe, en nur rigardante tiu, ĉiu estu kripta, vi versxajne povas diveni ke probable presas Saluton Mondo. Sed ekzistas multe de sintaksaj superkape tie. Ekzistas la stranga hash simbolo aŭ hash etikedo ĝis supro. Jen la angulo krampoj, iuj krampoj, krispa krampoj, duon-colon-- tie estas nur tiom da vida sintakso kiu alvenas en la vojo. Ni komencas la kurson per Nulo tiel kiel akiri preter ĉiuj tiuj intelekte neinteresa distroj, kaj enfokusigi anstataŭ sur la ideoj. Fakte, tiu povus esti antaŭe. Tiu, pro tio, semajno estos post. Tiu, en ĉi grafikaĵo lingvo Scratch, Tiel vi povus apliki tiun saman program-- programo kiu kiam kuras, simple diras saluton mondo. Kaj kio estas agrable pri Scratch estas ke ĝi estas ĉi grafikaĵo programado medio kiu uzas enigmo pecoj aŭ blokoj, kiuj nur interplektiĝas kune se ĝi faras logikan sencon fari tion. Kaj kun Scratch povas evoluigi kuraĝigoj kaj interagaj ludoj kaj arto, kaj ajna nombro de aferoj kiu vi povus imagi en via propra menso, kaj efektivigi ilin simple trenante kaj delasante puzlo pecoj. Kaj efektive, ni havos la kapablon esprimi iuj de la samaj ideoj ke mi ĵus menciita momento antaŭe en la kunteksto de Mike Smith kaj serĉanta telefono book-- aferoj kiel funkcioj, nur agoj, aĵoj kiel maŝojn kiuj lavas aferojn denove kaj denove, variabloj, kiuj estas io ni enkonduki, sed estas familiara eble de algebra-- nur ia lokokupilo stoki iun valoron vi povus bezonas later-- Buleaj esprimoj, kie tiuj jes ne aŭ vera falsa demandoj de antaŭe. Kondiĉoj estas tiuj forkoj en la road-- tiuj branĉoj tiel diri. Kaj tiam tie estas kelkaj amatoro trajtoj ni vidos ankoraŭ hodiaŭ, nomata tabeloj kaj fadenoj kaj eventoj, kiujn ni tiam reviziti super tempo en malsamaj lingvoj. Sed Scratch permesas esplori ĉiujn tiujn. Do jen en Scratch, ĉi purpuran bloko estas kion funkcio estas tipe tuj aspekti. Tiu purpura enigmo peco kiu havas iun vorto kiel ekzemple, kiu estas la ago, kaj tiam ĝi povus havi argumento aŭ parameter-- iel de ia agordigo kion tio bloko faras tiel ke ĝi ne estas pre-determinita de MIT kion ĉi purpuran bloko diras. Fakte, vi vidos en momento ke mi povas tajpi la vortoj kiel saluton mondo, aŭ saluton David, aŭ saluton Zamayla, aŭ kion ajn mi volas, en la argumento por ke enigmo piece-- la blanka skatolo tie. Dume, se mi volas buklo, ni instruos vin vidu ke ekzistas puzlo pecoj kiuj aspektas iom oranĝkolora ŝatas tion. Kaj ilia formo ia sugestas ke io okazas denove kaj denove en ciklo. Do se mi volvi diri saluton mondo bloko kun ĉiam blokas en Scratch, ĝi estas ĵus tuj daŭre dirante saluton mondo por ĉiam, tute laŭvorte. Dume, estas alia tipo de buklo en Scratch ke ni see-- ripeto block-- kie, se vi scias anticipe kiom da fojoj Vi volas la buklo ekzekuti finia nombro de fojoj fact-- vin povas specifi ke tajpante en kelkaj aŭ eĉ ŝtopanta en variablo, kiel x aŭ y, kiel ni vidos. Fakte, variablojn kiel i en tiu kazo, kiu estas komuna nomo por entjera variablo kiu nur stokas number-- entjero povas esti, uzi tiun oranĝon bloko tie agordi variablon kiel i al nulo. Jen ekzemplo en verdo de Bulea esprimo en Scratch. Kvankam tiu aspektas kiel math formulo, math malegalecoj ŝatas tion vere estas Bulea esprimoj. Tio estas vera aŭ malvera. Mi estas malpli ol 50. Ĝi estas ĉu jes aŭ neniun respondon aŭ vera aŭ malvera respondo. Kaj ni ĝenerale nomas tiuj Bulea esprimoj. Kaj ĝi ne devas esti 50. Ĝi povas esti x malpli ol y, granda ol y, egala al y-- ajna nombro de aliaj demandoj povus esti demandita. Nun, unuavide, tiu povus aspekti subite tre aŭdaca tie, kaj ĝi estas. Sed koncepto saĝa, estas bela familiara de antaŭe. Se x estas pli malgranda ol y, ol diri tiel. Else if x estas pli granda ol y, tiam diru tiel. Alie diri x egalas al y. Do ni havas ekzemplon tie de tria scenario-- la nura tria possibility-- x estas aŭ granda ol, malpli ol, aŭ egala al. Do ni havas tri vojon forko en la vojo. Kaj rimarki kio estas malvarmeta here-- Scratch, ĝi ŝajnus, havas nur unu enigmo peco, en ĉi tiu kazo, en se alia bloko. Kaj tamen tiu ŝajnus implici vin povas nur havas du maniero forkon en la vojo. Vi povas iri maldekstra aŭ dekstra, sed kio pri tiu tria scenaro? Kio se x egalas y? Ne granda interkonsento. Prenu unu enigmo peco, meti alia ene de ĝi krei la semantika ekvivalento de se, alie se, else-- kaj nun vi havas vian tri maniero forkon en la vojo. Kaj kiel ni vidos, la Nulo puzlo pecoj povas etendiĝis kaj kreskis, do kiel al Cram pli aĵoj en ili. Vi ne devas konveni ĉio en ĝia defaŭlta grandeco. Tio estas io ni baldaŭ vidos nomata tabelo. Estas kiel list-- iel stokante multnombraj pecoj de informo en variablo, ne nur nombro. Tiujn ni vidos reprezentanto de iu nomita multi-threading. Fakte, ĉiuj viaj Macs kaj PC tiuj tagoj apogas multi-threading, kio signifas ke vi povas laŭlitere fari plurajn aferojn samtempe. Vi povas havi Microsoft Word en la malfono, laborante sur iu eseo. Vi havu retumilo fone malfermo G-poŝto aŭ Facebook aŭ similaj. Via komputilo povas fari multoblajn aferojn hodiaŭ ĉar ĝi estas mult-threaded, kaj programoj ili estas en en aparta estas ankaŭ multi-threaded. Ekzistas aĵoj nomata eventoj kiel bone en la mondo de Scratch, kaj tiam tie estas vojo tro, fari nia propra kutimo puzlo pecoj se aferoj ne vere ekzistas anticipe. Do ni motivi tion kiel sekvas. Kelkaj jaroj, kiam mi malkovrita Scratch, Kiam mi estis fakte grad studento ĉe MIT, ni mem estis taskigita fari hejmtaskoj. Kaj mi implemented-- kiu, en retrospekta, Estis tre malbona decido ĉar ĝi estas la plej exasperante kanto en la mondo aŭskulti dum ok horoj dum laboranta sur via homework-- sed ion mi vokus Oscar Tempo, kiu estas eble familiara kanto. CS50s posedas Jordanio Hayashi, unu el nia pli altranga personaro membroj, estas ĝisdatigita por 2015 kaj nun 2016, kiam reen en la tago, Mi havis ĉion ĝuste tuj en Oscar rubo povas. Nun ni apogas reciklado kaj compostaje. Sed pentri la bildon kion ni povas fari tie kaj motivi kelkaj la malsupra nivelo ekzemploj, ni povus akiri unu alia volontulo simple venu supren kaj ludi mian unuan hejmtasko asigno iam? Venu supren. Kiel vi nomiĝas? HENRY: Henry. DAVID Malan: Henry, venu supren. Venu supren. Gvidi ĉu vojo kaj vi vidos, momente, Mi tuj iros antaŭen kaj frapis la verda flago en la supra dekstra mano angulo, kiu signifas iri. La malgranda halto signo piktogramon tuj diru halto, kaj tio estas kiam vi komencos kaj ĉesigi la programon. Mi ĝojas renkonti vin. Bone. Do ni tuj vidas la instrukciojn sur la ekrano en nur momento. Kaj nur ludas ĉi ludo dum kelkaj seconds-- fidi min, ni ne tuj volas ludi tutan vojon al la end-- vi volas akiri senton de kio la programo faras. Kaj pli ĵus temigi Henry esti bona aŭ malbona en tiu ludo, fokuso kaj kiel gxi estis implementado por mi originale kaj tiam cxe Jordan. Alivorte, kie estas la variabloj? Kie estas la masxojn? Kie estas la funkcioj? Kaj ni vidos se ni ne vidas tiuj sub la kapuĉo. Simple klaku kaj treni rubo al la taŭga ujo. [MUZIKO Ludanta] Bone. Tio estas tre bona. Kial ni ne halti ĝin. Dankon. Gratulojn al Henriko. Dankon. [Aplaŭdo] Imagu elpurigi tiu programo. Se estas problemo du minutoj en la song-- sed tiel kio okazas ĉi tie vere? Kiel komplika kiel ĝi povus komenci ŝajnas akiri super tempo, ja pli kaj pli aĵoj komencis fali, kio estas interesa pri tian example-- kaj ni vidos kelkajn others-- estas ke se vi rigardi preter la komplekseco aŭ la sofisticación de la ludo, ekzistas tre simpla konstruaĵo blokoj kiuj play-- ĉiuj el kiuj, se vi purigas ilin al tiuj konstruelementoj, estas tre atingebla kaj implementable al si. Ekzemple, estas estis iu tempo, sed mi estas bela certa kio mi komence faris kiam farante tiun ludon por la unua fojo mi tute kiel procrastinated. Mi ne enfokusigi tute en la logiko aŭ la puzlo pecoj, Mi temigis la grafikojn kaj trovo la strato post la rubujon kaj ĉiuj de tiu. Sed tiuj estis kondiĉo ingrediencoj unue. Kaj unufoje mi finis procrastinating kaj elmetanta la komunajn kadro, Mi decidis, ke mi simple fari peco de rubo falo el la ĉielo. Kaj ni vidos Scratch Elportas aĵoj nomata sprites-- karakteroj kiuj povas havas malsamajn kostumojn sur tiel ili aspektas malsamaj. Do mi metis rubo kostumon sur unu tia sprite. Kaj mi ĵus bezonis fali de la ĉielo. Kaj do rezultas, Scratch, kiel plej programlingvoj, Elportas hazardaj nombroj aŭ teknike _pseudocode_ hazardaj nombroj, tial trenante kaj delasante certaj enigmo pecoj, Mi estis kapabla havi la rubujon venas de maldekstre, unue. Kaj tiam la sekvanta tempo falis el dekstren kaj poste de la mezo. Kaj la tuta ludo ne estis nur havi rubo falas de la ĉielo. Vi ne povus noti al ĝi aŭ alklaku ĝin. Vi ne povis malfermi la rubo povas. Vi ne povis fari ion. Sed estis bebo paŝo al mia finfina vizio. Kaj post tio, mi efektive implementado ian de sensado tiel ke se vi klaku kaj treni sur la peco de rubo super la rubo povas, Oscar kovrilo estus malfermi kaj fermi. Nenio okazus al la rubo, sed almenaŭ la kovrilo estus malfermi kaj fermi. Do tiam kontrolu, paŝi du de du. Kaj tio estas kio tuj estos ŝlosilo en ambaŭ problemo aro nulo kaj en programado pli ĝenerale, estas preni tiujn tre intencaj bebo paŝoj. Ĉar ne nur faras ĝi permesas sentas honeste plenumita multe pli quickly-- estas la plej malbona en la mondo provi implementar ĉiuj Oscar Tempo, tiam horoj poste batis la verda flago, kaj nenio funkcias kiel atendis ĉar kie do vi eĉ komencas elpurigi aŭ solvi tiun programon? Estas nur abrumadora. Kaj tiel vere brakumi tiun ideon preni steps-- bebo paŝoj denove kaj again-- edifado iu kiu, en la fino, vere impona kaj kompleksa, sed unue, estas ne preskaŭ tiel tiel. Fakte, ni faru tion. Lasu min kaj- Scratch mem ekzistas en la reto sub Scratch.MIT.edu, kaj vi ricevos informon kiel multe pli en problemo fiksita nulo, la specifo por kiu estas jam sur CS50 la retejo. Sed jen kion Scratch mem. Kaj estas vere nur tri primaraj areoj. Ĉe la supro lasis tie estas la tn stadio. Tio estas Scratch. La defaŭlta kostumo estas kato. Kaj tio estas la rektangula mondo kiun vi povas move-- supren, malsupren, forlasis, dekstra kaj iuj aliaj aĵoj. Meze tie estas niaj kategorioj aŭ nia pallets de puzlo pecoj, kaj malsamaj koloroj signifas malsamajn aferojn. Kaj se vi poke ĉirkaŭe, vi vidos aĵoj kiel maŝojn kaj kondiĉoj kaj variabloj kaj aliaj ingrediencoj. Kaj tiam super tie estas la skriptoj areo. Tie estas kie mi povas treni kaj faligi tiuj puzlo pecoj fari aferojn. Do ni faru unu tia afero. Lasu min kaj- kaj mi scias kie ĝi estas. Do mi tuj tuj alklaki kie mi scias aferojn pretas esti, sed montrante kaj klakante kaj ŝovas ĉirkaŭ estas neevitebla. Do kiam verda flago clicked, Kion mi volas fari? Mi tuj faros tion. Mi tuj treni tiun purpura enigmo peco, diru saluton por du sekundoj, kaj lasu min zomi. Kaj mi tuj ŝanĝos ĉi esti kion mi volas ke ĝi be-- saluton mondo por du sekundoj estas fajna. Nun, mi tuj klaku verda flago, aŭ se mi vere volas, Mi povas Plenekrano ĝin kaj tiam revenu. Ĝi simple observu ĉiu en unu fenestro. Verda flag-- saluton mondo. Bone. Ne ĉiuj kiuj interesa. Do lasu min antaŭeniri kaj fari tion. Mi provu alian. Kiam verda flago clicked-- ni fari ion kiel sono. Kaj rimarki ke el la skatolo senpage vi ricevas kato sono, kiel estas la defaŭlta sprite. Do nun lasu min iri antaŭen kaj batis la verda flago nun. [MEOWING] Aw. Jen adorable. Mi programado. Do kion mi faris? Tiu estas la ekvivalento de programo. Estas evidente super simpla. Ne vere preni ĉiuj kiuj multe penado kaj MIT faris la plimulton de la laboro, sed mi nomis funkcio. Mi uzis funkcio. Mi faris iun agon, uzante nur ke oni purpura enigmo peco. Nu, se mi volas fari tri meows en vico? Lasu min antaŭeniri kaj fari du kaj tri. Kaj rimarki ke kiam vi ŝvebi proksime enigmo pecon, iom blanka linio aperas ia magnete, kaj ĝi alkroĉiĝos kune kiam vi forlasis. Ni vidu kio okazas tie. [MEOWING] Ekzistas cimon. Mi nur aŭdis unu meow. Kial povus esti? Yeah? Yeah. Ni ne vere auxskultos, sed tio estas bona intuicio. Ili ĉiuj ludas samtempe. Kial? Nu, la komputilo estas nur iranta fari kion vi diros ĝin fari. Sekve se vi diras, teatraĵo sono, ludi sonon, ludi sonon: sed vi ne diris ĝin al ludi ĝis vi faris, ludi ĝis vi faris, ĝi tuj Trablovu la programo vere rapida kaj ĉu nur kion vi diros ĝin fari. Do mi efektive devas redifini tiun en kelkaj manieroj. Mi povis nur fari tion, forigi ĉi. Mi provu ĉi alia enigmo piece-- ludi sonon meow ĝis faris, kaj tiam treni tri tiuj kaj klaku Play. [MEOWING] Tio ne vere very-- dankon you-- tre natura. Do kial ne I-- lasu mi iros por kontroli tie. Nice. Atendi unu sekundo, kaj nun lasu min iri reen al sonoj kaj teatraĵo sono ĝis faris, kaj tiam mi ricevas atendu unu sekundo. Kaj tiam mi iros kaj akiri unu pli sonon kaj tie ni iru. [MEOWING] Iom pli natura, sed tio ne estas tre efika. Kiel Mi estis akiranta truis, ĉio estu ĝi mallonge, premante reen kaj vere duobligante mia work-- preskaux kopii kaj bati. Efektive, se mi Kontroli klakis aŭ dekstra klakis, Mi povus esti simple kopiitaj kaj batitaj. Kio estus pli bona konstrui uzi? Kio ideon de antaŭe? Jes, do buklo. Kaj fakte, se ni pikis ĉirkaŭe, ni povus trovi ĝuste tio. Mi iros al Eventoj aŭ prefere Kontrolo. Tiel repeat-- mi ne deziras ĝin esti 10 fojojn. Tio tuj akiri ĝena rapide. Sed mi ripetos tri fojojn. Lasu min reiri al sanaj kaj ludi la sonon ĝis ĝi estas farita. Lasu min reiri al Kontrolo kaj nur atendi unu sekundo. Kaj avizo, vi povus kredas ke ne persvadas, sed denove se magnete vi lasu ĝin klakon en loko, ĝi kreskos plenigi. Kio ĝi ludas nun? [MEOWING] BONE. Nice. Kaj tio estas kio estus nomita programo kiu estas ankaŭ korekta. Ĝi meowed trifoje sufiĉe nature, sed ĝi estas pli bone desegnita. Mi uzas malpli redundo. Mi ne kopiu kaj algluu nenion. Mi nur uzis bona ideo. Nun, ĉi tiu estas ankoraŭ ne ĉio, kion interesa kun Scratch ne faras nenion. Do ni faru ion alian anstataŭe. Ni faru ion ĉiam. Kaj vi scias kion? Movado ŝajnas interesa. Ni havas lin movi 10 paŝoj kaj batis teatraĵo nun. BONE. Bone ni povas ia treni lin, kaj li daŭre kurante ĉar li faras tiun por ĉiam. Tiel la banto faras kio ĝi estas jene fari, sed ĉi tio ne estas ĉio, kion interesa. Ni faru ĉi. Mi aldonu kontrolon bloko, kaj uzi unu de tiuj kondiĉoj por la unua fojo. Tial ĝi tuj movas 10 steps-- 10 punktoj, 10 rastrumeroj sur la screen-- tiam tuj demandi tiun demandon. Se io estas vera, tiam faru io interne tiun blokon. Do rezultas sensing havas tutajn faskon de Bulea expressions-- demandoj de la jes ne aŭ vera falsa form-- lasu min fari tion. Se touching-- kaj tiam ekzistas tiu malgranda falmenuo. Mi povas parameterize ĝin. Se tuŝinte la edge-- ni fari ion tian. Do se tuŝinte edge-- lasu min iri reen al moviĝo. Kaj kial ni ne simple turni ĉirkaŭ 180 gradoj? Bone. Tiel ĉiam, movi 10 paŝoj. Se vi tuŝis la rando, turnu 180 gradojn. Kaj tio ne estas la fino de la programo ĉar vi estas en eterna bloki, tial ĝi tuj reiru, kaj denove kaj denove kaj denove. Do ni vidu kio okazas. BONE. Iom kalesxon, sed speco de malvarmeta. Kaj ni povas aldoni al tio iuj sensencaĵoj ke ne estas ĉiuj kiuj intelekte interesa. Sed se ni batis tiu malgranda mikrofono button-- Ouch. Lasu min purigi ĉi supre. Lasu min plibonigi tiun kiel ili dirus en televido. Pura supren, Savi kaj nun iru al skriptoj. Nun mi iros, por trumpeti. Lasu min donu al li nomon. Mi vokos ĉi Ouch. Kaj nun ludas sono Ouch. Rimarki aperas en la iom falmenuo. Ni vidos. [OUCH] [Ridante] Sed ni povas ŝanĝi t sian sur la muŝo. Ni povas esti duoble ĝena. [OUCH] Aŭ se ni faras lin kiel 1.000 ŝtupoj ĉe time-- BONE. Do ni tuj lasos ke unu sola. Do denove, konstruante blocks-- mi komenciĝis per io super simpla, kaj tiam mi aldonis funkcion, aldonis karakterizaĵon, aldonis karakterizaĵon. Kaj mi ne plu bezonas zorgi pri kiel la unua el tiuj trajtoj estis implementado kiel mi daŭrigos al mantelo aferojn supre. Do fakte, lasu min fari unu alia tie. Lasu min antaŭeniri kaj malfermu dosieron kiu Mi alportis anticipe, nomita Ŝafo. Do ĝi havas iomete malsamajn karaktero kiu similas ĉi. Kaj ke mi vidu se mi ne povas fari ion uzante vendotablo en ĉi case-- tn variablo. Mi tuj iros antaŭen kaj sub Events-- lasu min akiri verdan flagon klakis. Tiam mi iros al Datumoj, kiun mi konas de nur ludanta ĉirkaŭ antaŭ, Estas kie variabloj. Kaj mi tuj iros antaŭen kaj treni tion. Tiel ŝanĝiĝema nomita vendotablo, kaj Mi tuj pravalorizi ĝin al nulo. Mi povas voki ŝin ion ajn x aŭ y aŭ z-- sed en programado, nomante io en semantike utila maniero, kiel vendotablo, kiu priskribas kio estas, ĝi estas multe pli facile legi vian kodon poste. Lasu min antaŭeniri kaj atingi oni ĉiam blokas tie. Kaj mi iros al la rigardojn paĝo kaj fari Say bloko. Sed kio estas malvarmeta pri variabloj estas mi ne devas simple entajpi ion kiel saluton mondo, kiun ni havas jam farita, mi povas anstataŭe iri al Datumoj kaj treni mia variablo, kaj eĉ kvankam la formo ne tre aspekti ĝi devus konveni, ĝi kreskos plenigi. Kaj mi nur diros la vendotablo por unu second-- spoiler-- li tuj rakonti. Ni diras ĝin por dua. Mi tuj iros kaj havi lin atendi unu sekundo, do ĝi ne rakontas tro rapida. Kaj poste persiste, ŝanĝi vendotablo per one-- alivorte, pliigo la vendotablo de unu aldona valoro kaj fari tion ĉiam. Tial la ŝafo tro, kiel programisto, rakontas de 0. Kaj se ni atendos suficxe longe, Li faru tion por ĉiam. Sed tio ne estas ekzakte vera, ĉar fakte, kiel ni malkovros en semajno unu, entjeroj kaj komputiloj pli ĝenerale, teknike havas nur finite-- bone, prefere komputiloj, kiam ili reprezentas entjeroj, nur havas finia nombro de bitoj. Tiuj ampoloj tie povas nur kalkuli tiel alta antaŭ vi el ampoloj. Kaj komputilo tro, nur havas tiom da memoro, nur havas tiom da transistoroj, do ĝi povas nur kalkuli tiel alta. Do rezultas ke la ŝafo, Mi pensas, povas kalkuli ĝis 2 miliardoj aŭ io iom granda. Do ni ne tuj atendi ĉi okazi. Sed eventuale iuj cimoj okazos kiu povas havi iun tre reala mondo ramificaciones. Sed preter la ŝafojn ke nur enkondukas variablon. Ni iru antaŭen kaj malfermu io mi faris anticipe tie nomita Pet la Cat-- Pet la Kato super tie. Kaj rimarki tie estas kelkaj blokoj, sed kiam verda flago klakis, ĉiam fari la sekvan. Se vi tuŝis la muson pointer-- tiel la kursoron sur la ekrano, la arrow-- teatraĵo sonon meow kaj poste atendi du sekundoj. Kaj ĝuste tion ĉiam. Nur senĉese atendi cxu la pointer-- se la kato tusxas la montrilo. Do mi batis teatraĵo. Nenio okazas. Sed kiel mi movas la kursoron super la kato, [MEOWING] Kaj se mi movas ĝin, ne Petting kato anymore. Do kelkaj kondiĉa logiko nestitaj ene de buklo. Kion pri tiu ekzemplo, intence nomita Dono't Pet la Kato? Kio ĉi tuj fari? [MEOWING] Kial vi ne dorlotbeston la kato? [MEOWING] BONE. Do tiu estas ekzemplo de se alie. Estas decido punkto kaj ĉar ĝi sidas en la buklo, ili estas ambaŭ akiranta kontrolata. Ĉu tio estas vera? Ĉu tio estas vera? Ĉu tio estas vera? Ĉu tio estas vera? Kaj finfine, unu el tiuj tuj apliki kaj vi aŭdas ĉu la meow aŭ la muĝo de leono en tiu kazo. Nu, ni faru iomete pli ornama unu ke mi faris anticipe ankaŭ kontraŭ fadenoj. Tiel fadenon estas nur unu afero ke komputilo povas fari. Tiel mult interne programo estas programo kiu povas fari multoblajn aferojn samtempe. Kaj ĉiu el tiuj ekzemploj ĝis nun havis nur unu skripton, tiel diri unu programo kiel ĉi tien. Sed rimarki ĉi programo havas du sprites, du karakteroj. Unu estas birdo. Unu estas kato. Kaj rimarki kiam mi klakas sur tiuj malsupren maldekstra, ili ĉiu havas siajn proprajn skriptojn aŭ programoj asociita kun ili. Kaj ambaŭ de tiuj programojn, avizo, komenco kun kiam verda flago clicked-- ni rigardu la cat-- kiam verda flago clicked. Kaj tiel efektive, kiam mi batis teatraĵo nun, du aferoj okazos samtempe. La kato kaj la birdo estas ambaŭ tuj funkcii samtempe krei tiun efikon. Kaj vi povus imagi kio okazas. Ekzistas maŝo kaj la birdo kaj la kato estas en buklo. La birdo estas nur rebotar kiel Mi estis antaŭe, kiam mi diris Ouch. Sed la kato klare havas avantaĝon. Ekzistas alia sensing bloko kiu notas la kato intence al la birdo en tiu kazo tie. Do ni povus turmentus aparte, rigardante tra tiuj blokoj, kio okazas. Sed la ŝlosilo ingredienco tie estas. La birdo, por ke ĉi tiu ludo ne tute boring-- aŭ tiun animation-- komenciĝas ĉe hazarda direkto. Kaj la komputilo estas pluki nombron inter 90 kaj 180 esence, tiel ke ĝi estas iomete malsama kuraĝigo ĉiufoje. Kaj tiam rimarkos ĉi tie, se la kato tusxas la birdo, tiam ludi la leono kvar sound-- la muĝo. Sed dume en la birda paletro, ni havas tion. Ĉiam, se ne tuŝante la kato, Nur teni movanta tri paŝoj. Kaj tiam tie estas alia enigmo peco. Se estas en la rando, resalto. Do la birdo estas nur speco de atentanta lian propran negocon, nur fluganta ĉirkaŭ kaj rebotar, kaj ĝi estas vere la kato kiu havis la kondiĉan logikon determini se ĝi kaptis la birdon. Bone. Do ni faru unu alia tie, ĉi tiu vokite Hi Hi Hi. Kaj ĉi tiu tie nur faras tiu en eterna buklo. Sed notice-- kiel ni halti tiu tre ĝena programo? Batis la spaco trinkejo. Ĉar se mi faras tion, maldekstre program-- rimarki estas konstante listening-- estas la ŝlosilo spaco gazetaro. Se la spaco trinkejo premita, kaj se jes, kion ĝi faras? Ĝi faras tre komuna tekniko. Ĝi fiksas variablo egala al iu valoro. Sed baskuligas tiun valoron. [? Tial apero?] bazita sur la shape-- mi havas variablo kiu mi skribis anticipe nomitaj Silentigita, kiu nur diras jes aŭ ne. Estas la sono silentigita aŭ ne? Vera aŭ falsa? Kaj avizo, mi diras this-- se silentigita estas nulo, tiam ŝanĝu al unu, alie agordi muta al nulo. Do simple klaki la valoron de nulo al unu. Mi povus havi done-- ŝanĝi ĝin de du ĝis tri kaj tri al du aŭ kvar al kvin aŭ kvar al ses. Sed ne gravas kio nombrojn mi uzas, kiam mi tenas ŝanĝi ŝin male. Kaj plej ajna programisto farus nur elektas nulo kaj one-- falsa kaj vera, ekstere kaj on-- reprezenti tion. Kaj tio estas ankoraŭ kurante. Se mi batis la spaco trinkejo fojo [SEAL SOUNDS] La programo estas ankoraŭ kurante. Ĉar ekzistas tiu alia skribsistemo kiu diras, ĉiam fari la sekvan. Se la dampita variablo egalas zero-- do se vi ne silentigita estas la logic-- se ĝi estas malvera aŭ ne, tiam ludi la sono, ĉar vi ne silentigita. Vi devas ludi la sono kaj tiam pensas hi hi hi por du sekundoj kaj poste atendi, kaj agu denove kaj denove kaj denove. Kaj tiel ili ni havas vojon por personoj to-- por programoj interagi. Kaj ili ne devas esti kiel datis kiel aliaj. Fakte, ŝovas around-- neniu pun intended-- iu elspezis grandegan kvanton de tempo sur la interreto efektivigado PokemonGo en Scratch. Eĉ geolocates vin Kembriĝo aŭ Allston tie. Do se vi volas vidi ankaŭ kion homoj povas fari estas this-- tre fancy menuo. Alklaku ĉi tie. Jen mi kun mia sagoklavoj nun. Mi tuj iros post tio. Klaku. Kaj nun vi klaku PokeBall. Mi volas diri, mi pensas ke vi estas laŭsupoze klaku PokeBall. Bone. Do mi faris tion. Mi povas iri tien. Kaj tiu persono implementado iu pli PokeBalls super here-- tri PokeBalls. Ni afiŝi ligilon al tiu rete tiel vi povas ludi. Sed rimarki tie estas nur kelkaj bazaj konstruelementoj. Ĝi aspektas multe amatoro, kaj ĝi estas. Tio estas impona kaj pli ol ni volus tipe atendi, certe por problemo starigis nulo. Mi havas neniun ideon kiel longe tiu persono pasigis rete. Sed estas tute simple buklo. Ekzistas sono ludado. Ekzistas ia buklo aŭskulto ĉu mi estas batante la sago aŭ la malsupren sago aŭ la maldekstra kaj la dekstra, kaj tiam se jes, ĝi moviĝas ĝi iom da rastrumeroj. Kaj se mi alklaku alia sprite, ekzistas ia se kondiĉo tie. Yeah, tiu fariĝas tro intensa. Ni tuj halti. Estas ĉiuj tiuj bazaj konstruaĵo blokoj. Ekzistas neniuj aliaj ingrediencoj aliaj ol la ones ni rigardis jam. Kaj ankoraŭ ĉi tie, lasu min fari unu finan aron de ekzemploj kiu pentras bildon tro de kio vi povas fari tie. Jen tre simpla programo kiu nur faras this-- tuso, tuso, tuso. Kaj bazita nur sur kio ni rigardis ĝis nun, kie estas la evidenta ŝanco por plibonigo. Tiu programo estas korekta. Ĝi coughs trifoje, kiu estas kion mi celis. Sed ĝi estas nebone efektivigita. Ĝi estas malbone desegnita. Kial? Yeah. Ĝi ne estas buklo. Kaj ĝi estas ne tiom ke ĝi ne estas ciklo, ĝi estas ke ekzistas multe de redundo. Tie estas kopiitaj kaj batitaj kodo, por tiel diri. Kaj la solvo probable Estas ja buklo. Do lasu min antaŭeniri kaj plibonigi sur tio. Kaj mi tuj treni tiuj super tie. Lasu min antaŭeniri kaj atingi ripeto bloko, ŝanĝu tion al tri. Mi tuj forĵetu kelkaj el tiuj blokoj. Kaj vi rimarkos estas sufiĉe intuicia. Treni kaj guton kaj aĵoj aperas kaj malaperas fine. Kaj mi povas simple treni ĉi tien, kaj Nun mi havas pli puran version ankoraŭ. Sed vi scias kion? Ekzistas tiu ŝanco nun por abstraction-- komenci difini novan vortprovizon ke MIT ne anticipis. Ekzistas atendi kaj ripeto kaj ĉiam kaj se, sed kio se mi volas enkonduki la vorto tuso kiel bloko? Kio se mi volas enigmo peco kies celo en la vivo estas tusi? Nu, ni rigardu ĉi versio tie, kiun mi faris jene. Magie Mi kreis tiu enigmo peco tie, kio Scratch permesas fari. Kaj ja C kaj Python kaj JavaScript estas tuj permesos fari ĉi tiel. Vi povas krei vian propran pecoj kiuj vi nomas kion vi volas. Tiukaze, tuso sentas kiel racian difinon. Kaj tiam kun tiuj pecoj malsupren tie vi povas difini, kion ĝi signifas. Mi trenis kaj faligis el ĉi paletro here-- pli blocks-- tiun grandan purpuran bloko, kie mi tajpas en tuso kiel la nomo de mia nova enigmo peco. Kaj tiam mi diras ajn uzanto nomas tiun novan tuso puzlo peco, fari voĉon kaj atendo. Kaj tiel ĝis tie en mia ripeto bloko, Mi povas nur tusadi trifoje. Kaj mi dirus, speciale se Vi kaŝas tiun detalon. Kiu zorgas kiel tuso estas implementado? Mi nur zorgas pri kiel programisto ke mi povas tusi. Ne gravas kiom diras estas implementado. Mi nur zorgas ke la kato povas diri ion. Mi povas abstrakta for, detale kaj nur enfokusigi kio estas sur la ekrano tie. Sed mi povas preni tiun unu paŝon. Rimarku ke ĉi tie, mi havas implementado la ciklo tri fojojn. Sed kio se anstataŭ mi ekpreni ĉi versio? Kaj kio se anstataŭ en ĉi tiu versio ĉi tie, Mi nur ŝanĝas mian puzlo peco preni argumento kaj enigo al si? Kaj ke enigo povas esti kelkaj kiel tri. Tial nun, se mi skribas programon kaj mi volas la kato tusi, Mi povas vere diri la enigmo kunligi kiomfoje tusi, ĉar en la fundo tie, amatoro versio de ĉi kutimo puzlo pecoj Lasas min specifi ke tuso fakte prenas an input-- prenas argumenton kiel tiu. Kaj vi scias kion? Eble mi rimarkas, atendu momenton. Tusado estas la same-- ĝi estas fundamente la sama ideo kiel sneezing. Ĝi estas nur malsama vorto sur la ekrano. Mi povas abstrakta for pli kaj apliki tiu fina versio de tusi, kio unuavide Estas maniero pli kompleksa rigardanta. Sed rimarki kion mi faris. Mi havas nun generalized-- genericized really-- tiu enigmo peco esti nomata diri vorton n fojojn. Kaj nun mi havas du novajn enigmo pecoj malsupren tie difini tuso n fojojn. Kaj kion signifas la tuso funkcio faras? Kion mia kutimo puzlo peco faras? Ĝi nur nomas la vorton bloko, pasante en la diro mi volas diri, pasante en la nombro de tempoj mi volas diri. Ĉar nun mi povas efektivigi terni simple dirante achoo, tiukaze, iuj plurfoje. Kaj do mi layering kaj layering. Kaj denove, la ŝlosilo tie estas ne kiom mi implementado ĝin, sed la fakto se Mi nur laŭvorte movi tiujn sur la ekrano, aspektas kiel simpla se ne bela mia programo nun aspektas. Ĉar ĝi faras kion ĝi diras, mi abstraída for kio estas ene de tiu nigra skatolo. ĝi okazas al esti purpura skatolo tie, sed mi malhelpis for kio estas ene ĉar mi ne gravas kiel ĝi funkcias. Mi nur zorgas nun ke ĝi funkcias. Kaj efektive, en problemo fiksita nulo, ĉi tiu estas ekzakte la speco de layering de ideoj vi instruos vin havas la ŝancon esplori. Estas ĝuste la ŝanco apliki problemo solvanta teknikoj, al kio estas verŝajne nekonata medio. Kaj ĉu vi ne programita antaŭ aŭ planita antaŭe, vi trovos ke ekzistas iom ion en tiu medio por ĉiuj. Kaj kun problemo aro en unu semajno, ni estos transitioneis al enfokusigante sur pli alta nivelo lingvo nomata C-- plivere malsupera nivelo lingvo nomata C-- tio eĉ pli potencaj, eĉ se ĝi estas iom pli kripta unuavide. Kaj vi rimarkos je la hodiaŭa TL: DR, ke tiu problemo aro havas pli mallongan fenestro de tempo ol estonteco, ili simple ĉar vi trovas ĝin sufiĉe atingebla. Kaj ne zorgi se vi aldonas la klason malfrue. Ni traktas ke antaŭ longe. Kaj antaŭ ol ni adjourn por kuko, ni fini kun nur du minutoj rigardo ĉe kio atendas vin tie en CS50. [MUZIKO Ludanta] Bone. Estas tio por CS50. Ni vidos vin baldaŭ. Kuko estas nun servis. [MUZIKO Ludanta] Parolanto 17: Ĉu vi aŭdis de sabático, Ĉefo? Parolanto 18 Eble ekzistas pli sub la kapuĉo.