[Muziek] -Alright! -Dit is CS50. -Dit is CS50. -Dit is CS50. [MUZIEK - IGGY azalea, "fancy"] M'n favoriete geheugen van CS50 was toen ik naar Puzzle Day. Waarschijnlijk gewoon de tijd gewerkt aan probleem sets met mijn vrienden en de mensen die Wold uiteindelijk mijn blockmates geworden. M'n beste herinnering uit CS50 is de Hackathon. -De CS50 Hackathon. -Hackathon. -Hackathon. -Hackathon. -het Hackathon -ROB Bowden. Gewoon alles over hem. [MUZIEK - IGGY azalea, "fancy"] M'n favoriete herinnering is toen ik op podium en ik speelde de prestigieuze rol van een node [? in het Linked?] [? Lijst. ?] -Wanneer Kregen we allemaal gratis Dropbox-ruimte en David was als, kijk onder uw stoelen. En het was als, ruimte voor iedereen! [MUZIEK - IGGY azalea, "fancy"] M'n advies voor elke binnenkomende student zou om echt werken P-sets met vrienden. -Office Uur is heel erg je vriend. Klik voor de meeste van uw ervaring en ontmoet zoveel mensen als je kunt. Doe niet bang om hulp te vragen. -Start De P-sets in het begin van de week. Ik denk dat het grootste ding is om te gebruik maken van alle middelen dat CS50 heeft. Loop naar de kantooruren in het begin van de week. -Zeker Kijken naar de korte broek. Doe niet uitstellen van uw P-sets. -Zorg Ervoor dat je een grote groep vinden van mensen om te werken aan P-sets met. U kunt veel plezier hebben en krijgen het werk gedaan samen. Doe niet bang om jezelf te duwen. Ga voor de hacker editie soms. -Schrijf Dingen op papier voordat u ooit uw computer aanraakt. -CS50 Is echt geweldig op het verstrekken van manieren om hulp te krijgen. M'n enige advies is slapen. Heeft iemand dat gezegd? Slaap, zeker. Het is eenvoudig niet te doen, maar je hebt om het te doen, denk ik. Ik zou zeggen echt mentaal voorbereid want je gaat om het te houden. [MUZIEK - IGGY azalea, "fancy"] -Dit is CS50. -Dit is CS50. -Dit is CS50. [MUZIEK - IGGY azalea, "fancy"] -Dit is CS50. [Applaus] DAVID J. MALAN: Dus dit is CS50 en dit is het einde van week 0. En dat was nog maar een paar personeelsleden CS50's die wachten u niet alleen in de rubrieken en kantooruren, maar, Ook komend weekend bij CS50 Puzzle Day. Die, nogmaals, is niet alles over programmeren. Inderdaad, het is verwacht dat u zal niets te programmeren, maar eerder problemen op te lossen met behulp van verstand en vrienden naast je. We krijgen het gezelschap van een aantal van onze vrienden bij Facebook-- als je hier-- registreren die voor de afgelopen jaren, heb eigenlijk het schrijven van deze uitdagingen met ons. En dus, zullen zij degenen uiteindelijk draait Puzzle Day. En dus, wordt u uitgedaagd met precies het soort dingen en problemen die mensen in Facebook willen denken. Dus dat is morgen. Registreren op cs50.harvard.edu/register. Nu een woord op een paar van personeel in het bijzonder. Dit hier is Ansel Duff, die is eigenlijk een van de co-auteurs van deze binaire bollen die we zagen op woensdag, Naast CS50 eigen Dan Bradley. Ansel Duff was ook een voormalige eerstejaars advisee van mij 3 jaar geleden en hij eigenlijk zelfs bouwde deze lessenaar. Hij is weg op te doen ingenieurswetenschappen en meer. Nu, zijn foto hier is eigenlijk Ansel 3 jaar geleden op de CS50 Hackathon toen hij leende een van onze ballonnen, stak het in zijn laptop, en, voor de komende 12 een aantal vreemde uur, gericht op zijn laatste project, het nemen van pauzes alleen te openen zakken snoep bij de Hackathon. Maar hij ging door meer recent aan afgelopen zomer bij ons doorbrengen, sinds CS50 voor haar personeel, en nu de studenten dit semester, een eigen 3D printer. En in een notendop een 3D-printers is een apparaat dat lijkt dit heel graag. Je vult het met een plastic spoel dat wordt versmolten door de inrichting en je dingen bouwen letterlijk uit het niets. Net als een inkjet printer, je begint uitspugen kleine puntjes van plastic die tezamen met vormen geheel voorwerpen. Zo Ansel bijvoorbeeld eerder, deze zomer, heeft een iPhone 5 en besloot hij echt wilde om het overeind te houden op zijn bureau. Maar hij wilde niet naar buiten en kopen iets uit de Apple store of iets dergelijks, zodat hij ging zitten en begon te tekenen iets. Hij nam een ​​paar metingen hoe dik en hoe breed zijn iPhone was, Hij trok dit beeld hier, Hij besloot dat hij wilde een 75 graden tilt hebben zoals het was staren hem op zijn bureau daar. Hij draaide toen deze, met behulp van software, in een 3D CAD-model dat zag er een beetje iets als dit. En toen ging hij, uiteindelijk, om daadwerkelijk te creëren het. Dus in feite, als iemand van jullie hier, misschien op rij dat ik kan gooien om te hebben an-- daar hebben we mensen met een iPhone 5, en hier hebben we nog twee. Nu, niet achter te blijven, CS50's eigen Cheng Gong ook deze zomer uiteengezet om heel wat dingen en bouwen, in feite, om redenen die nog onduidelijk, zijn langzaam het afdrukken van een leger van olifanten met scharnierende armen en stammen. Een paar van die zijn eigenlijk hier als iedereen zou nu like-- een olifant. Oke,. maar wat Cheng deed ook voor ons is hij heel vriendelijk opzetten van een camera want dat olifant, geloof het of niet, duurt ongeveer twee en een half uur afdrukken. Zelfs de iPhone standaard namen een uur en een half om af te drukken. En wat Cheng ging door en deed is het opzetten van een leuke camera voor van deze 3D-printer, gefilmd voor een uur en een half als Ansel ontwerp gedrukt. We bedekt sommige sexy muziek het volledig je dit geven kijken hoe 3D printen werkt. En ook al is dit eigenlijk in plastic, beseffen dat als dit terrein voor u interessant academisch, er zijn mensen, onder ze Jennifer Lewis hier aan de School of Engineering, die daadwerkelijk werken aan 3D-printing plastic voorwerpen. Maar ook, in toenemende mate, biologische materialen oplossen fysiologische problemen voor mensen. Maar hier is een beetje iets van CS50. [LOUD MECHANISCHE NOISES] DAVID J. MALAN: Het klinkt niet iets dergelijks in de werkelijkheid, maar het is veel koeler om het te bekijken bij die snelheid, en dat geluid. Nu, op woensdag, hoe hebben we voor het eerst hier gekomen? We begonnen te praten over de computer wetenschap en we vroegen wat het was. En het gaat over een aantal dingen, en er is zo veel verschillende richtingen waar kunt u terecht na een cursus als CS50. In feite, als je pakte een van die niet-officiële gidsen naar CS buiten, het boekje dat we hebben geleverd, of u nu denkt aan het nemen van slechts CS50, of misschien het doen van een secundaire, of misschien zelfs te concentreren in CS, weet bladeren door dat. En je zult een diagram zien aan het einde dat Wil je veel verschillende richtingen in CS dat je kan afgaan in. Maar voor vandaag, zullen we ons richten, opnieuw, op echt een van de fundamentele standpunten, misschien, waar je inputs problemen, je hebt uitgangen van problemen, en je hebt algoritmen waarmee creëren de uitgangen van die ingangen. En een voorbeeld, was Natuurlijk, dit telefoonboek hier. En wij als voorbeeld gebruikt om te gaan door middel van een algoritme dat juist was. En dan was er nog een correct, maar iets sneller. En dan nog een die een beetje was dramatischer, maar fundamenteel sneller. Rechts, dit telefoonboek we beweerd had ongeveer 1.000 pagina's. En hoe vaak heb ik om het telefoonboek doormidden te scheuren om iemand te vinden als Mike Smith, maximaal, op de 1000 pagina's tellende boek? Dus, 10 geven of te nemen. En zo af en scheurde ik dit ding in de helft, of gewoon, meer weloverwogen, in tweeën gedeeld, het is alleen maar 10 pagina's op de 1.000. En als je, een beetje extrapoleren onrealistisch voor een telefoonboek, maar als dit telefoonboek had zo'n 4 miljard pagina's in, dus compleet logge fysiek, hoeveel keer moet je delen van een 4 miljard pagina telefoonboek doormidden? Dus het is eigenlijk 32, te geven of te nemen. En alleen zo 32 keer, uit van 4 miljard pagina's, kan je iemand als Mike Smith te vinden. En dat is de efficiëntie. Dat is een goed algoritme, durf te zeggen. Maar dan zijn we verhuisd uit dat om te proberen om het te formaliseren. En ik voorgesteld dit pseudo-code. Pseudo-code is niets formeel. Het is niet iets wat je onthouden. Het is gewoon iets wat je uit te drukken vrij intuïtief gebruik van het Engels, of welke taal dan ook echt, dat brengt uw ideeën kort en bondig. Maar wat is belangrijk over pseudo-code is dat je proberen om alle van het anticiperen op mogelijke gevallen die zouden kunnen gebeuren. En inderdaad, in deze pseudocode code, waren er eigenlijk drie gevallen elke keer als ik verdeelde het telefoonboek. Mike misschien naar links. Mike zou kunnen zijn om de juiste. Of hij kan zijn recht op de pagina Ik ben op. Of een vierde hoek geval, bij wijze van spreken. Een slechte scenario zou kunnen zijn een which-- wat er gebeurt? Mike is gewoon niet in het telefoonboek op alle. En wanneer programma crash-- wanneer Mac en PC-software die jullie lopen op uw computers soms hangt of wordt onverwacht afgesloten, dat betekent algemeen dat sommige programmeur, sommige menselijke als jij binnenkort, gewoon verpest en maakte een fout. Misschien niet verwachten dat er misschien is geen Mike Smith in het telefoonboek. En als je niet echt schrijven code om dergelijke situaties te behandelen, over het algemeen onvoorspelbaar dingen kunnen gebeuren. Uw machine kan bevriezen. Het kan herstarten. Het programma kan stoppen. En dus al deze stommiteiten die je kan hebben ondervonden in uw werkelijke leven alleen met behulp van computers, zal steeds meer gewoon weggeredeneerd door deze intuïtie en dit begrip van wat is werkelijk gaande is onder de motorkap. Laten we nu eens proberen om een ​​kijkje te nemen meer algemeen probleem. In plaats nemen aanwezigheid in een plaats als Dit, hetgeen nogal traag een, twee, drie, vier doen. Of misschien twee, vier, zes, acht. Laten we focussen, in plaats daarvan, op hoe we kunnen formaliseren het algoritme van het proces die we aanwezigheid duren. En langs de weg, laten we beginnen om enkele nomenclatuur van toepassing dat we vandaag zullen gebruiken wanneer we eigenlijk beginnen met programmeren in een taal. Dus ik geef je nu een vier minuten durende video voor dat we samen met onze vrienden van TED, de organisatie. Waarbij wij leveren een script en zij brachten hun animators te dragen, en eigenlijk gemaakt van een 2D animatie wat een algoritme. Als we het licht kunnen dimmen. [Muziek] Verteller: Wat is een algoritme? In de informatica, Een algoritme is een set instructies oplossen een probleem stap voor stap. Typisch, algoritmen uitgevoerd door computers, maar wij mensen hebben algoritmes ook. Bijvoorbeeld, hoe zou je gaat over het tellen van het aantal mensen in een kamer? Nou, als je net als ik, zou je waarschijnlijk wijzen op elke persoon een voor een en tellen van nul. Een, twee, drie, vier, enzovoort. Nou, dat is een algoritme. In feite, laten we proberen om er een uit te drukken beetje meer formeel in pseudo-code. Engels-achtige syntax die lijkt op een programmeertaal. Laat n gelijk 0. Voor elke persoon in de kamer, ingesteld n gelijk aan n plus 1. Hoe de pseudocode interpreteren? Nou lijn een verklaart, zogezegd, een variabele riep n en geïnitialiseerd de waarde op 0 Dit net betekent dat bij de begin ons algoritme, het ding waarmee we tellen heeft een waarde van 0. Immers, voordat we beginnen te tellen we hebben nog niets geteld. Het aanroepen van deze variabele n is gewoon een conventie. Ik kon het hebben genoemd bijna alles. Nu lijn twee markeert het begin van een lus, een opeenvolging van stappen, dat zal herhalen wat aantal keren. Dus in ons voorbeeld, de stap die we zijn nemen rekent mensen in de kamer. Onder lijn twee is lijn drie die beschrijft precies hoe we gaan over het tellen. De inkeping impliceert dat het is regel drie die zal herhalen. Dus met de pseudo-code is gezegde is dat na het starten bij 0 voor elke persoon in de kamer die we zullen toenemen n door 1 Nu is dit algoritme juist? Nou laten we bang op het een beetje. Werkt het als er twee mensen in de kamer? Laten we eens kijken. In lijn een initialiseren we n naar 0. Voor elk van deze twee mensen, dan verhogen we n door 1. Dus in de eerste reis door de lus, we updaten n 0-1. Op de tweede reis door dat dezelfde lus, we updaten n 1-2. Dus, deze algoritme end, n 2, welke inderdaad overeenkomt met nummer van de mensen in de kamer. So far, so good. Wat dacht je van een hoek geval wel? Veronderstel dat er 0 mensen in de kamer-- naast me, wie is doen tellen. In lijn een, wij opnieuw initialiseren n naar 0. Ditmaal echter, de stippellijn drie helemaal niet uitgevoerd want er is niet een persoon in de kamer. Zo blijft n 0, die inderdaad overeenkomt het aantal mensen in de kamer. Vrij simpel, toch? Maar tellen mensen een voor een is vrij inefficiënt, ook, nee? Uiteraard kunnen we beter doen. Waarom niet rekenen twee mensen tegelijk, in plaats van het tellen van een, twee, drie, vier, vijf, zes, zeven, acht, enzovoort. Waarom niet rekenen twee, vier, zes, acht, enzovoorts? Het klinkt nog sneller. En het is zeker. Laten we uiten deze optimalisatie in pseudocode code. Laat n gelijk 0. Voor elk paar mensen kamer, zet n gelijk aan n plus 2. Vrij simpele verandering, toch? In plaats tellen mensen een voor een, we plaats tellen twee tegelijk. Dit algoritme is dus twee keer zo snel als de vorige. Maar is het juist? Laten we eens kijken. Werkt het als er twee mensen in de kamer? In lijn een, initialiseren we n naar 0. Voor dat een paar van de mensen, dan verhogen we n door 2. En deze algoritme end n is 2, welke inderdaad overeenkomt met nummer van de mensen in de kamer. Stel vervolgens dat er nul mensen in de kamer. In lijn een initialiseren we n naar 0. Zoals eerder, regel drie niet voeren het allemaal aangezien er geen paren mensen in de kamer, en zo n blijft 0. Die inderdaad overeenkomt met de aantal mensen in de kamer. Maar wat als er drie mensen in de kamer? Hoe werkt dit algoritme tarief? Laten we eens kijken, in de lijn een, we initialiseren n naar 0. Voor een paar van die mensen, dan verhogen we n door 2. Maar wat dan? Er is geen ander vol paar mensen in de zaal, dus lijn twee niet meer van toepassing. En zo tegen het einde van dit algoritme, n is momenteel nog 2 die niet correct. Inderdaad dit algoritme is gezegd zijn buggy omdat het een vergissing. Laten we het verhaal met een aantal nieuwe pseudo-code. Laat n gelijk 0. Voor elk paar mensen room, N ingesteld gelijk aan n plus 2. Als een persoon blijft ongepaard, ingesteld N gelijk aan n plus 1. Om dit specifieke probleem op te lossen, we hebben geïntroduceerd in lijn vier een voorwaarde, anders bekend als tak, die alleen uitvoert als er een persoon die we kan geen koppeling maken met een ander. En dus nu, of er is een, of drie, of een oneven aantal mensen in de kamer, Dit algoritme zal ze nu tellen. Kunnen we nog beter doen? Nou, we konden in drieën te tellen, of fours, of zelfs vijven en tienen, maar buiten dat, het gaat om te krijgen een beetje moeilijk om te wijzen. Aan het eind van de dag, of uitgevoerd door computers of mensen, algoritmen zijn onder een reeks instructies met welke problemen op te lossen. Dit waren slechts drie. Welk probleem zou je lossen met een algoritme? DAVID J. MALAN: Dus met opzet, een eenvoudig programma, een zeer eenvoudig algoritme, voor het bereiken van iets zeer eenvoudig, tellen aantal mensen in de kamer. Maar laten we plagen elkaar sommige representatieve heeft hier die eigenlijk zal ook nuttig zijn bij de uitvoering van de meest complexe software. Dus bijvoorbeeld in de eerste regel, we hebben wat we de variabele noemen, en uit de algebra, je bent algemeen bekend zijn met behulp van x en y en z soms, enzovoort. Maar in de programmering, variabelen nog steeds aan het einde van de dag, vergelijkbaar met die. Maar het is misschien eenvoudiger om na te denken een variabele als slechts een container. En, in feite, het is een aantal bits een of andere manier in uw harde schijf geïmplementeerd of in het geheugen van uw computer, maar daarover in de toekomst. Het is gewoon een container. En als je iets te zeggen zoals laat n gelijk 0, Nou dat is als het roepen van dit glas kom hier n, gewoon een willekeurige naam, en zetten niets in eerste instantie. Dus de waarde van deze kom is op dit moment nul. En natuurlijk als je waarneemt in een volgende regel, daadwerkelijk verhogen enkele lijn code, zoals in de derde regel here, door 1, dat is hetzelfde als zeggen wat is het huidige waarde van n, het is 0, plus 1, zet iets als een pingpongbal in hier. Nu de waarde van deze variabele is gewoon 1. En je kon heel snel extrapoleren, maar nu is het 2, nu is het 3, en ga zo maar door. Dus dat is al een variabele is. Het is een fluitje van een opslag sommige gegevens daadwerkelijk op te slaan. Voor nu is het een ping pong bal. Daar is het een nummer. Maar het kan woorden in een woordenboek, zoals de spellingcontrole Ik zinspeelde op woensdag voor een van vorig jaar probleem sets. Nu een andere belangrijke gedachte, die op dezelfde is vrij intuïtief ik zou beweren, is dat van een lus. En de lus van de werkwijze van het tellen van iedereen is natuurlijk, die hetzelfde nogmaals ding en again-- ofwel een voor een of twee tegelijk. En u kunt dit uit te drukken in het Engels, of pseudocode code in een aantal manieren, maar met deze voorzetsel "voor" is een veel voorkomende manier om dat te doen. Voor elke persoon in de kamer, dit doen. Opnieuw en opnieuw. En het feit dat het ingesprongen, lijn drie, betekent gewoon dat wat je moet doen is het spul dat is ingesprongen onder de lijn twee zelf. Gewoon een mens conventie, maar een gemeenschappelijk een zoals we zullen zien in de werkelijke hogere programmeertalen. Nu iets interessanter is als je in een hoek geval. Bijvoorbeeld, een hoek geval was toen er waren drie mensen, of vijf, of zeven, of een oneven aantal mensen in de kamer, want dat doen door tweeën remmen uiteindelijk, omdat je gaat om iemand te missen, hetzij op de begin of het einde afhankelijk van hoe je het doet. En ja, nu heb ik deze tak, of staat, als een persoon blijft, dan ga je gang en te hanteren dat een eenzame persoon die niet krijgen gepaarde met iemand anders. Dus dat is wat wij zouden noemen een aandoening, of een tak. Nu pseudocode code Meer algemeen kan worden geschreven aan een aantal problemen. En wat ik dacht dat we zouden hier doen is een moment te nodigen zullen we zeggen CS50's bezitten Rob Bowden op het podium te worden vergezeld door twee vrijwilligers, die geen idee hebben wat er te wachten staat. Een hand ging naar beneden, zodra ik dat zei. Hoe zit je op de eindigen hier, kom op. En wat te denken van van verder weg, wat dacht je van helemaal achterin. Achterste rij, kom op met je handen omhoog. Oke, en wat is uw naam? ANITA: Anita. DAVID J. MALAN: Anita. Oke, leuk je te ontmoeten. Laat me je voorstellen aan Rob Bowden. Dit is Anita. En wat is uw naam? Kiersten: Kiersten DAVID J. MALAN: Kiersten. Kiersten, kom op en ontmoeten Rob Bowden en Anita. Leuk je te ontmoeten. Kiersten: Leuk je te ontmoeten. DAVID J. MALAN: Oke, Rob. ROB BOWDEN: Leuk je te ontmoeten. DAVID J. MALAN: Anita. Kiersten: Hoi Anita. DAVID J. MALAN: En uw enkele honderden klasgenoten. Zo, nu laat me ga je gang en trek up gewoon een simpel programma hier Op Mac OS dat me laat eigenlijk noteren wat aantekeningen neer. En als jullie willen ieder voor zich een ligging aan een van die scholen daar, laat me gaan en begint een lijst van pseudo-code, als je wil. En wat ik hier wil doen, uiteindelijk is het type voor u aantal instructies dat onze leden van het publiek zijn eigenlijk gaat reciteren voor ons. Laat me gaan en gewoon verander dit in een genummerde lijst overeenkomen met wat we aan het doen waren daar. En wat ik ga doen met uw hulp, is een programma schrijven in pseudocode waarmee deze jongens gaan om een ​​pinda te implementeren boter en jam. Dus het is misschien apropos te wat laten sommigen van jullie zou kunnen hebben gezien op het internet voor slechts een korte vervelend ogenblik. [MUZIEK BUCKEWHEAT BOYS, "PINDAKAAS  JELLY TIME "] DAVID J. MALAN: OK. Dat is genoeg. Dus hier ondertussen, ik heb een paar van Google Glasses die we op CS50 eigen Rob Bowden zal zetten om de wereld te zien door zijn ogen. En we zullen ons best doen in de post productie daadwerkelijk weven de beelden van wat Rob ziet nu, in deze eigenlijke lezing video met onze twee vrijwilligers naast hem. Dus wat ik ga doen is, zal ik de typiste zijn. We hebben het doel hier van eigenlijk het schrijven van een programma waarbij om uiteindelijk een pindakaas en jam sandwich, maar deze drie gaan gedragen alsof ze zijn computers. En computers, aan het eind van de dag, zijn eigenlijk best dom apparaten. Ze zijn super snel, maar ze kunnen alleen doen, letterlijk, wat ze verteld. Je kunt niet zomaar zeggen: maak een pinda boter en jam. Je moet ze te programmeren om dat te doen. Je moet ze vertellen met precisie wat te doen, minder er iets vreselijk en, hopelijk, vermakelijk mis. Dus met dat gezegd, moeten we een call-out uit het publiek voor wat moet stap een, als het doel here is een pinda maken boter en jam. Ja? PUBLIEK: [onverstaanbaar] de zak met brood. DAVID J. Malan: Open de zak met brood. Als de drie deelnemers zouden wilt doorgaan met dat letterlijk doen. Open de zak met brood. [PUBLIEK LACHT] DAVID J. MALAN: Dus laten we aan werken. Oke. Dus stap twee, how-- laten we dit verder gaan. Ja, aan de voorkant. PUBLIEK: [onverstaanbaar] het brood. DAVID J. MALAN: Wat is dat? PUBLIEK: Verwijder het brood. DAVID J. Malan: Verwijder het brood. Zo ook beknopt. Dank je wel. [Applaus] DAVID J. MALAN: Dat is het? OK, dus stap twee gaat te verwijderen brood. Oke, iemand wilt Schrijf ons een langere straf? Iemand anders? Een beetje meer [onverstaanbaar]. Nee, niets nu. Ja? PUBLIEK: Plaats twee plakjes naast elkaar. DAVID J. MALAN: Plaats twee plakjes naast elkaar. [PUBLIEK LACHT] DAVID J. MALAN: Plaats twee plakjes naast elkaar. Stap vier. Ja? PUBLIEK: Neem uw hand en zet het licht bovenop de pindakaas deksel. [PUBLIEK LACHT] PUBLIEK: [onverstaanbaar] naast de pindakaas. DAVID J. MALAN: Wat? Zeg dat nog eens. PUBLIEK: Draai het deksel en zet het voorzichtig naast de pindakaas. DAVID J. MALAN: Doe het voorzichtig naast de pindakaas. OK, vooruitgang. Stap vijf. Excellent. Ja? Pick-up mes. DAVID J. MALAN: Pick up mes. OK, stap zes. Yeah? PUBLIEK: Houd mes bij het handvat. DAVID J. MALAN: Houd mes bij het handvat. Houd mes bij het handvat. Stap zeven. Ja? PUBLIEK: mes [onverstaanbaar] in pinda boter en zo weinig uit [onverstaanbaar]. DAVID J. MALAN: Zet mes in-- I gehoord "zet mes in pindakaas en neem zo weinig als mogelijk. " By the way, verwijder eerst het papier. Oke, stap negen. Stap negen. Stap negen. We hebben eigenlijk niet nog een broodje gemaakt. Ja? Publiek: Het gebruik van mes in pindakaas, toepassing pindakaas op brood gezegd. DAVID J. MALAN: Met behulp van mes in pindakaas, gelden pindakaas op genoemde brood. [PUBLIEK LACHT] DAVID J. MALAN: Oke stap 10. Stap 10. Ja? PUBLIEK: Taste pinda boter om de kwaliteit te waarborgen. [PUBLIEK LACHT] DAVID J. MALAN: Stap 11. Stap 11. Stap 11. Kom op. Yeah? Daar. PUBLIEK: pick-up gelei voorzichtig. DAVID J. MALAN: pick-up gelei voorzichtig. OK, en dan een andere hand lag. Vlak achter je. Ja, in het blauw. PUBLIEK: Oke, verwijder deksel van [onverstaanbaar], ja, Verwijder deksel van de gelei. [PUBLIEK LACHT] DAVID J. MALAN: Van gelei. Ha ha. [PUBLIEK LACHT] DAVID J. MALAN: En? PUBLIEK: En nauwelijks vegen elke [onverstaanbaar]. [PUBLIEK LACHT] PUBLIEK: Natuurlijk, voordat [onverstaanbaar], Verwijder het papier uit gelei. DAVID J. MALAN: Verwijder het papier uit jelly. Stap 14. We zijn er bijna. Ja? PUBLIEK: Omkeren gelei fles voordat alles valt uit. DAVID J. MALAN: Omkeren gelei fles voor het gelei valt uit. Stap 15. PUBLIEK: Plaats de dop. DAVID J. Malan: Plaats de dop. Stap 16. Yeah? PUBLIEK: [onverstaanbaar] DAVID J. Malan: Zeg dat nog eens. PUBLIEK: Neem dop van uw gelei. DAVID J. MALAN: Uit uw gelei. Dus really-- Oeps. Kom op. Plaats de dop. Zet cap-- U zei Verwijder de dop van de gelei. Het gevoel alsof we in een beetje van een lus. Stap 17. Ja? PUBLIEK: [onverstaanbaar] DAVID J. Malan: Zeg dat nog eens. PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Ga terug naar step-- PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Verwijder dop van pindakaas. Ja? PUBLIEK: Laat al de gelei op het brood. DAVID J. MALAN: Drop alle de gelei op het brood. DAVID J. MALAN: We zijn er bijna. Stap 19. PUBLIEK: Verwijder overtollig gelei. DAVID J. MALAN: Haha, gelei. [Applaus] DAVID J. MALAN: Waarom niet we-- een stap om dit huis te nemen. Nog een stap en dan we broodjes serveren. Ja? PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Hoewel elke sandwich streepje remains-- laten we dit-- eten. [Gelach] DAVID J. MALAN: Oke, bedankt aan onze vrijwilligers hier. [Applaus} DAVID J. MALAN: We hebben een aantal leuke afscheid geschenken voor ieder van jullie. Uw eigen pindakaas, gelei, en brood terug te brengen naar huis. Dank je wel. Kiersten: Dank je wel. DAVID J. MALAN: [onverstaanbaar] welkom. [Applaus] DAVID J. MALAN: Dus, dit is, van Natuurlijk belachelijk voorbeeld. Rechts? Maar het hoeft soort onthullen hoe wij mensen gewoon duidelijkheid voor verleend. En het feit dat ik ben geweest praten met een ander mens, hij of zij weet precies wat je bedoelt. Computers zijn niet van plan om te weten wat je bedoelt, zelfs bij gebruik, als we gaan doen vandaag, iets programmeren in Scratch, een sleep en drop, puzzelstuk stijl taal. Zelfs ontworpen voor jonge kinderen, je hebt zo expliciet en dus letterlijk met zijn wat u wilt dat uw programma te doen. Nu uiteindelijk zijn we gaat zijn programmering niet in pseudocode code, Engels achtige syntax, maar code of, beter gezegd, de broncode. Broncode is gewoon de mooie manier voor het daadwerkelijk beschrijven code schrijven met een toetsenbord dat is niet Engels per se. Het is in C of Java of C ++ of iets als dat, zoals we zullen snel zien. En in feite, om er maar een te schrikken weinigen van jullie, op het eerste gezicht, Dit is een programma geschreven in een taal riep C. Maar om un-schrikken een paar van jullie, zult u volledig begrijpt wat er gaande op komen volgende week maandag toen het gaat om iets als dit. Eerlijk gezegd, dit is een oudere taal. Het is vrij mysterieus, maar het is representatief van veel talen deze dagen dat hebben veel haakjes en krullend beugels en aanhalingstekens en komma's. En veel van deze syntactische spul dat is niet helemaal intellectueel interessant. Inderdaad, het is een regelrechte afleiding van het eenvoudige ideeën die zijn staren ons in het gezicht. Dit programma, zoals je misschien wel raden, prenten naar computerscherm iemands de woorden "Hallo komma wereld." Dat is het. Zo duidelijk, er is een heleboel dingen dat is krijgen in de manier van enkele evidentie er, maar het gaat om zeer snel te glijden weg en volledig intuïtief. Inderdaad, wat we gaan doen vandaag is destilleren dit vrij complex zoek programma, wat ook weer je komt snel te begrijpen, maar iets veel eenvoudiger. Laten we zeggen wat we bedoelen. Laten we een beeld van wat we bedoelen te trekken, door middel van deze puzzelstukjes hier. Dus dit is een programmeertaal taal bekend als Scratch. Het werd ontwikkeld door het MIT Media Lab. En wat zie je in het probleem te stellen op nul, die zal worden vrijgegeven later vanavond, we moeten je naar dit URL hier scratch.mit.edu. En ze hebben een web interface via welke zult u uw eerste programma schrijven. Of die van u met voorafgaande ervaring, uw tweede programma, maar in een omgeving die waarschijnlijk iets onbekende en dat zal je duwen om iets te creëren Met deze zeer visuele omgeving. Nu, wat ik ga doen hier is het openstellen van het programma zelf. Het bestaat niet alleen als een webbrowser, maar ook als downloadbare programma zodat je daadwerkelijk kunt gebruiken Als u niet beschikt over internet. En ik ga dat doen hier, in Sanders, net in het geval dat de Wi-Fi werkt niet werken super goed. En wat ik ga doen is punt een paar kenmerken van dit programma. Dus, om duidelijk te zijn, ik heb gewoon dubbel klikte op de icoon op mijn bureaublad, oftewel gegaan naar scratch.mit.edu, en het is trok dit venster. Dit is een programmeeromgeving. Het is een stukje software dat sommige van onze vrienden aan het MIT schreef dat het ons te laten en schrijf u programma's in een taal genaamd Scratch. Nu gebeurt dit om een ​​te zijn die ook ook genoemd Scratch en dit is zijn wereld waarin hij leeft. Dit is de fase zogezegd, dat rechthoek op de linker bovenhoek. En hij hoeft niet te kijken als een kat. Je kan hem kijken zoals alles en je kan veel van dergelijke sprites hebben, of tekens, in een programma. Ondertussen, hier aan de andere recht, is een grote schone lei. En dit is waar, in een ogenblik, we gaan om te beginnen met programmeren door te slepen en deze grafische puzzel stukken die gelijk zijn hier in het midden. En er is veel meer van hen dan we zullen tijd doorbrengen in de klas omdat je dat vinden ze zijn allemaal vrij intuïtief. Nogmaals, het is ontworpen voor kinderen, maar we gebruik het om plagen elkaar een aantal van deze fundamentele ideeën van variabelen, loops, voorwaarden, en, binnenkort, dingen achtige functies en evenementen en draden en andere mooie dingen we zullen krijgen om het duurde niet lang om daadwerkelijk te creëren iets van Scratch. Pun intended. Nu, wat ik ga doen hier is klik op niet motion, maar controle. En dit is slechts een categorisering van hier-- en ik zie een andere kleur in te stellen van de blokken. Maar let op een paar bekende woorden. "Als" en "else if" en "herhalen." En je kunt waarschijnlijk wel raden dat doet denken aan de tak, of de voorwaarden die wij zagen, en zelfs de looping constructie. Dus we hebben vergelijkbare blokken hier. Maar de meest interessante men is deze hier. Als deze groene vlag wordt geklikt, deze, voor diegenen die eerder programmeren ervaring, gelijkwaardig een belangrijke functie. Maar voor degenen die niet bekend, dit is het puzzelstukje dat zal kick ons ​​hele programma te starten. Letterlijk betekent het als ik ga, in deze programma, en klik op een groene flag-- die je hier boven kunt zien in de linkerbovenhoek van de UI, zo zien de groene vlag naast het rode stopbord? Toen ik dat op mijn programma gaat lopen. Nu, ik ga iets doen super eenvoudig met Scratch. Ik ga om te gaan en ga naar het paneel looks hier, waar ik een heleboel van paars puzzelstukjes, en ik ga om verder te gaan en te doen iets super simpels als, zeg. En dan-- kennisgeving dit tekst in de witte doos is editable-- ik ga zeggen "Hallo wereld", net als wij deed dat tekstuele versie een moment geleden. En nu als ik ga en klik op deze groene vlag, heb ik nu geprogrammeerd. Het is niet een bijzonder interessant programma, maar ik maakte iets op de computer doen. Ik begon een programma en het deed wat ik vertelde het aan te doen. Nu, ik kan doorgaan met slepen en neerzetten meer en meer van deze puzzelstukjes en ze gaan in elkaar grijpen, maar laten we slap sommige terminologie hier dat we zullen zien terugkerende in de loop, en echt de hele informatica en het programmeren in het algemeen. Deze "zeggen" blok, in paars, laten we gewoon beginnen met het bellen van een verklaring. Het is als een vaststelling van een feit. Dit doen. Dus, het is een categorie van instructies die u kan een computer voeden als onderdeel van een programma of algoritme. En om duidelijk te zijn, je hebt waarschijnlijk vanzelfsprekend dat u programma's op uw computer. En ze zijn soort van algoritmes, maar een programma is echt een bos van algoritmen dat sommige mensen schreven. Ze verpakt het op en ze het verkocht, zodat je, of ze op een website voor u om te downloaden. Dus, een programma is slechts een hele hoop van nullen en enen dat, een of andere manier, de mens geschapen. En die patronen van nullen en degenen vertegenwoordigen dingen, uiteindelijk, zeggen als "hallo wereld" of "play deze muziek "of" deze video af te spelen " of "stuur een e-mail." Maar we komen terug in veel meer detail wat een programma is als je, zelf, schrijf ze. Hier is nog een argument-- "Wacht een seconde." Ik heb dit nog niet te gebruiken, maar als ik wil mijn programma om te pauzeren voor een moment om iets te doen, kan ik het vertellen om dit te doen. Wacht een seconde. Nu een ander zou kunnen worden "play sound." Dus, dit is uniek voor Scratch, het heeft de mogelijkheid om geluiden. Dus, een uitspraak die ik zou kunnen gebruik is, hier, "play sound." Ondertussen Booleaanse uitdrukking, dus dit is een liefhebber woord vernoemd naar slechts een man genaamd Mr Bool, en dit allemaal over een vraag. Waar of false-- is de muis naar beneden? Een Booleaanse expressie is slechts enkele uitdrukking in het Engels dat is waar of onwaar. Ofwel aan of uit. Een of nul. U kunt denken aan het in een aantal manieren, maar het is waar of deze valse, uiteindelijk. Dus "muis naar beneden vraagteken," dat zou een Booleaanse expressie. En u kunt denken van anderen, misschien. Bijvoorbeeld, "is het linker nummer minder dan het juiste nummer? " Ook dat zou een Booleaanse expressie. "Minder dan" is een Booleaanse expressie. Deze, ook, "ontroerend muisaanwijzer." Ik weet niet zeker waarom ze noemde het muisaanwijzer. Het betekent alleen, is de cursor, is de pijl op het scherm, het aanraken van de kat, bijvoorbeeld. Of een ander aspect van het scherm. En het is een vraag, opnieuw, en dat duidt op een Booleaanse expressie. Iets dat je misschien wilt gebruiken in een voorwaarde. Dus gaan we naar die komen in slechts een moment. Je kunt "en" dingen samen. Dus, als je wilt om te controleren of deze het geval is en dat het geval is, kunt u een "en" blok, zoals deze te gebruiken. En hier is die voorwaarde. Let op de vorm van de kleine opening in de top van deze gele puzzelstukje, Het doet denken aan de vorm dat zagen we slechts een moment geleden. Elk van deze Booleaanse uitdrukkingen hebben deze wees randen links en rechts. En dat komt omdat MIT mensen besloten dat door het visueel overbrengen van vormen, U kunt soort mensen helpen, studenten en kinderen, naar soort Vul in letterlijk. Nu dat puzzle-- dat opening een beetje klein, en zoals we zullen zien in het programma, in Scratch, zal het groeien om te passen. Het zal zijn vorm behouden, uiteindelijk. Dus een voorwaarde laten we u beslist "Moet ik iets doen of niet?" Een Booleaanse expressie de werkelijke vraag je gebruikt om te beslissen ga ik naar links of ga ik naar de rechter toen ik deze ontmoeting zogenaamde splitsing in de weg? U kunt twee takken hebben. Als er iets is waar, doen dit, anders gaat die kant op, of je kan gewoon niets te doen plaats, zoals dit blok geïmpliceerd. Zo kunnen we ook nest deze dingen. Dus als je wilt om de vork te verdrievoudigen in de weg, dit doen of dit of dat, Je kunt gewoon nest deze dingen samen. En het begint te krijgen een beetje lelijk, uiteindelijk, dat is zeker, maar de logica is nog steeds hetzelfde. U kunt letterlijk lezen deze boven naar beneden en het zegt wat het means-- als dit waar is, doe dit, anders als anders. Een lus krijgt niet eenvoudiger in Scratch. Altijd het volgende doen. Nu zou je je niet dat kan veel doen, want er is geen veel ruimte tussen de bovenkant en de Onderaan deze puzzelstukje opening. Maar je zult zien Scratch gaat groeien om te passen als vele puzzelstukjes als je wilt proppen daar. Een lus kan zijn uitgedrukt met herhalingen. Als je van tevoren weten, "ik iets wilt doen 10 keer, " je kunt gewoon vertellen Scratch om iets te doen 10 keer. En we alvast variabelen. Dus hier is arbitrair, het oranje in casu en dit is een wervelwind tour. Nogmaals, zult u dit zeer toegankelijk vinden als je eenmaal begint te wijzen en te klikken. Ik heb de naam van mijn variabele n, maar ik het zou hebben genoemd wat ik wil, en Ik zet het hier, in Dit willekeurige voorbeeld naar nul. Nu het zien van een programma zoals hello wereld is niet zo overtuigend, dus laten we eigenlijk open iets dat een oud-student gemaakt. Laat me gaan en open te stellen, bijvoorbeeld deze hier, waarvoor zou ik graag een vrijwilliger hebben. Oke, hoe over-- laten we gaan verder. Ja, kom op. Wat is je naam? ABBY: Abby. DAVID J. MALAN: Abby, kom op. Dus heb je ooit gespeeld dit spel voordat? ABBY: Nee DAVID J. MALAN: Oke. David, leuk je te ontmoeten. Come on over. En wat is uw programmering achtergrond, indien aanwezig. ABBY: Ik heb een aantal C ++ geleerd. DAVID J. MALAN: Je hebt een aantal C ++ geleerd. En wat is uw spel het afspelen van achtergrondmuziek? ABBY: Niet veel. DAVID J. MALAN: OK, dus we nemen dat. Dus hier is hoe het spel gaat werken. Ik ga om te gaan en klik op de groene vlag, die is hier in de rechterbovenhoek. Nu uw voorganger in de klas u een aantal instructies die hier worden gegeven. En in slechts een moment, het zegt "ruimte om te beginnen." Ga zo door en druk op de spatiebalk. COMPUTERSPEL: Pikachu. DAVID J. Malan: En het doel is om vangen het voedsel, want er afgebeeld links. En [onverstaanbaar] [GAME muziek] DAVID J. MALAN: Aww, goed, bedankt voor het spelen. We hebben hier een klein afscheid cadeau voor u. We hebben CS50 stressbal, als je wilt om uit te kiezen. Oke, leuk je te ontmoeten. Dank u voor uw komst en uitdagend. Dus we hebben meer stress ballen, dus laten we een voorbeeld te motiveren. Een vrijwilliger? Oke, wat dacht je van hier tegenover. Wat is je naam? PHILLIP: Phillip. DAVID J. MALAN: Phillip. Kom op, Phillip. Dus, Phillip gaat worden uitgedaagd met een ander spel dat een van je voorgangers schreven als onderdeel van het probleem nulstelling, riep Hardest Game Ivy's. En we zullen zien in slechts een even wat er bedoeld wordt. Phillip, leuk je te ontmoeten. Wat is je achtergrond? PHILLIP: veel gedaan van codering. Gedaan een beetje gamen, ook. DAVID J. MALAN: OK. Kreeg veel gaming, ook. En heb je dit spel eerder gespeeld? PHILLIP: Geen DAVID J. MALAN: Alle rechts, dus hier gaan we. Ik ga om te gaan en klik op de groene vlag. [GAME MUZIEK] [MUZIEK MC HAMMER, "U kan dit niet TOUCH"] PHILLIP: [onverstaanbaar] DAVID J. MALAN: [onverstaanbaar] PHILLIP: [onverstaanbaar] [Lacht] [MUZIEK MC HAMMER, "U kan dit niet TOUCH"] DAVID J. MALAN: [onverstaanbaar] Ploegen doorheen. PHILLIP: [onverstaanbaar] DAVID J. MALAN: Ga je gang. [MUZIEK MC HAMMER, "U kan dit niet TOUCH"] DAVID J. MALAN: Oke. Gefeliciteerd. [Applaus] DAVID J. MALAN: Wij zullen post die later online dus dat je kunt uitstellen met het zo goed. Princeton komt naast, na dat. Dus laten we nu eigenlijk gaan vanaf nul te beginnen, zo te zeggen, en eigenlijk te bouwen tot kunnen we plagen elkaar een aantal van deze ideeën en maak kennis met iets wat nog complexer eind. Ik ga hierheen te gaan en ik ga om verder te gaan en maak een nieuw bestand. Dus nogmaals, zal het probleem set lopen je door middel van een aantal van deze stappen. Maar, alles wat ik deed was gaan naar het menu Bestand en ik zei "nieuwe," zo veel op Microsoft Woord, of een programma als dat. En laten we verder gaan nu-- en we geïmplementeerd "Hello world" een moment geleden, maar laten we iets doen een beetje leuker. Ik ga om te gaan naar evenementen. En ik ga "te doen wanneer groene vlag geklikt. " En dan ga ik om te gebruiken, laten we zeggen, een tak. Dus ik ga naar een "als" conditie te gebruiken. En merk op hoe zodra ik dicht om het, het wil in elkaar klikken. Dus ik laten gaan en het samen klikt. En nu kan ik iets interessants te doen. Als ik hier doorheen te bladeren, ga ik een hele hoop blokken te zien. Als ik naar "data" - laat me in-- zoomen Er is iets over variabelen. Als ik ga naar "beweging", kunt u blijkbaar dingen omdraaien. Als ik naar "operators" - oh, dit is interessant, Ik kan een willekeurig getal te halen. Dus laat ik iets doen met slechts enkele kans, alleen maar omdat. Ik ga om te gaan en sleep deze puzzel stuk, Dit is minder dan blok, dus het is gewoon "Is dit aantal minder dan die ene?" Maar ik wil niet dat een harde code een aantal want dat zijn vrij zinloos. Dus ik ga slepen dit stuk hier, en merk op hoe deze borgt, en nu wil ik verder gaan en zeggen: "als het nummer dat willekeurig is geplukt is minder dan zes, doet u het volgende. " Nu waarom minder dan zes? Wat waarschijnlijkheid is dit effectief Ga je me geven, gewoon intuïtief? Ongeveer 50%, toch? Als het nummer dat is denk willekeurig tussen 1 en 10 is minder dan zes, duidelijk dat het een, twee, drie, vier of vijf. En dat gaat me een geven 50% kans op wat gebeurt er? Nou laten we iets doen als deze, "play sound meow." En let, wederom, het puzzelstukje groeit te passen, zolang de vormen passen. Dat is wat belangrijk is. Laat me gaan naar Scratch hier in en klik op 'play'. Er gebeurt niets. Is dat een bug? Nee, niet nodig. Het zou gewoon dat een te groter aantal werd gekozen. Dus laten we het nog eens doen. Niets. [MEOW] DAVID J. MALAN: Daar is het. [MEOW] DAVID J. MALAN: Again. Nee [Miauwen] DAVID J. MALAN: Dus als je hebt ooit gespeeld spel, natuurlijk waar spul is willekeurig gebeurt, als de slechteriken komen of niet komen op het scherm, of dingen vallen of niet vallen, dat is gewoon omdat er iets super simpels als dit gebeurt. Kies een willekeurig getal, en als het is minder dan een bepaalde waarde, misschien is dit te doen of misschien is dat te doen. We kunnen integreren dat in een toestand. Laten we iets anders doen. Laat ik dat weggooien. U kunt zich te ontdoen van spullen door net te slepen naar links en loslaten. Laat me ga je gang en doe een eeuwig blok en heel snel iets vervelends doen. Laat me gaan en zeggen "play sound meow." Maar ik denk niet dat dit ook zijn vervelend, dus laat ik grijp dit blok, "Wacht een seconde," en de mededeling er is geen ruimte meer voor. Maar als je dicht genoeg, het wil er naartoe te gaan. Dus ik laten gaan en het zal groeien tot het blok te vullen. Nu, is een lus. [Miauwen] DAVID J. MALAN: Ik ben letterlijk dit altijd doen. Opnieuw en opnieuw. Dat is gewoon niet natuurlijk klinken. Laat me gaan en dit te veranderen niet een seconde of twee seconden en druk op Enter. En wat is er leuk aan Scratch is dat je zou kunnen interactief programmeren. Maak een verandering, misschien druk op Enter of Play weer, en het zal gewoon doorgaan. Nou, nu waarom we niet doen iets leuker? In plaats van alles doen vanuit het niets, laat me gaan en open te stellen een voorschot maakte men, dat ik vooraf gebakken, genaamd "Huisdier van de Kat." En we zullen alle posten deze bestanden online, en probleem set nul zal u vertellen hoe de toegang tot hen en open te stellen. En let, dit is vrij eenvoudig. Maar op voorhand, ik lijken te hebben gegrepen een "forever" blok, dus ik heb een lus. En dan heb ik een "als" conditie. Ik heb een Booleaanse expressie. Dus in het Engels, maar een blik op dit, vooral als je nog nooit hebt voordat geprogrammeerd, gewoon intuïtief, wat dit gaat doen, dit programma? [PUBLIEK GERATEL] DAVID J. MALAN: Als je de kat aaien, de kat gaat miauwen, toch? Omdat "voor altijd het vinkje" wordt de muisaanwijzer aanraken van de kat. Dus om duidelijk te zijn, en ik heb niet gezegd dit voor al deze puzzel stukken en het script dat we hebben ze gecombineerd in, zo te zeggen, een script is synoniem met programma, echt, behoort tot deze kat. En de reden is-- omdat mededeling hoe deze zelfde kat hier is gemarkeerd, hier beneden kunt u een maken tweede kat of hond of echt alles wat je wilt grafisch. Je kunt iets importeren van Photoshop, of iets dergelijks, en wat als je te integreren wil om het te maken voor een project. En wat je zult vinden, uiteindelijk, is dat je kunt scripts toevoegen, puzzel stukken, op afzonderlijke tekens. Dus deze behoren allemaal tot dit cat. Dus als ik nu ga je gang en spelen dit programma, er gebeurt niets. Maar het loopt. Het programma is in deze eeuwig lus, soort van te wachten op wat er te gebeuren? [PUBLIEK GERATEL] DAVID J. Malan: Om de kat aaien. Dus als ik beweeg mijn muis naar hem-- [Miauwen] DAVID J. MALAN: Dus nu Ik aaien de kat. Ondertussen kunnen we een dubbele tak hebben. Laat me gaan en openen up niet huisdier de kat. We zullen dit online plaatsen ook. Dit is een weinig complex, maar vanzelfsprekend u kunt misschien wel raden wat er gaat gebeuren. [Miauwen] DAVID J. MALAN: Cat is miauwen, grote oude tijd. Maar dit programma is natuurlijk genaamd "Laat de kat niet aaien," zo duidelijk, ik wil de kat aaien. [BRULLENDE] DAVID J. MALAN: niet huisdier de kat. Nu, laten we eens een kijkje Een ander voorbeeld here. Deze zal worden genoemd "Hi, Hi, Hi," om redenen dat zal duidelijk zijn, want zodra ik dit ding-- [SEAL BARKING] DAVID J. MALAN: Zeer eenvoudig te schrijf vervelend Scratch programma's. [SEAL BARKING] DAVID J. MALAN: Nu zullen we niet gaan in detail al deze, maar merken dat er een paar nieuwe functies hier. Er is een variabele, genaamd "gedempt," en dan is er een heleboel voorwaarden. En voor nu, laat me net te plagen je door te zeggen dat als deze jongen krijgt te vervelend, Ik kan op de spatiebalk te raken en hij stopt. Omdat de rol wordt gespeeld door deze twee scripts is als volgt. Een daarvan doet de blaffen om de paar seconden. De ander is gewoon wachten voor mij om op de spatiebalk te raken. En als ik druk op de spatiebalk, het gaat om te veranderen de toestand van deze variabele de waarde van deze variabele, dat is blijkbaar genaamd "gedempt," Ik heb je niet geroepen het iets saai als n, Ik noemde het een Engels woord, "gedempt." Van 1-0 of 0-1. Van true in false of false in true. En dus kun je eigenlijk zie nu, dat je twee scripts kunnen hebben, twee programma's tegelijkertijd, en beiden kunnen zitten in een lus om iets te doen. Wachten op de mens te doen zoiets als met de spatiebalk. [SEAL BARKING] DAVID J. MALAN: En nu hij is weer op zijn weg. [SEAL BARKING] DAVID J. MALAN: Dus wat anders kunnen we doen met deze voorbeelden? Nou, laten we verder gaan en doen een Bijvoorbeeld met het tellen van schapen. We zullen dit hier verder langs de lijnen van-- laten we het openstellen van de schapen voorbeeld. En let, net als voorheen, deze, gelukkig, een beetje minder vervelend. Zodra ik raakte spelen hier-- Oh nee, dat is vervelend. Hij gaat baa met enige waarschijnlijkheid. Laten we opnieuw te spelen dit. [SCHAPEN BLEETING] DAVID J. MALAN: Het enige verschil is we hebben het kostuum veranderd, om zo te zeggen, en we halveren en zeggen: wat dat werkelijke aantal is. Nou laten we verder gaan en neem nog een stap verder. En laat me te plagen je met een andere functie hier. Laten we verder gaan en open te stellen een programma genaamd Threads. Zoveel als je er een kan hebben sprite, het hebben van meerdere scripts, kun je twee sprites, een vogel in zijn kat, elk hun eigen script. En elk van hen kan tegelijkertijd werken. Als je ooit hebt gehoord van de woord "multithreading" een computer is "multithreaded" betekent het kan meerdere dingen tegelijk te doen, en, inderdaad, dan kan dit krassen. En let nu op de vogel is een soort van dom. Het is gewoon willekeurig dingen te doen, stuiteren van het scherm af. Duidelijk is dat de kat is geprogrammeerd de soort zijn die vermogens om thuis in op de vogel, want hij is altijd op hem gericht. Tot slot, hij vangt de werkelijke vogel. Dus ik zal niet ingaan op details hier, maar je kan soort glimp dezelfde vormen, sommige "Als" voorwaarden, sommige variabelen, misschien wat loops, zijn uiteindelijk hetzelfde te doen. Laat me nu gaan en openen iets heel anders, voor sommigen van u te plagen, in het bijzonder die meer comfortabel, wat je eigenlijk kunt doen met deze. Ik ga om te gaan en open Button hier. En dit is een super simpel lijkende programma, maar kijk wat er gebeurt wanneer Ik-- Let op wat er gebeurt als ik deze versie van het te openen, hier in de browser, scratch.mit.edu. En als ik op dit grote rode knop, let op wat er gebeurt. Dus wat is hier aan de hand? Er is eigenlijk veel meer complexiteit gebeurt onder de motorkap, ook al heb ik geïmplementeerd deze, of eerlijk gezegd, Dan Bradley heeft deze geïmplementeerd zo eenvoudig. Hij heeft een aangepaste Scratch puzzel ontworpen Stuk, bekend als een Scratch uitbreiding Hij noemde het Toggle. En wat Toggle doet is het stuurt een boodschap via internet. En die boodschap zelf ziet er een beetje cryptisch. Maar ook dit zal je begrijpen door het einde looptijd's. De boodschap die hij is eigenlijk het verzenden van ziet er een beetje iets als dit. Het is alleen maar tekst. Cryptisch. U zult het begrijpen door de tijd we krijgen het probleem stelde zeven. Het is gewoon het verzenden van een tekstbericht via internet naar een server. En die server is, uiteindelijk, gesprek met deze lamp, die heeft een van die fancy gloeilampen in dat, zelf, praat met het Wi-Fi in het netwerk hier, waar een lokaal apparaat neer hier-- en, uiteindelijk, het is eigenlijk draaien dat het licht aan en uit. Maar we kunnen meer doen interessante dingen nog steeds. Let op wat Dan ook voor ons gedaan heeft. Hij maakte meerdere sprites, elk van die heeft een script te wachten op een klik. En als ik klik op rood, gaat het rode. Als ik blauw, het gaat blauwachtig. Groen, geel, oranje. En dit alles gebeurt door ga weg uit op het internet, terug naar beneden hier om de gloeilamp, aan en uit. En als je kunt het-- geloven en dit is misschien wel een van de meest complexe Scratch projecten iemand implemented-- hij deed het, in alle eerlijkheid, in een dag. En dat was de uitdaging die we wierp Dan toen we zagen hebben binaire bollen, we hebben Scratch, hoe kunnen we ze combineren? En inderdaad dit absoluut iets wat iedereen in deze kamer kon doen door end-- semester Is hij geherimplementeerd binair bollen met behulp van dezelfde interface die was op onze iPad op woensdag. Dus dat nu, als ik eigenlijk Klik op het plus hier, we hebben een, twee, drie. Ik kan de 16 geraakt en zet dat een op. 128, enzovoort. Nu, als dat alleen al heeft en opgeblazen je geest, je kan dingen veel beter toegankelijk maken, waarbij geen hardware zeker. Gewoon dingen op het scherm zelf. En, inderdaad, wat de meeste studenten uiteindelijk doen is een soort van spel, een stukje van artistiek werk, of een soort interactieve animatie. En ik zal zeggen dat een van onze favorieten is deze. En ik dacht dat als we de lichten kan dimmen, we zullen een kijkje nemen op deze laatste Scratch project in conclusie. Maar wat je in gedachten moet houden, zoals Ik kan u plagen met een laatste detail, snijden zal volgende week beginnen. Kantooruren zal volgende week beginnen. Probleem set nul zal worden geplaatst CS50.harvard.edu later vandaag. En u zult worden begroet in probleem set nul aan CS50 eigen Zamyla Chan, die begeleidt de meeste van onze walkthroughs. Dit zijn ingesloten video's in het probleem sets dat zal je hand door een veel van de initiële set-up en door vele van de mogelijke ontwerpbeslissingen. Dus als je ooit hebt die emotie had bij het ophalen van een huiswerkopdracht en vroeg me af, waar moet ik beginnen? Ze zal dat antwoord voor u hebben. En nu, een definitieve programma van een van uw voorgangers in antwoord op de vraag "Wat zegt de vos zeggen?" [MUZIEK YLVIS, "WAT DOET DE VOS ZEGGEN?] YLVIS: (zang) Hond gaat inslag. Kat gaat miauw. Vogel gaat tweet en muis gaat piepen. Koe gaat moo. Kikker gaat kwaken. En de olifant gaat toot. Eenden zeggen kwakzalver en vis gaan blub. En het zegel gaat ow ow ow, maar er is een geluid dat niemand weet, wat zegt de vos zeggen? En DAVID J. MALAN: Dat is het voor CS50. Wij zullen u op Puzzle Day en op maandag. [Applaus] [MUZIEK YLVIS, "WAT DOET DE VOS zeggen?"] Verteller: En nu diep gedachten, door Daven Farnham. Vandaag Ik ben geraakt in de geconfronteerd met een telefoonboek. Verwarrend, want ik ben bij site online kijken.