[Speel van musiek] 

-Alright! 

Nie, dit is CS50. 

Nie, dit is CS50. 

Nie, dit is CS50. [MUSIEK - IGGY AZALEA, "FANCY"] 

-My gunsteling herinnering van CS50 was toe ek Day legkaart. 

-Probably Net die tyd gewerk het op die probleem stelle saam met my vriende en mense wat weier uiteindelik my blockmates. 

-My beste herinnering van CS50 is die Hackathon. -Die CS50 Hackathon. 

-Hackathon. 

-Hackathon. -Hackathon. -Die Hackathon -Rob Bowden. Net alles oor hom. 

[MUSIEK - IGGY AZALEA, "FANCY"] 

-My gunsteling herinnering is toe ek op Ek stadium gespeel en die gesogte rol van 'n knoop [? in die gekoppelde?] [? Lys. ?] 

-Wanneer Ons almal het gratis Dropbox ruimte en David was soos, kyk onder jou sitplekke. En dit was soos, ruimte vir almal! 

[MUSIEK - IGGY AZALEA, "FANCY"] 

-My raad vir enige inkomende student sou wees om regtig te werk op P-stelle met vriende. 

-Office Ure is baie jou vriend. 

-maak Die meeste van jou ervaring en aan soveel mense as wat jy kan. 

Nie bang om te vra vir hulp. -Tuisblad die P-stelle vroeg in die week. -Ek Dink die grootste ding is om te neem voordeel van al die hulpbronne dat CS50 het. 

Rijd te kantoorure vroeg in die week. 

-Definitely Kyk na die kortbroek. 

Jump uitstel op jou P-stelle. -Maak Seker jy vind 'n groot groep mense om te werk aan P-stelle met. Jy kan 'n baie pret en raak saam te werk gedoen. 

Nie bang om jouself te stoot nie. Gaan vir die hacker uitgawe soms. 

-Write Dinge op papier voordat jy al ooit raak jou rekenaar. 

-CS50 Is regtig groot op die verskaffing van maniere om hulp te kry. 

-MY Een stuk van die raad is slaap. Het iemand gesê dat? Slaap, vir seker. Dit is maklik om te doen nie, maar jy het om dit te doen, dink ek. 

-Ek Sou sê regtig geestelik voorberei word want jy gaan dit om lief te hê. [MUSIEK - IGGY AZALEA, "FANCY"] 

Nie, dit is CS50. 

Nie, dit is CS50. 

Nie, dit is CS50. [MUSIEK - IGGY AZALEA, "FANCY"] 

Nie, dit is CS50. 

[Applous] 

David J. Malan So dit is CS50 en dit is die einde van die week 0. En dit was net 'n paar van CS50 se personeel wat wag jy nie net in afdelings en kantoorure, maar ook die komende naweek op CS50 legkaart Day. Watter, weer, is nie alles oor ontwikkeling. Inderdaad, is dit verwag dat jy sal nie iets om die program, maar eerder probleme op te los met behulp van verstand en vriende saam met jou. 

Ons sal bygestaan ​​word deur 'n paar van ons vriende by Facebook-- As jy here-- registreer wat vir die afgelope paar jaar, het eintlik skryf hierdie uitdagings met ons. En so, sal hulle die kinders uiteindelik loop legkaart Day. En so, sal jy uitgedaag word met presies die soort van dinge en probleme wat mense by Facebook wil om te dink oor. So dit is môre. Registreer by cs50.harvard.edu/register. 

Nou is 'n woord op 'n paar van die personeel in die besonder. Dit is hier is Ansel Duff, wat eintlik een van die mede-outeurs van hierdie binêre gloeilampe wat ons gesien het op Woensdag, bykomend tot CS50 se eie Dan Bradley. Ansel Duff was ook 'n voormalige groentjie advisee van my 3 jaar gelede en hy eintlik nog gebou hierdie kateder. Hy is weg op te doen ingenieurswetenskappe en nog baie meer. Nou, sy foto hier is eintlik Ansel 3 jaar gelede by die CS50 Hackathon toe hy geleen een van ons ballonne, steek dit aan sy skootrekenaar, en vir die volgende 12 paar vreemde uur, gefokus op sy finale projek, neem breek net oop te maak sakke van snoep aan die Hackathon. 

Maar hy het meer onlangs spandeer die afgelope somer met ons, sedert CS50 vir sy personeel en nou studente hierdie semester, het sy eie 3D drukker. En in 'n neutedop 'n 3D drukkers is 'n toestel wat lyk baie soos hierdie. Jy vul dit met 'n plastiek spoel wat gesmelt deur die toestel en jy dinge te bou letterlik uit niks. Baie soos 'n inkjet drukker, jy begin spoeg bietjie kolle van plastiek wat tesame met vorm geheel voorwerpe. En so Ansel byvoorbeeld vroeër hierdie somer, het 'n iPhone 5 en besluit hy wou regtig om dit te stut op sy lessenaar. Maar hy wou nie gaan uit en koop iets van die Apple winkel of die wil, sodat hy gaan sit en begin trek iets. Hy het 'n paar metings hoe dik en hoe groot sy iPhone was, hy hierdie beeld het hier, het hy besluit dat hy wou 'n 75 graad hoek te hê as dit is staar hom op sy lessenaar daar. Hy het hom dit, gebruik sagteware, in 'n 3D CAD model wat lyk 'n bietjie iets soos hierdie. En het toe voortgegaan hy, uiteindelik, om werklik dit skep. So in werklikheid, as enige van julle hier, miskien in 'n ry wat ek kan gooi, het an-- daar het ons mense met 'n iPhone 5, en hier het ons twee meer. 

Nou, om nie te oortref word, CS50 se eie Cheng Gong ook uiteengesit in die somer nogal 'n paar dinge en te bou, Trouens, vir die redes wat nog onduidelik, het stadig druk 'n leër van olifante met die artikulering arms en stamme. 'N Paar wat eintlik hier as iemand sal nou like-- 'n olifant. Alle reg,. maar wat Cheng het ook vir ons is hy baie vriendelik opstel van 'n kamera omdat olifante, glo dit of nie, neem sowat twee en 'n half uur te druk. Selfs die iPhone staan ​​het 'n uur en 'n half te druk. En wat Cheng het nog ' is gestig 'n lekker kamera in die voorkant van hierdie 3D drukker, verfilm vir 'n uur en 'n half as Ansel se ontwerp gedruk. Ons oorgetrek paar sexy musiek het ten einde te gee om dit te sien hoe 3D druk werk. En selfs al is dit is eintlik in plastiek, besef dat indien dit is 'n gebied van belang vir jou akademies, daar is mense, onder hulle Jennifer Lewis hier by die Skool vir Engineering, wat eintlik werk op 3D druk plastiek voorwerpe. Maar selfs toenemend biologiese materiaal op te los fisiologiese probleme vir die mens. Maar hier is 'n bietjie iets van CS50. 

[LOUD meganiese geluide] David J. Malan Dit klink nie iets wat in werklikheid, maar dit is baie koeler om dit te sien teen daardie spoed, en met daardie klank. 

Nou, op Woensdag, hoe het ons die eerste keer hier? Ons het begin praat oor die rekenaar wetenskap en ons gevra wat dit was nie. En dit gaan oor 'n aantal van die dinge, en daar is so baie verskillende rigtings waarin jy kan kop na 'n kursus soos CS50. In werklikheid, as jy opgetel een van die nie-amptelike gids te CS buite, die boekie wat ons voorsien, of jy dink van die neem van net CS50, of dalk besig met 'n sekondêre, of miskien selfs konsentreer in CS, nie flip deur dit. En jy sal 'n diagram te sien aan die einde wat sien jy die verskillende rigtings in CS wat jy kan gaan af in. 

