ALLISON BUCHHOLTZ-AU: Hey, iedereen.
Welkom op de afdeling.
Vandaag is gewoon om alle quiz zijn herzien voor uw quiz op woensdag.
Ik hoop dat iedereen herinnert zich dat ze hebben een quiz op woensdag.
En als je dat niet deed, nou ja, nu heb herinnerd.
Dus woensdag zorg ervoor dat je komt opdagen voor klasse of andere accommodaties als
noodzakelijk.
Jullie gaan geweldig te zijn.
Het zal geweldig zijn.
En ik ga er alles aan doen te helpen bij de voorbereiding u vandaag voor uw quiz
nu.
En ook in het geval u niet weet, Er is een cursus breed beoordeling sessie
vandaag om 07:00 in Northwest labs kamer B103.
Je kunt me weer te zien voor een toegift als Ik zal een deel van die beoordeling sessie leiden
ook.
Dus als je niet genoeg van me krijgen nu kunt u weer komen vanavond.
>> Oké, dus eerst iets anders.
Slechts enkele quiz tips voordat we eigenlijk duiken naar reviews.
Dus net als bij elk examen, praktijk zal je zeker helpen.
Er zijn onderzoeken uit het verleden zes of zeven jaar van het bestaan,
dus dat is veel oefening materiaal voor jullie te hebben.
En in feite, vandaag is het echt gewoon gaat worden gaan over welke onderwerpen
dat jullie vragen op ook hebben zo werken via de praktijk problemen
vanaf quiz nul.
Dus ik zal overgeven quiz nul van vorig jaar hier,
en we kunnen werken door middel van eventuele problemen dat jullie zouden willen.
>> Dus oefenen.
Je gaat om te beginnen om dat te doen vandaag.
Code op papier.
Dus ja, als iedereen kon eigenlijk uit
papier, dat zal geweldig zijn, omdat je niet
gaat uw computer op het hebben examen en het schrijven van de code door de hand
vaak veel moeilijker dan je zou verwachten.
Je bent gewend om gewoon het zien en te typen,
en je hebt je compiler u te helpen wanneer je fouten hebt,
maar je hoeft niet te krijgen dat op het examen.
Dus het is echt belangrijk om daadwerkelijk in staat de code uit te schrijven,
en die spier geheugen doen het met de hand zal je echt helpen.
>> Dus we krijgen een beetje dicht.
Het is maandag.
Uw examen is op woensdag.
Maar als je tijd hebt, zeker neem een
van de examens van vorig jaar of de jaar voordat het onder tijdsdruk
van een uur en een half.
Gewoon knock-out een uur en de helft van de tijd,
en zitten dan naar beneden, en gewoon werken door de problemen
alsof je daadwerkelijk waren nemen, omdat een
van de grootste dingen die we horen over quizzen is dat ze erg lang.
Het is veel materiaal.
Er zijn veel vragen, en de meeste mensen kunnen het niet afmaken.
Ik weet dat ik helemaal niet af mijn quizzen toen ik de klas.
>> Op deze nota, als een minder comfortabele sectie,
begrijpen dat deze cursus is bedoeld om tegemoet te komen voor mensen van alle niveaus.
De hele reden dat we u splitsen minder comfortabel, ergens tussen
en comfortabeler is soort het eerlijker te maken.
En als je minder comfortabel, het is niet per se nodig om alles te krijgen.
Alsof u het krijgen van alles, zou je waarschijnlijk
in het comfortabeler sectie.
Zo duidelijk jezelf niet in elkaar slaan te hard als je kunt niet het examen af ​​te maken.
Neem het van mij, ik heb het niet gedaan.
Ik ben nog steeds een concentrator.
Ik ben nog aan het helpen leren de cursus.
Zit je goed.
Prima.
En tot slot, wat te slapen.
Uiteraard met het examen we zeggen dat dit altijd.
Vetmesting de avond tevoren en krijg geen slaap
doet niet-- misschien als dat voor u werkt, go for it.
Maar voor de meeste mensen, het krijgen van wat slaap,
laat je hersenen rust en herstellen voordat hij in voor het examen
zal je echt helpen.
Ook zal er bijna candy zeker op het examen,
dus je moet naar uit te kijken.
Jullie zijn naar grote doen.
Het gaat goed komen.
En nu in het volgende uur en een half ik zal proberen en prep je zo goed als ik kan.
>> Dus ik heb dia's uit principe alle secties tot nu.
Ik ben niet van plan om te gaan door allemaal omdat dat niet
uitvoerbaar in een uur en een half ook zo werken via praktijk problemen.
Dus in plaats daarvan heb ik een lijst met onderwerpen.
Dit zijn alle dingen dat we konden ondervragen u op.
Als er iets is die echt springt uit
dat u wilt over te gaan, dat je willen dat ik meer dan conceptueel gaan,
Ik kan proberen en geven u een overzicht daar.
Of als je wilt naar rechts springen in op doen praktijk problemen samen,
kunnen we dat doen.
Het is aan jullie.
Er zijn niet zo heel veel van jullie.
Dus het is wat jullie willen doen.
Ik wil de meeste zijn behulpzaam naar jullie.
Dus ik laat je gewoon kijken.
>> Publiek: Een ding is de grafiek die we houden
zegt over de stack en de heap.
Gewoon het hele idee achter dat en wat dat betekent.
ALLISON BUCHHOLTZ-AU: Ja, OK.
Dit is helemaal aan de end, dus laat me doorlopen.
>> PUBLIEK: We hoeven niet te doe het nu, maar wat.
>> ALLISON BUCHHOLTZ-AU: Was er anything-- deze.
Is dit soort fuzzy voor mensen?
Publiek: Ja, ik tweede dat.
En kunnen we ook niet buffer overflow?
ALLISON BUCHHOLTZ-AU: Buffer overflow?
OK.
Dus buffer overflow is vrij gemakkelijk alleen maar om over te praten.
Het is eigenlijk buffert je erover sommige scala geheugen dat je hebt, toch?
We praten meestal over buffer overflow bij
je bent niet te controleren hoeveel de gebruiker is bezig, toch?
En het idee is met buffer overflow is
ze zetten in ver te veel gegevens voor de ruimte
dat je voor hen hebt toegewezen, toch?
>> Dus als je zegt, geef me wat bericht, we zijn
in de veronderstelling dat ze gaan geven ons een redelijke lengte bericht.
Misschien een paar lijnen, wat al niet.
Zodat we niet controleren.
In plaats daarvan voeden ze ons in een hele boek, dat is een boodschap,
en overstroomt de hoeveelheid ruimte die we voor dit hebt toegewezen.
En wat er gebeurt is het misschien overschrijven plaatsen dat het niet hoort.
>> Dus ik weet Professor Malan zei iets over buffer overflow aanvallen.
Dus dat is waar de gebruiker wil invoeren sommige enorme hoeveelheid gegevens in de hoop
dat hij overschrijft verleden het einde van uw buffer
en vervangt something-- ik vraag me af Ik hebben we deze dia in hier.
Ik denk niet dat we hebben die dia's in hier.
Maar in principe overschrijft hij een deel van het geheugen
dat hem in staat stelt toegang delen van de computer
dat zou je niet normaal hebben toegang tot.
>> Grootste ding met buffer overflow is gewoon
te begrijpen dat het gebeurt er als u niet
controleren hoeveel uw gebruiker zet in.
Wanneer u niet soort vrijwaren tegen.
En op zijn eenvoudigste ding, het is gewoon jouw gebruiker
invoeren van een enorme hoeveelheid van gegevens in een poging
om enige zekerheid te overschrijven deel van je geheugen.
Dat is alles wat het is.
>> Dus dit hier, stack en heap.
In principe is dit alles is slechts een weergave van het geheugen
en waar dingen worden opgeslagen.
Dat is echt een soort van alles wat u moet weten.
De grootste dingen die u moet weten zijn
dat-- laat me zien of er is een better-- hier.
Dus dit is de stapel hier.
>> Dus stack heeft te maken met al uw functies
die u belt op een gegeven moment.
En wat belangrijk is om te onthouden gaan uit van vorige week met malloc
is dat je niet echt noodzakelijke controle over.
Het hangt allemaal af wanneer bepaalde functies worden uitgevoerd.
En als ze het uitvoeren, zij hebben wat zijn stack frames genoemd
dat hier te gaan.
>> Dus alle soorten van gebeurt zonder echte inbreng van u.
Je schrijft je programma, en je laat het uit te voeren,
en de stapel soort neemt zorg van zichzelf als het moet.
Dus als in de belangrijkste u belt kubus, die hier zal worden doorgegeven.
Het zal een kader creëren.
Maar er is niets wat je expliciet doen aan dat andere dan stackframe creëren
schrijf de functie om te beginnen, OK?
>> Wat is een soort van onder uw controle is de heap met malloc.
Dus wanneer je malloc iets, je geheugen nemen van de hoop.
En dat is het geheugen dat u hebben, bij gebrek aan een beter woord,
expliciete controle over, want vergeet niet met malloc
het is in principe is er totdat je anders zeggen.
Voor degenen onder u die keek sectie vorige week,
dat het er is totdat je hem vertelt om weg te gaan.
Het zal er, tenzij zijn anders gezegd niet.
Dus de hoop is gewoon iets je kunt bedenken als het geheugen
dat u controle over.
En dat zijn slechts de twee verschillende grote dingen.
>> Anders dan dat, moet je niet hebben te veel zorgen te maken over stack en heap
vragen of meestal meer gewoon als je de lokale parameters
of een functie zou het zijn op de stapel of de heap.
Uiteraard in dit geval zou de stack.
Als je mallocing iets, waar is die vandaan?
De heap.
Als je kijkt naar de praktijk quizzen, die algemeen het soort vragen
dat zij.
>> U hoeft geen zorgen te maken te veel over.
U krijgt in meer expliciet over stack en heap
later op of in andere CS klassen.
Dus gewoon met een soort van een algemeen idee van wat dit is
zal goed zijn, dat ik gewoon een soort ging.
Eventuele andere onderwerpen?
Ja?
>> Publiek: Kunt u over te gaan pointers weer echt snel?
ALLISON BUCHHOLTZ-AU: Pointers?
Heeft u conceptuele wilt overzicht van pointers
of wil je oefenen met pointers?
Publiek: Zoiets als de syntax.
ALLISON BUCHHOLTZ-AU: De syntax?
Yeah.
OK, we krijgen er.
Ja, dus dit is gewoon een soort van iets als je een recursieve functie,
elke keer dat recursieve functie genoemd, het voegt gewoon andere stack frame.
Vrij veel een voorbeeld van hoe je echt niet
de controle over de frames op je stapel.
>> OK, wijzers.
Oké, dus het maken van pointers.
Vergeet niet, het is gewoon het type ster.
Dus ongeacht het type gegevens dat je gaat wijzen naar.
Dus dit een pointer naar een int zijn.
Dit zou een pointer naar een char.
Dit zou een pointer naar een float zijn.
Dus het is eigenlijk wat je wilt dat het te wijzen op,
ster is hoe verklaart u de aanwijzer, OK?
>> Maar dan uiteraard krijgt een beetje lastig als je wijzer hebben
of je hebt de hoofdrol wat dan ook.
Dus het grote verschil is als je declaring--
dus we hebben some-- zo Dit kost wat int ster.
Dus dit is wat wijzer noemt x naar een int, toch?
Dus niet vergeten wat dit doet is dit noemt het systeem x.
En dit gaat hebben een aantal adres, toch?
Dus laten we gewoon zeggen dat dit ons adres.
Pointers adressen.
Dus wat dit zegt is dat op dit locatie, zijn we het opslaan van een int.
>> Dus een andere manier kunnen we denken aan is dat deze enige int.
We hebben niet echt het toegewezen aan nog niks, maar het is gewoon een int.
Dus we kunnen doen is als we ster x gelijk aan 5, wordt dit een 5, OK?
Dit zegt naar wat x is wijzend op, dus ga naar dit adres
en maken het gelijk aan 5.
Dus we toewijzen 5 naar dit adres, toch?
>> En dan als je dit doet, Dit geeft ons het adres van.
Dit is het adres van de exploitant.
Dus wat is het adres van x?
We weten het niet.
We hebben nog niet toegewezen is een adres.
We zouden kunnen zeggen dat het nu gaven we some-- het een adres, dus het adres is 4.
En eigenlijk als we gaan door iets als dit, een soort van wat we deden.
Dus werken via hier-- vind ik het helpt als je trekken uit pointers.
Als je op je examen, ik raden tekenen dozen.
>> Dus dit eerste, int x gelijk 5.
Dit betekent gewoon dat we een aantal plaatsen in het geheugen, dat is 5, toch?
En onze tafel vertelt ons hier dat het op het adres 0x04.
En dan maken we wat wijzer.
Dus laten we dit opsplits een tegelijk.
Dus dit maakt sommige box naar een int, toch?
Het gaat om vast te houden sommige adres van een het.
Dus dit is wat wijzer.
En dit krijt is echt klein.
Dus we hebben een aantal pointer hier.
En onze tafel vertelt ons dat adres 0x08.
Cool.
En we zijn het toewijzen naar het adres van x.
>> Vergeet niet, pointers adressen, OK?
Dus als we willen x te houden, hebben we naar het adres operator, gebruiken die
is de ampersand, om het adres te krijgen van x, die in dit geval, 0x04.
En dan als we sommige int exemplaar, dit gewoon
creëert een andere doos die houdt een int ook Copy.
En als we deze toewijzen aan dit-- zodat deze verwijst naar het.
Dus het zegt te gaan naar wat adres pointer houdt.
Pointer houdt dit adres, dus we zouden hierheen gaan,
en wij zeggen, OK, wat er in zit?
Het is 5.
Dus exemplaar wordt 5.
Zinvol?
>> Wat als ik probeerde te wijzen Dit om gewoon pointer.
Wat doet pointer eigenlijk gelijk?
Het zou net zijn wat pointer bevat, toch?
En dan wat als ik dit deed?
Wat zou kopie zijn nu?
>> Publiek: 0x08.
ALLISON BUCHHOLTZ-AU: Yep, de adres van onze pointer.
Elk deel van dat dat moet opnieuw toegelichte?
Cool.
Er is zeker een zeer fun probleem op quiz één
dat we kunnen meer dan dat geeft u meer praktijk.
De jongens van vorige week kan je vertellen dat het niet zo slecht was.
We kregen een hele chart, en iedereen deed geweldig.
>> OK, dus dat is overzicht van de syntaxis van pointers.
Grootste ding is te begrijpen hoe om ze te maken, doen verwijzen,
en het adres van, OK?
Cool.
Andere onderwerpen die vóór duiken we in de praktijk.
Ook als we gaan door de praktijk problemen
en er is iets wat je wilt een opfriscursus over, kunnen wij dat ook doen.
Heb je iets?
>> PUBLIEK: Structs en gelinkte lijsten.
ALLISON BUCHHOLTZ-AU: Structs en gelinkte lijsten, OK.
Dus structs.
We eigenlijk gaan meer dan dit vanavond ook.
OK, dus structs.
Structs zijn in principe gewoon een manier voor u om vast te houden
meerdere waarden van verschillende types.
Dus met een scala wij zijn vernauwd een gegevenstype.
Ons aanbod heeft ofwel om gewoon nummers, of gewoon klusjes, of gewoon praalwagens.
>> Maar misschien moet je bevatten meer dan dat.
Misschien moet u hold-- als je praat over een student,
je gaat naar hun huis hebben, hun ID-nummer, hun leeftijd, waar ze wonen,
toch?
En al die zijn verschillende soorten types.
Dus je kunt niet opslaan die alle in een array.
>> Dus wat je kunt doen is je kan een structuur creëren die
je kunt bedenken als je eigen persoonlijke data type.
Dus in plaats van enkel het hebben van ints en in plaats van enkel het hebben van praalwagens,
U kunt een student hebben dat heeft al deze velden in.
Dus de manier waarop we initialiseren onze structs is-- eigenlijk
sinds mijn schrijven is verschrikkelijk, we gaan om de overgang te typen.
Woo.
>> OK, dus als we willen een struct-- creëren Ik ga gewoon naar beneden hier.
Negeer de in belangrijkste wat die we later zullen gebruiken.
Dus de manier waarop je wilt doen het is met typedef struct.
En laten we gewoon noemen deze student want dat is wat ik gebruikte.
OK, dus typedef betekent dat je het definiëren van een nieuw type, OK?
Er zijn nuances in als je dat doet gewoon een structuur versus een typedef struct.
In alle opzichten doeleinden, jullie zijn gewoon
ga ervan uit dat ze ongeveer hetzelfde en net
Gebruik typedef struct voor nu.
Het zal veel meer zichtbaar in geworden uw volgende P set wat die verschillen zijn,
maar ik denk niet dat je nodig hebt om zorgen over dat moment.
Ik zou veel liever je weten hoe er een te maken,
toegang toe, en wijs [? waarde. ?]
>> Een nieuw type struct, en we noemen het student.
Dus nadat we klaar bent met het maken van dit, voor alle doeleinden,
heb je een soort genaamd student.
En kunt u denken aan het gewoon als een soort als een int, of een float, of een char.
Het is gewoon een ander type, OK?
>> Dus in deze, wat hebben we?
We hebben misschien een naam.
Dus misschien willen we een string naam.
En we hebben misschien een int dat is een ID.
En we hebben een ander in dat is het telefoonnummer.
En we hebben some-- laten we eens kijken.
Wat zouden we hebben?
We zullen een stukje tekst in zijn huis te hebben.
Alle dingen die een student heeft.
>> Dus dit maakt nu een structuur.
Dus hoe kunnen we zorgen voor een student?
Als we een aantal variabele die gaat hier over Walker praten,
dus we have-- we zijn gewoon ga dit wandelaar noemen.
Hij heeft een type.
Wat is je type?
Publiek: Student.
ALLISON BUCHHOLTZ-AU: Student.
Dus dit gewoon creëert een object dat u kunt denk aan die heeft al deze dingen.
U heeft zojuist een rollator student.
Dus nu moeten we in staat zijn om al deze toe te wijzen, toch?
Dus heeft iemand nog hoe we toegang binnen een structuur?
Publiek: Periode.
ALLISON BUCHHOLTZ-AU: Periode Precies.
Dus als we wilden toekennen hem een ​​naam, kunnen we dat doen.
Uiteraard zou dit be-- hier dit deel zou
zijn binnen de belangrijkste, zo eigenlijk wil ik dit doen.
Verklaar deze hierboven main zo dat we het kunnen gebruiken binnen main.
Dus nu wil ik het om ID te doen, en we gaan gewoon wat doen daar,
en dan zullen we een huis toe te wijzen.
Bam.
Cool.
>> Dus nu moeten we ooit nodig hebben om toegang te krijgen iets later on-- misschien we--
als we ooit nodig hebben om toegang te krijgen tot om het even wat, laten we gewoon doen een int kopie ID.
En ik wil kopiëren ID Walker's in deze.
Hoe zou ik het doen?
Je nodig hebt om toegang te krijgen binnen de wandelaar struct tot [? naar die?] [? E?].
En op dezelfde manier dat we toegewezen het hier, hoe
kunnen we toegang krijgen tot het wanneer we willen geven die waarde aan iets anders?
Publiek: Walker.id.
ALLISON BUCHHOLTZ-AU: Ja, precies.
Dus dat is zo'n beetje alles wat u moet weten voor structs.
Je hoeft alleen maar te denken aan ze als een andere variabele.
Eigenlijk een creëer je eigen variabele soort, OK?
Je gebruikt het om te verklaren variabelen in any way.
Hier rollator is nog steeds een variabele.
Het heeft gewoon een soort student nu in plaats van een type int, of een string type,
of een type char.
Als er een gemakkelijke manier om te praten over structuren, het is letterlijk een
creëer uw eigen datatype die u toelaat om de groep
al deze soort gegevens bij elkaar.
Is dat zinvol?
OK.
Dat en de toegang met stippen.
Vrijwel alles wat je nodig hebt.
>> OK, waar heb mijn PowerPoint gaan?
Hier is.
Nou, dit is raar.
Aha.
OK, cool.
Iedere andere dingen of hebben we wil aan het hoofd om te oefenen?
Oefenen?
OK.
Awesome.
Ik ga dit af te sluiten.
Indien op enig moment tijdens oefenvragen,
Ik ben blij om te vernieuwen en gaan door dingen.
Dus ik heb quiz nul up hier.
Als jullie willen trekken het op uw computer,
gewoon graag nemen vijf minuten om te bladeren.
Kiest u misschien een aantal top vragen die u wilt over te gaan.
Als jullie niet kunnen beslissen, zullen we gewoon langzaam beginnen te werken door hen,
maar ik weet zeker dat er gaan wat zijn vragen die u bijzonder
te popelen om over te praten en hebben me door te werken met u allen.
Dus gewoon doorgaan en neem vijf minuten.
Blader door.
En dit is de quiz van 2013.
>> Publiek: Zero?
>> ALLISON BUCHHOLTZ-AU: Yeah, quiz nul.
We zijn niet quiz doet een spul.
We zullen dat doen in een paar weken.
Ook voor degenen onder u die kwam laat, we hebben snoep,
doen jullie wil snoep?
>> Publiek: Tuurlijk.
>> ALLISON BUCHHOLTZ-AU: Ik ben gewoon gaat rond passeren.
Hey, als je jongens krijgen hier vroeg, krijg je meer snoep.
Dat is prima.
Ben, wil je snoep wilt?
U wilt een aantal van deze?
Er is ook Snickers als iedereen wil Snickers.
Ik zal ze hier en hier vertrekken.
Voel je vrij.
Wil je niet meer wilt?
Publiek: Alle ingesteld.
Dank u.
>> ALLISON BUCHHOLTZ-AU: En ik had een mooie hoopje er bij het begin.
Jullie krijgen om de quiz te nemen en Ik krijg bij een quiz indeling feest.
Het is chaos.
900 examens.
Het zal zo leuk zijn.
Zal geweldig zijn.
Ik ben vrij zeker dat is een van de grootste personeel bonding
nachten van het jaar.
Heeft iemand quiz nul gedaan vanaf nog vorig jaar uit nieuwsgierigheid?
>> Publiek: Delen ervan.
>> ALLISON BUCHHOLTZ-AU: Delen van het, OK.
Hebt u vragen over een van hen hebben?
Publiek: Ik heb al ging naar de kantooruren.
Dank je wel.
ALLISON BUCHHOLTZ-AU: Nou, hopelijk het is nog een beetje nuttig.
Wanneer ben je naar kantooruren voor dat?
Publiek: Mijn TF had ze vanmiddag.
ALLISON BUCHHOLTZ-AU: Oh.
Wie is je TF?
Publiek: Fred [? Wujaya?].
ALLISON BUCHHOLTZ-AU: Er zijn zoveel TFs.
Zo veel.
Prima.
Iemand enig om te beginnen dat ik kan noteer dat we willen werken?
Ik neem aan dat de pointers een met de tafel.
Ga ervoor.
>> Publiek: Misschien is de schakelaar één.
ALLISON BUCHHOLTZ-AU: Dus nummer 12?
Ik neem aan dat nummer 8 en 9 zijn waarschijnlijk die mensen willen om over te gaan.
>> Publiek: En 10 en 11.
>> ALLISON BUCHHOLTZ-AU: En jullie weten je krijgt een pagina met aantekeningen, toch?
>> Publiek: Ja, dus wat zijn We mogen dat voor zetten.
>> ALLISON BUCHHOLTZ-AU: Je mag om iets neer te zetten.
En het kan worden getypt.
Voor zover ik me herinner, waren de onze getypt.
>> Publiek: U kunt dit doen rug en beide zijden?
>> ALLISON BUCHHOLTZ-AU: Ja, aan beide zijden.
Dus zoiets als de hoop en [? back-end?] hoop, uw lopende
tijden.
Nuttig.
Misschien kleine dingen over pointers om u te herinneren.
Syntaxis voor dingen.
Het hebben net als een skelet programma super nuttig.
Ik weet dat ik altijd vergat precies wat Ik werd verondersteld om te schrijven voor int main,
omdat ik altijd gewoon kopiëren plakken van mijn vorige P set
of het is er al, dus Ik heb nooit echt het schreef,
dus met dat kan zijn super handig.
>> OK, dus waarom doen we niet beginnen met nummer 8 dan?
Prima.
OK.
Dus overweeg hieronder het programma.
Zo duidelijk als we zien pointers, is het waarschijnlijk
een goed idee om te beginnen met het tekenen, toch?
Ik wil weten waar al mijn grote stukken van krijt ging.
Dit is een beetje vervelend.
>> Dus we hebben hier een aantal swap-functie dat gaat in twee pointers.
Dus in dit geval, zij moet eigenlijk switching
dingen tegenover onze oorspronkelijke swap functie die duurde slechts in kopieën.
Dus wat het gaat doen is-- laten we beginnen met de belangrijkste,
want dat is waar 1 is.
>> Dus hebben we een aantal int x 1.
We hebben een aantal y dat is gelijk aan 2.
En dan hebben we een aantal swap dat gaat om deze te nemen.
En laten we zien wat doen we hier hebben.
En in onze table-- oh boy.
Hoe ga ik om dit te doen?
Ik ga naar mijn tafel te tekenen hier.
Nauwelijks waardoor het daar.
Nauwelijks het maken ervan.
1, 2, 3, 4, 5, 6, 7.
En ze geven ons dat 1 is 1 en 1 2.
Cool.
Awesome.
So 3.
En er is [? a 1.?]
>> Prima.
En dan het adres van x is 0x123.
En y is Ox127.
Cool.
Prima.
Ik wil dat jullie werken aan dit voor slechts like-- werk op het
met de mensen om je heen.
Ik wou dat ik had gezegd dat terwijl ik aan het opzetten was.
Werken.
Proberen en te werken aan het door jezelf voor een paar minuten,
en dan zal ik aan werken met je mee.
Omdat de enige manier waarop je echt gaan om te leren is door het zelf te doen.
Geen zorgen.
Good luck.
>> OK, waarom langzaam doen we niet begint te werken door middel van deze.
Dus iedereen krijgt na regel één, x is 1.
Na regel twee, x en y 1 en 2, toch?
Cool.
Dus regel drie is waar dingen krijgen interessant natuurlijk.
>> Dus wat we hier hebben gedaan is dat we nu hebben verwisseld.
We zeggen dat x en y die punten, of zij het adres van x en y,
toch?
Dus in dit geval, drie, Wat is de waarde van een?
een was doorgegeven in is voorzien, de waarde van het adres van x, toch?
>> Publiek: 1?
>> ALLISON BUCHHOLTZ-AU: Dus voegen we het aan de x?
Wat is het adres x's?
>> Publiek: 0x123.
>> ALLISON BUCHHOLTZ-AU: Precies.
Maar wat is een eigenlijk verwijst naar?
Als we dereferentie een, welke waarde zou het ons geven.
Publiek: 1.
ALLISON BUCHHOLTZ-AU: Het zou geven ons 1, want wat
we zeggen is ga naar deze adres, vertel ons wat de waarde is.
Dus wat zou worden b?
>> Publiek: 0x127.
ALLISON BUCHHOLTZ-AU: Precies.
Dus het is het adres van y.
En wat dan [? dereferentie? ?]
Publiek: 2.
ALLISON BUCHHOLTZ-AU: OK, dus nu vier.
We zeiden een is equal-- goed nu hebben we gedaan int temp is gelijk aan ster van een.
Dus wat verandert?
Er is maar één ding hier dat verandert.
Wat is het?
>> Publiek: Temp.
ALLISON BUCHHOLTZ-AU: De temp.
Dus we kunnen al deze herschrijven.
Een goede strategie voor deze is gewoon uitzoeken
welke veranderingen, omdat het vaakst er is maar een ding dat is
gaat veranderen op een bepaald punt, OK?
Dus we hebben toegewezen temp.
>> Nu is ons volgende punt, vijf, we ster hebben gemaakt een gelijk aan ster b.
Dus wat verandert nu?
>> Publiek: Star een.
>> ALLISON BUCHHOLTZ-AU: ster a, dus al het andere blijft hetzelfde.
En wat doet de hoofdrol een gelijk?
>> Publiek: 2.
ALLISON BUCHHOLTZ-AU: 2.
Lovely.
Awesome.
OK, en dan nu hebben we B is gelijk aan temp.
Dus het enige wat veranderen is ster b.
Al het andere blijft hetzelfde.
En wat is ster b gelijk aan nu?
En je hebt de tafel afgerond.
Want nu aan het eind, als we zeggen x en y, we weten dat er op dit point--
we weten dat wanneer we veranderd ster a tot en met 2,
wat dat deed is het zei OK, bij pakken 0x123 hier, verander het.
Nu was dit 2.
En vervolgens op dit punt, we zeiden OK, ga naar ster b.
Dus ga naar het adres op 0x127 en maak er een 1.
Dus nu helemaal aan het eind, wanneer we eigenlijk terug voor main,
hebben we eigenlijk dat x gelijk aan 2 en y gelijk aan 1.
Iedereen goed met dat?
OK, cool.
Nummer 9.
Jullie werken aan dit.
Ik ga voor het opzetten van een bestuur dus we kunnen trekken doorheen.
Het zal een ontploffing zijn.
De grote tabellen kan echt eng, ik weet het.
Maar als je gewoon nemen ze één rij een tijd, krijgen ze een stuk minder eng.
Prima.
>> Dus je weet dat dit zal hebben doorlopen belangrijkste eerste, toch?
Initialiseert x en y en vervolgens probeert om ze te ruilen.
Dus zelfs swap is hierboven, echte manier het gaat is dat we gaan via de grote,
en dan is het te bellen tot ruilen, oké?
Zodat iedereen weet dat.
>> Dus welke je doen jongens willen beginnen?
Is er iemand echt zeker over een van deze?
Of zelfs gedeeltelijk zeker?
Waarom gaan we niet beginnen met x?
Wat vinden we x is?
>> Publiek: 1.
ALLISON BUCHHOLTZ-AU: 1.
Dus waarom is 2.
En dat komt omdat de grote onderscheid hier
is dat we alleen passerende exemplaren in, toch?
We zijn niet passeren door middel van verwijzing.
Dus zelfs eind Dit programma x en y
hebben hetzelfde gebleven, omdat ze zijn slechts kopieën in de swap-functie.
Ze eigenlijk niet veranderen, toch?
>> Dus hoe zit het met a, b, en temp?
>> Publiek: a is b.
>> ALLISON BUCHHOLTZ-AU: a b.
Dus in dit geval, een was x, dat is 1, toch?
Dus hier, laten we er doorheen lopen.
Dus aan het begin, een en b zijn 1 en 2 en ongedefinieerd.
Dus oorspronkelijk temp krijgt toegewezen aan een, dus temp 1.
a gelijk aan b, dus we 2, en b gelijk aan temp.
Nu krijgen we 1.
>> Publiek: In de vorige het verwisseld ampersand x en ampersand y.
Wat houdt dat precies in?
ALLISON BUCHHOLTZ-AU: Dus dat betekent dat je voorbij aan de hand.
Dus dat betekent dat je eigenlijk bent passeren in de adressen waar
x en y worden opgeslagen.
Publiek: Maar je bent niet omwisselen van de adres.
ALLISON BUCHHOLTZ-AU: Je bent niet omwisselen van de adressen.
Je ruilt wat er in hen.
Net als wat er op dat adres, en dat is waarom het werkt.
Versus in het programma hier wat je doet wordt u maakt kopieën.
Dus je hebt x en y die er bestaan als hun eigen variabelen hier.
Maar dan wanneer je langs hen in ruil, het is
alsof je het creëren dit hele andere set.
Zodat je nooit echt bent ontroerend x en y.
>> PUBLIEK: Als ampersand x is wat er op het het adres van x, wat zou ster x zijn?
>> ALLISON BUCHHOLTZ-AU: Ampersand x is wat er op het het adres van x, dan star-- goed,
in dit geval, x is geen pointer.
PUBLIEK: Oh, OK.
Zodat u dit alleen doen want het is niet een pointer.
ALLISON BUCHHOLTZ-AU: Right.
U kunt alleen de ster van doen iets dat een pointer.
Misschien kun je het doet om dingen die zijn het niet, maar de compilatie die u
doen die gekke dingen zouden gebeuren.
En ik ben precies niet zeker wat er zou gebeuren.
U kunt altijd de adres van iets,
maar je kunt niet dereferentie iets dat niet een pointer.
Als dat zinvol is, dat is een goed onderscheid hebben.
>> Dus niet al te slecht, toch?
De tafels zijn hopelijk het krijgen van iets minder eng.
Prima.
Ah, het plezier Ones.
Dus nu, het schrijven van uw eigen code.
Dus ik ga u laten kerels werken dit ongeveer vier minuten,
en dan kunnen we praten over manieren om het te benaderen.
Voel je vrij om te praten met mensen om je heen.
Ook is dit interessant.
Het is als een all meisjes sectie op dit moment.
Behoorlijk spannend.
Behalve Chang.
Maar Chang is niet echt deel uit van sectie.
Awesome.
Perfect.
Dus zal ik je een paar tips geven.
In het geval je meer dan één karakter, waar
je iets anders hebt zoals 123 of 1000 iets,
je nodig hebt om te kunnen lus door en zet elk van deze.
Dus er zijn een paar manieren waarop je dat zou kunnen doen,
maar je bent zeker gaan hebben een lus ergens in er een lus
door hen, die net zoiets als de giveaway
met zelfs als je belt strlen, die is een soort oh
misschien wil je de lengte gebruiken van de string op een bepaalde manier.
>> Prima.
Dus wat doen jullie denken misschien een van de eerste dingen die we willen doen?
Er zijn een paar gevallen in hier we nodig hebben om rekening te houden, toch?
Ofwel we hebben iets dat is null.
Wat hebben we?
Gevallen.
Null.
We hebben zo dat zij iets anders dan 09, toch?
Dus laten we zeggen het heeft brieven.
Of hebben we het geval dat is geldig.
Drie gevallen te bedenken.
Dus welke denk je dat zou kunnen zijn de gemakkelijkste om te zorgen voor het eerst?
Publiek: Null.
ALLISON BUCHHOLTZ-AU: De zaak is null.
Dus wat zouden we daar doen?
Publiek: [onverstaanbaar].
ALLISON BUCHHOLTZ-AU: Yeah.
En wat wil ik doen?
>> Publiek: Return 0.
>> ALLISON BUCHHOLTZ-AU: Precies.
Awesome.
OK.
Dus nu zo dat het heeft brieven en het geval dat het geldig is.
We kunnen eigenlijk verzorgen dit binnen één lus, OK?
Dus een manier om het-- doen wat zou kunnen zijn een eenvoudige manier om te controleren of deze geldig is.
We zouden moeten gaan door elke letter en doet wat?
>> Publiek: Controleer of het in--
>> ALLISON BUCHHOLTZ-AU: Right, kunt u controleren als het tussen 0 en 9, toch?
En dan in het geval dat deze geldig is, zijn we
gaat uiteindelijk iteratie onze reeks anyways, toch?
Dus waarom niet proberen we en combineren tot één.
We gaan om te herhalen door uit touw, en als we
dat doen, gaan we eerst doe een check om te zien of die letter
of als dat karakter is geldig.
Als het is, gaan we het uitvoeren operatie die we nodig hebben om het te converteren.
Anders kom zo terug 0,?
>> Dus voordat we dat doen, we Wilt u waarschijnlijk een aantal variabele
we kunnen terugkeren eind dat gaat om onze werkelijke waarde.
Dus we gaan om te initialiseren enkele waarde zijn 0.
En dat is gewoon hoe we beginnen.
Dus ik ga om zich te ontdoen van.
Dus hoe gaan we om doorlopen van deze string.
Publiek: voor loop.
ALLISON BUCHHOLTZ-AU: Een lus.
Dus wat is ons voor?
>> Publiek: i is 0.
ALLISON BUCHHOLTZ-AU: Mm-hm.
En wat zijn we itereren tot?
>> Publiek: str lengte van s.
>> ALLISON BUCHHOLTZ-AU: OK, nu herinner er is een betere manier. [Onverstaanbaar].
>> Publiek: Ja, we kunnen doen n gelijk.
ALLISON BUCHHOLTZ-AU: Precies.
>> Publiek: i is kleiner dan n.
ALLISON BUCHHOLTZ-AU: En waarom zouden we dat willen doen?
Herinner je je de reden?
PUBLIEK: We moeten het herberekenen.
ALLISON BUCHHOLTZ-AU: Becasue deze manier kunt alleen moeten strlen eens berekenen.
Als je dat doet i kleiner dan strlen s, dat is betekent dat het herberekent
de lengte telkens je loopt de lus,
dat is niet een enorme kosten van energie, maar het is
betere praktijk om te proberen en dat soort dingen doen eens.
Tenzij misschien heb je een gekke touwtje dat verandert bij elke iteratie.
Maar als het is blijven hetzelfde, sla het op.
Prima.
En dan heb ik plus plus.
Awesome.
We zijn op weg.
Publiek: Echt snel.
Eerste, dus laten we zeggen dat we gewoon Heb ik minder dan strlen van s,
worden ze sorteren ons op design helemaal of gewoon correctheid?
Zijn ze niet.
We zijn indeling op juistheid voor quizzen voor zover ik weet.
Ik kan een volledig op de niet te maken garantie, maar voor het grootste gedeelte,
overgrote meerderheid is juistheid, omdat je bent onder grote tijdsdruk.
Ontwerp betekent meestal je tijd om na te denken
over de elegantie van uw situatie.
>> OK, dus we itereren door.
Dus we moeten ofwel controleren om zien of dit karakter is geldig
of als we kunnen presteren onze normaal [? een i?] functie.
We kunnen maken over wat dat in een tweede.
Dus waarom doen we niet take-- als iemand kan denken
over een manier om te controleren op zien of dit geldig is.
We weten dat het gaat worden sommige als voorwaarde, toch?
En vergeet niet dat dit in ASCII, dus hoe zou
zien we als het niet 0,1, 2, 3, 4, 5, 6, 7, 8 of 9.
PUBLIEK: Als alpha.
>> ALLISON BUCHHOLTZ-AU: Dus als alpha zou alleen laat het ons weten als het een brief.
En als ze ons een symbool, het is nog steeds niet helemaal gaan controleren.
Dus als je trek uw ASCII tafel, we weten dat 0 tot en met 9
in één segment.
Vertel me de nummers die ze overeen met indien mogelijk.
Publiek: 40.
>> ALLISON BUCHHOLTZ-AU: Dus het bereik is als 40--
Publiek: Misschien.
48-57.
Ik weet het niet zeker.
>> ALLISON BUCHHOLTZ-AU: 40-57?
>> Publiek: 48, denk ik.
ALLISON BUCHHOLTZ-AU: 48-57.
Dus we weten dat die ASCII symbols-- als de ASCII-waarde niet
tussen 48 en 57, het is niet geldig, toch?
Dus konden we dat gebruiken om ons voordeel misschien?
Hoe gaan we om te krijgen deze brief, eerst uit?
Hoe moeten we de toegang deze dit karakter?
>> Publiek: s beugel i.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Omdat we kunnen bedenken strings als arrays, herinneren.
Dus wat doen we willen zeggen?
We willen zeggen als dit is-- Ik zal je een hint geven.
Het is een minder.
Wat u denkt dat het moet minder zijn dan?
Publiek: 57?
>> ALLISON BUCHHOLTZ-AU: 47, toch?
Maar het betekent ook dat als je een 0 in enkele [? spaken?], want dat is
het karakter 0.
Je zou ook kunnen zetten 47.
Het hebben van de ASCII-tabel, zoals je ziet, is gewoon iets
je moet hebben op je quiz vel.
>> Als dit het geval is, als het een minder dan 0-- niet noodzakelijk en.
Het is nog maar een van beide gaat worden kleiner of groter dan 9.
Zo kunt u vul dit laatste voor mij?
Dus of s van i is wat, Rhea?
>> Publiek: Groter dan 9.
>> ALLISON BUCHHOLTZ-AU: Er.
Heeft dat zin om iedereen, hoe we daar aankwamen?
Deze problemen, ze zijn als als je eenmaal zie de oplossingen, het is net als oh, OK.
En dit is de reden waarom de praktijk zal u helpen.
OK, dus we terug 0.
Lovely.
Prima.
Anders wat willen we doen?
Dit is het interessante deel waar het is een beetje meer
als wiskunde versus CS in mijn mening.
Heeft iemand een idee van hoe wij dit doen?
Dus het belangrijkste om te realiseren, is het eerste teken
we nemen gaat worden de hoogste orde cijfers, toch?
Dus als we kijken naar het omzetten van 123, de eerste keer dat we herhalen
zal worden 1, maar we moeten dat zijn 100 tegen het einde, toch?
Dus een ding dat je kunt doen is dat bij elke volgende digit
je neemt, je je waarde te vermenigvuldigen met 10, zodat tegen de tijd dat je het einde bereikt,
alles is geweest verschoven naar boven, toch?
>> Dus de eerste keer dat je loopt het, heb je 1 als je waarde.
Tweede keer dat je het opstart, je vermenigvuldig je de waarde met 10.
Het zal het updaten zodat het nu 10, en u toevoegt aan uw volgende waarde.
En dan dat u vermenigvuldigen door 10 en voeg op uw volgende waarde.
En dit is de reden waarom ze dit zeggen is veel meer als het testen
een wiskundig algoritme versus CS, maar ik dwaal af.
Ik schrijf niet de quizzen.
>> Dus een ding dat we kunnen doen is dat we zeggen waarde tijden is gelijk aan 10.
Dus dit gaat verschuiven uw digit eens elke keer.
En dan we willen gewoon toevoegen.
We willen voegen in wat we zijn net, toch?
Dus hoe kunnen we eigenlijk zetten onze ASCII-tekens in het aantal
dat het vertegenwoordigt?
>> Dus we weten dat 0 gelijk is aan 47, toch?
Dus als 0 is 47, wat zouden we moeten doen om het te
om daadwerkelijk het zijn een int van 0?
>> Publiek: Het is 48.
ALLISON BUCHHOLTZ-AU: 48?
Sorry.
We zouden aftrekken 48, toch?
Onthoud ASCII wiskunde?
We kunnen ze gewoon behandelen als normale getallen.
Als je ze behandelen als nummers, ze nummers effectief.
Dus als we s van i, die laten we zeggen in dit geval gelijk aan 0.
Dus s van i in dit geval zou ASCII-- zijn
de ASCII int voor het zou zijn 47.
Dus we konden subtract-- of 48.
Je zou kunnen doen, is een manier.
Heeft iemand een beter leren kennen Zo konden we doen 48?
We zeiden gewoon 0 is-- gaan in de ASCII kon je citaat 0 doen.
Dus doet het soort van te maken gevoel hoe dit werkt?
>> Publiek: Op dit punt, is de waarde 0 want zelfs als je het vermenigvuldigt met 10,
je begint met nul, dus moet worden ingeschakeld?
>> ALLISON BUCHHOLTZ-AU: Dus in dit geval, je wil het vermenigvuldigen voordat u toevoegt,
want in dit geval, ja, het zou nog steeds be-- mijn wijzer ontbreekt.
De waarde in dit geval, de eerste tijd lopen we het zal nul zijn.
Dus je bent gewoon toe te voegen Op dat eerste cijfer.
Wat belangrijk is, is de volgende keer je herhalen, je wilt het opschakelen
voordat u uw volgende cijfer toevoegen.
Heeft dat te verduidelijken voor u?
OK.
>> Soms zul je krijgen rare meer Mathy dingen.
Als je het grootste deel van had dit, je bent nog steeds gaande
om get-- je gaat vrij goed doen.
Gedeeltelijke krediet is een zeer big thing op CS50 quizzen.
Dus schrijven wat je weet.
Als je alles behalve hier, je bent
nog steeds gaan doen heel goed het probleem.
Omdat je het tonen, OK, ik weet bijna.
Ik weet dat ik door moet herhalen.
Ik weet wat ik nodig heb om te controleren op.
Ik doe gewoon niet helemaal krijgen hoe om te zetten.
Je zult in orde te zijn.
Ja, je gaat naar verliest een paar punten,
maar je bent nog steeds om een ​​te krijgen goed aantal punten voor iets
als dat als je ontbreken deze twee lijnen.
Ik zou als OK, deze persoon weet wat ze doen.
Math is hard.
Dus ik zou zeggen dat je goed zou zijn.
>> OK, dus jullie klaar om te probeer strlen met pointers nu
dat jullie zijn pointer meesters?
Dus ik laat jullie werken op dat voor een klein beetje.
Als iemand behoefte heeft aan een opfriscursus.
Dus je wilt pointer gebruiken rekenkunde, en dan als s is null,
uw implementatie moet terugkeren 0.
Dit soort dingen die je maakt echt blij om gewoon strlen bellen
aan het eind van de dag.
Ik denk dat dit één is misschien een beetje makkelijker dan de vorige, die
is goed.
Ik geef je jongens nog een minuut, en dan zullen we werken doorheen.
En dan krijgen we om naar switches.
>> OK, klaar voor jongens?
Misschien een beetje.
Dus ik heb je je opgegeven twee opties, toch?
Ofwel controleren op nul en terug 0 als is, of feitelijk berekenen de lengte.
Dus wie wil schrijven controleren op null?
Ga ervoor.
>> PUBLIEK: Als haakjes s gelijk gelijk aan null return 0.
ALLISON BUCHHOLTZ-AU: Lovely.
Ik hou als de helft van je probleem is gewoon het controleren op null.
Ik weet dat met jullie laatste week was ik als check voor null
letterlijk elke keer.
OK, so--
>> PUBLIEK: Als return 0 is slechts één lijn, doen we nog steeds de accolade nodig?
>> ALLISON BUCHHOLTZ-AU: Je hoeft niet technisch hebben ze nodig zolang je consequent bent.
Het is een goede gewoonte gewoon in de gewoonte te krijgen
van het gebruik van accolades, maar technisch niet.
Je ze niet nodig hebt voor één regel.
We hebben de neiging alleen maar aan te bevelen mensen beginnen te programmeren.
>> Dus nu wat zouden we hier willen doen?
Dus nu weten we dat onze string is geldig.
We willen berekenen de lengte te houden.
Wat is waarschijnlijk de eerste wat we willen doen?
>> PUBLIEK: een aanmaken int dat is de lengte.
ALLISON BUCHHOLTZ-AU: Precies.
Publiek: En we willen het op?
ALLISON BUCHHOLTZ-AU: 0.
Perfect.
Prima.
Nu, wat wel wilt doen?
Dit is echt het grootste deel van het.
Ga ervoor.
>> Publiek: Dus je waarschijnlijk wel een lus.
En dan sinds wanneer je s bel je bent krijgen van het adres van de eerste ding,
je zou beginnen met i gelijk is aan 0.
Vervolgens zolang x Plus ik niet terug slash 0.
ALLISON BUCHHOLTZ-AU: De null terminator.
Publiek: De null terminator.
Dan moet je één op lengte toe te voegen.
>> ALLISON BUCHHOLTZ-AU: Yeah.
OK, dus laten draaien dat in zeer concrete code.
Maar dat is het perfecte idee.
Dat is precies wat we doen.
We gaan itereren te zijn door met de aanwijzer.
Dus wat we willen doen is in plaats van een int
hier, omdat we niet verwijzen naar een het.
We verwijzen naar het begin van een touwtje, dat begint zijn sommige adres,
toch?
>> Dus willen we een pointer.
Dus we gaan om enkele char ster hebben, omdat deze overeenkomt met onze s, toch?
Dus dit is een gegeven moment zijn we het initialiseren aan het begin van de string, OK?
Dus laten we het gewoon i noemen.
Als het begin van de string, wat gaat het worden toegewezen aan?
Niet 0.
We willen dat het zijn start van onze string.
Wat betekent de start van onze string die ons gegeven is?
>> Publiek: Gewoon s.
>> ALLISON BUCHHOLTZ-AU: s.
Dus dit creëert een aantal nieuwe pointer die staat voor het begin van onze reeks, OK?
Een andere manier om te denken van het is net als hier is ons aanbod.
Dat is onze reeks, s.
Dus laten we zeggen dat dit de eerste plaats, en dit is 0x4.
04.
Dit is onze s, die dat adres bezit.
En we zojuist hebt gemaakt een andere genaamd i dat alleen verwijst naar het zelfde ding.
Dus ze beide slechts wijzen de start van de string.
Dit is slechts een grafische weergave.
>> Dus nu wat we willen doen is willen we herhalen
onze voorwaarde voor itereren via onze string.
Nu winkelen.
Kreeg om te winkelen, jongens.
Is we willen updaten houden tot bereiken we de null terminator, toch?
Dus wat zou dat er dan uitzien?
Willen we i, of willen we ster i is de vraag?
Is de null terminator een adres of iets zich op een adres?
Gelegen op een adres, toch?
>> Dus we moeten dereferentie wat is hier, want dit is slechts enkele adres.
Om daadwerkelijk te krijgen naar de start we moeten dereferentie deze
zodat we eigenlijk krijgen wat er in deze eerste plaats.
Dus als we dat doen ster i, wat we willen niet dat het gelijk?
Publiek: Back slash?
>> ALLISON BUCHHOLTZ-AU: Er.
Is dat zinvol voor iedereen?
We moeten in onze reeks te gaan en zorg ervoor dat het niet het einde.
En dan kunnen we gewoon updaten als deze.
Normaal updaten.
Zolang deze BMO, wat hebben we nodig om te doen?
>> PUBLIEK: Lengte plus plus.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
En dan na de lus beëindigt, wat willen we om terug te keren?
PUBLIEK: Lengte?
ALLISON BUCHHOLTZ-AU: Lengte.
Daar ga je.
Uiteraard is het vlees van deze ene is het begrijpen van deze lus.
Krijgt iedereen hoe dat werkte?
Ik ben blij om weer te gaan over.
>> Publiek: Het tweede deel, zodat de ster ik daar,
dat is het adres van de first--
ALLISON BUCHHOLTZ-AU: Het is niet het adres.
Het is wat op.
Publiek: Dat is eigenlijk in daar.
ALLISON BUCHHOLTZ-AU: Dat is wat is eigenlijk in daar.
Dus dit is saying-- laten me dit beter.
Dus dit is 0x04, en ik ben gewoon gaan om te zeggen ik ga dit mijn naam te maken.
OK.
Ja, ik weet dat ik quiz beoordeling vanavond.
Veel quiz beoordeling.
Dus laten we zeggen dat deze string is mijn naam, Allison.
Beetje rommelig, maar het is er.
En s staat voor de locatie waar de string begint,
dus ik ga om dit te maken real-- is het adres van een,
waar de string begint, toch?
>> Dus wat we hier doen is dat we willen gebruiken pointers om door te herhalen.
Zo creëren we wat wijzer, i, dat ook is gelijk aan het begin van de string.
En op elk punt, we willen verder gaan door de array
hier, totdat wij slaan de null terminator.
Dus we willen altijd om te controleren wat er bij elk van deze adressen.
>> Dus dereferentie we i, zodat de eerste keer dat we het doen we
zeggen, OK, wat er op het adres 0x04?
Het is een a.
OK, we zijn goed.
Increment lengte.
Ga verder met de volgende.
Dus Ik-- onthouden pointers toename door de grootte van wat ze wijst.
Dus in dit geval, omdat het een char, zal het updaten met één.
Dus nu gaan we kijken naar 5, wat betekent dat het gaat hierheen.
Dus het zegt OK, ga naar 0x05.
Wat er in zit?
Het is een l.
En het zal blijven doen dat totdat raakt deze.
En het zegt OK, wat er in welk adres dit is?
De null terminator, OK.
Exit.
En net terug lengte.
Want je moet wat er eigenlijk op dat adres niet het adres zelf.
>> Er zijn maar weinig plaatsen waar u daadwerkelijk nodig het adres.
De meeste van de tijd dat Gebruikt u bent het en het is
wanneer u voor het eerst toewijzen van een pointer of als
je voorbij in een andere functie.
OK, iedereen goed daar?
Soort?
OK.
>> Dus het lijkt erop dat we hebben kreeg ongeveer 12 minuten over,
dus we zullen gaan naar misschien onze laatste probleem,
en dan is er elke concepten die zijn gekomen
in de tussentijd kunnen we snel naar boven dat.
>> Dus schakelen versnellingen is de laatste probleem hier, schakelen statements.
Dus uw taak is om deze te herschrijven zodat het op dezelfde manier gedraagt
maar niet switches.
Krijtachtige handen.
Dus vragen heeft over dit uit de vleermuis?
Geen?
OK.
Begrijpt iedereen dat als de geval niets na het te hebben,
betekent dat het moet volg dan de volgende stap?
Dus case 1 en 2 in dit geval doen precies hetzelfde.
Soms is een punt van verwarring.
>> Prima.
Iemand enig idee?
Yeah?
>> Publiek: Dus je kan gewoon doen als statements.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Dus wat is onze eerste?
>> PUBLIEK: Als n gelijk is gelijk aan 1, en de 2 lijnen voor of n gelijken
gelijk aan 2, dan print klein.
En dan kun je anders doen als?
Of kan je gewoon een doen als?
>> ALLISON BUCHHOLTZ-AU: U kunt anders doen als?
>> Publiek: Zou het uit of je doen als?
ALLISON BUCHHOLTZ-AU: Dus het doet.
Doet anyone-- zo, je zal dezelfde output te krijgen
als je gewoon ifs versus gebruiken als je anders ifs gebruiken.
Kunnen jullie denken van de reden waarom je zou willen om een ​​anders te gebruiken
indien versus een hoop mitsen?
Moet met efficiëntie.
Yeah?
>> Publiek: Het zou controleren alle mitsen elke keer.
>> ALLISON BUCHHOLTZ-AU: Dus zelfs als het raakte deze eerste,
het zou gaan op controle elke andere.
Dus je wilt als anders mitsen in gevallen gebruiken waarbij slechts een van hen ooit zal toepassen.
Dus wederzijdse uitsluiting is wat hebben we de neiging om te zeggen.
Als je een heleboel mitsen, betekent dat misschien meer dan een van hen
zaken, en misschien meer dan een van hen kan waar zijn.
En jullie beiden willen om uit te voeren als ze waar zijn.
Als je alleen wilt een van hen aan het werk In deze elkaar uitsluitende gevallen,
je wilt anders te gebruiken als, omdat Het heeft allemaal te maken met efficiëntie.
Uw code is gewoon beter ontworpen indien ze aan deze praktijk.
Dus in dit geval zullen we een else if hebben.
En dit zou?
>> Publiek: n gelijk is gelijk aan 3.
ALLISON BUCHHOLTZ-AU: Perfect.
Print medium.
En dan in onze laatste geval, wat hebben we?
Anders of anders als?
Publiek: Else.
>> ALLISON BUCHHOLTZ-AU: Do we want-- U wilt else if want we hebben concrete gevallen.
Het is niet een soort van een catch all.
Als u een standaard had in een switch-- herinneren in switches kun je case hebt,
en dan heb je standaard.
Als u een standaard gehad, dat is een soort van uw else statement daar.
Maar als het enige gevallen, dat betekent dat je nodig hebt
om te controleren om te zien of het is elk van deze.
Dus in dit geval zou het 4 of 5.
We willen een afdruk af.
Het is groot.
En daar ga je.
En dat zou je programma.
>> Dus in dit geval, als we had een standaard iets,
we zou anders hebben wat het wilde ons te doen.
Dus dat is een goed onderscheid te weten, te begrijpen.
Heeft die helpen met schakelaars voor u?
Perfect.
Prima.
>> We hebben ongeveer acht minuten over.
Hebben jullie enig andere high level concepten?
Vragen in het algemeen?
Ja?
>> Publiek: Ik had een vraag over een van hen
dat over de willekeurige number generator op quiz nul.
ALLISON BUCHHOLTZ-AU: Oh, die ene.
Dat men een andere waar het is meer wiskunde than-- ja.
De oplossing voor zelfs ik als dat-- Ik zie het, ik heb zoiets van wat is dit.
>> Publiek: Het was nummer 7.
>> ALLISON BUCHHOLTZ-AU: Het is vreemd in mijn mening.
Dus eigenlijk je wilt naar drand48, gebruiken die
zal je wat geven getal tussen 0 en 1.
En je wilt het zo te gebruiken dat je een of andere manier krijg a--
en het is veel meer een wiskundig probleem voor mij dan denk ik dat een CS probleem.
>> De manier waarop je het-- doen en soms zal het net zo zijn.
Nogmaals, dit zijn de gevallen waarin het is een soort
van als schrijven wat je kan en gedeeltelijke credit.
Dus als we willen een terugkeer, we weten dat we
gaat worden met behulp drand48 een of andere manier, toch?
Dus waarom niet we noteren alleen dat neer.
We gebruiken het op een bepaalde manier.
De manier waarop zij jullie gebruiken is
als deze, die ik zal proberen uit te leggen.
>> Dus eigenlijk wat hier gebeurt is omdat het tussen 0 en 1,
wat je doet is je vermenigvuldigen by-- dit is veel meer een wiskundige vraag.
Gewoon volledige disclaimer, is dit helemaal een wiskunde vraag.
Wat je doet is door 0 en 1 en u
wil dat het binnen zijn dit bereik je eigenlijk
erachter te komen hoe groot het bereik is, en dan
u in principe schaal it up, dat is wat deze aan het doen is.
>> b minus een geeft je dat bereik, de verschil tussen deze getallen.
U kunt vermenigvuldigen tussen 0 en 1, en daarna het toevoegen van een enkel
betekent dat uw opschalen zodat het tussen a en b,
die ik niet hou echt van dit probleem.
Zoals ik al zei, deze quiz wordt bedoeld te omvatten
mensen die minder comfortabel, ergens tussenin,
en nog veel meer comfortabel.
Dus als ze het zo gemaakt dat het iets was
dat iedereen bij de minder comfortabele plek zou krijgen,
zouden we veel te veel hebben mensen scoren perfectioneert,
en de meer comfortabele zou vervelen.
>> Dus ze hebben altijd deze soort brain teaser vragen
die zijn bedoeld om een ​​beetje moeilijker dat neem wat creatief denken.
Als je ze ziet, niet al te stumped.
Ik zou zeker flip zeggen door eerst uw quiz.
Het aanpakken van de problemen dat je weet dat je kunt,
want er is geen gebruik vast komen te zitten Op een probleem wanneer er drie
of vier of vijf op de pagina na dat je gemakkelijk kunt doen.
>> Publiek: Waarom doe je precies vermenigvuldig het met het bereik?
>> ALLISON BUCHHOLTZ-AU: U vermenigvuldigt het bereik dat je weten-- het is net hoeveel na een
wil je?
Dus je kunt bedenken, want het retourneert een getal tussen 0 en 1,
U kunt het zien als een percentage.
Dus het is eigenlijk te zeggen als we onze getallenlijn hier, een is hier,
en b is hier.
Je bent net als hoeveel verleden een is het?
Is alles wat we aan het doen zijn.
Dus je bent gewoon vragen om de percentage van dit bereik, dat
is wat het geeft je.
En dan moet je eigenlijk gewoon inpassen door toevoegen van een.
Het is een wiskundige breinbreker.
>> Als er een last minute advies, I zou flip zeggen door de vragen,
erachter te komen welke je weten dat als, oh ik heb dit.
Bijna zeker dat ze gaan zijn vragen die je niet weet
of dat je gaat om tijd te hebben voor, dus sloeg uw sterke punten, OK?
Jullie zijn naar grote.
Er zijn een heleboel vragen om een ​​reden,
zodat je tijd hebt om te soort hebben de mogelijkheid
welke tonen je bent echt goed in.
Dus het is OK als je niet goed in alles.
Speel op je sterke punten.
Ja?
>> Publiek: Dus is dit het gaan iets dat afgekapt terugkeren?
Ja, het zal, omdat drand rendement tussen 0 en 1.
Het zal een int terug, want het zal afkappen
als we voegen een of vermenigvuldigen met het.
Cool.
Op het laatste moment nog vragen?
>> Jullie zijn naar grote doen.
Je gaat fantastisch te zijn.
En zelfs als niet, zal er zijn snoep hier volgende week.
En Ik zal van u.
Ik zal van u guys ongeacht.
Oké, iedereen, veel geluk.
Heb een geweldige tijd.
Je gaat goed komen.
En weet je wat?
In twee dagen het gaat voorbij te zijn, terwijl ik
hebben twee tentamens op donderdag, dus tenminste jullie zal worden gedaan.
Oké, ik zie jullie volgende week.