SPEAKER: Ik ben [onverstaanbaar]. En ik ben een senior op Leverett House. Ik studeer informatica, en ik ben een TF voor CS50. Als eerstejaarsstudent, wist ik niet eens een laptop of een smartphone. Ik had geen ervaring met programmeren. CS50 was de meest memorabele cursus die Ik nam aan Harvard want het was een strijd, maar het was echt een fun strijd tegelijk. En ik een heleboel geweldige, permanent gemaakt vrienden, en ik heb veel geleerd van echt toepasselijke vaardigheden. Ik ben gewoon zo blij dat ik niet laat mijn gebrek aan achtergrond zijn een excuus voor mij niet CS50. Ik ben [onverstaanbaar]. Ik ben een senior op Leverett Huis, klasse van 2014. En ik nam CS50. DAVID Malan: Dus dit is CS50. Dit is het einde van week nul. En herinneren waar we de vorige keer begon, was bij deze lampen, waarvan zo populair dat we gingen en kocht wat meer vandaag. Dus ik denk dat dit zal zijn ons ding dit jaar - bureaulampen als je komt op het podium, tenminste tot we uitgeput. Maar we gebruikten deze recall, in te voeren de basisprincipes van de voorstelling van gegevens. We moesten manier om te beginnen wat neerkomt informatie in een computer. En de eenvoudigste manier om dat te doen is met een ingrediënt, elektriciteit. En de eenvoudigste wat je kunt doen met elektriciteit is zet hem op en het af. Laat de elektronenstroom of niet. En met behulp van deze twee fundamentele staten, off en op, of valse en ware, of nul en een, begonnen we te zien dat we kunnen bouwen up, in dit geval, met licht bollen, meer nummers dan enkel nul en een. We telden zo hoog als zeven, bijvoorbeeld, de laatste keer. Maar alles wat we moeten doen is blijven gooien meer en meer gloeilampen op dat probleem en, echt, kunnen wij vertegenwoordigen elk nummer dat we zou kunnen wensen. Nou, we overgestapt dan snel op Woensdag om deze byte van vrijwilligers. 8 bits is wat we over het algemeen noemen een byte, dus hier hadden we acht vrijwilligers op woensdag die gezamenlijk waren waarbij acht bits. En wanneer hun handen gingen up, waren een. En toen hun handen waren beneden, waren er een nul. En we hadden deze mensen komen op het podium waarom? Wat we kunnen doen met Deze opeenvolging van bits? Om een ​​alfabet maken. We waren in staat om voort te bouwen op de top van dat vorige les geleerd en eigenlijk beginnen om interessanter te maken informatie die is in ieder geval meer vertrouwd voor ons mensen. En dit gaat worden een terugkerend thema in 50, maar ook de computer wetenschap algemeen, dit idee gelaagdheid, waar, aan het einde van de dag, als je echt begonnen met de basics met een computer, ja, het is nullen en enen. En onder dat het net elektriciteit. Maar wij zeer snel beginnen met die te nemen lage niveau details voor verleend en beginnen te laag bovenop verleden werkten gedaan dat we uiteindelijk door het einde van het semester en, echt, meer in het algemeen als informatici en programmeurs, kunnen sommige echt doen krachtige dingen door gebruik te maken van het werk die we zelf hebben gedaan en ook op de schouders van anderen. Nu we al snel overgestapt op woensdag van enkel te hoeven vertegenwoordigen informatie te willen om iets mee te doen. Dus wat hebben we een algoritme definiëren als? Een reeks instructies. Dus het is een reeks instructies, een aantal stappen dat u, een mens, of een computer, liever, zou uitvoeren na elkaar teneinde enkele doel te bereiken. En we hadden een paar doelen vorige keer, waarvan een te tellen mensen in de kamer. En nog zo'n voorbeeld was te vinden Mike Smith in een telefoonboek. Dus je kan herinneren dat ik scheurde een telefoon boek in de helft van de richting van dit doel omhoog het vinden van Mike Smith. Het doel van deze visuele moest tonen, nogmaals, dat we letterlijk scheuren dit probleem in half, in half, dubbel en zeer snel gaan uit zoals 1000 pagina's om slechts een enkele pagina. Degenen van jullie die dit gemist op Woensdag, ik dacht dat we terug zouden spelen wat beelden van wat je gemist. Laten we eens een kijkje nemen. [VIDEO AFSPELEN] -Daar gaan we. 1500 pagina's, Mooie schone lijn, legitieme traan. [END VIDEO AFSPELEN] DAVID Malan: Dus dat was woensdag. We overgang, hoewel, op woensdag nu te willen algoritmes vertegenwoordigen in sommige ietwat standaard manier, niet alleen hen verbaal te beschrijven, maar proberen om ze te uiten schriftelijk of op een computerscherm, zodat we konden beginnen te verbeteren en te wijzigen hen, en, uiteindelijk, eigenlijk analyseren hoe correct of hoe snel ze waren. Zodat we dit begrip geïntroduceerd van pseudocode die in lekentaal, is wat? OK, woorden. Laten we een beetje dieper dan dat. Engels, zeker, maar zijn naar welk doel? Woorden waarmee te maken of om algoritmes te vertegenwoordigen. Dus er is geen een taal bekend zoals pseudocode in de wereld. Het is gewoon dat je, in het Engels, of wat uw gesproken taal is, gebruik een soort vluchtige notatie te brengen een idee heel bondig. Maar we zullen zien dat, zeker bij een Engels pseudocode, en het blijkt de meeste programmeertalen zelf zijn afgeleid van het Engels zelf, dan zullen we zien dat er een aantal standaard manieren die pseudocode en Ook het programmeren van code. Dus als je begint om zelfs de eenvoudigste zien voorbeelden vandaag, realiseren deze dezelfde patronen zal volgende week terugkeren. Dus pseudocode was een soort van de taal die lijkt op een programmeertaal. En het eerste voorbeeld dat we visueel zagen opgeschreven was deze. Het was slechts een drie stappen programma, de doel daarvan was het aantal tellen van mensen in een slaapzaal voor die video op woensdag. Maar er waren een paar interessante aspecten deze eenvoudige programma. En dit zal zijn terugkerende thema's. Dus voor degenen die onbekend zijn met dit, een, introduceerden we een variabele. En waarschijnlijk iedereen in deze kamer is bekend met een variabele in de context van de algebra. Maar hier in de programmering, variabelen worden, men, kan worden riep wat we willen. We gebruiken n als een teller. Maar we konden gebruik maken van het woord teller, of, zoals u zult zien, de meeste elke zin die je misschien leuk zolang het is beschrijvend, maar het is eigenlijk gewoon een opslagcontainer. Het is een stuk van het geheugen, sommige aantal beetjes, en het verschilt per computer, hoe aantal bits dat er componeren die variabele. Maar we kunnen de waarden in te doen. Tot nu toe hebben we alleen zet nummers. Maar we kunnen de werkelijke woorden te brengen. We kunnen de punten zetten. We kunnen afbeeldingen zetten - alles, echt, kunnen wij vertegenwoordigen met nullen en enen, kunnen we in zetten dit hogere niveau notie een variabele. Zo mooi daar rechtstreeks doorsturen. En dat is een lijn. Maar wij zeer snel verhuisd van lijn een om daadwerkelijk te doen iets met die variabele. En in lijn drie, we bijgewerkt N. Wij opgehoogd N. En we konden dit te schrijven een aantal manieren. Maar misschien wel de meest voor de hand liggende is gewoon om te zeggen, stelt N gelijk is aan wat N is plus 1. Dus dat was onze increment. Inmiddels was er een lus. En deze ook, is waarschijnlijk vrij intuïtief. Een lus is gewoon iets in een programma dat steeds weer gebeurt, sommige soort cyclus. En deze sleutel zin hier, voor elk, is eigenlijk heel gebruikelijk in de meeste programmeertalen, zoals die we zullen zien in de cursus. Wanneer zie je het woord voor, het brengt typisch het idee dat een lus, iets cyclisch, staat te gebeuren. Maar het is vermeldenswaard een andere syntactische detail. Het feit dat de derde lijn er daadwerkelijk door te hebben raakte de ingesprongen spatiebalk paar keer is weloverwogen. Omdat de menselijke conventie zodanig dat als je weer iets doet en opnieuw, in een lus, als begonnen op lijn twee, je iets dat toebehoorde streepje om die lus alleen maar om duidelijk te maken dat het is regel drie en niet, bijvoorbeeld, lijn vier of vijf, als er lijnen voor of vijf, dat zijn deel van die lussen. Dus deze eenvoudige inspringen brengt dat basisidee. Dus we passen dit algoritme, Nu, om een ​​paar voorbeelden. En ook dit eenvoudig voorbeeld in de echte wereld. Maar het gaat om representatief te zijn hoe je zou gaan over het testen van uw bezitten steeds complexere programma's. U probeert een paar scenario's, een aantal vertegenwoordigers van inputs, en kijk of je krijgt de gewenste output. Dus dit voorbeeld had twee personen zitten in de slaapzaal. Aan de linkerkant is diezelfde pseudo-code. En dit is een screen shot van de zeer laatste stap van de toepassing van deze algoritme op deze middelen waar waren twee mensen in de kamer en, herinneren, zoals we stap voor stap door lijnen een, en twee en drie en twee en drie en gedaan - het einde van dat algoritme, we inderdaad telde de twee kerels die zijn in de kamer. Dus toen probeerden we een ander voorbeeld. En we zeiden wat als er nul mensen in de kamer? Is deze code nog correct? En inderdaad het was. Het toeval wil dat lijn twee en dus regel drie of niet van plan uit te voeren. Ze gaan niet helemaal gebeuren want ze zijn gewoon niet van toepassing indien er is nul mensen in de kamer. Maar geen big deal. Lijn een N geïnitialiseerd op nul, zodat hoewel slechts een regel van deze programma daadwerkelijk eindigt nuttig, het levert nog steeds het juiste antwoord, zoals aangegeven door de oranje nul onderaan. Maar toen besloten we dat was soort van een domme algoritme. Het was vrij traag. Zeker, kan ik twee, vier, zes, acht, tien, bij het tellen van personen in een kamer. Dus we getweaked het algoritme, de pseudocode, om te zeggen, nu in de rij twee, voor elk paar mensen in de kamer, overgaan tot, in lijn drie, increment door twee op elke iteratie. Dus dat zou hier hebben gewerkt voor dit paar personen in de kamer. Maar dan, als je begint te denken over Dit, en het duurt niet lang te duren realiseren, wacht een minuut is dit gaat breken, het breekt naar wat eenvoudige zaak? Als er drie mensen in de kamer of, meer in het algemeen, als er een oneven aantal mensen in de kamer, inclusief een. We zouden die persoon hier missen omdat zijn er geen dergelijke paren. Zodat we snel aangepakt door in plaats invoering welke aanvullende programmeerconstructies aan de pseudo-code. Dus een voorwaarde, we noemden het, of een tak. En het is bedoeld om te brengen, visueel, de idee van tak, een splitsing in de weg waar je ofwel dit kunt doen of, misschien, iets anders. En inderdaad, pakken we dit probleem op door het toevoegen van lijn 4, door te zeggen, echt, op het einde, als een persoon blijft, dan ga je gang en tel ze speciaal. Zodat u sorteren van speciaal geval hen, dus te spreken, zodat nu kunnen we omgaan beide een even aantal personen en een oneven aantal personen. Nu zijn er een aantal manieren We konden dit hebben geuit. En eerlijk gezegd, ik kon heb zelfs meer geweest Nit kieskeurig als het ging om mijn keuze van Engels voor de pseudocode. Maar in ieder geval de geest van het idee wordt overgebracht. Als u deze code overhandigd aan een vriend wie niet in CS, of heeft nooit genomen CS, kansen zijn ze konden achterhalen, gegeven drie mensen in de kamer, hoe tellen die mensen op basis van deze instructies. En dat is alles wat we echt willen bereiken met pseudocode, een of andere manier standaardiseren hoe we gaan over vertegenwoordigen ideeën zodat we kunnen beginnen te ingewikkelder doen ding nog. Zodat wij vervolgens leidt, vandaag, tot daadwerkelijke code. We gaan nu programmeren, hoewel in een vriendelijke omgeving. En toen we de overgang heel snel naar een geheimzinnige syntax, maar wel een die zie je in wezen hetzelfde is als de ideeën zullen zien gemanifesteerd met deze andere taal van vandaag. Het gaat gewoon om naar te kijken een beetje anders. Dus in plaats van alleen noemen deze code, ben ik gaat een beetje preciezer en zeggen, voortaan, bij het schrijven van een programma, bent u het schrijven van de broncode. Het is net zoiets als pseudocode. Maar we zullen zien dat het niet soort van losse als het gaat om het kiezen van de woorden die u gebruikt. Bij het programmeren in een taal, je hebt de woorden, de uitdrukkingen, gebruikt de syntaxis, dat andere mensen hebben besloten vertegenwoordigen dat bepaalde taal. Dus pseudocodes is aan jou. Een echte programmeertaal zoals C, zoals we uiteindelijk zullen zien, is gestandaardiseerd door andere mensen. Dus hoe kunnen we gaan over het schrijven sommige source code? Nou ik ga om te gaan gang en dit te doen. Ik ga om te gaan en opent een venster hier. Meer over dit volgende week. Maar dit is een apparaat met de naam de CS50 apparaat. Ik loop een stukje software op mijn Mac, maar je kunt hetzelfde doen op een Windows-computer, dat is het geven me de illusie met een ander besturingssysteem helemaal rechts hier in een venster op mijn Mac. Ik heb gewoon vol afgeschermd zodat je niet eigenlijk zie Mac OS nu. Dit is een besturingssysteem genaamd Linux. Het is erg populair. Het is heel snel. Het is heel vrij, waardoor het erg heeft gemaakt dwingende, vooral in de commerciële wereld. En meer op dat tegen het einde van de semester wanneer we gebruik Linux nogal wat voor web programmeren en hosten van feitelijke websites en projecten. Dus nu, weet gewoon dat dit een desktop dat is bedoeld om een ​​idee te kijken bekend bij Windows en Mac OS. Het heeft slechts enkele verschillende namen en pictogrammen voor dingen. Dit is de zogenaamde CS50 apparaat, een virtuele machine die, vanaf volgende week, jullie zullen draaien binnen van een venster op je eigen Mac of pc. Voor vandaag, ga ik open de eenvoudigste programma. Het gedit heet. En dit is slechts een grafische editor. Het is net zoiets als Microsoft Woord, maar eenvoudiger. Het is een beetje zoals tekst bewerken of notepad. Het is gewoon een heel eenvoudig programma met die om woorden op het scherm schrijven. Het is gewoon zo gebeurt dat als ik redden bestanden die ik maak wanneer dit programma in een speciale extensie zoals. c, in plaats van. doc of. xls, of wat dan ook je bekend bent met, ik kan eigenlijk programma's maken gebruik van zelfs dit eenvoudige teksteditor. Dus laat ik dat doen. Laat me ga je gang en sla deze bestand eerst als hello.c. En nogmaals, dit user interface zal worden snel bekend voorkomen. Maar voor nu, ik ben gewoon te typen in een bestandsnaam. Ik ga het redden in mijn John Harvard home directory. En nu heb ik dit tabblad dat aangeeft Ik ben inderdaad bewerken een bestand met de naam hello.c. Dus nog niets te interessant. En nu het gaat om behoorlijk cryptisch. Ik ga om in te zoomen, net dus het is beter zichtbaar. En ik ga om te beginnen te typen omvatten stdio.h, int main, leegte, geopend krullend brace, een, twee, drie, vier ruimtes van inspringen, print f, voor print iets geformatteerde, citaat unquote, "Hello, world" backslash, n, dicht citaat, gesloten haakjes, puntkomma, voer backspace, backspace, backspace, backspace, gesloten accolade - Ik heb geprogrammeerd. Oke dus dit is een super eenvoudige programma, echt, het programma dat iedereen begint met programmeren. En alles wat het doet, voor al zijn complexiteit, wordt afgedrukt op de scherm, wat denk je? Hello world. Maar het is niet voldoende alleen een programma te schrijven. Dus dit is code. Dit broncode een taal genaamd c. Het is momenteel opgeslagen in een bestand met de naam hello.c. Kijk nu naar de bodem van het scherm hier. Meer over dit, opnieuw, in de komende weken. Maar dit is wat we noemen een terminal venster. Het is een knipperende, zwart en witte prompt. Het is een soort van een oude school interface naar een computer die in het algemeen niet met een muis of ander grafische elementen. Het gebruikt gewoon je toetsenbord. En ik kan opdrachten typt in Deze knipperende prompt. En voor de hedendaagse doeleinden, ik ben gewoon gaan naar de volgende typen - maken hello. En dat programma maken, is gewoon een programma dat in de echte wereld deze dagen, zouden we dubbel op. Maar in deze interface voor vandaag, we zijn gaat zijn naam te typen in deze prompt. maken hello is letterlijk gaat maak mij een programma genaamd hallo. En het gaat om dit te doen door te kijken voor een bestand, net door standaard, genaamd hello.c. Het gaat ervan uit Ik wil een C-programma door de aard van hoe deze computer geconfigureerd. Dus ik ga je gang en druk op enter. Ik zie een aantal cryptische uitgang, maar dit zal maar al te worden vertrouwde het duurde niet lang. Dit gebeurde op een compiler, meer draaien op dat in een moment, genaamd Clang. Maar nu, ik heb gewoon een andere knipperende prompt. En ik kan je gang nu gaan en typ stip slash, voor oninteressante redenen zullen we terug te komen volgende week - hallo. Dus al deze inspanningen tot nu toe alleen maar om schrijf de eenvoudigste programma's, zodra ik druk op Enter, doet dat. Dus ik heb mijn eerste programma geschreven. Dus ik ben bewust spot in dit zeer eenvoudige voor een paar redenen. Een, het is moeilijk om enthousiast te krijgen over het nemen van een klasse als dit is het einde spel. Maar meer dan dat, is er een Veel afleiding hier. De eerste keer dat je leert om te programmeren, voor die van u minder comfortabel, en zelfs ik, terug in de dag, toen ik voor het eerst zag iets als dit - je kan soort van cijfer dat, oke, dit is in een print hello wereld. Maar er is zo veel afleiding. Er is zoveel syntax op het scherm dat het in de weg van de zeer eenvoudige, anders simpel, ideeën. Dus wat we gaan doen vandaag is dat we ga opzij zetten C en komen terug naar die op maandag. En we gaan een grafische gebruiken programmeertaal Scratch. Dit is een programmeertaal, die ik gezinspeeld op woensdag, dat gaat om ons in staat om dezelfde soort dingen doen maar oogluikend, voor vandaag, aan de accolades, de haakjes, de puntkomma's, en al deze domme afleidingen die in de weg te krijgen, in deze eerste dag, van een aantal fundamentele, mooie interessante ideeën. Zodat de richting van dat doel, ga ik om te gaan terug naar mijn bureaublad dan hier en u kennismaken met het alternatief voor dat programma, dat gaat een kijken iets licht dit. Dat is hoe we gaan implementeren die hetzelfde programma vandaag - twee puzzel stukken die, wanneer vergrendeld en geklikt, zal zeggen tegen de wereld, hello wereld. Dus laten we daar ook daadwerkelijk te gaan. Dus ik ga vooruit te gaan en open een website bekend als scratch.mit.edu. En dit zal mij leiden deze website hier. Van tevoren, ik heb aangemeld bij dit website en de eerste problemen die zal u door een aantal van deze stappen. Ik ga om te gaan en klik op mijn map scratch hier. En dit gaat me te tonen sommige projecten die ik heb eigenlijk gemaakt op voorhand. En het blijkt dat deze grafische programmeertaal niet alleen gaat om ons te laten programmeren door te slepen en vallen deze puzzelstukjes, je niet zelfs speciale software nodig. Het is allemaal ingebed in een browser, zodat dat u dit kunt doen, in theorie, op nu uw computers, zoals sommigen van jullie kan goed zijn, zonder dat het nodig is software zoals de CS50 apparaat, die volgende week zal komen. Dus ik ga om omhoog te gaan naar de bovenhoek hier en klik op Maken. En in een moment ga ik een blanco krijgen scherm via welke ik kan beginnen programmering in deze grafische programmeeromgeving. Maar deze keer, het gaat veel te zijn, veel eenvoudiger om ook daadwerkelijk te doen. Dus in slechts een moment, wanneer de Wi-Fi samenwerkt, hebben we nu dit scherm. Dus een snelle verbale tour, maar ik durf te zeggen, zeker als je een duik in de eerste probleem set, zul je vinden dit allemaal heel toegankelijk en vrij intuïtief. Maar laten we schilderen een mentaal beeld voor slechts een moment. Dus onder deze prompt zeggen opslaan verandert, je gaat kras te zien. Dit is een sprite. Het is een teken. En hij woont op wat we een podium zullen noemen, Deze grote witte rechthoek op die hij kan bewegen, omlaag, links, rechts, en te doen, echt, andere soorten acties. Ondertussen, in het midden van deze gebruiker -interface, hebben we een hele hoop puzzelstukjes. En je zult zien dat ze dingen zeggen als: bewegen 10 stappen, draaide 15 graden, punt in een bepaalde richting. Maar er is categorieën blokken ook hier. Dus als ik naar Looks, zult u zien dat er andere puzzelstukjes die blijkbaar zal dit cit vertellen aan gedag zeggen, om te denken, om te laten zien zelf, verstopt zich. Als ik naar beneden om Sounds, het blijkt er manieren om zoals dat te horen miauwen, om alle geluiden te stoppen, om een ​​trommel te spelen. Dus, lang verhaal kort, er is een hele stelletje puzzelstukken die u toelaten voor deze kat, of een aantal van vertellen andere personages, wat te doen. Maar om dit allemaal gebeuren u nodig hebt om te beginnen met programmeren. En deze grote witte doos, of grijze doos, op de rechterkant, dit is waar Ik ga eigenlijk slepen en neerzetten die puzzelstukjes. Dat is mijn lege tekst venster equivalent. Dus ik ga om verder te gaan en klik Controle in het midden. Of liever gezegd, laat ik beginnen up onder Events. Onder Evenementen bankje, zult u merken een paar dingen die doelbewust zijn gebogen bovenop zodanig dat ze waarschijnlijk niet in elkaar grijpen op de bovenkant van de puzzelstukjes. En dat is omdat ze bakenen de start van een programma, de start van een script, zo te zeggen. Dus als ik ga je gang en slepen, wanneer groen vlag geklikt dan hier, en toen ik wil deze kat zeggen iets wat op het eerste. Dus ik ga ten onder te gaan het ziet er panel. En ik ga je gang gaan en pak de zeg hallo blok, en slepen en neerzetten, en los te laten, zodat het automatisch vergrendelt daar. En dan merk ik kan Klik op de tekst. En ik kan overschrijven om meer te zijn specifiek willen, zeg, hello wereld. En nu hebben we het programma dat ik beweren is gelijk aan dat veel geheimzinnige programma I geïmplementeerd in C een moment geleden. Als ik ga nu over naar de linkerkant, merkt dat er een grote stopbord en een grote groene vlag. Laat mij in te zoomen voor de duidelijkheid. En als ik nu op deze groene vlag, U kunt waarschijnlijk wel raden wat dit eerste programma wordt nu gaat doen. Dus ook daar, we programmeren, maar we zijn eigenlijk niet te verzanden In sommige van deze syntactische minute details. Maar laten we proberen iets een iets interessanter. Laat me gaan in mijn map Scratch hier. En eigenlijk, laat me dus laat me open te stellen een apart programma hier voor slechts een Momenteel Maximaliseren dit venster, Bestand Openen, en ik ga om te gaan in de huidige bron directory. Zoals altijd, vindt u, vandaag en verder, dat alle voorbeelden vandaag toegankelijk binnenin website van de cursus. En ik ga hier verder te gaan en kies up een beetje iets anders. Deze hier, waar Ik heb een vrijwilliger nodig. Die graag een bureaulamp vandaag? OK, wat dacht je van iemand een beetje - bent u op het einde? Kom naar beneden. Nu, zou je willen deelnemen, of gewoon zeggen beginnen met de bureaulamp? VANESSA: [onverstaanbaar]. DAVID Malan: OK. Uitstekend, wat is je naam? Vanessa? David. Leuk u te ontmoeten. Dus kom op en Vanessa's gaan om de controle over mijn rekening toetsenbord voor slechts een moment. En wat ik hier heb gedaan, gewoon voor de tijd van sake, zoals ik heb realiseerde de Wi-Fi was een beetje traag, Scratch, de programmering omgeving die we gebruik, kunnen ook worden gedownload en draaien op uw lokale computer. Dus wat ik deed op voorhand van de lezing, in geval dat gebeurt, is dat ik gedownload alle bestanden die we op het punt om mee te spelen zodat ze een beetje meer kan draaien snel hier op mijn laptop. Dus dat is waarom nu ik zie een Mac-specifieke interface. Dus ik ga om verder te gaan en open deze. Ik ga om te gaan nu en volledig scherm het venster. En zoals u zult zien, kunnen we heel snel, aangezien dit student heeft een van uw voorgangers, gaan van hello wereld een veel veel meer dwingende toepassing. Dus hier zijn de instructies. Oh, en we hebben een ander ding. Ik dacht dat het leuk zou zijn, omdat, normaal, zullen we filmen camera's op deze manier. Ik dacht dat het leuk als, Vanessa, zou zijn konden we de wereld zien door jouw ogen. Dus hier hebben we een aantal Google Glass. [VERBAASD hapt] DAVID Malan: Wij zullen alleen geven weg bureaulampen vandaag. [Lachen] Dus laat me cue deze omhoog. Oke, dus raak deze. OK, Glas, een video opnemen. Oke, Vanessa? Nu, als een terzijde, dat heeft niets te maken met Scratch, als je kijkt iets omhoog en naar rechts, zie je de letterlijke glas, en je moet zie een klein rechthoekig venster. Je moet al je klasgenoten te zien die nu worden gefilmd? Ja. VANESSA: Ja. DAVID Malan: OK. Dus dat is prima. We zullen deze beelden later vrij te geven. Voor nu, richt je aandacht naar het scherm hier. En wat uw voorganger heeft gedaan is zet een aantal instructies op het scherm gewoon met behulp van een tekenprogramma. Dus je gaat, in een ogenblik, druk op de spatiebalk om te beginnen. En dan nog wat puzzelstukjes gaan te beginnen met bewegen op het scherm. En u wilt de pijltoetsen te raken, net als in het echte DDR, in overeenstemming met dingen rij met de pijlen. VANESSA: OK. DAVID Malan: Je speelt dit al eerder. VANESSA: Yeah. DAVID Malan: Oke, Vanessa, ga je gang en neem het weg. [MUZIEK - KAYNE WEST, "STERKER"] [Applaus] DAVID Malan: Dus laten we nu neem een ​​stap van dat. Zo duidelijk, dat is het einde spel. Het eindspel is niet hello wereld. Maar je hoeft niet per se te doen dingen die zo interactief. U kunt ook animatie. Dus bijvoorbeeld een van je opvolgers maakte het programma hier, die een verhaal meer dan vertelt het maakt een spel geïmplementeerd. Dus laat me ga je gang en open hier een programma in onze dezelfde bron directory vanaf vandaag. Deze oproep, en laten we beginnen met, een cookie liefdesverhaal. En niet om dit te academisch te maken, maar, als u deze een kijken, denk aan zelf welke van deze eenvoudige programmering concepten die we hebben gesproken over tot nu toe - variabelen, en loops, en de voorwaarden, heeft uw voorganger waarschijnlijk gewoon gebruik om een ​​deel van de uitvoering de visualisaties. Je ziet hier. Dus ik geef je een koekje liefdesverhaal. [MUZIEK - GREEN DAY, "VAKANTIE"] [CRASH] [MUZIEK - The Turtles, "Happy Together"] DAVID Malan: Oke, dus er, we hadden een cookie liefdesverhaal. Maar zelfs daar - [Applaus] DAVID Malan: Oke, ook daar, denken, als die harten gingen uit de bodem naar de bovenkant van het scherm, er was eigenlijk een beetje willekeur gaande. En inderdaad, we zien dat zelfs in de eenvoudigste van omgevingen, zoals Kras, zoals in C, kunt u genereren willekeurige getallen of de illusie van willekeurige getallen, zodat het spel is een wat interessanter dan het misschien zijn als je absoluut moest hard gecodeerd alles. In de beweging die je ziet, zijn er er is een soort van responsiviteit. Zodra de gingerbread man raakt de peperkoek vrouw, ze lijkt om af te stappen. En ja, inderdaad, u kunt implementeren, in de meeste programmeertalen, de notie van gebeurtenissen, waarbij als een hand raakt Anderzijds kan leiden dat sommige van de broncode daadwerkelijk uit te voeren. U kunt luisteren naar zulke dingen op het scherm. Dus laten we eens een korte rondleiding, dan, enkele van de bouwstenen kunnen we gebruiken om een ​​aantal van deze doelen te bereiken. Dus hier is wat we zullen voortaan bel een verklaring. Een verklaring gebeurt paars te zijn in Scratch, een beetje zoiets als dit, maar dat is arbitrair. Een verklaring is slechts een puzzelstukje of, meer in het algemeen een aanwijzing dat vertelt de computer te doen iets, een verklaring. Dus hier is een simpel voorbeeld. Zeg hallo wereld. Een ander zou worden wacht een seconde. Dus dit puzzelstukje, dat wordt ondersteund in Scratch, laten we je tekens pauzeren voor sommigen aantal seconden. Ook dit is gewoon een statement. Hier volgend, hebben we een ander meer interessant, spel geluid miauw, en de kleine pijl betekent dat in Scratch, Dit is een drop down menu. Dus je kunt geluiden importeren. U kunt geluiden op te nemen en doen andere leuke dingen in Scratch. En dat ook, hoewel, aan het eind van de dag, is gewoon een statement. Maar laten we nu introduceren een meer interessant stuk, dat bekend staat als een Booleaanse expressie. Hoofdletter B, vernoemd een collega met de naam Bool. En een Booleaanse uitdrukking is gewoon een puzzelstukje of, meer algemeen, een stukje informatie dat is waar of onwaar - een of nul, ja of nee. Dus het is gewoon een van die twee tegenpolen. Dus een dergelijke Booleaanse expressie in de wereld van Scratch ziet er zo blauw puzzelstukje. En het stellen van een vraag, muis beneden, en die ofwel van Natuurlijk, waar of onwaar. Dus met dit puzzelstukje in de Scratch, goed, zult u in staat om te detecteren of een puzzel als de muis, in feite, als door de menselijke interactie gehouden met uw programma. Deze is een beetje abstract, maar die twee witte dozen zijn alleen voor nummers. Dus je kunt dingen doen, zoals dit is getal kleiner dan de andere? En zo ja, zal Scratch gedragen een of andere manier. Deze is een beetje meer grafische. Het is als de sprite als de kat voor Zo is het aan te raken muisaanwijzer. Dus als de kleine pijl hoofd zweeft over de kat, dan is deze puzzelstukje zal beoordelen op true. Het zal waar zijn, in welk geval, als je Gebruik deze Boolean expressie, zoals we zullen zien in een moment, in een branche, kunt u ofwel doe dit, of je kan dat doen, veel als we hadden een aandoening die gecontroleerd, is er nog een laatste persoon in de kamer? Als dat zo is, voeg een. Anders, niet verder ongerust. Dus een Booleaanse expressie kan ook en-ed samen of-of-ed samen. Dus je kunt Booleaanse uitdrukkingen combineren en zeggen: dit en dit moet waar voor zijn de hele zaak om waar te zijn. En hier is een echte wereld bijvoorbeeld. Als u hebt gebruikt CS50 Cursussen om cursus te doen winkelen, deze selectievakjes daar, waar als je dat vakje naast om cursussen, die zullen zeggen: ja, maar toon mij cursussen waarvoor de Q-waarde 4,5 of hoger. Als u het vinkje, nee, niet doen zorgen over. Of een andere soortgelijke, aan de rechterkant, doet niet Conflict met cursussen Ik neem, dat is waar of onwaar. Het is gewoon een Booleaanse expressie. Dus al die tijd als je hebt gebruikt websites met selectievakjes, je bent gewoon wisselen het equivalent van een Booleaanse expressie aan en uit. Dus in welke vorm je deze gebruiken? Nou, in Scratch, zullen we zien in een ogenblik dat er omstandigheden die zo uitzien. En dat is een beetje verstandig, omdat veel zoals in pseudocode, we ingesprongen de soort U-vormige puzzelstukjes, bedoel dat alles binnen van genoemde U is gaat voeren, of niet, afhankelijk van waar het is. Dus als Booleaanse expressie, dan wat er binnen zal worden uitgevoerd,. Ondertussen is er een if / else-blok. Dus als je wilt een filiaal dat dit gaat of dat, geeft ons Scratch dat. En deze logica, nu, terwijl deze puzzelstukje is duidelijk te klein om iets anders te binnen van het wig, de scratch puzzelstukjes, ze zijn gewoon om te groeien. Wanneer u slepen en neerzetten over iets, het zal alleen maar groeien te passen ongeacht het wordt je probeert te doen. Zo kunnen we twee van deze dingen te nemen en maak een drieweg splitsing in de weg, zodat dat je dit doen, of dat, of dit andere ding gewoon door nesten te op die manier. Natuurlijk, als je dat ook doen veel, het begint te krijgen lelijk. Maar op dat moment, je bent eigenlijk waarschijnlijk niet het programmeren erg goed. En zodat terugkerend zal zijn thema, ook dat van de stijl. Hoe goed ken eigenlijk formaat van uw code? Of hoe goed kent u uw code te ontwerpen? Maar meer op dat in de toekomst. En nu hebben we loops. Er is een mooi eeuwig lus in Scratch wat letterlijk betekent dat - doen wat er binnen in dit weer, en opnieuw, en opnieuw. U kan meer concreet en zeggen: doet u het volgende ding 10 keer. U kunt ook gebruik maken van variabelen. U kunt komen met een willekeurige naam in die beetje naar beneden vallen en zeggen: geef mij een variabele genaamd n en stel het gelijk is aan een bepaalde waarde. En dan kun je functies hebben. Maar meer op die in slechts een moment. Laat me terug naar mijn Scratch-interface. En laat me deze keer ga je gang. En laten we verder gaan en open te stellen, laten we zeggen, een voorbeeld van - dat is een beetje meer interessant. Laat me ga je gang, en, eigenlijk, laat ik het gewoon mezelf. Ik heb geen behoefte om dit een te openen. Laat ik ga naar Bestand, Nieuw. Ik ga naar Events. Ik ga om te gaan als groene vlag geklikt, en ik ga naar Geluid. En ik ga dit slepen en neerzetten puzzelstukje, spelen geluid meow. Het hang samen. En nu, als ik klik op de groene vlag - [MIAUW SOUND] DAVID Malan: Adorable. OK, dus laten we nu iets doen logischer alleen maar aan te tonen dat we kunnen, voor nu. Ik ga om te ontgrendelen Dit uit die vent. Ik ga om te gaan naar Control. En ik ga een voorwaarde te grijpen. Dus als er iets dan. Dus dat is hoe het eruit ziet daar. Dus ik moet een Booleaanse expressie. En laat me gaan en zeggen: laat me gaan naar Operators. Ik ga een beetje iets te doen mathy, gewoon voor de kick. Ik ga hier in gaan en zeggen, indien iets minder is dan iets anders, ga je gang en doe iets. Dus nu weet je wat, een willekeurig blok. Dus merken hoe, als ik zweven over dit ding hier, dat zal breken daar. Dus nu, bericht, ik ben beginnen te doen iets wat al meer logisch interessant. Wanneer een willekeurig getal tussen 1 en 10 is minder dan, laten we zeggen zes. Als ik kies voor zes, die in wezen middelen, doet u het volgende met 50% waarschijnlijkheid. Het is als het opgooien van een munt. Nu, kan ik iets doen voorwaardelijk. En dat iets wat ik ga te doen is spelen het geluid. Dus nu, als ik klik op het scherm vlag, het is net opgooien van een munt. [MIAUW SOUND] DAVID Malan: Het was heads of wat daar. Laten we het nog een keer doen. [MIAUW SOUND] DAVID Malan: Heads weer. [MIAUW SOUND] DAVID Malan: Heads weer. Oef, OK. Staarten die tijd. Dus 50% van de tijd, als we dit doen oneindig lange, zullen we 50% miauwen krijgen en 50% stiltes. Dus daar, gewoon een basis gebouw blok dat laat ons dat doen. Maar dit is een soort van vervelend dat ik heb te blijven klikken op die knop. Dus laten we gewoon slepen en gooien al die afstand. Als je ze gesleept naar het midden, zullen ze zich gewoon verwijderen. Laat me gaan tot controle. Laat me gaan voor altijd. En deze keer, ik ga doen iets minorly vervelend. [Lachen] DAVID Malan: En laat me gaan gang en doe controle. Wacht een seconde, net zo het is niet te raspen. [MIAUW SOUND] DAVID Malan: Dat is niet natuurlijk. OK. [MIAUW SOUND] DAVID Malan: En merk wat, mooi over Scratch, voor degenen onder u die voorafgaand programmeren ervaring, je hoeft niet te starten en te stoppen. U hoeft niet te compileren. Je verandert het gewoon, en het programma zal dynamisch aanpassen. Dus dit is het krijgen van een weinig interessant. Maar laten we nog een stap verder. Laat me ga je gang en krijg ontdoen van dat programma. [MIAUW SOUND] DAVID Malan: Dat is wat we zullen bel een bug in Scratch. Hij moet niet blijven maken dat geluid. Dus we we hem vertellen te stoppen. Oke, dus nu ben ik in te gaan op - Ik laat het MIT weten. We zullen hier over te gaan naar Forever. En nu, ik wil iets doen weer. Ik ga om te gaan in control. En laten we zien, ga ik slepen mijn als voorwaarde daar. Dus let nu op de logica. Wanneer de groene vlag wordt geklikt, doe iets voor altijd, maar alleen dat doen iets als dit andere ding is waar. Ik ga om te gaan naar, laten we zeggen, sensing. En ik ga om verder te gaan en te kiezen te raken en zet het daar neer. Dat is een Booleaanse expressie. En nu, ziet, in deze daling down menu, zijn er een aantal vooraf gedefinieerde waarden. Dus ik kan zeggen, ben je aanraken de rand van het scherm? Of bent u het aanraken van de muisaanwijzer, de pijl op het scherm? Dus ik ga dat doen. En zo ja, dan ga ik om te gaan vooruit en speel het geluid meow. Dus nu heb ik soort van de begin van een spel - een schattig spel. [MIAUW SOUND] DAVID MALAN: OK, een schattig, buggy spel. Laat me niet wachten, laten we zeggen, een seconde daar. Spelen nu weer, door te klikken op de groene vlag. [MIAUW SOUND] DAVID Malan: Dus nu is het zoals aaien van een kat. [MIAUW SOUND] DAVID Malan: Oke, nu deze die ik heb van tevoren. Erg laat, het wordt een beetje makkelijk om domme dingen te doen. Dus laat me gaan in hier. Laten we zeggen, dat was Huisdier van de Kat. Laten we nu open niet Huisdier de Cat. Nu, als we dit een te spelen, je kunt raden, als je kijken naar het scherm - [MIAUW SOUND] DAVID MALAN: Nu, als ik huisdier de kat [LEEUW ROAR] DAVID Malan: Dus niet echt huisdier de kat in dat geval. Dus nu hebben we slechts een voorbeeld van een tak dat gaat in twee richtingen. Laat me nu ga je gang en Open hier nog eentje. Deze, ook onder onze bron codebestanden voor de dag. Dus laat me terug in mijn bron directory en ga in, laten we kiezen voor deze man hier en zie wat is er anders. Wow, oke, dus nu is het steeds een beetje ingewikkelder. En voordat we zien wat deze man doet, laten we proberen af ​​te leiden, uit het programma aan de rechterkant. En nu scratch duidelijk laat ons toe om hebben meerdere scripts, meerdere programma's in verband met een sprite, met een teken, en blijkbaar ze beiden gaan draaien in lockstep. Omdat beide van deze programma begint met als groene vlag klikken, dit is zinspelen op een meer geavanceerde onderwerp, met die een aantal van u bekend zou kunnen zijn, bekend als threading of multi-threading. Blijkt, lang verhaal kort, computers vandaag kunt doen in wezen meerdere dingen tegelijk. Of ze kunnen een ding tegelijk doen dus snel dat je niet eens merkt dat het is eigenlijk degene die het doet ding tegelijk. Maar voor nu, laten we aannemen dat beide deze programma's gaan uitvoeren op tegelijkertijd. En merk op, beiden hebben forever puzzel stukjes. Dus ze beiden gaan blijven draaien totdat ik raakte de rode stopbord. Dus wat gaan ze doen? Aan de linkerkant, ik ben blijkbaar declareren van een variabele genaamd gedempt. Dus ik heb niet geroepen het iets als saai zoals N. Ik noemde het gedempte dit tijd om betekenis over te brengen. Ik stel deze gelijk aan nul. Laten we bedenken dat als False, of Laten we bedenken dat als False. Nu, voor altijd het volgende doen. Als spatiebalk van het toetsenbord wordt ingedrukt, dan als gedempt nul is, dan veranderen gedempt om gelijk een. Else, ingesteld gedempt op nul. Dus logisch, ook al is dat een hele stelletje puzzelstukken die is gewoon te zeggen, toen ik raakte de spatiebalk, wat moet ik doen om de variabele riep gedempt? Het veranderen van de ene naar nul, of nul tot een. Dat is alles. Dus het is als het draaien van een lichtschakelaar aan of uit en herinneren, met een variabele, dat ik dat heb gedaan. Ondertussen, aan de rechterkant, in lekentaal, wat is het doel van het script op de juiste? STUDENT: Om de zeeleeuw geluid af te spelen. DAVID Malan: Om Zeeleeuw geluid af te spelen, als hij niet wordt gedempt, door aard van die variabele. Dus we zijn het delen van de staat, zo te zeggen, het delen van informatie over deze twee scripts want, ziet hier, wij zijn altijd het volgende te doen. Als gedempt is nul, dus als het niet gedempt - indien gedempt is vals, dan spelen Dit Zeeleeuw geluid. En denk je bij jezelf, hi, hi, hi, voor twee seconden, wacht even, en dan probeert u het opnieuw. Dus als we nu gaan hier naar links, naar de plaats waar deze man is, en sloeg de groene vlag, [SEA LION SOUND] DAVID Malan: Op welk punt gaat Dit krijgt echt vervelend? Want dit zal alleen maar gaan voor altijd. Dus soms, oneindige loops, zo te zeggen, zijn weloverwogen. Maar in dit geval, zodra ik raakte de spatiebalk, stopt hij. Nu is het programma niet stoppen. Het is nog steeds lopen in deze lussen. Maar als ik de spatiebalk weer - [SEA LION SOUND] DAVID Malan: Hij gaat halen verder waar hij gebleven was. Dus er is een manier voor ons om te doen wat weer maar dat tijd, slechts voorwaardelijk. Nou, terwijl we in deze geest van het doen opnieuw en opnieuw dingen, laat me gaan in een ander voorbeeld hier. Dit is die we zullen noemen het tellen van schapen. En let op wat deze man doet. Het is eigenlijk een beetje meer als het pseudocode we met aan spellen Woensdag, waarbij hij stelt enkele teller, denk aan het is zo weer N, om nul, altijd doet hij de volgende. Hij zegt dat de waarde van de teller voor een tweede, wacht een tweede, en vervolgens verandert de teller met een. En in dit verband, dat net betekent stappen het. Dus hij voegt men aan het. Dus dit is letterlijk - het is niet helemaal wat we denken van het tellen van schapen. Het is de schapen doen het tellen, voor altijd, omhoog van nul. Dus kunnen we soortgelijke dingen doen daar, logisch. Maar laten we nu eens proberen schoon te maken een aantal van deze dingen. Laat me nu ga je gang in een eenvoudige voorbeeld waar onze kat is gewoon te beginnen hoesten. Oke, dus hier hebben we hoest 0 - informatici beginnen tellen vanaf 0. Dus deze kat is gewoon gaan drie keer hoesten. En hier is hoe ik dat geïmplementeerd. Bij groene vlag wordt geklikt, hoesten, wacht, hoesten, wacht, hoesten, wacht. En ik deed dit gewoon door te slepen en vallen puzzelstukjes. Of als je begint te sleutelen aan Scratch, je zult zien kun je eigenlijk dupliceren stukken, zodat u kunt doen dingen sneller zonder te slepen en dropping vervelens toe. Maar we zijn niet op de beste weg hier. Want hoe kan ik hem maken hoesten een vierde keer? Nou, ik kon soort van gaan hier beneden. Ik kon dupliceren en vervolgens plak deze in daar. Hoe maak ik hem hoesten een vijfde tijd? Nou, kopiëren en plakken weer. Of sleep daling weer. En heel snel, dit programma start om echt, echt overbodig te krijgen, echt lang, maar echt oninteressant. Maar er is een manier om dit op te ruimen. Wat is de voor de hand liggende manier om dit op te ruimen? OK, dus we konden eigenlijk echt gaan uit en, wanneer je de ruimte raken bar, hebben hem hoesten. Maar als ik wil gewoon iets doen herhaaldelijk, zich herinneren dat we wel hebben enige controle construeert. Laat me gaan dit uit de weg, ga onder controle. Laat mij gewoon een herhaling, bijvoorbeeld drie keer. En nu laat ik stelen sommige van deze puzzelstukjes. Laat me dit in hier snap. Laat me helemaal gooi deze weg. En nu, ik heb een beter ontworpen programma. Waarom? Als ik wil het aantal keren wijzigen deze kat hoest, alles wat ik moet doen is veranderen een variabele, of een waarde, plaats van drie, vier, of vijf of zes. Of ik iets kon doen voorwaardelijk, zelfs, met de ruimte bar als ik wilde. Dus dit is een algemeen principe. Zodra u begint met het kopiëren en plakken code, of het nu in Scratch, of in C, je bent iets te doen verkeerd, waarschijnlijk. Of in ieder geval, als je eenmaal hebt een aantal overschreden redelijke aantallen kopieën en pasta's, bent u waarschijnlijk iets verkeerd. Maar weet je wat? Ik hou niet echt van deze. Dit is niet het schoonste ontwerp. Ik wou dat er een puzzel stuk genaamd hoesten want dan zou ik niet moet dit zelf voeren, de ouderwetse manier, door hebben gezegd, en wacht - wat als ze waren gewoon een hoest puzzelstukje. Nou, ik kan eigenlijk dat doen. Laat me gaan onder meer blokken, klikt Maak een Block, en nu dit krijg ik window hier. Ik ga dit ding hoest noemen. Ik ga om te gaan en klik op OK. En let nu op, krijg ik een nieuwe start stuk dat is gebogen over de top. En wat ik ga doen met dit, ik ben ga gewoon stelen deze blokken. Ik ga ze hier plaatsen. En nu, met deze drie stukken, ik heb geïmplementeerd wat ik ga naar een bel functie of een procedure, of een deel van je zou kunnen kennen als een methode. Geringe verschillen tussen de woorden. Maar voor nu, laten we gewoon noemen dit een functie. Dit is slechts een nieuw puzzelstukje. Nu het wordt uitgevoerd als dit. , Maar merkt dat Kras ons heeft gegeven fysieke representatie van dat hele blokkeren hierheen. Dus nu kan ik gewoon slepen dit dan hier, zeggen, herhaal dit drie keer, en wat er gaat gebeuren nu, als ik speel dit script, maar een programma loopt tegelijk. Er is maar een als groene vlag geklikt. Maar dat paarse blok genoemd hoest is effectief vertellen Scratch, elke tijd zie je dat puzzelstukje, eigenlijk uitvoeren van deze stappen die ik toevallig handmatig voeren. Dus dat is soort netjes. Maar nu, stel dat ik besloot, dat doe ik niet wil deze kat gewoon te hoesten. Ik wil dat hij in staat zijn om ook te niezen. Nou ja, hoe zouden we gaan over uitvoering niezen? Nou kon ik vrij veel hetzelfde doen. Ik kon een ander blok. Ik kon dit niezen noemen, klikt u op OK. Dan, hier kon ik eigenlijk hebben, laat me dit dupliceren - en er is waar je moet voelen als ben je waarschijnlijk niet iets te doen in de beste manier. Ik zou kunnen zeggen iets als, achoo, een seconde. Wacht een seconde. Nu heb ik een nieuw blok genaamd niezen. En inderdaad, daar is het. Maar ook dit zou beginnen te voelen - Misschien niet de eerste week van de klas, maar door de tweede - net een beetje overbodig. Het is duidelijk, er is hier een aantal redundantie. Dus laat me voor te stellen, in plaats daarvan, dat wij verfijnen deze definitie volgt. Laat ik optrekken tot mijn file menu. Ik ben niet van plan om deze versie te slaan. Ik ga om te gaan in een van mijn premade bestanden hier. En ik ga om verder te gaan en open hoest 2. Oeps dat was hoest 2. Laat me ga je gang en open hoesten 3, dat is deze bron directory. Hoest 3 en merken - oh, zei ik het verhaal in de verkeerde volgorde. Laat me herstellen van dit verhaal. Het verhaal dat ik bedoeld om te vertellen eindigt met hoest 4 - daar is het. Dus wat als ik, in plaats daarvan, bepalen een grotere puzzelstukje genoemd definiëren, zeg woord n ​​keer. Niezen is gewoon, blijkbaar, in Scratch, achoo. Dus we uitdrukken als een woord, gewoon omdat dat is de beperking van het programma. En een hoest is [COUGH], maar hoesten, C-O-U-G-H. Dus dat is gewoon twee verschillende woorden te doen, in wezen, hetzelfde. Zo kan ik eigenlijk maken een nieuw blok als deze. Ik heb deze menu-optie niet gebruiken voordat. Maar wanneer u klikt Make Block, U kunt kiezen voor een aantal opties. En je kunt zeggen dat dit blok eigenlijk kost wat ingangen, anders bekend als argumenten of parameters, zo dat u het gedrag van kunt wijzigen je blok. Dus wat deed ik een moment geleden werd Ik noemde dit blok Say. En toen zei ik, het duurt een stringingang. En let nu op, standaard, het zegt touwtje 1. Een string is gewoon een woord, of een zin, voor onze doeleinden. Maar ik ga gewoon wat zetten tijdelijke tekst er, net als in een website, als je gebruikersnaam, of wachtwoord, en vervolgens verdwijnt het als je begint te typen. Dat is alles dat is. En nu ga ik voeg een nummer invoeren. En ik ga dit n noemen - maar dat is vrij willekeurig. En dan gewoon een label, gewoon om ervoor te dit blok een beetje meer zelf verklarende - tijden, dat is wat ik net deed. En het eindresultaat is dat ik krijg een blok dat er als volgt uitziet. En let nu op, ik gebruik een herhaling blok. Maar in plaats van harde codering drie, ik ben te slepen en n in er dus ik kan de functie parametriseren. Ik kan deze functie iets te doen een verschillend aantal keren gebaseerd op die waarde. En opmerken, zeggen, dit is wat ik deed hier, als ik het woord te slepen, kan ik zeggen dat niet een hard gecodeerd woord, maar wat wordt doorgegeven in een seconde. Ondertussen, hoe kan ik opnieuw te implementeren hoesten? Ik plaats hoest definiëren als zeggen hoest n keer. Dus in het kort, ik ga door deze snel, maar het basisidee is zo snel als je begint te zien in het programma dat, wacht even, ik heb gedaan iets heel graag dit eerder, kan ik factor uit een aantal gemeenschappelijke functionaliteit? Ik kan ontleden wat ik doe in een aantal fundamentele ideeën? Dat is wat we hier doen. En ik heb deze dingen gestapeld, visueel, boven elkaar omdat het bewijs van dat idee van beginnend met binaire, gaat naar ASCII, het maken van grafische programma's, soort gelaagdheid steeds complexere ideeën over bovenop elkaar. Hetzelfde idee hier. Ik begon uit Scratch, uitvoering hoesten, toen realiseerde hoesten is eigenlijk alleen maar iets te zeggen. Dus laat me in plaats daarvan de uitvoering van de notie van iets te zeggen. En op de top van dat, kan ik uitvoeren achoo, of hoesten? En we konden meer van dergelijke doen varianten nog steeds. Dus vanuit dit uitgangspunt, we kunnen beginnen te doen steeds complexere programma's. Laat me deze ene openstellen. We kunnen eigenlijk meerdere sprites interactie op het scherm in een keer. Als ik in mijn source directory en pak een zogenaamde Threads, herinneren eraan dat een thread is gewoon echt de mogelijkheid van twee scripts naar de andere kant door te voeren zijde tegelijk. Merk nu, hebben zowel een vogel sprite en een kat sprite, die beide hun eigen scripts. Dus kennisgeving, als ik op de kat, krijg ik deze scripts. Wanneer ik op de vogel, Ik krijg deze scripts. Dus elk van deze jongens heeft zijn eigen programma's. Wanneer ik nu op de groene vlag, merken dat wat dit programma doet is hebben de kat, ongelooflijk langzaam, jagen de vogel. Maar de kat het voordeel van geprogrammeerd zodanig dat het niet uitmaakt waar de vogel is, de kat gaat naar hem toe. We kunnen dat spel veel sneller te spelen. Dus als ik op de kat, merken dat ik ben met, laten we zeggen dat bewegen een stap. Laten we hem vijf stappen bewegen tijd, dus vijf punten tegelijk. Laat me klikt spelen. [LEEUW ROAR] DAVID Malan: Oke, nu kunnen we echt geven de kat het voordeel. 10 treden tegelijk. [LEEUW ROAR] DAVID Malan: Oke, dus zeer snel, het wordt een beetje voordeel voor de kat. Maar ik zal mijn hand zwaaien sommige van de details. Maar de reden dat die weg is een beetje anders elke keer starten is dat ik doe een beetje van willekeur. Ik ben eigenlijk wijst de kat in een andere richting op basis van waar ik wil dat hij zo beginnen dat telkens het spel, of de animatie, is een beetje anders. Nu, laat me een introduceren andere construeren hier. Dus in dit geval, hebben we functies. Er gaat ook een puzzelstukje te zijn bekend als een matrix of een lijst die u toelaat om op te slaan meerdere waarden binnen een variabele. We zagen draden, en nu er Events. Dus hier is een evenement met deze twee jongens hier. En als ik het openstellen van het bestand met de naam Evenementen van voorbeelden van vandaag, zullen we zien van een programma dat lijkt een beetje als dit. En let nu op deze man - dus merk ik heb de blauwe Muppet geklikt - hij doet alleen het volgende. Hij wil niet een van die hebben groene vlag puzzelstukjes. Hij heeft een toen ik ontvang event - dus een willekeurig woord. Ik heb net uitgetypt event daar - hij gaat zeggen, Polo, gedurende twee seconden. Dus degenen onder jullie die bekend zijn met dit spel zou kunnen weten waar dit naartoe gaat. Als ik nu op de oranje Muppet, zijn programma doet dit. Altijd, als het toetsenbord spatiebalk onderdrukt, is hij gaan zeggen, Marco, gedurende twee seconden op het scherm. Maar hij gaat ook deze liefhebber gebruiken genoemd broadcast blokkeren. Hij gaat uitzenden citaat unquote, "evenement." Ondertussen, de blauwe jongen, recall, is luisteren voor citaat unquote, "event." Dus een of andere manier, nu, kunnen we twee sprites interactie. En als we in web programmeren, later in de termijn eveneens zal dit voordelig zijn om uw website te hebben iets in antwoord op, voor Bijvoorbeeld, een klik van het toetsenbord. Dus laat me gaan en druk op de spatiebalk. Oranje man zegt Marco. Blauwe man zegt Polo. Als ik het opnieuw doen orange man zegt Marco, blauwe man zegt polo. Dus laten we eens een stap verder. Deze keer gaan we naar, waarschijnlijk, Nog een paar minuten hier. Hebben we - bureaulamp, kom naar beneden. U bent direct aan het eind. OK, je kunt beiden komen. We hebben bureaulampen voor iedereen. Kom op. Ik weet niet of we kunnen blijven deze belachelijke prop up alle semester, dat wel. Oke, kom naar beneden. En in de tussentijd, hebben we de volgende voorbeelden op te trekken, alleen maar om versnellen dingen nu, zodat we een manifestatie van een andere voorganger van u met behulp van de dezelfde fundamentele bouwstenen. Wat is je naam? JOHN: John. DAVID Malan: John. Leuk om me je. En? Setz: Setz. DAVID MALAN: Setz, aardig tegen me je. John, als je wilt om te komen eerst op, dit is een oud school-spel genaamd Frogger. U gebruikt het toetsenbord om dit zo goed. En het doel is om over te brengen de straat en het water. [FROGGER MUZIEK EN GELUID PLAYS] DAVID Malan: Het spijt me, geen bureaulamp voor u vandaag. Oke, Setz, zou je graag op komen? Oke, laten we het nog een keer doen. Setz: Heb ik de pijlen gebruiken? DAVID Malan: gewoon de pijltjestoetsen. Omhoog, omlaag, links, rechts. [FROGGER MUZIEK EN GELUID PLAYS] DAVID Malan: We zullen ze noemen troostprijzen vandaag, vervolgens, zeer goed gedaan. Hier, voor jullie beiden, John en Setz. Gefeliciteerd, oke. Dus nogmaals, als dit spel speelt, na te denken over wat er gaande is? Een, er is duidelijk veel beweging. Maar we hebben gezien hoe, met de kat en de vogel voorbeeld, hoe kunt u het illusie van beweging door gewoon bewegen sommige aantal weer pixels. En als je een eeuwig blok, je zou deze hebben auto's doen dit altijd. We hebben de mogelijkheid om hebben een aantal willekeur. Dus dit spel niet te worden precies hetzelfde elke keer. Die logboeken, die auto's, kunnen beginnen bij enigszins verschillende tijden, zodat de spel zelf is interessanter met elk spel. En ondertussen hebben we de mogelijkheid hebben gezien om te luisteren naar de spatiebalk. Maar het is duidelijk, in Scratch, kunt u ook luister naar omhoog, omlaag, links, rechts, en echt een willekeurige toets op het toetsenbord. En je kunt ook doen wat andere dingen. Laat me ga je gang en ga terug naar de webversie. Laat me gaan in onze collectie voorbeelden hier. En onder Mijn studio, video die is, in essentie, een map op scratch.mit.edu. We hebben de web-versies van al deze projecten. En laten we eens kijken of ik kan mijn computer om hier te werken. Dit is geschreven door een van onze vrienden aan het MIT, genaamd Verplaats de Vlinder. En zodra dit opent, is dit gaat eigenlijk meer van gebruiken de hardware van mijn computer. Scratch gebeurt te worden uitgevoerd met Flash. Flash kan praten met uw webcam, als je er een hebt. Dus als ik ga je gang en full screen dit Hier, op de groene vlag, mededeling dat de veiligheid boodschap Flash's zegt, wil je toelaten om mijn webcam te gebruiken? Normaal, moet u waarschijnlijk zeggen Deny. Maar in dit geval, zullen wij zeggen toestaan. Dan ga ik Chrome vertellen zodat dit ook. En nu, in een ogenblik, je me zien, yep, me. En als mijn hand omhoog gaat - Ik heb om niet bewegen mijn hoofd tegelijk. Er is ook een weerspiegeling op het scherm. Kom op, daar gaan we - je kunt het verplaatsen op het scherm, omdat er is ook puzzelstukjes - oh, je weten wat het is, is het omdat je ook zie het projectiescherm achter me. Dus we hebben een beetje oneindige ding aan de hand daar. Oke, dus ik zal hier beneden spelen. Daar gaan we. Dus er is ook een puzzelstukje dat zegt, als je ziet beweging eronder een van de sprites, kunt u het gaan omhoog, omlaag, links, rechts of iets dergelijks. Dus we hebben een beetje van virtual reality gebeurt hier ook, allemaal binnen de grenzen van mijn browser, net hier met mijn webcam. Dus wat is er dan aan de horizon. Het eerste probleem set, zoals u zult zien, of de website zal later online gaan vanavond om cs50.net, is vrij veel gaat zijn open einde. En implementeren van een Scratch project voor u van belang, een spel, een interactie, iets artistieke en daag jezelf om elk nummer te gebruiken van deze puzzelstukjes. En het kan ofwel interactief op deze manier. Of het kan iets meer bewust worden gemaakt om een ​​verhaal te vertellen. En inderdaad, dat is waar we af zult eindigen vandaag, met een laatste voorbeeld. Laat me gaan in Scratch lokaal. Laat me ga je gang en open deze, en spelen een laatste programma geschreven door een van uw voorgangers, namelijk dat men hier. Goed, verhogen het volume voor deze ene. [Muziek] NARRATOR: Bij de volgende CS50, David nodigt een vrijwilliger op het podium. DAVID Malan: Voor deze demonstratie, we gaan naar een vrijwilliger nodig. Wil je naar beneden komen? Wat is je naam? Moving on.