Maar vir vandag, sal ons fokus weer op regtig een van die fundamentele standpunte, miskien, waar jy insette tot probleme, jy uitgange van probleme, en jy het algoritmes waarmee te skep diegene uitgange van dié insette. En een so 'n voorbeeld, was van Natuurlik, dit telefoon boek hier. En ons gebruik as 'n voorbeeld om te gaan deur 'n algoritme wat nie korrek was. En dan die ander een was korrek is, maar 'n bietjie vinniger. En dan die ander een wat 'n bietjie was meer dramaties, maar fundamenteel vinniger. 

Reg, hierdie telefoon boek ons geëis het sowat 1000 bladsye. En hoeveel keer het ek die telefoon boek in die helfte te skeur om iemand te vind soos Mike Smith, maksimaal in 1000 bladsy boek? So, 10 gee of neem. En so nadat ek hierdie ding skeur in helfte, of net meer volwasse, verdeel in die helfte, dit is net 10 bladsye uit 1000. En as jy ekstrapoleer, 'n bietjie onrealisties vir 'n telefoon boek, maar as dit telefoon boek het 'n paar 4 miljard bladsye in dit, so heeltemal lomp fisies, hoeveel keer verdeel jy nie 'n 4 miljard bladsy telefoon boek in die helfte? So dit is eintlik 32, gee of neem. En net so 32 keer uit 4 miljard bladsye, kan jy iemand soos Mike Smith. En dit is doeltreffendheid. Dit is 'n goeie algoritme, daresay. 

Maar dan moet ons beweeg van daardie om te probeer om dit te formaliseer. En ek het voorgestel hierdie pseudokode kode. Pseudokode kode is niks formeel. Dit is nie iets wat jy onthou. Dis net iets wat jy druk redelik intuïtief gebruik Engels, of enige taal regtig, wat dra jou idees saaklik. Maar wat is die sleutel oor pseudokode kode is dat jy probeer om al die te verwag moontlike gevalle wat kan gebeur. En inderdaad, in hierdie pseudokode kode, daar was regtig drie gevalle elke keer as ek die telefoon boek verdeel. Mike dalk aan die linkerkant. Mike kan wees aan die regterkant. Of hy dalk reg op die bladsy Ek is nie. Of 'n vierde hoek geval, om so te praat. 'N slegte scenario kan 'n mens wees which-- wat gebeur? Mike is net nie in die telefoon boek nie. 

En toe programme crash-- wanneer Mac en PC sagteware wat julle hardloop op jou rekenaars soms hang of onverwags gesluit, wat oor die algemeen beteken dat sommige programmeerder, sommige mense soos jy gou, net verfrommeld en het 'n fout. Miskien nie verwag het dat miskien is daar geen Mike Smith in die telefoon boek. En as jy nie eintlik skryf kode situasies soos dié te hanteer, algemeen onvoorspelbaar dinge kan gebeur. Jou masjien kan vries. Dit kan herlaai. Die program kan hou. En so al hierdie stupidities wat jy kan het in jou werklike teëgekom lewe net die gebruik van rekenaars, toenemend net verduidelik weg deur hierdie intuïsie en hierdie begrip van wat eintlik gaan op onder die kap. 

Nou laat ons probeer om 'n blik te neem op 'n meer algemene probleem. Eerder as om bywoning in 'n plek soos hierdie, wat baie stadig sou wees een, twee, drie, vier te doen. Of miskien twee, vier, ses, agt. Kom ons fokus eerder op hoe ons die formalisering die algoritme van die proses wat ons kan neem bywoning. En langs die pad, laat ons begin sommige naam om aansoek te doen dat ons vandag sal gebruik wanneer ons eintlik begin programmering in 'n taal. So ek gee jou nou, 'n vier minute video dat ons saam met ons vriende vanaf TED, die organisasie. Waardeur ons verskaf 'n script en hulle het hul vermaak te dra, en eintlik het 'n 2D animasie van wat 'n algoritme is. As ons die ligte kan verdof. 

[Speel van musiek] NARRATOR: Wat is 'n algoritme? In rekenaarwetenskap, 'n Algoritme is 'n stel instruksies beslegting 'n probleem stap-vir-stap. Tipies, algoritmes uitgevoer word deur rekenaars, maar ons mense het algoritmes as well. Byvoorbeeld, hoe sou jy gaan tel die aantal mense wat in 'n kamer? Wel, as jy soos ek, sal jy waarskynlik wys op elke persoon op 'n tyd en tel van nul. Een, twee, drie, vier, en so meer. Wel, dit is 'n algoritme. In werklikheid, laat ons probeer om dit 'n te druk bietjie meer formeel in pseudokode kode. Engels-agtige sintaksis wat lyk soos 'n programmeertaal. 

Laat n gelyke 0. Vir elke persoon in die kamer, stel n gelyk is aan n plus 1. Hoe die pseudokode te interpreteer? Wel lyn een verklaar, so te sê, 'n veranderlike genoem N en initialiseert sy waarde tot 0 Dit is net beteken dat die begin van ons algoritme die ding wat ons is toe het 'n waarde van 0. Na alles, voordat ons begin tel ons het niks getel nie. Oproep hierdie veranderlike N is net 'n konvensie. Ek kon genoem het dit die meeste enigiets. Nou word twee demarks die begin van 'n lus, 'n reeks stappe wat sal herhaal sommige paar keer. So in ons voorbeeld, die stap ons neem is toe mense in die kamer. Onder lyn twee is lyn drie wat beskryf presies hoe ons gaan oor tel. Die inkeping impliseer dat dit is lyn drie wat sal herhaal. So met die pseudokode kode is sê, is dat na die begin by 0 vir elke persoon in die kamer ons sal toeneem n deur 1 Nou is hierdie algoritme korrek? Wel, laat ons bang op dit 'n bietjie. 

Werk dit as daar twee mense in die kamer? Kom ons kyk. In lyn een inisialiseer ons n 0. Vir elk van hierdie twee mense, ons dan inkrementeer n deur 1. So in die eerste reis deur die lus, ons werk n 0-1. Op die tweede reis deur daardie dieselfde lus, ons werk n 1-2. En so, deur hierdie algoritme se einde, n 2, wat inderdaad ooreenstem met die aantal van die mense in die kamer. So ver, so goed. 

Hoe om 'n hoek geval al? Veronderstel dat daar is 0 mense in die room-- behalwe vir my, wie is doen tel. In lyn een, het ons weer inisialiseer n 0. Hierdie keer egter, lyn drie nie uitgevoer te word nie want daar is nie 'n persoon in die kamer. En so bly n 0, wat inderdaad ooreenstem met die aantal mense in die kamer. Eenvoudig, reg? Maar die mense een tel op 'n tyd is redelik ondoeltreffend, ook nie? Sekerlik kan ons beter doen. Hoekom nie twee mense reken op 'n tyd, in plaas van die tel van een, twee, drie, vier, vyf, ses, sewe, agt, en so meer. Hoekom nie tel twee, vier, ses, agt, en so aan? Dit klink selfs vinniger. En dit is seker. 

