[Video speel] [Motordeur kluitklap] [Motorenjin VANAF] [Speel van musiek] -Moving Reg langs soek goeie tye en goeie nuus. Met goeie vriende wat jy nie kan verloor nie. -Dit Kan 'n gewoonte geword. -Opportunity Stampe Kom net uit te reik en gryp dit. -Yeah! -Saam sal ons dit vang. -We'll Haakplek staptog, bus, of geel taxi nie. -Dammit. -We're Beweeg reg langs. -Footloose En fancy gratis. -Getting Daar die helfte van die pret. Kom deel dit met my. -We're Beweeg reg langs. -We're Gaan die las deel. -Ons Het nie 'n kaart nodig kry hierdie show op die pad. Hey Fozzy, ek wil hê jy moet links draai as jy kom na 'n vurk in die pad. -Ja, Meneer. Draai links by die vurk in die pad. Draai links. -Ek Glo nie dat. -Cruising Reg langs ons gevind die ligte op die snelweg. -en Jou pad of my pad. -So vertrou my navigasie. -Film Sterre met flitsende motors en die lewe met die top-down. -We're Storm die groot heuwels. -Yeah, Storm is reg. Moet dit sneeu? Nee, ek dink nie so nie. -Moving Reg langs. -Footloose En fancy gratis. -You're Gereed vir die groot tyd. -Is Dit gereed is vir my? -Moving Reg langs. Beweeg reg langs. Beweeg reg langs. Beweeg reg langs. -Ek Dink dat jy 'n beter trek oor. -Ja, Meneer. [Einde afspeel] [Applous] DAVID J. MALAN: Dit is CS50. En dit is die einde van die week 0, maar die begin van 'n pragtige vriendskap. Ons is so opgewonde om te wees hier by Yale Universiteit vir die heel eerste keer met ons vriend Scaz en Jason en Andy. Alle 40 van CS50 se TF se en CA is hier by Yale. En almal van julle. En in die feit, is dit waarskynlik die tyd aan- [Applous] So, selfs al is die meeste van die lesings sal inderdaad in Cambridge vanjaar Die realiteit is dat deur die ontwerp en baie doelbewus in CS50, Ek dink ons ​​nader die punt tegnologies en pedagogies, waar dit 'n beter opvoedkundige kan ervaring om betrokke te raak met 'n paar materiaal aanlyn die kursus se. Trouens, die reality-- en as ek glo hierdie philosophically-- is dat lesings is nie 'n besonder doeltreffende manier vir die lewering redelik komplekse inligting. Beslis oor n uur plus 'n lang strek van die tyd. En inderdaad elke paar minutes-- Ek onthou myself in college-- jy wegraak vir 'n oomblik, jy 'n paar komplekse onderwerp mis, en jy pretty much gegaan vir die volgende 45 minute. En die werklikheid is dat die vraag of jy hier is in New Haven of Cambridge of buite die eenvoud van ' die vermoë om te breek en vinnig vorentoe, rewind, hyperlink na verwante hulpbronne, soek volledige teks transkripsies en dies meer is 'n geleentheid wat Durf ek sê vir ons aanlyn studente ver buite New Haven, bied hulle 'n geleentheid om werklik verstaan ​​wat die konseptuele materiaal wat ons stel in lesings al hoe beter. Maar uiteindelik in CS50, is ervaring van die studente se so gekenmerk, soveel meer deur die loop se probleem stelle, of weeklikse ontwikkeling projekte, die afdelings natuurlik se gelei deur die onderrig genote, die nagtelike kantoorure gelei deur die kursus assistente en die onderrig genote, en inderdaad sulke gebeure as CS50 legkaart Dag CS50 se Hack-a-thon, die CS50 Fair, weeklikse middagetes, en soveel meer. En so of jy hier is in New Haven, of tuning in die verte, Vandag in Cambridge, en ons sal julle weer sien gou, die werklikheid is dit is een en dieselfde klas. En ons is so opgewonde om wees hier almal saam vandag. En so aan die einde van die semester, of hier of ver, goed Hopelik sal jy trots dra, gelukkig, en miskien met 'n bietjie van verligting, die hemp wat getuig om jou CS50 geneem. So waar het ons vertrek af op Woensdag? Ons het 'n blik op computational denke. En dit is die rigting wat ons gedistilleerde Rekenaarwetenskap vir ten minste vir nou. Maar ons gedistilleerde dit bietjie verder in ten minste drie komponente elemente. Insette, so wat is die probleem wat ons probeer om op te los? Uitsette, wat is die beantwoord ons hoop om te kry? En die verteenwoordiging van daar. En ons sal nie op woon hier na op binêre, of selfs ASCII, en die soos so baie nie, maar eerder as vanselfsprekend dat ons hierdie inligting kan verteenwoordig, omdat die veel meer interessante dele van die probleme is nie net die insette en uitsette, maar die algoritmes wat gaan in die oplossing van die probleme. En jy kan onthou uit die ander dag dat ons het 'n redelik tradisionele konsep van soek iemand op in 'n redelike groot telefoon boek, of meer algemeen digitaal hierdie dae, net 'n baie groot datastel. 'N baie groot kontakte lys, met baie van die name alfabeties gesorteer. En ons besef dat, terwyl ek kon hierdie probleem eenvoudig benader deur die gebruik van 'n lineêre approach-- per bladsy, of selfs twee se op 'n time-- ons besef dat die meer intuïtief algorithm-- net soort van verdeel en verower weer die probleem, en weer, en again-- dit halveer met mekaar tyd, het ons hierdie groen gevolg. En dit is so baie platter want dit dui dat selfs as die probleem kry groter en groter, soos in die geval van hierdie dae met data stelle en reality-- Facebook en Google resultate en die like-- doen ons algoritme voer net so effektief met dié groter byt soos dit gedoen het, selfs met die kleiner byt. Nou is dit lei tot die vraag, wat kan ons eintlik los insgelyks met hierdie soort van intuïsie? Hierdie soort van verdeeldheid en verower? Wel, ons kan iets te doen soos dit vandag hier. Ons kon bywoning te neem. So miskien soos 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11-- gaan nie alles wat doeltreffend te wees. So wag, graad skool. 2, 4, 6, 8, 10, 12, 14, 16, 18 en so meer. Maar ons kan 'n bietjie beter te doen? Ek is redelik seker ek kan nie doen dit deur myself. So as jy sal humor ons vir net 'n oomblik, ons het met ons 'n algoritme wat net 'drie stappe, maar dit beteken require-- as jy nie mind-- almal van ons staan, As jy wil. So, met al van ons nou staan, stap een van hierdie algoritme is die volgende. Staan op en wys jouself die nommer 1. So op hierdie punt in die tyd, letterlik almal in hierdie kamer hopelik dink vir hulself, egter ongemaklik, die nommer 1. Stap nou twee van hierdie algoritme gaan na die volgende te betrek. Stap twee, paar af met iemand staan, Voeg jou getalle bymekaar, en neem die bedrag as jou nuwe nommer. Vinnige gesonde verstand tjek. Watter getal is almal dink nou? So 2, behalwe miskien vir een, ongemaklike, eensaam persoon. As ons 'n onewe aantal van die mense in die kamer. So 'n persoon kan nog steeds die nommer 1, is dit goed. Maar stap drie hier, een van julle moet sit. Die ander moet terug te gaan om te stap twee, en herhaal, as jy wil. So as nog steeds staan, moet jy wees onder diegene terug te gaan na stap twee. Die gang te hou. 'N Paar mense nog steeds staan. Dus, as nog steeds staan, saam te werk met iemand. Alle reg, kwynende af. 'N Paar mense nog steeds staan. Ek sal jou help indien nodig. Onthou die sleutel afhaal hier, is hoe baie vinniger is dit as ek tel. So laat ons sien. Ek kan help. So watter getal is jy nog dink? GEHOOR: Ek is op 44. DAVID J. MALAN: 44, so jy gaan voort en gaan sit. Watter getal dink jy van? GEHOOR: 74. DAVID J. MALAN: 74. Alle reg, gaan voort en gaan sit. Wie anders is nog steeds staan? 86. En is iemand anders nog staan? Watter getal? Ek het gehoor 67. En dan in die top? 32. Enigiemand anders nog staan en dink aan 'n getal? O, hi. Jammer. Gou terug. 42. Iemand anders? GEHOOR: 47. DAVID J. MALAN: 47. Is daar iemand anders nog staan wat nog nie getel? So die finale aantal mense in 'n kamer wat 497 sitplekke is-- wat almal is filled-- is 390. So dit is 'n groot. Ons sal binnekort bespreek die idee van 'n fout in 'n rekenaar program. Maar ons sal terug kom voor lank. Maar in teorie, wat kan het nou net gebeur? So selfs al drie groot was daar stappe om hierdie algoritme elkeen van daardie was net soort van 'n groot operasie. En daar was hierdie cycliciteit om dit in dat as jy is nog steeds staan, jy gehou gaan van stap 1:57, stap 1:57, stap 1:57. Maar wat gebeur het op elke iterasie? Elke siklus van hierdie lus? Wat gebeur het elders in die kamer? Nie net die dieselfde ding, maar wat gebeur het om die helfte van jou? Sit. En so is daar in leuens hierdie insig, baie soos die telefoon boek byvoorbeeld in dat as die helfte van julle is elke keer sit die probleem is die begin met miskien 400 mense, dan 200 mense, as 100 mense, dan 50 mense, en so meer. En so het ons besnoeien in teorie om net een persoon, dink aan die totale waarde van almal. Nou werklikheid, 'n paar sosiale dinamika, en 'n paar rekenkundige foute kan bydra tot daardie uiteindelike fout. Maar in teorie, terwyl ek nog toe weg, neem 'n paar dosyn stappe, of honderde stappe om julle te tel, te tel 'n volle kamer van 500 of so mense moet veel minder stappe geneem het, omdat jy net kan verdeel 500 en 1/2 so baie keer. En so, net soos met die telefoon byvoorbeeld bespreek die ander dag, het ons iets logaritmiese om so te praat, waardeur as ons was almal wat in harmonie, en ignoreer die Daarbenewens foute, sou ons het presies bereik dat die soort van loop van die tyd? Nou eerlik te wees, soort van verneuk, in dat ek 'n ander aged hulpbron. AANGESIEN dit is net een van my Ek aged honderde jou. Maar wat kan gesê word dat 'n wees voorbeeld van parallelle verwerking, of 'n staat van die kuns baie in die mode waar rekenaars hierdie dae het verskeie CPUs, of meer tegnies meer verskeie cores, en kan werklik verskeie doen dinge op een slag, baie soos jy al is ons daar doen, in parallel. Maar onthou dat dit wat ons ook gedoen het op Woensdag is probeer om hierdie intuïsie vang en formaliseer dit in die kode. Iets soos pseudo-kode. En in die feit, en ek hoop dat jy vergewe, dit is soos 80 grade in hier. So ek gaan om dit te neem af vir net 'n bietjie. Wat ek gedink ons ​​wil doen, is die oorgang nou 'n aansoek waardeur ons weer betrek die gehoor, maar 'n program skryf in Engels soos sintaksis, waarmee hierdie probleem op te los hier. [Video speel] -Dit Se grondboontjiebotter jellie tyd. Grondboontjiebotter jellie tyd. Grondboontjiebotter jellie tyd. Manier ya! Manier ya! Manier ya! Manier ya! Nou is daar gaan jy! Daar gaan jy! Daar gaan jy! Daar gaan jy! Grondboontjiebotter jellie! Grondboontjiebotter jellie! Grondboontjiebotter jellie! Grondboontjiebotter jellie! Grondboontjiebotter, grondboontjiebotter jellie! Grondboontjiebotter jellie! Grondboontjiebotter jellie met 'n baseball bat. [Einde afspeel] DAVID J. MALAN: --that video, maar dit is 'n bietjie verslawend, indien nie 'n bietjie lastig. Maar om dit te doen, het ek gedink wat ons wil doen is probeer om 'n program saam te skryf, waarvoor ons moet drie vrywilligers. Het om gemaklik te word op kamera en die internet. Sam, kom op op. Pers hemp, reg hier, kom op op. En van hier, laat my gaan 'n bietjie verder terug. Bloedrooi en blou hemde, kom op op. Volmaak. Kom nou. Kom op, kom op op. En wat is jou naam? Erica. David, lekker om jou te ontmoet. As jy wil om dit te sit hier neem. Dit is Sam. Wat is jou naam? Antonio. Antonio, lekker om jou te ontmoet. Erica en Sam, as jy wil graag 'n plek hier hê. Wat ons bereid kom met, as hierdie ouens ontdek, is die bestanddele waarmee maak 'n grondboontjiebotter en jellie toebroodjie. Nou is dit dalk iets wees dat neem jou baie as vanselfsprekend aanvaar. Maar ons het elke gegewe van ons drie vrywilligers here-- twee vrywilligers en Sam hier, 'n brood elk, 'n bord, 'n mes, 'n pot van jellie of konfyt, en 'n pot van grondboontjiebotter. En die doel aan die hand is nou gaan wees vir die drie 'n grondboontjiebotter maak en jellie toebroodjie. Maar wat ons gaan doen, is om te verwag die audience-- sedert almal van julle sekerlik weet hoe om te doen hierdie so goed in reality-- gaan ons te voorsien met die stap vir stap instruksies. Die pseudo-kode, as jy wil. So sal ek die rol van skrywer hier te speel. En ek het 'n bietjie te-doen lys het, en so elkeen van julle, een op 'n tyd, roep 'n potensiële instruksionele, sal ek skryf dit neer, herhaal dit as dit nodig is. En dan moet jy ouens gaan maak 'n grondboontjiebotter en jellie toebroodjie net deur te doen wat jy vertel. So dink julle as rekenaars. Jy kan net doen wat jy gesê het. Geen aannames, geen vrae. Jy hoef net om dit te doen. So wat wil waag die eerste opdrag vir die maak van 'n PBJ toebroodjie? Op die balkon is daar. GEHOOR: Maak die sak van die brood. DAVID J. MALAN: Maak die sak brood, as jy wil. So laat ons sien. Kom ons Itereer, en kry 'n bietjie meer akkuraat. Goeie manier om al begin. Stap twee, iemand anders. Nou wil niemand om vrywillig. Stap twee, in die voorkant. GEHOOR: Maak die innerlike sak brood as well. DAVID J. MALAN: Maak die innerlike sak brood as well. Groot, leer ons. 'N bietjie meer akkuraat. Kom ons kry dit werk. Ja, in die groen hemp. GEHOOR: [onhoorbaar] DAVID J. MALAN: Snye brood. Verwyder versigtig twee snye brood. Dit is goed. Stap vier, iemand anders? Hier, ja? GEHOOR: [onhoorbaar] DAVID J. MALAN: Place brood op plaat. Stap vyf? Stap vyf, ja? GEHOOR: [onhoorbaar] DAVID J. MALAN: Op die top of-- oh, hand. Plaas hand op die top van grondboontjiebotter. Is dit wat ek kop? GEHOOR: Ja, en skroef. DAVID J. MALAN: And-- sê dit weer. GEHOOR: [onhoorbaar] DAVID J. MALAN: En sit die deksel langs die grondboontjiebotter. Liggies plaas hand op top van grondboontjiebotter, en skroef, en sit die deksel langs die grondboontjiebotter. OK, stap ses. Stap ses iemand anders. Ja? GEHOOR: [onhoorbaar] DAVID J. MALAN: Sê dit weer. GEHOOR: Herhaal stap vyf weer. DAVID J. MALAN: En Herhaal stap vyf weer wat gaan om te skep 'n bietjie van 'n probleem nou as ons doen dit stap vir stap. So nou terug te gaan ons om te stap vyf. Liggies plaas hand op die top grondboontjiebotter en draai en sit deksel langs die grondboontjiebotter. Gryp dan die grondboontjiebotter en stap vyf herhaal. So ons sal ignoreer wat oneindige lus, as jy wil. Stap sewe iemand anders. Ja, in die rug. GEHOOR: [onhoorbaar] DAVID J. MALAN: --on top van die ander. GEHOOR: [onhoorbaar] DAVID J. MALAN: Op die ander hand op die ander top. Wil jy net kom hier? Hoe kan ek die opdrag te voltooi? Wat is die res van die opdrag? GEHOOR: ignoreer wat deel. DAVID J. MALAN: ignoreer wat deel. Kom ons begin oor. Stap sewe. GEHOOR: [onhoorbaar] DAVID J. MALAN: begrip met opponerende hand-- dit is goed. Dit is eintlik 'n goeie. GEHOOR: [onhoorbaar] DAVID J. MALAN: en plastiek jar-- GEHOOR: [onhoorbaar] DAVID J. MALAN: En twist-- GEHOOR: [onhoorbaar] DAVID J. MALAN: Vir twee sekondes. Net oop die grondboontjiebotter jar. Ek hoop jy sal vergewe. So laat ons veronderstel ons daar aankom. Maak die grondboontjiebotter jar. [Applous] DAVID J. MALAN: Stap agt, laat ons gaan. Stap agt, ja, in die rug. GEHOOR: [onhoorbaar] DAVID J. MALAN: Goed. Stap nege, ja? GEHOOR: [onhoorbaar] DAVID J. MALAN: --out van die grondboontjiebotter jar. And-- en wat? GEHOOR: [onhoorbaar] DAVID J. MALAN: En sit die mes terug in grondboontjiebotter. Stap tien. Stap tien. GEHOOR: [onhoorbaar] DAVID J. MALAN: Sit die mes uit en verwyder dan die seël. Nice. Off die grondboontjiebotter. Alle reg, stap 11. GEHOOR: [onhoorbaar] DAVID J. MALAN: OK, grys rekenaar volg blou of rooi rekenaar. Goed. [Applous] DAVID J. MALAN: Bring ons huis. Paar meer stappe. Wat is volgende? Stappe 12. Stap 12. Ja? GEHOOR: Sit een van die snye brood liggies op een van jou hande. DAVID J. MALAN: Een van jou hande. En dan, stap 13. Ja? GEHOOR: [onhoorbaar] DAVID J. MALAN: --on sny brood. Goed. Redelik goed. Stap 14, ja. GEHOOR: ongedaan stap 13. DAVID J. MALAN: ongedaan stap 13. Kom ons beweeg om jellie. Dit is 'n 100 stap program, maar ons was op stap 15. Ja. GEHOOR: [onhoorbaar] DAVID J. MALAN: 7 deur gebruik te maak van 13 die jellie, want dié gaan so goed. Herhaal stappe 7 deur 13, met behulp van die jellie. So gryp die onderste helfte van die jellie jar met die een hand bo-op. Aan die ander kant van die ander top, ignoreer wat deel, gryp met opponerende hande, die deksel en die plastiek jar aan die onderkant, en draai vir twee sekondes. Maak dan die jellie jar. En laastens, laat ons probeer om gee ons iets eetbaar. Stap 16. So waarom nie ons laat dit daar. Baie dankie aan Ons drie vrywilligers. [Applous] Ons het 'n bietjie CS50 stres bal vir jou. Dit gaan 'n wees sandwich but-- so wat was op die punt, as 'n bietjie pret met die algoritme? Maar die werklikheid is dat selfs wanneer Jy is 'n rekenaarprogrammering, wat jy nodig het super presies te wees. As komplekse of intimiderend as jou eie rekenaar kan baie goed wees vir julle, by minste wanneer iets verkeerd gaan, Die werklikheid is dit is 'n redelik dom toestel wat is uitgevind deur ons mense, en kan dit net doen 'n subset van wat ons do-- soms beslis faster-- maar dit beteken nie weet hoe om aannames te maak. Dit maak nie weet hoe om op te wees dieselfde golflengte as jy. Dit sal slegs presies doen wat jy vertel dit. En jy sal getref word, miskien, as ons begin skryf werklike kode met die eerste probleem stelle en verder, net hoe maklik dit is om te maak 'n aanname as 'n mens, en nie verwag ek moet hanteer daardie geval, of dat die hoek geval, om so te praat, wat dalk baie goed ontstaan ​​as byvoorbeeld Sam het die enigste handelbaar jar jellie, terwyl almal het 'n paar glasbottels as well. So voordat ons draai ons aandag aan sommige werklike kode, laat my toe om die stel koppe natuurlik se hier by Yale. Ons vriende Scaz, Andy en Jason te kom en sê hallo. [Applous] SCAZ: Ons het tydelik verloor Jason. Hi weer almal. My naam is Scaz. Ek het geleer by Yale sedert 2001. En wanneer ek nie onderrig, my navorsing is in robotika en kunsmatige intelligensie. En die aankondiging dat ek vandag is dat die begin in 'n paar weke, ons gaan bring sommige aanvullende materiaal CS50 te praat oor intelligensie sagteware. Ons gaan praat oor hoe plekke soos Netflix en Hulu kan movies beveel wat jy dalk wil om te kyk. Waar ons sal praat oor hoe bestuurder-minder motors eintlik werk. En ons sal in staat wees om die grond hierdie dinge in die konsepte wat jy leer in hierdie klas vandag. Want al hierdie dinge is gebou op die fondament dieselfde. En dit is wat hierdie reeks sal verken. So ek sien baie uit daarna om te sien meer van jou almal, en jy gaan om te kry sien meer van ons almal baie gou. Laat my dan stel Jason. JASON: Hi almal. My naam is Jason. Ek het ongelukkig Harvard as 'n Voorgraadse. Dit gaan om ontslae te sny uit die werklike stroom. En nou is ek hier as 'n dosent in die Departement Rekenaarwetenskap. En ek help loop die kursus met Scaz, David en Andy. ANDY: Hey ouens. Andy van my Naam. Ek is eintlik die enigste Yale student op die verhoog nou. [Applous] Ek is in Berkeley College, oorspronklik van Solon, Ohio. En ek was een van daardie kinders waar, wanneer Ek het gekom om Yale, Ek het regtig gedink dat ek sou nooit het om te kyk na 'n aantal ooit weer. En dan het ek besef dat jy nodig beide wetenskap en QR krediete gradueer. En so my eerstejaars lente, het ek 'n klas, 'n CS, intro CS klas hier aan die Yale. Ek was soos, dit is soos eintlik pretty cool. En terwyl ek eintlik beland verklaar as 'n globale sake groot, die vaardighede Ek het geleer in CS en programmering so van toepassing op enige veld jy kies om te doen. En die personeel hier by Yale, ons het so hard by die werk om voor te berei vir julle. En ons sien uit na al in artikel en kantoorure. So ja. [Applous] DAVID J. MALAN: Dankie. So net voor die klas begin, Ons het 'n geleentheid om rond te loop kampus met 'n selfoon en neem sommige selfies in video vorm van werklik my eerste toer van die kampus Yale se hier. En so het ons gedink ons ​​wil deel 'n rowwe cut presies dit as Scaz en Andy en Jason het my om die kampus. [Video speel] [Sirenes] -David. Welcome To Yale. Goeie om jou te sien. -Nice Om jou te sien. -Kan Ons gaan op 'n toer? -Laat Ons gaan op 'n toer. -Road Toer. -Dit Teken is daar vir 'n rukkie. -Whah, CS50. -Hurry! Gaan, gaan, gaan, gaan. Jy moet [onhoorbaar] Harkness toring. -en Het ons gesien dat 'n paar keer. [Applous] -Look Uit vir die fiets! Ahh! Hi Frank. -Wat Is up, ouens? -Hoe Is jy? Goeie om jou te sien. Welcome To die video. Tree nie te opgewonde. -Ek Is lief Silliman. Ahh! -Dit Was sowat drie uur sedert Jason het roomys en Nutella. So ons het om terug te stop by Silliman vir 'n bietjie. -Dit Is nie eens [onhoorbaar] Tog, net die feit dat hulle dit hier het, is so amazing. Dude, daar is Nutella by elke maaltyd. -Daar Was verlede jaar ook. -Yeah. -tell veel oor Yale so ver. Maar ek weet nou dat td daar. En dit is beskou kampus af. -Here Ons het Gotiese argitektuur. Wêreld beroemde. Ons het 'n paar meer Gotiese argitektuur. En konstruksie, en meer Gotiese argitektuur. Hi. Dit is waar ons is met kantoorure Dinsdae deur Donderdae in Hogwarts, as [onhoorbaar]. -Alle Reg. Dit is dit vir die toer. Ons is aan die Yale Universiteit se Law School, waar lesing vandag se oor plaasvind. Kom ons kop in. [Einde afspeel] DAVID J. MALAN: En dit bring ons nou hier. So tot dusver, het ons fokus op pseudokode, wat is hierdie Engelse-agtige sintaksis. Dit het geen voorgeskrewe spesifikasie. Dit is net 'n paar te gebruik wat jy intuïtief taal as jy wil om te verduidelik wat jy wil doen. Maar laat ons begin nou om die oorgang die kode, soos die meeste mense sou sê. Maar meer presies, iets bekend as bronkode. Dit is die taal wat mense skryf dat rekenaars ultimately-- moontlik na 'n paar aantal steps-- uiteindelik verstaan so om te weet hoe om iets te doen. Dat jy het 'n blik op hierdie dalk op Woensdag. Dit is 'n voorbeeld wat ongelooflik, underwhelming wanneer hardloop eenvoudig sê "hallo wêreld." En dit is geskryf in 'n taal, die sogenaamde C, wat is sintakties baie soortgelyk om 'n baie ander tale wat jy dalk nie weet nie, maar dalk van gehoor soos Java, en C ++ en Python en Ruby, en dies meer, en inderdaad, sal ons spandeer baie van die semester met behulp van C, en dan aan die einde van die semester, bou op dit, en die bekendstelling van 'n aantal ander tale. Onder hulle PHP en JavaScript, 'n databasis taal genoem SQL. Maar met C, wat ons sal moet hierdie bottom-up begrip van presies hoe rekenaars werk, wat jy kan doen met hulle, en hoe kan jy probleme op te los al hoe meer effektief deur hierdie gelaagdheid dat ons bespreek op Woensdag, en staan op die skouers van ander. Maar meer oor dit te kom. Vandag kyk ons ​​na 'n eenvoudiger omgewing, maar 'n fundamenteel identies omgewing bekend as Scratch deur ons vriende by MIT Media Lab. Dit is 'n grafiese programmeertaal, Scratch, waardeur jy kan sleep en drop dinge wat lyk legkaart stukke wat net grendeling as dit maak logiese of programmatiese sin om dit te doen. Maar dit gaan om ons toe te laat om 'n gesprek oor al van dieselfde programmering grondbeginsels dat sommige van julle dalk reeds weet, dat baie van julle dalk nie weet niks van sonder om eerlik kry vasgeval, in die intellektueel oninteressant sintaksis van kommapunte, en hakies, en haal, en dies meer. Al wat vroeg op, is 'n afleiding na wat interessant en werklik nuttige idees. So laat ons neem 'n vinnige blik op die omgewing hier, sodat jy weet wat wag. En in die feit, onder die speletjies wat ons kan speel is 'n paar programme wat geskryf is deur eie oudstudente CS50 se. Een van hulle, myself, ek sal hierdie een geskryf in nagraadse skool vir my. As ek 'n vrywilliger kan neem wat bereid is om te speel 'n spel vir die heel eerste keer. Seker nie. Kom up. Wat is jou naam? GEHOOR: Angela. DAVID J. MALAN: Angela, kom op op. So Scratch is uit vir 'n paar jaar. En toe ek in nagraadse skool, Ek was kruis geregistreer by MIT, neem professor Mitchel Resnick se kursus oor opvoedkundige tegnologie. En ons was onder die eerste studente in die wêreld om werklik beta toets Scratch. En my projek was wat Angela nou genade vrywillig om speel genoem Oscartime. So ek gaan om voort te gaan en dubbel kliek hier die ikoon. Dit gaan om oop te maak 'n programmeertaal omgewing wat ons binnekort sal duik in. Ek gaan die volle skerm dit Angela, hier. Ek gaan die groen getref vlag in net 'n oomblik. En dan 'n hele klomp van die asblik gaan uit die lug te val. En jy gaan om die muis te gebruik hier om werklik sleep en die asblik in Oscar se vuilnisemmer. So as jy wil om voort te gaan en klik die groen vlag, sal die spel te begin. [Speel van musiek] O, ek hou van asblik. Enigiets vuil of goor of stowwerige. Enigiets verskeurde of vrot of roes. Ja, ek is lief asblik. As jy regtig wil om te sien iets waardeloos, kyk na hierdie. Ek het hier 'n sneaker dit is verflenterde en gedra. Dit is alles vol gate hou en die veters is geskeur. 'N geskenk van my ma Die dag toe ek gebore is. Ek is mal daaroor, want it's-- DAVID J. MALAN: --green deesdae net gooi alles in die asblik. En ja, wat een van CS50 se eie personeel did-- Jordan, wat jy dalk ontmoet today-- eintlik hierdie opgedateer vir vandag se tye. En so laat my toe om oop te maak 'n remix plaas vir Angela. En ons sal dit in plaas speel 'n paar oomblikke waar nou is jy gaan hê om te besluit tussen of om iets in die asblik gooi, of dit herwin of kompos nie. So is daar 'n bietjie van druk op jou te kry hierdie reg in die voorkant van jou 392 tot 497 klasmaats hier in die saal, As jy wil. [Video speel] [Speel van musiek] -OH Ek hou asblik. Enigiets vuil of goor of stowwerige. Enigiets verskeurde of vrot of roes. Ja, ek is lief asblik. As jy regtig wil om te sien iets waardeloos, kyk na hierdie. Ek het hier 'n sneaker dit is verflenterde en gedra. Dit is alles vol gate en die veters is geskeur. 'N geskenk van my ma Die dag toe ek gebore is. Ek is mal daaroor, want dit is asblik. O, ek hou van asblik. Enigiets vuil, of goor, of stowwerige. Enigiets verskeurde of vrot of roes. Ja, ek is lief asblik. Hier is 'n paar meer vrot dinge. Ek het hier 'n paar newspaper-- [Einde afspeel] DAVID J. MALAN: --are eintlik composteren. Maar dankie aan ons vrywilligers, Angela. Ons het 'n stress ball vir jou hier. So dankie. So is hierdie een geskryf deur my. Maar nou een deur 'n werklike voormalige student wat hierdie geïmplementeer, wat is 'n spel. All in hierdie taal genoem Nuuts af, dat ons sal gou skil terug die lae van. Maar as ons wil like-- hoe oor 'n ander vrywilliger? Reg. Kom up. Wat is jou naam? Oogopslag? Lance. Lance, kom op op. Nice om jou te ontmoet. Kom hierdie manier. So hierdie een dalk 'n te hê tema vertroud sommige van julle. Maar jy sal ook die wat sien daar kan wees interaktiwiteit, waardeur jy eintlik kan die rol van die karakter te beweeg rond. Nice om jou te ontmoet. David. Ek julle gee, Pikachu. Instruksies sal oor om te kom op die skerm. Maar in kort, jy gaan wil die lekker dinge te vang, en vermy die bomme en ander dinge. Met die wysers geheel. So tref die space bar. -Pikachu. DAVID J. MALAN: Vang die dinge op die linkerkant, moenie die dinge op die reg om nie te vang. [Speel van musiek] So 'n laaste een hier. As ons een kan hê meer vrywilligers hier. Ons het gedink ons ​​iets wil herskep from-- in die geel shirt-- vanaf Woensdag. Wat is jou naam? Mary, kom op tot Maria. En onthou op Woensdag ons bekendgestel die idee van binêre en binêre bolle. Dit is nou 'n werklikheid implementering van dieselfde koppelvlak wat ons gehad het op die iPad met die lig bolle, maar hier digitaal gelewer. En eerder as 'n stress doen ball-- lekker om jou te ontmoet, David. Ons het 'n paar ligte gloeilampe van Cambridge. As jy kan, kliek op diegene bolle, om dit op en af, kom met die binêre voorstelling van sê 256. En jy sal sien in die middel, die huidige kerfstok. Sodat een is op. So die linker bietjie op. MARY: Ja, [onhoorbaar] DAVID J. MALAN: Wel, so ons het just-- oh. So dit is die kolom 128. So ons is tot 128. Ons het na 256 te kry. En jy kan geknoei op en af, geen groot deal. Of jy kan getref dat 128 meer keer as wat jy wil. Alle reg, goed. 24. Ja, al hoe nader. Nader! O, wat is die probleem dan? So, wat is die probleem? So, wat moet ons hierdie probleem op te los? Sodat ons 'n ander bietjie nodig het. En dit is perfek redelike in werklikheid, reg? As jy wil om te tel van die aantal 1-2 3 tot 4 tot 5, 6, 7, 8, 9 om werklik rol oor tot 10, is jy gaan 'n bykomende bietjie nodig het. So laat eintlik rewind hier, en kom with-- dit was natuurlik bedoel om 'n opstel te wees. Jy kan dit nie doen 256 met net 'n gloeilamp. So hoe oor bloot die aantal 50? Nommer 50. Uitstekend. 'N Groot applous Maria en haar so goed. Dankie. So hierdie topic-- opsetlike as dat was-- sal eintlik herhaal. Die grootste waarde wat jy kan verteenwoordig met agt stukkies, of een byte, is inderdaad 256. Maar nie as jy begin tel van 0, soos ons lyk te hou doen deur met al daardie stukkies af. Maar nou laat ons duik in die onderliggende implementering van hierdie omgewing, en terg uitmekaar sommige van hierdie idees. Sodat ons in 'n oomblik is oor 'n sien paar verskillende programmering grondbeginsels. Die eerste wat ons sal verklaring noem. Soort van werkwoorde, as jy wil. Aksies. Dinge wat gedoen moet word. En in 'n oomblik sal jy sien blokke wat lyk soos hierdie. Sê "hallo wêreld," byvoorbeeld. Of wag 'n sekonde. Of speel klank miauw. En inderdaad die omgewing wat ons gaan hierdie is om te doen genoem Scratch. En as ek trek Scratch sonder voorlaai enige werklike kode, Kom ons neem 'n vinnige blik op hierdie gebruikerskoppelvlak, om so te praat. Die kontroles waarmee ons interaksie. Op die top hier oorgebly het van die skerm, onder die spyskaarte, ons het die stadium, om so te praat. So Scratch is wat ons Sprite bel. Dit is 'n karakter. En hy kan beheer word deur die skryf van programme teen hom. En hy sal in staat wees om op en af ​​te beweeg en links en regs in hierdie omgewing, nie net deur die verskuiwing van die muis, maar programmaties. Ek kan hom vertel loop reg, wandel links, op, af of die wil. En ek kan ander stel sprites of karakters as well. Inderdaad, op die onderste hier waar jy sal jou lys van sprites te sien. Op die oomblik het ek net een nie, maar ek kan meer te skep, en hulle sal presies af daar verskyn. So as jy rewind vir 'n oomblik, soos Oscartime-- byvoorbeeld Oscar, aan die linkerkant, die asblik kan, was 'n sprite. En die ding in die middel, die recycle bin, was nog 'n sprite. En die kompos bin was nog sprite. En elke stuk vullis of herwinbare wat uit die hemel val is ook 'n sprite, wat elk individueel geprogrammeer. Hoe kan jy die program? Wel, hier op die regte kant is die skrifte area. En dit is waar ons kan sleep en stukke van die legkaart. In 'n week, is dit gaan wees waar ons in dieselfde kode te skryf met meer van 'n sleutelbord nie, maar vir vandag is dit sal sleep legkaart stukke, die palette waarvoor almal kan hier gevind word reg in die middel. Inderdaad, in die middel hier is daar 'n hele klomp van kategorieë van die legkaart stukke of blokke. 'N Mens se verwant aan beweging, kyk, klank, 'n pen op en af ​​gaan, data, gebeure te beheer. Nie heeltemal seker nog wat al hierdie beteken, maar jy sal sien dat hulle het is mooi gekategoriseer. En om 'n program in te skryf Nuuts af, kom ons doen presies dit. Ek gaan om mee te begin onder Gebeure, en sleep hier hierdie een. Wanneer groen vlag gebruik. Nou hoekom daardie een? Wel onthou dat ons vrywilligers vorendag gekom, die eerste ding wat ek of hulle het was dat die groen klik vlag in die boonste regterkantste hoek. En dit beteken net begin van die program. So wanneer daardie gebeurtenis, wat doen wat ek wil doen? Ek gaan om te gaan onder lyk, en ek gaan om dit te doen "sê hallo." En ek gaan om dit te verander en sê iets soos "hallo Yale." En nou gaan ek zoom , kliek op die groen vlag, en voila, ek het 'n program geskryf. Dit is nie al wat opwindende net nog nie, maar dit is presies waar elke van daardie skrywer begin, beide met Pikachu, en die binêre bolle, en Oscartime, en so baie meer voorbeelde. Jy begin super eenvoudige en dan kan jy begin om laag, en voeg op kenmerke en funksies. So, wat is hierdie lae gaan bestaan? Wel, as state, sal ons ook het dinge wat min is meer fancily genoem Boolse uitdrukkings, na iemand met die naam Bool. En 'n Boole-uitdrukking is bloot 'n uitdrukking wat is waar of vals is, ja of nee, 1 of 0. Enige polêre teenoorgesteldes soos dit. Dit is waar of nie. Maar ons gaan ook om te sien Diegene wat kan lyk soos hierdie. So byvoorbeeld, is die muis af? Hulle is soort van vrae, as jy wil. Die muis is óf af, waar of dit is nie, vals is. 1 of 0, as jy wil, geneig is om die kartering wees. Waar is 1, valse 0. Wel, wat oor minder as dit? Of so, is dit minder as dit? Dit is 'n vraag van spesies. En as jy sit twee getalle daar, óf x gaan minder as y of wees gelyk aan y, of groter as y, maar hierdie blok ons ​​sal sien, is net gaan die vraag te beantwoord, is dit minder as dit? Ons kan ook sien iets soos hierdie. Raak muis wysers. So in Scratch, kan jy vra die vraag is die Sprite raak die muis? Ander woorde, is die wyser beweeg word oor die cap, of die ekwivalent? Ons sal Anding dinge saam. Jy kan twee vrae te vra, en seker te maak dat hulle albei gee jy ja of ware antwoorde voor 'n besluit om iets te doen. Maar dan hoe kan jy besluite te neem? Wel, ons het hierdie toestande. En ons het dit gesien in ons voorbeeld van die telefoon boek. Na links of reg is vir Mike Smith. En in die toestand, wat jy iets te doen potensieel, indien 'n Boole-uitdrukking is waar. En inderdaad, kyk nou die vorms. Daar is hierdie plekhouer nou op die oorhoofse waar ons kan fit-- as ek terugdraai een slide-- wat vorm. Dit is nie heeltemal dieselfde grootte. En inderdaad, sal jy sien dat Kras grootte dinge dinamiese om aan te pas legkaart stukke, maar die vorm is wat belangrik is. Hierdie ding lyk soos wat het, en dit is min of meer dieselfde vorm dat daar moet inpas. En as ons iets wil doen hierdie manier of dat die pad, as anders, ons het hierdie legkaart stuk in Scratch as well. Gestel nou jy wou doen as, anders as, of anders. Met ander woorde, 'n drie-manier vurk in die pad. Wel, wat kan jy doen net deur die skrams op hierdie? Ek kan hierdie legkaart stuk te neem, en dit lyk nie te pas, maar weer, Scratch gaan tot-grootte weer mooi vir ons. Ek kon begin laag hierdie dinge saam. So nou het ek 'n drie-manier vurk as dit waar is, doen dit. Anders as dit ander ding is waar, gaan op hierdie manier, anders gaan hierdie ander manier nie. En in The Muppet Movie, die vurk in die pad, so te sê, tussen Yale of Stanford, was presies dit, net twee voorwaardes. Óf gaan op hierdie manier, anders gaan die manier. Wel, loops ook bestaan ​​in die ontwikkeling. En ons het hierdie reeds in gebruik klas en in pseudokode kode, en sekerlik in daardie Kras programme vir ewig. Scratch het hierdie legkaart stuk wat sal net laat jy vir ewig iets te doen. En soms jy wil om vir ewig iets te doen. Dit is nie noodwendig 'n fout, dit is want jy wil 'n horlosie om aan te hou, of 'n spel te hou speel. Of jy kan 'n beperkte aantal spesifiseer stappe, soos met hierdie herhaling blok hier wat iets sal herhaal 10 keer. Ons kan veranderlikes stel, sal ons binnekort te sien. En met veranderlikes, soortgelyk in die gees om algebra, soos x of y, z of. Dit is iets wat kan stoor simboliese 'n bietjie waarde, 'n stuk van inligting, wat jy dalk wil om te onthou vir latere. Beste voorbeeld van hierdie kan wees 'n spel waar jy 'n telling, soos in Pikachu. Hoeveel stukke van die koek en noem maar het jy vang? Wel, dit kan 'n veranderlike genoem telling wat begin by 0. En dan elke keer as ons gevang 'n stukkie van die koek of lekkergoed, of die wil, dit word geïnkrementeer. Dit word bygevoeg om een ​​op 'n tyd. En so 'n veranderlike winkels 'n stukkie inligting soos dit. Dan is daar skikkings, en ons sal kom terug na dit in 'n week of twee keer maar 'n verskeidenheid is soort van soos 'n voorraad of 'n skooltas, binne van wat jy kan virtuele dinge. Dit laat jou toe om meer te stoor as een stukkie inligting. En wat dalk nuttig wees indien dit in die spel, jy is soort van loop rond pluk dinge op. En dalk wil jy hou al daardie stukke van die koek rond, en nie net eet hulle die een na die ander. En dan is daar 'n liefhebber konstruk ons ​​sal kom genoem funksies of prosedures. En al het ons gaan vinniger hier, sal ons sien dat hierdie is 'n baie natuurlike oplossing vir probleme dat ons gaan ontmoeting. As ons programme begin om groter ons sal begin om patrone in kennis die kode wat ons skryf, die stukke van die legkaart ons sleep. En sodra jy jouself sien doen iets weer en weer, of nog erger nog kopieer en plak programmering kode wat jy geskryf het, dit is waarskynlik 'n geleentheid om faktor uit alles wat jy kopiëring hou en plak, en sit dit in iets genaamd 'n "funksie." Maar meer oor dié in veel meer detail voor lank. En dan is daar nog liefhebber funksies. Vir dié van julle meer gemaklik, of die neem van APCs of ekwivalent, Kras eintlik ondersteun dinge soos drade en gebeure en nog baie meer. So besef dat dit ' 'n redelik hoë plafon, selfs al is dit ook baie breedweg toeganklik vir mense wat nog nooit vantevore geprogrammeer. So ja, laat ons neem 'n blik op 'n eenvoudige program of twee. Ons het reeds gekyk na hoe ons kan sê hallo met Scratch. Laat my gaan voort en maak 'n bietjie meer interessant program wat ek geskryf het in advance. En hierdie een genoem Pet die kat. Al hierdie programme sal wees beskikbaar op die webwerf CS50 se. Inderdaad, reeds daar. So jy kan aflaai hulle, en speel saam met hulle, en met Probleem Stel 0, wat is ook op die webwerf die kursus se jy aangemoedig om te loop deur middel van hierdie. En ja, ons het 'n aantal deur-stap videos aanlyn in wat ek en CS50 se span werklik loop deur elkeen van hierdie voorbeelde op 'n veel stadiger pas, 'n baie vinnige Deurstuurbaar, of rewindable tempo, sodat jy kan loop deur middel van hierdie op jou gemak as well. So hier is Scratch aan die linkerkant. Hier is 'n program op die regte wat ek reeds vooraf gemaak. So laat my zoom in op hierdie. En kan iemand in Engels, weet wat jy weet, net van nou as hoe Scratch werke, soort van sê in 'n Engelse frase of sin, wat beteken hierdie program blykbaar doen? Ja, in oranje hemp. GEHOOR: [onhoorbaar] DAVID J. MALAN: Ja, as jou wyser op Scratch die kat, speel 'n miaau klank. Maar let op hoe ons uitspreek dat. Daar is blykbaar 'n lus daar, vir ewig. En dan is daar 'n toestand, die as uitdrukking. En gesamentlik, wat doen die beteken? Dit beteken hierdie program is net altyd loop, en dit is net altyd wag en kyk en luister vir my om my muis beweeg oor die kat. Want elke keer as ek dit doen, as jy voorstel, dit gaan om dit te doen. Laat my die program begin. Niks blyk te wees gebeur nie, maar sien hoe dit is nou uitgelig in 'n geel lyn. Dit beteken net dit loop. En omdat daar 'n ewigheid lus, is dit nog steeds vertoon. So laat my my muis oor Scratch. [Meow] [Meow] En as ek beweeg dit af, [Meow] nou is dit tot stilstand kom, maar die program se steeds aan die gang. [Meow] En so adorable. [Meow] So laat oopmaak effens meer gevorderde byvoorbeeld genoem Moenie die kat nie troeteldier. En nou, laat ons sien wat hier gebeur. [Meow] miaau. So dit is 'n bietjie op motor vlieënier, as jy wil. --pet die kat. Ek wonder hoekom. [ROAR] [Meow] So hoe het hierdie werk? Wel, jy kan soort rede deur dit intuïtief, miskien. Maar laat ons kyk na die werklike kode. So weer, toe die groen vlag word gebruik, doen dit vir ewig. Wat wil jy vir ewig doen? Wel, as raak muis wyser, dan speel 'n klank wat blykbaar genoem Lion 5, wat binne-in hierdie projek, anders speel klank miauw, en dan wag twee sekondes, so dat dit nie aanhoudend miaau. In feite, kan jy baie vinnig begin om jouself en jou kamermaats irriteer. Kom ons verwyder die blok. En sien wat is lekker oor Scratch. Dinge net soort van drag en drop en gekoppel. So weer, dit groei tot vul wat jy wil. Maar as ek dit verwyder, en dan treffer speel, [REKENAAR skans KLANK] --it is soort van struikel oor self, want dit is letterlik doen wat ek sê. Dit sê vir ewig speel hierdie klank, maar Ek is nie gee dit 'n kans om te voltooi. En so sou dit 'n fout wees. En dit is hoekom ons moes hierdie ding in nou hier. So laat eintlik begin scratch-- soort van woordspeling effens intended-- waarin ons nou die kat beweeg. So ek gaan om dit te doen op die vlieg. Ek gaan hier om te vergroot, net om my begin op Events. En groen vlag gebruik. En daar is ander maniere om die skrifte te begin. Ons gaan dit hier eenvoudig te hou. En nou is ek gaan om te gaan voort en gaan onder beheer. En weer, as jy vergeet waar dinge, kliek net rond, en uiteindelik sal jy hulle weer te vind. So ek wil om vir ewig te doen wat? Ek wil die mosie blok dat ek weet bestaan, beweeg 10 stappe. So laat ons sien wat gebeur hier as ek hierdie spel te speel. Gelukkig is dit nie te ver gaan. Ek kan hom nog soort van gryp aan die stert en trek hom terug. Maar die program is nog steeds hardloop, sodat hy is soort van veg vir my. Maar dit sal soort van lekker wees as ek hierdie voorwaardelik op te los in die kode. Want dit is not-- eintlik is dit regtig nie 'n prettige speletjie vir enigiemand van enige ouderdom. So kom ons probeer om dit op te los deur met 'n soort van toestande. So ek gaan om te gaan onder Beheer, en dan as. Ek hou van hierdie idee. So na beweeg 10 stappe, if-- laat my voel waar ek is. Ek gaan om te gaan onder Sensing, en dan lyk dit ek kan hier gaan. ry om die wedstryde vorm. Grootte nie, maar dit is gaan om te groei in te vul. En nou is dit 'n bietjie spyskaart. En nou die muis pointer-- ek doen nie wil die muis, ek wil die rand. So Scratch is slim genoeg om te weet wanneer 'n sprite raak die rand. Wat wil ek hom eintlik doen? Laat my gaan voort en verander beweging. Weet jy wat? Ek gaan om hom te draai. So teen 15 grade is nie regtig gaan om my te help. Ek wil hom om te draai en gaan na die ander kant. So laat ons sien wat gebeur hier, as ek getref Speel nou. OK, soort van dom soek nie, maar dit doen presies wat ek gesê het. En dit is die draai van die hele sprite. Nou blyk dit ek kan dit regmaak. En ek het nie geweet hoe om dit op te los op die eerste. Ek het soort rondom futz en sien die beste manier om dit te doen. Maar as Ek weggaan aan- laat ons sien, beweging. Ag, het ek gevind hierdie. Eintlik Stel rotasie Style. Links, regs, of nie draai, of rondom. En dit blyk dit is wat ek wil hê. En ek gaan om dit te sit nie my lus, want ek het nie nodig om te stel die rotasie styl verskeie kere. Ek gaan sit dit op die top van hierdie program sodat dit een keer kry stel, en dan onthou. En nou gaan ek dit weer probeer. Laat my die program te stop. En nou dat vaste dat fout. So ek iteratief verbetering op dié. Die program is om 'n bietjie meer kompleks en groter word, maar ek neem baba stappe om so te praat, en klein happies uit die probleem om dit beter en beter. Maar ook dit is soort van lam. Weet jy wat? Sou iemand te vra met 'n baie goeie, vreeslike stem soos om te kom? Iemand met 'n stem. Uh, ja. Kom up. In die groen hemp. So dit blyk daar is 'n paar ander pret dinge, estetika en klanke gelyk. Hier is die miaau. Ek op die blad klanke. [Meow] Daar is die miaau. [Meow] [Meow] [Meow] --actually rekord iets hier ons eie. So kom ons doen presies dit. In plaas van die gebruik van hierdie kat klank, laat gaan voort hier, en wat is jou naam? Nick, lekker om jou te ontmoet. Dit is David. So in 'n oomblik, ek gaan om die knoppie Rekord getref. En as jy kan net gil in die laptop, "eina," asof jy net loop in die muur, wat sal baie waardeer word. 1, 2. NICK: Ouch! DAVID J. MALAN: Awesome. En kan nou 'n bietjie redigering hier doen. Gaan om ontslae te raak van die stil dele te kry. En ek dink dit is goed. Dankie. NICK: Pleasure. DAVID J. MALAN: Ek het net dit herdoop "eina," maar nou gaan ek gaan terug na my skrifte. En kennis daar is inderdaad klank hier. En ek gaan om voort te gaan en speel die klank eina, en ek gaan om dit te doen as dit is net die aanraking van die kante. En dan gaan ek het dit omdraai. So laat ons sien wat hier gebeur. Kom ons gaan vol skerm. [Video speel] -Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! [Einde afspeel] DAVID J. MALAN: So jy besef dat ons 'n bietjie geluk. Ek gaan om hom skuif soos 100 stappe op 'n tyd. Die effek van wat nou gaan om [rekenaar glitch KLANK] be-- So binne perke. So 'n geleentheid om te verfyn dat verder as ons regtig wil. So nou, laat ons 'n ander stel konsep. Om my te laat gaan in een genoem Skape en gebruik iets tel bekend as 'n veranderlike. Dit is 'n pragtige klein skape en Ek verander sy kostuum om so te praat. So selfs al is die standaard is 'n kat, kan jy laai, jy kan trek, Jy kan enige aantal van doen karakters op jou sprite. Hier is 'n program wat gaan om te doen wat in Engels? Weer gebaseer op net wat jy nou weet. Wat is dié program doen? Ja, dit gaan om te tel. 'N nommer op 'n tyd. Ons het blykbaar het hierdie stel toonbank. Ek weet nie wat dit is nie, maar miskien is dit 'n veranderlike. Dis net 'n houer, x of y. Maar die woord toonbank is meer beskrywende as x of y wiskundige se. So kan ons Engelse woorde te gebruik vir dinge. Forever, beteken net hou om dit te doen. Sê toonbank. Nou waar het dit vandaan? Wel, dit blyk dat counter is 'n veranderlike. So dit is net nog 'n legkaart stuk wat ek gemaak het in advance. En selfs al gebeur dit nie dieselfde vorm hier te wees, normaalweg sou jy sê iets soos hallo hier. Jy kan ook 'n veranderlike sleep sodat dit is wat ons kry het. Toe ek wag vir 'n tweede, het ek verander die toonbank vir een, die verhoog dit deur die toevoeging van een. Sodat die netto effek is hierdie pragtige skape tel. Hoewel hy homself tel. Nou is dit baie vinnig gaan vervelig want hy gaan doen dit werklik vir ewig, maar dit is presies wat die ontwerp program se voorskryf. Kom nou probeer nog 'n voorbeeld wat maak gebruik van 'n veranderlike. Hierdie een genoem Hi Hi Hi, wat kry nie vinnig irriterende. Nou hierdie een het twee skrifte. En dit weer, ons neem baba stappe. Ons het begin met iets super klein, bygevoeg is bygevoeg. Nou wil ek om iets te doen selfs meer dinamiese, so ek wil luister na twee verskillende dinge op 'n tyd. So aan die linkerkant toe groen vlag word gebruik, Ek stel 'n veranderlike wat ek geskryf het vooraf genoem gedemp. En ek arbitrêr stel dit 0. So Scratch nie ware het en valse, maar dit het 0 en 1. So kan ek dieselfde idee benader. En dan vir ewig, as die space bar is gedruk, dan stel die veranderlike 0. Of jammer. Indien die spasie gedruk word, en As gedemp, die veranderlike, is 0, dan stel gedempte tot 1, anders gestel gedempte tot 0. Dit lyk amper soos ons net te doen en die verwydering van die werk. Maar wat is die effek? Elke keer as ek druk die space bar, Wat gebeur met my veranderlike genoem gedemp, logies? Soort van kry omgekeer. Dit verander 0-1 of 1-0. So dit het 'n paar blokke uit te druk nie, maar al Ek doen is Reguliere die toestand van hierdie veranderlike tot 0 of 1, of 0 of 1 elke keer as ek druk die space bar. Nou hier, wat dit te doen? Forever, as gedemp is 0, so as gedemp is onwaar. So as dit nie gedemp, is die semantiek daar speel klank see leeu en dink Hi Hi Hi vir twee sekondes, wag twee sekondes. Nou al so sien skrifte is effektief gaan parallel loop sodat 'n mens luister vir 'n aksie, die ander om 'n besluit op grond van die aksie te maak. En dit kan dit vir ewig te doen. [Seeleeu blaf] [Seeleeu blaf] Dit gaan dit vir ewig te doen en [Seeleeu blaf] soos ek nou net gedoen. En nou is dit nog steeds vertoon Maar ek het "gedempte" die spel. [Seeleeu blaf] En dit is al hierdie man doen nou ook. Kom ons nog 'n voorbeeld maak hier. Laat my gaan na die gebeure, en nou is dit adorable ook. Maar let dit het twee sprites. So nie net twee skrifte met een sprite, maar twee sprites. En as ek op die blou man soos ek reeds het, sien ek hy as een program hier wat letterlik net sê hierdie, wanneer ek 'n gebeurtenis, sê "Polo" vir twee sekondes. So as jy ooit gespeel het in 'n swembad, die spel Marco Polo, indien die oranje man script is enige aanduiding is, blykbaar elke keer as ek druk die space bar, Wat is die oranje man gaan doen? Hy gaan om te sê "Marco." En dan is dit 'n nuwe blok. Ons het dit nie gesien nie, maar uitgesaai 'n gebeurtenis. En ek kon noem dit Indien enigiets wat ons wil hê. Ons sal terug kom dalk kort voor lank. Maar uitsaai 'n gebeurtenis is 'n manier vir 'n sprite na 'n ander om te praat deur wese om dit 'n boodskap. Dit is nie 'n boodskap wat jy sien. Dit is nie iets visuele. Dit is soort van 'n rekenaar boodskap dat die ander man is luister vir. Omdat inderdaad, die blou man, onthou nie wanneer groen vlag gebruik. Hy plaas het, toe ek 'n gebeurtenis. Wanneer hy dit oorhandig hierdie nota in die klas, om so te praat, moet hy sê "Polo." En so het die netto effek is dat wanneer ek druk op die groen vlag, gebeur niks. Maar toe ek die space bar, sê hy "Marco," reageer hy met 'n "Polo." Maar die enigste sprite Ek is interaksie met die oranje een. So, dit is 'n manier om soort verby boodskappe tussen sprites en met hulle kommunikeer met mekaar. Nou laat ons kyk na 'n laaste een hier genoem drade. En let dit deur dit te speel. So dit is twee sprites. Die voël is soort van vlieg rond. Hy weerkaats. Daar is geen "eina," maar dieselfde idee. Maar die kat lyk redelik slim. Wat is die kat blykbaar doen? En wag vir dit. Wat is die kat blykbaar doen? Dit is nie net weerkaats. Hy is na die voëls. En so glo, is daar 'n manier met 'n kombinasie van die blokke here-- en laat ons kyk na die kat ware vinnig. Forever, as voël raak, dan speel die klank Lion 4, wat dit ook al is. Ons het gehoor dit eens. Anders, wys na voël en beweeg een stap. Nou is die feit dat dit een stap is wat die voël gee 'n bietjie van 'n voordeel aanvanklik, maar as ons plaas maak hierdie 10, byvoorbeeld, so dat elke iterasie van lus hy beweeg 10 stappe van die tyd. Sodat meer ruimte. Kom ons kyk wat gebeur dan. [Leeu brul] Nie alles wat baie beter. So nou, laat ons probeer om te verbeter op hierdie 'n bietjie iteratief, en kom terug na daardie idee van 'n funksie. En inderdaad een van die fundamentele wegneemetes van die klas ontwerp. Nie net die skryf van programme wat werk en dat korrek is nie, maar goed ontwerp. En ontwerp is baie meer subjektiewe, en jy sal beter kry dit oor tyd. Maar laat ons neem 'n paar baba stappe na begin met 'n program wat werk, absoluut, maar dit is nie baie goed nie. Dit is nie baie goed geskryf. So hier is 'n program wat dit doen. Hoes, hoes, hoes. Wat beteken die program lyk? Correct vir my. Dit sê vir 'n rusbank tweede, dan is dit wag. Toe sê hy dit weer, dan is dit wag. Toe sê hy dit weer, dan is dit wag. En dan is die program implisiet eindig, want daar is geen lus. Maar hoekom is dit 'n swak geskrewe program? Selfs as jy nog nooit voorheen geprogrammeer? Soos wat vryf die verkeerde manier, miskien hier? Ja? GEHOOR: [onhoorbaar] DAVID J. MALAN: Presies. Jy herhaal jouself weer en weer. En letterlik, ek gekopieer en geplak twee van weer en weer daardie blokke. En dit is presies die soort van gesonde verstand seker dat jy moet maak. Wag 'n minuut. Moet ek regtig doen? So, wat is dit wat is die hand liggende oplossing dalk? 'N soort van loop. En ek doen nie heeltemal onthou wat die legkaart stuk is, maar as ek kyk na die volgende iterasie hier Trouens, daar is nie net die ewig lus, daar is 'n paar herhaal n paar keer. En so het ek drie gespesifiseerde. En nou sien hoe baie strenger, hoe veel meer bondige hierdie program is. En in 'n sin, hoe veel meer onderhoubare. As ek wil die woord te verander van hoes na iets anders, soos achoo, asof hy nies. Dan is dit verander ek in een plek en nie drie nie. So dit reeds voel soos effens beter ontwerp. Laat my plaas oop hoes 2, ons derde voorbeeld. Let as 'n rekenaar wetenskaplike, Ek begin tel by 0, tipies. Nou dit lyk 'n bietjie vreesaanjaend by eerste, maar die effek is dieselfde. Hoes, hoes, hoes. Maar wat blyk te wees fundamenteel nuut in die boonste deel van die program? Ek het die seggenskap verwyder. Ek het die wag verwyder. Wat het ek nou ingeprop plaas? 'N funksie. 'N hoes blok. Ek bedoel, eerlik, ek lyk soort van 'n idioot as wat ek gedoen het nie net begin met die blok dit is blykbaar genoem "hoes," as dit is al wat ek wil hom is nie. Maar dit beteken nie bestaan ​​in Scratch. Eerder het ek na een in die palet genoem Meer Blocks hier en ek sleep die groot pers ding hier wat kan vir my 'n funksie te definieer. Dit laat my wese skep my eie legkaart stuk wat enigiets wat ek kan genoem word wil, dat enigiets wat ek wil doen, maar dit gee dit 'n naam. Dit gee my 'n nuwe, pers legkaart stuk wat nou doen wat ek sê om dit te doen. So hierdie pers stuk hier ooreenstem met hierdie een hier. En wat doen dit? Dit sê hoes vir 'n tweede, en dan is dit wag. En nou het ek soort van geskep my eie persoonlike legkaart stuk, sodat dit optree presies dieselfde manier. So ek kan hou om dit te doen. En inderdaad, daar gaan meer wees en meer geleenthede vir modularisatie, en vir gelaagdheid, kompleksiteit op die top van mekaar. Maar dit basiese idee, inderdaad in die probleem gesê 0. Wat jy gaan uitgedaag word om te doen, is te krap aflaai, of net gebruik dit op die web, en net om pret te hê met dit. Ons sal jou 'n stel van gee vereistes, met 'n gesonde, en 'n paar van die stukke van die legkaart getal. Maar jy sal juis dit doen. En jy sal besef dat jy gaan wil 'n paar baba stappe aanvanklik neem, totdat jou program kry meer en meer kompleks. Maar dit is die oorweging beste manier wat ek kon doen? Kan ek vermy instink miskien, te kopieer en plak? Maar voordat Probleem Stel 0, en voor ons verdaag, gedink ons ​​wil neem een meer vrywilligers as ons kon, vir 'n finale program dit is miskien die mees pas op alle, gegewe venue vandag se. Kom af. Ja. Ja. Wat is jou naam? Uh-oh. Dit is OK. Beide afkom. En ek het sal gaan met hierdie een of ander manier binne daardie volgende tien sekondes. So kom neer. Kom af. Laat my kom hier. Kom op. Alle regte. Kom ons kyk hier. So sien baie vinnig hier, as jy wil om op te kom. Ons sal twee rondes van dit te doen. En wat is jou naam? Sabrina: Sabrina. DAVID J. MALAN: Sabrina en? Ying GEE: Ying Gee. DAVID J. MALAN: Ying Gee. Nice om jou te ontmoet beide. David. So ons finale voorbeeld hier is genoem Hardest Game Ivy se. En hoekom nie ons het jy doen Vlak 1, en jy hoef vlak 2. En ons sal sien hoe ver buite dat ons eintlik gaan. Geskryf deur 'n student verlede jaar, remixed deur my sodat dit sou gaan oor goed in New Haven. En ek gee jou 'n spel wat gaan behels die verskuiwing van die pyle op en af, en om Yale na die eindstreep. Hier gaan ons. [Video speel] [MUSIEK - NFL op Fox Theme Song] [MUSIEK - MC Hammer, "jy kan nie raak  HIERDIE "] -U Kan dit nie raak nie. U kan dit nie raak nie. Kan dit nie raak nie. My, my, my, my musiek treffers my so hard, maak my sê: Ag, my heer. Dankie vir die seën my met 'n omgee om rym en twee hype voete. Dit is goed as jy weet jy is af. A super dope jan van die Oaktown. En ek is bekend as sodanig en die 'n klop uh, kan jy nie raak nie. Ek het jou gesê jan U kan dit nie raak nie. Ja, dit is hoe ons lewe en jy weet U kan dit nie raak nie. Kyk in my oë, man. U kan dit nie raak nie. Yo, laat my breek die funky lirieke. U kan dit nie raak nie. Vars nuwe skop en broek. Jy het dit so en jy weet jy wil dans. So beweeg uit jou sitplek en kry 'n vlieg meisie en vang hierdie klop. Terwyl dit rol houvas op te pomp 'n bietjie bietjie en laat hulle weet wat aangaan. Soos dit. Soos dit. Koue op 'n missie so trek terug. Laat hulle weet dat jy te veel is en dit is 'n skuif uh jy nie kan raak nie. Yo, ek het jou gesê U kan dit nie raak nie. Waarom jy daar staan ​​man? U kan dit nie raak nie. Yo, klink die klok skool se, sucker. U kan dit nie raak nie. Gee my 'n lied, 'n ritme wat hulle sweet dit is wat ek gee hulle nou. Hulle weet wanneer jy praat oor die Hammer jy praat oor 'n show wat hype. En stywe sangers is sweet so slaag hulle 'n mic. Of 'n band om te leer wat dit gaan neem en nou hy gaan die kaarte te verbrand. Legit óf werk hard of jy kan net sowel ophou. Want jy weet U kan dit nie raak nie. U kan dit nie raak nie. Breek dit af. Stop. Hammer tyd. Gaan saam met die vloei in 'n spin as jy nie kan beweeg om hierdie dan is jy waarskynlik dood. So waai jou hande in die lug [onhoorbaar] Dit is dit vir 'n wenner dans hierdie en jy gaan dunner te kry. Beweeg gly jou kruis net vir 'n minuut laat ons almal doen die bult. Ja. U kan dit nie raak nie. U kan dit nie raak nie. Jy beter kry hype seuntjie U kan dit nie raak nie. Die klok lui skool se rug in. Breek dit af. Stop. Hammer tyd DAVID J. MALAN: Dit is dit vir CS50! Baie dankie vir die saam met ons! Sien julle daar buite. [Einde afspeel] [Video speel] [MUSIEK - "Seinfeld" temalied] Hey David. Hey, David. Hoe gaan dit? Goeie werk, vandag. -So het jy al gedink oor wat jy gaan om dit te doen vir die uit grappe? Nee, ek het niks. -Wat If-- wat as dit is die uit grap? -agtige, Uitpak karre? -Uh-Huh. Jy weet, dit gaan oor niks. -So wil, geen storie, geen konflik, geen besluit. Ek verstaan ​​nie. Waaroor gaan dit dan? Wat gebeur. -So het ons uit grap oor niks, en ons het geen akteurs. Wie gaan wees in hierdie? Nee, nee, nee. Ek bedoel, ek sal dit in. -You'll Wees daarvan? -Yeah! Mense is altyd vertel my ek is 'n karakter. -Goed, Ek bedoel, dit is waar. Maar wie anders gaan wees in dit? Dit kan nie net jou. -Jy Sal daarin wees, Gavin, Dan, Dan, Colton, Z'Myla, Alysse, Doug, David, almal. -So dit gaan oor niks nie, en almal is in dit? -Absolutely Niks. -Dit Is belaglik.