[Speel van musiek] David Malan: Alle reg. Welkom terug. Dit is CS50, en dit is Een week, het voortgegaan. So een van die redes waarom ons al verby om tegnologie soos Google Glass is dat hulle kom met iets wat bekend staan ​​as 'n API, 'n Aansoek Programming Interface. En wat dit beteken, is dat met die reg lêers en met die regte dokumentasie, kan jy eintlik skryf sagteware vir selfs toestelle soos hierdie. En ja, wat ons in gedagte het na semesters einde is, as 'n projek wat, sê, Google Glass kan appèl, sal ons sien wat ons kan doen in terme van die haak jy met 'n paar loaner hardeware sowel as die die publiek toeganklike API sodat jy kan eintlik begin met die skep sagteware wat loop op dieselfde Google Glass. Nog 'n toestel wat ons het al speel met van die laat wat ons gedink het sou wees pret by semester se einde is hierdie klein ding hier. Dit is bekend sprong Motion, en wat is jy om te sien, is tegnies 'n advertensie vir die toestel, maar dit praat nie van wat hierdie spesifieke toestel in staat is. En dit ook, kom met 'n API via wat jy kan skryf sagteware beheer van jou eie rekenaar op 'n wyse hou van hierdie een-minuut-film hier. [Video speel] [Einde video-vertoning] So nou, hierdie toestel gebeur geïmplementeer word as 'n klein USB stuk wat jy kan aansluit in jou rekenaar, maar ek sou nie verbaas wees indien daar voor lank het ons hierdie soort tegnologie in die volgende groep van rekenaars en Macs sodat jy kan inderdaad interaksie met dit in 'n wyse soos dit. In werklikheid, wat ek gedink ek wil doen, ook, is Ek trek 'n bietjie demonstrasie program wat kom met hierdie sagteware. So ek het die klein sensor in die voorkant van my laptop. En soos jy kan sien, is dit besef reeds dat my hand is daar om dit te beheer. En al hierdie aansoek doen, word dakje min dinge soos hierdie. Maar jy kan sien dat, wel, Ek het vyf vingers daar. As ons dit kan kry al 10 te doen, jy kan dink 'n netjiese klavier aansoek of die wil. So as jy wil om te kom na die klas vandag en speel met wat as Wel, is jy welkom om te. So meer op wat in die rigting van semester se einde. So 'n paar van die administratiewe aankondigings. Een, doen artikel deur hierdie Vrydag op die middag by cs60.net/section. Dit URL is op die kursus se tuisblad as well. In die tussentyd, al is, supersections sal debuut hierdie Sondag. Supersections is 'n een-time ding, want dit neem ons 'n tyd om te werk uit wie is in watter afdeling en waar. So eerskomende Sondag, sal daar 'n artikel vir diegene wat minder gemaklik, een artikel vir diegene meer gemaklik. En dié van julle êrens in tussen is welkom om te gaan na een of albei of nie. Beide van hierdie sal verfilm word. Hulle sal in 'n groter ouditorium as 'n artikel normaalweg sou wees in Maar die doel hier is om jou toe te rus met 'n troos met die probleem wat een, met C, met die CS50 toestel, hierdie naweek, nog voor jy vind uit jou formele artikel opdrag. So jy sal voldoen aan jou TF en jou kleiner groep sectionmates in oor 'n week se tyd. Kantoorure, intussen, is aan die gang. Doen neem voordeel van hulle vanaand of môreaand as jy wil. Gestelde probleem 0 is as gevolg op Vrydag. Dit is 'n dag later as die gereeld-geskeduleer Donderdag. Maar met die probleem set 1, sien jy dat dit sluit 'n paar warm-up oefeninge waarmee jy jouself kan verleng jou Donderdag sperdatum tot Vrydag. Probleem set 1, intussen, sal debuut op die kursus se webblad die komende Vrydag, as jy wil om te krul met dit soos ek gedoen het eens op 'n tyd laat Vrydag nag in jou kamer. So cs50.net/appliance is die plek waar kan jy die CS50 toestel dat ons begin gebruik op Maandag. Ons sal dit gebruik om 'n bietjie meer vandag. Maar wees verseker dat die probleem stel 1 spesifikasie sal loop jy deur presies die stappe wat jy nodig het dat om op te staan ​​en loop. So moenie bekommerd wees oor dit te doen voordat Pset 1 As jy liewer nie. Alle regte. So het ons gekyk op Maandag by die bron-kode, maar in die konteks van 'n nuwe programmeertaal, naamlik C. en C, Anders nuuts af, is nie grafiese. Dit is nie die stukke van die legkaart. Dit is meer Engels-agtige sintaksis. En daar is 'n paar van die stappe wat betrokke is in werklikheid skryf en die bestuur van 'n program in C, want behalwe bron kode soos hierdie, moet jy iets bekend as 'n samesteller. En in leketaal, wat nie 'n vertaler vir ons kan doen? Ja. STUDENT: Dit vat die kode dat jy skryf aan 0e en 1e. David Malan: Goed. So dit vat die kode wat ons skryf aan 0e en 1e. Dit vat sogenaamde bron-kode te voorwerp-kode, die laaste wat lyk 'n bietjie iets soos hierdie. En dit is jou CPU, die brein binnekant van jou rekenaar, wat as gevolg van die mense wat die rekenaars geskep, weet wat die rye van 0'e en 1'e gemiddelde. Miskien is dit beteken druk. Miskien is dit beteken byvoeging. Miskien is dit beteken aftrek. Miskien beteken dit vertoon 'n grafiese. Daar is vooraf patrone van stukkies dat die wêreld het besluit beteken sekere dinge. Maar vir die grootste deel in hierdie kursus, ons sal werk op 'n hoër vlak, en sal ons as vanselfsprekend aanvaar dat daar bestaan dinge soos opstellers wat kan maak ons ​​bron-kode funksie in die manier waarop ons plan. So het die program het ons geskryf eerste is, laaste week en dan begin om na die hawe, so te spreek, tot C afgelope Maandag, was hierdie. Wanneer groen vlag gebruik het, sê hallo. Dit was, natuurlik, geskryf in nuuts af. En ek het beweer dat die ekwivalent program in C het 'n bietjie iets soos hierdie. So, wat ek gedink ons ​​wil doen op die eerste is, laat se terg mekaar wat lyk, op die eerste oogopslag, weliswaar, soos billik arcane sintaksis, maar jy sal begin om op te let patrone baie vinnig. Wat sal ons doen ook vandag verskaf jy met 'n geestelike model vir 'n paar kanoniese, 'n paar standaard konstrukte in ontwikkeling. En dan sal ons werklik ons ​​hande vuil met 'n paar voorbeelde as well. So vir die van julle meer gemaklik, besef dat hierdie week en dan volgende week kan baie goed wees om 'n bietjie van die hersiening. Maar veral wanneer die hacker uitgawe van die probleem stel 1 loop uit op die Natuurlik se webwerf op Vrydag, dink ek jy sal vind dat selfs as jy vul sommige spasies oor die volgende week of twee, jy sal begin al hoe meer te kry uitgedaag en ontmoeting nuwe en nuwe dinge. So laat terg hierdie program uitmekaar 'n paar lyne op 'n slag. Op die heel boonste, ons het wat is tegnies bekend as 'n preprocessor richtlijn. Dit is net 'n reël van die kode wat sê die inhoud van 'n lêer in te sluit, genoem standaard I / N, standaard insette - of, jammer, standaard I / O, standaard toevoer / afvoer,. h, binne van my eie program. So met ander woorde, as ek dit geskryf het program met 'n eenvoudige teks editor soos gedit, die eenvoudiger ekwivalent van iets soos Microsoft Word, wat onderrig, # sluit stdio.h, is net gaan die vertaler te vertel, gryp die inhoud van daardie ander lêer, stdio.h, en plak hulle hier. Nou, hoekom ek omgee? Wat het ons beweer is binnekant van hierdie lêer genoem stdio.h, wat gestoor word iewers op my hardeskyf, of in hierdie geval, iewers in die CS50 toestel? Iemand anders het dit daar vir my. Maar wat is in dit? Ja, so dit is 'n verklaring van 'n funksie genoem printf. So printf herinner aan die funksie wat uitstallings woorde en karakters en nommers op die skerm op my bied. Maar ek het nie skryf dit. CS50 het nie skryf nie. Iemand jaar gelede geskryf het, en hulle wese het ons die resep vir dit in 'n lêer genaamd stdio.h. Sodat die eerste lyn gee my net toegang om funksies wat iemand anders jare gelede geskryf het, onder wat printf. Nou, die volgende lyn Ek gaan my te waai hand op, ten minste tot volgende week. Maar vir nou, weet dat int main (void) is wese die ekwivalent van hierdie geel legkaart stuk toe groen vlag gebruik. Die wêreld, jaar gelede, het besluit dat indien jy skryf 'n program in die taal, die sogenaamde C, jy begin jou program met 'n lyn wat lyk soos dit. In net oor 'n week se tyd, sal dit maak sin wat int is, wat leeg is. Maar vir nou, dink net aan dit as dit geel legkaart stuk. Nou volgende, ons het 'n krullerige stut gevolg deur 'n ander naby krullerige stut, om so te praat. En ons sal sien hierdie hele programme in C, sowel as JavaScript en PHP. En dit is net omsluit verwante reëls van die kode. Die oop krullerige stut wese sê, hier kom 'n kode. En die geslote krullerige stut, wat hoek in die ander rigting, net beteken, dit is dit vir die relevante kode. So het die sappige lyn in die eerste program is die laaste, printf, quote-unquote, hallo wêreld. En ek het die ding tussen aanhalings wat die vorige keer? So dit is 'n string. En 'n string is net die techie term vir 'n reeks karakters, 'n woord, 'n frase. Selfs 'n enkele brief kon word dubbel aangehaal. Maar dit is 'n reeks van nul of meer karakters. Agteroorskuisstreep-n, al is, lyk 'n bietjie vreemd. Maar dit net iets beteken eenvoudige na die rekenaar. Wat is agteroorskuisstreep-n? Nuwe lyn. So dit is net die spesiale reeks karakters wat die wêreld het besluit middel sit 'n lyn breek net daar, omdat die samesteller sal kry eintlik verward, gewoonlik, as jy, baie verstaanbaar, maar verkeerd, net begin slaan Tik te sit nuwe reëls in jou kode. Jy moet 'n bietjie meer eksplisiete met agteroorskuisstreep-n. En ons sal sien daar is 'n paar ander sulke patrone vir spesiale karakters. Byvoorbeeld, om as jy wou laat jou gedagtes dwaal na 'n hoek geval, veronderstel dat ek wou 'n te druk dubbel kwotasie op die skerm vir watter rede ook al, sou dit lyk asof 'n bietjie problematies, reg? Want as ek 'n dubbele quote in die middel van "hallo, wêreld," vir alles wat rede is waarom dit lyk asof potensieel problematies? Dit breek die tou. Die samesteller is net 'n program. 'N program soos 'n vertaler is net gaan jou kode top te lees na onder, links na regs. En as daar drie dubbele aanhalingstekens plaas van twee, is dit nie gaan om te weet as jy bedoel dat die ding aan die linkerkant moet die string, of die ding te wees die reg of die hele ding. Dit is dubbelsinnig, en so wat 'n tipiese samesteller sou doen, is net freak uit, en gee jou 'n fout boodskap, en maak dat jy gaan met die probleem. So gegee dat agteroorskuisstreep-n 'n nuwe lyn, wat sal jou instink nou begin om te wees as jy wil in te sluit iets onreëlmatige soos 'n dubbele haal die binnekant van hierdie andersins aangehaal string? Agteroorskuisstreep-dubbel kwotasie. En so sal ons sien hierdie soort patroon ook. As jy iets 'n bietjie te doen vreemd, sal jy vind dat die oplossings dikwels 'n patroon, en die agteroorskuisstreep dui op 'n ontsnapping ry. En dit beteken net iets spesiaals dat ons nodig het om te verteenwoordig in 'n ander manier. Soos vir hoe jy verteenwoordig 'n agteroorskuisstreep, Wel, ons sal kom terug na daardie. Maar die antwoord nie, ook, is eintlik 'n bietjie voor die hand liggend. So laat ons nou stel 'n ander programmering konstrukte wat jy gesien het in nuuts af. Jy het waarskynlik as vanselfsprekend aanvaar reeds as jy reeds duik in probleem gestel 0. Maar laat ons nou die sintaksis in C vir hierdie andersins redelik intuïtief idees, ten minste sommige van hulle. So hierdie idee van 'n toestand of 'n tak, terwyl voorheen ons verteenwoordig dit met 'n kode wat lyk soos hierdie aan die linkerkant in Scratch - As x is minder as y, dan is dit te sê - plaas nou in C - laat my slyp in die eenvoudigste geval - ons net gaan om te sê, as, oop hakies, iets waar is - 'n Boole-uitdrukking gaan om te gaan waar ek het gesê toestand - naby hakies, doen dan wat is binnekant van die krulhakies. So ook hier die krulhakies is soort van soos Scratch se U-vormige stukke van die legkaart. Weet wat is binne-in hierdie krullerige draadjies. In hierdie geval, streep streep. En sien dit is 'n vorentoe streep, nie 'n agteroorskuisstreep. Slash, slash, Vir diegene wat nog geprogrammeer voor, beteken net - dit is net 'n kommentaar. 'N comment is nie 'n lyn van die kode, per se. Dit is 'n reël van die Engelse dat jy, die menslike, geskryf het om jouself te miskien herinner om iets te doen, te verduidelik aan jouself, te verduidelik iemand anders, wat jou kode doen. Dit is net 'n beskrywende kommentaar. Nou, natuurlik, kan ons 'n twee-rigting Vurk in die pad net deur dit te doen, 'n drie-pad vurk in die pad deur te doen hierdie, en as jy aanhou om hierdie patroon, kan jy vier-pad, Vyf-pad, ses-pad vurk in die pad as wat jy nodig het om te hanteer, inderdaad, dat baie voorwaardes. En dan sien die parallel hier - if (toestand), anders as (toestand), en die enigste een wat 'n bietjie vreemd is, is die laaste, wat is net dat anders. Maar weereens, dit is identies, konseptueel, na wat ons gedoen het, reeds, selfs al is die sintaksis sal neem 'n bietjie gewoond raak aan. Nou, in hierdie voorbeeld, is daar 'n ander vreemde sintaksis. Ons sien printf weer oop hakies, en naby hakies. En binnekant van daar 'n string aangehaal. Die hakies, in die konteks van printf, gaan aan die linkerkant en regs van wat? Wat beskryf ons wat aangehaal string as meer algemeen? So dit is 'n argument. Enige tyd wat jy het 'n funksie, soos printf, en dan 'n oop hakie en 'n naby hakie en iets binne dit, of is dit 'n string, of 'n integer, of enigiets anders, die ding in tussen die hakies genoem 'n argument. En 'n argument beïnvloed net die funksie se gedrag. In hierdie geval, dit is redelik duidelik hoe. x