ALLISON BUCHHOLTZ-AU: Hej, alle sammen. Velkommen til sektionen. I dag er bare at være alt quiz gennemgå for din quiz på onsdag. Jeg håber, at alle husker, at de har en quiz på onsdag. Og hvis du ikke gjorde det, ja, nu har du blevet mindet om. Så onsdag sørg for at du dukker op for klasse eller andre overnatningssteder, som nødvendigt. Du fyre kommer til at være awesome. Det kommer til at være stor. Og jeg har tænkt mig at gøre alt, hvad jeg kan at hjælpe med at forberede dig i dag for din quiz nu. Og også i tilfælde af at du ikke kender, der er et kursus bred gennemgang session i dag Klokken 7 i Northwest labs værelse B103. Du kan se mig igen til et ekstranummer som Jeg vil lede en del af denne gennemgang session også. Så hvis du ikke kan få nok af mig nu, kan du komme igen i aften. Okay, så første ting først. Blot nogle quiz tips, før vi faktisk dykke i til anmeldelser. Så som med enhver eksamen, praksis vil helt sikkert hjælpe dig ud. Der er prøver fra fortiden seks eller syv år på der, så der er en masse praksis materiale til jer at have. Og i virkeligheden, i dag er egentlig bare kommer til at gå over alle emner at du fyre har spørgsmål om såvel som arbejder gennem praksis problemer fra quiz nul. Så jeg vil kaste op quiz nul fra sidste år om her, og vi kan arbejde gennem eventuelle problemer at jer gerne vil. Så øve. Du kommer til at begynde at gøre det i dag. Kode på papir. Så ja, hvis alle faktisk kunne komme ud papir, vil det være fantastisk, fordi du ikke er vil have din computer på eksamen og skrive ud kode ved hånden er ofte meget vanskeligere end man kunne forvente. Du er vant til bare se det og skrive det, og du har din compiler til hjælpe dig ud, når du har fejl, men du får ikke at på eksamen. Så det er virkelig vigtigt at faktisk være i stand til at skrive koden ud, og at muskel hukommelse at gøre det i hånden vil virkelig hjælpe dig. Så vi får en lidt tæt. Det er mandag. Din eksamen er på onsdag. Men hvis du har tid, helt sikkert tage en af prøverne fra sidste år eller året før under tidspresset af en time og en halv. Bare knock out time og halvdelen af ​​tiden, og sæt dig ned, og bare arbejde gennem de problemer, som hvis du var faktisk at tage det, fordi man af de største ting, som vi hører om quizzer er, at de er meget lange. Det er en masse af materiale. Der er en masse spørgsmål, og de fleste mennesker kan ikke afslutte. Jeg ved, at jeg helt ikke færdig mine quizzer da jeg tog klassen. På dette notat, som et mindre komfortabel sektion, forstå, at dette kursus er tiltænkt at tage højde for folk på alle niveauer. Hele grunden, vi har du opdele mindre behagelig, et sted mellem, og mere komfortabel at slags gøre det mere fair. Og hvis du er mindre behageligt, det er ikke nødvendigt i sig selv at få alt. Ligesom hvis du skulle få alt, ville du sandsynligvis være i mere komfortabel sektion. Så naturligvis ikke slå jer op for hårdt, hvis du ikke kan afslutte eksamen. Tag det fra mig, havde jeg ikke gøre det. Jeg er stadig en koncentrator. Jeg er stadig at hjælpe undervise kurset. Du vil være fint. Ok. Og endelig få noget søvn. Naturligvis med enhver prøve vi altid siger dette. Proppe natten før og ikke får nogen søvn gør not-- måske hvis det virker for dig, gå til den. Men for størstedelen af mennesker, at få nogle søvn, lade din hjerne hvile og komme sig før kommer i til eksamen vil virkelig hjælpe dig. Der vil også næsten sikkert være slik ved eksamen, så du er nødt til at se frem til. Du fyre vil gøre stor. Det kommer til at være fint. Og nu i den næste time og en halv jeg vil forsøge og prep dig som bedste, som jeg kan. Så jeg har slides fra grunden alle sektioner indtil nu. Jeg har ikke tænkt mig at gå igennem alle dem, fordi der ikke er anvendes i en time og en halv samt som arbejder gennem praksis problemer. Så i stedet har jeg en liste over emner. Disse er alle de ting, at vi kunne quiz dig på. Hvis der er noget der virkelig springer ud at du ønsker at gå over, at du vil have mig til at gå over begrebsmæssigt, Jeg kan forsøge at give dig et overblik der. Eller hvis du ønsker at hoppe ret i at gøre praksis problemer sammen, vi kan gøre det. Det er op til jer. Der er ikke så mange af jer. Så det er, hvad du fyre kan lide at gøre. Jeg ønsker at være den mest hjælpsom mod jer. Så jeg vil lade dig bare se. PUBLIKUM: Én ting er diagrammet, at vi holder siger om stakken og den bunke. Bare hele idéen bag det, og hvad det betyder. ALLISON BUCHHOLTZ-AU: Ja, OK. Dette er helt i ende, så lad mig rulle igennem. PUBLIKUM: Vi har ikke til gør det nu, men uanset hvad. ALLISON BUCHHOLTZ-AU: Var der anything-- denne ene. Er denne form for fuzzy for mennesker? PUBLIKUM: Ja, jeg sekund det. Og kan vi også buffer overflow? ALLISON BUCHHOLTZ-AU: Buffer overflow? OK. Så buffer overflow er temmelig let bare at snakke om. Det er dybest set buffere du synes om nogle matrix hukommelse, som du har ret? Vi taler typisk om buffer overflow når du ikke kontrollere, hvor meget brugeren er i færd med, right? Og ideen er med buffer overflow er de sætter i langt for mange data til rummet at du har afsat til dem, right? Så hvis du siger, giver mig nogle budskab, er vi under forudsætning af, at de kommer til at give os en rimelig længde besked. Måske et par linjer, whatnot. Så vi ikke kontrollere. I stedet de foder os i en hele bogen, der er et budskab, og det flyder mængden af rum, som vi har afsat til dette. Og hvad der sker, er det måske overskrive steder, at det ikke er meningen. Så jeg ved Professor Malan sagde noget om buffer overflow angreb. Så det er, hvor brugeren vil input nogle massive mængde af data i håb at han overskriver forbi slutningen af ​​din buffer og erstatter something-- jeg spekulerer Jeg vi har disse dias i her. Jeg tror ikke, vi har disse dias i her. Men dybest set han overskriver en del af hukommelse der tillader ham adgang til dele af din computer at du ikke ville normalt har adgang til. Største ting med buffer overflow er bare at forstå, at det sker, når du ikke er at kontrollere, hvor meget din brugeren er i færd med. Når du ikke er slags sikring imod. Og ved sin simpleste ting, det er bare din bruger indlæsning af en massiv mængde af data i et forsøg at overskrive en vis sikkerhed del af din hukommelse. Det er alt det er. Så dette her, stable og bunke. Dybest set alt dette er blot en repræsentation af hukommelse og hvor gemmes ting. Det er virkelig slags alt hvad du behøver at vide. De største ting, du behøver at vide er at-- lad mig se, om der er en better-- her. Så dette er stakken her. Så stak har at gøre med alle dine funktioner at du ringer på et givent tidspunkt. Og hvad der er vigtigt at huske gå ud af sidste uge med malloc er, at du ikke rigtig har nødvendige kontrol over det. Det hele afhænger af, hvornår visse funktioner er fuldbyrdende. Og når de udfører de har det, der kaldes stakrammer at gå op her. Så det alle slags sker uden nogen reel input fra dig. Du skriver dit program, og du lader det køre, og stablen slags tager pleje af sig selv som det skal. Så hvis i main du ringer terning, der vil blive gået op her. Det vil skabe en ramme. Men der er intet du udtrykkeligt gøre at skabe dette stakramme andet end skrive funktionen til at begynde med, OK? Hvad er slags under dit kontrol er den bunke med malloc. Så når du malloc noget, du tager hukommelse fra den bunke. Og det er hukommelse, som du har, i mangel af et bedre ord, eksplicit kontrol over, fordi husker med malloc det er dybest set der indtil du siger noget andet. For dem af jer, der overvågede sektion i sidste uge, Det er der, indtil du fortælle det til at gå væk. Det vil være der, medmindre ellers fortalt ikke. Så den bunke er bare noget du kan tænke på som hukommelse at du har kontrol over. Og dem er blot to forskellige store ting. Andre end det, bør du ikke have at bekymre sig for meget om stakken og bunke spørgsmål eller typisk mere bare hvis du har lokale parametre eller en funktion ville det være på stakken eller bunke. Naturligvis i dette tilfælde det ville være stakken. Hvis du mallocing noget, hvor det kommer fra? Den bunke. Hvis man ser på praksis quizzer, der er generelt den type spørgsmål at de har. Du behøver ikke at bekymre sig for meget om det. Du får ind i mere eksplicit om stakken og bunke senere, eller i andre CS klasser. Så bare have sådan en generel idé om, hvad det er vil være god, som jeg lige slags gik over. Alle andre emner? Ja? PUBLIKUM: Kan du gå over pointere igen virkelig hurtigt? ALLISON BUCHHOLTZ-AU: Pointers? Ønsker du konceptuelle oversigt over pegepinde eller har du øve med pointers? PUBLIKUM: Lidt ligesom syntaksen. ALLISON BUCHHOLTZ-AU: Syntaksen? Ja. OK, vi får der. Yeah, så det er bare sådan noget når du har en rekursiv funktion, hver gang rekursiv funktion er kaldes, det øger blot anden stak ramme. Temmelig et eksempel af hvordan du ikke rigtig har kontrol over rammer på din stak. OK, pointere. Okay, så skaber pointere. Husk, det er bare skriv stjerne. Så uanset hvilken type data, du kommer til at pege på. Så det ville være en pegepind til en int. Dette ville være en pointer til en char. Dette ville være en pointer til en float. Så det er dybest set, hvad du ønsker det skal pege på, stjerne er, hvordan du erklærer markøren, OK? Men så selvfølgelig bliver lidt vanskelig, når du har pointer eller du har stjerne whatever. Så den store forskel er når du declaring-- så vi har some-- så dette tager nogle int stjerne. Så dette er nogle pointer opfordrer x til en int, right? Så husk hvad det betyder er dette kræver systemet x. Og det kommer til at har nogle adresse, right? Så lad os bare sige dette er vores adresse. Pointers hold adresser. Så hvad det siger, er, at på dette placering, vi opbevare en int. Så en anden måde, vi kan tænke på dette er, at dette er nogle int. Vi har ikke rigtig overdraget det til noget endnu, men det er bare en int. Så vi kan gøre, er, hvis vi gør stjerne x lig 5, bliver denne en 5, OK? Det siger gå til, hvad x er peger på, så gå til denne adresse og gøre det lig med 5. Så vi tildele 5 til denne adresse, right? Og så hvis du gør dette, det giver os adressen. Dette er adressen på operatøren. Så hvad er adressen på x? Vi ved det ikke. Vi har ikke tildelt det en adresse. Vi kunne sige, det er some-- nu vi gav det en adresse, så adressen er 4. Og faktisk, hvis vi går gennem noget som dette, sådan, hvad vi gjorde. Så arbejder gennem her-- jeg finde det hjælper, hvis du trækker ud pointere. Hvis du er på din eksamen, jeg anbefales at tegne bokse. Så det første, int x er lig med 5. Det betyder bare, at vi har nogle sted i hukommelsen, der er 5, right? Og vores bord her fortæller os at det er på adressen 0x04. Og så skal vi skabe nogle pointer. Så lad os bryde det ned én ad gangen. Så dette skaber en vis boksen til en int, right? Det kommer til at holde nogle adressen for en den. Så dette er nogle pointer. Og dette kridt er virkelig lille. Så vi har nogle pointer her. Og vores tabel fortæller os der er adresse er 0x08. Cool. Og vi tildeler til den adresse af x. Husk, pointers holde adresser, OK? Så hvis vi ønsker at holde x, har vi at bruge den adresse operatør, som er tegnet, for at få adressen af x, som i dette tilfælde, 0x04. Og så hvis vi har nogle int kopi, det bare skaber nogle andre boks, besidder en int kaldet kopi. Og hvis vi tildeler den til denne-- så det er der refereres til den. Så det siger gå til uanset adresse pointer holder. Pointer besidder denne adresse, så vi ville gå over her, og vi siger, OK, hvad der er i det? Det er 5. Så eksemplar bliver 5. Mening? Hvad hvis jeg forsøgte at tildele dette til bare markøren. Hvad betyder pointer egentlig lige? Det ville bare være, hvad pointer indeholder, right? Og hvad så, hvis jeg gjorde det? Hvad ville eksemplar nu? PUBLIKUM: 0x08. ALLISON BUCHHOLTZ-AU: Jep, det adressen på vores pointer. Enhver del af det at behov for at blive re-forklares? Cool. Der er helt sikkert en meget sjovt problem på quiz ene at vi kan over at giver dig mere praksis. De fyre fra sidste uge kan fortælle dem, det var ikke så slemt. Vi fik gennem en hel diagram, og alle gjorde store. OK, så det er overblik af syntaks af pointere. Største ting er at forstå, hvordan til at oprette dem, gør refererer, og adresse, OK? Cool. Alle andre emner før Vi dykker ned i praksis. Også hvis vi går igennem de praksis problemer og der er noget du vil have en genopfriskning af, kan vi gøre det også. Har du noget? PUBLIKUM: Structs og hægtede lister. ALLISON BUCHHOLTZ-AU: Structs og hægtede lister, OK. Så structs. Vi har faktisk går i denne aften også. OK, så structs. Structs er dybest set bare en måde for dig at holde flere værdier af forskellige typer. Så med et array er vi indsnævres til én datatype. Vores matrix har enten bare være tal, eller blot være tegn, eller blot være flåd. Men måske har du brug for indeholde mere end det. Måske har du brug for at hold-- hvis du taler om en elev, du kommer til at få deres hus, deres ID-nummer, deres alder, hvor de bor, højre? Og alle af dem er forskellige slags typer. Så du kan ikke gemme dem alle i et array. Så hvad du kan gøre, er du kan skabe en struct, som du kan tænke på som din egen personlige datatype. Så i stedet for bare at have int'er og i stedet for bare at have flåd, du kan have en type studerende, der har alle disse felter i det. Så den måde, vi initialisere vores structs is-- faktisk da min skrivning er forfærdelige, vi kommer til at overgå til at skrive. Woo. OK, så hvis vi ønsker at skabe en struct-- Jeg skal bare til det hernede. Se bort fra den i hovedsagen uanset som vi vil bruge senere. Så den måde, du ønsker at gøre det er med typedef struct. Og lad os bare kalde denne elev fordi det er hvad jeg bruger. OK, så betyder typedef er du definere en ny type, OK? Der er nuancer i når du gør blot en struct versus en typedef struct. For alle hensigter og formål, du fyre er bare vil antage, at de er omtrent den samme, og kun bruge typedef struct for nu. Det vil blive langt mere tydelig i din næste P angive, hvad disse forskelle, men jeg tror ikke, du behøver at bekymre sig om, at lige nu. Jeg ville meget hellere du vide, hvordan du opretter en, adgang til den, og tildele [? værdi. ?] En ny type struct, og vi kalder det elev. Så efter vi er færdig med at oprette denne, for alle henseender, vil du have en type kaldet elev. Og du kan tænke på det, lige som en type som en int, eller en float, eller en char. Det er bare en anden type, OK? Så i denne ene, hvad har vi? Vi har måske et navn. Så måske vi ønsker en streng navn. Og vi har måske en int, der er et ID. Og vi har en anden i der er telefonnummer. Og vi har some-- lad os se. Hvad andet kunne vi have? Vi vil have noget snor på hans hus. Alle ting, som en elev har. Så dette skaber en struct nu. Så hvordan kan vi skabe en elev? Hvis vi har nogle variabel, der er vil tale om Walker her, så vi have-- vi er bare vil kalde denne rollator. Han har brug for en type. Hvad er din type? PUBLIKUM: Student. ALLISON BUCHHOLTZ-AU: Student. Så dette blot skaber et objekt kan du tænke på, der har alle disse ting. Du har lige oprettet en walker elev. Så nu er vi nødt til at kunne at tildele alle disse, right? Så er der nogen huske, hvordan vi få adgang inden for en struct? PUBLIKUM: Periode. ALLISON BUCHHOLTZ-AU: Periode Præcis. Så hvis vi ønskede at tildele ham et navn, kunne vi gøre det. Dette ville naturligvis være-- denne del her ville være inden vigtigste, så faktisk lade mig gøre dette. Erklære dette over main så at vi kan bruge det inden vigtigste. Så nu jeg ønsker at gøre id, og vi vil bare gøre nogle der, og så vil vi tildele et hus. Bam. Cool. Så nu skal vi nogensinde får brug for at få adgang noget senere on-- måske we-- hvis vi nogensinde får brug for at få adgang til noget, lad os bare gøre en int kopi id. Og jeg ønsker at kopiere Walkers id i dette. Hvordan kan jeg gøre det? Du er nødt til at få adgang inden for rollator struct til [? gå til det?] [? E?]. Og på samme måde som vi tildelt det op her, hvordan kan vi få adgang til det, når vi ønsker at giver denne værdi til noget andet? PUBLIKUM: Walker.id. ALLISON BUCHHOLTZ-AU: Ja, præcis. Så det er temmelig alle du behøver at vide for structs. Du skal bare nødt til at tænke på dem som en anden variabel. Dybest set en oprette din egen variabel art, OK? Du bruger den til at erklære variabler på nogen måde. Her walker er stadig en variabel. Det bare har en type studerende nu i stedet af en type int eller en streng type eller en type char. Hvis der var en nem måde at tale om structs, det er bogstaveligt talt bare et oprette din egen datatype der giver dig mulighed for at gruppere alle disse forskellige slags data sammen. Giver det mening? OK. Det og få adgang med prikker. Temmelig meget alt hvad du behøver. OK, hvor gik min PowerPoint gå? Her er det. Nå det er underligt. Aha. OK, cool. Alle andre ting, eller skal vi ønsker at hovedet til praksis? Praksis? OK. Awesome. Jeg har tænkt mig at forlade dette. Hvis du på noget tidspunkt under praksis spørgsmål, Jeg er glad for at forny og gå gennem ting. Så jeg har quiz nul heroppe. Hvis du fyre ønsker at trække den op på din computer, bare gerne tage fem minutter til at gennemse. Måske vælger nogle top spørgsmål, du ønsker at gå over. Hvis du fyre ikke kan beslutte, at vi vil bare langsomt begynde at arbejde gennem dem, men jeg er sikker på at der vil være nogle spørgsmål, som du er særligt ivrige efter at tale om og have mig til at arbejde igennem med jer alle. Så bare gå videre og tage fem minutter. Rul gennem. Og dette er den quiz fra 2013. PUBLIKUM: Zero? ALLISON BUCHHOLTZ-AU: Ja, quiz nul. Vi laver ikke quiz én ting. Vi vil gøre det i et par uger. Også for dem af jer, der kom sent, vi har slik, så gør du fyre vil have slik? PUBLIKUM: Selvfølgelig. ALLISON BUCHHOLTZ-AU: Jeg er bare kommer til at passere rundt. Hey, hvis du fyre få her tidligt, får du mere slik. Det er fint. Ben, du vil have slik? Du ønsker nogle af disse? Der er også Snickers hvis nogen ønsker Snickers. Jeg lader dem her og her. Du er velkommen. Vil du have mere? PUBLIKUM: Alt indstillet. Tak. ALLISON BUCHHOLTZ-AU: Og jeg havde en dejlig lille bunke der i begyndelsen. Du fyre kommer til at tage quizzen og Jeg kommer til at have en quiz klassificering part. Det er kaos. 900 eksamener. Det kommer til at være så meget sjov. Vil være stor. Jeg er temmelig sikker på det er en af de største personale bonding nætter af året. Har nogen gjort quiz nul fra sidste år endnu af nysgerrighed? PUBLIKUM: Dele af det. ALLISON BUCHHOLTZ-AU: Dele af det, OK. Har du har spørgsmål om nogen af ​​dem? PUBLIKUM: Jeg allerede gik til kontortid. Tak selv. ALLISON BUCHHOLTZ-AU: Nå, forhåbentlig det er stadig slags hjælpsomme. Hvornår har du gå til kontortid for det? PUBLIKUM: Min TF havde dem i eftermiddag. ALLISON BUCHHOLTZ-AU: Oh. Hvem er din TF? PUBLIKUM: Fred [? Wujaya?]. ALLISON BUCHHOLTZ-AU: Der er så mange TF'er. Så mange. Ok. Nogen der har nogen til at begynde at jeg kan notere ned, at vi ønsker at arbejde på? Jeg formoder pointerne én med bordet. Gå efter det. PUBLIKUM: Måske kontakten én. ALLISON BUCHHOLTZ-AU: So nummer 12? Jeg antager nummer 8 og 9 er sandsynligvis ones folk ønsker at gå over. PUBLIKUM: Og 10 og 11. ALLISON BUCHHOLTZ-AU: Og du fyre vide du får en side af noter, right? PUBLIKUM: Ja, så hvad er vi fik lov til at sætte på det. ALLISON BUCHHOLTZ-AU: du er tilladt at sætte noget, du ønsker. Og det kan være maskinskrevne. Så vidt jeg husker, var vores indtastet. PUBLIKUM: Du kan gøre tilbage, og begge sider? ALLISON BUCHHOLTZ-AU: Ja, begge sider. Så noget lignende bunke og [? tilbage ende?] dynge, dit løb gange. Nyttige. Måske små ting om pointere at minde dig. Syntaks for ting. Under ligesom et skelet Programmet kan være super nyttig. Jeg ved, at jeg altid har glemt præcis hvad Jeg skulle skrive for int main, fordi jeg altid bare kopiere indsætte fra min tidligere P sæt eller det er der allerede, så Jeg har aldrig rigtig skrev det, så har det kan være super nyttige. OK, så hvorfor gør vi ikke starte med nummer 8 så? Ok. OK. Så overveje programmet nedenfor. Så selvfølgelig, når vi ser pegepinde, er det nok en god idé at begynde at tegne, right? Jeg ønsker at vide, hvor alle mine store stykker af kridt gik. Dette er slags irriterende. Så vi har her nogle swap-funktion der kommer til at tage i to pointere. Så i dette tilfælde, de burde faktisk være at skifte ting versus vores oprindelige swap funktion, som kun tog i kopier. Så hvad det kommer til at gøre is-- lad os starte med de vigtigste, fordi det er hvor 1 er. Så vi har nogle int x 1. Vi har nogle y, der er lig med 2. Og så har vi nogle swap der kommer til at tage dem. Og lad os se, hvad har vi her. Og i vores table-- oh boy. Hvordan skal jeg gøre dette? Jeg har tænkt mig at trække mit bord herovre. Knapt gøre det der. Knapt gøre det. 1, 2, 3, 4, 5, 6, 7. Og de giver os, at 1 er 1 og 1 2. Cool. Awesome. Så 3. Og der er [? a 1.?] Ok. Og så adressen på x er 0x123. Og y er Ox127. Cool. Ok. Jeg vil have jer arbejde på dette for bare like-- arbejde på det med de mennesker omkring dig. Jeg ønsker jeg havde sagt, at mens jeg var ved at etablere. Arbejde på det. Prøv og arbejde på det ved jer for et par minutter, og så vil jeg arbejde på det med dig. Fordi den eneste måde du virkelig kommer til at lære, er ved at gøre det selv. Ingen bekymringer. Held og lykke. OK, hvorfor ikke vi langsomt begynde at arbejde gennem dette. Så alle får efter linie et, x er 1. Efter linje to, X og y er 1 og 2, right? Cool. Så linie tre er, hvor tingene få interessante selvfølgelig. Så hvad vi har gjort her er vi nu har byttet. Vi siger, at x og y have disse punkter, eller de har adressen af ​​x og y, højre? Så i dette tilfælde tre, hvad er værdien af ​​en? en var blevet vedtaget i, har fået værdien af ​​adressen på x, right? PUBLIKUM: 1? ALLISON BUCHHOLTZ-AU: Så vi føje det til x? Hvad er x adresse? PUBLIKUM: 0x123. ALLISON BUCHHOLTZ-AU: Præcis. Men hvad er en faktisk peger på? Hvis vi skulle dereference en, hvilken værdi det ville give os. PUBLIKUM: 1. ALLISON BUCHHOLTZ-AU: Det ville give os 1, fordi det, vi siger er at gå til denne adresse, fortælle os, hvad værdien er. Så hvad ville være b? PUBLIKUM: 0x127. ALLISON BUCHHOLTZ-AU: Præcis. Så det er adressen på y. Og hvad så [? dereference? ?] PUBLIKUM: 2. ALLISON BUCHHOLTZ-AU: OK, så nu fire. Vi sagde en er equal-- godt nu har vi gjort int temp er lig med stjerne på en. Så hvad betyder det? Der er kun én ting der ændrer her. Hvad er det? PUBLIKUM: Temp. ALLISON BUCHHOLTZ-AU: Temp. Så vi kan omskrive alle disse. En god strategi for disse er bare at finde ud af hvilke ændringer, fordi oftest der er kun én ting, der er kommer til at ændre på ethvert givet tidspunkt, OK? Så vi har tildelt temp. Nu er vores næste punkt, fem, vi har gjort stjerne et lig stjernede b. Så hvilke ændringer nu? PUBLIKUM: Star a. ALLISON BUCHHOLTZ-AU: Star a, så alt andet forbliver det samme. Og hvad betyder stjerne en lige? PUBLIKUM: 2. ALLISON BUCHHOLTZ-AU: 2. Dejligt. Awesome. OK, og så nu har vi starte b er lig med temp. Så den eneste ændring er stjernede b. Alt andet forbliver det samme. Og hvad er stjernede b lig med nu? Og du har udfyldt skemaet. Fordi nu i slutningen, hvis vi siger x og y, ved vi, at på denne point-- vi, at når vi ændret stjerne en til 2, hvad der gjorde, er det sagt OK, på løse 0x123 her, ændre det. Dette var nu 2. Og derefter på dette punkt, vi sagde OK, gå til Star B. Så gå til adressen i 0x127 og gøre det til en 1. Så nu til allersidst, når vi faktisk tilbage til main, har vi faktisk, at x er lig med 2, og y er lig med 1. Alle godt med det? OK, cool. Number 9. Du fyre arbejde på dette. Jeg har tænkt mig at oprette en bestyrelse så vi kan trække igennem det. Det vil være en blast. De store tabeller kan være virkelig skræmmende, jeg kender. Men hvis du bare tage dem én række på en tid, de får en masse mindre skræmmende. Ok. Så du ved, at dette vil have gået gennem vigtigste først, right? Initialiserer x og y og derefter forsøger at bytte dem. Så selv swap er over, real måde det går, er, at vi går igennem main, og så er det ringer op til at bytte, okay? Så alle ved det. Så hvilken en vil du fyre ønsker at starte med? Er der virkelig nogen sikker om en af ​​disse? Eller endda delvis sikker? Hvorfor starter vi ikke med x? Hvad tror vi x er? PUBLIKUM: 1. ALLISON BUCHHOLTZ-AU: 1. Så hvorfor er 2. Og det er fordi big forskel her er, at vi kun passerer kopier i, right? Vi er ikke passerer ved reference. Så selv ved udgangen af dette program x og y har opholdt sig det samme, fordi de er blot kopier i swap-funktion. De behøver faktisk ikke ændre, right? Så hvad med a, b, og temp? PUBLIKUM: a er b. ALLISON BUCHHOLTZ-AU: a er b. Så i dette tilfælde, en var x, som er 1, right? Så her, lad os gå igennem den. Så i starten, en og b er 1 og 2 og udefineret. Så oprindeligt temp får tildelt en, så temp er 1. a er lig med B, så vi får 2, og b er lig med temp. Får vi nu 1. PUBLIKUM: I den tidligere ene det byttes-tegn x og tegnet y. Hvad betyder det helt præcist? ALLISON BUCHHOLTZ-AU: Så det betyder, at du passerer ved henvisning. Så det betyder, at du er faktisk passerer i adresserne på hvor x og y er lagret. PUBLIKUM: Men du er ikke swapping adressen. ALLISON BUCHHOLTZ-AU: Du er ikke swapping adresserne. Du bytte, hvad der er i dem. Ligesom hvad der er på den pågældende adresse, og det er derfor, det virker. Versus i dette program her hvad du laver er du opretter kopier. Så du har x og y, der eksisterer som deres egne variabler herude. Men så når du passerer dem i swap, er det som hvis du opretter hele dette andet sæt. Så du er faktisk aldrig rørende x og y. PUBLIKUM: Hvis tegnet x hvad der er på adressen på x, hvad ville stjerne x være? ALLISON BUCHHOLTZ-AU: Ampersand x er, hvad der er på adressen på x, så star-- godt, i dette tilfælde x ikke er en pointer. PUBLIKUM: Åh, OK. Så du kun gøre dette fordi det ikke er en pointer. ALLISON BUCHHOLTZ-AU: Right. Du kan kun gøre stjerne noget, der er en pointer. Måske kunne du gøre det til ting, er det ikke, men det compile, at du gøre det skøre ting ville ske. Og jeg er ikke ligefrem sikker på, hvad der ville ske. Du kan altid tage adresse noget, men du kan ikke dereference noget, der er ikke en pointer. Hvis det giver mening, det er en god skelnen at have. Så ikke alt for dårlig, højre? Tabellerne er forhåbentlig få lidt mindre skræmmende. Ok. Ah, det sjove dem. Så nu, skrive din egen kode. Så jeg har tænkt mig at lade dig fyre arbejde på denne i omkring fire minutter og så kan vi snakke om måder at nærme sig det. Du er velkommen til at tale med folk omkring dig. Også dette er interessant. Det er ligesom en alle piger sektion lige nu. Temmelig spændende. Bortset Chang. Men Chang er ikke rigtig en del af sektionen. Awesome. Perfect. Så jeg vil give dig et par hints. I det tilfælde hvor man har mere end ét tegn, hvor du har noget andet ligesom 123 eller 1000 noget, du nødt til at være i stand til at sløjfe gennem og konvertere hver af disse. Så der er et par måder, du kan gøre det, men du helt sikkert vil have en for-løkke eller andet sted derinde at sløjfe gennem dem, som er lidt ligesom den giveaway med selv hvis du kalder strlen, som er lidt ligesom oh måske du ønsker at bruge længden af strengen på nogen måde. Ok. Så hvad tror du fyre tror kunne være en af ​​de første ting, vi ønsker at gøre? Der er et par sager her vi er nødt til at redegøre for, right? Enten har vi noget, der er null. Hvad har vi? Sager. Null. Vi har tilfældet, at det har noget andet end 09, right? Så lad os sige det har bogstaver. Eller vi få sagen, der er gyldig. Tre sager at tænke på. Så hvilken en tror du kunne være den nemmeste en til at tage sig af først? PUBLIKUM: Null. ALLISON BUCHHOLTZ-AU: Sagen er null. Så hvad ville vi gøre der? PUBLIKUM: [uhørligt]. ALLISON BUCHHOLTZ-AU: Ja. Og hvad gør jeg ønsker at gøre? PUBLIKUM: Return 0. ALLISON BUCHHOLTZ-AU: Præcis. Awesome. OK. Så nu sådan, at det har breve og sådan, at det er gyldigt. Vi kan faktisk passe dette inden for en løkke, OK? Så en måde at gøre it-- hvad der kunne være en enkel måde at kontrollere, om den er gyldig. Vi ville være nødt til at gå igennem hvert bogstav og gøre hvad? PUBLIKUM: Kontroller, om det er in-- ALLISON BUCHHOLTZ-AU: Right, kan du kontrollere hvis det er mellem 0 og 9, right? Og derefter i tilfælde at det er gyldigt, er vi kommer til at ende iteration gennem vores snor anyways, right? Så hvorfor gør vi ikke prøve og kombinere dem i én. Vi kommer til at gentage gennem ud streng, og som vi gør det, vil vi først gøre en check for at se om denne skrivelse eller hvis denne karakter er gyldig. Hvis det er, vi kommer til at udføre operation, som vi er nødt til at konvertere det. Ellers vil det returnere 0, right? Så før vi gør det, vi sandsynligvis vil nogle variable at vi kan vende tilbage i slutningen der kommer til at være vores faktiske værdi. Så vi kommer til at initialisere vis værdi at være 0. Og det er netop, hvordan vi starter. Så jeg har tænkt mig at slippe af med denne. Så hvordan skal vi gennemløber denne streng. PUBLIKUM: For loop. ALLISON BUCHHOLTZ-AU: en for-løkke. Så hvad er vores for? PUBLIKUM: Jeg er 0. ALLISON BUCHHOLTZ-AU: Mm-hm. Og hvad er vi iteration indtil? PUBLIKUM: str længde s. ALLISON BUCHHOLTZ-AU: OK, nu husker der er en bedre måde. [Uhørligt]. PUBLIKUM: Ja, vi kan gøre n lig. ALLISON BUCHHOLTZ-AU: Præcis. PUBLIKUM: Jeg er mindre end n. ALLISON BUCHHOLTZ-AU: Og hvorfor ville vi ønsker at gøre det? Kan du huske årsagen? PUBLIKUM: Vi er nødt til at genberegne det. ALLISON BUCHHOLTZ-AU: Becasue denne måde kan du kun nødt til at beregne StrLen gang. Hvis du gør, jeg er mindre end strlen s, det er betyder det genberegner længde hver gang du kører for løkken, som ikke er en enorm omkostning af energi, men det er bedre praksis at forsøge at gøre ting som det en gang. Medmindre måske har du en skør snor der ændrer sig ved hver iteration. Men hvis det er opholder sig det samme, skal du gemme det. Ok. Og derefter jeg plus plus. Awesome. Vi er på vores måde. PUBLIKUM: Virkelig hurtigt. Først, så lad os sige, at vi bare Har jeg mindre end strlen af ​​s, er de klassificering os på design på alle eller bare korrekthed? De er ikke. Vi klassificering på korrekthed for quizzer, så vidt jeg ved. Jeg kan ikke foretage en fuldstændig på garanti, men for det meste, Langt størstedelen er korrekte, fordi du er under en masse tid begrænsning. Design betyder typisk, du har tid til at tænke om elegance i din situation. OK, så vi iteration igennem. Så vi er nødt til enten at kontrollere, se, om denne karakter er gyldig eller hvis vi kan udføre vores normal [? A til I?] funktionen. Vi kan bekymre sig om, hvad der er i en anden. Så hvorfor gør vi ikke take-- hvis nogen kan tænke om en måde at kontrollere se, om det er gyldigt. Vi ved, det vil være nogle, hvis tilstand, right? Og husk det er i ASCII, så hvordan kan vi se, om det ikke er 0,1, 2, 3, 4, 5, 6, 7, 8 eller 9. PUBLIKUM: Hvis alpha. ALLISON BUCHHOLTZ-AU: Så hvis alpha ville kun Lad os vide, hvis det er et brev. Og hvis de giver os et symbol, det er stadig ikke helt kommer til at kontrollere. Så hvis du trækker din ASCII bord, ved vi, at 0 til 9 er i et segment. Fortæl mig de tal, de svarer til, hvis muligt. PUBLIKUM: 40. ALLISON BUCHHOLTZ-AU: Så området er ligesom 40-- PUBLIKUM: Måske. 48-57. Jeg er ikke sikker. ALLISON BUCHHOLTZ-AU: 40-57? PUBLIKUM: 48, tror jeg. ALLISON BUCHHOLTZ-AU: 48-57. Så vi ved, at dem, ASCII symbols-- hvis ASCII værdien ikke mellem 48 og 57, det er ikke gyldig, right? Så kunne vi bruge det til vores fordel evt? Hvordan skal vi få dette brev, første off? Hvordan skal vi få adgang denne denne karakter? PUBLIKUM: s beslaget i. ALLISON BUCHHOLTZ-AU: Mm-hm. Fordi vi kan tænke på strenge som arrays, huske. Så hvad skal vi ønsker at sige? Vi ønsker at sige, om dette is-- Jeg vil give dig et hint. Det er en mindre end. Hvad skal du tror det skal være mindre end? PUBLIKUM: 57? ALLISON BUCHHOLTZ-AU: 47, right? Men det repræsenterer også, at når du en 0 i single [? eger?], fordi det er karakteren 0. Du kan også sætte 47. Under ASCII tabel, som du ser, er bare noget du skal have på din quiz ark. Så hvis dette er tilfældet, hvis det er en mindre end 0-- ikke nødvendigvis og. Det er kun enten vil være mindre end eller større end 9. Så kan du udfylde denne sidste til mig? Så eller s for jeg er hvad, Rhea? PUBLIKUM: Større end 9. ALLISON BUCHHOLTZ-AU: There. Giver det mening at alle, hvordan vi fik der? Disse problemer, de er ligesom, når du se de løsninger, det er ligesom oh, OK. Og dette er grunden til praksis vil hjælpe dig. OK, så vi vender tilbage 0. Dejligt. Ok. Ellers hvad ønsker vi at gøre? Dette er den interessante del hvor det er lidt mere som matematik versus CS i min udtalelse. Er der nogen der har en idé af, hvordan vi kan gøre dette? Så det vigtige ting at indse, er det første tegn vi tager vil være den højeste orden ciffer, right? Så hvis vi kigger på konvertering 123, første gang vi gentage er kommer til at være 1, men vi har brug for at for at være 100 ved udgangen, right? Så en ting du kan gøre, er, at med hver efterfølgende ciffer du tager, du ganger din værdi med 10, så med den tid, du kommer til slutningen, alt har været forskudt opad, right? Så den første gang du kører det, du har 1 som din værdi. Anden gang du kører det, du formere din værdi med 10. Det vil opdatere det, så det er nu 10, og du tilføjer på din næste værdi. Og så skal du gange det med 10 og tilføje på din næste værdi. Og det er derfor de siger dette er meget mere som test en matematisk algoritme versus CS, men jeg sidespring. Jeg skriver ikke quizzer. Så én ting, vi kan gøre, er vi sige værdi gange svarer til 10. Så dette kommer til at flytte din cifrede gang hver gang. Og så har vi bare ønsker at tilføje. Vi ønsker at tilføje i hvad vi fik bare, ikke? Så hvordan kan vi faktisk konvertere vores ASCII-tegn i antallet at det repræsenterer? Så vi ved, at 0 er lig med 47, right? Så hvis 0 er 47, hvad ville vi nødt til at gøre det til rent faktisk at gøre det være en int på 0? PUBLIKUM: Det er 48. ALLISON BUCHHOLTZ-AU: 48? Undskyld. Vi ville trække 48, right? Husk ASCII matematik? Vi kan behandle dem lige ligesom normale tal. Hvis du behandler dem som numre, de bliver tal effektivt. Så hvis vi har s af i, som lader sige i dette tilfælde er lig med 0. Så s af jeg i denne sag ville være ASCII-- ASCII int for det ville være 47. Så kunne vi subtract-- eller 48. Du kunne gøre det, er én måde. Er der nogen kender en bedre måde kunne vi gøre 48? Vi har lige sagt 0 is-- gå ind ASCII du kunne gøre citat 0. Så gør den slags gøre fornuft, hvordan det virker? PUBLIKUM: På dette tidspunkt er værdien 0 fordi selv hvis du ganger det med 10, du starter ud med nul, så skal det skiftes? ALLISON BUCHHOLTZ-AU: Så i dette tilfælde, du ønsker at formere den før du tilføjer, fordi der i dette tilfælde, ja, det ville stadig være-- min pointer mangler. Værdien i dette tilfælde er den første gang vi kører det vil være nul. Så du bare tilføje på den første ciffer. Hvad der er vigtigt er det næste gang du gentage, du ønsker at flytte det op før du tilføjer din næste ciffer på. Betyder at afklare for dig? OK. Nogle gange du vil få mærkelige flere Mathy ting. Hvis du havde det meste af dette, er du stadig i gang at get-- du vil gøre temmelig godt. Delvis kredit er et meget store ting på CS50 quizzer. Så skriv hvad du ved. Hvis du fik alt bortset fra her, er du stadig vil gøre virkelig godt problemet. Fordi du viser, OK, jeg næsten kender. Jeg ved, at jeg er nødt til at gentage gennem. Jeg ved, hvad jeg har brug for at kontrollere for. Jeg ved bare ikke helt få, hvordan du konvertere det. Du kommer til at være OK. Ja, du vil tabe et par punkter, men du stadig vil få en god antallet af point for noget gerne, at hvis du er mangler disse to linjer. Jeg ville være ligesom OK, denne person ved, hvad de laver. Math er hårdt. Så jeg vil sige, du ville være fint. OK, så du fyre klar til at prøv strlen med pointere nu at du fyre er markørindstillinger mestre? Så jeg vil lade dig fyre arbejde på, at der for en lille smule. Hvis nogen har brug for et genopfriskningskursus. Så du ønsker at bruge pointer aritmetik, og derefter, hvis s er nul, din implementering skal returnere 0. Ting som dette, der gør dig virkelig glad for at bare kalde strlen ved udgangen af ​​dagen. Jeg tror, ​​dette kan være en smule lettere end den sidste, som er god. Jeg vil give jer et andet minut, og så vil vi arbejde gennem det. Og så får vi at gå til kontakter. OK, klar fyre? Måske en lille smule. Så jeg har givet dig din to muligheder, right? Enten tjekke for null og returnere 0, hvis det er, eller faktisk udregne længden. Så hvem ønsker at skrive tjekke for null? Gå efter det. PUBLIKUM: Hvis parentes s lig er lig nul tilbagevenden 0. ALLISON BUCHHOLTZ-AU: Lovely. Jeg elsker når halvdelen af ​​dit problem er bare kontrol for null. Jeg ved med jer sidste uge var jeg ligesom tjekke for null bogstaveligt talt hver gang. OK, so-- PUBLIKUM: Hvis tilbagevenden 0 er kun én linje, har vi stadig brug for krøllede beslag? ALLISON BUCHHOLTZ-AU: Du behøver ikke teknisk brug for dem, så længe du er konsekvent. Det er god praksis bare at komme i vane at anvende krøllede parenteser, men teknisk no. Du behøver ikke dem til én linje. Vi har bare en tendens til at anbefale det for mennesker begynder at programmere. Så nu, hvad vi måske ønsker at gøre her? Så nu ved vi, at vores streng er gyldig. Vi ønsker at holde beregne længden. Hvad er sandsynligvis den første ting, vi ønsker at gøre? PUBLIKUM: Opret en int det er længden. ALLISON BUCHHOLTZ-AU: Præcis. PUBLIKUM: Og vi ønsker at indstille det til? ALLISON BUCHHOLTZ-AU: 0. Perfect. Ok. Nu, hvad ønsker at gøre? Dette er virkelig hovedparten af ​​det. Gå efter det. PUBLIKUM: Så du sandsynligvis gøre en for-løkke. Og så fordi når du ringer s du er at få adressen på den første, du ville starte med jeg er lig med 0. Og så så længe x plus jeg er ikke tilbage skråstreg 0. ALLISON BUCHHOLTZ-AU: Nul terminator. PUBLIKUM: Nul terminator. Så kan du tilføje en til længden. ALLISON BUCHHOLTZ-AU: Ja. OK, så lad os vende det i meget konkret kode. Men der er den perfekte idé. Det er præcis, hvad vi laver. Vi kommer til at være iteration igennem med markøren. Så hvad vi ønsker at gøre er i stedet for en int her, fordi vi er ikke henvise til en det. Vi henvise til starten af ​​en streng, der begynder at være lidt adresse, højre? Så vi ønsker en pointer. Så vi vil have nogle char stjerne, fordi det svarer til vores s, til højre? Så dette er et tidspunkt vi initialisering til starten af ​​strengen, OK? Så lad os bare kalde det i. Hvis det er starten af ​​strengen, hvad det kommer til at blive tildelt? Ikke er 0. Vi ønsker det skal være den start af vores streng. Hvad repræsenterer starten på vores streng, der blev givet til os? PUBLIKUM: Just s. ALLISON BUCHHOLTZ-AU: s. Så dette skaber nogle nye pointer, repræsenterer starten af ​​vores streng, OK? En anden måde at tænke på det er ligesom her er vores array. Det er vores streng, s. Så lad os sige det er den første spot, og det er 0x4. 04. Dette er vores s, som holder denne adresse. Og vi har lige oprettet en anden kaldet Jeg, der bare refererer til den samme ting. Så de er begge bare pege til starten af ​​vores streng. Dette er blot en grafisk repræsentation. Så nu, hvad vi ønsker at gøre, er at vi ønsker at gentage vores betingelse for iteration gennem vores streng. Nu shopping. Fik at shoppe, gutter. Er vi ønsker at holde opdatering indtil vi nå null terminator, right? Så hvad kunne det se ud? Ønsker vi i, eller ønsker vi star jeg er spørgsmålet? Er null terminator en adresse eller noget placeret på en adresse? Placeret på en adresse, right? Så vi har brug for dereference hvad der er her, fordi det er blot nogle adresse. For rent faktisk at komme til start vi er nødt til dereference dette således at vi rent faktisk får hvad der er i denne første omgang. Så hvis vi gør star jeg, hvad ønsker vi ikke, at det lige? PUBLIKUM: Back skråstreg? ALLISON BUCHHOLTZ-AU: There. Giver det mening for alle? Vi er nødt til at gå ind i vores streng og sørg for, at det er ikke enden. Og så kan vi bare opdatere ligesom dette. Normal opdatering. Så længe disse er met, hvad skal vi gøre? PUBLIKUM: Længde plus plus. ALLISON BUCHHOLTZ-AU: Mm-hm. Og så efter for-løkken ophører, hvad ønsker vi at vende tilbage? PUBLIKUM: Længde? ALLISON BUCHHOLTZ-AU: længde. Der kan du gå. Naturligvis kød af denne ene er at forstå dette for løkke. Skal alle få, hvordan det virkede? Jeg er glad for at gå over det igen. PUBLIKUM: Den anden del, så stjernen jeg der, det er adressen på den first-- ALLISON BUCHHOLTZ-AU: Det er ikke adressen. Det er, hvad der er på. PUBLIKUM: Det er faktisk derinde. ALLISON BUCHHOLTZ-AU: Det er hvad er faktisk derinde. Så dette er saying-- lade mig gøre det bedre. Så dette er 0x04, og jeg bare at sige, at jeg har tænkt mig at gøre dette mit navn. OK. Ja, jeg ved, jeg har quiz gennemgang i aften. Masser af quiz gennemgang. Så lad os sige denne streng er mit navn, Allison. Lidt rodet, men det er der. Og s repræsenterer placeringen hvor strengen starter, så jeg har tænkt mig at gøre dette real-- dette er adressen på en, hvor strengen starter, right? Så hvad vi gør her, er, at vi ønsker at bruge pegepinde at gentage gennem. Så vi skabe nogle pointer, i, at også er lig med begyndelsen af ​​strengen. Og på hvert punkt, vi ønsker at fortsætte med at gå gennem array her, indtil vi ramte den null terminator. Så vi altid ønsker at kontrollere, hvad der er ved hver af disse adresser. Så vi dereference i, således at første gang vi gør det, vi sige, OK, hvad der står på adressen 0x04? Det er en a. OK, vi er gode. Tilvækst længde. Gå videre til den næste. Så I-- huske pointers forhøjelse af størrelsen af ​​hvad de nu peger på. Så i dette tilfælde, da det er en char, det vil opdatere med én. Så nu vil vi se på 5, hvilket betyder, at det går herovre. Så det siger OK, gå til 0x05. Hvad er derinde? Det er en l. Og det vil holde gør, at indtil den rammer denne. Og det siger OK, hvad der er i uanset adresse det er? Den null terminator, OK. Exit. Og bare returnere længde. Fordi du har brug hvad der er faktisk på denne adresse, ikke selve adressen. Der er meget få steder, hvor du rent faktisk har brug for adressen. Det meste af tiden når du bruger, og det er når du er først tildele en pegepind eller når du passerer det ind i en anden funktion. OK, alle godt der? Slags? OK. Så det ser ud til vi har fik omkring 12 minutter tilbage, så vi vil gå videre til måske vores sidste problem, og så er der nogen begreber, der er kommet op i mellemtiden, vi kan hurtigt gå over. Så skifter gear er det sidste problemet her, skifte udsagn. Så dit job er at omskrive dette således at den opfører sig på samme men ikke anvender switches. Kalkholdig hænder. Så spørgsmål om dette off the bat? Ingen? OK. Skal alle forstå, at hvis den tilfælde ikke har noget efter det, det betyder, at det skal Følg det næste skridt? Så tilfælde 1 og 2 i dette tilfælde gøre præcis de samme ting. Sommetider et punkt for forveksling. Ok. Nogen der har nogen ideer? Ja? PUBLIKUM: Så du kan bare gøre, hvis udsagn. ALLISON BUCHHOLTZ-AU: Mm-hm. Så hvad er vores første? PUBLIKUM: Hvis n er lig med er lig med 1, og de 2 linjer for eller n er lig lig med 2, derefter udskrive små. Og så kan man gøre andet, hvis? Eller kan du bare gøre en hvis? ALLISON BUCHHOLTZ-AU: Du kan gøre andet, hvis? PUBLIKUM: Ville det noget, hvis du gøre, hvis? ALLISON BUCHHOLTZ-AU: Så det gør. Er anyone-- så, du får det samme output hvis du bruger bare hvis'er versus hvis du bruger andres hvis'er. Kan du fyre tror på grunden hvorfor du måske ønsker at bruge en anden hvis versus en masse hvis'er? Har til med effektivitet. Ja? PUBLIKUM: Det ville kontrollere alle de hvis'er hver gang. ALLISON BUCHHOLTZ-AU: Så selvom det ramte denne første, det ville gå på check hver anden. Så du ønsker at bruge, hvis andens hvis'er i tilfælde, hvor kun en af ​​dem vil nogensinde anvendelse. Så gensidig udelukkelse er hvad vi har en tendens til at sige. Hvis du har en masse hvis'er, betyder det at måske mere end én af dem sager, og måske mere end den ene af dem kan være sandt. Og du vil have dem begge at udføre, hvis de er sande. Hvis du kun vil have en af ​​dem til at arbejde i disse gensidigt eksklusive tilfælde du ønsker at bruge andet, hvis, fordi det hele har at gøre med effektivitet. Din kode er bare bedre designet hvis det klæber til denne praksis. Så i dette tilfælde vil vi have et andet, hvis. Og det ville være? PUBLIKUM: n er lig med lig med 3. ALLISON BUCHHOLTZ-AU: Perfect. Printmedie. Og så i vores sidste tilfælde, hvad har vi? Else eller andet, hvis? PUBLIKUM: Else. ALLISON BUCHHOLTZ-AU: Har vi want-- Du ønsker ellers hvis fordi vi har konkrete sager. Det er ikke sådan en fangst alle. Hvis du havde en standard i en switch-- Husk i sporskifter du kan have tilfælde, og så har du standard. Hvis du havde en standard, der er en slags af dit andet udsagn der. Men hvis det har kun sager, det betyder at du har brug for at kontrollere, at se om det er hver enkelt af dem. Så i dette tilfælde ville det 4 eller 5. Vi ønsker en udskrift fra. Det er store. Og der du går. Og det ville være dit program. Så i dette tilfælde, hvis vi havde en standard noget, ville vi have et andet i hvad det ville have os til at gøre. Så det er en god skelnen at vide, at forstå. Mener at hjælpe med kontakter til dig? Perfect. Ok. Vi har omkring otte minutter tilbage. Har du fyre har nogen andre højt niveau koncepter? Spørgsmål i almindelighed? Ja? PUBLIKUM: Jeg havde en spørgsmål om en af ​​dem det var om det tilfældige nummer generator på quiz nul. ALLISON BUCHHOLTZ-AU: Åh, at en. Det ene er en anden, hvor det er mere matematik than-- ja. Løsningen på at-- selv jeg når Jeg ser det, jeg kan lide, hvad er dette. PUBLIKUM: Det var nummer 7. ALLISON BUCHHOLTZ-AU: Det er mærkeligt, i min udtalelse. Så dybest set, du ønsker at bruge drand48, som vil give dig nogle tal mellem 0 og 1. Og du ønsker at bruge det, så at du eller anden måde får en-- og det er meget mere af en matematikopgave til mig, end jeg tror, ​​en CS problem. Den måde, du gør det-- og nogle gange vil det bare være sådan. Igen, disse er de tilfælde, hvor det er sådan ligesom skrive, hvad du kan og delvis kredit. Så hvis vi ønsker en tilbagevenden, vi ved, at vi er skal bruge drand48 på en eller anden måde, ikke? Så hvorfor ikke vi bare notere det ned. Vi bruger det på en eller anden måde. Den måde, at de har du fyre bruge det er som dette, som jeg vil forsøge at forklare. Så dybest set, hvad der sker her er fordi det er mellem 0 og 1, hvad du laver, er du multiplicere by-- dette er meget en matematisk spørgsmål. Bare fuld ansvarsfraskrivelse, det er helt et matematisk spørgsmål. Hvad du gør, er på grund af 0 og 1, og du ønsker det skal være inden for dette interval, du faktisk regne ud hvor stor området er, og derefter du dybest set skalere det op, hvilket er, hvad dette gør. B minus giver dig den rækkevidde, Forskellen mellem disse numre. Du kan formere sig mellem 0 og 1, og derefter tilføje en retfærdig betyder, at din skalere op således at det er mellem a og b, som jeg ikke virkelig gerne dette problem. Som jeg sagde, denne quiz menes at omfatte mennesker, der er mindre behagelig, et sted midt imellem, og mere behagelig. Så hvis de gjorde det så at det var noget at alle på mindre behageligt sted ville få, vi ville have alt for mange folk scorer perfects, og den mere komfortabel ville blive kede sig. Så de altid har disse slags hjerne teaser spørgsmål der er beregnet til at være lidt hårdere at tage nogle kreativ tænkning. Når du ser dem, ikke får alt for forvirrede. Jeg ville helt sikkert sige flip gennem din quiz først. Løse de problemer, at du ved, du kan, fordi der er ingen brug at sidde fast på et problem, når der er tre eller fire eller fem på siden efter at du kan nemt gøre. PUBLIKUM: Hvorfor netop gør du ganger det med området? ALLISON BUCHHOLTZ-AU: Du ganger det område, der du know-- det er ligesom, hvor meget efter en vil du have? Så du kan tænke på, fordi det returnerer et tal mellem 0 og 1, du kan tænke på det som en procentdel. Så det er dybest set siger, hvis vi har vores nummer linje her, en er her, og b er her. Du er ligesom hvor meget forbi en er det? Er alt, hvad vi laver. Så du bare beder om det procentdel af dette interval, som er, hvad det er at give dig. Og så er du dybest set blot skalere det op ved at tilføje en. Det er en matematisk hjerne teaser. Hvis der var nogen sidste minut rådgivning, jeg ville sige flip gennem spørgsmålene, regne ud, hvilke dem, du vide, at ligesom, åh jeg fik denne. Næsten helt sikkert de kommer til at være spørgsmål, som du ikke vil vide eller at du vil have tid for, så ramte dine styrker, OK? Du fyre kommer til store. Der er en masse af spørgsmål for en grund, så du har tid til at slags har mulighed at vise, hvad du er rigtig god til. Så det er OK, hvis du er ikke god til alt. Spil til dine stærke sider. Ja? PUBLIKUM: Så er det at gå til returnere noget, der er afkortet? Ja, det vil, fordi drand afkast på mellem 0 og 1. Det vil returnere en int, fordi det vil afkorte når vi tilføjer et eller formere sig ved det. Cool. Sidste minut spørgsmål? Du fyre vil gøre stor. Du kommer til at være fabelagtig. Og selv hvis ikke, vil der være slik her i næste uge. Og jeg vil elske dig. Jeg vil elske jer uanset. Okay, alle, held og lykke. Har en stor tid. Du kommer til at være fint. Og ved du hvad? På to dage det vil at være forbi, mens jeg har to midterms på torsdag, så mindst jer vil blive gjort. Okay, jeg kan se du fyre næste uge.