Spreker: Ek is [onhoorbaar]. En ek is 'n senior op Leverett House. Ek studeer rekenaar wetenskap, en ek is 'n TF vir CS50. As 'n groentjie, ek het nie eens ' 'n skootrekenaar of 'n smartphone. Ek het geen programming ervaring. CS50 was die mees onvergeetlike kursus wat Ek het by Harvard, want dit was 'n stryd, maar dit was 'n baie pret stryd op dieselfde tyd. En ek het 'n baie amazing, permanente vriende, en ek het geleer 'n baie baie toepaslike vaardighede. Ek is net so bly dat ek het nie laat my gebrek aan agtergrond 'n verskoning vir my neem nie CS50. Ek is [onhoorbaar]. Ek is 'n senior op Leverett Huis, klas van 2014. En ek het CS50. David Malan: So dit is CS50. Dit is die einde van die week nul. En onthou waar ons begin die laaste tyd, was met hierdie lampe wat so gewild dat ons gegaan het en gekoop het 'n paar meer vandag. So ek dink dit sal wees ons ding vanjaar - lessenaar lampe as jy kom op die verhoog, ten minste totdat ons loop uit. Maar ons gebruik hierdie herroep, te stel die basiese beginsels van die voorstelling van data. Ons benodig manier om te begin wat inligting binnekant van 'n rekenaar. En die eenvoudigste manier om dit te doen, was met een bestanddeel, elektrisiteit. En die eenvoudigste ding wat jy kan doen met elektrisiteit is dit op en dit af. Laat die elektrone vloei of nie. En die gebruik van die twee basiese State van Amerika, af en op, of ware en vals, of nul en een, het ons begin om te sien dat ons kan bou up, in hierdie geval, met 'n ligte bolle, meer as getalle net nul en een. Ons getel so hoog as sewe, byvoorbeeld, die laaste keer. Maar al wat ons moet doen, is om te hou gooi meer en meer gloeilampe op daardie probleem en, regtig, kan ons dit voorstel enige getal wat ons moontlik wil hê. Wel, ons het transitioned vinnig dan op Woensdag om hierdie greep van vrywilligers. 8 stukkies is wat ons in die algemeen noem 'n greep, So hier het ons agt vrywilligers op Woensdag, wat gesamentlik was wat agt stukkies. En toe hulle hande gegaan up, was hulle 'n een. En toe hulle hande was af, was daar 'n nul. En ons het hierdie mense kom op die verhoog hoekom? Wat ons in staat is om te doen met hierdie volgorde van die stukkies? 'N alfabet te skep. Ons was in staat om te bou op die top van daardie vorige les geleer en eintlik begin meer interessant te maak inligting wat ten minste meer bekend aan ons mense. En dit gaan 'n herhalende tema in 50, maar ook rekenaar wetenskap meer in die algemeen, hierdie idee van gelaagdheid, waar, aan die einde van die dag, as jy regtig begin om die basiese beginsels met 'n rekenaar, ja, dit is nulle en ene. En onder dat dit net elektrisiteit. Maar ons baie vinnig begin diegene te neem lae vlak besonderhede vir toegestaan en begin om te laag op die top van die verlede gewerk gedoen sodat ons uiteindelik deur die einde van die semester, en regtig, meer algemeen as die rekenaar wetenskaplikes en programmeerders, kan 'n paar regtig kragtige dinge deur gebruik te maak van die werk dat ons onsself gedoen het en ook staan ​​op die skouers van ander. Nou is ons vinnig transitioned op Woensdag van net hoef te stel om inligting te wil om iets te doen met dit. So wat het ons definieer 'n algoritme as? 'N reeks van instruksies. So dit is 'n reeks van instruksies, 'n aantal stappe wat jy, 'n mens, of 'n rekenaar, meer tipies, sou voer die een na die ander in volgorde 'n doelwit te bereik. En ons het 'n paar doelwitte laaste tyd, Een daarvan was om te tel mense in die kamer. En nog so 'n voorbeeld was om uit te vind Mike Smith in 'n telefoon boek. So jy kan onthou dat ek skeur 'n selfoon boek in die helfte van die rigting van hierdie beland vind Mike Smith. Die doel van die visuele was om te demonstreer, weer, dat ons was letterlik skeur die probleem in helfte, in die helfte, in die helfte, en baie vinnig gaan uit soos 1000 bladsye om net 'n enkele bladsy. Diegene van julle wat dit gemis het op Woensdag, het ek gedink ons ​​wil speel terug sommige beeldmateriaal van wat jy gemis het. Kom ons neem 'n blik. [Video speel] -Daar gaan ons. 1500 bladsye, mooi skoon lyn, wettige traan. [Einde video-vertoning] David Malan: So dit was Woensdag. Ons oorgang, al is, op Woensdag nou te wil algoritmes te verteenwoordig in sommige ietwat standaard manier, nie net beskryf hulle mondelings nie, maar probeer om hulle uit te druk in te skryf of op 'n rekenaar skerm sodat ons kan begin om te verbeter op, en wysig hulle, en, uiteindelik, eintlik analiseer hoe die korrekte of hoe vinnig hulle was. So ons het hierdie idee van pseudokode, wat in leketaal, is wat? OK, woorde. Kom ons gaan 'n bietjie dieper as dit. Engels, seker nie, maar is na wat einde? Woorde waarmee te skep of algoritmes voor te stel. So daar is geen een taal bekend as pseudokode in die wêreld. Dit is net dat jy, in Engels, of Wat ook al jou gesproke taal is, gebruik 'n soort van vlugtige notasie weergee 'n idee baie bondig. Maar ons sal sien dat, beslis met 'n Engels pseudokode, en dit blyk meeste programmeertale hulself is afgeleide van die Engelse self, ons sal vind dat daar is 'n paar standaard maniere wat pseudokode en ook programmeringskode nie. So as jy begin om selfs die eenvoudigste om te sien voorbeelde vandag besef dat hierdie dieselfde patrone sal volgende week terugkeer. So pseudokode was 'n soort van taal wat lyk soos 'n programmeertaal. En die eerste voorbeeld het ons gesien visueel geskryf het, was dit een. Dit was net 'n drie stap program, die doel daarvan was om die nommer te tel van mense in 'n koshuiskamer vir dat die video op Woensdag. Maar daar was 'n paar interessante aspekte van hierdie eenvoudigste program. En dit sal wees herhalende temas. So vir diegene wat nie vertroud is met hierdie een, het ons 'n veranderlike. En waarskynlik almal in hierdie kamer is vertroud is met 'n veranderlike in die konteks van algebra. Maar hier in ontwikkeling, veranderlikes is, een, kan genoem enigiets wat ons wil hê. Ons het al met behulp van n as 'n toonbank. Maar ons kan die woord toonbank gebruik, of as jy sien, die meeste 'n term wat jy kan so lank as wat dit is soos beskrywende, maar dit is regtig net 'n stoor houer. Dit is 'n stuk van die geheue, 'n aantal stukkies, en dit is afhanklik van die rekenaar, hoe baie stukkies daar dat komponeer daardie veranderlike. Maar ons kan sit waardes in dit. So ver, ons het net sit nommers. Maar ons kan sit werklike woorde. Ons kan sit paragrawe. Ons kan sit beelde - enigiets, regtig, kan ons met nulle en ene, kan ons in hierdie hoër vlak idee van 'n veranderlike. So redelik reguit daar stuur. En dit is een lyn. Maar ons baie vinnig aanbeweeg van lyn een om werklik te doen iets met daardie veranderlike. En in lyn drie, ons opgedateer N. Ons geinkrementeer N. En ons kon skryf hierdie 'n aantal maniere. Maar miskien is die mees voor die hand liggend is net om te sê, stel n gelyk aan wat N is plus 1. So dit was ons omgeslaan. Intussen was daar 'n lus. En hierdie een ook, is waarskynlik redelik intuïtief. 'N lus is net iets in 'n program dit gebeur weer en weer, 'n paar soort siklus. En hierdie sleutel frase hier, vir elke, is eintlik baie algemeen in die meeste programmeertale, insluitend wat ons sal sien in die kursus. Elke keer as jy sien die woord vir dit gewoonlik dra die idee dat 'n lus, iets sikliese, is om te gebeur. Maar dit is die moeite werd om daarop te let een ander sintaktiese detail. Die feit dat die derde reël is daar eintlik ingekeep deurdat druk op die space bar paar keer is doelbewuste. Omdat menslike konvensie is sodanig dat, wanneer jy iets doen weer weer, in 'n lus, as begin on line twee, jy streepje enigiets wat behoort om daardie lus net om duidelik te maak dat dit is lyn drie en nie, byvoorbeeld, lyn vier of vyf, of daar lyne vir of vyf, wat deel van daardie loops. So hierdie eenvoudige inkeping dra dat die basiese idee. So het ons aansoek gedoen hierdie algoritme nou, na 'n paar voorbeelde. En dit is ook eenvoudige voorbeeld in die werklike wêreld. Maar dit gaan verteenwoordiger van wees hoe jy te werk sal gaan toets jou besit toenemend komplekse programme. Jy probeer om 'n paar scenario's, 'n paar verteenwoordigers insette, en sien as jy kry die verlangde uitsette. So hierdie voorbeeld het twee mense sit in die koshuiskamer. Aan die linkerkant is dat dieselfde pseudo-kode. En dit is 'n screen shot van die baie laaste stap van die toepassing van hierdie algoritme om die insette, waar daar was daar twee mense in die kamer en, onthou, as ons stap deur die lyne een, en twee, en drie, en twee en drie en gedoen het - teen die einde van die algoritme, het ons inderdaad gereken die twee maats wat in die kamer. So het ons probeer om nog 'n voorbeeld. En ons het wat as daar zero mense in die kamer? Is hierdie kode nog steeds korrek? En inderdaad was dit. Dit is net so gebeur dat die lyn twee en dus line drie of gaan nie uit te voer. Hulle is nie van plan om te gebeur want hulle is nie net van toepassing indien daar is zero mense in die kamer. Maar dit is nie 'n groot deal. Line een geïnisialiseer N aan nul, so selfs al is net een lyn van hierdie program eindig eintlik tot nut te wees, lewer dit steeds die korrekte antwoord is, as aangedui deur die oranje nul aan die onderkant. Maar dan moet ons besluit wat soort van 'n dom algoritme. Dit was 'n bietjie stadig. Sekerlik kan ek doen twee, vier, ses, agt, tien, wanneer toe mense in 'n kamer. So het ons tweaked die algoritme, die pseudokode, om te sê, wat nou in lyn twee, vir elke paar van die mense in die kamer, voort te gaan, in lyn drie, increment in deur twee op elke iterasie. So wat sou hier gewerk het vir hierdie paar van die persone in die kamer. Maar dan, as jy begin dink oor hierdie, en dit het nie lank te neem besef, wag 'n minuut dit is gaan om te breek, breek dit na wat eenvoudige saak? As daar is drie mense in die kamer of, meer in die algemeen, wanneer daar 'n onewe aantal mense in die kamer, insluitend een. Ons wil hê dat die persoon wat hier mis, want daar is geen sodanige pare. So het ons vinnig aangespreek word in plaas bekendstelling van watter bykomende programmering konstrukte tot die pseudo-kode. So 'n toestand is, ons roep , of 'n tak. En dit is bedoel om te dra, visueel, die idee van die tak, 'n vurk in die pad waar jy kan doen, hetsy dit Of miskien, iets anders. En inderdaad, het ons hierdie kwessie deur voeg lyn 4, deur te sê, regtig nie, ten die einde, as een persoon bly, dan voort te gaan en tel hulle spesiaal. Sodat jy soort van spesiale geval het, so te spreek, sodat ons nou kan hanteer beide 'n ewe getal mense en 'n onewe aantal mense. Nou is daar 'n aantal maniere ons kon uitgespreek het nie. En eerlik, kon ek nog meer gewees het neet kieskeurig wanneer dit kom by my keuse van Engels vir die pseudokode. Maar ten minste is die gees van die idee oorgedra word. Indien u oorhandig hierdie kode aan 'n vriend wat is nie in CS, of nog nooit geneem CS, is die kans wat hulle kan uit te vind, gegee drie mense in die kamer, hoe om te tel die mense gebaseer op hierdie instruksies. En dit is al wat regtig wat ons wil bereik met pseudokode, een of ander manier standaardiseer hoe ons gaan oor verteenwoordig idees, sodat ons kan begin om meer ingewikkeld om te doen ding nog steeds. Sodat ons lei dan vandag om die werklike kode. Ons begin om die program vandag, al is dit in 'n vriendelike omgewing. En dan het ons oorgang baie vinnig te 'n meer arcane sintaksis, maar een wat jy sien, is fundamenteel dieselfde as die idees sal sien manifesteer met hierdie ander taal vandag. Dit is net gaan om te kyk 'n bietjie anders. So eerder as om net noem hierdie kode, ek is gaan om 'n bietjie meer akkurate en sê, van nou af, wanneer die skryf van 'n program, jy skryf bron-kode. Dit is soort van soos pseudokode. Maar ons sal sien dit is nie soort van los wanneer dit kom by die keuse van die woorde wat jy gebruik. Wanneer programing in 'n taal, het jy die woorde, die frases te gebruik, Die sintaksis, dat ander mense het besluit om voor te stel daardie spesifieke taal. So pseudocodes is aan jou. 'N werklike programmeertaal soos C, as ons sal uiteindelik sien, is gestandaardiseerde deur ander mense. So, hoe gaan ons nie oor die skryf 'n bron-kode? Wel, ek gaan om te gaan voort en dit doen. Ek gaan om voort te gaan en open 'n venster hier. Meer oor hierdie volgende week. Maar dit is 'n toestel genoem die CS50 toestel. Ek hardloop 'n stukkie van die sagteware op my Mac, al wat jy kan doen dieselfde ding op 'n Windows rekenaar, is dat die gee my die illusie loop 'n ander bedryfstelsel heeltemal reg hier in 'n venster op my Mac. Ek het net vol gekeur dit sodat jy dit nie doen nie eintlik sien Mac OS nou. Dit is 'n bedryfstelsel Linux genoem. Dit is baie gewild. Dit is baie vinnig. Dit is baie vry, wat het dit baie dwingende, veral in die kommersiële wêreld. En meer op wat aan die einde van die semester wanneer ons gebruik Linux nogal 'n bietjie vir web ontwikkeling en aanbieding van werklike webtuistes en projekte. So nou, weet net dat dit 'n lessenaar wat bedoel is om te vaag kyk vertroud te Windows en Mac OS. Dit het net 'n paar verskillende name en ikone vir dinge. Maar dit is die sogenaamde CS50 toestel, 'n virtuele masjien wat, die begin van volgende week, sal julle hardloop binnekant van 'n venster op jou eie Mac of PC. Vir vandag, ek gaan om oop te maak die eenvoudigste van programme. Dit is bekend as gedit. En dit is net 'n grafiese redakteur. Dit is soort van soos Microsoft Woord, maar eenvoudiger. Dit is soort van soos teks wysig of notaboek. Dit is net 'n baie eenvoudige program met watter woorde om te skryf op die skerm. Dit is net so wat gebeur as ek red lêers wat Ek skep wanneer hierdie program in 'n spesiale uitbreiding soos c,. plaas van Doc. of. xls, of wat ook al jy vertroud is met, kan ek eintlik skep programme gebruik selfs hierdie eenvoudige teks editor. So laat ek dit doen. Laat my gaan voort en behalwe hierdie lêer eers as hello.c. En weer, hierdie gebruikerskoppelvlak sal vertroud te raak gou na jou toe. Maar vir nou, is ek net te tik in 'n lêer naam. Ek gaan om dit te red in my John Harvard tuisgids. En nou het ek die blad wat daarop dui Ek is inderdaad redigering 'n lêer genaamd hello.c. So niks te interessant nie. En nou is dit gaan kry redelik kriptiese. Ek gaan om te vergroot, net so dit is meer sigbaar. En ek gaan om te begin tik sluit stdio.h, int main, leemte, oop krullerige stut, een, twee, drie, vier ruimtes van inkeping, druk f, vir die gedrukte iets formaat, kwotasie unquote, "Hello, World" agteroorskuisstreep, n, naby quote, geslote hakies, kommapunt, tree back space, back space, back space, back space, gesluit krullerige stut - Ek het geprogrammeer. Alle reg, sodat dit is 'n super eenvoudige program, regtig, die program wat iemand begin programmering met. En al wat dit doen, vir al sy kompleksiteit, is druk op die skerm, raai wat? Hello world. Maar dit is nie voldoende om net 'n program te skryf. So, dit is die kode. Dit is die bron-kode in 'n taal, die sogenaamde c. Dit is tans gestoor in 'n lêer genaamd hello.c. Nou kyk na die onderkant van die skerm hier. Meer inligting oor hierdie, weer in die komende weke. Maar dit is wat ons bel 'n terminale venster. Dit is 'n flikkerende, swart en wit vinnige. Dit is soort van 'n ou skool koppelvlak 'n rekenaar wat oor die algemeen nie gebruik van 'n muis of 'n ander grafiese elemente. Dit maak gebruik van net jou sleutelbord. En ek kan tik instruksies op hierdie flikkerende vinnige. En vir vandag se doeleindes, is ek net gaan om die volgende te tik - maak hallo. En dat program, maak, is net 'n program wat in die werklike wêreld hierdie dae, ons sal dubbel kliek op. Maar in hierdie koppelvlak vir vandag, ons is gaan sy naam te tik op hierdie vinnige. maak hallo is letterlik gaan maak my 'n program genaamd Hello. En dit gaan om dit te doen deur te kyk vir 'n lêer, net deur verstek, genoem hello.c. Dit gaan om te aanvaar ek wil 'n C program uit die aard van hoe hierdie rekenaar is ingestel. So ek gaan voort en tref betree. Ek sien 'n paar kriptiese uitset, maar dit sal al te raak vertroud voor lank. Dit het gebeur 'n vertaler, meer om te hardloop oor wat in 'n oomblik, genoem klang. Maar nou, ek het net nog 'n flikkerende gevra. En ek kan voorlê gaan nou en tik dot streep, vir vervelige redes ons sal kom terug na volgende week - hallo. Sodat almal van hierdie poging tot dusver net om te skryf die eenvoudigste van programme wat so gou as ek druk Enter, doen dit. So ek geskryf het my eerste program. So ek doelbewus skeer pret op hierdie baie eenvoudige program vir 'n paar van die redes. Een, is dit moeilik om te kry opgewonde oor die neem van 'n klas as dit is die einde spel. Maar meer as dit, daar is 'n baie afleiding hier. Die eerste keer wat jy leer om die program, vir dié van julle wat minder gemaklik, en selfs ek, terug in die dag, toe ek die eerste gesien iets soos hierdie - jy kan soort van die figuur wat, alles reg, die is in 'n afdruk hallo wêreld. Maar daar is so baie afleiding. Daar is so baie sintaksis op die skerm dat dit in die pad van 'n baie eenvoudige, anders eenvoudig, idees. So wat ons gaan doen vandag is ons gaan ter syde te stel C en kom Terug na wat op Maandag. En ons gaan 'n grafiese te gebruik programmering krap. Dit is 'n programmeertaal, dat ek verwys na op Woensdag, is dat gaan toe te laat om dieselfde soort van dinge te doen maar draai 'n blinde oog, vir vandag, aan die krulhakies, die hakies, die kommapunte, en al hierdie dom afleidings wat in die pad, in hierdie eerste dag van 'n paar basiese, mooi interessante idees. So in die rigting van die einde, ek gaan om te gaan terug na my lessenaar hier en bekendstel aan die alternatief vir wat program, wat gaan 'n om te kyk bietjie iets lig hiervan. Dit is hoe ons gaan dit te implementeer dieselfde program vandag - twee legkaart stukke wat, wanneer gevries en geklik word, sal aan die wêreld sê, hallo wêreld. So laat ons eintlik daar gaan. So ek gaan om voort te gaan en maak 'n webwerf bekend as scratch.mit.edu. En dit sal lei om my te hierdie webwerf hier. In vooraf, het ek aangeteken in hierdie webwerf en die eerste probleme wat sal loop jy deur sommige van hierdie stappe. Ek gaan om voort te gaan en kliek op my af gids hier. En dit gaan om my te wys 'n paar projekte wat ek eintlik geskep in advance. En dit blyk dat hierdie grafiese programmeertaal nie net gaan om ons te laat program deur te sleep en val die stukke van die legkaart, sal jy nie eens nodig om spesiale sagteware. Dit is alles ingesluit in 'n leser, sodat dat jy dit kan doen, in teorie, op jou rekenaars reg nou, soos sommige van julle mag wees, sonder om selfs nodig sagteware soos die CS50 toestel, wat volgende week kom. So ek gaan om te gaan na die boonste hoek hier en kliek op skep. En in 'n oomblik gaan ek 'n leë te kry skerm via wat ek kan begin programmering in hierdie grafiese programmeer omgewing. Maar hierdie keer, dit gaan te veel, baie makliker om werklik te doen. So in 'n oomblik, wanneer die Wi-Fi werk, ons het nou hierdie skerm. So 'n vinnige verbale toer, maar ek waag om te sê, seker as jy duik in die eerste probleem stel, sal jy vind dit al baie toeganklik en redelik intuïtief. Maar laat ons verf 'n prentjie vir net 'n oomblik. So onder hierdie vinnige gesê red veranderinge, wat jy oor om af te sien. Dit is 'n sprite. Dit is 'n karakter. En hy woon op wat ons sal 'n stadium noem, hierdie groot wit reghoek op wat hy kan beweeg op, af, links, reg en doen, regtig, ander vorme van aksies. Intussen, in die middel van hierdie gebruiker koppelvlak, ons het 'n hele klomp van die stukke van die legkaart. En jy sal sien dat hulle sê dinge soos beweeg 10 stappe, draai 15 grade, punt in 'n sekere rigting. Maar daar is kategorieë van blokke up ook hier. So as ek gaan lyk, sal jy sien dat daar is ander stukke van die legkaart wat blykbaar sal vertel hierdie cit te hallo sê, om te dink, om te wys homself wegsteek. As ek gaan af na die klanke, dit blyk daar is maniere om klanke te speel soos miaau, Alle klanke te stop, 'n drom te speel. So, 'n lang storie kort te maak, is daar 'n hele n klomp van die stukke van die legkaart wat u toelaat om hierdie kat, of enige aantal te vertel ander karakters, wat om te doen. Maar om dit alles gebeur jy nodig het om te begin programmering. En dit groot wit boks, of grys boks, op die regterkant, dit is waar Ek gaan om werklik te sleep en drop die stukke van die legkaart. Dit is my leë teks venster ekwivalent. So ek gaan om voort te gaan en kliek Beheer in die middel. Of eerder, laat ek begin up onder Events. Onder Events bank, sal jy sien 'n paar dinge wat doelbewus geboë op die top in so 'n manier dat hulle waarskynlik grendeling nie op die top van die stukke van die legkaart. En dit is omdat hulle Demark die begin van 'n program, die begin van 'n script, om so te praat. So as ek gaan voort en sleep, wanneer groen vlag gekliek hier, en dan het ek wil hierdie kat te sê iets wat by die eerste. So ek gaan om te gaan onder die lyk paneel. En ek gaan om voort te gaan en die gryp sê hallo blok en sleep en drop, en laat gaan sodat dit outomaties sluitbalke daar. En dan sien ek kan Klik op die teks. En ek kan ignoreer dit meer spesifieke wil, sê hallo wêreld. En nou het ons die program wat ek eis is gelykstaande aan dat baie meer arcane program Ek geïmplementeer in C 'n oomblik gelede. As ek gaan nou oor na die linkerkant, sien daar is 'n groot stopteken en 'n groot groen vlag. Laat my zoom in vir duidelikheid. En toe ek nou op hierdie groen vlag, jy kan seker raai wat die eerste program word nou gaan doen nie. So is daar ook, ons programme, maar ons is eintlik nie om te verval in sommige van die sintaktiese, minuut besonderhede. Maar laat ons probeer om iets 'n bietjie meer interessant. Laat my toe te gaan in my Scratch gids hier. En eintlik, laat my so laat my oopmaak 'n aparte program hier net vir 'n oomblik, Maksimeer die venster, lêer Open, en ek gaan om te gaan in vandag se bron gids. Soos altyd, sal jy vind, vandag en af, dat almal van vandag se voorbeelde toeganklik is binne die kursus se webblad. En ek gaan om voort te gaan hier en kies 'n bietjie iets anders. Hierdie een hier, waarvoor Ek het 'n vrywilliger. Wie het 'n lessenaar lamp wil vandag? OK, hoe iemand 'n bietjie - is jy op die ou end? Kom af. Nou, wil jy graag om deel te neem, of sê net begin met die lessenaar lamp? VANESSA: [onhoorbaar]. David Malan: OK. Uitstekende, wat is jou naam? Vanessa? David. Nice om jou te ontmoet. So kom op en Vanessa se gaan beheer van my te neem sleutelbord vir net 'n oomblik. En wat ek hier gedoen het, net vir die tyd se ontwil, as ek besef die Wi-Fi was 'n bietjie stadig, krap die programmeer omgewing dat ons gebruik, kan ook afgelaai word en loop op jou plaaslike rekenaar. So, wat ek gedoen het in die hand van lesing, in geval dit gebeur, is Ek afgelaai al die lêers wat ons gaan speel met sodat hulle kan hardloop 'n bietjie meer gou hier op my laptop. So dit is waarom ek is nou te sien 'n Mac-spesifieke koppelvlak. So ek gaan om voort te gaan en maak hierdie een. Ek gaan om voort te gaan en nou volle skerm om die venster. En as jy sien, ons kan baie vinnig, as die student gedoen het, een van jou voorgangers, gaan van Hello World om 'n veel meer dwingende aansoek. So hier is die instruksies. O ja, en ons het 'n ander ding. Ek het gedink dit sal pret wees, aangesien, normaalweg, sal ons die verfilming word kameras op hierdie manier. Ek het gedink dit sal pret wees as, Vanessa wees, ons kon sien die wêreld deur jou oë. So hier het ons 'n paar Google Glass. [VERSTOM snak] David Malan: Ons sal slegs gee weg lessenaar lampe vandag. [Gelag] So laat my cue dit op. Alle reg, so raak dit. OK, Glass, 'n video opneem. Alle reg, Vanessa? Nou, as 'n weg wat het niks te doen het met nuuts af, as jy kyk effens op en om die regte, sien jy die letterlike glas, en jy moet sien 'n klein vierkantige venster. Jy moet sien al jou klasmaats verfilm nou? Ja. VANESSA: Ja. David Malan: OK. So dit is goed. Ons sal hierdie materiaal later vry te laat. Vir nou, draai jou aandag na die skerm hier. En wat jou voorganger gedoen het, is sit 'n paar instruksies op die skerm net deur die gebruik van 'n verf program. So jy gaan, in 'n oomblik, druk die space bar te begin. En dan 'n paar stukke van die legkaart gaan om te begin beweeg op die skerm. En jy wil die pyltjie sleutels om te tref, net soos in die werklike DDR, in ooreenstemming met dinge voering met die pyle. VANESSA: OK. David Malan: Jy speel hierdie voor. VANESSA: Ja. David Malan: Alle reg, Vanessa, gaan voort en dit weg te neem. [MUSIEK - KAYNE WES, "Sterker"] [Applous] David Malan: So laat ons nou neem 'n stap van dat. So duidelik, dit is die einde spel. Die einde spel is nie hallo wêreld. Maar jy hoef nie te doen nie noodwendig dinge wat so interaktief. Jy kan ook animasie. So byvoorbeeld, 'n ander een van jou opvolgers het hierdie program hier, wat 'n storie vertel meer as dit geïmplementeer 'n spel. So laat my gaan voort en oop te maak hier 'n program in ons dieselfde bron gids van vandag. Hierdie een oproep, en laat ons begin met 'n koekie liefde storie. En om nie te maak dit ook akademiese, maar as jy kyk na hierdie een, dink aan jouself watter een van dié eenvoudige programmering konsepte wat ons het gepraat oor dusver - veranderlikes en loops, en toestande, het jou voorganger waarskynlik gebruik net sommige van te implementeer die visualisaties. Wat jy hier sien. So ek gee jou 'n koekie liefde storie. [MUSIEK - Green Day, "vakansiedag"] [CRASH] [MUSIEK - die seeskilpaaie, "Gelukkig saam"] David Malan: Alle reg, so daar, ons het 'n koekie liefde storie. Maar selfs daar - [Applous] David Malan: Alle reg, selfs daar dink oor, as diegene harte gaan uit die onderste na die bokant van die skerm, Daar was eintlik 'n bietjie van ' willekeur aan die gang. En inderdaad, sal ons sien dat selfs in die eenvoudigste van omgewings, soos Nuuts af, as in C, kan jy genereer ewekansige getalle, of die illusie van ewekansige getalle, sodat die spel is 'n bietjie meer interessant as wat dit mag as jy het absoluut hard gekodeer alles. In die beweging wat jy sien, is daar daar is 'n soort van reaksie. Sodra die peperkoek man raak die peperkoek vrou, het sy blyk om weg te beweeg. En so, wel, kan jy implementeer, in meeste programmeertale, die idee van gebeure, waardeur as een kant raak die ander kant, wat kan aanleiding gee 'n paar van jou bron-kode te eintlik voer. Jy kan luister vir sodanige dinge wat op die skerm. So kom ons neem 'n vinnige toer, dan, sommige van die boustene wat ons kan gebruik sommige van hierdie doelwitte te bereik. So hier is wat ons sal voortaan roep 'n verklaring gesê. In 'n verklaring gebeur om te wees in pers Nuuts af, 'n bietjie iets soos hierdie, maar dit is arbitrêr. In 'n verklaring is net 'n legkaart stuk of, meer in die algemeen, 'n opdrag, wat vertel die rekenaar te doen iets, 'n verklaring gesê. So hier is 'n eenvoudige voorbeeld. Sê hallo wêreld. 'N ander een kan wag word 'n sekonde. So hierdie legkaart stuk, wat ondersteun word in Scratch, laat ons jou karakters breek vir 'n paar aantal sekondes. Dit is ook net 'n verklaring gesê. Hier langs, ons het 'n ander meer interessante een, speel klank miaau, en die klein pyl beteken dat in nuuts af, dit is 'n drop down menu. So jy kan invoer klanke. Jy kan rekord geluide en doen ander lekker dinge in Scratch. En wat ook al is, aan die einde van die dag, is net 'n verklaring gesê. Maar laat ons nou stel 'n meer interessante stuk, wat bekend staan ​​as 'n Boole-uitdrukking. Capital B, vernoem na 'n mede vernoem Bool. En 'n Boole-uitdrukking is net 'n legkaart stuk of, meer algemeen, 'n stukkie van die inligting wat waar of vals - een of nul, ja of nee. So dit is net een van daardie twee teenoorgesteldes. So een so 'n Boole-uitdrukking in die wêreld van nuuts af lyk soos hierdie blou legkaart stuk. En dit is 'n vraag, muis af, en dit kan óf wees, van Natuurlik, waar of vals is. So met hierdie legkaart stuk in nuuts af, Wel, sal jy in staat wees om op te spoor indien 'n legkaart indien die muis is, in werklikheid, wat gehou word deur die menslike interaksie met jou program. Hierdie een is 'n bietjie meer abstrakte, maar die twee wit bokse is net vir getalle. So jy kan doen dinge soos hierdie is getal minder as die ander? En indien wel, sal Scratch optree een of ander manier. Hierdie een is 'n bietjie meer grafiese. Dit is asof die sprite, as die kat, vir byvoorbeeld, is eintlik te raak van die muis. So as die klein pyl kop beweeg oor die kat, dan is dit legkaart stuk sal evalueer tot ware. Dit sal waar wees, in welke geval, indien u gebruik van hierdie Boole-uitdrukking, soos ons sal sien in 'n oomblik, in 'n tak, kan jy óf dit doen, of jy kan dit doen, baie soos ons het 'n toestand wat nagegaan word, is daar een meer persoon wat laaste in die kamer? As dit so is, voeg een. Andersins, nie verder bekommer nie. So 'n Boole-uitdrukking kan ook en ge-saam of of-ed saam. So jy kan kombineer Boolse uitdrukkings en sê dit en dit moet waar wees vir die hele ding om waar te wees. En hier is 'n meer werklike wêreld voorbeeld. As jy gebruik CS50 kursusse kursus te doen inkopies doen, hierdie blok daar, waar as jy seker maak dat blokkie langs tot die kursusse, sal wat sê, ja, net wys my kursusse waarvoor die Q waarde is 4,5 of hoër. As jy die blokkie dit, nee, dit nie doen nie bekommerd wees oor wat. Of soortgelyk, op die reg, het nie Konflik met kursusse ek neem, dit is waar of vals is. Dit is net 'n Boole-uitdrukking. So al hierdie tyd wanneer jy gebruik webwerwe met blok, is jy net Reguliere die ekwivalent van 'n Boole uitdrukking op en af. So in watter vorm gebruik jy dit? Wel, in Scratch, sal ons sien in 'n oomblik dat daar is toestande wat lyk. En dit is soort van sinvolle omdat baie soos in pseudokode, ons ingekeep die soort van U-vormige stukke van die legkaart, beteken dat alles binnekant van wat U is gaan uit te voer, of nie, afhangende op die plek waar dit is. So as Boole-uitdrukking, dan net die binnekant uitgevoer sal kry. Intussen is daar 'n as / anders blok. So as jy wil 'n tak wat gaan hierdie manier of daardie, gee Scratch ons dat. En deur hierdie logika, nou, selfs al is dit legkaart stuk is duidelik te klein iets anders binnekant van dit te wig, die kras legkaart stukke, hulle is net gaan om te groei. Wanneer jy sleep en oor iets, dit sal net groei aan te pas wat dit is jy probeer om te doen. So ons kan neem om twee van hierdie dinge, en 'n drie wyse vurk in die pad so dat jy of dit of dat, of hierdie ander ding net deur die nes hulle op dié manier. Natuurlik, as jy doen dit ook veel nie, dit begin om te kry lelik. Maar op daardie punt, is jy eintlik waarskynlik nie die programmering baie goed. En so sal dit nie wees herhalende tema, ook dat van die styl. Hoe goed nie eintlik formaat van die kode? Of hoe goed ontwerp jy jou kode? Maar meer oor dit in die toekoms. En nou het ons loops. Daar is 'n mooi vir ewig lus in Scratch Dit beteken letterlik dat - doen net die binnekant van die weer, en weer en weer. Jy kan meer konkrete en sê: doen die volgende ding 10 keer. Jy kan ook gebruik om veranderlikes. Jy kan kom met 'n naam in daardie bietjie drop down en sê, gee my 'n veranderlike genoem en n stel dit gelyk is aan 'n bietjie waarde. En dan kan jy funksies. Maar meer op dié wat in net 'n oomblik. Laat my toe terug te gaan na my Krap koppelvlak. En laat my voort te gaan hierdie keer. En laat ons gaan voort en oop te maak, kom ons sê, 'n voorbeeld van - dit is 'n bietjie meer interessant. Laat my voortgaan, en eintlik, Laat my maak dit net myself. Ek het nie nodig om hierdie een te maak. Laat my gaan na File, New. Ek gaan om te gaan na die gebeure. Ek gaan om te gaan wanneer groen vlag gebruik het, en ek gaan om te gaan om te blaas. En ek gaan om te sleep en hierdie legkaart stuk, speel klank miaau. Dit Haken saam. En nou, as ek op die groen vlag - [Miaau SOUND] David Malan: Adorable. OK, so nou kom ons doen iets 'n bietjie meer logiese net om te bewys dat ons kan, vir nou. Ek gaan om te ontsluit dit van die man. Ek gaan om te gaan om te beheer. En ek gaan 'n toestand aan te gryp. So as iets dan. So dit is hoe dit daar lyk. So ek het 'n Boole-uitdrukking. En laat my gaan voort en sê: laat my gaan aan operateurs. Ek gaan om iets te doen effens Mathy, net vir die skop. Ek gaan om te gaan in hier en sê, as iets wat minder is as iets anders, gaan voort en doen iets. So nou, jy weet wat, 'n ewekansige blok. So hoe sien, as ek hang oor hierdie ding hier, wat sal snap in daar. So nou, kennis, ek is besig om te doen iets wat reeds meer logies interessant. Indien 'n ewekansige getal tussen 1 en 10 minder is as, kom ons sê ses. As ek kies om ses, wat in wese middel, doen die volgende met 50% waarskynlikheid. Dit is soos daarby 'n muntstuk. Nou kan ek iets doen voorwaardelik. En dat iets wat ek gaan om dit te doen is speel die klank. So nou, wanneer ek op die skerm vlag, is dit soos die gooi van 'n muntstuk. [Miaau SOUND] David Malan: Dit was hoofde of is daar iets anders is. Kom ons doen dit weer. [Miaau SOUND] David Malan: Hoofde weer. [Miaau SOUND] David Malan: Hoofde weer. Sjoe, OK. Sterte daardie tydstip. So 50% van die tyd, as ons dit doen, oneindig lank, sal ons kry 50% meows en 50% stiltes. So is daar net 'n basiese gebou blok waarmee ons dit doen. Maar dit is 'n soort van saai dat ek om deur te druk dat die knoppie. So laat ons net sleep en gooi almal weg. As jy sleep hulle na die middel, hulle sal net verwyder hulself. Laat my gaan, te beheer. Laat my gaan om vir ewig. En hierdie keer, ek gaan om dit te doen iets minorly irriterende. [Gelag] David Malan, maar laat my gaan voort en doen beheer. Wag 'n sekonde, net so dit is nie te rooster. [Miaau SOUND] David Malan: Dit is nie 'n natuurlike. OK. [Miaau SOUND] David Malan: En kennisgewing wat, lekker oor nuuts af, vir dié van julle wat vooraf programing ervaring, het jy nie nodig om te begin en stop. Jy hoef nie saam te stel. Jy moet net dit verander, en die program sal dinamies aanpas. So, dit is om 'n bietjie interessant. Maar laat ons neem dit 'n stap verder. Laat my gaan voort en kry ontslae te raak van die program. [Miaau SOUND] David Malan: Dit is wat ons sal roep 'n fout in nuuts af. Hy moet hou nie maak dat 'n gesonde. So ons sal ons vertel om hom te stop. Alle reg, so nou is ek gaan om te gaan in - Ek sal jou laat weet MIT. Ons gaan hier om vir ewig. En nou, ek wil om iets te doen weer en weer. Ek gaan om te gaan in beheer. En laat ons sien, ek gaan om te sleep my indien toestand daar. So nou kennis van die logika. Wanneer die groen vlag word gebruik, doen iets wat vir ewig nie, maar net doen wat iets as hierdie ander ding is waar. Ek gaan om te gaan, laat ons sê, sensors. En ek gaan om voort te gaan en kies raak en gooi dit daar. Dit is 'n Boole-uitdrukking. En nou, kennisgewing, in hierdie daling down menu, is daar sommige gedefinieerde waardes. So ek kan sê, is jy raak die rand van die skerm? Of is jy te raak van die muis, die pyl op die skerm? So ek gaan om dit te doen. En as dit so is, dan is ek gaan om te gaan voort en speel klank miaau. So nou het ek soort van die begin van 'n spel - 'n pragtige spel. [Miaau SOUND] David Malan: OK, 'n pragtige, karretjie spel. Laat my wag, kom ons sê, een sekonde daar. Nou weer te speel, deur te kliek die groen vlag. [Miaau SOUND] David Malan: So nou is dit soos troetel 'n kat. [Miaau SOUND] David Malan: Alle reg, nou is dit een wat ek het maak in advance. Baie laat, dit raak soort maklik om dom dinge te doen. So laat my gaan in hier. Kom ons sê, dat die kat is Pet. Kom nou oop Moenie troeteldier die Cat. Nou, as ons speel hierdie een, jy kan raai, as jy kyk na die skerm - [Miaau SOUND] David Malan: Nou, as ek troeteldier die kat [Gebrul van die leeu] David Malan: So nie eintlik troeteldier die kat in daardie geval. So nou het ons net 'n voorbeeld van 'n tak wat gaan in twee rigtings. Nou laat ek gaan voort en open 'n ander een hier. Hierdie een, ook onder ons bron kode lêers vir die dag. So laat my gaan terug in my Bron gids en gaan, laat ons kies hierdie man hier en sien wat anders is. Sjoe, alles reg, so nou is dit om 'n bietjie meer ingewikkeld. En voor ons sien wat hierdie man doen, laat ons probeer om af te lei, uit die program aan die regterkant. En nou af kan ons duidelik te het verskeie skrifte, verskeie programme wat verband hou met 'n sprite, met 'n karakter, en blykbaar, Hulle is albei gaan loop in lockstep. Omdat beide van hierdie programme begin met wanneer groen vlag druk, is dit sinspeel op 'n meer gevorderde onderwerp, met wat sommige van julle dalk bekend wees, bekend as threading, of multi-threading. Turns out, lang storie kort, rekenaars Vandag kan in wese doen verskeie dinge op een slag. Of hulle kan een ding te doen op 'n tyd so vinnig dat jy nie agterkom selfs dat dit is eintlik een ding op 'n slag. Maar vir nou, laat ons veronderstel dat beide hierdie programme gaan uit te voer op dieselfde tyd. En kennis, beide van hulle het vir ewig stukke van die legkaart. So hulle is beide die gang te hou hardloop totdat ek druk op die rooi stopstraat. So wat gaan hulle doen? Op die linkerkant, ek is blykbaar waarby 'n veranderlike genoem gedemp. So ek het nie noem dit iets soos vervelig soos N. ek het dit gedempte hierdie tyd betekenis oor te dra. Ek stel dit gelyk aan nul. Kom ons dink dat as vals of Kom ons dink dat as vals. Nou, vir ewig doen die volgende. As die keyboard se spasie balk gedruk word, dan as gedempte gelyk aan nul, verander dan gedempte tot gelyke een. Anders, wat gedempte aan nul. So logies, selfs al is dit 'n hele n klomp van die stukke van die legkaart wat net sê, toe ek die Space bar, wat moet ek doen om die veranderlike genoem gedempte? Verander van die een na nul, of nul tot een. Dit is al. So dit is soos om 'n lig skakelaar op of af en onthou, met 'n veranderlike, dat ek dit gedoen het. Intussen, op die regterkant, in leketaal, wat is die doel van die script op die reg? STUDENT: die see leeu klank te speel. David Malan: Sea Lion klank te speel, as hy nie is afgeskakel deur aard van daardie veranderlike. So ons is deel van die staat, so te sê, deel van inligting oor hierdie twee skrifte, want hier sien, is ons vir ewig die volgende te doen. As gedempte nul is, so as dit nie gedemp - As gedempte vals is, dan speel hierdie Sea Lion klank. En dink aan jouself, hi, hi, hi, vir twee sekondes, wag 'n oomblik, en dan kyk weer. So as ons gaan nou hier aan die linkerkant, na die plek waar hierdie man is, en druk die groen vlag, [Seeleeu SOUND] David Malan: Op watter punt hierdie kry regtig irriterende? Want dit sal net gaan vir ewig. So soms, oneindige lusse, om so te praat, is doelbewuste. Maar in hierdie geval, so gou as ek druk die space bar, het hy tot stilstand kom. Nou is die program het nie ophou. Dit is steeds aan die gang in hierdie loops. Maar as ek die space bar weer - [Seeleeu SOUND] David Malan: Hy gaan haal up waar hy opgehou het. So daar is 'n manier vir ons om te doen iets wat weer en weer, maar dat tyd, slegs voorwaardelik. Wel, terwyl ons in hierdie trant van doen dinge weer en weer, laat my gaan in 'n ander so 'n voorbeeld hier. Hierdie een ons bel skape tel. En sien wat hierdie man doen. Dit is eintlik 'n bietjie meer soos die pseudokode ons gespeel met op Woensdag, waardeur hy sit 'n toonbank, dink dit is as N weer te nul, het hy nie vir ewig die volgende. Hy sê die toonbank se waarde vir een tweede, wag 'n tweede, en dan verander die toonbank vir een. En in hierdie konteks, wat net beteken dit inkremente. So voeg hy by een om dit te. So, dit is letterlik - dit is nie heeltemal wat ons dink van as skape tel. Dit is die skape doen die tel, ewig, het van nul. So ons kan doen om soortgelyke dinge daar, logies. Maar laat ons nou probeer om skoon te maak sommige van hierdie dinge. Laat my voort te gaan nou in 'n eenvoudige voorbeeld waar ons kat is net gaan om te begin hoes. Alle reg, so hier het ons hoes 0 - rekenaar wetenskaplikes begin tel van 0. So, die kat is net gaan drie keer om te hoes. En hier is hoe ek geïmplementeer nie. Wanneer groen vlag gebruik het, hoes, wag, hoes, wag, hoes, wag. En ek het dit net deur te sleep en val stukke van die legkaart. Of as jy begin om te geknoei met krap sal jy sien jy eintlik kan dupliseer stukkies so dat jy kan doen dinge meer vinnig sonder sleep en val ad nauseum. Maar ons is nog nie op die beste pad hier. Want hoe maak ek hom hoes 'n vierde keer? Wel, kan ek soort van hier af. Ek kon dupliseer en dan Plak hierdie in daar. Hoe maak ek hom hoes 'n vyfde keer? Wel, kopieer en plak weer. Of sleep drop weer. En baie vinnig, is hierdie program begin om te kry regtig, regtig oorbodig, regtig lank, maar regtig vervelig. Maar daar is 'n manier om dit op te skoon te maak. Wat is die voor die hand liggende manier hierdie up skoon te maak? OK, so ons kon regtig eintlik gaan uit en, wanneer jy druk op die ruimte bar, het hom hoes. Maar as ek wil net om iets te doen herhaaldelik, onthou dat ons nie ' n mate van beheer konstrukte. Laat my trek dit uit die manier, gaan onder beheer. Laat my net te doen om 'n herhaling, sê, drie keer. En nou, laat my steel 'n van hierdie stukke van die legkaart. Laat my snap dit in hier. Laat my toe om hierdie weg te gooi nie geheel en al. En nou, ek het 'n beter ontwerp program. Hoekom? As ek wil die aantal kere te verander hierdie kat hoes, al wat ek het om te doen is verander een veranderlike, of een waarde, eerder van drie, vier, of vyf of ses. Of ek kon iets doen voorwaardelik, selfs, met die ruimte staaf as ek wou. So dit is 'n algemene beginsel. Sodra jy begin kopieer en plak kode, of dit nou in nuuts af, of in C, jy doen iets verkeerd, waarskynlik. Of ten minste, as jy eers 'n paar oorskry redelike getalle van die afskrifte en pasta, is jy waarskynlik doen iets verkeerd. Maar jy weet wat? Ek het nie regtig soos hierdie. Dit is nie die skoonste ontwerp. Ek wens daar was 'n legkaart stuk genaamd hoes, want dan sou ek nie het om te implementeer hierdie myself, die ou manier, deur hy sê, en wag - Wat as hulle was net 'n hoes legkaart stuk. Wel, ek kan dit eintlik doen nie. Laat my gaan onder meer blokke, kliek Maak 'n blok, en nou kry ek hierdie venster hier. Ek gaan hierdie ding hoes te bel. Ek gaan om voort te gaan en kliek OK. En nou kennisgewing, ek kry 'n nuwe begin stuk wat op die top geboë is. En wat gaan ek doen met hierdie, ek is gaan net steel hierdie blokke. Ek gaan hulle hier te plaas. En nou, met hierdie drie stukke, ek het geïmplementeer wat ek gaan 'n om te bel funksie, of 'n prosedure, of 'n paar van jy dalk weet dit as 'n metode. Effense verskille tussen die woorde. Maar vir nou, laat ons net noem dit 'n funksie. Dit is net 'n nuwe legkaart stuk. Nou is dit geïmplementeer word soos hierdie. Maar let op dat Scratch gegee het vir ons 'n fisiese voorstelling van die hele blok hier. So nou, ek kan net sleep dit oor hier, sê, drie keer herhaal, en wat gaan gebeur nie nou, wanneer ek speel Dit script, is slegs een program loop op 'n tyd. Daar is net een wanneer groen vlag gebruik. Maar wat pers blok genoem hoes effektief te vertel nuuts af, elke keer as jy sien dat legkaart stuk, eintlik voer die stappe wat ek gebeur met die hand te implementeer. So dit is soort van netjies. Maar nou, veronderstel dat ek besluit het, het ek dit nie doen nie wil hierdie kat net om te hoes. Ek wil hom in staat wees om om so goed te nies. Wel, hoe kan ons gaan oor implementering nies? Wel, ek kan pretty much doen dieselfde ding. Ek kon 'n ander blok. Ek kon dit nies noem, kliek OK. Dan, oor hier kon ek eintlik het, laat my dupliseer hierdie - en daar is waar jy moet voel soos jy waarskynlik nie om iets te doen in die beste manier. Ek kon so iets sê, achoo, vir 'n sekonde. Wag 'n sekonde. Nou het ek 'n nuwe blok genoem nies. En inderdaad, daar is dit. Maar hierdie, ook, moet begin om te voel - Miskien nie die eerste week van klas, maar deur die tweede - net 'n bietjie oorbodig. Dit is duidelik dat daar is 'n paar ontslag hier. So laat my stel, in plaas daarvan dat ons verfyn hierdie definisie soos volg. Laat my gaan na my lêer menu. Ek gaan nie hierdie weergawe te red. Ek gaan om te gaan in een van my gemaakte lêers hier. En ek gaan om voort te gaan en maak hoes 2. Oeps wat hoes 2. Laat my gaan voort en oop te maak hoes 3, wat is hierdie bron gids. Hoes 3 en let op - o, ek het vir die storie in die verkeerde volgorde. Laat my herstel van hierdie storie. Die storie wat ek bedoel om te sê eindig met 'n hoes 4 - daar is dit. So wat as ek, in plaas daarvan, definieer 'n groter legkaart stuk genoem definieer, sê woord n ​​keer. Nies is net, blykbaar, in nuuts af, achoo. So het ons druk dit as 'n woord, net omdat dit is die beperking van die program. En 'n hoes [COUGH], maar hoes, C-O-U-G-H. So dit is net twee verskillende woorde te doen, in wese, dieselfde ding. So ek kan eintlik 'n nuwe blok soos hierdie. Ek het nie hierdie opsie nie. Maar wanneer jy kliek Maak Blok, jy kan kies 'n paar opsies. En jy kan dat hierdie blok eintlik sê neem 'n paar insette, anders bekend as argumente of parameters, so wat jy kan verander die gedrag van jou blok. So, wat ek gedoen het, 'n oomblik gelede was Ek het hierdie blok sê nie. En dan het ek gesê het, dit neem 'n string insette. En kyk nou, by verstek, dit sê string 1. 'N string is net 'n woord, of 'n woorde, vir ons doeleindes. Maar ek gaan net 'n paar te sit standaard teks daar, net soos in 'n webwerf, wanneer jy sien gebruikersnaam, of wagwoord, en dan verdwyn dit wanneer jy begin tik. Dit is al wat dit is. En nou gaan ek voeg 'n aantal insette. En ek gaan dit n te noem - maar dit is redelik arbitrêre. En dan net 'n etiket te maak net hierdie blok 'n bietjie meer self verduidelikende - tye, dit is wat ek nou net gedoen het. En die eindresultaat is dat ek 'n blok wat lyk soos hierdie. En kyk nou, ek is met behulp van 'n herhaling blok. Maar eerder as harde kodering drie, is ek sleep n in daar so ek kan parametrize die funksie. Ek kan hierdie funksie om iets te doen 'n ander aantal kere wat gebaseer is op daardie waarde. En let op, sê, dit is wat ek gedoen het, hier, as ek sleep woord, kan ek nie sê nie 'n hard gekodeer woord nie, maar wat ook al geslaag is in vir 'n sekonde. Intussen, hoe kan ek weer te implementeer hoes? Ek plaas definieer hoes as sê hoes n keer. Dus, in kort, ek gaan deur middel van hierdie vinnig, maar die basiese idee is om so gou as jy begin sien in jou program dat, wag 'n minuut, het ek gedoen iets wat baie soos hierdie voor, kan ek faktor uit 'n paar algemene funksie? Ek kan ontbind wat ek doen in 'n paar basiese idees? Dit is wat ons hier doen. En ek het gestapel hierdie dinge, visueel, op die top van mekaar want dit is bewys dat die idee van begin met binêre, gaan ASCII, die maak van grafiese programme, soort lae toenemend komplekse idees op bo-op mekaar. Dieselfde idee hier. Ek het begin van nuuts af, implementering hoes, toe besef hoes is eintlik net om iets te sê. So laat my plaas te implementeer idee om iets te sê. En op die top van daardie, ek kan implementeer achoo, of hoes? En ons kon doen nie meer sulke variante steeds. So van hierdie basiese beginsel ons kan begin om te doen toenemend komplekse programme. Laat my oop te maak hierdie een. Ons kan eintlik het verskeie sprites interaksie op die skerm op een slag. As ek gaan in my bron gids en gryp 'n sogenaamde Threads, onthou dat 'n draad is eintlik maar net die vermoë van twee skrifte kant deur te voer kant op dieselfde tyd. Let nou, het beide 'n voël sprite en 'n kat sprite, wat beide hul eie skrifte. So kennisgewing, wanneer ek op die kat, ek kry hierdie skrifte. Wanneer ek op die voël, Ek kry hierdie skrifte. So elkeen van hierdie ouens het sy eie programme. Toe ek nou op die groen vlag, let dat wat hierdie program doen, is het die kat, ongelooflik stadig, jaag die voël. Maar die kat het die voordeel van ' geprogrammeer is in so 'n manier dit maak nie saak waar die voël is, die kat gaan na hom toe. Ons kan die spel baie vinniger speel. So as ek op die kat, let op dat ek gebruik, kom ons sê beweeg een stappe. Kom ons hom beweeg vyf stappe teen 'n tyd, so vyf punte op 'n tyd. Laat my kliek speel. [Gebrul van die leeu] David Malan: Alle reg, nou kan ons gee regtig die kat die voordeel. 10 stappe op 'n tyd. [Gebrul van die leeu] David Malan: Alle reg, so vinnig, raak dit 'n bietjie voordeel vir die kat. Maar ek sal my hand golf op Sommige van die besonderhede. Maar die rede dat die pad is begin 'n bietjie anders elke keer is dat ek 'n bietjie van ewekansigheid is om te doen. Ek is eintlik wys die kat in 'n ander rigting wat gebaseer is op die plek waar ek wil hom so begin wat elke keer die spel is, of die animasie, is 'n bietjie anders. Nou, laat my voer een ander hier bou. So in hierdie geval, het ons funksies. Daar gaan ook 'n legkaart stuk wees bekend as 'n skikking, of 'n lys, wat jou toelaat om te stoor meer as een waardes binnekant van 'n veranderlike. Ons het gesien drade en nou daar se gebeure. So hier is 'n geleentheid gebruik hierdie twee ouens hier. En as ek oop te maak die lêer genaamd Events van vandag se voorbeelde, sal ons sien 'n program wat lyk 'n bietjie soos hierdie. En nou sien hierdie man - so sien ek die blou Muppet gedruk - Hy is nie net die volgende. Hy het nie een van daardie groen vlag stukke van die legkaart. Hy het 'n wanneer ek geval - so 'n paar arbitrêre woord. Ek het net getik het geval daar - hy gaan om te sê, Polo, vir twee sekondes. So die van julle wat vertroud is met hierdie spel kan weet waar dit gaan. As ek nou op die oranje Muppet, Sy program doen dit. Forever, indien die sleutelbord space bar onderdruk, is hy gaan om te sê, Marco, vir twee sekondes op die skerm. Maar hy gaan ook hierdie liefhebber te gebruik blok bekend as uitsending. Hy gaan haal uit te saai unquote, "gebeurtenis." Intussen het die blou man, onthou, is luister vir kwotasie unquote, "gebeurtenis." So een of ander manier, nou, kan ons 'n twee sprites interaksie. En wanneer ons web ontwikkeling, later in die kwartaal, op soortgelyke wyse sal hierdie voordelig wees om jou webwerf te hê om iets te doen in reaksie op, vir Byvoorbeeld, 'n klik van die sleutelbord. So laat my gaan voort en druk die space bar. Orange man sê Marco. Blou man sê Polo. As ek dit weer doen oranje man sê Marco, blou man sê polo. So laat dit 'n stap verder te neem. Hierdie tyd, sal ons gaan, waarskynlik, net 'n paar minute hier. Het ons - lessenaar lamp, kom neer. Jy is reg op die einde. OK, kan jy beide kom. Ons het lessenaar lampe vir almal. Kom op. Ek weet nie of ons kan hou hierdie belaglike gag up al semester, al is. Alle reg, kom neer. En in die tussentyd het ons die volgende voorbeelde om te trek, net om te versnel dinge nou, soos wat ons 'n manifestasie van 'n ander voorganger van jou gebruik van die dieselfde basiese boustene. Wat is jou naam? JOHN: John. David Malan: John. Lekker vir my nie. En? Setz: Setz. David Malan: Setz, lekker vir my nie. John, as jy wil om te kom op die eerste, dit is 'n ou skool spel genaamd Frogger. Jy gebruik die sleutelbord vir hierdie so goed. En die doel is om te kry oor die straat en water. [Frogger musiek en klank TONEELSTUKKE] David Malan: Ek is jammer, geen lessenaar lamp vir jou vandag. Alle reg, Setz, sou jy wil om te kom op nie? Alle reg, laat ons dit weer doen. Setz: Gebruik ek die pyle? David Malan: Slegs die pyltjie sleutels. Op, af, links, regs. [Frogger musiek en klank TONEELSTUKKE] David Malan: Ons sal hulle noem: troospryse vandag Dan, baie goed gedoen. Hier, vir beide van julle, John en Setz. Baie geluk, alles reg. So weer, soos die spel speel, dink oor wat gaan aan? Een, daar is duidelik 'n baie van die beweging. Maar ons het gesien hoe, met die kat en die voël byvoorbeeld hoe jy die kan maak illusie van beweging deur net die beweging van 'n paar aantal pixels weer en weer. En as jy 'n ewig blok, jy kan hê om hierdie motors doen dit vir ewig. Ons het die vermoë om te het 'n paar willekeur. So hierdie spel hoef nie te wees presies dieselfde elke keer. Hierdie stompe, die motors, kan by effens verskillende tye so dat die spel self is meer interessant met elke wedstryd te speel. En intussen het ons gesien dat die vermoë om te luister na die space bar. Maar dit is duidelik, in Scratch, kan jy ook luister op, af, links, regs, en regtig enige sleutel op die sleutelbord. En jy kan ook 'n paar ander dinge. Laat my gaan voort en gaan terug na die web-weergawe. Laat my gaan in ons versameling voorbeelde hier. En onder My Studio, video wat is, in wese, 'n gids op scratch.mit.edu. Ons het die web weergawes van al hierdie projekte. En laat ons sien of ek kan my rekenaar om hier te werk. Dit is geskryf deur een van ons vriende by MIT, genoem Skuif die Butterfly. En wanneer hierdie open, is dit gaan eintlik meer gebruik van my rekenaar se hardeware. Nuuts gebeur geïmplementeer moet word met Flash. Flits kan praat met jou webcam, as jy een het. So as ek gaan voort en vol skerm hierdie hier, kliek op die groen vlag, kennisgewing dat Flash se veiligheid boodskap sê, wil jy laat my webcam te gebruik? Gewoonlik, moet jy waarskynlik sê ontken. Maar in hierdie geval, sal ons sê laat. Dan gaan ek Chrome te vertel toe te laat dat dit so goed. En nou, in 'n oomblik, jy my sien, yep, me. En as my hand styg - Ek het om te beweeg nie my kop op dieselfde tyd. Daar is ook 'n weerspieëling op die skerm. Kom op, daar gaan ons - jy kan beweeg dit op die skerm verskyn omdat daar is ook stukke van die legkaart - O, jy weet wat dit is, dit is omdat jy ook sien die projektor skerm agter my. So het ons 'n bietjie oneindige ding gaan daar aan. Alle reg, so ek sal speel af hier. Daar gaan ons. So is daar ook 'n legkaart stuk wat sê, wanneer jy sien beweging onder een van die sprites, kan jy dit gaan op, af, links, regs of die wil. So het ons 'n bietjie van die virtuele werklikheid gaan hier so goed, almal binne die grense van my leser, net hier in met my webcam. So, wat is dan op die horison. Die eerste probleem stel, as jy sien, of die webwerf sal online later gaan vanaand om cs50.net, is redelik veel aan die gang te wees oop. En te implementeer 'n skrapie projek van belang vir jou, 'n spel, 'n interaksie, om iets kunstig, en daag jouself 'n aantal te gebruik van hierdie stukke van die legkaart. En dit kan óf interaktiewe op hierdie manier. Of dit kan wees om iets meer doelbewus het 'n storie te vertel. En inderdaad, dit is waar ons sal eindig Vandag, met 'n laaste voorbeeld. Laat my gaan in Scratch plaaslik. Laat my gaan voort en maak dit, en speel 'n laaste program wat geskryf is deur 'n van jou voorgangers, naamlik dat 'n mens hier. Goed, verhoog die volume vir hierdie een. [Speel van musiek] NARRATOR: By die volgende CS50, David nooi 'n vrywilliger op die verhoog. David Malan: Vir hierdie demonstrasie, ons gaan 'n vrywilliger nodig. Wil jy om te kom op af? Wat is jou naam? Beweeg op.