[VIDEO reprodukto] [CAR PORDO ferminte] [CAR ENGINE starta] [MUZIKO Ludante] -Moving Dekstra kune serĉante de bonaj tempoj kaj bona novaĵo. Kun bonaj amikoj vi ne povas perdi. -Ĉi Povis igi kutimo. -Opportunity Frapos Ni nur atingi ekstere kaj kroĉi ĝin. -Yeah! -Together Ni nab ĝin. -We'll Hitch Hike, aŭtobuso, aŭ flava taksio ĝin. -Dammit. -We're Movanta rajton kune. -Footloose Kaj Fancy Free. -Getting Estas duono la amuzo. Venu dividi ĝin kun mi. -We're Movanta rajton kune. -We're Iranta dividi la ŝarĝon. -Ni Ne bezonas mapon atingi tiun rezulton sur la vojo. -Hey Fozzy, mi volas ke vi turnu vin maldekstren se vi venos al forko en la vojo. -Yes, Sinjoro. Turnu vin dekstren ĉe la forko en la vojo. Turnu lasis. -I Ne kredas tion. -Cruising Dekstra kune ni trovis la lumoj sur la ŝoseo. -Kaj Vian vojon aŭ mian vojon. -Do Fidi mian navigado. -Movie Steloj kun okulfrapaj aŭtoj kaj vivo kun la supro malsupren. -We're Ŝtormas la grandaj montetoj. -Yeah, Ŝtormo pravas. Should i neĝos? -No, Mi ne pensas tiel. -Moving Dekstra kune. -Footloose Kaj Fancy Free. -You're Preta por la granda tempo. -is Ĝin preta por mi? -Moving Dekstra kune. Moviĝante dekstren kune. Moviĝante dekstren kune. Moviĝante dekstren kune. -Mi Kredas vin pli bone tiri super. -Yes, Sinjoro. [FINO reprodukto] [Aplaŭdo] DAVID J. Malan: Jen CS50. Kaj tiu estas la fino de Semajno 0, sed la komenco de bela amikeco. Ni estas sekve ekscitita esti tie ĉe Universitato Yale por la tre unua tempo kun niaj amiko Scaz kaj Jason kaj Andy. Ĉiuj 40 de CS50 TF La kaj CA estas tie ĉe Yale. Kaj ĉiuj vi. Kaj fakte, ĝi estas verŝajne tempo to-- [Aplaŭdo] Do, kvankam la plimulto de la prelegoj vere kuŝos en Cambridge ĉi jaro, la realaĵo estas kiu de dezajno, kaj tre konscie en CS50, Mi pensas ni proksimiĝas la punkto teknologie, kaj pedagogie, kie povas esti supera eduka sperto engaĝiĝi kun iu de la kurso la materialon rete. Efektive, la reality-- kaj se mi kredas ĉi philosophically-- estas ke lekcioj ne estas aparte efika rimedo por liverado sufiĉe kompleksa informo. Certe super horo plus longaj interspacoj de tempo. Kaj ja ĉiu malmultaj minutes-- Mi memoras min en college-- vi zono ekstere dum momento, mankas al vi iu kompleksa temo, kaj vi estos for preskaux por la venonta 45 minutoj. Kaj la realaĵo estas ke ĉu vi estas tie en New Haven aŭ Kembriĝo aŭ pretere, la simpleco de havado la kapablo paŭzi kaj rapida antaŭen, malantaŭenigi, hiperligilo al rilataj rimedoj, serĉo plena teksto transskriboj kaj similaj estas ŝanco ke Mi kuraĝas diri por nia enreta studentoj bone preter New Haven, proponas ilin ŝanco por vere kompreni la konceptaj materialo kiun ni enkonduki en lekcioj ĉiuj bonaj. Sed finfine en CS50, estas la studentoj 'sperto karakterizas tiel, tiel multe pli per la kurso la problemo aroj, aŭ semajna programado projektoj, la kurso sekcioj gvidata de la instruado uloj, la ĉiunokta oficejo horoj gvidata de la kurso asistantoj kaj la instruado uloj, kaj efektive tia okazaĵojn kiel CS50 Puzlo Tago, CS50 la Hakon-a-thon, la CS50 Foiro, semajnaj lunĉoj, kaj tiel pli. Kaj do, ĉu vi estas ĉi tie en Nov Haven, aŭ agordanta en malproksimeco, hodiaŭ en Kembriĝo, kaj ni vidos vin denove baldaŭ, la realaĵo estas tio unu kaj la sama klaso. Kaj ni estas sekve ekscitita estus tie kune hodiaŭ. Kaj tial ĉe la fino de la semestro, ĉu tie aŭ malproksime, bone espereble vi surhavas fiere, feliĉe, kaj eble kun iom de reliefo, la ĉemizo kiu atestas al vi li prenis CS50. Do el kie ni chesos merkrede? Ni prenis rigardu komputa pensado. Kaj tio estas al kio ni distilis komputiko al, almenaŭ nun. Sed ni distilis gxin iom plu en almenaŭ tri komponantoj eroj. Enigoj, do kio estas la problemo ni provas solvi? Eliroj, kio estas la respondi ni esperas ricevi? Kaj la reprezento de tie. Kaj ni ne volas logxi tie sur post sur duuma, aŭ eĉ ASCII, kaj similaj tiel, sed prefere prenas por donita ke ni povas reprezenti ĉi informo, ĉar la multe pli interesaj partoj de tiuj problemoj ne estas nur la enigoj kaj eligoj, sed la algoritmoj kiuj iras en solvanta tiuj problemoj. Kaj vi eble memoras de la alia tago ke ni prenis sufiĉe tradicia koncepto de rigardanta iun supren en sufiĉe granda telefono libro, aŭ pli ĝenerale per cifereca tiuj tagoj, nur tre granda datuma aro. A vere granda kontaktoj listo, kun multaj nomoj alfabete ordigitaj. Kaj ni rimarkis nin ke dum mi povis alproksimigi tiun problemon simple uzante linearan approach-- paĝo de paĝo, aŭ eĉ du, cxe a time-- ni rimarkis ke la pli intuicia algorithm-- nur speco de dividanta kaj konkerante la problemo denove, kaj denove, kaj again-- _halving_ ĝin kun ĉiu tempo, donis al ni ĉi verda rezulton. Kaj ĝi estas multe pli plata tiel ĉar ĝi sugestas ke eĉ kiel ĉi problemo ricevas pli kaj pli grandaj, kiel estas la kazo ĉi tiuj tagoj kun datumoj aroj kaj reality-- Facebook kaj Google serĉrezultoj kaj la like-- faras nia algoritmo elfari same efike kun tiuj grandaj mordoj kiel ĝi faris eĉ kun la malgrandaj pikoj. Nun ĝi petegas la demandon, kion ni povas fakte solvi simile kun tiu speco de intuicio? Tiu speco de dividado kaj konkerante? Nu, ni povus fari ion kiel tiu hodiaŭ tie. Ni povus preni asistencia. Do eble kiel 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11-- Ne tuj estos ĉiu kio efika. Do atendu, grado lernejo. 2, 4, 6, 8, 10, 12, 14, 16, 18 kaj tiel plu. Sed ni povus fari iom pli bona? Mi estas sufiĉe certa ke mi ne povas fari tiun sole. Do se vi humuro nin por nur momente, ni alportis kun ni algoritmo kiu estas ĵus ricevis tri paŝojn, sed ŝi require-- se vi ne mind-- ni ĉiuj staras, se vi volus. Do, ni ĉiuj nun staras, paŝo unu el tiu algoritmo estas la jena. Stariĝu kaj asigni mem la numeron 1. Do je ĉi tiu punkto en tempo, laŭvorte ĉiuj en tiu ĉambro espereble pensas al si, tamen mallerte, la numero 1. Nun paŝi du de ĉi tiu algoritmo estas tuj impliki jeno. Ŝtupo du, paro for kun iu staranta, aldoni viajn numerojn kune, kaj adopti la sumo kiel via nova numero. Rapida prudento ĉeko. Kio numeron ĉiuj pensas nun? Do 2, krom eble por unu, malgracia, soleca persono. Se ni havas neparan numeron de homoj en la ĉambro. Do unu persono eble ankoraŭ estu la numero 1, tio estas bone. Sed paŝi tri tie, unu vi devus sidiĝi. La aliaj devas iri reen paŝi du kaj ripeti, se vi volus. Do se ankoraŭ staranta, vi devus esti inter tiuj revenanta paŝi du. Konservu iras. Kelkaj homoj ankoraŭ staras. Do, se ankoraŭ staras, pariĝas kun iu. Bone, malkreskantaj suben. Kelkaj homoj ankoraŭ staras. Mi helpos se gravas. Memoru la ŝlosilo takeaway tie, estas kiom multe pli rapida ol tiu estas min rakonti. Do ni vidu. Mi povas helpi. Do kiu nombro estas vi ankoraŭ pensas? Publiko: Mi estas ĉe 44. DAVID J. Malan: 44, do Vi antaŭeniri kaj sidiĝu. Kiu nombro vi pensas? Publiko: 74. DAVID J. Malan: 74. Bone, antaŭeniri kaj sidiĝu. Kiu alia estas ankoraŭ staranta? 86. Kaj estas iu alia ankoraŭ staras? Kio numeron? Mi aŭdis 67. Kaj poste en supera? 32. Ajnulo ankoraŭ staras kaj pensis pri nombro? Ho, hi. Pardonon. Pravi reen. 42. Ajnulo? Publiko: 47. DAVID J. Malan: 47. Ĉu ajnulo ankoraŭ staras kiuj ne estis rakontitaj? Do la fina nombro de personoj en ĉambro kiu havas 497 sidlokojn is-- ĉiuj kiuj estas filled-- estas 390. Do tiu estas granda. Ni baldaŭ diskutos la nocio de cimo en komputila programo. Sed ni revenos al tiu post nelonge. Sed teorie, kio povus okazi ĝuste nun? Do kvankam ekzistis tri grandaj paŝojn al tiu algoritmo, ĉiu el tiuj estis nur ia unu granda operacio. Kaj estis tiu ciclicidad al ĝi en tiu kvazaŭ vi ankoraŭ staras, vi tenis iranta de paŝo tri al du, paŝi tri al du, paŝi tri al du. Sed kio restos okazanta sur ĉiu ripeto? Ĉiu ciklo de ĉi buklo? Kio okazis aliloke en la ĉambro? Ne nur la sama aĵo, sed kio okazis al duono de vi? Sidiĝante. Kaj do tie en mensogoj tiun komprenon, multe kiel la telefono libro ekzemplo, en tiu se duono de vi sidiĝante ĉiu tempo, la problemo estas komencanta kun eble 400 personoj, tiam 200 homoj, ol 100 homoj, tiam 50 homoj, kaj tiel antaŭen. Kaj tiel ni Whittle malsupren en teorio al nur unu persono, pensante de la tuta valoro de ĉiuj. Nun realaĵo, iu socia dinamiko, kaj iuj aritmetiko eraroj povus kontribui al tiu finfina cimon. Sed en teorio, dum mi estis ankoraŭ rakonti for, prenante pluraj dekduo paŝoj, aŭ centoj da ŝtupoj kalkuli mem, rakonti a ĉambron plenan de 500 aŭ tiel homoj devus esti prenita multe pli malmultaj paŝoj, ĉar vi nur povas dividi 500 kaj 1/2 tantas fojoj. Kaj tiel nur kiel kun la telefono rezervi ekzemple la alia tago, ĉu ni havas ion logaritma tiel diri, per kio se ni ĉiuj funkciigantaj en unuto, kaj ignorante la Krome eraroj, ĉu ni atingis akurate tian rultempo? Nun estu justa, ia trompis, en ke mi ekspluatita alia rimedo. Dum ĝi estas nur unu el mi, Mi ekspluatita centoj de vi. Sed tio povus esti dirita esti ekzemplo de paralela pretigo, aŭ staton de arto tre en boga kie komputiloj tiuj tagoj havas multoblaj CPU, aŭ pli teknike, pli multnombraj kernoj, kaj vere povas fari multnombrajn aferojn samtempe, multe kiel vi ĉiuj ni faras tie, en paralela. Sed memoru ke kion ni ankaŭ faris merkrede estis provi kapti tiun intuicion kaj formaligi ĝin en kodo. Io kiel pseŭdo-kodo. Kaj fakte, kaj mi esperas ke vi pardoni, estas kiel 80 gradoj en ĉi tie. Do mi iros por preni tiun ekstere por nur iomete. Kion mi pensis ke ni faros estas transiro nun al apliko whereby ni denove engaĝiĝi la spektantaro, sed skribi programon en la angla kiel sintakso, per kiuj oni solvi tiun problemon ĉi tie. [VIDEO reprodukto] -ĝi La arakido butero ĵeleo tempo. Arakida butero ĵeleo tempo. Arakida butero ĵeleo tempo. Vojo ya! Vojo ya! Vojo ya! Vojo ya! Nun iru! Tie vi iru! Tie vi iru! Tie vi iru! Arakida butero ĵeleo! Arakida butero ĵeleo! Arakida butero ĵeleo! Arakida butero ĵeleo! Arakido, arakida butero ĵeleo! Arakida butero ĵeleo! Arakida butero ĵeleo kun batilo de bazpilkado. [FINO reprodukto] DAVID J. Malan: --kiu vídeo, sed estas iom adictivos, se ne iom ĝena. Sed por fari tion, mi pensis, kion ni preferus fari estas provi skribi programon kune, por kiu ni bezonas tri volontuloj. Devas esti komforta sur fotilo kaj interreto. Sam, venu supren. Purpura ĉemizo, ĝuste ĉi tie, venu supren. Kaj de tie, mi iri iom pli for reen. Crimson kaj bluaj ĉemizoj, venu supren. Perfekta. Venu nun. Venu supren, venu supren. Kaj kio estas via nomo? Erica. Davido, agrable renkonti vin. Se vi ŝatus preni tiun sidlokon tie. Tiu estas Sam. Kio estas via nomo? Antonio. Antonio, agrable renkonti vin. Erica kaj Sam, se vi estus ŝatas havi sidlokon tie. Kio ni venis preparita kun, kiel tiuj uloj estas malkovrado, estas la ingrediencoj kun kiuj fari arakido butero kaj ĵeleo sandviĉo. Nun tio ĉi povus esti io ke vi prenas tre por sentado. Sed ni donita ĉiu de niaj tri volontuloj here-- du volontulojn kaj Sam tie, panbulko ĉiu, telero, tranĉilo, krucxon ĵeleo aŭ marmelado, kaj krucxon de arakido butero. Kaj la celo ĉe mano nun estas tuj estos por tiuj tri fari arakido butero kaj ĵeleo sandviĉo. Sed kion ni tuj fari estas atendi la audience-- ekde vi ĉiuj certe scipovas fari ĉi tiel bone en reality-- tuj ni havigas la paŝo post paŝo instrukcioj. La pseŭdo-kodo, se vi volas. Do mi ludos la rolon de skribisto tie. Kaj mi havas iom por-do list, kaj tiel ĉiu el vi, unuope, krias potenciala instrua, mi skribi ĝin malsupren, ripeti ĝin laŭbezone. Kaj tiam vi uloj estas irantaj fari arakido butero kaj ĵeleo sandviĉo nur farante kion vi rakontis. Do pensu pri vi mem kiel komputiloj. Vi povas nur fari kion vi rakontis. Neniu supozoj, ne demandoj. Vi nur bezonas fari ĝin. Do, kiuj ŝatus Hazard la unua instrukcion por fari PBJ sandviĉo? Sur la balkono tie. Publiko: Malfermu la sakon de pano. DAVID J. Malan: Malfermu la sako da pano, se vi volas. Do ni vidu. Ni persisti kaj atingi iom pli precizan. Bona maniero por komenci kvankam. Ŝtupo du, iu alia. Nun neniu volas volontuli. Paŝi du, frente. Publiko: Malfermu la internan sako de pano tiel. DAVID J. Malan: Malfermu la internan sakon da pano ankaŭ. Granda, ni lernas. Iom pli preciza. Ni lasu tiun laborista. Jes, en verda ĉemizo. Spektantaro: [inaudible] DAVID J. Malan: Tranĉaĵoj de pano. Milde forigi du tranĉaĵoj de pano. Tio estas bona. Paŝo kvar, iu alia? Super tie, jes? Spektantaro: [inaudible] DAVID J. Malan: Loko pano sur telero. Paŝi kvin? Paŝi kvin, Yeah? Spektantaro: [inaudible] DAVID J. Malan: Aldonigxis of-- ho mane. Plaĉas manon sur supro de arakido butero. Ĉu tio kion mi estras? Publiko: Yeah, kaj desatornillar. DAVID J. Malan: kaj-- diri ĝin denove. Spektantaro: [inaudible] DAVID J. Malan: JXetu la kovrilo apud la arakido butero. Malpeze meti manon sur supro de arakido butero, kaj desatornillar, kaj metis la kovrilon apud la arakido butero. OK, paŝi ses. Paŝo ses, iu alia. Yeah? Spektantaro: [inaudible] DAVID J. Malan: Diru ĝin denove. Publiko: Ripetu paŝon kvin denove. DAVID J. Malan: Sed ripeti paŝo kvin denove, kiu tuj kreos iom de problemo nun se ni faras ĉi tiun paŝon post paŝo. Do nun ni reiros paŝi kvin. Malpeze meti manon sur supro de arakido butero kaj desatornillar kaj metis kovrilon apud la arakido butero. Tiam ekkapti la arakido butero kaj ripeti paŝo kvin denove. Do ni superstiros la senfina ciklo, se vi volas. Paŝo sep, alia. Jes, en dorso. Spektantaro: [inaudible] DAVID J. Malan: --on supro de aliaj. Spektantaro: [inaudible] DAVID J. Malan: Sur la Aliflanke aliflanke supro. Ĉu vi volas ĵus venis ĉi tien? Kiel mi finas la instrukcion? Kio estas la resto de la instrukcio? Publiko: Ignorante tiun parton. DAVID J. Malan: Ignorante tiun parton. Komencu super. Paŝi sep. Spektantaro: [inaudible] DAVID J. Malan: teno kun kontraŭbatalado hand-- tiu estas bona. Tiu estas fakte bona. Spektantaro: [inaudible] DAVID J. Malan: Sed plasto jar-- Spektantaro: [inaudible] DAVID J. Malan: Sed twist-- Spektantaro: [inaudible] DAVID J. Malan: Dum du sekundoj. Nur malfermi la arakido butero bokalo. Mi esperas ke vi pardonu. Do ni supozu ni alvenis. Malfermu la arakido butero bokalo. [Aplaŭdo] DAVID J. Malan: Paŝo ok, ni iru. Paŝo ok, jes, en dorso. Spektantaro: [inaudible] DAVID J. Malan: Bonan. Paŝo naŭ, jes? Spektantaro: [inaudible] DAVID J. Malan: --out de la arakido butero bokalo. Kaj-- kaj kio? Spektantaro: [inaudible] DAVID J. Malan: JXetu tranĉilo reen en arakido butero. Paŝi dek. Paŝi dek. Spektantaro: [inaudible] DAVID J. Malan: Metu la tranĉilon eksteren, kaj tiam forigi la sigelon. Nice. Off la arakido butero. Bone, ŝtupo 11. Spektantaro: [inaudible] DAVID J. Malan: Bone, griza komputilo sekvi blua aŭ ruĝa komputilo. Bona. [Aplaŭdo] DAVID J. Malan: Alportu al ni hejmon. Paro pli paŝoj. Kio poste? Paŝas 12. Ŝtupo 12. Yeah? Spektantaro: Metu unu de la tranĉaĵoj de pano milde sur unu el viaj manoj. DAVID J. Malan: Unu el viaj manoj. Kaj tiam, treti 13. Yeah? Spektantaro: [inaudible] DAVID J. Malan: --on tranĉaĵo de pano. Bona. Sufiĉe bona. Ŝtupo 14, yeah. Publiko: Malfari ŝtupo 13. DAVID J. Malan: Malfari ŝtupo 13. Ni movi sur al ĵeleo. Estas 100- paŝo programo, sed ni estis sur ŝtupo 15. Yeah. Spektantaro: [inaudible] DAVID J. Malan: 7 tra 13 uzante la ĵeleo, ĉar tiuj iris tiel bone. Ripetu paŝojn 7 tra 13, uzante la ĵeleo. Do ekkapti la malsupra duono de la ĵeleo bokalo kun unu mano sur supro. Aliflanke de la aliaj pintaj, ignorante ke parto, ekkapti kun kontraŭaj manoj, la kovrilo kaj la plasto bokalo ĉe la malsupro, kaj tordi por du sekundoj. Poste malfermu la ĵeleo bokalo. Kaj laste, ni provu doni al ni ion manĝeblan. Ŝtupo 16. Do kial ni ne lasos ĝin tie. Dankon tiom por niaj tri volontuloj. [Aplaŭdo] Ni havas iom CS50 streso pilkon por vi. Tuj esti sandviĉo sed- do kion estis la punkto, preter havanta iom da amuzo kun la algoritmo? Sed la realo estas ke eĉ kiam vi programado komputilo, Vi devas esti super preciza. Kiel kompleksa aŭ timiganta kiel via propra komputilo povus tre bone esti al vi, ĉe Almenaŭ kiam iu eliras malbone, la realo ĝi estas bela muta aparato kiu estis elpensita de ni homoj, kaj nur povas fari subaro de kion ni do-- kelkfoje certe faster-- sed ne scias kiel fari supozojn. Ĝi ne scias kiel estos sur la sama ondolongo kiel vi. Ĝi nur faros precize kion vi diros ĝin. Kaj vi estos frapita, eble, kiel ni komencas skribanta reala kodo kun la unua problemo aroj kaj pretere, kiom facile estas fari antaŭsupozo kiel homo, kaj ne anticipi Mi bezonas manipuli Tiukaze, aŭ ke angulo kazo, tiel diri, ke povus tre bone ekesti se ekzemple Sam havis la nur squeezable bokalo de ĵeleo, dum ĉiuj aliaj havis iom vitro kruĉoj kiel bone. Do antaŭ ni turnas nian atenton al iu fakta kodo, permesi ke mi prezentu la Kompreneble kapojn tie ĉe Yale. Niaj amikoj Scaz, Andy, kaj Jason veni tien kaj diri saluton. [Aplaŭdo] SCAZ: Ni perdis Jason temporalmente. Saluton denove, ĉiuj. Mia nomo estas Scaz. Mi instruas ĉe Yale ekde 2001. Kaj kiam mi ne instruis, mia esploro estas en robotiko kaj artefarita inteligenteco. Kaj la anonco kiun mi havas hodiaŭ estas ke ekde kelkaj semajnoj, ni tuj estos alportanta kelkaj kompletiga materialo al CS50 paroli pri inteligenteco programaro. Ni tuj paroli pri kiom lokoj kiel Netflix kaj Hulu povas rekomendi filmoj kiujn vi eble volas rigardi. Kie ni parolos pri kiel ŝoforo-malpli aŭtoj fakte funkcii. Kaj ni povos disfrakasis tion en la konceptoj ke vi lernas en ĉi klaso hodiaŭ. Ĉar ĉiuj tiuj aferoj estas konstruita sur la sama fundamento. Kaj tio estas kion ĉi serio esploros. Do mi vere rigardanta antaŭen al vidanta pli da de vi ĉiuj, kaj vi tuj atingos vidi pli de ni ĉiuj tre baldaŭ. Lasu min tiam enkonduki Jason. JASON: Saluton ĉiuj. Mia nomo estas Jason. Mi bedaŭrinde foriris al Harvard kiel studentoj de. Tio tuj acxeti cxirkauxhakitajn el la fakta fluo. Kaj nun mi estas tie kiel preleganto en la komputika fako. Kaj mi helpanta lanĉi la kurson kun Scaz, Davido kaj Andy. ANDY: Hey uloj. Mia nomo Andy. Mi estas fakte la sola Yale Studento sur la scenejo nun. [Aplaŭdo] Mi estas en Berkeley College, originale de Solon, Ohio. Kaj mi estis unu el tiuj infanoj kie, venante al Yale, Mi vere pensis ke mi neniam devas rigardi kelkajn iam denove. Kaj tiam mi rimarkis, ke vi bezonas ambaŭ scienco kaj QR kreditas diplomiĝi. Kaj do mia unuajarulo printempo, mi prenis klaso, CS, intro CS klaso tie ĉe Yale. Mi estis kvazaŭ, tio estas kiel fakte sufiĉe freŝa. Dum mi vere finis deklarante kiel tutmonda aferoj gravaj, la kapabloj Mi lernis en CS kaj programado Estas tiom aplikebla al ajna kampo vi elektas fari. Kaj la kunlaborantaro tie en Yale, ni estis tiom diligente laboradis prepari por vi uloj. Kaj ni rigardas antaŭen al vidanta ĉiuj en sekcio kaj oficejo horoj. Do jes. [Aplaŭdo] DAVID J. Malan: Dankon. Do ĝuste antaŭ klaso komencis, ni havis okazon marŝi ĉirkaŭ kampuso kun poŝtelefono kaj preni iuj selfies en video formo de vere mia unua turneo de Yale kampuso tie. Kaj do ni pensis ke ni dividas malglata tranĉo de akurate tion kiel Scaz kaj Andy kaj Jason prenis min ĉirkaŭ kampuso. [VIDEO reprodukto] [SIRENOJ] -David. -Welcome Al Yale. -Good Vidi vin. -Nice Vidi vin. -Can Ni iri sur la tour? -Let Iru sur turneo. -Road Turneo. -Ĉi Signo estis tie por momento. -Whah, CS50. -Hurry! Iru, iru, iru, iru. Vi devus [inaudible] Harkness Tower. -Kaj Ni vidis ke paro tempoj. [Aplaŭdo] -Look Ekstere por la biciklo! Ahh! Saluton Frank. -Kio Estas supren, knaboj? -Kiel Vi? -Good Vidi vin. -Welcome Al la vídeo. Ne agas tro ekscitita. -I Amas Silliman. Ahh! -ĝi Estas estita proksimume tri horoj ekde Jason havis glaciaĵo kaj Nutella. Do ni devas halti denove en Silliman por iomete. -ĝi Ne eĉ [inaudible] tamen, nur la fakto ke ili havas tie estas tiom mirinda. Dude, ekzistas Nutella ĉe ĉiu manĝo. -There Estis pasintjare tro. -Yeah. -tell multe pri Yale ĝis nun. Sed mi nun estas TD tie. Kaj tio konsiderita for kampuso. -Jen Ni havas gotikan arkitekturon. Mondfama. Ni havas iom pli gotika arkitekturo. Kaj konstruo, kaj pli gotika arkitekturo. Saluton. Tie estas kie ni havi oficejon horoj Mardon tra ĵaŭdo en Hogwarts, kiel [inaudible]. -All Pravas. Estas tio por la turneo. Ni estas ĉe Universitato Yale Jurstudo, kie hodiaŭa prelego estas plenumonta. Ni kapon. [FINO reprodukto] DAVID J. Malan: Sed kiu alportas nin ĉi tie nun. Do ĝis nun, ni estis temigante _pseudocode_, kiu estas tiu angla-kiel sintakso. Ĝi havas ne preskribo specifo. Ĝi simple uzas iun intuicia lingvo, se vi volas klarigi kion vi volas fari. Sed ni komencu nun al transiro al kodo, kiel plej multaj homoj dirus. Sed pli precize, io konata kiel fontkodo. Tio estas la lingvo kiun homoj skribi ke komputiloj ultimately-- eble post iu nombro de steps-- finfine komprenas tiel kiel scii kiel fari ion. Ke vi vidis ekvidi tiu eble merkrede. Tiu estas ekzemplo ke nekredeble, underwhelming kiam kuri simple diras "saluton mondo." Kaj ĝi estas skribita en lingvo nomata C, kiu estas sintakse tre similaj al multaj aliaj lingvoj ke vi eble ne scias, sed eble auxdis de kiel Java, kaj C ++, kaj Python, kaj Ruby, kaj simile, kaj ja, ni elspezi multon da la semestro uzante C, kaj tiam direkte al la fino de la semestro, konstruante sur ĝi kaj enkondukante ajnan kelkaj aliaj lingvoj. Inter ili PHP, kaj JavaScript, datumbazo lingvo nomata SQL. Sed kun C, kion ni devos tiun fundo-supren kompreno de ĝuste kiom komputiloj laboron, kion vi povas fari kun ili, kaj kiel vi povas solvi problemojn des pli efike per tiu layering ke ni diskutis merkrede, kaj staranta sur la ŝultrojn de aliaj. Sed pli en la venonta. Hodiaŭ ni rigardas pli simplan medion, sed fundamente identa medio konita kiel Scratch per niaj amikoj ĉe MIT Media Lab. Tiu estas grafika programlingvo, Scratch, whereby vi povas treni kaj faligi proprajxon aspekti puzlo pecoj kiuj nur interplektiĝas se ĝi faras logika aŭ programa senco fari tion. Sed ĝi tuj permesos nin havi konversacion pri ĉiuj de la sama programado fundamentoj kiuj kelkaj de vi sciu jam, ke multaj el vi eble ne scias ion sen devi akiri enkaĉiĝis sincere, en la intelekte seninteresa sintakso de punktokomojn, kaj krampoj, kaj citaĵoj, kaj similaj. Ĉiuj de kiu, frue sur, estas distro al kio estas interesaj kaj aŭtente utilaj ideoj. Do ni prenu rapidan rigardo ĉe la medio tie, por ke vi sciu kio atendas. Kaj fakte, inter la ludoj ni povas ludi estas kelkaj programoj verkitaj per CS50 propra iamaj studentoj. Unu el ili, mi mem, mi estos ĉi tiu skribita en diplomita lernejo por mi. Se mi povus preni unu volontulo kiu estas preta por ludi ludo por la tre unua tempo. Certe. Venu supren. Kio estas via nomo? Publiko: Angela. DAVID J. Malan: Angela, venu supren. Do Scratch estis ekstere dum kelkaj jaroj. Kiam mi estis en diplomita lernejo, Mi estis kruco registrita ĉe MIT, prenante profesoro Mitchel Resnick La kurso pri edukaj teknologioj. Kaj ni estis inter la tre unua studentoj en la mondo por fakte beta testo Scratch. Kaj mia projekto estis kio Angela nun dankinde, volontulis por ludi nomita Oscartime. Do mi tuj iros antaŭen kaj duobla klaku ikono tie. Ĝi tuj malfermi programado Medio kiu ni baldaŭ plonĝi en. Mi tuj kompleta ekrano ĝi por Angela, tie. Mi tuj trafis la verda flago en nur momento. Kaj tiam tuta amaso de rubo tuj falos el la ĉielo. Kaj vi tuj uzi la muson tie efektive treni kaj faligi rubujen en Oscar rubo tedaĵoj. Do se vi volas antaŭeniri kaj klaku la verdan flagon, la ludo komenciĝos. [MUZIKO Ludante] Ho, mi amas rubo. Io malpura aŭ malhelaj aŭ polvokovrita. Io ajn ĉifona aŭ putraj, aŭ rusta. Jes, mi amas rubo. Se vi vere volas vidi io trashy, rigardu tiun. Mi havas tie Sneaker jen ĉifonaj kaj eluzita. Ĝi estas plena de truoj tenas kaj la ŝulaĉoj estas ŝiritaj. Donaco de mia patrino la tago mi naskiĝis. Mi amas ĝin ĉar it's-- DAVID J. Malan: --green tiuj tagoj nur esti ĵetante ĉion en la rubujon. Kaj tiel kion unu el CS50 propra stabo did-- Jordan, kiu vi eblas renkonti today-- havas reale ĝisdatigita ĉi por hodiaŭaj tempoj. Do permesu al mi malfermu remix anstataŭe por Angela. Kaj ni ludos ĉi anstataŭ por kelkaj momentoj kie nun vi estas tuj devas decidi inter u ĵeti ion en la rubujon, aŭ reciclar aŭ compost ĝin. Do ekzistas iom de premo sur vin akiri ĉi tiu rajto antaŭ via 392 al 497 samklasanoj tie en la salonon, se vi volus. [VIDEO reprodukto] [MUZIKO Ludante] -Ho Mi amas rubo. Io malpura aŭ malhelaj aŭ polvokovrita. Io ajn ĉifona aŭ putraj aŭ rusta. Jes, mi amas rubo. Se vi vere volas vidi io trashy, rigardu tiun. Mi havas tie Sneaker jen ĉifonaj kaj eluzita. Ĝi estas plena de truoj kaj la ŝulaĉoj estas ŝiritaj. Donaco de mia patrino la tago mi naskiĝis. Mi amas ĝin ĉar ĝi estas rubo. Ho, mi amas rubo. Ion malpuran, aŭ malhela, aŭ polvokovrita. Io ajn ĉifona aŭ putraj aŭ rusta. Jes, mi amas rubo. Jen kelkaj pli putra stuff. Mi havas ĉi tie kelkajn newspaper-- [FINO reprodukto] DAVID J. Malan: --are fakte compostable. Sed dankon al nia volontulo, Angela. Ni havas streson pilkon por vi ĉi tie ankaŭ. Do dankon. Do ĉi tiu estis skribita de mi. Sed nun unu post fakta iama studento kiu implementó ĉi, kiu estas ludo. Ĉio en tiu lingvo nomata Nulo, ke ni baldaŭ senŝeligas reen la tavolojn de. Sed se ni volas like-- kiom pri alia volontulo? Dekstra. Venu supren. Kio estas via nomo? Rigardo? Okazaĵo. Okazaĵo, venu supren. Agrable renkonti vin. Venu ĉi maniero. Do ĉi tiu havu temo konata al kelkaj el vi. Sed vi vidos tro ke povas ekzisti interactividad, whereby vi povis esti la rolo de la karaktero moviĝas ĉirkaŭe. Agrable renkonti vin. Davido. Mi donas al vi, Pikachu. Instrukcioj pri veni sur la ekrano. Sed mallonge, vi tuj volas kapti la bongusta ŝtofo, kaj eviti la bombojn kaj aliajn aferojn. Kun la kursoroj tute. Do batis la spaco trinkejo. -Pikachu. DAVID J. Malan: Catch la havajxoj maldekstre ne trafi la havajxoj dekstre. [MUZIKO Ludante] Do unu lasta tie. Se ni povus havi unu pli volontulo tie. Ni pensis ke ni rekrei ion from-- en la flava shirt-- de merkredo. Kio estas via nomo? Mary, venu supren Maria. Kaj memoru merkrede ni enkondukis la nocio de duuma, kaj binara bulboj. Tiu estas fakte nun efektivigo de tiu sama interfaco ke ni havis sur la iPad kun la lumo bulboj, sed tie per cifereca pruntitaj. Kaj anstataŭ fari streso ball-- agrable renkonti vin, Davido. Ni alportis kelkajn lumo bulboj de Kembriĝo. Se vi povas, klakante sur tiuj bulboj turni ilin sur kaj for, supreniru kun la duuma reprezento de diri 256. Kaj vi vidos en la mezo, la nuna kalkulrezulto. Tiel ke oni estas sur. Do la plej maldekstra iom estas ĉe. MARY: Yeah, [inaudible] DAVID J. Malan: Bone, do ni havos just-- io. Do tiu estas la 128 kolumno. Do ni estas ĝis 128. Ni devas iri al 256. Kaj vi povas toquetear sur kaj malproksime, ne granda interkonsento. Aŭ vi povas kolizii ke 128 pli fojoj se vi volas. Bone, bone. 24. Jes, proksimiĝas. Closer! Ho, kio estas la problemo tiam? Do kio estas la afero? Do kion ni bezonas solvi tiun problemon? Do ni bezonas alian iom. Kaj tio estas perfekte racia en realo, ĉu ne? Se vi volas rakonti de la nombro 1 al 2 al 3 ĝis 4 al 5, 6, 7, 8, 9 efektive ruli super al 10, vi estas tuj bezonas plia iom. Do ni vere malantaŭenigi tie, kaj supreniru with-- tio evidente intencita esti instalita. Vi ne povas fari 256 kun nur bulbo. Do kio pri simple la nombro 50? Numero 50. Bonege. Grandan ĉirkaŭvojon de aplaŭdoj por Mary kaj ŝia ankaŭ. Dankon. Do tiu topic-- intenca kiel ke was-- efektive ripetas. La plej granda valoro kiun vi povas reprezenti kun ok bitoj, aŭ unu bajto, Estas ja 256. Sed ne se vi komencas rakontante de 0, kiel ni ŝajnas daŭre fari por havi ĉiuj el tiuj bitoj for. Sed nun ni plonĝi en la suba efektivigo de tiu medio, kaj turmentus aparte kelkaj el tiuj ideoj. Do, momente ni estas proksimume vidi kelkaj malsamaj programado bazfaktoj. La unua de kiuj ni vokos komunikaĵo. Ia verbojn, se vi volas. Agoj. Aĵoj kiujn oni devas fari. Kaj post momento vi vidos blokoj kiuj aspektas kiel tiu. Diru "saluton mondo" ekzemple. Aŭ atendu unu sekundo. Aŭ ludi sonon meow. Kaj efektive la medion en kiun ni tuj faros ĉi nomiĝas Scratch. Kaj se mi elsxiros Scratch sen preloading ajna reala kodo, ni prenu rapidan rigardon al tiu uzantinterfaco, por tiel diri. La kontroloj kun kiuj ni interrilatas. Sur la supro lasis tie de la ekrano, sub la menuoj, ni havas la scenejo, tiel diri. Do Scratch estas kion ni nomas Sprite. Estas karaktero. Kaj li povas esti regata per skribi programojn kontraŭ li. Kaj li povos movi supren kaj malsupren kaj maldekstre kaj dekstre en ĉi tiu medio, Ne nur movante la muso, sed programmatically. Mi povas diri al li piediri dekstren, promeno lasis, supren, malsupren aŭ similaj. Kaj mi povas enkonduki aliajn sprites aŭ karakteroj ankaŭ. Efektive, sur la fundo tie estas kie vi vidos vian liston de sprites. Nuntempe, mi nur havas unu, sed mi povas krei pli, kaj ili devos aperi ĝuste tie sube. Do se vi malantaŭenigi dum momento, kiel Oscartime-- ekzemple, Oscar, maldekstre rubujen povas, estis sprite. Kaj tio en la mezo, la reciklado bin, estis alia sprite. Kaj la compost bin estis alia sprite. Kaj ĉiu peco de rubo aŭ recyclables Falantojn el la ĉielo Estas ankaŭ sprite, ĉiu el kiuj Estis planita individue. Kiel vi planas? Nu, ĉi tie dekstre flanko estas la skriptoj areo. Kaj tiu estas kie ni povas treni kaj faligi puzlo pecoj. En semajno, ĝi tuj estu kie ni ekvivalente skribi kodon kun pli de klavaro, sed por hodiaŭ ĝi devos esti trenante kaj delasante enigmo pecoj, la paletas por kiu cxiuj povas troviĝas tie, meze. Efektive, en la mezo tie ekzistas tuta aro de kategorioj de puzlo pecoj aŭ blokoj. Onia rilatita al moviĝo, rigardu, sono, plumo iras supren kaj malsupren, datumoj, eventoj kontroli. Ne tute certa tamen kio ĉiuj tiuj signifas, sed vi vidos ke ili havas estis bele categorizadas. Kaj skribi programon en Scratch, ni faru ĝuste tion. Mi tuj dividi sub Eventoj kaj eltrenis ĉi tie. Kiam verda flago clicked. Nun kial tiun? Nu memoras ke niaj volontuloj venadis kion mi unue aŭ ili estis klaku ke verda flago en la supra dekstra mano angulo. Kaj tio nur signifas komenci la programon. Do kiam tiu okazaĵo okazas, Kion mi volas fari? Mi tuj iros sub Looks, kaj mi tuj faros "saluti". Kaj mi tuj ŝanĝos tion kaj diri ion kiel "saluton Yale." Kaj nun mi tuj zomi eksteren, klaku la verdan flagon, kaj voila, mi skribis programon. Ne ĉiuj kiuj ekscita Ankoraux ne, sed tiu Estas ekzakte kie ĉiu de tiuj aŭtoro komencis, ambaŭ kun Pikachu kaj la duuma bulboj, kaj Oscartime, kaj tiel multaj pli ekzemploj. Vi komencas super simpla kaj tiam vi komencos tavolo, kaj aldoni sur karakterizaĵoj kaj funcionalidad. Do kio estas ĉi tiuj tavoloj tuj konsistos? Nu, preter deklaroj, ni ankaŭ havi aferojn iom pli fancily nomita Bulea Esprimoj, post iun nomitan bool. Kaj Bulea esprimo estas simple esprimo kiu estas vera aŭ malvera, jes aŭ ne, 1 aŭ 0. Ajna polusaj kontraŭoj tiel. Ĝi estas vera aŭ ne. Sed ni ankaŭ iranta vidi kiuj povus aspekti ĉi. Do ekzemple, estas la muso malsupren? Ili estas speco de demandoj, se vi volas. La muso estas aŭ malsupren, vera aŭ ĝi ne estas, falsa. 1 aŭ 0, se vi volas, inklinas esti la surĵeto. Vera estas 1, falsa estas 0. Nu kio pri malpli ol tio? Aŭ tiel, estas ĉi malpli ol tio? Tio estas demando de varoj. Kaj se vi metas du nombroj en tie, ĉu x tuj estos malpli ol y aŭ egala al y, aŭ pli granda ol y, sed tiu bloko ni vidos, estas nur tuj respondi la demandon, Estas ĉi malpli ol tio? Ni ankaŭ povus vidi ion kiel tiu. Kortuŝa muso montriloj. Do en Scratch, vi povas demandi la demandon, estas la Sprite tuŝanta la musmontrilo? Alivorte, estas la kursoro flugo estacionario super la ĉapo, aŭ la ekvivalenton? Ni vidos Anding aferojn kune. Vi povas demandi du demandojn, kaj certiĝu ke ambaux donu vi jes aŭ vera respondojn antaŭ preni decidon fari ion. Sed tiam kiel vi faras decidojn? Nu, ni havas tiujn kondiĉojn. Kaj ni vidis tion en nia ekzemplo de la telefono libro. Rigardante al la maldekstra aŭ rajto por Mike Smith. Kaj en la kondiĉo, vi fari ion potenciale, se Bulea esprimo estas vera. Kaj efektive, rimarki la formojn nun. Estas ĉi lokokupilo nun sur la superkape, kie ni povas fit-- se mi malantaŭenigi unu slide-- ke formo. Ĝi estas ne tre la sama grandeco. Kaj efektive, vi vidos ke Scratch resizes aferoj dinamike konveni enigmo pecoj, sed la formo estas kio estas grava. Tiu afero aspektas kiel ke, kaj efektive ĝi estas malglate la sama formo ke devus havi en tie. Kaj se ni volas fari ion ĉi tien nek cxi tien, se aux, ni havas ĉi enigmo pecon en Scratch tiel. Nun supozu vi volis fari se, alie se, alie. En aliaj vortoj, triopa forko en la vojo. Nu kion vi povas fari nur ekrigardas ĉi? Mi povas preni ĉi puzlo peco, kaj ĝi ne ŝajnas persvadi, sed denove, Scratch tuj re-grandeco bele por ni. Mi povus komenci al mantelo tion kune. Do nun mi havas tridirekta forketo se tio estas vera, do ĉi. Else se tiu alia afero estas vera, iri tiun vojon, alie iri ĉi alimaniere. Kaj en The Muppet Movie, La forko en la vojo, por tiel diri, inter Yale aŭ Stanford, estis ekzakte tion, nur du kondiĉoj. Ĉu iri tiun vojon, alie iru tiudirekte. Nu, loops ankaŭ ekzistas en programado. Kaj ni uzis tiujn jam en klaso kaj en _pseudocode_ kodo, kaj certe en tiuj Scratch programoj ĉiam. Scratch havas tiu enigmo flikaĵo simple lasos vin fari ion ĉiam. Kaj foje vi volas fari ion ĉiam. Ĝi ne estas nepre cimon, ĝi estas ĉar vi volas horloĝon plu iri, aŭ ludo por daŭre ludi. Aŭ vi povas entajpi finia nombro de paŝoj, kiel kun tiu ripeto bloko tie, kiu ripetos ion 10-foje. Ni povas agordi variabloj, ni baldaŭ vidos. Kaj kun variabloj, simila en spirito al algebro, kiel x, aŭ y, aŭ z. Estas iu simbola kiu povas stoki iu valoro, iu peco de informo, ke vi eble volas memori por poste. Bona ekzemplo de tio eble estos ludo kie vi havas partituron, kiel en Pikachu. Kiom da pecoj de kuko kaj whatnot vi kaptas? Nu, tio eble estas ŝanĝiĝema nomata partituro kiu komenciĝas ĉe 0. Kaj tiam ĉiu tempo ni kaptis peco de kuko aŭ dolĉaĵoj, aŭ simile, gets incremented. Gets aldonita al unuope. Kaj tiel ŝanĝiĝema tendencas a peco de informo tiel. Tiam ekzistas arrays, kaj ni venos reen al tiuj en semajno aŭ du horo, sed tabelo estas speco de kiel inventaro aŭ valizon, enen de kiuj vi povas meti virtuala aferojn. Ĝi permesas stoki pli ol unu peco de informo. Kaj tio povas esti utila se en la ludo, vi estas ia marsxante pluki aĵojn. Kaj eble vi deziras teni ĉiuj el tiuj pecoj de kuko ĉirkaŭe, kaj ne nur manĝi ilin unu post alia. Kaj tiam tie estas amatoro konstrukcio ni venu al nomitaj funkcioj aŭ proceduroj. Kaj kvankam ni iras rapida tie, ni vidi ke ĉi tiuj estas tre natura solvo al problemoj ke ni tuj renkonto. Kiel niaj programoj komenci akiranta pli grandan ni ekrimarkos ŝablonoj en la kodo kiun ni skribas, la puzlo pecoj ni estas trenante kaj delasante. Kaj tuj kiam vi rimarkos mem faranta io denove kaj denove, aŭ plej malbona ankoraŭ kopii kaj alglui programado kodo ke vi skribis, ke estas verŝajne ŝanco al faktoro ekster ajn vi gardos kopiado kaj interglui, kaj metante ĝin en iu nomita "funkcio." Sed pli en tiuj en multe pli detale antaŭ longe. Kaj tiam tie estas eĉ amatoro karakterizaĵoj. Por tiuj de vi pli komfortaj, aŭ prenante APCs aŭ ekvivalenta, Scratch reale subtenas aferoj kiel fadenoj kaj eventoj kaj pli. Do rimarkas ke ĝi havas sufiĉe alta plafono, kvankam ĝi estas ankaŭ tre larĝe alireblaj por homoj kiuj neniam planita antaŭe. Do ja, ni rigardu ĉe simpla programo aŭ du. Ni jam rigardis kiel ni povus diri saluton kun Scratch. Lasu min kaj malfermu iom pli interesa programo ke mi skribis en anticipo. Kaj ĉi onia nomita Pet la kato. Ĉiuj de ĉi tiuj programoj estos disponebla en CS50 la retejo. Efektive, jam ekzistis. Do vi povas elŝuti ilin kaj ludi kun ili, kaj kun Problemo Ara 0, kiu estas ankaŭ sur la kurson de afiŝinto, vi kuraĝigis piediri tra tiuj. Kaj cetere, ni havas numeron de piediro-tra videos rete en kiuj mi kaj CS50 la teamo vere marŝi tra ĉiu de tiuj ekzemploj je multe malrapida ritmo, tre rapidan forwardable, aŭ rewindable ritmon, tiel ke vi povas marŝi tra tiuj ĉe via libertempo ankaŭ. Do jen Scratch maldekstre. Jen programo ĉe la dekstra ke mi jam pre-farita. Do lasu min zomi en ĉi tio. Kaj eble iu en la angla, sciante kion vi scias, nur ekde nun kiel al kiel Scratch verkoj, ia diri en angla frazo aŭ frazo, kion signifas tiu programo ŝajne faru? Jes, en oranĝkolora ĉemizo. Spektantaro: [inaudible] DAVID J. Malan: Yeah, se via kursoro estas sur Scratch la kato, ludi meowing sono. Sed rimarki kiel ni esprimas tion. Ekzistas ŝajne buklo tie, ĉiam. Kaj tiam tie estas kondiĉo, la se esprimo. Kaj kolektive, kion tiuj signifas? Ĝi signifas tiu programo estas nur ĉiam kurante, kaj ĝi estas nur ĉiam atendante kaj rigardante kaj aŭskultante por min movi mian muson super la kato. Ĉar ĉiufoje mi faras tion, kiel vi proponas, ĝi tuj fari tion. Permesu min komenci la programon. Nenio ŝajnas esti okazas, sed rimarki kiom ĝi estas reliefigita nun en flava linio. Tio simple signifas ĝi kuras. Kaj ĉar tie estas ĉiam buklo, ĝi estas ankoraŭ kurante. Do lasu min movi mian kursoron super Scratch. [Meow] [Meow] Kaj se mi movas ĝin, [Meow] nun haltas, sed la programo ankoraŭ kurante. [Meow] Kaj tiel, adorable. [Meow] Do ni malfermu iomete pli progresintaj Ekzemple nomita Dono't Pet la kato. Kaj nun ni vidu kio okazas ĉi tie. [Meow] Meowing. Do estas iom sur aŭtomata piloto, se vi volas. --pet la kato. Mi scivolas kial. [ROAR] [Meow] Do kiel faris tiun laboron? Nu, vi povas ia kialo tra ĝi intuicie, eble. Sed ni rigardu la fakta kodo. Do denove, kiam la verda flago klakis, faru tion por ĉiam. Kion vi volas fari por ĉiam? Nu, se kortuŝa muso montrilo, tiam ludi sonon kiu estas ŝajne nomita Lion 5, kiu estas interne de tiu projekto, alia ludi sonon meow, kaj poste atendi du sekundoj, tiel ke ĝi ne meowing senĉese. Fakte, vi povas tre rapide komenci tedi vin mem kaj vian kunloĝantoj. Ni forigu tiun blokon. Kaj rimarki kio estas agrabla pri Scratch. Aĵoj nur speco de trenu prediku kaj interplektiĝas. Do denove, ĝi kreskas al plenigi kion vi volas. Sed se mi forigas tiun, kaj tiam frapo teatraĵo, [KOMPUTILO Blip SOUND] --it Estas ia stumblanta super mem, ĉar ĝi estas laŭvorte faras kion mi diras. Oni diras ĉiam ludi ĉi sono, sed Mi ne donante ŝancon fini. Kaj tial estus cimon. Kaj jen kial ni devis jenon tien nun. Do ni vere komencos de scratch-- ia vortludo iomete intended-- en kiu ni nun havas la kato movo. Do mi tuj faru tiun sur la muŝo. Mi tuj zomi tie, nur akiri min komencis sur Eventoj. Kaj verda flago clicked. Kaj estas aliaj manieroj komenci la skriptoj. Ni tuj konservi ĝin simpla tie. Kaj nun mi tuj iros antaŭen kaj iri sub Kontrolo. Kaj denove, se vi forgesos kie aferoj, simple alklaku ĉirkaŭe, kaj fine vi trovos ilin denove. Do mi volas ĉiam faras kion? Mi volas uzi la moviĝo bloko ke mi scias ke ekzistas, movi 10 paŝoj. Do ni vidu kio okazas tie se mi ludi ĉi tiun ludon. Feliĉe ĝi ne iras tro ege. Mi povas ankoraŭ ia ekpreni lin per la vosto kaj tiri lin reen. Sed la programo estas ankoraŭ kurante, do li jen speco de lukto mi. Sed ĝi estus ia agrabla se mi kondiĉe fiksi tion en kodo. Ĉar tiu estas not-- fakte tiu estas vere Ne amuza ludo por iu ajn de ajna aĝo. Do ni provu ripari tion per havanta ian kondiĉoj. Do mi tuj iras sub Kontrolo, kaj tiam se. Mi ŝatas tiun ideon. Do post movanta 10 paŝoj, if-- mi sentas, kie mi estas. Mi tuj iros sub sensado, kaj tiam ĝi aspektas mi povas iri tien. remi al la formo matĉoj. Grandeco ne, sed estas tuj kreskos plenigi. Kaj nun tiu estas iom menuo. Kaj nun muso pointer-- mi ne volas la muso, mi volas la rando. Do Scratch estas sufiĉe lertaj por scii kiam sprite tusxas la randon. Kion mi volas, ke li efektive faras? Lasu min antaŭeniri kaj ŝanĝi moviĝo. Vi scias kion? Mi tuj havi lin turni ĉirkaŭe. Do ĉe 15 gradoj ne estas vere tuj helpos min. Mi volas lin turni ĉirkaŭe kaj iri la alia vojo. Do ni vidu kio okazas tie, se mi batis Ludu nun. OK, ia stulta rigardis, sed ĝi estas faranta ekzakte kion mi diris. Kaj ĝi estas turnanta la tuta sprite. Nun ĝi rezultas mi povas korekti tiun. Kaj mi ne scias kiel ripari tion komence. Mi specon devis futz ĉirkaŭ kaj vidi la plej bona maniero fari tion. Sed se mi iras to-- ni vidu, moviĝo. Ho, mi trovis ĉi tiun. Reale, Fiksita Rotacio Stilo. Maldekstre, dekstre, aŭ ne turni, aŭ ĉirkaŭe. Kaj ĝi rezultas ke estas kion mi volas. Kaj mi tuj metis ĉi ne mia buklo, ĉar mi ne bezonas meti la rotacio stilo plurfoje. Mi tuj metis ĝin ĉe la plejsupro de ĉi programo tiel ke gets metis unufoje, kaj tiam memoras. Kaj nun mi iras provi tion denove. Lasu min haltigi la programon. Kaj nun ke fiksita ke cimoj. Do mi ripete pliboniganta sur tiu. La programo estas duumaj iom pli kompleksa kaj pli granda, sed mi prenante bebo paŝas tiel diri, kaj malgrandaj mordoj el la problemo akiri ĝin pli bona kaj pli bona. Sed tiu ankaŭ, estas speco de lama. Vi scias kion? Demandus iun kun vere bona, terura voĉo deziras veni supren? Iu kun voĉo. Uh, Yeah. Venu supren. En la verda ĉemizo. Do rezultas ekzistas iu alia amuza aferojn, estetiko kaj sonas egale. Jen la meow. Mi alklakas la Sonoj langeto. [Meow] Ekzistas la meow. [Meow] [Meow] [Meow] --actually rekordo ion de nia propra tie. Do ni faru ĝuste tion. Anstataŭ uzi ĉi kato sono, ni iri antaŭen tie, kaj kio estas via nomo? Nick, agrable renkonti vin. Ĝi estas David. Do, momente, mi tuj bati la Rekordo butonon. Kaj se vi nur povas krii en la tekkomputilo, "Aj," kvazaŭ vi nur piediris en la muro, ke estos multe estimita. 1, 2. Nick: Ouch! DAVID J. Malan: Imponega. Nun povas fari iom redaktado tie. Tuj forigi la kvieta partoj. Kaj mi kredas ke tio estas bona. Koran dankon. Nick: Plezuro. DAVID J. Malan: Mi havas nur renomis ĝin "Ouch" sed nun mi tuj reiru al miaj skriboj. Kaj rimarki tie estas ja sono tie. Kaj mi tuj iros antaŭen kaj ludi la sono Ouch, kaj mi tuj faros tion se ĝi estas tuŝi la randojn nur. Kaj tiam mi tuj havas ĝin turni ĉirkaŭe. Do ni vidu kio okazas tie. Ni iru plena ekrano. [VIDEO reprodukto] -Ouch! Aj! Aj! Aj! Aj! Aj! Aj! Aj! [FINO reprodukto] DAVID J. Malan: Do vi konscias ke ni ricevas iom bonŝanca. Mi tuj havi lin movo kiel 100 paŝoj samtempe. La efekto kiu nun tuj al be-- [KOMPUTILO Glitch SOUND] Do ene kialo. Do eblecon rafini ke plu se ni vere volas. Do nun ni enkonduki alian koncepton. Lasi min foriri en unu vokis Counting Sheep kaj uzo ion nomata variablo. Tio estas adorable iom ŝafojn kaj Mi ŝanĝis sian kostumon tiel diri. Do kvankam la defaŭlta estas kato, vi povas alŝuti, vi povas desegni, vi povas fari ajnan nombron de karakteroj sur via sprite. Jen programo kiu estas faros kion en la angla? Bazita denove sur precize kion vi scias nun. Kio ĉi programo fari? Jes, ĝi tuj rakonti. Unu nombro je tempo. Ni havas ŝajne havas ĉi aro vendotablo. Mi ne scias kion tio estas, sed eble estas ŝanĝiĝema. Estas nur ujo, x aŭ y. Sed la vorto vendotablo estas pli priskriba ol matematikisto de x aŭ y. Do ni povas uzi anglaj vortoj por aĵoj. Forever, simple signifas teni farante tiun. Diru vendotablo. Nun kie tiu venas? Nu, Ĝi rezultas ke vendotablo estas variablo. Do estas nur alia enigmo peco mi kreis anticipe. Kaj eĉ se ĝi okazas ne esti la sama formo ĉi tie, normale vi dirus io kiel saluton ĉi tie. Vi ankaŭ povas treni variablon tiel ke tio estas kion la akiri diris. Tiam mi atendos dum sekundo, mi ŝanĝi la vendotablo per unu, pliigante ĝin aldonante unu. Por ke la pura efiko estas tiu adorable kalkula ŝafoj. Kvankam li rakonti mem. Nun estas tre rapide tuj akiri enuiga ĉar li tuj faru tion vere por ĉiam, sed tio estas ĝuste kion la programo dezajno preskribas. Lets nun provu alian ekzemplon kiu utiligas variablon. Ĉi tiu nomita Hi Hi Hi, ke does akiri ĝena rapide. Nun ĉi tiu havas du skriptoj. Kaj tiel denove, ni prenas bebo paŝoj. Ni komencis per io ekstra malgranda, aldone, aldonis al ĝi. Nun mi volas fari ion eĉ pli dinamikaj, do mi volas aŭskulti al du malsamajn aferojn samtempe. Do maldekstre, kiam verda flago estas clicked, Mi starigis variablo kiu mi skribis anticipe nomitaj Silentigita. Kaj mi arbitre starigis ĝin al 0. Do Scratch ne havas veran kaj falsa, sed ĝi havas 0 kaj 1. Do mi povas aproksimi tiun saman ideon. Kaj tiam por ĉiam, se la spaco trinkejo estas premita, tiam starigis la variablo al 0. Aŭ bedaŭras. Se la spaco estas premita, kaj se silentigita, la variablo, estas 0, tiam starigu silentigita al 1, alie starigis silentigita al 0. Tio ŝajnas ia kiel ni estas nur faras kaj malfarante laboro. Sed kio estas la efiko? Ĉiufoje mi batis la spaco trinkejo, kio okazas al mia ŝanĝiĝema nomita silentigita, logike? Ia gets spegulita. Ĝi ŝanĝas de 0 al 1, aŭ 1 al 0. Do ĝi prenis kelkajn blokojn por esprimi ke, sed ĉiuj Mi faras estas Inversigante la stato de tiun variablon al 0 aŭ 1, aŭ 0 aŭ 1 ĉiu tempo mi batis la spaco trinkejo. Nun tie, kio estas tio faras? Forever, se silentigita estas 0, do se silentigita estas falsa. Do se ĝi ne silentigita, estas la semantiko tie, ludi sonon marleono, kaj pensas Hi Hi Hi por du sekundoj, atendi du sekundoj. Do rimarki nun tiuj skriptoj estas efike tuj kuri en paralela por ke oni povas aŭskulti por unu ago, la aliaj fari decidon surbaze de tiu ago. Kaj ĝi povas fari tion ĉiam. [Marleono Barking] [Marleono Barking] Ĝi tuj fari tion por ĉiam kaj [Marleono Barking] kiel mi ĵus faris. Kaj nun ĝi ankoraŭ kurante sed mi havas "silentigita" la ludo. [Marleono Barking] Kaj tio estas ĉiuj ĉi ulo faras nun ankaŭ. Ni malfermu alian ekzemplo tie. Lasu min iri en Eventoj, kaj nun tiu adorable tro. Sed rimarki ke ĝi havas du sprites. Do ne nur du skriptoj kun unu sprite, sed du sprites. Kaj se mi klakas sur la blua ulo kiel mi jam havas, mi vidas, ke li kiel unu programo tie supre ke laŭvorte nur diras tiu, kiam mi ricevas okazaĵo, diri "Polo" por du sekundoj. Do se vi iam ludis en naĝejo, la ludo Marko Polo, se la oranĝo ulo skripto estas ajna indiko, ŝajne ĉiufoje mi trafis la spaco trinkejo, kio estas la oranĝo ulo faros? Li intencis diri "Marko". Kaj tiam ĉi estas nova bloko. Ni ne vidis tiun antaŭe, sed elsendo okazaĵo. Kaj mi povus nomi okazaĵo ion ni volas. Ni revenos al tiu eble post nelonge. Sed dissendi okazaĵo Estas vojo por unu sprite paroli al alia per esence pasante ĝin mesaĝon. Ne mesaĝon vi vidos. Ĝi ne estas io vida. Ĝi estas speco de komputilo mesaĝon ke la alia knabo kiu atendas. Ĉar ja, la blua ulo, revoko Ne havas kiam verda flago clicked. Li anstataŭe havas, kiam mi ricevas okazaĵo. Kiam li iĝas enmanigis tiun noton en klaso, tiel diri, li devus diri "Poluso". Kaj tiel la pura efiko estas ke kiam mi frapi la verdan flagon, nenio okazas. Sed kiam mi batis la spaco trinkejo, li diras "Marko," li respondas kun "Poluso". Sed la sola sprite mi interagante kun estas la oranĝo unu. Do tio estas maniero de ia pasante mesaĝojn inter koboldoj kaj havante ilin komuniki unu kun la alia. Nun ni rigardu unu lasta unu tie nomata Fadenoj. Kaj rimarku tiun ludante ĝin. Tiuj estas du sprites. La birdo estas speco de flugantaj ĉirkaŭe. Li resaltiganta. Mankas "Ouch," sed sama ideo. Sed la kato ŝajnas tre saĝa. Kio estas la kato ŝajne faras? Kaj atendi ĝin. Kio estas la kato ŝajne faras? Ĝi estas ne nur resaltiganta. Li sekvante la birdo. Do ŝajne, ekzistas trairejo kun ĉifro de blokoj here-- kaj ni rigardu la kato reala rapida. Forever, se tuŝinte birdo, tiam ludi la sono Lion 4, kio ajn tio estas. Ni aŭdis ŝin unufoje. Alie, notas al birdo, kaj movi unu paŝo. Nun la fakto ke ĝi estas unu paŝo estas kio donas al la birdo iom de avantaĝo komence, sed se ni anstataŭe klarigu 10, ekzemple, do ke ĉiu ripeto de buklo li estas movanta 10 paŝoj de tempo. Do pli spaco. Ni vidu kio okazas tiam. [Leono krias] Ne ĉiuj ke multe pli bone. Do nun ni provu plibonigi pri tiuj iom ripete, kaj revenos al tiu nocio de funkcio. Kaj ĝuste unu el la fundamentaj takeaways de la klaso dezajno. Ne nur skribi programojn kiuj laboras kaj tio estas korekta, sed estas bone desegnitaj. Kaj dezajno estas multe pli subjektiva, kaj vi ricevos bonan ĉe ĝi super tempo. Sed ni prenu iuj bebo paŝoj al startanta kun programo kiu laboras, absolute, sed ĝi ne estas tre bona. Ĝi ne estas tre bone skribita. Do jen programo kiu faras tion. Tuso, tuso, tuso. Kion la programo aspektas? Aspektas ĝusta al mi. Oni diras kanapo por dua, tiam atendas. Tiam gxi diras ĝin denove, ĉar ĝi atendas. Tiam gxi diras ĝin denove, ĉar ĝi atendas. Kaj poste la programo implicite finiĝas, ĉar ekzistas neniu banto. Sed kial estas tiu malbone skribita programo? Eĉ se vi neniam planita antaŭe? Kiel, kion frotas la malĝustan vojon, eble ĉi tie? Yeah? Spektantaro: [inaudible] DAVID J. Malan: Ĝuste. Vi ripetante mem denove kaj denove. Kaj laŭvorte, mi kopiis kaj almetita du el tiuj blokoj denove kaj denove. Kaj tio estas ĝuste la speco de prudento kontroli, ke vi devus esti faranta. Atendu minuton. Ĉu mi vere faros tion? Do kio estas tio kio estas la evidenta solvo eble? Havas ian buklo. Kaj mi ne tute revokon kion la puzlo peco estas, sed se mi rigardas la venonta ripeto tie, ja, tie ne nur la eterne buklo, ekzistas ripeti iuj plurfoje. Kaj tial mi specifita tri. Kaj nun rimarkas kiom pli streĉe, kiom multe pli konciza ĉi programo estas. Kaj iusence, kiom multe pli mantenible. Se mi volas ŝanĝi la vorton de tuso al io alia, kiel achoo, kiel li terni. Tiam mi ŝanĝos ĝin en unu loko, kaj ne tri. Do tiu jam sentas iomete pli bonan dezajnon. Lasu min anstataŭe malfermita tuso 2, nia tria ekzemplo. Rimarku kiel komputila sciencisto, Mi komenci kalkulon je 0, tipe. Nun tio aspektas iom pli timinda ĉe unua, sed la efiko estas la sama. Tuso, tuso, tuso. Sed kio ŝajnas esti fundamente nova en la supera parto de la programo? Mi jam forigis la vorton. Mi jam forigis la atendo. Kaj kion mi ŝtopita en anstataŭe? Funkcio. Tuso bloko. Mi volas diri, sincere, mi ŝajnas iom de idioto se mi ne ĝuste starti kun la bloko ke estas ŝajne nomita "tuso", se tion mi deziras lin fari. Sed kiu ne ekzistas en Scratch. Prefere mi iris al unu en la paletron nomita Pli Blokoj tie, kaj mi trenus tiun grandan purpuran afero tie kiu lasas min difini funkcion. Ĝi esence permesas min krei mian propran enigmo peco kiu povas nomi ion mi manko, kiu povas fari kion ajn mi volas, sed donas al li nomon. Ĝi donas al mi novan, purpura enigmo peco ke nun faras kion ajn mi diros ĝin fari. Do tiu purpura peco tie respondas al ĉi tie. Kaj kion ĝi faras? Ĝi diras tuso por dua, kaj tiam atendas. Kaj nun mi ia kreitaj mian propran puzlo peco, tiel ke ĝi kondutas ĝuste tiu sama maniero. Do mi povas daŭre fari tion. Kaj efektive, ekzistas tuj estos pli kaj pli ŝancoj por modularization, kaj por layering, komplekseco unu sur alian. Sed tiun bazan ideon, efektive en problemo diris 0. Kio vi tuj esti defiita fari estas elŝuti Scratch, aŭ nur uzi ĝin en la reto, kaj simple amuzi kun ĝi. Ni donos al vi aron de postuloj, havanta sonon, kaj iuj nombro de puzlo pecoj. Sed vi tion faros ĝuste tion. Kaj vi konscias ke vi tuj volas preni iun bebo paŝoj komence, ĝis via programo ricevas pli kaj pli kompleksa. Sed konsiderante estas tiu la bona vojo mi povus fari tion? Ĉu mi povas eviti ĉi instinkto eble, kopii kaj almeti? Sed antaŭ Problemo Ara 0, kaj antaŭ ni adjourn, pensis ke ni levu unu pli volontulo se ni povus, por fina programo jen eble la plej adaptado entute, donita hodiaŭa ejo. Venu malsupren. Yeah. Jes. Kio estas via nomo? Uh-oh. Tio estas bone. Ambaŭ malsupreniris. Kaj mi havas traktos ĉi iel ene ke venontaj dek sekundoj. Do venu malsupren. Venu malsupren. Lasu min trafos tien. Venu. Bone. Vidu ĉi tie. Do rimarki reala rapida tie, se vi ŝatus veni supren. Ni faros du ĉirkaŭvojoj de tiu. Kaj kio estas via nomo? Sabrina: Sabrina. DAVID J. Malan: Sabrina kaj? YING GEE: Ying Gee. DAVID J. Malan: Ying Gee. Agrable renkonti vin ambaŭ. Davido. Do nia fina ekzemplo tie estas nomita Ivy La Hardest Game. Kaj kial ni ne havas vi faras Nivelo 1, kaj vi faros Nivelo 2. Kaj ni vidos, kiom pretere ke ni efektive iri. Skribita de studento pasintjare, remiksita de mi tiel ke tiu irus super puto en New Haven. Kaj Mi donos al vi ludo kiu tuj impliki movanta la sagoj supren kaj malsupren, kaj ekhavi Yale al la cellinio. Ĉi tie ni iras. [VIDEO reprodukto] [MUZIKO - NFL sur Fox temkanto] [MUZIKO - MC Hammer, "Aŭ Hundo't Touch  ĈI "] -U Povas ne tuŝi ĉi. Aŭ Hundo't Touch This. Ne tuŝu tion. Mia, mia, mia, mia muziko trafas min tiel malmola, igas min diri, ho, mia sinjoro. Dankon por beni min per atentas rimar kaj du tamburego piedoj. Tio estas bona kiam vi scias ke vi malsupren. Súper dope homeboy el Oaktown. Kaj mi scias kiel tia kaj ĉi takton uh, vi ne povas tusxi. Mi diris al vi homeboy Aŭ Hundo't Touch This. Jes, tiel estas kiel ni vivas kaj vi scias Aŭ Hundo't Touch This. Rigardu en miajn okulojn, viro. Aŭ Hundo't Touch This. Yo, Lasi min busto la funky kantoteksto. Aŭ Hundo't Touch This. Freŝa nova piedbatoj kaj pantalono. Vi akiris ĝin kiel tio kaj vi scias ke vi wanna danco. Do movi ekstere de via sidloko kaj akiri muŝo knabino kaj kapti tiun takton. Dum ĝi ruliĝis tenas pumpi iom brido kaj sciigu, kio okazas. Kiel tio. Kiel tio. Malvarma en misio por tiri sur dorso. Sciigu, ke vi estas tro multe kaj tiu estas movado uh vi ne povas tusxi. Yo, mi diris al vi Aŭ Hundo't Touch This. Kial vi staras tie viro? Aŭ Hundo't Touch This. Yo, sonigu la sonorilon lernejo en, naivulo. Aŭ Hundo't Touch This. Donu al mi kanto, ritmo igante ilin ŝviti tion mi donas ilin nun. Ili scias kiam vi parolas pri la Martelo vi parolas pri spektaklo kiu estas ekzaltita. Kaj streĉa kantistoj ŝvitante tiom pasi ilin mic. Aŭ bendo lerni kion ĝi tuj preni kaj nun li tuj bruligos la furorlisto. Legit ĉu laboro malmoligu vi eble tiel quit. Ĉar vi scias Aŭ Hundo't Touch This. Aŭ Hundo't Touch This. Rompi ĝin malsupren. Ĉesu. Martelo tempo. Iru kun la fluo en spino se vi ne povas movi al tiu tiam vi verŝajne estas mortaj. Do skuos viajn manojn en la aero [inaudible] Jen ĝi por gajninto dancon al ĉi kaj vi tuj akiri pli maldika. Movu gliti vian pugon nur por minuto ni ĉiuj faras la tuberon. Yeah. Aŭ Hundo't Touch This. Aŭ Hundo't Touch This. Vi pli bone akiri ekzaltita knabo Aŭ Hundo't Touch This. Sonoru lernejo reen en. Rompi ĝin malsupren. Ĉesu. Martelo tempo DAVID J. Malan: Estas tio por CS50! Dankonas tiel por aliĝanta nin! Vidu vin ekstere. [FINO reprodukto] [VIDEO reprodukto] [MUZIKO - "Seinfeld" TEMO SONG] -Hey Davido. -Hey, Davido. Kiel vi fartas? -Good Laboron, hodiaŭ. -Do Vi pensis pri kio vi tuj faros por la el ŝercoj? -No, Mi ricevis nenion. -Kio If-- kion se ĉi tiu estas la ekstere ŝerco? Komenius, unpacking ĉaroj? -Uh-Huh. Vi scias, temas pri nenio. -Do Ŝatas, neniu rakonto, neniu konflikto, neniu rezolucio. Mi ne komprenas. Kio estas ĝi pri tiam? -Nothing. -Do Ni havas eksteren ŝerco estas pri nenio, kaj ni ne havas aktorojn. Kiu tuj estos en tio? -No, Ne, ne. Mi volas diri, ke mi estos en ĝi. -You'll Estos en ĝi? -Yeah! Homoj ĉiam rakontis Min mi estas karaktero. -Well, Mi volas diri, estas vera. Sed kiu alia tuj estos en ĝi? Ĝi ne povas simple esti vi. -Vi Estos en ĝi, Gavin, Dan Dan, Colton, Z'Myla, Alysse, Doug, David, ĉiuj. -Do Temas pri nenio, kaj ĉies en ĝi? -Absolutely Nenion. -Ĉi Estas ridinda.