ALLISON BUCHHOLTZ-AU: Ciao, tutti. Benvenuti alla sezione. Oggi è solo andare a essere tutto quiz rivedere per il quiz il Mercoledì. Spero che tutti si ricorda che hanno un quiz il Mercoledì. E se non l'avete fatto, bene, ora che hai ricordato. Quindi Mercoledì assicuratevi ti presenti per la classe o di altre strutture come necessaria. Voi ragazzi stanno per essere impressionante. Sta andando essere grande. E ho intenzione di fare tutto il possibile Per aiutarvi a preparare oggi per il tuo quiz ora. E anche nel caso in cui non si conosce, c'è una grande sessione di revisione corso oggi alle 7 Laboratori Northwest stanza B103. Si può vedermi ancora per un bis come Io guiderò parte di quella sessione di revisione anche. Quindi, se non è possibile ottenere abbastanza di me ora, si può venire anche stasera. Va bene, allora andiamo con ordine. Solo alcuni suggerimenti quiz prima di in realtà tuffarsi per le recensioni. Così come per ogni esame, pratica sarà sicuramente dare una mano. Ci sono esami del passato sei o sette anni in là, in modo che un sacco di pratica materiale per voi ragazzi di avere. E infatti, oggi è in realtà solo sta per andare su qualsiasi argomento che voi ragazzi avete domande sul come pure come lavorare attraverso i problemi di pratica da quiz zero. Così mi butto fino a zero quiz rispetto allo scorso anno qui, e siamo in grado di lavorare con tutti i problemi che voi ragazzi vorrebbero. Così la pratica. Hai intenzione di iniziare a fare oggi. Codice in materia di carta. Quindi sì, se tutti potrebbe effettivamente uscire carta, che sarà grande, perché non sei sta per avere il computer sul esame e scrivendo il codice a mano è spesso molto più difficile di quanto ci si potrebbe aspettare. Siete abituati a solo vederlo e digitando, e avete il vostro compilatore di si dare una mano quando si hanno errori, ma non si ottiene che durante l'esame. Quindi è davvero importante realtà essere in grado di scrivere il codice, e che la memoria muscolare di fare a mano sarà davvero aiutare. Quindi stiamo diventando un po 'stretto. E 'Lunedi. Il tuo esame è il Mercoledì. Ma se avete tempo, sicuramente prendere una degli esami dello scorso anno o la anno prima sotto il vincolo di tempo di un'ora e mezza. Basta mettere fuori un'ora e mezzo di tempo, e sedersi giù, e solo di lavoro attraverso i problemi come se si fosse in realtà prenderlo, perché uno dei più grandi cose che abbiamo sentito parlare quiz è che sono molto lunghi. Si tratta di un sacco di materiale. Ci sono un sacco di domande, e la maggior parte delle persone non può finire. So che non sono assolutamente non ho finito i miei quiz quando ho preso la classe. In tal senso, come meno sezione confortevole, capire che questo corso è destinato per soddisfare le persone di tutti i livelli. Tutta la ragione che abbiamo di dividere meno confortevole, da qualche parte tra, e più comodo è quello tipo di renderlo più equo. E se si è meno confortevole, è non è necessario di per sé per ottenere tutto. Come se si fosse trovato tutto, si sarebbe probabilmente essere nella sezione più comodo. Così, ovviamente, non battere voi stessi up troppo difficile se non si riesce a finire l'esame. Prendere da me, non l'ho fatto. Sono ancora un concentratore. Sto ancora aiutando insegnare il corso. Andrà tutto bene. Bene. E, infine, dormire un po '. Ovviamente con qualsiasi esame diciamo sempre questo. Vadano a finire la sera prima e non ottenere il sonno fa not-- forse se tale funziona per voi, andare per esso. Ma per la stragrande maggioranza degli persone, ottenere un certo sonno, lasciare il vostro riposo cervello e recuperare prima di entrare all'esame sarà davvero aiutare. Inoltre ci sarà quasi sicuramente caramelle all'esame, in modo da avere per guardare al futuro. Voi ragazzi stanno andando a fare grande. Sta andando bene. E ora nella prossima ora e mezza mi cercherà di preparare nel miglior modo possibile. Così ho diapositive da fondo tutte le sezioni fino ad ora. Non ho intenzione di passare attraverso tutti loro perché non è fattibile in un'ora e mezza pure come lavorare attraverso i problemi di pratica. Così, invece ho un elenco di argomenti. Queste sono tutte le cose che potremmo quiz su. Se c'è qualcosa che salta davvero fuori che si desidera andare oltre, che si vuoi che vada oltre concettualmente, Posso cercare di dare una panoramica lì. Oppure, se si desidera passare a destra in facendo problemi pratici insieme, siamo in grado di farlo. Sta a voi ragazzi. Non ci sono che molti di voi. Quindi è tutto ciò che voi ragazzi piace fare. Voglio essere il più utile verso voi ragazzi. Quindi ti lascio solo guardare. PUBBLICO: Una cosa è il grafico che teniamo dicendo circa lo stack e l'heap. Solo l'idea che sta dietro che e che cosa significa. ZAMYLA Chandler: Sì, OK. Questo è tutto il senso alla fine, così mi permetta di scorrere. PUBBLICO: Non abbiamo a farlo ora, ma qualunque cosa. ALLISON BUCHHOLTZ-AU: C'era anything-- questo. E 'questo tipo di sfocato per la gente? PUBBLICO: Sì, io secondo che. E possiamo anche fare overflow del buffer? ALLISON BUCHHOLTZ-AU: Buffer overflow? Ok. Così overflow del buffer è abbastanza facile solo per parlare. Si tratta fondamentalmente di buffer ne pensate un po 'di memoria di matrice che hai, giusto? Noi di solito parliamo di overflow del buffer quando non state controllando quanto l'utente sta mettendo in, giusto? E l'idea è con overflow del buffer è stanno mettendo nel lontano troppi dati per lo spazio che avete assegnato per loro, giusto? Quindi, se si dice, dà me qualche messaggio, noi siamo supponendo che andranno a dare un messaggio di lunghezza ragionevole. Forse un paio di linee, roba del genere. Quindi noi non controlliamo. Invece ci si nutrono in un intero libro che è un messaggio, e trabocca la quantità di spazio che abbiamo assegnato per questo. E quello che succede è che potrebbe sovrascrivere luoghi che non è supposto. Quindi so professor Malan ha detto qualcosa di attacchi di buffer overflow. Ecco dove l'input volontà dell'utente una certa quantità enorme di dati, nella speranza che sovrascrive passato la fine del buffer e sostituisce something-- mi chiedo Io ci ho quelle diapositive qui. Non credo che abbiamo quelle diapositive a qui. Ma in fondo si sovrascrive una porzione della memoria che gli consente l'accesso a parti del computer che non si farebbe normalmente accesso. Cosa più grande con buffer overflow è solo capire che succede quando non si è verificare quanto il vostro utente sta mettendo in. Quando non siete tipo di salvaguardia contro tale. E alla sua più semplice cosa, è solo il tuo utente inserendo una massiccia quantità di dati in un tentativo per sovrascrivere una certa sicurezza parte della vostra memoria. Questo è tutto ciò che è. Quindi questo qui, stack e heap. Fondamentalmente tutto questo è distante solo una rappresentazione della memoria e dove sono memorizzati cose. Questo è davvero tipo di tutto quello che devi sapere. Le più grandi cose che quello che dovete sapere sono che-- fammi vedere se c'è un better-- qui. Quindi questo è lo stack qui. Quindi stack ha a che fare con tutte le funzioni che si sta chiamando in un dato momento. E ciò che è importante da ricordare andando fuori di settimana scorsa con malloc è che in realtà non hanno necessario controllo su di esso. Tutto dipende da quando alcuni le funzioni sono in esecuzione. E quando sono in esecuzione, si sono quelli che vengono chiamati stack frame che vanno qui. Così tutti i tipi di verifica senza una vera input da voi. Si scrive il programma, e si lascia correre, e la pila tipo di prende cura di sé in quanto è necessario. Quindi, se nel principale stai chiamando cubo, che sarà passato qui. Sarà creare una cornice. Ma non c'è niente che esplicitamente fa per creare quel stack frame diverso da scrivere la funzione per cominciare, OK? Che è una specie di sotto la controllo è l'heap con malloc. Così ogni volta che malloc qualcosa, si prende la memoria dal mucchio. E questo è la memoria che si hanno, per mancanza di una parola migliore, controllo esplicito, perché ricordare con malloc è fondamentalmente lì fino a quando si dice il contrario. Per quelli di voi che sezione guardato la settimana scorsa, è lì fino a quando gli si dice di andare via. Sarà lì a meno che non altrimenti non detto. Così l'heap è solo qualcosa si può pensare come memoria di avere il controllo su. E questi sono solo la due diverse cose grandi. Oltre a questo, non si dovrebbe avere di preoccuparsi troppo di stack e heap domande o tipicamente più giusta se si dispone di parametri locali o una funzione sarebbe sullo stack o heap. Ovviamente in questo caso sarebbe pila. Se stai mallocing qualcosa, dove è che viene? L'heap. Se si guarda al quiz di pratica, quelli sono generalmente del tipo di domande che hanno. Non devi preoccuparti troppo su di esso. Si ottiene in modo più esplicito su stack e heap più avanti, o in altre classi CS. Quindi, solo con una specie di idea generale di cosa si tratta sarà buono, che ho solo un po 'andato oltre. Eventuali altri argomenti? Sì? PUBBLICO: Si può andare oltre puntatori di nuovo molto velocemente? ALLISON BUCHHOLTZ-AU: Puntatori? Vuoi concettuale Panoramica di puntatori o non si pratica con i puntatori? PUBBLICO: Un po 'come la sintassi. ALLISON BUCHHOLTZ-AU: La sintassi? Sì. OK, ci stiamo arrivando. Sì, quindi questo è solo un po 'di qualcosa quando si dispone di una funzione ricorsiva, ogni volta che la funzione ricorsiva è chiamato, si aggiunge solo altro stack frame. Più o meno un esempio di quanto non lo fai davvero il controllo sulla cornici sul tuo stack. OK, puntatori. Va bene, in modo da creare puntatori. Ricordate, è sufficiente digitare stelle. Quindi, qualsiasi tipo di dati che si sta andando ad essere punta a. Quindi questo sarebbe un puntatore a un int. Questo sarebbe un puntatore ad un char. Questo sarebbe un puntatore ad un galleggiante. Quindi è fondamentalmente ciò che si desidera puntare a, stella è come dichiarare il puntatore, OK? Ma poi, ovviamente, diventa un po ' difficile quando si dispone di puntatore o avete qualunque stella. Quindi la grande differenza è quando sei declaring-- così abbiamo some-- così questo richiede un po 'int stelle. Quindi questo è un puntatore chiamate x ad un int, giusto? Quindi ricorda che cosa questo fa è questo chiama il sistema x. E questo sta per avere qualche indirizzo, giusto? Quindi diciamo solo che questo è il nostro indirizzo. Puntatori tenere indirizzi. Quindi, cosa dice questo è che a questo posizione, stiamo memorizzando un int. Quindi un altro modo possiamo pensare questo è che questo è un int. Non abbiamo davvero assegnato a ancora nulla, ma è solo un int. Così possiamo fare è se non STAR x è uguale a 5, questo diventa un 5, OK? Questo dice di andare a tutto ciò che x è che punta a, in modo da andare a questo indirizzo e renderlo uguale a 5. Quindi si assegna 5 a questo indirizzo, giusto? E poi se si esegue questa operazione, questo ci dà l'indirizzo. Questo è l'indirizzo dell'operatore. Allora, qual è l'indirizzo di x? Non lo sappiamo. Non abbiamo assegnato un indirizzo. Potremmo dire che è some-- ora abbiamo dato un indirizzo, per cui l'indirizzo è 4. E in realtà se andiamo attraverso qualcosa in questo modo, un po 'quello che abbiamo fatto. Quindi, lavorando attraverso qui-- trovo è utile se si disegna fuori puntatori. Se siete sul vostro exam, I Consiglio vivamente disegno scatole. Quindi questo primo, int x uguale a 5. Questo significa solo che abbiamo un po ' mettere in memoria che è 5, giusto? E la nostra tabella qui ci dice che è all'indirizzo 0x04. E poi creiamo un po 'di puntatore. Quindi cerchiamo di rompere questo giù uno alla volta. Quindi, questo crea un po ' box per un int, giusto? Sta andando a tenere un certo indirizzo di esso. Quindi questo è un puntatore. E questo gesso è davvero piccolo. Così abbiamo un po 'di puntatore qui. E il nostro tavolo ci dice che è l'indirizzo è 0x08. Freddo. E stiamo assegnando all'indirizzo di x. Ricordate, puntatori tengono indirizzi, OK? Quindi, se vogliamo tenere x, abbiamo usare l'operatore indirizzo, che è la e commerciale, per ottenere l'indirizzo di x, che in questo caso, 0x04. E poi se abbiamo alcuni int copia, questo solo crea un altro dialogo che detiene un int chiamato copia. E se si assegna a questo-- quindi questo fa riferimento esso. Così si dice andare a qualsiasi puntatore indirizzo detiene. Puntatore detiene questo indirizzo, così andavamo qui, e si dice, OK, che cosa è in esso? E '5. Quindi copia diventa 5. Dare un senso? Che cosa succede se ho cercato di assegnare questo puntatore solo. Che cosa fa il puntatore in realtà uguali? Sarebbe solo ciò che puntatore contiene, giusto? E poi cosa succede se ho fatto questo? Che cosa sarebbe la copia è ora? PUBBLICO: 0x08. ZAMYLA Chandler: Sì, il indirizzo del nostro puntatore. Qualsiasi parte che tale ha bisogno di essere ri-spiegato? Freddo. C'è sicuramente molto divertimento problema su un quiz che possiamo su quella ti dà più pratica. I ragazzi di settimana scorsa può vi dico che non era poi così male. Abbiamo ottenuto attraverso un intero grafico, e tutti hanno fatto grande. OK, quindi questo è panoramica sintassi dei puntatori. Cosa più importante è capire come crearli, fare riferimento, e l'indirizzo, OK? Freddo. Eventuali altri argomenti prima ci immergiamo in pratica. Anche se stiamo attraversando i problemi pratici e c'è qualcosa che si desidera un aggiornamento su, siamo in grado di fare anche questo. Avete qualcosa? PUBBLICO: Structs e le liste collegate. ALLISON BUCHHOLTZ-AU: Structs e collegati liste, OK. Così le strutture. Noi in realtà stiamo andando su questo anche stasera. OK, così le strutture. Le strutture sono fondamentalmente solo un modo per voi di tenere più valori di tipo diverso. Così con un array siamo ristretto ad un solo tipo di dati. Il nostro array ha o essere solo numeri, o semplicemente essere caratteri, o semplicemente essere galleggianti. Ma forse è necessario contengono più. Forse avete bisogno di hold-- se stai parlando di uno studente, si sta andando ad avere la loro casa, la loro Numero ID, la loro età, in cui vivono, giusto? E tutti questi sono diversi tipi di tipi. Quindi non è possibile memorizzare quelli tutto in un array. Che cosa si può fare è in grado di creare una struttura, che si può pensare come il tuo proprio tipo di dati personali. Così, invece di avere int e invece di avere carri allegorici, si può avere un tipo di studente che ha tutti questi campi in esso. Così il nostro modo di inizializzare i nostri struct è-- realtà dal momento che la mia scrittura è terribile, abbiamo stanno per passare alla digitazione. Woo. OK, quindi se vogliamo creare un struct-- Sto solo andando a esso qui. Ignorare il principale in qualunque che useremo in seguito. Quindi il modo in cui si vuole fare è con typedef struct. E facciamo solo chiamare questo studente perché è quello che stavo usando. OK, allora significa che sei typedef la definizione di un nuovo tipo, OK? Ci sono sfumature in quando si fanno solo una struttura rispetto a una struct typedef. Per tutti gli effetti e scopi, voi ragazzi sono solo andando ad assumere sono approssimativamente la stessa e solo utilizzare typedef struct per ora. Esso diventerà modo più evidente nella vostra successivo P impostato quali sono queste differenze sono, ma non credo che avete bisogno di preoccuparsi che in questo momento. Avrei preferito che si sapere come crearne uno, accedervi, e assegnare [? valore. ?] Un nuovo tipo di struct, e noi chiediamo che studente. Così, dopo aver finito di creare questo, per tutti gli effetti, si avrà un tipo chiamato studente. E si può pensare ad esso come un tipo come un int, o di un galleggiante, o un char. E 'solo un altro tipo, OK? Quindi, in questo, che cosa abbiamo? Abbiamo forse un nome. Così forse si vuole un nome di stringa. E noi abbiamo forse un int che è un ID. E abbiamo un altro in questo è il numero di telefono. E abbiamo some-- vediamo. Che altro potremmo fare? Avremo un po 'di corda a casa sua. Tutte le cose che uno studente ha. Quindi, questo crea una struct ora. Così come potremmo creare uno studente? Se abbiamo qualche variabile che è intenzione di parlare di Walker qui, così abbiamo have-- siamo solo andando a chiamare questo camminatore. Ha bisogno di un tipo. Qual è il tuo tipo? PUBBLICO: Studente. ALLISON BUCHHOLTZ-AU: Studente. Quindi questo crea solo un oggetto è possibile pensare che ha tutte queste cose. È appena creato uno studente camminatore. Così ora abbiamo bisogno di essere in grado attribuire tutti questi, giusto? Così qualcuno si ricorda come si accede all'interno di una struttura? PUBBLICO: Periodo. ALLISON BUCHHOLTZ-AU: Periodo Esattamente. Quindi, se volessimo assegnare lui un nome, potremmo farlo. Ovviamente questo sarebbe essere-- questa parte qui sarebbe essere all'interno principale, quindi in realtà mi permetta di fare questo. Dichiarare questo sopra principale in modo che possiamo utilizzare all'interno principale. Così ora io voglio fare ID, e ci limiteremo a fare un po 'di là, e poi ci assegniamo una casa. Bam. Freddo. Così ora dovremmo mai bisogno di accesso nulla dopo on-- forse we-- se mai bisogno di accedere a qualsiasi cosa, facciamo solo fare un ID int copia. E voglio copiare ID di Walker in questo. Come potrei farlo? È necessario accedere all'interno del camminatore struttura per [? andare a quella?] [? E?]. E nello stesso modo che assegnato qui, come potremmo accedervi quando vogliamo dare quel valore a qualcosa d'altro? PUBBLICO: Walker.id. ZAMYLA Chandler: Sì, esattamente. Ecco, questo è più o meno tutto è necessario conoscere per le strutture. Hai solo bisogno di pensare come un'altra variabile. Fondamentalmente un creare il tuo proprio tipo di variabile, OK? Si usa per dichiarare variabili in alcun modo. Ecco walker è ancora una variabile. Ha solo uno studente tipo ora invece di tipo int, o una stringa di tipo, o un tipo char. Se ci fosse un modo semplice per parlare circa le strutture, è letteralmente a creare il proprio tipo di dati che consente di raggruppare tutti questi diversi tipo di dati insieme. Fa questo ha un senso? Ok. Questo e l'accesso con i puntini. Praticamente tutto ciò che serve. OK, dove ha fatto il mio PowerPoint andare? Ecco qui. Beh, questo è strano. Aha. OK, fresco. Tutte le altre cose o siamo noi voglia di andare a praticare? Pratica? Ok. Impressionante. Ho intenzione di uscire da questa. Se in qualsiasi momento durante questioni pratiche, Sono felice di rinnovare e passare attraverso le cose. Così ho quiz zero fino qui. Se voi volete tirare in su sul vostro computer, proprio come prendere cinque minuti per sfogliare. Forse scegliere alcuni top domande che vogliono andare oltre. Se non voi ragazzi può decidere, ci limiteremo a lentamente iniziare a lavorare attraverso di loro, ma sono sicuro che ci stanno per essere alcuni le domande che si sono particolarmente desideroso di parlare e avere farmi lavorare attraverso con tutti voi. Quindi, basta andare avanti e prendere cinque minuti. Scorrere. E questo è il quiz a partire dal 2013. PUBBLICO: Zero? ZAMYLA Chandler: Sì, quiz zero. Non stiamo facendo un quiz cose. Faremo che in un paio di settimane. Anche per quelli di voi che è venuto in ritardo, abbiamo caramelle, quindi fate voi ragazzi volete caramelle? PUBBLICO: Certo. ZAMYLA Chandler: Io sono solo andare a passare intorno. Ehi, se voi ragazzi arrivare qui presto, si ottiene di più caramelle. Va bene. Ben, vuoi caramelle? Vuoi un po 'di questi? C'è anche Snickers se qualcuno vuole Snickers. Li lascio qui e qui. Sentitevi liberi. Vuoi più? PUBBLICO: Tutto pronto. Grazie. ZAMYLA Chandler: E ho avuto una bella mucchietto lì all'inizio. Ragazzi, arriva a prendere il quiz e Ho arrivare ad avere un partito quiz classificazione. E 'il caos. 900 esami. Sta andando essere molto divertente. Andando a essere grande. Sono abbastanza sicuro che è una del più grande legame personale notti dell'anno. Qualcuno ha fatto quiz zero dal ma l'anno scorso per curiosità? PUBBLICO: Le parti di esso. ALLISON BUCHHOLTZ-AU: Le parti di esso, OK. Hai domande su qualcuno di loro? PUBBLICO: Ho già è andato a orari di ufficio. Grazie comunque. ZAMYLA Chandler: Beh, speriamo è ancora un po 'utile. Quando sei andato a orario di ufficio per questo? PUBBLICO: Il mio TF aveva loro questo pomeriggio. ZAMYLA Chandler: Oh. Chi è il tuo TF? PUBBLICO: Fred [? Wujaya?]. ALLISON BUCHHOLTZ-AU: Ci sono così tante TF. Tanti. Bene. Qualcuno ha qualche per iniziare che posso Annotare che vogliamo lavorare? Suppongo che i puntatori uno con la tabella. Andare per esso. PUBBLICO: Forse l'interruttore uno. ALLISON BUCHHOLTZ-AU: Così il numero 12? Presumo numero 8 e 9 sono probabilmente quelle persone vogliono andare oltre. PUBBLICO: E 10 e 11. ZAMYLA Chan: E voi ragazzi sanno si ottiene una pagina di note, giusto? PUBBLICO: Sì, così che cosa sono abbiamo permesso di mettere su questo. ALLISON BUCHHOLTZ-AU: si è permesso per mettere tutto quello che vuoi. E può essere digitato. Per quanto mi ricordo, la nostra era digitato. PUBBLICO: Si può fare posteriore ed entrambe le parti? ZAMYLA Chandler: Sì, entrambe le parti. Quindi, qualcosa di simile al mucchio e [? back-end?] mucchio, la vostra corsa volte. Utile. Forse piccole cose puntatori per ricordare. Sintassi per le cose. Avendo proprio come uno scheletro programma può essere super utile. So che ho sempre dimenticato esattamente cosa Avrei dovuto scrivere per int main, perché ho sempre e solo copiare incolla da mio precedente serie P o è già lì, in modo da Non ho mai scritto, in modo da avere che può essere super utile. OK, allora perché non lo facciamo noi iniziare con il numero 8, allora? Bene. Ok. Quindi prendere in considerazione il programma qui di seguito. Così, ovviamente, quando vediamo puntatori, è probabilmente una buona idea per iniziare a disegnare, giusto? Voglio sapere dove tutta la mia grossi pezzi di gesso sono andati. Questo è un po 'fastidioso. Così abbiamo qui una qualche funzione di scambio che sta andando a prendere in due puntatori. Quindi, in questo caso, dovrebbe in realtà essere di commutazione cose contro il nostro scambio originale funzione che ha preso solo sulle copie. Così che cosa sta andando a fare è-- cominciamo con principale, perché è lì che è 1. Così abbiamo un po 'di int x 1. Abbiamo alcuni y che è pari a 2. E poi abbiamo un po 'di swap che sta andando a prendere quelle. E vediamo cosa abbiamo qui. E nel nostro table-- oh ragazzo. Come faccio a fare questo? Io vado a disegnare il mio tavolo qui. A mala pena fare lì. A mala pena farla. 1, 2, 3, 4, 5, 6, 7. E ci danno che 1 è 1, e 1 2. Freddo. Impressionante. Quindi 3. E c'è [? 1. un?] Bene. E poi l'indirizzo di x è 0x123. E Y è Ox127. Freddo. Bene. Voglio che i ragazzi lavorare su questo per lavoro solo like-- su di esso con le persone intorno a voi. Vorrei aver detto che mentre stavo installando. Lavorare su di esso. Cercare di lavorare su di esso per voi stessi per un paio di minuti, e poi lavorerò su di esso con voi. Perché l'unico modo siete veramente intenzione di imparare è quello di farlo da soli. Nessun problema. Buona fortuna. OK, perché non facciamo lentamente iniziare a lavorare con questo. Così, ognuno ottiene dopo la linea uno, x è 1. Dopo la linea due, x e y sono 1 e 2, giusto? Freddo. Quindi la linea tre è dove le cose diventare interessante, naturalmente. Quindi quello che abbiamo fatto qui è ora abbiamo scambiato. Diciamo che x e y sono quei punti, o hanno l'indirizzo di x ed y, giusto? Quindi in questo caso, tre, qual è il valore di un? una erano state trasmesse in, è stato dato il valore dell'indirizzo di x, giusto? PUBBLICO: 1? ALLISON BUCHHOLTZ-AU: Così aggiungiamo alla x? Qual è l'indirizzo di x? PUBBLICO: 0x123. ALLISON BUCHHOLTZ-AU: Esattamente. Ma ciò che è una realtà che punta a? Se dovessimo dereferenziare una, che valore avrebbe ci darà. PUBBLICO: 1. ALLISON BUCHHOLTZ-AU: Sarebbe ci danno 1, perché ciò che stiamo dicendo è andare a questo indirizzo, ci dicono che cosa il valore è. Quindi, quello che sarebbe stato b? PUBBLICO: 0x127. ALLISON BUCHHOLTZ-AU: Esattamente. Quindi è l'indirizzo di y. E poi che cosa [? dereference? ?] PUBBLICO: 2. ALLISON BUCHHOLTZ-AU: OK, ora quattro. Abbiamo detto a è equal-- bene ora che abbiamo int temperatura fatto è uguale a stella di una. Così che cosa cambia? C'è solo una cosa che cambia qui. Che cos'è? PUBBLICO: Temp. ALLISON BUCHHOLTZ-AU: La temperatura. Quindi possiamo riscrivere tutti questi. Una buona strategia per queste è solo per capire quali cambiamenti, perché spesso c'è solo una cosa che è intenzione di cambiare in qualsiasi punto, OK? Così abbiamo assegnato temperatura. Ora il nostro prossimo punto, cinque, abbiamo hanno fatto una stella pari a stella b. Che cosa cambia ora? PUBBLICO: STAR a. ALLISON BUCHHOLTZ-AU: Stella a, so tutto il resto rimane lo stesso. E cosa significa recitare un pari? PUBBLICO: 2. ALLISON BUCHHOLTZ-AU: 2. Incantevole. Impressionante. OK, e quindi ora abbiamo inizio B è uguale a temperatura. Quindi l'unica cosa che cambia è stella b. Tutto il resto rimane lo stesso. E che cosa è stella b uguale a ora? E hai completato la tabella. Perché ora alla fine, se diciamo x e y, sappiamo che in questo point-- sappiamo che quando abbiamo cambiato una stella a 2, cosa che ha fatto è detto OK, a affrontare 0x123 qui, cambiarlo. Ora questo è stato 2. E poi, a questo punto, abbiamo detto OK, vai a stella b. Quindi, andare all'indirizzo in 0x127 e ne fanno un 1. Così ora alla fine quando abbiamo effettivamente ritorno per principale, in realtà abbiamo che x è pari a 2 ed y è uguale a 1. Tutto bene con quello? OK, fresco. Numero 9. Voi ragazzi lavorare su questo. Ho intenzione di creare una scheda in modo che possiamo richiamare attraverso di essa. Sarà un colpo di vento. Le grandi tabelle possono essere davvero spaventoso, lo so. Ma se si prende loro una riga alla una volta, ottengono molto meno spaventoso. Bene. In modo da sapere che questo avrà attraversato principale prima, giusto? Inizializza x e y e poi cerca di scambiarle. Quindi, anche di swap è al di sopra, vero modo esso va è che stiamo attraversando principale, e poi è chiamando fino a scambiare, va bene? Così tutti sanno che. Così che uno si fa ragazzi vogliono iniziare? C'è qualcuno che è veramente sicuro su uno di questi? O anche parzialmente sicuro? Perché non cominciamo con x? Cosa pensiamo x è? PUBBLICO: 1. ALLISON BUCHHOLTZ-AU: 1. E allora perché è 2. E questo perché la grande distinzione qui è che siamo solo passando copie in, giusto? Non siamo passaggio per riferimento. Quindi, anche alla fine del questo programma xey sono rimasti gli stessi, perché sono solo copie nella funzione di scambio. Essi in realtà non cambiano, giusto? E per quanto riguarda a, b, e la temperatura? PUBBLICO: a è b. ALLISON BUCHHOLTZ-AU: a è b. Quindi, in questo caso, una era x, che è 1, giusto? Quindi, ecco, cerchiamo di camminare attraverso di essa. Quindi all'inizio, a e b sono 1 e 2 e indefinito. Quindi originariamente temperatura diventa assegnato ad una, quindi temp è 1. a è uguale a b, in modo da ottenere 2, e B è uguale alla temperatura. Ora abbiamo 1. PUBBLICO: Nel precedente è scambiati ampersand x e y e commerciale. Che cosa significa esattamente? ALLISON BUCHHOLTZ-AU: In modo che significa che si sta passando per riferimento. Quindi questo significa che si sta effettivamente passando gli indirizzi di dove xey sono memorizzati. Pubblico: Ma tu non sei scambiando l'indirizzo. ALLISON BUCHHOLTZ-AU: Tu non sei scambiando gli indirizzi. Stai scambiando ciò che è dentro di loro. Come quello che è a tale indirizzo, ed è per questo che funziona. Versus in questo programma cosa che stai facendo è che stai creando copie. In modo da avere x e y che esistono come le proprie variabili qui fuori. Ma poi quando si passa li in scambio, è come se si sta creando tutto questo altro set. Quindi non si è mai realmente toccando x e y. PUBBLICO: Se x e commerciale è ciò che è in l'indirizzo di x, quale sarebbe stella x essere? ALLISON BUCHHOLTZ-AU: Ampersand x è ciò che è in l'indirizzo di x, allora star-- bene, in questo caso, x non è un puntatore. PUBBLICO: Oh, OK. Così solo si esegue questa operazione perché non è un puntatore. ALLISON BUCHHOLTZ-AU: Giusto. Si può fare solo stelle di qualcosa che è un puntatore. Forse si potrebbe fare per le cose che non sono, ma la compilazione che si fanno cose folli sarebbe successo. E non sono esattamente sicuro di quello che sarebbe successo. Si può sempre prendere il Indirizzo di qualcosa, ma non si può risolvere il riferimento qualcosa che non è un puntatore. Se questo ha un senso, che è una buona distinzione di avere. Quindi non troppo male, vero? I tavoli sono si spera ottenere un po 'meno paura. Bene. Ah, quelli divertenti. Così ora, a scrivere il proprio codice. Quindi ho intenzione di farvi lavoro ragazzi su questo per circa quattro minuti, e poi possiamo parlare sui modi di avvicinarsi. Sentitevi liberi di parlare con la gente intorno a voi. Anche questo è interessante. E 'come una tutte le ragazze sezione in questo momento. Piuttosto eccitante. Tranne Chang. Ma Chang non è realmente parte della sezione. Impressionante. Perfetto. Quindi io vi darò un paio di suggerimenti. Nel caso in cui si ha più di un carattere, in cui hai qualcosa di diverso come 123 o 1000 qualcosa, è necessario essere in grado di ciclo attraverso e convertire ciascuno di questi. Quindi ci sono un paio modi si potrebbe fare che, ma si sta sicuramente andando ad avere un ciclo for in qualche parte lì per ciclo attraverso di loro, il che è un po 'come il giveaway con anche se si chiama strlen, che è una specie di come oh forse si vuole utilizzare la lunghezza della stringa in qualche modo. Bene. Allora, cosa ne pensate voi ragazzi potrebbe essere una delle prime cose che vogliamo fare? Ci sono un paio di casi in qui abbiamo bisogno di spiegare, giusto? In entrambi i casi abbiamo qualcosa che è nullo. Cosa abbiamo? Casi. Null. Abbiamo il caso che ha qualcosa di diverso da 09, giusto? Quindi cerchiamo di dire che ha le lettere. O abbiamo il caso che è valida. Tre casi a pensare. Quindi, quale pensi possa essere il più facile da prendere cura di prima? PUBBLICO: Null. ALLISON BUCHHOLTZ-AU: Il caso è nullo. Allora, cosa faremmo lì fare? PUBBLICO: [incomprensibile]. ZAMYLA Chandler: Sì. E quello che voglio fare? PUBBLICO: Restituzione di 0. ALLISON BUCHHOLTZ-AU: Esattamente. Impressionante. Ok. Così ora Qualora si sia lettere e il caso che sia valida. Siamo in grado di effettivamente prendere cura di questo all'interno di un loop, OK? Quindi un modo per fare it-- ciò che potrebbe essere un modo semplice per controllare se è valida. Dovremmo passare attraverso ogni lettera e fare che cosa? PUBBLICO: Verificare se è dentro-- ALLISON BUCHHOLTZ-AU: Giusto, è possibile controllare se è compreso tra 0 e 9, giusto? E poi nel caso che è valida, siamo andando a finire scorrendo nostra stringa comunque, giusto? Allora perché non proviamo e unirli in uno solo. Stiamo per iterare attraverso le corde, e come abbiamo fare questo, stiamo andando alla prima fare un controllo per vedere se quella lettera o se quel personaggio è valido. Se lo è, abbiamo intenzione di eseguire la operazione che abbiamo bisogno di convertirlo. Altrimenti tornerà 0, giusto? Quindi, prima di farlo, abbiamo probabilmente vuole qualche variabile che siamo in grado di tornare alla fine che sta per essere il nostro valore reale. Quindi stiamo andando inizializzare qualche valore da 0. E questo è solo il modo in cui iniziamo. Quindi ho intenzione di sbarazzarsi di questo. Quindi, come facciamo a scorrere questa stringa. Destinatari: per ciclo. ALLISON BUCHHOLTZ-AU: Un ciclo for. Allora, qual è la nostra per? PUBBLICO: i è 0. ALLISON BUCHHOLTZ-AU: Mm-hm. E che siamo l'iterazione fino a quando? PUBBLICO: lunghezza str di s. ALLISON BUCHHOLTZ-AU: OK, ora ricordo c'è un modo migliore. [Incomprensibile]. PUBBLICO: Sì, possiamo fare n è uguale a. ALLISON BUCHHOLTZ-AU: Esattamente. PUBBLICO: i è minore di n. ZAMYLA Chandler: E perché vorremmo farlo? Ti ricordi il motivo? PUBBLICO: Dobbiamo ricalcolare esso. ALLISON BUCHHOLTZ-AU: Lo stavano ristrutturando questo modo si avere solo per calcolare strlen una volta. Se fate i è inferiore a strlen s, che è significa che ricalcola la lunghezza ogni volta si esegue il ciclo for, che non è un costo enorme di energia, ma è migliore pratica per cercare di fare cose del genere una volta. A meno che forse hai una stringa pazzo che sta cambiando ad ogni iterazione. Ma se si tratta di rimanere lo stesso, salvarlo. Bene. E poi i plus plus. Impressionante. Siamo sulla nostra strada. PUBBLICO: molto velocemente. In primo luogo, quindi diciamo che abbiamo appena Ti ho meno di strlen di s, ci stanno classificazione sul design a tutti o solo correttezza? Non sono. Siamo classificazione ai principi di correttezza per i quiz, per quanto ne so. Non riesco a fare una sul pieno garanzia, ma per la maggior parte, stragrande maggioranza è la correttezza, perché sei molto sotto vincolo di tempo. Progettazione significa in genere si ha il tempo di pensare circa l'eleganza della vostra situazione. OK, quindi stiamo scorrendo. Quindi abbiamo bisogno di entrambi verificate a vedere se questo personaggio è valido o se siamo in grado di svolgere il nostro normale [? A a I?] funzione. Siamo in grado di preoccuparsi di ciò che cioè in un secondo. Allora perché non take-- se qualcuno può pensare a un modo per controllare vedere se questo è valido. Sappiamo che sarà un po 'se la condizione, giusto? E ricordate che questo è in ASCII, così come potrebbe vediamo se non è 0,1, 2, 3, 4, 5, 6, 7, 8, o 9. PUBBLICO: Se alfa. ALLISON BUCHHOLTZ-AU: Quindi, se alpha sarebbe solo di farci sapere se si tratta di una lettera. E se ci danno un simbolo, è ancora non del tutto andando a controllare. Quindi, se si tira su la tua ASCII tavolo, sappiamo che da 0 a 9 sono in un segmento. Dimmi i numeri che hanno conforme a se possibile. PUBBLICO: 40. ALLISON BUCHHOLTZ-AU: Quindi la gamma è come 40-- PUBBLICO: Forse. Da 48 a 57. Non sono sicuro. ALLISON BUCHHOLTZ-AU: 40-57? PUBBLICO: 48, credo. ALLISON BUCHHOLTZ-AU: da 48 a 57. Così sappiamo che quelli ASCII symbols-- se il valore ASCII non è tra il 48 e il 57, non è valido, giusto? Così potremmo usarla per il nostro vantaggio forse? Come faremo a ottenere questa lettera, prima di tutto? Come stiamo accedendo questo questo personaggio? PUBBLICO: s staffa i. ALLISON BUCHHOLTZ-AU: Mm-hm. Perché possiamo pensare stringhe come array, ricorda. Allora, cosa vogliamo dire? Vogliamo dire se questo è-- Ti do un suggerimento. Si tratta di un meno. Cosa pensi che deve essere inferiore? PUBBLICO: 57? ALLISON BUCHHOLTZ-AU: 47, giusto? Ma rappresenta anche che mentre uno 0 in single [? spokes?], perché è il carattere 0. Si potrebbe anche mettere 47. Avendo la tabella ASCII, come vedi, è solo qualcosa si dovrebbe avere sul vostro foglio di quiz. Quindi, se questo è il caso, se è un meno di 0-- non necessariamente e. E 'solo uno dei due sta per essere inferiore o superiore a 9. Così si può compilare questo ultimo per me? Quindi o s di i è quello che, Rhea? PUBBLICO: Maggiore di 9. ALLISON BUCHHOLTZ-AU: Ci. Questo fa senso tutti, come ci siamo arrivati? Questi problemi, sono come una volta visualizzare le soluzioni, è come oh, OK. E questo è il motivo per cui la pratica vi aiuterà. OK, così torniamo 0. Incantevole. Bene. In caso contrario, che cosa vogliamo fare? Questa è la parte interessante dove è un po 'più come la matematica contro il CS a mio parere. Qualcuno ha un'idea di come si potrebbe fare questo? Quindi la cosa importante realizzare è il primo carattere stiamo prendendo sta per essere la più alta cifra di ordine, giusto? Quindi, se stiamo guardando la conversione 123, la prima volta che l'iterazione sta per essere 1, ma abbiamo bisogno di che, per essere 100 entro la fine, giusto? Quindi una cosa che si può fare è che con ogni cifra successiva si prende, si moltiplica il tuo valore di 10, in modo che nel momento in cui raggiunge la fine, tutto è stato spostato verso l'alto, giusto? Così la prima volta che si esegue esso, si ha 1 come valore. La seconda volta lo si esegue, si moltiplicare il valore di 10. Si aggiorna in modo che sia ormai 10, e aggiungere il vostro prossimo valore. E poi si moltiplica per 10 e aggiungere il vostro prossimo valore. Ed è per questo che dicono questo è molto più simile test un algoritmo matematico contro CS, ma sto divagando. Non scrivo i quiz. Quindi una cosa che possiamo fare è che dicono volte valore è uguale a 10. Quindi questo sta per cambiare la vostra cifra una volta ogni volta. E poi vogliamo solo aggiungere. Vogliamo aggiungere a ciò che abbiamo appena ricevuto, giusto? Quindi, come possiamo realmente convertire il nostro Caratteri ASCII in numero che rappresenta? Così sappiamo che 0 è uguale a 47, giusto? Quindi, se 0 è 47, cosa avremmo dovuto fare per essa per fare effettivamente che si tratti di un int di 0? PUBBLICO: E '48. ALLISON BUCHHOLTZ-AU: 48? Scusi. Vorremmo sottrarre 48, giusto? Ricordate la matematica ASCII? Siamo in grado di trattarli solo come i numeri normali. Se li trattano come numeri, diventano i numeri in modo efficace. Quindi, se abbiamo s di i, che permettono di dice in questo caso è uguale a 0. Così s di i in questo caso sarebbe il ASCII-- int ASCII per sarebbe 47. Così potremmo subtract-- o 48. Si potrebbe fare che, è un modo. Qualcuno sa una migliore modo potremmo fare 48? Abbiamo appena detto 0 è-- andare in ASCII si poteva fare di citazione 0. Così fa che tipo di fare senso come funziona? PUBBLICO: A questo punto, è il valore 0 perché anche se si moltiplica per 10, stai partendo da zero, così dovrebbe essere acceso? ALLISON BUCHHOLTZ-AU: Quindi, in questo caso, si voglio moltiplicarlo prima di aggiungere, perché in questo caso, si, sarebbe essere-- ancora il mio puntatore è mancante. Il valore in questo caso, la prima tempo corriamo sarà pari a zero. Quindi stai solo l'aggiunta di su tale prima cifra. Quello che è importante è la prossima volta di eseguire iterazioni, si desidera spostare in su prima di aggiungere il vostro prossimo cifra. Vuol chiarire per voi? Ok. A volte si sta andando a ottenere più cose strane Mathy. Se avete avuto la maggior parte dei questo, siete ancora in corso per get-- si sta andando a fare abbastanza bene. Punteggio parziale è molto grande cosa su quiz CS50. Quindi scrivi quello che sai. Se hai tutto ad eccezione di qui, sei ancora intenzione di fare molto bene il problema. Perché si sta mostrando, OK, ho quasi so. So che ho bisogno di scorrere. Io so quello che mi serve per verificare. Faccio solo non del tutto ottenere come convertirlo. Si sta andando ad essere OK. Sì, si sta andando a perdere un paio di punti, ma si sta ancora intenzione di ottenere un buon numero di punti per qualcosa così se siete mancano queste due linee. Vorrei essere come OK, questa persona sa quello che stanno facendo. La matematica è difficile. Quindi direi che saresti bene. OK, in modo da voi ragazzi pronti a provare strlen con i puntatori ora che voi siete maestri puntatore? Così vi svelo lavoro ragazzi su questo per un po '. Se qualcuno ha bisogno di un aggiornamento. Così si desidera utilizzare puntatore aritmetica, e poi se s è nullo, l'implementazione deve restituire 0. Cose come questa che ti fanno davvero felice di chiamare solo strlen alla fine della giornata. Penso che questo potrebbe essere un po ' più facile che l'ultimo, che è buono. Ti darò ragazzi un altro minuto, e poi lavoreremo attraverso di essa. E poi si arriva a andare in switch. OK, pronti ragazzi? Forse un po '. Quindi io ho dato il tuo due opzioni, giusto? In entrambi i casi verificare la presenza di nulla e restituisce 0 se è, o addirittura calcolare la lunghezza. Allora, chi vuole scrivere controllare per nulla? Andare per esso. PUBBLICO: Se parentesi s uguale uguale a zero return 0. ALLISON BUCHHOLTZ-AU: Lovely. Mi piace quando la metà del vostro problema è solo controllando per nulla. So che con voi ragazzi ultima settimana ero come controllo per nulla letteralmente ogni volta. OK, so-- PUBBLICO: Se return 0 è solo una linea, abbiamo ancora bisogno della parentesi graffa? ZAMYLA Chandler: Non lo sai tecnicamente bisogno di loro tutto il tempo che sei coerente. E 'buona pratica solo per prendere l'abitudine di utilizzare parentesi graffe, ma tecnicamente no. Non ne hanno bisogno per una riga. Abbiamo appena tendiamo a consigliarlo per le persone che iniziano a programma. Così ora che cosa potremmo desiderare di fare qui? Così ora sappiamo che la nostra stringa è valida. Vogliamo continuare a calcolare la lunghezza. Qual è probabilmente la prima cosa vogliamo fare? PUBBLICO: Creazione di un int che è la lunghezza. ALLISON BUCHHOLTZ-AU: Esattamente. PUBBLICO: E vogliamo impostarlo su? ALLISON BUCHHOLTZ-AU: 0. Perfetto. Bene. Ora quello che voglio fare? Questa è davvero la maggior parte di esso. Andare per esso. PUBBLICO: Quindi probabilmente si fa un ciclo for. E poi da quando si chiama s sei ottenere l'indirizzo della prima cosa, si dovrebbe iniziare con i uguale a 0. E poi finché x più i non è barra rovesciata 0. ALLISON BUCHHOLTZ-AU: Il terminatore null. PUBBLICO: Il terminatore nullo. Poi si aggiunge uno di lunghezza. ZAMYLA Chandler: Sì. OK, così lascia girare che in codice molto concreto. Ma questa è l'idea perfetta. Questo è esattamente quello che stiamo facendo. Stiamo per essere l'iterazione attraverso con il puntatore. Così che cosa vogliamo fare è invece di un int qui, perché siamo non si riferisce a un sistema IT. Ci riferiamo per l'inizio di un stringa, che cominciare ad essere un po 'di indirizzo, giusto? Quindi vogliamo un puntatore. Quindi stiamo andando ad avere qualche stella char, perché corrisponde ai nostri s, giusto? Quindi questo è un certo punto siamo inizializzazione all'inizio della stringa, OK? Così facciamo solo chiamano i. Se è l'inizio della stringa, che cosa sta andando da assegnare? Non 0. Noi vogliamo che sia il inizio della nostra stringa. Cosa rappresenta l'inizio di la nostra stringa che è stato dato a noi? PUBBLICO: Basta s. ALLISON BUCHHOLTZ-AU: s. Quindi, questo crea un po 'di nuovo puntatore che rappresenta l'inizio della nostra stringa, OK? Un altro modo di pensare di esso è come qui è la nostra gamma. Questa è la nostra stringa, s. Quindi diciamo che questo è il primo luogo, e questo è 0x4. 04. Questa è la nostra s, che contiene quell'indirizzo. E abbiamo appena creato un altro chiamato i che si riferisce solo alla stessa cosa. Quindi, sono entrambi solo puntando all'inizio della nostra stringa. Questa è solo una rappresentazione grafica. Così ora che cosa vogliamo fare è che vogliamo iterare la nostra condizione per iterazione attraverso la nostra stringa. Ora lo shopping. Avuto modo di fare acquisti, ragazzi. È che vogliamo mantenere l'aggiornamento fino a quando raggiungiamo il terminatore nullo, giusto? Così che cosa potrebbe che essere simile? Vogliamo i, o vogliamo stelle, i è la domanda? Il terminatore nullo un indirizzo o qualcosa del genere trova a un indirizzo? Situato a un indirizzo, giusto? Quindi abbiamo bisogno di risolvere il riferimento ciò che è qui, perché questo è solo un po 'di indirizzo. Per arrivare in realtà all'inizio abbiamo bisogno di dereference questo in modo che realmente otteniamo cosa c'è in questo primo posto. Quindi, se facciamo Star I, cosa non vogliamo che uguali? PUBBLICO: Indietro barra? ALLISON BUCHHOLTZ-AU: Ci. Questo fa senso per tutti? Abbiamo bisogno di andare nella nostra stringa e fare in modo che non è la fine. E poi possiamo solo aggiornare come questo. Aggiornamento Normale. Quindi, fintanto che questi sono met, che cosa dobbiamo fare? PUBBLICO: Lunghezza plus plus. ALLISON BUCHHOLTZ-AU: Mm-hm. E poi, dopo il ciclo for termina, cosa vogliamo tornare? PUBBLICO: Lunghezza? ALLISON BUCHHOLTZ-AU: Lunghezza. Ecco fatto. Ovviamente la carne di questo è la comprensione di questo ciclo for. Ricevono tutti il ​​modo che ha funzionato? Sono felice di andare su di esso di nuovo. PUBBLICO: Il secondo parte, per cui la stella ho lì, questo è l'indirizzo del first-- ZAMYLA Chandler: Non è l'indirizzo. E 'quello che sta. PUBBLICO: Questo è in realtà in là. ALLISON BUCHHOLTZ-AU: Questo è ciò che è in realtà in là. Quindi questo è saying-- lasciare me fare questo meglio. Quindi questo è 0x04, e sto solo andando dire che ho intenzione di fare questo il mio nome. Ok. Sì, so di avere recensione quiz stasera. Un sacco di revisione quiz. Quindi diciamo che questa stringa è il mio nome, Allison. Po 'disordinato, ma è lì. E s rappresenta la posizione dove la stringa inizia, così ho intenzione di fare questo real-- questo è l'indirizzo di un, dove inizia la stringa, giusto? Quindi quello che facciamo qui è che vogliamo utilizzare i puntatori per scorrere. Quindi creiamo un po 'di puntatore, i, che anche è uguale all'inizio della stringa. E in ogni punto, vogliamo continuare a passare attraverso la matrice qui fino a quando abbiamo raggiunto il terminatore null. Quindi, vogliamo sempre di verificare che cosa è a ciascuno di questi indirizzi. Così abbiamo dereferenziare i, in modo che la prima volta che lo facciamo noi dire, OK, che cosa è all'indirizzo 0x04? E 'un a. OK, siamo a posto. Incremento di lunghezza. Passare a quello successivo. Così I-- ricordare puntatori aumento dal dimensioni di quello che stanno indicando. Quindi in questo caso, dal momento che è un char, che sarà l'aggiornamento per uno. Così ora stiamo andando a guardare 5, il che significa che sta andando qui. Così dice OK, passare al 0x05. Cosa c'è dentro? E 'un l. E sarà continuare a fare che finché colpisce questo. E dice OK, che cosa è in qualunque indirizzo è? Il terminatore null, OK. Uscita. E proprio ritorno di lunghezza. Perché avete bisogno di quello che in realtà è a tale indirizzo, non l'indirizzo stesso. Ci sono pochissimi posti dove hai veramente bisogno l'indirizzo. La maggior parte del tempo in cui si sta utilizzando il ed è quando si è in primo luogo l'assegnazione di un puntatore o quando si sta passando in un'altra funzione. OK, tutto bene lì? Tipo? Ok. Quindi sembra che abbiamo ottenuto circa 12 minuti dalla fine, quindi andremo a forse il nostro ultimo problema, e poi c'è qualche concetti che sono venuti su nel frattempo possiamo andare rapidamente su quella. Quindi il passaggio ingranaggi è l'ultimo problema qui, passare dichiarazioni. Così il vostro compito è quello di riscrivere questo in modo che si comporta allo stesso ma non fa uso di interruttori. Mani gessati. Quindi, tutte le domande circa questo fuori del blocco? Nessuno? Ok. Fa capire a tutti che se il caso non ha nulla dopo, significa che dovrebbe seguire il passo successivo? Quindi caso 1 e 2 in questo caso fare la stessa identica cosa. Talvolta un punto di confusione. Bene. Qualcuno ha qualche idea? Sì? Pubblico: Così si può basta fare if. ALLISON BUCHHOLTZ-AU: Mm-hm. Allora, qual è la nostra prima? PUBBLICO: Se n è uguale a è uguale a 1, e le 2 linee per n pari o è uguale a 2, quindi stampare piccole. E poi si può fare altro se? Oppure si può fare solo un caso? ALLISON BUCHHOLTZ-AU: Si può fare altro se? PUBBLICO: Cambierebbe qualcosa se lo fai se? ALLISON BUCHHOLTZ-AU: Così lo fa. Anyone-- fa così, si otterrà lo stesso risultato se si utilizza solo se e contro se si utilizza altro IFS. Can you guys pensare alla ragione il motivo per cui si potrebbe desiderare di utilizzare un altro se rispetto a un sacco di IFS? Deve con efficienza. Sì? PUBBLICO: Sarebbe verificare tutte le IFS ogni volta. ALLISON BUCHHOLTZ-AU: Quindi, anche se ha colpito il primo, sarebbe andare al check ogni altro. Così si desidera utilizzare if else if nei casi dove solo uno di essi sarà mai applicare. Così la mutua esclusione è quello che si tende a dire. Se si dispone di un gruppo di IFS, significa che forse più di uno di essi questioni, e forse più di uno di essi può essere vero. E si vuole entrambi da eseguire se sono vere. Se si desidera solo uno di loro a lavorare in questi casi mutuamente esclusivi, che si desidera utilizzare altro se, a causa tutto ha a che fare con l'efficienza. Il tuo codice è solo meglio progettato se aderisce a questa pratica. Quindi, in questo caso avremo un altro caso. E questo sarebbe? PUBBLICO: n è uguale uguale a 3. ALLISON BUCHHOLTZ-AU: Perfect. Supporto di stampa. E poi nel nostro ultimo caso, che cosa abbiamo? Altrimenti oppure se? PUBBLICO: Else. ALLISON BUCHHOLTZ-AU: Do ci want-- Volete else if perché abbiamo casi concreti. Non è una specie di fermo tutto. Se tu avessi un difetto in un switch-- ricordare in switch si può avere caso, e poi ci sono di default. Se tu avessi un default, che è genere della sua dichiarazione il resto c'è. Ma se ha solo casi, che significa che è necessario per verificare se si tratta di ciascuno di questi. Quindi in questo caso, sarebbe il 4 o 5. Vogliamo una stampa fuori. E 'grande. E ci si va. E questo sarebbe il vostro programma. Quindi, in questo caso in cui aveva un qualcosa di predefinito, avremmo un altro qualunque cosa voleva che noi facessimo. In modo che sia una buona distinzione di conoscere, di capire. Ritiene che aiutano con interruttori per voi? Perfetto. Bene. Abbiamo circa otto minuti dalla fine. Fate voi ragazzi avete qualsiasi altri concetti di alto livello? Domande in generale? Sì? PUBBLICO: Ho avuto un domanda di uno di loro che era circa casuale numero generatore di quiz a zero. ZAMYLA Chandler: Oh, quello. Quello è un altro in cui è più la matematica than-- sì. La soluzione di che-- anche io quando La vedo io, io sono come quello che è questo. PUBBLICO: E 'stato il numero 7. ZAMYLA Chandler: E 'strano, a mio parere. Quindi, in pratica si vuole utilizzare drand48, che vi darà un po ' numero compreso tra 0 e 1. E si desidera utilizzare in modo che in qualche modo si ottiene a-- ed è molto più di un problema di matematica a me che penso che un problema CS. Il modo in cui si fa it-- e a volte sarà proprio essere così. Di nuovo, questi sono i casi in cui è sorta di come scrivere quello che può e del credito parziale. Quindi, se vogliamo un ritorno, sappiamo che siamo intenzione di utilizzare drand48 in qualche modo, giusto? Allora perché non ci butto solo che verso il basso. Stiamo usando in qualche modo. Il modo in cui essi hanno voi ragazzi usate è in questo modo, che cercherò di spiegare. Quindi, in pratica quello che succede qui è perché è compreso tra 0 e 1, quello che stai facendo è che stai moltiplicando by-- questo è molto una questione di matematica. Basta disclaimer completo, questo è completamente una domanda di matematica. Quello che stai facendo è a causa di 0 e 1 e si Voglio che sia all'interno questa gamma, è in realtà capire quanto è grande l'intervallo è, quindi che, fondamentalmente, scalare verso l'alto, che è ciò che questo sta facendo. b meno una ti dà tale intervallo, il differenza tra questi numeri. È possibile moltiplicare tra 0 e 1, e quindi aggiungendo un solo significa che la tua scala in su in modo che sia tra A e B, che non mi piace molto questo problema. Come ho detto, questo quiz è destinata a comprendere le persone che sono meno confortevoli, una via di mezzo, e più confortevole. Quindi, se l'hanno fatta così che si trattava di qualcosa di che tutti al meno luogo confortevole otterrebbe, avremmo troppi Persone Segnare perfeziona, e la più comoda sarebbe annoiato. Così hanno sempre questi tipo di domande rompicapo che sono destinate ad essere un po 'più difficile che prendono un po 'di pensiero creativo. Quando li vedi, non troppo perplesso. Mi sarebbe sicuramente dire di vibrazione attraverso il quiz prima. Affrontare i problemi che si sa è possibile, perché è inutile rimanere bloccati su un problema quando ci sono tre o quattro o cinque sulla pagina dopo di che si può facilmente fare. PUBBLICO: Perché esattamente si fa moltiplicarlo per la gamma? ALLISON BUCHHOLTZ-AU: si moltiplica la gamma che si know-- è come quanto dopo un vuoi? Così si può pensare, perché restituisce un numero compreso tra 0 e 1, si può pensare ad esso come una percentuale. Quindi è fondamentalmente dicendo se abbiamo la nostra linea numero qui, una è qui, e b è qui. Sei come la quantità di un passato vero? E 'tutto quello che stiamo facendo. Quindi, si sta solo chiedendo il percentuale di questa gamma, che è quello che ti sta dando. E poi fondamentalmente solo ingrandisce di aggiungendo una. E 'un rompicapo matematico. Se ci fosse qualche consiglio dell'ultimo minuto, direi di vibrazione attraverso le domande, capire quali quelli che si So che, come, oh ho ottenuto questo. Quasi sicuramente andranno a essere domande che non sapere o che si sta andando ad avere il tempo per, in modo da colpire i vostri punti di forza, OK? Voi ragazzi stanno andando alla grande. Ci sono molti domande per un motivo, in modo da avere il tempo di tipo di avere la possibilità per dimostrare ciò che sei veramente bravo a. Quindi è OK se siete non bravo in tutto. Gioca ai vostri punti di forza. Sì? PUBBLICO: Quindi è questo andare a restituire qualcosa che è troncato? Sì, lo farà, perché drand i rendimenti compresi tra 0 e 1. Sarà restituire un int, perché sarà troncare quando si aggiunge una o moltiplichiamo per esso. Freddo. Tutte le domande last minute? Voi ragazzi stanno andando a fare grande. Si sta andando ad essere favoloso. E anche se non ci sarà essere caramelle qui la prossima settimana. E io ti amo. Ti amerò ragazzi a prescindere. Va bene, tutti, buona fortuna. Hanno un grande momento. Si sta andando ad essere bene. E sai una cosa? In due giorni è in corso essere finita, mentre io avere due midterms il Giovedi, così almeno sarà fatto voi ragazzi. Va bene, ci vediamo ragazzi la prossima settimana.