ALLISON BUCHHOLTZ-AU: Hei, alle sammen.
Velkommen til avdeling.
I dag er bare kommer til å være alt quiz gjennomgang for quiz på onsdag.
Jeg håper alle husker at de har en quiz på onsdag.
Og hvis du ikke gjorde det, vel, nå har du blitt minnet.
Så onsdag sørg for at du møter opp for klassen eller på andre overnattingssteder som
nødvendig.
Dere kommer til å bli kjempebra.
Det kommer til å være stor.
Og jeg kommer til å gjøre alt jeg kan å bidra til å forberede deg i dag for din quiz
nå.
Og også i tilfelle du ikke vet, det er et kurs bred gjennomgang session
i dag på 7:00 i Northwest labs rom B103.
Du kan se meg igjen for et ekstranummer som Jeg vil føre en del av den anmeldelsen session
også.
Så hvis du ikke kan få nok av meg Nå kan du komme igjen i kveld.
>> Greit, så første tingene først.
Bare noen quiz tips før vi faktisk dykke inn i vurderingene.
Så som med en hvilken som helst eksamen, praksis vil definitivt hjelpe deg ut.
Det er eksamen fra fortiden seks eller syv år på det,
så det er mye trening materiale for dere å ha.
Og faktisk, i dag er egentlig bare kommer til å gå over alle emner
at dere har spørsmål om så vel som arbeider gjennom praksis problemer
fra quiz null.
Så jeg skal kaste opp quiz null fra i fjor på her,
og vi kan arbeide gjennom noen problemer at dere ønsker å.
>> Så øve.
Du kommer til å begynne å gjøre det i dag.
Kode på papir.
Så ja, hvis alle kunne faktisk få ut
papir, som vil være stor, fordi du ikke
kommer til å ha datamaskinen på eksamen og skrive ut kode for hånd
er ofte mye vanskeligere enn man kunne forvente.
Du er vant til å bare se det og skrive det,
og du har din kompilatoren til hjelpe deg ut når du har feil,
men du ikke får det på eksamen.
Så det er veldig viktig å faktisk være i stand til å skrive ut koden,
og at muskel minne av å gjøre det for hånd vil virkelig hjelpe deg.
>> Så vi får litt tett.
Det er mandag.
Din eksamen er på onsdag.
Men hvis du har tid, definitivt ta en
av eksamener fra i fjor eller året før under tidsbegrensning
av en og en halv time.
Bare slå ut en time og en halv tid,
og sitte deg ned, og bare jobbe seg gjennom problemene
som om du var faktisk å ta det, fordi man
av de største tingene som vi hører om quizer er at de er svært lang.
Det er mye materiale.
Det er mange spørsmål, og folk flest kanskje ikke ferdig.
Jeg vet at jeg helt ikke ferdig mine quizer da jeg tok klassen.
>> På dette notatet, som en mindre komfortabel delen,
forstår at dette kurset er ment å imøtekomme for folk på alle nivåer.
Hele grunnen har vi du dele mindre komfortable, et sted mellom,
og mer komfortabel er å slags gjøre den mer rettferdig.
Og hvis du er mindre komfortable, er det ikke nødvendig per se å få alt.
Som hvis du skulle få alt, ville du sannsynligvis
være i mer komfortabel delen.
Så åpenbart ikke slå dere opp for hardt hvis du ikke kan fullføre eksamen.
Ta det fra meg, jeg gjorde ikke det.
Jeg er fortsatt en konsentrator.
Jeg er fortsatt hjelpe lærer på kurset.
Du vil være i orden.
OK.
Og til slutt, få litt søvn.
Selvfølgelig med noen eksamen vi alltid si dette.
Stapper kvelden før og ikke får søvn
gjør not-- kanskje hvis det fungerer for deg, gå for det.
Men for de aller fleste folk, få litt søvn,
la hjernen hvile og gjenopprette før du kommer inn til eksamen
vil virkelig hjelpe deg.
Også det vil nesten sikkert være godteri på eksamen,
så du har å se frem til.
Dere kommer til å gjøre stor.
Det kommer til å bli bra.
Og nå i et halvt jeg og den neste timen vil prøve og prep deg så godt jeg kan.
>> Så jeg har lysbilder fra utgangspunktet alle deler opp til nå.
Jeg kommer ikke til å gå gjennom alle av dem, fordi det ikke er
gjennomførbart i en og en halv time, så vel som arbeider gjennom praksis problemer.
Så i stedet har jeg en liste over emner.
Dette er alle ting at vi kunne quiz deg på.
Hvis det er noe som virkelig hopper ut
at du ønsker å gå over, at du vil ha meg til å gå over konseptuelt,
Jeg kan prøve og gi deg en oversikt der.
Eller hvis du ønsker å hoppe rett inn i gjør praksis problemer sammen,
vi kan gjøre det.
Det er opp til dere.
Det er ikke så mange av dere.
Så det er hva dere liker å gjøre.
Jeg ønsker å være den mest hjelpsom mot dere.
Så jeg skal la deg bare se.
>> PUBLIKUM: En ting er diagrammet at vi holder
sier om bunken og haugen.
Bare hele ideen bak det og hva det betyr.
ALLISON BUCHHOLTZ-AU: Ja, OK.
Dette er helt i slutten, så la meg bla gjennom.
>> PUBLIKUM: Vi trenger ikke å gjør det nå, men uansett.
>> ALLISON BUCHHOLTZ-AU: Var det anything-- denne.
Er denne typen uklar for folk?
PUBLIKUM: Ja, jeg andre det.
Og kan vi også buffer overflow?
ALLISON BUCHHOLTZ-AU: Buffer overflow?
OK.
Så buffer overflow er ganske lett bare å snakke om.
Det er i utgangspunktet buffere du tenker på noen matrise minne som du har, ikke sant?
Vi vanligvis snakker om buffer overflow når
du ikke sjekker hvor mye brukeren er å sette inn, ikke sant?
Og tanken er med buffer overflow er
de er å sette i langt for mye data for plassen
at du har tildelt for dem, ikke sant?
>> Så hvis du sier, gi meg noen melding, er vi
forutsatt at de kommer til å gi oss en rimelig lengde melding.
Kanskje et par linjer, whatnot.
Så vi ikke merker.
I stedet de mate oss i en hele boken som er en melding,
og det flyter over mengden plass som vi har satt av til dette.
Og det som skjer er det kanskje overskrive steder som det ikke er ment.
>> Så jeg vet Professor Malan sa noe om buffer overflow angrep.
Så det er der brukeren vil inngang noen massiv mengde data i håp
at han overskriver tidligere slutten av buffer
og erstatter something-- jeg lurer på Jeg vi har disse lysbildene i her.
Jeg tror ikke vi har disse lysbildene i her.
Men i utgangspunktet han overskriver noen del av minnet
som gir ham tilgang til deler av datamaskinen
at du ikke ville normalt har tilgang til.
>> Største ting med buffer overflow er bare
å forstå at det skjer når du ikke er
sjekke hvor mye din brukeren er å sette inn.
Når du ikke er typen sikring mot det.
Og på sitt enkleste ting, det er bare din bruker
legge inn en massiv mengde av dataene i et forsøk
å overskrive noen sikkerhet del av minnet ditt.
Det er alt det er.
>> Så dette her, stable og heap.
I utgangspunktet alt dette er bare en representasjon av minne
og hvor ting er lagret.
Det er virkelig slags alt du trenger å vite.
De største tingene som du trenger å vite er
at-- la meg se om det er en better-- her.
Så dette er stabelen her.
>> Så stack har å gjøre med alle dine funksjoner
at du ringer til enhver tid.
Og det som er viktig å huske kommer ut av forrige uke med malloc
er at du ikke egentlig har nødvendig kontroll over det.
Det hele kommer an på når visse funksjonene er utførende.
Og når de utfører, de har det som kalles stack rammer
som går opp her.
>> Så det alle slags skjer uten noen reell innspill fra deg.
Du skriver programmet, og du lar den løpe,
og stabelen tar slags vare på seg selv som det må.
Så hvis du er i hoved du ringer kube, som vil bli gått opp her.
Det vil skape en ramme.
Men det er ingenting du eksplisitt gjøre å skape den stabelen ramme enn
skrive funksjonen til å begynne med, OK?
>> Hva er slags under kontrollen er haugen med malloc.
Så når du malloc noe, du tar minne fra haugen.
Og det er minne som du har, i mangel av et bedre ord,
eksplisitt kontroll over, fordi huske med malloc
det er i utgangspunktet det før du sier noe annet.
For de av dere som så delen i forrige uke,
det er der før du forteller det til å gå unna.
Det vil være det med mindre ellers fortalte ikke.
Så haugen er bare noe du kan tenke på som minne
at du har kontroll over.
Og de er bare to forskjellige store ting.
>> Annet enn det, bør du ikke ha å bekymre deg for mye om stack og heap
spørsmål eller vanligvis mer rettferdig hvis du har lokale parametere
eller en funksjon ville det være på stakken eller heap.
Tydeligvis i dette tilfellet det ville være stabelen.
Hvis du mallocing noe, Hvor er den fra?
Haugen.
Hvis du ser på praktiske tester, de er generelt den type spørsmål
at de har.
>> Du trenger ikke å bekymre deg for mye om det.
Du får inn mer eksplisitt om stack og heap
senere eller i andre CS klasser.
Så bare å ha en slags generell ide om hva dette er
vil være bra, som jeg bare slags gikk over.
Eventuelle andre emner?
Ja?
>> PUBLIKUM: Kan du gå over pekere igjen veldig raskt?
ALLISON BUCHHOLTZ-AU: Pekere?
Ønsker du konseptuell oversikt over pekere
eller praktiserer du med pekere?
PUBLIKUM: Type som syntaks.
ALLISON BUCHHOLTZ-AU: Syntaksen?
Yeah.
OK, vi får der.
Ja, så dette er bare slags noe når du har en rekursiv funksjon,
hver gang det rekursive funksjonen heter, bare legger det andre stack ramme.
Ganske mye et eksempel på hvordan du egentlig ikke
ha kontroll over rammer på din stack.
>> OK, pekere.
All right, så skaper pekere.
Husk, det er bare å skrive stjerne.
Så uansett hva slags data som du kommer til å peke mot.
Så dette ville være en peker til en int.
Dette ville være en peker til en char.
Dette ville være en peker til en flottør.
Så det er i utgangspunktet uansett du vil den skal peke mot,
star er hvordan du deklarerer pekeren, OK?
>> Men så åpenbart blir litt vanskelig når du har pekeren
eller du har stjerne uansett.
Så den store forskjellen er når du declaring--
så vi har some-- så Dette tar litt int stjerne.
Så dette er noen pekeren kaller x til en int, ikke sant?
Så husk hva dette betyr Dette kaller systemet x.
Og dette kommer til å har noen adresse, ikke sant?
Så la oss bare si at dette er vår adresse.
Pekere hold adresser.
Så hva dette sier er at på dette plassering, er vi lagrer en int.
>> Så en annen måte vi kan tenke på dette er at dette er noen int.
Vi har egentlig ikke tildelt den til noe ennå, men det er bare en int.
Så vi kan gjøre er hvis vi Star x tilsvarer fem, dette blir en fem, OK?
Dette sier gå til hva x er peker på, så gå til denne adressen
og gjøre den lik 5.
Så vi tildele 5 til denne adressen, ikke sant?
>> Og så hvis du gjør dette, dette gir oss adressen til.
Dette er adressen til operatøren.
Så hva er adressen til x?
Vi vet ikke.
Vi har ikke gitt den en adresse.
Vi kan si det er some-- nå vi ga det en adresse, så adressen er fire.
Og faktisk hvis vi går gjennom noe som dette, slag av hva vi gjorde.
Så arbeider gjennom her-- jeg finner det hjelper hvis du trekke ut pekere.
Hvis du er på eksamen, jeg anbefaler å tegne bokser.
>> Så dette første, lik int x 5.
Dette betyr bare vi har noen plasser i minnet som er fem, ikke sant?
Og bordet vårt her forteller oss at det er ved adresse 0x04.
Og så skaper vi noen pekeren.
Så la oss bryte dette ned en av gangen.
Så dette skaper noen boksen til en int, ikke sant?
Det kommer til å holde noen adressen til en det.
Så dette er noen pekeren.
Og dette kritt er virkelig liten.
Så vi har litt pekeren her.
Og bordet vårt forteller oss som er adressen er 0x08.
Cool.
Og vi tilordner den til adressen av x.
>> Husk, pekere holder adresser, OK?
Så hvis vi ønsker å holde x, har vi å bruke adressen operatøren, som
er tegnet, for å få adressen av x, som i dette tilfelle, 0x04.
Og så hvis vi har noen int kopi, dette bare
skaper en annen boks som har en int kalt kopi.
Og hvis vi tilordne den til dette-- så dette er å registrere det.
Så det står gå til uansett adressepeker holder.
Pointer holder denne adressen, så vi vil gå over her,
og vi sier, OK, hva er det?
Det er fem.
Så kopien blir fem.
Fornuftig?
>> Hva hvis jeg prøvde å tildele dette å bare pekeren.
Hva gjør pekeren faktisk like?
Det ville bare være hva pekeren inneholder, ikke sant?
Og hva hvis jeg gjorde dette?
Hva ville kopiere være nå?
>> PUBLIKUM: 0x08.
ALLISON BUCHHOLTZ-AU: Jepp, Adressen vår pekeren.
Noen del av det som trenger å bli re-forklart?
Cool.
Det er definitivt en meget moro problem på quiz en
at vi kan over at gir deg mer praksis.
Gutta fra forrige uke kan fortelle deg det var ikke så ille.
Vi fikk gjennom en hel diagrammet, og alle gjorde stor.
>> OK, så det er oversikt av syntaksen pekere.
Største ting er å forstå hvordan å lage dem, gjør refererer,
og adresse, OK?
Cool.
Eventuelle andre emner før vi dykker i praksis.
Også hvis vi går gjennom praksis problemer
og det er noe du vil ha en oppfriskning på, kan vi gjøre det også.
Har du noe?
>> PUBLIKUM: Structs og koblede lister.
ALLISON BUCHHOLTZ-AU: Structs og knyttet lister, OK.
Så structs.
Vi har faktisk går i løpet av denne i kveld også.
OK, så structs.
Structs er i utgangspunktet bare en måte for deg å holde
flere verdier av forskjellige typer.
Så med en matrise vi er innsnevret til en datatype.
Vårt utvalg har enten å bare være tall, eller bare være tegn, eller bare være flyter.
>> Men kanskje du trenger å inneholder mer enn det.
Kanskje du trenger å hold-- hvis du snakker om en student,
du kommer til å ha huset deres, deres ID-nummer, alder, hvor de bor,
ikke sant?
Og alle av dem er forskjellige slags typer.
Så du kan ikke lagre de alt i en matrise.
>> Så hva du kan gjøre er at du kan opprette en struct, som
du kan tenke på som din egen personlige datatype.
Så i stedet for bare å ha ints og i stedet for bare å ha flottører,
du kan ha en type student som har alle disse feltene i den.
Så måten vi initial våre structs er-- faktisk
siden min skriving er forferdelig, vi kommer til å gå over til å skrive.
Woo.
>> OK, så hvis vi ønsker å skape en struct-- Jeg skal bare det ned her.
Se bort fra den i hoved uansett som vi vil bruke senere.
Så på den måten du ønsker å gjøre det er med typedef struct.
Og la oss bare kalle dette student fordi det er det jeg bruker.
OK, så typedef betyr at du er å definere en ny type, OK?
Det er nyanser inn i når du gjør bare en struct versus en typedef struct.
For alle praktiske og formål, dere er bare
kommer til å anta at de er omtrent den samme og bare
bruke typedef struct for nå.
Det vil bli mye mer tydelig i din neste P satt hva disse forskjellene er,
men jeg tror ikke du trenger å bekymre deg for det akkurat nå.
Jeg ville mye heller du vet hvordan å lage et,
tilgang til den, og tildele [? verdi. ?]
>> En ny type struct, og Vi kaller det student.
Så etter at vi er ferdig med å lage denne, for alle praktiske formål,
vil du ha en type som kalles student.
Og du kan tenke på det bare som en type som en int, eller en dupp, eller en røye.
Det er bare en annen type, OK?
>> Så i denne, hva har vi?
Vi har kanskje et navn.
Så kanskje vi vil ha et strengnavn.
Og vi har kanskje en int som er en ID.
Og vi har en annen i det er telefonnummeret.
Og vi har some-- la oss se.
Hva annet kan vi ha?
Vi vil ha litt streng på huset hans.
Alle ting som en student har.
>> Så dette skaper en struct nå.
Så hvordan kan vi skape en student?
Hvis vi har litt variabel som er skal snakke om Walker her,
så vi have-- vi er bare kommer til å kalle dette rullator.
Han trenger en type.
Hva er din type?
PUBLIKUM: Student.
ALLISON BUCHHOLTZ-AU: Student.
Så dette skaper bare et objekt du kan tenke på som har alle disse tingene.
Du nettopp opprettet en walker student.
Så nå må vi være i stand å tildele alle disse, ikke sant?
Så er det noen som husker hvordan vi tilgang i løpet av en struct?
PUBLIKUM: Periode.
ALLISON BUCHHOLTZ-AU: Periode Nettopp.
Så hvis vi ønsket å tildele ham et navn, kan vi gjøre det.
Selvfølgelig ville dette be-- denne delen her ville
være innenfor hoved, så faktisk la meg gjøre dette.
Erklære dette ovenfor hoved så at vi kan bruke det innenfor hoved.
Så nå vil jeg at den skal gjøre ID, og vi må bare gjøre noe der,
og så får vi tildele et hus.
Bam.
Cool.
>> Så nå bør vi trenger å få tilgang noe senere on-- kanskje we--
hvis vi noen gang trenger å få tilgang til noe, la oss bare gjøre en int kopi ID.
Og jeg ønsker å kopiere Rullator ID inn i dette.
Hvordan kan jeg gjøre det?
Du trenger tilgang i rullator konstruere til [? gå til det?] [? E?].
Og på samme måte som vi tildelt den opp her, hvordan
kan vi få tilgang til det når vi ønsker å gi denne verdien til noe annet?
PUBLIKUM: Walker.id.
ALLISON BUCHHOLTZ-AU: Ja, akkurat.
Så det er ganske mye alt du trenger å vite for structs.
Du trenger bare å tenke på dem som en annen variabel.
I utgangspunktet en lage din egen variabeltype, OK?
Du bruker den til å erklære variabler på noen måte.
Her rullator er fortsatt en variabel.
Den har bare en type student nå i stedet av en type int, eller en type streng,
eller en type røye.
Hvis det var en enkel måte å snakke om structs, er det bokstavelig talt bare en
lage din egen datatype som lar deg gruppere
alle disse forskjellige slags data sammen.
Betyr det fornuftig?
OK.
Det og få tilgang med prikker.
Stort sett alt du trenger.
>> OK, hvor ble min PowerPoint reise?
Her er det.
Vel, dette er merkelig.
Aha.
OK, kult.
Eventuelle andre ting eller gjør vi ønsker å hodet til praksis?
Praksis?
OK.
Awesome.
Jeg kommer til å gå ut av dette.
Hvis du på noe tidspunkt under praksis spørsmål,
Jeg er glad for å revolusjonere og gå gjennom ting.
Så jeg har quiz null her oppe.
Hvis dere ønsker å trekke den opp på datamaskinen din,
akkurat som tar fem minutter å bla gjennom.
Kanskje velger noen topp spørsmål du ønsker å gå over.
Hvis dere ikke kan bestemme, vil vi bare sakte begynne å jobbe gjennom dem,
men jeg er sikker på at det kommer til å være noen spørsmål som du er spesielt
ivrig etter å snakke om, og har meg arbeide gjennom med dere alle.
Så bare gå videre og ta fem minutter.
Bla gjennom.
Og dette er quizen fra 2013.
>> PUBLIKUM: Zero?
>> ALLISON BUCHHOLTZ-AU: Ja, quiz null.
Vi gjør ikke quiz én ting.
Vi vil gjøre det i et par uker.
Også for de av dere som kom sent, har vi godteri,
så gjør dere vil ha godteri?
>> PUBLIKUM: Sure.
>> ALLISON BUCHHOLTZ-AU: Jeg er bare kommer til å passere rundt.
Hei, hvis dere får her tidlig, får du mer godteri.
Det er greit.
Ben, vil du godteri?
Du ønsker noen av disse?
Det er også Snickers hvis noen ønsker Snickers.
Jeg lar dem her og her.
Føl deg fri.
Du vil ha lenger trenger?
PUBLIKUM: All innstilt.
Takk.
>> ALLISON BUCHHOLTZ-AU: Og jeg hadde en fin liten haug der i begynnelsen.
Dere kommer til å ta quizen og Jeg kommer til å ha en quiz gradering fest.
Det er kaos.
900 eksamener.
Det kommer til å bli så gøy.
Kommer til å være stor.
Jeg er ganske sikker på at det er en av de største ansatte bonding
nettene i året.
Har noen gjort quiz null fra i fjor, men ut av nysgjerrighet?
>> PUBLIKUM: Deler av det.
>> ALLISON BUCHHOLTZ-AU: Deler av det, OK.
Visste du har spørsmål om noen av dem?
PUBLIKUM: Jeg har allerede gikk til kontortiden.
Takk skjønt.
ALLISON BUCHHOLTZ-AU: Vel, forhåpentligvis det er fortsatt slags nyttig.
Når gikk du kontortid for det?
PUBLIKUM: Min TF hadde dem i ettermiddag.
ALLISON BUCHHOLTZ-AU: Oh.
Hvem er din TF?
PUBLIKUM: Fred [? Wujaya?].
ALLISON BUCHHOLTZ-AU: Det er så mange TFS.
Så mange.
OK.
Alle som har noen å starte som jeg kan notere ned at vi ønsker å jobbe med?
Jeg antar pekere en med bordet.
Gå for det.
>> PUBLIKUM: Kanskje bryteren én.
ALLISON BUCHHOLTZ-AU: Så nummer 12?
Jeg antar nummer 8 og 9 er sannsynligvis ens folk ønsker å gå over.
>> PUBLIKUM: Og 10 og 11.
>> ZAMYLA Chan: Og dere vet du får en side med notater, ikke sant?
>> PUBLIKUM: Ja, så hva er vi lov til å sette på det.
>> ALLISON BUCHHOLTZ-AU: Du har lov å sette alt du vil.
Og det kan skrives.
Så vidt jeg husker, ble vår skrevet.
>> PUBLIKUM: Du kan gjøre tilbake og begge sider?
>> ALLISON BUCHHOLTZ-AU: Ja, begge sider.
Så noe sånt haugen og [? back end?] haug, løpe
ganger.
Nyttig.
Kanskje små tingene om pekere for å minne deg.
Syntaks for ting.
Å ha akkurat som et skjelett programmet kan være super nyttig.
Jeg vet at jeg alltid har glemt nøyaktig hva Jeg skulle til å skrive for int main,
fordi jeg alltid bare kopiere lim fra min tidligere P sett
eller er det allerede der, så Jeg har aldri egentlig skrev det,
så har som kan være super nyttig.
>> OK, så hvorfor gjør vi ikke starte med nummer 8 da?
OK.
Så vurdere programmet nedenfor.
Så åpenbart når vi ser pekere, er det sannsynligvis
en god idé å begynne å tegne, ikke sant?
Jeg vil vite hvor alle mine store biter av kritt gikk.
Dette er litt irriterende.
>> Så vi har her noen swap-funksjon som kommer til å ta i to pekere.
Så i dette tilfelle de bør faktisk være å bytte
ting versus vår opprinnelige swap funksjon som bare tok på kopier.
Så hva det kommer til å gjøre er-- la oss starte med hoved,
fordi det er der en er.
>> Så vi har noen int x 1.
Vi har noen y som er lik 2.
Og så har vi noen swap som kommer til å ta dem.
Og la oss se hva har vi her.
Og i vår table-- oh boy.
Hvordan skal jeg gjøre dette?
Jeg kommer til å trekke mitt bord over her.
Knapt å gjøre det der.
Knapt å gjøre det.
1, 2, 3, 4, 5, 6, 7.
Og de gir oss at 1 er 1, og en 2.
Cool.
Awesome.
Så tre.
Og det er [? en 1.?]
>> OK.
Og deretter adressen av x er 0x123.
Og y er Ox127.
Cool.
OK.
Jeg ønsker dere jobbe med dette for bare like-- arbeid på den
med menneskene rundt deg.
Jeg skulle ønske jeg hadde sagt at mens jeg var å sette opp.
Arbeide med den.
Prøve og jobbe med det etter selv for et par minutter,
og da vil jeg jobbe med den med deg.
Fordi den eneste måten du virkelig kommer til å lære er ved å gjøre det selv.
Ingen grunn til bekymring.
Lykke til.
>> OK, hvorfor gjør ikke vi sakte begynne å jobbe gjennom dette.
Slik at alle får etter linje en, er x 1.
Etter linje to, x og y er 1 og 2, ikke sant?
Cool.
Så linje tre er der ting bli interessant selvfølgelig.
>> Så det vi har gjort her er vi nå har byttet.
Vi sier at x og y har disse punktene, eller de har adressen av x og y,
ikke sant?
Så i dette tilfelle tre, hva som er verdien av et?
en hadde blitt vedtatt i, har fått verdien av adressen av x, rett?
>> PUBLIKUM: 1?
>> ALLISON BUCHHOLTZ-AU: Så vi legge den til x?
Hva er x adresse?
>> PUBLIKUM: 0x123.
>> ALLISON BUCHHOLTZ-AU: Nettopp.
Men hva er en faktisk peker til?
Hvis vi skulle dereference en, hva verdien ville det gi oss.
PUBLIKUM: 1.
ALLISON BUCHHOLTZ-AU: Det ville gi oss en, fordi det
vi sier er å gå til dette adresse, fortell oss hva verdien er.
Så hva ville bli a?
>> PUBLIKUM: 0x127.
ALLISON BUCHHOLTZ-AU: Nettopp.
Så det er adressen til y.
Og så hva [? dereferanse? ?]
PUBLIKUM: 2.
ALLISON BUCHHOLTZ-AU: OK, så nå fire.
Vi sa en er equal-- vel nå vi har gjort int temp er lik stjernen i en.
Så hvilke endringer?
Det er bare én ting som endres her.
Hva er det?
>> PUBLIKUM: Temp.
ALLISON BUCHHOLTZ-AU: Temp.
Så vi kan skrive om alle disse.
En god strategi for disse er bare å finne ut
hvilke endringer, fordi oftest det er bare en ting som er
kommer til å endre på et gitt tidspunkt, OK?
Så vi har tildelt temp.
>> Nå er vår neste punkt, fem, vi har gjort stjerne en lik stjerne b.
Så hvilke endringer nå?
>> PUBLIKUM: star en.
>> ALLISON BUCHHOLTZ-AU: star en, så alt annet forblir den samme.
Og hva betyr stjerne et lik?
>> PUBLIKUM: 2.
ALLISON BUCHHOLTZ-AU: 2.
Lovely.
Awesome.
OK, og nå har vi start b er lik temp.
Så det eneste endring er stjerne b.
Alt annet forblir den samme.
Og hva er stjerne b lik nå?
Og du har fullført bordet.
Fordi nå på slutten, hvis vi sier x og y, vet vi at på dette point--
vi vet at når vi endret stjerne en til to,
hva som gjorde det sa OK, på adressere 0x123 her, endre det.
Nå var dette to.
Og deretter ved dette punktet, vi sa OK, gå til star b.
Så gå til den adressen 0x127 og gjøre det en 1.
Så nå helt til slutt når vi faktisk tilbake for main,
vi har faktisk at x er lik 2 og y er lik 1.
Alle bra med det?
OK, kult.
Nummer 9.
Dere jobbe med dette.
Jeg kommer til å sette opp et bord slik at vi kan trekke gjennom den.
Det vil være en eksplosjon.
De store tabeller kan være virkelig skremmende, jeg vet.
Men hvis du bare ta dem én rad en gang, de får mye mindre skummelt.
OK.
>> Så du vet at dette vil ha gått gjennom hoved først, ikke sant?
Initialiserer x og y og prøver da å bytte dem.
Så selv swap er over, reelle måten det går er at vi går gjennom hoved,
og så er det ringer opp for å bytte, all right?
Slik at alle vet det.
>> Så hvilken gjør du Gutta ønsker å starte med?
Er noen helt sikker om en av disse?
Eller enda delvis sikker?
Hvorfor får vi ikke starte med x?
Hva gjør vi tror x er?
>> PUBLIKUM: 1.
ALLISON BUCHHOLTZ-AU: 1.
Så hvorfor er 2.
Og det er fordi store skillet her
er at vi er bare passerer eksemplarer i, ikke sant?
Vi er ikke bestått ved referanse.
Så selv ved slutten av dette programmet x og y
har forblitt det samme, fordi de er bare kopierer i swap-funksjonen.
De gjør faktisk ikke endre, ikke sant?
>> Så hva med a, b, og temp?
>> PUBLIKUM: en er b.
>> ALLISON BUCHHOLTZ-AU: a er f.
Så i dette tilfelle, var en x, som er 1, ikke sant?
Så her, la oss gå gjennom den.
Slik at i begynnelsen, og en b er 1 og 2 og udefinert.
Så opprinnelig temp får tilordnet en, slik temp er 1.
en er lik B, så vi får 2, og b er lik temp.
Nå får vi en.
>> PUBLIKUM: I den forrige det byttet Ampersand x og ampersand y.
Hva betyr det?
ALLISON BUCHHOLTZ-AU: Så det betyr at du er forbi referanse.
Så det betyr at du faktisk bestått i adressene til der
x og y er lagret.
PUBLIKUM: Men du er ikke å bytte adresse.
ALLISON BUCHHOLTZ-AU: Du er ikke bytte adressene.
Du bytte hva som er i dem.
Som hva som er på denne adressen, og det er derfor det fungerer.
Versus i dette programmet her hva du gjør er du oppretter kopier.
Så du har x og y som eksisterer som sine egne variabler her ute.
Men så når du passerer dem inn swap, er det
som om du oppretter hele denne andre settet.
Så du er faktisk aldri rørende x og y.
>> PUBLIKUM: Hvis tegnet x er hva som står på adressen til x, hva ville stjerne x være?
>> ALLISON BUCHHOLTZ-AU: Ampersand x er hva som står på adressen til x, og deretter star-- godt,
i dette tilfelle, er X ikke en peker.
PUBLIKUM: Oh, OK.
Så du bare gjøre dette fordi det er ikke en peker.
ALLISON BUCHHOLTZ-AU: Høyre.
Du kan bare gjøre stjernen noe som er en peker.
Kanskje du kunne gjøre det til ting som ikke er det, men kompilere at du
gjøre det gale ting ville skje.
Og jeg er ikke akkurat sikker på hva som ville skje.
Du kan alltid ta Adressen til noe,
men du kan ikke dereferanse noe som ikke er en peker.
Hvis det er fornuftig, det er et godt skille å ha.
>> Så ikke så ille, ikke sant?
Bordene er forhåpentligvis får litt mindre skummelt.
OK.
Ah, de morsomme de.
Så nå, skrive din egen kode.
Så jeg kommer til å la dere jobbe på dette i ca fire minutter,
og så kan vi snakke om måter å nærme seg den.
Føl deg fri til å snakke med folk rundt deg.
Også dette er interessant.
Det er som en alle jenter § akkurat nå.
Ganske spennende.
Med unntak av Chang.
Men Chang er virkelig ikke en del av seksjonen.
Awesome.
Perfect.
Så vil jeg gi deg et par hint.
I det tilfelle hvor man har mer enn ett tegn, der
du har noe annet som 123 eller 1000 noe,
du må være i stand til å sløyfe gjennom og konvertere hvert av dem.
Så det er et par måter du kan gjøre det,
men du er definitivt kommer til å ha en for løkke eller annet sted i det å sløyfe
gjennom dem, noe som gjør typen som giveaway
med selv om du kaller strlen, som er typen som oh
kanskje du vil bruke lengden av strengen på en eller annen måte.
>> OK.
Så hva tror dere kan være en av de første tingene vi ønsker å gjøre?
Det er et par saker i her vi trenger å ta hensyn til, ikke sant?
Enten vi har noe som er null.
Hva har vi?
Bokser.
Null.
Vi har det slik at det har noe annet enn 09, ikke sant?
Så la oss si det har bokstaver.
Eller har vi saken som er gyldig.
Tre tilfeller å tenke på.
Så hvilken tror du kan være den enkleste å ta vare på først?
PUBLIKUM: Null.
ALLISON BUCHHOLTZ-AU: Saken er null.
Så hva skulle vi gjøre det?
PUBLIKUM: [uhørlig].
ALLISON BUCHHOLTZ-AU: Yeah.
Og hva ønsker jeg å gjøre?
>> PUBLIKUM: Return 0.
>> ALLISON BUCHHOLTZ-AU: Nettopp.
Awesome.
OK.
Så nå slik at den har bokstaver og saken at det er gyldig.
Vi kan faktisk ta vare av dette innen en loop, OK?
Så en måte å gjøre it-- hva som kan være en enkel måte å sjekke om det er gyldig.
Vi måtte gå gjennom hver bokstav og gjøre hva?
>> PUBLIKUM: Sjekk om det er in--
>> ALLISON BUCHHOLTZ-AU: Høyre, kan du sjekke hvis det er mellom 0 og 9, ikke sant?
Og deretter i tilfellet at det er gyldig, er vi
kommer til å ende opp itera gjennom vår streng anyways, ikke sant?
Så hvorfor ikke vi prøve og kombinere dem til ett.
Vi kommer til å iterere ut gjennom strengen, og som vi
gjøre det, skal vi først gjøre en sjekk for å se om det brevet
eller hvis det tegnet er gyldig.
Hvis det er, kommer vi til å utføre operasjon som vi trenger å konvertere den.
Ellers vil den returnere 0, ikke sant?
>> Så før vi gjør det, vi sannsynligvis vil ha litt variabel
at vi kan gå tilbake på slutten som kommer til å være vår faktiske verdien.
Så vi kommer til å initialisere noen verdi å være 0.
Og det er bare hvordan vi starter.
Så jeg kommer til å bli kvitt dette.
Så hvordan skal vi iterere gjennom denne strengen.
PUBLIKUM: For loop.
ALLISON BUCHHOLTZ-AU: A for loop.
Så hva er vår for?
>> PUBLIKUM: Jeg er 0.
ALLISON BUCHHOLTZ-AU: Mm-hm.
Og hva er vi itera før?
>> PUBLIKUM: str lengde på s.
>> ALLISON BUCHHOLTZ-AU: OK, nå husker det er en bedre måte. [Uhørbart].
>> PUBLIKUM: Ja, vi kan gjøre n er lik.
ALLISON BUCHHOLTZ-AU: Nettopp.
>> PUBLIKUM: Jeg er mindre enn n.
ALLISON BUCHHOLTZ-AU: Og hvorfor ville vi ønsker å gjøre det?
Husker du den grunn trenger?
PUBLIKUM: Vi må beregnes på nytt.
ALLISON BUCHHOLTZ-AU: Becasue denne måten bare må beregne StrLen gang.
Hvis du gjør jeg er mindre enn strlen s, det betyr at det rekalkulerer
lengden hver gang du kjører for loop,
som ikke er en stor kostnad av energi, er, men det
bedre praksis for å prøve og gjøre ting som det en gang.
Med mindre kanskje du har en gal streng som forandrer seg ved hver iterasjon.
Men hvis det er bor det samme, lagre det.
OK.
Og så jeg pluss pluss.
Awesome.
Vi er på vei.
PUBLIKUM: Virkelig raskt.
Først, så la oss si at vi bare gjorde jeg mindre enn strlen av s,
de er gradering oss på design i det hele tatt eller bare korrekthet?
De er ikke det.
Vi er gradering på riktig for spørrekonkurranser så vidt jeg vet.
Jeg kan ikke foreta en full på garanti, men for det meste,
aller fleste er nøyaktighet, fordi du er under mye tidsbegrensning.
Design vanligvis betyr du har tid til å tenke
om elegansen til din situasjon.
>> OK, så vi er itera gjennom.
Så vi må enten sjekke for å se om dette tegnet er gyldig
eller om vi kan utføre vår normal [? en til jeg?] -funksjonen.
Vi kan bekymre deg for hva som er i et sekund.
Så hvorfor ikke vi take-- hvis noen kan tenke
om en måte å sjekke for å se om dette er gyldig.
Vi vet at det kommer til å være noen hvis tilstanden, ikke sant?
Og husk at dette er i ASCII, så hvordan makt
vi se om det ikke er 0,1, 2, 3, 4, 5, 6, 7, 8, eller 9.
PUBLIKUM: Dersom alpha.
>> ALLISON BUCHHOLTZ-AU: Så hvis alpha ville bare la oss få vite om det er en bokstav.
Og hvis de gir oss et symbol, er det fortsatt ikke helt kommer til å sjekke.
Så hvis du trekker opp ASCII bord, vi vet at 0 til 9
er i ett segment.
Fortell meg tallene at de tilsvare hvis mulig.
PUBLIKUM: 40.
>> ALLISON BUCHHOLTZ-AU: Så utvalget er som 40--
PUBLIKUM: Kanskje.
48-57.
Jeg er ikke sikker.
>> ALLISON BUCHHOLTZ-AU: 40-57?
>> PUBLIKUM: 48, tror jeg.
ALLISON BUCHHOLTZ-AU: 48-57.
Så vi vet at de som ASCII symbols-- hvis ASCII-verdien ikke er
mellom 48 og 57, det er ikke gyldig, ikke sant?
Så kan vi bruke det til vår fordel muligens?
Hvordan skal vi få dette brevet, først av?
Hvordan skal vi få tilgang dette dette tegnet?
>> PUBLIKUM: s braketten i.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Fordi vi kan tenke på strenger som arrays, huske.
Så hva gjør vi ønsker å si?
Vi ønsker å si om dette er-- Jeg skal gi deg et hint.
Det er en mindre enn.
Hva skal du tror det må være mindre enn?
PUBLIKUM: 57?
>> ALLISON BUCHHOLTZ-AU: 47, ikke sant?
Men det representerer også at når du en 0 i single [? eiker?], fordi det er
karakteren 0.
Du kan også sette 47.
Å ha ASCII-tabellen, som du ser, er bare noe
du bør ha på quiz ark.
>> Så hvis dette er tilfelle, hvis det er en mindre enn 0-- ikke nødvendigvis og.
Det er bare enten kommer til å være mindre enn eller større enn 9.
Så kan du fylle ut dette siste for meg?
Så eller s av i er hva, Rhea?
>> PUBLIKUM: Større enn ni.
>> ALLISON BUCHHOLTZ-AU: There.
Betyr det fornuftig å alle, hvordan vi kom dit?
Disse problemene, de er som når du se løsningene, det er som oh, OK.
Og dette er grunnen til at praksis vil hjelpe deg.
OK, så vi kommer tilbake 0.
Lovely.
OK.
Ellers hva vi ønsker å gjøre?
Dette er den interessante delen der det er litt mer
som matematikk versus CS etter min mening.
Er det noen som har en idé av hvordan vi kan gjøre dette?
Så det viktigste å realisere er det første tegnet
vi tar kommer til å være høyeste orden sifret, ikke sant?
Så hvis vi ser på konvertering 123, første gang vi iterere
er tenkt å være en, men vi trenger at for å være 100 innen utgangen, ikke sant?
Så en ting du kan gjøre er at med hver påfølgende siffer
du tar, du multiplisere verdien med 10, slik at innen den tid kommer du til enden,
alt har vært forskjøvet oppover, ikke sant?
>> Så det første gang du kjører det, har du en som din verdi.
Andre gang du kjører den, du doble verdien med 10.
Det vil oppdatere den slik at det er nå 10, og du legger på din neste verdi.
Og så du multipliserer det med 10 og legge på din neste verdi.
Og dette er grunnen til at de sier dette er mye mer som testing
en matte algoritme versus CS, men jeg komme bort fra emnet.
Jeg skriver ikke quizer.
>> Så en ting vi kan gjøre er at vi si verdi ganger tilsvarer 10.
Så dette kommer til å skifte din sifret gang hver gang.
Og da har vi bare ønsker å legge til.
Vi ønsker å legge i det vi nettopp fikk, ikke sant?
Så hvordan gjør vi faktisk konvertere vår ASCII-tegn i antall
at det representerer?
>> Så vi vet at 0 er lik 47, ikke sant?
Så hvis 0 er 47, hva ville vi må gjøre for å det
å faktisk gjøre det være en int fra 0?
>> PUBLIKUM: Det er 48.
ALLISON BUCHHOLTZ-AU: 48?
Unnskyld.
Vi vil trekke fra 48, ikke sant?
Husk ASCII matte?
Vi kan behandle dem bare som normale tall.
Hvis du behandler dem som tall, de blir tallene effektivt.
Så hvis vi har s of i, som lar sin si i dette tilfellet er lik 0.
Så s av jeg i dette tilfellet ville være ASCII--
ASCII int for det ville være 47.
Så vi kan subtract-- eller 48.
Du kan gjøre det, er én måte.
Er det noen som vet om et bedre måten vi kunne gjøre 48?
Vi sa bare 0 er-- gå inn ASCII du kunne gjøre quote 0.
Så gjør det slags gjøre forstand hvordan dette fungerer?
>> PUBLIKUM: På dette punktet, er verdien 0 fordi selv om du ganger det med 10,
du starter opp med null, så bør det være slått?
>> ALLISON BUCHHOLTZ-AU: Så i dette tilfellet, du ønsker å mangedoble det før du legger til,
fordi i dette tilfellet, ja, det ville fortsatt be-- min pekeren mangler.
Verdien i dette tilfelle den første gang vi kjører det vil være null.
Så du bare legge på det første sifferet.
Det viktigste er neste gang du iterere, du ønsker å skifte den opp
før du legger din neste sifferet på.
Betyr det avklare for deg?
OK.
>> Noen ganger kommer du til å få rare flere MATHY ting.
Hvis du styrte dette, er du fortsatt kommer
å get-- du kommer til å gjøre det ganske bra.
Delvis kreditt er en meget store ting på CS50 quizer.
Så skriv det du vet.
Hvis du fikk alt bortsett fra her, er du
fortsatt kommer til å gjøre virkelig godt problemet.
Fordi du viser, OK, jeg vet nesten.
Jeg vet at jeg trenger å iterere gjennom.
Jeg vet hva jeg må se etter.
Jeg gjør bare ikke helt få hvordan du konverterer den.
Du kommer til å være OK.
Ja, du kommer til å mister et par punkter,
men du fortsatt kommer til å få en god del poeng for noe
sånn hvis du er mangler disse to linjene.
Jeg ville være som OK, denne personen vet hva de gjør.
Matematikk er vanskelig.
Så jeg vil si at du vil være i orden.
>> OK, så dere er klare til å prøv strlen med pekere nå
at dere er peker mestere?
Så jeg skal la dere jobbe på at for en liten bit.
Hvis noen trenger en oppfriskning.
Så du ønsker å bruke pekeren aritmetikk, og hvis s er null,
implementeringen skal returnere 0.
Ting som dette som gjør deg veldig fornøyd med å bare kalle strlen
på slutten av dagen.
Jeg tror dette kan være litt enklere enn den siste, som
er god.
Jeg skal gi dere en annen minutt, og så får vi jobbe gjennom det.
Og så vi kommer til å gå til brytere.
>> OK, ferdig gutta?
Kanskje litt.
Så jeg har gitt deg din to alternativer, ikke sant?
Enten sjekke for null og returnere 0 hvis det er, eller faktisk beregne lengden.
Så som ønsker å skrive sjekke for null?
Gå for det.
>> PUBLIKUM: Hvis parentes s lik lik null avkastning 0.
ALLISON BUCHHOLTZ-AU: Lovely.
Jeg elsker når halve problemet ditt er bare å sjekke for null.
Jeg vet med dere sist uke jeg var som sjekk for null
bokstavelig talt hver gang.
OK, so--
>> PUBLIKUM: Hvis return 0 er bare én linje, gjør vi fortsatt trenger krøllete brakett?
>> ALLISON BUCHHOLTZ-AU: Du gjør ikke teknisk trenger dem så lenge du er konsekvent.
Det er god praksis bare å komme i vane
for å bruke klammeparentes, men teknisk nei.
Du trenger ikke dem for én linje.
Vi pleier å anbefale det for folk begynner å program.
>> Så nå hva vi kanskje ønsker å gjøre her?
Så nå vet vi at vår strengen er gyldig.
Vi ønsker å holde beregne lengden.
Hva er trolig den første ting vi ønsker å gjøre?
>> PUBLIKUM: Lag en int det er lengden.
ALLISON BUCHHOLTZ-AU: Nettopp.
PUBLIKUM: Og vi ønsker å sette den til?
ALLISON BUCHHOLTZ-AU: 0.
Perfect.
OK.
Nå hva vil skal gjøre?
Dette er virkelig den største delen av det.
Gå for det.
>> PUBLIKUM: Så du sannsynligvis gjøre en for loop.
Og da siden når du ringer s du er få adressen til den første,
du ville begynne med jeg er lik 0.
Og så så lenge x pluss jeg er ikke tilbake slash 0.
ALLISON BUCHHOLTZ-AU: Den avsluttende null.
PUBLIKUM: Den avsluttende null.
Deretter kan du legge en til lengde.
>> ALLISON BUCHHOLTZ-AU: Yeah.
OK, så kan snu det inn veldig konkret kode.
Men det er den perfekte idé.
Det er akkurat det vi gjør.
Vi kommer til å være itera gjennom med pekeren.
Så det vi ønsker å gjøre er i stedet for en int
her, fordi vi er ikke henvise til en det.
Vi henviser til starten av en string, som begynner å bli noen adresse,
ikke sant?
>> Så vi ønsker en peker.
Så vi kommer til å ha noen char stjerne, fordi det tilsvarer våre s, ikke sant?
Så dette er et tidspunkt vi initialisering til begynnelsen av strengen, OK?
Så la oss bare kalle det jeg.
Hvis det er starten av strengen, hva kommer det til å bli tildelt?
Ikke er 0.
Vi vil at det skal være start av vår streng.
Hva representerer starten på vår streng som ble gitt til oss?
>> PUBLIKUM: Just s.
>> ALLISON BUCHHOLTZ-AU: s.
Så dette skaper noen nye peker som representerer starten på vår streng, OK?
En annen måte å tenke på det er som her er vår rekke.
Det er vår streng, s.
Så la oss si at dette er den Første spot, og dette er 0x4.
04.
Dette er vår s, som holder denne adressen.
Og vi nettopp opprettet en annen en som heter Jeg som bare refererer til det samme.
Så de er begge bare peker til starten av vår streng.
Dette er bare en grafisk representasjon.
>> Så nå hva vi ønsker å gjøre er at vi ønsker å iterere
vår tilstand for itera gjennom vår streng.
Nå handler.
Fikk å handle, folkens.
Er vi ønsker å holde oppdatering før vi når null terminator, ikke sant?
Så hva kan det se ut?
Ønsker vi i, eller ønsker vi stjerners jeg er spørsmålet?
Er null terminator en adresse eller noe som ligger på en adresse?
Ligger på en adresse, ikke sant?
>> Så vi trenger dereference hva er her, fordi dette er bare noen adresse.
Å faktisk komme til start vi trenger å dereference dette
slik at vi faktisk får hva som er i dette utgangspunktet.
Så hvis vi gjør stjerne i, hva Kan vi ikke vil at den skal like?
PUBLIKUM: Tilbake slash?
>> ALLISON BUCHHOLTZ-AU: There.
Betyr det fornuftig for alle?
Vi trenger å gå inn i vårt streng og sørg for at det er ikke slutten.
Og da kan vi bare oppdatere som dette.
Normal oppdatering.
Så så lenge disse er Met, hva trenger vi å gjøre?
>> PUBLIKUM: Lengde pluss pluss.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Og så etter for loop opphører, hva vi ønsker å komme tilbake?
PUBLIKUM: Lengde?
ALLISON BUCHHOLTZ-AU: Lengde.
Der du går.
Tydeligvis kjøtt av denne ene er å forstå dette for loop.
Har alle får hvordan det gikk?
Jeg er glad for å gå over det igjen.
>> PUBLIKUM: Det andre del, så stjernen jeg der,
det er adressen til first--
ALLISON BUCHHOLTZ-AU: Det er ikke adressen.
Det er hva som er på.
PUBLIKUM: Det er faktisk der inne.
ALLISON BUCHHOLTZ-AU: Det er Hva er egentlig det.
Så dette er saying-- la meg gjøre dette bedre.
Så dette er 0x04, og jeg skal bare å si at jeg kommer til å gjøre dette til mitt navn.
OK.
Ja, jeg vet jeg har quiz gjennomgang i kveld.
Masse quiz gjennomgang.
Så la oss si denne strengen er mitt navn, Allison.
Litt rotete, men det er der.
Og s representerer plasseringen hvor strengen begynner,
så jeg kommer til å gjøre dette real-- dette er adressen til en,
der strengen starter, ikke sant?
>> Så det vi gjør her er at vi ønsker å bruker pekere til iterere gjennom.
Så vi lage noen peker, i, som også er lik begynnelsen av strengen.
Og på hvert punkt, vi ønsker å fortsette å gå gjennom rekke
her til vi treffer null terminator.
Så vi ønsker alltid å sjekke hva som er på hver av disse adresser.
>> Så vi Dereference jeg, slik at første gang vi gjør det vi
si, OK, hva som står på adresse 0x04?
Det er en en.
OK, vi er bra.
Tilvekst lengde.
Gå videre til neste.
Så I-- husker pekere økning av Størrelsen på hva de peker til.
Slik at i dette tilfellet, siden det er en røye, vil den oppdatere etter en.
Så nå skal vi se på fem, noe som betyr at det kommer over her.
Så det står OK, gå til 0x05.
Hva er i det?
Det er en l.
Og det vil fortsette med det før den treffer denne.
Og det står OK, hva som er i uansett adresse dette er?
Den avsluttende null, OK.
Exit.
Og bare returnere lengde.
Fordi du trenger det som faktisk er på som adresse, adressen ikke i seg selv.
>> Det er svært få steder hvor du faktisk trenger adressen.
Mesteparten av tiden når du bruker den, og det er
når du er først tildele en peker eller når
du sender den inn i en annen funksjon.
OK, alle bra der?
Slags?
OK.
>> Så det ser ut som vi har fikk ca 12 minutter igjen,
så vi vil gå videre til kanskje vårt siste problem,
og så er det noen konsepter som har kommet opp
i mellomtiden kan vi raskt gå over det.
>> Så bytte tannhjul er den siste problemet her, bytter uttalelser.
Så jobben din er å skrive dette slik at den oppfører seg på samme
men ikke bruke brytere.
Kritt hender.
Så noen spørsmål om dette utenfor balltre?
Ingen?
OK.
Har alle forstår at hvis saken har ikke noe etter det,
det betyr at det skal følg neste steg?
Slik tilfellet 1 og 2 i dette tilfellet gjør akkurat det samme.
Noen ganger et poeng av forvirring.
>> OK.
Alle som har noen ideer?
Yeah?
>> PUBLIKUM: Så du kan bare gjøre hvis uttalelser.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Så hva er vår første?
>> PUBLIKUM: Hvis n er lik lik 1, og de to linjene for eller n er lik
lik 2, deretter skrive ut små.
Og så kan du gjøre annet hvis?
Eller kan du bare gjøre en if?
>> ALLISON BUCHHOLTZ-AU: Du kan gjøre annet hvis?
>> PUBLIKUM: Vil det noen rolle om du gjøre hvis?
ALLISON BUCHHOLTZ-AU: Så det gjør.
Har anyone-- så, du vil få samme effekt
hvis du bruker bare ifs versus hvis du bruker andres ifs.
Kan dere tenke på grunnen hvorfor du kanskje ønsker å bruke en annen
hvis versus mye IFS?
Må med effektivitet.
Yeah?
>> PUBLIKUM: Det ville sjekke alle ifs hver gang.
>> ALLISON BUCHHOLTZ-AU: Så selv om det traff denne første,
det ville gå på sjekk hver andre.
Så du vil bruke if else ifs i tilfeller hvor bare en av dem vil noen gang gjelder.
Så gjensidig utelukkelse er hva vi pleier å si.
Hvis du har en haug med IFS, betyr det som kanskje mer enn én av dem
saker, og kanskje mer enn en av dem kan være sant.
Og du vil ha dem begge å gjennomføre hvis de er sanne.
Hvis du bare vil ha en av dem til å arbeide i disse gjensidig utelukkende tilfeller
du ønsker å bruke annet hvis, fordi det hele har å gjøre med effektivitet.
Koden er bare bedre utformet hvis det fester seg til denne praksisen.
Så i dette tilfellet vil vi ha et annet hvis.
Og dette ville være?
>> PUBLIKUM: n er lik lik 3.
ALLISON BUCHHOLTZ-AU: Perfect.
Print medium.
Og deretter i vår siste tilfelle, hva har vi?
Else eller annet hvis?
PUBLIKUM: Else.
>> ALLISON BUCHHOLTZ-AU: Do vi want-- Du ønsker else if fordi vi har konkrete tilfeller.
Det er ikke slags en fange alle.
Hvis du hadde en standard i en switch-- husker i brytere du kan ha fall
og da har du standard.
Hvis du hadde en standard, er den slags av annet utsagn der.
Men hvis det har bare tilfeller det betyr at du trenger
å sjekke for å se om det er hver av dem.
Så i dette tilfelle, ville det på 4 eller 5.
Vi ønsker en utskrift av.
Det er stort.
Og der du går.
Og det ville være programmet.
>> Så i dette tilfellet hvis vi hadde en standard noe,
Vi ville ha en annet i hva det ville ha oss til å gjøre.
Så det er en god forskjell kjent, å forstå.
Betyr det hjelpe med brytere for deg?
Perfect.
OK.
>> Vi har om lag åtte minutter igjen.
Har dere har noen andre høyt nivå konsepter?
Spørsmål generelt?
Ja?
>> PUBLIKUM: Jeg hadde en Spørsmålet om en av dem
det var om tilfeldig nummer generator på quiz null.
ALLISON BUCHHOLTZ-AU: Å, den.
At man er en annen der det er mer matematikk than-- ja.
Løsningen på at-- selv jeg da Jeg ser det, jeg er som hva er dette.
>> PUBLIKUM: Det var nummer 7.
>> ALLISON BUCHHOLTZ-AU: Det er rart etter min mening.
Så i utgangspunktet du vil å bruke drand48, som
vil gi deg noen tall mellom 0 og 1.
Og du ønsker å bruke det så at du liksom få a--
og det er mye mer av et matematisk problem for meg enn jeg tror en CS problem.
>> Måten du gjør it-- og noen ganger vil det bare være sånn.
Igjen, dette er den tilfeller der det er slag
som å skrive hva du kan og delvis kreditt.
Så hvis vi ønsker en retur, vi vet at vi er
skal bruke drand48 på noen måte, ikke sant?
Så hvorfor ikke vi bare notere det ned.
Vi bruker det på noen måte.
Den måte at de har dere bruker den, er
som dette, som jeg vil prøve og forklare.
>> Så i utgangspunktet hva som skjer her er fordi det er mellom 0 og 1,
hva du gjør er du multiplisere by-- dette er veldig mye en matte spørsmål.
Bare full ansvarsfraskrivelse, er dette helt en matte spørsmål.
Hva du gjør er på grunn av 0 og 1, og du
vil at det skal være innenfor denne serien, du faktisk
finne ut hvor stor området er, og deretter
du i utgangspunktet skalere det opp, som er hva denne gjør.
>> b minus en gir deg den serien, den Forskjellen mellom disse tallene.
Du kan formere seg mellom 0 og 1, og deretter legge til en rettferdig
betyr at skalere det opp slik at det er mellom a og b,
som jeg ikke liker dette problemet.
Som jeg sa, dette quiz er ment å omfatte
folk som er mindre komfortable, sted i mellom,
og mer behagelig.
Så hvis de gjorde det så at det var noe
at alle på mindre behagelig sted ville få,
vi ville ha altfor mange folk scoring perfeksjonerer,
og jo mer komfortabel vil bli lei.
>> Slik at de alltid har disse slags hjernetrim spørsmål
som er ment å være litt vanskeligere som tar litt kreativ tenkning.
Når du ser dem, ikke blir for stumped.
Jeg vil definitivt si flip gjennom quiz først.
Håndtere problemene som du vet du kan,
fordi det nytter ikke å bli sittende fast på et problem når det er tre
eller fire eller fem på siden etter at du enkelt kan gjøre.
>> PUBLIKUM: Hvorfor akkurat gjøre deg multiplisere det med rekkevidde?
>> ALLISON BUCHHOLTZ-AU: Du multipliserer området som du know-- det er som hvor mye etter en
vil du ha?
Så du kan tenke på, fordi det returnerer et tall mellom 0 og 1,
du kan tenke på det som en prosentandel.
Så det er i utgangspunktet si om vi har vår nummer linje her, er en her,
og b er her.
Du er som hvor mye forbi en er det?
Er alt vi gjør.
Så du bare ber om det prosentandelen av dette område, som
er hva det gir deg.
Og så er du i utgangspunktet bare skalere det opp ved å legge en.
Det er en matematisk hjerne teaser.
>> Hvis det var noen siste øyeblikk råd, jeg vil si flip gjennom spørsmålene,
finne ut hvilke du vet at like, oh jeg fikk denne.
Nesten helt sikkert de kommer til å være spørsmål som du ikke vil vite
eller at du kommer til å ha tid for, så treffer dine sterke sider, OK?
Dere kommer til å stor.
Det er mange spørsmål for en grunn,
slik at du har tid til å slags har mulighet
å vise hva du er virkelig god på.
Så det er OK hvis du er ikke god på alt.
Spille på dine sterke sider.
Ja?
>> PUBLIKUM: Så er dette kommer til å tilbake noe som er avkortet?
Ja, det vil, fordi drand avkastning mellom 0 og 1.
Det vil returnere en int, fordi det vil avkorte
når vi legger en eller multiplisere med det.
Cool.
Noen siste minutt spørsmål?
>> Dere kommer til å gjøre stor.
Du kommer til å bli fantastisk.
Og selv om ikke, det vil være godteri her neste uke.
Og jeg kommer til å elske deg.
Jeg vil elske dere uansett.
Greit, alle sammen, lykke til.
Ha en flott tid.
Du kommer til å bli bra.
Og vet du hva?
I to dager kommer det til å være over, mens jeg
har to midterms på torsdag, så minst dere vil bli gjort.
Greit, jeg ser dere neste uke.