Kom ons druk hierdie optimalisering in pseudokode kode. Laat n gelyke 0. Vir elke paar van die mense in kamer, stel n gelyk is aan n plus 2. Pretty eenvoudige verandering, reg? Eerder as een tel mense op 'n tyd, ons plaas hulle tel twee op 'n tyd. Hierdie algoritme se dus twee keer so vinnig as die vorige een. Maar is dit korrek? Kom ons kyk. Werk dit as daar twee mense in die kamer? In lyn een, ons inisialiseer n 0. Vir wat 'n paar van die mense, ons dan inkrementeer n deur 2. En so deur hierdie algoritme se einde N 2, wat inderdaad ooreenstem met die aantal van die mense in die kamer. 

Veronderstel die volgende dat daar zero mense in die kamer. In lyn een inisialiseer ons n 0. Soos voorheen, lyn drie beteken dit nie uitvoer nie al want daar is geen pare mense in die kamer, en so n bly 0. Wat inderdaad ooreenstem met die aantal mense in die kamer. Maar wat as daar drie mense in die kamer? Hoe hierdie algoritme tarief? Kom ons kyk, in lyn een, ons inisialiseer n 0. Vir 'n paar van die mense, ons dan inkrementeer n deur 2. Maar wat dan? Daar is nie 'n vol paar van die mense in die kamer, so word twee nie meer van toepassing is. En so deur hierdie algoritme se einde, N is nog 2 wat nie korrek is nie. Inderdaad hierdie algoritme se antwoord wees karretjie omdat dit 'n fout. 

Kom ons regstelling met 'n paar nuwe pseudokode kode. Laat n gelyke 0. Vir elke paar van die mense in kamer, stel N gelykstaande aan n plus 2. As een persoon bly onverbonde, stel N gelykstaande aan n plus 1. Hierdie spesifieke probleem op te los, het ons bekendgestel in lyn vier 'n toestand, andersins bekend as 'n tak, wat net voer uit As daar nou een persoon wat ons kon nie paar met mekaar. En so nou, of daar is een, of drie, of enige onewe aantal mense in die kamer, hierdie algoritme sal nou hulle tel. Kan ons selfs beter? Wel, kan ons in drieë tel, of viere, of selfs twintigs en tien Maar as dit nie, gaan dit te kry 'n bietjie moeilik om te wys. 

Aan die einde van die dag, of uitgevoer word deur rekenaars of die mens, algoritmes is net 'n stel instruksies waarmee probleme op te los. Dit was net drie. Watter probleem sal jy op te los met 'n algoritme? 

David J. Malan So doelbewus, 'n baie eenvoudige program, 'n baie eenvoudige algoritme, vir die bereiking van iets baie eenvoudig, tel die aantal mense in die kamer. 

Maar laat ons terg uitmekaar sommige van die verteenwoordigende funksies hier wat eintlik gaan selfs nuttig te wees wanneer die implementering van die mees kompleks van sagteware. So byvoorbeeld, in die eerste lyn, ons het wat ons noem die veranderlike, en wat uit die algebra, is jy algemeen bekend gebruik x en y en Z soms, en so meer. Maar in ontwikkeling, veranderlikes nog aan die einde van die dag, baie soortgelyk aan dié. Maar dit is dalk makliker om te dink van 'n veranderlike as net 'n houer. En, in werklikheid, dit is 'n paar aantal stukkies in jou hardeskyf geïmplementeer een of ander manier of in jou rekenaar se geheue, maar meer oor dit in die toekoms. Dit is net 'n houer. En as jy iets sê soos laat n gelyke 0, Wel, dit is soos om hierdie glas bak hier N, net 'n arbitrêre naam, en om niks in dit aanvanklik. So het die waarde van hierdie bakkie is nou nul. En natuurlik as jy sien in 'n daaropvolgende reël, om werklik inkrementeer paar lyn van kode, soos in hierdie derde lyn hier, met 1, dit is soos om te sê wat is die huidige waarde van N, dit is 0, plus 1, sit iets soos 'n tafeltennis bal in hier. Nou is die waarde van hierdie veranderlike is eenvoudig 1. En jy kan baie vinnig ekstrapoleer, maar nou is dit 2, is dit nou 3, en so aan. So dit is al wat 'n veranderlike is. Dit is 'n stukkie van die stoor te eintlik slaan sommige data. Vir nou is dit 'n tafeltennis bal. Daar is dit 'n nommer. Maar dit kan wees woorde in 'n woordeboek, soos die speltoetser Ek verwys na Woensdag vir een van verlede jaar se probleem stelle. 

Nou nog 'n belangrike idee, wat soortgelyke is redelik intuïtief Ek sou eis, is dié van 'n lus. En die lus in die proses almal tel is, natuurlik, doen dieselfde ding weer en again-- óf een op 'n tyd of twee op 'n tyd. En jy kan dit uitspreek in Engels, of pseudokode kode, in 'n aantal van maniere, maar die gebruik van hierdie voorsetsel "vir" is 'n baie algemene manier om dit te doen. Vir elke persoon in die kamer, doen dit. Weer en weer. En die feit dat dit ingekeep, lyn drie, beteken net dat dit wat jy veronderstel is om te doen is die dinge wat ingekeep onder die lyn twee self. Net 'n menslike konvensie, maar 'n algemene een soos ons sal sien in die werklike hoër vlak programmeertale. 

Nou bietjie meer interessant is wanneer jy in 'n hoek geval. Byvoorbeeld, 'n hoek geval was toe daar was drie mense, of vyf, of sewe, of enige onewe aantal mense in die kamer, want om dit te doen deur die twee-twee remme uiteindelik omdat jou gaan om iemand te mis, óf by die begin of die einde afhangende van hoe jy dit doen. En so, nou, ek het hierdie tak, of voorwaarde, as een persoon bly, dan voort te gaan en te hanteer dat 'n mens eensaam persoon wat nie gekry het nie saam met iemand anders. So dit is wat ons sou noem 'n toestand, of 'n tak. 

Nou pseudokode kode meer in die algemeen kan wees geskryf enige aantal probleme op te los. En wat ek gedink ons ​​wil hier doen, is om 'n oomblik te nooi sal ons sê CS50 se besit Rob Bowden op die verhoog word verbind deur twee vrywilligers, wat geen idee wat wag het. 'N hand het so gou af as ek sê dat. Hoe gaan jy op die eindig hier, kom boontoe. En hoe oor uit verder weg, hoe manier in die rug. Agter, kom op met jou hande in die lug. Goed, en wat is jou naam? 

ANITA: Anita. 

David J. Malan Anita. Goed, nice om jou te ontmoet. Kom ek stel jou aan Rob Bowden. Dit is Anita. En wat is jou naam? 

KIERSTEN: Kiersten 

David J. Malan Kiersten. Kiersten, kom op en ontmoet Rob Bowden en Anita. Nice om jou te ontmoet. KIERSTEN: Nice om jou te ontmoet. David J. Malan Goed, Rob. ROB BOWDEN: Nice om jou te ontmoet. David J. Malan Anita. KIERSTEN: Hi Anita. David J. Malan En jou 'n paar honderd klasmaats. So, nou laat my gaan voort en trek tot net 'n eenvoudige program hier Mac OS wat my sal laat eintlik jota paar notas neer. En as jy ouens wil om elk 'n posisie by een van die skole daar, Laat my gaan voort en begin 'n lys van pseudokode kode, as jy wil. En wat ek hier wil doen, uiteindelik is soort vir jou sommige instruksies wat ons lede van die gehoor is eintlik gaan voordra vir ons. Laat my voor en net gaan verander dit na 'n genommerde lys aan te pas wat ons doen daar. En wat gaan ek doen met jou help, is 'n program skryf in pseudokode, waarmee hierdie ouens gaan 'n grondboontjiebotter te implementeer botter en jellie broodjie. So is dit dalk propos te iets wys sommige van julle kan gesien het op die internet vir net 'n kort irriterende oomblik. 

