[Muziek] DAVID Malan: Oke. Welkom terug. Dit CS50 en is Week One, Vervolg. Dus een van de redenen waarom we al voorbij rond technologieën zoals Google Glass is dat ze komen met iets bekend als een API, een Application Programming Interface. En wat dit betekent is dat met de juiste bestanden en met de juiste documentatie, kun je eigenlijk schrijven software voor zelfs apparaten zoals deze. En dus wat we in gedachten hebben in de richting van semesters einde is, wanneer een project met, zeg, Google Glass zou beroep, we zullen zien wat we kunnen doen in termen van het aansluiten van je met een aantal vervangend hardware als de publiek toegankelijke API, zodat u kunt eigenlijk beginnen met het maken software die draait op diezelfde Google Glass. Een ander apparaat dat we al spelen met de laatste tijd dat we dachten dat zou kunnen zijn plezier op het einde semester is dit kleine ding hier. Het heet Leap Motion, en wat je bent ongeveer te zien is technisch gezien een reclame voor het apparaat, maar spreekt wat dit specifieke apparaat in staat is. En het, ook, wordt geleverd met een API via waar u software kunt schrijven naar uw eigen computer te bedienen op een manier heel graag hier deze film van een minuut. [VIDEO AFSPELEN] [END VIDEO AFSPELEN] Dus nu, dit apparaat is toevallig worden uitgevoerd als een kleine USB connector die u kunt aansluiten op uw computer, maar ik zou niet verbaasd Als het duurde niet lang hebben we dit soort technologieën in de volgende batch van pc en Macs zodat je kunt, inderdaad, interactie in een manier zoals dat. Sterker nog, wat ik dacht dat ik zou doen, ook, is Ik trok een kleine demonstratie programma dat wordt geleverd met deze software. Dus ik heb de kleine sensor gezet in de voorkant van mijn laptop. En zoals je kunt zien, het al beseft dat mijn hand is er het controleren. En al deze applicatie doet is swimmingly kleine dingen zoals dit. Maar je kunt zien dat, inderdaad, Ik heb vijf vingers daar. Als we kunnen krijgen om te doen al 10, je kunt je voorstellen een nette piano applicatie of dergelijke. Dus als je wilt om te komen na de les vandaag en spelen met die als goed, bent u van harte welkom om. Dus meer op dat in de richting van het einde semester. Dus een paar administratieve aankondigingen. One, doe sectie van deze vrijdag bij middag bij cs60.net/section. Die URL is op de cursus homepage ook. In de tussentijd echter, supersections zal debuut deze zondag. Supersections zijn een eenmalig ding, want het kost ons wat tijd om te werken uit wie er in welke sectie en waar. Dus deze komende zondag, zal er een zijn sectie voor die minder comfortabel, een sectie voor die comfortabeler. En die van jullie ergens in tussen zijn welkom om te gaan of beide of geen van beide. Beide worden gefilmd. Ze zullen in een grotere zaal dan een sectie normaal zou worden inch Maar het doel is hier om u uit te rusten met wat troost met probleem set een, met C, met de CS50 toestel moet dit weekend, zelfs voordat je erachter uw formele gedeelte opdracht. Dus je zult je TF en uw kleinere voldoen groep van sectionmates in ongeveer een week tijd. Kantooruren, ondertussen, zijn gaande. Doe profiteren van hen vanavond of morgenavond als je zou willen. Probleem set 0 is verschuldigd op vrijdag. Dit is een dag later dan de regelmatig-geplande donderdag. Maar met probleem set 1, zie je dat het bevat een aantal warm-up oefeningen waarmee je jezelf kan je uitbreiden Donderdag deadline naar vrijdag. Probleem set 1, ondertussen, zal debuut op de website van de cursus deze komende Vrijdag, als je wilt om weg te kruipen met het als ik eens een tijd laat Vrijdagavond in uw kamer. Dus cs50.net/appliance is de plaats waar kunt u de CS50 apparaat krijgen dat we begonnen met op maandag. We zullen het gebruik van een beetje meer vandaag. Maar wees gerust dat het probleem set 1 specificatie zal u door precies de stappen die u moet om die up and running. Dus maak je geen zorgen over dat doen vóór Pset 1 als je liever niet. Oke. Dus keken we op maandag om broncode, maar in de context van een nieuw programmeertaal, namelijk C. En C, in tegenstelling Scratch, is niet grafisch. Het is niet puzzelstukjes. Het is meer Engels-achtige syntax. En er zijn een paar stappen die betrokken in feite het schrijven en uitvoeren van een programma in C, want naast source code als dit, je iets nodig hebt zogenaamde compiler. En in lekentaal, wat doet een compiler voor ons doen? Yeah. STUDENT: Het zet de code dat u schrijven naar 0s en 1s. DAVID Malan: Good. Dus het zet de code die we schrijven aan 0s en 1s. Het zet zogenaamde broncode objectcode, de laatste van die eruit ziet een beetje zoiets als dit. En het is je CPU, de hersenen binnenkant van computer, dat door de mensen die die computers geschapen, weten wat die sequenties van 0s en 1s gemiddelde. Misschien betekent het afdrukken. Misschien betekent toevoeging. Misschien betekent het aftrekken. Misschien betekent het geven van een grafische. Er zijn voorgedefinieerde patronen bits die de wereld heeft besloten betekenen bepaalde dingen. Maar voor het grootste deel in deze cursus, zullen we werken op een hoger niveau, en zullen we voor lief nemen dat er bestaan dingen zoals compilers die kunnen maken onze broncode functie in de manier waarop we van plan zijn. Zodat het programma dat we vorige week schreven eerst en begon toen aan de haven, om zo te spreken, naar C afgelopen Maandag, was dit. Bij groene vlag geklikt, zeg hallo. Dit was natuurlijk geschreven in Scratch. En ik beweerde dat het equivalent programma in C zag er een beetje zoiets als dit. Dus wat ik dacht dat we doen op het eerste is, laten we plagen elkaar wat lijkt op het eerste blik, toegegeven, als tamelijk mysterieus syntax, maar je zult beginnen te merken patronen vrij snel. Wat zullen we vandaag ook doen is je met een mentaal model voor sommige canonieke, een aantal standaard constructies in de programmering. En dan gaan we daadwerkelijk onze handen krijgen vies met voorbeelden ook. Dus voor degenen onder u comfortabeler, beseffen dat deze week en dan de volgende week kan heel goed een beetje beoordeling. Maar vooral wanneer de hacker editie van probleem set 1 gaat uit van de website natuurlijk op vrijdag, denk ik je zult zien dat zelfs als je in te vullen sommige blanks in de komende week of twee, zul je beginnen om steeds meer te krijgen uitgedaagd en ontmoeting nieuwe en nieuwere dingen. Dus laten we plagen dit programma apart een paar regels tegelijk. Aan de top, we hebben wat technisch genoemd preprocessor richtlijn. Dit is slechts een regel code die zegt de inhoud van een bestand omvatten, riep standaard I / N, standaard input - of, sorry, standaard I / O, standaard input / output,. h, binnen van mijn eigen programma. Dus met andere woorden, als ik dit schreef programma met een eenvoudige tekst-editor zoals gedit, het eenvoudiger equivalent van iets als Microsoft Word, dat instructie, # include stdio.h, is gewoon gaat de compiler te vertellen, grijp de inhoud van die andere bestand, stdio.h, en plak ze hier. Nu, waarom kan het mij schelen? Wat hebben we beweren is de binnenkant van dit bestand stdio.h genoemd, dat wordt opgeslagen ergens op mijn harde schijf, of in dit geval, ergens in de CS50 apparaat? Iemand anders heeft het daar voor mij. Maar wat zit er in? Ja, dus het is een verklaring van een functie genaamd printf. Dus printf herinnert aan de functie die displays woorden en tekens en getallen op het scherm op mijn verzoek. Maar ik heb het niet geschreven. CS50 heb het niet geschreven. Iemand jaar geleden schreef het, en ze wezen gaf ons het recept voor het in een bestand genaamd stdio.h. Zodat de eerste regel geeft gewoon me toegang de functies dat iemand schreef jaren geleden, onder die zijn printf. Nu, de volgende regel ga ik mijn zwaaien hand op, ten minste tot volgende week. Maar voor nu, weet dat int main (void) is wezen equivalent van deze gele puzzelstukje wanneer groene vlag geklikt. De wereld, jaren geleden, besloten dat als je bent het schrijven van een programma in de taal genaamd C, je begint uw programma met een lijn dat lijkt op dat. In zowat een week tijd, maak het voelen wat int is, wat leegte is. Maar voor nu, denk maar aan het als deze gele puzzelstukje. Nu naast, we hebben een accolade gevolgd door een andere nauwe accolade, zo te zeggen. En we zullen deze gedurende zien programma in C, en JavaScript en PHP. En deze gewoon in te kapselen gerelateerde regels code. De open accolade wezen zegt, hier komt een code. En de gesloten accolade, dat is hoek in de andere richting, net betekent, dat is het voor de desbetreffende code. Zodat de sappige lijn in deze eerste programma is de laatste, printf, citaat-unquote, hello wereld. En ik riep het ding tussen citaten wat vorige keer? Dus het is een string. En een string is gewoon de techneut term voor een reeks personages, een woord, een zin. Zelfs een enkele letter kon worden dubbel geciteerd. Maar het is een opeenvolging van nul of meer tekens. Backslash-n, hoewel, ziet er een beetje vreemd. Maar het gewoon iets betekende eenvoudig aan de computer. Wat is backslash-n? Nieuwe lijn. Dus dat is gewoon de bijzondere opeenvolging van tekens die de wereld heeft besloten middel breek de regel daar, omdat de compiler zal daadwerkelijk krijgen verward, meestal, als je, heel begrijpelijk, maar verkeerd, net beginnen te raken Enter om te zetten nieuwe regels in de code. Je moet een beetje meer expliciet met backslash-n. En we zullen zien dat er een paar andere dergelijke patronen voor speciale tekens. Bijvoorbeeld, als je wilde laten uw gedachten dwalen naar een hoek zaak, stel dat ik wilde een af ​​te drukken dubbel aanhalingsteken op het scherm voor welke reden dan ook, dat lijkt te wel een beetje problematisch, toch? Want als ik een dubbel aanhalingsteken in de midden van "hello, world," om wat voor reden, waarom die lijken potentieel problematisch? Het breekt de string. De compiler is gewoon een programma. Een programma als een compiler is gewoon uw code boven te lezen naar beneden, van links naar rechts. En als er drie dubbele aanhalingstekens plaats van twee, gaat het niet om te weten als je bedoelt dat het ding naar links moet de string, of het ding te zijn de rechter, of de hele zaak. Het is dubbelzinnig, en dus wat een typische compiler zou doen is gewoon freak out, en geven u een foutmelding, en maak je gaan met het probleem. Zo bepaalde backslash-n betekent een nieuwe lijn, wat zou je instinct nu beginnen te worden als je wilde zijn iets abnormaal als een dubbele citeer binnenkant van deze anders-genoteerde touwtje? Backslash-dubbel aanhalingsteken. En dus we zullen dit zien soort patroon ook. Als je iets wilt een beetje doen vreemd, zult u merken dat de oplossingen volgen vaak een patroon, en de backslash geeft een escape. En het betekent gewoon iets speciaals dat we moeten vertegenwoordigen in een andere manier. Zoals voor hoe u vertegenwoordigt een backslash, nou ja, we zullen kom terug naar dat. Maar het antwoord ook eigenlijk een beetje voor de hand liggende. Dus laten we nu introduceren we een paar andere programmeerconstructies die je zag in Scratch. U hebt waarschijnlijk vanzelfsprekend al als je al hebt dook in probleem set 0. Maar laten we nu introduceren de syntaxis in C voor deze anders vrij intuïtief ideeën, ten minste enkele van hen. Dus dit idee van een aandoening of een tak, terwijl we vroeger vertegenwoordigd met code die eruit zag als deze aan de linkerkant in Scratch - als x kleiner dan y, dan zeggen dus - in plaats daarvan nu in C - laat me scherpen in het eenvoudigste geval - we zijn gewoon gaan zeggen, indien, opent haakjes, iets waar is - een Booleaanse expressie zal gaan waar ik heb gezegd staat - haakje sluiten, doe dan wat is binnenkant van die accolades. Dus ook hier, de accolades zijn een soort Scratch's U-vormige puzzelstukjes. Weet wat er in deze accolades. In dit geval, slash slash. En merkt dit is een voorwaartse slash, niet een backslash. Slash, slash, voor degenen die hebben geprogrammeerd vóór, betekent alleen - het is gewoon een reactie. Een reactie is niet een lijn code, per se. Het is een lijn van het Engels dat u, de mens, hebben geschreven om jezelf te misschien kunt herinneren om iets te doen, om uit te leggen aan jezelf, om uit te leggen aan iemand anders, wat uw code doet. Het is gewoon een beschrijvend commentaar. Nu, natuurlijk, kunnen we een twee-weg hebben vork in de weg net door dit te doen, een drie-weg splitsing in de weg door te doen dit, en als je dit blijft patroon, kunt u vier-weg, vijf-weg, zes-weg vorken in de weg als je moet omgaan met, inderdaad, dat vele voorwaarden. En dan merken de parallellisme hier - if (conditie), anders als (conditie), en het enige dat een beetje vreemd is de laatste, die is gewoon dat anders. Maar nogmaals, dit is identiek, conceptueel, naar wat we hebben gedaan al hoewel de syntax zal neem een ​​beetje wennen. Nu, in dit voorbeeld, zijn er enkele andere vreemde syntax. We zien printf weer, open haakje, en haakje sluiten. En de binnenkant van er een tekenreeks tussen aanhalingstekens. De haakjes, in de context van printf, ga aan de linkerkant en rechts van wat? Wat doen we beschrijven dat geciteerd string als meer in het algemeen? Dus het is een argument. Elke keer dat je een functie, zoals printf, en vervolgens een open haakje en een dicht Paren en iets in het, of het nu een string, of een integer, of iets anders, het ding in tussen de haakjes heet een argument. En een argument gewoon beïnvloedt het gedrag van de functie. In dit geval, het is vrij duidelijk hoe. x