ALLISON BUCHHOLTZ-AU: Hej, alla.
Välkommen till avsnitt.
Idag är bara kommer att bli allt frågesport granska din frågesport på onsdagen.
Jag hoppas att alla kommer ihåg att de har en frågesport på onsdagen.
Och om du inte gjorde det, ja, nu har du blivit påminda.
Så onsdag se till att du dyker upp för klass eller andra boenden som
nödvändigt.
Ni kommer att bli häftigt.
Det kommer att vara stor.
Och jag ska göra allt jag kan att hjälpa till att förbereda dig idag för din frågesport
nu.
Och även om du inte vet, Det är en kurs bred översyn session
idag klockan 07:00 i Northwest labs rum B103.
Du kan se mig igen för ett extranummer som Jag kommer att leda en del av denna översyn session
också.
Så om du inte kan få nog av mig Nu kan du komma igen i kväll.
>> Okej, så det viktigaste först.
Bara några frågesport tips innan vi faktiskt dyka in till recensioner.
Så som med alla examen, praktik kommer definitivt att hjälpa dig.
Det finns undersökningar från det förflutna sex eller sju år på det,
så det är en hel del övning material för er att ha.
Och i själva verket är idag egentligen bara kommer att gå över alla ämnen
att ni har frågor om såväl som arbetar genom övningsproblem
från frågesport noll.
Så jag ska kasta upp quiz noll från förra året om här,
och vi kan arbeta igenom eventuella problem att ni skulle vilja.
>> Så öva.
Du kommer att börja göra det idag.
Kod på papper.
Så ja, om alla kunde faktiskt komma ut
papper, det ska vara bra, eftersom du inte
kommer att ha din dator på examen och skriva ut kod för hand
är ofta mycket svårare än du kanske tror.
Du är van att bara se den och skriva den,
och du har din kompilator till hjälpa dig när du har fel,
men du inte får det på tentan.
Så det är verkligen viktigt att faktiskt kunna skriva ut koden,
och att muskelminne för att göra det för hand kommer verkligen att hjälpa dig.
>> Så vi får lite nära.
Det är måndag.
Din examen är på onsdag.
Men om du har tid, definitivt ta en
av proven från förra året eller året innan under tidspress
av en och en halv timme.
Bara slå ut en timme och en halv tid,
och sitta dig ner, och bara arbeta igenom problemen
som om du faktiskt var ta det, eftersom en
av de största saker som vi hör om frågesport är att de är mycket långa.
Det är en hel del material.
Det finns många frågor, och de flesta människor kan inte avsluta.
Jag vet att jag helt inte avsluta mina frågesporter när jag tog klassen.
>> Alltså, som ett mindre bekväm sektion,
förstå att den här kursen är tänkt för att tillgodose människor på alla nivåer.
Hela anledningen har vi du dela mindre bekväm, någonstans mellan,
och bekvämare är att sorts göra det mer rättvist.
Och om du är mindre bekväm, det är inte nödvändigt i sig för att få allt.
Som om du fick allt, skulle du antagligen
vara i mer bekväm sektionen.
Så uppenbarligen inte slå er upp för hårt om du inte kan genomföra tentamen.
Ta det från mig, jag gjorde inte det.
Jag är fortfarande en koncentrator.
Jag är fortfarande hjälpa undervisa kursen.
Du ska vara bra.
Okej.
Och slutligen, få lite sömn.
Självklart med en tentamen vi säger alltid det.
Plugga kvällen innan och inte få någon sömn
gör inte-- kanske om det fungerar för dig, gå för det.
Men för den stora majoriteten av människor, att få lite sömn,
låta din hjärna vila och återhämta sig innan man kommer in till tentamen
kommer verkligen att hjälpa dig.
Också det kommer nästan säkert vara godis på tentan,
så du måste se fram emot.
Ni kommer att göra bra.
Det kommer att bli bra.
Och nu i nästa och en halv timme jag kommer att försöka och prep dig så gott jag kan.
>> Så jag har diabilder från grunden alla avsnitt fram till nu.
Jag tänker inte gå igenom alla av dem för det är inte
genomförbar i en och en halv timme och som arbetar med övningsproblem.
Så istället har jag en lista över ämnen.
Dessa är alla saker att vi kan förhöra dig på.
Om det finns något som verkligen hoppar ut
att du vill gå över, att du vill att jag ska gå över konceptuellt,
Jag kan försöka ge dig en översikt där.
Eller om du vill hoppa rätt in till gör övnings problem tillsammans,
vi kan göra det.
Det är upp till er.
Det finns inte så många av er.
Så det är vad ni vill göra.
Jag vill vara den mest hjälp mot er.
Så jag ska låta er bara titta.
>> PUBLIK: En sak är diagrammet att vi håller
säger om bunten och högen.
Bara hela idén bakom det och vad det betyder.
ALLISON BUCHHOLTZ-AU: Ja, OK.
Detta är hela vägen på slut, så låt mig bläddra igenom.
>> PUBLIK: Vi behöver inte gör det nu, men vad som helst.
>> ALLISON BUCHHOLTZ-AU: Var det anything-- här.
Är denna typ av luddiga för människor?
PUBLIK: Ja, jag sekund som.
Och kan vi också göra buffertspill?
ALLISON BUCHHOLTZ-AU: Buffer overflow?
OK.
Så buffertspill är ganska lätt att bara prata om.
Det är i grund och botten buffrar du tycker om någon array minne som du har, eller hur?
Vi talar ofta om buffertspill när
du inte kontrollera hur mycket användaren sätter in, eller hur?
Och tanken är med buffertspill är
de sätter in långt för mycket data för utrymmet
att du har avsatts för dem, eller hur?
>> Så om du säger, ge mig några budskap, vi är
om man antar att de kommer att ge oss en rimlig längd meddelande.
Kanske ett par rader, allt.
Så vi inte kontrollera.
Istället matar oss i en hela boken som är ett meddelande,
och att det flödar över den mängd utrymme som vi har tilldelats för detta.
Och vad som händer är att det kan skriva över platser som det inte är tänkt.
>> Så jag vet professor Malan sade något om buffert overflow attacker.
Så det är där användaren input några massiva mängd data i hopp
att han skriver över tidigare I slutet av din buffert
och ersätter something-- jag undrar Jag att vi har dessa bilder i här.
Jag tror inte att vi har dessa bilder i här.
Men i grund och botten han skriver över viss del av minnet
som ger honom tillgång till delar av din dator
att du inte skulle normalt har tillgång till.
>> Största sak med buffertspill är bara
att förstå att det händer när du inte är
kontrollera hur mycket din Användaren sätter in.
När du inte är typen av skydda mot detta.
Och vid sin enklaste sak, det är bara ditt användarnamn
inmatning av en massiv mängd av data i ett försök
att skriva över en viss trygghet del av ditt minne.
Det är allt det är.
>> Så detta här, stack och heap.
I princip allt detta är bara en representation av minne
och där saker lagras.
Det är verkligen typ av allt du behöver veta.
De största sakerna som du behöver veta är
that-- Låt mig se om det finns en better-- här.
Så detta är stapeln här.
>> Så stack har att göra med alla dina funktioner
att du ringer vid en viss tidpunkt.
Och vad som är viktigt att komma ihåg gå bort av förra veckan med malloc
är att du egentligen inte har nödvändig kontroll över den.
Det beror helt på när vissa funktioner utför.
Och när de utför, de har vad som kallas stack ramar
att gå upp här.
>> Så det alla typer av händer utan någon verklig input från er.
Du skriver ditt program, och du låter den gå,
och stapeln slags tar hand om sig själv som den behöver.
Så om i huvud du ringer kub, som kommer att föras upp här.
Det kommer att skapa en ram.
Men det finns inget du uttryckligen göra att skapa den stack frame än
skriva funktionen att börja med, OK?
>> Vad är typ av under din kontroll är högen med malloc.
Så när du malloc någonting, du tar minne från högen.
Och det är minnet som du har, i brist på ett bättre ord,
explicit kontroll över, eftersom minnas med malloc
det är i princip det tills du säger något annat.
För er som såg avsnittet förra veckan,
det är där tills du säger till den att försvinna.
Det kommer att vara där, om inte annars sagt inte.
Så högen är bara något du kan tänka på som minne
att du har kontroll över.
Och de är bara två olika stora saker.
>> Annat än det, bör du inte ha oroa sig alltför mycket om stack och heap
frågor eller oftast mer bara om du har lokala parametrar
eller en funktion skulle det vara på stacken eller högen.
Uppenbarligen i detta fall det skulle vara stapeln.
Om du mallocing något, där det kommer från?
Högen.
Om man tittar på praxis frågesporter, de är i allmänhet den typ av frågor
som de har.
>> Du behöver inte oroa dig för mycket om det.
Du får in mer explicit om stack och heap
senare eller i andra CS klasser.
Så bara ha lite av en allmän uppfattning om vad det är
kommer att vara bra, som jag bara typ av gick över.
Alla andra ämnen?
Ja?
>> PUBLIK: Kan du gå över pekare igen riktigt snabbt?
ALLISON BUCHHOLTZ-AU: Pointers?
Vill du ha begrepps översikt av pekare
eller utövar du med pekare?
PUBLIK: Ungefär som syntaxen.
ALLISON BUCHHOLTZ-AU: Syntaxen?
Yeah.
OK, vi får där.
Ja, så detta är bara typ av något när du har en rekursiv funktion,
varje gång som rekursiv funktion är heter, bara lägger det andra stack ram.
Ganska mycket ett exempel hur du egentligen inte
ha kontroll över ramar på din stack.
>> OK, pekare.
Okej, så skapar pekare.
Kom ihåg, det är bara skriva stjärna.
Så oavsett vilken typ av data som du kommer att peka på.
Så detta skulle vara en pekare till en int.
Detta skulle vara en pekare till en char.
Detta skulle vara en pekare till en flottör.
Så det är i princip vad som helst du vill att den ska peka på,
stjärnan är hur du deklarerar pekaren, OK?
>> Men då är det uppenbart blir lite knepigt när man har pekaren
eller om du har stjärnan vad som helst.
Så den stora skillnaden är när du declaring--
så vi har some-- så Detta tar lite int stjärna.
Så det här är en del pekare Parlamentet x till en int, eller hur?
Så kom ihåg vad detta innebär Detta kallar system x.
Och detta kommer att har någon adress, eller hur?
Så låt oss bara säga att detta är vår adress.
Pekare hålla adresser.
Så vad detta säger är att vid denna plats, vi lagrar en int.
>> Så ett annat sätt vi kan tänka på detta är att detta är en del int.
Vi har inte riktigt tilldelat det till något ännu, men det är bara en int.
Så vi kan göra är att om vi gör stjärnan x lika 5, detta blir en 5, OK?
Detta säger gå till valfri x är pekar på, så gå till denna adress
och göra den lika med 5.
Så vi tilldelar 5 till denna adress, eller hur?
>> Och sedan om du gör det, detta ger oss adressen till.
Detta är adressen för operatören.
Så vad är adressen till x?
Vi vet inte.
Vi har inte tilldelat det en adress.
Vi skulle kunna säga att det är some-- nu vi gav det en adress, så adressen är 4.
Och faktiskt, om vi går igenom något så här, typ av vad vi gjorde.
Så arbetar genom här-- Jag tycker det hjälper om du drar ut pekare.
Om du är på din examen, jag rekommenderar att rita rutor.
>> Så denna första, lika int x 5.
Det betyder bara att vi har en del plats i minnet som är 5, eller hur?
Och vårt bord här berättar att det är på adress 0x04.
Och sedan skapar vi en del pekare.
Så låt oss dela upp en i taget.
Så detta skapar en viss rutan till en int, eller hur?
Det kommer att hålla någon adress en den.
Så det här är en del pekare.
Och detta krita är riktigt små.
Så vi har några pekare här.
Och vårt bord berättar det är adressen är 0x08.
Cool.
Och vi tilldelar det till adressen för x.
>> Kom ihåg, pekare håller adresser, OK?
Så om vi vill hålla x, vi har att använda adressen aktör och som
är et-tecken, för att få adressen av x, vilket i detta fall, 0x04.
Och sedan om vi har vissa int kopiera, detta bara
skapar någon annan ruta som innehar en int kallas kopia.
Och om vi tilldela den till this-- så här refererar det.
Så står det gå till valfri adresspekaren lastrum.
Pointer har denna adress, så vi skulle gå hit,
och vi säger, OK, vad betyder det?
Det är 5.
Så exemplar blir 5.
Vettigt?
>> Vad händer om jag försökte att tilldela detta för att bara pekare.
Vad innebär pekaren egentligen lika?
Det skulle bara vara vad som helst pekare innehåller, eller hur?
Och vad, om jag gjorde det här?
Vad skulle kopiera bli nu?
>> PUBLIK: 0x08.
ALLISON BUCHHOLTZ-AU: Japp, det adressen till vår pekaren.
Varje del av det som behöver för att åter förklaras?
Cool.
Det finns definitivt en mycket roliga problem på frågesport ena
att vi kan över denna ger dig mer praktik.
Killarna från förra veckan kan berätta om det var inte så illa.
Vi fick igenom en hel diagrammet, och alla gjorde bra.
>> OK, så det är översikt av syntax pekare.
Största sak är att förstå hur att skapa dem, gör refererar,
och adress, OK?
Cool.
Alla andra ämnen före vi dyker i praktiken.
Även om vi går igenom problemen övnings
och det är något du vill ha en repetitions på, kan vi göra det också.
Har du något?
>> PUBLIK: structs och länkade listor.
ALLISON BUCHHOLTZ-AU: structs och länkade listor, OK.
Så structs.
Vi har faktiskt går över denna kväll också.
OK, så structs.
Structs är i grunden bara ett sätt för dig att hålla
flera värden av olika slag.
Så med en array är vi trängd till en datatyp.
Vårt utbud är antingen att bara vara siffror, eller bara vara tecken, eller bara vara flottar.
>> Men kanske behöver du innehåller mer än så.
Kanske behöver du hold-- om du pratar om en student,
du kommer att ha sitt hus, sin ID-nummer, deras ålder, var de bor,
rätt?
Och alla dessa är olika typer av typer.
Så du kan inte lagra dem alla i en matris.
>> Så vad du kan göra är att du kan skapa en struct, som
du kan tänka på som din egen datatyp.
Så istället för att bara ha ints och istället för att bara ha flottörer,
du kan ha en typ elev som har alla dessa fält i den.
Så hur vi initiera våra structs är-- faktiskt
eftersom mitt skrivande är fruktansvärt, vi kommer att övergå till att skriva.
Woo.
>> OK, så om vi vill skapa en struct-- Jag ska bara ner det här.
Bortse från i huvud oavsett som vi kommer att använda senare.
Så det sätt du vill göra det är med typedef struct.
Och låt oss bara kalla detta elev eftersom det är vad jag använde.
OK, så typedef innebär att du som definierar en ny typ, OK?
Det finns nyanser i när du gör bara en struct kontra en typedef struct.
I allt väsentligt och ändamål, ni är bara
kommer att anta att de är ungefär samma och bara
använda typedef struct för nu.
Det kommer att bli mycket mer tydligt i ditt nästa P ställa in vad dessa skillnader,
men jag tror inte att du behöver oroa sig just nu.
Jag skulle mycket hellre du vet hur man skapar en,
åt den, och tilldela [? värde. ?]
>> En ny typ av struct, och Vi kallar det student.
Så efter att vi är klar skapar detta, för alla avseenden,
du kommer att ha en typ som kallas student.
Och du kan se det precis som en typ som en int, eller en flottör, eller en röding.
Det är bara en annan typ, OK?
>> Så i den här, vad har vi?
Vi har kanske ett namn.
Så kanske vi vill ha ett strängnamn.
Och vi har kanske en int som är ett ID.
Och vi har en annan i det är telefonnummer.
Och vi har some-- låt oss se.
Vad mer kan vi ha?
Vi ska ha lite sträng på hans hus.
Alla saker som en elev har.
>> Så detta skapar en struct nu.
Så hur kan vi skapa en student?
Om vi ​​har någon variabel som är kommer att tala om Walker här,
så vi have-- vi är bara kommer att kalla detta rullator.
Han behöver en typ.
Vad är din typ?
PUBLIK: Student.
ALLISON BUCHHOLTZ-AU: Student.
Så detta skapar bara ett objekt kan du komma på som har alla dessa saker.
Du skapade bara en rullator student.
Så nu måste vi kunna att tilldela alla dessa, eller hur?
Så är det någon som minns hur vi tillgång inom en struct?
PUBLIK: Period.
ALLISON BUCHHOLTZ-AU: Period Exakt.
Så om vi ville tilldela honom ett namn, kan vi göra det.
Självklart skulle detta be-- denna del här skulle
vara inom huvud, så faktiskt Låt mig göra detta.
Deklarera detta framför huvud så att vi kan använda den inom main.
Så nu vill jag att det ska göra ID, och vi ska bara göra en del där,
och sedan ska vi tilldelar ett hus.
Bam.
Cool.
>> Så nu ska vi någonsin behöver tillgång något senare on-- kanske we--
om vi någonsin behöver komma åt något, låt oss bara göra en int kopia ID.
Och jag vill kopiera Walkers id in i detta.
Hur kan jag göra det?
Du behöver komma åt inom walker struct till [? gå till det?] [? E?].
Och på samma sätt som vi delat upp det här, hur
kan vi komma åt det när vi vill ge det värdet till något annat?
PUBLIK: Walker.id.
ALLISON BUCHHOLTZ-AU: Ja, exakt.
Så det är ganska mycket alla du behöver veta för structs.
Du behöver bara tänka på dem som en annan variabel.
I grund och botten en skapa din egen variabel typ, OK?
Du använder den för att förklara variabler på något sätt.
Här walker fortfarande är en variabel.
Den har bara en typ elev nu istället av en typ int eller en typ sträng,
eller en typ röding.
Om det fanns ett enkelt sätt att prata om structs, det är bokstavligen bara en
skapa din egen datatyp som låter dig grupp
Alla dessa olika typ av data tillsammans.
Är det vettigt?
OK.
Det och åtkomst med prickar.
Ganska mycket allt du behöver.
>> OK, vart tog min PowerPoint gå?
Här är det.
Ja detta är konstigt.
Aha.
OK, cool.
Alla andra saker eller gör vi vill huvud öva?
Öva?
OK.
Grymt.
Jag ska avsluta detta.
Om vid någon tidpunkt under övningsfrågor,
Jag är glad att förnya och gå igenom saker.
Så jag har frågesport noll här uppe.
Om ni vill dra upp den på din dator,
precis som tar fem minuter att bläddra igenom.
Kanske väljer några topp frågor du vill gå över.
Om ni inte kan bestämma, vi ska bara sakta börja arbeta igenom dem,
men jag är säker på att det kommer att bli en del frågor som du är särskilt
ivriga att prata om och har mig arbeta igenom med er alla.
Så bara gå vidare och ta fem minuter.
Bläddra igenom.
Och detta är testet från 2013.
>> PUBLIK: Zero?
>> ALLISON BUCHHOLTZ-AU: Ja, frågesport noll.
Vi gör inte frågesport ena grejer.
Vi kommer att göra det i ett par veckor.
Även för er som kom sent, vi har godis,
så gör ni vill ha godis?
>> PUBLIK: Visst.
>> ALLISON BUCHHOLTZ-AU: Jag är bara kommer att skicka runt.
Hej, om ni kommer hit tidigt, får du mer godis.
Det är bra.
Ben, vill du ha godis?
Du vill ha en del av dessa?
Det finns också Snickers förekommande någon vill Snickers.
Jag ska lämna dem här och här.
Känn dig fri.
Vill du ha mer?
PUBLIK: Allt klart.
Tack.
>> ALLISON BUCHHOLTZ-AU: Och jag hade en trevlig liten hög där i början.
Ni får ta quiz och Jag får ha en frågesport gradering part.
Det är kaos.
900 tentor.
Det kommer att bli så kul.
Kommer att vara stor.
Jag är ganska säker på att det är en av de största personal bindning
nätterna år.
Har någon gjort quiz noll från förra året men av nyfikenhet?
>> PUBLIK: Delar av det.
>> ALLISON BUCHHOLTZ-AU: Delar av det, OK.
Hade du frågor om någon av dem?
PUBLIK: Jag har redan gick till kontorstid.
Tack ändå.
ALLISON BUCHHOLTZ-AU: Tja, förhoppningsvis det är fortfarande typ av hjälp.
När gick du till kontorstid för det?
PUBLIK: Min TF hade dem i eftermiddag.
ALLISON BUCHHOLTZ-AU: Oh.
Vem är din TF?
PUBLIK: Fred [? Wujaya?].
ALLISON BUCHHOLTZ-AU: Det finns så många TF.
Så många.
Okej.
Någon har någon att börja att jag kan skriva ned det vi vill arbeta med?
Jag antar pekarna en med bordet.
Gå för det.
>> PUBLIK: Kanske omkopplaren ett.
ALLISON BUCHHOLTZ-AU: Så nummer 12?
Jag antar nummer 8 och 9 är förmodligen sådana människor vill gå över.
>> Publik: Och 10 och 11.
>> ZAMYLA Chan: Och ni vet du får en sida av anteckningar, eller hur?
>> PUBLIK: Ja, så vad är Vi fick sätta på det.
>> ALLISON BUCHHOLTZ-AU: Du är tillåtet att sätta vad du vill.
Och det kan skrivas.
Såvitt jag minns, var vårt skrivit.
>> PUBLIK: Du kan göra tillbaka och båda sidor?
>> ALLISON BUCHHOLTZ-AU: Ja, båda sidor.
Så något liknande högen och [? bakändan?] hög, din kör
gånger.
Användbar.
Kanske lite saker om pekare för att påminna dig.
Syntax för saker.
Med precis som ett skelett Programmet kan vara super användbar.
Jag vet att jag alltid glömt exakt vad Jag skulle skriva om int main,
eftersom jag alltid bara kopiera klistra från min tidigare P set
eller det är redan där, så Jag har aldrig riktigt skrev det,
så med det kan vara super bra.
>> OK, så varför inte vi börja med nummer 8 då?
Okej.
OK.
Så anser programmet nedan.
Så självklart när vi ser pekare, det är nog
en bra idé att börja rita, eller hur?
Jag vill veta var alla mina stora bitar av krita gick.
Detta är typ av irriterande.
>> Så vi har här några swap-funktion det kommer att ta in två pekare.
Så i detta fall, de borde egentligen vara att byta
saker kontra vår ursprungliga swap funktion som bara tog på kopior.
Så vad det kommer att göra är-- låt oss börja med huvud,
eftersom det är där 1 är.
>> Så vi har några int x 1.
Vi har en del y som är lika med 2.
Och sedan har vi några swap som kommer att ta dem.
Och låt oss se vad vi har här att göra.
Och i vår table-- oh boy.
Hur ska jag göra det här?
Jag ska dra mitt bord här.
Knappt gör det där.
Knappt gör det.
1, 2, 3, 4, 5, 6, 7.
Och de ger oss, att 1 är 1 och 1 2.
Cool.
Grymt.
Så 3.
Och det finns [? a 1.?]
>> Okej.
Och sedan adress x är 0x123.
Och y är Ox127.
Cool.
Okej.
Jag vill att ni arbeta med detta för bara like-- arbete på det
med människorna runt omkring dig.
Jag önskar att jag hade sagt att medan jag ställer in.
Arbetet med den.
Försök och arbeta på det av er för ett par minuter,
och sedan kommer jag att arbeta på den med dig.
Eftersom det enda sättet du verkligen kommer att lära sig är genom att göra det själv.
Inga problem.
Lycka till.
>> OK, varför inte vi långsamt börja arbeta med detta.
Så alla får efter rad ett, är x 1.
Efter linje två, x och y är 1 och 2, eller hur?
Cool.
Så linje tre är där saker bli intressant förstås.
>> Så vad vi har gjort här är vi nu bytt.
Vi säger att x och y har de punkter, eller de har adressen för x och y,
rätt?
Så i detta fall, tre, vad som är värdet av ett?
a hade gått in, har givits värdet på adress x, eller hur?
>> PUBLIK: 1?
>> ALLISON BUCHHOLTZ-AU: Så vi lägga till x?
Vad är x adress?
>> PUBLIK: 0x123.
>> ALLISON BUCHHOLTZ-AU: Exakt.
Men vad är en egentligen pekar på?
Om vi ​​skulle dereference a, vilket värde det skulle ge oss.
Publik: 1.
ALLISON BUCHHOLTZ-AU: Det skulle ge oss 1, eftersom det som
vi säger är att gå till denna adress, berätta vad värdet är.
Så vad skulle vara b?
>> PUBLIK: 0x127.
ALLISON BUCHHOLTZ-AU: Exakt.
Så det är adressen till y.
Och vad [? dereference? ?]
PUBLIK: 2.
ALLISON BUCHHOLTZ-AU: OK, så nu fyra.
Vi sade en är equal-- bra nu vi har gjort int temp är lika med stjärna i en.
Så vilka förändringar?
Det finns bara en sak som ändras här.
Vad är det?
>> PUBLIK: Temp.
ALLISON BUCHHOLTZ-AU: Temp.
Så vi kan skriva om alla dessa.
En bra strategi för dessa är bara att räkna ut
vilka förändringar, eftersom oftast det finns bara en sak som är
kommer att förändras vid en viss punkt, OK?
Så vi har tilldelat temp.
>> Nu har vår nästa punkt, fem, vi har gjort stjärnan en lika Star B.
Så vilka förändringar nu?
>> PUBLIK: Stjärn a.
>> ALLISON BUCHHOLTZ-AU: Stjärn a, så allt annat förblir densamma.
Och vad gör stjärnan en lika?
>> PUBLIK: 2.
ALLISON BUCHHOLTZ-AU: 2.
Lovely.
Grymt.
OK, och sedan har vi nu börja b är lika med temp.
Så det enda som förändras är stjärnan f.
Allt annat förblir densamma.
Och vad är stjärnan b lika med nu?
Och du har fyllt i tabellen.
För nu i slutet, om vi säger x och y, vi vet att vid denna point--
Vi vet att när vi ändrats stjärna en till två,
Vad som gjorde det sa OK, på adress 0x123 här, ändra det.
Nu var två.
Och sedan på denna punkt, Vi sa OK, gå till stjärnan miljarder.
Så gå till adress 0x127 och göra det till en 1.
Så nu i slutet när vi faktiskt tillbaka för main,
vi faktiskt har att x är lika med 2 och y är lika med 1.
Alla bra med det?
OK, cool.
Nummer 9.
Ni arbetar med detta.
Jag ska sätta upp en bräda så att vi kan dra igenom det.
Det blir skitkul.
De stora tabeller kan vara verkligen skrämmande, jag vet.
Men om du bara ta dem en rad i en tid, de får mycket mindre skrämmande.
Okej.
>> Så du vet att det kommer att gått igenom huvud först, eller hur?
Initierar x och y och sedan försöker byta dem.
Så även swap är över, riktiga sättet det går är att vi går igenom main,
och då är det ringer upp för att byta, okej?
Så alla vet det.
>> Så som man gör du killar vill börja med?
Är det någon riktigt säker om en av dessa?
Eller ens delvis säker?
Varför vi inte börja med x?
Vad tror vi x är?
>> Publik: 1.
ALLISON BUCHHOLTZ-AU: 1.
Så varför är 2.
Och det beror på att stor skillnad här
är att vi bara passerar exemplar på, eller hur?
Vi är inte passerar genom hänvisning.
Så även i slutet av detta program x och y
har hållit samma sak, eftersom de är bara kopior i swap-funktionen.
De inte faktiskt ändra, eller hur?
>> Så hur är a, b, och temp?
>> PUBLIK: a är b.
>> ALLISON BUCHHOLTZ-AU: a är b.
Så i detta fall, en var x, vilket är 1, eller hur?
Så här, låt oss gå igenom det.
Så på början, a och b är 1 och 2 och odefinierat.
Så ursprungligen temp blir tilldelas till en, så temp är ett.
a är lika med B, så får vi 2, och b är lika med temp.
Nu får vi 1.
>> PUBLIK: I den föregående det bytte et-x och y-tecken.
Vad exakt innebär det?
ALLISON BUCHHOLTZ-AU: Så det innebär att du passerar genom hänvisning.
Så det betyder att du är faktiskt passerar adresser där
x och y är lagrade.
PUBLIK: Men du är inte byta till adressen.
ALLISON BUCHHOLTZ-AU: Du är inte byta adresserna.
Du byta vad som är i dem.
Liksom vad som står på den adressen, och det är därför det fungerar.
Versus i detta program här vad du gör är att du skapar kopior.
Så du har x och y som finns som sina egna variabler här ute.
Men sedan när du passerar dem i swap, det
som om du skapar denna hela andra set.
Så du är aldrig röra x och y.
>> PUBLIK: Om ampersand x är vad som står på adressen till x, vad skulle stjärnan x vara?
>> ALLISON BUCHHOLTZ-AU: Ampersand x är vad som står på adressen till x, sedan star-- väl,
i detta fall, är x inte en pekare.
PUBLIK: Åh, OK.
Så du bara göra detta eftersom det inte är en pekare.
ALLISON BUCHHOLTZ-AU: Höger.
Du kan bara göra stjärna något som är en pekare.
Kanske kan du göra det till saker som inte, men det kompilering som du
göra det galna saker skulle hända.
Och jag är inte exakt säker på vad som skulle hända.
Du kan alltid ta adress någonting,
men du kan inte dereference något som inte är en pekare.
Om det är vettigt, det är en god åtskillnad att ha.
>> Så inte så illa, eller hur?
Tabellerna är förhoppningsvis få något mindre skrämmande.
Okej.
Ah, det roliga sådana.
Så nu, skriva din egen kod.
Så jag ska låta er arbeta om detta i cirka fyra minuter,
och då kan vi prata om olika sätt att närma sig den.
Känn dig fri att prata med människor runt omkring dig.
Också detta är intressant.
Det är som en alla flickor sektionen just nu.
Ganska spännande.
Utom för Chang.
Men Chang är egentligen inte en del av avsnittet.
Grymt.
Perfect.
Så jag kommer att ge er ett par tips.
I det fall då man har flera tecken, där
du har något annat som 123 eller 1000 något,
du behöver för att kunna loop igenom och omvandla var och en av dem.
Så det finns ett par sätt du kan göra det,
men du definitivt kommer att ha en for-loop någonstans där för att slinga
genom dem, vilket är ungefär som giveaway
med även om du kallar STRLEN, vilket är ungefär som oh
kanske du vill använda längden av strängen på något sätt.
>> Okej.
Så vad tycker ni kan vara en av de första saker vi vill göra?
Det finns ett par fall här Vi måste ta hänsyn till, eller hur?
Antingen har vi något som är null.
Vad har vi?
Fall.
Null.
Vi har så att den har något annat än 09, eller hur?
Så låt oss säga att det är bokstäver.
Eller har vi det fall som är giltig.
Tre fall att tänka på.
Så som man tror du kan vara det lättaste att ta hand om först?
PUBLIK: Null.
ALLISON BUCHHOLTZ-AU: Fallet är null.
Så vad skulle vi göra där?
PUBLIK: [OHÖRBAR].
ALLISON BUCHHOLTZ-AU: Ja.
Och vad vill jag göra?
>> PUBLIK: Return 0.
>> ALLISON BUCHHOLTZ-AU: Exakt.
Grymt.
OK.
Så nu skift att den har bokstäver och det fall att det är giltigt.
Vi kan faktiskt ta hand om detta inom en slinga, OK?
Så ett sätt att göra det-- vad som kan vara ett enkelt sätt att kontrollera om det är giltigt.
Vi skulle behöva gå igenom varje bokstav och göra vad?
>> PUBLIK: Kontrollera om det är in--
>> ALLISON BUCHHOLTZ-AU: Höger, kan du kontrollera om det är mellan 0 och 9, eller hur?
Och sedan i fallet att det är giltigt, vi är
kommer att hamna iterera igenom vår sträng ändå, eller hur?
Så varför inte försöka kombinera dem till en.
Vi kommer att iterera genom hela sträng, och som vi
gör det, ska vi först göra en kontroll för att se om det brev
eller om det tecknet är giltigt.
Om det är, vi kommer att utföra operation som vi behöver för att konvertera den.
Annars kommer tillbaka 0, eller hur?
>> Så innan vi gör det, vi antagligen vill ha lite variabel
att vi kan återkomma i slutet det kommer att vara vår verkliga värde.
Så vi kommer att initiera ett visst värde för att vara 0.
Och det är precis så vi startar.
Så jag ska bli av med detta.
Så hur ska vi iterera genom denna sträng.
Publik: För loop.
ALLISON BUCHHOLTZ-AU: en for-loop.
Så vad är vår för?
>> PUBLIK: Jag är 0.
ALLISON BUCHHOLTZ-AU: Mm-hm.
Och vad är vi iterera tills?
>> PUBLIK: str längd s.
>> ALLISON BUCHHOLTZ-AU: OK, nu minns det finns ett bättre sätt. [OHÖRBAR].
>> PUBLIK: Ja, vi kan göra n är lika.
ALLISON BUCHHOLTZ-AU: Exakt.
>> Publik: i är mindre än n.
ALLISON BUCHHOLTZ-AU: Och varför skulle vi vilja göra det?
Kommer du ihåg varför?
PUBLIK: Vi måste räkna om det.
ALLISON BUCHHOLTZ-AU: Becasue detta sätt endast måste beräkna strlen gång.
Om du gör i är mindre än strlen s, det betyder att den beräknar
längden varje gång du kör för slingan,
vilket inte är en stor kostnad av energi, det men det
bättre metoder för att försöka göra saker som det en gång.
Om inte kanske du har en galen sträng som är förändras vid varje iteration.
Men om det är att vara oförändrad, spara den.
Okej.
Och sedan jag plus plus.
Grymt.
Vi är på väg.
PUBLIK: Verkligen snabbt.
Först, så låt oss säga att vi bara gjorde jag mindre än strlen av s,
de gradera oss på design alls eller bara korrekthet?
De är inte.
Vi gradering på korrekthet för frågesporter så vitt jag vet.
Jag kan inte göra en fullständig på garanti, men för det mesta,
allra flesta är korrekthet, eftersom du är under stor tidspress.
Design innebär vanligtvis du har tid att tänka
om elegansen i din situation.
>> OK, så vi iterera igenom.
Så vi måste antingen kontrollera se om denna karaktär är giltigt
eller om vi kan utföra vårt normal [? en till jag?] -funktionen.
Vi kan oroa dig för vad som är i en sekund.
Så varför inte vi take-- om någon kan tänka
om ett sätt att kontrollera att se om detta är giltigt.
Vi vet att det kommer att bli några om tillstånd, eller hur?
Och kom ihåg detta är i ASCII, så hur kan
vi se om det inte är 0,1, 2, 3, 4, 5, 6, 7, 8, eller 9.
PUBLIK: Om alfa.
>> ALLISON BUCHHOLTZ-AU: Så om alpha skulle bara låt oss veta om det är en bokstav.
Och om de ger oss en symbol, det är fortfarande inte riktigt går att kontrollera.
Så om du drar upp din ASCII bord, vet vi att 0 till 9
är i ett segment.
Säg mig siffrorna att de motsvarar om möjligt.
PUBLIK: 40.
>> ALLISON BUCHHOLTZ-AU: Så utbudet är som 40--
PUBLIK: Kanske.
48-57.
JAG ÄR INTE SÄKER.
>> ALLISON BUCHHOLTZ-AU: 40-57?
>> PUBLIK: 48, tror jag.
ALLISON BUCHHOLTZ-AU: 48-57.
Så vi vet att de som ASCII symbols-- om ASCII-värdet inte är
mellan 48 och 57, det är inte giltigt, eller hur?
Så skulle vi kunna använda det för att vår fördel möjligen?
Hur ska vi få detta brev, första off?
Hur ska vi komma åt detta denna karaktär?
>> PUBLIK: s fäste i.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Eftersom vi kan tänka på strängar som matriser, minns.
Så vad är det vi vill ha sagt?
Vi vill säga om det är-- Jag ska ge er en ledtråd.
Det är en mindre än.
Vad som du tror att det måste vara mindre än?
PUBLIK: 57?
>> ALLISON BUCHHOLTZ-AU: 47, eller hur?
Men det innebär också att när du en 0 i enkel [? ekrar?], eftersom det är
tecknet 0.
Du kan också sätta 47.
Med ASCII tabellen, som du ser, är bara något
du ska ha på din frågesport bladet.
>> Så om detta är fallet, om det är en mindre än 0-- inte nödvändigtvis och.
Det är bara antingen kommer att bli mindre än eller större än 9.
Så kan du fylla i denna sista för mig?
Så eller s för i är vad, Rhea?
>> PUBLIK: Större än 9.
>> ALLISON BUCHHOLTZ-AU: Det.
Betyder det vettigt att alla, hur vi kom dit?
Dessa problem, de är som när du se lösningarna, det är som oh, OK.
Och det är därför praxis kommer att hjälpa dig.
OK, så vi återvänder 0.
Lovely.
Okej.
Annars vad vill vi göra?
Detta är den intressanta delen där det är lite mer
som matematik kontra CS i min mening.
Har någon en idé om hur vi kan göra det här?
Så viktiga att inser är det första tecknet
vi tar kommer att bli högsta rang siffra, eller hur?
Så om vi tittar på att omvandla 123, första gången vi iterera
är kommer att bli 1, men vi behöver att för att vara 100 i slutet, eller hur?
Så en sak du kan göra är att med varje efterföljande siffra
du tar, du multiplicera ditt värde med 10, så att när du kommer till slutet,
allt har varit skiftat upp, eller hur?
>> Så den första gången du kör den, har du 1 som ditt värde.
Andra gången du kör det, du multiplicera ditt värde med 10.
Det kommer att uppdatera den så att det är nu 10, och du lägger på din nästa värde.
Och sedan multiplicera detta med 10 och lägg på nästa värde.
Och det är därför de säger detta är mycket mer som test
ett matematiskt algoritm kontra CS, men jag avvika.
Jag skriver inte på frågesporter.
>> Så en sak vi kan göra är vi säger värde gånger är lika med 10.
Så detta kommer att skifta din siffra en gång varje gång.
Och så vill vi bara lägga till.
Vi vill lägga in vad vi precis fått, eller hur?
Så hur gör vi egentligen omvandla vår ASCII-tecken i numret
att den representerar?
>> Så vi vet att 0 är lika med 47, eller hur?
Så om 0 är 47, vad skulle vi behöva göra för att det
att faktiskt göra det vara en int med 0?
>> PUBLIK: Det är 48.
ALLISON BUCHHOLTZ-AU: 48?
Ursäkta.
Vi skulle subtrahera 48, eller hur?
Kom ihåg ASCII matte?
Vi kan behandla dem bara som vanliga siffror.
Om du behandlar dem som siffror, de blir tal effektivt.
Så om vi har s av i, som låt oss säger i detta fall är lika med 0.
Så s på i i det här fallet skulle vara den ASCII--
ASCII int för att det skulle vara 47.
Så vi kunde subtract-- eller 48.
Du kan göra det, är ett sätt.
Någon som vet en bättre sättet vi kan göra 48?
Vi sa bara 0 är-- gå in ASCII du kunde göra quote 0.
Det gör det slags göra känsla hur det här fungerar?
>> Publik: Vid denna punkt, är värdet 0 eftersom även om du multiplicera det med 10,
du börjar med noll, så ska den stängas?
>> ALLISON BUCHHOLTZ-AU: Så i detta fall, du vill multiplicera den innan du lägger till,
eftersom i detta fall, ja, skulle det fortfarande be-- min pekare saknas.
Värdet i detta fall, den första När vi kör det kommer att vara noll.
Så du bara lägga på den första siffran.
Det viktiga är nästa gång du upprepa, att du vill flytta upp
innan du lägger din nästa siffra på.
Betyder det att klargöra för dig?
OK.
>> Ibland ska du får konstiga fler Mathy saker.
Om du hade mest detta, du kommer fortfarande
att get-- du kommer att göra ganska bra.
Partiell kredit är en mycket stora grej på CS50 frågesporter.
Så skriv vad du vet.
Om du fick allt utom för här, du är
fortfarande kommer att göra riktigt bra problemet.
Eftersom du visar, OK, jag vet nästan.
Jag vet att jag behöver för att iterera igenom.
Jag vet vad jag behöver för att leta efter.
Jag gör bara inte riktigt få hur du konverterar den.
Du kommer att vara OK.
Ja, du kommer att förlorar ett par poäng,
men du fortfarande kommer att få en bra antal poäng för något
så om du är saknas dessa två linjer.
Jag skulle vara som OK, den här personen vet vad de ska göra.
Math är hård.
Så jag skulle säga att du skulle vara bra.
>> OK, så du killar redo att försök STRLEN med pekare nu
att ni är pekar mästare?
Så jag ska låta er arbeta om det för lite.
Om någon behöver en uppdaterare.
Så du vill använda pekare aritmetik, och sedan om s är null
din implementation bör återgå 0.
Saker som detta som gör dig verkligen glad över att bara ringa strlen
vid slutet av dagen.
Jag tror att detta kan vara lite enklare än den förra, som
är bra.
Jag ska ge er en minut, och sedan kommer vi att arbeta igenom det.
Och sedan får vi gå till switchar.
>> OK, redo killar?
Kanske lite.
Så jag har gett dig ditt två alternativ, eller hur?
Antingen kontrollera null och returnera 0 om den är, eller faktiskt beräkna längden.
Så vem vill skriva kontrollera null?
Gå för det.
>> PUBLIK: Om parentes s är lika är lika med noll avkastning 0.
ALLISON BUCHHOLTZ-AU: Lovely.
Jag älskar när halva ditt problem bara söker efter null.
Jag vet med er sist veckan jag var som kontroll för null
bokstavligen varje gång.
OK, so--
>> PUBLIK: Om retur 0 är bara en rad, behöver fortfarande behöver vi klammer?
>> ALLISON BUCHHOLTZ-AU: Du behöver inte tekniskt behöver dem så länge du är konsekvent.
Det är god praxis bara att få en vana
att använda klammerparenteser, men tekniskt nej.
Du behöver inte dem för en rad.
Vi tenderar bara att rekommendera den för människor som börjar programmet.
>> Så nu vad vi kanske vill göra här?
Så nu vet vi att vår sträng är giltigt.
Vi vill hålla beräkna längden.
Vad är troligen den första Det vi vill göra?
>> PUBLIK: Skapa ett int det är längden.
ALLISON BUCHHOLTZ-AU: Exakt.
PUBLIK: Och vi vill sätta den till?
ALLISON BUCHHOLTZ-AU: 0.
Perfect.
Okej.
Nu vad vill göra?
Detta är verkligen den största delen av den.
Gå för det.
>> PUBLIK: Så du förmodligen göra en for-loop.
Och sedan då när du ringer s du är att få adressen till den första,
du skulle börja med jag lika med 0.
Och sedan så länge x plus jag inte tillbaka slash 0.
ALLISON BUCHHOLTZ-AU: Noll terminator.
PUBLIK: Noll terminator.
Då kan du lägga till en till längd.
>> ALLISON BUCHHOLTZ-AU: Ja.
OK, låter så vänder det till mycket konkret kod.
Men det är den perfekta idén.
Det är precis vad vi gör.
Vi kommer att vara iteration igenom med pekaren.
Så vad vi vill göra är istället för en int
här, eftersom vi är inte hänvisar till en man.
Vi hänvisar till början av en sträng, börja att vara lite adress,
rätt?
>> Så vi vill ha en pekare.
Så vi kommer att ha lite röding stjärna, eftersom det motsvarar våra s, eller hur?
Så det här är någon gång vi initierar till början av strängen, OK?
Så låt oss bara kalla det i.
Om det är i början av strängen, Vad kommer det att tilldelas?
Inte 0.
Vi vill att det ska vara start av vår sträng.
Vad är inledningen på vår sträng som gavs till oss?
>> PUBLIK: Just s.
>> ALLISON BUCHHOLTZ-AU: s.
Så detta skapar någon ny pekare som är inledningen på vår sträng, OK?
Ett annat sätt att tänka på det är som att här är vår samling.
Det är vår sträng, s.
Så låt oss säga att detta är den första plats, och detta är 0x4.
04.
Detta är vår s, som innehar den adressen.
Och vi bara skapat en annan som heter Jag som bara hänvisar till samma sak.
Så de båda bara peka till början av vår sträng.
Detta är bara en grafisk representation.
>> Så nu vad vi vill göra är att vi vill att iterera
vår förutsättning för iteration genom vår sträng.
Nu handlar.
Fick att shoppa, killar.
Är vi vill behålla uppdatering förrän vi når noll terminator, eller hur?
Så vad skulle det se ut?
Vill vi i, eller vill vi stjärnan i är frågan?
Är noll terminator en adress eller något som ligger på en adress?
Beläget på en adress, eller hur?
>> Så vi behöver dereference allt som är här, för detta är bara några adress.
För att verkligen komma till start vi behöver dereference detta
så att vi faktiskt får vad som finns i denna första plats.
Så om vi gör stjärnan i, vad vi inte vill att det ska lika?
PUBLIK: Back slash?
>> ALLISON BUCHHOLTZ-AU: Det.
Betyder det vettigt för alla?
Vi måste gå in i vår sträng och se till att det inte är slutet.
Och då kan vi bara uppdatera så här.
Normal uppdatering.
Så länge de är met, vad behöver vi göra?
>> PUBLIK: Längd plus plus.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Och sedan efter det att slingan slutar, vad är det vi vill återvända?
PUBLIK: Längd?
ALLISON BUCHHOLTZ-AU: Längd.
Där du går.
Uppenbar kött av denna är att förstå detta för slinga.
Får alla människor hur det fungerat?
Jag är glad för att gå igenom det igen.
>> Publik: Det andra del, så stjärnan jag där,
det är adressen till first--
ALLISON BUCHHOLTZ-AU: Det är inte adressen.
Det är vad som står på.
PUBLIK: Det är faktiskt i det.
ALLISON BUCHHOLTZ-AU: Det är vad är egentligen där inne.
Så detta är saying-- låt mig göra detta bättre.
Så det här är 0x04, och jag kommer bara att säga att jag kommer att göra detta mitt namn.
OK.
Ja, jag vet att jag har frågesport översyn ikväll.
Massor av frågesport översyn.
Så låt oss säga den här strängen är mitt namn, Allison.
Lite rörigt, men det finns där.
Och s representerar platsen av där strängen börjar,
så jag kommer att göra detta real-- detta är adressen till en,
där strängen börjar, eller hur?
>> Så vad vi gör här är att vi vill använda pekare för att iterera igenom.
Så skapar vi en del pekare, i, som också är lika med början av strängen.
Och vid varje punkt, vill vi fortsätta gå igenom arrayen
här tills vi hit null terminator.
Så vi alltid vill kontrollera vad som är vid var och en av dessa adresser.
>> Så vi dereference i, så att första gången vi gör det vi
säger, OK, vad som står på adress 0x04?
Det är ett a.
OK, vi är bra.
Increment längd.
Gå vidare till nästa.
Så jag-- minns pekare ökning av storlek allt vad de pekar på.
Så i detta fall, eftersom det är en röding, det ska uppdateras med ett.
Så nu ska vi titta på 5, vilket innebär att det kommer hit.
Så det står OK, gå till 0x05.
Vad finns där inne?
Det är en l.
Och det kommer att fortsätta göra det tills den träffar här.
Och det står OK, vad som finns i oavsett adress är detta?
Noll terminator, OK.
Exit.
Och bara tillbaka längd.
Eftersom du behöver det är faktiskt på den adressen, inte adressen själv.
>> Det finns väldigt få platser där du faktiskt behöver adressen.
Merparten av tiden när du använder och det är
när du är först tilldela en pekare eller när
du passerar den till en annan funktion.
OK, alla bra där?
Typ av?
OK.
>> Så det ser ut som vi har fick ca 12 minuter kvar,
så vi ska gå vidare till kanske vår sista problemet,
och sedan finns det någon begrepp som har kommit upp
under tiden kan vi snabbt gå över det.
>> Så byta redskap är den sista problem här, byter uttalanden.
Så ditt jobb är att skriva om det här så att den beter sig på samma
men använder inte switchar.
Kritaktiga händer.
Så några frågor om detta utanför bat?
Inget?
OK.
Förstår alla att om fall har inte något efter det,
Det innebär att det ska Följ nästa steg?
Så fall 1 och 2 i detta fall göra exakt samma sak.
Ibland en punkt av förvirring.
>> Okej.
Någon som har några idéer?
Yeah?
>> PUBLIK: Så du kan bara göra om uttalanden.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Så vad är vår första?
>> Publik: Om n är lika är lika med 1, och de två raderna för eller n är lika med
är lika med 2, skriv sedan ut litet.
Och då kan man göra annars om?
Eller så kan du bara göra en om?
>> ALLISON BUCHHOLTZ-AU: Du kan göra annars om?
>> PUBLIK: Skulle det någon roll om du gör om det?
ALLISON BUCHHOLTZ-AU: Så det gör.
Har anyone-- så, du kommer att få samma utgång
om du använder bara ifs kontra om du använder annars ifs.
Kan ni komma på orsaken varför du kanske vill använda en annan
Om kontra en hel del av ifs?
Måste med effektivitet.
Yeah?
>> PUBLIK: Det skulle kontrollera alla ifs varje gång.
>> ALLISON BUCHHOLTZ-AU: Så även om slog det här första,
det skulle gå på kontroll varannan.
Så du vill använda om annans ifs i fall där endast en av dem någonsin kommer att gälla.
Så ömsesidig uteslutning är vad vi brukar säga.
Om du har ett gäng ifs, betyder det att kanske mer än en av dem
frågor, och kanske mer än en av dem kan vara sant.
Och du vill ha dem båda att köra om de är sanna.
Om du bara vill ha en av dem att arbeta i dessa ömsesidigt uteslutande fall
du vill använda annat om det på grund det hela har att göra med effektivitet.
Din kod är bara bättre utformad om man håller sig till denna praxis.
Så i detta fall kommer vi att ha en annan om.
Och detta skulle vara?
>> PUBLIK: n är lika med 3.
ALLISON BUCHHOLTZ-AU: Perfect.
Tryckmedium.
Och sedan i förra fall, vad har vi?
Else annars om?
Publik: Else.
>> ALLISON BUCHHOLTZ-AU: Gör vi want-- Du vill annars om eftersom vi har konkreta fall.
Det är inte typ av en fångst alla.
Om du hade en standard i en switch-- minns i växlar du kan ha fall
och då har du standard.
Om du hade en standard, det är typ av din annans uttalande där.
Men om det har endast fall, det betyder att du behöver
att kontrollera om det är var och en av dem.
Så i detta fall, skulle det 4 eller 5.
Vi vill ha en utskrift av.
Det är stort.
Och där du går.
Och det skulle vara ditt program.
>> Så i detta fall, om vi hade en standard något,
Vi skulle ha en annan i vad det ville att vi skulle göra.
Så det är en bra skillnad att veta, att förstå.
Betyder det hjälp med switchar för dig?
Perfect.
Okej.
>> Vi har ungefär åtta minuter kvar.
Vill ni ha något andra höga nivå begrepp?
Frågor i allmänhet?
Ja?
>> PUBLIK: Jag hade en fråga om en av dem
det var om den slumpmässiga nummer generator på frågesport noll.
ALLISON BUCHHOLTZ-AU: Åh, en som.
Att man är en annan där det är mer matte than-- ja.
Lösningen på that-- även jag när Jag ser det, jag gillar det som är här.
>> PUBLIK: Det var nummer 7.
>> ALLISON BUCHHOLTZ-AU: Det är konstigt tycker jag.
Så i princip du vill att använda drand48, vilket
kommer att ge dig några tal mellan 0 och 1.
Och du vill använda den så att du på något sätt få en--
och det är mycket mer av ett matematiskt problem för mig än jag tror att en CS problem.
>> Det sätt som du gör det-- och Ibland kommer det bara vara så.
Återigen, dessa är de fall där det är typ
som att skriva vad du kan en del av krediten.
Så om vi vill ha en återgång, vi vet att vi är
kommer att använda drand48 på något sätt, eller hur?
Så varför inte vi bara krafsa ner det.
Vi använder den på något sätt.
Det sätt som de har ni använder det är
så här, som jag ska försöka förklara.
>> Så i princip vad som händer här beror på att det är mellan 0 och 1,
Vad du gör är att du multiplicera by-- detta är mycket en mattefråga.
Bara fullständiga ansvarsfriskrivning, det här helt en mattefråga.
Vad du gör är på grund av 0 och 1 och du
vill att det ska vara inom detta område, du faktiskt
räkna ut hur stor utbudet är, och sedan
du i princip skala upp, vilket är vad denna gör.
>> b minus ger dig det intervallet, det Skillnaden mellan dessa siffror.
Du kan föröka sig mellan 0 och 1, och sedan lägga till en rättvis
innebär att din trappa upp så att det är mellan a och b,
som jag inte riktigt gillar det här problemet.
Som jag sa, det här testet avser att omfatta
människor som är mindre bekväm, någonstans däremellan,
och mer bekväm.
Så om de gjorde det så att det var något
att alla på mindre bekväm plats skulle få,
vi skulle ha alldeles för många människor dödat fulländar,
och bekvämare skulle bli uttråkad.
>> Så de alltid har dessa typ av hjärn teaser frågor
som är tänkta att vara lite svårare att ta lite kreativt tänkande.
När du ser dem, inte får alltför illa till.
Jag skulle definitivt säga flip via din frågesport först.
Itu med problemen att du vet att du kan,
eftersom det inte finns någon användning fastnar på ett problem när det finns tre
eller fyra eller fem på sidan Efter det kan du enkelt göra.
>> PUBLIK: Varför är det ni multiplicera det med sortimentet?
>> ALLISON BUCHHOLTZ-AU: Du multiplicerar det intervall som du veta-- det är som hur mycket efter en
vill du ha?
Så du kan tänka på, eftersom det returnerar ett tal mellan 0 och 1,
Du kan se det som en procentsats.
Så det är i princip säger om vi har vårt nummer linje här, en är här,
och b är här.
Du är som hur mycket förbi en är det?
Är allt vi gör.
Så du bara ber om det andel av detta intervall, som
är vad det ger dig.
Och då du i princip bara skala upp genom att lägga till en.
Det är en mattehjärngymnastik.
>> Om det fanns någon sista minuten råd, jag skulle säga flip igenom frågorna,
räkna ut vilka som du vet att liksom, åh jag fick det här.
Nästan säkert kommer de att vara frågor som du inte känner
eller att du kommer att ha tid för, så slog dina styrkor, OK?
Ni kommer att stora.
Det finns en hel del frågor för en anledning,
så att du har tid att slags har möjlighet
att visa vad du är riktigt bra på.
Så det är OK om du är inte bra på allt.
Spela på dina styrkor.
Ja?
>> PUBLIK: Så är det att gå till returnera något som stympad?
Ja, det kommer, eftersom drand avkastning mellan 0 och 1.
Det kommer tillbaka en int, eftersom det ska stympa
När vi lägger till en eller multiplicera med den.
Cool.
Alla sista minuten frågor?
>> Ni kommer att göra bra.
Du kommer att vara fantastiska.
Och även om det inte, det kommer vara godis här nästa vecka.
Och jag kommer att älska dig.
Jag älskar er oavsett.
Okej, alla, lycka till.
Ha en bra tid.
Du kommer att bli bra.
Och vet du vad?
Under två dagar det kommer vara över, medan jag
har två midterms på torsdag, så åtminstone ni kommer att ske.
Okej, jag ska se er nästa vecka.