[MUSIEK BUCKEWHEAT seuns, "grondboontjiebotter  Jellie TYD "] David J. Malan OK. Dit is genoeg van daardie. So hier intussen, ek het 'n paar Google-bril wat Ons sit op CS50 se eie Rob Bowden die wêreld te sien deur sy oë. En ons sal ons bes doen om in 'n post produksie te eintlik weef die beeldmateriaal van wat Rob is om te sien nou, in hierdie werklike lesing video met ons twee vrywilligers langs hom. So wat ek gaan doen is, sal ek die tikster wees. Ons het die doel hier van eintlik skryf van 'n program waarmee te maak, uiteindelik, 'n grondboontjiebotter en jellie broodjie, maar hierdie drie gaan om op te tree asof hulle rekenaars. En rekenaars, aan die einde van die dag, is eintlik baie dom toestelle. Hulle is super vinnig, maar hulle kan net doen, letterlik, wat hulle vertel. Jy kan nie net sê 'n grondboontjiebotter botter en jellie broodjie. Jy het om hulle te program om dit te doen. Jy het om hulle te vertel met presisie wat om te doen, minder dinge gaan verskriklik en, hopelik, aantrekkelijke mis. 

So met wat gesê het, moet ons een oproep-uit die gehoor vir wat moet stap een wees, indien die doel hier is 'n grondboontjiebotter te maak botter en jellie broodjie. Ja? 

Publiek: [onhoorbaar] in die sak van die brood. David J. Malan Maak die sak van die brood. Dus, as die drie deelnemers sal wil voortgaan om dit te letterlik te doen. Maak die sak van die brood. 

[Flink aan die lag] David J. Malan So laat se werk op daardie. Alle regte. So stap twee, how-- Kom ons neem dit verder. Ja, in die voorkant. 

Publiek: [onhoorbaar] die brood. 

David J. Malan Wat is dit? 

Publiek: die brood Verwyder. David J. Malan Verwyder die brood. Net bondige. Dankie. 

[Applous] David J. Malan Dit is dit? OK, so stap twee gaan te wees om die brood te verwyder. Goed, iemand wil skryf ons 'n langer sin? Iemand anders? 'N bietjie meer [onhoorbaar]. Nee, niks nou. Ja? 

Publiek: Plaas twee snye langs mekaar. 

David J. Malan Plaas twee snye langs mekaar. 

[Flink aan die lag] 

David J. Malan Plaas twee snye langs mekaar. Stap vier. Ja? 

Publiek: Neem jou hand en sit dit liggies op die top van die grondboontjiebotter deksel. 

[Flink aan die lag] Publiek: [onhoorbaar] langs die grondboontjiebotter. David J. Malan Wat? Sê dit weer. 

Publiek: Draai die deksel op en sit dit liggies langs die grondboontjiebotter. 

David J. Malan Sit dit liggies langs die grondboontjiebotter. OK, vordering. Stap vyf. Uitstekend. Ja? 

Haal mes. David J. Malan Pick mes. OK, stap ses. Ja? 

Publiek: Hou mes deur die handvatsel. David J. MALAN: Hou mes deur die handvatsel. Hou mes deur die handvatsel. Stap sewe. Ja? 

Publiek: [onhoorbaar] mes in grondboontjiebotter botter en so min uit [onhoorbaar]. 

David J. Malan Sit mes in-- ek gehoor "het mes in grondboontjiebotter en neem so min as moontlik uit. " Terloops, verwyder die papier eerste. Alle reg, stap nege. Stap nege. Stap nege. Ons het nie eintlik 'n broodjie gemaak nie. Ja? Publiek: Gebruik mes in grondboontjiebotter, pas grondboontjiebotter op brood gesê. 

David J. Malan Gebruik mes in grondboontjiebotter, pas grondboontjiebotter op gesê brood. 

[Flink aan die lag] David J. Malan Alle regte stap 10. Stap 10. Ja? 

Publiek: Smaak grondboontjiebotter botter gehalte te verseker. 

[Flink aan die lag] David J. Malan Stap 11. Stap 11. Stap 11. Kom op. Ja? Reg daar. 

Publiek: Versigtig haal gelei. 

David J. Malan versigtig haal gelei. OK, en dan die ander kant was tot. Reg agter jou. Ja, in blou. 

GEHOOR: Alle reg, verwyder deksel van [onhoorbaar], ja, verwyder die deksel van die jellie. 

[Flink aan die lag] 

David J. Malan Van gelei. Ha ha. 

[Flink aan die lag] David J. Malan En? Publiek: En skaars vee enige [onhoorbaar]. [Flink aan die lag] Publiek: Natuurlik, voor [onhoorbaar], verwyder die papier uit gelei. David J. Malan Verwyder papier uit gelei. Stap 14. Ons is amper daar. Ja? 

GEHOOR: Keer jellie bottel voordat alles val uit. 

David J. Malan Keer gelei bottel voor jellie val uit. Stap 15. 

Publiek: Vervang die cap. 

David J. Malan vervang die cap. Stap 16. Ja? 

Publiek: [onhoorbaar] David J. Malan Sê dit weer. Publiek: Neem pet af van jou jellie. David J. Malan Off jou jellie. So really-- Oops. Kom op. Plaas die doppie. Sit cap-- Jy sê verwyder cap van jellie. Voel asof ons in 'n bietjie van 'n lus. Stap 17. Ja? 

Publiek: [onhoorbaar] David J. Malan Sê dit weer. Publiek: [onhoorbaar] David J. Malan Gaan terug na step-- Publiek: [onhoorbaar] David J. Malan Verwyder cap van grondboontjiebotter. Ja? 

Publiek: Drop al die jellie op die brood. 

David J. Malan Drop al die jellie op die brood. David J. Malan Ons is amper daar. Stap 19. 

Publiek: Verwyder oortollige gelei. 

David J. Malan Haha, gelei. 

[Applous] David J. Malan Hoekom we-- nie nog 'n stap om hierdie huis toe te neem. Nog 'n stap en dan ons sal toebroodjies dien. Ja? 

Publiek: [onhoorbaar] 

David J. Malan Terwyl enige toebroodjie remains-- laat se streepje this-- eet. 

[PUBLIEKSWERKING Gelag] 

David J. MALAN: Alle reg, dankie aan ons vrywilligers hier. 

[Applous} 

David J. Malan Ons het 'n paar mooi afskeid geskenke vir elkeen van julle. Jou eie grondboontjiebotter, jellie, en brood aan die huis terug te bring. Dankie. 

KIERSTEN: Dankie. David J. Malan [onhoorbaar] verwelkom. [Applous] David J. Malan So, dit is, van Natuurlik, 'n belaglike voorbeeld. Reg? Maar dit beteken soort openbaar hoe ons mens net neem duidelikheid as vanselfsprekend aanvaar. En die feit dat ek het al praat met 'n ander mens, hy of sy weet presies wat jy bedoel. 

