[VIDEO AFSPELEN] [AUTODEUR afsluiten] [AUTO MOTOR STARTEN] [Muziek] -Moving Rechts langs op zoek naar van goede tijden en goed nieuws. Met goede vrienden kun je niet verliezen. -dit Kan een gewoonte worden. -Opportunity Stoten Laten net reiken en grijpen. -Ja! -samen We zullen het NAB. -We Hapering wandeling, bus, taxi of geel is. -Dammit. -We Bewegende rechts langs. -Footloose En vrije luim. -Aan Er de helft van de pret. Kom delen met mij. -We Bewegende rechts langs. -We Naar de belasting te delen. -We Hebben geen kaart nodig te hebben krijgen deze show op de weg. Hé Fozzy, ik wil dat je linksaf Als u bij een splitsing in de weg. -Ja meneer. Sla linksaf bij de splitsing in de weg. Sla linksaf. -Ik Geloof niet dat. -Cruising Rechts langs we gevonden de lichten op de snelweg. -en De weg of op mijn manier. -dus Vertrouw mijn navigatiesysteem. -film Sterren met flitsende auto's en het leven met de top naar beneden. -We Bestormen van de grote heuvels. -Ja, Storm heeft gelijk. Moet het sneeuwen? Nee, ik denk het niet. -Moving Rechts langs. -Footloose En vrije luim. -Je Bent klaar voor het grote werk. -Is Het klaar voor mij? -Moving Rechts langs. Bewegende rechts langs. Bewegende rechts langs. Bewegende rechts langs. -Ik Denk dat je beter stoppen. -Ja meneer. [END AFSPELEN] [Applaus] DAVID J. MALAN: Dit is CS50. En dit is het einde van de week 0, maar het begin van een mooie vriendschap. We zijn zo enthousiast te zijn hier bij Yale University voor de eerste keer met onze vriend Scaz, en Jason, en Andy. Alle 40 van de CS50's TF's en CA is hier op Yale. En jullie allemaal. En in feite, is het waarschijnlijk tijd to-- [Applaus] Dus, hoewel de meeste van de colleges zal inderdaad in Cambridge dit jaar, de realiteit is dat door het ontwerp en zeer bewust in CS50, Ik denk dat we naderen het punt technologisch en pedagogisch, wanneer het een superieure educatief kan zijn ervaring om met enige materiaal online de cursus. Inderdaad, de reality-- en als ik geloof Dit philosophically-- is dat colleges zijn niet een bijzonder effectief middel voor het leveren tamelijk complexe informatie. Zeker meer dan uur plus lange overspanningen van de tijd. En inderdaad om de paar minutes-- Ik herinner me in college-- u zone uit voor een moment, u sommige complexe onderwerp missen, en je bent vrij veel gegaan de volgende 45 minuten. En de realiteit is dat de vraag of je bent hier in New Haven of Cambridge of voorbij, de eenvoud van het hebben de mogelijkheid om te pauzeren en snel vooruit, terugspoelen, hyperlink naar gerelateerde middelen, naar de tekstzoekfunctie transcripties en dergelijke, is een kans die Ik durf te zeggen voor onze online studenten ver buiten New Haven, biedt hen een kans om echt te begrijpen de conceptuele materiaal dat we introduceren in lezingen des te beter. Maar uiteindelijk in CS50, is de ervaring van de studenten ' wordt dus gekenmerkt, zo veel meer door de cursus probleem sets, of wekelijkse programmering projecten, secties cursus onder leiding van het onderwijs kerels, de nachtelijke kantooruren geleid door de cursus assistenten en het onderwijs kerels, en inderdaad dergelijke events als CS50 Puzzle Dag, CS50's Hack-a-thon, de CS50 Eerlijk, wekelijkse lunches, en nog veel meer. En dus of u hier bent in New Toevluchtsoord, of het afstemmen op uit de verte, vandaag in Cambridge, en we zullen je weer snel, de realiteit is dit een en dezelfde klasse. En we zijn zo opgewonden om zijn hier allemaal bij elkaar vandaag. En dus aan het einde van het halfjaar, of hier of veraf, goed hopelijk u trots dragen, gelukkig, en misschien met een beetje van opluchting, het shirt dat getuigt u CS50 hebben genomen. Dus waar hebben we ophouden op woensdag? We namen een kijkje bij computationele denken. En dat is in de richting van wat we gedistilleerd informatica aan, ten minste voor nu. Maar we gedistilleerd er iets verder in tenminste drie componenten elementen. Ingangen, dus wat is het probleem we proberen op te lossen? Uitgangen, wat is de beantwoorden we hopen te krijgen? En de voorstelling er van. En wij zullen niet op wonen hier na op binaire of zelfs ASCII, en zoals zo veel, maar eerder voor lief nemen dat wij deze informatie kan vertegenwoordigen, omdat het veel meer interessante delen van deze problemen zijn niet alleen de inputs en outputs, maar de algoritmen die verder gaan in het oplossen van deze problemen. En je zou kunnen herinneren van de andere dag dat we nam een ​​vrij traditionele Het concept van het kijken iemand in een vrij groot telefoonboek, of meer in het algemeen digitaal deze dagen, slechts een zeer grote dataset. Een echt grote lijst met contacten, met veel van de namen alfabetisch gesorteerd. En we beseften dat terwijl ik Dit probleem kan eenvoudig benaderen door een lineaire approach-- pagina voor pagina, of zelfs twee bij een tijd-- we beseften dat het meer intuïtieve algorithm-- gewoon een soort van het verdelen en veroveren opnieuw het probleem en weer, en again-- deze halvering onderling tijd, gaf ons deze groene resultaat. En het is zo veel vlakker omdat het suggereert dat zelfs dit probleem wordt groter en groter, zoals het geval deze dagen met data sets en reality-- Facebook en Google zoekresultaten en de like-- doet ons algoritme uit te voeren net zo effectief met die grotere beten zoals zij heeft gedaan, zelfs met de kleinere hapjes. Nu rijst de vraag, wat kunnen we eigenlijk op dezelfde manier op te lossen met dit soort intuïtie? Dit soort van verdeeldheid en het veroveren? Nou, we kunnen iets doen als dit vandaag hier. We kunnen bijwonen nemen. Misschien als 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11-- niet van plan dat alles efficiënt te zijn. Dus wacht, lagere school. 2, 4, 6, 8, 10, 12, 14, 16, 18 enzovoort. Maar konden we een beetje beter doen? Ik ben er vrij zeker van dat ik niet kan doen dit door mijzelf. Dus als u zult humor ons voor slechts een moment, brachten we met ons een algoritme dat net drie stappen, maar het doet require-- als je niet mind-- ons allemaal opstaan, als je dat zou doen. Dus, met ons allen nu staan, stap één van dit algoritme is het volgende. Sta op en wijs zelf de nummer 1. Dus op dit punt in de tijd, letterlijk iedereen in deze kamer Hopelijk denkt aan zichzelf, echter onhandig, het getal 1. Stap nu twee van dit algoritme is naar de volgende betrekken. Stap twee, koppelen off met iemand die, voeg uw nummers samen, en nemen de som als uw nieuwe nummer. Snel sanity check. Welk nummer is iedereen denkt nu? Dus 2, behalve misschien voor een, onhandig, eenzaam persoon. Als we een oneven aantal van de mensen in de kamer. Dus een persoon kan nog steeds de nummer 1, dat is prima. Maar stap drie hier, een je moet gaan zitten. De andere moet terug naar stap twee, en herhaal, als je dat zou doen. Dus als nog staan, moet u onder hen terug te gaan naar stap twee. Ga zo door. Een paar mensen nog steeds overeind. Dus, als nog steeds overeind, koppelen met iemand. Oké, slinkende naar beneden. Een paar mensen nog steeds overeind. Ik zal je helpen als dat nodig is. Vergeet niet de sleutel mee te nemen hier is hoe veel sneller is dan ik tellen. Dus laten we zien. Ik kan helpen. Dus wat zijn nummer je nog steeds denkt aan? Publiek: Ik ben op 44. DAVID J. MALAN: 44, dus ga je gang en gaan zitten. Welk nummer je denken? Publiek: 74. DAVID J. MALAN: 74. Oké, ga je gang en gaan zitten. Wie staat er nog? 86. En is iemand anders nog overeind? Welk nummer? Ik hoorde 67. En vervolgens in de top? 32. Iemand anders nog overeind en denken van een nummer? Oh Hallo. Sorry. Ben zo terug. 42. Iemand anders? Publiek: 47. DAVID J. MALAN: 47. Is er iemand anders nog overeind die niet heeft geteld? Zodat het uiteindelijke aantal mensen in een kamer dat over 497 zitplaatsen is-- allemaal zijn filled-- is 390. Dus dit is geweldig. We zullen binnenkort bespreken het begrip een fout in een computerprogramma. Maar we zullen terug te komen dat duurde niet lang. Maar in theorie, wat zou hebben net nu gebeurd? Dus ook al waren er drie grote stappen om dit algoritme, zijnde was gewoon een soort van een grote operatie. En er was deze cycliciteit om het in dat als je nog stonden, Je hield gaande van stap 3-2, stap 3-2, stap 3-2. Maar wat bleef gebeurt op elke iteratie? Elke cyclus van deze lus? Wat er gebeurde elders in de kamer? Niet alleen het zelfde ding, maar wat er gebeurde met de helft van jullie? Gaan zitten. En dus is er in leugens dit inzicht, net als het telefoonboek bijvoorbeeld in dat als de helft van je elke keer zitten, het probleem begint met misschien 400 mensen, dan 200 mensen, dan 100 mensen, dan 50 mensen, enzovoort. En dus hebben we whittle in theorie slechts een persoon, denken van de totale waarde van iedereen. Nu de werkelijkheid, een aantal sociale dynamiek, en enkele rekenfouten zou kunnen bijdragen aan het ultieme bug. Maar in theorie, terwijl ik was nog steeds tellen weg, het nemen van enkele tientallen stappen of honderden stappen om jezelf te tellen, rekenen een kamer vol van 500 of zo mensen moet veel minder stappen zijn genomen, omdat je alleen kan verdelen 500 en 1/2 zo vaak. En dus net als met de telefoon Zo boeken de andere dag, hadden we iets logaritmische zo te zeggen, waarbij als we waren allemaal werken in koor, en het negeren van de Daarnaast fouten, zouden we hebben precies bereikt dat soort van de looptijd? Nu om eerlijk te zijn, een soort van bedrogen, in dat ik leveraged andere bron. Overwegende dat het is slechts een van mij, Ik leveraged honderden jou. Dat zou kunnen zeggen dat een te voorbeeld van parallelle verwerking, of een state of the art erg in de mode waar de computers deze dagen meerdere CPU's, of meer technisch, meer meerdere cores, en kan echt meerdere doen dingen tegelijk, net als jij alle we daar aan het doen, in parallel. Maar herinneren dat wat we Ook deed op woensdag was proberen om dit intuïtie te vangen en formaliseren in de code. Zoiets als pseudo-code. En in feite, en ik hoop dat u zult vergeef, het is net 80 graden in hier. Dus ik ga dit te nemen off voor slechts een klein beetje. Wat ik dacht dat we zouden doen, is de overgang nu naar een toepassing waarbij we weer gaan het publiek, maar schrijf een programma in het Engels zoals syntax, waarmee Dit probleem here. [VIDEO AFSPELEN] -Het Is pindakaasgelei tijd. Pindakaasgelei tijd. Pindakaasgelei tijd. Manier ya! Manier ya! Manier ya! Manier ya! Nu daar ga je! Daar ga je! Daar ga je! Daar ga je! Pindakaas gelei! Pindakaas gelei! Pindakaas gelei! Pindakaas gelei! Pinda, pindakaas gelei! Pindakaas gelei! Pindakaas gelei met een honkbalknuppel. [END AFSPELEN] DAVID J. MALAN: --that video, maar het is een beetje verslavend, zo niet een beetje vervelend. Maar om dit te doen, ik dacht dat wat we hadden doen, is proberen om een ​​programma samen te schrijven, waarvoor wij moeten drie vrijwilligers. Hebben om comfortabel op de camera en internet. Sam, kom op. Paars shirt, exact hier, kom op. En van hier, laat me ga een beetje verder terug. Crimson en blauwe shirts, kom op up. Perfect. Kom op nou. Kom op, kom op maximaal. En hoe heet jij? Erica. David, leuk je te ontmoeten. Als u wilt deze stoel hier te nemen. Dit is Sam. Hoe heet je? Antonio. Antonio, leuk je te ontmoeten. Erica en Sam, als je wilt graag een zetel hier. Wat we hebben voorbereid met gekomen, als deze jongens ontdekken, de ingrediënten waarmee maken een pindakaas en jam sandwich. Nu dit kan iets zijn dat u zeer voor verleend. Maar we hebben elk gegeven van de drie vrijwilligers hier-- twee vrijwilligers en Sam hier, een brood elk, een bord, een mes, een pot gelei of jam, en een pot pindakaas. En het doel bij de hand is nu gaat worden deze drie een pindakaas maken en gelei sandwich. Maar wat we gaan doen is verwacht de audience-- omdat jullie allemaal zeker weet hoe dat te doen dit zo goed in reality-- gaan om ons te voorzien de stap voor stap instructies. De pseudo-code, als je wil. Dus zal ik de rol van de schrijver hier te spelen. En ik heb een beetje to-do lijst gekregen, en zo als ieder van jullie, een voor een, roept een potentiële instructie, zal ik opschrijven, herhalen als nodig is. En dan heb je jongens gaan maken een pindakaas en jam boterham alleen door te doen wat je gezegd wordt. Dus denk aan jezelf als computers. U kunt alleen maar doen wat je gezegd wordt. Geen veronderstellingen, geen vragen. Je hoeft alleen maar om het te doen. Dus die willen gevaar de eerste instructie voor het maken van een PBJ sandwich? Op het balkon is er. Publiek: Open de zak met brood. DAVID J. MALAN: Open zak van brood, als je wil. Dus laten we zien. Laten we herhalen, en krijg wat preciezer. Goede manier om al te beginnen. Stap twee, iemand anders. Nu niemand wil vrijwilliger. Stap twee, de voorkant. Publiek: Open de binnenste zak met brood ook. DAVID J. MALAN: Open binnenzak brood ook. Grote, leren we. Een beetje nauwkeuriger. Laten we deze manier van werken. Ja, in het groen shirt. PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Boterhammen. Verwijder voorzichtig twee sneetjes brood. Dat is goed. Stap vier, iemand anders? Hier, ja? PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Plaats brood op plaat. Stap vijf? Stap vijf, ja? PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Op de top van-- oh, met de hand. Plaats de hand op de top van pindakaas. Is dat wat ik ga? Publiek: Ja, en schroef. DAVID J. MALAN: en-- zeg het nogmaals. PUBLIEK: [onverstaanbaar] DAVID J. MALAN: En zet de deksel naast de pindakaas. Licht plaatst de hand op top van pindakaas, en draai, en doe de deksel naast de pindakaas. Oké, stap zes. Stap zes, iemand anders. Ja? PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Zeg het nog eens. Doelgroep: Herhaal stap vijf weer. DAVID J. MALAN En Herhaal stap vijf weer, die zal creëren een beetje een probleem Nu als we het doen van deze stap voor stap. Dus nu gaan we terug naar stap vijf. Licht plaatst de hand op de top pindakaas en schroef en zet het deksel naast de pindakaas. Begrijpen dan de pindakaas en stap vijf herhalen. Dus we zullen overschrijven dat oneindige lus, als je wil. Stap zeven, iemand anders. Ja, in de rug. PUBLIEK: [onverstaanbaar] DAVID J. MALAN: --Betreffende bovenop andere. PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Op de andere hand op de andere top. Wil je gewoon komen hier? Hoe kan ik de opdracht te voltooien? Wat is de rest van de opdracht? Publiek: Het negeren van dat deel. DAVID J. MALAN: negeren van dat deel. Laten we opnieuw beginnen. Stap zeven. PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Pak met tegengestelde hand-- dit is goed. Dit is eigenlijk goed. PUBLIEK: [onverstaanbaar] DAVID J. MALAN En plastic jar-- PUBLIEK: [onverstaanbaar] DAVID J. MALAN En twist-- PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Voor twee seconden. Open de pot pindakaas. Ik hoop dat je vergeven. Dus laten we aannemen dat we daar aankwamen. Open de pot pindakaas. [Applaus] DAVID J. MALAN: Stap acht, laten we gaan. Stap acht, ja, in de rug. PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Goed. Stap negen, ja? PUBLIEK: [onverstaanbaar] DAVID J. MALAN: --out van de pindakaas pot. En-- en wat? PUBLIEK: [onverstaanbaar] DAVID J. MALAN: En zet mes terug naar pindakaas. Stap tien. Stap tien. PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Zet het mes uit, en verwijder de afdichting. Nice. Uit de pindakaas. Oké, stap 11. PUBLIEK: [onverstaanbaar] DAVID J. MALAN: OK, grijze computer volg blauw of rood computer. Goed. [Applaus] DAVID J. MALAN: Breng ons naar huis. Paar meer stappen. Wat is het volgende? Stappen 12. Stap 12. Ja? PUBLIEK: Zet een van de plakjes brood zachtjes op een van uw handen. DAVID J. MALAN: Een van je handen. En dan stap 13. Ja? PUBLIEK: [onverstaanbaar] DAVID J. MALAN: --Betreffende boterham. Goed. Best goed. Stap 14, ja. PUBLIEK: Ongedaan stap 13. DAVID J. MALAN: Ongedaan stap 13. Laten we overgaan tot gelei. Het is een 100-stap-programma, maar we waren op stap 15. Ja. PUBLIEK: [onverstaanbaar] DAVID J. MALAN: 7 tot en met 13 de gelei, omdat die zo goed ging. Herhaal stap 7 tot 13, met de gelei. Zo pakt u de onderste helft van de gelei pot met een hand op de top. Aan de andere kant van de andere top, het negeren van dat deel, vatten met tegengestelde handen, het deksel en de plastic pot onderaan en draai twee seconden. Open vervolgens de gelei pot. En tot slot, laten we proberen om geef ons iets eetbaar. Stap 16. Dus waarom niet we het daarbij laten. Dank je wel aan onze drie vrijwilligers. [Applaus] We hebben een kleine CS50 stress-bal voor u. Het zou gaan om een ​​te zijn sandwich maar-- dus wat was het punt, voorbij een beetje plezier met het algoritme? Maar de realiteit is dat zelfs wanneer je bent een computer programmeren, je nodig hebt super om precies te zijn. Zo complex of intimiderend als je eigen computer zou heel goed zijn voor u, bij tenminste als er iets mis gaat, de realiteit is het een vrij domme apparaat dat werd uitgevonden door ons mensen, en kan alleen een subset van wat we doen-- soms zeker faster-- maar weet niet hoe om aannames te maken. Het weet niet hoe ze op zijn dezelfde golflengte als jij. Het zal alleen precies doen wat je te vertellen. En u zult worden geslagen, misschien omdat we beginnen het schrijven van code met de daadwerkelijke eerste probleem sets en daarbuiten, hoe gemakkelijk het is om te maken een hypothese mens, en niet verwacht ik moet behandelen Dan, of die hoek zaak zo te zeggen, dat zou heel goed voordoen indien bijvoorbeeld Sam had de enige samendrukbare pot gelei, terwijl iedereen had enkele glazen potten als goed. Dus voordat we onze aandacht voor een aantal werkelijke code, laat ik het introduceren hoofden cursus hier bij Yale. Onze vrienden Scaz, Andy, en Jason om te komen en zeg hallo. [Applaus] SCAZ: We hebben tijdelijk kwijt Jason. Hi again, iedereen. Mijn naam is Scaz. Ik heb les aan Yale sinds 2001. En als ik niet onderwijzen, mijn onderzoek is in de robotica en kunstmatige intelligentie. En de aankondiging dat ik vandaag heb is dat het starten in een paar weken, we gaan worden om enige aanvullend materiaal om CS50 te praten over intelligence software. We gaan om te praten over hoe plaatsen zoals Netflix en Hulu kan raden welke films je zou willen om naar te kijken. Waar zullen we praten over hoe driver-minder auto's echt werken. En we zullen in staat zijn om de grond deze dingen in de concepten dat je het leren in deze klasse vandaag. Omdat al deze dingen zijn gebouwd op hetzelfde fundament. En dat is wat deze serie zal verkennen. Dus ik kijk er echt naar uit naar meer van jullie alles, en je gaat krijgen Bekijk meer van ons allemaal heel snel. Laat me dan introduceren Jason. JASON: Hallo iedereen. Mijn naam is Jason. Ik ging helaas Harvard als een undergrad. Dat gaat om te snijden uit de werkelijke stroom. En nu ben ik hier als een docent de informatica-afdeling. En ik ben het helpen lopen de cursus met Scaz, David en Andy. ANDY: Hey guys. Andy Mijn Naam. Ik ben eigenlijk de enige Yale student op het podium nu. [Applaus] Ik ben in Berkeley College, oorspronkelijk uit Solon, Ohio. En ik was een van die kinderen waar, wanneer ik kwam naar Yale, Ik dacht echt dat ik zou nooit moet je kijken naar een aantal ooit weer. En toen realiseerde ik me dat je nodig zowel wetenschap als QR credits om af te studeren. En dus mijn eerste lente, nam ik een klasse, een CS, intro CS klasse hier aan de Yale. Ik was als, dit is als eigenlijk best cool. En terwijl ik eigenlijk eindigde verklaren als mondiale zaken belangrijk, de vaardigheden Ik leerde in CS en programmering zijn dus toepasbaar op elk veld je kiest om te doen. En het personeel hier bij Yale, we hebben zo hard aan het werk geweest voor te bereiden op jullie. En we kijken uit naar uw komst alle in doorsnede en kantooruren. Dus ja. [Applaus] DAVID J. MALAN: Dank je wel. Dus net voor de les begon, we hadden een kans te lopen rond de campus met een mobiele telefoon en nemen sommige selfies in video vorm van echt mijn eerste bezoek aan de campus van Yale's hier. En dus we dachten dat we zouden delen een ruwe cut precies dit als Scaz en Andy en Jason nam me rond de campus. [VIDEO AFSPELEN] [SIRENS] -David. -Welkom In Yale. -Goed om je te zien. -Fijn om je te zien. -Kan We gaan op een tour? -Laat Gaan op een tour. -Road Tour. -Deze Teken is er al een tijdje. -Whah, CS50. -Opschieten! Go, go, go, go. Je moet [onverstaanbaar] Harkness Tower. -En Zagen we dat een paar keer. [Applaus] -Kijk Uit voor de fiets! Ahh! Hallo Frank. -Wat is er jongens? -Hoe gaat het met je? -Goed om je te zien. -Welkom In de video. Doe niet te opgewonden. -Ik Hou Silliman. Ahh! -Het Is al ongeveer drie uur geleden Jason had ijs en Nutella. Dus we hebben om terug te stoppen bij Silliman voor een klein beetje. -Het Is niet eens [onverstaanbaar] Maar alleen het feit dat ze het hier hebben is zo geweldig. Dude, er is Nutella bij elke maaltijd. -Er Was vorig jaar ook. -Ja. -Vertel veel over Yale dusver. Maar ik weet nu dat TD daar. En dat wordt beschouwd als buiten de campus. -Hier Hebben we gotische architectuur. Wereld beroemd. We hebben wat meer gotische architectuur. En de bouw, en meer gotische architectuur. Hoi. Dit is waar we hebben kantooruren Dinsdag tot donderdag in Zweinstein, als [onverstaanbaar]. -Prima. Dat is het voor de tour. We zijn aan de Yale University's Law School, waar lezing van vandaag is ongeveer plaatsvinden. Laten we het hoofd in. [END AFSPELEN] DAVID J. MALAN En dat brengt ons hier nu. Tot dusver hebben we geweest nadruk op pseudocode, dat is dit Engels-achtige syntax. Er is geen voorgeschreven specificatie. Het is gewoon je wat gebruiken intuïtieve taal als je willen uitleggen wat u wilt doen. Maar laten we beginnen nu om de overgang code, zoals de meeste mensen zouden zeggen. Maar preciezer, wat bekend als broncode. Dit is de taal die de mens schrijven dat computers ultimately-- eventueel na een aantal steps-- uiteindelijk begrijpt om zo te weten hoe iets te doen. Dat zag je een glimp van dit misschien op woensdag. Dit is een voorbeeld dat ongelooflijk, underwhelming wanneer deze wordt uitgevoerd zegt eenvoudig "Hello World". En het is geschreven in een taal genaamd C, die syntactisch vergelijkbaar een heleboel andere talen die u misschien niet weet, maar misschien van gehoord hebben, zoals Java, en C ++, en Python en Ruby, en dergelijke, en inderdaad, we een groot deel van het semester met behulp van C, en vervolgens naar het einde van de semester, voortbouwende, en de invoering van eventuele aantal andere talen. Onder hen PHP en JavaScript, een databasetaal genaamd SQL. Maar met C, wat we zullen moeten Deze bottom-up begrip precies hoe computers werken, wat u kunt doen met hen, en hoe je problemen op te lossen des te effectiever deze gelaagdheid die we besproken op woensdag, en staan op de schouders van anderen. Maar meer daarover te komen. Vandaag kijken we naar een eenvoudiger omgeving, maar een fundamenteel identieke milieu bekend als Kras door onze vrienden aan het MIT Media Lab. Dit is een grafische programmeertaal, Scratch, waarbij je kunt slepen en drop dingen die uitzien als puzzelstukjes die Alleen als het maakt interlock logisch of programmatische zin te doen. Maar het zal ons in staat stellen hebben een gesprek over alle van dezelfde programmering fundamenten die sommigen van jullie misschien al weet, dat velen van jullie misschien niet weet niets van zonder om eerlijk te verzanden, in het intellectueel oninteressant syntax van puntkomma's, en haakjes, en citeert, en dergelijke. Dit alles, vroegtijdige op, zijn een afleiding wat interessant zijn en echt bruikbare ideeën. Dus laten we eens een snelle blik op het milieu hier, zodat je weet wat te wachten staat. En in feite, een van de spelletjes die we kan spelen zijn een paar programma's geschreven door de eigen oud-studenten CS50's. Een van hen, mezelf, ik zal dit worden geschreven in graduate school voor mij. Als ik een vrijwilliger kon nemen die bereid is om te spelen een spel voor de allereerste keer. Tuurlijk. Kom op maximaal. Hoe heet je? Publiek: Angela. DAVID J. MALAN: Angela, kom op up. Dus Scratch is uit voor een paar jaar. En toen ik in graduate school, Ik was kruis ingeschreven bij MIT, het nemen van professor Mitchel Resnick's cursus over educatieve technologieën. En we waren een van de eerste studenten in de wereld om daadwerkelijk beta Scratch-test. En mijn project was wat Angela heeft nu genadig vrijwilliger om te spelen genaamd Oscartime. Dus ik ga om verder te gaan en dubbel klik hier op het pictogram. Het gaat om het openen van een programmering omgeving die we binnenkort zullen induiken. Ik ga naar full-screen het voor Angela, hier. Ik ga naar de green te raken vlag in slechts een moment. En dan een hele hoop troep gaat uit de lucht vallen. En je gaat om de muis te gebruiken hier om daadwerkelijk te slepen en neerzetten de prullenbak in Oscar's vuilnisbakken. Dus als je wilt gaan en klik op de groene vlag, zal het spel beginnen. [Muziek] Oh, ik hou van afval. Iets vuil of smerig of stoffig. Iets haveloze of verrot, of roestig. Ja, ik hou van afval. Als je echt wilt zien iets trashy, kijk naar dit. Ik heb hier een sneaker dat is aan flarden en versleten. Het is allemaal vol gaten houdt en de veters zijn gescheurd. Een geschenk van mijn moeder de dag dat ik geboren werd. Ik hou ervan omdat it's-- DAVID J. MALAN: --green deze dagen gewoon te gooien alles in de prullenbak. En dus wat één van CS50 eigen personeel did-- Jordan, die je misschien voldoen today-- heeft eigenlijk Deze update voor tijden van vandaag. En zo sta me open te stellen een remix plaats voor Angela. En we zullen deze plaats spelen een paar momenten, waar je nu bent zullen moeten kiezen tussen of om iets in de prullenbak te gooien, of recyclen of composteren het. Dus er is een beetje druk op je te krijgen dit recht in de voorkant van je 392 tot 497 klasgenoten hier in de zaal, als je dat zou doen. [VIDEO AFSPELEN] [Muziek] Oh ik hou prullenbak. Iets vuil of smerig of stoffig. Iets haveloze of verrot of roestig. Ja, ik hou van afval. Als je echt wilt zien iets trashy, kijk naar dit. Ik heb hier een sneaker dat is aan flarden en versleten. Het is allemaal vol gaten en de veters zijn gescheurd. Een geschenk van mijn moeder de dag dat ik geboren werd. Ik hou ervan omdat het afval. Oh, ik hou van afval. Iets vies of smerig of stoffig. Iets haveloze of verrot of roestig. Ja, ik hou van afval. Hier is wat meer rotte dingen. Ik heb hier een aantal newspaper-- [END AFSPELEN] DAVID J. MALAN: --are daadwerkelijk composteerbaar. Maar dank aan onze vrijwilligers, Angela. We hebben een stress-bal voor u hier ook. Dus dank je wel. Zo werd deze door mij geschreven. Maar nu een voor een echte oud-student die dit uitgevoerd, dat een spel. Alle in deze taal genoemd Kras, dat we binnenkort afpellen van de lagen. Maar als we zouden like-- hoe over een andere vrijwilliger? Rechts. Kom op maximaal. Hoe heet je? Oogopslag? Lance. Lans, kom op. Leuk je te ontmoeten. Kom op deze manier. Dus dit zou een hebben thema bekend om een ​​aantal van jullie. Maar je zult ook zien dat er kunnen interactiviteit zijn, waarbij je eigenlijk zou kunnen zijn de rol van het karakter bewegen. Leuk je te ontmoeten. David. Ik geef je, Pikachu. Instructies over komen op het scherm. Maar in het kort, je gaat willen de lekkere dingen te vangen, en te voorkomen dat de bommen en andere dingen. Met de cursors geheel. Zo raakte de spatiebalk. -Pikachu. DAVID J. MALAN: Catch het spul aan de linkerkant, niet de spullen op het recht om niet te vangen. [Muziek] Dus een laatste hier. Als we één konden meer vrijwilligers hier. We dachten dat we iets zouden herscheppen van-- in de gele shirt-- van woensdag. Hoe heet je? Mary, kom op maximaal Mary. En herinner op woensdag we geïntroduceerd de notie van binaire en binaire bollen. Dit is nu een echt toepassing van dezelfde interface- dat we op de iPad met het licht bollen, maar hier digitaal teruggegeven. En dan doe een stress- ball-- leuk je te ontmoeten, David. Wij brachten een paar lichte bollen van Cambridge. Als je kunt klikken op die bollen om ze aan en uit zetten, komen met de binaire vertegenwoordiging van zeg 256. En je zult zien in de midden, de huidige telling. Zodat men er op. Zodat de meest linkse bit is. MARY: Ja, [onverstaanbaar] DAVID J. MALAN: Nou, dus we hebben gewoon-- oh. Dus dit is de kolom 128. Dus we zijn tot 128. We kregen tot 256 te krijgen. En u kunt sleutelen aan en uit, geen big deal. Of je kunt raken, dat 128 keer als je wilt. Oké, goed. 24. Ja, steeds dichterbij. Dichterbij! Oh, wat is het probleem dan? Dus wat is het probleem? Dus wat hebben we nodig om dit probleem oplossen? Dus we nog een stukje nodig. Dit is volkomen redelijk in werkelijkheid, toch? Als u wilt tellen van het aantal 1 2 tot 3 4 tot 5, 6, 7, 8, 9 om daadwerkelijk te rollen tot 10, je bent zal een extra bits nodig. Dus laten we eigenlijk terugspoelen hier, en komen met-- dat was natuurlijk bedoeld om een ​​set-up te zijn. Je kunt niet doen 256 met slechts een lamp. Dus hoe zit gewoon de nummer 50? Nummer 50. Excellent. Een groot applaus voor Mary en haar ook. Dankjewel. Dus dit topic-- opzettelijke als dat was-- daadwerkelijk zal terugkeren. De grootste waarde die u kunt vertegenwoordigen met acht bits of een byte, inderdaad 256. Maar niet als je begint geteld vanaf 0, zoals we lijken te blijven doen door het hebben al die stukjes af. Maar laten we nu duiken in de onderliggende uitvoering van deze omgeving, en plagen elkaar een aantal van deze ideeën. Dus we in een ogenblik staan ​​op het punt om een ​​te zien paar verschillende programmering fundamentals. De eerste daarvan noemen we statement. Soort van werkwoorden, als je wil. Acties. Dingen die moeten worden gedaan. En op een moment dat je zult zien blokken die er zo uitzien. Zeg "hello wereld", bijvoorbeeld. Of wacht een seconde. Of speel geluid meow. En inderdaad het milieu die we gaan om dit te doen heet Scratch. En als ik trek Scratch zonder voorspanning een daadwerkelijke code, laten we eens een snelle blik op deze gebruikersinterface zogezegd. De controles waarmee we met elkaar omgaan. Op de top hier links van de scherm, onder de menu's, we hebben het podium, om zo te zeggen. Dus Scratch is wat we Sprite zullen noemen. Het is een teken. Hij kan worden geregeld door het schrijven van programma's tegen hem. En hij zal in staat zijn om op en neer te bewegen en links en rechts in deze omgeving, niet alleen door het verplaatsen van de muis, maar programmatisch. Ik kan u vertellen hem rechts lopen, lopen links, omhoog, omlaag of iets dergelijks. En ik kan andere invoeren sprites of karakters als goed. Immers, op de bodem hier is waar zult u uw lijst met sprites zien. Op dit moment heb ik alleen , maar ik kan meer te maken, en ze zullen precies daar verschijnen. Dus als je terugspoelen voor een moment, zoals Oscartime-- bijvoorbeeld Oscar, links, de prullenbak kan, was een sprite. En het ding in het midden, de recycling bin, was een andere sprite. En de compostbak was een andere sprite. En elk stuk van vuilnis of recyclebare die werd uit de lucht vallen Ook een sprite, die elk werd individueel geprogrammeerd. Hoe doe je het programma? Nou, hier rechts kant is de scripts gebied. En dit is waar we kunnen slepen en neerzetten puzzelstukjes. In een week, gaat het om waar we equivalent code schrijven met meer van een toetsenbord, maar vandaag het zal slepen en neerzetten puzzelstukjes, de paletten die kunnen allemaal hier worden gevonden in het midden. Inderdaad, in het midden Hier is er een hele hoop categorieën van de puzzel stukken of blokken. Men heeft te maken met de beweging, kijk, geluid, een pen op en neer gaan, data, evenementen regelen. Niet helemaal zeker nog Wat al deze betekenen, maar je zult zien dat ze hebben is mooi ingedeeld. En om een ​​programma in te schrijven Kras, laten we precies dat. Ik ga om te beginnen onder Gebeurtenissen, en sleep hier deze. Wanneer groene vlag geklikt. Nu waarom dat? Goed herinneren dat onze vrijwilligers kwam, het eerste wat ik of ze deden was klik dat groene vlag in de rechter bovenhoek. En dat betekent het programma te starten. Dus toen die gebeurtenis gebeurt, wat wil ik doen? Ik ga om te gaan onder Looks, en ik ga doen "hallo te zeggen." En ik ga om dit te veranderen en iets zeggen als "hallo Yale." En nu ga ik om in te zoomen out, klikt u op de groene vlag, en voila, heb ik een programma geschreven. Het is niet allemaal zo spannend gewoon nog niet, maar dit precies waar elke van die auteur begonnen, beide met Pikachu, en de binair bollen en Oscartime, en zo veel meer voorbeelden. Je begint super eenvoudig, en dan moet je beginnen te laag, en add-on functies en functionaliteit. Dus wat zijn deze lagen gaat uit? Nou, dan verklaringen, zullen we ook hebben dingen die weinig meer fancily genaamd Boolean Expressions, nadat iemand genaamd Bool. En een Booleaanse uitdrukking is gewoon een uitdrukking dat is waar of onwaar, ja of nee, 1 of 0. Elke tegenpolen als dat. Het is waar of niet. Maar we ook gaan zien degenen die zouden kunnen uitzien. Zo is bijvoorbeeld de muis naar beneden? Ze zijn soort vragen, als je wil. De muis is ofwel naar beneden, waar of het is niet vals. 1 of 0, als je wil, neigt de mapping. Waar is 1, vals is 0. Tja, wat over minder dan dit? Of zo, dit is minder dan dit? Dat is een kwestie van soorten. En als je twee getallen daar, ofwel x gaat minder dan y of zijn y gelijk is aan of groter dan y, maar dit blok we zullen zien, is gewoon gaat om de vraag te beantwoorden, Hierdoor kleiner dan? We kunnen ook iets als dit. Aanraken muisaanwijzers. Dus in Scratch, kunt u vragen de vraag, is de Sprite aanraken van de muis? Met andere woorden, is de cursor zweven over de kap, of het equivalent? We zullen Anding dingen samen. U kunt twee vragen stellen, en Zorg ervoor dat beiden geef je ja of echte antwoorden vóór het maken van een beslissing om iets te doen. Maar hoe doe je beslissingen te nemen? Nou, we hebben deze voorwaarden. En we zagen dit in onze voorbeeld van het telefoonboek. Op zoek naar links of recht voor Mike Smith. En in de staat, u iets doen potentieel, als een Booleaanse expressie waar is. En inderdaad, ziet nu de vormen. Er is dit placeholder nu het bovenste deel waar we fit-- als ik terugspoelen een slide-- die vorm. Het is niet helemaal dezelfde grootte. En inderdaad, zult u zien dat Kras resizes dingen dynamisch te passen puzzel stukjes, maar de vorm is wat belangrijk is. Dit ding ziet eruit als dat, en inderdaad is ruwweg dezelfde vorm die moet er passen. En als we iets willen doen deze manier of op die manier, als anders, hebben we deze puzzel stuk in Scratch ook. Stel nu dat je wilde doen als, anders als, of anders. Met andere woorden, een drie-weg splitsing in de weg. Tja, wat kan je doen alleen door een blik op deze? Ik kan dit puzzelstukje te nemen, en het lijkt niet te passen, maar nogmaals, Scratch gaat re-size mooi voor ons. Ik kon beginnen te laag deze dingen samen. Dus nu heb ik een drie-weg vork als dit waar is, doe dit. Anders als dat andere ding is waar, gaan op deze manier, anders gaat dit andersom. En in The Muppet Movie, de splitsing, zogezegd, tussen Yale of Stanford, was precies dat, slechts twee voorwaarden. Ofwel gaan op deze manier, anders te gaan op die manier. Nou, lussen bestaan ​​ook in de programmering. En we hebben deze al in gebruik klasse en in pseudo-code, en zeker in die Kras programma altijd. Scratch heeft dit puzzelstukje dat gewoon laat je altijd iets te doen. En soms wil je voor altijd iets te doen. Het is niet per se een bug, het is want je wilt een klok te blijven gaan, of een spel te blijven spelen. Of u kunt een eindig aantal opgeven stappen, zoals met deze herhaling blok hier die iets zal herhalen 10 keer. We kunnen variabelen, zullen we binnenkort zien. En met variabelen, vergelijkbaar in de geest algebra, zoals x of y of z. Het is iets symbolisch dat kan opslaan enige waarde, een stukje informatie, die je zou willen om te onthouden voor later. Beste voorbeeld hiervan zou kunnen zijn een spel waar je een score, zoals in Pikachu. Hoeveel stukken taart en wat al niet heb je op te vangen? Nou, dat is misschien een variabele riep score die begint bij 0. En dan elke keer als we een gevangen stuk taart of snoep, of iets dergelijks, het wordt opgehoogd. Het wordt toegevoegd aan één tegelijk. En dus een variabele slaat een stukje informatie als dat. Dan is er arrays, en we zullen komen terug deze een week of twee keer, maar een reeks is net zoiets als een inventaris of een tas, binnen van waaruit u kunt virtuele spullen te zetten. Hiermee kunt u meer op te slaan dan een stukje informatie. En dat nuttig zou kunnen zijn indien in het spel, je bent soort rondlopen dingen oprapen. En misschien wilt u te houden al die stukjes van de taart rond, en niet alleen te eten ze een na de ander. En dan is er een liefhebber construct we zullen komen om de naam of procedures. En hoewel we gaan sneller hier, zullen we zien dat dit een zeer natuurlijke oplossing voor de problemen dat we gaan tegenkomen. Als onze programma's starten groter we zullen gaan patronen bericht in de code die we schrijven, de puzzelstukjes we slepen en neerzetten. En zodra je jezelf ziet doen iets opnieuw en opnieuw, of nog erger kopiëren en plakken programmering code die je hebt geschreven, dat is waarschijnlijk een gelegenheid om factor uit wat je ook kopiëren houden en plakken, en zetten het in een zogenaamde "functie." Maar meer op die in veel meer detail het duurde niet lang. En dan is er nog liefhebber functies. Voor degenen onder u meer comfortabel, of het nemen van APCS of gelijkwaardig, Kras eigenlijk ondersteunt dingen zoals draden en evenementen en meer. Dus beseffen dat het heeft een vrij hoog plafond, ook al is het ook zeer breed toegankelijk voor mensen die nog nooit eerder hebt geprogrammeerd. Dus inderdaad, laten we eens een kijkje een eenvoudig programma of twee. We hebben al gekeken naar hoe we misschien zeg hallo met Scratch. Laat me gaan en open te stellen een beetje meer interessant programma dat schreef ik op voorhand. En deze is genoemd het Huisdier van de Kat. Al deze programma's zullen worden beschikbaar op de website CS50's. Inderdaad, er al. Dus je kunt downloaden hen, en met hen spelen, en met Probleem Set 0, die is ook op de website van de cursus, u aangemoedigd om te lopen door deze. En bovendien hebben we een aantal walk-through video online waarin ik en CS50's team echt lopen door elk van deze voorbeelden op een veel langzamer tempo, een zeer snelle forwardable, of herwikkelbare tempo, zodat je kunt lopen door deze op uw gemak ook. Dus hier is Kras aan de linkerkant. Hier is een programma op het juiste dat heb ik al vooraf gemaakt. Dus laat me inzoomen op dit. En kan iemand in het Engels, wetende wat je weet, maar vanaf nu als hoe Scratch werken, een soort van zeggen in een Engels zin of zin wat heeft dit programma blijkbaar doen? Ja, in oranje shirt. PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Ja, als je cursor op Kras van de kat, spelen een miauwen geluid. Maar zien hoe we uitdrukken. Er is blijkbaar een lus er, voor altijd. En dan is er een staat, indien de uitdrukking. En collectief, wat deze betekenen? Betekent dat programma is gewoon altijd actief, en het is gewoon altijd wachten en kijken en luisteren voor mij om mijn muis over de kat. Want elke keer als ik dat doe, als u voorstelt, het gaat om dit te doen. Laat me het programma te starten. Niets lijkt te zijn gebeurt, maar merken hoe het is nu gemarkeerd in een gele lijn. Dat betekent gewoon dat het draait. En omdat er een eeuwig lus, het is nog steeds actief. Dus laat ik mijn cursor over Scratch. [MEOW] [MEOW] En als ik beweeg het af, [MEOW] nu het stopt, maar de programma's nog steeds actief. [MEOW] En zo schattig. [MEOW] Dus laten openen iets meer geavanceerde Zo noemde Laat de Cat geen huisdier. En laten we nu zien wat hier gebeurt. [MEOW] miauwen. Dus het is een beetje aan automatische piloot, als je wil. --pet de kat. Ik vraag me af waarom. [ROAR] [MEOW] Dus hoe heeft dit werk? Nou, je kunt voor reden doorheen intuïtief, misschien. Maar laten we eens kijken naar de eigenlijke code. Dus nogmaals, toen de groene vlag wordt geklikt, doe dit altijd. Wat wil je voor altijd doen? Nou, als ontroerend muis wijzer, dan spelen een geluid dat blijkbaar heet Lion 5, dat is de binnenkant van dit project, anders spelen geluid miauw, en wacht vervolgens twee seconden, dus dat het niet onophoudelijk miauwen. In feite, kunt u heel snel aan de slag uzelf en uw huisgenoten ergeren. Laten we het verwijderen van dit blok. En let op wat er leuk is aan Scratch. Dingen gewoon soort drag en drop en interlock. Dus nogmaals, het groeit op invullen wat je wilt. Maar als ik dit te verwijderen, en vervolgens hit spel, [COMPUTER BLIP SOUND] --Het is een soort van struikelen over zelf, omdat het letterlijk doen wat ik zeg. Het zegt altijd spelen dit geluid, maar Ik geef het een kans om te voltooien. En dus dat zou een fout zijn. En dat is waarom we hadden dit ding hier nu. Dus laten we daadwerkelijk beginnen van scratch-- soort van woordspeling iets intended-- waar hebben we nu de kat zet. Dus ik ga om dit te doen op de vlieg. Ik ga hier in te zoomen, net om me begon op Events. En groene vlag geklikt. En er is een andere manier de scripts starten. We gaan het hier eenvoudig te houden. En nu ga ik om te gaan vooruit en ga onder controle. En nogmaals, als je vergeet waar dingen worden, klikt u gewoon rond, en uiteindelijk je ze terug te vinden. Dus ik wil voor altijd doen wat? Ik wil de beweging blok gebruiken dat ik weet bestaat, bewegen 10 stappen. Dus laten we zien wat er gebeurt hier als ik dit spel te spelen. Gelukkig het niet te ver gaan. Ik kan nog steeds hem soort grijpen bij de staart en trek hem terug. Maar het programma is nog steeds actief, dus hij is een soort van de strijd tegen mij. Maar het zou wel leuk als ik Dit voorwaardelijk op te lossen in de code. Want dit is niet-- eigenlijk is dit werkelijk niet een leuk spel voor iedereen van alle leeftijden. Dus laten we proberen om dit op te lossen door over een zekere omstandigheden. Dus ik ga om te gaan onder Controle, en dan als. Ik hou van dit idee. Dus na het verplaatsen van 10 stappen, if-- laat me voelen, waar ik ben. Ik ga om te gaan onder Sensing, en dan het lijkt Ik kan hier gaan. rij naar de wedstrijden vorm. Grootte is het niet, maar het is gaan groeien te vullen. En nu dit is een klein menu. En nu muis pointer-- ik niet willen dat de muis, ik wil de rand. Dus Scratch is slim genoeg om te weten wanneer een sprite raakt de rand. Wat wil ik hem eigenlijk? Laat me gaan en te veranderen beweging. Weet je wat? Ik ga hem omdraaien. Dus bij 15 graden is niet echt om me te helpen. Ik wil hem om te draaien en ga de andere kant op. Dus laten we zien wat er gebeurt hier, als ik raakte Nu spelen. OK, soort dom kijken, maar het doet precies wat ik zei. En het draaien van de hele sprite. Nu blijkt dat ik kan dit oplossen. En ik wist niet hoe om dit te bevestigen op het eerste. Ik had soort rond futz en zie de beste manier om dit te doen. Maar als ik ga to-- laten zien beweging. Oh, ik vond dit. Eigenlijk, Set Rotation Stijl. Links, rechts, of niet roteren of rondom. En het blijkt dat is wat ik wil. En ik ga dit te zetten is mijn lus, omdat ik niet hoeft in te stellen de rotatie style meerdere keren. Ik ga zet het op de top van Dit programma, zodat het een keer wordt ingesteld, en dan onthoudt. En nu ga ik om dit opnieuw te proberen. Laat me het programma te stoppen. En nu vast dat bug. Dus ik ben iteratief te verbeteren op deze. Het programma krijgt een iets ingewikkelder en groter, maar ik ben het nemen van kleine stapjes om zo te zeggen, en kleine hapjes uit de problemen om het beter en beter. Maar dit ook, is een beetje lame. Weet je wat? Zou iemand te vragen met een echt goede, vreselijke stem willen komen? Iemand met een stem. Uh, ja. Kom op maximaal. In het groene shirt. Dus het blijkt dat er een aantal andere leuke dingen, esthetiek en geluiden gelijk. Hier is de miauw. Ik klik op het tabblad Geluiden. [MEOW] Er is de miauw. [MIAUW MIAUW] [MEOW] --actually iets opnemen hier onze eigen. Dus laten we het doen precies dat. In plaats van het gebruik van deze kat geluid, laten we ga je gang hier, en wat is uw naam? Nick, leuk je te ontmoeten. Het is David. Dus in een moment, ga ik om de opnameknop te raken. En als je kunt gewoon schreeuwen in de laptop, "ouch," alsof je liep gewoon in de muur, dat zal zeer worden gewaardeerd. 1, 2. NICK: Ouch! DAVID J. MALAN: Awesome. En kan nu een beetje te bewerken doen hier. Gaan om zich te ontdoen van de rustige delen te krijgen. En ik denk dat is goed. Hartelijk bedankt. NICK: Pleasure. DAVID J. MALAN: Ik heb net noemde het "ouch," maar nu ga ik ga terug naar mijn scripts. En let er inderdaad geluid hier. En ik ga om verder te gaan en speel het geluid ouch, en ik ga doen als het is alleen het aanraken van de randen. En dan ga ik laten omdraaien. Dus laten we eens kijken wat er hier gebeurt. Laten we het volledige scherm. [VIDEO AFSPELEN] -Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! [END AFSPELEN] DAVID J. MALAN: Dus je beseft dat we een beetje geluk hebben. Ik ga hem hebben move zoals 100 treden tegelijk. Het gevolg hebben nu gaat om [computerstoring SOUND] be-- So binnen reden. Dus een kans om te verfijnen dat verder als we echt willen. Dus laten we nu introduceren een ander concept. Om me te laten gaan in een zogenaamde Schapen en gebruik iets tellen genoemd variabel. Dit is een schattige kleine schapen, en Ik veranderde zijn kostuum zo te zeggen. Dus ook al is de standaard is een kat, kunt u uploaden, je kunt tekenen, kunt u een aantal te doen personages op je sprite. Hier is een programma dat is gaan om wat te doen in het Engels? Weer gebaseerd op wat je nu weet. Wat is dit programma doen? Ja, het gaat om te tellen. Één nummer tegelijk. We hebben blijkbaar hebben deze set teller. Ik weet niet wat dat is, maar misschien is het een variabele. Het is gewoon een container, x of y. Maar het woord teller meer beschrijvende dan x of y wiskundige's. Dus we kunnen Engels woorden te gebruiken voor dingen. Altijd, betekent gewoon blijven doen. Zeggen teller. Nu waar komt dit vandaan? Nou, het blijkt dat balie is een variabele. Dus het is gewoon een andere puzzel stuk dat ik gemaakt op voorhand. En hoewel het gebeurt niet dezelfde vorm hier, normaal gesproken zou je zeggen zoiets hallo hier. U kunt ook een variabele slepen dus dat is wat we krijgen gezegd. Dan wacht ik voor een tweede, ik verander de teller met één, verhogen door het toevoegen van een. Zodat het netto-effect deze schattige tellen schapen. Hoewel hij zichzelf te tellen. Nu is het zeer snel gaan vervelen want hij gaat doe dit echt voor altijd, maar dat is precies wat de ontwerp-programma's schrijft. Laten we nu proberen een ander voorbeeld dat maakt gebruik van een variabele. Deze zogenaamde Hi Hi Hi, dat krijgt snel vervelend. Nu deze heeft twee scripts. En dus nogmaals, we nemen kleine stapjes. We zijn begonnen met iets super klein, toegevoegd, toegevoegd. Nu wil ik iets doen nog dynamischer, dus ik wil luisteren naar twee verschillende dingen tegelijk. Dus aan de linkerkant, bij groene vlag wordt geklikt, Ik stel een variabele die ik schreef tevoren genoemd Gedempte. En ik willekeurig instellen op 0. Dus Scratch hoeft niet waar te hebben en vals, maar het heeft wel de 0 en 1. Dus ik kan dat hetzelfde idee te benaderen. En dan voor altijd, als de spatiebalk is ingedrukt, dan stelt u de variabele op 0. Of spijt. Als de ruimte wordt ingedrukt, en indien gedempt, de variabele is 0, vervolgens gedempt tot 1, anders ingesteld gedempt op 0. Dit lijkt een beetje zoals we gewoon doen en ongedaan maken van het werk. Maar wat is het effect? Elke keer als ik druk op de spatiebalk, Wat gebeurt er met mijn variabele genaamd gedempt, logisch? Soort wordt omgedraaid. Het verandert 0-1 of 1-0. Dus het duurde een paar blokken om uit te drukken dat, maar alle Ik doe verspringt de staat Deze variabele 0 of 1 of 0 of 1 elke keer als ik druk op de spatiebalk. Nu hier, wat is dit? Altijd, als gedempt is 0, dus als gedempt is vals. Dus als het niet gedempt, is de semantiek daar, spelen geluid zeeleeuw, en denk Hi Hi Hi voor twee seconden, twee seconden wachten. Nu deze zo merken scripts zijn effectief gaat lopen parallel, zodat men kan luisteren naar een beroep andere om een ​​beslissing op basis van die actie te maken. En het kan dit altijd doen. [ZEELEEUW ONTSCHORSEN] [ZEELEEUW ONTSCHORSEN] Het gaat om dit altijd te doen en [ZEELEEUW ONTSCHORSEN] zoals ik heb net gedaan. En nu is het nog steeds actief maar ik heb "gedempt" het spel. [ZEELEEUW ONTSCHORSEN] En dat is Alle deze man doet nu ook. Laten we een ander voorbeeld te openen hier. Laat me gaan in Events, en nu dit schattige ook. Maar let op het heeft twee sprites. Dus niet alleen twee scripts één sprite, maar twee sprites. En als ik klik op de blauwe jongen zoals ik al hebben, zie ik dat hij als één programma hier dat letterlijk zegt dit, wanneer ik een gebeurtenis, zeggen "Polo" voor twee seconden. Dus als je ooit hebt gespeeld in een zwembad, het spel Marco Polo, Als de oranje man script een indicatie, blijkbaar elke keer als ik druk op de spatiebalk, wat is de oranje man gaan doen? Hij zal zeggen: "Marco." En dan is dit een nieuw blok. We hebben dit niet eerder gezien, maar zenden een evenement. En ik zou kunnen noemen event wat we willen. We zullen hierop terugkomen misschien het duurde niet lang. Maar het uitzenden van een evenement is een manier voor een sprite naar de andere om te praten door wezen doorgeven van een bericht. Het is niet een bericht dat u ziet. Het is niet iets visueel. Het is een soort van een computer bericht dat de andere man luistert voor. Want inderdaad, de blauwe jongen, recall niet wanneer groene vlag geklikt. Hij in plaats daarvan heeft, wanneer ik een gebeurtenis. Wanneer hij overhandigde deze nota in de klas, zo te zeggen, zou hij zeggen: "Polo." En dus het netto-effect is dat wanneer ik druk op de groene vlag, gebeurt er niets. Maar toen ik raakte de spatiebalk, zegt hij "Marco," antwoordt hij met "Polo." Maar de enige sprite ik ben interactie met de oranje. Dit is dus een manier soort het doorgeven van berichten tussen de sprites en met hen te communiceren met een ander. Laten we nu eens kijken naar een laatste die hier genoemd discussies. En merk je door het spelen van het. Dus deze twee sprites. De vogel is een soort van vliegen in het rond. Hij is stuiteren. Er is geen "ouch", maar hetzelfde idee. Maar de kat lijkt behoorlijk slim. Wat is de kat blijkbaar aan het doen? En wachten. Wat is de kat blijkbaar aan het doen? Het is niet alleen stuiteren. Hij volgt de vogel. En dus blijkbaar, er is een manier met een combinatie van blokken hier-- en laten we eens kijken naar de kat echt snel. Altijd, als vogel te raken, dan spelen het geluid Lion 4, wat dat ook is. We hoorden het eens. Anders is, wijzen in de richting vogel, en ga een stap. Nu dat het een stap is wat de vogel geeft een beetje een voordeel in eerste instantie, maar als we in plaats daarvan maken deze 10 bijvoorbeeld zo dat elke iteratie van de lus is hij bewegende 10 stappen van de tijd. Dus meer ruimte. Laten we eens kijken wat er dan gebeurt. [LION ROAR] Niet dat alles veel beter. Dus laten we nu proberen te verbeteren op deze een beetje iteratief, en kom terug naar die begrip functie. En inderdaad een van de fundamentele afhaalrestaurants van de klasse ontwerp. Niet alleen het schrijven van programma's die werken en dat juist zijn, maar zijn goed ontworpen. En het ontwerp is veel meer subjectief, en je zult beter in te krijgen in de tijd. Maar laten we eens wat baby stappen in de richting beginnend met een programma dat werkt, absoluut, maar het is niet erg goed. Het is niet erg goed geschreven. Dus hier is een programma dat dit doet. Hoesten, hoesten, hoest. Hoe ziet het programma eruit? Ziet er goed voor mij. Het zegt de bank voor een tweede, dan wacht. Dan staat er weer, dan wacht. Dan staat er weer, dan wacht. En dan is het programma impliciet eindigt, omdat er geen lus. Maar waarom is dit een slecht geschreven programma? Zelfs als je nog nooit hebt geprogrammeerd? Zoals, wat wrijft de verkeerde manier, misschien hier? Ja? PUBLIEK: [onverstaanbaar] DAVID J. MALAN: Precies. Je herhalen je opnieuw en opnieuw. En letterlijk, ik gekopieerd en geplakt twee weer die blokken. En dat is precies het soort van gezond verstand Controleer dat je moet maken. Even wachten. Moet ik dit echt doen? Dus wat is dit wat is het voor de hand liggende oplossing misschien? Een soort van lus. En ik niet helemaal herinneren wat de puzzel stuk is, maar als ik kijk naar de volgende iteratie hier inderdaad, er is niet alleen de eeuwig lus, er herhalen bepaald aantal keren. En dus heb ik drie gespecificeerd. En nu merken hoe veel strakker, hoe veel meer beknopte dit programma is. En in zekere zin, hoe veel meer onderhoudbaar. Als ik het woord wilt wijzigen van hoest naar iets anders, zoals achoo, alsof hij niezen. Dan veranderen I in een plaats, en niet drie. Dus dit al voelt iets beter ontwerp. Laat mij in plaats geopend hoest 2, onze derde voorbeeld. Merken als een computer wetenschapper, Ik begin te tellen bij 0, meestal. Nu is dit ziet er een beetje enger op eerst, maar het effect is hetzelfde. Hoesten, hoesten, hoest. Maar wat lijkt fundamenteel te zijn nieuw in het bovenste deel van het programma? Ik heb het woord verwijderd. Ik heb het wachten verwijderd. En wat heb ik gestopt in plaats daarvan? Een functie. Een hoest blok. Ik bedoel, eerlijk gezegd, ik schijn soort van een idioot als ik niet alleen beginnen met het blok dat is blijkbaar geroepen "hoesten," als dat is alles wat ik wil hem te doen. Maar dat bestaat niet in de Scratch. In plaats ging ik naar een in de palet genoemd Meer Blocks hier en ik sleep deze grote paarse ding hier dat laat me een functie te definiëren. Het laat me wezen creëer mijn eigen puzzel stuk dat ik iets kan worden genoemd willen, kan dat alles wat ik wil doen, maar het geeft het een naam. Het geeft me een nieuwe, paarse puzzelstukje dat nu doet wat ik zeg dat het doet. Dus deze paarse stuk hier correspondeert met hier. En wat doet het? Het zegt hoesten voor een tweede, en dan wacht. En nu heb ik een soort van gemaakt mijn eigen aangepaste puzzelstukje, zodat het zich gedraagt dat precies dezelfde manier. Dus ik kan blijven doen. En inderdaad, er zullen meer en meer mogelijkheden voor modularisatie, en lagen, complexiteit boven elkaar. Maar dit basisidee, inderdaad probleem zei 0. Wat je gaat worden uitgedaagd om te doen is naar Scratch downloaden, of gewoon te gebruiken op het web, en gewoon veel plezier ermee. Wij zullen u een set te geven eisen heeft geluid, en sommige aantal puzzelstukjes. Maar je zult dit precies te doen. En je zult beseffen dat je gaat wil een aantal kleine stapjes in eerste instantie te nemen, totdat je programma krijgt steeds complexer. Maar gezien is dit de beste manier kon ik dit doen? Kan ik voorkomen dat dit instinct misschien, kopiëren en plakken? Maar voordat Probleemverzameling 0, en voor we verdagen, dacht dat we zouden nemen een meer vrijwilligers als we konden, voor een definitieve programma dat is misschien wel de meest fitting helemaal niet, gezien locatie van vandaag. Kom naar beneden. Ja. Ja. Hoe heet je? Oh Oh. Dat is goed. Zowel naar beneden komen. En ik heb zal omgaan met deze of andere manier binnen deze tien seconden. Dus kom naar beneden. Kom naar beneden. Laat me kom hier. Kom op. Prima. Laten we eens kijken hier. Zo merkt echt snel hier, als je wilt om op te komen. We zullen twee rondes van dit te doen. En hoe heet jij? SABRINA: Sabrina. DAVID J. MALAN: Sabrina en? YING GEE: Ying Gee. DAVID J. MALAN: Ying Gee. Leuk om jullie beiden te ontmoeten. David. Dus onze laatste voorbeeld is hier riep Hardest Game Ivy's. En waarom niet wij u Niveau 1, en je doet niveau 2. En we zullen zien hoe ver verder dan dat we eigenlijk gaan. Geschreven door een student vorig jaar, geremixed door mij zodat deze zou gaan meer dan goed in New Haven. En ik geef je een spel dat gaat betrekken verplaatsen van de pijlen omhoog en omlaag, en het krijgen van Yale naar de finish. Daar gaan we. [VIDEO AFSPELEN] [MUZIEK - NFL OP FOX themalied] [MUZIEK - MC Hammer, "U KAN NIET AAN  DEZE"] -U Kunt dit niet aanraken. U kunt dit niet aanraken. Kan dit niet aanraken. Mijn, mijn, mijn, mijn muziek raakt me zo hard, maakt me zeggen, oh, mijn heer. Dank u voor de zegen mij met een erg om rijm en twee hype voeten. Dat is goed als je weet dat je naar beneden. Een super dope homeboy van de Oaktown. En ik ben als zodanig bekend en dit een beat uh, kun je niet aanraken. Ik vertelde u gewillig U kunt dit niet aanraken. Ja, dat is hoe we leven en je weet dat U kunt dit niet aanraken. Kijk in mijn ogen, man. U kunt dit niet aanraken. Yo, laat me buste de funky teksten. U kunt dit niet aanraken. Frisse nieuwe kicks en broek. Je hebt het zo en je weet dat je wilt dansen. Dus uit te gaan van uw stoel en krijgen een meisje vliegen en vang deze beat. Terwijl het rollen greep op te pompen een beetje bit en laat hen weten wat er gaande is. Zoals dat. Zoals dat. Koud op een missie dus trekken op de rug. Laat hen weten dat je te veel hebt en dit is een stap uh je niet kunt aanraken. Yo, vertelde ik u U kunt dit niet aanraken. Waarom sta je daar de mens? U kunt dit niet aanraken. Yo, klinkt de bel school in, sukkel. U kunt dit niet aanraken. Geef me een lied, een ritme waardoor ze zweet, dat is wat ik hen nu. Ze weten wanneer je praat over de Hammer je praat over een show die is hyped. En strakke zangers zijn zweten dus geef ze een microfoon. Of een tape om te leren wat het gaat nemen en nu hij gaat de hitlijsten te branden. Legit ofwel werken hard of je net zo goed stoppen. Omdat je weet U kunt dit niet aanraken. U kunt dit niet aanraken. Af te breken. Stoppen. Hamer tijd. Ga met de stroom in een spin als je niet kunt bewegen om dit dan heeft u waarschijnlijk zijn dood. Dus zwaaien je handen in de lucht [onverstaanbaar] Dit is het voor een winnaar dans dit en je gaat om dunner te krijgen. Verplaatsen schuif uw romp alleen voor een minuut laten we allemaal de bult. Ja. U kunt dit niet aanraken. U kunt dit niet aanraken. Je kunt beter hyped jongen U kunt dit niet aanraken. Aanbellen school opnieuw in. Af te breken. Stoppen. Hamer tijd DAVID J. MALAN: Dat is het voor CS50! Hartelijk dank voor het samenvoegen van ons! Zie je buiten. [END AFSPELEN] [VIDEO AFSPELEN] [MUZIEK - "SEINFELD" theme song] Hé David. Hé, David. Hoe gaat het? -Goede Baan, vandaag. -dus Heb je nagedacht over wat je gaat doen voor de grappen? Nee, ik heb niets. -Wat If-- wat als dit is de grap? -achtige, Uitpakken karren? -Uh Huh. Je weet wel, het gaat over niets. -dus Willen, geen verhaal, geen conflict, geen oplossing. Ik begrijp het niet. Waar gaat het dan over? -Niets. -dus We uit grap is over niets, en we hebben geen acteurs. Wie gaat er om in deze? -Nee nee nee. Ik bedoel, zal ik in het. -Je In het? -Ja! Mensen zijn altijd te vertellen me ik ben een personage. Nou, ik bedoel, het is waar. Maar wie anders gaat worden in het? Het kan niet gewoon je. -U Zal in het, Gavin, Dan, Dan, Colton, Z'Myla, Alysse, Doug, David, iedereen. -dus Het over niets, en iedereen zit er in? -Helemaal niets. -Dit is belachelijk.