[Powered by Google Translate] [ROKO MUZIKO] [MUZIKO - "HAPPY KUNE" La testudoj] DAVID Malan: Hodiaŭ, ni komencos nian tuŝo de la fundamentojn de komputiko kaj nia enkonduko, nun, al la arto de programado, de kiuj tio estas nur unu ekzemplo. Sed en la sama stilo de problemo solvi, scias, ke CS50 la tradicia Puzlo Tago estos morgaŭ. Se vi ankoraŭ ne RSVPed por tiu evento, vi povas iri al cs50.net/rsvp. Vi povas alporti teamoj de du aŭ tri aŭ kvar. Vi estos defiis kun problemoj kiel tiu, kiun vi vidis tie supre en la komenco. Ĉiuj novaj problemoj de ĉi tiu jaro, se vi partoprenis pasintjare, kaj vi havos ŝancon tiam gajni iuj fabelaj premioj. Inter ili, oni Wii kaj iuj donaco registritaj kaj kiel, ĉiuj dum eliri kun CS50 studentoj kaj samklasanoj kaj picon kaj Facebook. Do pli en tiu morgaŭ se vi ŝatus. Ĉi tiam estas CS50, por tiuj el vi kunigi nin por la unua fojo. Kaj scias, ke ĉi tiu kurso estas aparte difinita por atingi vi per ĉi tiu kurso al lia fina celo, je kiu punkto vi havos ne nur kompreno de tiuj fundamentojn de komputiko, sed vi devos tion tre praktika kapablojn kiujn vi povas tiam prenu reen al via propra fako, ĉu ĝi estas inĝenierio sciencoj, aplika matematiko, la fizikaj sciencoj, naturaj scienco, aŭ similaj. Ja, kio estas tiom ekscita pri komputiko tiuj tagoj estas ke ĝi estas ĝuste tiel aplikebla al ĉiaj kampoj. Kaj kvankam hodiaŭ, ni nur skrapi la surfaco de tre tradicia programlingvo konata kiel C, ni instruos vin anstataŭ rigardi iun nomita Scratch, iu kun kiu tiu kuketo amo estis realigita per unu el viaj antaŭuloj en jaroj pasintaj, por diri rakontojn, krei ludoj, krei interagajn arto, kaj fakte komenci por kovri niajn mensoj ĉirkaŭ kelkaj el la fundamentaj konstruoj kiuj subyacen programado sed en kunteksto, kiel vi vidos, ke estas multe malpli terura, ke estas multe malpli arcano, ol vi vidos antaux longe. Kaj realigi, ankaŭ, por tiuj el vi nur aliĝi al ni semestro, la frazoj, en kiu ni finis la merkreda konferenco, ne estas tiel grava, kie vi finos relativa al via kompanoj en ĉi klaso, sed kie vi per semestro la fino en semajno 11, fini relativa al vi mem rajtas nuna tago. Do sen pli enkonduko, tiu estas ankaŭ notinde, ke tiuj malpli komforta, tiuj ie inter, estas ankaŭ, por dezajno de ĉi tiu kurso, ne en ajna malavantaĝo vis-a-vis tiuj pli komforta venanta en ĉi tiu klaso. Kiel vi vidos sur la semajnoj veni, ni havas malsamajn temoj por pafas reen fono, sekcioj por tiuj malpli komfortaj, pli komforta, tiuj ie inter ili. Kiel vi vidos ĉi semajnfino kaj proksima semajno, du versioj de plej problemo aroj en ambaŭ normo kaj hacker eldono tiel ke vi ĉiuj povas mem-elekti laŭ la pado kun kiu vi estas plej komforta. Do hodiaŭ, ni plonĝi en tiun programadon lingvo nomita Scratch. Estas grafikaj programado lingvo, kaj tamen ĝi havas la samaj karakterizaĵoj de iu de la pli alta nivelo lingvoj ni instruos vin esplori poste en la semestro, inter ili C kaj JavaScript kaj PHP. Sed tuj ni permesas eviti iujn de la distroj frue de sintakso, aĵoj kiel punktokomojn, krampoj, kaj aliaj arcano detaloj kiuj, unuavide, estas nur ne tute intelekte interesa kaj emas eniri la vojo de iu fundamenta kompreno. En terminoj de nun la apogo strukturo antaŭen, realigita ĉi ilo, CS50 diskuti, kiu estos kunligitaj en la kurso de retejo poste hodiaŭ, estas la linio diskuto forumo en kiu vi povos demandi de si kaj bastonon, kaj estas ankaŭ ilo, kiel ni vidos proksima semajno, ke ni uzos sufiĉe integratedly en oficejo horoj tiel. Ja, oficejo horoj komenciĝas je lundo, kaj sincere, la unua semajno de oficejo horoj estas sufiĉe malalta klavo. Mi ne kredas vi trovos Scratch cxiuj nealirebla. Estas iom mem-klarigan, kiel ni vidos, kaj tiel kion ni uzos ĝin por hodiaŭ estas ĉerpi kelkaj el la fundamentaj ideoj kiuj estos, do, persisti en la tuta resto de la semestro. Sed ekde lundo, je 8:00 am tra 11:00 am estos oficejo horoj en Annenberg super cerbo ripozon. Sekciigo du komencos tiun vesperon, do iam ĉi semajnfino, iru al cs50.net/section, kaj vi instruos vin esti demandis kelkajn demandojn. Inter ili, kiel vi priskribus vian komforto nivelo ekde hodiaŭ? Ne malmola, rapida regulo pri kiu estas en kiuj balde. Estas nur la speco de afero, kiun vi probable scias se vi estas inter tiuj la malpli komfortaj aŭ alie. Kaj nun, walkthroughs. La problemo aro specifo por ĉi tiu semajno, ambaŭ normo kaj hacker eldono egale, estas rete ĉe cs50.net ekde nun. Kaj vi vidos, ke la unua el tiuj eldonoj, la normo eldono ĉiu semajno, estas akompanita de io nomas kodo walkthrough, kunsido gvidata de unu el la Kompreneble la instruado uloj gvidi vin tra, havigi konsilojn, kaj instigi vin apartan vojon kiam temas al startanta tiuj problemo aroj. Do kun ĉiu el tiuj problemo aroj, se vi iam voli mem kie mi komencos, vi komencos kun tiuj walkthroughs. Kaj fakte, permesu al mi prezenti Zamyla Chan, ĉi jara instruado ulo kiu estos kondukante ĉiuj kaj ĉiu unu el tiuj walkthroughs. Zamyla? [Aplaŭdo] ZAMYLA Chan: Ho, saluton, ĉiuj. Mia nomo estas Zamyla. Mi estas juna studi inĝenierion en Winthrop Domo. Sed mi provos kaj havi en tiom da komputiko kursoj kiel mi povas, tial mi vere ekscitita esti kondukante ĉi jaro walkthroughs. Walkthroughs, por mi, estis esenca parto de mia CS50 sperto. Dum la walkthrough, por ĉiu p-aro, ni iros tra la problemo starigis kune, rigardu super la problemoj, ia dividi ilin en regebla mordas. Mi donos al vi konsiloj, teknikoj, por atingi tra kaj getting komencis. Mi esperas vidi vin cxiujn en la walkthroughs. Se vi ne povas fari ĝin en persono, tiam bonvolu fari agorditaj en linio. DAVID Malan: Bonega. Dankon, Zamyla. Do rimarkas ke walkthroughs estas ja sur vendredo posttagmeze, sed tio estas intence por dezajno por ke eĉ se vi preferas ne ĉeesti klaso sur vendredo Posttagmeze, la videoj estos ĉe ĉiuj pli rapide ol la semajnfino. Do rimarkas ke cs50.net estos ĉiuj Zamyla la walkthroughs. Kaj tio estas la hodiaŭa dato kaj tempo, 3:00 am, Harberd Hall, 104. Kaj iuj el la instruado uloj ankaŭ preparis iuj rimarkoj por vi en absentia doni al vi iom de perspektivon pri kion lian sperton venanta en kaj irante el CS50 estis kiel. Do, se ni povus krepuska la lumojn por momento, mi donos al vi iuj de CS50 bastono. Jackson STEINKAMP: Mi prenis CS50 pasintjare kiel freshman en la fali, kaj absolute blovis mian menson. Mi neniam estis prenita ajna programado klasoj antaŭe, kaj neniam envenis kun ajna komputiko sperti ajn. Kaj ĝuste, mi auxdis la zumado pri la klaso kaj decidis preni ĝin. JULIA MITELMAN: Estis vere amuza, vere engaĝi. Mi ankoraŭ, ĝis la nuna tago - Mi nur ĵus vidis mi havas la disketo, kiun David donis al ni sur nia unua tago de prelego. Mi pendigis ĝin sur mia muro. Tio estas verŝajne iom nerd, sed mi pendis en sur mia muro dum la klaso kiel memorigilo pri kiel cool estis. Travis Downs: Estas tiel hontinda. Jackson STEINKAMP: Komputika estas io, kion vi devus provi eĉ se vi ne estas unu por la tradiciaj sciencoj. Estas lia propra sperto, kaj CS50 estos certigi ke vi apogis bone tra ĝi kun lia vera armeo de TFs. ALI NAHM: Mi prenis ĝin kiel freshman, kaj tiel mi faris multon de novaj amikoj. Mi ankaŭ got enkondukis al ĉi tiu tuta koncentriĝo kaj tuta lernejo de inĝenierio, do mi ege rekomendas ĝin kaj bonvenigas vin al nia CS50 familio. YANIV YACOBY: CS50 nur instruas vin kiel uzi iloj kiuj estas vaste atingebla. Vi nur bezonas portebla, vi bezonas retumilo, kaj vi bezonas lerni skribi iom da kodo, kaj vi povas vere konstrui neta aĵoj. Karen Xiao: Estas nur tiel malvarmeta por povi fari ion kaj ke homoj uzas ĝin kaj havi homojn vidi ĝin, kaj tio estas kion mi vere amas pri ĝi. TIM McLaughlin: - senton de komunumo, mi kredas, en ĉi tiu Kompreneble pli ol iu ajn alia kurso Mi glutis ĝis nun. Vi ne nur preni alian - vi ne plenigante alian kondiĉon. Vi ne nur tuj prelegoj kaj tuj sekcio. Sed vi faras tunoj de aĵoj kiuj estas ĉiuj pri programado kaj ĉio pri la teknologio, sed ne vere sentas kiel klaso plejparto de la tempo. Travis Downs: Kaj en la unua tago, ili disdonis kukon kaj Mi tuj venditaj. Jacob PRITT: Libera dolĉa kaj pico. ZAMYLA Chan: - sendepende de via intereso nivelo, mi pensas ke CS50, vi havos amuzan, kaj vi estos intelekte stimulita. MARK GROZEN-SMITH: Estas ĉiam partio en klaso, kaj ĝi estas partio ĉiunokte laboras en via p-aro. Jackson STEINKAMP: Ĉiufoje kiam vi finos problemo aro, vi sentos kiel vi finis projekton. Melissa Niu: Estis freshman jaro, kaj mi faris aĉetoj. Mi havis mian kvar klasoj pretaj, kaj mi estis en Annenberg. Kaj mi pusxigxas al amiko, kaj li diras, hey, mi aĉeti ĉi tiu klaso nomis CS50, kaj vi venu kun mi. Finis portante ĝin tiu aŭtuno, kaj post tiu klaso, mi pensis eble mi tuj plej malgranda en CS. Sed tie mi estas, tri jarojn poste, ankoraŭ studanta komputilo scienco kaj vere fari ĝin kiel grava, kaj mi amis ĉiun momento de ĝi. ROB Bowden: mi ne havas ideon. ALI NAHM: Ni vidos. Melissa Niu: frenezo. Parolanto 1: Mi sentas kiel mi estus tre kliŝo. Mi nur diras, kiel, awesome. YANIV YACOBY: Alireblo. Jacob PRITT: Libera dolĉa kaj pico. Travis Downs: Cannot turni suben klaso kiu manoj el kuko. TIM McLaughlin: Energia. VIPUL Shekhawat: Esencaj. ROB Bowden: Lasu min pensi pri respondo. Mi kredas ke mi ricevis ion. Ho, dio. Yeah, mia nomo Rob Bowden, kaj ĉi tiu estas CS50. [Aplaŭdo] DAVID Malan: Bone, do ni komencas pentri bildon de la direkto en kiu povas iri, kaj ni enkonduki tiu koncepto tie konata kiel _pseudocode_. Do _pseudocode_ ne estas programado lingvo al si mem. Estas nenio teknika per, sed estas nur speco de ĝenerala maniero de esprimi vin sufiĉe detale, sufiĉe Algoritma, sufiĉe procedurally, sed sen devi zorgi pri kio lingvo vi esprimanta mem in Estas iu modelo de la angla kaj programlingvoj kun kion vi hazarde estos konataj, do ni povas komenci skribi ĉi tiajn aferojn kiel ni iru. Kaj fakte, Jozef, mi povus prunti vin sur la scenejo esti skribisto tie? Mi antaŭenirinta tie anticipe kaj forgesita por meti sur iu ŝtrumpetojn hodiaŭ, kaj ĉi estos inter niaj pli ridindaj ekzemploj. Nun, mi bezonas vin tie. Mi faros la ŝtrumpetoj parto. Do jen ni havas iom nulo pad. Ĉi tiu estas laŭvorte nur TextEdit en Mac. Ni fakte ne tuj skribos runnable programo, sed ni ĵus tuj komencos desegnante el _pseudocode_ bazita sur iu el la konsilon vi donas al mi cxi tie. Do jen mia amaso de ŝtrumpetoj hejme. Mi havas neniun ŝtrumpetojn sur kiam mi veki en la mateno, kaj ni nun bezonas skribi programon, algoritmo de varoj, kun kiu akiri tiujn ŝtrumpetojn sur miaj piedoj. Kaj laŭ la vojo, vidu se ni vojaĝo finiĝis, aŭ renkontas, kelkaj el la ideoj kiujn vi tuj devas starti pensante pri multe pli serioze kiam programado ke viaj programoj ne kondutu tiel same intencis. Do mi sidiĝi tie. Mi havas mian amason da ŝtrumpetoj. Kio estas la unua aĵo racian homo estus do kiam la celo estas meti sur paro de ŝtrumpetoj? Iu donu al mi unu paŝo, kaj nur unu paŝo. Yeah? Spektantaro: Klinu sube. DAVID Malan: Klinu sube, Okay. Paŝo du. Paŝo du. Spektantaro: Prenu vian ŝtrumpeto. DAVID Malan: Prenu vian ŝtrumpeto. Konsentite, tiel malpeza ambigueco tie, kaj ĉi tiu estas unu el la unuaj stumblante blokoj ke ni devus intence renkonti tie. Ĝi estas iom ambigua, do prenu vian ŝtrumpeto. Bone, mi prenos ĉi tiu, sed komputilo, realigi en nur bito, ne tuj havas tian homan instinkton nur repreni la plej proksima unu. Ni tuj devos komenci, antaŭ longa, esprimante mem pli precize. Bone, do paŝo du estas repreni vian ŝtrumpeto. Ni prenos ĝin. Paŝo tri. En la dorso. Spektantaro: Trovi trafa paron. DAVID Malan: Trovi kongruanta paron. Okay, do ĉi tiu estas bona. Mi devis elekti tiun ŝtrumpeto. Do la celo estas trovi kongruanta ŝtrumpeto, nun, sed kion tio signifas? Al racia homo, multe kiel en merkredo, kiam mi ĵus sciis kiel trovi Mike Smith en telefono libro, nur ia iris kun siaj instinkto. Sed ĉi tie, estas evidente ĉi ŝtrumpeto tie, sed komputilo ne tuj estos tiom instinkta. Komputilo tuj havi kolekton de bitoj, kiel ni diskutis merkredon, kaj tiuj estas organizita iel en memoro. Sed la punkto estas ke komputilo havas nur la kapablo rigardi tion unuope, kaj fakte, ecx ni homoj - eĉ se li sentas kiel mi rigardis malsupren kaj fendi dua poste mi scias kie la ŝtrumpeto estas, mia cerbo kaj miaj okuloj supozeble ne rapidan skim de tiuj ŝtrumpetoj, kaj tiam alkroĉis sur la unu en demando. Do se ni estos des pli intenca nun kiel komputilo, kiom mi trovas tiun kongruanta paro? Nu, ni devas persisti. Ni devas eble buklo sur ĉi tiu salato de ŝtrumpetoj en la plankon per mi diras ion kiel POR ĈIU ŝtrumpeto, elektu ĝin supren, KAJ SE la sama formo kaj grandeco kiel la alia, DO dot, punkto, ĝi pentras, ni daŭrigos la rakonton. Do por ĉiu ŝtrumpeto, do mi reprenos ĉi tiu. Mi kontrolu estas ĉi egala al tiu ĉi. Ne estas, do mi metis flanken flanko. Tiam mi persisti denove. Estu ĉi tiu egala? Ne, ĝi ne estas, do mi metis ĝin flanken. Ĉu ĉi tiu? Ne Ĉi tiu? Ne, kaj tiel plu. Kaj poste fine, mi esperas, mi renkontas tiun ŝtrumpeto tie. Do, se ĝi estas la sama formo, grandeco, prenu ĝin. Kaj nun, kio estus nia sekva paŝo tie? Yeah? Spektantaro: Identigu dekstra de maldekstre. DAVID Malan: Konsentite, identigi dekstren kaj maldekstren, tiel feliĉe, tiu speco de verkoj. Iom simetria, aux mi ĵus eluzita ilin tiamaniere. Bone, do mi identigis la dekstra. Kaj nun, antaŭ ol ni procedi, lasu min montri kion Jozef estis farante tie kiel speco de sperta programisto. Do denove, ne estas unu maniero fari tion, sed tie nur numeri la linioj, Jozef jam komencis fari tion ia deŝovon. Ja, tio estas tre komuna konvencio en programado, per kiam vi ion ripeta, looping stilo, kiel ni implicante kun la angla frazo "POR ĈIU ŝtrumpeto, "la konvencio en _pseudocode_ kaj, kiel ni vidos, normala programlingvoj, estas nur indent. Batis la spaco trinkejo kelkajn fojojn, batis la Tab aŭ similaj, por ke anidadas sub "POR ĈIU ŝtrumpeto" estas la eron de plenigos ke vi bezonas fari kiel rezulto de tiu ciklo. Do jen ĉio ke tio transportante semantike. Nun dume, la "Se ĝi estas la sama formo kaj grandeco," la Fakte tiu "Prenu" estas dentado pli simple signifas tio estas la sola afero vi faru se tiu kondiĉo, se tiu branĉo, kiu forko en la vojo, estas fakte vera. Do nun cxi tie, ni estas en paŝo kvar, identigi dekstre kaj maldekstre. Mi identigas pravas. Doni al mi treti kvin. Kaj teknike, ni povus vere nomas la POR ĈIU afero - vi devus probable prikalkulu ĉiujn liniojn se ni tuj faros tion. Joseph: [inaudible] DAVID Malan: [inaudible]? Konsentite, fajna, bone, ni tion faros vian vojon. Bone, do paŝo kvin, kiel ni faras la dekstra ŝtrumpeto? Kiel ni procedi proksima, tie? Jes? Spektantaro: Levu dekstra kruro. DAVID Malan: Levu dekstra kruro, Okay. Paŝo ses? Rapide. Yeah. Spektantaro: Trovi malfermita fino de la ŝtrumpeto. DAVID Malan: Konsentite, trovi la malfermita fino de la ŝtrumpeto. Tiel bona. Do jen, honeste, tre komuna instinkto estus nur esti surmetis dekstra ŝtrumpeto, sed ankaŭ tio sufiĉe ambigua. Krom se la komputilo aŭ homa scias precize kion tio signifas, ĝi ne tuj estos por ekzekuti ke, tial ĉi tie, mi havas trovis la malfermo de la stoko. Paŝo sep? Spektantaro: Tuŝu viaj piedoj. DAVID Malan: Touch piedfingroj. Okay, do nun ni iru - Bone, mi iros por preni iujn liberecoj tie. Dankon. Paŝo ok? Surmetu ŝtrumpeto. Konsentite, tiel nun mi, pensas ni estas fermi sufiĉa al varo de preni ĉi tiu estas hejme. Bone, do ĉi iras supren. Mi prenos iom liberecoj kun kio signifas, fakte. Metu la ŝtrumpeto plu. Bone, nun tretas naŭ? Spektantaro: Metu piedon malsupren. DAVID Malan: Dankon. Paŝo naŭ, metis piedon malsupren, kaj nun, ni povas ripeti. Do supozeble, ni povas nun iri en paŝo 10 kaj diru identigi forlasis ŝtrumpeto, sed tio supozeble jam faris. Kaj tiel do, mi povas ordigi de ripeti tiujn paŝojn. Sed ĉi speco de petegas la demando. Antaŭe, la lastan fojon ni volis ripeti ion, ni faris ripete, denove kaj denove, POR ĈIU buklo tiel diri. Ĉu havas sencon uzi buklo por manipuli ambaŭ la maldekstra kaj la dekstra ŝtrumpeto? Ĉar li sentas kiel tiuj operacioj estas preskaux identa krom la fakto ke unu startas tie kaj unu komenciĝas ĉi tie? Ĉu ni buklo, aŭ ĉu ni simple subtenas skribi paŝoj 10 kaj 11 kaj 12? Spektantaro: Cirkla. DAVID Malan: Konsentite, tiel ciklo. Mi vere povus diri simple observu tuj. Do kial estas tiu la kazo? Nu, ĉi tiu estas vere la unua de nia ne-evidenta dezajno decidojn, kaj fakte, unu el la metrikoj, per kiu ni komencas taksi, ĉar ni mem kaj por vi, la kvalito de programo estas nur kiel bone desegnita estas. Vi faris la minimuma kvanto de laboro necesa por get the job plenumis plej rapide, ĉu en terminoj de via tempo aŭ en terminoj de la komputilo rula tempo? Kiom da operacioj faras prenas por ekzekuti? Do eble, tiu estas ŝanco por buklo ĉar tuj kiam mi komencas kopii kaj bati, kiel Jozef efektive would komenci fari en momento, vi estas speco de malŝparas vian tempo, kaj vi estante duoble esprima. Sed samtempe, ĉi tiuj estas vere nur du specialajn kazoj, maldekstra kaj dekstra. Kaj dum antaŭe, mi havas 10 aŭ 20 aŭ pli ŝtrumpetojn en amaso, ĝin definitive havas sencon ne havas 50 liniojn de kodo dirante kontrolu ĉi ŝtrumpeto, tiam la sekva, tiam la sekva. Ĉi tie, estas iom malpli evidenta, kaj mi estus proponinta ke ni povus iri ajna maniero. Ni povis ĉu havi tiun banton, kvankam ĝi nur cikloj dufoje, aŭ ni povus simple kopii kaj almeti malmulta tie por akiri la laboron farita. Sed tiu programo estas kalesxo, por tiel diri. Eble ili havas iujn erarojn, erarojn, aŭ angulo kazoj, por tiel paroli, ke ni ne vere anticipi. Nenio misokazis ĉi tiu tempo, sed kio povus esti irinta malĝusta dum ekzekuti tiu programo? Spektantaro: Vi ne havas ajnan ŝtrumpetoj. DAVID Malan: Do ne povas ekzisti ŝtrumpetojn tie iu. Do ni opinias, ke angulo kazo. Do, se ni povus rulumu reen ĝis paŝo unu, do tretas unu estis fleksi malsupren, tiel ke kontrolas eksteren. Paŝo du, repreni vian ŝtrumpeton, sed tiam trovi matching ŝtrumpeto, identigi pravas. Ni ia faris tuta amaso de supozoj, kaj ĉi tio estas, sincere, kial programo kelkfoje frakasi. Se vi, la programisto, faris certa supozoj, kiel certe ekzistas Iĝos ŝtrumpetojn aŭ verŝajne okazas esti memoro restis en la komputilo, certe ekzistas okazas esti durdisko lasis sur la malmola disko - Nu, se vi faras ĉi tiuj supozoj, kaj tio estas ne, fakte, realaĵo, kiu scias kelkfoje kion la komputilo faros? Kaj kelkfoje, kiam vi ricevas la ŝpinita strando pilkon aŭ la frostigitaj Vindozo aŭ similaj, jen ĝuste ĉar iuj programisto ne anticipis tiujn tn angulo kazoj. Kion alian povis esti irinta erara en ĉi tiu programo? Yeah? Spektantaro: Vi ne havas rajton kruro kaj maldekstra kruro. DAVID Malan: Konsentite, eble ne havas kaj dekstra kruro kaj maldekstra kruro, kaj tiel ĉi tiu programo povus ne esti universale aplikebla. Aliaj? Spektantaro: Vi eble reprenita orfo ŝtrumpeto. DAVID Malan: mi eble reprenis orfo ŝtrumpeto, tial ne-kongruanta ŝtrumpeto kiu ĝuste havas nenian gefratoj ĉar mi havas perdis ĝin, ĝi estos disŝirita, estas en la lavita ankoraŭ, aŭ similaj. Tiel ke, tro, ĝi ne vere estis manipulitaj. Yeah? Spektantaro: Vi povus jam havas ŝtrumpetojn plu. DAVID Malan: Mi ne jam havas ŝtrumpetojn plu. Mi ne reale kontroli. SE vi ne havas ŝtrumpetojn sur, DO procedi fari linio unu kaj du. Kaj tio povus okazi. Vi dormas kun via ŝtrumpetojn sur kaj similaj, tiel tion, tre racia angulo kazo. Kaj eble unu la alian? Aŭdienco: La ŝtrumpeto estas ene el. DAVID Malan: Do la ŝtrumpeto estas ene, do ni faris neniun eraron kontrolanta, en mallonga. Ni ne kontrolu se la stato de la mondo estas kiel ni atendis. Ni ne kontrolu se ni efektive trovis kion ni serĉas. Kaj eĉ se ĉi tiu estas speco de ridinda ekzemplo engaĝante ŝtrumpetojn, fine de la tago, jen ĝuste la ia pensmanieron vi bezonas havi dum skribado programoj, eĉ en Scratch tiel kiel en C, en JavaScript, en PHP, ĉar alie, viaj programoj havos elmeti la ekvivalento de tiu spinning strando pilko aŭ simple cedi malpreciza rezultojn. Tiom da danke tie por niaj skribisto Jozef. [Aplaŭdo] DAVID Malan: Bone, do kion estas, Fakte, komputila programo? Nu, ni prenu rapidan rigardon en reprezenta tie. Do tiu estas programo skribita en lingvo nomas C. C estas sufiĉe malnova tiuj tagoj, sed multaj novaj lingvoj estas konstruitaj sur supro de ĝi. Ja, PHP, unu el la retejo centrita lingvoj ni instruos vin uzi cele termino fino, mem kio nomiĝas interpretisto, programo kiu estis skribita en C, sed pli sur tiu en multaj semajnoj de nun. Sed tiu programo, kaj ĉi tiu estas kion signifas skribi programo, kvankam tre simpla. Ni havas kelkajn sufiĉe kamufla sintakso tie, sed vi povas probable diveni, eĉ se vi neniam planita antaŭe, kion tiu programo faras. Fakte, mi ne scias kion printf estas, sed presi certe conjures ĝis la ideo de presi ion. Kaj tiel jes, tiu programo estas finfine tuj presi la vortojn "Saluton, Mondo". Nun, ĉu vi havas Mac aŭ PC aŭ Linukso komputilo, malakordo estas, almenaŭ se vi elŝutis iom libere disponebla programaro, vi povus esti skribe programoj via propra komputilo por sufiĉe tempo nun. En Mac OS, ekzemple, estas tiu programo nomata Fina stacio kiu venas kun Mac, jen kutime en via Utilecoj dosierujo, kaj ĝi ĝenerale malfermiĝas nigran kaj blanka aŭ blanka kaj nigra fenestro en kiu vi havas instigas je kiu vi povas tajpi komandojn. Do ĉi tiu estas efektive memoras kio komputiloj kutimis esti antaux grafikaj uzanto interfacoj, GUI-oj, venis kune. Nun, en Vindozo, vi havas similan mekanismo en formo de la komando prompto. Sed kion mi tuj faros ĉi tie estas malfermi, diru, TextEdit denove, tial la sama programo kiun ni uzis por _pseudocode_ antaŭ momento, kaj mi tuj iros antaŭen kaj skribi mian unuan programon. Inkluzivi stdio.h, kion ajn tio signifas, int ĉefa void, kion ajn tio signifas, kaj poste en la mezo tie, printf ("Saluton, mondo."). Kaj poste fermi citaĵo, fermi paren, punktokomo. Nun mi tuj iros antaŭen kaj nur batis Komando-S. Mi tuj iri antaŭen kaj savi tion kiel hello.c, do la kongreso en la mondo de C programado estas nomo de la dosiero dot c. Mi tuj ĝuste meti en John Harvard Ĉefpaĝo dosierujo, ĉi tie, klaku Save, kaj nun mi iros, por transiri al ĉi fina fenestro, kiu denove estas tiu nigra-blanka prompto kie mi povas ekzekuti ordonojn. Mi povas kuri programoj tajpante lia nomo, ne per duobla klako ikonoj en la kutima senco. Sed la afero estas pri C estas ke lingvo kiel C unue venas en ĉi tiu formo, iu vokis fontkodo. Iu kiu aspektas iom kiel la angla sed estas certe malpli kiel la angla ol Jozef _pseudocode_ a antaŭ momento. Ĝi estas iom pli arcano. Ĝi ŝajnas sekvi iujn ŝablonoj aŭ reguloj. La fakto, ke mi havas frizita krampoj, punktokomojn, citaĵoj, angulo krampoj, sentu kiel komputilo suprenvenis kun ĉi speco de lingvo. Sed se mi foriras nun, al tiu fina fenestro, mi povas kuri komando kiu tuj konverti ke fontkodo estas iu nomita celkodo. Tio tuj konverti angla-kiel sintakson por nuloj kaj, la sama specoj de nuloj kaj ni parolis merkredo. Nun, mi tuj kuri komando nomis Clang. Pli sur ĉi tio en la semajnoj por veni, sed ĝi estas programo kun kion mi povas konverti hello.c en tuta amaso de nuloj kaj aĵoj. Nun, mi kuros ĉi komando. Mi kuras Clang, kaj tiam mi diris kuri vin en ĉi tiun dosieron vokis hello.c, kiun mi kreis antaŭ momento, kaj nenio ŝajnas okazi. Sed ja, se mi poked ĉirkaŭ mia hejma dosierujo, mi vidus ke tio stulte nomata programo a.out nun ekzistas. Tiu estas ĝuste la defaŭlta nomo por programo kiam skribas en C. Ni povas nuligi ĉi eventuale, sed a.out estas la nomo de la programo mi nur igis nuloj kaj aĵoj. Kaj nun, ke tio estas nuloj kaj, mia Mac, en ĉi tiu kazo, aŭ via Windows PC, povas kompreni tiujn bitoj, tiuj nuloj kaj aĵoj. Kaj tiel, kiam mi batis Enter, mi vidas "saluton, mondo!" Sed estas iom kalesxo. Mi ne sufiĉe diri "saluton, mondo!: Aero: - jharvard." Aero estas la nomo de mia komputilo. Jharvard estas la nomo de la konto, do kion mi klare preterlasi de la programo? Ia linisalto. Mi ne batis la ekvivalento de Enter aŭ la tirilo, kaj ĉi tio estas, denove, testamento al la fakto ke la komputiloj povas nur faras kion vi diros al ili. Kaj la fakto, ke mi ne diru al la komputilo movi la kursoron al la sekvanta linio - bone, ĝi estas certe ne tuj ĝuste faru ĝin malhumila por mi. Do se mi reiros al mia programo, kaj mi diras \ n - Do \ n, kiel ni baldaux vidos, estas la vojo de reprezenti bizara aĵoj kiel nova linio karakteroj, aĵoj ke devus alie esti la rezulto de bati la Eniga klavo. Sed nuntempe, nur scias, ke bati la Eniga klavo estus nur fari nian kodo aspektas nepara, do la mondo decidis, vi scias kio, por subteni la aĵojn pli belaj, por gardi gxin sur unu linio, ni nur diri \ n reprezentas novan linion. Lasu min resave mia dosiero, reiru al la fina fenestro, kaj re-run a.out, Enter. Ankoraŭ kalesxon, sed kial? Spektantaro: [inaudible] DAVID Malan: Jes, do mi bezonas recompilar ĝin. Do por kompili la programon nur signifas konverti ĝin el fonto kodon por objekto kodo, fontkodon al nuloj kaj aĵoj. Nun, la nura fakto, ke mi batis Konservu en ĉi TextEdit ne havas portanta sur tiuj nuloj kaj ĉar mi unue bezonas diri al Clang hey, mi ŝanĝis tiujn liniojn de kodo, la fontkodo. Vi bezonas regeneri a.out. Nenio ŝajnas esti okazinta, sed en komputilo, ĉe komanda linio, por tiel diri, kiam nenio okazas, kiu kutimas signifas ĉio estas bone. Kiam io ne okazos, tio signifas vi paneas, ĝenerale. Do ni nun iru al a.out, kaj efektive nun, mi havas "saluton, mondon. " Kaj nun, kio pri tiuj nuloj kaj? Kie, fakte, estas tiuj? Nu, mi ne povas vere nur speco de poke ĉirkaŭ tre efektive. Lasu min malfermi TextEdit. Jen a.out. Lasu min kaj malfermu tiun, kaj tiu estas ŝajne kion mia programo aspektas. Do mi malfermis, ne hello.c, sed a.out. Sed ĉi tiu estas efektive nek mia programo vere estas. Klare, tio estas ia alfabeta gravuloj. Mi vidas neniun nuloj kaj, sed tio estas ĉar a.out estas programo. Nuloj kaj - sed TextEdit, kiel la nomo sugestas, ĝi estas samkiel Notepad en Vindozo, estas nur teksta redaktilo, do ĝi estas konfuzi ĉiuj el tiuj nuloj kaj kiel kvankam ili estis, kio? ASCII signojn. Do rememori merkrede, ni ĵus eliris kun ĉi arbitraj surĵeto de nombroj, aŭ bitoj, al leteroj de la alfabeto kaj interpunkcio simboloj kaj similaj. Do TextEdit, ke ĝi estas tekstoredaktilo estas malinterpretando tiuj ŝablonoj de nuloj kaj ke estas supozita al esti impreso vortoj, kiel "saluton, mondo." Ĝi estas montri ilin kiel ASCII, kaj tial gxi aspektas iom senorda. Nun, estas iuj aludoj de praveco en ĉi tie. Rimarki, ke mi reliefigas, estas aludo de reale "saluton, mondo, "do ie en tiu programo estas la frazo mi skribis. Sed ni iru antaŭen kaj nun vidas kun malsama programo. Ĉi tiu ne estas tiu kiun ni uzos, ke ofte, sed ankaŭ venas kun Mac kaj estos ene de la CS50 aparaton. Lasu min kaj malfermi kun programo nomata XXD. Reen en la tago, plej programoj estis enoficigitaj sufiĉe cryptically, kaj tiel la tendenco daŭras. Sed-b signifas kraĉi tiu programo el kiel duuma. Ne ruli ĝin. Montru ĝin al mi kiel nuloj kaj, kaj ĉi tiu estas la C plani ni nur skribis. Nun, mi, kiel homo tie, mi honeste ne scias kion tiuj diversaj ŝablonoj de nuloj kaj reprezentas. Reen en la tago, mi, kun mia punch kartoj aŭ similaj, would vere devas serĉi kion tiuj diversaj ŝablonoj de 01111000, reale reprezentas. Aŭ pli malbone, mi bezonus fari la punching aŭ la kreo de ĉi tiuj ŝablonoj de nuloj kaj aĵoj. Sed nuntempe, alpreni fido ke CPU, Intel ene, tiel paroli, ene de ĉiu el niaj komputiloj tiuj tagoj, scias kiel interpreti tiujn nuloj kaj aĵoj. Kaj kelkaj nuloj kaj signifas impreso. Iuj nuloj kaj signifas ludi la sono. Iuj nuloj kaj aĵoj signifas preni uzanto enigo de klavaro. Ekzistas ĉiaj malsamaj skemoj, sed ni dankeme, kiel homoj, nur ĝenerale bezonas zorgi pri programado en ĉi sufiĉe alta nivelo. Kaj en aliaj CS klasoj povas enprofundiĝi malsupren pli kaj rigardu ĉe aferoj kiel tiuj nuloj kaj, aŭ ankoraŭ aliaj aferoj ankoraŭ. Do nun ni konverti ĉi. Ni movi tre rapide for de C kaj movi al iu a iom pli konsola, iom pli ekscita, en tiu ni povas reiri niaj kuraĝigoj kaj sonoj kaj similaj, ke klare eskapis ni en tiu sufiĉe primitiva interfaco. Do tiu sama programo en C povas esti prezentita hodiaŭ en ĉi programlingvo nomas Scratch jene. Ĉi tiu estas la ekvivalento de ĉi saluton mondo programo skribita en ĉi puzlo peco stilo lingvo nomita Scratch. Do lasu min antaŭeniri kaj malfermu tiun tre programo. Oni denove alvokis Scratch. Estas libere disponebla, kaj ĉi tiu estas la sama afero ni komenciĝis hodiaŭ plu. Do ĉi tie estas Scratch, kaj ĝi estas dividita en kelkaj malsamaj pecoj. Sur la plejsupro pravas, ni havas la tiel nomata etapo, kaj ja, tie estas kie la kuketojn prezentis nur iom antaŭe. Kaj en tiu etapo estas aĵoj nomata sprites, karakteroj, aŭ celoj, aŭ entoj. Fakte ne gravas kiel vi pensas pri ili, sed ili estas programebla, meblo aĵoj, kaj en ĉi tiu kazo, ĉi Programo kiu nia studenta skribis havas paron de Gingerbread kuketojn, paro de cirkla kuketojn, tuta aro da koroj, tuta aro da anteojos. Pro tio, li aŭ ŝi povas plani ĉiu de tiuj individuaj karakteroj aparte. Nun, kio signifas plani tiujn karakterojn? Nu, lasu min antaŭeniri kaj alklaku ĉi maldekstra mano kuketon kaj rulu sur la supron maldekstra tie. En la supera maldekstra de mia ekrano nun estas la tiel nomata skriptoj areo. Tio estas speco de vakan skribtabulo, komence, sur kiu mi povas treni kaj faligi puzlo pecoj kiuj, sincere, faru ekzakte kion ili diras. Ĉe la plejsupro de ĉi pilo de puzlo pecoj estas la vorto Kiam Verda Flago klakis, kaj se vi ne rimarkis antaŭe, la vojo mi komencis ke kuketo kanto klako, laŭvorte, verda flago. Por ke puzlo peco supre maldekstre tie signifas kiam la homa klakoj la verda flago, plue fari la sekvajn aĵojn. Nun, kion ili kuketon procedi fari? Mi ne vere scias kiel interpreti ĉi ankoraŭ, sed la kuketo ŝajne starigis lian sulko al nulo, tiam ĝi atendis tri sekundoj, poste ĝi ŝanĝis lian grupon al unu, tiam atendis duan, tiam ĝi ŝanĝis lian sulko reen al oni. Kaj tiam tiu reale similas iom de cimon, ne devus devas ŝanĝi lian sulko denove kaj denove, se ĝi estas esti ŝanĝita aliloke, sed ĉi tiu serio de paŝoj estas kio estas diktante la konduto de tiu aparta kuketon. Do ni vere rulumu dorso kaj ne rigardi ion tute tiel kompleksa ankoraŭ. Lasu min kaj elektu Dosiero, Nova, kaj ricevu puran skribtabulo. Do nun, mi ja havas malplenan skripto areo, malplena etapo, kun nia defaŭlta sprite Scratch, kaj supre maldekstre sur mia ekrano mi havas la pallet de ĉiuj iliaj disponebla puzlo pecojn. Kaj ni ne iros tra preskaux ke multaj el tiuj aĵoj hodiaŭ ĉar, denove, la plimulto estas mem-klarigan, sed ni volas provi categorizar ilin kaj marki la similecoj kun tiuj estontaj lingvoj al kiuj ni plonĝi. Kaj je supre maldekstre tie estas la unua kiam Verda Flago clicked, do lasu min treni ĉi tie, malzomi iom. Kaj se mi klaku la verdan flagon, nenio vere okazas ĉar Mi ne ligita ajna logiko, ajna aserto tiel diri, por ke verda flago, do lasu min iri al la kategorioj super tie. Mi nuntempe en la Kontrolo kategorio. Mi anstataŭ tuj iri malsupren al la Looks kategorio, kaj ekzistas tuta amaso de aferoj tie kiuj diras Diru, Pensu, Ŝanĝi Koloro, Switch Kostumo. Do vi povas fari sensencaĵoj kun kostumoj kaj sonoj kaj similaj. Lasu min kaj simple diri Diru, kaj nun rimarkis kiel mi treni kaj faligos puzlo peco, ĝi tuj volas fermi en la responda formo. Do kiam mi iras antaŭen kaj lasi iri de mia muso, ili ŝlosi kune, kaj nun, se mi iros tie kaj klaku la verdan flagon, la kato ne fakte diras saluton ĉar tio estas kio estas ene de tiu blanka skatolo. Ni baldaŭ vidos ke tiu blanka skatolo estas kio nomiĝas argumento, aŭ parametro. Ĝi estas maniero de ŝanĝi la konduton de, en ĉi tiu kazo, enigmi peco, sed se mi volas diri precize kion mi diras antaŭe, diru saluton, mondo, mi povas nun reiru tien, klaku ludi, kaj "saluton, mondo" estas kio la diris. Do ni estas laŭvorte programado nun. Ne ĉiuj kiuj konvinkaj de programo, sed almenaŭ ĝi estas iom pli konvinka ol iu kiu rigardas, ĉe unua rigardo, kiel ĉi tio. Kaj ni povas tre rapide akiri tiom pli esprimpova ĉar en Scratch, kiel en aliaj lingvoj, ne estas ĉio specoj de deklaroj, ne nur diru nek impreso ion, sed vi povas fari tion kiel atendante, kiel ni ĵus vidis kun la kuketo, iuj da sekundoj. Vi povas ludi sonojn en la medio de Scratch nur kiel vi povas en normala komputilo programo ludi sonon. Vi povas kontroli kion ili nomas Bulea esprimoj. Do nun, ni komencu aldoni al niaj ilaron iuj terminologio ke fakte rilatas al la ekzemplo kiu Joseph kaj mi faris tie kun la ŝtrumpetojn. Do asertoj estas nur deklaroj de fakto. Fari ĉi tion. Al direktivo por la sprite, aŭ mi la homo, por fari ion. Al Bulea esprimo estas io kiu havas valoro, tn vervaloro, jen ĉu nulo aŭ unu, falsa aŭ vera, ekstere aŭ sur, neniu aŭ jes. Ne vere gravas kiel vi pensas pri ĉi tio, sed estas duuma stato. Kiel Nate diskutita en la merkreda filmetoj, du malsamaj aferoj. Do en Scratch, Bulea esprimoj okazi rigardi kiel tiuj bluaj objektoj tie, kaj en ĉi tiu kazo, la demando markon implicas ke vi demandas demandon. Estas la kato, aŭ la sprite, tuŝante la muskursoron? Do ĉi tiu estas nur unu ekzemplo de Scratch bloko kiu okazas por permesi al ni kontroli jes aŭ ne, estas la muso tuŝi la sprite sur la ekrano? Kaj tio povas esti utila se vi vere volas fari tion, kun via muso. Krom Bulea esprimoj, ni havas aferojn kiel estas la muso malsupren, do vi povas detekti tian pridubi ankaŭ. Ni povas fari matematiko se vi efektive volas, kaj ekzistas fakte pli konvinka uzoj por tiu ol pura de aritmetiko, kiel ni vidos. Pseŭdo hazardo kaj farante vian programon aperas pensi aŭ konduti malsame bazita sur iu kvazaŭe hazarda valoroj, kaj tiam ni havas aĵojn kiel Bulea esprimoj kiel KAJ. Do, se vi vere volas kontroli du valorojn, ni vidos en Skrapi ke ni povas reale testi se tio ne estas vera kaj tio estas vera. Ekzemple, en la kazo de miaj ŝtrumpetoj, mi povis jam en la tre fino demandis la demando se maldekstra ŝtrumpeto estas ĉe kaj dekstra ŝtrumpeto estas on, quit. Vi ĉiuj farita por la tago, tiel ke estus ŝanco por tio. Do ni iru antaŭen kaj provu peco iuj de ĉi tiuj kune kaj iru en kelkaj ekzemploj pli konvinkaj ol ĉi tiu. Do lasu min iri antaŭen tie kaj malfermi kelkajn el la ekzemploj ke estos ĉiam esti sur la kurson de afiŝinto tiel, kaj malfermi hello2. Do en hello2 tie, ni havas programon ke tio faras kelkajn aĵoj, sed ne faras ĝin kiel efike kiel ni povus. Do jen diras "saluton, mondo" por dua kaj poste atendas por dua. Kaj poste faras ĝin denove, kaj tiam ghi denove. Do se mi klaku la verdan flagon, Scratch diras "Saluton, mondo. Saluton, mondo. Saluton, mondo. "Kaj tio estas evidente kandidato nun por pliboniĝo. Kio estas la bagatela pliboniĝo, mi esperas, ni povas nun faru se Scratch apogas la koncepton? Ia buklo. Ia ripeto, nun, estus bela, do lasu min efektive provu tion. Lasu min vere iru kaj movi ĉi. Do avizo povas disigi blokoj tiel facile kiel vi povas aldoni al alfiksi ilin. Lasu min iri sub kontrolo, rulu suben ĉi tie, kaj ja, tie estas tio enigmo peco tie, Ripetu kaj Forever kaj Forever Se. Do ekzistas pluraj manieroj esprimi looping konstruoj en Scratch. Tiu, kiun mi verŝajne volas ĉi tie ne estas Forever ĉar mi nur volas ĉi okazos tri fojojn, sed probable Ripetu. Do lasu min tiri Ripeti super tie, treni kaj faligi ĝin kaj nun anstataŭ diri "saluton, mondo" tri apartaj tempoj, lasu min tiri tiun puzlo pecon en ĉi tie. Kaj eĉ se ĝi ne ŝajnas havi, la programo estas inteligenta sufiĉe por realigi ĝin kreskos plenigi, do ĝi estas la formoj ke materio kaj ne la absoluta grandeco. Lasu min ŝanĝi la ripeto al tri, kaj nun lasu min iri antaŭeniris kaj treni Atendu Unu Dua en tie ankaŭ. Ĝi tuj kapti en tiel, kaj tiel nun mi iros al treni tiuj infanoj super tie kaj nur ĵetu ilin ĉar mi ne bezonas ilin plu. Lasu min malzomi kaj klaku la verdan flagon nun, kaj ni havas la sama programo sed, kiel mi antaŭdiris antaŭe, pli bone desegnita ĉar vi povas imagi kiel malbona tiun programon atingus, certe estetike, se vi devis komenci kopii kaj bati, kopii kaj bati, aŭ trenante kaj faliginte la sama Darn aferojn denove kaj denove. Nun, simple dirante stuff sur la ekrano, presi al la ekrano, vere ĉiuj ne ke ekscita, do ni malfermi tria varianco tie. Kaj nun, kiel vi vidas, tiu estos rapide akiri ĝena - [Meow] DAVID Malan: - sed estas ankaŭ speco de cute. [Meow] DAVID Malan: Konsentite, tiel bona, kaj ni povas certe uzos tiun sama transiro de chunking ĉi supren enen looping strukturo, sed ni fari ĝin pli interesa ankoraŭ. Lasu min kaj malfermu kvara varianco tie, kie mi preni tion, unu paŝon. Do laŭ tio, stulta kvankam ĉi tiu estas unue rigardo, kio tiu programo faros? Ĝi tuj Meow unufoje. Kial? Nu, tiu estas, ĝis mi scias, ĉiam malpli ol du. Ne nocio de hazardo tie. Mi havas laŭvorte malmola kodita unu kaj du, sed ĉi tiu estas Ekzemple nun de reale uzi Bulea esprimo. Multe ŝatis kiel Jozef faris en sia _pseudocode_, la deŝovon SE vi trovas trafa ŝtrumpetojn DO do la sekva, jen ni havas esprimo SE oni estas malpli ol du DO - kaj fakte ni eĉ havas iomete da deŝovon, kie la purpuro estas iomete dentado dekstre - DO vi tuj ludi la sono Meow. Nun, en tiu kazo, ke oni estas ĉiam malpli ol du, do ĉi estas ia perdo de kondiĉo. Sed ni povos, kiel ni vidos, ŝtopi aliajn aĵojn enen tiuj anstataŭiloj kie unu kaj du nun estas. Do ni nun antaŭeniri ekzemple kvin el tiuj pluraj hellos kaj rigardu kion tiu programo tuj faros. Do nun, en angla frazo, kiel tion faras programo kondutas? Spektantaro: Meows duono de la tempo. DAVID Malan: Meow la duono de la tempo, do ĉi tiu estas vojo de transportante tre simpla ideo. Eĉ kvankam ni hazarde esti uzante iujn malegalecoj tie en iuj nombroj, tiu estas vere nur programmatical maniero, preciza maniero, de diri se la monero venas supren kapojn, iru antaŭeniris kaj Meow. Aŭ male, se la monero venas supren vostoj, ne Meow. Kaj en ĉi tiu kazo, kiel ni esprimas tion? Ni elektu hazarda nombro de 1 al 10, kaj se tiu nombro estas malpli ol 6, iru antaŭen kaj Meow. Kaj kiel tiu eniri ĉi tie? Nu denove, rimarki nur la trenante kaj faliginte kaj aĵoj latches en loko. Do nun ni vidu se ĉi tiu hazardo funkcias. Lasu min kaj klaku la verdan flagon. [Meow] DAVID Malan: Okay. [Meow] DAVID Malan: Okay. Okay, bona, do ni havas kapojn, kapoj, vostoj efike. Vostoj. [Meow] DAVID Malan: Estroj. [Meow] DAVID Malan: Bonega. Ĝi ĉiam estas mallerta kiam ĵus statistike vi ricevas malbonan kuras, kaj ĝi estas ĉio kapoj, kaj la programo fakte ne labori kiel vi volas atendi. Sed ĉi tiu tempo, ĝi funkciis, kaj ni similas havi, se ni faris ĉi malfinia nombro de fojoj, 50% probabloj. Nun denove, ne cxiuj interesaj, ĝuste farante katoj Meow, do ni vidu, se ni ne povas antaŭeniri ĉi iom pli tie en versio ses. Do nun, ni devas vere tedas versio - [MEOWS EVERY duaj] DAVID Malan: - kaj ĉi tiu estas kion scias, generalo, kiel senfina ciklo. Do malfinia ciklo en ĉi tiu kazo sentas malbone. Ĝi estas certe tuj komencos soni malbona, kaj tamen malfinio bukloj ne ĉiam malbonaj. Ĉu vi povas pensi pri kunteksto en komputilaj programoj kie vi volas vere volas senfina ciklo? Yeah? Spektantaro: Kiam vi volas kontroli kondiĉo. DAVID Malan: Konsentite, kiam vi volas teni kontrolanta kondiĉo? Kiel kio? Spektantaro: [inaudible] DAVID Malan: Konsentite, bona, do se vi havis iun programon, iuj speco de hejmo aŭtomatigo afero, kie vi volas senĉese monitoro estas io tiel. Estas la lumoj sur? Estas la lumoj sur ĉar eble vi havas temporizador, kaj vi volas ilin foriri, vi eble bezonas fari ion denove kaj denove. Kaj fakte, parolante pri temporizadores, iu el vi, kiuj horloĝoj en via komputilo aŭ ciferecaj horloĝoj, jen unu senfina ciklo. Ĝi daŭre ĝisdatigi la tempo ĉar ĝi senĉese kontrolanta kaj kontrolado kaj kontrolado havas la tempon ŝanĝis, kaj se jes, ho, mia dio. La horloĝo estas fine ŝanĝis. Ĝi bezonas montri tiun valoron al vi. Do dum la plejparto de la tempo malfiniaj cikloj estas eraro, aŭ almenaŭ malriĉa dezajno decido, kelkfoje ili faras havas sian valoron. Nu, ni pli antaŭen tie hello7. Do nun la programo ricevos iom pli interaga. Lasu min zomi tie, kaj denove, ĉi tiu estas kio estas agrabla pri Scratch. Kaj ni uzas ĝin por esti klara, Scratch, ĝuste hodiaŭ kaj en sekva semajno problemo starigis. Sed lunde, ni plonĝi en C. En ĉi tiu programo tie, faras, ĉiam, la sekvaj. SE tuŝi la muskursoron - nun, kiu estas la kunteksto tie? Nu, kaj avertas ke, kiu estas elektita cxi tie ĉe malsupro dekstre estas la kato, sprite, tiel tiuj skriptoj, ĉi programo, aplikas al li specife. Do se tiu kato tuŝas la muskursoron, tiam ĝi tuj ludi ĉi malsupren kaj atendu du duaj, kaj tiam ripeti ad nauseum. Do ni iru antaŭen kaj batis ludo. Nenio okazas, sed se mi volas Pet la kato nun, mi povas simple. [Meow] DAVID Malan: Adorable. [Meow] DAVID Malan: Konsentite, malpli ĝena, sed ankaŭ ricevas obtuza, do ni movas en kaj vidi se ni ne povas injekti iom pli logika. Tio estis ekzemple sep. Ĉi tie en ekzemplo ok, ni iras al enkonduki ELSE kondiĉo. Tiel kiel laŭvorta forko en la vojo, en kiu vi povas iri forlasis aŭ vi povas iri dekstren, kondiĉo en programado lingvo kiel Scratch, aŭ kiel ni vidos C, povas permesi al vi iru en unu direkto aŭ alia vojo SE ELSE konstrui. Do tute laŭvorte, SE tuŝi muskursoron, ĉi ludos iun sonon, ELSE ĝin tuj ludi ĉi tiu alia sono, Meow. Nun, se vi povas konkludi el la nomo de tiuj sonoj, vi povas probable diveni kio tiu programo estas intencis sorĉvenigi la ideo de. Ĉi kato estas meowing feliĉe. [Meow] DAVID Malan: Feliĉe, sed ne sufiĉe ŝatas esti tuŝita. [Ektondros] DAVID Malan: Do nun ni havas katon kiu krias al vi. Bone, nu, unu lasta ekzemplo kun katoj tie, kaj ni malfermita versio naŭ de ĉi tie. Do nun, ni havas la sekvan plej ĝena sono kiun mi povis trovi, do ni havas rosmaro aŭ maro leono tie kiuj tuj fari la sekvajn. [SEAL Bark] DAVID Malan: Konsentite, do ĉi eliros al la ĝis vi povas diveni, kiel tiu programo funkcias. Do ĉi tiu fojo, tiu besto havas du skribsistemoj, kaj kio estas Interese estas, ke tiuj skriptoj tuj ekzekuti en paralela. Do ĉar ili ambaŭ komenco kun verda flago clicked, ĝi estas kiel iri kiel ĉi tiu, kaj ambaŭ programoj komenci kuri ĝin iam eĉ se ili estas looping ĉiam. Do, en la supro skripton, mi havas iujn logiko. Kion prezentas tio kiun havigas tie supre? [SEAL Bark] Spektantaro: [inaudible] DAVID Malan: Se estas kio? [SEAL Bark] Spektantaro: Se silentigita al nulo, ĝi tuj observu ludas la soni. [SEAL Bark] DAVID Malan: Konsentite, bona. Do SE silentigita, kia ajn estas, ĉi oranĝo afero estas nulo, DO ludi la maro leono sono kaj pensi "Ho, hi, "por du sekundoj. Nun, mi ne scias kion silentigita estas, sed nulo conjures ĝis la ideo de falsaj aŭ ekstere. Do se silentigita estas falsa, do se ne silentigita, teni ludi la sono. Bone, nu, kiel ni malebligi tion? Nu, ni rigardu la dua skribsistemo tie malsupre. La dua skribsistemo diras starigis silentigita al nulo. Rimarku ke estas ankaŭ oranĝa, do kio Scratch ne estas koloroj blokoj en la sama ombro se ĝi estas speco de logike rilataj. Do ĝuste kiam dampita ĝis supro estis oranĝo, tia estas silentigita cxi tie menciita en oranĝo bloko. Sed ĉi tiu estas variablo taskoj, do ĝuste kiel en algebro, vi havas x kaj y kaj z, en programado vi havas variabloj, sed ili estas ĝenerale - let la paŭzo dum momento kaj figuro kiel halti ĉi bojanta. Kiel mi faru tion? [SEAL Bark] DAVID Malan: Okay. Ĝi haltis. Okay. Do ĝuste kiel en algebro vi havas variabloj x, y, kaj z, sed en programado, havante variabloj kiel x, y, kaj z estas ĝenerale malaprobita ĉar ili estas tute ne esprima. Ili ne havas semantikan signifon ajn, do en la plej multaj programlingvoj, variabloj povas havi plenan disvolviĝinta nomoj aŭ vortoj aŭ frazoj, kiel silentigita, diri kion ili faras. Do ĉi tiu dua skribsistemo ankaŭ estis aŭskultante eterne, kaj gxi diris se la ŝlosilo, la klavaro klavo Spaco, estas premita, demandosigno. Do tie estas kondiĉo kun Bulea esprimo kiu estas tuj respondi al demando ĉu truthfully aŭ malvera, tiam mi havas interne de ĝi SE la spaco klavo estas premita KAJ SE silentigita estas nulo, turnu silentigita al oni, ELSE starigis silentigita al nulo. Do ĉi tiu alia forko en la vojo, kaj anonco kiom mi havas anidado la du SE kondiĉoj, estas vojo de kontrolanta estas la Spaco Trinkejo premis ĉar se jes, mi jam volas iri tiun vojo aŭ tiu vojo. Kaj kiel mi inversigi la valoro de silentigita? Mi devas kontroli ĉu nulo? Se jes, fari ĝin unu, alie fari ĝin nulo al tio Baskuligi liaj du ŝtatoj. Bone, do ni havos poste kelkaj el tiuj fundamentaj konstruoj. Ni havas Bulea esprimoj, kaj realigi, ankaŭ, ĉi tiuj estas Ne ĉiuj kiuj ne konas. Fakte, jen rapida ekrankopio de Harvard Kompreneble la CS50 komerca ilo, kaj ĉiu retpaĝaro tie kiu havas markobutonojn kaj guto montetaro vere, ĉiuj ĉi tiuj datoj, estis uzante Bulea esprimoj. En ĉi tiu kazo ĉi tie, se vi klakas la checkbox apud Kompreneble pli granda ol aŭ egala al 4,5, aŭ la sama flanko fakultato, vi preciziganta Bulea esprimo. Montru al mi kursojn por kiu tiu esprimo estas vera. Aŭ dekstre, ĉu ne konfliktas kun kursoj mi portante, se tiu estas kontrolata, tiam jes, vi volas kontroli tiu kondiĉo, alie vi volas ignori ĝin. Do Bulea esprimoj estas ia cxirkauxe, sed kiam ni metas ilin en kondiĉoj, ĉu SE kondiĉoj, SE ELSEs, aŭ ni povas eĉ simuli profunda niveloj, SE ELSE IF ELSE - do jen speco de triargumenta stato. Vi povas iri tiel aŭ ĉi maniero aŭ tiamaniere. Ni povas gardi nestumado aĵoj iri en malsamaj direktoj. Do Scratch havas tiuj cikloj, kiel Forever. Ĝi havas tiujn trajtojn kiel Ripetu 10, iuj finia nombro de fojoj. Ni havas la kapablon nun meti variabloj, do en tiu ĉi kazo Mi deklaris, ekzemple, variablo nomita ŝtrumpetoj. Mi inicializado al 0, kaj tio estas ankoraŭ alia direkto ni povis esti prenita supren tie kun Jozef, per kiu mi eble nur konservi trako de kiom ŝtrumpetojn mi havas sur kaj finiĝi la programo kiam tiu variablo estas valoro estas 2. Kiu estus alia maniero de ia komunigante ke problemo kaj faras ion denove kaj denove. Nu, ni iru antaŭen kaj nun enkonduki kelkajn novajn aferojn. Do tiuj el vi kun antaŭa programing sperto volo scias, ke multaj lingvoj havas arrays, aŭ vektoroj aŭ lertaj, kaj ja, Scratch havas io tiamaniere, ankaŭ. Do ni vidu, se ni ne povas preni aĵojn al la sekva nivelo tie. Se mi havas la kapablon, nun, kun ĉi tiuj puzlo pecoj aldoni ion, kiel vorto aŭ nombro, al variablo, mi povas komencas amasigi aĵojn. Kaj jen estas vere bela apropos por aĵoj kiel ludoj, listo ludoj kie vi estas speco de marsxante iuj fantazio mondon kolekti aĵoj, repreni aĵojn, gajnante punktoj, aŭ similaj. Vi eble volas konservi trako de ia inventaro, kaj ja, jen kion unu el niaj malnovaj studentoj tie faris kun iu nomita Fruitcraft RPG. Do lasu min antaŭeniri kaj malfermu tiun aferon ĉi tie, kaj en Fruitcraft, ni havas ĉi mondo ĉe supro. Do lasu min antaŭeniri kaj klaku la verdan flagon. Avizo ĉe supre maldekstre estas ia inventaro. Tio implementado en Scratch kiel kio ni vokos tabelo aŭ listo, kaj nun ni havas ĉi tiun malgrandan kuraĝigo. Do kiel ni komencis pli frue kun ĉi kuketo amo, kaj poste ni antaŭeniris al katoj kaj maro leonoj, nun ni povas havi tion, kio estas eĉ pli interaga. Kaj tiu malgranda blua ulo, mi povas komenci movi ĉirkaŭ lia malgrandan loĝejon tie. Do ĝi similas li havas eliron cxi tie, do mi uzas la sagoj klavoj, supren, suben, forlasita pravas. Kaj nun mi estas ekstere, do ni estas kion mi devas tie. Aspektas kiel oranĝon, kaj ja, kiam mi tuŝis la oranĝo, ĝi prenas plopped en mian inventaro. Se mi iras tien por la ĉerizoj, nun mi havas ion alie en mia inventaro. Kaj jen estas ĉiuj agrabla kaj bela, sed pensi kiel, nun, tiu estas efektivigitaj. Nu, ni havas ĉi nocio de listo, kaj tio estas ŝajne enigmo pecon, kiun vi ĵus diras kion vi volas aldoni al ĝi, aldoni oranĝo, aldoni ĉerizoj. Nun, kio ĉi tiu malgranda blua ulo faras? Nu, li estas sprite. Kaj supozeble, la oranĝo kaj la ĉerizoj - ili mem estis apartaj spiritoj. Kaj uzante kondiĉoj en Buleaj esprimoj, la studento estis probable povis esprimi SE blua ulo estas tuŝi ĉerizoj DO aldoni la vorton ĉerizoj al sia inventaro, kaj tiam ankaŭ kaŝas la ĉerizo sprite. Do sub la kapuĉo, tie probable ankoraŭ estas ĉerizo sprite tie. Ni ĵus rakontis ĝin igi efektive nevidebla. Nun, se mi gardas marŝante tien, ni povas ankaŭ fari tion proximal afero, kie mi povas iri kaj legis la signo. Do se blua ulo tuŝi signo, ni povas havi tiun Say bloko samkiel la kato parolis al ni en vortoj, saluton, pli frue, "Got iuj frukton? Alportu ĝin al la frukto loko. "Bone, do nun, ŝajne, Mi havas mian direktoj. Mi povas iri tien al la frukto loko, vicigas min supren kun la pordo. Nun, mi estas en ĉi tie. Mi povas iri al la viro en la vendotablo. Li detektas ke mi estas proksima al li, do tio ne devas esti sufiĉe idente tuŝi, kaj mi venkis. Do ni havos Fruitcraft RPG. Do ni povas fari aferojn eĉ pli progresintaj ol ĉi tiu. Ni povas aldoni sonoj. Ni povas aldoni pseŭdo hazardo. Ni povas aldoni komplekseco. Lasu min tie ĉi, kaj anstataŭ tion fari mem, lasu min montri al vi unu el la plej kompleksaj prezentoj ni akiris lasta jaro de iu al iu nomita Blake. Ĉu ni povas havi unu volontulo kiu estas komforta aperi sur ĉambro kaj estas ĉe ludas ludon? Kion pri rajton tie? Venu supren. Bone, do la ludo, ke vi havas nur scii volontulis por ludi - [Aplaŭdo] DAVID Malan: - Estas io el pasintaj tempoj nomita "Frogger." Kio estas via nomo? RENDA: Renda. DAVID Malan: Redna? RENDA: Estas kiel Brenda kun b. DAVID Malan: Konsentite, Renda. Davido. Nice to meet you. Do ĉi tie en "Frogger," kaj se ni povus levi la volumo ĵus iom, vi estas tiu malgranda verda rano sur la fundo. Vi povas uzi forlasis, dekstra, supren kaj malsupren, kaj via celo estas transiri la straton, transiri la riveron, kaj tusxu la lilio almohadillas ĉe la supro. Aw. Unu pli t - refari, tute certe? Ni sukceson halto. Neniu vidis tion. [Aplaŭdo] [Aplaŭdo] DAVID Malan: Yeah. Tre bone farita. Bonega, dankon. Por ke ne estis Frogger. Nun ke vi scias, kion vi havas alveninta vin en, oni pli volontulo por malsama ludo prezentita de alia lernanto. Vi volas veni supren? Kio estas via nomo? Richard: Richard. DAVID Malan: Richard. Bone, Richard, venu supren. [Aplaŭdo] DAVID Malan: Vi havas iu kiu faros sonas familiara frue, do tie estas viaj instrukcioj. Do tre frue, iu puzlo pecoj tuj rulumu supren de la ekrano ke aspektas ĉu forlasis aŭ dekstra supren aŭ malsupren. Vi tuj devos batis la sagoklavoj tiel kiu respondas al tiuj puzlo pecoj vicatendis kun la anstataŭiloj en supro. Do kiam vi vidas maldekstre sago, kaj regiono per la maldekstra sago, batis la maldekstra sago. Vi povas komenci. [MUZIKO - "forta" KAYNE OKCIDENTO] DAVID Malan: Bone, grandaj rondaj de aplaŭdoj por Richard. [Aplaŭdo] DAVID Malan: Tre bone farita. Dankon. [Aplaŭdo] DAVID Malan: Do amuza kaj, ŝajne, ia intimidar kiel ĝi povus esti apliki ion kiel kvazaŭe kompleksa kiel ĉi tiu, rimarkas ke la lernanto ne ekiris kaj simple skribi ĉi subite. Pli ĝuste, oni povas rompi problemo kiel ŝajne komplekso kiel tiu en multe malpli granda pecoj, kaj ĉi tio, ankaŭ, estas tuj estos temo. La plej malbona afero vi povas fari en skribi programon en plej ajna lingvo estas sidiĝi, get vere ekscitita, skribu la tuta malbenita afero, kaj poste nur atendas ke ĝi laboras por la tempo vi ĵus skribis. Pli ĝuste, la procezo de programado devus ĝenerale esti tre diskutita, tre ripeta, per kiu vi ĵus starigis tre malgrandaj paŝoj al vi, mordo-grandeco pecoj Kion ili volas mordi ekstere, kaj por ke vi havas tiujn prudento ĉekoj, iom limŝtonoj vi povas renkonti. Kaj tiam vi konstruu sur supro de tiuj por krei pli kompleksaj aĵoj ankoraŭ. Do ekzemple, kiel ni povus iri implementando ludo kiel tiu? Nu, sincere, mi certe komencos per nur apogi unu klavo samtempe. Ni simple apliki subteno por la maldekstra sago. Do la studento devis iel krei en Photoshop, aŭ en Skrapi mem uzante la malgranda grafika redaktoro, oni sago ŝlosilo kiu aspektas kiel la ĉe supro lasis tie, nur la griza lokokupilo. Tiam la studento devis diveni kion x, y kunordigi al diris, kie meti ĝin en la fenestron. 0, 0 estas ĉi tie, do vi devas kalkuli la nombron de rastrumeroj, aŭ dots, por kompensi ke sago de la supro de la ekrano. Kaj tiam tuj ke estas en loko, via programo ne vere faris nenion ankoraux, do vi tiam bezonas duan sprite, por Ekzemple verda sago, ke estas ankaŭ markante forlasis, kaj vin tiam necesas komenci skribi iujn skriptojn por ĝi. Kaj vi rimarkos, eble, ke tiuj aferoj venas komencita en malsamaj rapidoj, kaj la koloroj estis en malsamaj lokoj, kaj tio estas ĉar la lernanto uzas iom de pseŭdo hazardo. Kaj per pseŭdo hazardo, mi nur volas diri elekti nombro inter io kaj io pro vi povas komenci mapo aĵojn, kiel se la nombro estas inter kaj kvin, nu, ni faros la aferon verdo. Se estas inter 6 kaj 10, ni preni la puzlo peco ruĝa anstataŭe. Tiel longe kiel vi havas manieron de generante ian hazardo, vi povas tiam preni decidojn surbaze de kiuj hazardo. Kaj mi parolas tiele pseŭdo hazarda ĉar estas iom malpura sekreto. Komputiloj ne povas veni supren kun hazarda nombroj. Ili povas nur fari kion ili diris, ĉar ili estas homfarita mekanismoj. Ili ne povas ĝuste diveni numeron kiel ni homoj sentas kiel ni povas. Komputilo havas ion fari matematikajn al sorĉvenigi la iluzio de matematika nombro, kelkfoje uzante la nuna tago de tempo kiel enigo por decidi kio numeron reveni, sed pli en tiu alia tempo. Por nun, nur scias, ke ni povas generi pseŭdo hazardo. Do iam mi havas la kapablon por la maldekstra sago por komenci aperi en malsamaj tempoj kaj je malsamaj rapidoj, tiam Mi povas reiri kaj aldoni kelkajn de tiuj SE kondiĉoj. SE tiu sprite tuŝas la alia, KAJ la maldekstra sago ŝlosilo estis premata - do tri kondiĉojn en tiu kazo. Mi povas uzi tiun KAJ bloki eble, en tiu kazo - DO Mi volas iri antaŭen kaj pliigo la partituro. Kaj en supro, ni havas partituron, ni havas Awesome, Cool, Bona, kaj Boo. Do tie estas ŝajne kvin variabloj ke ĉi studento uzata por konservi trako de tiuj diversaj metrikoj. Do mallonge, la fina rezulto estas mirinda. Estas amuza, estas amuze ludi, ĝi estas engaĝi, sed ĉi tio ne estas kie la studento komencis. Li aŭ ŝi komencis al tre malgranda aro de paŝoj. Do kio estas iu alia konstruaĵo blokoj, ke ni povas teksi en tiuj programoj? Nu, estas ĉi tiu alia koncepto en plej lingvoj, Skrapi inter ili, konata kiel fadenoj. Do komputilo povas fakte ne vere multnombraj aferojn tempo, almenaŭ ne kutime. Pli ĝuste, komputila ĝenerale havas nur unu CPU, kaj eĉ kvankam komputiloj estas super rapida kaj povas, do, krei la iluzion de fari multnombrajn aferojn samtempe - kontrolanta vian ejon, atingante instantáneo mesaĝon, presi dokumenton - vere, komputilo estas nur salti de impreso al IMing al emailing, dorso kaj reen kaj tien kaj reen tiel rapide, ke ni malrapida witted homoj simple ne rimarkas ke fakte kurante tiuj programoj iom samtempe. Nun, ĉi tiu iom de blanka kuŝas tiuj tagoj ĉar, nuntempe, multaj niaj komputiloj estas kion oni nomas multi-kerno, do vi havi CPU sed multnombraj kernoj, kiuj estas speco de kiel havi plurajn CPUs. Kaj tiel kelkfoje, komputiloj vere povas fari multnombrajn aĵoj samtempe, sed ĝenerale ene de programo, programoj fidi tion nomas fadenoj. Do unu fadeno estas ia kiel miniaturo programo kiu povas ekzisti apud alia miniaturo programo kaj povas kuri en paralela, aŭ almenaŭ povas kuri sub la iluzio, ke ili estas kurante samtempe. Do Scratch subtenas tion nomas fadenoj. Vi povas havi plurajn skriptojn ekzekuti tuj, kiel ni faris kun la maro leono, kaj ĉi tio permesas al ni efektive tiam havi interagoj inter tiuj spiritoj. Lasu min tie ĉi kaj elsxiros, diru, fadenoj, kaj ludi ĉi jene. Ni havas du sprites, ĉiu el kiuj ni vidas havas nur unu skripton. Kaj vi rimarkos ke ŝajnas esti iu inteligenteco en la kato en ĉi tiu ĉar li ricevas pli proksime - [Ektondros] DAVID Malan: - kaj pli proksima al la malgranda birdo. Do kiel estas la birdo mastruma? Nu, ni rigardu la birdo unua. La birdo skripto diris kiam la verda flago estas clicked, iru al x egalas negativa 115 kaj y egalas 150. Do mi simple supozis, hazarda loko kie mi volis la birdo komenci, kaj mi ĵus plopped lin tie defaŭlte. Tiam Forever SE ne tuŝi kato, do ĉi tiu estas malsama speco de looping konstrui, sed sama ideo, fari ĉi denove kaj denove kaj denove. Tiel longe kiel vi ne tuŝi la kato, movi tri paŝoj, kaj se vi estas sur la rando, resalto, kie ĝi estas speco de reflekto en la bilardo senco. Do jen kiel la birdo estas movanta ĉirkaŭ ia kvazaŭe hazarde, sed estas nur ĉar ĝi estas _bouncing_ for la muroj en ĉi tiu kazo. Nun la kato, dume, estas speco de kaptiloj. La kato, kiam la verda flago estas clicked, jes, komenciĝas en iuj situo, hazarda loko - almenaŭ en parto kiel por la elekto hazarda verda bloko tie - kaj tiam Forever SE tuŝi la birdo, ludi la leono sono, kaj tiam haltas skripto. Do kiam mi diris finiĝi, aŭ eliri antaŭe, tie estas enigmo pecon en Scratch kiu nur mortigi la programo en tiu atentigi ĉar ĝi estas speco de logike faritaj. Sed alie, tie, rimarki kio tuj okazos. Pinton al la birdo kaj movado unu paŝo. Do ĉi tiu punkto al birdo estas speco de avantaĝon la kato havas en kiu estas autodirigido en la movanta birdo, kaj ni povas nun faru ĉi programo des pli interesa. Anstataŭ movanta unu paŝon en momento por CPU ciklo, po frapi likvidon de la sonorilo, tiel diri, permesu al mi iri antaŭen kaj movi, diru, kvin ŝtupoj samtempe kiel la kato. Klaku kuri, kaj nun li vere trovis lin rapide. Se ni duobligi ĉi plui al 10 paŝoj, ĝi ia iras dekstra por li. Nun, ni povas doni la birdo, eble, iom de avantaĝo. Ni iru al la birdo kaj diru anstataŭ movi tri paŝoj, ni movi lin 30 paŝoj. Sed li ankoraŭ kroĉiĝis en la fino. Do jen, ni havas du fadenoj. Ĝi estas enprizonigita en Scratch kun du skriptoj kaj du sprites, sed la ideo en aliaj lingvoj estas ke vi povas skribi, esence, tro multaj programoj kiel ĉi tio kaj havas ili kuras vere, aŭ imaginarily, en paralela. Nun, estas ankaŭ ĉi koncepto en programado konata kiel eventoj, kaj ĉi tiu estas io ni ne vidos en C, la lingvo konita kiel C. Ni vidos ĝin al semestro la fino en retejo programado, kiam ni enkondukas JavaScript kaj la nocio de konstruaĵo retpaĝojn kiuj estas dinamika kaj interagi kun uzantoj. Do en ĉi tiu kazo, ni havas tre simplan ekzemplon de du sprites, knabo kaj knabino, ĉiu el kiuj havas siajn respektivajn fadenoj, sed iel tiuj du estas inter-komuniki per vojo de iu nomita eventoj. Do lasu min iri antaŭen tie kaj zomi en la knabo skripton, kiu aspektas kiel ĉi tio. Kiam verda flago clicked, eterne fari la sekvajn. Se la ŝlosilo Spaco, aŭ la spaco Trinkejo, estas premita, diru Kadro por du sekundoj, jen pure estetika sur la ekrano, iom parolado bobelo, sed tiam elsendas. Do elsendo estas alia Scratch peco kiu estas reprezentanto de klaso de funcionalidad en programado kiu permesas malsamaj programoj, malsamaj fadenoj, al interreligia komunikas, por iel sendos mesaĝoj, unu al alia. Pasante pecon de papero en klaso estas varo de la malalta teknologio ekvivalento. Do transdonita evento. Mi povas sendi ĉi tiun mesaĝon, kaj la vorto okazaĵo estas tute arbitra. Nulo kelkfoje havas tiujn guto montetaro, do mi ĵus eliris kun hazarda vorto kiel okazaĵo ĉar nun, kion la knabo faras kiam mi premas la klavon estas li dissendas ĉi evento. Kaj se mi rigardas nun la knabino skripton, ŝia skripto estas super simpla ĉar ĉio, kion ŝi bezonas fari estas ne agas kiam la verda flago estas klakis. Ŝi estas desegnita por ago kiam ŝi ricevas citaĵo, unquote, "Evento", kaj je tiu punkto, ŝi aŭskultas do por la tn evento denove kaj denove. Tuj kiam ŝi ricevas tiun eventon, ŝi tuj krii Poluso por du sekundoj. Kaj tiel vi povos eble dedukti de tiu ekzakte kion la sekva rezulto tuj estos. Lasu min klaku la verdan flagon. Nenio okazas ĉar mi bezonas fari kion? Spektantaro: Spaco Trinkejo. DAVID Malan: Spaco Trinkejo. Knabo diras Marco, knabino diras Poluso. Sed tio ne estas malfacile kodita per si mem. Tio estas inter-komunikadon inter skriptoj, do nun ni havas la kapablon fari eĉ pli kompleksa programoj kie tiuj du estas iel inter-komuniki. Do en kio direktoj ni povas utiligi ĉi tiun? Nu, en problemo aro 0, vere, la celo estas amuzi kun Scratch. Por la hacker eldono, vi anstataŭe amuzi kun pli malnaiva versio de Scratch nomis BYOB: Konstruu Your Own blokoj, sed la ideo estas la sama. Vi povos - Jes, tio estis intenca. Ĝi venis de Berkeley. BYOB estas la hacker eldono versio de ĉi tiu, sed ambaŭ demografio, normo eldono kaj hacker eldono egale, la golon en mano por la venonta semajno estas vere nur por plonĝi en profunda, ke via manoj malpuraj kun programado, kaj fari io interesa, fari ion interaga, fari ion artan, fari ion amuzan por fakte pruvi, ke per semajno fino, vi havos projekto, Ne nur por via unua CS50 pset, sed vi havos iom iun kiu povas montri en Annenberg al amikoj aŭ eĉ familio enŝutante ĝin al MIT retpaĝo. Kaj tiel kiel mi diris merkrede, ni atendas 90% de la klaso, ĝenerale, por servi la normo eldonoj. Rimarkas ke ekzistas ankaŭ ĉi elirejon por tiuj el vi, kiuj povus alimaniere trovi mem iom enuas kun la fundamentoj kaj vere volas plonĝi en kaj metio vizio vi jam havi kun antaŭa fono en tiu pli amika medio. Do lasu min eltiri supren unu alia ekzemplo, ke unu el nia antaŭa studentoj tie faris kaj diru iom iun tra kanto. Ke simile, kiel ĉi teatraĵoj, pensu pri kiel vi ĉirkaŭiras efektivigo de ĉi tiu programo uzi precize tiujn samajn konstruaĵo blokoj, iomete da pseŭda hazardo, kaj iom familiara kanto. Se ni povus levi la volumo malmulta? [MUZIKO - "Pluvas MEN" LA VETERO GIRLS] DAVID Malan: Estas tio por CS50. Ni vidos vin lunde. [Aplaŭdo]