Rekenaars gaan nie om te weet wat jy bedoel, selfs wanneer die gebruik, soos ons is oor om te doen vandag, programmering iets nuuts, 'n drag en drop, legkaart stuk styl taal. Selfs ontwerp vir jong kinders, jy het om so duidelik en so letterlike wees met wat jy wil hê om jou program te doen. Nou uiteindelik, ons is gaan wees programmering nie in pseudokode kode, Engels soos sintaksis, maar kode, of meer korrek, bron-kode. Bron-kode is net die fancy manier vir die beskrywing van kode wat jy eintlik Skryf met 'n sleutelbord wat nie in Engels per se. Dit is in C of Java of C ++ of iets soos wat, soos ons sal binnekort te sien. 

En in die waarheid, net 'n bang min van julle, met die eerste oogopslag, dit is 'n program wat geskryf is in 'n taal genoem C. Maar aan die VN-bang 'n paar van julle, sal jy heeltemal verstaan ​​wat aangaan op kom volgende Maandag toe dit kom by iets soos hierdie. Om eerlik te wees, dit is 'n ouer taal. Dit is redelik arcane, maar dit is verteenwoordigend van 'n baie tale die dae wat het baie van die hakies en krullerige draadjies en haal punte en kommapunte. En 'n baie van hierdie sintaktiese dinge wat nie ten alle intellektueel interessant. Inteendeel, dit is 'n uiterste afleiding van die baie eenvoudige idees wat staar ons in die gesig. Hierdie program, as jy dalk net raai, druk op iemand se rekenaar skerm die woorde "Hallo komma wêreld." Dit is dit. So duidelik, daar is 'n baie van die dinge wat om in die pad van sommige vanselfsprekendheid daar, maar dit gaan baie vinnig glip weg en heeltemal intuïtief. 

Inderdaad, wat ons gaan doen vandag is distilleer hierdie redelik komplekse soek program, wat weer sal jy kom om vinnig te verstaan ​​nie, maar om iets baie makliker. Laat ons net sê wat ons bedoel. Kom ons teken 'n prentjie van wat ons bedoel, deur middel van hierdie legkaart stukke hier. 

So dit is 'n ontwikkeling taal bekend as nuuts af. Dit is ontwikkel deur MIT se Media Lab. En wat jy sien in die probleem stel nul, wat vrygestel sal word later vanaand, ons sal jy na hierdie URL hier scratch.mit.edu. En hulle het 'n web koppelvlak via wat jy sal jou eerste program skryf. Of dié van julle met vooraf ervaring, jou tweede programme, maar in 'n omgewing wat waarskynlik 'n bietjie vreemd, en dat sal jy druk om iets te skep die gebruik van hierdie baie visuele omgewing. 

Nou, wat ek gaan om hier te doen is oop aan die program self. Dit bestaan ​​nie net as 'n webblaaier, maar ook as 'n aflaaibare program sodat jy kan eintlik gebruik dit As jy nie toegang tot die internet. En ek gaan om dit te doen hier, in Sanders, net in die geval van die Wi-Fi nie saam super goed. En wat ek gaan doen, is punt uit 'n paar kenmerke van hierdie program. So, duidelik te wees, ek het net dubbel kliek op die ikoon op my lessenaar, of anders gestel weg te scratch.mit.edu, en dit is opgetrek in hierdie venster. Dit is 'n ontwikkeling omgewing. Dit is 'n stuk sagteware wat sommige van ons vriende by MIT geskryf wat laat ons en jy skryf programme in 'n taal, die sogenaamde nuuts af. 

Nou gebeur dit 'n te wees kat wat is ook genoem Scratch en dit is sy wêreld waarin hy leef. Dit is die stadium, so te sê, het reghoek op die boonste linkerhoek. En hy het nie om te lyk soos 'n kat. Jy kan maak hom lyk soos enigiets en jy kan baie sulke sprites, of karakters, in 'n program. Intussen, hier op die ver reg, is 'n groot skoon lei. En dit is waar, in 'n oomblik, Ons gaan om te begin programmering deur te sleep Hierdie grafiese legkaart stukke wat reg is hier in die middel. En daar is manier om meer van hulle as ons sal spandeer tyd hier in die klas want jy sal vind dat hulle is almal redelik intuïtief. Weereens, is dit ontwerp vir kinders, maar ons gebruik dit uitmekaar te terg sommige van dié fundamentele idees van veranderlikes, loops, voorwaardes, en gou, dinge soos funksies en gebeure en drade en ander fancy dinge wat ons sal kry om voor lank om werklik te skep iets van nuuts af. Woordspeling bedoel. 

Nou, wat ek gaan om hier te doen, is om Klik op nie beweging nie, maar beheer. En dit is net 'n kategorisering van here-- en ek sien 'n ander kleur stel van blokke. Maar let op 'n paar bekende woorde. "As" en "anders as" en "herhaal." En jy kan seker raai dit is wat herinner aan die tak, of die voorwaardes wat ons gesien het, en selfs die herhaling konstruk. So ons het 'n soortgelyke blokke hier. Maar die mees interessante een is hierdie een hier. Wanneer dit groen vlag word gebruik, hierdie, vir diegene met vorige programing ervaring, is gelykstaande 'n hoof funksie. Maar vir diegene wat nie vertroud, dit is die legkaart stuk wat sal begin skop ons hele program. Dit beteken letterlik wanneer ek gaan in hierdie program, en op 'n groen flag-- wat jy kan sien hier in die boonste linker hoek van die UI, so sien die groen vlag langs die rooi stopteken? Wanneer ek dat my program gaan loop. Nou, ek gaan om iets te doen super eenvoudig met nuuts af. Ek gaan om voort te gaan en gaan na die lyk paneel hier waar ek 'n klomp pers legkaart stukke, en ek gaan om voort te gaan en te doen iets super eenvoudige soos, sê. En then-- kennisgewing hierdie teks in die wit blokkie is editable-- ek gaan om te sê "Hello world," wil ons net gedoen het in daardie teks weergawe 'n oomblik gelede. En as ek nou gaan en kliek op hierdie groen vlag, ek het nou geprogrammeer. Dit is nie 'n besonder interessante program, maar ek het die rekenaar om iets te doen. Ek begin met 'n program en dit gedoen het wat ek het om dit te doen. Nou kan ek voortgaan om te sleep en meer en meer van hierdie stukke van die legkaart en hulle gaan gekoppel, maar laat klap terminologie hier dat ons sal sien herhalende deur die loop, en regtig die hele rekenaarwetenskap en programmering meer algemeen. 

Hierdie "sê" blok, in die pers, laat net begin roep 'n verklaring. Dit is soos 'n verklaring van die feit. Doen dit. So, dit is 'n kategorie van instruksies wat jou dalk 'n rekenaar voer as deel van 'n program of 'n algoritme. En duidelik te wees, het jy waarskynlik as vanselfsprekend aanvaar dat jy programme op jou rekenaar. En dit is soort van algoritmes, maar 'n program is regtig 'n klomp van die algoritmes dat sommige mense geskryf het. Hulle verpak dit op en hulle verkoop dit, sodat jy, of hulle op 'n webwerf geplaas vir jou om af te laai. So, 'n program is net 'n n hele klomp van nulle en ene dat een of ander manier, die mens geskep. En die patrone van nulle en mense verteenwoordig dinge, uiteindelik, soos "sê hallo wêreld" of "speel hierdie musiek "of" speel hierdie video " of "stuur 'n e-pos." Maar ons sal terug te kom in manier om meer detail wat 'n program is wanneer jy, jouself, skryf hulle. 

