[REPRODUCCIÓ DE VÍDEO] [CAR PORTA Inactiu] [CAR MOTOR D'ARRENCADA] [REPRODUCCIÓ DE MÚSICA] -Els Que es mouen al llarg de la dreta a la recerca de bons moments i bones notícies. Amb bons amics que no es pot perdre. -Això Podria convertir-se en un hàbit. Cops Oportunitat Anem simplement arribar i agafar. -Sí! -al costat Anem a NAB ella. Autoestop ll del `, autobús o taxi groc ell. -Dammit. -Estem En moviment just al llarg. -Footloose I de luxe. -Com No és part de la diversió. Veniu a compartir-mi. -Estem En moviment just al llarg. -Estem Va a compartir la càrrega. -Nosaltres No necessita un mapa per aconseguir aquest espectacle en el camí. -Escolta Fozzy, vull que gira a l'esquerra si s'arriba a una forquilla a la carretera. -Sí senyor. Gireu a l'esquerra en la forquilla a la carretera. Giri a l'esquerra. -No Crec això. -Cruising Dreta al llarg trobem els llums a la carretera. -I Teu camí o camí. -Així Que confien en el meu navegació. Estrelles -Movie amb cotxes cridaners i la vida amb la capota baixada. -Estem Assaltant les grans turons. -Sí, La tempesta és l'adequat. ¿Ha de ser nevant? -No, No ho crec. -Els Que es mouen al llarg de la dreta. -Footloose I de luxe. -Ets A punt per al gran moment. -És A punt per a mi? -Els Que es mouen al llarg de la dreta. La dreta mòbil endavant. La dreta mòbil endavant. La dreta mòbil endavant. -Crec Que vostè tira millor acabat. -Sí senyor. [FI DE REPRODUCCIÓ] [Aplaudiments] DAVID J. Malan: Aquest és CS50. I aquest és el final de la Setmana 0, però el començament d'una bella amistat. Estem molt contents d'estar aquí, a la Universitat de Yale per primera vegada amb el nostre amic Scaz, i Jason, i Andy. Tots els 40 de la de CS50 TF i CA és aquí a Yale. I tots vostès. I de fet, és probable que sigui hora A-- [Aplaudiments] Així, tot i que la majoria de les conferències serà de fet estar a Cambridge aquest any, la realitat és que per disseny, i molt deliberadament CS50, Jo crec que estem arribant al punt tecnològicament, i pedagògicament, on pot ser un educativa superiors experiència per a col·laborar amb alguns de material en línia del curs. De fet, el reality-- i si crec aquest philosophically-- és que les conferències no són un particular mitjans eficaços per al lliurament informació força complexa. Certament durant hores més llargs períodes de temps. I, de fet cada pocs minuts-- Recordo que a mi mateix en college-- Zona que fos per un moment, s'oblida d'algun tema complex, i t'has anat més o menys per als propers 45 minuts. I la realitat és que si vostè està aquí a New Haven o Cambridge o més enllà, la simplicitat de tenir la capacitat de fer una pausa i avanç ràpid, rebobinar, hipervincle relacionat els recursos, les transcripcions de recerca de text complet i similars és una oportunitat que M'atreveixo a dir per als nostres estudiants en línia molt més enllà de New Haven, els ofereix una oportunitat per captar realment la material conceptual que ens introduir en les classes tant millor. Però en última instància, al CS50, és l'experiència dels estudiants es caracteritza per la qual cosa, de manera molt més per conjunts de problemes del curs, o projectes de programació setmanals, la seccions dels cursos dirigits pel docent becaris, les hores d'oficina nocturnes dirigides per els assistents del curs i l'ensenyament companys, i de fet tals esdeveniments com CS50 Trencaclosques Dia, Hack-a-thon del CS50, el CS50 Fira, dinars setmanals, i molt més. I així, si vostè està aquí a Nova Haven, o sintonitzar des de lluny, avui a Cambridge, i ens veurem de nou aviat, la realitat és que això és una i la mateixa classe. I estem molt emocionats de estar aquí tots junts avui. I així, al final del semestre, ja sigui aquí o lluny, així esperem que pugui portar amb orgull, amb alegria, i potser amb una mica d'alleujament, la camisa que dóna testimoni a vostè d'haver pres CS50. Llavors, on ens deixem fora el dimecres? Prenem un cop d'ull a pensament computacional. I això és cap al que destil · lada ciències de la computació a, almenys per ara. Però destil·lada que poc més en almenys tres elements components. Les entrades, de manera que el que és el problema que estem tractant de resoldre? Sortides, ¿quina és la Responem que esperem aconseguir? I la representació d'allà. I no anem a insistir aquí en després en binari, o fins i tot ASCII, i similars tant, però més aviat donar per fet que podem representar aquesta informació, perquè les parts molt més interessant d'aquests problemes no són només la entrades i sortides, però els algoritmes que intervenen en la solució d'aquests problemes. I es pot recordar de l'altre dia que ens va prendre un bastant tradicional concepte de mirar a algú en un llibre de telèfon bastant gran, o més generalment digitalment aquests dies, només un conjunt de dades molt gran. Una llista de contactes molt gran, amb un munt de noms ordenats alfabèticament. I ens vam adonar que mentre jo podria abordar aquest problema simplement mitjançant l'ús d'un lineal pàgina approach-- per pàgina, o fins i tot dos d'en un temps-- ens vam adonar que el algorithm-- més intuïtiu només tipus de dividir i conquerir el problema de nou, i una altra, i una altra vegada-- reduir a la meitat amb cada temps, ens va donar aquest resultat verd. I és tant més plana perquè suggereix que, tot i que aquest problema fa més gran i més gran, com és el cas en aquests dies amb les dades conjunts i reality-- Facebook i Google resultats de la recerca i la com-- fa el nostre algorisme realitzar la mateixa eficàcia amb aquests mossos més grans com ho va fer fins i tot amb els mossos més petits. Ara es planteja la pregunta, què podem realment resoldre similar amb aquest tipus d'intuïció? Aquest tipus de divisió i conquesta? Bé, podríem fer alguna cosa com aquesta avui aquí. Podríem prendre assistència. Així que tal com 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11- no va a ser tot el que eficient. Així que esperi, l'escola primària. 2, 4, 6, 8, 10, 12, 14, 16, 18 i així successivament. Però podríem fer una mica millor? Estic bastant segur que no puc fer això per mi mateix. Així que si vas a humor ens per només un moment, portem amb nosaltres un algoritme que és Acabo de tres passos, però sí exigir: si no mente-- tots s'aixequen, si ho faria. Així, amb tots nosaltres ara de peu, pas un d'aquest algorisme és la següent. Posa't de peu i assignar vostè mateix el número 1. Així que en aquest punt en el temps, literalment, tots en aquesta sala esperem que es pensa a si mateixos, No obstant això maldestrament, el número 1. Ara el pas dos d'aquest algorisme és va involucrar la següent. Segon pas, aparellar- amb algú de peu, afegir els seus números junts, i adoptar la suma com el seu nou número. Comprovació de validesa ràpida. Quin nombre és tothom pensant ara? Així que 2, excepte potser per un, maldestre, persona solitària. Si tenim un nombre imparell de persones a l'habitació. Així que una persona pot seguir sent el número 1, que està bé. Però pas tres aquí, un que ha de seure. L'altre ha d'anar de nou al pas 2, i repetir, si ho faria. Així que si segueix en peu, ha de ser entre aquells que es remunta al pas dos. Segueix endavant. Algunes persones encara en peu. Així que, si segueix en peu, aparellar-se amb algú. Molt bé, la disminució de sota. Algunes persones encara en peu. Vaig a ajudar si cal. Recordeu la conclusió clau aquí, és com molt més ràpid això és que jo explicant. Així que anem a veure. Jo puc ajudar. Llavors, quin nombre són encara pensant? AUDIÈNCIA: Estic en 44. DAVID J. Malan: 44, per la qual cosa seguir endavant i seure. Quin nombre està pensant? AUDIÈNCIA: 74. DAVID J. Malan: 74. Molt bé, endavant i seu. Qui més se segueix dempeus? 86. I és ningú més encara en peu? Quin nombre? Vaig escoltar 67. I després, a la part superior? 32. Algú més encara en peu i pensant en un nombre? Oh, hola. Ho sento. Torno de seguida. 42. Algú més? AUDIÈNCIA: 47. DAVID J. Malan: 47. Hi ha algú més encara en peu que no s'ha explicat? Així que el nombre final de persones en una habitació que té 497 seients és-- tots els quals són filled-- és 390. Així que això és genial. Aviat anem a discutir la noció d'un error en un programa informàtic. Però anem a tornar a que en poc temps. Però en teoria, el que podria haver passat fa un moment? Així que tot i que hi havia tres grans passos d'aquest algorisme, cada un dels era només una mica d'una operació gran. I hi havia una ciclicitat a ella que si estigués encara en peu, que va seguir el seu camí des del pas tres i dos, pas tres i dos, pas tres a dos. Però el que va seguir passant en cada iteració? Cada cicle d'aquest bucle? El que estava passant a l'habitació en un altre lloc? No només la mateixa cosa, però el que que estava succeint a la meitat de vostès? Sentar-se. I el que hi ha a la mentida aquesta idea, de la mateixa manera que l'exemple de llibre de telèfon, que si la meitat dels que són seure cada vegada, el problema està començant amb potser 400 persones, després a 200 persones, de 100 persones, després de 50 persones, i així successivament. I així reduir gradualment en la teoria a una sola persona, pensant en el valor total de tots. Ara la realitat, algunes dinàmiques socials, i alguns errors aritmètics podria contribuir a aquest decisió definitiva. Però en teoria, mentre jo seguia comptant distància, tenint diverses dotzenes passos, o centenars de passos a comptar a vosaltres mateixos, a comptar una sala plena de més o menys 500 persones hauria d'haver tingut molts menys passos, perquè només es pot dividir 500 i mig tantes vegades. I així, de la mateixa manera que amb el telèfon reservar exemple, l'altre dia, ens tenim alguna cosa logarítmica per així dir-ho, amb la qual cosa si tots fóssim operant a l'uníson, i ignorant el errors d'addició, oi han aconseguit exactament aquest tipus de temps d'execució? Ara, per ser justos, una mena de trampa, en que m'ha atret altres recursos. Considerant que és només un de mi, Jo palanquejades centenars de tu. Però això es podria dir que és un exemple de processament en paral·lel, o un estat de l'art molt en voga on els ordinadors en aquests dies tenen múltiples CPU, o més tècnicament, més múltiples nuclis, i veritablement pot fer múltiples coses alhora, de la mateixa manera que tot el que estem fent allà, en paral·lel. Però recordar que el que També ho va fer dimecres va ser tractar de capturar aquesta intuïció i formalitzar en el codi. Una cosa així com pseudo-codi. I de fet, i espero que perdonar, és com 80 graus a aquí. Així que em vaig a prendre això fos per només una mica. El que vaig pensar que faríem és la transició ara a una aplicació mitjançant el qual ens comprometem novament a l'audiència, però escriure un programa en anglès com la sintaxi, amb el qual resoldre aquest problema aquí. [REPRODUCCIÓ DE VÍDEO] Mantega de cacauet temps gelea -És. La mantega de cacauet temps gelea. La mantega de cacauet temps gelea. Camí ja! Camí ja! Camí ja! Camí ja! Ara cal anar! Cal anar! Cal anar! Cal anar! Mantega de cacauet gelea! Mantega de cacauet gelea! Mantega de cacauet gelea! Mantega de cacauet gelea! Maní, gelea de la mantega de cacauet! Mantega de cacauet gelea! Gelea de cacauet mantega amb un bat de beisbol. [FI DE REPRODUCCIÓ] DAVID J. Malan: --que vídeo, però és una mica addictiu, si no és una mica molest. Però per fer això, vaig pensar que el que havíem fer és tractar d'escriure un programa conjunt, per a això necessitem tres voluntaris. Ha de ser còmode en càmera i internet. Sam, anem cap amunt. Camisa porpra, aquí, anem cap amunt. I a partir d'aquí, deixa anar una mica més enrere. Carmesí i camises blaves, anem cap amunt. Perfecte. Anem ara. Anem cap amunt, anem cap amunt. ¿I quin és el teu nom? Erica. David, un plaer conèixer-te. Si voleu aprofitar aquesta seu aquí. Aquest és Sam. Com et dius? Antoni. Antoni, un plaer conèixer-te. Erica i Sam, si ho agradaria tenir un seient aquí. El que hem vingut preparat amb, ja que aquests nois estan descobrint, és els ingredients amb la qual fer 01:00 mantega de cacauet i gelea. Ara bé, això podria ser una cosa que vostè pren molt per fet. Però ens hem donat a cadascun dels nostres tres voluntaris aquí-- dos voluntaris i Sam aquí, una fogassa de pa cada un, un plat, un ganivet, un pot de gelea o melmelada, i un pot de mantega de cacauet. I l'objectiu que ens ocupa ara és serà per a aquests tres fer una mantega de cacauet i melmelada. Però el que farem és esperar el audience-- ia tots vostès sens dubte saben com fer-ho aquesta tan bé en reality-- van a proporcionar la instruccions pas a pas. El pseudo-codi, si es vol. Així que vaig a jugar el paper d'escriba aquí. I jo tinc una petita llista de coses per fer, i de manera que cada un de vosaltres, un a la vegada, demana un potencial instrucció, vaig a escriure-ho, repetir si cal. I llavors vostès van a fer 01:00 mantega de cacauet i melmelada només fent el que li diuen. Així que pensar en si mateixos com els ordinadors. Només es pot fer el que et diuen. No hi ha suposicions, sense preguntes. Només ha de fer-ho. Llavors, qui li agradaria aventurar la primera instruccions per fer un sandvitx PBJ? Al balcó hi ha. AUDIÈNCIA: Obriu la bossa de pa. DAVID J. Malan: Obriu el bossa de pa, si es vol. Així que anem a veure. Anem a iterar, i obtenir una mica més precís. Bona forma de començar però. El segon pas, algú més. Ara ningú vol ser voluntari. Segon pas, al front. AUDIÈNCIA: Obriu l'interior bossa de pa també. DAVID J. Malan: Obriu el bossa interior de pa també. Gran, que aprendre. Una mica més precís. Aconseguirem aquest treball. Sí, en camisa verda. AUDIÈNCIA: [inaudible] DAVID J. Malan: Llesques de pa. Traieu amb cura dues llesques de pa. Això és bó. El quart pas, algú més? Per aquí, no? AUDIÈNCIA: [inaudible] DAVID J. Malan: Col·loqueu el pa al plat. Pas cinc? Pas cinc, sí? AUDIÈNCIA: [inaudible] DAVID J. Malan: A sobre de-- oh, mà. Col·loqui la mà a la part superior de la mantega de cacauet. És això el que em dirigeixo? AUDIÈNCIA: Sí, i descargolar. DAVID J. Malan: Y-- dir-ho de nou. AUDIÈNCIA: [inaudible] DAVID J. Malan: I va posar l' tapa al costat de la mantega de cacauet. Lleugerament col·loqui la mà en la part superior de la mantega de cacauet, i descargolar, i posar la tapa costat de la mantega de cacauet. OK, pas 6. Pas 6, algú més. Sí? AUDIÈNCIA: [inaudible] DAVID J. Malan: Digues-ho una altra vegada. AUDIÈNCIA: Repetiu el pas 5 de nou. DAVID J. Malan: I repetir el pas 5 més, que es crearà una mica d'un problema ara si que estem fent aquest pas a pas. Així que ara anem de nou al pas 5. Lleugerament col·locar la mà en la part superior de mantega de cacauet i descargolar i posar la tapa al costat de la mantega de cacauet. Llavors captar la mantega de cacauet i repetiu el pas 5 de nou. Així que anem a anul·lar aquest bucle infinit, si es vol. Pas set, una altra persona. Sí, a la part posterior. AUDIÈNCIA: [inaudible] DAVID J. Malan: top --en d'una altra. AUDIÈNCIA: [inaudible] DAVID J. Malan: A la D'altra banda en l'altre superior. Vols simplement venir aquí? Com acabo la instrucció? Què hi ha de la resta de la instrucció? AUDIÈNCIA: Fent cas omís d'aquesta part. DAVID J. Malan: Fent cas omís d'aquesta part. Anem a començar de nou. Pas 7. AUDIÈNCIA: [inaudible] DAVID J. Malan: Agafeu amb oposar-se a mà- això és bo. Això és realment bo. AUDIÈNCIA: [inaudible] DAVID J. Malan: I jar-- plàstic AUDIÈNCIA: [inaudible] DAVID J. Malan: I twist-- AUDIÈNCIA: [inaudible] DAVID J. Malan: Durant dos segons. Només has d'obrir el pot de mantega de cacauet. Espero que perdons. Així que anem a suposar que vam arribar allà. Obriu el pot de mantega de cacauet. [Aplaudiments] DAVID J. Malan: Pas 8, anem. Pas 8, sí, a la part posterior. AUDIÈNCIA: [inaudible] DAVID J. Malan: Good. Pas 9, sí? AUDIÈNCIA: [inaudible] DAVID J. Malan: --out de el pot de mantega de cacauet. I- i què? AUDIÈNCIA: [inaudible] DAVID J. Malan: I ganivet posat de nou a la mantega de cacauet. Pas deu. Pas deu. AUDIÈNCIA: [inaudible] DAVID J. Malan: Poseu el ganivet i, a continuació, retiri el precinte. Niça. Fora de la mantega de cacauet. Molt bé, el pas 11. AUDIÈNCIA: [inaudible] DAVID J. Malan: OK, ordinador gris segueixi equip blau o vermell. Bé. [Aplaudiments] DAVID J. Malan: Porta'ns casa. Parell de passos més. Què segueix? Passos 12. Pas 12. Sí? AUDIÈNCIA: Posa una de les llesques de pa suaument en una de les seves mans. DAVID J. Malan: Una de les seves mans. I després, pas 13. Sí? AUDIÈNCIA: [inaudible] DAVID J. Malan: llesca --en de pa. Bé. Força bé. Pas 14, sí. AUDIÈNCIA: Desfer el pas 13. DAVID J. Malan: Desfer el pas 13. Anem a passar a la gelea. És un programa de 100 passos, però estem estàvem al pas 15. Sí. AUDIÈNCIA: [inaudible] DAVID J. Malan: 7 a 13 usant la gelea, perquè els que va ser tan bé. Repetiu els passos 7 a 13, usant la gelatina. Així captar la meitat inferior de la pot de la gelea amb una mà a la part superior. D'altra banda de la una altra superior, fent cas omís d'aquesta part, agafar amb les mans oposades, la tapa i el pot de plàstic a la part inferior, i torçar durant dos segons. A continuació, obriu el pot de gelea. I finalment, tractarem de donar-nos alguna cosa comestible. Pas 16. Així que per què no ho deixem aquí. Moltes gràcies a els nostres tres voluntaris. [Aplaudiments] Tenim una mica de CS50 bola de la tensió per a vostè. Anava a ser un sandvitx però- i què era el punt, més enllà de tenir un mica de diversió amb l'algoritme? Però la realitat és que, fins i tot quan estàs programant un ordinador, ha de ser súper precisa. Com complex o intimidant com el seu propi ordinador molt bé podria ser la que, en menys quan alguna cosa surt malament, la realitat és que és un bastant ximple dispositiu que va ser inventat per nosaltres els éssers humans, i només pot fer-ho un subconjunt del que fer-- vegades certament faster-- però no sap com fer suposicions. No sap com estar en la mateixa longitud d'ona que tu. Només es farà precisament el que li dius. I seràs colpejat, potser, a mesura que vam començar escriure codi real amb el primers butlletins de problemes i més enllà, el fàcil que és fer una suposició com un ésser humà, i no preveig que necessito per manejar aquest cas, o que el cas de la cantonada, per així dir-ho, que podria molt bé sorgir si, per exemple, Sam tenia l'única jar squeezable de gelatina, mentre que tots els altres tenien alguns pots de vidre com també. Així que abans que ens dirigim la nostra atenció a alguna cosa de codi real, permeteu-me presentar-li el els caps dels cursos aquí a Yale. Els nostres amics Scaz, Andy, i Jason venir i dir hola. [Aplaudiments] SCAZ: Hem perdut Jason temporalment. Hola de nou, tothom. El meu nom és Scaz. He estat ensenyant a Yale des de 2001. I quan no estic ensenyant, la meva investigació es troba en la robòtica i la intel·ligència artificial. I l'anunci que tinc avui és que a partir d'un parell de setmanes, anem a portar alguns material complementari per CS50 per parlar sobre el programari d'intel·ligència. Anem a parlar de com llocs com Netflix i Hulu pot recomanar pel·lícules que és possible que vulgueu veure. On anem a parlar sobre com cotxes sense conductor en realitat funcionen. I serem capaços a terra aquestes coses en els conceptes que vostè està aprenent en aquesta classe d'avui. A causa de que totes aquestes coses són construït sobre la mateixa base. I això és el que aquest sèrie explorarà. Així que estic realment esperant amb ganes de veure més de tu tots, i que arribaràs a veure més de tots nosaltres molt aviat. Permetin-me presentar a Jason. JASON: Hola a tots. El meu nom és Jason. Lamentablement, jo vaig anar a Harvard com a estudiant. Això va a tallar- fora del corrent real. I ara sóc aquí com un professor de el departament de ciències de la computació. I jo estic ajudant a executar el curs amb Scaz, David i Andy. ANDY: Hola nois. Andy del meu nom. Jo sóc en realitat l'únic Yale estudiant a l'escenari ara. [Aplaudiments] Estic a Berkeley College, originalment de Solon, Ohio. I jo era un d'aquests nens on, quan vaig arribar a la Universitat de Yale, Realment vaig pensar que jo mai ho faria ha de mirar a un nombre cada vegada més. I llavors em vaig adonar que necessitava tant la ciència com QR crèdits per graduar-se. I així la meva primavera estudiant de primer any, vaig prendre una classe, un CS, introducció classe CS aquí a Yale. Jo estava com, això és com realment molt bé. I mentre que en realitat va acabar declarant Com els assumptes globals importants, les habilitats Vaig aprendre a CS i programació són tan aplicables a qualsevol camp vostè tria fer. I el personal aquí a Yale, hem estat tan dur a la feina per preparar-se per vostès. I nosaltres esperem veure sobretot en les seccions i oficines hores. Així que si. [Aplaudiments] DAVID J. Malan: Gràcies. Així que abans que comencés la classe, vam tenir l'oportunitat caminar pel campus amb un telèfon mòbil i prendre alguns selfies en forma de vídeo de veritat la meva primera gira pel campus de Yale aquí. I pel que pensem que ens agradaria compartir una aspra tall d'exactament això com Scaz i Andy i Jason em va portar pel campus. [REPRODUCCIÓ DE VÍDEO] [SIRENES] -David. -Benvingut A Yale. -Encantat de veure't. -Nice Veure't. -Podem Anar en un viatge? -Anem A anar en un tour. Visita -Road. -Aquest Signe ha estat allà per un temps. -Whah, CS50. -Hurry! Vaja, vaja, vaja, vaja. Vostè hauria [inaudible] Harkness Tower. -I Vam veure que un parell de vegades. [Aplaudiments] -Mira Cap a fora per a la moto! Ahh! Hola Frank. -Què Passa, nois? -Com estàs? -Encantat de veure't. -Benvingut Al vídeo. No actuïs massa excitat. -Em Encanta Silliman. Ahh! -Ha Passat prop de tres hores des Jason tenia gelat i Nutella. Així que hem de parar de tornada a Silliman per una mica. -No És fins i tot [inaudible] però, només el fet de que tenen aquí és tan increïble. Amic, hi ha Nutella en cada àpat. -No Va ser l'any passat també. -Sí. -Digues Molt sobre Yale fins ara. Però jo ara que TD allà. I això és considerat fora de l'escola. -Aquí Tenim l'arquitectura gòtica. Mundialment famós. Tenim una arquitectura més gòtic. I construcció, i arquitectura més gòtic. Hola. Aquí és on tindrem horari d'oficina De dimarts a dijous a Hogwarts, com [inaudible]. -Tot bé. Això és tot per a la gira. Som a la Universitat de Yale de Facultat de Dret, on la conferència d'avui està a punt de tenir lloc. Anem al capdavant en. [FI DE REPRODUCCIÓ] DAVID J. Malan: I això ens porta aquí ara. Així que fins al moment, hem estat centrant-se en pseudocodi, que és aquesta sintaxi Anglès-com. No té cap especificació prescrita. És només que utilitzar alguns llenguatge intuïtiu si vull explicar el que vols fer. Però anem a començar ara a la transició al codi, ja que la majoria de la gent diria. Però més precisament, una cosa conegut com a codi font. Aquest és el llenguatge que els humans escriuen que els ordinadors ultimately-- possiblement després de cert nombre de steps-- entén en última instància per tal de saber com fer alguna cosa. Que va veure un indici de això potser dimecres. Aquest és un exemple que increïblement, que s'esperava quan s'executa simplement diu "hola món". I està escrit en un llenguatge anomenat C, que és molt similar sintàcticament a molts altres idiomes que vostè pot no saber, però podria haver sentit parlar de com Java, i C ++ i Python i Ruby, i similars, i de fet, anem a passar gran part del semestre usant C, i després cap al final de la semestre, construir sobre ella, i la introducció de qualsevol nombre d'altres idiomes. Entre ells PHP i JavaScript, un llenguatge de base de dades denominat SQL. Però amb C, el que tindrem aquesta comprensió de baix a dalt exactament com funcionen els ordinadors, el que pot fer amb ells, i com es poden resoldre els problemes tant més eficaçment per aquest capes que discutim el dimecres, i de peu sobre les espatlles dels altres. Però més sobre això més per venir. Avui ens fixem en un entorn senzill, però fonamentalment idèntica 1 entorn conegut com Scratch de els nostres amics al MIT Media Lab. Aquesta és una gràfica llenguatge de programació, Scratch, pel qual vostè pot arrossegar i deixar anar coses que veurà com peces d'un trencaclosques que Només enclavament si es fa sentit lògic o programàtic per fer-ho. Però ens va a permetre a tenir una conversa sobretot de la mateixa programació fonaments que alguns de vostès podria saber ja, que molts de vostès no podria saber res de sense tenir empantanegar francament, en el intel·lectualment sintaxi poc interessant del punt i coma, i els parèntesis, i cita, i similars. Tot això, a principis successivament, són una distracció al que són interessants i idees realment útils. Així que donem un ràpid mirada a l'entorn aquí, així que vostè sap el que l'espera. I, de fet, entre els jocs que pot jugar són alguns programes escrits pels mateixos antics alumnes del CS50. Un d'ells, a mi mateix, vaig a estar aquest escrita a la universitat per a mi. Si pogués prendre un voluntari que està disposat a jugar un joc per primera vegada. És clar. Anem cap amunt. Com et dius? AUDIÈNCIA: Angela. DAVID J. Malan: Angela, anem cap amunt. Així esgarrinxada ha estat fora per un parell d'anys. I quan estava a l'escola de postgrau, Estava creu registrats al MIT, tenint professor Mitchel Resnick de curs sobre tecnologies educatives. I estàvem entre els primers els estudiants en el món de realitat beta Rasguño prova. I el meu projecte era el que Angela ara s'ha ofert amablement a obra anomenada oscartime. Així que seguiré endavant i feu doble clic a la icona d'aquí. Es va a obrir una programació entorn que aviat anem a submergir-nos en. Vaig a pantalla completa per Angela, aquí. Vaig a colpejar el verd bandera en un moment. I després un tot moltes escombraries caurà del cel. I vostè va a utilitzar el ratolí aquí per arrossegar i deixar anar realitat les escombraries en els pots d'escombraries d'Oscar. Així que si vols seguir endavant i feu clic la bandera verda, el joc començarà. [REPRODUCCIÓ DE MÚSICA] Oh, m'encanta les escombraries. Qualsevol cosa bruta o brut o polsegós. Qualsevol cosa irregular o podrida, o oxidat. Sí, m'encanta les escombraries. Si realment vols veure una mica de mala qualitat, mira això. Tinc aquí una sabatilla d'esport això és tot estripat i desgastades. Està tot ple de forats cellers i els cordons es trenquen. Un regal de la meva mare el dia en què va néixer. M'encanta perquè és-- DAVID J. Malan: --green aquests dies només ser llençar tot a les escombraries. I així el que un de Pròpia did-- personal de l'CS50 Jordan, que vostè pot ser satisfer avui-- té realitat actualitzat això per als temps d'avui. I així em permet obrir-me un remix en lloc d'Angela. I anem a jugar això en comptes de uns moments on ara estàs va a haver de decidir entre si llençar alguna cosa a les escombraries, o reciclar o compostar ella. Així que hi ha una mica de pressió sobre vostè per arribar aquest dret en la part davantera de la seva 392 a 497 companys de classe aquí a la sala, si ho faria. [REPRODUCCIÓ DE VÍDEO] [REPRODUCCIÓ DE MÚSICA] Oh m'encanta escombraries. Qualsevol cosa bruta o brut o polsegós. Qualsevol cosa irregular o podrida o oxidat. Sí, m'encanta les escombraries. Si realment vols veure una mica de mala qualitat, mira això. Tinc aquí una sabatilla d'esport això és tot estripat i desgastades. Està tot ple de forats i els cordons es trenquen. Un regal de la meva mare el dia en què va néixer. M'encanta perquè és escombraries. Oh, m'encanta les escombraries. Qualsevol cosa bruta, o brut, o polsegós. Qualsevol cosa irregular o podrida o oxidat. Sí, m'encanta les escombraries. Heus aquí algunes coses més podrit. Aquests són alguns newspaper-- [FI DE REPRODUCCIÓ] DAVID J. Malan: ¿Hi ha en realitat compostable. Però gràcies al nostre voluntari, Angela. Tenim una pilota antiestrès per a vostè aquí també. Així que gràcies. Així que aquest va ser escrit per mi. Però ara un per un exalumne real qui implementat això, que és un joc. Tot en aquesta llengua anomenada Scratch, que aviat pelar les capes de. Però si haguéssim com-- com sobre un altre voluntari? Dreta. Anem cap amunt. Com et dius? Cop d'ull? Lance. Lance, anem cap amunt. Encantat de conéixer-te. Anem d'aquesta manera. Així que aquest podria tenir un tema familiar per a alguns de vosaltres. Però veuràs també que no pot haver interactivitat, pel qual vostè podria ser en realitat el paper del personatge en moviment. Encantat de conéixer-te. En David. Jo us dono, Pikachu. Instruccions vulguis sobre venir a la pantalla. Però en fi, vostè va a voler atrapar les coses saboroses, i evitar les bombes i altres coses. Amb els cursors enterament. Així que premeu la barra d'espai. -Pikachu. DAVID J. Malan: Catch les coses de l'esquerra, no prendre les coses a la dreta. [REPRODUCCIÓ DE MÚSICA] Així que un últim aquí. Si poguéssim tenir-ne un més voluntaris aquí. Pensem que havíem recrear alguna cosa de-- al shirt-- groga a partir de dimecres. Quin és el teu nom? Maria, anem a Maria. I recordo el dimecres vam introduir la noció de binari, i les bombetes binaris. Això és en realitat ara 1 aplicació d'aquesta mateixa interfície que teníem en l'iPad amb la llum bulbs, però aquí processada digitalment. I en lloc de fer un esforç ball-- plaer conèixer-te, David. Vam portar algunes llum bombetes de Cambridge. Si pot, en fer clic als bombetes per convertir-los encès i apagat, pujar amb el binari representació de, diguem, 256. I veuràs al mitjà, el compte corrent. Així que un està. Així que el bit més a l'esquerra està encesa. MARY: Sí, [inaudible] DAVID J. Malan: Bé, així que tenim sol-- oh. Així que aquesta és la columna 128. Així que estem fins a 128. Hem d'arribar a 256. I vostè pot jugar en i fora, no és gran cosa. O vostè pot colpejar aquest 128 més vegades si volen. Molt bé, molt bé. 24. Sí, cada cop més a prop. Més a prop! Oh, quin és el problema llavors? Llavors, quin és el problema? Llavors, què és el que necessitem resoldre aquest problema? Així que necessitem una mica. I això és perfectament raonable, en realitat, no? Si desitja comptar a partir del nombre 1-2 a 3 a 4 a 5, 6, 7, 8, 9 per rodar en realitat a 10, ets necessitarà un bit addicional. Així que anem a realitat rebobinar aquí, i arribar con-- que era, òbviament, pretén ser una posada a punt. No es pot fer 256 amb només una bombeta. Així que què hi ha de simplement el número 50? Número 50. Excel·lent. Un gran aplaudiment de Maria i d'ella també. Gràcies. Així que aquest topic-- intencional com que era-- realment repetir-se. El valor més gran que pugui representar amb vuit bits o un byte, és de fet 256. Però no si s'inicia comptant des de 0, com hem semblen seguir fent per tenir tots aquests trossets de descans. Però ara anem a bussejar en el subjacent implementació d'aquest entorn, i esmicolar algunes d'aquestes idees. Així que en un moment en què estem a punt de veure una alguns diversos fonaments de programació. El primer dels quals anem a cridar comunicat. Classificar els verbs, si es vol. Accions. Les coses que s'han de fer. I en un moment veuràs blocs que es veuen així. Digueu "hola món", per exemple. O esperar un segon. O jugar miol so. I de fet el medi ambient en que estarem fent això es diu Scratch. I si em llevo sense ratllades precàrrega cap codi real, anem a fer un ràpid cop d'ull a aquest interfície d'usuari, per així dir-ho. Els controls amb els quals interactuen. A la part superior esquerra d'aquí de la pantalla, sota dels menús, tenim l'escenari, per així dir-ho. Així Scratch és el que anomenarem Sprite. És un personatge. I pot ser controlat per escriure programes en contra seva. I que va ser capaç de moure cap amunt i cap avall ia l'esquerra i la dreta en aquest entorn, no només movent el ratolí, però mitjançant programació. Puc dir-li a caminar dret, a peu esquerra, amunt, avall o similars. I puc introduir una altra sprites o personatges també. De fet, en el fons aquí és on veuràs la llista de sprites. De moment, només tinc un, però puc crear més, i van a aparèixer exactament allà baix. Així que si es rebobina per un moment, igual que Oscartime-- per exemple, Oscar, a l'esquerra, les escombraries pot, era un sprite. I la cosa en el medi, la Paperera de reciclatge, va ser un altre element sprite. I el cub de compostatge va ser un altre element sprite. I cada tros de escombraries o reciclables que queia des del cel és també un sprite, cadascun dels quals va ser programada individualment. Com es programa? Bé, aquí a la dreta costat és l'àrea de scripts. I aquí és on podem arrossegar i deixar anar les peces del trencaclosques. En una setmana, que serà on equivalentment escrivim codi amb més d'un teclat, però per Avui serà arrossegant i deixant anar peces del trencaclosques, la paletes per al qual tots poden es troben aquí al centre. De fet, al centre aquí hi ha un munt de les categories de trencaclosques peces o blocs. Un està relacionat amb el moviment, mira, so, una ploma que pugen i baixen, dades, esdeveniments controlen. No del tot segur encara el que tot això significa, però veuràs que ells han estat molt ben classificat. I per escriure un programa en Scratch, farem exactament això. Vaig a començar sota Esdeveniments i arrosseguen aquest d'aquí. Quan la bandera verda va fer clic. Ara, per que un? Bo recordar que els nostres voluntaris es va acostar, el primer que o el que van fer va ser fer clic a aquest verd bandera a la cantonada superior dreta. I això només significa iniciar el programa. Així que quan aquest esdeveniment passa, ¿Què és el que vull fer? Vaig a passar per sota de les mirades, i jo faré "saludar". I jo vaig a canviar això i dir alguna cosa com "hola Yale." I ara em vaig a enfocar sortir, feu clic a la bandera verda, i llest, he escrit un programa. No tot és tan emocionant de moment, però això és exactament on cada dels que va començar autor, tots dos amb Pikachu i el bombetes binaris i oscartime, i així molts més exemples. Comences super simple, i llavors comences a capa, i afegir característiques i funcionalitat. Llavors, què són aquestes capes consistirà? Bé, més enllà de les declaracions, també anem a tenir les coses que són poc més fancily crida de Boole Expressions, després que algú anomenat Bool. I una expressió booleana és simplement una expressió que és vertader o fals, sí o no, 1 o 0. Qualsevol pols oposats com aquestes. És veritable o no. Però també veurem els que podria tenir aquest aspecte. Així, per exemple, és el ratolí? Són una espècie de preguntes, si es vol. El ratolí és ja sigui cap avall, cert o no ho és, fals. 1 o 0, si es vol, tendeix a ser l'assignació. Cert és 1, fals és 0. Bé què passa amb menys d'això? O això, és que això sigui menys que això? Aquesta és una pregunta de tipus. I si es posa de dos números en allà, ja sigui x serà menor que i o igual a i, o més gran que i, però aquest bloc veurem, és només va respondre a la pregunta, és que això sigui menys que això? També podríem veure alguna cosa com això. Tocar punters del ratolí. Així que en Scratch, vostè pot demanar la qüestió, és el Sprite tocar el punter del ratolí? És a dir, és la que treu el cap el cursor per sobre del límit, o el seu equivalent? Veurem coses Anding junts. Pot fer dues preguntes, i assegureu-vos que els dos donar si o respostes veritables abans prendre la decisió de fer alguna cosa. Però llavors, com prendre decisions? Bé, tenim aquestes condicions. I vam veure això en la nostra exemple de la guia telefònica. Mirant cap a l'esquerra o adequat per a Mike Smith. I en la condició, fer alguna cosa potencialment, si una expressió booleana és veritable. I, en efecte, observi les formes ara. Hi ha un marcador de posició en aquest moment en posicions elevades on podem fit-- si retrocedirà un slide-- aquesta forma. No és exactament la mateixa mida. I de fet, veuràs que Rasguño canvia la mida de les coses de forma dinàmica per encaixar les peces del trencaclosques, però el forma és l'important. Aquesta cosa sembla que, i de fet és aproximadament la mateixa manera que ha d'encaixar-hi. I si volem fer alguna cosa d'aquesta manera o d'aquesta manera, si en cas contrari, tenim aquest trencaclosques peça en Rasguño també. Ara suposi que desitja fer si, més si, o en cas contrari. En altres paraules, una de tres vies forquilla a la carretera. Bé, què pot fer vostè amb només fer una ullada a això? Puc prendre aquesta peça del trencaclosques, i no sembla encaixar, però de nou, Scratch va per canviar la mida molt bé per a nosaltres. Podria començar a capa aquestes coses juntes. Així que ara tinc una de tres vies forquilla si això és cert, fer això. Perquè si aquesta altra cosa és certa, anar per aquest camí, en cas contrari va aquesta altra manera. I a El Muppet Movie, la forquilla a la carretera, per així dir-ho, entre Yale o Stanford, va ser exactament això, només dues condicions. O bé anar per aquest camí, en cas contrari anar en aquesta direcció. Bé, també bucles d'existir en la programació. I hem utilitzat aquests ja en classe i en el codi de pseudocodi, i segurament en els Programes d'Scratch per sempre. Esgarrapades té aquesta peça del trencaclosques que només deixarà que facis alguna cosa per sempre. I de vegades un vol fer alguna cosa per sempre. No és necessàriament un error, és perquè vols un rellotge per seguir endavant, o un joc per seguir jugant. O bé, podeu especificar un nombre finit de passos, ja que amb aquest bloc de repetir aquí, que es repeteixi alguna cosa 10 vegades. Podem establir variables, aviat veurem. I amb les variables, similar en esperit l'àlgebra, com x o i o z. És una cosa simbòlica que pot emmagatzemar algun valor, alguna peça d'informació, que és possible que vulgueu recordar per més endavant. Millor exemple d'això podria ser un joc on vostè té un compte, igual que en Pikachu. Quants trossos de coca i què sé jo què agafes? Bé, això podria ser una variable anomenat puntuació que comença en 0. I llavors cada vegada que va atrapar una tros de la coca o dolços, o similars, que s'incrementa. Es s'agrega a un alhora. I les botigues de manera que una variable d'un peça d'informació així. Després hi ha matrius, i vindrem de nou a ells en una setmana o dues vegades, però una matriu és com una mena de inventari o una motxilla, a l'interior dels quals vostè pot posar les coses virtuals. Et permet emmagatzemar més d'una peça d'informació. I això podria ser útil si en el joc, ets espècie de caminar al voltant recollir les coses. I potser esteu a tots aquests trossos de coca res més, i no només menjar un darrere l'altre. I després hi ha un construcció columbòfil anem arribat a trucades funcions o procediments. I encara anem més ràpid aquí, anem a veure que es tracta d'un solució natural als problemes que anem trobada. Com comencen els nostres programes cada vegada més gran que anem a començar a notar patrons en el codi que estem escrivint, les peces del trencaclosques que estem arrossegar i deixar anar. I tan aviat com vostè noti que estàs fent alguna cosa una i altra vegada, o pitjor encara copiar i enganxar la programació codi que vostè ha escrit, això és probablement una oportunitat per a factoritzar el que manté la còpia i enganxar, i posant- en una cosa que es diu una "funció". Però més en aquells en molt més detall en poc temps. I després hi ha característiques fins i tot més elegant. Per a aquells de vostès més còmode, o prendre APCS o equivalent, Rasguño realment dóna suport coses com fils i esdeveniments i molt més. Així que adonar-se que té bastant alt sostre, tot i que també és molt àmpliament accessible a la gent que mai han programat abans. Així que de fet, anem a fer una ullada en un programa simple o dos. Ja mirem com podria saludar amb Scratch. Déjame anar per davant i obrir un petit programa més interessant que vaig escriure amb antelació. I d'aquest anomenat Pet el Gat. Tots aquests programes hi haurà disponible a la pàgina web de l'CS50. De fet, ja hi és. Així que vostè pot descarregar ells, i juguen amb ells, i amb la de problemes 0, el que també està a la pàgina web del curs, és recomanable que caminar a través d'aquests. I d'altra banda, tenim una nombre de vídeos walk-through línia en què I i L'equip de CS50 veritablement caminar a través de cada un d'aquests exemples en un molt ritme més lent, 1 remitible molt ràpid, o ritme rebobinable, de manera que vostè pot caminar a través d'aquests en el seu temps lliure també. Així que aquí està rascada a l'esquerra. Heus aquí un programa de la dreta que ja he pre-fets. Així que permetin-me zoom en això. I podria algú en anglès, sabent el que ja saps, a partir d'ara com a com funciona el principi, una mena de, diguem, en una frase d'Anglès o de la pena, ¿Què fa aquest programa aparentment fer? Sí, en camisa taronja. AUDIÈNCIA: [inaudible] DAVID J. Malan: Sí, si el seu cursor està en el esgarrinxada de gat, reproduir un so miolant. Però notem com expressem això. No hi ha pel que sembla una bucle d'allà, per sempre. I després hi ha un condicions, l'expressió if. I col·lectivament, què volen dir aquests? Significa aquest programa s'acaba sempre corrent, i que només sempre està esperant i veure i escoltar per a mi per moure el cursor sobre el gat. Com que cada vegada que faig això, com vostè proposa, que va a fer això. Permetin-me començar el programa. Res sembla ser passant, notar com es va posar en relleu ara en una línia groga. Això només vol dir que s'està executant. I perquè hi ha un per sempre llaç, encara en funcionament. Així que permetin-me moc el cursor sobre Scratch. [Miol] [miol] I si em mut ho d'adobar, [Miol] ara que s'aturi, però el programa de encara en marxa. [Miol] I així, adorable. [Miol] Així que anem a obrir una mica més avançat exemple trucada No acaroni el Gat. I ara anem a veure què que passa aquí. Meowing [miol]. Així que és una mica en pilot automàtic, si es vol. --pet el gat. Em pregunto per què. [ROAR] [miol] Llavors, com funciona? Bé, vostè pot tipus de raó a través d'ell de manera intuïtiva, potser. Però anem a veure el codi real. Així que de nou, quan la bandera verda es fa clic, fer-ho per sempre. Què és el que vols fer per sempre? Bé, si commovedora ratolí punter, llavors el joc un so que pel que sembla diu Lleó 5, això és dins d'aquest projecte, en cas contrari jugar miol so, i després esperar dos segons, de manera que que no està miolant sense parar. De fet, vostè pot començar molt ràpidament per molestar a tu mateix i els teus companys de pis. Anem a treure aquest bloc. I noti el que és bo d'Scratch. Les coses simplement espècie d'arrossegament i deixar anar i el enclavament. Així que de nou, creix a omplir el que vols. Però si em trec això, i després reeixida obra, [ORDINADOR Blip SO] --és una espècie d'ensopegar sí, perquè és, literalment, fent el que estic dient. S'està dient sempre jugar a aquest so, però Jo no estic donant l'oportunitat d'acabar. I pel que seria un error. I és per això que vam tenir aquesta cosa d'aquí ara. Així que anem a realment començar des scratch-- mena de joc de paraules poc intended-- en el qual ara tenim el moviment gat. Així que em vaig a fer això sobre la marxa. Vaig a fer un zoom aquí, només que em va començar a Esdeveniments. I bandera verda va fer clic. I hi ha altres maneres per iniciar els scripts. Anem a mantenir simple aquí. I ara em vaig a anar endavant i passar per sota de control. I de nou, si s'oblida d'on les coses estan, simplement feu clic a la tornada, i, finalment, a trobar de nou. Així que el que vull fer sempre el que? Vull utilitzar el bloc de moviment que sé que existeix, es mou 10 passes. Així que anem a veure què passa aquí si joc aquest joc. Per sort no va massa lluny. Encara puc tipus de agafar- per la cua i estirar-lo cap enrere. Però el programa segueix funcionant, pel que és una espècie de lluita contra mi. Però seria una mica agradable si condicionalment arreglar això en el codi. A causa que aquest és no-- En realitat això és realment no és un joc divertit per a qualsevol persona de qualsevol edat. Així que anem a tractar de fer això tenir algun tipus de condicions. Així que em vaig a anar sota Control i, a continuació, si. M'agrada aquesta idea. Així que després de moure 10 passos, si: m'ho dius a mi percebo on sóc. Vaig a passar per sota de detecció, i després es veu que puc anar aquí. remar als partits de forma. La mida no, però és creixerà per omplir. I ara això és un petit menú. I ara ratolí pointer-- no ho faig volen el ratolí, vull que la vora. Així Scratch és prou intel·ligent com per saber quan un sprite està tocant la vora. Què és el que vull que faci realitat? Déjame anar endavant i canviar de marxa. Tu saps que? Vaig a comptar amb ell la tornada. Així que als 15 graus no és realment m'ajudarà. Vull que la tornada i anar a un altre costat. Així que anem a veure què passa aquí, si em va colpejar Juga ara. OK, tipus d'aspecte estúpid, però que està fent exactament el que vaig dir. I és que gira tot el sprite. Ara resulta que puc arreglar això. I jo no sé com per solucionar aquest problema al principi. Jo com que havia de futz voltant i veure la millor manera de fer això. Però si vaig A-- veurem, el moviment. Oh, em vaig trobar amb això. En realitat, Set Estil Rotació. Esquerra, dreta, o no rotar, o per tot arreu. I resulta que és el que vull. I jo vaig a posar això no és el meu llaç, perquè jo no necessito fixar l'estil rotació múltiples vegades. Vaig posar-lo en la part superior de la aquest programa de manera que s'estableix una vegada, i després recorda. I ara vaig a provar aquest nou. Permetin-me aturar-me programa. I ara que fixa aquest error. Així que estic iterativa millorar en això. El programa és aconseguir un poc més complex i més gran, però m'estic prenent passos de bebè per així dir-ho, i mossos petits fora del problema per aconseguir millor i millor. Però això també, és una mena de coixos. Tu saps que? Demanaria a algú amb una molt bona, veu espantosa com per arribar? Algú amb una veu. Uh, sí. Anem cap amunt. A la camisa verda. Així que resulta que hi ha alguna altra diversió coses, l'estètica i sons per igual. Aquí està el miol. Faig clic a la pestanya Sons. [Miol] No és el miol. [Miol] [miol] [Miol] --actually gravar alguna cosa de la nostra pròpia aquí. Així que farem exactament això. En lloc d'utilitzar aquest so gat, anem a endavant aquí, i quin és el teu nom? Nick, un plaer conèixer-te. És David. Així que en un moment, vaig per colpejar el botó de gravació. I si pots simplement cridar al portàtil, "ouch", com si acaba d'entrar a la paret, que serà molt apreciat. 1, 2. NICK: Ai! DAVID J. Malan: Awesome. I ara es pot fer una mica d'edició aquí. L'anar a desfer-se de les parts tranquil·les. I crec que això és bo. Moltes gràcies. NICK: Plaer. DAVID J. Malan: No tinc simplement li va canviar el nom "ouch" però ara em vaig a tornar als meus guions. I fixin-se en efecte, hi ha so aquí. I vaig a seguir endavant i reproduir el so ouch, i jo vaig a fer que si que està tocant només les vores. I després vaig a ha de donar la volta. Així que anem a veure el que passa aquí. Anem a pantalla completa. [REPRODUCCIÓ DE VÍDEO] -Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! [FI DE REPRODUCCIÓ] DAVID J. Malan: Llavors t'adones que estem posant una mica de sort. Vaig a tenir-ho moviment com 100 passos alhora. L'efecte que ara es va a ser-- [ORDINADOR glitch SOUND] Així dins del que és raonable. Així que l'oportunitat de refinar que més si realment volem. Així que ara anem a introduir un altre concepte. Per deixar-me anar en una sola trucada Compte d'ovelles i l'ús una mica anomenat una variable. Es tracta d'una petita ovella adorable, i He canviat el vestit per així dir-ho. Així que, encara que el valor per defecte és un gat, vostè pot carregar, es pot dibuixar, vostè pot fer qualsevol nombre de personatges en el teu sprite. Heus aquí un programa que és farem el que en anglès? Basat novament el just el que sap ara. Què fer aquest programa? Sí, va explicar. Un nombre cada vegada. Tenim pel que sembla, tenen aquest comptador conjunt. No sé el que és això, però potser es tracta d'una variable. És només un contenidor, xo i. Però la paraula de comptador és més descriptiu que x del matemàtic o i. Així que podem fer servir les paraules en anglès per a les coses. Sempre, només significa seguir fent això. Digui taulell. Ara, ¿on ha sortit això? Bé, resulta que comptador és una variable. Així que és només un altre puzle peça que va crear amb antelació. I tot i que succeeixi de no ser la mateixa manera aquí, normalment diries una mena hola aquí. També pots arrossegar una variable de manera que això és el aconseguim dir. Llavors espero un segon, canviar el comptador en un, incrementant per l'addició d'un. De manera que l'efecte net és aquesta ovella recompte adorable. Tot i que està comptant a si mateix. Ara és molt ràpid va ser avorrit perquè ell va a fer això de veritat per sempre, però això és exactament el que el El disseny del programa de recepta. Tractarem ara un altre exemple que aprofita una variable. Aquest anomenat Hola Hola Hola, que no ser molest ràpidament. Ara aquest té dos guions. I així, un cop més, estem donant passos de nadó. Comencem amb una mica súper petit, afegit a la mateixa, afegit a la mateixa. Ara vull fer alguna cosa encara més dinàmic, així que vull estar escoltant per dues coses diferents alhora. Així que a l'esquerra, quan bandera verda es fa clic, Em vaig posar una variable que vaig escriure amb antelació anomenada silenciat. I jo arbitràriament vaig posar a 0. Així esgarrapades no té veritable i falsa, però té 0 i 1. Així que pot aproximar-se a la mateixa idea. I després per sempre, si la barra d'espai és pressionat, a continuació, estableixi la variable a 0. O ho sento. Si es prem l'Espai, i si silenciat, la variable, és 0, a continuació, establir silenciat a 1, un altre conjunt silenciat a 0. Això sembla una cosa així com estem simplement fent i desfent la feina. Però quin és l'efecte? Cada vegada que em va colpejar la barra d'espai, el que passa al meu variables anomenada silenciat, lògicament? Una cosa així aconsegueix capgirat. Es canvia de 0 a 1, o de 1 a 0. Així que va prendre un parell de quadres per expressar això, però tot Que estic fent és alternar l'estat de aquesta variable a 0 o 1, o 0 o 1 cada vegada que em va colpejar la barra d'espai. Ara aquí, què està fent això? Sempre, si silencia és 0, així que si silenciat és fals. Així que si no està silenciat, és el semàntica allà, juguen so lleó marí, i pensar hi hi hi per a dos segon, espereu dos segons. Així compte ara aquests scripts són efectivament va a executar en paral·lel de manera que un pot estar escoltant una acció, l'altre per prendre una decisió sobre la base d'aquesta acció. I pot fer això per sempre. [LLEÓ DE MAR Barking] [LLEÓ DE MAR Barking] Es va a fer això per sempre i [LLEÓ DE MAR Barking] com jo acabo de fer. I ara està encara en marxa però jo tinc "silenciat" el joc. [LLEÓ DE MAR Barking] I això és tot aquest tipus fa ara també. Obrirem un altre exemple aquí. Déjame anar a esdeveniments, i ara aquest adorable també. Però noti que té dos sprites. Així que no només dos guions amb d'un sprite, sinó dos sprites. I si faig clic al noi de color blau com jo ja tenen, veig que com un programa aquí que, literalment, només diu això, quan rebo un esdeveniment, dir "Pol" durant dos segons. Així que si alguna vegada has jugat en piscina, el joc de Marco Polo, si el guió noi taronja és una indicació, pel que sembla, cada vegada que em va colpejar la barra d'espai, ¿Quin és el tipus de taronja va a fer? Ell dirà "Marc". I llavors aquest és un nou bloc. No hem vist això abans, però retransmetre un esdeveniment. I podria dir- res esdeveniment que volem. Tornarem a aquest potser en poc temps. Però la difusió d'un esdeveniment És una manera per a una Sprite parlar amb un altre per essencialment passant-lo a un missatge. No és un missatge que es veu. No és una cosa visual. És una espècie d'un missatge ordinador que l'altre noi està escoltant. Perquè de fet, el noi de color blau, el record no té bandera verda quan es fa clic. El lloc té, quan rebo un esdeveniment. Quan ell es va lliurar aquesta nota a la classe, per així dir-ho, ha de dir "Pol". I pel que l'efecte net és que quan jo va colpejar la bandera verda, no passa res. Però quan vaig arribar a la barra d'espai, diu "Marc", ell respon amb "Pol". Però l'única sprites estic interactuar amb és el taronja. Així que aquesta és una forma de tipus de passar missatges entre sprites i que ells es comuniquen un amb l'altre. Ara donem una ullada a una última un aquí anomenats fils. I notar això per jugar-lo. Així que aquests són dos sprites. L'au és una espècie de volant voltant. Ell està rebotant. No hi ha "ouch", però la mateixa idea. Però el gat sembla molt intel·ligent. Quin és el gat aparentment fent? I esperar. Quin és el gat aparentment fent? No es tracta només de rebot. Està seguint l'au. I així, segons sembla, hi ha una manera amb una combinació de blocs aquí-- i anem a veure el gat molt ràpid. Sempre, si tocar ocell, després jugar el Lleó 4, sigui el que sigui el so. Hem escoltat una vegada. Altrament, apuntar cap ocell, i moure un sol pas. Ara bé, el fet que és un pas és el que li dóna l'ocell una mica d'avantatge al principi, però si en el seu lloc fer d'aquest 10, per exemple, per la que cada iteració del bucle que està en moviment 10 passos de temps. Per tant més espai. Anem a veure el que passa a continuació. [LION ROAR] No tot el que molt millor. Així que ara anem a tractar de millorar la a aquests una mica de forma iterativa, i tornar a la noció d'una funció. I, de fet un dels fonamentals menjar per emportar del disseny de la classe. No només l'escriptura de programes que funcionen i que són correctes, però estan ben dissenyat. I el disseny és molt més subjectiu, i vostè aconsegueix millor en el temps. Però anem a prendre alguns passos de nadó cap a començant amb un programa que funciona, absolutament, però no és molt bo. No està molt ben escrit. Així que aquí hi ha un programa que fa això. Tos, tos, tos. Què fa el programa sembla? Sembla correcte per a mi. Està dient sofà per un segon, llavors s'espera. Llavors diu de nou, llavors s'espera. Llavors diu de nou, llavors s'espera. I llavors el programa implícitament acaba, perquè no hi ha bucle. Però per què és un programa mal escrit? Fins i tot si mai has programat abans? Igual, el frega la camí equivocat, potser aquí? Sí? AUDIÈNCIA: [inaudible] DAVID J. Malan: Exactament. Estàs repetint a tu mateix una i altra vegada. I, literalment, He copiat i pegat dos d'aquests blocs i una altra. I això és exactament el tipus de seny i comprova que vostè ha de fer. Espera un minut. He realment estar fent això? Llavors, què és això el que és el solució òbvia, potser? Tenen algun tipus de llaç. I jo recordo no del tot el que la peça del trencaclosques és, però si miro el següent iteració aquí, de fet, no hi ha només el bucle per sempre, no repetir un nombre de vegades. I així he especificat 03:00. I ara compte del molt més ajustada, com molt més succinta aquest programa és. I en cert sentit, com molt més fàcil de mantenir. Si vull canviar la paraula de la tos a una altra cosa, com achoo, com si estigués esternuts. Llavors el canvi en una lloc, i no tres. Així que això ja se sent com lleugerament millor disseny. Déjame tos lloc obert 2, el nostre tercer exemple. Observi com un científic de la computació, Començo a comptar a 0, en general. Ara bé, això es veu una mica més aterridor en primer, però l'efecte és el mateix. Tos, tos, tos. Però el que sembla ser, fonamentalment, nou a la part superior del programa? He tret la paraula. He tret l'espera. ¿I què tinc jo vaig connectar al seu lloc? Una funció. Un bloc de la tos. Vull dir, francament, em sembla classe d'un idiota si no ho feia només començar amb el bloc això és aparentment anomenat "tos", si això és tot el que vull que faci. Però això no existeix en Scratch. Més aviat em vaig anar a la una de la paleta de flama Més Blocs aquí, i m'arrossego aquesta gran cosa porpra aquí que em permet definir una funció. En essència, em deixa crear el meu propi trencaclosques peça que es pot trucar qualsevol cosa que jo volem, que pot fer el que vulgui, però li dóna un nom. Em fa una nova peça del trencaclosques de color porpra que ara fa el que li dic que faci. Així que aquesta peça porpra aquí correspon a aquest d'aquí. I què fa? Diu la tos per a un segons, i després s'espera. I ara que he creat una mena de la meva pròpia peça del trencaclosques d'encàrrec, de manera que es comporta exactament la mateixa manera. Així que puc seguir fent això. I, de fet, no hi haurà més i més oportunitats per a la modularització, i per l'estratificació, la complexitat a la part superior d'un a l'altre. Però aquesta idea bàsica, de fet en el problema va dir 0. Què vas a el repte de fer és descarregar Scratch, o simplement usar-lo a la web, i divertir-se amb ella. Li donarem una sèrie de requisits, que té un so, i cert nombre de peces d'un trencaclosques. Però que va a fer exactament això. I t'adones que vas a voler prendre alguns passos de nadó en un principi, fins que el programa es fa cada vegada més complexa. Però tenint en compte aquest és el millor manera que podia fer això? Puc evitar aquest instint potser, copiar i enganxar? Però abans de problemes 0, i abans d'aixecar la sessió, pensem que seria millor agafar-ne un més voluntaris si poguéssim, per a un programa final aquesta és potser la més ajust en absolut, donat lloc actual. Anem cap avall. Sí. Sí. Com et dius? UH oh. Està bé. Tots dos vénen a baix. I jo tinc s'ocuparà d'això d'alguna manera dins d'aquest pròxims deu segons. Així que anem cap avall. Anem cap avall. Déjame entrar a fins aquí. Vine. Tot bé. Anem a veure aquí. Així compte molt ràpid aquí, si vols venir a endavant. Farem dues rondes d'això. ¿I quin és el teu nom? SABRINA: Sabrina. DAVID J. Malan: Sabrina i? YING GEE: Ying Gee. DAVID J. Malan: Ying Gee. Encantat de conèixer tots dos. En David. Així que el nostre últim exemple aquí és anomenat joc més difícil d'Ivy. I per què no tenim que facis Nivell 1, i vostè fan Nivell 2. I veurem fins on més enllà que en realitat anem. Escrit per un estudiant l'any passat, remesclat per mi de manera que això aniria més aviat a New Haven. I et dono un joc que va a involucrar moure les fletxes amunt i avall, i aconseguir de Yale a la línia de meta. Som-hi. [REPRODUCCIÓ DE VÍDEO] [MÚSICA - NFL A FOX Theme Song] [MÚSICA - MC HAMMER "U POT NO TOC  AQUESTA "] -U No pot tocar això. U no pot tocar això. No pot tocar això. El meu, el meu, la meva, la meva música em colpeja tan dur, em fa dir, oh, senyor. Gràcies per bendecirme amb una ment a la rima i dos peus bombo. Això és bo quan saps que estàs a baix. Un Homeboy droga súper Del Oaktown. I jo sóc conegut com a tal i això un batec uh, no es pot tocar. Et vaig dir que Homeboy U no pot tocar això. Sí, això és el que estem vivint i saps U no pot tocar això. Mireu-me als ulls, l'home. U no pot tocar això. Jo, deixa bust el funky lletres. U no pot tocar això. Noves puntades i pantalons frescos. El tens com aquest i vostè sap que vol ballar. Així que moure del seu seient i obtenir una mosca noia i atrapar aquest ritme. Mentre s'espera rodar a bombar una mica poc i fer-los saber el que està passant. Així. Així. Freda en una missió tan tiri cap enrere. Faci-ho saber que vostè és massa i aquest és un moviment uh no es pot tocar. Jo, t'ho vaig dir U no pot tocar això. Per què vostè hi era home? U no pot tocar això. Jo, sonarà a l'escola de la campana, garrí. U no pot tocar això. Dóna'm una cançó, un ritme fent-los suor que és el que els estic donant ara. Ells saben quan es parla de la Hammer es parla d'un espectacle que és exagerada. I els cantants són ajustats sudoració pel que els passi un micròfon. O una cinta per saber què que va tenir i ara ell va a cremar les cartes. Legit ja sigui un treball dur o que també podria deixar de fumar. Perquè saps U no pot tocar això. U no pot tocar això. Perd el control. Pare. Temps Hammer. Anar amb el corrent en un gir si no es pot moure a aquesta llavors probablement estàs mort. Així que agitar les mans en l'aire [inaudible] Aquest és un ball guanyador això i vas a obtenir més prima. Moveu llisqui el cul només per un minut anem a tots fer el cop. Sí. U no pot tocar això. U no pot tocar això. Serà millor que publicitat noi U no pot tocar això. Anell de retorn de l'escola campana. Perd el control. Pare. Temps del martell DAVID J. Malan: Això és tot per CS50! Moltes gràcies per estar amb nosaltres! Ens veiem fora. [FI DE REPRODUCCIÓ] [REPRODUCCIÓ DE VÍDEO] [MÚSICA - "Seinfeld", tema musical] -Escolta David. -Escolta, David. Com va? -Bon Treball, avui dia. -Llavors Has pensat en el que que vas a fer per les bromes fora? -No, No tinc res. -Què Si: ¿i si aquesta és la broma fora? -Com, Descarregada carros? -UH huh. Ja saps, es tracta de res. -Així Que desitja, no hi ha història, no hi ha conflicte, sense resolució. No entenc. De què tracta llavors? -Res. -Així Que tenim fora broma és sobre res, i que no tenen els actors. Qui va a estar en això? -No no No. Vull dir, vaig a ser-hi. -Tindràs Estar en ella? -Sí! La gent sempre està dient jo sóc un personatge. -Bé, Vull dir, és veritat. Però, ¿qui més va a ser-hi? No pot simplement ser tu. -Vostè Hi haurà en ella, Gavin, Dan, Donen, Colton, Z'Myla, Alysse, Doug, David, tothom. -Així Que es tracta del no res, i tothom que està en ell? -absolutament Res. -Això És ridícul.