JASON Hirschhorn: Velkommen. Så bare et par annonceringer før vi begynder. Så sektioner, alle bør har gennemskåret allerede. Sektioner normalt kører fra søndag til tirsdag. Så jer bør få dine opgaver. Og så tror jeg næste uge du vil være med din faktiske TF'er. Så hvis du har spørgsmål, eller problemer, eller du har glemt at afsnit. Nogle mennesker gør det. Bare lad os det vide. Skyde os en mail på hoveder. Derefter kontortid. Vi startede kontortid i sidste uge. Kontortid hver uge. Mandag er i Leverett 8:00 til 11:00. Tirsdage i quad, så Cabot 8:00 til 11:00. Onsdag Mather fra 8:30 til 11:30. Og torsdag Annenberg 8:00 til 11:00. Så Skrab, en masse mennesker behøver ikke kontortid hjælp til Scratch, som er helt fint. Hvis du gør det, det er helt fint så godt. Men i fremtiden, problemet apparater, de får meget sværere. Så dette vil være din ven. Absolut gå til kontortid. Planer om at gå til kontortid. Når du kommer til problem sæt fire, fem, seks, syv, er du nødt til at gå til kontortid. Det er, hvor meget hjælp og arbejdet bliver gjort. Jeg tror sidste år, bare for eksempel på torsdag night-- så jeg tror, ​​at problemet sæt var forfalder på fredag. Så torsdag aften, ville vi have 200, 250 studerende på kontortid. Så helt sikkert gøre brug af disse. Disse er dine bedste venner. Ligesom det er her, hvis du er fast på et problem sæt, dette er, hvor du skal nok få hjælp. Så kontortid. OK, så de er bekendtgørelser. Meddelelser er færdig, så lad os starte. OK, apparatet. Har alle downloade apparatet endnu? Nej. Som i så så. Jeg slags hentede apparatet. Lige så apparatet er nyt dette år, så vi er sandsynligvis kommer til at have nogle bugs i det. Så kan du downloade det så tidligt som muligt. Så problem angive én vil fortælle dig nøjagtigt, hvordan at hente den. Kom godt i gang installerer lige her. Det kommer til at fortælle dig, hvordan at hente apparatet. Så absolut downloade apparat hellere før end senere. Instruktioner er i P sæt spec. Så hvis du venter indtil onsdag nat, og så du har problemer, og du sende os en mail på midnat onsdag aften at du ikke kan downloade apparatet, der er ikke en legit grund til en forlængelse. Du er nødt til at gøre det nu, og du vil have problemer. Jeg forsøgte at hente den sidste nat. Jeg løb ind i en lille smule problemer. Hvis du løber ind i problemer installation, absolut hit Forsøg igen, fordi jeg bare ramt prøve igen en par gange, og til sidst det virkede, der ikke gør nogen mening, men det gør det. Så absolut prøve igen, men hvis du komme op mod en mur, skyde os en mail på hoveder, og vi vil være mere end glade for at hjælpe jer. Hvad sker der? STUDENT: Bare et hurtigt spørgsmål. Hvis de kontrollere stil, der er en del der siger, at vi ikke omfatter dette. JASON Hirschhorn: Ikke endnu. STUDENT: Der står udføre den. Hvordan du udfører det til sørg for at det er i dit system? JASON Hirschhorn: Du er kommer til at køre et bash kommando. Jeg vil gå over det senere. Cool. Så apparatet kan være en lille smule skræmmende, fordi du er vant til at slags kører i grafisk brugergrænseflade. Så Scratch var en grafisk brugergrænseflade interface, så hvad mener jeg med det? Hvad jeg mener, er, at når du programmerer, du dybest set ved hjælp af blokke af kode. Du kan se koden og den slags. Apparatet, er du nødt til at gøre ting i en kommandolinje miljø. Og så for resten af din programmering liv, du kommer til at gøre tingene i kommandolinjen miljø. Så det er godt at hoppe i begyndelsen og få nogle erfaringer. Så lad os gøre det. Så det er Rob. OK, så lad os bare hoppe i kommandolinjen stuff. Så dette er apparatet. Kan nogen fortælle mig, hvorfor vi bruger et apparat? Hvad er apparatet? Er der nogen vide? Hvad sker der? STUDENT: Det er bare en virtuel maskine at du kører din maskine, så du kan komme over OS uenigheder mellem Mac og PC. JASON Hirschhorn: Perfect. STUDENT: Det er en universel skabelon. JASON Hirschhorn: Ja, det er som en universel skabelon. Det er perfekt. Så ja, det er en virtuel maskine. Så det er dybest set et operativsystem. Dette er et operativsystem. Dette svarer til din Mac eller din PC, eller din Linux. Det er nøjagtig den samme. Og så du kan gøre lignende ting. Hvis du ville, kunne du gå online for eksempel. Du kan ikke rigtig se det, men lige her, Google Chrome. Du kan gå online, hvis du ønsker det. Dette er et operativsystem. Og grunden til vi gør det er fordi det er meget lettere, når vi uddele instruktioner og alt. Hvis det er bare et ensartet miljø, er det meget lettere for os, og det er meget lettere for dig. Du kommer ikke til at løbe ind det køre ind i nogen idiosynkrasier når du programmerer. Vi ved præcis, hvad du kommer til at løbe ind. Så apparatet er her. Så når du starter programmering, er du kommer til at gå ned til venstre hjørne. Der er en lille æske. Du kommer til at klikke på det. Dette er din terminal vindue. Så dette er, hvor du vil at være en masse af semestret. Så lad mig zoome ind en lille smule. OK, så at komme rundt en terminal Vinduet er en lille smule anderledes. Først er der ingen ikoner. Jeg kan ikke klikke noget. Der er intet at klikke. Så du er nødt til at finde ud af en måde at regne ud, hvor du er, hvad der er her, og hvordan man kan bevæge sig rundt. Så de to mest nyttige kommandoer sandsynligvis er ls-- så hvad tror du ls gør? STUDENT: List. JASON Hirschhorn: Lister, ja. Det bare lister algoritmer i indekset. Og derefter cd. Så lad os sige jeg ønskede at cd CS50, hvad gjorde det så? Ja? STUDENT: Ændrer din bibliotek. JASON Hirschhorn: Perfekt, ja. Det bare ændrer bibliotek. Så lad os gå tilbage. Så hvordan kan jeg gå tilbage? Så lad os sige jeg ønskede at gå tilbage til den forrige mappe. Ja sikker. STUDENT: Jeg tror du skriver cd bare uden noget. JASON Hirschhorn: Du kan gøre det. Så perfekt. Så hvis jeg skriver cd, det er faktisk kommer til at poppe mig sikkerhedskopiere til hjemmet bibliotek. Så du ser denne tilde, der kommer til at poppe mig vej tilbage til hvor tilde er. Så det kommer til at poppe mig op tilbage til hjemmet bibliotek. Men lad os sige jeg gjorde noget som dette. Lad os sige cd CS50. ls igen. Jeg har andre ting. cd super sektion. cd-fil, så jeg har tænkt mig dybt. Og så lad os sige, jeg ønsker at bare pop tilbage op til toppen. cd. Lad os sige, at jeg ikke ønsker at gøre det. Lad os sige, jeg ønsker blot at pop tilbage op til den mappe, der var lige over mig. Hvordan gør jeg det? Så lad os sige cd CS50. cd supersection. Så lad os jeg er her. Lad os sige, at jeg bare vil have at poppe op én gang. Hvordan gør jeg det? Ja, hvad sker der? STUDENT: Du skal bare skrive cd supersection igen. JASON Hirschhorn: Du kunne gøre det. Jamen jeg er i supersection. STUDENT: Åh, den ene før. JASON Hirschhorn: Ja, så du kunne gøre det. Du gør cd ~ CS50. Så hvis du ser her, er dette er din vej lige her. Det er din vej. Så kunne du seriøst bare gå cd ~ / CS50. Boom, du er der. Hvad er en nemmere måde at gøre det selv? Det var helt korrekt, men hvad er en lidt nemmere måde at gøre det, fordi en masse gange du vil at hoppe i telefonbøger, hoppe ud af telefonbøger. Så lad os gå tilbage. cd supersection. Så lad os sige jeg ønsker at komme tilbage reelle hurtig. Du kan gøre noget lignende cd dot dot. Det kommer til at poppe du sikkerhedskopiere reelle hurtig. Så cd supersection. cd filer. Lad os sige, jeg er her. Af den måde, klart er godt, fordi min Vinduet fik en smule rodet. Så ls, så jeg ønsker ikke at være her længere. CD dot dot. Tag mig en. Cd dot dot tager mig en. Cd dot dot og tilbage til mit hjem. OK, så cd, ls. Sandsynligvis den vigtigste ting, fordi du er vil få brug for at vide, hvor du er. ls vil fortælle dig hvor du er, og cd er, hvordan du kommer til at springe rundt. Du kan også gøre nogle andre cool stuff. Så for eksempel ls. ls er bare at vise dig mapperne i din fil. Det vil også vise dig filerne. Men det bare at gå til vise dig, hvad der er. Hvis du ønskede noget en lille smule mere køligt, og du vil rent faktisk gøre dette i et par uger. ls dash l. Der udskriver en lidt mere information. Kan nogen gætte på venstre side drwx, rwx og den slags. Er der nogen har en idé hvad det kan betyde? STUDENT: Tilladelser. JASON Hirschhorn: Ja, perfekt. Tilladelser. Så du kommer til at er nødt til at beskæftige sig med dette når du gør webprogrammering senere. Hvis du nogensinde har gået online, og du har klikket på et billede eller klikket på en mark, og det sagde permission-- ligesom tilladelse er ikke tilladt, eller lignende ikke givet tilladelse, eller hvad, det er fordi når de er programmering, de har ikke indstillet disse tilladelser at lade dig gøre det. Så hvor det kommer fra. OK, så det er cool. Så vi hoppede rundt. Vi kan se på ting i vores bibliotek. Men hvordan gør vi ting? Jeg har mapper her. Det er awesome. Hvordan laver jeg et nyt bibliotek? Sige, at jeg ønsker at lave en ny bibliotek for lige nu. Du kan gøre noget som dette, mkdir. Så gør bibliotek. Så hvad vil du kalder denne mappe? STUDENT: Awesome. JASON Hirschhorn: Awesome. Jeg elsker det. Gør bibliotek awesome. Og der du går. Så vi har brug for en liste. Du har en ny mappe. Og du kan fortælle det er en mappe i apparatet fordi det har fået denne farve, right? Så det er ligesom en blålig lilla eller hvad. Så lad os ændre sig. Lad os ændre mappe. Lad os gå ind i directory-- Ja, hvad sker der? STUDENT: Findes der en liste over alle disse [uhørligt] online? JASON Hirschhorn: Ja, jeg vil sætte dem op on-- vi får dias. Det vil være en PDF. Vi vil sætte dem op for alle. Ja, undskyld, det er en masse kommandoer. hvis du vil have mig til at sætte farten ned, eller gå tilbage, eller noget lignende, absolut lade mig vide. Det er en masse at absorbere højre væk. Hvad sker der? STUDENT: Kan jeg bede en potentielt dumt spørgsmål? JASON Hirschhorn: Der er ingen dumme spørgsmål. STUDENT: Der er. Et bibliotek er for bare at kigge på information, hvor du gemmer den. JASON Hirschhorn: Ja. STUDENT: Er det i det væsentlige hvad du laver? Så når vi gør noget, hej verden eller hvad, det er gemt i telefonbogen, ja? JASON Hirschhorn: Ja. STUDENT: Er det sandt for alt. Alt er lagret i biblioteket. JASON Hirschhorn: Ja. Når du gør det, uanset bibliotek, du er i, det vil stort set gemme det i mappen. STUDENT: Og når vi kalder det, vi kalder det fra biblioteket. JASON Hirschhorn: Yeah, så biblioteket er, hvor det es. Så det er lidt ligesom, hvis du har en ny mappe på skrivebordet og så skal du skrive en tekst fil, sætte det i den mappe, at filen er i denne mappe. Giver det mening? STUDENT: Ja. JASON Hirschhorn: Ja, hvad sker der? STUDENT: Kan jeg bare bede dig om at gøre det lidt større? JASON Hirschhorn: Oh, yeah. Undskyld. Projektoren er så slemt. Vi havde så meget besvær med dette tidligere. Er det bedre? Er det for stort? STUDENT: Nej, nej, det er ikke. JASON Hirschhorn: Nej, det er ikke. Er det for lille? Hvad sker der? STUDENT: Jeg er ked af, hvad der er kommandoen til at rydde? JASON Hirschhorn: Åh, klar. Hvis du ønsker at slette, bare skrive klart. klart ind. Den sidste apparat, hvad det dybest set gør, det rydder ikke dine oplysninger, det bare sådan flytte alt ned en skærm. Så hvis du har skrevet clear-- for eksempel lad os sige jeg rulle op. Jeg kan rulle op. Dette er alt, hvad jeg gjorde. Men hvis jeg skriver klare, og derefter Jeg rulle op, her er mine ting. Så det er ikke slette det, det er bare dybest set giver dig en ny ramme. STUDENT: Hvordan du [Uhørlig] et bibliotek? JASON Hirschhorn: Vi får der. [Latter] Bremse din roll. Ok. OK, så så vi er i en bibliotek lige nu. Så David, jeg tror i foredrag han gjorde nogle cool stuff. Så lad os skrive et program. Så du kan gøre, at en række forskellige måder. Du kan bruge en hvilken som helst form for tekst editor. Du kan bruge Nano, du kan bruge Vim, Emacs. Det er lidt mere kompliceret. Eller du kan bruge noget i her der hedder gedit. Undskyld. gedit er ikke glad. Så gedit er dybest set bare en tekst editor. Ligesom jeg tekstredigering ord processor eller noget lignende. Så det har fået en nice grænseflade bare gerne dette. Så du gør sådan noget. Så faktisk Lad mig give det navn, fordi jeg aldrig gjorde det. Så hvad vil du navngive vores første program? Det er bare vil sige hej. STUDENT: [uhørligt]. JASON Hirschhorn: Du mangler fantasi. OK, gedit. Hej. Jeg har tænkt mig at gøre txt. OK, så her er det. Så lad os skrive et program. Så jeg tror, ​​at du så dette i foredraget. Du har brug for en hovedfunktion. Boop. Så dette er blot en hovedfunktion. Bigger? Ja, undskyld. OK, så du har brug for en hovedfunktion. Jeg tror, ​​jeg springer pistolen en lille smule, men det er aldrig dårligt at få vant til denne slags ting. Så en hovedfunktion, hver C-program, du er kommer til at skrive for resten af ​​denne Kurset vil have en hovedfunktion. Er der nogen vide hvorfor? Hvad sker der? STUDENT: Start. JASON Hirschhorn: Præcis, så det fortæller dit program hvor man skal begynde. Så hvis du ikke har en hovedfunktion, og du kompilere det og kram, det kommer ikke til at vide, var at starte. Main er altid hvor det starter. Så du har en hovedfunktion, og derefter Er der nogen huske, hvordan man udskriver? STUDENT: printf. JASON Hirschhorn: Ja, printf. printf hi. OK, nu har jeg sat jer op at svigte, men dette vil kompilere. STUDENT: Nej. JASON Hirschhorn: Hvorfor? Der er flere grunde til. Sure. STUDENT: Det behøver ikke standarden [uhørligt]. JASON Hirschhorn: Perfect. Så hvad er dette kaldt op her? STUDENT: [uhørligt] JASON Hirschhorn: Det er en header fil, right? Det er en header fil. Og du er helt rigtigt. Begge du har ret. Så for at inkludere det, jeg bare gøre pund omfatte standard input output .h. Er jeg god til at gå nu? Ville det kompilere? STUDENT: Nej. JASON Hirschhorn: Hvorfor ikke? STUDENT: Det er en [uhørligt] tekst. JASON Hirschhorn: Yeah, awesome. Så jeg bare gjort det. Så jeg gemte det, men gedit hi.txt. Så nu hvis jeg gør ls, her er det. Lige her. Åh, det er ikke i awesome. Jeg må være gået ud. Åh, perfekt. Hvordan kan vi sætte dette i fantastisk? Så jeg vil ikke have det her i mit hjem mappe med alt andet. Jeg ønsker at sætte det i mappen. Hvordan gør jeg det? Ikke alt for hårdt. Flyt. Så vi har allerede lært ls, listen. cd til at skifte mapper. cd dot dot at støde ud af telefonbøger. Og nu vil vi begynde at bevæge sig omkring filer. Så for at bevæge sig bare flytte hi.txt, og Jeg har tænkt mig at sætte det i awesome. Bare vær forsigtig. Når du skriver i kommandolinjen, alt spørgsmål. Så store spørgsmål. Hvis jeg havde gjort små bogstaver a, er det ikke kommer til at vide, hvad der foregår. Så alt spørgsmål at være meget specifik. Så køre det ls. Det er ikke længere her. Lad os ændre biblioteket i awesome. ls. Boom, det er der. Og nogen, der nævnte, hvorfor dette ville ikke kompilere. Hvorfor er det ikke kommer til at kompilere igen? Ja? STUDENT: Det er ikke i en .c. JASON Hirschhorn: Perfect. Det er ikke en .c, S så hvordan skal jeg kommer til at omdøbe den til en .c? Hvad er en nem måde at gøre det? Lad os bruge kommandoen vi lige gjorde. Så vi bare gå til flytte hi.txt at hi.c. ls hi.c. Og så bare for sjov, lad os bare hoppe ind i denne virkelig hurtig. hi.c. Du vil opdage det er rart og farverigt. Så dette er bare lidt hjælpsom farver, når du programmerer. Så int og det tomrum, de er datatyper. Vi vil gå over dem i en anden. Hi er en streng. Men nyttige farver. Så hvis du nogensinde ved et uheld vælger den forkerte udvidelse, bør du have disse farver. Hvad sker der? STUDENT: Hvordan kan jeg kopiere ind i en fil [uhørligt] i en anden fil? JASON Hirschhorn: Åh, jeg er kommer til at vise dig, at også. Så kopiere fjerne er på anklagebænken. Lad os gøre dette. Sørg for, at det fungerer. Gør hi. Works, køre den. Så ./hi awesome. Det er din første program. Lad mig gøre det større. Så en rigtig god-- Ja, hvad sker der? STUDENT: Hvorfor ville det være at når jeg tager gedit, det ikke give mig et andet linje for gedit hi.txt? Det bare sætter markøren til en linje. STUDENT: Ja. Den [uhørligt]. JASON Hirschhorn: Vent, så sige det igen. STUDENT: Når jeg skriver gedit, den første gang, den første line-- JASON Hirschhorn: Op der øverst? STUDENT: Har ingen J Harvard apparat, og markøren er lige hele vejen til venstre. JASON Hirschhorn: All vejen til venstre? STUDENT: Ja. Er der nogen andre har det? JASON Hirschhorn: Åh, godt J Harvard er ligesom brugernavn. Så det er bare standard brugernavn. STUDENT: Det reagerer. JASON Hirschhorn: Åh, det stopper med at reagere. OK, så hvad du skal gøre, er du nødt til at lukke ud af gedit. Så tæt ud af gedit, og det skal vende tilbage. Så er gedit åben på din apparat lige nu? Hvis du forlader ud af det, det skal vende tilbage, og du skal være god til at gå. Gjorde det arbejde? STUDENT: Så gjorde du bruger den gedit kommando til open-- JASON Hirschhorn: Nej, den første gedit kommando var en fejltagelse. Den første gedit kommando, Jeg at gøre gedit hi.txt. Så jeg giver den et navn, så gedit hi.txt. hi.txt er navnet på filen. Det første var bare en fejltagelse, og derefter Jeg lukkede hurtigt ud af programmet. Så var spørgsmålet hvis jeg gør gedit, jeg er ikke vil være i stand til virkelig at gøre noget andet i min kommandolinje indtil jeg lukker det gedit, så jeg tror det er hvad de løb ind. Så luk gedit. Det vil vende tilbage ud af det program, og så vil du kunne faktisk skrive i kommandolinjen igen. Er det godt? Dope. Så bare sørg for at lukke det, hvis du løber ind i problemer. OK, så en rigtig godt spørgsmål et sekund siden var kopierer. Så nu har jeg hi.c. Men lad os sige jeg ønsker at ændre det. Jeg vil have det til at være lidt bedre. Jeg ønsker at sige hej klasse. Men jeg ønsker at holde denne skabelon. Jeg behøver ikke at omskrive hele programmet igen. Jeg ønsker at holde skabelonen. Hvordan kopierer jeg? Let. Så cp hi.c newhi.c. Nu har jeg to. Og så kan jeg åbne op newhi.c, og i stedet for bare at sige hej, Jeg vil sige hej klasse! Så jeg vil gå tilbage. Afslut ud. Gå tilbage til min kommandolinje. ls gøre newhi. Kør det. Der. Det er bedre, meget bedre. Så hvis du ønsker at kopiere noget, nemt er det. cp er kopi. Så vi har gået over flytning, gør mapper, kopiering. Lad os se, hvad der ellers skal jeg gå over? Oh, yeah. Lad os gå over dette. Så dette var awesome. Lad os sige, jeg ønskede at-- oh vente. Jeg har tænkt mig at gå tilbage til awesome. Lad os sige, at jeg ikke ønsker disse filer her. Lad os sige, at jeg vil have dem i en ny bibliotek ligesom i mappen awesome. Jeg ønsker at begynde at organisere, så nu vil jeg at have en ny mappe kaldet hi. Det har fået alle de programmer Jeg skriver kaldet hi. Så hvordan gør vi det? STUDENT: Skift bibliotek. JASON Hirschhorn: Ja. hej. Boop. mkdir hi_dir. Det klagede fordi jeg allerede havde en hi i her. Så nu har jeg en hi bibliotek. Så nu vil jeg gerne flytte alt, alle de programmer, jeg skrev, Jeg ønsker at flytte dem i hi bibliotek. Bare ren ting op. Hvordan gør jeg det? STUDENT: [uhørligt]. JASON Hirschhorn: Flytte det, right? Så lad os gå. Ja? STUDENT: Hvad er forskellen mellem hej og hi.c at vi allerede har. JASON Hirschhorn: Åh, hi.c er det faktiske. Så det er den fil, du skrev. Så hvis du var på vej til åbner det op i gedit eller Nano, det er, hvad du skriver i. Når du samler det, så du får en eksekverbar fil. Det er hi. Så hvis du har åbnet op hej, der kommer at være en flok volapyk for dig. Det er dybest set kommer til at være flok af computer instruktioner. Hvad sker der? STUDENT: Hvad betyder alle de farver betyder? Den blå er sandsynligvis bibliotek. Hvad er gul? JASON Hirschhorn: Dem er de eksekverbare filer. Så da jeg gjorde hi.c, det gav mig-- så jeg kan gøre det. Jumping pistolen. Så fjerne hi ja. Så lad os gøre ls. Jeg har ikke hi længere. Så når du laver, det er når du tage det program, du skrev og du laver en eksekverbar fil. Så gør hi.c-- godt, gøre hi. Jeg tror, ​​han gik over dette i foredraget. Disse er flok oversætterflag instruktioner. Så i stedet for at skulle faktisk skrive clang med alle disse. Disse er flag. Du skriver bare gøre. Så det gør de eksekverbare filer. Så når du gør ls, nu har du hi. Så dette er hvad du er vil faktisk køre. Og så du kører at ved at gøre ./hi, og det kører dit program. Men hvis jeg forsøger at gøre det med hi.c, nej, det er ikke at gå på arbejde. Ja, gør det mening? STUDENT: Mm-hm. JASON Hirschhorn: Cool. Vent, jeg ønskede at sige noget andet. Bare virkelig hurtig, i tilfælde nogen er interesseret, når du hopper ud af et bibliotek, det er prik prik. Er der nogen, der har en idé om, hvad Måske bare ental dot betyder? STUDENT: [uhørligt]. JASON Hirschhorn: Det er faktisk den aktuelle mappe. Så det er din nuværende mappe. Så jeg er her. Jeg er i awesome. Hvis jeg gør cd prik, betyder det ikke noget. Det tager mig til mit nuværende bibliotek. Så lidt overflødige, men du er nødt at gøre det, så ./ dit program navn, For at køre din program, er du nødt til at gøre det. OK. STUDENT: Hvis du gør cd dot dot dot dog mange prikker vil det bare tage dig op at mange biblioteker? JASON Hirschhorn: Du mener ligesom cd dot dot dot dot? STUDENT: Ja. JASON Hirschhorn: Nej. Så faktisk huske, at jeg gjorde ls -l? Hvis jeg gør noget andet, jeg kan ls -a. Så hvad det siger, er -a viser dig alt. Så det viser dig ting, der er skjult og ting, der ikke er skjult. Så hvis du opdager, at når jeg gjorde bare ls, jeg har lige set, at ting, de ting, jeg gjorde. Hvis jeg gør -a, går det at vise mig alt. Og så aktuelle bibliotek, Vejviser over det. Giver det mening? Ja? STUDENT: Men de er ikke faktisk i Vejviseren. Den aktuelle mappe er ikke i sig selv, så hvorfor vise dem med prikker indeni? JASON Hirschhorn: Du mener, det er ligesom det er ikke i telefonbogen. STUDENT: Right. Så vi har en liste over ting der er i kataloget. JASON Hirschhorn: Jeg tror Det er i telefonbogen. Ligesom -a viser alt, selv hvis det er skjult inde i biblioteket. Så jeg tror, ​​det er bare en rute til aktuelle bibliotek, hvis det giver mening. Det er lidt rekursiv. Det er ligesom Inception. Hvad sker der? STUDENT: Så du sagde -a viser [uhørligt]? JASON Hirschhorn: -a, ja. STUDENT: Hvad gør det [uhørligt]? JASON Hirschhorn: Nå, for eksempel, lad os gå tilbage op til toppen. Det er normalt stuff bør du ikke rod med, og du behøver ikke at bekymre sig om. Så dette er en slags hjem. Hvis jeg gør -a, får jeg tonsvis af stuff. Alt det der. Og du behøver ikke at rod med nogen af ​​de ting. Absolut ikke begynde at gå her og bare fjerne ting. [Latter] Ja, dette var en lille smule mere comfy ting, men det er godt at vide. Jeg synes det er godt at vide. Men hvis du aldrig vil skrive -a i hele denne kursus, bare glem det. Hvad sker der? STUDENT: Hvad er ls -l? JASON Hirschhorn: At viser dig tilladelser. Dybest set du bruge den for tilladelser, så -l. Det viser dig en smule lidt mere information, men igen, det er en lille bit mere comfy ting. Disse er blot tilladelser. Så tilladelserne til mapper. Så bare for eksempel, lad os sige, at jeg lavede en mappe, så d repræsenterer bibliotek. Så dem er mapper. Og derefter læse, skrive, udføre. Så dem er tilladelser til Jeg tror, ​​bruger, gruppe, verden. Fuldstændig gå for vidt. Du kommer til at gå i denne lignende uger fra nu, men bare så du ved, de er tilladelser. Hvad sker der? STUDENT: Kan du klare snarere end bare springe til den næste ting, kan dig-- JASON Hirschhorn: Du mener faktisk slette? Jeg ved det ikke. Jeg gør aldrig det. Hvorfor ville du ønsker at gøre det? Hvorfor ville du gøre det? Jeg kan lide det. Du bor på kanten. Du er ligesom jeg ikke ønsker nogen af ​​dette. Det er intens. STUDENT: [uhørligt]. JASON Hirschhorn: Ja, vi kan gøre det. Beklager, rode med størrelsen er helt freaking mig ud lige nu. Lad os gå op. Yeah, så nu kan jeg ikke gå op længere. Så alt, hvad jeg lærte du er væk for evigt. Tak. Vi gjorde vores mapper. Vi gjorde vores filer og ting som det, så vi stadig har alt det der. OK, jeg vil gå hurtigt. Så virkelig hurtig. Så lad os sige jeg i awesome. Lad os sige, at jeg ønskede at flytte alt til den nye mappe fordi jeg ønsker blot til at organisere det, right? Så hvordan ville jeg gøre det. Flyt. Vi kommer til at bruge flytte igen. Så flytter hi.c. Og hvad du kan gøre, er du begynder notering stuff, og den sidste ting, du listen er hvor det kommer til at flytte den. Så flyt hi.c, hi newhi newhi.c, hi_dir. Og så det flyttede alt til den sidste ting, du nævnte. Så skifter mappe, hi_dir ls. Alt er derinde. Så det er rart og mere organiseret. OK, lad os sige, at jeg hader min oprindelige hi program. Jeg ønsker at slippe af med det. Hvordan kan jeg slippe af med det? Hvad sker der? STUDENT: [uhørligt]. JASON Hirschhorn: Lad os sige, at jeg bare ønsker at fjerne programmet, så bare hej. Nej, du har ret. Så det er rm, men du gør rm hi. Det kommer til at give dig en lille advarsel. Det kommer til at sige, er du sikker på du vil slette denne, og ja jeg gør. Hvis du ikke ønsker at blive bedt om sådan fordi du ikke har tid for advarsler, fjern -f. Dette er et andet flag. Det er ligesom den -l. Det er ligesom den -a. Disse er blot flag, du giver til disse kommandoer. Så fjern -f. -f f betyder kraft. Så tvinge det. Jeg ønsker ikke at blive spurgt. Så fjern -f. Lad os gøre hi.c. Lige sluppet af med det. Det ikke fortælle mig. Men lad os sige i stedet er jeg gjort med denne mappe. Jeg ønsker at slippe af med bibliotek. Så jeg fjerner hi_dir. Nej, betyder det ikke virker. Nej, så vil det ikke lade mig fjerne en mappe. Er der nogen har en idé? STUDENT: Er det fjerne dir? JASON Hirschhorn: Så fjerne sådan? STUDENT: Nej. Bare [uhørligt]. JASON Hirschhorn: Nej, lige nu er der ingen hi. Der er bare hi_dir. Så dette er den mappe. Så faktisk, hvad du ønsker at gøre is-- Åh, har du en idé? Jeg ser gerne en halv hånd. STUDENT: [uhørligt]. JASON Hirschhorn: OK. STUDENT: [uhørligt]. JASON Hirschhorn: OK. Så hvis jeg ønsker at fjerne en mappe, skal du fjerne -r. Det er rekursiv. Så fjerne denne mappe rekursivt. Så jeg vil have dig til at gå ind i denne mappe, fjerne alt i telefonbogen, og derefter slippe af med den mappe. Og så har jeg tænkt mig at f så godt, fordi jeg ikke ønsker det til at bede mig med advarsler efter det fjerner hver enkelt fil. Så fjerne -rf hi_dir. Boom, er det gået. Bare vær forsigtig, når du bruger det. Jeg har tænkt mig at bruge det også her. -rf awesome. Det er gået. Vær forsigtig, når du bruger det. Hvis du bruger det her og skriver noget som dette, ikke nogensinde gøre det. Det vil slette alt på din apparatet uden nogensinde at advare dig. Og jeg har gjort det. Grading problem indstiller 4:00 AM, var jeg forsøger at fjerne problemet fastsatte mapper, og jeg gjorde dette. Og jeg var ligesom Åh min gud. Må ikke do-- Jeg forsøgte at annullere den. Du kan annullere. Command C bare aflyser alt men jeg har allerede slettet ligesom 75%. Så jeg ødelagt det. Og folk gør det. Alle gør dette. Gør ikke dette selvom dette semester. Det stinker. Jeg nervøs have det her. Jeg har tænkt mig at slette det. [Latter] Kan du forestille dig? OK, spørgsmål. Ja? STUDENT: Så hvis vi gør alt du laver her, er det den samme som bare går ind i faktisk Fil Gem som [uhørligt]. JASON Hirschhorn: Åh, du mener gennem gedit. STUDENT: Ja. JASON Hirschhorn: Ja, det er. Gedit er nyttig. Så gedit er meget nyttig. I denne klasse, kan du gøre en masse ting gennem gedit. Du kan spare. Du kan omdøbe. Du kan flytte filer og den slags, men bare sandfærdigt, når du går til 50-- godt du er i 50-- 51, hvis du går i 61, dette vil være dit liv. Dette er kommandolinjen. Dette er hvor du vil programmere for resten af ​​dit liv, så helt sikkert bruge gedit, hvis du ønsker. Absolut en god måde at starte. For det første problem sæt, absolut bruge, men hver gang i et stykke tid forsøge at få mere brugt mere komfortabel med kommandolinjeargumenter. Men du kan, absolut. Hvad sker der? STUDENT: Så når vi ønsker at slette en af ​​de filer, vi har lavet, Der er to måder. [Uhørligt]. Er der en måde, når du er sletning af en mappe at bede om prompt, så du ikke ender med at slette det? JASON Hirschhorn: rm -r. Så du skal ikke tvinge det. Så rm -r. Det kommer til at gå igennem rekursivt, slette alt, bede dig efter alt, som vil drive du nødder. Ligesom jeg næsten udelukkende gøre rm -f og rm -rf, bare konstant. Jeg er ligesom jeg ikke har tid. Jeg er en travl mand. Okay, hvad sker der? Ja. STUDENT: Er der en fortryd, eller en trash bin, eller noget lignende? JASON Hirschhorn: Nej. [Latter] Jeg kunne gå tilbage og få min apparat, som jeg lige har slettet, nej. Nej, nej, nej. Hvis du gør rm, bør det være væk. Hvad sker der? STUDENT: Så du kan [Uhørligt] sammen. JASON Hirschhorn: Ja, bare sådan. Så for eksempel, så dig rm -rf. Lad os sige, at jeg ønsker at gøre ls -la, det viser mig alt, selv skjult ting med deres tilladelser. STUDENT: Så r, -r flag, hvis vi ikke har det, vi kan ikke slette en mappe, højre? JASON Hirschhorn: Right. STUDENT: Så der siger, at vi ønsker at gøre noget med biblioteket? Er det, hvad det betyder? JASON Hirschhorn: -r betyder rekursivt. Så et bibliotek vil har filer i det, ikke? Så hvad du ønsker at gøre, er du ønsker at gå ind i denne mappe, slette alt, hele filer i denne mappe, derefter pop ud og slette selve biblioteket. Så -r betyder rekursive, gør det alt rekursivt hvis det giver mening. Ja. STUDENT: Så biblioteker har [Uhørligt] og bare slette den. Eller har du still-- JASON Hirschhorn: Lad os prøve. Så mkdir tom. Fjern tomme. Nej. STUDENT: Nej, så du stadig nødt til-- JASON Hirschhorn: Ja, altid. Så -r, -rf, tom. Awesome. Længere spørgsmål? Jeg tror, ​​det er dit styrt kursus på kommandolinjen stuff. Eventuelle spørgsmål, fordi vi kommer til at hoppe over til datatyper og loops, og alt det der? Hvad sker der? STUDENT: Jeg har ikke CS50 viser som en af ​​mine mapper. Er det normalt? JASON Hirschhorn: Oh, yeah. Det er mine. Ja, det er hvor min løsninger på dine ting er. [Latter] Så ja, det er helt normalt. Jeg tror du vil sandsynligvis bare have disse fire. Jeg tror, ​​der kan være normal. Ja. OK, flere spørgsmål? Jeg ved, det var super hurtig. Hvad sker der? STUDENT: Jeg så den blå grøn farve. Hvad er det? JASON Hirschhorn: Det betyder bibliotek. STUDENT: Og det blå? JASON Hirschhorn: Åh, du mener dette blå grøn? STUDENT: Nej. JASON Hirschhorn: Denne blå grøn? STUDENT: Nej. Når du listed-- JASON Hirschhorn: Oh. Som dette? STUDENT: Ja, ikonerne. JASON Hirschhorn: Åh, det. Jeg ved det ikke. Hvad betyder det? Så det lader til at være peger på en mappe. STUDENT: Det ser næsten ud som et alias. JASON Hirschhorn: Det kunne være. Du behøver ikke at vide det. Længere spørgsmål? Awesome. Hvis du har spørgsmål, Jeg ved, det var en masse. En masse af denne information vil være online. Jeg vil sætte det online for jer. Afsnit B vil være online så godt. Eller hvis du har spørgsmål, bare komme op og spørge mig. Her kan du gå. Så nu Sharon og Hannah vil gå over nogle af logikken bag problemet angive én. SHARON: Åh min gud. Problemer. HANNAH: I mellemtiden er jeg Hanna. Dette er Sharon. Vi er begge CS50 TF'er, og vi kommer til at give dig en lille intro på et par vigtige ting for problem angive én. Alt fra datatyper at Betingede til efter sløjfer. Sløjfer i almindelighed. SHARON: Og i sidste ende, vi vil tage et kig på P angive én, og hvad du nødt til at vide om det. Så lad os starte med datatyper. Du fyre bør være bekendt med den dem, der er fremhævet med blåt. Så vi kan starte med int'er. ints er heltal, så en, to, tre, fire. flåd, flydende point. Ligesom heltal med decimaler, så 5,2 eller endog 5,0. Tegn er tegn som A, B, C. Og en streng, du fyre kender alle. Ligesom CS50 eller goddag og verden. Bool er en boolesk, så vi har sandt og falsk som vores Boolean. Så hvis noget beregner at truth-- 5 er lig med 5, der beregner til sand, og hvis vi har 5 svarer til 4, der er falsk, så beregner til falsk. Og her har vi den tilhørende størrelsen af ​​alle disse datatyper. Og du vil have at vide, dette for dine quizzer, så dette kan være nyttigt at huske, men vi vil sende disse. Faktisk de er allerede sendt. Så du skal være fortrolig med dem fremhævet med blåt. JASON Hirschhorn: Fast hurtig, bare i tilfælde af at du ønsker at kende forskel mellem en char og en streng. Så når du skriver ting, når du har noget lignende "hej" der kommer til at være en streng. Så hvis der er to citater, det er en streng. Men hvis jeg var til et "h" gerne, at det er en streng. Men hvis jeg kun har én citat, det er en char. Og så hvad er forskel du kan spørge. Nå, forskellen er dette er en byte hukommelse. Dette er 4 bytes hukommelse. SHARON: flyde? Beskriv det igen? OK, det er lidt ligesom en række der har et komma med det, så 5,2 eller endda 5,0 er en float versus kun 5 er en int. STUDENT: [uhørligt]. SHARON: Åh, kan det have mange decimaler, så 5,675-3,1415. Ja? STUDENT: Har vi brug for at vide alle størrelser for dette? SHARON: Ja. STUDENT: [uhørligt]. SHARON: Du behøver ikke bekymre dig om de hvide endnu. HANNAH: Noterne er opslået på CS50.net/sections. STUDENT: Lige ud af nysgerrighed, er der et hjælpeprogram at kende størrelsen af ​​de filer, du ringer, så vi skal vide det? SHARON: Så dette er datatyperne, men ja. Så i dette tilfælde, som man ville tager mere hukommelse eller mere plads? JASON Hirschhorn: So for et konkret eksempel, i jeg tror problemet sæt fire eller fem, er vi vil give dig en masse af data og du dybest set nødt til at krydse disse data. Så det er nyttigt at vide, at hvis du har så mange heltal, der kommer til at være, hvad. Så lad os sige jeg gav dig ti heltal, hvad er størrelsen på det? STUDENT: 40. JASON Hirschhorn: 40 bytes, højre. Så du måske brug for at vide, at OK, jeg har brug for at springe 40 bytes. Så lad os sige det er i stedet 40 tegn, then-- lad os sige, at jeg gav dig 10 tegn, så ved du, OK, jeg kun skal hoppe 10 bytes. Så det er meget nyttigt at kende størrelsen af ​​de faktiske datatyper, fordi en masse gange, du vil være at hoppe rundt data, så du behøver at vide, hvor langt at hoppe. STUDENT: Hvad er forskellen mellem citater og et citat? JASON Hirschhorn: OK, to citater er en streng. Et citat er en char. STUDENT: Ligesom operationelt, hvad er forskellen? De begge sige hej. JASON Hirschhorn: Åh, undskyld. Dette er blot timer. Beklager, dette er ikke klart. STUDENT: Så toppen en-- JASON Hirschhorn: Denne er en streng, ja. Så det er to tegn, right? String, hi. Men lad os sige jeg bare havde et enkelt tegn, hvis jeg sætter to anførselstegn omkring bare h, det er en streng. Dette er en streng h. Giver det mening? Så dette er fire bytes. Men lad os sige jeg sluppet af, at en kun sætte ét. Et citat. Dette er nu en char, en char h. Så præcis de samme ting, anden datatype. Dette er kun én byte, hvorimod strengen var fire bytes. Ja. STUDENT: Så hvis du forsøgte at gemme et ord som David, du ønsker at bruge en streng, fordi uanset hvor længe strengen, det vil kun tage fire bytes medmindre det er en lang lang eller en dobbelt, hvor case-- så hvis det strækker sig ud over fire tegn, så du ønsker at gøre det til streng. Er det den generelle logik bag. JASON Hirschhorn: Hvis det udvider ud over et tegn, det er en streng. STUDENT: Så der er ingen [uhørligt] at lagre en fire brev ord som fire individuelle eller tre bogstaver ord som tre individuelle karakterer fordi det kun vil være tre bytes, i modsætning til de tre del streng. JASON Hirschhorn: Du kunne gøre det. Du kan gøre det, men jeg gør ikke tror, ​​det er virkelig umagen værd, fordi du kun gemme en byte. Du ved, hvad jeg siger? I det store arrangement med ting, der vil ikke rigtig noget. Men for eksempel printf, hvis du udskriver f og du har tre tegn, du kan udskrive der out-- lad os sige, at du C-A-T, du kan printe ud kat bare ved laver en char én char én char, eller du kan printe ud string kat. Det er præcis det samme. Så du kunne gøre det sådan, men-- STUDENT: Det kommer ikke til at spare dig så meget. JASON Hirschhorn: Ja. Hovedpine, at det ville fremkalde er ikke det værd. Ja? STUDENT: For eksempel, du havde h med én versus to, de enkelte eller dobbelte citationstegn. Hvorfor ville du ønsker at gemme et enkelt bogstav som en streng. Hvad er formålet der nogensinde tjene? JASON Hirschhorn: Jeg ved det ikke. Jeg mener, det virkelig afhænger af programmet. For eksempel tror jeg senere du vil komme ind kommandolinje stuff. Så for eksempel, i stedet for mig beder dig om en integer-- sorry, kan jeg tale ind i dig? HANNAH: Ja. JASON Hirschhorn: So for eksempel, i stedet af mig beder om noget med at komme ende, som Jeg tror, ​​du måske har set en forelæsning, der kan være en kommandolinje. Du skal bare skrive det i stedet på kommandolinjen. Det ville være som - / hello4 eller noget, eller helloh h, uanset hvad. Du gør det ved kommandolinjen i stedet for at blive bedt om det, at kommandolinjen er altid en snor, uanset om det er en fire eller en time, der altid er en streng. Så det er et eksempel på, hvornår du kan har en ental brev eller en ental nummer repræsenteret som en streng. SHARON: Okay. Og så er her nogle grundlæggende operatører. Forhåbentlig du er fortrolig med de første fire lige i almindelighed. Så der er tilføjelse, subtraktion, multiplicere og dividere, og sørg for at bruge de rette anslag. Og så er der også modulo, som nogle af jer måske ikke være meget fortrolig med. Og hvad modulo gør, er at hvis vi tager dette eksempel 4% 2, det tager resten af hvad det gør i division. Så 4 divideret med 2 er 2, og der er ingen resten. 4 dividere med 3 er 1, og 1/3, og så resten 1. Så det beregner et. Og derefter 4% 5 er den fraktion 4/5, og resten er 4. Giver det mening? OK, cool. Og vi følger PEMDAS her også. Så nogle boolske udtryk. Så jer har set lig ligemænd at sammenligne, fx to tal. Så hvis 5 lig lig 5, der beregner til sand. Sørg for at du kun har ét lighedstegn. For ikke ligestillede, det er bang eller udråbstegn. Hannah: To lighedstegn når du gør ligestilling. SHARON: Oh, yeah. Sørg for at du ikke gør har et lighedstegn. Og så for ikke ligestillede, det er bang lig. Og så kan du kigge igennem for mindre end, større end. Og så har vi logisk og og logisk eller lige her. Og hvad det gør, er, hvis du kan huske i Scratch når du havde denne blok det sagt, og, og så kunne passe to forskellige stykker der, det er, hvad dette og gør. Og sørg for at gøre to-tegn. Og denne nøgle, du kan finde i retning af højre, højre under dit knappen Slet. Spørgsmål? STUDENT: Hvad var det [uhørligt]? SHARON: OK, så hvis du kun gøre én, du sammenligner bits. Så hvis du kan huske, hvad bits er, de er 0'er og 1'er, og så der er at sammenligne noget andet. Så vi kommer til at fokusere på dette for nu. JASON Hirschhorn: Så man er lig er ligesom opgaven, right? Så ligesom int x lig 4. Du siger, at variablen x er lig med 4. Så 1 lig er opgave, MEN ands og rørene eller barer, ligesom Sharon sagde, de er bitvise operatører. Du behøver ikke at bekymre dig om det. STUDENT: Hvornår bruger du logisk og og logisk eller igen? Jeg glemte lige når du gør det. HANNAH: Selvfølgelig, så hvis du nogensinde ønsker at kontrollere, om to ting er sande, for eksempel, lad os sige, at jeg ønsker at kontrollere at en række er mellem 5 og 15, Jeg vil sige sørge for, at nummeret er større end 5. Så lad os sige, hvis x er større end 5 og mindre end 15. Så for at denne helhed erklæring at vurdere, sand, du har brug for begge slags sub skab at vurdere den sande. Med eller du behøver kun en af ​​de to eller begge. STUDENT: Great, tak. SHARON: Og også i Scratch, er jeg sikker på en masse af dine projekter du havde om at røre ved kanten, eller hvis røre en anden sprite derefter hoppe eller noget. HANNAH: Okay, så hvorfor gør vi bekymre sig om alle disse Booleans? Vi har disse strukturer, som du har set i Scratch kaldes betingede. Og betingede er noget af det dannes, hvis nogle betingelse eller nogle Boolean er sandt, så gør koden mellem disse krøllede parenteser. Så du kan se til højre her er det Scratch blok. Du har denne hvis da, og noget der går ind i den lille form, der ligner denne-- jeg ikke ved, hvad du gerne kalder at-- det kommer til at være Boolean eller tilstand. Så igen, en boolesk eller betingelse er noget at enten evalueres til sandt eller falsk. Og igen, kan du kombinere Booleans. Du kan have igen, x er større end 5, og x er mindre end 15. Eller du kan bare have en disse x er mindre end 5. OK, så i C Det er til venstre. Det er bare nøgleordet, hvis. I parentes, det betingelse eller Boolean. Og så koden i mellem disse to krøllede parenteser vil kun køre, vil kun køre, hvis denne betingelse, eller at Boolean er sandt. Giver det mening? Awesome. OK. Og derefter som du kan har set i Scratch, Vi kan også tilføje på en andet, som er grundlæggende noget mellem krøllede parenteser under andet vil kun udføres, hvis betingelsen er falsk. Mening? Eventuelle spørgsmål om disse to? Awesome. Cool. Så her er et hurtigt eksempel. Lad os sige at vi vil bestemme, baseret på den tid, om vi skal sige god morgen eller god aften. Jeg vil sige, hvis det er før 12.00, vi kommer til at sige god morgen, ellers vil vi at sige god aften. Og da jeg sagde, at ellers der er tilsvarende i C til dette andet. Så vi kommer til at kontrollere, om militære tid er mindre end 12:00, sige god morgen. Ellers sige god aften. STUDENT: Så ville vi faktisk få det input til militær tid med get streng. HANNAH: Right. Gjorde Et andet sted vi havde faktisk nødt til at give disse oplysninger. Lige her har det ingen værdi. Vi har aldrig selv erklærede det. Jeg antager, at et eller andet sted over dette program jeg erklærede tid, eller spurgte tiden, eller-- noget andet med dette eksempel? Awesome. OK, nu har vi desuden til enkel, hvis andet format, vi har to andre forskellige strukturer. Så først må vi kontakten erklæring, og her er den generelle form af en omskifter erklæring. Du har nøgleordet skifte samme måde, som du har søgeordet hvis. Og så et input, i dette tilfælde n. Så dette kan kun arbejde med heltal. Så input n har at være et heltal, OK? Og vi vil følge en af ​​disse sager afhængigt af, hvad denne værdi n er. Så i dette tilfælde, skal du først sammenligne er n lig med konstant en, hvis det er, gøre alt slags indrykket herovre. Jeg kan pege på det, fordi jeg er for kort. Hvis det ikke er lig med konstant en og er i stedet lig med konstant to, vi kommer til at følge den anden blok, og vi kan gøre dette for så mange gange som vi ønsker, og derefter at misligholdelse er, hvis det svarer ikke til nogen af ​​de ovennævnte tilfælde, eksekvere denne kode. Eventuelle spørgsmål her? Denne ene er lidt mere kompliceret. Ja? STUDENT: Break signalerer hvad? HANNAH: Sure, så når vi træder ind denne blok, hvis vi finder, lad os sige, vores n er faktisk lig med konstant en, vi træder denne blok efter kolon. Vi gør, hvad der er på denne linje at kommentere, og så vi bryde, hvilket betyder, at vi kommer ud af denne kontakt sætningen helt. STUDENT: OK. HANNAH: Mm-hm? STUDENT: Er indrykning det er nødvendigt, eller har du brug for [uhørligt]? HANNAH: Selvfølgelig. Så, som altid, indrykning ikke er strengt nødvendigt. Computeren ikke ligeglad med, om du led. Vi, som mennesker, der er læse din kode, skal du gøre pleje. Så det er meget lettere at se op på skærmen og se, åh, jeg ved præcis, hvad sker, når n er lig med konstant én. Hvis jeg havde tilfældige led, jeg ville ikke være i stand til at fortælle så let. Ja? STUDENT: Så hvis ønsket en bruger til vælge en af ​​de muligheder, der vi har på listen, ville vi bruger, tror jeg, [uhørligt] men får et helt tal fra dem og sætte det ind i n? HANNAH: Præcis højre. Så lad os sige vi ønskede at kontrollere, hvad heltal. Vi sagde åh, indtaste et heltal mellem 0 og 5, lad os sige. Vi kunne bede om det n, bede for den pågældende værdi, og så har hver af disse sager. Og igen, det er noget, vi kunne meget nemt gøre med, hvis udsagn, højre? Vi kunne have, hvis lig case en, hvis lig tilfælde to, hvis lig case tre, så videre og så videre. Dette er en lille smule hurtigere og lidt renere. Det er slags bare en dejlig struktur nu. STUDENT: Hurtigere som skriftligt? Eller betyder det køre computer lidt hurtigere? HANNAH: Det kører lidt hurtigere. Ja? STUDENT: Så den dobbelte dash er bare kommentere eller-- HANNAH: Åh, jeg er så ked af det. Jeg havde ikke påpege det. OK, hvis du har det //, er en kommentar. Bare // er en kommentar. Så helst computer ser, at det vil nok at sige, noget, der følger dette, vil jeg bare at ignorere. Jeg har tænkt mig at foregive dig aldrig selv skrev det. STUDENT: Så dette [uhørligt]. HANNAH: Dette betyder absolut ingenting. Men hvis jeg skrev noget lignende på første kommentar, jeg skrev i stedet printf sige tillykke, du har indtastet konstant én, der ville være noget. Ja? STUDENT: Så i det virkelige liv, tilfælde ville simpelthen være et tal og derefter [uhørligt] ville være et andet heltal. HANNAH: Præcis. STUDENT: Og har du brug for de ellipser? HANNAH: Beklager? STUDENT: Har du brug for det? HANNAH: Åh, nej. Jeg er ked af. Det var bare for at vise, at du kan fortsætte i så mange tilfælde som du ønsker. Lad os gøre en konkret eksempel på, at kunne gøre tingene lidt mere klart. OK, så lad os sige, at jeg siger, OK, giv mig et heltal n der repræsenterer en klasse nummer, specifikt en computer science klasse nummer. Så hvis du giver mig 50, Jeg har tænkt mig at sige stor. CS50 er en introduktion til computer videnskab, og så jeg har tænkt mig at bryde. Så det betyder, at jeg hopper ud af hele denne switch-sætningen, så nu er jeg færdig kører koden, OK? Hvis du gav mig i stedet 51, ville jeg udskrive den anden opgørelse. Og så hvis du gav mig nogle nummer, der ikke var 50 eller 51, Jeg har tænkt mig at sige undskyld, jeg er ikke bekendt med denne klasse. Ja? STUDENT: Du behøver ikke have pause. HANNAH: Jeg er ked af, jeg ikke har pause? STUDENT: Hvad hvis. HANNAH: Åh, hvad hvis du ikke har pause? Glimrende spørgsmål. Så hvad ville der ske, er du ville gå i, og du ville tjekke er jeg lig med 50? Og lad os sige, ja, du var lige til 50, ville du udskrive oversigten. Og så ville du fortsætte med at udføre, så du ville sige er jeg lig med 51? Og du vil gå på og gå gennem hvert tilfælde sådan? Ja? STUDENT: Er standard linje analogt til at sige andet? HANNAH: Præcis. Meget godt. Det er ligesom den slags fange alle. STUDENT: Så hvis du ikke har pause og derefter en af ​​de tilfælde udtalelser var sandt, og så nævnte forhøjelse n med 1, så ville det automatisk gøre den næste. Det ville kontrollere sag 51, og derefter vise, at så godt? HANNAH: Ja, jeg tror, ​​det ville fungere. Så du kan slags få rodet, så en pause er en god ting at have. Ja? STUDENT: Uden pause ville det gøre den standard? HANNAH: Det er et godt spørgsmål. JASON Hirschhorn: Jeg tror, ​​det bare kører. Så hvis du ikke har break-- så lad os sige, jeg gjorde 50 og det kontrolleres 50, og det ville udskrive det ud. Udskriv CS50 som introduktion til datalogi. Du behøver ikke have pause, skal det gå og holde ud, indtil den rammer en pause. Så hvis der er ingen pause, det kommer til at holde ud. Det kommer til at printe alt andet ude. HANNAH: Så jeg gætte, ville være herunder standard. JASON Hirschhorn: Ja. HANNAH: Godt spørgsmål. Ja? STUDENT: Er sag betragtes som en funktion? HANNAH: Jeg er ked af det? STUDENT: Er sag betragtes som en funktion? HANNAH: Er sag betragtes som en funktion. Jeg ville tøve med at sige det. JASON Hirschhorn: Så normalt når du ser funktioner de vil være i krøllede parenteser. Så for eksempel, når du ser på din kode, for eksempel, main. Det var de vigtigste åbne paren, da ugyldig, close paren. Functions-- de er dybest set altid vil du se parenteser. Så tilfældet, hvis sag ikke har nogen parenteser, det er din fingerpeg om, at det er ikke en funktion. Men det er det ikke. Ja? STUDENT: Så gør det at ændre en funktion? HANNAH: Er der gør skifte en funktion. STUDENT: I ​​den forstand at du lægger noget i, det giver dig et af de tilfælde. JASON Hirschhorn: Jeg vil ikke kalde det en funktion. Ikke alt med parens er en funktion. Jeg mener, det er en anelse at det er en funktion. Jeg vil ikke sige switch er en funktion, fordi det ikke er virkelig returnere noget. Du vil komme ind i det mere. HANNAH: Ja, tænk bare på det som en hvis struktur. STUDENT: Kan du reden dette i en hvis struktur? HANNAH: Ja, du reden temmelig meget noget. STUDENT: Barry sagde citater er lidt ligesom det samme som andre. Så kan du erstatte de citater med andet? HANNAH: Ikke i dette særlige struktur, fordi kontakten erklæring forventer ordet standard. Computeren ved, at standard betyder noget særligt, at betyder fangsten alle. Noget andet på dette. Vi har en mere til at komme igennem. Ja? STUDENT: [uhørligt]. HANNAH: Forskel mellem ved hjælp af et semikolon og kolon. Så et semikolon er altid at fortælle computer jeg er færdig med denne linje. Du kan gå videre og udføre den. Dette er en komplet linje. Et kolon vil i dette tilfælde, bringe dig ind i en bestemt blok. Så semikoloner er altid bruge til at afslutte linjer. Koloner anvendes til en række andre sager. STUDENT: Er det, der svarer til bare siger, hvis n er lig med 50, og derefter blah blah blah. HANNAH: Mm-hm. STUDENT: Det er bare det samme [uhørligt]. HANNAH: Præcis. Og vi sagde, at det kører en lille smule hurtigere. Hvis vi ikke havde pausen, det ville være, hvis, hvis, hvis. Hvis vi har den pause, det er ligesom hvis ellers hvis ellers hvis ellers hvis. Cool? JASON Hirschhorn: Så når kodning, kan du bare bruge, hvis ellers, men jeg tror, ​​sidste år på quiz vi havde dem skrive et switch-statement, så bare i tilfælde. HANNAH: Men absolut intet galt. Vi ikke forventer du at bekymre dig om performance skøre ting. Lige hvis andet er helt fint. Disse er bare god ting at være opmærksom på. Og her er vores sidste slags falder ind under denne betingede kategori. Vi har noget af almindelige form tilstand?, og derefter en lille stykke kode, sker, hvis betingelsen er sand. Og derefter colon, lidt stykke kode, der henretter hvis betingelsen er falsk, semikolon. Vi er færdig med denne linje. Så syntaktisk det er lidt grimt. Vi kommer til at gå gennem en eksempel Jeg tror, ​​det er mest tydelig. Så vi ønsker at tildele strengen professor til en af ​​disse to værdier, enten David Malan eller ikke David Malan, OK? Så du bør være bekendt med strengen, professor =. Vi kommer til at tildele en streng til variabel kaldet professor. Nu ønsker vi at kontrollere en særlig tilstand. I dette tilfælde vores tilstand er class_num = = 50. Og nu kunne være en god tid at påpege når vi har streng professor =, Det er en lighedstegn. Det er opgaven. Betragtninger i class_num = = 50, det er to lige tegn. Det er en kvalitet check. Så vi kommer til at sige, er det klasse antal svarende til 50? Hvis ja, tildele professor David Malan. Hvis ikke, tildele professor til Ikke David Malan. Eventuelle spørgsmål dér? Igen, det er bare noget det er godt at vide. Du kan gøre dette med hvis andet. En god praksis problem kunne være at, når du går hjem, lige nøjagtig de samme betinget i en hvis ellers formular, fordi du kan gøre det. Eventuelle spørgsmål her? Okay, jeg tror, ​​vi er kommer til at gå videre til sløjfer. Awesome. SHARON: OK, lad os tale omkring mens sløjfer. Så først til venstre ser du her-- OK, der siger, mens, mens (betingelse). Og så skal du gøre denne-- kan vi ændre dette? JASON Hirschhorn: Det er afskåret. SHARON: OK, og så er der er også krøllede parenteser. Så foregive, at krøllet seler er der over og under gøre dette igen og igen. Så hvis betingelsen i de parenteser evalueres til sand, så skal du holde gør hvad der er i while-løkken. Altså for eksempel, vi kunne gøre en praksis problem. Jeg bærer to øreringe lige nu, så lad os sige hvis jeg bærer mindst én hørelse, klap dine hænder. Så hvis vi kommer til at gå gennem dette, vi going-- [Klappende] Right? Og jeg iført en, og-- OK. Ja. Jeg er ikke iført øreringe længere, så ikke mere. OK, ja så det er når du ville stoppe. Og det man kan sige er svarende til næsten variabler. Lad os sige du har en variabelt antal øreringe. Så mens antallet af øreringe er større end eller lig med 1, klap. Og derefter efter clap hænder, decrement øreringe. Gør som øreringe minus 1. Så formindske antallet af øreringe, og så vil du gå igennem, mens løkken to gange. Og hvis betingelsen er altid true-- så hvis, lad os sige, 2 = = 2, og 2 er altid lig med 2, right? Så du ville altid gøre noget derinde, og det er svarer til næsten evigt loop som vi havde i Scratch. Ja? STUDENT: Er de to sider lige forskellige måder at skrive en while-løkke? SHARON: Så vi fokuserede på denne ene først. Og så så lad os sammenligne det med en do while-løkke. Så de er lidt anderledes. OK, så lad os sige betingelsen er stadig mens jeg bærer mindst én ørering, og jeg er ikke iført eventuelle øreringe lige nu. Og lad os sige gøre, og stadig klappe mens Jeg bærer mindst én ørering. Hvad skal der ske? [Klapper] Uh oh, gutter. OK, så du skulle klappe én gang, fordi dybest set dig gå gennem den første del af koden. Du gør det uanset hvad, og så se dig imens tilstand, og du går tilbage til at loop, hvis det er sandt. Giver det mening? STUDENT: Du har altid gør det første gang. SHARON: Du gør altid det første gang, uanset om eller ikke at betingelsen er sand eller ej. JASON Hirschhorn: Hvornår du tror, ​​du kunne bruge dette? Hvornår giver det mening at bruge dette? HANNAH: Ja? STUDENT: [uhørligt]. JASON Hirschhorn: Right. HANNAH: Very good. JASON Hirschhorn: So når du beder en bruger, du vil altid ønsker til at bede en bruger én gang. Du vil altid have til at bede brugeren én gang. Så i stedet for at sætte i en while-løkke, du sat i gøre, mens loop, fordi du er altid vil gøre det én gang. Hvis de giver dig korrekte svar, er du færdig. Hvis de ikke gør det, så du igen bede dem. SHARON: Okay, for sløjfer. Så i Scratch, havde vi gentagne blokke. Så vi ønskede at gentage noget, lad os sige, syv gange. Så vi sagde bare gentage syv, og sige, jeg er her for at hjælpe dig med Snehvide! I C, har vi efter sløjfer, hvis vi ønsker at gå gennem noget et bestemt antal gange. Lad os sige, hvis vi initialisere de variable dværge og gøre sure-- så den første blok lige der før den første semikolon, vi initialisere vores variabel til, og vi satte det til 0. Og vores variabel der er et helt tal, int. Og variablen navn er dværge, og vi satte dværge til 0. Og den anden del mellem to semikolon er vores tilstand. Og så længe dværge er mindre end syv, vi vil holde gå gennem denne for-løkke. Og så den sidste del er, hvad gør vi gør i slutningen af ​​dette for løkke? dwarves ++, og det betyder at vi tilvækst dværge med én hver gang. Så hvad der kommer til at ske her? Så først vi kommer til at gå igennem. Vi har dværge som 0, og derefter vil vi at udskrive Jeg er her for hjælpe dig Snehvide! Og så dværge kommer til at stige, fordi vi sagde dværge ++. Dværge vil være 1. Og så har vi compare-- dværge er 1. Vi sammenligner det til, er dværge mindre end 7? Ja. Jeg har tænkt mig at gå igennem dette igen. Jeg er her for at hjælpe dig med Snehvide! Og så dværge bliver 2, og så sammenligner vi det. Er 2 mindre end 7? Ja. Vi kommer til at holde gå igennem. Og vi kommer til at gå gennem denne syv gange. Så i sidste ende, vil vi har dværge = 0 udskrift jeg her for at hjælpe dig med Snehvide! dværge er lig med 1, 2, 3, 4, 5 og 6. Husk vi indeks på 0. Så vi starter med 0. Ja? STUDENT: Så det er anderledes end do fordi dette ikke udskrives ud i første omgang i første omgang. Så du kan fortsætte den samme ting. Kunne du gøre det også med do loop? Ligesom den samme proces. Betingelsen er dværge mindre end 7 eller whatever. Reaktion er mindre end 7. SHARON: Så du kunne teknisk. Så hvis vi går tilbage at-- din tale om while-løkken, right? Så do while-løkken er lidt anderledes fordi vi garantere mindst når vi vil gå igennem det, så det er den største forskel. Men med while-løkken vi kunne sige mens dværge er mindre end 7, gøre dette, og derefter tilvækst dværge med én. Og så er vi nødt til at initialisere dværge, før hele denne erklæring at det er lig 0. Så ja, vi kunne gøre det med det. Mm-hm? STUDENT: Kan du gå tilbage til [uhørligt]? SHARON: For loop? STUDENT: Yeah, så med dværgene ++, ser ud som det er, hvad du gør efter du har løb nogle andre midler. SHARON: Korrekt. STUDENT: Kan du bare ikke har det og sætte it-- SHARON: Du kunne. STUDENT: Så er [uhørligt] lige efter udskrive i næste linje nedenunder. SHARON: Ja, kan du sætte det der. Men så ville du bare lade det tomme. JASON Hirschhorn: Du har stadig brug for semi kolon selv. SHARON: Det ser lidt akavet, men du kan teknisk gøre det. Teknisk. Venligst ikke. Ja? STUDENT: Er der nogen alternativer til ++? Er der noget andet [uhørligt]? SHARON: Teknisk set er det dværge. Et lighedstegn vi vil at indstille den til dværge plus 1. Så teknisk set, der er hvad dværge ++ midler. Giver det mening? STUDENT: Ja, men er der nogen alternativer? Ligesom hvis du ever-- SHARON: Ja, kan du gøre dværge - -. STUDENT: [uhørligt]. SHARON: Yeah, kunne du gøre en række ting. HANNAH: Og du kunne forøges med 2. Du kunne forøges med 3. Alt, hvad der kommer til at være under forandring, det i sidste ende vil gøre tilstanden. STUDENT: Så hvis du ønskede at forøge med 2, hvordan ville du skrive det? HANNAH: Du kan enten skrive dwarves-- du kunne skrive det hele ud. dværge = dværge + 2. Eller en lidt stenografi. Jeg skal bare skrive + lig med 2. STUDENT: OK, og du ville skrive det lige der hvor dværge ++ er der. HANNAH: Præcis. SHARON: Korrekt. Der var et andet spørgsmål? Ja? STUDENT: [uhørligt] dværge ++? SHARON: Så du don't-- JASON Hirschhorn: Ja, behøver ikke det der. [Uhørligt] allersidst. Så du gør [uhørligt] dem, fordi du er slags opsplitning initialiseringen, tilstand, og ændringen. Til allersidst, behøver du ikke brug for det. SHARON: Bemærk også dig behøver ikke semikolon efter til hele for-løkken. STUDENT: Hvordan ville du starte med et første antal af negative, for eksempel? SHARON: Du kan initialisere dværge lig med negativ 2. STUDENT: Har du bare Dash 2? SHARON: Ja, så det negativt fortegn, Dash 2. STUDENT: Er det [uhørligt] til initialisere som dværge [uhørligt]? SHARON: Ja. Så hvis vi bare havde initialiseret dværge tidligere, bare gøre int dværge semikolon, og så er der kan vi gøre dværge indstillet, at lig med 0. STUDENT: Kan vi gøre det tidligere i programmet siger int dværge = 0, og derefter bare-- SHARON: Bare ikke have-- så der ville være en plads igen, men du vil stadig brug for et semikolon. Ja. Mm-hm? STUDENT: Betyder denne kode sige, hvad værdien af ​​dværge er bagefter. Hvis du spørger det efter alt dette er gjort for at udskrive værdien af ​​dværge. SHARON: Du kunne bede den om at gøre det. STUDENT: OK. SHARON: Men du ville er nødt til at bede den om at gøre det. Det gør ikke gøre det for dig. Jeg er bange for at sætte mine øreringe igen. Gør det i slutningen for bifald. Just kidding. JASON Hirschhorn: Så det er det samme. Så initialisere på toppen. Betingelse, print, forandring. Så dette er nøjagtig det samme som at hvis nogen kan se det. STUDENT: Hvorfor har du ikke den semikolon på den første linje? SHARON: Hvor? STUDENT: Efter den første linje. SHARON: Efter 4 i parentes? Fordi vi ønsker at gå igennem i denne sløjfe. Og hvis du tager et kig på sløjfer i Generelt har de ikke semikoloner. Det er ikke praktisk. Er vi gode? Endnu et spørgsmål, to mere. Ja? STUDENT: Det kan være en lille smule frem, men gøre dværge har en anderledes [uhørligt] fra en variabel [uhørligt]. SHARON: Very good. STUDENT: [uhørligt]. SHARON: Ja, det er. Hvad? JASON Hirschhorn: Ja, så det gør. Så normalt anvendelsesområde noget er i de krøllede parenteser. Så omfang er altid vil at være i krøllede parenteser, men det ville ikke gøre meget mening for for-løkken fordi vi initialiseret dværge i den krøllede parentes. Så normalt omfanget af dværge, at variabel ville ikke strække sig forbi det. Dette er et særligt tilfælde selv. Så du formatere det inden for disse parenteser, og så har man omfanget senere. Så særtilfælde. De bør ikke have det, og at was-- det mening? STUDENT: Nej. JASON Hirschhorn: Jeg kan gå over det. Så hvad er du stadig forvirret over? STUDENT: Som i kan du bruge dwarves-- dig kan naturligvis bruge dværge [uhørligt] uden formlen for? JASON Hirschhorn: Nej, nej. Så omfanget af det er kun inden for krøllede parenteser til for loop, ja. SHARON: Men hvis du formatere dværge uden for for-løkken, derefter du kan bruge det andetsteds Der er endnu et spørgsmål? Nej? OK. Så vi snakkede lidt om rugende for sløjfer eller nesting betingede, hvis udsagn. Så her er et eksempel på, hvor vi kunne rede en for-løkke. Lad os sige, at vi var ved at trykke denne tabel for x er lige her. Vi vil måske at-- først, hvis vi bare ikke se på koden og vi bare tænker over det, vi ønsker at gå gennem hver række og udskrive hver kolonne, right? Giver det mening? OK. Så her vi går igennem hver række for stort set hver række, og der er tre rækker. Og derefter inden for hver række for hver kolonne, og der er fire kolonner, udskrive en x. så. Når rækken er 0 og kolonne er 0, vi udskriver denne x. Og så holder vi går gennem søjlen loop. Row er stadig 0, men kolonne er en. Og så kolonne er 2, og kolonne 3. Og så har vi afslutte ud af det loop fordi så kolonne ikke længere er mindre end 4. Og så har vi udskrive en ny linje, og vi går til den nye linje. Og så går vi gennem den næste række, og rækken bliver forøget, og vi gå igennem det igen. Giver det mening? Ja? STUDENT: Så for at reden [uhørligt] er bare at sætte det inde i for-løkken? SHARON: Så nesting betyder, at vi har en for-løkke inden for loop, ligesom Inception. STUDENT: Du behøver ikke en særlig rotation eller noget? Du skal bare holde det lige inde i det? SHARON: Korrekt. Ja? STUDENT: Kan være [uhørligt], men det ser ud som om der er en ekstra plads mellem alle x'er. Jeg ved ikke, om that's-- Hvis det var rent faktisk at gøre programmet, ville det gøre sådan noget? SHARON: Så nej. Det var trykke på Enter. Det var slemt på vores side. Undskylde. HANNAH: Hvordan ville du ændre dette program, hvis du gjorde en ekstra linie? STUDENT: [uhørligt]. SHARON: Good job. STUDENT: Du kan også udskrive det samme ting ved at skifte rundt søjlen, højre? SHARON: Hm? STUDENT: Så for at udskrive dit lille xxx, kan den første linje sige print, og i stedet for at sige række, det siger kolonne. SHARON: Så du kunne ændre variabelnavnene at gøre det. Er det hvad du siger? STUDENT: Nej, jeg er bare siger at-- så du er trykning rækker først og derefter udskrive kolonner. Kan du også udskrive kolonner først og så rækker for at få den samme diagram? SHARON: Du kunne, men så ville du have at være forsigtig med, hvor du sætter den nye linje. Og hvordan ville du hoppe tilbage? JASON Hirschhorn: Hvis du lige skiftet det og værdierne var forskellige, i stedet for at have four-- hvad er det? Tre af fire. Jeg Du ville have fire rækker og tre søjler. Giver det mening? STUDENT: Ja. JASON Hirschhorn: So yeah, kunne du gøre det. Ja, helt sikkert. SHARON: Men det ville være bogstaveligt talt bare skifte navnene på de variable. Godt? OK. Okay, P angive én. OK, så den første del af det du vil gøre dette, Mario. Just kidding. Det er mere som dette. Og så når vi lige har set på indlejret efter sløjfer, hvilket gør det bord, tænke over, hvordan du kan være i stand til at udskrive disse hashtags på denne måde. Og så lige her hvordan ville du udskrive denne ret her, det åbne rum. STUDENT: [uhørligt]. SHARON: Ja, du bare udskrive et mellemrum. OK, så bare tænke på det. HANNAH: Og så det samme del af problemet indstillet er et program kaldet greedy.c, så du er lyst til at tænke om betingede og sørg for at du kan lave en ordentlig forandring. Og en lille advarsel, vi har til dig er være forsigtig med flydende komma værdier. Hvis det betyder absolut intet for dig, det vil være dækket i forelæsning denne uge og også i [uhørligt] gå igennem, som jer vil lære at kærlighed på problemområderne sæt. En ting, som jeg virkelig foreslå, især med Mario.c, når du laver problemet sæt, hvis du går i stå, starte med at gøre det på papir. Skriv det ud og faktisk sidde der og foregive at være på computeren, og gå through-- sige Jeg var den computer, hvordan ville jeg følge denne for-løkke igennem? Hvordan ville mine variabler i for-løkken forandring? Så gør det på papir gør det 10 gange lettere når du går til at sidde ned ved computeren. Så bare min lille prop. SHARON: Og heller ikke tror, ​​at du nødt til at kode alting på én gang. Sørg for at tage en iterativ proces. Gøre en lille smule, print det ud, se hvad der sker. Nogle gange er det lidt trial and error. Og kommer til kontortid. Super sjov. JASON Hirschhorn: Så nogen spørgsmål? Alle rigtige gutter, at var din første sektion. HANNAH: Tak for at komme. JASON Hirschhorn: Tak for komme. SHARON: Tak. [Applaus]