Hier is nog 'statement-- "Wag vir 'n sekonde." Ek het nie hierdie gebruik nie, maar as ek wil my program om te breek vir 'n oomblik om iets te doen, kan ek jou vertel om dit te doen. Wag 'n sekonde. Nou 'n ander een kan wees "speel klank." So, dit is uniek te krap, is dit het die vermoë om klanke te speel. So, 'n verklaring wat ek mag gebruik is, hier, "speel klank." Intussen, Boole-uitdrukking, so dit is 'n liefhebber woord vernoem na net 'n man met die naam Mr Bool, en dit is al oor 'n vraag. Waar of false-- is die muis af? 'N Boole-uitdrukking is net sommige uitdrukking in Engels dit is waar of vals is. Hetsy op of af. Een of nul. Jy kan dink dit in 'n aantal van maniere, maar dit is waar of hierdie valse, uiteindelik. So "muis af vraagteken," wat 'n Boole-uitdrukking wees. En jy kan dink van ander, miskien. Byvoorbeeld, "is die links aantal minder as die regte getal? " Dit ook, sou wees 'n Boole-uitdrukking. "Minder as" is 'n Boole-uitdrukking. 

Hierdie een ook, "raak muis." Ek is nie seker hoekom hulle noem dit muis. Dit beteken net, is die wyser, is die pyl op die skerm, raak die kat, byvoorbeeld. Of 'n ander aspek van die skerm. En dit is 'n vraag, weer, en wat dui op 'n Boole-uitdrukking. Iets wat jy dalk wil gebruik in 'n toestand. So sal ons wat kom in net 'n oomblik. Jy kan "en" dinge saam. So, as jy wil kyk of dit die geval is en dat dit die geval is, jy kan 'n "en" blok soos hierdie gebruik. En hier is die toestand. Let op die vorm van die klein opening in die top van hierdie geel legkaart stuk, dit is wat herinner aan die vorm dat ons net 'n oomblik gelede gesien het. Elkeen van hierdie Boolse uitdrukkings het hierdie uitgewys rande op die links en regs. En dit is omdat MIT mense besluit wat deur visueel oordra vorms, jy kan soort van mense help, studente en kinders gelyk, soort in die spasies te vul letterlik. 

Nou dat puzzle-- wat opening is 'n bietjie klein, en as ons sien in die program, in Scratch, sal dit groei aan te pas. Dit sal die vorm in stand te hou, uiteindelik. So 'n toestand laat jou besluit "Ek moet iets doen of nie?" 'N Boole-uitdrukking is die werklike vraag jy gebruik om te besluit gaan ek na links of gaan ek aan die regterkant toe ek teëkom hierdie sogenaamde vurk in die pad? Jy kan twee takke. As iets waar is, doen hierdie, anders gaan die manier, of jy kan net niks doen nie by almal, as die blok geïmpliseer. Net so kan ons nes hierdie dinge. So as jy wil vurk te verdriedubbel in die pad, óf dit of hierdie of daardie, jy kan net nes hierdie dinge saam. En dit begin 'n bietjie te kry lelik, uiteindelik, vir seker, maar die logika is nog steeds dieselfde. Jy kan letterlik gelees hierdie bo na onder en dit sê wat dit means-- indien dit is waar, doen dit, anders as die ander. 

'N lus kry nie eenvoudiger in nuuts af. Forever doen die volgende. Nou kan jy nie dink jy veel kan doen nie, want daar is nie veel spasie tussen die bokant en die onderkant van die legkaart stuk opening. Maar jy sal sien Scratch gaan groei soveel stukke van die legkaart in te pas as jy wil gedrang daar. Nog 'n lus kan wees uitgespreek met herhalings. As jy vooraf weet, "Ek iets wil doen 10 keer, " jy kan net vertel Scratch om iets te doen 10 keer. En intussen, kan ons veranderlikes. So hier is 'n arbitrêre een, dit is oranje in hierdie geval, en dit is 'n warrelwind-toer. Weereens, sal jy dit baie toeganklik vind sodra jy begin wys en te klik. Ek het die naam van my veranderlike n, maar ek kan dit genoem het iets wat ek wil hê, en ek is die opstel van dit hier, in hierdie arbitrêre byvoorbeeld aan nul. 

Nou sien 'n program soos hallo wêreld is nie al wat dwingende, so laat ons eintlik oop om iets dat 'n voormalige student gemaak. Laat my voort te gaan en maak, byvoorbeeld, hierdie een hier, waarvoor ek lief 'n vrywilliger te hê. Alle reg, hoe about-- laat ons gaan verder. Ja, kom op maksimum. Wat is jou naam? 

Abby: Abby. David J. Malan Abby, kom op. So het jy al ooit gespeel hierdie wedstryd voor? Abby: Nee David J. Malan Alle regte. David, lekker om jou te ontmoet. Kom oor. En wat is jou programme agtergrond, indien enige. 

Abby: Ek het 'n paar C ++ geleer. David J. Malan Jy het 'n paar C ++ geleer. En wat is 'n spel speel agtergrond? 

Abby: Nie 'n baie. David J. Malan OK, so ons sal dit. So hier is hoe die spel is om te gaan werk. Ek gaan om voort te gaan en Klik op die groen vlag, wat is hier bo aan die regterkant. Nou is jou voorganger in die klas het jy hier gegee sommige instruksies. En in 'n oomblik, dit sê "ruimte om te begin." So gaan voort en druk die spasiebalk. 

Rekenaar spel: Pikachu. David J. Malan, en die doel is om te vang die voedsel, as daar uitgebeeld aan die linkerkant. En aan [onhoorbaar] 

[Game Speel van musiek] 

David J. Malan Aww, goed, dankie vir speel. Ons het hier 'n bietjie afskeidsgeskenk vir jou. Ons het CS50 stres bal, As jy wil om te kies. Alle reg, goed om jou te ontmoet. Dankie vir die komende en uitdagend. So ons het meer stres balle, so Kom ons doen nog 'n voorbeeld te motiveer. 'N vrywilliger? Alle reg, hoe oor hier voor. Wat is jou naam? 

Phillip: Phillip. 

David J. Malan Phillip. Kom op, Phillip. So, is Phillip gaan wees uitgedaag met 'n ander spel dat een van jou voorgangers geskryf as deel van die probleem gestel nul, genoem Ivy se hardste Game. En ons sal sien in net 'n oomblik wat bedoel word. Phillip, lekker om jou te ontmoet. Wat is jou agtergrond? Phillip: 'n baie gedoen van kodering. Gedoen om 'n bietjie spel, ook. 

David J. Malan OK. Het 'n baie van die spel, ook. En het jy hierdie speletjie speel voor? 

Phillip: Geen David J. Malan Alle reg, so hier gaan ons. Ek gaan om voort te gaan en klik op die groen vlag. 

[Game MUSIEK] 

[MUSIEK MC Hammer, "U kan dit nie touch"] 

Phillip: [onhoorbaar] David J. Malan [onhoorbaar] Phillip: [onhoorbaar] [ROOIBORSDUIFIE] [MUSIEK MC Hammer, "U kan dit nie touch"] David J. Malan [onhoorbaar] Ploeg deur dit. Phillip: [onhoorbaar] David J. Malan voort te gaan. [MUSIEK MC Hammer, "U kan dit nie touch"] David J. Malan Alle regte. Baie geluk. 

[Applous] 

David J. Malan Ons sal pos wat online later so wat jy kan uitstel met dit so goed. Princeton kom volgende, na daardie. 

