Parolanto: Mi estas [inaudibles]. Kaj mi estas altranga ĉe Leverett Domo. Mi studas komputiko, kaj mi estas TF por CS50. Kiel novulo, mi eĉ ne havos portebla aŭ inteligenta telefono. Mi ne havis programado sperto. CS50 estis la plej memorinda kurso kiu Mi prenis ĉe Harvard ĉar estis lukto, sed estis vere amuza lukto samtempe. Kaj mi faris multe da mirindaj, permanenta amikoj, kaj mi lernis multe da vere aplikebla kapabloj. Mi estas nur tiel kontenta, ke mi ne forliberigos Mian manko de fono esti ekskuzo por mi Ne malbonuzu CS50. Mi estas [inaudibles]. Mi estas altranga ĉe Leverett Domo, klaso de 2014. Kaj mi prenis CS50. DAVID Malan: Do ĉi tiu estas CS50. Jen la fino de semajno nulo. Kaj memoru kie ni komencis la lasta fojo, estis kun tiuj lampoj, kiuj estis tiel populara, ke ni iris, kaj aĉetis iujn pli hodiaŭ. Do mi kredas ke tiu estos nia afero ĉi jaro - skribtablo lampoj se vi supreniru sur la scenejo, almenaŭ ĝis ni elĉerpis. Sed ni uzis tiujn revokon, por enkonduki la fundamentojn de reprezento de datumoj. Ni bezonis maniero por komenci reprezenti informo ene de komputilo. Kaj la plej simpla maniero por fari tion estis kun unu ingrediencon, elektro. Kaj la plej simpla afero vi povas fari kun elektro estas turni ĝin kaj ĝin. Lasu la elektronoj fluas aŭ ne. Kaj uzante tiuj du bazaj statoj, off kaj sur, aŭ falsaj kaj veraj, aŭ nulo kaj unu, ni komencis vidi, ke ni povus konstrui supren, en ĉi tiu kazo, kun lumo bulbojn, pli ol nombroj nur nulo kaj unu. Ni rakontis tiel alta kiel sep, ekzemple, lasta tempo. Sed ĉiuj ni devas fari estas subteni ĵetante pli kaj pli ampoloj en tiu problemon kaj, vere, ni povas reprezenti iu numero kiu ni povus eble volas. Nu, ni transiĝintaj rapide tiam Merkredo al ĉi bajto de volontuloj. 8 bitoj estas kion ni ĝenerale nomas bajto, tial jen ni havis ok volontuloj merkrede, kiuj kolektive estis reprezenti ok bitoj. Kaj kiam iliaj manoj estis supren, ili estis unu. Kaj kiam iliaj manoj estis malsupren, esas nulo. Kaj ni havis tiujn ulojn supreniru sur la scenejo kial? Kion ni povas fari kun ĉi tiu vico de bitoj? Por krei alfabeton. Ni povis konstrui sur supro de tiu antaŭa leciono lernita kaj reale komenci fari pli interesa informon kiu estas almenaŭ pli familiara al ni homoj. Kaj ĉi tiu tuj estos _recurring_ temo laŭlonge de 50, sed ankaŭ komputilo scienco pli ĝenerale, ĉi tiu ideo de layering, kie, je la fino de la tago, se vi vere komencis la basics kun komputilo, jes, ĝi estas nuloj kaj. Kaj malsupre, ke ĝi estas nur elektro. Sed ni tre rapide komencas preni tiujn malalta nivelo detaloj por donita kaj komencos mantelon sur supro de pasintaj laboris farita por ke ni, finfine, por Fine de la semestro kaj, vere, pli ĝenerale kiel komputikistoj kaj programistoj, ĝi povas fari iun vere potenca aĵojn por utiligante laboro ke ni mem faris kaj ankaŭ starante sur la ŝultrojn de aliaj. Nun ni rapide transiĝintaj merkrede el nur neceso reprezentas informon por voli fari ion per ĝi. Do kion ni difini algoritmon kiel? Serio de instrukcioj. Do estas serio de instrukcioj, nombro de paŝoj kiuj vi, homo, aŭ komputilo, pli tipe, ĉu ekzekuti unu post la alia por por atingi iun celon. Kaj ni havis kelkajn celojn lasta fojo, unu el kiuj estis por rakonti homoj en la ĉambro. Kaj alia tia ekzemplo estis trovi Mike Smith en telefono libro. Do vi povas memori ke mi disŝiris telefono libro en duono super cxi tiu finas trovante Mike Smith. La celo de tiu vida estis pruvi, denove, ke ni estis laŭvorte disŝiri tiun problemon en duono, la duono, la duono, kaj tre rapide irante de kiel 1.000 paĝoj al nur unu solan paĝon. Tiuj el vi kiuj maltrafis tion en Merkredo, mi pensis ke ni ludos denove iuj bildoj de kion vi maltrafis. Ni rigardu. [VIDEO reprodukto] -Tie ni iru. 1500 paĝoj, Nice pura linio, legitima larmo. [FINO reprodukto de vídeo] DAVID Malan: Por ke estis merkredo. Ni transiro, tamen, merkrede nun voli reprezenti algoritmoj en iu iomete norma maniero, ne nur priskribante ilin parole, sed klopodi esprimi ilin skribe aŭ en komputila ekrano tiel ke ni povis komenci plibonigi kaj modifi ili, kaj, eventuale, reale analizi, kiom ĝentilaj aŭ kiel rapide ili estis. Do ni enkondukis tiun nocion de _pseudocode_, kiu, lego de terminoj, estas kio? OK, vortoj. Ni iru iom pli profunda ol tio. Angla, certe, estas nur al kio fino? Vortoj kun kiu por ĝin krei aŭ por reprezenti algoritmoj. Do ne estas unu lingvo konata kiel _pseudocode_ en la mondo. Estas nur ke vi, en la angla, aŭ kion ajn via parolata lingvo estas, uzi speco de supraĵa skribmaniero transdoni ideon tre koncize. Sed ni vidos, ke, certe kun Esperanto _pseudocode_, kaj rezultas plej programlingvoj sin estas derivaĵo de la angla mem, ni trovos ke ekzistas iu normo manieroj reprezenti _pseudocode_ kaj ankaŭ programado kodo. Do kiel vi komencos vidi eĉ la plej simpla ekzemploj hodiaŭ, realigi tiujn sama ŝablonoj estos ripetas proksima semajno. Do _pseudocode_ ia de lingvo simila lingvo de programado. Kaj la unua ekzemplo ni vidis vide notita estis tiun. Ĝi estis nur tri paŝo programo, la celo de kiu devis kalkuli la nombron de personoj en dormejo spaco por ke video sur merkredo. Sed estis kelkaj interesaj aspektoj de tiu simpla programo. Kaj ĉi tio estos _recurring_ temoj. Do por tiuj, kiuj estas ne konas tiu, oni, ni enkondukis variablo. Kaj probable ĉiuj en tiu ĉi ĉambro estas familiara kun variablo en la kunteksto de algebro. Sed tie en programado, variabloj ili, oni, povas esti nomas ion ni volas. Ni estis uzante n kiel vendotablo. Sed ni povus uzi la vorton vendotablo, aŭ, kiel vi vidos, la plimulto de iu frazo, ke vi eble tiel longe kiel ĝi estas priskriba, sed estas vere nur stokado ujo. Estas eron de memoro, iu numero de bitoj, kaj ĝi varias de komputilo, kiel multaj bitoj estas ke formi tiu variablo. Sed ni povas meti valorojn en ĝi. Tiel nun, ni nur metis nombrojn. Sed ni povas meti realaj vortoj. Ni povas meti alineojn. Ni povas enmeti bildojn - nenion, vere, ni povas reprezenti kun nuloj kaj aĵoj, ni povas meti en tiu pli alta nivelo nocio de variablo. Do sufiĉe rekte plusendu tien. Kaj tio estas linio tiu. Sed ni tre rapide moviĝis el linio oni efektive faras ion kun tiu variablo. Kaj en linio tri, ni ĝisdatigis N. Ni incremented N. Sed ni povus skribi ĉi kiom ajn da manieroj. Sed eble la plej evidenta estas nur diri, aro N egalas al kion ajn N estas plus 1. Por ke estis nia pliigo. Dume, estis buklo. Kaj ĉi tiu, tro, estas probable bela intuicia. Ciklo estas nur io en programo kiu okazas denove kaj denove, iuj speco de ciklo. Kaj ĉi tiu ŝlosilo frazon ĉi tie, por ĉiu, estas vere tre komuna tra plej programlingvoj, inter ili ones ni vidos en la kurso. Anytime vi vidas la vorton, ĝi tipe transdonas la ideon, ke buklo, iu cikla, estas okazonta. Sed estas interese observi unu aliaj sintaksaj detaloj. La fakto ke tria linio estas fakte marĝeno esti batis la spaco trinkejo kelkaj tempoj estas intenca. Ĉar homa konvencio estas tia, ke, kiam vi faras ion denove kaj denove, en buklo, kiel komencita sur linio du, vi indent ion kiuj apartenis al tiu buklo ĝuste fari certe ke ĝi estas linio tri kaj ne, ekzemple, linio kvar aŭ kvin, se ekzistus linioj por aŭ kvin, kiuj estas parto de tiu maŝojn. Do tiu simpla deŝovon transdonas tiu baza ideo. Do ni aplikis tiun algoritmon, nun, al kelkaj ekzemploj. Kaj jen, ankaŭ, simpla ekzemplo en la reala mondo. Sed ĝi tuj estos reprezentanto de kiel vi irus pri provi vian posedi pli kompleksajn programojn. Vi provu kelkaj scenaroj, iuj reprezentantoj enigoj, kaj vidi, cxu vi preni la deziris eliroj. Do tiu ekzemplo havis du personoj sidis en la dormejo ĉambro. Maldekstre estas tiu sama pseŭdo-kodo. Kaj ĉi tiu estas ekrankopio el la tre lasta paŝo de la apliko de tiu algoritmo al tiuj eniroj, kie Estis du homoj en la ĉambro kaj, memoras, kiel ni tretas tra linioj unu, kaj du, tri, kaj du kaj tri kaj farita - de la fino de tiu algoritmo, ni havis ja kalkulis du uloj, kiuj estas en la ĉambro. Tial ni provis alian ekzemplon. Kaj ni diris kion se estas nulo homoj en la ĉambro? Ĉu ĉi tiu kodo ankoraŭ ĝusta? Kaj efektive estis. Ĝi simple tiel okazas ke linio du kaj, tiel, linio tri aŭ ne tuj ekzekuti. Ili ne tuj okazos tute ĉar ili estas simple ne aplikebla se tie estas nulo homoj en la ĉambro. Sed ne granda interkonsento. Linio unu inicializado N por nulo, tiel eĉ se nur unu linion de tiu programo fakte finas esti utila, ĝi ankoraŭ donas la ĝustan respondon, kiel indikita de la oranĝo nulo ĉe la malsupro. Sed tiam ni decidis ke estis speco de stulta algoritmo. Ĝi estis sufiĉe malrapida. Certe, mi povas fari du, kvar, ses, ok, dek, kiam rakonti homoj en ĉambro. Do ni tweaked la algoritmo, la _pseudocode_, diri, nun en linio du, por ĉiu paro de personoj en la ĉambron, procedi al, en linio tri, pliigo tra du en ĉiu ripeto. Por ke estus laborinta tie por ĉi tiu paro de personoj en la ĉambro. Sed tiam, se vi komencas pensi ĉi, kaj ĝi ne portas longe rimarki, atendu minuton ĉi estas tuj rompos, ĝi rompas je kio simpla kazo? Se tie estas tri homoj en la ĉambro aŭ, pli ĝenerale, kiam tie estas nepara nombro de homoj en la ĉambro, inkluzive de unu. Ni devus perdi tiun personon ĉi tie, ĉar ne ekzistas tiaj paroj. Do ni rapide direktis per anstataŭ enkondukante kion aldonan programado konstruoj al la pseŭdo-kodo. Do kondiĉo, ni nomas ĝin, aŭ branĉo. Kaj ĝi estas signifis transdoni, vide, la ideo de branĉo, forkon en la vojo kie vi povas aŭ fari tion aŭ, eble, ion alian. Kaj efektive, ni direktas ĉi tiun problemon aldonante linio 4, dirante, vere, ĉe la fino, se unu persono restas, tiam iru antaŭen kaj rigardas cxion speciala. Do vi ordigi de speciala okazo ili, tiel paroli, tiel ke nun ni povas manipuli ambaŭ para nombro da personoj kaj nepara nombro de personoj. Nun estas ajna nombro de manieroj Ni povis esti esprimita ĉi. Kaj sincere, mi ne povis jam estis eĉ pli nit postulema kiam ĝi venis al mia elekto de Angla por la _pseudocode_. Sed almenaŭ la spirito de la ideo estas transdonitaj. Se vi transdonis ĉi tiun kodon al amiko kiuj ne estas en CS, aŭ ĝi neniam prenis CS, prognozoj estas ili povis diveni, donitaj tri homoj en la ĉambron, kiel kalkuli tiujn personojn bazita sur ĉi tiuj instrukcioj. Kaj jen ĉio vere ni volas atingi kun _pseudocode_, iel normigi kiel ni iras sur reprezenti ideojn tiel ke ni povas komencis fari pli komplika aferon ankoraŭ. Do, kiu kondukas nin tiam, hodiaŭ, al reala kodo. Ni komencas plani hodiaŭ, kvankam en amika medio. Kaj tiam ni transiro tre rapide pli arkaikaj sintakso, sed kiu vi vidos, estas fundamente la sama kiel la ideoj vidos manifestita per tiu alia lingvo hodiaŭ. Ĝi simple tuj serĉos iom malsama. Do anstataŭ nur nomas ĉi tiun kodon, mi estas tuj estos iom pli precizan kaj diru, de nun, kiam skribante programo, vi skribas fontkodo. Estas speco de kiel _pseudocode_. Sed ni vidos ĝi ne estas speco de malfiksas kiam temas pri elekti la vortojn ke vi uzas. Kiam programado en lingvo, vi havas uzi la vortojn, la frazojn, la sintakso, ke aliaj personoj decidis reprezenti tiu aparta lingvo. Do pseudocodes estas ĝis vi. Reala programlingvo kiel C, kiel ni fine vidas, estas normigita de aliaj personoj. Nu do kiel ni iru pri skribado iuj fontkodo? Nu mi tuj iros antaŭeniras kaj fari ĉi tion. Mi tuj iros antaŭen kaj malfermi fenestron tie. Pli sur tiu proksima semajno. Sed ĉi tiu estas mekanismo nomata la CS50 aparaton. Mi kuras peco de programaro sur mia Mac, kvankam vi povas fari la saman aferon sur Vindoza komputilo, kiuj donas mi la iluzion kurante malsama mastruma sistemo tute dekstre ĉi tie en fenestro sur mia Mac. Mi ĵus plena projektita tiel vi ne reale vidi Mac OS nun. Tiu estas mastruma sistemo nomita Linukso. Ĝi estas tre populara. Estas tre rapida. Ĝi estas tre libera, kiu faris ĝin tre konvinka, speciale en la komerca mondo. Kaj pli sur tiu al la fino de la semestro kiam ni uzas Linukson sufiĉe por ttt programado kaj hosting de reala retejojn kaj projektoj. Do nun, nur scias ke tiu estas labortabla ke tio signifis por rigardi pigre familiara al Windows kaj Mac OS. Ĝi nur havas iom malsamajn nomojn kaj ikonoj por aĵoj. Sed tio estas la tn CS50 aparato, virtuala maŝino kiu, proksima semajno, vi infanoj estos kuri ene de fenestro en viajn proprajn Mac aŭ PC. Por hodiaŭ, mi tuj malfermos la plej simpla de programoj. Ĝi nomiĝas gedit. Kaj tio estas nur grafika redaktilo. Estas speco de kiel Microsoft Vorto, sed simpla. Estas speco de kiel teksto redakti aŭ notepad. Estas nur tre simplan programon kun kiu skribi vortojn sur la ekrano. Ĝi simple do kion okazas ke se mi savos dosieroj, ke mi krei kiam ĉi programo en speciala kromprogramo kiel. c, anstataŭ de. doc, aŭ. XLS, aŭ kion ajn vi konas, mi povas vere krei programojn uzante eĉ tiu simpla tekstoredaktilo. Do lasu min fari tion. Lasu min antaŭeniri kaj savi ĉi fajli unue kiel hello.c. Kaj denove, ĉi uzantinterfaco volo familiara al vi rapide. Sed por nun, mi nur tajpas en dosiero nomo. Mi tuj savos ĝin en mian John Harvard hejma dosierujo. Kaj nun mi havas ĉi langeto kiu indikas Mi ja redaktado dosiero nomata hello.c. Do nenio tro interesa ankoraŭ. Kaj nun ĝi estas tuj akiri sufiĉe kamufla. Mi tuj zomi, nur tial estas pli videblaj. Kaj mi tuj komenci tajpi inkluzivi stdio.h, int main, malplena, malfermita krispa streĉa, unu, du, tri, kvar spacoj de deŝovon, presita f, por presita io formatan, citaĵo unquote, "Saluton, mondo" backslash, n, proksime citaĵo, fermitaj parentezo, punktokomo, eniri Retropaŝo, Retropaŝo, Retropaŝo, Retropaŝo, fermita krispa streĉa - Mi planis. Bone tiel ĉi estas super simpla programon, vere, la programo kiu neniu dividu programado kun. Kaj ĉiuj faras, por ĝia tuta komplekseco, estas presi la ekrano, divenu kion? Saluton mondo. Sed ĝi ne estas sufiĉa nur verki programon. Do tiu estas kodo. Ĉi tiu estas fontkodo en lingvo nomata c. Ĝi savis nuntempe en dosiero nomata hello.c. Nun rigardu la malsupro de la ekrano tie. Pli sur ĉi, denove, en la semajnojn por alveni. Sed ĉi tiu estas kion ni nomas fina stacio fenestro. Estas palpebrumante, nigra kaj blankajn prompto. Ĝi estas speco de malnova lernejo interfacon al komputilo kiu ĝenerale ne uzi muson aŭ aliaj grafikaj elementoj. Ĝi nur uzas vian klavaron. Kaj mi povas tajpi komandojn en ĉi palpebrumante prompto. Kaj por la hodiaŭa intencoj, mi estas nur tuj tajpi la sekvan - fari saluton. Kaj tiu programo, fari, estas nur Programo kiu, en la reala mondo tiuj tagoj, ni estus duoble klaku. Sed en ĉi tiu interfaco por hodiaŭ, ni estas tuj tajpi lian nomon en ĉi prompto. fari saluton estas laŭvorte tuj faru por Mi programo nomata saluton. Kaj tuj fari tion per rigardado por dosiero, nur Implicite, nomata hello.c. Ĝi tuj supozi Mi volas C-programo laŭ sia naturo, pri tio kiel komputilo estas agordita. Do mi iras antaŭen kaj batis eniri. Mi vidas iujn kamufla eligo, sed ĉi fariĝos tro familiara antaŭ longe. Ĉi tio okazis por kuri tradukilo, pli sur tiu en momento, nomita Clang. Sed nun, mi havas nur alia palpebrumante instigas. Kaj mi povas antaŭeniri nun kaj tajpu dot slash, por neinteresa kialoj ni instruos vin revenu al proksima semajno - saluton. Do ĉio ĉi penado ĝis nun nur por skribi la plej simpla de programoj kiuj, kiam mi batis Enter, faras tion. Do mi skribis mian unuan programon. Do mi intence ŝovas amuza en ĉi tiu tre simpla programo por kelkaj kialoj. Unu, estas malfacile akiri ekscitita pri preni klaso se tio estas la fino ludo. Sed pli ol tio, ke estas multajn distrojn ĉi tien. La unua fojo vi lernas al plani, por tiuj el vi malpli komfortaj, kaj ecx mi, tie en la tago, kiam mi unue vidis iun kiel ĉi tio - vi povas speco de figuro kiu, bone, tiu estas en presita saluton mondo. Sed estas tiom distro. Estas tiel sintakso sur la ekrano kiuj metas sur la vojo de tre simpla, alie simpla, ideojn. Do kion ni faros hodiaŭ estas ni tuj metos flanken C kaj venu reen al tiu lundon. Kaj ni tuj uzi grafikan programlingvo nomas Scratch. Tio ĉi estas programlingvo, kiun mi aluditaj merkredon, ke okazas por permesi al ni fari la sama klaso de aĵoj sed turnas la okulojn, ĉar hodiaŭ, al la frizita krampoj, la krampoj, la punktokomojn, kaj ĉiuj tiuj stultaj distroj kiu alvenas en la maniero, en tiu unua tago, de iuj bazaj, sufiĉe interesaj ideoj. Do al tiu celo, mi tuj iros reen al mia labortablo super tie kaj enkonduki vin en la alternativo por ke programo, kiu tuj aspekti iom ion lumon ĉi. Tiel estas kiel ni tuj planas akcepti sama programo hodiaŭ - du puzlo pecoj ke, kiam interkroĉitaj kaj alklakis, diros al la mondo, saluton mondo. Do ni vere iras tien. Do mi tuj iros antaŭen kaj malfermi retejo konata kiel scratch.mit.edu. Kaj tio kondukos min al tiu retejo tie. Anticipe, mi ensalutinta en tiun retpaĝo kaj la unuaj problemoj kiuj marŝos vin tra kelkaj el tiuj paŝoj. Mi tuj iros antaŭen kaj klaku sur mia nulo dosierujo tie. Kaj tion tuj montros min iuj projektoj kiujn mi havas fakte kreis anticipe. Kaj ĝi rezultas ke ĉi grafikaĵo programlingvo ne nur tuj al ni programon trenante kaj delasante tiuj puzlo pecoj, vi eĉ ne bezonas specialan programaron. Ĝi estas ĉiuj enigita ene de retumilo tiel ke vi povas fari tion, en teorio, sur viaj komputiloj nun, kiel kelkaj el vi Povas esti, eĉ sen bezoni programaro kiel la CS50 aparato, kiu venos proksiman semajnon. Do mi tuj iros sur la supron angulo tie kaj alklaku Kreu. Kaj post momento mi iros akiri malplenan ekranon per kiu mi povas komenci programado en ĉi grafikaĵo programado medio. Sed ĉi tiu tempo, ĝi tuj estos multe, multe pli simple efektive fari tion. Do, en nur momento, kiam la Wi-Fi kunlaboru, ni nun havas tiun ekranon. Tiel rapida parola tour, sed mi kuraĝas diri, certe kiam vi plonĝi en la unua problemo aro, vi trovi ĉi ĉiuj tre atingebla kaj honeste intuicia. Sed ni pentri mensa bildo por nur momento. Do sub ĉi prompto dirante save ŝanĝoj, vi estas por vidi nulo. Tio ĉi estas sprite. Estas karaktero. Kaj li vivas sur kion ni nomas etapo, tiu granda blanka ortangulo sur kiu povas movi supren, suben, lasis, Bone, kaj do, vere, aliaj specoj de agoj. Dume, en la mezo de ĉi tiu uzanto interfaco, ni havas tutan faskon da enigmo pecoj. Kaj vi vidos, kion ili diros aĵojn kiel movi 10 paŝoj, plenumis 15 gradoj, punkto en certa direkto. Sed estas kategorioj de blokoj ĝis tie ankaŭ. Do, se mi iras al Looks, vi vidos ke ekzistas aliaj puzlo pecoj kiuj ŝajne rakontos ĉi cit al diri saluton, pensi, montri sin kaŝas sin. Se mi iros Sonoj, rezultas ekzistas manieroj ludi sonojn kiel meow, halti ĉiujn sonojn, ludi tamburon. Do, longan rakonton, tie estas tuta faskon da puzlo pecoj kiuj permesas al vi por diri al tiu kato, aŭ ajnan numeron de aliaj karakteroj, kion fari. Sed por fari ĉi tiu tuta okazos al vi bezonas komenci programado. Kaj ĉi tiu granda blanka skatolo, aŭ griza skatolo, sur dekstre mana flanko, ĉi tiu estas kie Mi tuj efektive treni kaj faligi tiujn puzlo pecoj. Tio estas mia celo teksto fenestro ekvivalento. Do mi tuj iros antaŭen kaj klaku Kontroli en la mezo. Aŭ pli ĝuste, lasu min eltiri sub Eventoj. Sub Eventoj benko, vi rimarkos malmultaj aferoj, kiuj estas intence kurbigita sur supro en tia maniero, ke ili probable ne interplektiĝas en la supro de la puzlo pecoj. Kaj tio estas ĉar ili demark la komenco de programo, la komenco de skripton, tiel diri. Do, se mi iras antaŭen kaj treni, kiam verda flago klakis super ĉi tie, kaj tiam mi volas ke tiu kato diri io, unue. Do mi tuj iros sub la aspektas panelo. Kaj mi tuj iros antaŭen kaj kaptas la saluti bloko, kaj trenas, kaj malfiksi, kaj liberigite tiel ke ĝi aŭtomate interlocks tie. Kaj tiam rimarkos mi povas klaki sur la teksto. Kaj mi povas nuligi ĝin por esti pli specifaj ŝatas, diru, saluton mondo. Kaj nun ni havas la programon ke mi asertas estas ekvivalentaj al tio multe pli arkaikaj programo implementado en C antaŭ momento. Se mi transiru nun al la maldekstra flanko, rimarki tie estas granda halto signo kaj granda verda flago. Lasu min zomi por klareco. Kaj kiam mi nun klaku ĉi verdan flagon, vi probable povas diveni kion tiu unua programo estas nun tuj faros. Do, ankaŭ, ni programado, sed ni ne efektive ekuzi enkaĉiĝis en iu de tiuj sintaksaj, minuto detaloj. Sed ni provu ion Iom pli interesa. Permesu al mi iri en mian Scratch dosierujo tie. Kaj fakte, lasu min lasu min malfermi apartan programon ĉi tie por nur momento, Maksimumigi tiu fenestro, Arkivo Open, kaj mi tuj iri en la hodiaŭa fonto dosierujo. Kiel ĉiam, vi trovos, hodiaŭ kaj antaŭen, ke ĉiuj de la hodiaŭa ekzemploj estas atingeblaj ene de la kurson de afiŝinto. Kaj mi tuj iros antaŭen tien kaj elpiku supren iom ion malsama. Ĉi tiu tie ĉi, por kiu Mi bezonas volontulo. Kiu ŝatus skribotablon lampo hodiaŭ? OK, kiom pri iu iom - vi estas je la fino? Venu malsupren. Nun, ĉu vi ŝatus partopreni, aŭ nur diru komencu per la skribtablo lampo? Vanessa: [inaudibles]. DAVID Malan: okej. Bonega, kio estas vi nomo? Vanessa? Davido. Nice to meet you. Do venu supren kaj Vanessa la irante preni la kontrolon de mia klavaro por nur momento. Kaj kion mi faris ĉi tie, nur por momento la sake, kiel mi rimarkis la Wi-Fi estis iom malrapida, Scratch, la programado medio kiu ni estas uzante, povas ankaŭ esti elŝutita kaj kuri sur via loka komputilo. Do kion mi faris, anticipe de konferenco, en kazo ke okazas, estas mi elŝutis ĉiuj dosieroj ni volis ludi kun tiel ke ili povas kuri iomete pli rapide ĝuste ĉi tie en mia tekkomputilo. Tial do, nun mi vidas Mac-specifan interfaco. Do mi tuj iros antaŭen kaj malfermu ĉi tiu. Mi tuj iros antaŭen nun kaj plena ekrano la fenestro. Kaj kiel vi vidas, ni povas tre rapide, kiel tiu studento faris, unu el viaj antaŭuloj, iri de saluton mondo al multe multe pli konvinka apliko. Do jen la instrukcioj. Ho, kaj ni havas unu alia afero. Mi pensis ke estus amuza, de kiam, normale, ni povas ruliĝi ĉambroj ĉi vojo. Mi pensis ke estus amuza se, Vanessa, ni povis vidi la mondon per viaj okuloj. Do jen ni havas iujn Google Pokalo. [Mirigis GASPS] DAVID Malan: ni nur povas doni for skribtablo lampoj hodiaŭ. [Ridado] Do mi cue ĉi supre. Bone, do tuŝi ĉi. OK, Pokalo, gravuri video. Bone, Vanessa? Nun, kiel flanken kiu havas nenion fari kun Scratch, se vi rigardas iomete supren kaj dekstren, vi vidos la laŭvorta vitro, kaj vi devus vidi iom rektangula fenestro. Vi devus vidi ĉiujn viajn samklasanoj esti filmado ĝuste nun? Jes. Vanessa: Jes. DAVID Malan: okej. Por ke estas bone. Ni liberigas tiun materialon poste. Nuntempe, turnu vian atenton al la ekrano tie. Kaj kion via antaŭulo faris estas metu iom instrukciojn sur la ekrano nur uzante farbo programo. Do vi iras al, en momento, premu la spaco trinkejo por komenci. Kaj tiam iuj puzlo pecoj iras komenci movi supren la ekrano. Kaj vi volis bati la sagoklavoj, nur kiel en reala DDR, en konsento kun aĵoj tegante supren kun tiuj sagoj. Vanessa: okej. DAVID Malan: Vi ludi ĉi antaŭe. Vanessa: Jes. DAVID Malan: Bone, Vanessa, antaŭeniri kaj forportu. [MUZIKO - KAYNE OKCIDENTO, "pli forta"] [Aplaŭdo] DAVID Malan: Do ni nun paŝon al tio. Do klare, ke estas la fino ludo. La fino ludo ne estas saluton mondo. Sed vi ne devas nepre fari aferoj kiuj estas tiel interaga. Vi povas ankaŭ fari kuraĝigo. Do ekzemple, alia de via posteuloj faris tiun programon tie, kiu rakontas historion pli ol ĝi implementado ludo. Do lasu min antaŭeniri kaj malfermu ĉi tie programo en nia sama fonto dosierujon de hodiaŭ. Ĉi tiu alvoko, kaj ni komencu kun, biskviton amo. Kaj ne fari ĉi tro akademiano, sed, kiel vi rigardas ĉi tiu, opinias mem kiu el tiuj simplaj programado konceptoj ni parolis pri tiel multe - variabloj, kaj maŝojn kaj kondiĉoj, ne via antaŭulo probable uzas nur apliki kelkaj el la visualizaciones. Vi vidas tie. Do mi donos al vi A kuketon amo. [MUZIKO - VERDA TAGO, "Holiday"] [CRASH] [MUZIKO - la testudoj, "HAPPY KUNE"] DAVID Malan: Bone, do tie, ni havis kuketon amo. Sed eĉ tie - [Aplaŭdo] DAVID Malan: Bone, eĉ tie, pensi, kiel tiuj koroj iris de la fundo al la supro de la ekrano, tie estis efektive iom de hazardo okazas. Kaj efektive, ni vidos, ke eĉ en la simpla de medioj, kiel Nulo, kiel en C, oni povas generi hazardaj nombroj, aŭ la iluzio de hazardaj nombroj, por ke la ludo estas iom pli interesa ol ĝi povus se vi havus absolute malmola koditaj ĉion. En la movado, kiun vi vidas, ekzistas ia respondemo. Tuj kiam la gingerbread viro tuŝas la gingerbread virino, ŝi ŝajnas malproksimigi. Kaj do, ja, vi povas efektivigu, plej programlingvoj, la nocio de eventoj, per kiu, se unuflanke tuŝas Aliflanke, tio povas provoki iun de via fontkodo al fakte ekzekuti. Vi povas aŭskulti por tia aĵoj en la ekrano. Do ni prenu rapida ĝiras, tiam, de kelkaj el la blokoj ni povas uzi por atingi iun el ĉi tiuj celoj. Do jen kion ni nun voki komunikaĵo. Komunikaĵo okazas al esti purpura Nulo, iom io tiamaniere, sed tio estas arbitra. Komunikaĵo estas nur puzlo peco aŭ, pli ĝenerale, instrukcio, ke rakontas la komputilon fari ion, komunikaĵo. Do jen simpla specimeno. Diru saluton mondo. Alia povus atendi unu sekundo. Do tiu enigmo pecon, kiu estas subtenata en Scratch, ni lasu vian karakteroj paŭzo por kelkaj numeron de duaj. Ĉi tio, ankaŭ, estas nur deklaro. Ĉi tie sekva, ni havas alian pli interesa, ludi sonon meow, kaj la malgranda sago signifas ke en Scratch, ĉi tiu estas falmenuo. Do vi povas importi sonoj. Vi povas registri sonojn kaj fari aliajn amuzaj aferoj en Scratch. Kaj, ankaŭ, kvankam, fine de la tago, estas nur deklaro. Sed nun ni enkonduki pli interesa peco, kiu scias kiel Bulea esprimo. Ĉefurbo B, nomis post membro nomata Bool. Kaj Bulea esprimo estas nur enigmo peco aŭ, pli ĝenerale, peco de informo kiu estas ĉu vera aŭ malvera - unu aŭ nulo, jes aŭ ne. Do estas nur unu el tiuj, du kontraŭuloj. Do unu tia Bulea esprimo en la mondo de Scratch aspektas kiel tiu blua enigmi peco. Kaj ĝi estas demandi demandon, muso malsupren, kaj tio povas ĉu esti, de Kompreneble, vera aŭ malvera. Do kun ĉi tiu enigmo pecon en Scratch, bone, vi povos detekti se enigmi se la muso estas, fakte, estante tenis malsupren de la homa interagantaj kun via programo. Ĉi tiu estas iom pli abstrakta, sed tiuj du blankajn skatolojn estas nur por nombroj. Do vi povas fari tion kiel estas tiu nombro malpli ol la aliaj? Kaj se jes, Scratch kondutos unu maniero aŭ alia. Ĉi tiu estas iom pli grafika. Ĝi estas se la sprite, se la kato, ĉar Ekzemple, estas reale pri la muskursoron. Do se la malgranda sago kapo ŝvebis super la kato, tiam ĉi tiu enigmo peco taksos al vera. Estos vera, en kiu kazo, se vi uzi ĉi Bulea esprimo, kiel ni instruos vin vidi en momento, en branĉo, vi povas ĉu fari tion, aŭ vi povas fari tion, multe kiel ni havis kondiĉo ke kontrolis, ĉu estas pli lasta persono en la ĉambro? Se tiel, aldonu unu. Alie, ne maltrankviliĝu for. Do Bulea esprimo povas ankaŭ esti kaj-ed kune aŭ or-ed kune. Do vi povas kombini Buleaj esprimoj kaj diru tion kaj tio devas esti vera por la tutan aferon al esti vera. Kaj ĉi tie estas pli reala mondo ekzemplo. Se vi uzas CS50 Kursoj fari kurson butikumi, tiuj ĉekon skatoloj tie, kie se vi kontrolu ke skatolo sekva al kursoj, kiuj diros, jes, nur montras min kursoj por kiu la Q valoro estas 4,5 aŭ supera. Se vi malmarku gxin, ne, ne maltrankviliĝu pri tio. Aŭ simile, dekstre, cxu ne Konflikto Kun Kursoj mi Prenante, tio estas aŭ vera aŭ malvera. Estas nur Bulea esprimo. Do tiu tuta tempo, kiam vi jam uzata retejojn kun ĉeko skatoloj, vi estas nur toggling la ekvivalento de Bulea esprimo por sezonoj. Do en kia formo vi uzas ĉi tiujn? Nu, en Scratch, ni vidos en momento ke estas kondiĉoj kiuj aspekti kiel ĉi tio. Kaj tio estas speco de saĝa ĉar multe kiel en _pseudocode_, ni dentado la varon de U-forma puzlo pecoj, signifi ke io ene de tiu U estas tuj ekzekuti, aŭ ne, depende de kie ĝi estas. Do se Bulea esprimo, tiam kion ajn estas ene estos get ekzekutita. Dume, tie estas se / alia bloko. Do se vi volas branĉo kiu iras ĉi vojo aŭ kiu, Scratch donas al ni tion. Kaj per tiu logiko, nun, eĉ se tiu enigmo peco estas klare tro malgranda al kojno io en ĝi, la nulo puzlo pecojn, ili estas nur tuj kreskos. Kiam vi treni kaj faligi super io, ĝi nur kreskas por ĝustigi kion estas vi provas fari. Do ni povas preni du el tiuj rajtoj kaj fari tri maniero forkon en la vojo tiel kiun oni aŭ fari tion, aŭ ke, aŭ tiu alia afero nur nestumado ilin en tiu vojo. Kompreneble, se vi faros tion tro multa, ĝi komencas akiri malbela. Sed je tiu punkto, vi estas vere probable ne programado tre bone. Kaj por ke estos _recurring_ temo ankaŭ, ke de stilo. Ĝuste kiel bone vi vere formati via kodo? Aŭ kiel bone vi desegni via kodo? Sed pli en kiuj en la estonteco. Kaj nun ni havas maŝojn. Estas agrabla por ĉiam buklo en Scratch kiu laŭvorte signifas ke - fari kion ajn estas ene de ĉi denove, kaj denove, kaj denove. Vi povas esti pli konkreta, kaj diru: fari la sekva 10-foje. Vi ankaŭ povas uzi variablojn. Vi povas veni kun ajna nomo en tiu iom gutigas kaj diros, donu al mi variablo nomis n kaj starigis ĝi egalus al iu valoro. Kaj tiam vi povas havi funkcioj. Sed pli sur tiujn en nur momento. Lasu min reiri al mia Skrapi interfaco. Kaj lasu min iri antaŭen tiu tempo. Kaj ni iru antaŭen kaj malfermu, diru, ekzemplo de - ke estas iom pli interesa. Permesu al mi iri antaŭen, kaj, fakte, lasu min nur faros ĝin mi mem. Mi ne bezonas malfermi ĉi tiu. Permesu al mi iri al dosiero, Nov. Mi tuj iros al Eventoj. Mi tuj iros al kiam verda flago klakis, kaj mi tuj iros al Sono. Kaj mi tuj treni kaj lasi ĉi enigmo peco, ludi sonon meow. Ĝi picaportes kune. Kaj nun se mi klakas la verdan flagon - [Meow SOUND] DAVID Malan: Adorable. Bone, do nun ni faru ion iom pli logike nur por pruvi ke ni povas, por nun. Mi tuj unlatch tiu de tiu ulo. Mi tuj iros al Kontrolo. Kaj mi iros por rabi kondiĉo. Do, se io tiam. Do jen kiel aspektas tie. Do mi bezonas Bulea esprimo. Kaj lasu min antaŭeniri kaj diru: lasu min iri al Operatoroj. Mi tuj fari ion iomete Mathy, nur por piedbatoj. Mi tuj iros ĉi tien kaj diros, se io estas malpli ol iu alia, antaŭeniri kaj fari ion. Do nun, vi scias kion, hazarda bloko. Do rimarki kiel, se mi ŝvebi super ĉi aferon ĉi tie, tio estos kapti en tie. Do nun, avizo, mi komencis fari io jam pli logike interesa. Se hazarda nombro inter 1 kaj 10 estas malpli ol, ni diru ses. Se mi elektas ses, kiu esence pere, faru la sekvajn kun 50% probablo. Estas kiel klakanta monero. Nun, mi povas fari ion kondiĉe. Kaj ke iu kiun mi tuj fari estas ludi la sono. Do nun, kiam mi klakas sur la ekrano flago, estas kiel ĵetanta monero. [Meow SOUND] DAVID Malan: Estis kapoj aŭ whatnot tie. Ni faru tion denove. [Meow SOUND] DAVID Malan: Kapoj denove. [Meow SOUND] DAVID Malan: Kapoj denove. Phew, OK. Vostojn tiu tempo. Do 50% de la tempo, se ni tion malfinie longa, ni ricevos 50% meows kaj 50% silentigas. Do, nur bazaj konstruaĵo bloko kiu permesas nin fari tion. Sed tio estas speco de teda, ke mi devas teni klakante ke butonon. Do ni simple treni kaj ĵeti ĉiuj el tiuj for. Se vi trenis ilin en la mezo, ili devos nur forigi sin. Permesu al mi iri kontroli. Permesu al mi iri al ĉiam. Kaj ĉi tiu fojo, mi faros io minorly ĝena. [Ridado] DAVID Malan: Kaj lasu min iri antaŭeniras kaj fari kontrolon. Atendu dua, nur tiel ĝi ne estas tro kradon. [Meow SOUND] DAVID Malan: Tio ne estas natura. Akcepti. [Meow SOUND] DAVID Malan: Kaj avizo kio, nice pri Scratch, por tiuj el vi, kiuj havi antaŭan programado sperto, vi Ne necesas komenci kaj ĉesi. Vi ne bezonas kompili. Vi nur ŝanĝi ĝin, kaj la programo adaptos dinamike. Do tiu estas prenanta iom interesa. Sed ni prenu unu pasxon plu. Lasu min kaj akiri senigi de tiu programo. [Meow SOUND] DAVID Malan: Tion ni instruos vin voki cimon en Scratch. Ĝi ne devus konservi farante tiun sonon. Do ni ni diros al li halti. Bone, do nun mi estas tuj iru en - Mi permesos MIT scias. Ni transiru tie Forever. Kaj nun, mi volas fari ion denove kaj denove. Mi tuj iros en Kontrolo. Kaj vidu, mi tuj treni mia se kondiĉo tie. Do nun rimarkas la logiko. Kiam la verda flago klakis, faru ion por ĉiam, sed nur fari tion iun se tiu alia afero estas vera. Mi tuj iros al, ni diri, detekti. Kaj mi tuj iros antaŭen kaj elekti tuŝi kaj faligi ĝin tie. Tio estas Bulea esprimo. Kaj nun, rimarki, en ĉi tiu guto malsupren menuo, ekzistas iu antaŭdifinita valoroj. Do mi povas diri, ĉu vi tuŝis la rando de la ekrano? Aŭ vi pri la muskursoron, la sago sur la ekrano? Do mi tuj faros tion. Kaj se jes, tiam mi tuj iros antaŭeniris kaj ludi sonon meow. Do nun mi specon de havi la Komence de la ludo - adorable ludo. [Meow SOUND] DAVID Malan: OK, adorable, kalesxon ludo. Lasu min atendi, diru, dua tie. Nun ludi denove, klakante la verda flago. [Meow SOUND] DAVID Malan: Do nun estas kiel Petting kato. [Meow SOUND] DAVID Malan: Bone, nun ĉi unu mi fari anticipe. Tre malfrue, ĝi alvenas speco de facila fari stultaj aferoj. Do mi iros tien. Diru, kiu estis Pet la Kato. Ni nun malfermi Ne Pet la Kato. Nun, se ni ludas ĉi tiu, vi povas diveni, se vi estas rigardante la ekrano - [Meow SOUND] DAVID Malan: Nun, se mi maskoto la kato [LION'S Roar] DAVID Malan: Do ne vere maskoto la katon en tiu kazo. Do nun ni nur devas ekzemplo de branĉo kiu okazas en du direktoj. Nun lasu min antaŭeniri kaj malfermi alian ĉi tie. Ĉi tiu, ankaux inter niaj vikitekston kodo dosierojn por la tago. Do mi revenas al mia Fonto dosierujon kaj iru en, ni elektos tiu knabo tie kaj vidu kio estas malsama. Wow, bone, do nun ĝi iĝas iom pli kompleksa. Kaj antaŭ ol ni vidu kion tiu ulo faras, ni provu konkludi, de la programo ĉe la dekstra flanko. Kaj nun nenio klare permesas nin havi multnombraj skriptoj, multnombra programoj asociita kun unu sprite, kun unu signo, kaj, ŝajne, ili estas ambaŭ tuj kuri en Sklava. Ĉar ambaŭ de ĉi tiuj programoj komenciĝas kun kiam verda flago klakoj, ĉi tiu estas sugestante al pli progresinta temo, kun kiu iuj el vi povus esti familiara, konata kiel threading, aŭ multi-threading. Rezultas, longan rakonton, komputiloj hodiaŭ povas esence fari multnombrajn aferojn samtempe. Aŭ ili povas fari unu afero je tempo tiom rapida ol vi eĉ ne rimarkas, ke ĝi estas fakte faras unu afero je tempo. Sed nuntempe, ni supozas, ke ambaŭ tiuj programoj tuj ekzekuti ĉe la sama tempo. Kaj rimarki, ambaŭ el ili havas ĉiam konfuzis pecoj. Do ili estas tiel tuj subteni kurante ĝis mi batis la ruĝa halto signo. Do kio ili intencas fari? Maldekstre mana flanko, mi ŝajne deklari variablon nomata silentigita. Do mi ne nomis ĝin iu kiel enuiga kiel N. Mi nomis ĝin silentigita ĉi tempon por transdoni signifon. Mi starigis gxin egalaj al nulo. Ni pensas ke kiel Falsa, aŭ ni pensas ke tiel falsa. Nun, por ĉiam faru la sekvajn. Se la klavaro estas spaco stango estas premita, tiam se silentigita egalas nulo, tiam ŝanĝu silentigita al egala unu. Alie, turnu silentigita al nulo. Do logike, kvankam tio estas tuta faskon da puzlo pecoj kiuj estas nur diris, kiam mi batis la Spaco trinkejo, kion mi faru al la variablo vokis silentigita? Ŝanĝi ĝin de unu al nulo, aŭ nulo al oni. Jen ĉio. Do estas kiel igi malpeza ŝaltilo aŭ malŝalti kaj memorante, kun variablo, ke mi faris tion. Dume, en la dekstra flanko, en lego de terminoj, kio estas la celo de la skripto dekstre? Lernanto: Por ludi la maro leono sono. DAVID Malan: Ludi Maro Leono sono, se li ne estas silentigita per naturon de tiu variablo. Do ni dividante stato, por tiel diri, dividi informojn trans tiuj du skriptoj ĉar, rimarki tie, ni estas ĉiam faras la sekvajn. Se silentigita estas nulo, do se ĝi ne estas silentigita - se silentigita estas falsa, do ludas ĉi Maro Leono sono. Kaj pensu al vi mem, hi, hi, hi, por du sekundoj, atendu momenton, kaj poste kontrolu denove. Do, se ni iru nun ĉi tie al la maldekstra, al kie tiu ulo estas, kaj batis la verda flago, [SEA LION SOUND] DAVID Malan: Kie estas la limo faras tiu akiras vere tedas? Pro tio nur daŭrigi eterne. Do kelkfoje, senfinaj cikloj, por tiel diri, estas intenca. Sed en tiu kazo, kiam mi batis la Spaco trinkejo, li haltas. Nun la programo ne quit. Ĝi estas ankoraŭ kurante en tiuj cikloj. Sed se mi alvenas la spaco trinkejo denove - [SEA LION SOUND] DAVID Malan: Li iras por repreni tien, kie li lasis. Do ekzistas unu vojon por ni fari io denove kaj denove, sed, ke tempo, nur kondiĉe. Nu, dum ni estas en ĉi tiu vejno de fari tion denove kaj denove, lasu min iru en alia tia ekzemplo tie. Ĉi tiu ni vokos rakonti ŝafoj. Kaj rimarki kio estas tiu ulo faras. Ĝi estas fakte iom pli kiel la _pseudocode_ ni ludis kun la Merkredo, per kiu li metas iujn vendotablo, pensi pri ĝi kiel N denove, al nulo, li ĉiam faras la sekvan. Li diras la vendotablo valoro por unu dua, atendas la duan, kaj poste ŝanĝas la nombrilo de unu. Kaj en ĉi tiu kunteksto, ke nur signifas pliigoj ĝin. Do li aldonas al ĝi. Do tiu estas laŭvorte - ĝi ne estas sufiĉe kion ni pensas de kiel rakonti ŝafoj. Ĝi estas la sxafoj farante la kalkula, ĉiam, supren de nulo. Do ni povas fari similajn aĵojn tie, logike. Sed nun mi provu purigi kelkaj el tiuj aĵoj supren. Lasu min nun en simpla ekzemplo kie nia kato estas ĝuste tuj komenci tusado. Bone, do tien ni havas tuson 0 - komputikistoj komenci rakontante de 0. Do tiu kato estas ĝuste tuj tusadi trifoje. Kaj jen kiel mi implementado tio. Kiam verda flago klakis, tuso, atendi, tusi, atendu, tusi, atendu. Kaj mi faris tion nur trenante kaj delasante puzlo pecoj. Aŭ se vi komencas toquetear Scratch, vi vidos vi povas reale duobligi pecoj tiel, ke vi povas fari aĵoj pli rapide sen treni kaj delasante ad nauseum. Sed ni ne estas sur la bona vojo tien. Ĉar kiel mi faru al li tusi kvara horo? Nu, mi povus ordigi de malsupreniru tie. Mi povus duobligi kaj poste alglui ĉi tien. Kiel mi fari lin tusi kvina horo? Nu, kopii kaj almeti denove. Aŭ treni guto denove. Kaj tre rapide, tiu programo komenciĝas akiri vere, vere superflua, vere longa, sed vere neinteresa. Sed estas maniero por purigi ĉi supre. Kio estas la evidenta maniero por purigi ĉi kolektis? Bone, do ni povus efektive vere iri ekstere kaj, kiam vi frapis la spaco trinkejo, havi lin tusi. Sed se mi nur volas fari ion ripete, memoru, ke ni ja havas iuj kontrolo konstruas. Lasu min movi tiun el la vojo, iru laŭ Kontrolo. Lasu min fari ripetas, diri, trifoje. Kaj nun mi volas ŝteli iom de ĉi tiuj puzlo pecoj. Lasu min kapti tiun ĉi tien. Lasu min ĵeti tiujn for kompleta. Kaj nun, mi havas pli bonan desegnis programon. Kial? Se mi volas ŝanĝi la nombron da fojoj tiu kato coughs, ĉiuj mi devas ne estas ŝanĝi unu variablo, aux unu valoron, pli ĝuste de tri, kvar, aŭ kvin aux ses. Aŭ mi povus fari ion kondiĉe, inkluzive, kun la spaco bari, se mi volus. Do tio estas ĝenerala principo. Kiam vi komencas kopii kaj alglui kodo, ĉu ĝi estas en Scratch, aŭ en C, vi faras ion erara, plej probabla. Aŭ almenaŭ, unufoje vi jam superis iujn racia nombro de kopioj kaj pastoj, vi probable fari ion malbonan. Sed vi scias kion? Mi ne vere ŝatas tion. Ĉi tio ne estas la plej pura dezajno. Mi deziras esas puzlo peco nomita tusi ĉar tiam mi ne devas apliki ĉi mi mem, la antikva maniero, por esti diras, kaj atendas - kion se ili nur tuso puzlo peco. Nu, mi efektive povas fari tion. Permesu al mi iri sub pli blokoj, klaku Faru Bloko, kaj nun mi ricevas tiun fenestro tie. Mi tuj nomos tion tuso. Mi tuj iros antaŭen kaj alklaku OK. Kaj nun avizo, mi alvenas nova startanta peco kiu estas kurbigita en la supro. Kaj kion mi faros kun ĉi tio, mi tuj nur ŝteli tiujn blokojn. Mi tuj metos ilin ĉi tien. Kaj nun, kun ĉi tiuj tri pecoj, mi havas implementado kion mi tuj vokos funkcio, aŭ proceduro, aŭ iu de vi eble scias kiel metodo. Malgravaj diferencoj inter la vortoj. Sed nuntempe, ni nur nomas tiun funkcion. Tiu estas nur nova enigmo peco. Nun estas implementado kiel ĉi tio. Sed rimarki ke Scratch donis al ni fizika reprezento de tiu tuta bloki ĉi tie. Do nun, mi povas simple treni ĉi tie, diri, ripeti tri fojojn, kaj kio okazos nun, kiam mi ludas tiun skripton, estas nur unu programo ruliĝas samtempe. Ekzistas nur unu kiam verda flago klakis. Sed tio purpura bloko nomita tuso estas efektive dirante Scratch, ĉiu kiam vi vidas ke puzlo peco, reale ekzekuti tiujn paŝojn, ke mi okazi apliki permane. Do jen speco de neta. Sed nun, supozu, ke mi decidis, mi ne volas ke tiu kato nur tusadi. Mi volas ke li povos terni tiel. Nu, kiel ni povus iri apliki ternas? Nu mi povis sufiĉe multe fari la samon. Mi povus fari alian bloko. Mi povis nomi tiun ternon, klaku OK. Tiam, ĉi tie mi povis efektive esti, lasu min duobligi tiun - kaj tie estas kie vi devus sentas vi probable ne fari ion en la plej bona maniero. Mi povus diri ion kiel, achoo, por unu sekundo. Atendu unu sekundo. Nun mi havas novan bloko nomita ternas. Kaj efektive, tie ĝi estas. Sed tio, ankaŭ, devas komenci senti - eble ne la unua semajno de klaso, sed por la dua - nur iom superflua. Klare, ekzistas iuj redundo tie. Do mi proponas, male, ke ni rafini ĉi tiu difino kiel sekvas. Lasu min iri al mia dosiero menuo. Mi ne tuj por savi ĉi tiun version. Mi tuj iros en unu el mia premade dosierojn tie. Kaj mi tuj iros antaŭen kaj malfermu tuso 2. Whoops kiu estis tuso 2. Lasu min kaj malfermu tuso 3, kiu estas tiu fonto dosierujo. Tusi 3 kaj rimarkos - ho, mi diris la rakonto en la malĝusta ordo. Permesu al mi resaniĝos de ĉi tiu rakonto. La rakonto mi volis diri ekstremaj kun tuso 4 - tie ĝi estas. Do kio se mi, anstataŭ, difini pli granda enigmo peco nomita difini, diru vorton n fojojn. Sneezing estas justa, ŝajne, en Scratch, achoo. Do ni esprimas ĝin kiel vorton, nur ĉar tio estas la limigo de la programo. Kaj tuso estas [TUSO], sed tuso, C-ho-U-G-H. Do tio estas nur du malsamaj vortoj faras, esence, la sama aĵo. Do mi efektive povas fari nova bloko ŝatas tion. Mi ne uzis tiun menuon eblo antaŭe. Sed kiam vi alklakos Faru Bloko, vi povas elekti iujn eblojn. Kaj vi povas diri ke tiu bloko reale Necesas iom enigoj, alie konata kiel argumentoj, aŭ parametroj, tiel ke vi povas modifi la konduton de via bloko. Do kion mi faris antaŭ momento estis Mi nomas ĉi tiun blokon Diru. Kaj tiam mi diris, ĝi prenas ŝnureto enigo. Kaj nun rimarkas, implicite, diras kordo 1. Kordo estas nur vorto, aŭ frazo, por niaj celoj. Sed mi simple tuj metis iom lokokupilo teksto ekzistas, ĝuste kiel en TTT-ejo, kiam vi vidos salutnomon, aŭ pasvorto, kaj poste ĝi malaperas vi ektajpu. Tio estas ĉio, kio estas. Kaj nun mi iras al aldoni numeron enigo. Kaj mi tuj nomas tiun n - sed tio estas sufiĉe arbitra. Kaj tiam nur etiketo, nur por fari tiu bloko iom pli mem klarigan - tempoj, jen kion mi ĵus faris. Kaj la fina rezulto estas ke mi ricevas bloko kiu aspektas kiel ĉi tio. Kaj nun rimarkas, mi uzas ripeto bloko. Sed anstataŭ malmola kodigo tri, mi estas trenante kaj delasante n en tie do mi povas parametrize la funkcio. Mi povas fari ĉi tiun funkcion faras iun malsama nombro da fojoj bazita sur tiun valoron. Kaj rimarki, diru, ĉi tiu estas kion mi faris, ĉi tie, se mi treni vorto, mi povas diri ne malmola koditaj vorto, sed kio ajn estas pasis en unu por la dua. Dume, kiel mi re-implemento tusi? Mi anstataŭ difini tuso kiel dirante tuso n fojojn. Do mallonge, mi iros tra ĉi rapide, sed la baza ideo estas tiel frue kiel vi komencos vidi en via programo ke, atendu minuton, mi faris iu sufiĉe ŝatas tion antaŭe, mi povas faktorigi iun komunan funkciojn? Ĉu mi povas malkomponi kion mi faras en kelkaj bazaj ideoj? Tio estas kion ni faras tie ĉi. Kaj mi plata tion, vide, sur supro de unu la alian ĉar ĝi estas atesto, ke ideo de komencante per duuma, tuj ASCII, fari grafikajn programojn, ia layering ĉiufoje kompleksaj ideoj pri supro de unu la alian. Sama ideo tie. Mi komencis de nulo, apliko tusado, tiam rimarkis tuso estas vere nur diras ion. Do mi anstataŭ apliki la nocio de diri ion. Kaj sur supro de tio, mi povas apliki achoo, aŭ tuso? Kaj ni povus fari pli tiaj variantoj ankoraŭ. Tuj kiam de tiu baza principo, Ni povas komenci fari ĉiufoje kompleksaj programoj. Permesu al mi malfermi ĉi tiu. Ni povas vere havi multoblajn koboldoj interagante sur la ekrano samtempe. Se mi iras al mia fonto dosieroj kaj ekpreni unu nomita Fadenoj, memoru, ke fadeno estas nur vere la kapablo de du skriptoj kuri apud flankon ĉe la sama tempo. Rimarku nun, havas ambaŭ birdo sprite kaj kato sprite, kiuj ambaŭ havas siajn proprajn skriptojn. Do rimarki, kiam mi premas la kato, mi alvenas tiuj skriptoj. Kiam mi klakas la birdo, Mi alvenas tiuj skriptoj. Do ĉiu el tiuj infanoj havas sian propran programoj. Kiam mi nun klaku la verdan flagon, rimarki ke tio, kion tiu programo faras estas havas la kato, nekredeble malrapide, persekuti la birdo. Sed la kato havas la avantaĝon de havi estis planita en tia maniero, ke negrave kie la birdo estas, la kato iras al li. Ni povas ludi tiun ludon multe pli rapida. Do, se mi estas sur la kato, rimarki ke mi estas uzante, diru movi unu paŝoj. Ni havas lin movi kvin ŝtupoj ĉe tempo, do kvin punktoj samtempe. Permesu al mi alklakos ludi. [LION'S Roar] DAVID Malan: Bone, ni nun povas vere donas la katon la avantaĝon. 10 paŝoj samtempe. [LION'S Roar] DAVID Malan: Bone, do tre rapide, metas iom avantaĝo por la kato. Sed mi skuos mian manon en iuj de la detaloj. Sed la kialo, ke tiu vojo estas komencante iom malsama ĉiufoje estas, ke mi faras iom de hazardo. Mi vere notante la kato en malsama direkto bazita en kie mi volas ke li komencas tiel ke ĉiu tempo la ludo, aŭ la kuraĝigo, estas iomete malsamaj. Nun, lasu min enkonduki unu alia konstrui tie. Do, en tiu kazo, ni havis funkciojn. Tie estas ankaŭ tuj estos puzlo peco konata kiel tabelo, aŭ listo, kiu permesas stoki multnombra valoroj ene de variablo. Ni vidis fadenoj, kaj nun ekzistas Eventoj. Do jen okazaĵo uzante tiuj du infanoj ĉi tie. Kaj se mi malfermu la dosieron nomata Eventoj de hodiaŭa ekzemploj, ni faros vidu programon kiu aspektas iom kiel ĉi tio. Kaj nun rimarkas tiun knabon - tiom rimarkos mi havas la bluan Muppet klakis - li nur faras la sekvan. Li ne havas unu el tiuj, verda flago puzlo pecoj. Li havas kiam mi ricevas okazaĵo - tial iuj arbitraj vorto. Mi ĵus tajpis okazaĵo tie - li intencas diri, Polo, dum du sekundoj. Do tiuj el vi, kiu estas familieca kun tiu ludo sciigxu kie ĉi iras. Se mi nun alklaku la oranĝo Muppet, lia programo faras tion. Cxiam, se la klavaro spaco trinkejo elstrekita, li tuj diros, Marco, dum du sekundoj sur la ekrano. Sed li ankaŭ tuj uzos ĉi amatoro bloki konata kiel elsendo. Li tuj elsendis citaĵo unquote, "okazaĵo". Dume, la blua ulo, revokon, estas aŭskultante por citaĵo unquote, "okazaĵo". Do iel, nun, ni povas havi du spiritoj interagi. Kaj kiam ni atingos retejo programado, poste en la termino, simile volo ĉi estu avantaĝa por havi retpagxon fari ion en respondo al, por Ekzemple, klako de la klavaro. Do lasu min antaŭeniri kaj batis la spaco trinkejo. Oranĝo ulo diras Kadro. Blua knabo diras Poluso. Se mi faras ĝin denove oranĝo ulo diras Marco, blua ulo diras poluso. Do ni prenu tiun paŝon pli. Tiu tempo, ni iros, probable, nur kelkajn minutojn pli tie. Ĉu ni havas - skribtablo lampo, venu malsupren. Vi pravas je la fino. OK, vi povas ambaŭ venis. Ni havas tablon lampoj por ĉiuj. Venu. Mi ne scias se ni povas subteni tiu ridinda ŝerco supren ĉiuj semestro, though. Bone, venu malsupren. Kaj dume, ni havas la sekvaj ekzemploj tiri supren, nur por akceli tion nun, tia, ke ni havi elmontro de alia antaŭulo de via uzanta la sama baza konstruaĵo blokoj. Kio estas via nomo? JOHN: Johano. DAVID Malan: Johano. Nice al mi vi. Kaj? SETZ: Setz. DAVID Malan: Setz, bela por mi vi. Johano, se vi ŝatus veni ĉe komenco, ĉi tiu estas malnova lernejo ludo nomata Frogger. Vi uzas la klavaron por tio ankaŭ. Kaj la celo estas atingi tra la strato kaj akvo. [Frogger MUZIKO KAJ SOUND Teatraĵoj] DAVID Malan: Mi bedaŭras, ne skribtablo lumilon por vi hodiaŭ. Bone, Setz, ĉu vi ŝatus veni supren? Bone, ni faru ĝin denove. SETZ: Ĉu mi uzu la sagojn? DAVID Malan: Nur la sagoklavoj. Supre, sube, maldekstra, dekstra. [Frogger MUZIKO KAJ SOUND Teatraĵoj] DAVID Malan: Ni vokos ilin konsolo premiojn hodiaŭ, tiam, tre bone farita. Tie, por ambaŭ de vi, John kaj Setz. Gratulon, tute certe. Do denove, kiel ĉi tiu ludo ludas, pensu pri kio okazas? Unu, estas klare multe da moviĝo. Sed ni jam vidis kiel, kun la kato kaj la birdo Ekzemple, kiel vi povas fari la iluzio de moviĝo por nur kopii iujn nombro de rastrumeroj denove kaj denove. Kaj se vi havas ĉiam bloko, vi povus havi tiujn aŭtoj faras ĉi eterne. Ni havas la kapablon havi iu hazardo. Do tiu ludo ne devas esti ĝuste la sama ĉiu fojo. Tiuj protokoloj, tiuj aŭtoj, povas komenci ĉe iomete malsamaj tempoj tiel ke la ludo estas pli interesa kun ĉiu ludo ludita. Kaj dume, ni vidis la kapablo por aŭskulti la spaco trinkejo. Sed klare, en Scratch, ĉu vi ankaŭ aŭskulti por supre, sube, maldekstra, dekstra, kaj vere ajnan klavon sur la klavaro. Kaj vi povas ankaŭ fari kelkajn aliajn aferojn. Lasu min antaŭeniri kaj reiri al la retejo versio. Permesu al mi iri en nia kolekto de ekzemploj ĉi tie. Kaj sub Mia Studio, filmetoj kiuj estas, esence, de dosierujo en scratch.mit.edu. Ni havas la TTT-versioj de ĉiuj de ĉi tiuj projektoj. Kaj vidu se mi povas akiri mian komputilo kunlabori ĉi tie. Tiu estas skribita de unu el niaj amikoj ĉe MIT, nomata Movu la papilio. Kaj fojo ĉi malfermas, ĉi tiu estas tuj vere uzas pli mia komputilo aparataro. Scratch okazas al esti realigita kun Flash. Fulmilo povas paroli kun via webcam, se tion vi havas. Do, se mi iras antaŭen kaj plena ekrano ĉi ĉi tie, klaku la verdan flagon, avizo ke Flash sekurecon mesaĝon diras, ĉu vi volas permesas uzi mian webcam? Kutime, vi devus verŝajne diros Deny. Sed en tiu kazo, ni diros permesas. Tiam mi diros al Chrome por permesi ĉi tiel. Kaj nun, en nur unu momento, vi vidos min, yep, mi. Kaj se mia mano iras supren - Mi devas ne movi mian kapo samtempe. Ekzistas ankaŭ spegulbildo en la ekrano. Venu, tie ni iru - vi povas movi ĝin sur la ekrano ĉar ekzistas ankaŭ puzlo pecoj - ho, vi scias, kio ĝi estas, ĝi estas ĉar vi ankaŭ vidu la projector ekrano malantaŭ mi. Do ni havas iom malfinio afero okazas tie. Bone, do mi ludos cxi tie. Tie ni iru. Do ankaŭ estas enigmo peco kiu diras, kiam vi vidos movado sub unu el la spiritoj, vi povas havi ĝin iri supre, sube, maldekstra, dekstra aŭ similaj. Do ni havas iom de virtuala realo okazas ĉi tie tiel, ĉiuj ene de la limoj de mia retumilo, nur tie uzante mian webcam. Do kio estas poste sur la horizonto. La unua problemo aro, kiel vi vidos, aŭ la retejo iros enreta poste vespere en cs50.net, estas bela multe tuj estos malfermita finis. Kaj efektivigu Scratch projekto interesajn por vi, ludo, oni interago, iu arta, kaj defii mem uzi ajnan numeron de ĉi tiuj puzlo pecoj. Kaj ĝi povas ĉu esti interaktiva en ĉi tiu maniero. Aŭ ĝi povas esti io pli intence faris por rakonti historion. Kaj efektive, jen kie ni finos ekstere hodiaŭ, kun unu fino ekzemplo. Permesu al mi iri en Scratch loke. Lasu min antaŭeniri kaj malfermu ĉi, kaj ludi lasta programo estas skribita de unu de via antaŭuloj, nome ke oni ĉi tie. Bona, levi la volumon por ĉi tiu. [MUZIKO ludi] Rakontanto: Je la sekvanta CS50, Davido invitas volontulo scenejo. DAVID Malan: Por ĉi tiu pruvo, ni tuj bezonas unu volontulo. Ĉu vi ŝatus veni malsupren? Kio estas via nomo? Pasante.