JASON Hirschhorn: Velkommen til CS50 seksjon, alle sammen. Mitt navn er Jason Hirschhorn. Jeg er mye yours TFS, men mye av folk vil forhåpentligvis bli med oss online, utvidelse studenter eller studenter prøver å se gjennom delen hvis de tapte sine delen som uke eller bare fange opp hvis de ønsket å gjennomgå en del materiale. Så i henhold til pensum, som alle av dere har lest, riktig? Jeg ser mye av hodet nikker. Seksjoner gi deg muligheter å utforske kursets materiale i en mer intim miljø, samt dykke inn hands-on aktiviteter. Så det er i utgangspunktet det vi er kommer til å gjøre hver uke. Vi kommer til å gå gjennom hva vi har bestemt til å være den viktigste temaene i foredraget, og de trolig også mest nyttige og mest sannsynlig å komme opp på oppgavesett og i spørrekonkurranser, og i din koding liv utenfor CS50. Så vi kommer til å gå inn i disse emnene, diskutere dem, gå over dem, svare på eventuelle spørsmål dere har, og så vi kommer til å gjøre mye av praksis problemer i koding. Du alle brakt bærbare datamaskiner, som er fantastisk. Dette er en computer science klasse. Men mange av øvelsene vi gjør, du trenger ikke din bærbare datamaskiner for. Du kan gjøre dem på et ark. Det er hvordan du skal gjøre dem på spørrekonkurranser. Og ja, det er en fin måte å egentlig vet at du hvordan du gjør noe hvis du ikke har Sjekk 50 til er avhengige av, eller tjene til å stole på, forteller du har gjort noen feil. Så du er velkommen til å kode på Apparatet eller run.cs50.net, som er et annet verktøy som lar deg å kode på nettet, men jeg vil også anbefale, hvis du har ikke prøvd det, ved hjelp av et ark av papir og prøver disse praksis problemer på et ark. Fordi igjen, det er slutt hva du kommer til å være bedt om å gjøre på spørrekonkurranser. Så la oss starte med vår agenda for dag. Vi kommer til å gå over noen normer for vår del, så vi kommer til å dykke inn matriser, funksjoner og kommandolinje argumenter, som er hva dere har dekket denne siste uken i forelesningen og deretter mandag, og hva du skal dekke mer i morgen. Og så til slutt, vi skal å snakke om pset2. Hvis jeg kunne få en håndsopprekning hvis du har ikke sett på problemet set to spesifikasjonen. Vi vil si alle. Fantastisk. Vi skal snakke om oppgavesett i en bit, men hvis du leser oppgavesettet spesifikasjonen, det er alt du trenger å gjøre. Hvis du leser det før du kommer til klasse og inndeling på tirsdag, vil du være en stor posisjon. Vi kan gå gjennom oppgavesettet, som er hva vi skal å gjøre på slutten. Vi kommer til å gå gjennom logikken, sørg alle er på samme side. Jeg vil at du skal være i stand til å forlate tirsdag følelsen veldig komfortabel med det du trenger å gjøre for denne ukens problem sett, og hvis du ikke gjør det, vil jeg gjerne bo etter og jobbe med deg. Men det er en ting som du må gjøre, men jeg tror ville være veldig smart, bare for å lese problemet sett spesifikasjon av klassen på tirsdag, som det høres ut som en Mange av dere gjorde. Jeg begynner med en agenda hver klasse slik at du vet hvor vi skal. Dette er også nyttig for folk å se online fordi hver seksjon er fargekodet, så hvis du ønsker å komme tilbake og bare se 10 minutter i stedet enn hele 90-minutters avsnitt, du kan bare gå til fargekodet seksjon og se på den delen. Så jeg har prøvd å bryte dem opp i fin moduler som vil tillate deg å - Hvis du ønsker å komme tilbake og gjennomgå, eller andre studenter som er bare ser på en del for å gjennomgå - for å finne den spesifikke tingen de ønsker å ta hensyn til og lære mer om. Søt. Normer. Jeg er en FOP leder på campus. Jeg vet ikke om noen gjorde FOP. Har noen gjøre FOP? Én person gjorde FOP. To personer gjorde FOP. Awesome. Så FOP er det første året Outdoor Orientering Program. Vi tar freshmen inn i skogen og gjøre de mest magiske opplevelser av deres liv, riktig? Yeah. Lyder om rett. Så jeg bare ønsket å starte vår aller første delen med å diskutere noen normer for klassen og vårt forhold fordi jeg tror de er veldig viktig. Først og fremst, så de av dere som er min del har mottatt og er blitt beskrevet i den e-post, jeg elsker dette. Dette er min favoritt del av året. Jeg har vært så spent. Jeg har vært her i flere timer i dag. Jeg har ikke forlatt denne bygningen enn å gå spise fordi jeg elsker CS50 delen, jeg elsker undervisning, jeg elsker å jobbe med dere. En av mine høyeste prioriteringer, hvis ikke min nummer én prioritet, ikke bare for denne klassen, men inkludert min andre klasser og extracurriculars, er å støtter dere, og hjelpe dere, og gjøre mitt beste for å sørge for at du dere har en flott, morsom, produktiv, engasjerende, spennende oppleve i denne klassen. Det er det jeg er forpliktet til. Det er derfor jeg elsker å gjøre dette. Det er min nummer én ting, støtte dere. Hvis du har spørsmål om foredrag, oppgavesettet, seksjon, livet, selv om du ønsker å snakke om liv, kan du gjerne nå ut. Du har min mobiltelefonnummer, du har min e-post adresse, du har min GChat. Du kan kontakte meg på noen eller alle de når, men sannsynligvis ikke vil få et svar når. Jeg prøver og komme tilbake i løpet av 24 timer. Ofte vil det være innenfor 20 minutter eller 24 minutter. Jeg skulle ha sagt at for å gjøre det parallelle. Men du vil få et svar ganske raskt. Hvis du tekst meg en time før oppgavesettet er grunn, vil jeg roe deg ned og gjøre dype pusteøvelser med deg, men hvis du ikke har startet, du sannsynligvis ikke kommer til å fullføre, og Jeg kan egentlig ikke hjelpe deg der ute selv om jeg skal prøve mitt beste. Så jeg vil gjøre alt Jeg kan å støtte deg. Ta gjerne nå ut om det er i avsnittet igjen, på Arbeidstid hvis du ser meg, eller utenfor. Jeg er glad for å sette opp en tid for å møte og arbeide gjennom problemer med eller gå over materialet. Så det er nummer én, support. Jeg vil gjøre alt jeg kan for å støtte deg. Nummer to, møte i midten. Så mye som jeg ønsker å være, er jeg ikke allmektig eller allmektig eller allvitende, så jeg vet ikke alt tid hvis det jeg gjør er å få over, hvis den måten jeg lærer på Temaet hjelper deg å lære det, eller hvis du er forvirret på et emne, men ikke rekk opp hånden eller be meg eller send meg en e-post. Eller selv om du, igjen, er forvirret om noe på oppgavesettet. Hvis du ikke når ut til meg, Jeg kan ikke vite det sikkert. Jeg skal gjøre mitt beste for å sjekke inn på dere, sørge for at alt er går bra, prøver å lære ting på en måte som vil bli bidrar til det meste av dine læringsstiler, men hvis det er noe jeg kan gjøre, gi meg beskjed. Langs disse linjene, hvis du vil ha litt hjelp med problemet sett, er jeg mer enn gjerne hjelpe deg med oppgavesettet. Vi kommer til å gjøre mye av som mot den andre halvparten av dette avsnittet. Men hvis du ikke har lest problemet setter tilbake, og har ikke sett på tur gjennom og har ikke sett de shorts og forventer meg å lære deg alt som har blitt filmet online eller at du kan finne på CS50 Studien, det er ikke egentlig rimelig å meg eller til andre jevnaldrende. Så vær så snill, jeg er mer enn gjerne hjelpe dere, men dere fikk møte meg i midten. Vi har tonnevis med ressurser for du tilgjengelig på CS50. Jeg nevnte noen av dem. Vennligst ta nytte av dem. Hvis du er forvirret, jeg er mer enn fornøyd for å hjelpe deg å forklare dem i en annen måte, men det er ikke rettferdig hvis studentene møter opp på kontortid, har ikke startet noe, og det er Torsdag kveld og de venter TF å gå dem gjennom hver enkelt ting for problemet satt på grunn til middag neste dag. Fornuftig? Igjen, kan du møte oss i midten. Og til slutt, høye forventninger. Jeg kommer til å være gradering alle som er i seksjonen min, eller scoring din oppgavesett. Du har ikke gått tilbake problem satt null eller en ennå. Vi beklager om det. Det tok oss en stund å endelig bosette seksjoner, og nå vi kan begynne gradering. Jeg skal få dem tilbake til deg så snart som mulig. De er noen av mine advisees der ute. Jeg skal få dem tilbake til deg så snart som mulig. Og for oppgavesettet to, vil vi være på planlegge, og vi vil begynne å få dem til deg ganske raskt etter du slår dem i. Når du får ditt problem satt tilbake, du vil få score, som du kjenner fra lesing av litteratur - korrekthet, design, omfang og stil score. Du vil også få kommentarer. Kommentarene er viktigere enn resultatet. Jeg tror det er trygt å si at. Poeng er bare et tall fra en til fem. Det er vanskelig å lese inn disse. Det er vanskelig å forbedre fra dem. Men kommentarene vil peke ut spesifikke ting du gjorde det bra eller områder du kan forbedre på og gi deg noen ideer for fremtiden eller alternativ måter å gjøre ting. Så vær så snill, vær så snill, kan du lese gjennom kommentarene. Jeg legger mye tid inn disse kommentarene. Vennligst les igjennom dem, og ikke bare bla ned til bunnen av PDF, se etter poengsummen din, eller gå på nettet og finne poengsummen din, og deretter ignorere kommentarene. Det er ikke hvordan du er kommer til å bli bedre. Det er ikke hvordan du kommer til å øke din score til slutt, bare ved å se på resultatet. Vennligst se på disse kommentarene. Og langs linjen av høye forventninger, igjen, som jeg sa, du kan scores fra én til fem. Toere, treere og firere er aller fleste score du kommer til å få. Ones og femmere er begge veldig sjeldne. Det er alltid ting vi kan gjøre bedre. Når jeg kode et program, er det alltid noe jeg kunne ha gjort bedre. Så heller enn å si at du får en fem hele tiden på alt og gjorde alt perfekt, jeg tror ikke noen av oss virkelig tror at vi - eller forhåpentligvis har vi ikke gjøre alt perfeksjonere hele tiden. Så ikke bli bekymret hvis du fikk ikke en fem. En fem ikke kartlegge ikke på en A, en fire ikke kartet ikke på en B, et tre gjør ikke kartet på en C. Det er ikke hvordan resultatet fungerer. Som David har sagt mange ganger, til semesters slutt alle av din score og innspill fra meg, din TF, kommer sammen og bestemme en endelig karakter for deg. Men igjen, det er ikke fem, A, fire, B, et cetera. Så jeg kommer til å ha høye forventninger for dere. Jeg kommer til å forvente god problem sett og jeg kommer til å gi deg tilbakemelding som sådan. Og det kommer ikke til å bety at du er kommer til å få en dårligere karakter. Du er gradert i form av din fremgang fra uke null til kursets slutt. Og endelig, når det gjelder høy forventningene i klassen, jeg elsker når mennesker deltar. Jeg forstår føler noen mennesker mer eller mindre komfortable deltar. Andre mennesker deltar ikke ved å heve sin hånd og snakker hele tiden. Men vi i denne klassen kommer til å være å gjøre en masse små problemer, mye av mini spørsmål, og deretter noen større koding problemer. Så definitivt jobbe disse øvelsene ut når vi gjør dem på datamaskinen eller på et papirark. Men jeg vil også gi deg litt tid før noen har noen gang å svare på noen av spørsmålene spør jeg. Så fordi jeg vil gi deg litt tid til å tenker på det, fordi vi kommer å gjøre ting på partnere noen ganger, Jeg vil forvente alle å være engasjert seg noe. Og i mangel av et bedre ord, det vil trolig være kaldt ringer, som er der alle vil ha en sjanse å tenke på svaret, og deretter Jeg skal ringe deg, og deretter vil du si svaret. Ikke bekymre deg eller bli redd om det. Jeg har gjort det i det siste og vi har funnet at det er mye mer vellykket, også lese pedagogisk forskning på det å avgjøre hvorvidt det var en god taktikk. Det er veldig nyttig, spesielt hvis du gi elevene tid til å tenke på svar og ikke gjør dem bare komme ut og si det rett utenfor balltre. Men hvis du ikke føler deg komfortabel svare, jeg er også ganske god på sensing det ut, og vi kommer ikke til å sette deg på stedet, spesielt på kameraet, selv om ingen av du er på kamera akkurat nå. Så de er de normer jeg har. En ting langs linjene av møte i midten. Jeg kommer til å gi dere mange tilbakemeldinger. Vennligst gi meg tilbakemeldinger også. Det er en nettside, sayat.me/cs50. Så det er en ærlig tilbakemelding. Hvis du ønsker å gi det under avsnittet, Jeg får en e-post når det skjer. Vi vil ta en pause i en bit, så jeg skal se gjennom tilbakemeldinger da. Hvis du noen gang har noen tilbakemeldinger, kan du gi den til meg der. Hvis du gir meg tilbakemelding på Q, som er fantastisk, men det er guiden som du gjør på slutten. Men det vil være ved semesterets slutt så Jeg vil ikke være i stand til å ta noe av det tilbakemeldinger og slå den inn i undervisningen dere bedre. Så vær så snill, hvis du har noen tilbakemeldinger, gi det til meg. Jeg elsker tilbakemeldinger. Tilbake til FOP, får vi tilbakemeldinger hele tiden. Du kan gi meg positive, gode ting, deltaer, ting jeg kan forbedre. Du kan kommentere antrekkene mine. Det vil ikke være like nyttig, men du er velkommen til å kommentere noen og alt. Vennligst, vennligst gi meg tilbakemelding. Jeg verdsetter det mye, og det betyr mye for meg. En mer norm, moro. Vi kommer til å ha mye moro. Forhåpentligvis i dette kurset, vil du har mye moro. Vi vil ha godteri på seksjonen. Vi vil ha musikk. Vi vil forhåpentligvis bli kjent med en annen noe godt, så jeg vil ha dette skal være en morsom, engasjerende opplevelse. Jeg vet at noen av dere har sovnet inn i forelesningene du hadde tidligere i dag, så forhåpentligvis som ikke vil være tilfelle nå. Og hvis det er tilfelle nå, bare snorker ikke fordi det kan være fanget på kamera. Søt. Eventuelle spørsmål, kommentarer eller bekymringer før jeg går videre om noe vi har snakket om? Stor. Så vi kommer til å gå i arrays første. Dette er hvordan du gjør en matrise. Vi har sett dette før. Har du en datatype, har du en navn, og da har du en størrelse. Akkurat her, lager jeg to arrays. Den første er en rekke tegn, og det har 26 mellomrom. Den andre er en rekke score, og den har tre plasser for tre heltall. Ja? STUDENT: Er alle disse lysbildene tilgjengelig sted for oss? JASON Hirschhorn: Great spørsmålet. Spørsmålet var, er alle disse glir tilgjengelig? Ja. Alle disse bilder vil finnes, og i fremtiden, vil jeg sende dem til deg før delen. Men i dag, fordi dette er den første uke, hadde vi en sen start. Så vanligvis, vil du få disse lysbildene, men de er tilgjengelige på nettet og Jeg skal sende dem til deg rett etter klassen. Eventuelle andre spørsmål? Så igjen, arrays er bokser, i mangel av et bedre ord, som holder flere elementer av en datatype, og de er ved siden av hverandre i minnet. Og så igjen, dette er hvordan du kan lage to typer matriser. Så etter at du har gjort ditt utvalg med som første linje - int score, brakett tre, tett brakett - du ønsker å starte den. Du ønsker å sette noen verdier der. Og dette er hvordan du setter noen verdier i der, bare å velge indice og skrive nummeret. La oss trekke dette i styret. Alle kan se? Alle kan se. Søt. Så det kommer til å bli min matrise kalles Scores. Som du kan se, er det størrelsen tre. Det er tre bokser der inne. Hver og en kan passe hva type datatype? STUDENT: Integer. JASON Hirschhorn: Et heltall i denne. Vi skrev int score, og det første ordet er datatypen som kommer til å gå i boksene i denne matrisen. Så jeg kan passe tre. Hvorfor har jeg null opp der på brettet? Hvorfor står det poengsum null tilsvarer en? Minner meg om navnet ditt. STUDENT: Kurt. JASON Hirschhorn: Kurt. STUDENT: Ja. JASON Hirschhorn: Hvorfor? STUDENT: Fordi første indeksen er null, begynner vi å telle på null. JASON Hirschhorn: Så vi starter telling på null. Det er helt riktig. Dette er forvirrende del og vilje tur deg opp, spesielt når du er prøver å reagere gjennom arrays, som vi vil gjøre i en bit. Vi begynner å telle på null. Så hvis jeg ønsker å referere til den første boks, er det ikke boksen en. Dessverre er det box null. Den andre er en boks, og i denne tilfelle, er den tredje boksen to. Hva om boksen tre? Hvor er boksen tre? Eller hvis jeg ønsker å gjøre score, brakett tre, tett brakett, hva er det? Så du sa null tegn. Noen andre tanker? Hva er poeng brakett tre brakett? STUDENT: Det finnes ikke egentlig fordi du bare definert som scorer, brakett tre. JASON Hirschhorn: Så du sier det egentlig ikke eksisterer. I noen tilfeller, når vi har å gjøre med strenger, vanligvis vil vi sette en null karakter i enden. Vi får til det i et sekund. Men i dette tilfellet er det er ingen tredje boksen her. Så den siste boksen i alle utvalg er størrelsen minus en. Så hvis vi har en rekke størrelse n, den første boksen er på null, er den siste på n minus en. Og i dette tilfellet, betyr det ikke eksisterer. Det er noe her i minne, men det er ikke vår. Vi eier ikke det. Vi gjorde ikke be om det. Så hvis vi prøver å få tilgang til det, som vi vil gjøre i en bit, vi sannsynligvis kommer til å komme i trøbbel. I dette tilfellet, jeg initialisering min array med tre variabler. Vi setter en i boks null, en to i boksen ett, og et tre i boks to. Does noen har noen spørsmål om initialisering av en array? Så vi gikk over denne akkurat nå. Score, tre brakett, tett brakett, som ikke eksisterer. Vi er null indeksert i informatikk, så vi begynner å telle på null. Den siste boksen er tilgjengelig for oss, er det den tredje boksen, men det heter boks nummer to. Down under, er dette et alternativ måte å initialisere arrays. Så i stedet for å opprette tabellen på en linje, fylle den første boksen, og deretter den andre boksen, og deretter den tredje boksen, du kan gjøre alt på én linje. Så i den linjen, begge arrays. Dette skaper de samme matrise som hva vi laget her, men det bare gjør det på en linje. Nå har vi laget vår array. Vanligvis når du oppretter en matrise, du ønsker å gjøre noe med det, enten som er fylle den eller få ting ut av det og skrive dem ut på skjermen. I dette tilfellet skal vi gjennom vår score array, som vi initialisert på den første linjen her oppe i grått. Og deretter på den andre linjen, begynner vi iterating gjennom utvalget. Does noen har noen spørsmål om strukturen til en løkke for? Så dette er for loop. Vi har vår første tilstand, og deretter vår endelige tilstand, og da vi iterere, i, hver loop. Og i klammeparentes i denne for loop, hva skjer hvis jeg skulle kjøre dette programmet? Kan noen fortelle meg hva vi ville få? [? Matu? ?] Matu: Skriv ut alle poengene på hver linje. Det ville skrive ut hver poengsum på en egen linje. JASON Hirschhorn: Hva er egentlig ville det ut? STUDENT: Det ville skrive en, så to, deretter tre. JASON Hirschhorn: Nettopp. Det ville skrive en, så to, deretter tre, hver på egne linjer, fordi vi går gjennom utvalget, og du vil se at andre, printf uttalelse, skårer Í. Så på den første runden gjennom vårt for loop, er lik i null, noe som betyr at vi er få verdien på stillingen null - som, hvis vi går tilbake til vår diagrammet, er en - og utfylling - oh, sier det c. Det burde være% d. Jeg vil fikse det i litt når Jeg hånd det ut til dere. Men vi presentere et heltall slik at det bør være% d akkurat her, ikke% c. Hva er% c for? STUDENT: Character. JASON Hirschhorn: Character, akkurat. Hva er den andre? Hvis du ikke ønsker å gjøre% d for en heltall, hva annet kan du gjøre? STUDENT: jeg. JASON Hirschhorn:% i, akkurat. Så noen spørsmål om iterating gjennom array? Så hva skjer hvis vi gjør dette? Istedenfor å gjøre er jeg mindre enn tre, vi i er mindre enn eller lik tre. Hva skjer når vi kjører denne koden? Ja, Annie? STUDENT: De kommer til å skrive ut rare ting på den fjerde linjen. JASON Hirschhorn: Så du sier, er det kommer til å skrive ut rare ting på fjerde linjen? Does noen har et svar på spørsmålet hennes? Så oddsen er at når vi får til - så på den fjerde runden gjennom vårt for loop, akkurat som du trodde, Annie, det vil være score tre brakett, som Vi har allerede funnet ut ikke eksisterer, og vi kommer til å prøve og få tilgang til det, skrive det ut ut, bruke det noen måte. Slik at maskinen vil trolig bli sint på oss. Du er helt riktig. Det kan avslutte programmet helt. Det kan skrive ut noe veldig rart. Du kan ikke si sikkert. Oddsen er det vil trolig bli sint på deg og bare slutte med en gang. Men dette er en vanlig feil du vil ha hvor du er like ved en på slutten, og dette er en feil som vil plage deg gjennom din koding. En måte jeg liker å gjøre er bare på en whiteboard, gå gjennom hver iterasjon av sløyfen på hånden eller på papir for å se hva som skjer, og da generelt innse, oh vent, jeg skal ikke har gått til mindre enn eller lik tre. Jeg burde ha stoppet på to, som er hva skjer hvis tilstanden er mindre enn tre. Eventuelle spørsmål så langt? Søt. Slik at du har alle dine datamaskiner åpen. Vi kommer til å gi deg 02:58 minutter å skrive et program som oppretter en matrise med heltall en gjennom fem og deretter skrives ut hver heltall på en ny linje. Og hvis du har noen spørsmål, rekk opp hånden. Jeg er glad for å komme med. Som jeg sa, la oss ta tre minutter å skrive dette. Er alle OK hvis jeg går til en nytt og lukke dette? Jeg beklager hvis du ikke har hatt en sjanse til slutt, men vi kommer til å gjøre det sammen akkurat nå. Så opp på skjermen, jeg har # include cs50.h, # include stdio.h. Kan noen fortelle meg hva disse to linjene gjøre? Michael? STUDENT: De omfatter bibliotekene at CS50 gjort og at Steve har lagret for deg å bruke til gjør livet ditt enklere. JASON Hirschhorn: Så du sa de omfatter bibliotekene, en som CS50 gjort, cs50.h, og en som er bare standard, leveres med C pakken, stdio.h. Hva mener du inkludere bibliotekene, skjønt? Kan du være litt mer spesifikk? STUDENT: Det gjør det slik at du kan bruke bestemte kodeord for å ha en fungere skje uten å måtte gå og gjøre funksjonen c selv. JASON Hirschhorn: Kan du gi meg et eksempel? STUDENT: Som printf er en du kan bruke. JASON Hirschhorn: Printf. Så du sa printf er en av dem funksjoner der heller enn å måtte skrive printf på egen hånd, er printf inkludert faktisk i stdio.h, slik at du kan bare bruke det og anta at det vil fungere. I stdio.h, hvis du åpnet opp denne filen, vil det omfatte hvordan printf arbeider, all koden for printf? Hvorfor er du rister på hodet? STUDENT: Fordi header-fil rett omfatter funksjonen erklæringen. JASON Hirschhorn: Helt riktig. Overskriften filen inneholder bare funksjonen erklæringen. Så i utgangspunktet, når du kompilerer dette, treffe Gjør Count, som vi vil gjøre i en sekund, vet den at hvis kompilatoren du bruker printf eksisterer printf. Det kommer til å bli definert sted. Det er ikke et problem for deg å bruke det. Og så senere, vil det inkludere enere og nuller som faktisk inneholder printf gjennomføring og flette dem med koden din. Hvordan kan du sørge for at det inkluderer enere og nuller for, si, få streng? STUDENT: Få strengen er i cs50.h. JASON Hirschhorn: Høyre. Slik som sier få strengen finnes, funksjonen erklæringen. Men så enere og nuller, den binære fil som faktisk inneholder gjennomføring av get streng? Hvordan kan du sørge for at går med programmet ditt? STUDENT: Pass på linker i kommandolinjen argument. JASON Hirschhorn: Før linker i kommandolinjen argument. Hvordan gjør dere det? STUDENT: Det er den-l linje i klang JASON Hirschhorn: Helt riktig. Du sier-l CS50, ikke sant? Som inkluderer de enere og nuller. STUDENT: Men Gjør gjør det for deg, ikke sant? JASON Hirschhorn: Nettopp. Gjør gjør det for deg, men til slutt, du vil ikke ha Lag, eller du må lage en lage på egen hånd, så det er en god ting å huske. Hvis du skulle bruke en av disse andre bibliotek, ikke bare du har å skrive # include og deretter biblioteket. Du trenger også å knytte det i. Og disse to ting er annerledes. -L CS50 er annerledes enn # include cs50.h. Da har vi int viktigste void klammeparentes, og nå skal vi koden Innerste. Den første linjen jeg har her er en kommentar som sier, lage en matrise med ints én til fem. Hva er et godt ord for å beskrive hva jeg har akkurat nå på skjermen, akkurat kommentarer inne main? Hva kaller vi det? STUDENT: pseudokode. JASON Hirschhorn: pseudokode. Takk, Jeffrey. Det er helt riktig. Pseudokode. Har dere sett pseudokode før? Rekk opp hånden hvis du har brukt pseudokode før problemet satt en. Omtrent halvparten av dere. Jeg vil anbefale å bruke pseudokode å bryte ned problemer i mindre, mer lett å bite av stykker. Også, hvis du gjør pseudokode, du ha dine kommentarer allerede i stor grad innebygd, slik at du ikke trenger å gå tilbake og prøve å finne ut hva du gjorde. Så kan noen gi meg denne første linjen å lage en matrise med ints en gjennom fem? Deg? STUDENT: Int og deretter kan du ringe uansett hvor mange, og så firkantet brakett fem. JASON Hirschhorn: Så int tall, hakeparentes fem. STUDENT: Er lik, og deretter klammeparentes. JASON Hirschhorn: lik, klammeparentes. STUDENT: En, to, tre, fire. JASON Hirschhorn: En, to, tre, fire, fem. STUDENT: Og så klammeparentes og deretter semikolon. JASON Hirschhorn: Og krøllete bukseseler og semikolon. Utmerket. Skrive ut hver int på en ny linje. Kan noen andre gi meg at koden, please? [? Matu? ?] Gå videre. STUDENT: For ( JASON Hirschhorn: For ( STUDENT: int i = 0 JASON Hirschhorn: int i = 0 STUDENT: Semicolon i mindre enn fem. JASON Hirschhorn: Semicolon, jeg mindre enn fem. STUDENT: Semicolon, i + +. JASON Hirschhorn: Semicolon, i + +. STUDENT: Lukkede parentes, deretter åpen brace. JASON Hirschhorn: Lukkede parentes og to bukseseler. Inne i bukseseler? STUDENT: Og så printf "% d / n" JASON Hirschhorn: Beklager, hold på. Printf "% d / n, lukket sitat. STUDENT: Og så lukket sitat, komma, telle, brakett jeg. JASON Hirschhorn: Komma, teller, brakett jeg. STUDENT: Beklager, tall brakett jeg. JASON Hirschhorn: Numbers, brakett jeg. STUDENT: Beklager. Og deretter lukket parentes, semikolon. JASON Hirschhorn: Stengt parenteser, semikolon. Jeg kommer til å spare det. Vi kommer til å lage teller. Og hvordan kjører jeg teller? STUDENT: Backslash. STUDENT: Dot skråstrek - JASON Hirschhorn:. / Teller, akkurat. Takk. . / Teller. En, to, tre, fire, fem på nye linjer. Ser ut som det fungerte. Ja, Noah? STUDENT: Du kan også gjøre mindre enn eller lik fire, som i er mindre enn eller lik fire? Er det noen fordel å gjøre mindre enn fem, eller bare en annen måte å skrive det? JASON Hirschhorn: Så spørsmålet er du kunne ha gjort i er mindre enn eller lik fire i stedet for i er mindre enn fem. Ville det ha fungert det samme? STUDENT: Det burde. JASON Hirschhorn: Ja. Det helt ville ha fungerer på samme. Stilistisk er det generelt mindre enn, og du vil se i et sekund når vi strenger, kan du bruke noe kalt strlen, som du har sett før, for å få lengden av strengen. Og du kan ikke gjøre mindre enn eller lik strlen. Du kan gjøre mindre enn eller tilsvare strlen minus én. Så det er bare bedre til gjør mindre enn strlen. Ja? STUDENT: Og i selve spørrekonkurranser, gjør vi må gi kommentarer til vår kode i tillegg? JASON Hirschhorn: Spørsmålet ble i spørrekonkurranser, gjør du nødt til å gi kommentarer? Så vi skal snakke mer om quizer når de kommer opp, men generelt, en god tommelfingerregel er når du er skrive kode, gi kommentarer. Hvis du får koden galt, men kommentere høyre, kan du få noen kreditt både fra meg hvis jeg var gradering du på et problem set eller på en quiz. Så kommentarer er alltid godt å gi. Søt. Telle. Utmerket jobb. La oss gå videre. Strings. Strings. Vi har sett dette før i forelesningen. Dette blåste meg når jeg først fant ut dette. Det sannsynligvis ikke blåse noens tankene her, men det er OK. Strings er matriser av tegn, og de ender med, som du sa tidligere, null terminator, som er dette / 0 karakter. Hvis vi skal trekke en streng på styret, vil vi trekke den over her. Så hvor lenge er denne strengen? Unnskyld. Hvor lang er denne strengen? STUDENT: [uhørlig]. JASON Hirschhorn: Four? Hvorfor er det fire? STUDENT: Fordi den femte plass er for den null tegn. JASON Hirschhorn: Så den femte plass er for den null tegn. Så hvis jeg skulle kjøre strlen på dette, ville det gi meg fire. Korrigere. Og rekken, men hvis jeg skulle klargjøre denne matrisen, hvor mange plasser ville jeg be om? STUDENT: Five. JASON Hirschhorn: Five. Jeg måtte be om fem, men jeg kan bare sette fire tegn her fordi jeg trenger å sette det null terminator på enden. Så vi kommer til å skrive i "ohai" og sette null terminatoren i på slutten. Vi vil si at dette er streng s tilsvarer dette. Hva er s brakett null? s bracket null, Annie? STUDENT: O. JASON Hirschhorn: O, akkurat. s bracket en? s bracket fem? s bracket fem? STUDENT: Finnes ikke. JASON Hirschhorn: Finnes ikke. Helt riktig. Cool. Eventuelle spørsmål om forståelse strenger som arrays av tegn? OK, da. One more program for dere. Skriv et program som ber brukeren for en streng skrives deretter ut hver tegnet på en ny linje. Så la oss ta tre minutter å skrive dette programmet, og så får vi kode det som en gruppe. Unnskyld. Visste du trenger å se dette? STUDENT: Nei. JASON Hirschhorn: OK. La oss ta ett minutt å kode dette, eller i det minste komme i gang med det. Slik at du kan fortsette å jobbe, men jeg skal for å begynne å gå gjennom den. Så som før, jeg har på skjermen # Include cs50.h, # include stdio.h. int main ugyldig. Inne viktigste er klammeparentes, har jeg to kommentarer, pseudokode. Ett er å be om en streng fra brukeren. Den andre er å skrive ut hver tegnet på en ny linje. Så Anna, kan du gi meg spørre for en streng fra brukeren? STUDENT: Printf. JASON Hirschhorn: Printf? STUDENT: Ja. ( JASON Hirschhorn: ( STUDENT: "gi meg en streng. JASON Hirschhorn: "gi meg en str - oops - string. STUDENT: / n ") semikolon. JASON Hirschhorn: Avslutte strengen, lukkede parenteser, semikolon. STUDENT: Ja. Og så neste linje, string s = få streng. JASON Hirschhorn: String s = få streng. STUDENT: Ja. Og da () JASON Hirschhorn: () STUDENT: Semicolon. JASON Hirschhorn: Semicolon. Fantastisk. Så jeg kommer til å få en streng og Jeg kommer til å lagre det i det? Hva er variabel kalt som du opprettet? STUDENT: String s. JASON Hirschhorn: Den variable kalles s. Det er typen streng. Nettopp. Neste ting vi ønsker å er skrive ut hvert tegn på en ny linje. Som kan gi meg den koden? [Uhørlig]? Kan du gi den til meg? STUDENT: Sure. JASON Hirschhorn: La oss gjøre det. Og beklager. Jeg liker ikke å gjenta det du sier fordi du får det riktig, men jeg må gjenta det slik at når de transkribere dette, kan de få alle teksten ut på transkripsjoner. Så du kan bare fortsette å snakke. Dessverre har jeg å si det over deg. Jeg beklager, men - STUDENT: Det er greit. For int i = 0 JASON Hirschhorn: For int i = 0 STUDENT: jeg mindre enn - JASON Hirschhorn: Semicolon. STUDENT: Før dette, kan vi sette en variable slik at du får int navn lengde? JASON Hirschhorn: Å, gjør du ikke ønsker å sette semikolon? OK. Så hva ønsker du å gjøre etter null? STUDENT: Jeg ønsker å få hyssinglengde på s og satt som en variabel? JASON Hirschhorn: OK, så hvordan gjør jeg det? STUDENT: Så du gjør int lengde = JASON Hirschhorn: Int lengde = Student: S-T-R-L-E-N. Jason Hirschhorn: S-T-R-L-E-N - STUDENT: Av s. Parentes. JASON Hirschhorn: (s). STUDENT: Og så jeg tror du må sette et semikolon mellom de to ints. JASON Hirschhorn: En semikolon etter null? STUDENT: Yeah. Deretter sette et semikolon etter det, og du sier, jeg mindre enn lengden. jeg mindre enn lengde, som er den variable. STUDENT: Og så semikolon. JASON Hirschhorn: Semicolon. STUDENT: i + +. JASON Hirschhorn: i + +. Det er vår for loop. OK, inne i for loop. STUDENT: Og så gjør printf. JASON Hirschhorn: Printf. STUDENT: Braketter. JASON Hirschhorn: parenteser anførselstegn. STUDENT: Parenteser, sitater,% c / n. JASON Hirschhorn:% c, OK. STUDENT: / n. JASON Hirschhorn: / n. STUDENT: Lukkede anførselstegn. JASON Hirschhorn: Lukkede anførselstegn. STUDENT: Komma. JASON Hirschhorn: Komma. STUDENT: S. JASON Hirschhorn: S. STUDENT: Bracket jeg. JASON Hirschhorn: Bracket jeg. STUDENT: og deretter lukket parentes. JASON Hirschhorn: Lukkede parentes. STUDENT: Og så semikolon. JASON Hirschhorn: Semicolon. Fantastisk. Så la oss ta vare på denne. Gjør stave. Oh boy. Jeg har et par feil. Første feilen på linje 11, står det, forventet uttrykk, og det er å gi meg en feil at den andre int, det er feilen. Det er noen feil rundt der. Vet noen hva feilen det er? Kurt? STUDENT: Jeg tror det er ment å være et komma og ikke et semikolon. JASON Hirschhorn: OK, komma i stedet for et semikolon. Så er det alt vi trenger for å fikse? STUDENT: Nei. JASON Hirschhorn: Hva annet trenger vi å fikse? STUDENT: Vi må inkludere string.h. JASON Hirschhorn: Inkluder string.h. Hvor må jeg inkludere det? STUDENT: Samme sted du inkludert andre ting, ikke sant etter inkludere stdio.h. JASON Hirschhorn: La oss se om dette går først fordi generelt, jeg liker å fikse en ting først, og deretter kjøre det, og deretter se feilene vi får. Så vi kommer til å tømme terminalen med kontroll n, la oss gjør spell. Så en annen feil på linje 11. Forventet semikolon. Og jeg fortsatt får feil på denne linjen. Så det har ikke gitt meg en feilmelding som sier det forstår ikke hva strlen er, men det gir meg feil på denne linje, så hva annet som er galt? Mark? Marcus. STUDENT: Har du å fjerne den andre int erklæringen? JASON Hirschhorn: Fjern den andre int. La oss prøve dette. Nå tømme terminalen. Gjør stave. Feil. Implisitt erklære bibliotek funksjon strlen. Så nå vi ser at feilen. Hva trenger vi å inkludere? STUDENT: String.h. JASON Hirschhorn: Inkluder string.h, Vi vil gjøre # include string.h på toppen av skjermen. La oss redde, må stave. Nå kompilert. Så igjen, de tingene vi trengte å husk linje 12 i vår for loop når vi sette den opp, int i = 0, lengde = strlen (e). Dette er en fantastisk strategi. Stilen på dette er stor, utformingen av dette er stor. Vi kan gå inn i disse grunner senere, men denne måten trenger du bare å ringe strlen gang i stedet for hver enkelt gang du kjører gjennom løkken. Men må du bruke et komma der og du trenger ikke int igjen. Hvis du erklære både de variablene sammen, du trenger ikke int igjen. Og så hvis du skal bruke strlen, som er et annet bibliotek fungerer ikke med i stdio.h eller cs50.h, gjør at du inkluderer string.h. Kurt? STUDENT: Så hvis du ikke trenger å si hva slags lengde er, gjør at mener det må være en int? Du kan ikke ha to forskjellige typer der ute? JASON Hirschhorn: Så du kunne ha to forskjellige typer. Lengde er en int her, though. Lengde er en int fordi det er komma og deretter det samme. STUDENT: Så det forutsetter at det kommer å være den samme som den første? JASON Hirschhorn: Nettopp. Vi kommer ikke til å gjøre dette nå, men du kan omfatte to variabler på samme linje ved hjelp av en datatype. Så int x, ville y skape to variabler. Så int x, y, hvis vi gjør at, det gir meg en ubrukt variabel x og y fordi vi ikke bruke dem. Så setter tomrom før er bare en fancy triks hvis du ikke bruker noe, for å bruke det. Men som du ser, jeg skaper x og y på samme linje med komma. Det er å skape to heltall akkurat der. Så ja, fullt mulig å lage to ting på samme linje atskilt med komma. La oss bli kvitt de, skjønt. Så det er spell. Takk til dere for koding det for oss. La oss gjøre det en gang til, kjøre den. Gi meg en streng. [Uhørlig], gjorde du det meste. Hva er streng? STUDENT: Hei. JASON Hirschhorn: Hei. H-E-L-L-O, hvert tegn på en linje. Ser flott ut. La oss kjøre det igjen. Alltid kommer til å sjekke for hjørne tilfeller. Hva er en god hjørne sak å sjekke? STUDENT: En rekke? JASON Hirschhorn: Et tall. Så jeg skal sette i en, og den skriver ut en. Det er ikke ber om bokstaver, så det virker som tall arbeid. God hjørne sak å sjekke. Hva er en annen god hjørne Ved å sjekke? STUDENT: En tom streng. JASON Hirschhorn: Hm? STUDENT: Som en tom streng. JASON Hirschhorn: Tom streng. Så la oss ikke sette i noe. Og hva som blir skrevet ut? STUDENT: Ingenting. JASON Hirschhorn: Ingenting. Virker som det fungerer. Du kan prøve flere hjørne tilfeller, men generelt tall, er en annen data stor til å prøve, samt er ingenting. Ingenting, null, negativer er alltid store ting å prøve og ting du bør test, ting sikkert vi skal teste for og sjekke 50 vil teste for. Eventuelle spørsmål om spell.c? OK, la oss dra tilbake. Jeg har en mer program for dere å skrive. Det kalles students.c. Dette er et program som ber brukeren om fem navn, deretter velger tilfeldig og skriver ut ett av navnene. Dette programmet er litt mer involvert enn de to siste vi skrev, så hvorfor ikke vi ta fem minutter å kode det individuelt, og så får vi kode det som en gruppe. Dette programmet også innebære noen ting du kanskje ikke har sett før, så hvis du har et spørsmål om, hvordan Jeg gjør det, rekk opp hånden. Jeg skal komme over og peke deg i riktig retning. Men vi gjør det også fordi dette vil være en god måte å introdusere noen emner som er vanskelig. Så det fungerer, ikke sant? STUDENT: Yeah. JASON Hirschhorn: Når du slår på en problem sett, det er mange måter å gjøre den, men noen er mer elegant enn andre. La oss dykke i. # Include cs50.h. # Include stdio.h. int main ugyldig, klammeparentes. Inne i klammeparentes, Jeg har to kommentarer. Den første er å spørre, det bruker for fem navn. Den andre er, tilfeldig velge og skrive ut ett av navnene. Så la oss gjøre den første, spør brukeren for fem navn. Hvem har bedt brukeren for fem navn og kan fortelle meg hvordan du gjør det? Bare to mennesker gjorde den første delen. Tre personer gjorde den første delen. Fire, fem. Tom, hvordan gjør du det? STUDENT: Du ville erklære en streng og deretter navn, brakett fem. JASON Hirschhorn: String nevne brakett fem. Så hva er denne linjen gjør, string navn brakett fem? STUDENT: Du ville erklære en rekke strenger. JASON Hirschhorn: Dette er en rekke strenger. Hvor mange strenger kommer å passe inn her? STUDENT: Five. JASON Hirschhorn: Five. Utmerket. Vi kommer til å kalle det navn fordi vi kommer til å få flere seg. OK, neste? STUDENT: Og så har en for loop - JASON Hirschhorn: For loop. STUDENT: - for i = 0. JASON Hirschhorn: For (int i = 0. STUDENT: Semicolon. JASON Hirschhorn: Semicolon. STUDENT: jeg mindre enn fem. JASON Hirschhorn: jeg mindre enn fem. STUDENT: Semicolon. JASON Hirschhorn: Semicolon. STUDENT: i + +. JASON Hirschhorn: i + +. STUDENT: og deretter lukket parentes. JASON Hirschhorn: Stengt parentes, og deretter noen klammeparentes. Inne i klammeparentes? STUDENT: Og så printf. JASON Hirschhorn: Printf. STUDENT: Åpne parenteser, navn% d. JASON Hirschhorn: Beklager? STUDENT: Navn. JASON Hirschhorn: Navn. STUDENT: Og så plass, og deretter% d. JASON Hirschhorn: Navn, mellomrom,% d. STUDENT: Og så / n, og deretter lukket. JASON Hirschhorn: So navn, plass, % D / n, lukkede parentes. STUDENT: Komma, i + en. Jeg beklager. Stengt sitat, og deretter komma, i +1. JASON Hirschhorn: Stengt sitat, komma, en jeg. STUDENT: Ja. Og så neste linje - JASON Hirschhorn: i + en. STUDENT: Ja. Og så den neste lysbilde er navnene brakett jeg. JASON Hirschhorn: Neste tråd er navnene brakett jeg. STUDENT: = få streng. JASON Hirschhorn: = Get - stor G-E-T - string. Oops, beklager. STUDENT: åpen, lukket parentes og deretter - JASON Hirschhorn: Åpen, lukket paren. STUDENT: Semicolon. JASON Hirschhorn: Semicolon. OK, så du initialisere rekke strenger, navn, og deretter gå gjennom en for loop, og fem ganger skrive ut noen spørsmål til brukeren og deretter lagre fem strenger. Er det noen som justeringer av dette? Tom, jeg tror alle enig med deg. Ser ganske bra. OK. Hvorfor gjorde du i ett, skjønt? STUDENT: Jeg mener, har ikke å være, men jeg ett, slik at det er Navnet ett for å nevne fem. Ellers ville det være navn null for å nevne fire. JASON Hirschhorn: Så du har jeg en fordi ellers ville det ha skrives ut fra null til fire fordi det er hvordan datamaskiner tenke, men mennesker egentlig ikke lese sånt. Det er en annen ting du vil støte på. Noen ganger når du skriver ut noe til brukeren, vil du ønsker å gjøre det til en litt penere, og gjør jeg en i dette tilfellet er en måte å gjøre det penere. Jeg ser også fem ganger, string navn er fem, er jeg mindre enn fem. Jeg vet hvor du fikk fem. Du fikk det fra meg fortelle du fem navn. Men hvis vi ønsket å gjøre koden en litt mer robust, en ting vi kunne gjøre er her ute, utenfor int, vi kunne gjøre noe som dette, # Define, og vi kunne gjøre NAVN fem. Så i utgangspunktet, uansett hvor jeg skriver kapital N, hovedstaden A, hovedstaden M, stor E, stor S, at strengen, vil det erstatte at med fem i koden. Eller la oss bare kalle det - vi vil bare kalle det NUMMER. Så jeg definere alle caps NUMBER å være 5. Så nå hvor jeg har nummer 5, jeg kan erstatte det med all caps NUMMER. Og nå, hvis jeg ønsker å endre antall av navn, er alt jeg trenger å gjøre dette en linje, linje fire, hvor jeg har # Define nummer fem, endre det til 10, eller endre det til fire. Når koden blir lengre, er du ikke kommer til å huske alle stedene du sette hvor mange navn du ønsket, og i For at du ikke skal gå glipp av en, er dette en god måte å gjøre det, for å finne noe opp toppen og så bare bruke det uttrykket overalt i hele koden din. Marcus? STUDENT: Er det stilistisk foretrukne enn globalt definere en konstant n? JASON Hirschhorn: Så er det stilistisk foretrukket enn globalt definere en konstant n? Så du sier du kunne gjøre, int antall = 5? STUDENT: Har de konsonanter i C eller nei? JASON Hirschhorn: Eller const - i lik. Så du sier bare en global variabel? STUDENT: Yeah. JASON Hirschhorn: Så stilistisk, det er ingen nødvendigvis en rett svare, men begge disse er bedre enn bare å kaste disse tilfeldige tallene i hele koden din. Vi kaller dem magiske tall. Når jeg ser på koden din, eller når noen står å lese gjennom den, de ønsker ikke bare disse tilfeldige tall som ikke gir mening. Selv antall 26, som generelt er antall bokstaver i alfabetet, det er bedre å definere ALFABET opp toppen og lagre nummer 26 i denne strengen, hvis det er fornuftig. Eller på problemet satt en, i stedet for - igjen, snakket vi ikke om dette på tiden, men i stedet for bare å kaste i en 25 overalt eller 10, kan du lagre nummeret 25 som KVARTAL eller 10 som DIME, og som gjør det enklere for den som står å lese gjennom koden til forstå hvorfor du valgte dette nummeret. Og også for deg, hvis du noen gang ønsker å oppdatere koden, det gjør det litt mer robust. Yeah? STUDENT: Er denne koden også kommer skal være tilgjengelig for oss etter? JASON Hirschhorn: Alle disse kodene at vi har skrevet sammen er kommer til å bli sendt til deg gutter og tilgjengelig. Ja. Så spør brukeren om fem navn. Tilfeldig velge og skrive ut ett av navnene. Hvem gjorde denne linjen? Dette er den vanskeligste linjen her. Beklager, Tom. Du gjorde en veldig god jobb, men Dette er litt mer komplisert. Marcus, gå videre. STUDENT: Vel først, du kommer til må inkludere stdlib.h og time.h. JASON Hirschhorn: Så du sier at toppen, omfatte to ytterligere biblioteker. Du vil ha meg til å omfatte S-T-D-L-I-B dot H, Standard Library, og hva den andre var? STUDENT: Time.h. JASON Hirschhorn: # include time.h. Så disse er to flere biblioteker. Jeg antar nå skal vi bruke funksjoner som ligger i disse to, som er grunnen til at du trengte å inkludere dem? STUDENT: Så da først er du kommer til å ønske å skrive srand. JASON Hirschhorn: Srand. STUDENT: (tid (0) JASON Hirschhorn: Beklager. Srand (tid ( STUDENT: 0. JASON Hirschhorn: 0. STUDENT:)), semikolon. JASON Hirschhorn: En annen lukket paren? Semikolon. Jeg skal bare erstatte din null med NULL. Det vil gjøre om det samme, men generelt, vil du se NULL, som vi skal snakke om dette linje i et sekund. STUDENT: Stilistisk bedre? JASON Hirschhorn: Vanligvis folk rett NULL, men samme. STUDENT: Og så int navn. JASON Hirschhorn: Int navn. STUDENT: = JASON Hirschhorn: = STUDENT: Rand. JASON Hirschhorn: Rand. STUDENT: () JASON Hirschhorn: () STUDENT: Modulo nummer. JASON Hirschhorn: Hva er modulo? Tegnet? Den prosentvise karakter? STUDENT: Prosent karakter. Modulo NUMMER at du har definert opp toppen. JASON Hirschhorn: Modulo NUMMER. STUDENT: Og så semikolon. JASON Hirschhorn: Semicolon. STUDENT: Og så ny linje, printf. JASON Hirschhorn: Printf. STUDENT: ( JASON Hirschhorn: ( STUDENT: " JASON Hirschhorn: " STUDENT:% s / n JASON Hirschhorn:% s / n STUDENT: " JASON Hirschhorn:% s / n " STUDENT: komma, mellomrom navn. JASON Hirschhorn: Space - STUDENT: Oh, antar jeg, hva vi kaller det her? JASON Hirschhorn: Vi kalte det navn. STUDENT: Open bracket, navn. JASON Hirschhorn: Open bracket, navn. STUDENT: Stengt brakett. JASON Hirschhorn: Stengt brakett. STUDENT:) JASON Hirschhorn:) STUDENT: Semicolon. JASON Hirschhorn: Semicolon. OK, la oss redde. La oss gjøre denne koden. Studenter. La oss kjøre denne koden. Studenter. Ikke. / Student. . / Studenter. Nevn en. Vi sier David. Navn to, RJ. Navn tre, Rob. Navn fire, Lucas. Navn fem, Joseph. Og så den skriver ut Joseph igjen. Så la meg kjøre dette igjen. La meg gjøre de samme navnene. David, RJ, Rob, Lucas, Joseph. Og det ga meg David denne gangen. Så jeg gjorde det samme, men det ga meg en annen ting, og det er fordi, selvfølgelig, ber vi for et tilfeldig navn. Så jeg tror, ​​basert off av meg vandrende rundt i rommet, som folk flest sannsynligvis fikk den første delen til høyre, sette opp denne matrisen og deretter får alle navnene. Jeg snakker om linjene 10 til 16 år. Men linjene 18 til 21 er trolig noen ting du ikke har sett før, så la oss gå gjennom disse. Denne linjen, srand tid NULL er egentlig - sorry, la oss hoppe ned en linje, rand (). Det gir deg et tilfeldig tall, et tilfeldig heltall. Og hvis du treffer mann rand, som mange av dere gjorde - M-A-N plass R-A-N-D - i terminalen som dette, M-A-N plass R-A-N-D, trykk på Enter. Du ville komme opp i håndboken og ville være i stand til å lese at rand kommandoen utganger num pseudo tilfeldige bytes etter såing av tilfeldige tall generatoren gang. Så det er en beskrivelse. Det er hva rand gjør det, gir du et tilfeldig tall når du kaller denne funksjonen. Dessverre, det er egentlig ikke tilfeldig fordi hvis du bare ringe tilfeldige uten å få det litt frø, noen utgangspunkt vil det alltid velge den samme ene og den bruker en formel for å bestemme det neste. Så hvis du ringer rand, vil det bare gi deg det samme. Det vil være meget forutsigbar. Det faktisk ikke være tilfeldig. Så det vi må gjøre, per Marius ' instruksjoner til meg, var seedet rand med noe annet, som er hva den srand funksjonen gjør. Det frø rand med noe litt mer tilfeldig enn det samme, og han seeding det med tiden NULL, som er, bare ved konvensjonen, gjeldende tid i sekunder. Så du antar at alle er ikke kommer til å kjøre kode på det nøyaktige samme sekund, så det er et sikkert kort som tid NULL kommer til å være annerledes hver gang denne koden kjøres. Trygt satse på at Dermed srand vilje frø rand med noe annet hver eneste gang. Så ved konvensjonen, når vi ønsker en tilfeldige tall, skriver vi denne linjen, srand tid NULL, for å gi oss en mye mer tilfeldig frø, og da vi kjører rand, som gir oss et tilfeldig tall. Yeah? STUDENT: Kan du si hva du mener med frø? JASON Hirschhorn: Seed som i - så rand kommer til å velge et gitt antall og det kommer til å bruke noen formel for å komme dit. Så det kommer til å starte med noe og deretter gjøre det til noe basert off av den formelen. Hvis du alltid gi den samme, det alltid kommer til å slå den inn i samme. Slik at første du gi det er frøet. Så du ønsker å gi den noe annerledes å begynne med, og så det vil gjøre det til noe annet. Og så til slutt, linje 20, dette% kalles modulo, og det er forvirrende. Det er noe som er litt annerledes her at du egentlig ikke har i det virkelige liv matematikk. Men egentlig, når du tar en gigantisk nummer og du deler i C, hva skjer med resten? STUDENT: Det blir avkortet. JASON Hirschhorn: Det blir avkortet. Så 20 delt på 3 er hva? Hva returnere det til deg, 20 delt på tre. Sorry, 10 delt på tre. Hva returnerer det til deg? STUDENT: [uhørlig]. JASON Hirschhorn: 10 delt på tre like returnerer 3, ikke tre resterende en. Så 10 hva modulo 3 avkastning er bare resten, en. Så hvis du ønsket å vite hva 10 delt av 3 faktisk var, ville du gjøre 10 delt på 3, vil du få tre, og da bør du gjøre 10 modulo 3, og du vil få en en. Så du vil innse at 10 delt ved 3 er 3, en rest. Og i denne linjen, kunne rand være noen heltall, egentlig. Så modulo sier, dele det med antall, som er i dette tilfelle fem. Og hvis du noen gang dividere med et tall, heltall må alltid være mindre enn dette nummeret. Så hvis du dividere med et nummer 5, resten er alltid kommer til å være null til fire. Det er bare hvordan regnestykket funker. Så et stort antall moduloed av en mindre nummer vil alltid returnere resten og vil alltid returnere noen tall som er mindre enn antallet du dividert med. Does noen har noen spørsmål om modulo, fordi det vil komme i svært, veldig praktisk, så jeg vil være sikker alle forstår det? Cool. Og vi så at dette programmet fungerte. OK, flytte på. Så neste, kommer vi til å gå inn funksjoner, og vi kommer til å gå gjennom resten av denne ting ganske raskt fordi jeg ønsker å få til kommandolinje argumenter. Så funksjoner er i hovedsak, som du har sett, svarte bokser. De tar ting i kalt parametre, de gjør noe for dem, enten endre dem eller lage noen bivirkninger, og til slutt, de spytter noe ut, som er returverdien. Kan noen gi meg en grunn hvorfor vi ville bruke funksjoner? Noen? En grunn til at vi ville bruke funksjoner? Anyone? Jeg så to hender. Hva er en god grunn? Marcus? STUDENT: Hvis du må ringe det samme mengde koder flere ganger. JASON Hirschhorn: OK, hvis du trenger å kalle den samme mengde kode flere ganger. Jeff, gjorde du har en annen grunn? STUDENT: Bare så det du kan kode mindre. JASON Hirschhorn: Du kan kode mindre. Høyre. Hvis du ønsker å gjøre noe mye - i forrige koden, kunne jeg ha skrevet får streng fem ganger, men en for loop gjør det ser penere og du må skrive mindre kode. Funksjoner er en lignende idé. Hvis jeg ønsker å gjøre det samme mye, flytte den til en funksjon og kalle det funksjon hver gang. Som vil gjøre den tingen for deg. Det er en god grunn å bruke funksjoner. Så anatomi av en funksjon. En funksjon vil generelt se slik ut. Det begynner med retur-type da vil du få navnet. Det vil ta argumentene, ellers kjent som parameter, og inne de klammeparentes, vil du skrive koden din. Vi har sett en funksjon mye. Det er viktigste. Her er hoved lagt over som anatomi jeg hadde tidligere. Hva betegner int akkurat her? Hva betyr int? Når jeg skriver int main (void). STUDENT: Return type? JASON Hirschhorn: Beklager? STUDENT: Avkastningen type. JASON Hirschhorn: Int er returnere type, helt riktig. Hoved returnerer en int. Hva er det viktigste? STUDENT: Funksjon navn. JASON Hirschhorn: Main er Navnet på funksjonen. Helt riktig. Og ugyldig? Hva er ugyldig i parentes? STUDENT: Det tar ikke noen ekstern verdi. JASON Hirschhorn: Så ugyldig - høyre. I parentes, legger vi parametere eller argumentene de funksjonen tar, hva som går inni den svarte boksen. Når du skriver ugyldige, du sier dette tar ingenting i. Så int main ugyldig betyr viktigste er ikke ta noe i. Inne i klammeparentes, har vi noen kode, og da ser vi på slutten returnere null. Hva betyr retur null? Vel, vi snakket om retur type. Hoved trenger å returnere en int. Det er hva denne linjen gjør. Den returnerer en int, null. Selvfølgelig har vi ikke sett at mye fordi i programmering gjør vi med maskinene vi gjør og kompilatorer vi bruker i dag, du trenger ikke den linjen. Viktigste er spesiell nok til at den vet når du kommer til slutten av main, bare returnere null hvis alt gikk bra. Faktisk, hvis noe ikke går bra, viktigste vil ofte tilbake en annen antall betegner at noe gikk galt med programmet. Så generelt når du ser koden, du ikke skriv retur null, men det er bra å vite at det skjer bak scener fordi når du skriver en annen type funksjon, du kommer til å trenge å inkludere en retur linje. Hvis du sier jeg skal returnere en int, må du skrive tilbake noe. Hvis du sier ugyldig opp her på begynnelsen, void main tomrom, for eksempel, da er det ikke retur noe - void betyr ingenting - slik at du ikke trenger det returledningen. Men du noensinne skrive noe som ikke er ugyldig for retur type, må du en linje som sier retur og du trenger å sette noe der som matcher den typen. Eventuelle spørsmål om det? Søt. Omfang. Dette er noe vi har rørte på også. Hver variabel, som vi vet, har en visst omfang, og det er i utgangspunktet snakker om hvor variabelen kan eller ikke vil referere til. Og jeg liker å si hva som skjer i klammeparentes forblir inne i klammeparentes. Så for eksempel, hvis vi ser på denne koden, vi definerer en global variabel utenom viktigste, int a, her oppe på toppen. Vi ringer en annen int en innerste. Vi har noen flere klammeparentes, og vi kaller en annen int en. Vi har tre en er i kode. Dette er ikke det samme. Jeg har laget tre forskjellige variabler. Så inni disse indre krøllete tannregulering, sier jeg a = 4. Som en er at det å snakke om, første, den andre, eller den tredje en? STUDENT: Den tredje. JASON Hirschhorn: Den snakker om den tredje. Alle disse en er faktisk kan være snakket om i denne spesielle eksempel fordi deres omfang alt går inn i disse innerste klammeparentes. Men når du kaller ting på samme navn, det er noe som heter å skjule. Slik at du bare forholde seg til eller fikse eller bruke siste variabel, eller en nærmest deg. Så her inne, er dette tredje en nærmest til den linje, en 4 =, slik det påvirker den tredje. Og den siste linjen, a 2 =, hvori A er som snakker om, den første, andre, eller tredje en? STUDENT: Second. JASON Hirschhorn: Den snakker om det andre en. Selvfølgelig, den tredje en er nærmest det i koden, men den tredje en eksisterer ikke utenfor de klammeparentes. Når du kommer til det lukkede krøllete brace, det er som det er borte, essensielt. Så de to eneste du har igjen er de to første, og selvfølgelig, nå det er nærmest den andre. Så det er en god ting å huske om omfanget. For eksempel, jeg er sikker på at du har støtt på dette i en gjøre mens loop. Hvis du initialiserer variabelen inne do mens loop og deretter prøver å tilgang til det utenfor, sannsynligvis du fikk noen advarsel lignende, dette variabelen ikke eksisterer. Det er på grunn av omfanget idé, at ting bare eksisterer innenfor disse klammeparentes. Klammeparentes er som en gigantisk klem som du gir til koden din, er en annen måte å tenke på det. Dette er altså en annen funksjon, noe for dere å kode, hellofunction.c. Vi kommer til å hoppe over det for nå, men dette er noe jeg oppfordrer deg til å øve på egen hånd. Skriv et program der viktigste samtalene en annen funksjon som skriver ut en hilsen til brukeren. Det er essensielt å ta hello world og abstrahere at printf inn en annen funksjon. Men vi kommer ikke til å gjøre det akkurat nå fordi vi ikke har så mye tid venstre som jeg hadde håpet. Så funksjon erklæring. Vi har sett dette før også. Hvis du ønsker å skrive en annen funksjon, må du la datamaskinen kjenner og main vet at den finnes. Så det vi gjør er over viktigste, skriver vi avkastningen type, navnet, og parametere, og deretter ned under viktigste, her nede, vi faktisk kopiere den linjen og deretter skrive selve koden. Så denne måten, hvis du kaller funksjonen i hoved øverst, vet at hoved hei finnes, for eksempel, hvis jeg var å ringe hei, og så det ser ut til gjennomføringen ned nedenfor. Hva skjer hvis jeg ikke inkludere dette linje opp toppen, ugyldiggjøre hallo (void)? Hvis jeg ikke tar med denne linjen og viktigste samtalene Hei, jeg er kommer til å få en feil. Jeg kommer til å få en feil fordi kompilatoren vet ikke at denne tingen eksisterer. Dette ligner på hvorfor vi ikke # include cs50.h. Hva hovedsak cs50.h gjør setter få streng oppe. Det er å sette få int opp der. Det er å sette alle de funksjon prototyper opp før hoved slik at når du kaller dem i main, vet main at disse tingene eksisterer. Det er hva disse. H filene gjør. Og så hvis du skal lage din egen funksjon, så må du sørge for at du sette det prototype der oppe. Eventuelle spørsmål om dette så langt? Kommandolinje argumenter. Dette er hva vi kommer til å fullføre på, og forhåpentligvis vil vi presse inn litt PSett. Jeg vet ikke om vi vil være i stand til å presse at på grunn av tid, men med dere som er her, og hvis du Gutta ønsker å si etter en bit, vi kan gå over den utenfor. Men vi kommer til å avslutte med kommandolinjeargumentene for de siste 15 minuttene. Vi våken, Michael? Du er våken? Bra. Jeg vet ikke om du sover med øynene lukket. Det ville være vanskelig. Kommandolinje argumenter. De er en måte å sende informasjon inn i et program. Til slutt vil vi møter andre. Men egentlig, kommer vi til å stoppe skrive int main (void) hvis vi ønsker å ta noen kommandolinje argumenter. Vi kommer til å skrive denne saken kalt int main (int argc, string argv, parentes. Det er forvirrende. Det er mye av bokstaver som ikke er i human engelsk, så vi kommer til å pakke dem ut akkurat nå. Argc står for argument teller - og igjen, alle disse vil være tilgjengelig på nettet - og det er antall argumenter. Argv står for argument vektor, og de er argumentene selv. Det er en rekke strenger. Vi har faktisk sett en rekke av strenger før i dag. Vi skapte en i det siste programmet vi kodet. Så her er et eksempel. Jeg skriver. / Ohai CS50 seksjon på min kommando linje. Argc i dette tilfellet er lik 3. Argv brakett 0 er ohai, argv brakett 1 er CS50, er argv bracket 2 delen. Igjen er argc antall argumenter, og til å reise deg opp litt bit, vi alltid regne navnet på funksjon som det første argumentet. Så i dette tilfellet, er det tre argumenter, navnet på funksjonen og deretter de to som jeg har skrevet i. Deretter kommer vi til å redde dem argumenter selv i argv. Og igjen, akkurat slik vi så før, gjorde vi dette i det siste programmet kodet vi. Du kan bevege deg gjennom rekken av ARGV og få disse strengene. Det er egentlig det vi gjorde på slutten av vår siste program. Vi plukket et tilfeldig navn og deretter gikk til navn brakett uansett og skrives ut ut strengen som ligger der. På toppen av bare den ene matrise, fordi strenger selv er matriser, som snakket om, kan du ha arrays av matriser, som er egentlig hva argv er. En måte du kan tenke på dette er rader og kolonner. Jeg kan trekke det akkurat nå. Så argv - det er ikke å slette. La oss trekke i henhold ohai. Så hvis jeg skrev inn, ohai CS50 delen, Jeg kommer til å avkorte seksjon for dette eksempelet. Men i hovedsak, min multi-dimensjonale array, CS50 ohai, vi kommer til å gjøre sekt. Så her kan jeg få tilgang til - hvis jeg bare gi argv ett nummer - dette er feil. Hva er galt i dette diagrammet? STUDENT: Start på null. JASON Hirschhorn: Det bør begynne med null. Jeg bør nok også rotere det, men siden jeg allerede har trukket den på, jeg kommer til å la den på det for nå. Men den starter på null. Det er riktig. Jeg beklager hvis dette er liten. Kan dere se type? Så hvis jeg gjør argv 0, vil jeg få alle ohai. Hvis jeg gjør argv en, vil jeg få alle CS50. Hvis jeg gjør argv to, vil jeg få alle sekt. Men nå som vi sa, strenger er matriser selv. Så det jeg kan gjøre er at jeg kan behandle dette som en multi-dimensjonal array, og jeg kan gjøre noe langs linjene av 0 argv, 0, som gir meg akkurat den karakter 0. ARGV 0, 1, som gir me nettopp timer. 1 argv, tre, noe som gir meg bare Dette 0 her nede i CS50. Så fordi strengene selv er matriser, vi setter det i en annen rekke. Vi har nå utvalg av arrays, og vi kan indeksere inn i vår første matrise og da indeksen inn vår andre rekke. Og som du forventer, gjør vi det ved bare å sette de to - vi gjør klammeparentesene bare rett ved siden av hverandre. Så i dette eksempelet, er argv en CS50 og 1 argv, to, som vi sa, er bare fem. Does noen har noen spørsmål om flerdimensjonale matriser? Dere gjør awesome. Søt. Så vi har et annet program akkurat her, og dette er den siste tingen vi er kommer til å gjøre akkurat nå. Så jeg vil at du skal skrive et program som tar en brukers fulle navn, to og bare to kommandolinje argumenter, og til slutt, skrive ut en hilsen til bruker som inkluderer deres fornavn. Så hvorfor ikke ta tre eller fire minutter å gjøre dette, og så får vi gå over det som en gruppe, og så får vi bryte opp? Og igjen, her, når vi sier ta en brukerens fulle navn per beskrivelsen av dette problemet, bør det være kommando argumenter, ikke bruker får streng. Ja, Marcus? STUDENT: Så når du sier to kommando argumenter, er at i tillegg til . det / løpe, eller - JASON Hirschhorn: Godt spørsmål. Do, inkludert. / Løp, tre kommandolinje argumenter. Eller inkludert. / Personlig, i denne saken, fordi det er den navnet på denne filen. Så argc ville være tre. Men jeg ønsker bare to argumenter gitt til programmet. Jeg bør spesifisere det. Jeg skal gjøre denne endringen før jeg legger disse og sende dem til dere. STUDENT: Hva om du har et mellomnavn? JASON Hirschhorn: Hvis du har en middels navn, er du ute av lykken. Jeg beklager. Eller hvis du bare gå av Shakira, du er også ute av lykken. Yeah? STUDENT: Så når folk ikke har cs50.h, definerer de argv som røye stjerners argv? Eller er det fortsatt kalles string argv? JASON Hirschhorn: Ja. Så strengen, igjen, maskere vi over hvilken akkurat som skjer der. Det kommer til å bli pakket kanskje på onsdag, men snart. Det er som trening hjul. Fordi hovedsak er det det samme. Så la oss ta et minutt til program dette, og så vil vi gå over det som en gruppe, og deretter som jeg sa, bryte opp. Og jeg tror de fremdeles ekstra godteri, så dere skal forhåpentligvis ta det, eller kan du ta det. Beklager hvis du fremdeles skrive, men jeg ønsker å dykke i og vi kan fullføre den sammen. Så jeg har skrevet i, # include cs50.h, # include stdio.h. int main (void), klammeparentes, krøllete brace, inne tre linjer med pseudokode, ta en brukers fulle navn, to og bare to kommandolinje argumentene, skrive ut en hilsen til bruker som inkluderer deres fornavn. Så den første, ta en bruker fullt navn. Hvem kan hjelpe meg å ta en brukers fulle navn? Hvordan gjør jeg det en del? Har dere gjøre det første delen? Ta en brukers fulle navn. Vel, for at en kommandolinje argument, hva skal jeg skrive? Hva bør jeg endre om min funksjon erklæring? STUDENT: Du vil ikke ha det å være ugyldig lenger. JASON Hirschhorn: Nettopp. Jeg vil ikke at det skal være ugyldig. Hva gjør jeg vil den skal være? STUDENT: Int argc. JASON Hirschhorn: Int argc. STUDENT: String argv. JASON Hirschhorn: String argv. STUDENT: Bracket, brakett. JASON Hirschhorn: Bracket, brakett. Det er helt riktig, og det er faktisk hvordan jeg skal få en bruker fullt navn. De kommer til å sette den inn der. Slik at man er ferdig. Så nå vil jeg ha to og bare to kommandolinje argumenter. Så Noah, hva er en måte jeg kan kontrollere antall kommando argumenter jeg har? STUDENT: Du gjør en hvis setningen. JASON Hirschhorn: Hvis statement, akkurat. Hva vil jeg som tilstanden? STUDENT: Hvis argc større enn 3. JASON Hirschhorn: Hvis argc er større enn 3. Hvis argc større enn 3, hva gjør jeg? STUDENT: Return ett. JASON Hirschhorn: Gå tilbake ett. Vil det sikre at jeg har to og bare to? STUDENT: Nei. Hvis argc er større enn 3 og mindre enn to. JASON Hirschhorn: Hvis argc er større enn tre og argc er mindre enn to. Hva er en måte jeg kan skrive dette i bare én linje, eller uten å bruke det og boolsk operator? STUDENT: Det er ikke lik to. JASON Hirschhorn: Hvis argc er ikke lik to. Nettopp. Så hvis argc er ikke lik 2, som vil gi meg dette programmet, personlig, når jeg kjører den, og som vil gi meg hvor mange kommandolinje argumenter? Hvor mange vil jeg se etter? Unnskyld. La meg omformulere det. Hvis argc = 2, hvor mange ting brukeren skriver inn i linjen? STUDENT: One. JASON Hirschhorn: Bare en. Så før, du hadde rett, Noah. Hva trenger jeg egentlig trenger å sette det? STUDENT: Det tilsvarer tre. JASON Hirschhorn: argc ikke lik tre. Jeg ønsker å utgjøre 3 fordi jeg ønsker personlig pluss de to andre. Så hvis argc ikke lik 3, returnere en. Hvorfor sa du tilbake en? STUDENT: Fordi det betyr at det er galt. JASON Hirschhorn: Det betyr at det er galt, og hva som kommer til å gjøre? STUDENT: Re-be brukeren. JASON Hirschhorn: Det kommer til å slutte programmet, slik det vil måtte løpe igjen, men vi har ikke noe inn her for å be om dem igjen. Jeg ba ikke om det. Så det er helt riktig. Returnere en bare avsluttes programmet. Stor. Og skrive ut en hilsen til brukeren som inkluderer deres fornavn. Hvordan kan jeg gjøre det? Anna? STUDENT: Printf. JASON Hirschhorn: Printf. STUDENT: (" JASON Hirschhorn: ( STUDENT: "hallo JASON Hirschhorn: "hallo STUDENT:% s JASON Hirschhorn:% s STUDENT: / n JASON Hirschhorn: / n STUDENT: ", JASON Hirschhorn: ", STUDENT: ARGV JASON Hirschhorn: Beklager? STUDENT: ARGV JASON Hirschhorn: ARGV STUDENT: Square parentes ett. JASON Hirschhorn: Hakeparenteser? STUDENT: 1. JASON Hirschhorn: 1. STUDENT: And) semikolon. JASON Hirschhorn:) semikolon. La oss kjøre dette. Lag personlige. . / Personlig. Det bare slutte. Hvorfor måtte det slutte? STUDENT: Du har ikke satt noen argumenter. JASON Hirschhorn: Jeg gjorde ikke sette noen argumenter i. Ser flott ut. Dere spikret det. Så igjen, du gikk inn argv og du sjekket i begynnelsen argc. De er to viktige ting å huske. Så i de to siste minuttene før vi forlate, vil vi ikke komme til PSett to, men som jeg sa, hvis du ønsker å bo etter i 10 minutter, ville jeg han glad for å gå over med dere den logiske for disse oppgavesett. Vi hadde mye å dekke i dag så jeg fikk ikke komme til dem. Vanligvis liker jeg å inkludere at det ved utgangen. Så hvis du ønsker å holde seg i nærheten, værende i 10 minutter. Vi vil gjøre det. Så, som jeg nevnte i begynnelsen, PSett null og en, vil vi få det tilbakemeldinger tilbake til deg som snart som mulig. Målet er å få PSett ett tilbakemeldinger, kommentarfeltet delen, før PSett to skyldes. Så hvis du har gjort noen feil eller stilistisk, ting kan bli bedre, vil du ha denne informasjonen slik at du vil ikke gjøre de samme tingene i PSett to. Og så i fremtiden, vil du få all av PSett tilbakemeldinger og kommentarer tilbake før neste skyldes. Til slutt, hvis jeg kunne sette i en annen plugg for tilbakemeldinger. Dette er ditt første avsnitt. Det var min første delen undervise i år. Gå dit. Skriv ting, gode og dårlige, og jeg vil bruke den til å lage § bedre neste gang. Og sist, igjen, hvis du trenger noe, gi meg beskjed. Jeg er mer enn glade for å hjelpe dere. Hvis du bare vil ha godteri, jeg vil ha ekstra godteri. Jeg er glad for å bringe den til deg. Dette kommer til å bli en fantastisk kurs. Dette er en av, om ikke min favoritt Selvfølgelig, jeg har tatt i hele mitt liv, og jeg håper det vil være at flott for deg. Så jeg ønsker å gjøre alt i min makt å gjøre det så kjempebra for deg. Jeg kommer til å sende ut en epost om du er i min seksjon eller Noah, og skal forsøke å planlegge med hver av dere en gang for å sjekke inn over neste par ukene, så jeg kan få en følelse av hva din CS bakgrunnen er, og det vil også hjelpe meg skreddersy disse seksjoner for å bedre passer dine behov. Så det er det jeg har fått stilt opp. Igjen, jeg ser deg utenfor Hvis du ønsker å være der. Dette var uke to avsnitt. Takk skal dere så mye.