So laat ons nou eintlik gaan om te begin van nuuts af, om so te praat, en eintlik bou tot ons kan terg uitmekaar sommige van hierdie idees en jy na iets wat selfs meer komplekse teen die einde. Ek gaan hier gaan en ek gaan om voort te gaan en 'n nuwe lêer. So weer, sal die probleem stel loop deur 'n paar van hierdie stappe. Maar, al wat ek gedoen het, was go na die File menu en ek het gesê: "'n nuwe," so baie soos Microsoft Word, of enige program soos dit. 

En laat ons gaan voort now-- en ons geïmplementeer "Hello World" 'n oomblik gelede maar laat ons iets doen om 'n bietjie cuter. Ek gaan om te gaan na die gebeure. En ek gaan om te doen "wanneer groen vlag gebruik. " En dan gaan ek om te gebruik, sal ons sê, 'n tak. So ek gaan 'n "as" toestand te gebruik. En sien hoe so gou as ek naby dit, dit wil saam snap. So ek laat gaan en dit saam breek. En nou kan ek iets interessant doen. As ek blaai deur middel van hier, ek gaan 'n hele klomp van die blokke te sien. As ek gaan na "data" - laat my zoom in-- Daar is iets omtrent veranderlikes. As ek gaan na "beweging," jy kan blykbaar om dinge rondom. As ek gaan na "operateurs" - O ja, dit is interessant, Ek kan 'n ewekansige getal te kies. So laat my iets te doen met net sommige waarskynlikheid, net omdat. Ek gaan om voort te gaan en sleep die legkaart stuk, hiervoor is dat minder as blok, so dit is net "Is hierdie getal minder as wat 'n mens?" Maar ek 'n aantal wil nie 'n harde-kode want dit is redelik nutteloos. So ek gaan hierdie stuk te sleep hier, en kyk hoe dit breek in, En nou, laat my gaan voort en sê: "As die getal wat is willekeurig is minder as ses, moenie die volgende. " Nou hoekom minder as ses? Wat waarskynlikheid is dit effektief gaan gee my net intuïtief? Sowat 50% is, reg? As die getal wat se raai lukraak tussen 1 en 10 is minder as ses, duidelik is dit een, twee, drie, vier, of vyf. En so wat gaan om te gee my 'n 50% waarskynlikheid van wat gebeur? 

Wel, laat ons doen iets soos hierdie, "speel klank miaau." En kennis, weer, die legkaart stuk groei aan te pas, so lank as wat die vorms te pas. Dit is wat belangrik is. Laat my gaan oor te krap hier en kliek op "te speel." Niks gebeur nie. Is dit 'n fout? Nee, nie nodig nie. Dit kan net wees dat 'n groter aantal gekies is. So kom ons doen dit weer. Niks nie. 

[Miauw] David J. Malan Daar is dit. [Miauw] David J. Malan Weer. Nee 

[Miaau] David J. Malan So as jy ooit 'n wedstryd gespeel het, het natuurlik waar dinge is lukraak gebeur, soos die slegte ouens kom of nie kom op die skerm, of Dinge val of nie val nie, dit is net omdat iets super eenvoudige soos dit gebeur. Pick 'n ewekansige getal, en as dit is minder as 'n bietjie waarde, Miskien doen of miskien doen. Ons kan inkorporeer wat in 'n toestand. Kom ons doen iets anders. 

Laat my gooi dit weg. Jy kan ontslae te raak van die dinge deur net af te sleep dit na links en laat gaan. Laat my gaan voort en doen 'n ewig blok en baie vinnig iets irriterende doen. Laat my voort te gaan en sê "speel klank miaau." Maar ek wil dit nie te te wees irriterende, so laat my gryp hierdie blok, "Wag 'n sekonde," en 'n kennisgewing daar is nie meer plek vir dit. Maar as jy naby genoeg gaan, dit wil om daar te gaan. So ek laat gaan en dit sal groei die blok te vul. So nou is dit 'n lus. [Miaau] David J. MALAN: Ek is letterlik om dit te doen vir ewig. Weer en weer. Dit is net nie 'n natuurlike klinkende. Laat my gaan voort en verander dit om nie 'n sekonde tot twee sekondes en druk Enter. En wat is lekker oor Scratch is wat jy kan interaktief program. Maak 'n verandering, miskien druk Enter of Play weer, en dit sal net voort te gaan. Wel, nou hoekom nie ons doen iets wat 'n bietjie ouliker? Eerder as om alles van nuuts af, Laat my voort te gaan en maak 'n voorskot het een, wat ek vooraf-gebak, genoem "Pet die kat." En ons sal post al hierdie lêers aanlyn, en probleem gestel nul sal jou vertel hoe om dit te verkry en oop te stel. En kennis, dit is redelik eenvoudig. Maar in advance, ek lyk te gryp 'n "ewig" blok, so ek het 'n lus. En dan het ek het 'n "as" toestand. Ek het 'n Boole-uitdrukking. 

So in Engels, net skrams by hierdie, veral as jy nog nooit geprogrammeer voor, net intuïtief, wat gaan dit te doen, is hierdie program? 

[PUBLIEKSWERKING BABBELBUS] 

David J. Malan As jou troeteldier die kat, die kat gaan miaau, reg? Omdat "vir ewig unchecking" is die muis te raak van die kat. So duidelik te wees, en ek het nie gesê dit voor, al hierdie legkaart stukke en die skrif wat Ons het gekombineer hulle in, om so te praat, 'n script is sinoniem met program, regtig, behoort aan die kat. En die rede is-- omdat kennisgewing hoe hierdie selfde kat hier uitgelig, hier kan jy 'n tweede kat of hond of werklik enigiets wat jy wil grafies. Jy kan iets invoer van Photoshop, of die wil, en integreer iets as jy dit wil maak vir 'n projek. En wat jy sal vind, uiteindelik, is dat jy skrifte kan voeg, voeg legkaart stukke, op individuele karakters. So al hierdie dinge behoort aan hierdie spesifieke kat. So as ek nou gaan voort en speel hierdie program, niks gebeur. Maar dit is hardloop. Die program is in dit vir ewig lus, soort van wag vir wat gebeur? 

[PUBLIEKSWERKING BABBELBUS] 

David J. Malan die kat te troeteldier. So as ek beweeg my muis na him-- 

[Miaau] 

David J. Malan So nou Ek troetel die kat. Intussen, kan ons 'n dubbele-tak. Laat my gaan voort en maak up troeteldier nie die kat. Ons sal hierdie aanlyn post sowel. Dit is 'n bietjie meer kompleks, maar sonder om te sê jy kan dalk dink wat gaan gebeur nie. 

[Miaau] 

David J. Malan Kat is miaau, groot ou tyd. Maar hierdie program is natuurlik genaamd "Moenie die kat Troeteldier nie," so duidelik, ek wil die kat te troeteldier. 

[ROARING] 

David J. Malan Moenie troeteldier die kat. Nou, laat ons neem 'n blik by nog 'n voorbeeld hier. Hierdie een sal genoem word "Hi, Hi, Hi," vir redes wat duidelik sal wees nie, want so gou as ek loop hierdie thing-- 

