1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> PROFESSORE: Così l'ordine del giorno questa settimana, non più di tanto roba. 3 00:00:09,790 --> 00:00:12,801 Ma si spera molto, molto utile e rilevanti per voi ragazzi questa settimana. 4 00:00:12,801 --> 00:00:15,550 Ma stiamo andando a spendere magari 15, 20 minuti solo in fretta a parlare 5 00:00:15,550 --> 00:00:17,370 su elenco di link. 6 00:00:17,370 --> 00:00:19,694 Elenchi di link stanno per essere coperta al quiz. 7 00:00:19,694 --> 00:00:22,610 Quindi, forse, sarebbe molto utile per imparare un po 'di cosa si tratta. 8 00:00:22,610 --> 00:00:25,210 >> Stiamo andando a trascorrere la maggior maggior parte delle sezione di oggi 9 00:00:25,210 --> 00:00:27,640 andando oltre i problemi di pratica quiz a zero. 10 00:00:27,640 --> 00:00:30,970 E poi ci salveremo forse 20, 30 minuti alla fine per tutte le domande persistente 11 00:00:30,970 --> 00:00:32,850 qualcuno ha. 12 00:00:32,850 --> 00:00:34,610 >> E poi, l'ultimo cinque minuti, io vado 13 00:00:34,610 --> 00:00:36,467 per dare una pompa su discorso per il quiz. 14 00:00:36,467 --> 00:00:38,050 Tutti voi ragazzi volete essere qui per questo. 15 00:00:38,050 --> 00:00:39,591 Perché sta andando essere un buon momento. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Va bene, per cui alcuni materiale sulla lista di link. 18 00:00:49,230 --> 00:00:52,620 Come stanno tipicamente strutturati è Hai quello che è chiamato un nodo, giusto? 19 00:00:52,620 --> 00:00:54,870 Avete queste cose chiamate nodi, che sono le strutture. 20 00:00:54,870 --> 00:00:57,360 Vado su come creare un nodo nella diapositiva successiva. 21 00:00:57,360 --> 00:01:00,680 Ma essenzialmente tutti collegati liste è sono dati che 22 00:01:00,680 --> 00:01:03,340 è stato inanellato tramite puntatori. 23 00:01:03,340 --> 00:01:09,110 >> E così il vantaggio che abbiamo di utilizzare una lista collegata sopra, 24 00:01:09,110 --> 00:01:11,280 forse, come un array, è il fatto che in un array 25 00:01:11,280 --> 00:01:15,000 avete bisogno di uno blocco contiguo di memoria tutti nello stesso posto, uno 26 00:01:15,000 --> 00:01:16,870 dopo l'altro, per poter avere quella. 27 00:01:16,870 --> 00:01:20,200 Mentre una lista collegata, si potrebbe avere casuali piccoli pezzi di memoria 28 00:01:20,200 --> 00:01:23,020 tutto il computer inanellato da puntatori. 29 00:01:23,020 --> 00:01:26,270 >> E in questo modo si può accedere alle informazioni 30 00:01:26,270 --> 00:01:28,610 che viene uno dopo l' altra, dopo l'altra 31 00:01:28,610 --> 00:01:32,720 senza bisogno di solo un pezzo enorme di memoria del computer da qualche parte. 32 00:01:32,720 --> 00:01:35,910 E quindi questo è uno dei principali motivi per cui usiamo elenco di link. 33 00:01:35,910 --> 00:01:40,300 >> In secondo luogo, è molto facile da dinamicamente ridimensionare la lista di link, perché in array, 34 00:01:40,300 --> 00:01:44,720 quando si dichiara un array, si ha un certo valore impostato. 35 00:01:44,720 --> 00:01:47,340 Diciamo che ho voluto creare un array di 10 interi. 36 00:01:47,340 --> 00:01:49,970 Creo un array di 10 interi, e questo è tutto. 37 00:01:49,970 --> 00:01:50,580 E '10. 38 00:01:50,580 --> 00:01:52,038 Io non so che cosa fare dopo. 39 00:01:52,038 --> 00:01:53,680 Se avessi voluto farlo 11, non può farlo. 40 00:01:53,680 --> 00:01:55,710 Se voglio farlo 9, non può farlo. 41 00:01:55,710 --> 00:01:59,910 >> Mentre in un elenco di link, è possibile aggiungere e cancellare e inserire dove vuoi. 42 00:01:59,910 --> 00:02:04,940 È possibile ridimensionare in modo dinamico la vostra strutturare qui, la struttura dei dati. 43 00:02:04,940 --> 00:02:08,370 E questo ci dà un sacco maggiore flessibilità 44 00:02:08,370 --> 00:02:11,320 che non lo facciamo in genere avere con gli array. 45 00:02:11,320 --> 00:02:15,210 >> Chiunque confuso sulla base struttura come un elenco di link è 46 00:02:15,210 --> 00:02:17,930 o perché dobbiamo usare uno sopra un array? 47 00:02:17,930 --> 00:02:20,330 Sì, andremo su in dettaglio come creare in realtà uno. 48 00:02:20,330 --> 00:02:24,121 Ma questo è solo un po ' il senso generale in questo momento. 49 00:02:24,121 --> 00:02:24,620 Raffreddare. 50 00:02:24,620 --> 00:02:28,770 E così gli array sono legati insieme di queste belle piccole cose 51 00:02:28,770 --> 00:02:29,960 chiamati nodi. 52 00:02:29,960 --> 00:02:32,210 Tutto un nodo è un tipo di struct. 53 00:02:32,210 --> 00:02:36,090 Ricordate, una struttura è se si voleva per creare un certo tipo di variabile 54 00:02:36,090 --> 00:02:39,850 in C che non lo fa già esisti, tu, come programmatore, 55 00:02:39,850 --> 00:02:42,030 può effettivamente creare tu stesso. 56 00:02:42,030 --> 00:02:46,540 >> E così questo tipo di dati struttura è detto nodo, 57 00:02:46,540 --> 00:02:50,770 è stato effettivamente creato da noi, che non esiste all'interno C da sola. 58 00:02:50,770 --> 00:02:53,150 E il modo in cui si crea uno è che devi 59 00:02:53,150 --> 00:02:57,170 l'intestazione di typedef struct, che racconta il compilatore sono 60 00:02:57,170 --> 00:02:59,640 in procinto di creare una struct. 61 00:02:59,640 --> 00:03:00,830 >> Stiamo andando denominarlo "nodo". 62 00:03:00,830 --> 00:03:03,350 E dentro stiamo andando dichiarare una variabile a, 63 00:03:03,350 --> 00:03:05,060 che sta per memorizzare un valore. 64 00:03:05,060 --> 00:03:09,320 E poi stiamo anche andando a hanno un puntatore chiamato "prossimo" 65 00:03:09,320 --> 00:03:12,090 che punta al prossimo nodo della lista di link. 66 00:03:12,090 --> 00:03:14,730 E poi hai finito che fuori semplicemente ripetendo di nuovo nodo in modo 67 00:03:14,730 --> 00:03:17,490 il compilatore sa, OK questa è la fine del mio struct. 68 00:03:17,490 --> 00:03:22,540 >> E in questo modo, siamo genere di creare un po 'di matrice carino 69 00:03:22,540 --> 00:03:25,450 genere di cose con un valore e con un puntatore. 70 00:03:25,450 --> 00:03:27,757 E si possono collegare tutti insieme a questi puntatori. 71 00:03:27,757 --> 00:03:30,090 In modo che tutti possano essere gentili legate insieme in una catena. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Raffreddare. 74 00:03:34,162 --> 00:03:35,453 Riesci a sentire che un po 'meglio? 75 00:03:35,453 --> 00:03:36,140 >> PUBBLICO: Sì. 76 00:03:36,140 --> 00:03:38,540 >> IL PROFESSORE: Va bene. 77 00:03:38,540 --> 00:03:44,280 Quindi il modo che, come voi potete vedere, un elenco di link tipica è strutturata 78 00:03:44,280 --> 00:03:45,500 è che hai una testa. 79 00:03:45,500 --> 00:03:49,460 Lei ha il valore di testa che non è essendo rilevato da qualsiasi altro puntatore. 80 00:03:49,460 --> 00:03:53,177 Ma sta andando a puntare a, o riferimento, un altro nodo. 81 00:03:53,177 --> 00:03:56,510 Il nodo dopo sta per fare riferimento alla nodo dopo, e così via e così via 82 00:03:56,510 --> 00:03:59,170 fino a che alla fine ha colpito Alla fine della vostra lista Link. 83 00:03:59,170 --> 00:04:00,980 E basta non avere un puntatore lì. 84 00:04:00,980 --> 00:04:04,659 >> E così, pensare come, in una catena, o anche se qualcuno di voi ragazzi fatti, non so, 85 00:04:04,659 --> 00:04:06,450 come con Fruit Loops quando eri piccolo. 86 00:04:06,450 --> 00:04:08,590 Si farebbe li stringa insieme e li portano al collo. 87 00:04:08,590 --> 00:04:09,840 Penso che sia la stessa cosa. 88 00:04:09,840 --> 00:04:12,964 Avete queste piccole cose che si può stringa insieme quel punto per uno 89 00:04:12,964 --> 00:04:15,291 dopo che, a quello dopo , e così via e così via 90 00:04:15,291 --> 00:04:17,040 fino ad avere una catena di una struttura dati 91 00:04:17,040 --> 00:04:21,190 che è possibile utilizzare come più vi piace. 92 00:04:21,190 --> 00:04:27,370 >> Quindi il modo che questo avremmo tipicamente inserire o eliminare 93 00:04:27,370 --> 00:04:30,020 qualsiasi nodo da un collegamento elenco è molto diversa 94 00:04:30,020 --> 00:04:31,970 a seconda di dove è quel nodo. 95 00:04:31,970 --> 00:04:34,880 Così, per esempio, perché puntatori sono sempre 96 00:04:34,880 --> 00:04:38,645 che punta a un valore specifico, quando si elimina o si inserisce un nodo, 97 00:04:38,645 --> 00:04:41,770 si vuole fare in modo che il puntatore è tutto indicando le cose giuste. 98 00:04:41,770 --> 00:04:46,200 >> Quindi, se si voleva inserire potenzialmente un nuovo nodo con il valore di una 99 00:04:46,200 --> 00:04:48,379 all'interno di un collegamento ordinato lista, sappiamo tutti qui 100 00:04:48,379 --> 00:04:51,170 dalla foto che sta per andare tra testa e due, giusto? 101 00:04:51,170 --> 00:04:52,620 Perché uno si adatta proprio lì. 102 00:04:52,620 --> 00:04:59,060 Ma il modo in cui lo farebbe è in primo luogo dereferenziazione il puntatore 103 00:04:59,060 --> 00:05:02,160 dalla testa e trasmettere tali a uno. 104 00:05:02,160 --> 00:05:05,040 >> Ma veniamo in di un problema qui. 105 00:05:05,040 --> 00:05:08,280 Chiunque può vedere che cosa il problema è se dovessimo primo dereference 106 00:05:08,280 --> 00:05:10,090 il puntatore da testa a uno? 107 00:05:10,090 --> 00:05:14,202 Che problema potremmo incontrare se cerchiamo aggiungere questo alla parte anteriore del nostro array? 108 00:05:14,202 --> 00:05:15,409 >> PUBBLICO: [incomprensibile] 109 00:05:15,409 --> 00:05:16,200 IL PROFESSORE: Esattamente. 110 00:05:16,200 --> 00:05:20,000 Quindi qui abbiamo un puntatore che era una volta che punta dalla testa a due. 111 00:05:20,000 --> 00:05:23,120 Ma se si sbarazzarsi di quel puntatore, si punta a uno, 112 00:05:23,120 --> 00:05:26,500 ora abbiamo alcuna idea dove andare a trovare due. 113 00:05:26,500 --> 00:05:29,850 Perché, come ho detto prima, hai un pezzo gigante di memoria del computer. 114 00:05:29,850 --> 00:05:31,860 Tutti questi nodi potrebbero essere intervallati in modo casuale 115 00:05:31,860 --> 00:05:33,350 in qualsiasi posto nel vostro computer. 116 00:05:33,350 --> 00:05:36,140 E non si sa come fare per trovare questo. 117 00:05:36,140 --> 00:05:40,420 >> E quindi è necessario avere puntatori indicando tutti i nodi alla fine. 118 00:05:40,420 --> 00:05:42,420 Oppure, se si accidentalmente dereference uno 119 00:05:42,420 --> 00:05:44,485 senza prima assegnazione un valore prima, sei 120 00:05:44,485 --> 00:05:47,410 solo andando a perdere tutto in seguito. 121 00:05:47,410 --> 00:05:49,720 >> Così che cosa stiamo andando a fare è, si farebbe prima 122 00:05:49,720 --> 00:05:53,270 vuole creare un puntatore su il nodo che si desidera inserire. 123 00:05:53,270 --> 00:05:55,270 Puntare a cui si vuole inserirla, 124 00:05:55,270 --> 00:05:59,410 e poi dopo si potrebbe puntare di nuovo testa a uno. 125 00:05:59,410 --> 00:06:02,800 >> Questo fa senso a tutti qui? 126 00:06:02,800 --> 00:06:03,346 Grande. 127 00:06:03,346 --> 00:06:04,720 Pensate a come proprio come una catena. 128 00:06:04,720 --> 00:06:07,420 Se si aggiunge una catena, è una specie di intuitivo 129 00:06:07,420 --> 00:06:10,742 come devi andare sull'inserimento di questo. 130 00:06:10,742 --> 00:06:15,274 >> OK, in modo che in realtà è molto più breve di Ho pensato che sarebbe stato, 131 00:06:15,274 --> 00:06:16,690 un spiel cinque minuti su liste di link. 132 00:06:16,690 --> 00:06:19,960 Solo così voi ragazzi avete la idea di base di cosa si tratta. 133 00:06:19,960 --> 00:06:23,580 >> Qui abbiamo l'ordine del giorno quiz zero. 134 00:06:23,580 --> 00:06:24,895 Non lasciate che questo intimidire. 135 00:06:24,895 --> 00:06:26,270 So che è un sacco di informazioni. 136 00:06:26,270 --> 00:06:27,580 Sembra molto spaventoso. 137 00:06:27,580 --> 00:06:33,130 E 'anche un sacco di, I pensare, CSC tipo di condizioni. 138 00:06:33,130 --> 00:06:37,440 Cose come stringhe esadecimali, puntatori, le allocazioni di memoria dinamica 139 00:06:37,440 --> 00:06:40,120 sono termini che suonano molto spaventoso. 140 00:06:40,120 --> 00:06:42,700 >> Ma stiamo andando a rompere loro giù, fare un po 'di problemi pratici 141 00:06:42,700 --> 00:06:44,980 in modo che voi ragazzi tutto sono pronti per questo test. 142 00:06:44,980 --> 00:06:47,104 Quanti di voi ragazzi hanno già iniziato a studiare? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, ragazzi probabilmente si vuole per iniziare iniziare 145 00:06:53,670 --> 00:06:56,480 su questo, perché il quiz è domani. 146 00:06:56,480 --> 00:06:58,739 O Giovedi per alcuni di voi. 147 00:06:58,739 --> 00:07:01,030 Sì, così abbiamo intenzione di andare su alcuni problemi pratici. 148 00:07:01,030 --> 00:07:04,600 Se tutti voi volete prendere un foglio di carta, una matita. 149 00:07:04,600 --> 00:07:07,310 Stiamo andando a spendere solo il stragrande maggioranza delle sezione di oggi 150 00:07:07,310 --> 00:07:11,590 andare oltre alcuni di che così voi ragazzi avete un'idea di cosa aspettarsi sul quiz. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> OK. 153 00:07:16,890 --> 00:07:19,730 Un paio di logistica dettagli come pure, per chiunque 154 00:07:19,730 --> 00:07:25,120 che non è stato a quel link lì, se si va a cs50.yale.edu, sul fronte 155 00:07:25,120 --> 00:07:28,566 questa pagina c'è un link che dice: "Chi Quiz Zero". 156 00:07:28,566 --> 00:07:29,440 Link vi porterà là. 157 00:07:29,440 --> 00:07:31,065 Se non avete letto, si prega di leggere. 158 00:07:31,065 --> 00:07:34,470 Perché ti dice veramente importante informazioni per quanto riguarda il quiz. 159 00:07:34,470 --> 00:07:37,410 >> Io vado a tirare fuori da questo che solo perché, fisicamente, 160 00:07:37,410 --> 00:07:40,200 se voi ragazzi non si sa dove di andare, avremo problemi. 161 00:07:40,200 --> 00:07:44,220 E quindi se il vostro ultimo in termini di A a N, andare all'auditorium scuola di legge. 162 00:07:44,220 --> 00:07:47,500 E se le vostre ultime inizia con P dalla A alla Z, andare a Davies Auditorium. 163 00:07:47,500 --> 00:07:50,240 E questo vale solo per persone nella sezione Mercoledì. 164 00:07:50,240 --> 00:07:53,420 >> Se stai prendendo il quiz su Giovedi, si va a SSS 114 165 00:07:53,420 --> 00:07:55,078 dove la vostra lezione è in genere. 166 00:07:55,078 --> 00:07:55,953 PUBBLICO: [incomprensibile] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 PROFESSORE: O alla Z, si sta andando per andare all'auditorium Davies. 169 00:08:01,940 --> 00:08:03,273 Ho intenzione di cambiare la situazione, giusto? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, sì, appena riesce automaticamente. 172 00:08:09,698 --> 00:08:11,753 >> Oh sì, sei tu Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Sì, il mio male. 175 00:08:16,030 --> 00:08:17,610 Sì, O alla Z, si sta andando per andare a Davies all'Auditorium. 176 00:08:17,610 --> 00:08:19,140 Ho intenzione di risolvere questo problema una volta che caricare. 177 00:08:19,140 --> 00:08:20,320 Già. 178 00:08:20,320 --> 00:08:22,160 >> E poi anche qualcosa importante per la mente 179 00:08:22,160 --> 00:08:25,290 Mercoledì è che, se si è ufficialmente iscritto nella sezione di Mercoledì, 180 00:08:25,290 --> 00:08:26,832 si deve prendere il quiz il Mercoledì. 181 00:08:26,832 --> 00:08:29,706 E se siete iscritti a Giovedi, si deve prendere il quiz Giovedi. 182 00:08:29,706 --> 00:08:31,000 Ed è durante le ore di lezione. 183 00:08:31,000 --> 00:08:35,970 Dove, penso che sia come 01:00 per 02:15 il mercoledì e 2:30-03:45 184 00:08:35,970 --> 00:08:37,220 di giovedì. 185 00:08:37,220 --> 00:08:41,710 >> Se si dispone di un conflitto inconciliabili, Scuse di Dean sono l'unica cosa, 186 00:08:41,710 --> 00:08:43,030 purtroppo, siamo in grado di prendere. 187 00:08:43,030 --> 00:08:45,560 Perché abbiamo avuto una stragrande maggioranza delle richieste 188 00:08:45,560 --> 00:08:47,970 per passare da Mercoledì a Giovedi. 189 00:08:47,970 --> 00:08:51,265 Che non siamo in grado di onorare i meno abbiamo la richiesta di un Dean. 190 00:08:51,265 --> 00:08:52,650 >> OK. 191 00:08:52,650 --> 00:08:57,000 Quindi, prima di iniziare su una paio di problemi di pratica, 192 00:08:57,000 --> 00:09:00,540 Sto solo andando ad andare oltre Di Andy suggerimenti utili per il successo. 193 00:09:00,540 --> 00:09:04,140 Voi ragazzi, quando si studia, è davvero vogliono praticare la scrittura di codice a mano. 194 00:09:04,140 --> 00:09:07,050 La prima volta che ho mai ha preso un quiz CS, non avevo 195 00:09:07,050 --> 00:09:09,960 la scrittura di codice pratica a mano prima ed era estremamente 196 00:09:09,960 --> 00:09:11,890 scioccante di quanto sia stato difficile. 197 00:09:11,890 --> 00:09:16,125 >> Quando voi ragazzi non si ottiene nella abitudine di digitare tutto, 198 00:09:16,125 --> 00:09:20,260 si tratta molto essere naturalmente in grado di avere autocompleted 199 00:09:20,260 --> 00:09:22,015 staffe e virgola là. 200 00:09:22,015 --> 00:09:23,890 Quando si scrive fuori a mano, a volte è 201 00:09:23,890 --> 00:09:27,100 molto, molto facile dimenticare un punto e virgola, o si dimentica di chiudere una staffa, 202 00:09:27,100 --> 00:09:30,970 o dimenticare di chiudere i due punti, o qualcosa di simile. 203 00:09:30,970 --> 00:09:34,322 >> Così, quando si scrive codice a mano, si tratta di una sensazione molto diversa. 204 00:09:34,322 --> 00:09:37,280 Quindi ragazzi, quando stai lavorando attraverso alcuni dei problemi di pratica, 205 00:09:37,280 --> 00:09:38,904 sarebbe bene praticare veramente oggi. 206 00:09:38,904 --> 00:09:41,770 O domani, suppongo, se siete prendendo il quiz il Giovedi. 207 00:09:41,770 --> 00:09:45,280 >> In secondo luogo, abbiamo l'ultima, come, otto anni vale la pena di pratica 208 00:09:45,280 --> 00:09:47,070 quiz online. 209 00:09:47,070 --> 00:09:50,759 Quiz di quest'anno sarà probabilmente molto, molto simile a tutti loro. 210 00:09:50,759 --> 00:09:51,800 Sono tutti molto simili. 211 00:09:51,800 --> 00:09:54,220 Si tipo di entrare nel stile del tipo di domande 212 00:09:54,220 --> 00:09:57,250 che chiediamo, il tipo di funzioni che ci scriviamo in, 213 00:09:57,250 --> 00:09:58,580 eccetera, eccetera. 214 00:09:58,580 --> 00:10:01,980 >> Quindi prendere i quiz di pratica, soprattutto sotto vincoli di tempo. 215 00:10:01,980 --> 00:10:05,390 75 minuti per fare il quiz è non molto tempo. 216 00:10:05,390 --> 00:10:07,254 E 'molto, molto lungo. 217 00:10:07,254 --> 00:10:09,670 E così voi ragazzi volete davvero fare in modo che voi siete 218 00:10:09,670 --> 00:10:11,990 l'abitudine di scrittura codice a mano rapidamente. 219 00:10:11,990 --> 00:10:15,070 Perché non si desidera che il primo tempo per vedere un quiz di tale lunghezza 220 00:10:15,070 --> 00:10:16,560 essere sul vostro quiz. 221 00:10:16,560 --> 00:10:20,540 Voi ragazzi vuole veramente fare in modo che si pratica in anticipo. 222 00:10:20,540 --> 00:10:24,550 >> In quarto luogo, si desidera rivedere il lezioni e delle sezioni diapositive. 223 00:10:24,550 --> 00:10:25,980 Non è necessario memorizzare le cose. 224 00:10:25,980 --> 00:10:30,430 In realtà, a tutti è consentito un un foglio di carta bianca note, 225 00:10:30,430 --> 00:10:31,090 davanti e dietro. 226 00:10:31,090 --> 00:10:32,920 Voi potete digitare o scrivere. 227 00:10:32,920 --> 00:10:37,070 Se vi trovate a dover imparare a memoria niente, lo posò su quel foglio. 228 00:10:37,070 --> 00:10:40,810 >> Vi garantisco, non si vuole essere bloccato nel bel mezzo di quel quiz 229 00:10:40,810 --> 00:10:43,890 essere come, oh sì, qual è la tempo di esecuzione di questo tipo rispetto a quel genere. 230 00:10:43,890 --> 00:10:46,490 Appena messo giù e copiarlo direttamente dal tuo foglio di nota. 231 00:10:46,490 --> 00:10:50,420 Poi si può effettivamente basta usare il cervello a pensare ai problemi 232 00:10:50,420 --> 00:10:52,190 piuttosto che dover ricordare fatti. 233 00:10:52,190 --> 00:10:55,250 E così davvero approfittare di tutti i dettagli di nicchia 234 00:10:55,250 --> 00:11:00,140 che pensi di aver bisogno di memorizzare, plop giù sul foglio revisione. 235 00:11:00,140 --> 00:11:02,680 >> OK, tutte le domande logisticamente per quanto riguarda il quiz 236 00:11:02,680 --> 00:11:05,510 prima di iniziare un po ' problemi quiz professi? 237 00:11:05,510 --> 00:11:06,416 Sì? 238 00:11:06,416 --> 00:11:10,040 >> PUBBLICO: Io non ho avuto la possibilità a guardare il quiz [incomprensibile] 239 00:11:10,040 --> 00:11:11,757 ma sta andando essere applicazione per lo più, 240 00:11:11,757 --> 00:11:14,090 O c'è anche sta per essere, come, domande di cultura? 241 00:11:14,090 --> 00:11:14,940 >> IL PROFESSORE: E 'molto. 242 00:11:14,940 --> 00:11:16,731 Quindi, il modo che avrebbe descritto il quiz 243 00:11:16,731 --> 00:11:18,810 è-- ho messo insieme alcuni problemi pratici 244 00:11:18,810 --> 00:11:20,960 che ho tirato da tutti i quiz. 245 00:11:20,960 --> 00:11:25,210 Ma vedrai che ci sono due principali tipi di domande che ti chiedono. 246 00:11:25,210 --> 00:11:28,750 >> Uno è un dettaglio molto basso livello di roba. 247 00:11:28,750 --> 00:11:31,720 Ti daremo un piccolo pezzo di codice e dire, c'è un errore qui? 248 00:11:31,720 --> 00:11:33,110 Quale sarebbe la stampa di qui? 249 00:11:33,110 --> 00:11:35,980 Che sarà mai questo codice produce, eccetera. 250 00:11:35,980 --> 00:11:38,710 Così sezione Informazioni molto basso livello. 251 00:11:38,710 --> 00:11:42,700 >> E il rovescio della medaglia, avremo molto alto livello domande basate sulla conoscenza. 252 00:11:42,700 --> 00:11:45,190 Puoi spiegare cosa il differenza tra una ricerca binaria 253 00:11:45,190 --> 00:11:46,148 e una ricerca lineare è? 254 00:11:46,148 --> 00:11:48,500 Perché vorremmo utilizzare uno sopra l'altro? 255 00:11:48,500 --> 00:11:49,960 Forse, ciò che è GDB? 256 00:11:49,960 --> 00:11:51,560 Perché vogliamo utilizzare GDB? 257 00:11:51,560 --> 00:11:54,590 Più alto livello, più fondamentale le domande di comprensione. 258 00:11:54,590 --> 00:11:58,240 Quindi vedrete una miscela di due di loro sul tuo quiz. 259 00:11:58,240 --> 00:12:01,462 >> Tutto il resto prima di proseguire dritto in esso? 260 00:12:01,462 --> 00:12:02,879 OK. 261 00:12:02,879 --> 00:12:03,670 PUBBLICO: Un altro. 262 00:12:03,670 --> 00:12:04,030 PROFESSORE: Oh, più uno. 263 00:12:04,030 --> 00:12:04,340 Scusate. 264 00:12:04,340 --> 00:12:05,631 >> PUBBLICO: Sì, è tutto a posto. 265 00:12:05,631 --> 00:12:10,140 Quindi stai dicendo che 75 minuti è troppo breve, come è improbabile 266 00:12:10,140 --> 00:12:11,640 che finiremo? 267 00:12:11,640 --> 00:12:13,571 O, come, 75 minuti è esattamente lo stesso tempo 268 00:12:13,571 --> 00:12:15,700 come avremmo bisogno se fossimo adeguatamente preparati? 269 00:12:15,700 --> 00:12:17,450 PROFESSORE: OK, in modo che il quiz è impegnativo. 270 00:12:17,450 --> 00:12:19,550 E 'sicuramente una sfida. 271 00:12:19,550 --> 00:12:21,092 Vi troverete a corto di tempo. 272 00:12:21,092 --> 00:12:24,341 Probabilmente stai andando a colpire, come 10, 15 minuti per andare, e di essere come, merda. 273 00:12:24,341 --> 00:12:25,520 Ho così tanto da fare. 274 00:12:25,520 --> 00:12:26,520 E questo è tutto bene. 275 00:12:26,520 --> 00:12:28,740 Ognuno sta andando a sentire allo stesso modo. 276 00:12:28,740 --> 00:12:31,074 >> Basta essere molto consapevoli di quanto tempo hai. 277 00:12:31,074 --> 00:12:33,490 Ed è per questo che vi dico ragazzi fare i quiz di pratica. 278 00:12:33,490 --> 00:12:36,672 Perché dà davvero un gran senso di ciò che il quiz sarà come. 279 00:12:36,672 --> 00:12:39,130 Quindi, se vi trovate a essere in grado di finito la pratica 280 00:12:39,130 --> 00:12:41,671 quiz in una buona quantità di tempo, è possibile percorrersi bene, 281 00:12:41,671 --> 00:12:45,695 allora non sarà un problema il Mercoledì o Giovedi. 282 00:12:45,695 --> 00:12:46,575 >> Raffreddare. 283 00:12:46,575 --> 00:12:49,200 Quindi, se tutti wants-- penso molte persone hanno fogli di carta 284 00:12:49,200 --> 00:12:49,810 fuori già. 285 00:12:49,810 --> 00:12:52,604 Ho intenzione di essenzialmente solo dare esempi di domande, 286 00:12:52,604 --> 00:12:54,520 dare a ragazzi, come, un pochi minuti per fare loro. 287 00:12:54,520 --> 00:12:59,610 E noi andremo su come classe ciò che le risposte a loro sono. 288 00:12:59,610 --> 00:13:02,860 >> Quindi questo è un tipico domanda presto faremo 289 00:13:02,860 --> 00:13:06,720 chiedervi, una semplice conversione numeri tra basi diverse. 290 00:13:06,720 --> 00:13:09,070 Binari, come voi ragazzi può richiamo, è base due. 291 00:13:09,070 --> 00:13:12,470 Decimale è base 10, o quello che come esseri umani in genere interpretano. 292 00:13:12,470 --> 00:13:17,120 Esadecimale è base 16, che è pari a zero a nove e da A a F. 293 00:13:17,120 --> 00:13:19,990 >> Quindi c'è quattro numeri Sono chiedendo ragazzi convertire qui. 294 00:13:19,990 --> 00:13:23,909 Ti darò piace, tre a quattro minuti per pensare a come 295 00:13:23,909 --> 00:13:25,200 ci piacerebbe andare circa risolvere questo. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> PUBBLICO: Ci è permesso calcolatori? 298 00:13:35,710 --> 00:13:37,630 >> IL PROFESSORE: non si bisogno di calcolatrici, sì. 299 00:13:37,630 --> 00:13:42,420 Penso inoltre di base, credo, è tutti voi ragazzi saranno chiamati a fare. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> E proprio così io il genere di un senso di quando ognuno è fatto, guardare in alto, 302 00:14:45,070 --> 00:14:47,429 onda, non so, sorriso, guardare felice se il gioco è fatto. 303 00:14:47,429 --> 00:14:47,929 Già. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Forse un paio di minuti. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, portiamo dentro. 308 00:18:29,600 --> 00:18:31,580 Ho volutamente intenzione di darvi ragazzi meno tempo 309 00:18:31,580 --> 00:18:33,760 che probabilmente è necessario fare un po 'di questi problemi, 310 00:18:33,760 --> 00:18:37,124 semplicemente perché voglio fare in modo che si ottiene attraverso un sacco di problemi. 311 00:18:37,124 --> 00:18:39,290 Quindi nessuna preoccupazione se non hai fatto avere la possibilità di finire. 312 00:18:39,290 --> 00:18:43,770 Totalmente OK fino a quando si dispone di un'idea di come fare per questo. 313 00:18:43,770 --> 00:18:45,850 Quindi cerchiamo di andare avanti e fare il primo. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Quindi, prima, qualcuno vuole dirmi in binario, che cosa ognuno di questi numeri 316 00:18:57,870 --> 00:19:00,484 rappresentano in termini di valori? 317 00:19:00,484 --> 00:19:01,250 Sì? 318 00:19:01,250 --> 00:19:03,349 >> PUBBLICO: Due al energetico zero, due a uno. 319 00:19:03,349 --> 00:19:04,140 IL PROFESSORE: Esattamente. 320 00:19:04,140 --> 00:19:04,640 Così. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> A destra, così tipicamente quando siamo in base 10 323 00:19:16,430 --> 00:19:20,580 tutti questi rappresentano sono, come, 10 alla base zero, giusto? 324 00:19:20,580 --> 00:19:21,810 Questo è il tuo unico posto. 325 00:19:21,810 --> 00:19:24,520 Tutto il vostro posto 10 di è è 10 alla potenza di uno. 326 00:19:24,520 --> 00:19:26,600 È 100 del posto è 10 alla potenza di due. 327 00:19:26,600 --> 00:19:29,570 >> Qualunque sia la base si è in sta andando a che fare con la stessa identica cosa, 328 00:19:29,570 --> 00:19:31,480 solo con una base diversa. 329 00:19:31,480 --> 00:19:34,130 Quindi binario, tutto ciò che è è base due. 330 00:19:34,130 --> 00:19:37,110 Stai andando a convertire tutti i cifre in due a qualsiasi potere 331 00:19:37,110 --> 00:19:38,190 di tale cifra. 332 00:19:38,190 --> 00:19:41,450 E così in questo senso, abbiamo possono avere un modo più semplice 333 00:19:41,450 --> 00:19:43,800 di poter aggiungere o sommare tutti i numeri in ordine 334 00:19:43,800 --> 00:19:46,010 per convertire in base 10. 335 00:19:46,010 --> 00:19:50,362 >> Così qualcuno vuole dirmi che cosa il risposta alla prima è in base dieci? 336 00:19:50,362 --> 00:19:51,674 >> PUBBLICO: Due, [incomprensibile] 337 00:19:51,674 --> 00:19:52,340 IL PROFESSORE: Sì. 338 00:19:52,340 --> 00:19:53,230 PUBBLICO: 42. 339 00:19:53,230 --> 00:19:56,560 PROFESSORE: 42, ci si va. 340 00:19:56,560 --> 00:20:00,660 Quindi il modo che abbiamo ottenuto questa risposta è stato di facendo due la prima, che è due. 341 00:20:00,660 --> 00:20:02,760 Più due terzo, che è otto. 342 00:20:02,760 --> 00:20:07,590 Più due al quinto, che è tutto ciò che è rimasto. 343 00:20:07,590 --> 00:20:09,390 Li riassumere ed è 42. 344 00:20:09,390 --> 00:20:12,000 >> C'è qualcuno confuso su come siamo arrivati ​​che? 345 00:20:12,000 --> 00:20:15,630 Inoltre così fondamentale, come Ho detto, si dovrebbe essere OK. 346 00:20:15,630 --> 00:20:17,410 In caso contrario, beh, possiamo praticare anche questo. 347 00:20:17,410 --> 00:20:18,720 Ma questo è tutto a posto. 348 00:20:18,720 --> 00:20:20,560 Raffreddare. 349 00:20:20,560 --> 00:20:25,570 >> Qualcuno ha voglia di darmi il rispondere alla seconda pure? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Bene. 352 00:20:27,600 --> 00:20:30,044 Chiunque confuso su come abbiamo ottenuto che o? 353 00:20:30,044 --> 00:20:31,960 Fresco, avrò il risposte sulla diapositiva successiva. 354 00:20:31,960 --> 00:20:34,440 Quindi nessuna preoccupazione se si necessario copiare il basso. 355 00:20:34,440 --> 00:20:38,860 >> OK, così esadecimale è un po 'più complicato. 356 00:20:38,860 --> 00:20:41,840 ma io vado a mostrarvi ragazzi una scorciatoia per come farlo. 357 00:20:41,840 --> 00:20:44,800 Così esadecimale, come si ricordo, tutto è essere 16. 358 00:20:44,800 --> 00:20:48,920 E perché noi, come esseri umani in realtà non avere 16 numeri per rappresentare che, 359 00:20:48,920 --> 00:20:56,940 si passa da zero a nove, che la nostra prima 10 valori, e poi facciamo da A a F, 360 00:20:56,940 --> 00:20:58,630 che sono i prossimi sei valori. 361 00:20:58,630 --> 00:21:03,040 >> E così il modo più semplice per passare dalla qualsiasi numero binario in esadecimale 362 00:21:03,040 --> 00:21:05,350 è quello di rompere in su a metà. 363 00:21:05,350 --> 00:21:10,042 E così ogni numero binario daremo si avrà probabilmente otto cifre. 364 00:21:10,042 --> 00:21:11,750 Si può solo rompere li nel mezzo. 365 00:21:11,750 --> 00:21:17,460 >> Così il primo tra-- uno uno, uno uno, uno, uno, uno uno. 366 00:21:17,460 --> 00:21:21,340 Genere di pensarci su, si sa, disegna una barra o una virgola tra di loro. 367 00:21:21,340 --> 00:21:23,800 E si può solo convertire direttamente qualunque 368 00:21:23,800 --> 00:21:26,670 questo è il primo numero di esadecimale, 369 00:21:26,670 --> 00:21:29,880 e tutto ciò che qui è di il secondo di esadecimale. 370 00:21:29,880 --> 00:21:37,584 >> Quindi ricorda da notazione comune, che cosa valori esadecimali cominciano con? 371 00:21:37,584 --> 00:21:38,460 >> PUBBLICO: Zero. 372 00:21:38,460 --> 00:21:39,270 >> IL PROFESSORE: 0X. 373 00:21:39,270 --> 00:21:45,210 Così sappiamo che ogni volta vi chiediamo per convertire qualsiasi numero in esadecimale, 374 00:21:45,210 --> 00:21:48,230 o ogni volta che si vede alcuna numero che inizia con 0X, 375 00:21:48,230 --> 00:21:50,230 si sa che si tratta di un valore esadecimale. 376 00:21:50,230 --> 00:21:54,160 >> E allora si sta andando ad essere invitato a determinare ciò che questi due cifre sono. 377 00:21:54,160 --> 00:21:59,690 E il modo di fare che, contando che la metà e contando che la metà. 378 00:21:59,690 --> 00:22:02,870 Quindi, in questo esempio, cosa sarebbe uno, uno, uno, uno essere? 379 00:22:02,870 --> 00:22:04,890 Che valore sarebbe? 380 00:22:04,890 --> 00:22:06,040 Sarebbe F, giusto? 381 00:22:06,040 --> 00:22:08,050 Sarebbe 15. 382 00:22:08,050 --> 00:22:11,780 >> Quindi questo sarebbe F. One, uno, uno, uno qui è anche 383 00:22:11,780 --> 00:22:21,270 F. Così uno, uno, uno, uno, uno, uno, uno, uno in esadecimale, tutto ciò che è è 0XFF. 384 00:22:21,270 --> 00:22:25,350 Perché questo mezzo rappresentava F, il valore di 15, 385 00:22:25,350 --> 00:22:27,331 e questo mezzo rappresentava F, il valore 15. 386 00:22:27,331 --> 00:22:29,456 Perché ricordate, siamo contare da zero a nove. 387 00:22:29,456 --> 00:22:35,290 A è come il 10, B è come 11, F è 15. 388 00:22:35,290 --> 00:22:41,690 >> Ha senso a tutti come abbiamo ottenuto da binario in esadecimale? 389 00:22:41,690 --> 00:22:44,595 >> PUBBLICO: E così come siamo arrivati 15 da uno, uno, uno, uno? 390 00:22:44,595 --> 00:22:46,220 PROFESSORE: Sì, questo è binario, giusto? 391 00:22:46,220 --> 00:22:48,090 Immaginate questo è solo un numero binario. 392 00:22:48,090 --> 00:22:50,792 In modo da avere due a zeroth, che è uno. 393 00:22:50,792 --> 00:22:51,500 PUBBLICO: Oh, OK. 394 00:22:51,500 --> 00:22:51,670 Quindi basta una totale fuori. 395 00:22:51,670 --> 00:22:52,670 >> PROFESSORE: Sì, e poi basta totali che fuori. 396 00:22:52,670 --> 00:22:53,380 Questo è tutto ciò che è. 397 00:22:53,380 --> 00:22:54,890 >> PUBBLICO: OK. 398 00:22:54,890 --> 00:22:55,830 >> IL PROFESSORE: OK. 399 00:22:55,830 --> 00:23:00,740 >> PUBBLICO: Così si va da binario a decimale a esadecimale? 400 00:23:00,740 --> 00:23:04,590 >> IL PROFESSORE: Questo è il modo più semplice per farlo, sì. 401 00:23:04,590 --> 00:23:11,390 Tu non stai andando a decimale perché decimale ha solo zero a nove. 402 00:23:11,390 --> 00:23:13,410 Siamo solo tipo di suddividere questo in su in due. 403 00:23:13,410 --> 00:23:15,201 >> PUBBLICO: [incomprensibile] utilizzando decimale a trovare 404 00:23:15,201 --> 00:23:17,809 ciò corrisponde fino a in esadecimale. 405 00:23:17,809 --> 00:23:20,100 IL PROFESSORE: Voglio dire, tu sei contando con la matematica di base. 406 00:23:20,100 --> 00:23:20,725 PUBBLICO: Sì. 407 00:23:20,725 --> 00:23:22,300 PROFESSORE: Sì, più o meno. 408 00:23:22,300 --> 00:23:23,630 E 'un po' di confusione. 409 00:23:23,630 --> 00:23:26,410 Ma è sufficiente sapere che si può suddividere qualunque 410 00:23:26,410 --> 00:23:28,160 questo valore è in solo metà. 411 00:23:28,160 --> 00:23:29,570 Guarda, che cosa è questo in binario? 412 00:23:29,570 --> 00:23:30,610 Che numero è questo? 413 00:23:30,610 --> 00:23:33,270 Esso sarà qualcosa da zero a F. 414 00:23:33,270 --> 00:23:35,722 >> Qui è inoltre sarà qualcosa da zero a F. 415 00:23:35,722 --> 00:23:37,722 E allora si può solo mettere quei due lì. 416 00:23:37,722 --> 00:23:38,263 >> PUBBLICO: OK. 417 00:23:38,263 --> 00:23:38,910 IL PROFESSORE: Sì. 418 00:23:38,910 --> 00:23:39,410 OK. 419 00:23:39,410 --> 00:23:42,320 Quindi voi ragazzi volete provare il prossimo, allora? 420 00:23:42,320 --> 00:23:49,601 Zero, uno, zero uno, uno, zero, uno zero. 421 00:23:49,601 --> 00:23:52,350 Ti darò ragazzi come 30 secondi, dato che probabilmente non sapeva 422 00:23:52,350 --> 00:23:53,850 il trucco di come fare questo in precedenza. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, qualcuno vuole ottenere questo un colpo? 425 00:24:27,381 --> 00:24:28,774 >> 0x5A. 426 00:24:28,774 --> 00:24:29,440 IL PROFESSORE: 0x5A. 427 00:24:29,440 --> 00:24:30,470 5 bis. 428 00:24:30,470 --> 00:24:31,340 Bene. 429 00:24:31,340 --> 00:24:37,050 Quindi questo qui sarebbe essere-- vuoi di dirci come hai capito? 430 00:24:37,050 --> 00:24:38,920 In primo luogo, come hai fatto a ottenere il cinque? 431 00:24:38,920 --> 00:24:42,030 >> PUBBLICO: Perché lo zero, uno, zero, uno è cinque. 432 00:24:42,030 --> 00:24:45,170 >> IL PROFESSORE: Fa capire a tutti perché a zero, uno, zero, uno è cinque? 433 00:24:45,170 --> 00:24:46,260 Hai uno qui. 434 00:24:46,260 --> 00:24:48,010 Non hai nulla in due al primo. 435 00:24:48,010 --> 00:24:50,300 In due al secondo, avere uno, che è quattro. 436 00:24:50,300 --> 00:24:52,600 Quindi si aggiunge il quattro più l'uno, avete cinque. 437 00:24:52,600 --> 00:24:53,600 Tutti bene? 438 00:24:53,600 --> 00:24:54,100 OK. 439 00:24:54,100 --> 00:24:56,570 E allora che cosa questo essere e perché? 440 00:24:56,570 --> 00:24:58,350 Che cosa fa un numero corrisponde a? 441 00:24:58,350 --> 00:24:59,350 >> PUBBLICO: 10. 442 00:24:59,350 --> 00:25:00,976 >> IL PROFESSORE: E che cosa questo in base due? 443 00:25:00,976 --> 00:25:01,850 PUBBLICO: [incomprensibile] 444 00:25:01,850 --> 00:25:03,010 IL PROFESSORE: Esattamente. 445 00:25:03,010 --> 00:25:06,370 Quindi questo secondo valore qui sarebbe 0x5A. 446 00:25:06,370 --> 00:25:08,410 >> Tutti bene su come convertire? 447 00:25:08,410 --> 00:25:10,770 E 'molto più semplice di quanto si pensi. 448 00:25:10,770 --> 00:25:13,330 Voglio solo essere sicuro sapete suggerimenti utili 449 00:25:13,330 --> 00:25:14,950 e trucchi per come fare. 450 00:25:14,950 --> 00:25:18,432 >> PUBBLICO: Perché si può semplicemente dividere nel mezzo del genere? 451 00:25:18,432 --> 00:25:21,390 Basta essere come, OK, io vado solo cura di questi primi [incomprensibile]? 452 00:25:21,390 --> 00:25:24,240 >> IL PROFESSORE: Perché questo è in realtà il valori esadecimali modo sono rappresentati. 453 00:25:24,240 --> 00:25:26,890 0X, che significa in realtà altro che ti dice 454 00:25:26,890 --> 00:25:28,710 che si tratta di un numero esadecimale. 455 00:25:28,710 --> 00:25:31,580 E questo rappresenta sempre le prime quattro cifre. 456 00:25:31,580 --> 00:25:34,330 E questo rappresenta sempre le ultime quattro cifre. 457 00:25:34,330 --> 00:25:37,835 E così queste due cifre solo corrispondono a differenti bit. 458 00:25:37,835 --> 00:25:39,200 >> PUBBLICO: Quindi dovremo always-- 459 00:25:39,200 --> 00:25:41,830 >> IL PROFESSORE: Sei sempre andando ad ottenere otto bit di valore. 460 00:25:41,830 --> 00:25:44,580 >> PUBBLICO: È che proprio come una cosa qui o che una cosa in tutto? 461 00:25:44,580 --> 00:25:46,883 IL PROFESSORE: Questo è solo un cosa nei computer, sì. 462 00:25:46,883 --> 00:25:47,424 PUBBLICO: OK. 463 00:25:47,424 --> 00:25:48,240 Eccezionale. 464 00:25:48,240 --> 00:25:51,290 >> PROFESSORE: Inoltre, così, in questo esempio abbiamo convertito da binario a decimale, 465 00:25:51,290 --> 00:25:53,290 e da binario a esadecimale. 466 00:25:53,290 --> 00:25:56,610 Voi ragazzi vuole fare in modo anche in pratica andare viceversa. 467 00:25:56,610 --> 00:26:03,370 Quindi, se ho dato 0XFF, si potrebbe disegnare che in binario, giusto? 468 00:26:03,370 --> 00:26:06,820 >> È possibile convertire F in binario, che è uno, uno, uno, una, 469 00:26:06,820 --> 00:26:09,380 convertire F a binario, che è uno, uno, una, una. 470 00:26:09,380 --> 00:26:11,310 >> Così possiamo chiedere di fare viceversa. 471 00:26:11,310 --> 00:26:14,817 Così decimale a binario, o esadecimale a binario. 472 00:26:14,817 --> 00:26:16,650 Così si vuole fare Assicuratevi di sapere in entrambe le direzioni. 473 00:26:16,650 --> 00:26:19,371 Noi probabilmente vi chiediamo un combinazione dei due. 474 00:26:19,371 --> 00:26:20,660 >> Sì, avete una domanda? 475 00:26:20,660 --> 00:26:22,724 Posso see-- stai bene? 476 00:26:22,724 --> 00:26:23,348 PUBBLICO: Sì. 477 00:26:23,348 --> 00:26:24,560 IL PROFESSORE: OK. 478 00:26:24,560 --> 00:26:26,101 Sono bravo a cancellare questo? 479 00:26:26,101 --> 00:26:26,600 Grande. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Va bene, allora le risposte sono qui, se qualcuno è curioso più tardi e si confondono. 482 00:26:40,437 --> 00:26:41,844 OK. 483 00:26:41,844 --> 00:26:46,070 >> PUBBLICO: Che importa se mettiamo le nostre lettere di capitale o minuscolo? 484 00:26:46,070 --> 00:26:50,360 >> IL PROFESSORE: Lo fa, perché in esadecimale, per convenzione, 485 00:26:50,360 --> 00:26:52,840 tutti i personaggi sono maiuscoli. 486 00:26:52,840 --> 00:26:54,650 Quindi da A a F sono sta per essere maiuscolo. 487 00:26:54,650 --> 00:26:58,660 Se si mette una minuscola, non lo so se vogliamo necessariamente segnare sbagliato. 488 00:26:58,660 --> 00:27:00,679 Ma teoricamente, questo non è tecnicamente 489 00:27:00,679 --> 00:27:01,970 come si suppone per averlo. 490 00:27:01,970 --> 00:27:03,303 Così dovrebbero essere tutti in maiuscolo. 491 00:27:03,303 --> 00:27:05,910 Sì, buona domanda. 492 00:27:05,910 --> 00:27:07,780 >> OK. 493 00:27:07,780 --> 00:27:08,790 Seconda domanda. 494 00:27:08,790 --> 00:27:12,750 Considerate questo bel programma qui. 495 00:27:12,750 --> 00:27:15,180 Chiederò la domanda, Tornerò questo. 496 00:27:15,180 --> 00:27:23,170 >> Quindi, in primo luogo, quello che c'è dentro di norma io.h questo è di interesse per il programma 497 00:27:23,170 --> 00:27:26,640 In secondo luogo, che cosa fa nulla indicare in linea di tre? 498 00:27:26,640 --> 00:27:30,572 E in terzo luogo, che cosa di ritorno zero dal principale, come linea di sei, generalmente significare? 499 00:27:30,572 --> 00:27:33,280 Se voi volete scrivere quelle giù, dal momento che ho per tornare indietro 500 00:27:33,280 --> 00:27:36,810 alla diapositiva solo così è possibile visualizzare il codice. 501 00:27:36,810 --> 00:27:40,400 Questo è un esempio di come, forse un maggiore domanda livello in cui ti chiediamo 502 00:27:40,400 --> 00:27:42,435 ciò che le cose significa in un programma. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Tutti bene per me tornare alla diapositiva? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 Ok bello. 507 00:27:54,361 --> 00:27:57,610 Così ti darò ragazzi come forse tre minuti a guardare questo rapido reale. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, quindi questo è come abbastanza facile, concettualmente. 510 00:28:44,140 --> 00:28:49,280 Qualcuno ha voglia di dirmi che cosa è primo in profondità di hash tra cui 511 00:28:49,280 --> 00:28:52,630 il nostro file di libreria io.h standard? 512 00:28:52,630 --> 00:28:55,510 Perché abbiamo bisogno di quella libreria incluso per questo programma? 513 00:28:55,510 --> 00:28:56,930 Quello che qui ne abbiamo bisogno per? 514 00:28:56,930 --> 00:28:56,980 >> Sì? 515 00:28:56,980 --> 00:28:58,340 >> PUBBLICO: È che quando metti che printf? 516 00:28:58,340 --> 00:28:59,131 >> IL PROFESSORE: Esattamente. 517 00:28:59,131 --> 00:29:01,780 Così printf, ogni volta che si prendere un input da parte dell'utente 518 00:29:01,780 --> 00:29:04,140 e stampare qualcosa allo schermo, che è 519 00:29:04,140 --> 00:29:05,600 lo standard input, biblioteca uscita. 520 00:29:05,600 --> 00:29:07,170 Pensate a che way-- input, output. 521 00:29:07,170 --> 00:29:08,430 >> Devo un'uscita? 522 00:29:08,430 --> 00:29:09,207 Sì. 523 00:29:09,207 --> 00:29:12,040 Quindi so che sto andando sempre bisogno della biblioteca standardize i.o. 524 00:29:12,040 --> 00:29:16,400 >> Così printf è la funzione da cui bisogna accedere 525 00:29:16,400 --> 00:29:19,370 e hashtag comprendono la biblioteca i.o standard. 526 00:29:19,370 --> 00:29:20,280 OK. 527 00:29:20,280 --> 00:29:22,660 >> In secondo luogo, che cosa significa nulla? 528 00:29:22,660 --> 00:29:26,970 Abbiamo l'int main (void), cosa fa annullare qui significare qui sulla linea tre? 529 00:29:26,970 --> 00:29:28,080 Sì, nella parte posteriore. 530 00:29:28,080 --> 00:29:29,020 >> PUBBLICO: [incomprensibile] 531 00:29:29,020 --> 00:29:29,920 >> IL PROFESSORE: Esattamente. 532 00:29:29,920 --> 00:29:33,320 Quindi ricordate, abbiamo imparato a cominciare dalla nostra pset 533 00:29:33,320 --> 00:29:35,360 che si può effettivamente indicare la linea di comando 534 00:29:35,360 --> 00:29:39,010 argomenti che il vostro programma, che si funzione principale, prende come voi, l'utente, 535 00:29:39,010 --> 00:29:39,650 chiamalo. 536 00:29:39,650 --> 00:29:42,650 Se abbiamo nulla, che significa che potrebbe semplicemente eseguire direttamente il programma 537 00:29:42,650 --> 00:29:44,680 senza argomenti della riga di comando. 538 00:29:44,680 --> 00:29:46,160 Ognuno chiaro? 539 00:29:46,160 --> 00:29:46,660 OK. 540 00:29:46,660 --> 00:29:52,850 >> E infine perché abbiamo preoccuparsi di fare questa cosa qui ritorno a zero? 541 00:29:52,850 --> 00:29:54,740 Perché abbiamo anche un int main? 542 00:29:54,740 --> 00:29:57,330 Perché non possiamo solo avere void void principale? 543 00:29:57,330 --> 00:29:59,216 Sì? 544 00:29:59,216 --> 00:30:01,590 PUBBLICO: Proprio così che possiamo essere sicuri che il programma sia 545 00:30:01,590 --> 00:30:04,247 uscendo con successo, come al contrario di se è stato numerato. 546 00:30:04,247 --> 00:30:06,580 E vorremmo sapere che questo è un diverso tipo di errore. 547 00:30:06,580 --> 00:30:07,621 >> PROFESSORE: Sì, esattamente. 548 00:30:07,621 --> 00:30:10,670 Questo è solo un cosa convenzionale che facciamo, 549 00:30:10,670 --> 00:30:13,840 è che solo a fine il programma, solo per assicurarsi che 550 00:30:13,840 --> 00:30:15,830 che la funzione principale è in esecuzione in modo corretto, 551 00:30:15,830 --> 00:30:17,940 abbiamo sempre voglia di fare ritorno a zero. 552 00:30:17,940 --> 00:30:21,160 Anche se noi possiamo necessariamente Non vedere che stampate ovunque. 553 00:30:21,160 --> 00:30:25,092 >> Perché, come i programmatori, si sa, se avete molte diverse linee di codice 554 00:30:25,092 --> 00:30:27,050 e non si sa dove questi stanno andando male, 555 00:30:27,050 --> 00:30:30,240 e se si verifica un errore che si desidera fare in modo che si ottiene questo errore. 556 00:30:30,240 --> 00:30:33,240 E così tipicamente se qualcosa va sbagliato avremo un ritorno di uno solo 557 00:30:33,240 --> 00:30:34,669 fare in modo che sappiamo che è. 558 00:30:34,669 --> 00:30:36,460 Quindi, se si vede un ritorno zero, cioè tipicamente 559 00:30:36,460 --> 00:30:38,293 significa che il vostro programma è eseguito con successo. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Buona? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Raffreddare. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, secondo programma qui. 566 00:30:52,680 --> 00:30:54,827 Si consideri che. 567 00:30:54,827 --> 00:30:56,910 E se voi ragazzi vedo un float, voi ragazzi può probabilmente 568 00:30:56,910 --> 00:31:00,810 avere una buona idea di cosa Sto per chiederle. 569 00:31:00,810 --> 00:31:05,200 >> Così, quando questo programma esegue, come si può vedere, 570 00:31:05,200 --> 00:31:09,330 Io dichiaro un galleggiante dentro la mia funzione principale. 571 00:31:09,330 --> 00:31:13,470 Sto chiamandolo "rispose," e sto impostando che uguale ad un diviso 10. 572 00:31:13,470 --> 00:31:17,860 Sto stampare, ad uno decimale, che galleggiano. 573 00:31:17,860 --> 00:31:19,880 E poi sto tornando a zero. 574 00:31:19,880 --> 00:31:24,470 >> Così, quando l'esecuzione del programma, ripensare a avidi ora, 575 00:31:24,470 --> 00:31:26,550 questo programma stampa 0.0. 576 00:31:26,550 --> 00:31:29,993 Come tutti sappiamo, speriamo di tutto conosce, diviso 10 non è a 0.00, 577 00:31:29,993 --> 00:31:32,350 è 0,1. 578 00:31:32,350 --> 00:31:37,810 Ma spiegare perché questo programma pensa 1 che diviso per 10 stampe a 0,1 altro 579 00:31:37,810 --> 00:31:39,504 a 0,1? 580 00:31:39,504 --> 00:31:42,545 Ti darò ragazzi forse come 30 secondi per pensare solo rapidamente a tale proposito 581 00:31:42,545 --> 00:31:43,878 e tornerò al programma. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> OK. 584 00:32:20,290 --> 00:32:22,205 Chiunque vuole dare un colpo? 585 00:32:22,205 --> 00:32:24,330 In tre frasi o meno, perché di solito siamo 586 00:32:24,330 --> 00:32:27,650 andando a limitare tutte le risposte a tre frasi o meno 587 00:32:27,650 --> 00:32:31,130 quindi non solo rigurgitare cose a caso sul vostro quiz. 588 00:32:31,130 --> 00:32:32,740 >> Sì, prendere un colpo. 589 00:32:32,740 --> 00:32:36,390 >> PUBBLICO: Quindi penso che ci sia questo cosa che si chiama, come, [incomprensibile] 590 00:32:36,390 --> 00:32:42,320 Quindi ci potrebbe essere, per esempio, ci potrebbe essere, come, 0,09, 591 00:32:42,320 --> 00:32:47,250 che dove si stampa il primo cifre, sarebbe di 0,0? 592 00:32:47,250 --> 00:32:49,100 >> PROFESSORE: Chiudi, non proprio. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> PUBBLICO: Stai dividere uno e 10, e sono entrambi interi. 595 00:32:51,770 --> 00:32:54,610 E così il modo in cui sta andando memorizzare è come un intero. 596 00:32:54,610 --> 00:32:56,480 E così il primo intero sarebbe 0.0. 597 00:32:56,480 --> 00:32:57,471 E così che è 0.1. 598 00:32:57,471 --> 00:32:58,970 PROFESSORE: Sì, è veramente buono. 599 00:32:58,970 --> 00:33:00,040 Questa è la risposta giusta. 600 00:33:00,040 --> 00:33:03,597 Quindi questo è un molto confusa concetto per un sacco di bambini. 601 00:33:03,597 --> 00:33:06,680 E ci tengo a fare in modo che questo è rafforzata nella testa di tutti. 602 00:33:06,680 --> 00:33:10,090 >> Quindi ciò che noi chiamiamo galleggiante punto imprecisioni, 603 00:33:10,090 --> 00:33:12,800 dove la ragione perché un sacco dei vostri programmi a avido 604 00:33:12,800 --> 00:33:17,010 non ha funzionato inizialmente era perché ti sei dimenticato di lanciare la vostra variabile. 605 00:33:17,010 --> 00:33:19,370 Allora, cosa ha detto Christabell era del tutto corretto. 606 00:33:19,370 --> 00:33:21,990 >> Un galleggiante è intrinsecamente impreciso. 607 00:33:21,990 --> 00:33:26,400 Perché in un computer, a destra, abbiamo una quantità limitata di bit di memoria 608 00:33:26,400 --> 00:33:28,480 possiamo usare per rappresentare i numeri. 609 00:33:28,480 --> 00:33:33,480 Così, per esempio, questo ID CS50 è-- Penso che sia un computer a 64 bit. 610 00:33:33,480 --> 00:33:37,520 >> Un galleggiante può essere rappresentata solo da una quantità limitata di questi bit. 611 00:33:37,520 --> 00:33:42,260 E così 0.1 con zeri infiniti, che era di 0.1 è, giusto? 612 00:33:42,260 --> 00:33:45,450 Ma non possiamo realmente salvare quel numero nel nostro computer. 613 00:33:45,450 --> 00:33:47,810 Noi semplicemente non hanno memoria sufficiente per farlo. 614 00:33:47,810 --> 00:33:52,340 >> E così il ravvicinamento più vicino ciò che è in memoria è in realtà 615 00:33:52,340 --> 00:33:55,390 qualcosa come 0.000 qualcosa, qualcosa, qualcosa, qualcosa. 616 00:33:55,390 --> 00:34:01,240 Che, una volta di troncare esso, arrotonda a 0,0. 617 00:34:01,240 --> 00:34:05,640 >> E così questo è solo un esempio che dimostra un sacco di problemi 618 00:34:05,640 --> 00:34:08,469 abbiamo ogni volta che andremo cercando di fare in modo non corretto la matematica 619 00:34:08,469 --> 00:34:11,000 senza proiettare come un numero intero diverso. 620 00:34:11,000 --> 00:34:14,870 Quindi, solo diffidare di questo avvenimento. 621 00:34:14,870 --> 00:34:18,239 >> Su quiz, se noi diamo un blocco di codice ed è come, 622 00:34:18,239 --> 00:34:19,510 ciò che viene stampato alla fine? 623 00:34:19,510 --> 00:34:24,096 E se è un po 'di valore casuale voi ragazzi dovrebbero sapere perché quello che sta succedendo. 624 00:34:24,096 --> 00:34:24,909 Sì? 625 00:34:24,909 --> 00:34:27,926 >> AUDIENCE: Tronca è sbarazzarsi di tutto dopo un certo punto? 626 00:34:27,926 --> 00:34:28,513 [Incomprensibile] 627 00:34:28,513 --> 00:34:30,929 PROFESSORE: Sì, quindi in realtà questo è davvero un cattivo esempio, 628 00:34:30,929 --> 00:34:37,870 perché tutto ciò che in realtà 0.100 sarebbe tronca fino a 0,1. 629 00:34:37,870 --> 00:34:41,389 Ma se si dovesse eseguire it-- non lo faccio ricordare, perché l'anno scorso hanno 630 00:34:41,389 --> 00:34:42,830 correva su un programma diverso. 631 00:34:42,830 --> 00:34:45,300 Correvano in qualcosa chiamato il CS50 Appliance, che 632 00:34:45,300 --> 00:34:46,389 è diversa dalla ID. 633 00:34:46,389 --> 00:34:48,520 E 'stato un sistema a 32 bit, credo. 634 00:34:48,520 --> 00:34:50,290 E così ci sono stati numeri diversi. 635 00:34:50,290 --> 00:34:53,330 >> Ma in sostanza, è sufficiente sapere che l'intero concetto di troncamento 636 00:34:53,330 --> 00:34:54,815 e come si taglia solo le cose fuori. 637 00:34:54,815 --> 00:34:55,690 E così se rounds-- 638 00:34:55,690 --> 00:34:56,300 >> PUBBLICO: Senza arrotondamento. 639 00:34:56,300 --> 00:34:57,370 >> IL PROFESSORE: Esattamente. 640 00:34:57,370 --> 00:34:57,870 Già. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 Raffreddare. 643 00:35:04,380 --> 00:35:05,250 >> Ciao, nella parte posteriore. 644 00:35:05,250 --> 00:35:07,634 Stiamo solo andando su alcuni revisione quiz domande. 645 00:35:07,634 --> 00:35:08,430 >> Tutto ok. 646 00:35:08,430 --> 00:35:10,150 Quindi prendere in considerazione un programma diverso qui. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Ho intenzione di dare a voi ragazzi un paio di minuti per leggere su questo. 649 00:35:15,380 --> 00:35:18,588 Questo è qualcosa che è stato per molto recentemente che penso che soffiava molti di voi 650 00:35:18,588 --> 00:35:19,142 la mente delle ragazzi. 651 00:35:19,142 --> 00:35:21,100 Ma stiamo andando a parlare attraverso questo nuovo solo 652 00:35:21,100 --> 00:35:24,152 per essere sicuri di capirlo completamente. 653 00:35:24,152 --> 00:35:24,652 OK. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 OK. 656 00:35:41,780 --> 00:35:44,342 Chiunque ha bisogno di più tempo per lettura di questo codice? 657 00:35:44,342 --> 00:35:45,650 OK. 658 00:35:45,650 --> 00:35:50,630 >> Così sembra a me che in questo programma sono 659 00:35:50,630 --> 00:35:53,460 la creazione di due stringhe utilizzando GetString. 660 00:35:53,460 --> 00:35:55,180 Un chiamati s ed uno chiamato t. 661 00:35:55,180 --> 00:35:58,680 E se sono uguali uguali tra loro, 662 00:35:58,680 --> 00:36:00,880 si deve stampare "Tu digitare la stessa cosa. " 663 00:36:00,880 --> 00:36:04,170 >> Ma elsewise, sarebbe stampare, "Tu digitato cose diverse ", giusto? 664 00:36:04,170 --> 00:36:05,990 Sembra molto, molto semplice. 665 00:36:05,990 --> 00:36:08,720 Ma, tuttavia, se io in realtà provare a scrivere questo programma, 666 00:36:08,720 --> 00:36:12,230 sembra che anche quando ingresso esattamente le stesse corde, 667 00:36:12,230 --> 00:36:15,490 esso stampa ancora fuori, "Tu digitato cose diverse! " 668 00:36:15,490 --> 00:36:18,020 Qualcuno ha voglia di prendere una colpo a perché questo programma sempre 669 00:36:18,020 --> 00:36:20,370 risponde che gli ingressi sono diversi, anche 670 00:36:20,370 --> 00:36:22,090 quando le parole stesse sono le stesse? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Quindi, se dovessi input-- David amore per usare un esempio come mamma, giusto? 673 00:36:29,170 --> 00:36:37,890 Minuscolo M-O-M per S, T uguale minuscolo M-O-M. 674 00:36:37,890 --> 00:36:40,340 Se ho eseguito questo attraverso che il codice, perché è vero 675 00:36:40,340 --> 00:36:44,180 stampare "digitato cose diverse?" 676 00:36:44,180 --> 00:36:46,336 >> Qualcuno ha bisogno di più il tempo di pensare a questo? 677 00:36:46,336 --> 00:36:47,294 Ok, penso che siamo a posto. 678 00:36:47,294 --> 00:36:48,716 Sì? 679 00:36:48,716 --> 00:36:53,930 >> PUBBLICO: OK, quindi è qualcosa su dove è memorizzato nella memoria, giusto? 680 00:36:53,930 --> 00:36:54,890 >> IL PROFESSORE: Sì. 681 00:36:54,890 --> 00:37:00,400 >> PUBBLICO: Dove è come, se questo stringa s è conservato a memoria spot-- 682 00:37:00,400 --> 00:37:01,689 Sto inventando questo-- è zero. 683 00:37:01,689 --> 00:37:02,355 IL PROFESSORE: Certo. 684 00:37:02,355 --> 00:37:05,290 PUBBLICO: E stringa t è conservato a punto la memoria, 685 00:37:05,290 --> 00:37:11,000 come, 167, e poi zero non è uguale 167. 686 00:37:11,000 --> 00:37:12,610 >> IL PROFESSORE: Esattamente. 687 00:37:12,610 --> 00:37:18,350 OK, in modo da ricordare questa incredibile rivelazione abbiamo spiegato a voi ragazzi 688 00:37:18,350 --> 00:37:21,530 la scorsa settimana, che stringhe non esistono realmente? 689 00:37:21,530 --> 00:37:25,380 Quando creiamo qualcosa chiamato stringa siamo, in realtà, 690 00:37:25,380 --> 00:37:29,330 la creazione di qualcosa chiamato char stella. 691 00:37:29,330 --> 00:37:34,470 Il che tutto si tratta di è un puntatore una stringa o di un array di caratteri. 692 00:37:34,470 --> 00:37:39,480 >> Così in questo esempio, se erano all'ingresso M-O-M il modo 693 00:37:39,480 --> 00:37:49,350 che il mio computer si memorizza è nella memoria backslash pari a zero, giusto? 694 00:37:49,350 --> 00:37:53,180 Questi quattro personaggi, caratteri, sarebbero memorizzati da qualche parte. 695 00:37:53,180 --> 00:37:59,290 >> E poi queste quattro personaggi, backslash pari a zero, 696 00:37:59,290 --> 00:38:01,275 sono memorizzati da qualche altra parte, giusto? 697 00:38:01,275 --> 00:38:04,685 Non ho idea di dove gli indirizzi sono, sono da qualche parte nel mio computer. 698 00:38:04,685 --> 00:38:07,080 Ma io non so esattamente dove sono. 699 00:38:07,080 --> 00:38:10,170 >> Quando creo una stringa s, tutto ciò che è veramente 700 00:38:10,170 --> 00:38:15,550 è un puntatore inizio di questa stringa. 701 00:38:15,550 --> 00:38:21,130 E quando ho creato questo valore t, tutto ciò che è un puntatore a qui. 702 00:38:21,130 --> 00:38:23,980 E così quando si sta cercando mettere sullo stesso piano e verificare 703 00:38:23,980 --> 00:38:27,710 per vedere se s è pari uguale a t, il computer 704 00:38:27,710 --> 00:38:31,635 è in realtà solo di tornare a si l'indirizzo di questo m 705 00:38:31,635 --> 00:38:33,390 e l'indirizzo di tale m. 706 00:38:33,390 --> 00:38:36,230 E perché sono due pezzi separati di dati 707 00:38:36,230 --> 00:38:38,750 che sono memorizzati in due diversi indirizzi nel vostro computer, 708 00:38:38,750 --> 00:38:41,750 il computer è mai andare a riconoscerli come la stessa. 709 00:38:41,750 --> 00:38:43,500 Qualcuno ha voglia di dare un colpo a quello che abbiamo 710 00:38:43,500 --> 00:38:46,900 avrebbe dovuto fare se volevamo correggere questo e hanno un corretto programma in esecuzione 711 00:38:46,900 --> 00:38:49,360 anziché? 712 00:38:49,360 --> 00:38:52,070 Pensare che per un paio di secondi. 713 00:38:52,070 --> 00:38:54,929 Che cosa dobbiamo cambiare per ottenere questo programma di funzionamento 714 00:38:54,929 --> 00:38:56,220 il modo in cui vogliamo che funzioni? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Sì, vuole prendere una pugnalata a esso? 717 00:39:18,918 --> 00:39:24,082 >> PUBBLICO: Possiamo cercare di dereference il puntatore e verificare attraverso la matrice? 718 00:39:24,082 --> 00:39:25,540 IL PROFESSORE: Questo è un modo per farlo. 719 00:39:25,540 --> 00:39:27,880 Allora, qual è il nome nuovo? 720 00:39:27,880 --> 00:39:29,010 Mi dispiace, mi ricordano. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 PROFESSORE: Sì, così quello che Zee suggerito sarebbe assolutamente lavorare. 723 00:39:32,130 --> 00:39:32,629 Destra? 724 00:39:32,629 --> 00:39:35,730 Potremmo dereference il puntatore e effettivamente andare e accesso 725 00:39:35,730 --> 00:39:38,460 i dati fisici all'interno di qui. 726 00:39:38,460 --> 00:39:40,300 E possiamo solo confrontare l'intero schermo. 727 00:39:40,300 --> 00:39:43,670 >> Possiamo dire, OK, puntatore, dammi cosa c'è dentro qui. 728 00:39:43,670 --> 00:39:44,960 Sarebbe restituire un m. 729 00:39:44,960 --> 00:39:47,168 E direi, puntatore, dammi cosa c'è dentro qui. 730 00:39:47,168 --> 00:39:47,750 Restituisce un m. 731 00:39:47,750 --> 00:39:48,410 Fare quelli partita? 732 00:39:48,410 --> 00:39:49,410 Sì. 733 00:39:49,410 --> 00:39:50,340 Poi ci spostiamo. 734 00:39:50,340 --> 00:39:54,240 >> Continuiamo a controllare l'intera due stringhe tutta la strada fino alla fine 735 00:39:54,240 --> 00:39:56,635 e vedere se questi sono uguali, se tutti i valori sono uguali. 736 00:39:56,635 --> 00:39:59,680 E se tutti i valori sono uguali, allora sappiamo che le stringhe sono vere. 737 00:39:59,680 --> 00:40:01,600 Assolutamente, è così che ci sarebbe farlo? 738 00:40:01,600 --> 00:40:03,930 >> Qualcuno confuso su tutto questo? 739 00:40:03,930 --> 00:40:06,970 L'intero concetto di come stringhe sono in realtà solo i puntatori, 740 00:40:06,970 --> 00:40:08,440 e il modo in cui in realtà non esiste? 741 00:40:08,440 --> 00:40:10,480 E perché otteniamo errori come il modo in cui facciamo le cose? 742 00:40:10,480 --> 00:40:15,070 Perché ti garantisco ragazzi, puntatori e l'allocazione corda e la memoria 743 00:40:15,070 --> 00:40:16,470 stanno andando a venire. 744 00:40:16,470 --> 00:40:17,410 >> Sì? 745 00:40:17,410 --> 00:40:21,072 >> PUBBLICO: [incomprensibile] dereference esso, basta mettere una stella [incomprensibile] 746 00:40:21,072 --> 00:40:21,780 IL PROFESSORE: Giusto. 747 00:40:21,780 --> 00:40:28,430 Quindi, per derererence un mezzo puntatore per andare a questo indirizzo del puntatore 748 00:40:28,430 --> 00:40:30,390 e ottenere i dati, il valore lì. 749 00:40:30,390 --> 00:40:32,700 E il modo per farlo è quello dell'indicatore della stella. 750 00:40:32,700 --> 00:40:34,262 Non confondere questo. 751 00:40:34,262 --> 00:40:35,186 >> PUBBLICO: [incomprensibile]. 752 00:40:35,186 --> 00:40:35,852 >> IL PROFESSORE: Sì. 753 00:40:35,852 --> 00:40:39,750 PUBBLICO: Così si può solo scrivere se stella s pari pari stella t. 754 00:40:39,750 --> 00:40:40,630 >> PROFESSORE: Beh, no. 755 00:40:40,630 --> 00:40:40,960 No. 756 00:40:40,960 --> 00:40:41,640 >> PUBBLICO: Questo non è abbastanza buono, giusto? 757 00:40:41,640 --> 00:40:43,760 >> IL PROFESSORE: Non è, perché sei solo controllare la prima lettera. 758 00:40:43,760 --> 00:40:46,010 Probabilmente stai andando a bisogno di una sorta di un ciclo che 759 00:40:46,010 --> 00:40:49,055 scorre ogni singola personaggio in entrambe le stringhe. 760 00:40:49,055 --> 00:40:49,837 Già. 761 00:40:49,837 --> 00:40:52,920 Quindi, se si voleva controllare solo per vedere se hanno iniziato con la stessa cosa, 762 00:40:52,920 --> 00:40:58,220 si può fare se, stella s è uguale a stella t. 763 00:40:58,220 --> 00:41:01,300 Poi si sa che almeno loro iniziato con lo stesso carattere. 764 00:41:01,300 --> 00:41:01,952 >> Sì? 765 00:41:01,952 --> 00:41:04,056 >> AUDIENCE: Quindi il modo tu che sarebbe 766 00:41:04,056 --> 00:41:06,064 come un embedded per ciclo o il puntatore? 767 00:41:06,064 --> 00:41:06,730 IL PROFESSORE: Sì. 768 00:41:06,730 --> 00:41:08,170 Praticamente solo un ciclo for. 769 00:41:08,170 --> 00:41:12,430 Ricordate, David in classe dedicata il senza zucchero sintattico? 770 00:41:12,430 --> 00:41:17,690 E aveva questo molto cosa confusa di stella t 771 00:41:17,690 --> 00:41:22,030 più uno, dove sarebbe integrare attraverso e spostare il puntatore? 772 00:41:22,030 --> 00:41:29,910 Il modo più semplice di fare questo è solo t di i. 773 00:41:29,910 --> 00:41:31,090 >> Quindi è solo un array. 774 00:41:31,090 --> 00:41:34,630 Il modo in cui si avrebbe un per ciclo che correva da zero a i, dove 775 00:41:34,630 --> 00:41:36,580 i è la lunghezza del stringa, si può solo 776 00:41:36,580 --> 00:41:39,510 scrivere che invece di fare il tutto puntatore, cosa di riferimento. 777 00:41:39,510 --> 00:41:43,510 Così queste cose sono esattamente equivalente nel vostro computer. 778 00:41:43,510 --> 00:41:45,905 >> Voi ragazzi probabilmente non lo farà bisogno di sapere che, 779 00:41:45,905 --> 00:41:48,280 ma è bene solo tipo di avere nella parte posteriore vostra mente. 780 00:41:48,280 --> 00:41:52,630 Basta sapere che il computer riconosce diversi blocchi di codice 781 00:41:52,630 --> 00:41:53,890 come la stessa cosa. 782 00:41:53,890 --> 00:41:57,510 Perché questo è solo molto più user friendly per noi di presentare come se fosse 783 00:41:57,510 --> 00:41:58,150 un array. 784 00:41:58,150 --> 00:42:00,990 E 'solo più facile. 785 00:42:00,990 --> 00:42:02,719 >> PUBBLICO: Quindi utilizzare strlen a piacere, get-- 786 00:42:02,719 --> 00:42:03,385 IL PROFESSORE: Sì. 787 00:42:03,385 --> 00:42:03,926 PUBBLICO: OK. 788 00:42:03,926 --> 00:42:05,940 IL PROFESSORE: Si potrebbe utilizzare strlen o, se 789 00:42:05,940 --> 00:42:10,420 non ha avuto strlen si può solo fare su fino a colpire backslash zero per entrambi. 790 00:42:10,420 --> 00:42:11,568 O avrebbe funzionato. 791 00:42:11,568 --> 00:42:12,068 Già. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 PUBBLICO: Così è per ogni dereferenziare singolo carattere se eravamo in realtà 794 00:42:17,996 --> 00:42:21,044 scrivere questo codice, abbiamo potrebbe solo fare i t staffe 795 00:42:21,044 --> 00:42:22,460 come con la stella di fronte ad essa? 796 00:42:22,460 --> 00:42:27,700 >> PROFESSORE: Sì, è uguale equivale a s staffa i, e quindi mantenere in movimento i 797 00:42:27,700 --> 00:42:29,790 down up fino a colpire alla fine. 798 00:42:29,790 --> 00:42:31,286 Sì, questo è quello che si potrebbe fare. 799 00:42:31,286 --> 00:42:33,660 E io in realtà hanno una prossima esempio di quando abbiamo effettivamente 800 00:42:33,660 --> 00:42:36,740 scrivere strlen così voi ragazzi sarà tipo di arrivare a giocare con un po '. 801 00:42:36,740 --> 00:42:43,567 >> Così è tutto chiaro solo la memoria, stringhe, puntatori, indirizzi di qualità? 802 00:42:43,567 --> 00:42:46,650 Alcuni concetti di più alto livello che si di sicuro bisogno di sapere sul quiz 803 00:42:46,650 --> 00:42:48,928 domani. 804 00:42:48,928 --> 00:42:49,904 >> Tutto ok. 805 00:42:49,904 --> 00:42:50,404 Bene. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Sì. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, una cosa che ci chiediamo anche voi, come facciamo ogni anno su un quiz, è, 810 00:43:04,180 --> 00:43:08,340 supponiamo che hai dimenticato (che ci sembra di dimenticare di fare ogni anno) 811 00:43:08,340 --> 00:43:10,810 in cui viene dichiarata file di intestazione strlen. 812 00:43:10,810 --> 00:43:13,860 E quindi dobbiamo riscrivere noi stessi. 813 00:43:13,860 --> 00:43:16,350 >> Ecco un elenco di linee guida che siamo in grado di presentarvi 814 00:43:16,350 --> 00:43:20,660 ragazzi dove si arriva a pensare che s la stringa non sarà nullo. 815 00:43:20,660 --> 00:43:23,830 Si può supporre che s sarà terminato con un backslash zero. 816 00:43:23,830 --> 00:43:26,670 Così si sa che è quello che sta andando a finire con. 817 00:43:26,670 --> 00:43:29,500 >> E, per esempio, che il lunghezza ciao sarebbe cinque. 818 00:43:29,500 --> 00:43:32,890 Così si può supporre che ciao sarà cinque, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 Non è necessario assumere che la backside conti a zero per la lunghezza. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Quest'ultima cosa qui, non fare preoccuparsi di integer overflow. 822 00:43:42,300 --> 00:43:45,270 Qualcuno ricorda overflow di cosa intero è? 823 00:43:45,270 --> 00:43:48,041 >> PUBBLICO: va oltre il lunghezza del [incomprensibile]. 824 00:43:48,041 --> 00:43:50,740 >> PROFESSORE: Sì, si può spiegare un po ', cosa vuol dire? 825 00:43:50,740 --> 00:43:55,330 >> PUBBLICO: Quindi, credo che va indietro all'esempio precedente troncamento. 826 00:43:55,330 --> 00:43:58,380 Ma se avete solo tanti numeri che vanno al di là del numero di bit 827 00:43:58,380 --> 00:44:01,409 che si può effettivamente assegnare che sarà solo tipo di tagliare. 828 00:44:01,409 --> 00:44:04,242 PROFESSORE: Sì, così su un tipico calcolatore, quanti bit abbiamo? 829 00:44:04,242 --> 00:44:05,306 PUBBLICO: 32? 830 00:44:05,306 --> 00:44:06,430 PROFESSORE: Sì, 32, a destra. 831 00:44:06,430 --> 00:44:10,030 E così è, ciò che, a quattro miliardi, due miliardi? 832 00:44:10,030 --> 00:44:13,579 Quattro miliardi di euro, fino a quattro miliardi interi positivi, giusto? 833 00:44:13,579 --> 00:44:15,370 Due miliardi di negativo, due miliardi positivo, 834 00:44:15,370 --> 00:44:16,900 dipende da come si desidera farlo. 835 00:44:16,900 --> 00:44:21,470 >> E così in fondo che possiamo avere abbastanza numeri interi che possono andare fino 836 00:44:21,470 --> 00:44:25,800 a due al 31 meno 1, giusto? 837 00:44:25,800 --> 00:44:27,980 Perché una volta ci ha colpito due al 32 °, non lo facciamo 838 00:44:27,980 --> 00:44:30,040 avere quella quantità di memoria nel nostro computer. 839 00:44:30,040 --> 00:44:32,310 >> E così, teoricamente, I potrebbe venire con un numero 840 00:44:32,310 --> 00:44:34,560 cioè, come, due per il 46 °. 841 00:44:34,560 --> 00:44:38,040 Si tratta di un numero enorme-ass, ma teoricamente si potrebbe. 842 00:44:38,040 --> 00:44:42,730 E così overflow di numero intero è se si tenta di creare un numero intero che va oltre ciò che 843 00:44:42,730 --> 00:44:44,790 il computer è in grado di memorizzare. 844 00:44:44,790 --> 00:44:46,590 >> E così per ragazzi questo esempio non hanno 845 00:44:46,590 --> 00:44:51,330 preoccuparsi di noi dando un gigante stringa che è due ai caratteri 32nd 846 00:44:51,330 --> 00:44:51,830 lungo. 847 00:44:51,830 --> 00:44:54,010 Questo sarebbe davvero dire. 848 00:44:54,010 --> 00:44:59,430 >> Va bene, quindi sono solo andando a dare voi ragazzi la struttura base di questo. 849 00:44:59,430 --> 00:45:02,020 Stai andando a creare un funzione chiamata int strlen dove 850 00:45:02,020 --> 00:45:08,436 un passare, una stella char, o una stringa, puntatore alla stringa denominata s. 851 00:45:08,436 --> 00:45:10,820 >> Va bene, tutti di copia che verso il basso. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Raffreddare. 854 00:45:14,850 --> 00:45:17,020 Oops-- altro modo. 855 00:45:17,020 --> 00:45:21,360 >> Quindi questo è un po 'come un più duro pezzo di problema, 856 00:45:21,360 --> 00:45:25,320 così ti darò ragazzi forse cinque a sei minuti per tipo di brainstorming 857 00:45:25,320 --> 00:45:27,478 e scrivere questa funzione fuori. 858 00:45:27,478 --> 00:45:29,710 >> PUBBLICO: Noi non rappresentano il [incomprensibile], 859 00:45:29,710 --> 00:45:30,200 non dobbiamo usare intero? 860 00:45:30,200 --> 00:45:31,241 >> IL PROFESSORE: No, non lo fai. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Ti do un suggerimento ragazzi. 863 00:48:06,930 --> 00:48:12,325 Un ciclo while può essere molto utile qui. 864 00:48:12,325 --> 00:48:12,825 Già. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Ecco 867 00:48:45,495 --> 00:48:45,995 caramella. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Candy sarà disponibile anche per il quiz, credo. 870 00:48:53,410 --> 00:48:55,315 Così voi ragazzi sarà tutto zuccherato domani. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Può I-- avete ottenuto. 873 00:49:02,962 --> 00:49:03,718 >> PUBBLICO: OK. 874 00:49:03,718 --> 00:49:04,384 IL PROFESSORE: Sì. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Forse 30 secondi o giù di lì. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Va bene, se siete non fatto, non preoccuparti. 879 00:50:07,340 --> 00:50:08,810 Ci sposteremo tutto questo insieme. 880 00:50:08,810 --> 00:50:09,310 OK. 881 00:50:09,310 --> 00:50:13,800 Quindi ho intenzione di solo il layout della struttura di base per questa funzione qui. 882 00:50:13,800 --> 00:50:17,255 Int strlen. 883 00:50:17,255 --> 00:50:20,040 884 00:50:20,040 --> 00:50:23,460 In primo luogo, qualcuno vuole dire me quello che int significa? 885 00:50:23,460 --> 00:50:25,160 Abbiamo bisogno di avere in questa funzione. 886 00:50:25,160 --> 00:50:26,709 >> PUBBLICO: strlen [incomprensibile]. 887 00:50:26,709 --> 00:50:27,500 IL PROFESSORE: Esattamente. 888 00:50:27,500 --> 00:50:31,140 Quindi, qualunque cosa accada qui, abbiamo bisogno di tornare un numero intero. 889 00:50:31,140 --> 00:50:36,367 E come specificato nel spec, vogliamo return-- 890 00:50:36,367 --> 00:50:37,700 Andare per esso i ragazzi, solo andare avanti. 891 00:50:37,700 --> 00:50:40,480 Va tutto bene. 892 00:50:40,480 --> 00:50:42,960 Mangia tutto così non ho di prendere di nuovo, in realtà. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 Il int significa solo che sei andando a ritorneremo un numero intero. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Che cosa è questa char stella s? 897 00:50:57,106 --> 00:50:58,640 Che cosa significa? 898 00:50:58,640 --> 00:51:00,879 >> PUBBLICO: Come, che cosa è in ingresso in. 899 00:51:00,879 --> 00:51:01,670 IL PROFESSORE: Esattamente. 900 00:51:01,670 --> 00:51:04,142 E ciò che è quasi il stessa cosa come char stelle? 901 00:51:04,142 --> 00:51:04,850 PUBBLICO: String? 902 00:51:04,850 --> 00:51:05,641 IL PROFESSORE: Esattamente. 903 00:51:05,641 --> 00:51:09,080 Quindi tutto quello che stiamo facendo è dare questo un puntatore ad una stringa. 904 00:51:09,080 --> 00:51:09,580 OK. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 Raffreddare. 907 00:51:13,360 --> 00:51:16,650 >> Inoltre, non dimenticare, se dimentichiamo per darvi queste parentesi, 908 00:51:16,650 --> 00:51:18,330 non dimenticate di scrivere voi stessi. 909 00:51:18,330 --> 00:51:20,720 Perché in teoria, il codice è corretto se si dimentica di scrivere loro. 910 00:51:20,720 --> 00:51:21,803 Basta prestare sempre attenzione. 911 00:51:21,803 --> 00:51:23,750 Come, piccole cose che non si nota 912 00:51:23,750 --> 00:51:26,917 quando si programma sul vostro computer portatile, perché il vostro computer portatile fa per te? 913 00:51:26,917 --> 00:51:28,624 Non dimenticare quando si sta scrivendo a mano. 914 00:51:28,624 --> 00:51:29,170 Sì? 915 00:51:29,170 --> 00:51:30,954 >> PUBBLICO: Ma come non è corretto? 916 00:51:30,954 --> 00:51:33,190 Come, otteniamo l'intero problema sbagliato? 917 00:51:33,190 --> 00:51:34,190 >> IL PROFESSORE: No, no. 918 00:51:34,190 --> 00:51:34,860 Non si preoccupi. 919 00:51:34,860 --> 00:51:39,270 In realtà è teoricamente possibile per voi per ottenere punteggio pieno su una domanda 920 00:51:39,270 --> 00:51:41,980 anche se il codice sarà mai eseguito nella vita reale. 921 00:51:41,980 --> 00:51:46,052 Vi suggerisco di non provare per realizzare questo obiettivo. 922 00:51:46,052 --> 00:51:48,260 Ad esempio, come se tutto che è qui è giusto, 923 00:51:48,260 --> 00:51:51,850 ma si dimentica un colon o una parentesi, il codice non verrà effettivamente eseguito. 924 00:51:51,850 --> 00:51:53,740 Ma possiamo essere misericordiosi. 925 00:51:53,740 --> 00:51:54,394 >> Sì? 926 00:51:54,394 --> 00:51:56,050 >> PUBBLICO: Dovete commentare la nostra scrittura? 927 00:51:56,050 --> 00:51:57,758 >> IL PROFESSORE: No, no, no preoccupazioni per quello. 928 00:51:57,758 --> 00:51:58,440 Nessun commento. 929 00:51:58,440 --> 00:51:59,400 Stile dovrebbe essere buona. 930 00:51:59,400 --> 00:52:01,470 Come, non Smush tutto su una riga. 931 00:52:01,470 --> 00:52:04,580 Non saremo felici con te se lo fai. 932 00:52:04,580 --> 00:52:07,250 >> Qualcuno ha voglia di dammi la prima linea? 933 00:52:07,250 --> 00:52:08,633 Suggerimento, è molto facile. 934 00:52:08,633 --> 00:52:09,320 >> Sì? 935 00:52:09,320 --> 00:52:11,920 >> PUBBLICO: Int, n è uguale a zero. 936 00:52:11,920 --> 00:52:13,734 Appena istituito contatore. 937 00:52:13,734 --> 00:52:15,900 PROFESSORE: Quindi vogliamo un po ' una sorta di contatore, giusto? 938 00:52:15,900 --> 00:52:19,780 Sto solo andando a chiamarlo "contare" per il bene di leggibilità. 939 00:52:19,780 --> 00:52:21,265 Cosa vogliamo impostarlo pari a? 940 00:52:21,265 --> 00:52:21,890 >> PUBBLICO: Zero. 941 00:52:21,890 --> 00:52:23,840 IL PROFESSORE: Sì. 942 00:52:23,840 --> 00:52:24,340 Punto e virgola. 943 00:52:24,340 --> 00:52:26,250 E 'anche il punto e virgola disegno molto strani. 944 00:52:26,250 --> 00:52:28,870 Basta praticare farlo. 945 00:52:28,870 --> 00:52:31,990 >> Quindi vogliamo avere prima un contatore di tipo int. 946 00:52:31,990 --> 00:52:35,360 Perché vogliamo contare come molti caratteri o lettere sono 947 00:52:35,360 --> 00:52:36,780 in questa stringa, giusto? 948 00:52:36,780 --> 00:52:38,330 Molto facile primo passo. 949 00:52:38,330 --> 00:52:42,140 >> OK, forse un po 'più complesso ora, come faremo a farlo? 950 00:52:42,140 --> 00:52:45,400 Qualcuno ha voglia di dammi la riga di codice 951 00:52:45,400 --> 00:52:48,450 che può essere in grado di aiutare ad anello attraverso qualunque cosa sia? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Sì, un'anima coraggiosa nella parte posteriore? 954 00:52:56,900 --> 00:53:06,832 >> PUBBLICO: OK, così mentre il punto asterischi, il sì, stella di s, 955 00:53:06,832 --> 00:53:09,465 non è uguale a zero, poi fare qualcosa? 956 00:53:09,465 --> 00:53:11,090 IL PROFESSORE: E 'molto, molto vicino. 957 00:53:11,090 --> 00:53:11,835 Molto vicino. 958 00:53:11,835 --> 00:53:13,710 Quindi ho intenzione di affrontare due cose con quella. 959 00:53:13,710 --> 00:53:18,240 Innanzitutto, non è esattamente zero. 960 00:53:18,240 --> 00:53:20,110 Cos'è? 961 00:53:20,110 --> 00:53:22,550 E 'il terminatore null, che è backslash zero. 962 00:53:22,550 --> 00:53:24,960 Quindi sono diversi in termini di come vengono archiviati. 963 00:53:24,960 --> 00:53:26,270 Quindi sei davvero vicino. 964 00:53:26,270 --> 00:53:30,330 >> E in secondo luogo, non vogliamo per spostare solo il puntatore. 965 00:53:30,330 --> 00:53:32,320 Vogliamo davvero accedere ai valori, giusto? 966 00:53:32,320 --> 00:53:34,050 E allora come facciamo questo? 967 00:53:34,050 --> 00:53:34,550 Molto facile. 968 00:53:34,550 --> 00:53:36,841 Non pensare a puntatori, non pensare a ricordi. 969 00:53:36,841 --> 00:53:38,525 Torna seconda settimana di questo corso. 970 00:53:38,525 --> 00:53:39,555 >> PUBBLICO: [incomprensibile]. 971 00:53:39,555 --> 00:53:40,680 PROFESSORE: Come di, ricordi? 972 00:53:40,680 --> 00:53:41,400 Quali sono le stringhe? 973 00:53:41,400 --> 00:53:42,650 Come sono memorizzati nella memoria? 974 00:53:42,650 --> 00:53:43,300 >> PUBBLICO: Sono sollevato. 975 00:53:43,300 --> 00:53:43,810 >> IL PROFESSORE: Essi sono allevati. 976 00:53:43,810 --> 00:53:45,550 Quindi, come possiamo accedere ogni personaggio dentro? 977 00:53:45,550 --> 00:53:46,466 >> PUBBLICO: [incomprensibile]. 978 00:53:46,466 --> 00:53:47,530 IL PROFESSORE: Esattamente. 979 00:53:47,530 --> 00:53:53,195 Quindi quello che succede dentro while-- qui? 980 00:53:53,195 --> 00:53:54,940 S di - 981 00:53:54,940 --> 00:53:55,920 >> PUBBLICO: I. 982 00:53:55,920 --> 00:53:58,216 >> PROFESSORE: Oh, io non esiste, è vero? 983 00:53:58,216 --> 00:53:59,620 >> PUBBLICO: Oh, contare? 984 00:53:59,620 --> 00:54:01,640 >> IL PROFESSORE: Possiamo solo utilizzare conta, no? 985 00:54:01,640 --> 00:54:03,050 >> PUBBLICO: Mi dispiace, ha chiamato i. 986 00:54:03,050 --> 00:54:04,341 >> PROFESSORE: Sì, va tutto bene. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Abbiamo una variabile fino qui che è già stato dichiarato come il nostro contatore. 989 00:54:10,760 --> 00:54:13,650 Allora perché non usiamo che per passare attraverso il ciclo while? 990 00:54:13,650 --> 00:54:15,230 Questo fa senso? 991 00:54:15,230 --> 00:54:20,864 >> Così, mentre s di count-- Qualcuno vuole di darmi ciò che accade dopo qui? 992 00:54:20,864 --> 00:54:22,030 PUBBLICO: Non è così uguali. 993 00:54:22,030 --> 00:54:23,405 IL PROFESSORE: Non è uguale, giusto? 994 00:54:23,405 --> 00:54:26,200 E 'il botto è uguale, punto esclamativo è uguale, 995 00:54:26,200 --> 00:54:28,500 qualunque cosa voi ragazzi volete chiamarlo non equal-- 996 00:54:28,500 --> 00:54:29,496 >> PUBBLICO: [incomprensibile]. 997 00:54:29,496 --> 00:54:30,990 >> IL PROFESSORE: Sì. 998 00:54:30,990 --> 00:54:37,110 Ricordate sola offerta è per un char, le doppie virgolette sono per una stringa. 999 00:54:37,110 --> 00:54:38,630 Fare attenzione quando le si usa. 1000 00:54:38,630 --> 00:54:42,430 Così, quando stiamo guardando attraverso la matrice, l'ultimo carattere, 1001 00:54:42,430 --> 00:54:46,420 sappiamo che non vogliamo che sia backslash zero. 1002 00:54:46,420 --> 00:54:47,340 >> Così, mentre. 1003 00:54:47,340 --> 00:54:48,840 Non siamo alla fine della stringa. 1004 00:54:48,840 --> 00:54:52,335 Che cosa vogliamo fare dentro? 1005 00:54:52,335 --> 00:54:55,269 >> PUBBLICO: Vogliamo aggiungere alla contatore così conta plus plus? 1006 00:54:55,269 --> 00:54:56,060 IL PROFESSORE: Esattamente. 1007 00:54:56,060 --> 00:55:03,064 Quindi qui stiamo andando a fare contare, contare plus plus. 1008 00:55:03,064 --> 00:55:03,980 Manca ancora una riga. 1009 00:55:03,980 --> 00:55:05,090 Ci siamo quasi. 1010 00:55:05,090 --> 00:55:07,398 Quello che stiamo dimenticando di fare? 1011 00:55:07,398 --> 00:55:08,770 >> PUBBLICO: ritorno a zero? 1012 00:55:08,770 --> 00:55:10,820 >> IL PROFESSORE: Si vuole restituire zero? 1013 00:55:10,820 --> 00:55:12,962 >> PUBBLICO: No, tornare a strlen. 1014 00:55:12,962 --> 00:55:13,511 Attesa. 1015 00:55:13,511 --> 00:55:14,760 IL PROFESSORE: Che è memorizzato in? 1016 00:55:14,760 --> 00:55:15,090 PUBBLICO: Conte. 1017 00:55:15,090 --> 00:55:15,589 Contare. 1018 00:55:15,589 --> 00:55:17,150 IL PROFESSORE: Esattamente. 1019 00:55:17,150 --> 00:55:20,760 Quindi qui abbiamo intenzione di tornare conteggio. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Perché ciò che siamo facendo qui ultimately-- 1022 00:55:25,380 --> 00:55:29,780 abbiamo una variabile contatore che è andando ad incrementare la nostra stringa. 1023 00:55:29,780 --> 00:55:33,050 Stiamo andando a andare avanti, tenere andando, intorno e in giro in questo ciclo. 1024 00:55:33,050 --> 00:55:37,700 E mentre noi non siamo alla fine di questa stringa, che è il terminatore null. 1025 00:55:37,700 --> 00:55:40,410 >> E ogni volta che andiamo attraverso esso, stiamo aggiungendo al nostro contatore. 1026 00:55:40,410 --> 00:55:42,640 E stiamo andando oltre lungo in questo array. 1027 00:55:42,640 --> 00:55:44,880 E alla fine, una volta che abbiamo colpire il terminatore null, 1028 00:55:44,880 --> 00:55:48,469 sappiamo, oh, possiamo rompere, restituire il conteggio. 1029 00:55:48,469 --> 00:55:49,260 Abbiamo il nostro strlen. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Ricevono tutti come questo è stato realizzato? 1032 00:55:56,400 --> 00:55:58,830 Mentre loops-- so che non abbiamo fatto troppo con loro, 1033 00:55:58,830 --> 00:56:01,240 ma sono solitamente molto, molto utile se si 1034 00:56:01,240 --> 00:56:05,390 Non sa cosa si sta fermando condizione deve essere necessariamente. 1035 00:56:05,390 --> 00:56:06,220 >> Domanda? 1036 00:56:06,220 --> 00:56:10,080 >> PUBBLICO: Possiamo scrivere nulla a condizione, mentre? 1037 00:56:10,080 --> 00:56:10,940 >> IL PROFESSORE: Mentre? 1038 00:56:10,940 --> 00:56:15,304 Sì, così in questo problema che ho avuto te ragazzi assumono che s non sarà nullo. 1039 00:56:15,304 --> 00:56:17,220 Perché ricordate, teoricamente, se ho dato 1040 00:56:17,220 --> 00:56:21,180 un puntatore che era troppo grande della memoria, darebbe il nulla, giusto? 1041 00:56:21,180 --> 00:56:23,770 Questo è ciò che il funzionamento Sistema farebbe. 1042 00:56:23,770 --> 00:56:26,960 >> Quindi, se io non ti ho detto di assumere s sarebbe nullo, è necessario controllare. 1043 00:56:26,960 --> 00:56:32,050 Così qui, fareste, se s è uguale uguale a zero, tornare un. 1044 00:56:32,050 --> 00:56:33,028 Qualcosa del genere. 1045 00:56:33,028 --> 00:56:34,153 PUBBLICO: [incomprensibile] zero. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 PROFESSORE: OK, io dirò il motivo per cui non possiamo farlo. 1048 00:56:39,370 --> 00:56:43,357 Perché ricordare a memoria, a destra, qui. 1049 00:56:43,357 --> 00:56:43,940 Andremo qui. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Hai blocchi giganti di memoria tutti con griglie 1052 00:56:54,090 --> 00:56:56,680 che memorizzano valori diversi, giusto? 1053 00:56:56,680 --> 00:57:00,110 E così tutto una stringa è-- per ad esempio, se vogliamo ingresso ciao, 1054 00:57:00,110 --> 00:57:05,490 sarebbe H-E-L-L-O backslash pari a zero, giusto? 1055 00:57:05,490 --> 00:57:09,570 E poi chi lo sa, come casuale cose che sono in qui dopo. 1056 00:57:09,570 --> 00:57:11,220 >> Noi in realtà non sappiamo cosa c'è. 1057 00:57:11,220 --> 00:57:13,350 E così, se si dovesse fare invece di backslash a zero, 1058 00:57:13,350 --> 00:57:15,590 nullo, non può essere nullo. 1059 00:57:15,590 --> 00:57:17,680 Perché appena può significare alcune casuali altre cose 1060 00:57:17,680 --> 00:57:19,270 che non appartengono nella stringa. 1061 00:57:19,270 --> 00:57:23,219 E così il modo in cui sappiamo sempre che una stringa termina con un backslash è pari a zero. 1062 00:57:23,219 --> 00:57:25,760 E così che è sempre il modo in cui controllare per vedere la fine di una stringa. 1063 00:57:25,760 --> 00:57:30,820 >> Null, tutto ciò che significa è se avete un puntatore inesistente, prima di tutto, 1064 00:57:30,820 --> 00:57:36,160 o se la memoria è così grande che Non si può tornare, allora sarebbe nullo. 1065 00:57:36,160 --> 00:57:40,150 Quindi, essere molto attenti quando differenziando la differenza tra nullo 1066 00:57:40,150 --> 00:57:42,130 e la barra rovesciata zero. 1067 00:57:42,130 --> 00:57:43,670 Già. 1068 00:57:43,670 --> 00:57:46,886 >> Ognuno OK con questo? 1069 00:57:46,886 --> 00:57:48,150 OK. 1070 00:57:48,150 --> 00:57:50,440 >> Così ho avuto voi ragazzi scrivere strlen. 1071 00:57:50,440 --> 00:57:53,790 Tenerne potremmo anche chiedere che si scrive fuori da A a I, ricordare che "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 o qualunque cosa voi ragazzi volete chiamarlo? 1073 00:57:55,400 --> 00:57:58,010 Tale funzione in Vigenere e Cesare, che 1074 00:57:58,010 --> 00:58:00,900 converte un valore ASCII di un intero? 1075 00:58:00,900 --> 00:58:04,360 Che è venuto anche sul quiz del passato di funzioni vi abbiamo chiesto di scrivere. 1076 00:58:04,360 --> 00:58:08,280 >> Praticamente qualsiasi funzione che hai utilizzato ed è 1077 00:58:08,280 --> 00:58:11,660 molto facile per scrivere, sensori come è più basso, 1078 00:58:11,660 --> 00:58:14,620 è superiore, per abbassare, alla tomaia. 1079 00:58:14,620 --> 00:58:17,964 Le funzioni che converte un stringa da minuscolo a maiuscolo. 1080 00:58:17,964 --> 00:58:19,380 Tutti sappiamo come fare, giusto? 1081 00:58:19,380 --> 00:58:21,100 E 'abbastanza facile. 1082 00:58:21,100 --> 00:58:24,770 Voglio solo fare in modo che si can-- è lo stesso processo di pensiero. 1083 00:58:24,770 --> 00:58:26,940 Devi solo eseguire iterazioni e si gira le cose. 1084 00:58:26,940 --> 00:58:30,190 O si contano o quando girate cose in modo diverso. 1085 00:58:30,190 --> 00:58:32,280 >> Vorrei suggeriscono-- I Non so se stiamo andando 1086 00:58:32,280 --> 00:58:39,080 chiederti di memorizzare cosa maiuscola o Z maiuscola, o minuscola Un o minuscolo 1087 00:58:39,080 --> 00:58:42,640 z sono in Ascii, ma vorrei suggerire forse scrivere che verso il basso nel caso in cui 1088 00:58:42,640 --> 00:58:44,124 facciamo. 1089 00:58:44,124 --> 00:58:45,540 Solo così voi ragazzi hanno un riferimento. 1090 00:58:45,540 --> 00:58:47,180 Come maiuscolo A è, che cosa, 197? 1091 00:58:47,180 --> 00:58:51,320 E poi minuscolo è come 50 qualcosa. 1092 00:58:51,320 --> 00:58:52,492 65, sì, ci si va. 1093 00:58:52,492 --> 00:58:54,950 Quindi, solo praticamente conoscere il differenza tra loro è 32. 1094 00:58:54,950 --> 00:58:57,670 Questo è abbastanza importante. 1095 00:58:57,670 --> 00:58:58,170 Già. 1096 00:58:58,170 --> 00:59:01,445 Sono bene su questo? 1097 00:59:01,445 --> 00:59:01,945 OK. 1098 00:59:01,945 --> 00:59:03,109 >> PUBBLICO: Potremmo teoricamente scrivere qualche 1099 00:59:03,109 --> 00:59:04,410 di questi giù come bene il nostro little-- 1100 00:59:04,410 --> 00:59:07,035 >> IL PROFESSORE: È teoricamente potrebbe basta copiare la funzione di abbassamento. 1101 00:59:07,035 --> 00:59:08,482 Questo è vero. 1102 00:59:08,482 --> 00:59:11,080 >> PUBBLICO: Non [incomprensibile]. 1103 00:59:11,080 --> 00:59:12,720 >> PROFESSORE: Voi ragazzi hanno un lenzuolo. 1104 00:59:12,720 --> 00:59:14,194 Voi ragazzi avete un foglio di nota. 1105 00:59:14,194 --> 00:59:14,860 È possibile digitare esso. 1106 00:59:14,860 --> 00:59:15,490 Potete scriverlo. 1107 00:59:15,490 --> 00:59:17,031 Puoi fare quello che vuoi con esso. 1108 00:59:17,031 --> 00:59:18,530 Già. 1109 00:59:18,530 --> 00:59:21,406 Quindi teoricamente, se si vuole, andare per. 1110 00:59:21,406 --> 00:59:23,338 >> PUBBLICO: [incomprensibile] ma non lo facciamo davvero 1111 00:59:23,338 --> 00:59:25,994 necessariamente bisogno di ricordare il valore, possiamo solo 1112 00:59:25,994 --> 00:59:28,914 utilizzare il per superiore o di funzioni inferiori, giusto? 1113 00:59:28,914 --> 00:59:29,580 IL PROFESSORE: Sì. 1114 00:59:29,580 --> 00:59:32,740 Ma se vi abbiamo dato una domanda che dice di scrivere a superiore, 1115 00:59:32,740 --> 00:59:34,350 allora si avrebbe bisogno di scriverlo. 1116 00:59:34,350 --> 00:59:38,150 Così voi potete pensare che si ragazzi hanno accesso a tutte le funzioni, 1117 00:59:38,150 --> 00:59:41,523 ma se si desidera utilizzare per superiore o più basso, che cosa devi anche fare? 1118 00:59:41,523 --> 00:59:43,840 >> PUBBLICO: [incomprensibile] utilizzare CS50 [incomprensibile] 1119 00:59:43,840 --> 00:59:44,840 >> IL PROFESSORE: È CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 State attenti là. 1122 00:59:48,310 --> 00:59:50,640 >> Quindi, per superiore, abbassare, è superiore, è più basso, 1123 00:59:50,640 --> 00:59:52,990 funzioni che coinvolgono manipolazione delle stringhe sono 1124 00:59:52,990 --> 00:59:55,490 tutto all'interno sia della Ascii o all'interno della libreria matematica 1125 00:59:55,490 --> 00:59:57,350 o all'interno della libreria stringa. 1126 00:59:57,350 --> 01:00:00,290 Quindi, se voi ragazzi utilizzare quelli funzioni, stare attenti a ricordare 1127 01:00:00,290 --> 01:00:01,451 di includere tale intestazione. 1128 01:00:01,451 --> 01:00:03,950 Quindi, forse anche qualcosa di te desidera includere nel foglio, 1129 01:00:03,950 --> 01:00:04,892 quali sono l'intestazione? 1130 01:00:04,892 --> 01:00:06,600 Quali sono le librerie hai utilizzato? 1131 01:00:06,600 --> 01:00:08,550 Quali funzioni sono all'interno di quelle librerie? 1132 01:00:08,550 --> 01:00:09,230 È importante. 1133 01:00:09,230 --> 01:00:10,420 >> Sì? 1134 01:00:10,420 --> 01:00:12,570 >> PUBBLICO: potremmo semplicemente poliziotto fuori e fare hashtag 1135 01:00:12,570 --> 01:00:14,955 attraverso il assolutamente ogni lettera che abbiamo mai 1136 01:00:14,955 --> 01:00:17,340 visto come su tutte le domande? 1137 01:00:17,340 --> 01:00:18,320 >> IL PROFESSORE: Si potrebbe. 1138 01:00:18,320 --> 01:00:20,361 Io non so come felice stiamo andando a essere al grado 1139 01:00:20,361 --> 01:00:25,090 che quiz quando ogni pezzo di codice è il doppio del tempo come deve essere. 1140 01:00:25,090 --> 01:00:27,200 Non lo so, potremmo togliere un punto per lo stile. 1141 01:00:27,200 --> 01:00:28,790 Ma teoricamente la tua codice sarebbe giusto. 1142 01:00:28,790 --> 01:00:30,915 Voi ragazzi potevano poliziotto fuori e basta includere tutto. 1143 01:00:30,915 --> 01:00:32,044 Va bene anche, sì. 1144 01:00:32,044 --> 01:00:32,960 PUBBLICO: [incomprensibile]. 1145 01:00:32,960 --> 01:00:33,270 IL PROFESSORE: Sì. 1146 01:00:33,270 --> 01:00:34,900 Vorrei suggerire Non farlo però. 1147 01:00:34,900 --> 01:00:35,505 Già. 1148 01:00:35,505 --> 01:00:36,130 PUBBLICO: Freddo. 1149 01:00:36,130 --> 01:00:36,620 IL PROFESSORE: Bella domanda. 1150 01:00:36,620 --> 01:00:37,480 PUBBLICO: Così, lo scenario peggiore. 1151 01:00:37,480 --> 01:00:38,563 IL PROFESSORE: Il caso peggiore. 1152 01:00:38,563 --> 01:00:40,350 Se si dimentica totalmente, si potrebbe fare. 1153 01:00:40,350 --> 01:00:40,850 Già. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Sì, il codice è proprio lì. 1156 01:00:45,400 --> 01:00:49,176 Ho usato n invece di conteggio, ma è sapere, qualunque sia la vostra barca galleggia. 1157 01:00:49,176 --> 01:00:51,092 PUBBLICO: Aspetta, quindi siamo Non avrebbe dovuto hashtag 1158 01:00:51,092 --> 01:00:53,460 comprendere perché siamo partendo dalla int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> PROFESSORE: Sì, ho solo pensato che ci hanno chiesto di scrivere la funzione. 1161 01:00:59,924 --> 01:01:02,340 Se si voleva essere sicuro, potrebbe probabilmente messo lì. 1162 01:01:02,340 --> 01:01:05,650 Ma io non mi sono preoccupato, sì. 1163 01:01:05,650 --> 01:01:09,919 >> Io non so nemmeno se si bisogno di qualsiasi libreria per questo. 1164 01:01:09,919 --> 01:01:12,710 Perché tu non sei davvero la stampa fuori qualcosa o niente, giusto? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Sì, io non so se avete bisogno di una biblioteca. 1167 01:01:19,568 --> 01:01:22,400 >> OK. 1168 01:01:22,400 --> 01:01:26,020 Questo è anche un po 'più lungo le linee di manipolazione memoria. 1169 01:01:26,020 --> 01:01:27,400 Questo tipo di po 'complicato. 1170 01:01:27,400 --> 01:01:28,960 Pensa a questo. 1171 01:01:28,960 --> 01:01:30,580 Avete una funzione chiamata func. 1172 01:01:30,580 --> 01:01:33,570 Avrei potuto chiamò qualunque, ma ho scelto di chiamarlo func. 1173 01:01:33,570 --> 01:01:36,000 Ce l'ho sopra il mio principale. 1174 01:01:36,000 --> 01:01:39,790 Ricordate, si desidera avere una funzione dopo la vostra principale, 1175 01:01:39,790 --> 01:01:42,370 si vuole fare in modo che si includere il prototipo della parte superiore. 1176 01:01:42,370 --> 01:01:45,750 >> Ma in questo caso è stato così breve che mi sentivo che avrei potuto solo 1177 01:01:45,750 --> 01:01:47,260 includerla in cima al principale. 1178 01:01:47,260 --> 01:01:51,170 Non avevo bisogno di avere il prototipo, perché è già scritto sopra. 1179 01:01:51,170 --> 01:01:55,430 Quindi tutto quello che sto facendo nella mia funzione principale sta creando intero x è uguale a 10. 1180 01:01:55,430 --> 01:02:00,490 Chiamo mia funzione func, e poi la stampa qualcosa. 1181 01:02:00,490 --> 01:02:02,840 >> E poi che in realtà cosa func sta facendo. 1182 01:02:02,840 --> 01:02:04,340 Voi ragazzi vuole pensare attraverso questo. 1183 01:02:04,340 --> 01:02:05,423 Perché è un po 'complicato. 1184 01:02:05,423 --> 01:02:07,220 E 'molto, molto difficile, in realtà. 1185 01:02:07,220 --> 01:02:09,549 Pensare attraverso ciò che questo programma sarebbe outputting. 1186 01:02:09,549 --> 01:02:10,840 Ti do ragazzi due minuti. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Buone discussioni? 1189 01:03:37,891 --> 01:03:38,853 >> PUBBLICO: Sì. 1190 01:03:38,853 --> 01:03:39,815 >> IL PROFESSORE: Sì. 1191 01:03:39,815 --> 01:03:42,220 Va bene, quindi questo è difficile per un motivo. 1192 01:03:42,220 --> 01:03:44,845 Ed è per questo ho voluto portare questo per l'attenzione di tutti. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Qualcuno ha voglia di darmi un suggerimento, un tentativo? 1195 01:03:51,147 --> 01:03:52,230 Cosa sarebbe questo stampare? 1196 01:03:52,230 --> 01:03:53,930 Totalmente bene se ti sbagli. 1197 01:03:53,930 --> 01:03:55,619 Sì? 1198 01:03:55,619 --> 01:03:59,483 >> PUBBLICO: Penso che sia 100 e poi 10 su due linee separate. 1199 01:03:59,483 --> 01:04:00,940 >> IL PROFESSORE: E un 10? 1200 01:04:00,940 --> 01:04:03,154 Qualcuno ha altre ipotesi? 1201 01:04:03,154 --> 01:04:04,150 Sì? 1202 01:04:04,150 --> 01:04:09,040 >> PUBBLICO: Forse solo perché 10 func non restituisce nulla? 1203 01:04:09,040 --> 01:04:11,610 >> PROFESSORE: OK, così abbiamo avere il numero indovinare uno 1204 01:04:11,610 --> 01:04:14,990 è che il numero due ipotesi è solo andando a stampare 10. 1205 01:04:14,990 --> 01:04:17,623 Qualcuno ha altre ipotesi? 1206 01:04:17,623 --> 01:04:19,654 OK. 1207 01:04:19,654 --> 01:04:21,070 Quindi cerchiamo di camminare attraverso questo, giusto? 1208 01:04:21,070 --> 01:04:23,903 Ogni volta che si ottiene un pezzo di codice, non basta guardare a lui e di essere come, 1209 01:04:23,903 --> 01:04:25,060 ah, che è tanta roba! 1210 01:04:25,060 --> 01:04:26,460 Sono così confuso! 1211 01:04:26,460 --> 01:04:28,220 Come, calmati giù. 1212 01:04:28,220 --> 01:04:31,602 Basta sapere che si poteva solo guardare attraverso codice riga per riga. 1213 01:04:31,602 --> 01:04:32,310 Questo è tutto ciò che è. 1214 01:04:32,310 --> 01:04:33,840 E 'come leggere un libro. 1215 01:04:33,840 --> 01:04:38,000 >> Quindi, con qualsiasi funzione, partiamo sempre al principale. 1216 01:04:38,000 --> 01:04:40,860 Quindi stiamo andando a iniziare a int void main, 1217 01:04:40,860 --> 01:04:43,010 anche il programma del già malandato, giusto? 1218 01:04:43,010 --> 01:04:45,070 Inizia a in void main. 1219 01:04:45,070 --> 01:04:48,030 Int x è uguale a 10. 1220 01:04:48,030 --> 01:04:50,400 >> Quindi ho intenzione di cancellare questo. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Io vado a disegnare la memoria solo così si ragazzi possono sorta di vedere cosa sta succedendo. 1223 01:04:58,470 --> 01:05:02,190 >> Ricordate qui abbiamo la nostra pila? 1224 01:05:02,190 --> 01:05:05,810 Fino qui abbiamo il nostro heap da qualche parte qui. 1225 01:05:05,810 --> 01:05:07,470 Stack cresce, giusto? 1226 01:05:07,470 --> 01:05:10,150 E all'interno dello stack, si ha funzione così come l'alimentazione 1227 01:05:10,150 --> 01:05:12,230 tutti principali variabili locali. 1228 01:05:12,230 --> 01:05:14,310 >> Così qui, int x uguale 10. 1229 01:05:14,310 --> 01:05:17,670 All'interno della nostra funzione principale siamo la creazione di una variabile chiamata x. 1230 01:05:17,670 --> 01:05:20,590 Stiamo impostazione che pari a 10. 1231 01:05:20,590 --> 01:05:24,200 Qui hai qualche x, e sei l'impostazione che la parità a 10, a destra, 1232 01:05:24,200 --> 01:05:25,400 all'interno principale. 1233 01:05:25,400 --> 01:05:27,430 Tutti bene? 1234 01:05:27,430 --> 01:05:28,070 >> Funzione. 1235 01:05:28,070 --> 01:05:30,330 Così ora, all'interno della nostra principale funzione che stiamo chiamando 1236 01:05:30,330 --> 01:05:31,810 la funzione che abbiamo scritto sopra. 1237 01:05:31,810 --> 01:05:34,550 Quindi stiamo ora entriamo nella seconda funzione. 1238 01:05:34,550 --> 01:05:40,120 Stiamo andando a creare un altro variabile int x è uguale a 100. 1239 01:05:40,120 --> 01:05:42,410 Che cosa sta succedendo qui al camino? 1240 01:05:42,410 --> 01:05:46,980 Cosa succede quando si chiama un funzione che crea nuove variabili? 1241 01:05:46,980 --> 01:05:50,038 Che cosa succede qui al camino? 1242 01:05:50,038 --> 01:05:52,134 >> PUBBLICO: [incomprensibile] mucchi sopra? 1243 01:05:52,134 --> 01:05:52,800 IL PROFESSORE: Sì. 1244 01:05:52,800 --> 01:05:54,050 Quindi in realtà crea una copia. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 E che tipo di pile sulla parte superiore. 1247 01:05:57,740 --> 01:06:00,700 Pensate al stack-- una pila di libri, una pila di nulla. 1248 01:06:00,700 --> 01:06:06,520 Pali in alto, prima in ultima fuori, ultimo entrato, primo uscito. 1249 01:06:06,520 --> 01:06:08,471 >> Così sta andando a creare una x qui. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> Che sta per avere tutte le variabili funcs. 1252 01:06:14,450 --> 01:06:14,950 Grande. 1253 01:06:14,950 --> 01:06:20,980 Così ora abbiamo due diverse x di che rappresentano due cose molto diverse. 1254 01:06:20,980 --> 01:06:24,470 Poi andremo a stampare l'intero di x. 1255 01:06:24,470 --> 01:06:26,430 Quindi cerchiamo di stampare 100, giusto? 1256 01:06:26,430 --> 01:06:29,389 Perché qui è 100. 1257 01:06:29,389 --> 01:06:31,680 Ecco, questo è la prima cosa che sta andando a stampare. 1258 01:06:31,680 --> 01:06:35,710 Dato che questa funzione ritorna nulla, ora che la funzione, quella linea in principale 1259 01:06:35,710 --> 01:06:37,070 e 'fatto. 1260 01:06:37,070 --> 01:06:39,160 Tutti bene con me fino ad ora? 1261 01:06:39,160 --> 01:06:43,034 >> Quindi siamo ora attraverso due delle tre linee di nostra funzione principale. 1262 01:06:43,034 --> 01:06:44,450 Ora stiamo andando alla terza linea. 1263 01:06:44,450 --> 01:06:46,350 Stiamo andando a printf. 1264 01:06:46,350 --> 01:06:48,222 Che cosa è questo x nel principale? 1265 01:06:48,222 --> 01:06:49,263 Che cosa rappresenta? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> Quale valore è x ora? 1268 01:06:54,280 --> 01:06:55,220 >> PUBBLICO: 100. 1269 01:06:55,220 --> 01:06:56,799 >> IL PROFESSORE: E '100? 1270 01:06:56,799 --> 01:06:57,590 PUBBLICO: Ancora 10. 1271 01:06:57,590 --> 01:06:58,878 IL PROFESSORE: Ancora 10. 1272 01:06:58,878 --> 01:07:00,870 Già. 1273 01:07:00,870 --> 01:07:06,810 Perché ricordate, entro il nostro func, x è uguale a 100. 1274 01:07:06,810 --> 01:07:09,690 Ma se si ritorna alla nostra funzione principale, 1275 01:07:09,690 --> 01:07:12,440 tale variabile è memorizzato in un luogo diverso sul nostro stack. 1276 01:07:12,440 --> 01:07:16,250 >> Così ora abbiamo bisogno di tornare alla pila principale, di rete variabili locali. 1277 01:07:16,250 --> 01:07:18,460 E qui x è uguale a 10. 1278 01:07:18,460 --> 01:07:20,300 E così stiamo andando a stampare 10. 1279 01:07:20,300 --> 01:07:22,530 >> Quindi lei ha assolutamente ragione. 1280 01:07:22,530 --> 01:07:25,053 Stiamo per avere la potenza di 100 e 10. 1281 01:07:25,053 --> 01:07:25,553 Sì? 1282 01:07:25,553 --> 01:07:28,700 PUBBLICO: Quando malloc, è il cumulo o stack che è [incomprensibile]? 1283 01:07:28,700 --> 01:07:31,950 IL PROFESSORE: Quando si malloc, si sta prendendo la memoria dal mucchio 1284 01:07:31,950 --> 01:07:32,830 e loro assegnazione. 1285 01:07:32,830 --> 01:07:34,950 In modo che non avete a pasticciare con tutto questo. 1286 01:07:34,950 --> 01:07:38,100 Quindi credo che la più grande da asporto qui è qualcosa che si chiama ambito. 1287 01:07:38,100 --> 01:07:39,650 >> Per quelli di voi che erano a la sessione di revisione la scorsa notte, 1288 01:07:39,650 --> 01:07:41,080 abbiamo parlato brevemente di questo. 1289 01:07:41,080 --> 01:07:45,380 Ambito di applicazione e definisce come quando esistono le variabili. 1290 01:07:45,380 --> 01:07:48,050 O all'interno di quello che incornicia fanno esistono le variabili. 1291 01:07:48,050 --> 01:07:51,690 >> Praticamente la regola generale, è, il vostro variables-- se li si crea 1292 01:07:51,690 --> 01:07:56,660 all'interno braces-- riccio esistono solo all'interno di queste parentesi graffe. 1293 01:07:56,660 --> 01:08:00,312 >> Così, per esempio in funzione della nostra func, vedete quei due bretelle. 1294 01:08:00,312 --> 01:08:02,020 Se si sta creando nulla all'interno di esso, 1295 01:08:02,020 --> 01:08:06,500 è probabile che tutto quello che stai facendo è creando uno stack e memorizzazione che. 1296 01:08:06,500 --> 01:08:07,430 Stessa cosa in principale. 1297 01:08:07,430 --> 01:08:09,950 Questo è solo memorizzati all'interno del principale. 1298 01:08:09,950 --> 01:08:13,560 >> Inoltre si vuole essere molto, molto attenti qui. 1299 01:08:13,560 --> 01:08:18,310 Perché ambito presta anche stesso per diversi esempi. 1300 01:08:18,310 --> 01:08:25,950 Così, per esempio per un cappio, per int i è uguale a 0. 1301 01:08:25,950 --> 01:08:28,460 I è meno, non lo so, 10. 1302 01:08:28,460 --> 01:08:32,111 I plus plus. 1303 01:08:32,111 --> 01:08:34,560 E tu hai il codice all'interno di esso, giusto? 1304 01:08:34,560 --> 01:08:38,830 >> Da dove viene questa variabile, Io, in realtà esisto solo? 1305 01:08:38,830 --> 01:08:40,510 Solo all'interno del vostro ciclo for. 1306 01:08:40,510 --> 01:08:43,640 Così Scommetto che molti di voi ragazzi hanno probabilmente incontrato questo errore quando 1307 01:08:43,640 --> 01:08:45,930 si sta facendo nei vostri programmi pset. 1308 01:08:45,930 --> 01:08:49,990 Quanti di voi ragazzi hanno cercato di utilizzare i al di fuori di un ciclo for e ha avuto un errore? 1309 01:08:49,990 --> 01:08:53,310 Come un interi senza riferimenti o qualcosa di simile? 1310 01:08:53,310 --> 01:08:56,069 >> Il motivo per cui ciò accade è perché qui sei 1311 01:08:56,069 --> 01:08:59,109 la creazione di qualcosa che solo esiste all'interno del vostro ciclo for. 1312 01:08:59,109 --> 01:09:01,972 E se si tenta di utilizzarlo, io non lo fa in realtà esistere al di fuori di esso. 1313 01:09:01,972 --> 01:09:04,930 Quindi, in pratica un computer dicendo, io Non sai di cosa stai parlando. 1314 01:09:04,930 --> 01:09:08,689 Tutto quello che so è che mi è stato un qui, ma ora non più. 1315 01:09:08,689 --> 01:09:12,580 >> Quindi, se dovessi creare un per il ciclo dentro, giusto? 1316 01:09:12,580 --> 01:09:19,080 E ho intenzione di creare un altro, come int j, e farlo fare tutto ciò. 1317 01:09:19,080 --> 01:09:23,689 E hai un codice all'interno di quel ciclo, j esiste solo qui. 1318 01:09:23,689 --> 01:09:26,029 Ma che esiste anche all'interno i. 1319 01:09:26,029 --> 01:09:29,310 E così j esiste solo all'interno di questo ciclo for, 1320 01:09:29,310 --> 01:09:33,850 mentre i non esiste in tutta la faccenda. 1321 01:09:33,850 --> 01:09:34,500 >> Tutti chiaro? 1322 01:09:34,500 --> 01:09:37,416 Stessa cosa con istruzioni condizionali se si desidera creare nulla. 1323 01:09:37,416 --> 01:09:40,390 Stessa cosa con passanti mentre se si desidera creare nulla. 1324 01:09:40,390 --> 01:09:42,390 Questo è qualcosa di cui essere molto, molto attenti. 1325 01:09:42,390 --> 01:09:45,681 Quindi questo è stato davvero un buon problema nel senso che ha dimostrato due cose. 1326 01:09:45,681 --> 01:09:47,160 E 'dimostrato prima, portata. 1327 01:09:47,160 --> 01:09:49,550 E ha dimostrato anche l'allocazione di memoria. 1328 01:09:49,550 --> 01:09:54,130 Perché voi ragazzi dovrebbero sapere che funzioni crescono verso l'alto nella pila. 1329 01:09:54,130 --> 01:09:56,710 E che quando si chiama funzioni, si sta creando 1330 01:09:56,710 --> 01:09:59,060 essenzialmente una nuova pila di memoria. 1331 01:09:59,060 --> 01:10:02,100 Questo è molto diverso da ciò che la memoria di rete sia. 1332 01:10:02,100 --> 01:10:03,300 Già. 1333 01:10:03,300 --> 01:10:03,800 Wow! 1334 01:10:03,800 --> 01:10:05,470 Tutti OK su questo? 1335 01:10:05,470 --> 01:10:06,750 E 'stato di confusione. 1336 01:10:06,750 --> 01:10:09,380 Molto argomenti buoni per andare oltre, perché probabilmente siete 1337 01:10:09,380 --> 01:10:12,255 andando a prendere un po 'ingannevole cose del genere sul quiz. 1338 01:10:12,255 --> 01:10:13,350 Già. 1339 01:10:13,350 --> 01:10:13,850 Raffreddare. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Metterò si ottiene il 100 su un line e poi 10 dall'altro. 1342 01:10:18,430 --> 01:10:21,468 Sì, molto buono. 1343 01:10:21,468 --> 01:10:26,350 >> OK, ora voi ragazzi ottenere la possibilità di essere le agenzie di viaggi. 1344 01:10:26,350 --> 01:10:30,600 Si arriva a rispondere a tutte la bella e-mail che ho a volte ricevo. 1345 01:10:30,600 --> 01:10:34,290 >> Quindi, caro Andi, vedo qualcosa che penso che non va con il mio compilatore. 1346 01:10:34,290 --> 01:10:37,910 Sono certo che il mio codice è corretto, ma io continuo a ricevere un errore di segmentazione 1347 01:10:37,910 --> 01:10:39,074 ogni volta che corro. 1348 01:10:39,074 --> 01:10:39,740 Cosa sta succedendo? 1349 01:10:39,740 --> 01:10:42,844 Si prega di aiuto, tanto amore. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Se voi ragazzi avete qualcosa di simile che come risponderesti? 1352 01:10:49,410 --> 01:10:51,860 Questi sono in realtà molto comuni domande che chiederanno. 1353 01:10:51,860 --> 01:10:54,090 È se, ti daremo un scenario, daremo noi 1354 01:10:54,090 --> 01:10:56,350 la tua ipotesi migliore a quello che sta succedendo. 1355 01:10:56,350 --> 01:11:00,710 Qualcuno ha una pugnalata a quello che sta succedendo? 1356 01:11:00,710 --> 01:11:02,654 Sì? 1357 01:11:02,654 --> 01:11:06,056 >> PUBBLICO: Forse il dereferenziati null, qualcosa come il puntatore 1358 01:11:06,056 --> 01:11:08,924 si punta a qualcosa nullo. 1359 01:11:08,924 --> 01:11:11,590 PROFESSORE: Sì, sarebbe un esempio di quando che sarebbe successo. 1360 01:11:11,590 --> 01:11:14,467 Ma qual è il quadro più ampio di quello che sta succedendo qui? 1361 01:11:14,467 --> 01:11:17,050 PUBBLICO: E 'si sta cercando di accedere alla memoria che non sei 1362 01:11:17,050 --> 01:11:18,175 dovrebbe avere accesso a? 1363 01:11:18,175 --> 01:11:19,200 IL PROFESSORE: Esattamente. 1364 01:11:19,200 --> 01:11:24,800 Quindi, pensare di guasto seg, un off limiti, area riservata in memoria 1365 01:11:24,800 --> 01:11:27,780 che non si deve essere commovente. 1366 01:11:27,780 --> 01:11:31,670 >> Così, più o meno quando si sta cercando per index-- come, per esempio, 1367 01:11:31,670 --> 01:11:34,110 avete dichiarato un matrice da zero a nove. 1368 01:11:34,110 --> 01:11:37,360 Ma provate a toccare quella 10 ° valore, non hanno accesso a questo. 1369 01:11:37,360 --> 01:11:38,694 Perché non avete dichiarato. 1370 01:11:38,694 --> 01:11:40,943 E così il computer sta andando a guardare quella essere come, 1371 01:11:40,943 --> 01:11:43,440 uh oh, si sta cercando di andare al di fuori dei confini di un indice. 1372 01:11:43,440 --> 01:11:45,270 Sto per darvi un segmentation fault. 1373 01:11:45,270 --> 01:11:46,590 >> Pensate a come segmento, giusto? 1374 01:11:46,590 --> 01:11:49,665 Un segmento supplementare, il guasto quando si tenta di violare qualcosa 1375 01:11:49,665 --> 01:11:50,790 e non dovrebbe essere lì. 1376 01:11:50,790 --> 01:11:53,660 Segmentation fault è in qualsiasi momento si cerca di toccare le cose 1377 01:11:53,660 --> 01:11:54,970 che non si deve essere commovente. 1378 01:11:54,970 --> 01:11:56,815 >> Così esempi comuni sono un indice. 1379 01:11:56,815 --> 01:11:58,940 Naturalmente, se si sta cercando al tatto che è stato nullo, 1380 01:11:58,940 --> 01:12:00,220 che sarebbe anche funzionare pure. 1381 01:12:00,220 --> 01:12:02,300 Se il puntatore stava cercando di toccare le cose che non dovrebbero toccare, 1382 01:12:02,300 --> 01:12:03,730 che potrebbe anche funzionare pure. 1383 01:12:03,730 --> 01:12:07,120 Più tipicamente Potrai vedere questo in un array. 1384 01:12:07,120 --> 01:12:07,740 Tutti bene? 1385 01:12:07,740 --> 01:12:10,374 >> PUBBLICO: Quindi, se volete per accedere al punto 10 1386 01:12:10,374 --> 01:12:12,290 e c'è solo un limite di nove o qualcosa. 1387 01:12:12,290 --> 01:12:13,160 >> PROFESSORE: Sì, esattamente. 1388 01:12:13,160 --> 01:12:13,660 Abbastanza. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Raffreddare. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Caro Andi. 1393 01:12:19,920 --> 01:12:23,440 Così abbiamo questi meravigliosi cose chiamati sorta. 1394 01:12:23,440 --> 01:12:25,472 Se Merge sort-- come noi sega a esempio quando si 1395 01:12:25,472 --> 01:12:27,180 David ha fatto tutta la cosa in class-- perché, 1396 01:12:27,180 --> 01:12:29,760 se è così molto più veloce di qualsiasi altro genere, 1397 01:12:29,760 --> 01:12:33,310 perché abbiamo neanche fastidio sapere qualsiasi delle altre specie? 1398 01:12:33,310 --> 01:12:35,100 >> Che cosa è questa domanda davvero che ti chiede? 1399 01:12:35,100 --> 01:12:36,659 Qual è il tre word-- 1400 01:12:36,659 --> 01:12:37,950 PUBBLICO: Qual è il trade-off? 1401 01:12:37,950 --> 01:12:38,530 IL PROFESSORE: Esattamente. 1402 01:12:38,530 --> 01:12:39,946 Questo è ciò che la domanda sta chiedendo. 1403 01:12:39,946 --> 01:12:43,682 Qual è il trade-off tra Merge sort versi altri tipi? 1404 01:12:43,682 --> 01:12:45,850 >> PUBBLICO: prende la memoria, giusto? 1405 01:12:45,850 --> 01:12:47,720 >> IL PROFESSORE: Do you spiegare che un po 'di più? 1406 01:12:47,720 --> 01:12:49,490 Prima di tutto spiegare negozio Merge. 1407 01:12:49,490 --> 01:12:50,970 Come funziona merge sort funziona? 1408 01:12:50,970 --> 01:12:55,220 >> PUBBLICO: Così funziona dividendo tutto in mezzo 1409 01:12:55,220 --> 01:13:00,660 e poi mettere insieme e riallocazione in ordine, 1410 01:13:00,660 --> 01:13:02,862 come ogni volta si uniscono i set. 1411 01:13:02,862 --> 01:13:03,820 IL PROFESSORE: Più o meno. 1412 01:13:03,820 --> 01:13:06,861 Così posso disegnare questo fuori, ma sarebbe portarmi cinque minuti per attingere. 1413 01:13:06,861 --> 01:13:10,220 Guardare indietro alle diapositive sezione dove abbiamo coperto merge sort. 1414 01:13:10,220 --> 01:13:10,790 Di preciso. 1415 01:13:10,790 --> 01:13:13,406 >> Quindi il modo Merge opere ordinamento è divide le cose a metà, 1416 01:13:13,406 --> 01:13:15,780 e allora sembra proprio al primi valori di tutti 1417 01:13:15,780 --> 01:13:17,000 e ordina solo quello. 1418 01:13:17,000 --> 01:13:20,364 Continuamente crea nuovi array e mette le cose sempre più in ordine. 1419 01:13:20,364 --> 01:13:23,030 E così, mentre questo è davvero, davvero veloce perché it's-- si sa, 1420 01:13:23,030 --> 01:13:25,380 una ricerca binaria è n log n. 1421 01:13:25,380 --> 01:13:27,880 Si sta creando tanti diverse matrici che sei 1422 01:13:27,880 --> 01:13:29,700 utilizzando una grande quantità di memoria. 1423 01:13:29,700 --> 01:13:33,080 E così, mentre è più veloce, il trade off qui è che si sta utilizzando più memoria. 1424 01:13:33,080 --> 01:13:38,490 >> E così, suggerimento, ordinamenti e ricerche sono state coperte molto di più quest'anno 1425 01:13:38,490 --> 01:13:41,610 quanto non lo siano stati negli anni precedenti. 1426 01:13:41,610 --> 01:13:45,100 Voi ragazzi dovrebbe vedere che riflette di conseguenza sul quiz. 1427 01:13:45,100 --> 01:13:49,160 Mi sarebbe sicuramente trascorrere del tempo andando su ciò che tutti i diversi tipi 1428 01:13:49,160 --> 01:13:52,320 sono, come la ricerca binaria, come funziona la ricerca lineare. 1429 01:13:52,320 --> 01:13:54,750 Come forse pseudocodice codice quelli fuori. 1430 01:13:54,750 --> 01:13:55,950 Quali sono i tempi di esecuzione? 1431 01:13:55,950 --> 01:13:59,210 Qualcosa come tempi di funzionamento è molto facile da copiare in giù su un foglio nota, 1432 01:13:59,210 --> 01:13:59,710 destra? 1433 01:13:59,710 --> 01:14:01,420 >> E 'davvero difficile quando sei nel mezzo del test 1434 01:14:01,420 --> 01:14:02,390 e si deve capirlo. 1435 01:14:02,390 --> 01:14:03,160 Copiare il basso. 1436 01:14:03,160 --> 01:14:05,550 Vi garantisco che sei andando a bisogno di sapere che. 1437 01:14:05,550 --> 01:14:06,860 Quali sono i compromessi? 1438 01:14:06,860 --> 01:14:10,064 Nel peggiore dei casi, i migliori scenari per tutti loro, molto conoscere. 1439 01:14:10,064 --> 01:14:10,564 Sì? 1440 01:14:10,564 --> 01:14:12,730 >> PUBBLICO: Abbiamo bisogno di sai scrivere codice merge sort? 1441 01:14:12,730 --> 01:14:15,470 Come, abbiamo bisogno di ricordare il ricorsiva? 1442 01:14:15,470 --> 01:14:18,950 >> IL PROFESSORE: dubito fortemente che, solo perché è come abbastanza complicato. 1443 01:14:18,950 --> 01:14:22,282 Ma potrebbe non essere fattibile se ci vi chiedo di usare pseudocodice fuori. 1444 01:14:22,282 --> 01:14:22,781 Già. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Sì, va bene, uno di più. 1447 01:14:29,170 --> 01:14:31,387 Questo può essere venuto in si ultimo pezzo in un po '. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 Sì? 1450 01:14:43,090 --> 01:14:44,930 Ognuno ha sentito? 1451 01:14:44,930 --> 01:14:48,360 >> OK, quindi praticamente prima di tutto, che tipo di programma 1452 01:14:48,360 --> 01:14:51,000 sarebbe dando un output come questo? 1453 01:14:51,000 --> 01:14:54,350 Ricordate vi abbiamo chiesto di conoscere questo nuovo tipo di strumento di debug? 1454 01:14:54,350 --> 01:14:57,340 Qual era il nome di essa? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, a destra 1456 01:14:59,460 --> 01:15:02,600 >> E 'stato un programma in cui si potrebbe chiamare che potrebbero 1457 01:15:02,600 --> 01:15:05,940 tenere traccia di tutta la memoria che sei utilizzando nel vostro programma e stava succedendo. 1458 01:15:05,940 --> 01:15:11,090 Quindi, se hai qualcosa, come, definitivamente perso, 40 byte in un blocco. 1459 01:15:11,090 --> 01:15:14,870 Probabilmente non siete ricordando di liberarla. 1460 01:15:14,870 --> 01:15:18,710 Perché se si sta utilizzando byte di memoria, questo significa che ti sei collegato a quel ricordo, 1461 01:15:18,710 --> 01:15:20,240 ma non siete stati in grado di liberare. 1462 01:15:20,240 --> 01:15:21,948 Così si vuole fare Assicurarsi che sei anche 1463 01:15:21,948 --> 01:15:31,420 utilizzando free-- che è un function-- di liberare tutto 1464 01:15:31,420 --> 01:15:34,930 della memoria riallocata da malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Raffreddare. 1466 01:15:35,500 --> 01:15:37,140 Quindi questa diapositiva, avrò in su. 1467 01:15:37,140 --> 01:15:41,050 E 'ovunque in molte conferenze, in un sacco di sezione diapositive. 1468 01:15:41,050 --> 01:15:44,254 Sei sicuro di voler fare in modo basta sapere tutto questo. 1469 01:15:44,254 --> 01:15:47,170 Sia nel foglio di nota o se si vuole memorizzarlo, sentitevi liberi di. 1470 01:15:47,170 --> 01:15:48,836 E 'davvero, davvero, davvero importante. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Anche un ottimo domanda che si può chiedere. 1473 01:15:56,890 --> 01:16:00,320 Perché guardare Selezione sort-- a Selezione sort-- tutti i tempi di esecuzione 1474 01:16:00,320 --> 01:16:02,060 sono n al quadrato. 1475 01:16:02,060 --> 01:16:06,714 Indipendentemente da come l'elenco viene a voi come, quindi perché è la selezione sort-- 1476 01:16:06,714 --> 01:16:08,630 Ti darò ragazzi 30 secondo pensare a questo. 1477 01:16:08,630 --> 01:16:10,700 Perché è sorta di confusione. 1478 01:16:10,700 --> 01:16:12,710 Si tratta di un po 'di pensiero concettuale. 1479 01:16:12,710 --> 01:16:16,470 Perché dovrebbero i tempi di esecuzione essere lo stesso in entrambi gli scenari peggiori e migliori casi? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> Sì? 1482 01:16:30,000 --> 01:16:38,084 >> PUBBLICO: perché la selezione ogni sorta posizione o spazio in questa piccola matrice 1483 01:16:38,084 --> 01:16:40,350 cosa o qualsiasi altra cosa. 1484 01:16:40,350 --> 01:16:44,430 Quindi, anche nel migliore dei casi, anche se è perfettamente ordinato, 1485 01:16:44,430 --> 01:16:47,380 avrebbe dovuto comunque essere come, OK, uno. 1486 01:16:47,380 --> 01:16:49,000 Nel mio primo luogo ho uno. 1487 01:16:49,000 --> 01:16:50,250 E passare attraverso tutti loro. 1488 01:16:50,250 --> 01:16:51,249 OK, uno è il più piccolo. 1489 01:16:51,249 --> 01:16:53,053 E poi si va di nuovo ed è come, OK, due 1490 01:16:53,053 --> 01:16:54,594 è la più piccola di tutte le cose. 1491 01:16:54,594 --> 01:16:56,804 Ma deve ancora controllare tutti e di ciascuno. 1492 01:16:56,804 --> 01:16:57,470 IL PROFESSORE: Sì. 1493 01:16:57,470 --> 01:17:00,490 Così, per esempio, diciamo solo che abbiamo una lista, già ordinato, 1494 01:17:00,490 --> 01:17:03,390 un array uno a cinque. 1495 01:17:03,390 --> 01:17:07,100 Il modo in cui i tipi di selezione è che passa attraverso, controlla questi due. 1496 01:17:07,100 --> 01:17:08,234 Poi controlla quei due. 1497 01:17:08,234 --> 01:17:09,650 E poi controlla e verifica. 1498 01:17:09,650 --> 01:17:13,285 Si continua a controllare tutti loro, indipendentemente dal fatto che 1499 01:17:13,285 --> 01:17:14,160 in realtà è ordinato. 1500 01:17:14,160 --> 01:17:16,450 Perché questo è semplicemente il modo in cui il genere funziona. 1501 01:17:16,450 --> 01:17:19,530 >> E così questa domanda è un po 'come una domanda concettuale chiederemo. 1502 01:17:19,530 --> 01:17:21,430 Dove prima, di sapere che tipo di selezione 1503 01:17:21,430 --> 01:17:23,304 è, a destra, per poter per rispondere alla domanda. 1504 01:17:23,304 --> 01:17:26,200 Devi essere in grado di capire concettualmente quello che sta succedendo. 1505 01:17:26,200 --> 01:17:30,760 E allora si può applicare e pensare, OK diciamo solo immaginare peggiore delle ipotesi. 1506 01:17:30,760 --> 01:17:32,230 Sono tutti in ordine decrescente. 1507 01:17:32,230 --> 01:17:33,290 Come vorrei che incidono su di esso? 1508 01:17:33,290 --> 01:17:34,650 >> Che cosa se è ordine crescente? 1509 01:17:34,650 --> 01:17:35,640 Se è già ordinato? 1510 01:17:35,640 --> 01:17:37,240 Come vorrei che influenzare i tempi di esecuzione? 1511 01:17:37,240 --> 01:17:40,270 E poi ordinamento per selezione, noterete che in realtà non importa. 1512 01:17:40,270 --> 01:17:43,500 Perché si sta controllando tutte le I valori indipendentemente da ciò che sta accadendo. 1513 01:17:43,500 --> 01:17:45,810 >> E quindi le cose buone da ricordare. 1514 01:17:45,810 --> 01:17:50,290 Perché alcuni tipi si differenziano dagli altri e il modo migliore e gli scenari peggiori 1515 01:17:50,290 --> 01:17:52,740 interesserebbe tutti loro. 1516 01:17:52,740 --> 01:17:56,700 >> Sto andando a colpire davvero in genere perché sarà sul quiz. 1517 01:17:56,700 --> 01:17:57,199 Già. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 OK. 1520 01:18:01,320 --> 01:18:05,590 C'è sei minuti dalla fine. 1521 01:18:05,590 --> 01:18:09,880 Posso prendere tre minuti di domande. 1522 01:18:09,880 --> 01:18:12,290 Posso anche rimanere in giro per come 20 minuti dopo sezione 1523 01:18:12,290 --> 01:18:13,850 se volete fare domande pure. 1524 01:18:13,850 --> 01:18:16,330 Qualcuno appena hanno davvero breve domande o problemi concettuali 1525 01:18:16,330 --> 01:18:17,360 sono poco chiare in questo momento? 1526 01:18:17,360 --> 01:18:17,832 Sì? 1527 01:18:17,832 --> 01:18:19,720 >> PUBBLICO: Puoi parlarci un po ' po 'di operatori bit per bit? 1528 01:18:19,720 --> 01:18:20,280 >> IL PROFESSORE: Sì. 1529 01:18:20,280 --> 01:18:22,446 Così gli operatori bit a bit sono qualcosa che probabilmente 1530 01:18:22,446 --> 01:18:24,170 potrebbe semplicemente voler mettere sul foglio. 1531 01:18:24,170 --> 01:18:27,540 Così quickly-- Non voglio andare troppo in profondità 1532 01:18:27,540 --> 01:18:31,164 perché Harvard, nella loro revisione seduta, coperto abbastanza bene. 1533 01:18:31,164 --> 01:18:33,080 Operatore binario, non c'è cinque di loro, giusto? 1534 01:18:33,080 --> 01:18:41,370 >> C'è questo, che è x o funzione, c'è commerciale, che è la e. 1535 01:18:41,370 --> 01:18:44,050 Tubo, che è l'OR. 1536 01:18:44,050 --> 01:18:46,790 E poi ci sono i due diversi tipi di turni. 1537 01:18:46,790 --> 01:18:50,610 >> Se ti do due valori, se Io ti do, come, uno e uno. 1538 01:18:50,610 --> 01:18:52,390 Quale sarebbe valutata come? 1539 01:18:52,390 --> 01:18:55,490 Se ti do vero e vero, vero? 1540 01:18:55,490 --> 01:18:56,930 Che dire di vero o falso? 1541 01:18:56,930 --> 01:18:57,830 Ancora vero, giusto? 1542 01:18:57,830 --> 01:18:59,762 Perché c'è una o. 1543 01:18:59,762 --> 01:19:01,220 Ti molto probabilmente vi darà i numeri. 1544 01:19:01,220 --> 01:19:03,780 Quindi ricordate, uno uguale vero, lo zero è uguale a false. 1545 01:19:03,780 --> 01:19:07,407 E potremmo darvi queste cose e vi chiedo di dirci cosa succede. 1546 01:19:07,407 --> 01:19:10,240 Harvard ricopre all'interno della prima 10 minuti del loro sessione di studio 1547 01:19:10,240 --> 01:19:11,230 davvero, davvero bene. 1548 01:19:11,230 --> 01:19:14,260 Quindi voi ragazzi vuole fare che si guarda indietro su questo. 1549 01:19:14,260 --> 01:19:16,387 >> PUBBLICO: è pisa5 sta per essere sul quiz? 1550 01:19:16,387 --> 01:19:16,970 IL PROFESSORE: No. 1551 01:19:16,970 --> 01:19:18,240 Non è nemmeno guardare pisa5 momento. 1552 01:19:18,240 --> 01:19:18,810 È difficile. 1553 01:19:18,810 --> 01:19:22,830 Basta non si preoccupano neppure guardando pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Tuttavia, come alcuni suggerimenti e suggerimenti, 1555 01:19:25,665 --> 01:19:28,320 suggerisco di iniziare pisa5 non appena il quiz è finito. 1556 01:19:28,320 --> 01:19:30,319 Questo sarà il più difficile settimana, ma poi voi ragazzi 1557 01:19:30,319 --> 01:19:34,590 sarà passò sulle colline di verde e cuccioli di rotolamento, 1558 01:19:34,590 --> 01:19:36,115 e va bene. 1559 01:19:36,115 --> 01:19:39,810 >> Questa classe diventa significativo più facile dopo il quinto pset. 1560 01:19:39,810 --> 01:19:41,560 Orario di ricevimento: UDIENZA sono Domenica, Lunedi? 1561 01:19:41,560 --> 01:19:44,260 PROFESSORE: Sì, così le ore di ufficio sarà la Domenica a Lunedi per la pset. 1562 01:19:44,260 --> 01:19:47,009 Orario di ricevimento stasera essenzialmente sarà solo commento per il quiz. 1563 01:19:47,009 --> 01:19:50,350 Se qualcuno vuole entrare e chiedere TAS una domanda, saremo lì. 1564 01:19:50,350 --> 01:19:53,220 >> Prenderò forse più una domanda se qualcuno ha una domanda? 1565 01:19:53,220 --> 01:19:53,809 Sì? 1566 01:19:53,809 --> 01:19:55,850 PUBBLICO: Quando sei nodi che definiscono, [incomprensibile] 1567 01:19:55,850 --> 01:20:00,700 se dite stella nodo e poi il prossimo, fa il computer automaticamente 1568 01:20:00,700 --> 01:20:03,610 capire che sei riferendosi a un altro puntatore? 1569 01:20:03,610 --> 01:20:04,580 >> IL PROFESSORE: No. 1570 01:20:04,580 --> 01:20:06,710 >> PUBBLICO: Devi ricollegheremo [incomprensibile]? 1571 01:20:06,710 --> 01:20:09,270 >> IL PROFESSORE: Quindi, in pratica il struct di un nodo è, lo ricordiamo, 1572 01:20:09,270 --> 01:20:12,620 è come si crea il nodo e allora avete un puntatore chiamato prossimo. 1573 01:20:12,620 --> 01:20:14,630 Tutto quello che stai facendo è avere la struttura lì. 1574 01:20:14,630 --> 01:20:16,387 È necessario assegnare tale puntatore da qualche parte. 1575 01:20:16,387 --> 01:20:18,470 Così i computer non lo fa sa cosa sta facendo ancora. 1576 01:20:18,470 --> 01:20:20,250 È necessario assegnare realmente quando si sta creando la vostra lista collegata. 1577 01:20:20,250 --> 01:20:22,170 Ed è quello che principalmente pset 5 sarà. 1578 01:20:22,170 --> 01:20:24,106 Quindi nessuna preoccupazione circa niente di tutto questo al momento. 1579 01:20:24,106 --> 01:20:26,380 >> PUBBLICO: Quindi non abbiamo bisogno di concentrarsi troppo sulla lista di link, basta 1580 01:20:26,380 --> 01:20:27,440 la concezione generale? 1581 01:20:27,440 --> 01:20:30,980 >> IL PROFESSORE: A soli praticamente pile, code, elenchi di link, alberi, tabelle hash. 1582 01:20:30,980 --> 01:20:33,639 Basta essere in grado di sapere che cosa sono. 1583 01:20:33,639 --> 01:20:35,680 Non abbiamo intenzione di chiedere ti piace qualcosa di specifico 1584 01:20:35,680 --> 01:20:39,300 perché non abbiamo fatto veramente un pset che la copre nulla di tutto ciò ancora. 1585 01:20:39,300 --> 01:20:45,540 >> Così negli ultimi due minuti prima Ho impostato liberi di uccidere questo quiz. 1586 01:20:45,540 --> 01:20:49,370 Più o meno, come, pensare a come lontano voi ragazzi venuti in questa classe. 1587 01:20:49,370 --> 01:20:52,820 >> Mi ricordo quando due settimane di questa classe, alcuni di voi 1588 01:20:52,820 --> 01:20:55,720 passare tre ore a scrivere acqua. 1589 01:20:55,720 --> 01:20:57,970 Quanto tempo ci vorrà ragazzi di scrivere l'acqua ora? 1590 01:20:57,970 --> 01:20:59,670 30 secondi, forse? 1591 01:20:59,670 --> 01:21:01,810 Pensa a quanto voi ragazzi hanno imparato. 1592 01:21:01,810 --> 01:21:04,320 CS è un argomento molto, molto difficile. 1593 01:21:04,320 --> 01:21:06,190 Non c'è dubbio. 1594 01:21:06,190 --> 01:21:09,160 E 'difficile, è per questo che non si studia. 1595 01:21:09,160 --> 01:21:10,730 E 'solo difficile. 1596 01:21:10,730 --> 01:21:11,650 Ed è totalmente soddisfacente. 1597 01:21:11,650 --> 01:21:14,150 >> E sono davvero orgoglioso che tutti hanno fatto fino a questo punto. 1598 01:21:14,150 --> 01:21:16,380 Pset non sono facili. 1599 01:21:16,380 --> 01:21:17,790 Prendono un sacco di tempo. 1600 01:21:17,790 --> 01:21:22,580 Ragazzi, io non ti chiederà mai di scrivere il gioco del 15 o Vigenere sulla pset. 1601 01:21:22,580 --> 01:21:24,160 Non è necessario a freak appena fuori di questo. 1602 01:21:24,160 --> 01:21:28,080 Tutto quello che stiamo testando qui è quello di valutare la vostra conoscenza concettuale, nonché 1603 01:21:28,080 --> 01:21:31,524 come alcune delle vostre abilità di base di codifica. 1604 01:21:31,524 --> 01:21:33,440 Il test è stato progettato per essere davvero impegnativo. 1605 01:21:33,440 --> 01:21:36,180 Come, è stato progettato per voi di non ottenere il 100. 1606 01:21:36,180 --> 01:21:39,880 È stato inoltre progettato per voi a probabilmente non essere in grado di finire in 75 minuti. 1607 01:21:39,880 --> 01:21:41,995 E questo è tutto bene. 1608 01:21:41,995 --> 01:21:42,870 Sono uno studente me stesso. 1609 01:21:42,870 --> 01:21:45,960 Lo so, lo odio quando cammino fuori di un quiz essere come, merda. 1610 01:21:45,960 --> 01:21:47,044 E 'stato davvero difficile. 1611 01:21:47,044 --> 01:21:49,460 Probabilmente ciò che sta per happen-- e che è totalmente soddisfacente, 1612 01:21:49,460 --> 01:21:50,751 Ti sto dicendo ragazzi al momento. 1613 01:21:50,751 --> 01:21:53,190 Il mezzo su queste cose non sono elevati affatto. 1614 01:21:53,190 --> 01:21:55,360 >> E per quelli di voi che sono stati sempre, come, 1615 01:21:55,360 --> 01:21:57,870 tre, sui vostri insiemi di problemi, questo non significa che sei 1616 01:21:57,870 --> 01:21:59,536 intenzione di ottenere un 60 per cento in questa classe. 1617 01:21:59,536 --> 01:22:01,440 Se si ottiene il 60% sul quiz, che non lo fa 1618 01:22:01,440 --> 01:22:03,330 dire che stai andando a ottenere un D in questa classe. 1619 01:22:03,330 --> 01:22:05,740 Vediamo, soprattutto io, per quelli di voi nella mia sezione, 1620 01:22:05,740 --> 01:22:07,406 Vedo quanto sia difficile voi ragazzi stanno lavorando. 1621 01:22:07,406 --> 01:22:09,190 E io tenere traccia di questo. 1622 01:22:09,190 --> 01:22:11,420 >> Voi ragazzi andrà bene. 1623 01:22:11,420 --> 01:22:14,580 Non c'è memoria istituzionale felicità, alla fine del semestre. 1624 01:22:14,580 --> 01:22:16,840 Perché tutti i ragazzi di Harvard dicono i loro amici, oh, andrà tutto bene. 1625 01:22:16,840 --> 01:22:18,381 Nessuno ti sta dicendo ragazzi che qui. 1626 01:22:18,381 --> 01:22:20,950 Quindi devo dirvi ragazzi che qui. 1627 01:22:20,950 --> 01:22:22,280 >> Voi ragazzi andrà bene. 1628 01:22:22,280 --> 01:22:24,080 Sono così orgoglioso di tutti voi ragazzi. 1629 01:22:24,080 --> 01:22:25,680 Il test sarà difficile. 1630 01:22:25,680 --> 01:22:28,140 Studio per esso, e poi solo buttarlo via. 1631 01:22:28,140 --> 01:22:31,280 Preparatevi a imparare cose nuove. 1632 01:22:31,280 --> 01:22:33,990 E mangiare caramelle. 1633 01:22:33,990 --> 01:22:35,940 Abbiamo un sacco di caramelle. 1634 01:22:35,940 --> 01:22:37,760 >> Ottenere un sonno della buona notte. 1635 01:22:37,760 --> 01:22:40,420 Non Non dormire, perché che sarebbe davvero male. 1636 01:22:40,420 --> 01:22:41,490 CS è un sacco di logica. 1637 01:22:41,490 --> 01:22:44,960 Se non si dorme, non può funzionare, e il tuo cervello non può funzionare. 1638 01:22:44,960 --> 01:22:48,780 E sarò qui per il prossimo 20 minuti, se qualcuno vuole rimanere in giro. 1639 01:22:48,780 --> 01:22:51,150 Voi ragazzi stanno andando per ucciderlo. 1640 01:22:51,150 --> 01:22:53,000 Buona fortuna. 1641 01:22:53,000 --> 01:22:55,663