[Musik Spela] DAVID MALAN: Okej. Välkommen tillbaka. Detta är CS50, och detta är Vecka One, Fortsättning. Så en av anledningarna till att vi har passerar kring teknik som Google Glass är att de kommer med något som kallas ett API, ett Application Programming Interface. Och vad detta betyder är att med rätt filer och med rätt dokumentation, kan du skriva faktiskt programvara för även enheter som dessa. Och så vad vi har i åtanke mot terminer slutet är, om ett projekt innebär, säger, Google Glass kan överklagande, vi får se vad vi kan göra i termer av hooking dig med några lånad hårdvara såväl som den allmänt tillgänglig API så att du kan faktiskt börja skapa programvara som körs på samma Google Glass. En annan enhet som vi har spelat med för sent att vi trodde kanske kul på terminen slut är denna lilla sak här. Det kallas Leap Motion, och vad du är om att se är tekniskt en reklam för enheten, men det talar vad detta enheten är kapabel till. Och det också kommer med ett API via som du kan skriva program till styra din egen dator på ett sätt ganska precis den här minuten filmen här. [VIDEO SPELA] [END VIDEOAVSPELNING] Så just nu, händer här enheten genomföras som en liten USB kontakt som du kan ansluta till din dator, men jag skulle inte bli förvånad om innan länge vi har dessa typer av teknik i nästa omgång av datorer och Mac så att du kan, faktiskt, interagerar med den i ett sätt som. I själva verket, vad jag trodde jag skulle göra också, är Jag drog upp en liten demonstration program som medföljer den här programvaran. Så jag har lagt den lilla sensorn framför min laptop. Och som ni kan se, inser att det redan att min hand är det styra det. Och allt det här programmet gör är lekande små saker som detta. Men du kan se att, ja, Jag har fem fingrar där. Om vi ​​kan få den att göra alla 10, du kan tänka dig ett snyggt piano ansökan eller liknande. Så om du skulle vilja komma upp efter klass idag och spela med det som Tja, är du välkommen att. Så mer om det mot terminens slut. Så ett par administrativ tillkännagivanden. One, gör avsnittet av denna fredag vid lunchtid på cs60.net/section. Denna URL är på kursens hemsidan också. Under tiden, dock, supersections kommer debut denna söndag. Supersections är en engångs grej, eftersom det tar oss lite tid att arbeta reda på vem som är i vilket avsnitt och där. Så nu på söndag, kommer det att finnas en avsnitt för de mindre bekväm, ett avsnitt för dem mer bekväm. Och de av er någonstans i mellan är välkommen att gå till endera eller båda eller ingen. Båda dessa kommer att filmas. De kommer att vara i ett större auditorium än en del som normalt skulle vara i. Men målet här är att utrusta dig med viss tröst med problem som en, med C, med CS50 apparaten, detta helg, även innan du reda på din formella delen uppdrag. Så möter du din TF och din mindre grupp av sectionmates i omkring en veckas tid. Kontorstid, under tiden, har pågått. Gör dra nytta av dem i kväll eller i morgon kväll om du vill. Problem set 0 beror på fredag. Detta är en dag senare än regelbundet-planlagd torsdag. Men med problem set 1, ser du att den innehåller lite uppvärmning övningar som du själv kan förlänga ditt Torsdag deadline till fredag. Problem set 1, under tiden, kommer debut på kursens hemsida detta kommer Fredag, om du skulle vilja krypa upp med det som jag gjorde en gång i tiden sen Fredag ​​kväll i ditt rum. Så cs50.net/appliance är den plats där du kan få CS50 apparaten att vi började använda på måndag. Vi kommer att använda den lite mer idag. Men lita på att problemet satt 1 Specifikationen kommer att gå igenom exakt de steg du behöver att få det igång. Så oroa dig inte om att göra det innan Pset 1 om du inte vill. Okej. Så vi tittade på måndagen källkod, men i samband med en ny programmeringsspråk, nämligen C och C, Till skillnad från Scratch, inte grafiskt. Det är pussel inte bitar. Det är mer engelska-liknande syntax. Och det finns ett par inblandade steg i faktiskt skriva och köra ett program i C, eftersom förutom källan kod som denna, behöver du något kallas en kompilator. Och i lekmannaspråk, vad gör en kompilator för oss? Yeah. STUDENT: Den omvandlar koden att du skriver till 0 och 1. DAVID MALAN: Bra. Så det omvandlar koden som Vi skriver till 0 och 1. Den konverterar s.k. källkod till objektkod, den senare som ser lite ungefär så här. Och det är din CPU, hjärnorna inuti datorn, som på grund av människor som skapade dessa datorer, vet vad dessa sekvenser av 0 och 1 medelvärde. Kanske det betyder print. Kanske det betyder tillägg. Kanske det betyder subtraktion. Kanske betyder det visa en bild. Det finns fördefinierade mönster av bitar att världen har beslutat detta vissa saker. Men för det mesta i denna kurs, vi kommer att arbeta på en högre nivå, och vi tar för givet att det finns saker som kompilatorer som kan göra vår funktion källkod på det sätt vi tänker. Så det program vi först skrev förra veckan och sedan började port, så att tala, till C detta tidigare Måndag, var detta. När grön flagg klickade, säga hej. Detta var naturligtvis skriven i Scratch. Och jag hävdade att motsvarande program i C såg lite ungefär så här. Så vad jag trodde vi skulle göra först är, låt oss retas isär vad som ser, vid första blick, visserligen, som ganska svårbegripliga syntax, men du kommer att börja märka mönster ganska snabbt. Vad ska vi också göra i dag är att ge dig med en mental modell för vissa Canonical, några vanliga konstruktioner i programmering. Och sedan ska vi faktiskt få våra händer smutsiga med några exempel också. Så för de av er mer bekväm, inser att denna vecka och sedan nästa vecka kan mycket väl vara en bit av översyn. Men särskilt när hackare upplagan av problem set 1 går ut på kursens hemsida på fredagen, tror jag du kommer att upptäcka att även när du fyller i vissa ämnen under nästa vecka eller två, du börjar få allt mer utmanas och möter nya och nyare saker. Så låt oss retas detta program isär några rader åt gången. Högst upp har vi vad som är tekniskt kallas en förprocessor direktivet. Detta är bara en kodrad som säger att inkludera innehållet i en fil, kallas standard I / N, standard input - eller, förlåt, standard I / O, standard input / output,. h, insida av mitt eget program. Så med andra ord, om jag skrev detta program med en enkel textredigerare som gedit, den enklare motsvarande något som Microsoft Word, som instruktion, # include stdio.h är bara kommer att tala om för kompilatorn, greppa innehållet i den andra filen, stdio.h, och klistra in dem här. Nu, varför jag bry mig? Vad gjorde vi hävdar är inne i den här filen kallas stdio.h, som lagras någonstans på min hårddisk, eller i detta fall, någonstans i CS50 apparaten? Någon annan lägga den där för mig. Men vad betyder det? Ja, så det är en försäkran om en funktion som heter printf. Så printf påminner funktion som visar ord och tecken och nummer på skärmen på min budgivning. Men jag ville inte skriva det. CS50 inte skriva det. Någon år skrev sedan det, och de huvudsak gav oss receptet för det i en fil som heter stdio.h. Så att första raden ger bara mig tillgång till funktioner som någon annan skrev år sedan, bland vilka är printf. Nu, nästa rad jag ska vifta min handen på, åtminstone tills nästa vecka. Men för nu, vet att int main (void) är väsentligen motsvarar detta gul pusselbit när grön flagga klickade. Världen, år sedan, bestämde att om du skriver ett program i språk som kallas C, du börjar ditt program med en rad som ser ut som det. I nästan en veckas tid, det ska göra känna vad int är, vad tomrum. Men för nu, tänk bara på det eftersom denna gula pusselbit. Nu nästa, har vi en klammerparentes följde av en annan nära klammerparentes, så att säga. Och vi får se dem i hela program i C, samt JavaScript och PHP. Och dessa kapsla bara relaterade rader kod. Den öppna klammerparentes huvudsak säger, här kommer lite kod. Och den slutna klammerparentesen, vilket är vinklad i den andra riktningen, bara betyder, det är det för den aktuella koden. Så saftigt linjen i denna första Programmet är det sista, printf, quote-unquote, hallå världen. Och jag heter sak mellan citat vad förra gången? Så det är en sträng. Och en sträng är bara techie term för en sekvens av tecken, ett ord, en fras. Även en enda bokstav kunde vara dubbelt citeras. Men det är en sekvens av noll eller flera tecken. Backslash-n, fast, ser lite konstigt. Men det betydde helt enkelt något enkel till datorn. Vad är omvänt snedstreck-n? Ny rad. Så det är bara speciell sekvens av tecken på att världen har beslutat medel sätta en radbrytning just där, eftersom kompilatorn kommer faktiskt få förvirrade, oftast, om du, mycket förståeligt, men felaktigt, precis börja slå Enter för att sätta nya rader i koden. Du måste vara lite mer explicit med backslash-n. Och vi får se att det finns några andra sådana mönster för specialtecken. Till exempel, att om du ville låta din sinne vandra till ett hörn fall antar att jag ville skriva en dubbla citationstecken på skärmen för oavsett skäl, skulle det verkar vara lite problematiskt, rätt? För om jag sätter en dubbel citat i mitten av "Hello, world," oavsett skäl, varför det förefaller potentiellt problematiskt? Det bryter strängen. Kompilatorn är bara ett program. Ett program som en kompilator är bara att gå att läsa din kod topp till botten, vänster till höger. Och om ser tre citattecken istället av två, det kommer inte att veta Om du menar att saken till vänster bör vara strängen, eller den sak att höger, eller alltihop. Det är tvetydigt, och så vad en typisk kompilatorn skulle göra är att bara flippa ut, och ge dig några felmeddelande, och gör dig ta itu med problemet. Så med tanke på att backslash-n betyder ett nytt linje, vad skulle dina instinkter nu börjar vara om du ville inkludera något onormalt som en dubbel citera insidan av denna annars citerade snöre? Backslash-dubbla citattecken. Och så får vi se detta typ av mönster också. Om du vill göra något lite konstigt, ser du att det lösningar följer ofta ett mönster, och omvänt snedstreck betecknar en escape-sekvens. Och det betyder bara något speciellt att vi måste representera i ett annat sätt. När det gäller hur du representerar ett omvänt snedstreck, ja, vi komma tillbaka till det. Men svaret, också, är faktiskt lite uppenbart. Så låt oss nu införa någon annan programmering konstruktioner som du såg i Scratch. Du har förmodligen tagit för givet redan om du redan dök in problem som 0. Men låt oss nu införa syntaxen i C för dessa annars ganska intuitivt idéer, åtminstone några av dem. Så denna föreställning om ett tillstånd eller en gren, medan vi tidigare representerade den med kod som såg så här till vänster i Scratch - Om x är mindre än y, säg det - istället nu i C - låt mig finslipa in på det enklaste fallet - vi bara kommer att säga om, öppnar parentes, är något sant - en Booleskt uttryck kommer att gå där jag har sagt tillstånd - stäng parentes, sedan vad insidan av dessa klammerparenteser. Så även här klammerparentesen är ungefär som Scratch s U-formade pusselbitar. Gör vad som finns inuti dessa klammerparenteser. I detta fall, snedstreck snedstreck. Och märker detta är en framåt snedstreck, inte ett omvänt snedstreck. Snedstreck, snedstreck, för dem som har programmerat tidigare, betyder bara - det är bara en kommentar. En kommentar är inte en linje av kod, per se. Det är en rad av engelska som du, det människa, har skrivit till dig kanske påminna dig att göra något, till förklara för dig själv, för att förklara för någon annan, vad din kod gör. Det är bara en beskrivande kommentar. Nu, naturligtvis, kan vi ha en tvåvägs vägskäl bara genom att göra detta, en tre-vägs vägskäl genom att göra detta, och om du fortsätter mönster, kan du ha fyra-sätt, fem-vägs, sex-vägs gafflar i vägen om du behöver för att hantera, ja, att många förhållanden. Och sedan märker parallelliteten här - if (villkor), else if (villkor), och det enda som är lite konstigt är det sista, vilket är just det annars. Men återigen, detta är identiska, konceptuellt, vad vi har gjort redan, även om syntaxen ta lite tid att vänja sig. Nu, i detta exempel finns det någon annan konstig syntax. Vi ser printf igen, öppen parentes, och avslutande parentestecken. Och inuti finns en sträng inom citationstecken. De parentes, inom ramen av printf, gå till vänster och till höger om vad? Vad beskriver vi som citeras sträng som mer allmänt? Så det är ett argument. Varje gång du har en funktion, som printf och sedan en öppen föräldra och en nära föräldra och något inuti det, oavsett om det är en sträng, eller en heltal, eller något annat, den saken i mellan dessa parenteser kallas ett argument. Och ett argument påverkar bara funktionens beteende. I detta fall är klart det ganska hur. x