JASON Hirschhorn: Velkommen. Så bare noen få kunngjøringer før vi begynner. Så seksjoner, bør alle har seksjonert allerede. Seksjoner normalt løpe fra søndag til tirsdag. Så dere bør få oppdrag. Og så tror jeg neste uke vil du være med det faktiske TFS. Så hvis du har noen spørsmål, eller problemer, eller du har glemt kapittel. Noen mennesker gjør det. Bare gi oss beskjed. Skyte oss en epost på hodet. Deretter kontortid. Vi startet kontortid forrige uke. Kontortid hver uke. Mandag er i Leverett 08:00 til 11:00. Tirsdager i quad, så Cabot 08:00 til 11:00. Onsdag, Mather 08:30 til 11:30. Og torsdag Annenberg 08:00 til 11:00. Så Scratch, mye folk trenger ikke kontortid hjelp for Scratch, som er helt greit. Hvis du gjør det, er at helt greit også. Men i fremtiden, problemet settene, får de mye vanskeligere. Så dette kommer til å være din venn. Definitivt gå til kontortid. Planlegger å gå til kontortid. Når du kommer til problem satt fire, fem, seks, sju, du trenger å gå til kontortid. Det er der mye hjelp og arbeidet blir gjort. Jeg tror i fjor, bare for eksempel på torsdag kvelden-- så jeg tror problemet settene var på grunn på fredag. Så torsdag kveld, ville vi ha 200, 250 studenter ved kontortiden. Så definitivt gjøre bruk av disse. Dette er dine beste venner. Som dette er der hvis du er fast på et problem sett, Dette er hvor du vil sannsynligvis få hjelp. Så kontortid. OK, så de er kunngjøringer. Kunngjøringer er gjort, så la oss starte. OK, apparatet. Visste alle laste ned apparatet ennå? Nei. Som i så som så. Jeg slags lastet ned apparatet. Høyre så apparatet er nytt i år, så vi er nok kommer til å ha noen bugs i den. Så kan du laste ned det så tidlig som mulig. Så problemet satt en kommer til å fortelle deg nøyaktig hvordan du skal laste den ned. Komme i gang å installere akkurat her. Det kommer til å fortelle deg hvordan for å laste ned apparatet. Så definitivt laste ned apparatet før heller enn senere. Instruksjoner er i P sett spec. Så hvis du venter til onsdag natt, og da har du trøbbel, og du sender oss en e-post til midnatt onsdag kveld at du ikke kan laste ned apparatet, det er ikke en legit grunn for en utvidelse. Du må gjøre det nå, og du vil ha problemer. Jeg prøvde å laste den ned i går kveld. Jeg kjørte inn i en liten bit av problemer. Hvis du kjører i trøbbel installering, definitivt treffer retry, fordi jeg traff bare prøve en par ganger, og til slutt det fungerte, som ikke gjør noe forstand, men det gjør. Så definitivt prøve på nytt, men hvis du komme opp mot en murvegg, skyte oss en epost på hodene, og vi vil være mer enn gjerne hjelpe dere. Hva skjer? STUDENT: Bare en rask spørsmål. Hvis de sjekker stil, det er en del som sier at vi ikke inkluderte dette. JASON Hirschhorn: Ikke ennå. STUDENT: Den sier kjøre den. Hvordan du utfører som til sørge for at det er i systemet ditt? JASON Hirschhorn: Du er kommer til å kjøre et bash-kommando. Jeg skal gå over det senere. Cool. Så apparatet kan være en litt skremmende, fordi du er vant til slags kjører i grafisk brukergrensesnitt. Så Scratch var et grafisk brukergrensesnitt grensesnitt, så hva mener jeg med det? Det jeg mener er at når du er programmerer, du i utgangspunktet bruker blokker av kode. Du kan se koden og sånt. Apparatet, du kommer til å gjøre ting i en kommandolinje miljø. Og så for resten av programmer liv, du kommer til å være å gjøre ting i kommandolinjen miljøet. Så det er godt å hoppe i tidlig og få litt erfaring. Så la oss gjøre det. Så det er Rob. OK, så la oss bare hoppe inn kommandolinje ting. Så dette er apparatet. Kan noen fortelle meg hvorfor vi bruker et apparat? Hva er apparatet? Er det noen som vet? Hva skjer? STUDENT: Det er bare en virtuell maskin at du kjører maskinen din, slik at du kan komme over OS uenighet mellom Mac og PC. JASON Hirschhorn: Perfect. STUDENT: Det er en universell mal. JASON Hirschhorn: Ja, det er som en universell mal. Det er perfekt. Så ja, det er en virtuell maskin. Så det er i utgangspunktet et operativsystem. Dette er et operativsystem. Dette tilsvarer din Mac, eller du PC eller Linux. Dette er nøyaktig det samme. Og slik at du kan gjøre lignende ting. Hvis du ville, kunne du gå på nettet for eksempel. Du kan virkelig ikke se det, men akkurat her, Google Chrome. Du kan gå på nettet om du vil. Dette er et operativsystem. Og grunnen til at vi gjør det er fordi det er mye lettere når vi deler ut instruksjoner og alt. Hvis det er bare en ensartet miljø, det er mye lettere for oss, og det er mye enklere for deg. Du kommer ikke til å kjøre inn det kjøre inn i noen særegenheter når du programmerer. Vi vet nøyaktig hva du kommer til å kjøre inn. Så apparatet er her. Så når du starter programmering, er du kommer til å gå ned til venstre hjørne. Det er en liten boks. Du kommer til å klikke den. Dette er din terminalvindu. Så det er her du kommer å være mye av semesteret. Så la meg zoome inn litt. OK, så får rundt en terminal vinduet er litt annerledes. Først, det er ingen ikoner. Jeg kan ikke klikke noe. Det er ingenting å klikke. Så må du finne ut en måte å finne ut hvor du er, hva som er her, og hvordan du kan bevege deg rundt. Så de to mest nyttige kommandoer trolig er ls-- så hva tror du ls gjør? STUDENT: List. JASON Hirschhorn: Lister, ja. Det viser bare algoritmer i katalogen. Og deretter cd. Så la oss si jeg ønsket å cd CS50, hva gjorde at gjøre? Yeah? STUDENT: Endrer katalogen din. JASON Hirschhorn: Perfect, ja. Det endrer bare katalogen. Så la oss gå tilbake. Så hvordan går jeg tilbake? Så la oss si jeg ønsket å gå tilbake til den forrige katalogen. Ja sikkert. STUDENT: Jeg tror du skriver cd bare uten noe. JASON Hirschhorn: Du kan gjøre det. Så perfekt. Så hvis jeg skriver cd, er dette faktisk kommer til å dukke meg sikkerhetskopiere til hjemmekatalogen. Så du ser denne tilde, som kommer til å dukke meg vei tilbake til der tilde er. Så det kommer til å dukke meg opp tilbake til hjemmekatalogen. Men la oss si at jeg gjorde noe sånt som dette. La oss si at cd CS50. ls igjen. Jeg har andre ting. cd super delen. cd-fil, så jeg kommer dypt. Og så la oss si at jeg ønsker å bare komme tilbake opp til toppen. cd. La oss si at jeg ikke ønsker å gjøre det. La oss si at jeg bare ønsker å komme tilbake til katalogen som var rett over meg. Hvordan gjør jeg det? Så la oss si cd CS50. cd supersection. Så la jeg er her. La oss si at jeg vil bare ha å dukke opp en gang. Hvordan gjør jeg det? Ja, hva skjer? STUDENT: Du bare skriver cd supersection igjen. JASON Hirschhorn: Du kunne gjøre det. Vel jeg er i supersection. STUDENT: Åh, den ene før. JASON Hirschhorn: Yeah, slik at du kan gjøre det. Du gjør cd ~ CS50. Så hvis du ser her, dette er din vei akkurat her. Det er din vei. Så du kunne seriøst bare gå cd ~ / CS50. Boom, du er der. Hva er en enklere måte å gjøre det selv? Det var helt riktig, men hva er en litt enklere måte å gjøre det, fordi mye ganger du kommer skal hoppe i kataloger, hoppe ut av kataloger. Så la oss gå tilbake. cd supersection. Så la oss si jeg ønsker å komme tilbake virkelig rask. Du kan gjøre noe sånt cd dot dot. Det kommer til å dukke du sikkerhetskopiere virkelig rask. Så cd supersection. cd-filer. La oss si at jeg er her. Forresten, er klart bra, fordi min vinduet var å få en litt rotete. Så ls, så jeg ønsker ikke å være her lenger. cd dot dot. Ta meg en opp. Cd dot dot tar meg en opp. Cd dot dot og tilbake til mitt hjem. OK, så cd, ls. Trolig den viktigste ting, fordi du er kommer til å trenge å vite hvor du er. ls kommer til å fortelle deg hvor du er, og cd er hvordan du kommer til å hoppe rundt. Du kan også gjøre noen andre kule ting. Så for eksempel ls. ls er bare kommer til å vise deg katalogene i filen. Det er også kommer til å vise deg de filene. Men det er bare kommer til vise deg hva som er der. Hvis du ville ha noe litt mer kjølig, og du kommer til å faktisk gjøre dette i et par uker. ls dash l. Som skriver ut en litt mer informasjon. Kan noen gjette på venstre hånd side den drwx, rwx og sånt. Er det noen som har en idé hva det kan bety? STUDENT: Tillatelser. JASON Hirschhorn: Yeah, perfekt. Tillatelser. Så du kommer til må forholde seg til dette når du gjør web-programmering senere. Hvis du noen gang har gått på nettet, og du har klikket på et bilde eller klikket på et felt, og det sa permission-- liker tillatelse ikke tillatt, eller lignende tillatelse ikke gis eller hva, det er fordi når de er programmering, de har ikke satt disse tillatelsene å la deg gjøre det. Så hvor det kommer fra. OK, så det er kult. Så vi hoppet rundt. Vi kan se på ting i katalogen vår. Men hvordan gjør vi ting? Jeg har kataloger her. Det er kjempebra. Hvordan lager jeg en ny katalog? Si at jeg ønsker å lage en ny katalog for akkurat nå. Du kan gjøre noe som dette, mkdir. Så gjør katalogen. Så hva ønsker du å kalle denne katalogen? STUDENT: Awesome. JASON Hirschhorn: Awesome. Jeg elsker det. Gjør katalogen awesome. Og der du går. Så vi trenger en liste. Du har en ny katalog. Og du kan si det er en katalog i apparatet fordi det har denne fargen, ikke sant? Så det er som en blålig lilla eller hva. Så skal vi endre. La oss endre katalog. La oss gå inn directory-- ja, hva skjer? STUDENT: Er det en liste over alle disse [uhørbart] online? JASON Hirschhorn: Ja, jeg skal sette dem opp on-- vi vil ha lysbilder. Det vil være en PDF. Vi skal sette dem opp for alle. Ja, beklager det er en masse kommandoer. hvis du vil ha meg til å bremse ned, eller gå tilbake, eller noe sånt, definitivt gi meg beskjed. Det er mye å absorbere en gang. Hva skjer? STUDENT: Kan jeg spørre en potensielt dumt spørsmål? JASON Hirschhorn: Det er ingen dumme spørsmål. STUDENT: Det er. En katalog er for bare ute på informasjon hvor du lagrer den. JASON Hirschhorn: Yeah. STUDENT: Er som i hovedsak hva du gjør? Så når vi gjør noe, hello world eller hva, den er lagret i telefonboken, ja? JASON Hirschhorn: Yeah. STUDENT: Er det sant for alt. Alt er lagret i katalogen. JASON Hirschhorn: Yeah. Når du gjør det, hva katalogen du er i, det kommer til utgangspunktet lagre den i den katalogen. STUDENT: Og når vi kaller det, Vi kaller det fra katalogen. JASON Hirschhorn: Ja, så katalogen er der det es. Så det er litt som om du har en ny mappe på skrivebordet og deretter skrive en tekst filen, legg den i mappen at filen er i den mappen. Betyr det fornuftig? STUDENT: Yeah. JASON Hirschhorn: Ja, hva skjer? STUDENT: Kan jeg bare be deg om å gjøre det litt større? JASON Hirschhorn: Å, ja. Unnskyld. Projektoren er så ille. Vi hadde så mye problemer med dette tidligere. Er det bedre? Er det for stort? STUDENT: Nei, nei det er det ikke. JASON Hirschhorn: Nei, det er ikke det. Er det for lite? Hva skjer? STUDENT: Jeg beklager, hva er kommandoen for clearing? JASON Hirschhorn: Oh, klart. Hvis du ønsker å fjerne, bare skriver klart. klart inn. På den siste apparatet hva det i utgangspunktet gjør, det fjerner ikke din informasjon, det bare slags skifte alt ned en skjerm. Så hvis du skrev clear-- for eksempel la oss si at jeg ruller opp. Jeg kan bla opp. Dette er alt jeg gjorde. Men hvis jeg skriver klart, og deretter Jeg blar opp, her er mine ting. Så det er ikke å slette det, det er bare utgangspunktet gir deg en ny ramme. STUDENT: Hvordan du [Uhørbart] en katalog? JASON Hirschhorn: Vi skal komme dit. [Latter] Slow din roll. OK. OK, så så vi er i en directory akkurat nå. Så David, tror jeg på forelesning Han gjorde noen kule ting. Så la oss skrive et program. Så du kan gjøre det en rekke forskjellige måter. Du kan bruke noen form for tekst editor. Du kan bruke Nano, du kan bruke Vim, Emacs. De er litt mer komplisert. Eller du kan bruke noe i her som heter gedit. Unnskyld. gedit er ikke fornøyd. Så gedit er i utgangspunktet bare en tekst editor. Akkurat som jeg tekstredigering ordet prosessor eller noe sånt. Så det fikk en fin grensesnittet bare liker dette. Så du gjør noe sånt. Så faktisk la meg gi den navnet fordi jeg aldri gjorde det. Så hva ønsker du å navnet vårt første programmet? Det er bare kommer til å si hei. STUDENT: [uhørbart]. JASON Hirschhorn: Du mangler fantasi. OK, gedit. Hei. Jeg kommer til å gjøre .txt. OK, så her er det. Så la oss skrive et program. Så jeg tror at du så dette på forelesning. Du trenger en hovedfunksjon. Boop. Så dette er bare en hovedfunksjon. Større? Ja, beklager. OK, så du trenger en hovedfunksjon. Jeg tror jeg hopper pistolen litt, men det er aldri dårlig å få vant til denne type ting. Så en hovedfunksjon, hver C-program du er kommer til å skrive for resten av denne Kurset vil ha en hovedfunksjon. Er det noen som vet hvorfor? Hva skjer? STUDENT: Begynn. JASON Hirschhorn: Akkurat, så det forteller programmet hvor du skal begynne. Så hvis du ikke har en hovedfunksjon, og du kompilere dette og sånt, det er ikke til å kjenne skulle starte. Main er alltid der det starter. Så du har en hovedfunksjon, og deretter does noen husker hvordan du skriver? STUDENT: printf. JASON Hirschhorn: Ja, printf. printf hi. OK, nå har jeg satt dere opp å mislykkes, men dette vil kompilere. STUDENT: Nei. JASON Hirschhorn: Hvorfor? Det er flere grunner til hvorfor. Jada. STUDENT: Det har ikke standard [uhørbart]. JASON Hirschhorn: Perfect. Så hva er dette som kalles opp her? STUDENT: [uhørbart] JASON Hirschhorn: Det er en header-fil, ikke sant? Det er en header-fil. Og du er helt riktig. Dere begge har rett. Så for å inkludere det, jeg bare gjør pund Utover standard input output .h. Er jeg flink til å gå nå? Ville denne kompilere? STUDENT: Nei. JASON Hirschhorn: Hvorfor ikke? STUDENT: Det er en [uhørbart] tekst. JASON Hirschhorn: Ja, kjempebra. Så jeg bare gjorde det. Så jeg lagret det, men gedit hi.txt. Så nå hvis jeg gjør ls, her er det. Akkurat her. Å, det er ikke i awesome. Jeg må ha gått ut. Oh, perfekt. Hvordan legger vi dette i fantastisk? Så jeg vil ikke at det her i mitt hjem katalog med alt annet. Jeg ønsker å sette den i mappen. Hvordan gjør jeg det? Ikke for hardt. Flytt. Så vi har allerede lært ls, listen. cd til å endre kataloger. cd dot dot å støte ut av kataloger. Og nå skal vi begynne å bevege seg rundt filer. Så for å flytte bare flytte hi.txt, og Jeg kommer til å sette den i awesome. Bare vær forsiktig. Når du skriver i kommandolinjen, alt saker. Så store saker. Hvis jeg hadde gjort små bokstaver a, er det ikke kommer til å vite hva som skjer. Så alt saker å være svært spesifikk. Så kjøre at ls. Det er ikke lenger her. La oss endre katalogen til awesome. ls. Boom, det er der. Og noen nevnte hvorfor dette ville ikke kompilere. Hvorfor er ikke til å kompilere på nytt? Yeah? STUDENT: Det er ikke i en .c. JASON Hirschhorn: Perfect. Det er ikke en .c, s så hvordan er jeg kommer til å endre navnet til en .c? Hva er en enkel måte å gjøre det? La oss bruke kommandoen vi nettopp gjorde. Så vi skal bare flytte hi.txt å hi.c. ls hi.c. Og så bare for moro skyld, la oss bare hoppe inn i dette virkelig rask. hi.c. Du vil merke det er fin og fargerik. Så disse er bare slags nyttig farger når du programmerer. Så int og tomrommet, de som er datatyper. Vi vil gå over dem i et sekund. Hei er en streng. Men nyttig farger. Så hvis du noen gang ved et uhell velger feil forlengelse, du bør ha disse fargene. Hva skjer? STUDENT: Hvordan kan jeg kopiere inn i en fil [uhørbart] inn i en annen fil? JASON Hirschhorn: Åh, jeg er kommer til å vise deg det også. Så kopiere fjerne er på kaien. La oss gjøre dette. Pass på at det fungerer. Gjør hi. Works, kjøre den. Så ./hi awesome. Det er første program. La meg gjøre det større. Så en virkelig bra-- Ja, hva skjer? STUDENT: Hvorfor skulle det være at når jeg tar gedit, det gir ikke meg en annen linje for gedit hi.txt? Det setter bare markøren til en linje. STUDENT: Yeah. Den [uhørbart]. JASON Hirschhorn: Vent, så si det igjen. STUDENT: Når jeg skriver gedit, den første gang, den første line-- JASON Hirschhorn: Opptil det helt i toppen? STUDENT: Har ingen J Harvard apparatet, og markøren er bare helt til venstre. JASON Hirschhorn: All helt til venstre? STUDENT: Yeah. Har noen andre det? JASON Hirschhorn: Oh, godt J Harvard er akkurat som brukernavn. Så det er bare standard brukernavn. STUDENT: Det slutter å svare. JASON Hirschhorn: Oh, den slutter å svare. OK, så hva du trenger å gjøre er du må lukke ut av gedit. Så nær ute av gedit, og det skal vende tilbake. Så er gedit åpen på din apparatet akkurat nå? Hvis du avslutter ut av det, bør det tilbake, og du bør være godt å gå. Gjorde at arbeidet? STUDENT: Det gjorde du bruker den gedit kommandoen til open-- JASON Hirschhorn: Nei, den første gedit kommando var en feil. Den første gedit kommando, Jeg skal gjøre gedit hi.txt. Så jeg gir den et navn, så gedit hi.txt. hi.txt er navnet på filen. Den første var bare en feil, og deretter Jeg lukket raskt ut av programmet. Så spørsmålet var hvis jeg gjør gedit, jeg er ikke kommer til å være i stand til å virkelig gjøre noe annet i min kommandolinje før jeg lukker at gedit, så jeg tror det er det de kjørte inn. Så lukk gedit. Det vil tilbake ut av det programmet, og deretter vil du være i stand til å faktisk skrive i kommandolinjen igjen. Er det bra? Dope. Så bare sørg for å lukke det hvis du får problemer. OK, så en virkelig godt spørsmål et sekund siden var kopiering. Så nå har jeg hi.c. Men la oss si at jeg ønsker å endre det. Jeg vil at det skal være litt bedre. Jeg ønsker å si hei klasse. Men jeg ønsker å holde denne malen. Jeg trenger ikke å omskrive hele programmet på nytt. Jeg ønsker å holde malen. Hvordan kopierer jeg? Easy. Så cp hi.c newhi.c. Nå har jeg to. Og da kan jeg åpne opp newhi.c, og i stedet for å bare si hei, Jeg skal si hei klasse! Så jeg skal gå tilbake. Gå ut. Gå tilbake til min kommandolinje. ls gjør newhi. Kjøre den. There. Det er bedre, mye bedre. Så hvis du ønsker å kopiere noe, enkelt som det. cp er kopi. Så vi har gått over i bevegelse, lage kataloger, kopiering. La oss se hva annet skal jeg gå over? Å, ja. La oss gå over dette. Så dette var kjempebra. La oss si at jeg ønsket to-- oh wait. Jeg kommer til å gå tilbake til awesome. La oss si at jeg ikke vil ha disse filene her. La oss si at jeg vil ha dem i en ny katalog som i katalogen awesome. Jeg ønsker å begynne å organisere, så nå skal jeg å ha en ny katalog som heter hi. Det har alle de programmene Skriver jeg kalt hi. Så hvordan gjør vi det? STUDENT: Endre katalog. JASON Hirschhorn: Yeah. hei. Boop. mkdir hi_dir. Det klaget fordi jeg allerede hadde et hi i her. Så nå har jeg en hi-katalogen. Så nå vil jeg flytte alt, alle programmene jeg skrev, Jeg ønsker å flytte dem inn i hi-katalogen. Bare ren ting opp. Hvordan gjør jeg det? STUDENT: [uhørbart]. JASON Hirschhorn: Flytte det, ikke sant? Så la oss gå. Yeah? STUDENT: Hva er forskjellen mellom hei og hi.c at vi allerede har. JASON Hirschhorn: Oh, hi.c er den faktiske. Så det er den filen som du skrev. Så hvis du skulle åpne den opp i gedit eller Nano, det er hva du skriver i. Når du kompilerer den, så du får en kjørbar fil. Det er hi. Så hvis du åpnet opp hi, det kommer å være en haug med vrøvl til deg. Det er i utgangspunktet kommer til å være samling av data instruksjoner. Hva skjer? STUDENT: Hva betyr alle fargene? Den blå er trolig katalogen. Hva er gult? JASON Hirschhorn: De er kjørbare filer. Så når jeg gjorde hi.c, det ga me-- slik at jeg kan gjøre det. Hopping pistolen. Så fjerner hi ja. Så da la oss gjøre ls. Jeg har ikke hi lenger. Så når du gjør, er at når du ta programmet som du skrev og du gjør en kjørbar fil. Så gjør hi.c-- godt, gjør hi. Jeg tror han gikk over dette i foredraget. Disse er gjeng med kompilatoren instruksjoner. Så i stedet for å faktisk skrive clang med alle disse. Dette er flagg. Du bare skriver gjøre. Så dette gjør de kjørbare filer. Så når du gjør ls, nå har du hi. Så dette er hva du er kommer til å faktisk kjøre. Og så du kjører at ved å gjøre ./hi, og det kjører programmet. Men hvis jeg prøver å gjøre det med hi.c, nei, det er ikke til å fungere. Ja, gjør det fornuftig? STUDENT: Mm-hm. JASON Hirschhorn: Cool. Vent, jeg ønsket å si noe annet. Bare virkelig rask, i tilfelle noen er interessert, når du hopper ut av et katalog, er det dot dot. Er det noen som har en idé om hva kanskje bare de snevre prikk betyr? STUDENT: [uhørbart]. JASON Hirschhorn: Det er faktisk gjeldende katalog. Så det er din nåværende katalog. Så jeg er her. Jeg er i kjempebra. Hvis jeg gjør cd prikk, betyr det ikke gjøre noe. Det tar meg til min nåværende katalog. Så litt overflødig, men du må å gjøre det, så ./ programmet navn, for å kjøre din program, må du gjøre det. OK. STUDENT: Hvis du gjør cd dot dot dot, men mange prikker vil det bare ta deg opp at mange kataloger? JASON Hirschhorn: Du mener som cd dot dot dot dot? STUDENT: Yeah. JASON Hirschhorn: Nei. Så egentlig Husker jeg gjorde ls-l? Hvis jeg gjør noe annet, kan jeg ls -a. Så hva dette sier er -a viser deg alt. Så det viser ting som er skjulte og ting som ikke er skjult. Så hvis du legger merke til at når jeg gjorde bare ls, jeg bare så at ting, ting jeg har gjort. Hvis jeg gjør -a, det kommer å vise meg alt. Og så gjeldende katalog, katalog over den. Betyr det fornuftig? Yeah? STUDENT: Men de er ikke faktisk i katalogen. Gjeldende katalog er ikke i seg selv, så hvorfor viser de med prikker inne? JASON Hirschhorn: Du mener det er som det ikke er i katalogen. STUDENT: Høyre. Så vi har en liste over ting som er i katalogen. JASON Hirschhorn: Jeg tror det er i katalogen. Som -en viser alt, selv om det er gjemt inne i katalogen. Så jeg tror det er bare en rute til gjeldende katalogen hvis det er fornuftig. Det er litt rekursiv. Det er som Inception. Hva skjer? STUDENT: Så du sier -a viser [uhørbart]? JASON Hirschhorn: -a, ja. STUDENT: Hva gjør det [uhørbart]? JASON Hirschhorn: Vel, for eksempel, la oss gå tilbake til toppen. Det er vanligvis ting du bør ikke rotet med, og du ikke trenger å bekymre seg for. Så dette er slags hjemmet. Hvis jeg gjør -a, får jeg tonnevis av ting. Alt det der. Og du trenger ikke å rote med noen av de greiene. Definitivt ikke begynne å gå inn her og bare fjerne ting. [Latter] Ja, dette var litt mer comfy ting, men det er godt å vite. Jeg synes det er godt å vite. Men hvis du aldri vil skrive -a i helheten av dette kurset, bare glemme det. Hva skjer? STUDENT: Hva er de ls-l? JASON Hirschhorn: At viser deg tillatelser. I utgangspunktet du bruker det for tillatelser, så -l. Den viser deg litt litt mer informasjon, men igjen er dette en lite litt mer skjegg ting. Dette er bare tillatelser. Så tillatelsene til mappene. Så bare for eksempel, la oss si at jeg har gjort en mappen, slik at d representerer katalogen. Så de er kataloger. Og deretter lese, skrive, utføre. Så de er tillatelser for Jeg tror bruker, gruppe, verden. Helt å gå for langt. Du kommer til å gå inn dette som uker fra nå, men bare så du vet, de er tillatelser. Hva skjer? STUDENT: Kan du klare fremfor bare hoppe til neste ting, kan you-- JASON Hirschhorn: Du mener faktisk slette? Jeg vet ikke. Jeg aldri gjøre det. Hvorfor skulle du ønske å gjøre det? Hvorfor vil du gjøre det? Jeg liker det. Du lever på kanten. Du er som jeg ikke vil ha noe av dette. Det er intens. STUDENT: [uhørbart]. JASON Hirschhorn: Ja, vi kan gjøre det. Beklager, rote med størrelsen er helt freaking meg ut akkurat nå. La oss gå opp. Ja, så nå kan jeg ikke gå opp lenger. Så alt jeg lærte du er borte for alltid. Takk. Vi har gjort våre kataloger. Vi har gjort våre filer og sånt det, så vi har fortsatt alt det der. OK, jeg skal gå fort. Så virkelig rask. Så la oss si jeg er i kjempeflott. La oss si at jeg ønsket å flytte alt til den nye katalogen fordi jeg bare vil å organisere det, ikke sant? Så hvordan skulle jeg gjøre det. Flytt. Vi kommer til å bruke farten igjen. Så flytter hi.c. Og hva du kan gjøre er du begynner notering ting, og det siste du listen er hvor det kommer til å flytte den. Så flytter hi.c hi newhi newhi.c, hi_dir. Og så det flyttet alt inn det siste du nevnte. Så endre katalogen, hi_dir ls. Alt er der inne. Så det er fint og mer organisert. OK, la oss si jeg hater mitt opprinnelige hi program. Jeg ønsker å bli kvitt det. Hvordan får jeg kvitt det? Hva skjer? STUDENT: [uhørbart]. JASON Hirschhorn: La oss si at jeg bare ønsker å fjerne programmet, så bare hei. Nei, du har rett. Så det er rm, men du gjør rm hi. Det kommer til å gi deg en liten advarsel. Det kommer til å si er du sikker på at du vil slette denne, og ja jeg gjør. Hvis du ikke ønsker å bli bedt sånn fordi du ikke har tid for advarsler, fjern -f. Dette er en annen flagg. Det er som -l. Det er som -a. Dette er bare flagg som du gir til disse kommandoene. Så fjern -f. -f f betyr kraft. Så tvinge den. Jeg ønsker ikke å bli bedt om det. Så fjern -f. La oss gjøre hi.c. Bare ble kvitt det. Det gjorde ikke fortelle meg. Men la oss si at i stedet er jeg ferdig med denne katalogen. Jeg ønsker å bli kvitt katalogen. Så jeg fjerner hi_dir. Nei, det fungerer ikke. Nei, så det vil ikke la meg fjerne en katalog. Er det noen som har en idé? STUDENT: Er det fjerne dir? JASON Hirschhorn: Så fjern som dette? STUDENT: Nei. Bare på [uhørbart]. JASON Hirschhorn: Nei, akkurat nå er det ingen hi. Det er bare hi_dir. Så dette er katalogen. Så egentlig hva du vil gjøre er-- oh, har du en idé? Jeg ser ut som en halv hånd. STUDENT: [uhørbart]. JASON Hirschhorn: OK. STUDENT: [uhørbart]. JASON Hirschhorn: OK. Så hvis jeg ønsker å fjerne en katalog, fjern -r. Det er rekursiv. Så fjerner den katalogen rekursiv. Så jeg vil at du skal gå inn i denne katalogen, fjerne alt i katalogen, og deretter bli kvitt katalogen. Og så kommer jeg til å f også, fordi jeg ønsker ikke å be meg med advarsler etter at den fjerner hver enkelt fil. Så fjerner -rf hi_dir. Boom, er den borte. Bare vær forsiktig med hvor du bruker det. Jeg kommer til å bruke den her også. rf awesome. Det er borte. Vær forsiktig med hvor du bruker det. Hvis du bruker det her og skriv noe som dette, ikke noen gang gjøre det. Det vil slette alt på apparatet uten noen gang å advare deg. Og jeg har gjort det. Grading problem setter på 04:00, jeg var prøver å fjerne problem satt kataloger, og jeg gjorde dette. Og jeg var som herregud. Ikke do-- Jeg prøvde å avbryte den. Du kan avbryte. Command C bare avbryter alt, men jeg har allerede slettet som 75%. Så jeg ødela det. Og folk gjør det. Alle gjør dette. Ikke gjør dette selv om dette semesteret. Det suger. Jeg er nervøs å ha det her. Jeg kommer til å slette den. [Latter] Kan du forestille deg? OK, spørsmål. Ja? STUDENT: Så hvis vi gjør alt du gjør her, er dette det samme som bare kommer inn faktisk Fil Lagre som [uhørbart]. JASON Hirschhorn: Oh, du mener gjennom gedit. STUDENT: Yeah. JASON Hirschhorn: Ja det er. gedit er nyttig. Så gedit er veldig nyttig. I denne klassen, kan du gjøre et mange ting gjennom gedit. Du kan spare. Du kan endre navn. Du kan flytte filer og sånt, men bare sannferdig når du går til 50-- vel du er i 50-- 51, hvis du går i 61, dette kommer til å være livet ditt. Dette er kommandolinjen. Dette er hvor du vil programmere for resten av livet ditt, så definitivt bruke gedit hvis du vil. Definitivt en god måte å starte. For første oppgavesett, definitivt bruke, men hver gang på en stund prøve å få mer brukt mer komfortabel med kommandolinjeargumenter. Men du kan, definitivt. Hva skjer? STUDENT: Så når vi ønsker å slette en av filene vi har gjort, det er to måter. [Uhørbart]. Er det en måte når du er slette en katalog å be om rask, slik at du ikke ender opp med å slette den? JASON Hirschhorn: rm -r. Så ikke tving den. Så rm -r. Det kommer til å gå gjennom rekursivt, slette alt, be deg etter alt som vil drive deg til vanvidd. Som jeg nesten utelukkende gjøre rm -f og rm -rf, bare hele tiden. Jeg er som jeg ikke har tid. Jeg er en travel mann. Greit, hva skjer? Yeah. STUDENT: Er det en angre, eller en trash bin, eller noe sånt? JASON Hirschhorn: Nei. [Latter] Jeg kunne gå tilbake og få min apparat som jeg nettopp slettet, nei. Nei, nei, nei. Hvis du gjør rm, bør det være borte. Hva skjer? STUDENT: Så du kan [Uhørbart] sammen. JASON Hirschhorn: Ja, akkurat sånn. Så for eksempel, så du rm -rf. La oss si at jeg ønsker å gjøre ls -la, det viser meg alt, selv skjult ting med sine tillatelser. STUDENT: Så da r, -r flagg, hvis vi ikke har det, vi kan ikke slette en katalog, ikke sant? JASON Hirschhorn: Høyre. STUDENT: Så det sier at vi ønsker å gjøre noe med katalogen? Er det hva det betyr? JASON Hirschhorn: -r betyr rekursivt. Så en katalog kommer til å har filer i det, ikke sant? Så hva du ønsker å gjøre er deg ønsker å gå inn i denne katalogen, slette alt, hele filer i den katalogen, deretter pop ut og slette selve katalogen. Så -r betyr rekursiv, gjør det alt rekursivt hvis det er fornuftig. Yeah. STUDENT: Så kataloger har [Uhørbart] og bare slette den. Eller har du still-- JASON Hirschhorn: La oss prøve. Så mkdir tom. Fjern tom. Nei. STUDENT: Nei, slik at du fortsatt trenger the-- JASON Hirschhorn: Ja, alltid. Så -r, rf, tom. Awesome. Lenger spørsmål? Jeg tror det er din crash kurs på kommandolinje ting. Eventuelle spørsmål, fordi vi kommer til å hoppe over til datatyper, og looper, og alt det der? Hva skjer? STUDENT: Jeg har ikke CS50 viser som en av mine kataloger. Er det vanlig? JASON Hirschhorn: Å, ja. Det er mitt. Ja, det er der min løsninger på ting er. [Latter] Så ja, det er helt normalt. Jeg tror du vil sannsynligvis bare ha disse fire. Jeg tror det kan være normal. Yeah. OK, noen flere spørsmål? Jeg vet det var super rask. Hva skjer? STUDENT: Jeg så den blå grønne fargen. Hva er det? JASON Hirschhorn: Det betyr katalogen. STUDENT: Og denne blå? JASON Hirschhorn: Oh, Mener du denne blå grønne? STUDENT: Nei. JASON Hirschhorn: Denne blå grønt? STUDENT: Nei. Når du listed-- JASON Hirschhorn: Oh. Liker du dette? STUDENT: Ja, ikonene. JASON Hirschhorn: Åh, dette. Jeg vet ikke. Hva betyr det? Så det ser ut til å være peker til en katalog. STUDENT: Det ser nesten ut som et alias. JASON Hirschhorn: Det kan være. Du trenger ikke å vite det. Lenger spørsmål? Awesome. Hvis du har spørsmål, Jeg vet det var mye. Mye av denne informasjonen vil være online. Jeg skal sette det på nettet for dere. Seksjon B vil være på nettet også. Eller hvis du har spørsmål, bare komme opp og spør meg. Her kan du gå. Så nå Sharon og Hannah vil gå over noen av logikken bak problemet satt en. SHARON: Oh my god. Troubles. HANNAH: I mellomtiden, jeg er Hanna. Dette er Sharon. Vi er begge CS50 TFS, og vi kommer til å gi deg en liten intro på et par viktige ting for oppgavesettet en. Alt fra datatyper å conditionals til etter looper. Loops generelt. SHARON: Og til slutt, vi vil ta en titt på P satt en, og hva du trenger å vite om det. Så la oss starte med datatyper. Dere bør være kjent med de som er merket med blått. Så vi kan starte med ints. ints er heltall, så en, to, tre, fire. flyter, flyter poeng. Som heltall med desimaler, så 5.2 eller 5.0. Chars er karakterer som A, B, C. Og en streng, dere alle vet. Som CS50 eller hei og verden. Bool er en boolsk, så vi har sant og usant som vår boolsk. Så hvis noe beregner å truth-- 5 tilsvarer 5, som beregner å true, og hvis vi har fem lik 4, som er usant, slik som beregner til false. Og her har vi den tilknyttede Størrelsen av alle disse datatyper. Og du må vite dette for dine quizer, så dette kan være nyttig å huske, men vi vil legge ut disse. Faktisk de allerede er lagt inn. Så du bør være kjent med de som er uthevet i blått. JASON Hirschhorn: Fast rask, bare i tilfelle du ønsker å vite forskjellen mellom en røye og en streng. Så når du skriver ting, når du har noe sånt som "hei," som kommer til å være en streng. Så hvis det er to sitater, det er en streng. Men hvis jeg skulle en "h" sånn, det er en streng. Men hvis jeg bare har én sitat, det er en char. Og så hva er forskjell spør du kanskje. Vel, er forskjellen Dette er en byte minne. Dette er 4 byte minne. SHARON: flyte? Beskriv det igjen? OK, det er litt som et tall som har et desimaltegn med det, så 5.2 eller 5.0 er en float versus bare 5 er et int. STUDENT: [uhørbart]. SHARON: Oh, kan det ha mange desimaler, så 5,675 til 3,1415. Ja? STUDENT: Trenger vi å vite alle størrelser for dette? SHARON: Ja. STUDENT: [uhørbart]. SHARON: Du trenger ikke bekymre deg for de hvite ennå. HANNAH: Notene er postet på CS50.net/sections. STUDENT: Bare ut av nysgjerrighet, er det et verktøy å vite størrelsen på filene du er ringer, slik at vi skal vite det? SHARON: Så disse er datatypene, men ja. Så i dette tilfellet, som en ville tar opp mer minne eller mer plass? JASON Hirschhorn: Så for et konkret eksempel, i Jeg tror problemet sett fire eller fem, vi er kommer til å gi deg en haug av data, og du i utgangspunktet må traversere de dataene. Så det er nyttig å vite at hvis du har så mange heltall, som kommer til å være det. Så la oss si jeg ga deg ti heltall, hva er størrelsen på det? STUDENT: 40. JASON Hirschhorn: 40 bytes, ikke sant. Så du trenger å vite at OK, jeg trenger å hoppe 40 bytes. Så la oss si i stedet det er 40 tegn, then-- la oss si jeg ga deg 10 tegn, da vet du, OK, jeg bare må hoppe 10 byte. Så det er veldig nyttig å vite Størrelsen på selve datatyper, Fordi mange ganger du vil være å hoppe rundt dataene, så du trenger å vite hvor langt å hoppe. STUDENT: Hva er forskjellen mellom sitater og ett sitat? JASON Hirschhorn: OK, to sitater er en streng. Ett sitat er en røye. STUDENT: Som operasjonelt, hva er forskjellen? Begge si hei. JASON Hirschhorn: Oh, sorry. Dette er bare h. Beklager, dette er ikke klart. STUDENT: Så toppen one-- JASON Hirschhorn: Dette er en streng, ja. Så det er to tegn, ikke sant? String, hi. Men la oss si at jeg bare hadde et enkelt tegn, hvis jeg setter to anførselstegn rundt bare h, det er en streng. Dette er en streng h. Betyr det fornuftig? Så dette er fire byte. Men la oss si at jeg ble kvitt av at en bare sette en. Ett sitat. Dette er nå en char, en char h. Så akkurat det samme, annen datatype. Dette er bare en byte, mens strengen var fire byte. Yeah. STUDENT: Så hvis du prøvde til å lagre et ord som David, du ønsker å bruke en streng fordi uavhengig av hvor lenge strengen er, det vil bare ta fire bytes med mindre det er en lang lang eller en dobbel, der case-- så hvis det strekker seg utover fire tegn, da du ønsker å gjøre den om til streng. Er at allmenn logikken bak. JASON Hirschhorn: Hvis den strekker utover ett tegn, er det en streng. STUDENT: Så det er ingen [uhørbart] til lagring av en fire brev ord som fire individuelle eller tre bokstaver ord som tre enkeltstående tegn fordi det vil bare være tre bytes, i motsetning til de tre deler strengen. JASON Hirschhorn: Du kunne gjøre det. Du kan gjøre det, men jeg gjør ikke tror det er virkelig verdt, fordi du bare sparer én byte. Vet du hva jeg sier? I den store sammenhengen, som vil egentlig ingen rolle. Men for eksempel printf, hvis du skriver f og du har tre tegn du kan skrive ut som out-- la oss si du C-A-T, du kan skrive ut katten bare ved gjør en char en char en røye, eller kan du skrive ut strengen katt. Det er akkurat det samme. Så du kan gjøre det sånn, men-- STUDENT: Det kommer ikke til å spare så mye. JASON Hirschhorn: Yeah. Hodepinen at det ville indusere er ikke verdt det. Yeah? STUDENT: For eksempel du hadde h med en versus to, enkle eller doble anførselstegn. Hvorfor ville du vil lagre en enkelt bokstav som en streng. Hva formålet ikke som noen gang tjene? JASON Hirschhorn: Jeg vet ikke. Jeg mener, det virkelig avhenger av programmet. For eksempel, jeg tror senere vil du komme inn i kommandolinjen ting. Så for eksempel, i stedet for meg spør deg for en integer-- beklager, kan jeg snakke til deg? HANNAH: Ja. JASON Hirschhorn: Så for eksempel, i stedet av meg å spørre om noe med komme enden, som Jeg tror du kanskje har sett en forelesning, det kan være en kommandolinje. Du bare skriver du det inn på kommandolinjen. Det ville være som - / hello4 eller noe, eller helloh h, uansett. Du gjør det på kommandolinjen stedet for å bli spurt om det, at kommandolinjen er alltid en string, enten det er en fire eller en h, som alltid er en streng. Så det er ett eksempel på når du kan har en enestående brev eller en spesiell tall representert som en streng. SHARON: All right. Og så her er noen grunnleggende operatører. Forhåpentligvis du er kjent med den første fire like generelt. Så det er å legge til, trekke fra, multiplisere og dividere, og pass på at du bruker de riktige tastetrykk. Og så er det også modulo, som noen av dere er kanskje ikke veldig kjent med. Og hva modulo gjør er at hvis vi tar dette eksempelet 4% 2, det tar resten av hva det gjør i divisjonen. Så 4 delt på to er to, og det er ingen rest. 4 dividere med 3 er ett og 1/3, og så resten 1. Så det beregner til en. Og deretter 4% 5 er brøken 4/5, og resten er 4. Betyr det fornuftig? OK, kult. Og vi følger PEMDAS her også. Så noen boolske uttrykk. Så dere har sett lik equals å sammenligne, si, to tall. Så hvis 5 er lik lik 5, som beregner til sann. Kontroller at du har bare ett likhetstegn. For ikke likeverdige, er det bang eller utrop. Hannah: To likhetstegn når du gjør likestilling. SHARON: Å, ja. Pass på at du ikke gjør det har ett likhetstegn. Og så for ikke likemenn, det er bang verdige. Og så kan du se gjennom for mindre enn, større enn. Og så har vi logisk og og logisk eller høyre her. Og hva det gjør er, hvis Husker du i Scratch når du hadde den blokken Når det er sagt, og, og da kunne passe to forskjellige brikker det, det er hva dette og gjør. Og sørg for at du gjør to-tegn. Og denne tasten kan du finne mot høyre, rett under knappen Slett. Spørsmål? STUDENT: Hva var [uhørbart]? SHARON: OK, så hvis du bare gjøre ett, du sammenligner biter. Så hvis du husker hva bits er, de er 0-er og 1-tallet, og så som er å sammenligne noe annet. Så vi kommer til å fokusere på dette for nå. JASON Hirschhorn: Så en lik er som oppdrag, ikke sant? Så som int x er lik fire. Du sier at variabelen x er lik fire. Så en lik er oppdraget, men ands og rørene eller barene, akkurat som Sharon sa, de er bitvis operatører. Du trenger ikke å bekymre deg for det. STUDENT: Når bruker du logisk og og logisk eller igjen? Jeg bare glemte når du gjør det. HANNAH: Jada, så hvis du noen gang ønsker for å sjekke om to ting er sant, for eksempel, la oss si at jeg ønsker å sjekke at et tall er mellom 5 og 15, Jeg vil si sørge for at antallet er større enn fem. Så la oss si hvis x er større enn 5 og mindre enn 15. Så for at hele setning for å vurdere å true, du trenger både av hva slags sub uttalelser for å vurdere den sanne. Med eller du bare trenger en av de to eller begge deler. STUDENT: Great, takk. SHARON: Og også i Scratch, er jeg sikker på at i mange av dine prosjekter du hadde om å berøre kanten eller hvis berøre en annen sprite deretter sprette eller noe. HANNAH: All right, så hvorfor gjør vi bryr seg om alle disse Booleans? Vi har disse strukturene som du har sett i Scratch kalt conditionals. Og conditionals er noe av det dannes hvis noen tilstand eller noen boolsk er sant, så gjør koden mellom disse klammeparentes. Så du kan se til høyre her er Scratch blokken. Du har denne hvis da, og noe som går inn i den lille figuren som ser ut som dette-- jeg vet ikke hva du hadde kaller at-- som kommer til å være boolsk eller tilstand. Så igjen, en boolsk eller Tilstanden er noe som enten vurdere som sanne eller usanne. Og igjen, kan du kombinere Booleans. Du kan ha, igjen, er x større enn 5, og x er mindre enn 15. Eller du kan bare ha én av disse x er mindre enn 5. OK, i C Det er så til venstre. Det er bare søkeord hvis. I parentes, den tilstand eller den boolske. Og deretter koden i mellom disse to klammeparentes vil bare utføre, vil bare kjøre hvis som tilstand eller at boolsk er sant. Betyr det fornuftig? Awesome. OK. Og da som du kan har sett i Scratch, Vi kan også legge på en annet, som er utgangspunktet noe mellom klammeparentes henhold annet vil bare kjøre hvis betingelsen er usann. Fornuftig? Eventuelle spørsmål om disse to? Awesome. Cool. Så her er en rask eksempel. La oss si at vi ønsker å å bestemme, basert på den tiden, om vi skal si god morgen eller god kveld. Jeg skal si om det er før 12.00, vi kommer til å si god morgen, ellers skal vi å si god kveld. Og da jeg sa at ellers som er tilsvarende i C til denne andre. Så vi kommer til å sjekke om militærtiden er mindre enn 12:00, si god morgen. Ellers si god kveld. STUDENT: Så ville vi faktisk får den inngangen for militær tid med get streng. HANNAH: Høyre. Visste Et annet sted vi hadde faktisk nødt til å gi denne informasjonen. Akkurat her har det ingen verdi. Vi har aldri selv erklærte den. Jeg antar at et sted over dette programmet jeg erklært tiden, eller bedt tiden, or-- noe annet med dette eksemplet? Awesome. OK, nå har vi i tillegg å så enkelt hvis annet format, vi har to forskjellige andre konstruksjoner. Så først må vi bryteren uttalelse, og her er den generelle form av en bryter uttalelse. Du har nøkkelordet slå samme måte som du har søkeord hvis. Og deretter en inngang, i dette tilfelle n. Så dette kan bare jobbe med heltall. Slik at innspill n har å være et heltall, OK? Og vi kommer til å følge en av disse sakene avhengig av hva denne verdien n er. Så i dette tilfellet, må du først sammenligne er n lik konstant en, hvis det er, gjøre alt slags innrykket over her. Jeg kan peke på det fordi jeg er for kort. Hvis det ikke er lik konstant en og er i stedet lik konstant to, vi kommer til å følge den andre blokken, og vi kan gjøre dette så mange ganger som vi ønsker, og deretter som standard er hvis det passet ikke med noen av de ovennevnte tilfellene, kjøre denne koden. Eventuelle spørsmål her? Dette er litt mer komplisert. Yeah? STUDENT: Break betegner hva? HANNAH: Jada, så når vi går inn at blokken, hvis vi finner, la oss si, vår n er i virkeligheten lik en konstant, vi går inn i den blokken etter kolon. Vi gjør det som er på at linjen av kommenterer, og da vi bryter, som betyr at vi får ut av denne bryteren setningen helt. STUDENT: OK. HANNAH: Mm-hm? STUDENT: Er innrykk nødvendig, eller trenger du [uhørbart]? HANNAH: Sure. Så, som alltid, innrykk er strengt tatt ikke nødvendig. Datamaskinen gjør ikke bry seg om du rykke inn. Vi, som mennesker som er lese koden, gjør omsorg. Så det er mye lettere å se opp på skjermen og se, oh, jeg vet nøyaktig hva skjer når n er lik en konstant. Hvis jeg hadde tilfeldig innrykk, jeg ville ikke være i stand til å fortelle så lett. Yeah? STUDENT: Så hvis ønsket en bruker til velge ett av alternativene vi har på listen, ville vi bruker, antar jeg, [uhørbart], men får et helt tall fra dem og sette det inn n? HANNAH: Helt riktig. Så la oss si at vi ønsket å sjekke hva heltall. Vi sa ja, angi et heltall mellom 0 og 5, la oss si. Vi kan be om at n, be om den verdien, og deretter har hvert av disse tilfellene. Og igjen, dette er noe vi kunne veldig lett gjøre med hvis uttalelser, ikke sant? Vi kunne ha hvis lik sak en, hvis lik sak to, hvis lik sak tre, så videre og så videre. Dette er en litt raskere og litt renere. Det er slags bare en fin struktur nå. STUDENT: Raskere som skriftlig? Eller gjør det kjøre datamaskin litt raskere? HANNAH: Det går litt raskere. Yeah? STUDENT: Så den doble dash er bare kommentere or-- HANNAH: Åh, jeg er så lei meg. Jeg gjorde ikke peke det ut. OK, hvis du har den //, er en kommentar. Bare // er en kommentar. Så noen gang datamaskinen ser at, det kommer å si OK, noe som følger dette, jeg kommer bare til å ignorere. Jeg kommer til å late som du aldri selv skrev det. STUDENT: Så dette [uhørbart]. HANNAH: Dette gjør absolutt ingenting. Men hvis jeg skrev noe sånt på første kommentaren jeg skrev i stedet printf si gratulerer du skrev inn konstant en, som ville være noe. Yeah? STUDENT: Så i det virkelige liv, tilfellet ville bare rett og slett være et tall og deretter [uhørbart] ville være et annet heltall. HANNAH: Nettopp. STUDENT: Og trenger du ellipser? HANNAH: Sorry? STUDENT: du trenger du det? HANNAH: Å, nei. Jeg beklager. Det var bare for å vise at du kan gå på i så mange tilfeller som du vil. La oss gjøre et konkret eksempel på at kan gjøre ting litt mer klart. OK, så la oss si at jeg sier, OK, gi meg et heltall n som representerer en klasse nummer, spesielt en datamaskin vitenskap klasse nummer. Så hvis du gir meg 50, Jeg kommer til å si stor. CS50 er en introduksjon til datamaskinen vitenskap, og da kommer jeg til å bryte. Så det betyr at jeg hopper ut av hele denne bryter uttalelse, så nå er jeg ferdig kjører koden, OK? Hvis du ga meg i stedet 51, hadde jeg skrive ut den andre setningen. Og så hvis du ga meg noen nummer som ikke var 50 eller 51, Jeg kommer til å si beklager, jeg er ikke er kjent med den klassen. Yeah? STUDENT: Du trenger ikke pause. HANNAH: Jeg beklager, jeg har ikke pause? STUDENT: Hva om. HANNAH: Åh, hva om du ikke har pause? Utmerket spørsmål. Så hva ville skje er at du ville gå inn, og du ville sjekke er jeg lik 50? Og la oss si, ja, du var lik til 50, vil du skrive ut uttalelse. Og så ville du fortsette å utføre, så du vil si jeg er lik 51? Og du ville gå på og gå gjennom hvert fall sånn? Ja? STUDENT: Er standard linje analogt til å si annet? HANNAH: Nettopp. Veldig bra. Det er som den type fangst tatt. STUDENT: Så hvis du ikke har pause og deretter en av sakens uttalelser var sant, og da er det sa økning n med 1, da ville det automatisk gjøre den neste. Det ville sjekke saken 51, og deretter vise at så godt? HANNAH: Ja, jeg tror det ville fungere. Så du kan slags bli rotete, så en pause er en god ting å ha. Yeah? STUDENT: Uten pause ville det gjøre det standard? HANNAH: Det er et godt spørsmål. JASON Hirschhorn: Jeg tror det bare går. Så hvis du ikke har break-- så la oss si at jeg gjorde 50 og det sjekket 50, og det ville skrive det ut. Skriv ut CS50 som introduksjon til informatikk. Du trenger ikke pause, bør det gå og fortsetter til den treffer en pause. Så hvis det er ingen pause, det kommer til å holde det gående. Det kommer til å skrive alt annet ute. HANNAH: Så jeg antar at ville være inkludert som standard. JASON Hirschhorn: Yeah. HANNAH: Godt spørsmål. Yeah? STUDENT: Er saken betraktes som en funksjon? HANNAH: Jeg beklager? STUDENT: Er saken betraktes som en funksjon? HANNAH: Er saken betraktes som en funksjon. Jeg ville nøle med å si det. JASON Hirschhorn: Så normalt når du ser funksjoner de vil være i klammeparentes. Så for eksempel når du ser på din kode, for eksempel, hoved. Det var hoved åpne paren, Da ugyldig, nær paren. Functions-- de er i utgangspunktet alltid vil du se parentes. Så tilfelle dersom saken ikke har noen parentes, det er din ledetråd som det er ikke en funksjon. Men det er det ikke. Yeah? STUDENT: Så da gjør det foreta bytte en funksjon? HANNAH: Betyr det merker bytte en funksjon. STUDENT: I ​​den forstand at du putter noe i, det gir deg en av sakene. JASON Hirschhorn: Jeg vil ikke kalle det en funksjon. Ikke alt med parens er en funksjon. Jeg mener det er en anelse at den er en funksjon. Jeg vil ikke si bryteren er et funksjon fordi det er egentlig ikke tilbake noe. Du vil komme inn på det mer. HANNAH: Ja, tenk på det som en hvis struktur. STUDENT: Kan du reir dette i en hvis struktur? HANNAH: Ja, du reir ganske mye annet. STUDENT: Barry sa sitatene er liksom som det samme som ellers. Så kan du erstatte sitater med andre? HANNAH: Ikke i denne spesielle struktur fordi bryteren erklæring er ventet ordet standard. Datamaskinen vet at standard betyr noe spesielt, som betyr fangsten tatt. Noe annet på dette. Vi har en mer å komme gjennom. Yeah? STUDENT: [uhørbart]. HANNAH: Forskjell mellom med et semikolon og et kolon. Så et semikolon er alltid å fortelle Datamaskinen jeg er ferdig med denne linjen. Du kan gå videre og utføre den. Dette er en komplett linje. Et kolon kommer til, i dette tilfellet bringe deg inn i en bestemt blokk. Så semikolon er bruk alltid å ende linjer. Kolon brukes til en rekke andre tilfeller. STUDENT: Er dette tilsvarer sier bare hvis n er lik 50, deretter blah blah blah. HANNAH: Mm-hm. STUDENT: Det er akkurat det samme [uhørbart]. HANNAH: Nettopp. Og vi sa at det går litt raskere. Hvis vi ikke hadde pause, det ville være som om, hvis, hvis. Hvis vi har pause, er det som om annet hvis annet hvis annet hvis. Cool? JASON Hirschhorn: Så når koding, kan du bare bruke hvis annet, men jeg tror i fjor på quiz vi hadde dem skrive en bryter uttalelse, så bare i tilfelle. HANNAH: Men definitivt ikke noe galt. Vi er ikke forventer du å bekymre deg om ytelse gale ting. Bare hvis annet er helt greit. Dette er bare bra ting å være klar over. Og her er vår siste den slags faller inn under denne betingede kategorien. Vi har noe av det generell form stand?, og deretter et lite stykke kode som skjer hvis betingelsen er sann. Og så kolon, litt stykke kode som utfører hvis tilstanden er falsk, semikolon. Vi er ferdige med den linjen. Så syntaktisk det er litt stygge. Vi kommer til å gå gjennom en eksempel jeg tror det er mest tydelig. Så vi ønsker å tildele strengen professor til en av disse to verdier, enten David Malan eller ikke David Malan, OK? Så du bør være kjent med strengen, professor =. Vi kommer til å tildele en streng til variabelen kalt professor. Nå ønsker vi å sjekke en bestemt tilstand. I dette tilfelle vår tilstand er class_num = = 50. Og nå kan være en god tid til å påpeke når vi har streng professor =, Tilsvarer det er ett tegn. Det er oppdraget. Mens det i class_num = = 50, det er to like tegn. Det er en kvalitetssjekk. Så vi kommer til å si er klassenummer lik 50? I så fall tildele Professor David Malan. Hvis ikke, tildele professor å ikke David Malan. Eventuelle spørsmål der ute? Igjen, dette er bare noe det er godt å vite. Du kan gjøre dette med hvis annet. En god praksis problem kan være å, når du går hjem, akkurat de samme betinget i en if annet form, fordi du kan gjøre det. Eventuelle spørsmål her? All right, jeg tror vi er kommer til å gå videre til sløyfer. Awesome. SHARON: OK, la oss snakke om mens looper. Så først til venstre ser du her-- OK som sier stund, mens (tilstand). Og så gjør dette-- kan vi endre dette? JASON Hirschhorn: Det er kuttet av. SHARON: OK, og så er det er også klammeparentes. Så late som krøllete bukseseler er det over og under gjøre dette igjen og igjen. Så hvis tilstanden i de parentes verdien true, så bør du fortsette å gjøre alt som er i den mens loop. Så for eksempel, vi kunne gjøre en praksis problem. Jeg har på meg to øredobber akkurat nå, så la oss si hvis jeg har på meg minst én hørsel, klappe i hendene. Så hvis vi kommer til å gå gjennom dette, vi going-- [Klapping] Høyre? Og jeg har på meg en, og-- OK. Yeah. Jeg er ikke på seg øredobber lenger, så ikke mer. OK, så da det er da du ville stoppe. Og dette kan du si er tilsvarer nesten variabler. La oss si du har en variabelt antall øredobber. Så mens antall øredobber er større enn eller lik 1, klappet hender. Og så etter clap hender, redusere trinnvis øredobber. Gjør som øredobber minus en. Så minske antall øreringer, og da vil du gå gjennom mens loop to ganger. Og hvis tilstanden er alltid true-- så hvis, la oss si, 2 = = 2, og 2 er alltid lik 2, ikke sant? Så du ville alltid gjøre noe i det, og det er tilsvarende nesten evig løkke som vi hadde i Scratch. Ja? STUDENT: Er de to sidene bare forskjellige måter å skrive en stund loop? SHARON: Så vi fokusert på dette først. Og da så la oss sammenligne det med en gjør mens loop. Så de er litt annerledes. OK, så la oss si at tilstanden er fortsatt mens jeg bruker minst en ørering, og jeg er ikke på seg noen øredobber akkurat nå. Og la oss si gjøre og fortsatt klappe mens Jeg har på meg minst én øredobb. Hva skal skje? [Klapper] Uh oh, folkens. OK, så du er ment til å klappe gang fordi utgangspunktet du går gjennom den første del av koden. Du gjør det uansett hva, og Da ser du mens tilstanden, og du går tilbake til at løkken hvis det er sant. Betyr det fornuftig? STUDENT: Du har alltid gjøre det første gang. SHARON: Du gjør alltid det første gang uansett om eller ikke at betingelsen er sann eller ikke. JASON Hirschhorn: Når gjøre du tror du kan bruke dette? Da gjør det fornuftig å bruke dette? HANNAH: Yeah? STUDENT: [uhørbart]. JASON Hirschhorn: Høyre. HANNAH: Veldig bra. JASON Hirschhorn: Så når du spør en bruker, du kommer til å alltid ønsker å be en bruker en gang. Du er alltid kommer til å ønske å be brukeren en gang. Så i stedet for å sette på en stund loop, du innlegge gjøre mens loop, fordi du er alltid kommer til å gjøre det en gang. Hvis de gir deg riktig svar, er du ferdig. Hvis de ikke gjør det, så du re-be dem. SHARON: Greit, etter looper. Så i Scratch, hadde vi gjenta blokker. Så vi ønsket å gjenta noe, la oss si, sju ganger. Så vi sa bare gjenta syv, og si at jeg er her for å hjelpe deg med Snow White! I C, har vi etter looper hvis vi ønsker å gå gjennom noe et bestemt antall ganger. La oss si at hvis vi initial de variable dvergene og gjøre sure-- så den første blokken rett der før første semikolon, vi initial vår variabel til, og vi setter den til 0. Og vår variabel der er et helt tall, int. Og variabelnavnet er dverger, og vi setter dverger til 0. Og den andre delen mellom to semikolon er vår tilstand. Og så så lenge dverger er mindre enn syv, vi vil holde det gående gjennom denne for loop. Og så den siste delen er det som gjør vi gjør på slutten av dette for loop? dverger ++, og det betyr at vi øke dverger med én hver gang. Så hva kommer til å skje her? Så først vi kommer til å gå gjennom. Vi har dverger som 0, og så skal vi å skrive Jeg er her for å hjelpe deg med Snow White! Og så dverger kommer til å øke fordi vi sa dverger ++. Dverger kommer til å bli en. Og da er vi compare-- dverger er 1. Vi sammenligner det til er dverger mindre enn 7? Ja. Jeg kommer til å gå gjennom dette igjen. Jeg er her for å hjelpe deg med Snow White! Og så dverger blir 2, og da er vi sammenligner det. Er to mindre enn 7? Ja. Vi kommer til å holde det gående gjennom. Og vi kommer til å gå gjennom dette sju ganger. Så til slutt, kommer vi til å har dverger = 0 print ut jeg er her for å hjelpe deg med Snow White! dverg er lik 1, 2, 3, 4, 5 og 6. Husk vi indeks på 0. Så vi starter med 0. Ja? STUDENT: Så dette er annerledes enn do fordi dette ikke ut innledningsvis i begynnelsen. Så du kan fortsette det samme. Kunne du gjøre dette også med gjør loop? Som den samme prosessen. Tilstanden er dverger mindre enn 7 eller hva som helst. Respons er mindre enn 7. SHARON: Så du kan teknisk sett. Så hvis vi går tilbake to-- din snakk om mens loop, ikke sant? Så do mens loop er litt annerledes fordi vi garantere minst en gang at vi vil gå gjennom det, så det er den største forskjellen. Men med mens loop vi kunne si mens dverger er mindre enn 7, gjøre dette, og deretter øke dverger med én. Og så må vi initial dverger før hele dette utsagnet at det er lik 0. Så ja, vi kan gjøre det med det. Mm-hm? STUDENT: Kan du gå tilbake til [uhørbart]? SHARON: For loop? STUDENT: Ja, så med dvergene ++, virker som det er det du gjør etter du har kjørte noen annen måte. SHARON: Riktig. STUDENT: Kunne du bare har ikke det og sette it-- SHARON: Du kunne. STUDENT: Så er [uhørbart] rett etter skrive ut i neste linje under. SHARON: Ja, du kan sette den der. Men så ville du bare la det tomt. JASON Hirschhorn: Du har fortsatt trenger semikolon skjønt. SHARON: Det ser litt vanskelig, men du kan teknisk gjøre det. Teknisk. Vennligst ikke gjør det. Ja? STUDENT: Er det noen alternativer til ++? Er det noe annet [uhørbart]? SHARON: Teknisk sett er det dverger. Ett likhetstegn vi kommer å sette den til dverger pluss 1. Så teknisk som er hva dverger ++ betyr. Betyr det fornuftig? STUDENT: Ja, men er det noen alternativer? Som hvis du noensinne-- SHARON: Ja, kan du gjøre dverger - -. STUDENT: [uhørbart]. SHARON: Ja, kunne du gjøre en rekke ting. HANNAH: Og du kunne økes med to. Du kan øke med 3. Noe som kommer til å være i endring, det vil til slutt gjøre tilstanden. STUDENT: Så hvis du ønsket å øke med 2, hvordan ville du skrive det? HANNAH: Du kan enten skrive dwarves-- du kan skrive hele greia ut. dverger = dverger + 2. Eller en litt stenografi. Jeg skal bare skrive + er lik to. STUDENT: OK, og du vil skrive det akkurat der dverger ++ er der. HANNAH: Nettopp. SHARON: Riktig. Det var et annet spørsmål? Yeah? STUDENT: [uhørbart] dverger ++? SHARON: Så du don't-- JASON Hirschhorn: Ja, ikke trenger det der. [Uhørbart] helt til slutt. Så du gjør [uhørbart] de fordi du er slags splitte opp initialisering, tilstand, og endringen. Helt til slutt, trenger du ikke det. SHARON: Også legge merke til deg trenger ikke semikolon etter at hele hele for loop. STUDENT: Hvordan vil du starte med et første antall negative, for eksempel? SHARON: Du kan initial dverger lik negative 2. STUDENT: Har du bare trenger dash 2? SHARON: Ja, så negativt fortegn, dash 2. STUDENT: Er det [uhørbart] til initial som dverger [uhørbart]? SHARON: Ja. Så hvis vi bare hadde initialisert dverger tidligere, bare gjør int dverger semikolon, og så er det kan vi gjøre dverger satt som lik 0. STUDENT: Kan vi gjøre det tidligere i programmet sier int dverger = 0, og deretter just-- SHARON: Bare ikke have-- så ville det være et mellomrom på nytt, men du ville fortsatt trenger et semikolon. Yeah. Mm-hm? STUDENT: Betyr denne koden si hva verdien av dverger er etterpå. Hvis du spør den etter alt dette er gjort for å skrive ut verdien av dverger. SHARON: Du kan be den til å gjøre det. STUDENT: OK. SHARON: Men du ville må spørre den til å gjøre det. Det trenger ikke gjøre det for deg. Jeg er redd for å sette mine øredobber tilbake igjen. Gjør det på slutten for applausen. Bare tuller. JASON Hirschhorn: Så det er det samme. Så initial på toppen. Tilstand, print, endring. Så dette er akkurat det samme som at hvis noen kan se det. STUDENT: Hvorfor ikke ha semikolon på den første linjen? SHARON: Hvor? STUDENT: Etter den første linjen. SHARON: Etter 4 i parentes? Fordi vi ønsker å gå gjennom i denne sløyfen. Og hvis du tar en titt på løkker i Generelt har de ikke semikolon. Det er ikke praktisk. Er vi gode? Ett spørsmål, to mer. Yeah? STUDENT: Dette kan være litt avansert, men gjøre dvergene har en annerledes [uhørbart] fra en variabel [uhørbart]. SHARON: Veldig bra. STUDENT: [uhørbart]. SHARON: Ja, det er det. Hva? JASON Hirschhorn: Ja, så det gjør. Så normalt omfanget av noe er i klammeparentes. Så omfanget er alltid kommer å være i klammeparentes, men det ville ikke gjøre mye sans for for loop fordi vi initialisert dverger i den krøllete brace. Så normalt omfanget av dverger, som variable ville ikke forlenge forbi det. Dette er et spesielt tilfelle skjønt. Så du initialisere det innenfor disse parentes, og da har du omfanget senere. Så spesiell sak. De bør ikke ha det, og at var-- At fornuftig? STUDENT: Nei. JASON Hirschhorn: Jeg kan gå over den. Så hva er du fortsatt forvirret om? STUDENT: Som i kan du bruke dwarves-- deg kan selvsagt bruke dverger [uhørbart] utenfor formelen også? JASON Hirschhorn: Nei, nei. Så omfanget av den er bare inne i klammeparentes for for loop, ja. SHARON: Men hvis du initial dverger utenfor for loop, deretter du kan bruke det andre steder Det er et spørsmål? Nei? OK. Så vi snakket litt om hekkende for sløyfer eller hekkende conditionals, hvis uttalelser. Så her er et eksempel på hvor vi kunne reir en for loop. La oss si at vi trykte denne tabellen av x er akkurat her. Vi vil kanskje to-- først hvis vi bare ikke se på koden og vi bare tenke på det, vi ønsker å gå gjennom hver rad og skrive ut hver kolonne, ikke sant? Betyr det fornuftig? OK. Så her vi går gjennom hver rad for i utgangspunktet hver rad, og det er tre rader. Og deretter innen hver rad for hver kolonne, og der er fire kolonner, skriver du ut en x. så. Når p er 0 og kolonne er 0, vi skrive ut denne x. Og da er vi holde det gående sløyfe gjennom kolonnen. P er 0 fremdeles, men kolonnen er en. Og deretter kolonnen er 2, og deretter kolonnen er 3. Og da vi gå ut av at sløyfe fordi da kolonnen ikke lenger er mindre enn fire. Og da er vi skrive ut en ny linje, og vi går til den nye linjen. Og så går vi gjennom neste rad, og rad blir økes, og vi går gjennom det igjen. Betyr det fornuftig? Ja? STUDENT: Så å hekke [uhørbart] er bare å sette den inne i for loop? SHARON: Så hekkende betyr at vi har en for loop i en for loop, som Inception. STUDENT: Du trenger ikke en spesiell rotasjon eller noe? Du må bare holde den rett på innsiden av det? SHARON: Riktig. Ja? STUDENT: Kan være [uhørbart], men det ser ut som det er en ekstra plass mellom alle x-ene. Jeg vet ikke om that's-- Hvis det var å faktisk gjøre programmet, ville det gjøre noe sånt? SHARON: Så nei. Det var å trykke på Enter. Det var dårlig fra vår side. Beklager. HANNAH: Hvordan vil du endre dette programmet hvis du gjorde en ekstra linje? STUDENT: [uhørbart]. SHARON: God jobb. STUDENT: Du kan også skrive ut den samme tingen ved å slå rundt søylen, ikke sant? SHARON: Hm? STUDENT: Så for å skrive ut litt xxx, kan den første linjen si print, og stedet for sa rad, sier den kolonnen. SHARON: Så du kunne endre variabelnavn å gjøre det. Er det det du sier? STUDENT: Nei, jeg er bare sier at-- så du er utskrift rader først og deretter skrive kolonner. Kan du også skrive ut kolonner først og Da rekker å få den samme diagram? SHARON: Du kan, men så ville du ha å være forsiktig med hvor du setter den nye linjen. Og hvordan ville du hoppe tilbake? JASON Hirschhorn: Hvis du nettopp byttet det og verdiene var forskjellige, stedet for å ha four-- hva er det? Tre av fire. Jeg Du ville ha fire rekker og tre kolonner. Betyr det fornuftig? STUDENT: Yeah. JASON Hirschhorn: Så Ja, du kan gjøre det. Ja, definitivt. SHARON: Men det ville være bokstavelig talt bare veksling navnene på de variable. Bra? OK. All right, P satt en. OK, slik at den første delen av det du skal gjøre dette, Mario. Bare tuller. Det er mer som dette. Og så når vi bare så på nestet for looper, noe som gjør det bordet, Tenk på hvordan du kan være i stand til å skrive ut disse hashtags på denne måten. Og så akkurat her hvordan ville du skrive ut dette her, denne åpne plassen. STUDENT: [uhørbart]. SHARON: Ja, du bare skrive ut en plass. OK, så bare tenke på det. HANNAH: Og så det samme del av oppgavesettet er et program som heter greedy.c, slik at du er kommer til å ønske å tenke om conditionals og sørge for at du kan vanskeliggjøre riktig endring. Og en liten advarsel vi har for deg er være forsiktig med flyttallsverdier. Hvis det betyr absolutt ingenting for deg, det vil bli dekket i forelesning denne uken og også i [uhørbart] gå gjennom, noe som dere vil lære å elsker på problem sett. En ting som jeg foreslår, spesielt med Mario.c, når du gjør problemet satt, hvis du står fast, begynne med å gjøre det på papir. Skriv den ut og faktisk sitte der og later til å være datamaskinen, og gå through-- si Jeg var datamaskinen, hvordan ville jeg følger dette for loop gjennom? Hvordan ville mine variabler i for loop endring? Så gjør det på papir gjør det ti ganger lettere når du går til å sitte ned ved datamaskinen. Så bare min lille pluggen. SHARON: Og tror ikke at du må kode alt på en gang. Kontroller at du tar en iterativ prosess. Gjøre litt, print det ut, se hva som skjer. Noen ganger er det litt prøving og feiling. Og kommer til kontortid. Super moro. JASON Hirschhorn: Så noen spørsmål? Alle riktige gutta, som var din første delen. HANNAH: Takk for at du kom. JASON Hirschhorn: Takk for komme. SHARON: Takk. [APPLAUSE]