JASON Hirschhorn: Välkommen. Så bara några tillkännagivanden innan vi börjar. Så sektioner, alla borde har sektione redan. Sektioner kör normalt från söndag till tisdag. Så ni ska få dina uppdrag. Och då tror jag nästa vecka du kommer att vara med ditt verkliga TF. Så om du har några frågor, eller problem, eller om du har glömt att avsnitt. Vissa människor gör det. Låt oss veta. Skjut ett mail till huvuden. Då kontorstid. Vi började kontorstid förra veckan. Kontors timmar varje vecka. Måndag är i Leverett från 8:00 till 11:00. Tisdagar i quad, så Cabot 8:00 till 11:00. Onsdag Mather 8:30 till 11:30. Och torsdag Annenberg 8:00 till 11:00. Så Skrapa, många människor behöver inte kontorstid hjälp för Scratch, som är helt bra. Om du gör, det är helt OK också. Men i framtiden, är problemet uppsättningar, de får mycket svårare. Så detta kommer att bli din vän. Definitivt gå till kontorstid. Planerar att gå till kontorstid. När du kommer till problem sätta fyra, fem, sex, sju, du behöver gå till kontorstid. Det är där en hel del hjälp och arbetet blir gjort. Jag tror att förra året, bara för exempel på torsdagen night-- så jag tror att problemet set berodde på fredagen. Så torsdag kväll, skulle vi ha 200, 250 studenter på kontorstid. Så definitivt använda sig av dessa. Dessa är dina bästa vänner. Liksom det är där om du är fastnat på ett problem som, det är här du kommer förmodligen få hjälp. Så kontorstid. OK så de är anslag. Meddelanden är gjort, så låt oss börja. OK, apparaten. Lämnade alla ladda apparaten än? Nej. Som i så så. Jag liksom hämtade apparaten. Rätt så maskinen är nytt i år, så vi är nog kommer att ha en del buggar i den. Så ladda ner det så tidigt som möjligt. Så problemet satt en kommer att berätta du exakt hur du hämtar den. Komma igång installation här. Det kommer att berätta hur för att ladda apparaten. Så definitivt hämta apparat förr snarare än senare. Instruktioner finns i P inställda spec. Så om du väntar till onsdag natten, och då har du problem, och du skickar ett mail till midnatt på onsdag kväll att du inte kan ladda ner apparaten, det är inte en legit skäl för en förlängning. Du måste göra det nu, och du kommer att ha problem. Jag försökte ladda ner det i går kväll. Jag sprang in i en lite problem. Om du stöter på problem installation, definitivt slog nytt försök, eftersom jag slog bara igen en par gånger, och till slut fungerade, vilket inte gör något mening, men det gör det. Så definitivt försöka igen, men om du komma upp mot en vägg, skjuta oss ett mail på huvudena, och vi ska vara mer än glada att hjälpa er. Vad händer? STUDENT: Bara en snabb fråga. Om de kontrollerar stil, det finns en del som säger att vi inte ta med detta. JASON Hirschhorn: Inte ännu. STUDENT: Det står verkställa det. Hur du utför det till se till att det är i ditt system? JASON Hirschhorn: Du är kommer att köra ett bash-kommando. Jag ska gå över det senare. Cool. Så apparaten kan vara en lite skrämmande, eftersom du är van vid typ av körs i grafiska användargränssnitt. Så Scratch var ett grafiskt användargränssnitt gränssnitt, så vad menar jag med det? Vad jag menar är att när du programmerar, du i princip använder block av kod. Du kan se koden och sånt. Apparaten, du ska göra saker i en kommandorad miljö. Och så för resten av dina programmerings liv, du kommer att göra saker på kommandoraden miljön. Så det är bra att hoppa i början och få lite erfarenhet. Så låt oss göra det. Så det är Rob. OK, så låt oss bara hoppa till kommandoraden grejer. Så detta är apparaten. Kan någon berätta för mig varför Vi använder en apparat? Vad är apparaten? Är det någon som vet? Vad händer? STUDENT: Det är bara en virtuell maskin att du kör maskinen så att du kan komma över OS motsättningar mellan Mac och PC. JASON Hirschhorn: Perfect. STUDENT: Det är en universell mall. JASON Hirschhorn: Ja, är det som en universell mall. Det var perfekt. Så ja, det är en virtuell maskin. Så det är i princip ett operativsystem. Detta är ett operativsystem. Detta motsvarar din Mac eller din dator, eller Linux. Detta är exakt samma. Och så du kan göra liknande saker. Om du ville, du kan gå online till exempel. Du kan inte riktigt se det, men just här, Google Chrome. Du kan gå online om du vill. Detta är ett operativsystem. Och anledningen till att vi gör det beror på att det är mycket lättare när vi delar ut instruktioner och allt. Om det bara är en enhetlig miljö, det är mycket lättare för oss, och det är mycket lättare för dig. Du ska inte köra in det stöter på några egenheter när du programmerar. Vi vet exakt vad du kommer att stöta på. Så apparaten är här. Så när du börjar programmering, du är kommer att gå ner till till vänster om hörnet. Det finns en liten låda. Du kommer att klicka på den. Detta är din terminalfönster. Så det är där du ska att vara en hel del av terminen. Så låt mig zooma in en liten bit. OK, så att komma runt en terminal Fönstret är lite annorlunda. För det första finns det inga ikoner. Jag kan inte klicka på någonting. Det finns inget att klicka. Så du måste lista ut ett sätt att räkna ut var du är, vad som finns här, och hur man kan flytta runt. Så de två mest användbara kommandon förmodligen är ls-- så vad tror du ls gör? STUDENTEN List. JASON Hirschhorn: Listor, ja. Den listar bara algoritmer inom katalogen. Och sedan cd. Så låt oss säga att jag ville cd CS50, vad gjorde det göra? Yeah? STUDENT: Ändrar din katalog. JASON Hirschhorn: Perfekt, ja. Det ändrar bara katalogen. Så låt oss gå tillbaka. Så hur går jag tillbaka? Så låt oss säga att jag ville gå tillbaka till föregående katalog. Ja säkert. STUDENT: Jag tror att du skriver cd precis utan någonting. JASON Hirschhorn: Du kan göra det. Så perfekt. Så om jag skriver cd, är detta faktiskt kommer att dyka mig säkerhetskopiera till hemkatalogen. Så du ser det här tilde, det kommer att smälla mig vägen tillbaka upp till där tilde är. Så det kommer att dyka upp mig tillbaka till hemkatalogen. Men låt oss säga att jag gjorde något liknande. Låt oss säga att cd CS50. ls igen. Jag har andra saker. cd super avsnitt. cd-fil, så jag kommer djupt. Och låt oss säga att jag vill bara pop tillbaka upp till toppen. cd. Låt oss säga att jag inte vill göra det. Låt oss säga att jag vill bara pop tillbaka upp till den katalog som var precis ovanför mig. Hur gör jag det? Så låt oss säga cd CS50. cd supersection. Så låt oss Jag är här. Låt oss säga att jag vill bara att dyka upp någon gång. Hur gör jag det? Ja, vad är det? STUDENT: Du skriver bara cd supersection igen. JASON Hirschhorn: Du kan göra det. Tja jag är i supersection. STUDENT: Åh, den förra. JASON Hirschhorn: Ja, så du kunde göra det. Du gör cd ~ CS50. Så om man tittar här, detta är din väg här. Det är din väg. Så du kan allvarligt bara gå cd ~ / CS50. Boom, du är där. Vad är ett enklare sätt att göra det ändå? Det var helt korrekt, men vad är en något enklare sätt att göra det, eftersom mycket gånger du går att hoppa i kataloger, hoppa ur kataloger. Så låt oss gå tillbaka. cd supersection. Så låt oss säga att jag vill komma tillbaka riktigt snabbt. Du kan göra något liknande cd dot dot. Det kommer att dyka du säkerhetskopiera riktigt snabbt. Så cd supersection. cd-filer. Låt oss säga att jag är här. Förresten, är klart bra, eftersom min Fönstret var att få lite rörigt. Så ls, så jag vill inte vara här längre. cd dot dot. Ta mig en upp. Cd dot dot tar mig en upp. Cd dot dot och tillbaka till mitt hem. OK, så cd, ls. Förmodligen det viktigaste saker, för att du är kommer att behöva veta var du är. ls kommer att berätta för dig var du är, och cd är hur du kommer att hoppa runt. Du kan också göra en del andra saker. Så till exempel ls. ls bara kommer att visa dig katalogerna i din fil. Det kommer också att visa dig filerna. Men det är bara att gå till visa vad som finns där. Om du ville ha något lite mer cool, och du kommer att faktiskt göra detta i ett par veckor. ls streck l. Som skriver ut ett lite mer information. Kan någon gissa på vänster sida på drwx, rwx och sånt. Är det någon som har en idé vad det kan innebära? STUDENTEN Behörigheter. JASON Hirschhorn: Ja, perfekt. Behörigheter. Så du kommer att måste ta itu med detta när du gör webbprogrammering senare. Om du någonsin har gått online, och du har klickat på en bild eller klickade på ett fält, och det sa permission-- liknande tillstånd inte tillåtet, eller liknande tillstånd inte beviljas eller vad som helst, det beror på att när de är programmering, de har inte satt dessa behörigheter att låta dig göra det. Så var det kommer ifrån. OK, så det är coolt. Så vi hoppade runt. Vi kan titta på saker i vår katalog. Men hur gör vi saker? Jag har kataloger här. Det är häftigt. Hur gör jag en ny katalog? Säg jag vill göra en ny katalog för just nu. Du kan göra något sånt här, mkdir. Så gör katalog. Så vad vill du kallar den här katalogen? STUDENT: Awesome. JASON Hirschhorn: Awesome. Jag älskar det. Gör katalog häftigt. Och där du går. Så vi behöver en lista. Du har en ny katalog. Och du kan säga att det är en katalog i din apparat eftersom det har fått denna färg, eller hur? Så det är som en blåaktig lila eller något annat. Så låt oss byta. Låt oss byta katalog. Låt oss gå in i directory-- Ja, vad är det? STUDENT: Finns det en lista över alla dessa [OHÖRBAR] på nätet? JASON Hirschhorn: Ja, jag ska sätta dem on-- vi ska ha bilder. Det blir en PDF. Vi ska sätta upp dem för alla. Ja, tyvärr är det en hel del kommandon. om du vill att jag ska sakta ner, eller gå tillbaka, eller något liknande, definitivt låt mig veta. Det är mycket att ta till sig direkt. Vad händer? STUDENT: Kan jag be en potentiellt dum fråga? JASON Hirschhorn: Det finns inga dumma frågor. STUDENT: Det finns. En katalog är bara titta på uppgifter där du lagrar den. JASON Hirschhorn: Ja. STUDENT: Är det i huvudsak vad du gör? Så när vi gör något, hallå världen eller vad som helst, det är lagrat i katalogen, ja? JASON Hirschhorn: Ja. STUDENT: Är det sant för allt. Allt lagras i katalogen. JASON Hirschhorn: Ja. När du gör det, den katalog du befinner dig i, det kommer att i grunden förvara den i den katalogen. STUDENT: Och när vi kallar det, Vi kallar det från katalogen. JASON Hirschhorn: Ja, så katalogen är där it es. Så det är ungefär som om du har en ny mapp på skrivbordet och sedan skriva en text fil, lägga den i mappen, att filen finns i den mappen. Är det vettigt? STUDENT: Ja. JASON Hirschhorn: Ja, vad har hänt? STUDENTEN Får jag bara fråga dig göra det lite större? JASON Hirschhorn: Oh, ja. Ursäkta. Projektorn är så dålig. Vi hade så mycket problem med detta tidigare. Är det bättre? Är det för stort? STUDENT: Nej, nej det är det inte. JASON Hirschhorn: Nej, det är inte. Är det för litet? Vad händer? STUDENT: Jag är ledsen, vad är kommandot för att rensa? JASON Hirschhorn: Åh, klart. Om du vill ta bort, bara skriver klart. tydligt anger. På den sista apparaten, vad det i grund och botten gör, Det rensar inte din information, det bara typ av skift allt ned en skärm. Så om du skrev clear-- för exempel låt oss säga att jag rulla upp. Jag kan rulla uppåt. Detta är allt jag gjorde. Men om jag skriver klart, och sedan Jag rulla upp, här är mina saker. Så det är inte radera det, det är bara i princip ge dig en ny ram. STUDENT: Hur gör ni [OHÖRBAR] en katalog? JASON Hirschhorn: Vi ska komma dit. [LAUGHTER] Sakta din rulle. Okej. OK, så så vi är i en katalogen just nu. David, jag tror på föreläsning Han gjorde en del coola grejer. Så låt oss skriva ett program. Så du kan göra att en antal olika sätt. Du kan använda någon form av textredigerare. Du kan använda Nano, du kan använda Vim, Emacs. De är något mer komplicerad. Eller så kan du använda något i här som kallas gedit. Ursäkta. gedit är inte glad. Så gedit är i grunden bara en textredigerare. Precis som jag textredigerings ord processor eller något liknande. Så det har fått en fin gränssnitt gillar just detta. Så du göra något liknande. Så egentligen vill jag ge det namn eftersom jag gjorde aldrig det. Så vad vill du namnge vårt första program? Det kommer bara att säga hej. STUDENTEN [OHÖRBAR]. JASON Hirschhorn: Du saknar fantasi. OK, gedit. Hej. Jag kommer att göra .txt. OK, så här är det. Så låt oss skriva ett program. Så jag tror att du såg detta i föreläsning. Du behöver en huvudfunktion. Boop. Så det här är bara en huvudfunktion. Större? Ja, förlåt. OK så du behöver en huvudfunktion. Jag tror jag hoppar pistolen lite, men det är aldrig dåligt att få van vid den här typen av saker. Så en huvudfunktion, Varje C-program du är ska skriva under resten av det här Kursen kommer att ha en huvudfunktion. Är det någon som vet varför? Vad händer? STUDENT: Start. JASON Hirschhorn: Exakt, så det talar om för programmet var du ska börja. Så om du inte har en huvudfunktion, och du sammanställa detta och grejer, det kommer inte att veta var du ska börja. Huvud är alltid där det börjar. Så du har en huvudfunktion, och sedan Är det någon som minns hur man skriver ut? STUDENTEN printf. JASON Hirschhorn: Ja, printf. printf hej. OK, nu har jag som ni upp att misslyckas, men kommer detta att sammanställa. STUDENT: Nej. JASON Hirschhorn: Varför? Det finns flera skäl till varför. Visst. STUDENT: Det har inte standarden [OHÖRBAR]. JASON Hirschhorn: Perfect. Så vad är det som kallas här uppe? STUDENTEN [OHÖRBAR] JASON Hirschhorn: Det är en header-fil, eller hur? Det är en header-fil. Och du är helt rätt. Ni båda har rätt. Så för att inkludera den, jag gör bara pund inkludera standard in output .h. Är jag bra att gå nu? Skulle detta sammanställa? STUDENT: Nej. JASON Hirschhorn: Varför inte? STUDENT: Det är en [OHÖRBAR] text. JASON Hirschhorn: Ja, awesome. Så jag bara gjorde det. Så jag sparade den, men gedit hi.txt. Så nu om jag gör ls, det är här. Just här. Åh, det är inte i häftigt. Jag måste ha gått ut. Åh, perfekt. Hur kan vi sätta detta i häftigt? Så jag vill inte ha det här i mitt hem katalog med allt annat. Jag vill lägga den i mappen. Hur gör jag det? Inte för hårt. Flytta. Så vi har redan lärt ls, lista. cd att ändra kataloger. cd dot dot bump ur kataloger. Och nu ska vi börja röra sig runt filer. Så för att flytta bara flytta hi.txt, och Jag ska lägga den i häftigt. Var bara försiktig. När du skriver i kommandoraden, allt frågor. Så versaler frågor. Om jag hade gjort små bokstäver a, det är inte att veta vad som händer. Så allt frågor för att vara mycket specifik. Så kör det ls. Det är inte längre här. Låt oss byta katalog till awesome. ls. Boom, det är där. Och någon nämnde varför detta inte skulle kompilera. Varför kommer inte att kompilera igen? Yeah? STUDENT: Det är inte i en .c. JASON Hirschhorn: Perfect. Det är inte en .c, s så hur är jag kommer att byta namn på den till en .c? Vad är ett enkelt sätt att göra det? Låt oss använda kommandot vi just gjorde. Så vi ska bara flytta hi.txt att hi.c. ls hi.c. Och sedan bara för skojs skull, låt oss bara hoppa in i denna riktigt snabbt. hi.c. Du kommer att märka att det är fint och färgglatt. Så dessa är bara typ av hjälp färger när du programmerar. Så int och tomrummet, de är datatyper. Vi ska gå över dem i en sekund. Hej är en sträng. Men användbara färger. Så om du någonsin av misstag väljer fel förlängningen, Du bör ha dessa färger. Vad händer? STUDENT: Hur kan jag kopiera till en fil [OHÖRBAR] i en annan fil? JASON Hirschhorn: Åh, jag är ska visa dig det också. Så kopiera bort finns på kajen. Låt oss göra detta. Se till att det fungerar. Gör hej. Works, kör den. Så ./hi häftigt. Det är ditt första program. Låt mig göra det större. Så en riktigt good-- Ja, vad är det? STUDENT: Varför skulle det vara att när jag tar gedit, det inte ger mig en annan rad för gedit hi.txt? Det sätter bara markören till en linje. STUDENT: Ja. Den [OHÖRBAR]. JASON Hirschhorn: Vänta, så säger det igen. STUDENT: När jag skriver gedit, den första gången den första line-- JASON Hirschhorn: Upp finns högst upp? STUDENT: Har inget J Harvard apparat, och markören är bara hela vägen till vänster. JASON Hirschhorn: Alla vägen till vänster? STUDENT: Ja. Har någon annan har det? JASON Hirschhorn: Oh, ja J Harvard är precis som användarnamnet. Så det är bara standard användarnamn. STUDENT: Det slutar svara. JASON Hirschhorn: Åh, Det slutar svara. OK, så vad du behöver göra är att du måste stänga av gedit. Så nära ur gedit, och den ska visa. Så är gedit öppen på apparat just nu? Om du stänger av den, bör det tillbaka och du bör vara bra att gå. Gjorde det ihop? STUDENT: Det gjorde du använda kommandot gedit att open-- JASO Hirschhorn: Nej, det första gedit kommando var ett misstag. Den första gedit kommando, Jag ska göra gedit hi.txt. Så jag ger det ett namn, så gedit hi.txt. hi.txt är namnet på filen. Den första var bara ett misstag, och sedan Jag stängde snabbt ut ur programmet. Så frågan var om jag gör gedit, jag är inte kommer att kunna verkligen göra något annat i min kommandorad tills jag stänger den gedit, så jag tror att det är vad de sprang in. Så stäng gedit. Det kommer tillbaka ut ur det program, och sedan kommer du kunna faktiskt skriva på kommandoraden igen. Är det bra? Dope. Så bara se till att stänga det om du stöter på problem. OK, så en riktigt bra fråga en sekund sedan var kopiering. Så nu har jag hi.c. Men låt oss säga att jag vill ändra det. Jag vill att det ska vara något bättre. Jag vill säga hej klassen. Men jag vill behålla den här mallen. Jag behöver inte skriva om hela programmet igen. Jag vill behålla mallen. Hur kopierar jag? Easy. Så cp hi.c newhi.c. Nu har jag två. Och då kan jag öppna upp newhi.c, och i stället för att bara säga hej, Jag ska säga hej klass! Så jag ska gå tillbaka. Avsluta ut. Gå tillbaka till min kommandorad. ls göra newhi. Kör den. Där. Det är bättre, mycket bättre. Så om du vill kopiera något, enkelt är det. cp är kopia. Så vi har gått över i rörelse, gör kataloger, kopiering. Låt oss se vad mer ska jag gå över? Oh, ja. Låt oss gå igenom det här. Så det här var häftigt. Låt oss säga att jag ville att-- oh vänta. Jag kommer att gå tillbaka till awesome. Låt oss säga att jag inte vill dessa filer här. Låt oss säga att jag vill ha dem i en ny katalog som i katalogen awesome. Jag vill börja organisera, så nu ska jag att ha en ny katalog som heter hej. Det har fått alla program Jag skriver heter hej. Så hur gör vi det? STUDENTEN Ändra katalog. JASON Hirschhorn: Ja. hej. Boop. mkdir hi_dir. Det klagade eftersom jag redan hade en hi här. Så nu har jag en hi katalog. Så nu vill jag flytta allt, alla program jag skrev, Jag vill flytta dem in i hi-katalogen. Bara ren saker upp. Hur gör jag det? STUDENTEN [OHÖRBAR]. JASON Hirschhorn: Flytta det, eller hur? Så låt oss gå. Yeah? STUDENT: Vad är skillnaden mellan hej och hi.c som vi redan har. JASON Hirschhorn: Åh, hi.c är själva. Så det är den fil som du skrev. Så om ni skulle öppna den i gedit eller Nano, det är vad du skriver in. När du kompilerar den, då du får en körbar fil. Det är hej. Så om du öppnat hej, det kommer att vara ett gäng rappakalja till dig. Det är i grunden kommer att bli gäng datorinstruktioner. Vad händer? STUDENTEN Vad gör alla färger detta? Den blå är förmodligen katalog. Vad är gul? JASON Hirschhorn: De är de körbara filer. Så när jag gjorde hi.c, det gav mig-- så jag kan göra det. Hoppning pistolen. Så ta bort hej ja. Så låt oss göra ls. Jag har inte hej längre. Så när du gör, det är då man ta det program som du skrev och du gör en körbar fil. Så gör hi.c-- bra, gör hej. Jag tror att han gick över detta i föreläsning. Dessa gäng kompilator instruktioner. Så istället för att faktiskt skriva klang med alla dessa. Dessa är flaggor. Du skriver bara göra. Så detta gör körbara filer. Så när du gör ls, nu har du hi. Så det här är vad du är kommer att faktiskt köra. Och så du kör det genom att göra ./hi, och det körs programmet. Men om jag försöker göra det med hi.c, nej, det kommer inte att fungera. Ja, gör det vettigt? STUDENT: Mm-hm. JASON Hirschhorn: Cool. Vänta, jag ville säga något annat. Bara riktigt snabbt, i det fall någon är intresserad, när du hoppar ut ur en katalog, det är dot dot. Är det någon som har en idé om vad kanske bara de singulära prick betyder? STUDENTEN [OHÖRBAR]. JASON Hirschhorn: Det är faktiskt den aktuella katalogen. Så det är din aktuella katalog. Så jag är här. Jag är i fantastisk. Om jag gör cd prick, inte göra någonting. Det tar mig till min nuvarande katalog. Så lite överflödig, men du har att göra det, så ./ ditt programnamn, För att köra din program, måste du göra det. OK. STUDENT: Om du gör cd dot dot dot, men många prickar kommer det bara att ta dig upp att många kataloger? JASON Hirschhorn: Du menar som cd dot dot dot dot? STUDENT: Ja. JASON Hirschhorn: Nej. Så egentligen Minns jag gjorde ls -l? Om jag gör något annat, kan jag ls -a. Så vad detta säger är -a visar dig allt. Så det visar saker som är dolda och saker som inte är dolda. Så om du märker att när jag gjorde bara ls, jag bara såg det där, grejer jag gjort. Om jag gör -a, det kommer visa mig allt. Och så aktuella katalogen katalogen ovanför den. Är det vettigt? Yeah? STUDENT: Men de är inte faktiskt i katalogen. Den aktuella katalogen är inte i sig, så varför visar de med prickar inuti? JASON Hirschhorn: Du menar att det är som om det inte i katalogen. STUDENT: Rätt. Så vi har en lista över saker som finns i katalogen. JASON Hirschhorn: Jag tror det är i katalogen. Liksom -a visar allt, även om det är gömd inuti katalogen. Så jag tror det är bara en väg till aktuella katalogen om det är vettigt. Det är lite rekursiv. Det är som Inception. Vad händer? STUDENT: Så du sa -a visar [OHÖRBAR]? JASON Hirschhorn: -a, ja. STUDENTEN Vad gör det [OHÖRBAR]? JASON Hirschhorn: Tja, till exempel, låt oss gå tillbaka upp till toppen. Det är oftast saker bör du inte röra med och du behöver inte oroa dig. Så det här är typ av hemmet. Om jag gör -a, jag får massor av grejer. Allt det där. Och du behöver inte röra med någon av det grejer. Definitivt inte börja gå in här och bara ta bort saker. [LAUGHTER] Ja, det var lite mer här bekväma grejer, men det är bra att veta. Jag tycker det är bra att veta. Men om du aldrig vill skriva -a i helheten av denna kurs, bara glömma det. Vad händer? STUDENTEN Vad de ls -l? JASO Hirschhorn: Det visar behörigheter. I grund och botten du använda den för behörigheter, så -l. Det visar lite lite mer information men återigen, det är lite lite mer bekväma grejer. Dessa är bara några behörigheter. Så behörigheterna mapparna. Så bara till exempel, låt oss säga att jag gjorde en mapp, så att d representerar katalogen. Så de är kataloger. Och sedan läsa, skriva, exekvera. Så de är behörigheter för Jag tror att användare, grupp, värld. Helt gå för långt. Du kommer att hamna i den här liknande veckor från och med nu, men bara så du vet, de är behörigheter. Vad händer? STUDENT: Kan du klart i stället bara hoppa till nästa sak, kan dig-- JASON Hirschhorn: Du menar verkligen radera? JAG VET INTE. Jag gör aldrig det. Varför skulle du vilja göra det? Varför skulle du göra det? Jag gillar det. Du bor på kanten. Du är som jag inte vill ha något av detta. Det är intensivt. STUDENTEN [OHÖRBAR]. JASON Hirschhorn: Ja, kan vi göra det. Tyvärr, Messina med storleken är helt skrämmer mig just nu. Låt oss gå upp. Ja, så nu kan jag inte gå upp längre. Så allt jag lärt du är borta för alltid. Tack. Vi gjorde våra kataloger. Vi gjorde våra filer och sånt det, så vi har fortfarande allt det där. OK, jag ska gå fort. Så riktigt snabbt. Så låt oss säga att jag är i awesome. Låt oss säga att jag ville flytta allt till den nya katalogen för jag vill bara att organisera det, eller hur? Så hur skulle jag göra det. Flytta. Vi kommer att använda gång igen. Så rör hi.c. Och vad du kan göra är att du börjar notering grejer, och det sista du lista är där det kommer att flytta den. Så rör hi.c, hi newhi newhi.c, hi_dir. Och så flyttade allt till det sista du nämnde. Så då byta katalog, hi_dir ls. Allt finns där. Så det är trevligt och mer organiserad. OK, låt oss säga att jag hatar min ursprungliga hej program. Jag vill bli av med det. Hur får jag bli av med det? Vad händer? STUDENTEN [OHÖRBAR]. JASON Hirschhorn: Låt oss säga att jag bara vill ta bort programmet, så det är bara hej. Nej, du har rätt. Så det är rm, men du rm hej. Det kommer att ge dig en liten varning. Det kommer att säga är du säker på att du vill ta bort denna, och ja det gör jag. Om du inte vill bli tillfrågad sånt eftersom du inte har tid för varningar, ta bort -f. Detta är en annan flagga. Det är som -l. Det är som -a. Dessa är bara flaggor som du ger dessa kommandon. Så avlägsna -f. -f f betyder kraft. Så tvinga det. Jag vill inte bli tillfrågad. Så avlägsna -f. Låt oss göra hi.c. Bara blev av med det. Det inte berätta. Men låt oss säga i stället är jag gjort med den här katalogen. Jag vill bli av katalogen. Så jag bort hi_dir. Nej, det fungerar inte. Nej, så det inte kommer att låta mig ta bort en katalog. Är det någon som har en idé? STUDENT: Är det bort dir? JASON Hirschhorn: Så ta bort så här? STUDENT: Nej. Bara [OHÖRBAR]. JASO Hirschhorn: Nej, just nu finns det inget hej. Det finns bara hi_dir. Så detta är katalogen. Så egentligen vad du vill göra är-- åh, har du en idé? Jag ser ut som en halv hand. STUDENTEN [OHÖRBAR]. JASON Hirschhorn: OK. STUDENTEN [OHÖRBAR]. JASON Hirschhorn: OK. Så om jag vill ta bort en katalog, ta bort -r. Det är rekursiv. Så ta bort katalogen rekursiv. Så jag vill att du ska gå in i den katalogen, ta bort allt i katalogen, och sedan bli av katalogen. Och sen ska jag f också, eftersom jag inte vill att det ska uppmana mig med varningar Efter det tar bort varje enskild fil. Så avlägsna -rf hi_dir. Boom, det är borta. Bara vara försiktig när du använder det. Jag kommer att använda den även här. -rf häftigt. Den är borta. Var försiktig när du använder det. Om du använder det här och skriva något så här, inte någonsin göra det. Det kommer att radera allt på din apparaten utan att någonsin varnar dig. Och jag har gjort det. Betygs problem ställer till 04:00, var jag försöker ta bort problem som kataloger, och jag gjorde detta. Och jag var som oh my god. Inte do-- jag försökte avbryta den. Du kan avbryta. Kommando C avbryter precis allt, men jag redan raderade ut 75%. Så jag förstört den. Och människor gör det. Alla gör det. Gör inte detta men den här terminen. Det suger. Jag är nervös att ha det här. Jag kommer att ta bort det. [LAUGHTER] Kan du tänka dig? OK, frågor. Ja? STUDENT: Så om vi gör allt du gör här, detta är samma så bara gå in faktiskt Arkiv Spara som [OHÖRBAR]. JASON Hirschhorn: Åh, du menar med gedit. STUDENT: Ja. JASON Hirschhorn: Ja det är. gedit är användbart. Så gedit är mycket användbar. I denna klass, kan du göra en massa saker genom gedit. Du kan spara. Du kan byta namn. Du kan flytta filer och sånt, men bara sanningsenligt när du går till 50-- bra du är i 50-- 51, om du går till 61, detta kommer att bli ditt liv. Detta är kommandoraden. Det är där du kommer att programmera för resten av ditt liv, så definitivt använda gedit om du vill. Definitivt ett bra sätt att börja. För det första problemet sätter, definitivt använda, men varje gång på ett tag försök att få mer vana bekvämare med kommandoradsargument. Men du kan, definitivt. Vad händer? STUDENT: Så när vi vill ta bort en av filerna som vi har gjort, det finns två sätt. [OHÖRBAR]. Finns det något sätt när du är radera en katalog att be om snabb så att du inte hamnar bort den? JASO Hirschhorn: rm -r. Så inte tvinga den. Så rm -r. Det kommer att gå igenom rekursivt, ta bort allt, fråga dig Efter allt, som kommer att driva du nötter. Som om jag nästan uteslutande gör rm -f och rm -rf, precis konstant. Jag är som jag inte har tid. Jag är en upptagen man. Okej, vad har hänt? Yeah. STUDENT: Finns det en ångra, eller en papperskorgen, eller något liknande? JASON Hirschhorn: Nej. [LAUGHTER] Jag skulle kunna gå tillbaka och få min apparat som jag raderade precis, nej. Nej, nej, nej. Om du gör rm, bör det vara borta. Vad händer? STUDENT: Så du kan [OHÖRBAR] tillsammans. JASON Hirschhorn: Ja, precis så. Så till exempel, såg du rm -rf. Låt oss säga att jag vill gör ls -la, det visar mig allt, även dolda saker med deras behörigheter. STUDENT: Så då r, -r flagga, om vi inte har det, Vi kan inte ta bort en katalog, eller hur? JASON Hirschhorn: Höger. STUDENT: Så det säger att vi vill ha att göra något med katalogen? Är det vad det betyder? JASO Hirschhorn: -r betyder rekursivt. Så en katalog kommer att har filer i den, eller hur? Så vad du vill göra är att du vill gå in i den katalogen, ta bort allting, hela filer i den katalogen, sedan hoppar ut och ta bort den faktiska katalogen. Så -r betyder rekursiv, gör det allt rekursivt om det är vettigt. Yeah. STUDENTEN Så kataloger har [OHÖRBAR] och bara ta bort den. Eller vill du still-- JASON Hirschhorn: Låt oss försöka. Så mkdir tom. Ta bort tomma. Nej. STUDENT: Nej, så du behöver fortfarande the-- JASON Hirschhorn: Ja, alltid. Så -r, -rf, tom. Grymt. Anymore frågor? Jag tror att det är din krasch kurs på kommandoraden grejer. Alla frågor, eftersom vi kommer att hoppa över till datatyper, och loopar, och allt det där? Vad händer? STUDENTEN Jag har inte CS50 visar som en av mina kataloger. Är det normalt? JASON Hirschhorn: Oh, ja. Det är min. Ja, det är där min lösningar på dina grejer är. [LAUGHTER] Så ja, det är helt normalt. Jag tror att du kommer antagligen bara dessa fyra. Jag tror att det kan vara normalt. Yeah. OK, några fler frågor? Jag vet att det var super snabb. Vad händer? STUDENT: Jag såg den blågröna färgen. Vad är det? JASO Hirschhorn: Det innebär att katalogen. STUDENT: Och här blå? JASON Hirschhorn: Åh, du menar det blå grön? STUDENT: Nej. JASON Hirschhorn: Denna blå grön? STUDENT: Nej. När du listed-- JASON Hirschhorn: Oh. Gillar du? STUDENT: Ja, ikonerna. JASON Hirschhorn: Åh, det här. JAG VET INTE. Vad innebär det? Så det verkar vara pekar på en katalog. STUDENT: Det ser nästan ut som ett alias. JASON Hirschhorn: Det kan vara. Du behöver inte veta det. Anymore frågor? Grymt. Om du har några frågor, Jag vet att det var en hel del. Mycket av denna information kommer att vara online. Jag lägger den på nätet för er. Avsnitt B kommer att vara online också. Eller om du har frågor, bara komma och fråga mig. Här har du. Så nu Sharon och Hannah kommer att gå över några av logiken bakom problemet satt ett. SHARON: Herregud. Bekymmer. HANNAH: Under tiden jag är Hanna. Det här är Sharon. Vi är båda CS50 TF, och vi kommer att ge dig en liten intro på ett par viktiga saker för problembild en. Allt från datatyper att villkors till loopar. Loopar i allmänhet. SHARON: Och i slutändan, vi kommer att ta en titt på P satt en, och vad du måste veta om det. Så låt oss börja med datatyper. Ni bör känna till de som är markerade med blått. Så vi kan börja med ints. ints är heltal, så en, två, tre, fyra. flottar, flytande punkter. Liksom heltal med decimaler, så 5,2 eller till och med 5,0. Tecken är karaktärer som A, B, C. Och en sträng, ni vet. Liksom CS50 eller hej och världen. Bool är ett logiskt, så vi har sant och falskt som vår Boolean. Så om något beräknar att truth-- 5 är lika med 5, som beräknar true och om vi har 5 är lika med 4, det är falskt, så beräknar till false. Och här har vi den tillhörande storleken av alla dessa datatyper. Och du måste veta detta för dina frågesporter, så detta kan vara till hjälp för minns, men vi kommer lägga upp dessa. Egentligen de redan bokförts. Så du bör känna till de som markeras med blått. JASON Hirschhorn: Real snabb, ifall du vill veta skillnaden mellan en röding och en sträng. Så när du skriver saker, när du har något i stil med "Hej," det kommer att vara en sträng. Så om det finns två citat, det är en sträng. Men om jag skulle till ett "h" så där, det är en sträng. Men om jag bara har en citat, det är en röding. Och så vad är Skillnaden kanske du undrar. Tja, är skillnaden detta är en byte i minnet. Detta är 4 byte minne. SHARON: flyta? Beskriv det igen? OK, det är ungefär som ett nummer som har en decimalpunkt med det, så 5,2 eller till och med 5.0 är en flottör kontra bara 5 är en int. STUDENTEN [OHÖRBAR]. SHARON: Åh, det kan ha många decimalkomma, så 5,675-3,1415. Ja? STUDENT: Behöver vi veta alla storlekar för detta? SHARON: Ja. STUDENTEN [OHÖRBAR]. SHARON: Du behöver inte oroa dig de vita ännu. HANNAH: Anteckningarna är publiceras på CS50.net/sections. STUDENT: Bara av nyfikenhet, är det ett verktyg att veta storleken på filerna du är ringa så att vi skulle veta det? SHARON: Så dessa är datatyper, men ja. Så i detta fall, som man skulle tar upp mer minne eller mer utrymme? JASON Hirschhorn: So till ett konkret exempel, i jag tror problemet set fyra eller fem, vi är kommer att ge dig ett gäng data, och du i princip måste gå igenom dessa uppgifter. Så det är bra att veta att om du har så många heltal, det kommer att vara vad. Så låt oss säga att jag gav dig tio heltal, vad är storleken på det? STUDENTEN 40. JASON Hirschhorn: 40 bytes, höger. Så du kan behöva veta att OK, jag måste hoppa 40 bytes. Så låt oss istället säga att det är 40 tecken, then-- låt oss säga att jag gav dig 10 tecken, då vet du, OK, bara jag måste hoppa 10 bytes. Så det är mycket värdefullt att känna till storleken av den faktiska datatyper, eftersom mycket gånger du kommer att hoppa runt data, så du måste veta hur långt att hoppa. STUDENT: Vad är skillnaden mellan citat och ett citat? JASON Hirschhorn: OK, två citat är en sträng. Ett citat är en röding. STUDENTEN Som operativt, vad är skillnaden? Båda säger hej. JASON Hirschhorn: Åh, förlåt. Detta är bara timmar. Tyvärr är detta inte klart. STUDENTEN Så toppen en-- JASO Hirschhorn: Detta är en sträng, ja. Så det är två tecken, eller hur? String, hej. Men låt oss säga att jag bara hade ett enskilt tecken, om jag sätter två citattecken runt bara h, det är en sträng. Detta är en sträng h. Är det vettigt? Så det här är fyra byte. Men låt oss säga att jag fick bort av att en bara sätta en. Ett citat. Detta är nu en röding, en röding h. Så exakt samma sak, olika datatypen. Detta är endast en bitgrupp, under det att strängen var fyra byte. Yeah. STUDENT: Så om du försökte att lagra ett ord som David, du skulle vilja använda en sträng eftersom oavsett hur lång strängen är, Det tar bara fyra byte om det inte är en lång lång eller en dubbel, där case-- så om det sträcker sig längre än fyra tecken, sedan du vill göra det till sträng. Är att den allmänna logiken bakom. JASO Hirschhorn: Om det sträcker efter ett tecken, det är en sträng. STUDENT: Så det finns ingen [OHÖRBAR] att lagra en fyra brev ord som fyra enskilda eller tre bokstäver ord som tre enskilda tecken eftersom det bara kommer att vara tre byte, i motsats till de tre del sträng. JASON Hirschhorn: Du kan göra det. Du kan göra det, men det gör jag inte tycker att det är verkligen värt, eftersom du bara sparar en byte. Du vet vad jag menar? I den stora tingens ordning, som egentligen ingen roll. Men exempelvis printf, om du skriver f och du har tre tecken som du kan skriva ut som out-- låt oss säga att du C-A-T, Du kan skriva ut katten bara genom göra något char en char en röding, eller så kan du skriva ut sträng katt. Det är exakt samma sak. Så du skulle kunna göra det så, men-- STUDENT: Det kommer inte att spara så mycket. JASON Hirschhorn: Ja. Huvudvärken som det skulle Framkalla är inte värt det. Yeah? STUDENTEN Exempelvis du hade h med ett kontra två, enkla eller dubbla citattecken. Varför skulle du vill spara en enda bokstav som en sträng. Vad är syftet som någonsin tjäna? JASON Hirschhorn: Jag vet inte. Jag menar, det är verkligen beror på programmet. Till exempel tror jag senare du får in i kommandoraden grejer. Så till exempel, i stället för mig frågar efter en integer-- ledsen, kan jag tala i er? HANNAH: Ja. JASON Hirschhorn: So till exempel, i stället av mig ber om något med få slut, vilket Jag tror att du kanske har sett en föreläsning, det kan finnas en kommandorad. Du skriver bara in den på kommandoraden. Det skulle vara som - / hello4 eller något, eller helloh h, vad som helst. Du gör det på kommandoraden istället för att bett om det, att kommandoraden är alltid en sträng, oavsett om det är en fyra eller en timme, det är alltid en sträng. Så det är ett exempel på när du kanske ha en singular bokstav eller en sällsam nummer representerad som en sträng. SHARON: Okej. Och så här är några grundläggande operatörer. Förhoppningsvis du är bekant med första fyra bara i allmänhet. Så det är att lägga till, subtrahera, multiplicera och dividera, och se till att du använder de rätta tangenttryckningar. Och sedan finns det också modulo, som vissa av er kanske inte särskilt bekant med. Och vad modulo gör är att om vi tar det här exemplet 4% 2, det tar återstoden av vad det gör i division. Så 4 delat med två är 2, och det finns ingen rest. 4 dividera med 3 är 1 och 1/3, och så resten 1. Så den beräknar att en. Och därefter 4% 5 är den fraktion 4/5, och återstoden är 4. Är det vettigt? OK, cool. Och vi följer PEMDAS här också. Så några booleska uttryck. Så ni har sett lika jämlikar att jämföra, säg, två siffror. Så om fem lika lika 5, som beräknar till true. Se till att du bara har ett likhetstecken. För inte jämlikar, det är bang eller utropstecken. HANNAH: Två likhetstecken när du gör jämställdhet. SHARON: Oh, ja. Se till att du inte gör det har man likhetstecken. Och sedan för inte jämlikar, Det är bang lika. Och sedan kan du titta igenom för mindre än, större än. Och så har vi logiskt och och logisk eller här. Och vad det gör är, om du kommer ihåg i Scratch när du hade det blocket som sagt, och, och sedan skulle kunna passa två olika delar där, det är vad det här och gör. Och se till att du gör två et-tecken. Och denna nyckel hittar du mot höger, rakt under din knappen Ta bort. Fråga? STUDENT: Vad var det [OHÖRBAR]? SHARON: OK, så om du bara göra en, du jämföra bitar. Så om du kommer ihåg vilka bitar är, de är 0 s och 1: or, och så som är att jämföra något annat. Så vi kommer att fokusera på detta nu. JASON Hirschhorn: Så en lika är som uppdrag, eller hur? Så som int x är lika med 4. Du säger att variabeln x är lika med 4. Så 1 är lika med är uppdraget, men ands och rören eller barer, precis som Sharon sa, de är bitvis operatörer. Du behöver inte bekymra dig om det. STUDENT: När tror du använder logiska och och logisk eller igen? Jag glömde bara när du gör det. HANNAH: Visst, så om du någonsin vill för att kontrollera om två saker är sanna, till exempel, låt oss säga att jag vill kolla att ett nummer är mellan 5 och 15, Jag skulle säga att se till att antalet är större än 5. Så låt oss säga om x är större än 5 och mindre än 15. Så för att hela uttalande att utvärdera på true du behöver både på den typ av sub rapporterna att bedöma den verkliga. Med eller om du bara behöver en av de två eller båda. STUDENT: Stor, tack. SHARON: Och även i Scratch, jag är säker på en hel del av dina projekt du hade om att röra vid kanten eller om vidröra en annan sprite sedan studsa eller något. HANNAH: Okej, så varför gör vi bryr sig om alla dessa Booleans? Vi har dessa strukturer som du har ses i Scratch kallas villkors. Och villkorssatser är något av det bildas om något villkor eller någon Boolean är sant, då gör koden mellan dessa klammerparenteserna. Så du kan se till höger här är det Scratch blocket. Du har den här om då, och vad som helst som går in i den lilla form som ser ut som this-- jag vet inte vad du skulle Ring that-- det kommer att vara Boolean eller tillstånd. Så återigen, en boolesk eller villkoret är något som antingen utvärderas till sant eller falskt. Och återigen, kan du kombinera Booleans. Du kan ha, återigen, är x större än 5 och x är mindre än 15. Eller så kan du bara ha en av dessa x är mindre än 5. OK, så i C Det är till vänster. Det är bara nyckelord om. Inom parentes tillstånd eller Boolean. Och sedan koden i mellan dessa två klammerparenteser kommer bara att köra, kommer bara köras om detta villkor eller att Boolean är sant. Är det vettigt? Grymt. OK. Och sedan när du får har sett i Scratch, Vi kan också lägga på en annat, vilket egentligen är något mellan klamrar enligt annanstans kommer bara att köra om villkoret är falskt. Vettigt? Eventuella frågor om dessa två? Grymt. Cool. Så här är ett snabbt exempel. Låt oss säga att vi vill bestämma, baserat på den tid, om vi ska säga bra morgon eller god kväll. Jag ska säga om det är före 12.00, vi kommer att säga god morgon, annars ska vi att säga god kväll. Och när jag säger att något annat, som är likvärdig i C till detta annat. Så vi kommer att kontrollera om militära tiden är mindre än 0:00, säger god morgon. Annars säga god kväll. STUDENTEN Så vi skulle faktiskt få den ingången för militär tid med get strängen. HANNAH: Höger. Gjorde Någon annanstans skulle vi faktiskt måste tillhandahålla denna information. Just här har inget värde. Vi har aldrig ens förklarat det. Jag antar att någonstans ovan detta program jag förklarade tiden, eller frågade tiden eller-- något annat med detta exempel? Grymt. OK, nu har vi dessutom till det enkla, om annat format, vi har två andra olika strukturer. Så först måste vi switchen uttalande, och här är den allmänna formen av en switch uttalande. Du har nyckelordet växla samma sätt som du har nyckelord om. Och sedan en ingång, i detta fall n. Så detta kan bara arbeta med heltal. Så att indata n har att vara ett heltal, OK? Och vi kommer att följa en av dessa fall beroende på vad det värdet n är. Så i detta fall, du först jämföra är n lika med konstanten en, om det är, gör allt typ av indragen hit. Jag kan peka på det eftersom jag är för kort. Om det inte är lika med konstant en och är i stället lika med konstanten två, vi kommer att följa det andra blocket, och vi kan göra det här så många gånger som vi vill ha, och sedan att default är om Det matchade inte något av ovanstående fall, exekvera den koden. Eventuella frågor här? Den här är lite mer komplicerat. Yeah? STUDENTEN Break betyda vad? HANNAH: Visst, så när vi går in i detta block, om vi hittar, låt oss säga, vår n är i själva verket lika med konstant en, vi går in i det blocket efter kolon. Vi gör allt som är på den linjen att kommentera, och då kan vi bryta, vilket betyder att vi får ut denna switch uttalande helt. STUDENTEN OK. HANNAH: Mm-hm? STUDENT: Är indrag nödvändigt, eller behöver du [OHÖRBAR]? HANNAH: Visst. Så, som alltid, indrag är inte absolut nödvändigt. Datorn inte bryr sig om du dra in. Vi, som människor som är läsa din kod, bryr. Så det är mycket enklare att titta upp på skärmen och se, åh, jag vet precis vad händer när n är lika med konstanten en. Om jag hade slumpmässiga strecksatserna, jag skulle inte kunna berätta så lätt. Yeah? STUDENT: Så om ville ha en användare till välja ett av de alternativ som vi har på listan, skulle vi använder, antar jag, [OHÖRBAR] men får ett heltal dem och sätta det i n? HANNAH: Exakt rätt. Så låt oss säga att vi ville ha att kontrollera vad heltal. Vi sa oh, anger ett heltal mellan 0 och 5, låt oss säga. Vi kan be om det n, be om det värdet, och sedan har var och en av dessa fall. Och återigen, detta är något som vi kunde mycket enkelt göra med om påståenden, rätt? Vi skulle kunna ha om lika med skift en, om motsvarande fall två, om lika fall tre, så vidare och så vidare. Detta är lite snabbare och lite renare. Det är liksom bara en fin struktur nu. STUDENT: Snabbare som skriftligt? Eller tar det att köra dator lite snabbare? HANNAH: Det går lite snabbare. Yeah? STUDENT: Så den dubbla streck är bara kommentera eller-- HANNAH: Åh, jag är så ledsen. Jag ville inte påpeka detta. OK, om du har det // är en kommentar. Bara // är en kommentar. Så länge datorn ser att, det kommer att säga OK, något som följer detta, jag kommer bara att ignorera. Jag ska låtsas att du aldrig ens skrev det. STUDENT: Så det här [OHÖRBAR]. HANNAH: Det gör absolut ingenting. Men om jag skrev något liknande på första kommentaren jag skrev istället printf säger grattis du skrev konstant en, det skulle vara något. Yeah? STUDENTEN Så i verkliga livet, fallet skulle bara helt enkelt vara ett nummer och sedan [OHÖRBAR] skulle vara ett annat heltal. HANNAH: Exakt. STUDENTEN Och behöver du ellipserna? HANNAH: Förlåt? STUDENT: Behöver du det? HANNAH: Åh, nej. Jag är ledsen. Det var bara för att visa att du kan pågå i så många fall som du vill. Låt oss göra ett konkret exempel som kan göra saker lite mer tydlig. OK, så låt oss säga att jag säger, OK, ge mig ett heltal n som representerar en klassnummer, specifikt en datavetenskap klass nummer. Så om du ger mig 50, Jag kommer att säga bra. CS50 är en introduktion till dator vetenskap, och sedan kommer jag att bryta. Så det betyder att jag hoppa ur hela denna switch uttalande, så nu är jag klar att köra koden, OK? Om du gav mig i stället 51, skulle jag skriva det andra meddelandet. Och sedan om du gav mig lite nummer som inte var 50 eller 51, Jag kommer att säga förlåt, jag är inte känner till den klassen. Yeah? STUDENT: Du har inte paus. HANNAH: Jag är ledsen, jag har inte paus? STUDENT: Vad händer om. HANNAH: Åh, tänk om du har inte paus? Utmärkt fråga. Så vad skulle hända är att du skulle gå in, och du skulle kolla är jag lika med 50? Och låt oss säga, ja, du var lika till 50, skulle du skriva ut ett uttalande. Och då skulle du fortsätta att utföra, så du skulle säga är jag lika med 51? Och du skulle gå på och gå genom varje fall så? Ja? STUDENT: Är standardlinjen analogt med det som säger annat? HANNAH: Exakt. Mycket bra. Det är som den typ av fångst alla. STUDENT: Så om du inte har rast och sedan en av fall uttalanden var sant, och då är det nämnda ökning n med 1, så skulle det automatiskt göra nästa en. Det skulle kontrollera fall 51, och sedan visa det också? HANNAH: Ja, jag tror att det skulle fungera. Så du kunde sorts bli rörigt, så en paus är en bra sak att ha. Yeah? STUDENTEN Utan paus skulle det göra standard? HANNAH: Det är en bra fråga. JASON Hirschhorn: Jag tror att det bara går. Så om du inte har break-- så låt oss säga att jag gjorde 50 och den kontrollerad 50, och det skulle skriva ut det. Skriva ut CS50 som introduktion till datavetenskap. Du har inte paus, borde det gå och fortsätt tills den träffar en paus. Så om det finns något avbrott, det kommer att fortsätta. Det kommer att skriva allt annat ut. HANNAH: Så jag antar att det skulle vara inklusive standard. JASON Hirschhorn: Ja. HANNAH: Bra fråga. Yeah? STUDENT: Är fallet betraktas som en funktion? HANNAH: Jag är ledsen? STUDENT: Är fallet betraktas som en funktion? HANNAH: Är fallet betraktas som en funktion. Jag skulle tveka att säga det. JASON Hirschhorn: Så normalt när du ser funktioner De kommer att vara i klammerparenteser. Så till exempel när du ser på din kod, till exempel, main. Det var huvud öppna Paren, då ogiltigt, nära Paren. Functions-- de är i grund och botten alltid ser du parenteser. Så fallet om ärendet inte har några parenteser, det är din ledtråd som det är inte en funktion. Men det är inte. Yeah? STUDENT: Så då gör det gör växla en funktion? HANNAH: Innebär att märken växla en funktion. STUDENTEN I den meningen att du sätter något i, det ger dig ett av fallen. JASON Hirschhorn: Jag skulle inte kalla det en funktion. Inte allt med parens är en funktion. Jag menar att det är en ledtråd att det är en funktion. Jag skulle inte säga switch är en funktion eftersom det är inte riktigt returnera något. Du kommer att få in det mer. HANNAH: Ja, tänk av det som en om struktur. STUDENT: Kan du bo detta i en if struktur? HANNAH: Ja, du bo i stort sett allt. STUDENT: Barry sade citat är ungefär som samma som annars. Så kan du byta ut citat med annat? HANNAH: Inte i just detta struktur eftersom en övergång uttalande förväntar ordet standard. Datorn vet att standard betyder något speciellt, att innebär fångsten alla. Allt annat på detta. Vi har en mer för att få igenom. Yeah? STUDENTEN [OHÖRBAR]. HANNAH: Skillnad mellan med semikolon och ett kolon. Så ett semikolon är alltid att berätta dator jag gjort med denna linje. Du kan gå vidare och köra den. Detta är en komplett linje. Ett kolon kommer att, i detta fall, ge dig in i ett särskilt block. Så semikolon är alltid använda till slutledningar. Kolon används för en mängd andra ärenden. STUDENT: Är detta motsvarar säger bara om n är lika med 50, sedan bla bla bla. HANNAH: Mm-hm. STUDENT: Det är precis samma sak [OHÖRBAR]. HANNAH: Exakt. Och vi sa att det går lite snabbare. Om vi ​​inte hade pausen, det skulle vara om, om, om. Om vi ​​har paus, det är som om annars om else if else if. Cool? JASON Hirschhorn: Så när kodning, kan du bara använda om annat, men jag tror att förra året på frågesporten vi hade dem skriva en switch uttalande, så för säkerhets skull. HANNAH: Men definitivt inget fel. Vi inte förväntar dig att oroa om prestanda galna saker. Bara om annat är helt bra. Dessa är bara bra saker att vara medveten om. Och här är vår sista den typen av faller under denna villkorade kategori. Vi har något av allmän form tillstånd?, och sedan en liten bit kod som händer om villkoret är sant. Och sedan kolon, lite bit kod som körs om villkoret är falsk, semikolon. Vi är klar med den linjen. Så syntaktiskt det är lite ful. Vi kommer att gå igenom en exempel som jag tror att det är mest tydlig. Så vi vill tilldela strängen professor till en av dessa två värden, antingen David Malan eller inte David Malan, OK? Så du bör känna med strängen, professor =. Vi kommer att tilldela en sträng till variabeln kallas professor. Nu vill vi se en speciella tillstånd. I det här fallet vårt tillstånd är class_num = = 50. Och nu kan vara en god tid att påpeka när vi har sträng professor =, Det är en likhetstecken. Det är uppdraget. Medan det i class_num = = 50, det är två likhetstecken. Det är en kvalitetskontroll. Så vi kommer att säga är klassnummer som motsvarar 50? Om så är fallet, tilldela professor David Malan. Om inte, tilldela professor att inte David Malan. Några frågor där? Återigen, detta är bara något det är bra att veta. Du kan göra detta med om annat. En god praxis problem skulle kunna vara att, när du går hem, rätt exakt samma korad i en if annat formulär, eftersom du kan göra det. Eventuella frågor här? Okej, jag tror vi är kommer att gå vidare till slingor. Grymt. SHARON: OK, låt oss tala om medan loopar. Så först till vänster ser du här-- OK som säger när, medan (tillstånd). Och då gör ni this-- kan vi ändra detta? JASON Hirschhorn: Det är avskuren. SHARON: OK, och då finns är också klammerparentesen. Så låtsas att lockigt hängslen är det ovan och under göra det igen och igen. Så om villkoret i dessa parentes utvärderas till true så ska du hålla gör allt som är i while-slingan. Så till exempel, vi kunde göra en praxis problem. Jag bär två örhängen just nu, så låt oss säga Om jag bär minst en hörsel, klappa händerna. Så om vi ska gå genom detta, vi going-- [APPLÅDER] Rätt? Och jag bär en, och-- OK. Yeah. Jag inte bär örhängen längre, så inte mer. OK, så då det är då du skulle sluta. Och det man kan säga är motsvarar nästan variabler. Låt oss säga att du har en variabelt antal örhängen. Så medan antalet örhängen är större än eller lika med 1, klappa händerna. Och sedan efter clap händer, minsknings örhängen. Gör som örhängen minus 1. Så minska det antal örhängen, och då du kommer att gå igenom while-slinga två gånger. Och om villkoret är alltid true-- så om, låt oss säga, 2 = = 2, och 2 är alltid lika med 2, eller hur? Då du skulle alltid göra något där, och det är lika med nästan forever loop som vi hade i Scratch. Ja? STUDENT: Är de två sidorna bara olika sätt att skriva en while-slinga? SHARON: Så vi är fokuserade på den här först. Och sedan så låt oss jämföra den med en gör while-slinga. Så de är lite annorlunda. OK, så låt oss säga tillståndet är fortfarande medan jag bär minst ett örhänge, och jag är inte klädd några örhängen just nu. Och låt oss säga göra och ändå klappa samtidigt Jag bär minst ett örhänge. Vad ska hända? [Klappar] Uh oh, grabbar. OK, så du ska klappa gång eftersom i princip du gå igenom den första delen av koden. Du gör det oavsett vad, och då ser du om villkor, och du går tillbaka till den slingan om det är sant. Är det vettigt? STUDENT: Du alltid gör det första gången. SHARON: Du gör alltid det första gången oavsett om eller inte detta villkor är sant eller inte. JASON Hirschhorn: När får du tror att du kan använda det här? När blir det meningsfullt att använda dessa? HANNAH: Ja? STUDENTEN [OHÖRBAR]. JASON Hirschhorn: Höger. HANNAH: Mycket bra. JASON Hirschhorn: So när man uppmana en användare, du kommer att alltid vilja för att uppmana en användare en gång. Du är alltid kommer att vilja för att uppmana användaren en gång. Så i stället för att i en while-slinga, du införa göra medan loop, eftersom du är alltid kommer att göra det en gång. Om de ger dig rätt svar, du är klar. Om de inte gör det, då du åter få dem. SHARON: Okej, för slingor. Så i Scratch, hade vi upprepa block. Så vi ville upprepa något, låt oss säga, sju gånger. Så vi sa bara upprepa sju, och säger att jag är här för att hjälpa dig Snövit! I C, har vi för slingor om vi vill gå igenom något ett visst antal gånger. Låt oss säga att om vi initiera de variabla dvärgar och göra sure-- så det första blocket just där innan den första semikolon, vi initiera vår variabel till, och vi sätta den till 0. Och vår variabel där är ett heltal, int. Och variabelnamnet är dvärgar, och vi satt dvärgar till 0. Och den andra delen mellan två semikolon är vårt tillstånd. Och så länge som dvärgar är mindre än sju, Vi ska hålla kommer igenom detta för slinga. Och sedan den sista delen är vad gör vi gör i slutet av detta för loop? dvärgar ++, och det innebär att vi öka dvärgar med ett varje gång. Så vad kommer att hända här? Så först ska vi gå igenom. Vi har dvärgar som 0, och sedan ska vi att skriva ut Jag är här för att hjälpa dig Snövit! Och då dvärgar kommer att ökar eftersom vi sagt dvärgar ++. Dvärgar kommer att bli ett. Och sedan compare-- vi dvärgar är 1. Vi jämför det med är dvärgar mindre än 7? Ja. Jag kommer att gå igenom det här igen. Jag är här för att hjälpa dig Snövit! Och då blir dvärgar 2, och då kan vi jämföra det. Är 2 mindre än 7? Ja. Vi kommer att fortsätta igenom. Och vi kommer att gå genom detta sju gånger. Så i slutändan kommer vi att har dvärgar = 0 utskrift är jag här för att hjälpa dig Snövit! dvärgar är lika med 1, 2, 3, 4, 5, och 6. Kom ihåg att vi index vid 0. Så vi börjar med 0. Ja? STUDENT: Det är alltså annorlunda än den do eftersom detta skrivs inte ut ut till en början i början. Så du kan fortsätta med samma sak. Kan du göra det även med göra slingan? Liksom samma process. Villkoret är dvärgar mindre än 7 eller vad som helst. Response är lägre än 7. SHARON: Så du kunde tekniskt. Så om vi går tillbaka att-- ditt prat om while-slinga, eller hur? Så do while-slinga är något annorlunda eftersom vi garanterar minst en gång att vi ska gå igenom det, så det är den största skillnaden. Men med while-slinga vi kunde säga medan dvärgar är mindre än 7, göra detta, och sedan inkrementera dvärgar med ett. Och då måste vi initiera dvärgar innan hela detta uttalande att det är lika med 0. Så ja, vi skulle kunna göra det med det. Mm-hm? STUDENT: Kan du gå tillbaka till [OHÖRBAR]? SHARON: För loop? STUDENT: Ja, så med dvärgar ++, verkar som det är vad du gör efter du har körde på annat sätt. SHARON: Rätt. STUDENT: Kan du bara inte det och sätta det-- SHARON: Du kunde. STUDENT: Så är [OHÖRBAR] direkt efter skriva ut på nästa rad under. SHARON: Ja, du kan lägga den där. Men sedan du skulle bara lämna det tomt. JASON Hirschhorn: Du fortfarande behöver semikolon dock. SHARON: Det ser lite konstigt, men du kan tekniskt göra det. Tekniskt. Skicka inte. Ja? STUDENT: Finns det någon alternativ till ++? Finns det något annat [OHÖRBAR]? SHARON: Tekniskt sett att det är dvärgar. En likhetstecken vi ska att ställa in den till dvärgar plus 1. Så tekniskt det är vad dvärgar ++ medel. Är det vettigt? STUDENT: Ja, men är det några alternativ? Som om du ever-- SHARON: Ja, du kan göra dvärgar - -. STUDENTEN [OHÖRBAR]. SHARON: Ja, du kan göra en mängd saker. HANNAH: Och du kan öka med 2. Du kan öka med 3. Allt som kommer att förändras, det så småningom kommer att göra villkoret. STUDENT: Så om du ville öka med 2, hur skulle du skriva det? HANNAH: Du kan antingen skriva dwarves-- Du kan skriva allt det här ut. dvärgar = dvärgar + 2. Eller en något en förkortning. Jag kommer bara att skriva + lika med 2. STUDENT: OK, och du skulle skriva det precis där dvärgar ++ är där. HANNAH: Exakt. SHARON: Rätt. Det var en annan fråga? Yeah? STUDENTEN [OHÖRBAR] dvärgar ++? SHARON: Så du don't-- JASON Hirschhorn: Ja, inte behöver den där. [OHÖRBAR] mycket avsluta. Så du gör [OHÖRBAR] dem för att du är typ av dela upp initialiseringen, tillstånd, och förändringen. I slutet, behöver du inte det. SHARON: Lägg också märke till dig behöver inte semikolon efter det att hela hela för slingan. STUDENT: Hur skulle du börja med ett initialt antal negativa, till exempel? SHARON: Du kan initiera dvärgar lika med negativ 2. STUDENT: Har du bara göra dash 2? SHARON: Ja, så negativt tecken, streck 2. STUDENT: Är det [OHÖRBAR] till initiera som dvärgar [OHÖRBAR]? SHARON: Ja. Så om vi bara hade initierats dvärgar tidigare, bara göra int dvärgar semikolon, och sedan finns kan vi göra dvärgar satt att lika med 0. STUDENT: Kan vi göra det tidigare i programmet säger int dvärgar = 0, och sedan bara-- SHARON: Bara inte have-- så det skulle finnas en plats igen, men du skulle fortfarande behöva ett semikolon. Yeah. Mm-hm? STUDENT: Har denna kod säga vad värdet av dvärgar är efteråt. Om du frågar det efter allt detta är gjort att skriva ut värdet av dvärgar. SHARON: Du kan be den att göra det. STUDENTEN OK. SHARON: Men du skulle måste be den att göra det. Det behöver inte göra det åt dig. Jag är rädd för att sätta mina örhängen igen. Gör det i slutet för applåderna. Skojar bara. JASON Hirschhorn: Så det är detsamma. Så initialisera upptill. Tillstånd, skriva ut, förändring. Så detta är exakt samma som att om någon kan se det. STUDENT: Varför inte du har semikolon på första raden? SHARON: Var? STUDENTEN Efter den första raden. SHARON: Efter 4 inom parentes? Eftersom vi vill gå genom in i denna slinga. Och om du tar en titt på loopar i Generellt sett har de inte semikolon. Det är inte praktiskt. Är vi bra? En fråga, två till. Yeah? STUDENT: Detta kan vara lite avancerad, men göra dvärgar har en olika [OHÖRBAR] från en variabel [OHÖRBAR]. SHARON: Mycket bra. STUDENTEN [OHÖRBAR]. SHARON: Ja det är det. Vad? JASON Hirschhorn: Ja, så det gör det. Så normalt omfattningen av något är i klammerparenteserna. Så omfattning kommer alltid att vara i klammerparenteserna, men det skulle inte göra mycket känsla för for-slingan eftersom vi initierade dvärgar i den klammerparentes. Så normalt omfattningen av dvärgar, som variabel skulle inte sträcka sig förbi det. Detta är ett specialfall men. Så du initiera den inom dessa parenteser, och då måste räckvidden senare. Så speciellt fall. De ska inte ha det, och att was-- Att vettigt? STUDENT: Nej. JASON Hirschhorn: Jag kan gå över den. Så vad är du fortfarande förvirrad över? STUDENT: Som i kan du använda dwarves-- du kan givetvis använda dvärgar [OHÖRBAR] utanför formel också? JASON Hirschhorn: Nej, nej. Så omfattningen av det är bara inuti klamrar för för slingan, ja. SHARON: Men om du initierar dvärgar utanför for-slingan, sedan du kan använda den på annat håll Det finns en mer fråga? Nej? OK. Så vi pratade lite om häckande för öglor eller häckande villkors, om uttalanden. Så här är ett exempel på där vi kunde bo en for-loop. Låt oss säga att vi skulle trycka denna tabell för x är här. Vi kanske vill att-- först om vi bara inte titta på koden och vi tror bara på det, vi vill gå igenom varje rad och skriva ut varje kolumn, eller hur? Är det vettigt? OK. Så här är vi går igenom varje rad för i princip varje rad, och det finns tre rader. Och sedan inom varje rad för varje kolumn, och det finns fyra kolumner, skriver du ut ett x. så. När raden är 0 och kolumn är 0, vi skriver ut den här x. Och sedan hålla vi kommer genom kolonnen slinga. Row är fortfarande 0, men kolumnen är ett. Och sedan kolumnen är 2, och sedan kolonnen är 3. Och då kan vi lämna ut detta slinga för då kolumnen inte längre är mindre än fyra. Och då kan vi skriva ut en ny linje, och vi går till den nya linjen. Och sedan går vi igenom nästa rad och raden får ökas, och vi går igenom det igen. Är det vettigt? Ja? STUDENT: Så för att bo [OHÖRBAR] är bara sätta den inne i for-slingan? SHARON: Så häcknings innebär att vi har en for-loop i en for-loop, som Inception. STUDENT: Du behöver inte en speciell rotation eller något? Du bara hålla det rätt inne i det? SHARON: Rätt. Ja? STUDENT: Kanske [OHÖRBAR], men det ser ut som det finns ett extra utrymme mellan alla kryssen. Jag vet inte om that's-- Om det skulle faktiskt göra programmet, skulle det göra något liknande? SHARON: Så nej. Det tryckte på Enter. Det var dåligt från vår sida. Be om ursäkt. HANNAH: Hur skulle du ändra detta programmet om du gjorde en extra linje? STUDENTEN [OHÖRBAR]. SHARON: Bra jobbat. STUDENT: Du kan också skriva ut samma sak genom att byta runt pelaren, rätt? SHARON: Hm? STUDENTEN Så att skriva ut din lilla xxx, kan den första raden säga trycket, och istället för att säga rad, säger kolumnen. SHARON: Så du kunde förändra variabelnamn för att göra det. Är det vad du säger? STUDENT: Nej, jag är bara säger that-- så du är utskriftsrader först och sedan skriva kolumner. Kan du även skriva ut kolumner först och då rader för att få samma diagram? SHARON: Du kunde, men då skulle du ha att vara försiktig med var du sätter den nya linjen. Och hur skulle du hoppa tillbaka? JASO Hirschhorn: Om du just bytt det och värdena var olika, istället för att ha four-- vad är det? Tre av fyra. I Du skulle ha fyra rader och tre kolumner. Är det vettigt? STUDENT: Ja. JASON Hirschhorn: So ja, du kunde göra det. Ja, definitivt. SHARON: Men det skulle vara bokstavligen bara byta namn på variablerna. Bra? OK. Okej, P satt en. OK, så den första delen av det du kommer att göra detta, Mario. Skojar bara. Det är mer så här. Och så när vi bara tittade på kapslade loopar, vilket gör den tabellen, tänk på hur du skulle kunna skriva ut dessa hashtags på detta sätt. Och sedan här hur skulle du Skriv ut detta just här, denna öppna plats. STUDENTEN [OHÖRBAR]. SHARON: Ja, du bara skriva ut en plats. OK, så tänk på det. HANNAH: Och sedan samma del av problemet inställd är ett program som kallas greedy.c, så att du är kommer att vilja tänka om villkorssatser och se till att du kan göra ordentlig förändring. Och en liten varning som vi har för dig är försiktig av flyttalsvärden. Om det betyder absolut ingenting för dig, det ska täckas föreläsning denna vecka och även i [OHÖRBAR] gå igenom, vilket ni kommer att lära sig att kärlek på problemsamlingar. En sak som jag verkligen föreslå, speciellt med Mario.c, När du gör problemet ställa, om du fastnar, börja med att göra det på papper. Skriv ut och faktiskt sitter där och låtsas vara datorn, och gå through-- säga Jag var på datorn, hur skulle jag följer detta för slinga genom? Hur skulle min variabler i for-slingan förändring? Så gör det på papper gör det 10 gånger lättare när du går att sitta vid datorn. Så bara min lilla plugg. SHARON: Och dessutom tror inte att du måste koda allt på en gång. Kontrollera att du tar en iterativ process. Gör lite, print ut, se vad som händer. Ibland är det lite trial and error. Och kom till kontorstid. Super kul. JASON Hirschhorn: Så några frågor? Okej killar, som var din första avsnittet. HANNAH: Tack för kommande. JASON Hirschhorn: Tack för komma. SHARON: Tack. [Applåder]