[SEAL blaf] David J. Malan Baie maklik om te skryf irriterende Scratch programme. [SEAL blaf] David J. Malan Nou is ons gaan nie in 'n groot detail met al hierdie, , maar kennis is daar 'n paar nuwe funksies hier. Daar is 'n veranderlike, genaamd "gedempte" en dan is daar 'n klomp van die voorwaardes. En nou, laat my net terg jy deur te sê dat as hierdie man raak te irriterende, Ek kan die spasiebalk getref en hy stop. Omdat die rol wat gespeel word deur hierdie twee skrifte is soos volg. Een van hulle is besig om die blaf elke paar sekondes. Die ander een is wat net wag vir my die spasiebalk te tref. En as ek doen druk die spasiebalk, dit gaan om te verander die toestand van die veranderlike, die waarde van hierdie veranderlike, wat blykbaar genoem "gedempte," Ek het nie geroep dit iets vervelig soos n, Ek noem dit 'n Engelse woord, "gedempte." Van 1-0 of 0-1. Van waar vals of vals waar. En so kan jy eintlik sien nou, dat jy twee skrifte kan hê, twee programme gelyktydig hardloop, en beide van hulle kan sit in 'n lus om iets te doen. Wag vir die menslike te doen iets soos die slaan spasiebalk. [SEAL blaf] David J. Malan En nou Hy is op pad terug. [SEAL blaf] David J. Malan So wat anders kan ons doen met hierdie voorbeelde? Wel, laat ons gaan voort en doen 'n byvoorbeeld met skape tel. Ons sal voortgaan om hierdie langs die lyne hier of-- laat oopmaak om die skape voorbeeld. En kennis, baie soos voorheen, hierdie een, Gelukkig, is 'n bietjie minder irriterende. Sodra ek getref speel here-- O nee, dit is irriterende. Hy gaan baa met 'n paar waarskynlikheid. Kom ons speel dit weer. 

[Skape BLEETING] David J. Malan Die enigste verskil is ons het die kostuum verander, om so te praat, en ons halveer en sê wat dit werklike getal is. Wel, laat ons gaan voort en neem hierdie 'n stap verder. En laat my terg jy met een ander funksie hier. Kom ons gaan voort en maak 'n program genaamd drade. Soveel soos jy kan 'n mens 'n sprite, met verskeie skrifte, julle twee sprites, 'n voël in kan 'n kat, elk met hul eie script. En elkeen van hulle kan werk gelyktydig. As jy al ooit gehoor van die woord "multithreading" 'n rekenaar is "multi" beteken dit verskeie dinge kan doen in 'n keer, en, inderdaad, so kan nuuts af. 

En nou sien die voël is 'n soort van stom. Dit is net om dinge te doen lukraak, weerkaats die skerm. Dit is duidelik dat die kat is geprogrammeer soort het op soek vermoëns om die huis op die voël, want Hy is altyd wys op hom. Totdat uiteindelik, het hy vang die werklike voël. So ek sal nie op die besonderhede woon hier, maar jy kan soort blik dieselfde vorms, sommige "As" toestande, 'n paar veranderlikes, miskien 'n paar loops, is uiteindelik dieselfde ding doen. 

Nou laat my voort te gaan en oop iets heeltemal anders, sommige van julle te pla, veral diegene wat meer gemaklik, wat jy eintlik kan doen met hierdie. Ek gaan om voort te gaan en maak Button hier. En dit is 'n super eenvoudige oënskynlike program, maar kyk wat gebeur wanneer I-- Kyk wat gebeur wanneer ek hierdie weergawe van dit oop te maak, hier in die leser, scratch.mit.edu. En wanneer ek op hierdie groot rooi knoppie, let op wat gebeur. So, wat gaan hier aan? Daar is eintlik 'n baie meer kompleksiteit gaan op onder die enjinkap, selfs al het ek geïmplementeer hierdie, of eerlik, Dan Bradley het hierdie geïmplementeer so eenvoudig. Hy het ontwerp om 'n persoonlike Scratch legkaart stuk, bekend as 'n skrapie uitbreiding, hy het dit Toggle. 

En wat Toggle doen, is dit stuur 'n boodskap oor die internet. En dat die boodskap self lyk 'n bietjie kripties. Maar hierdie, ook, sal jy verstaan ​​deur kwartaal se einde. Die boodskap wat hy is eintlik die stuur lyk 'n bietjie iets soos hierdie. Dis net die teks. Kriptiese. Jy sal dit verstaan ​​teen die tyd kry ons die probleem die sewe. Dit is net die stuur van 'n teks boodskap oor die internet aan 'n bediener. En dat bediener is uiteindelik praat met die gloeilamp, wat het een van daardie fancy gloeilampe in dit wat, self, is 'n gesprek aan die Wi-Fi in die netwerk hier waar 'n plaaslike toestel af here-- en, uiteindelik, dit is eintlik draai die lig op en af. Maar ons kan meer doen interessante dinge nog. Let op wat Dan ook vir ons gedoen het. Hy het verskeie sprites, elk van wat 'n script wag vir 'n klik. En as ek op die rooi is, gaan dit rooi. As ek blou is, gaan dit blou. Groen, geel, oranje. En dit alles gebeur deur gaan weg uit op die internet, terug te sit hier op die gloeilamp, op en af. 

En as jy it-- kan glo en dit is miskien een van die mees komplekse Scratch projekte iemand implemented-- Hy het dit gedoen, in regverdigheid, in 'n dag. En dit was die uitdaging wat ons gooi tot Dan toe ons het binêre bolle, ons het Scratch, hoe kan ons kombineer hulle? En, inderdaad, dit is absoluut iets iemand in hierdie kamer kon doen deur semester se end-- Is hy reimplemented binêre gloeilampe gebruik dieselfde koppelvlak wat was op ons iPad op Woensdag. Sodat nou, as ek eintlik Klik op die plus hier, ons het een, twee, drie. Ek kan druk op die 16 en draai dat een op. 128, en so meer. 

Nou as dit alleen en geblaas jou gedagtes, jy dinge veel meer toeganklik kon doen nie, nie met enige hardeware beslis. Net die dinge wat op die skerm self. En, inderdaad, wat die meeste studente uiteindelik doen, is 'n soort van wild, 'n stuk van kunstige werk, of 'n soort van interaktiewe animasie. En Ek sal sê een van ons gunstelinge is hierdie een. En ek het gedink as ons die ligte kan verswak Ons sal 'n blik te neem aan hierdie finale Scratch projek in die slot. Maar wat jy moet gaan in gedagte hou, soos Ek kan jou terg met 'n laaste detail, seksie sal volgende week begin. Kantoorure sal volgende week begin. Probleem gestel nul gepos word CS50.harvard.edu later vandag. En jy sal begroet word in probleem gestel nul te CS50 se eie Zamyla Chan, wat lei die meeste van ons ipv. Dit is ingesluit video's in die probleem stelle wat jou hand hou deur 'n baie van die eerste stel en deur baie van die moontlike ontwerp besluite te neem. So as jy ooit gehad het dat emosie wanneer pluk van 'n huiswerk opdrag en wonder, waar begin ek? Sy sal die antwoord vir jou. En nou, 'n finale program van een van jou voorgangers in antwoord op die vraag "Wat sê die jakkals sê?" [MUSIEK YLVIS, "Wat sê die FOX sê?] 

YLVIS: (sang) Hond gaan inslag. Kat gaan miaau. Voël gaan tweet en muis gaan piep. Koei gaan moo. Kikker gaan gekwaak. En die olifant gaan blaas. Eende sê kwak en vis gaan Blub. En die seël gaan oe oe oe, maar daar is een klank wat weet niemand nie, wat beteken die jakkals sê? En 

David J. Malan Dit is dit vir CS50. Ons sal jy sien by Legkaart Day en op Maandag. 

[Applous] 

[MUSIEK YLVIS, "Wat sê die FOX sê?"] 

NARRATOR: En nou diep gedagtes, deur Daven Farnham. Vandag het ek in die treffer aangesig met 'n telefoon boek. Verwarrend, as ek by die huis kyk aanlyn.