1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> Profesor: Torej agenda za ta teden, ne da veliko stvari. 3 00:00:09,790 --> 00:00:12,801 Upam pa, da je zelo, zelo koristno in pomembne za vas ta teden. 4 00:00:12,801 --> 00:00:15,550 Ampak bomo preživeli morda 15, 20 minut samo hitro govorjenje 5 00:00:15,550 --> 00:00:17,370 o seznamu povezavo. 6 00:00:17,370 --> 00:00:19,694 Link seznami bodo zajeti na kvizu. 7 00:00:19,694 --> 00:00:22,610 Torej, morda bi bilo zelo koristno, da se naučijo nekaj o tem, kaj to je. 8 00:00:22,610 --> 00:00:25,210 >> Bomo porabili velika Večina današnjega oddelka 9 00:00:25,210 --> 00:00:27,640 bo nad kviz nič prakse težav. 10 00:00:27,640 --> 00:00:30,970 In potem bomo prihranili morda 20, 30 minut na koncu za vse dolgotrajne vprašanja 11 00:00:30,970 --> 00:00:32,850 ima kdo. 12 00:00:32,850 --> 00:00:34,610 >> In potem, zadnji pet minut, grem 13 00:00:34,610 --> 00:00:36,467 dati črpalke up govor za kviz. 14 00:00:36,467 --> 00:00:38,050 Vi vsi želijo biti tukaj za to. 15 00:00:38,050 --> 00:00:39,591 Ker to se dogaja, da je pravi čas. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Vse je v redu, tako da nekateri Material na seznamu povezavo. 18 00:00:49,230 --> 00:00:52,620 Kako oni običajno strukturirana je imate, kar se imenuje vozlišče, kajne? 19 00:00:52,620 --> 00:00:54,870 Imate te stvari, imenovane vozlišča, ki so konstruktov. 20 00:00:54,870 --> 00:00:57,360 Jaz bom šel čez kako ustvariti vozlišče v naslednji diapozitiv. 21 00:00:57,360 --> 00:01:00,680 Ampak v bistvu vse povezano Seznami je so podatki, ki 22 00:01:00,680 --> 00:01:03,340 je nanizani skupaj s pomočjo kazalca. 23 00:01:03,340 --> 00:01:09,110 >> In tako prednost imamo z uporabo povezani seznam več, 24 00:01:09,110 --> 00:01:11,280 morda, kot matrike, je dejstvo, da v matriki 25 00:01:11,280 --> 00:01:15,000 boste morali en sosednji blok pomnilnik vsi na istem mestu, ena 26 00:01:15,000 --> 00:01:16,870 za drugo, da bi lahko imeli to. 27 00:01:16,870 --> 00:01:20,200 Ker je povezani seznam, lahko imajo naključne malo bitov pomnilnika 28 00:01:20,200 --> 00:01:23,020 vsem računalnikom nanizani skupaj s kazalci. 29 00:01:23,020 --> 00:01:26,270 >> In na ta način boste Dostop do podatkov 30 00:01:26,270 --> 00:01:28,610 da je eden za druga po drugi 31 00:01:28,610 --> 00:01:32,720 ne da bi potrebovali le ogromen kos pomnilnik v računalniku nekje. 32 00:01:32,720 --> 00:01:35,910 In tako je to eden od glavnih Razlogi, zakaj smo uporabili seznam povezav. 33 00:01:35,910 --> 00:01:40,300 >> Drugič, je zelo enostaven za dinamično spremenite velikost seznama povezavo, ker v array, 34 00:01:40,300 --> 00:01:44,720 ko razglasi matriko, imaš neko določeno vrednost. 35 00:01:44,720 --> 00:01:47,340 Recimo, da sem želela ustvariti niz 10 števil. 36 00:01:47,340 --> 00:01:49,970 Sem ustvariti paleto 10 cela števila, in to je to. 37 00:01:49,970 --> 00:01:50,580 To je 10. 38 00:01:50,580 --> 00:01:52,038 Ne vem, kaj naj naredim po tem. 39 00:01:52,038 --> 00:01:53,680 Če bi želel, da postane 11, tega ne more storiti. 40 00:01:53,680 --> 00:01:55,710 Če želim, da postane 9, ne more storiti. 41 00:01:55,710 --> 00:01:59,910 >> Ker je na seznamu povezavo, lahko dodate in brišete in vstavite kjerkoli želite. 42 00:01:59,910 --> 00:02:04,940 Lahko dinamično spreminjanje velikosti strukturirati tukaj, svojo podatkovno strukturo. 43 00:02:04,940 --> 00:02:08,370 In to nam daje veliko več dodane prožnost 44 00:02:08,370 --> 00:02:11,320 da ne bomo tipično imajo z nizi. 45 00:02:11,320 --> 00:02:15,210 >> Kdo zmeden na osnovni Struktura kako seznam povezava 46 00:02:15,210 --> 00:02:17,930 ali zakaj moramo uporabiti eno nad array? 47 00:02:17,930 --> 00:02:20,330 Ja, bomo šli čez podrobneje kako dejansko ustvariti. 48 00:02:20,330 --> 00:02:24,121 Toda to je le nekako splošni občutek prav zdaj. 49 00:02:24,121 --> 00:02:24,620 Cool. 50 00:02:24,620 --> 00:02:28,770 In tako so nizi nanizani skupaj od teh ljubkih stvari 51 00:02:28,770 --> 00:02:29,960 imenovana vozlišča. 52 00:02:29,960 --> 00:02:32,210 Vse vozlišče se je vrsta struct. 53 00:02:32,210 --> 00:02:36,090 Ne pozabite, struct je, če si hotel ustvariti določeno vrsto spremenljivke 54 00:02:36,090 --> 00:02:39,850 v C, ki že ne obstajajo, ti, kot programer, 55 00:02:39,850 --> 00:02:42,030 lahko dejansko ustvari, da sami. 56 00:02:42,030 --> 00:02:46,540 >> In tako je ta vrsta podatkov struktura se imenuje vozlišče, 57 00:02:46,540 --> 00:02:50,770 je dejansko ustvaril nas, da ne obstaja v C sama. 58 00:02:50,770 --> 00:02:53,150 In pot, ki vas ustvariti ena imate 59 00:02:53,150 --> 00:02:57,170 glava typedef struct, ki pove prevajalniku Jaz sem 60 00:02:57,170 --> 00:02:59,640 o ustvariti struct. 61 00:02:59,640 --> 00:03:00,830 >> Bomo ime je "vozlišče". 62 00:03:00,830 --> 00:03:03,350 In notri gremo razglasiti spremenljivko, 63 00:03:03,350 --> 00:03:05,060 kar se dogaja za shranjevanje vrednosti. 64 00:03:05,060 --> 00:03:09,320 In potem smo tudi dogaja, da so kazalec imenuje "zraven" 65 00:03:09,320 --> 00:03:12,090 ki kaže na naslednji vozlišče v seznamu povezavo. 66 00:03:12,090 --> 00:03:14,730 In potem boste končali, da off s samo ponavljanje vozlišče spet tako 67 00:03:14,730 --> 00:03:17,490 prevajalnik ve, OK to je konec mojega struct. 68 00:03:17,490 --> 00:03:22,540 >> In tako na ta način, da smo nekako ustvarjanja srčkano niz 69 00:03:22,540 --> 00:03:25,450 vrsta stvari z vrednost in s kazalcem. 70 00:03:25,450 --> 00:03:27,757 In jih lahko povezali vse skupaj s temi kazalci. 71 00:03:27,757 --> 00:03:30,090 Tako da jih lahko vse vrste biti nanizani skupaj v verigi. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Cool. 74 00:03:34,162 --> 00:03:35,453 Slišiš, da malo bolje? 75 00:03:35,453 --> 00:03:36,140 >> OBČINSTVO: Ja. 76 00:03:36,140 --> 00:03:38,540 >> Profesor: V redu. 77 00:03:38,540 --> 00:03:44,280 Torej tako, kot lahko vi vidite, tipičen seznam povezava je strukturirana 78 00:03:44,280 --> 00:03:45,500 je imate glavo. 79 00:03:45,500 --> 00:03:49,460 Imate vrednost glave, ki je ni pri čemer je poudaril s katerim koli drugim kazalcem. 80 00:03:49,460 --> 00:03:53,177 Ampak to se dogaja, da opozarjajo na, ali referenčno, drugo vozlišče. 81 00:03:53,177 --> 00:03:56,510 Vozlišče, ko se bo za navajanje vozlišče po tem, in tako naprej in tako naprej 82 00:03:56,510 --> 00:03:59,170 dokler ne boste sčasoma hit konec vašega seznama povezavo. 83 00:03:59,170 --> 00:04:00,980 In si ne bo imela kazalec tam. 84 00:04:00,980 --> 00:04:04,659 >> In tako, mislim, kot so, na verigi, ali celo če kdo od vas fantje iz, ne vem, 85 00:04:04,659 --> 00:04:06,450 kot s sadjem Loops ko si bil majhen. 86 00:04:06,450 --> 00:04:08,590 Vi bi niz jih skupaj in jih nosite okoli vratu. 87 00:04:08,590 --> 00:04:09,840 Mislim, da je točno isto stvar. 88 00:04:09,840 --> 00:04:12,964 Imate te male stvari, ki jih lahko niz skupaj, ki kažejo na eni 89 00:04:12,964 --> 00:04:15,291 po tem, da je ena po to, in tako naprej in tako naprej 90 00:04:15,291 --> 00:04:17,040 dokler ne boste imeli verigo strukture podatkov 91 00:04:17,040 --> 00:04:21,190 ki jo lahko uporabite pa ti je všeč. 92 00:04:21,190 --> 00:04:27,370 >> Torej način, da to mi bi običajno vstavite ali izbrišete 93 00:04:27,370 --> 00:04:30,020 katerokoli vozlišče iz povezave Seznam je zelo različna 94 00:04:30,020 --> 00:04:31,970 odvisno od tega, kje je, da vozlišče. 95 00:04:31,970 --> 00:04:34,880 Tako, na primer, ker kazalci so vedno 96 00:04:34,880 --> 00:04:38,645 kaže na točno določeno vrednost, ko izbrišete ali vstavite vozlišče, 97 00:04:38,645 --> 00:04:41,770 želite zagotoviti, da kazalec se vse kaže na prave stvari. 98 00:04:41,770 --> 00:04:46,200 >> Torej, če boste želeli, da bi lahko vstavite nov vozlišče z vrednostjo ena 99 00:04:46,200 --> 00:04:48,379 znotraj urejenih povezave seznam, vsi vemo tukaj 100 00:04:48,379 --> 00:04:51,170 iz slike, ki se dogaja, da iti med glavo in dva, kajne? 101 00:04:51,170 --> 00:04:52,620 Ker je ena prilega prav tam. 102 00:04:52,620 --> 00:04:59,060 Toda način, na katerega bomo storili, da je s prvim Dereferenciranje kazalec 103 00:04:59,060 --> 00:05:02,160 od glave in pošiljanje, da enega. 104 00:05:02,160 --> 00:05:05,040 >> Vendar smo prišli v problem tukaj. 105 00:05:05,040 --> 00:05:08,280 Kdorkoli lahko videli, kaj je problem je, če smo bili na prvem dereference 106 00:05:08,280 --> 00:05:10,090 kazalec od glave do enega? 107 00:05:10,090 --> 00:05:14,202 Kakšne težave lahko naletimo, če bomo poskušali to dodati k pred našim niz? 108 00:05:14,202 --> 00:05:15,409 >> OBČINSTVO: [neslišno] 109 00:05:15,409 --> 00:05:16,200 Profesor: Točno tako. 110 00:05:16,200 --> 00:05:20,000 Torej, tukaj imamo kazalec, ki je bil enkrat obrnjena od glave do dve. 111 00:05:20,000 --> 00:05:23,120 Ampak, če boste znebili da kazalec, ga opozoriti na eno, 112 00:05:23,120 --> 00:05:26,500 zdaj nimam pojma kam iti, da bi našli dva. 113 00:05:26,500 --> 00:05:29,850 Saj, kot sem že prej povedal, da imaš velikan kos pomnilnika v vašem računalniku. 114 00:05:29,850 --> 00:05:31,860 Vsi ti vozlišča lahko naključno vrinjeni 115 00:05:31,860 --> 00:05:33,350 v vsakem mestu v vašem računalniku. 116 00:05:33,350 --> 00:05:36,140 In ne veš, kako iti o iskanju tega. 117 00:05:36,140 --> 00:05:40,420 >> In zato morate imeti kazalce kaže na vseh vozliščih konec. 118 00:05:40,420 --> 00:05:42,420 Ali pa, če vas slučajno dereference enem 119 00:05:42,420 --> 00:05:44,485 brez prvega prirejanja vrednost prvič, ste 120 00:05:44,485 --> 00:05:47,410 šele tekoč, da izgubijo Vse zatem. 121 00:05:47,410 --> 00:05:49,720 >> Torej, kaj bomo storiti, je, da bi najprej 122 00:05:49,720 --> 00:05:53,270 želite ustvariti kazalec vozlišče želite vstaviti. 123 00:05:53,270 --> 00:05:55,270 To točko, kjer ste želite vstaviti, da, 124 00:05:55,270 --> 00:05:59,410 in potem kasneje vam lahko kaže glavo nazaj za eno. 125 00:05:59,410 --> 00:06:02,800 >> Ali, da je smiselno, da se vsi tukaj? 126 00:06:02,800 --> 00:06:03,346 Great. 127 00:06:03,346 --> 00:06:04,720 Misli, da je tako kot verige. 128 00:06:04,720 --> 00:06:07,420 Če dodate verigo, to je nekako intuitivno 129 00:06:07,420 --> 00:06:10,742 kako boš šla o vstavljanju da. 130 00:06:10,742 --> 00:06:15,274 >> OK, tako da je dejansko precej krajši, kot sem mislil, da bo, 131 00:06:15,274 --> 00:06:16,690 pet minut spiel na seznamih povezavo. 132 00:06:16,690 --> 00:06:19,960 Samo, da vidva imela Osnovna ideja, kaj to je. 133 00:06:19,960 --> 00:06:23,580 >> Tu imamo načrt za kviz ničlo. 134 00:06:23,580 --> 00:06:24,895 Ne dovolite, da vas to ustrahovati. 135 00:06:24,895 --> 00:06:26,270 Vem, da je veliko informacij. 136 00:06:26,270 --> 00:06:27,580 To izgleda zelo strašljivo. 137 00:06:27,580 --> 00:06:33,130 Prav tako je veliko, sem mislim, CSC vrsta pogojev. 138 00:06:33,130 --> 00:06:37,440 Stvari, kot šestnajstiško strune, kazalci, dinamična spominske dodelitve 139 00:06:37,440 --> 00:06:40,120 so zelo scary pogoji zvenečimi. 140 00:06:40,120 --> 00:06:42,700 >> Ampak bomo jim odmor navzdol, naredite nekaj težav prakse 141 00:06:42,700 --> 00:06:44,980 tako da vidva vse so pripravljeni za ta test. 142 00:06:44,980 --> 00:06:47,104 Koliko od vas fantje imajo že začel študirati? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, vidva verjetno želeli začeti kako začeti 145 00:06:53,670 --> 00:06:56,480 o tem, ker je kviz jutri. 146 00:06:56,480 --> 00:06:58,739 Ali četrtek za nekatere od vas. 147 00:06:58,739 --> 00:07:01,030 Ja, zato smo šli čez nekaj problemov prakse. 148 00:07:01,030 --> 00:07:04,600 Če vi vsi želimo, da bi ven list papirja, svinčnik. 149 00:07:04,600 --> 00:07:07,310 Bomo samo preživeti Velika večina današnjega oddelka 150 00:07:07,310 --> 00:07:11,590 šel čez nekaj da, tako da fantje imajo ideja o tem, kaj lahko pričakujete na kvizu. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> V REDU. 153 00:07:16,890 --> 00:07:19,730 Nekaj ​​logistična podrobnosti, kot tudi, za koga 154 00:07:19,730 --> 00:07:25,120 ki ni bil, da ta povezava obstaja, če greš cs50.yale.edu, na sprednji strani 155 00:07:25,120 --> 00:07:28,566 ta stran obstaja povezava ki pravi: "O Kviz Zero." 156 00:07:28,566 --> 00:07:29,440 Povezava vas popelje tja. 157 00:07:29,440 --> 00:07:31,065 Če še niste prebrali, vas prosimo, da ga preberete. 158 00:07:31,065 --> 00:07:34,470 Saj vam pove, res pomembno informacije o kvizu. 159 00:07:34,470 --> 00:07:37,410 >> Bom to izvleči iz da samo zato, fizično, 160 00:07:37,410 --> 00:07:40,200 Če vi ne veste, kje iti, bomo imeli težave. 161 00:07:40,200 --> 00:07:44,220 In tako, če je vaša zadnja v zvezi z N, pojdite v šolo pravo dvorano za. 162 00:07:44,220 --> 00:07:47,500 In če je tvoje zadnje začne s P do Ž, pojdite na Davies avditoriju. 163 00:07:47,500 --> 00:07:50,240 In to velja le za ljudje v oddelku sredo. 164 00:07:50,240 --> 00:07:53,420 >> Če ste vzeli kviz o Četrtek, greš na SSS, 114 165 00:07:53,420 --> 00:07:55,078 če vaš predavanje je običajno. 166 00:07:55,078 --> 00:07:55,953 OBČINSTVO: [neslišno] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 Profesor: O do Ž, boste iti v Davies avditorij. 169 00:08:01,940 --> 00:08:03,273 Jaz bom za spremembo, kajne? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, ja, samo ne samodejno. 172 00:08:09,698 --> 00:08:11,753 >> Oh ja, da si je Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Ja, moja slaba. 175 00:08:16,030 --> 00:08:17,610 Ja, O do Ž, boste iti Davies Auditorim. 176 00:08:17,610 --> 00:08:19,140 Jaz bom popraviti to enkrat dodam. 177 00:08:19,140 --> 00:08:20,320 Ja. 178 00:08:20,320 --> 00:08:22,160 >> In potem je tudi nekaj treba upoštevati 179 00:08:22,160 --> 00:08:25,290 je, da je sreda, če ste uradno vpisanih v razdelku sredo, 180 00:08:25,290 --> 00:08:26,832 morate vzeti kviz v sredo. 181 00:08:26,832 --> 00:08:29,706 In če ste vpisani v četrtek, morate vzeti kviz četrtek. 182 00:08:29,706 --> 00:08:31,000 In to je v času razredu. 183 00:08:31,000 --> 00:08:35,970 Kje, mislim, da je kot 1:00 do 02:15 ob sredah in 2:30-3:45 184 00:08:35,970 --> 00:08:37,220 ob četrtkih. 185 00:08:37,220 --> 00:08:41,710 >> Če imate za nezdružljivo konfliktov, Izgovorov Dean so edina stvar, 186 00:08:41,710 --> 00:08:43,030 Na žalost, smo lahko. 187 00:08:43,030 --> 00:08:45,560 Ker smo imeli velika večina prošenj 188 00:08:45,560 --> 00:08:47,970 preklopiti od srede do četrtka. 189 00:08:47,970 --> 00:08:51,265 Ki je ne moremo spoštovati, razen če imamo prošnjo dekana je. 190 00:08:51,265 --> 00:08:52,650 >> V REDU. 191 00:08:52,650 --> 00:08:57,000 Torej, preden začnemo o Nekaj ​​težav prakse, 192 00:08:57,000 --> 00:09:00,540 Jaz sem samo šel čez Koristnih nasvetov Andy za uspeh. 193 00:09:00,540 --> 00:09:04,140 Vidva, ko si študirati, si res želite vaditi pisanje kode z roko. 194 00:09:04,140 --> 00:09:07,050 Prvič, da sem kdaj vzel CS kviz, nisem imel 195 00:09:07,050 --> 00:09:09,960 praksa pisanje kode z roko prej in je bilo izredno 196 00:09:09,960 --> 00:09:11,890 šokantno, kako težko je bilo. 197 00:09:11,890 --> 00:09:16,125 >> Ko se vidva ne uspelo uvrstiti v Navada tipkanje izvedeli vse, 198 00:09:16,125 --> 00:09:20,260 gre zelo naravno biti sposobni so za autocompleted 199 00:09:20,260 --> 00:09:22,015 nosilci in podpičja tam. 200 00:09:22,015 --> 00:09:23,890 Ko jo napisali z roko, včasih je 201 00:09:23,890 --> 00:09:27,100 Zelo, zelo preprosto pozabil podpičje, ali pozabite zapreti nosilec, 202 00:09:27,100 --> 00:09:30,970 ali pozabite zapreti debelo črevo, ali nekaj takega. 203 00:09:30,970 --> 00:09:34,322 >> Torej, ko pišete kodo na roko, to je zelo drugačen občutek. 204 00:09:34,322 --> 00:09:37,280 Torej vidva, ko delate skozi nekaj problemov prakse, 205 00:09:37,280 --> 00:09:38,904 bi bilo dobro, da bi v resnici praksa danes. 206 00:09:38,904 --> 00:09:41,770 Ali jutri, mislim, če ste ob kviz v četrtek. 207 00:09:41,770 --> 00:09:45,280 >> Drugič, imamo zadnja, podobno, Osem Letošnji vredno prakse 208 00:09:45,280 --> 00:09:47,070 kvizi na spletu. 209 00:09:47,070 --> 00:09:50,759 Letošnji kviz bo verjetno Zelo, zelo podobni za vse izmed njih. 210 00:09:50,759 --> 00:09:51,800 Oni so vsi zelo podobni. 211 00:09:51,800 --> 00:09:54,220 Ste nekako uspelo uvrstiti v slog na vrsto vprašanj 212 00:09:54,220 --> 00:09:57,250 da zahtevamo, tip funkcije, ki jo bomo napisali v, 213 00:09:57,250 --> 00:09:58,580 et cetera, et cetera. 214 00:09:58,580 --> 00:10:01,980 >> Torej, vzemite praksi kvizi, predvsem pod časovnim pritiskom. 215 00:10:01,980 --> 00:10:05,390 75 minut, da storijo kviz ni veliko časa. 216 00:10:05,390 --> 00:10:07,254 To je zelo, zelo dolgo. 217 00:10:07,254 --> 00:10:09,670 In tako vidva res želite se prepričajte, da sta vidva 218 00:10:09,670 --> 00:10:11,990 v navado pisanja kode z roko hitro. 219 00:10:11,990 --> 00:10:15,070 Ker si ne želite, da je prvi čas, da vidite kviz te dolžine 220 00:10:15,070 --> 00:10:16,560 na vaši kviz. 221 00:10:16,560 --> 00:10:20,540 Vi fantje res želite zagotoviti da ste predhodno vadite. 222 00:10:20,540 --> 00:10:24,550 >> Četrtič, hočeš preglejte predavanje in oddelek diapozitive. 223 00:10:24,550 --> 00:10:25,980 Nimate zapomniti stvari. 224 00:10:25,980 --> 00:10:30,430 Pravzaprav, vsi dovoljena en list belega papirja bankovcev, 225 00:10:30,430 --> 00:10:31,090 spredaj in zadaj. 226 00:10:31,090 --> 00:10:32,920 Vidva lahko vnesete ali pisati. 227 00:10:32,920 --> 00:10:37,070 Če se znajdete potrebujejo, da si zapomnimo karkoli, ga odložil na tem listu. 228 00:10:37,070 --> 00:10:40,810 >> Zagotavljam vam, da ne želite, da biti zaljubljen v sredini tega kviza 229 00:10:40,810 --> 00:10:43,890 biti všeč, oh ja, kaj je runtime te vrste v primerjavi te vrste. 230 00:10:43,890 --> 00:10:46,490 Daj ga dol in ga kopirajte naravnost iz vašega note stanja. 231 00:10:46,490 --> 00:10:50,420 Potem lahko dejansko šele raba vaš možgane, da razmišljajo o težavah 232 00:10:50,420 --> 00:10:52,190 namesto da bi se spomni dejstev. 233 00:10:52,190 --> 00:10:55,250 In tako resnično izkoristijo o vseh podrobnostih nišnih 234 00:10:55,250 --> 00:11:00,140 da mislite, da morate zapomniti, ga Pljuskanje navzdol na listu pregleda. 235 00:11:00,140 --> 00:11:02,680 >> OK, na vsa vprašanja logistično glede kviz 236 00:11:02,680 --> 00:11:05,510 preden začnemo nekaj Težave kviz vaditi? 237 00:11:05,510 --> 00:11:06,416 Ja? 238 00:11:06,416 --> 00:11:10,040 >> OBČINSTVO: Nisem imel priložnost pogled na kvizu [neslišno] 239 00:11:10,040 --> 00:11:11,757 vendar se bo Program večinoma, 240 00:11:11,757 --> 00:11:14,090 ali je tam tudi bo, podobno, vprašanja znanja? 241 00:11:14,090 --> 00:11:14,940 >> Profesor: To je veliko. 242 00:11:14,940 --> 00:11:16,731 Torej, tako da sem bi opisal kviz 243 00:11:16,731 --> 00:11:18,810 is-- sem dal skupaj nekateri problemi prakse 244 00:11:18,810 --> 00:11:20,960 da sem potegnil iz vseh kvizov. 245 00:11:20,960 --> 00:11:25,210 Vendar pa boste videli, da obstaja dva glavna Vrste vprašanj, vas bomo vprašali. 246 00:11:25,210 --> 00:11:28,750 >> Eden je detajl zelo nizka raven stvari. 247 00:11:28,750 --> 00:11:31,720 Mi vam bomo majhen kos kode in pravijo, obstaja napaka tukaj? 248 00:11:31,720 --> 00:11:33,110 Kaj bi se tiskanje tukaj? 249 00:11:33,110 --> 00:11:35,980 Kaj bo ta koda proizvodnjo, et cetera. 250 00:11:35,980 --> 00:11:38,710 Torej podrobnosti informacijske zelo nizki ravni. 251 00:11:38,710 --> 00:11:42,700 >> In na flip strani, bomo imeli zelo visoki ravni, ki temeljijo na znanju vprašanja. 252 00:11:42,700 --> 00:11:45,190 Ali lahko pojasnite, kaj je Razlika med binarnega iskanja 253 00:11:45,190 --> 00:11:46,148 in linearna iskanje je? 254 00:11:46,148 --> 00:11:48,500 Zakaj bi si želeli uporabiti eno nad drugo? 255 00:11:48,500 --> 00:11:49,960 Morda, kaj je GDB? 256 00:11:49,960 --> 00:11:51,560 Zakaj želimo uporabiti GDB? 257 00:11:51,560 --> 00:11:54,590 Višji ravni, bolj temeljna razumevanje vprašanj. 258 00:11:54,590 --> 00:11:58,240 Tako boste videli mešanico dva izmed njih na vašem kvizu. 259 00:11:58,240 --> 00:12:01,462 >> Karkoli drugega, preden smo naravnost vanjo? 260 00:12:01,462 --> 00:12:02,879 V REDU. 261 00:12:02,879 --> 00:12:03,670 OBČINSTVO: Ena bolj. 262 00:12:03,670 --> 00:12:04,030 Profesor: Oh, še eno. 263 00:12:04,030 --> 00:12:04,340 Žal mi je. 264 00:12:04,340 --> 00:12:05,631 >> OBČINSTVO: Ja, vse je v redu. 265 00:12:05,631 --> 00:12:10,140 Torej pravite, v 75. minuti je prekratka, kot je malo verjetno 266 00:12:10,140 --> 00:12:11,640 da bomo končali? 267 00:12:11,640 --> 00:12:13,571 Ali, kot, 75 minut je natanko toliko časa 268 00:12:13,571 --> 00:12:15,700 kot bi morali, če smo bili ustrezno pripravljen? 269 00:12:15,700 --> 00:12:17,450 Profesor: OK, tako da je Kviz je zahtevna. 270 00:12:17,450 --> 00:12:19,550 To je vsekakor velik izziv. 271 00:12:19,550 --> 00:12:21,092 Boste znajdete v stiski s časom. 272 00:12:21,092 --> 00:12:24,341 Ste verjetno, da bo udaril, kot so 10, 15 minut, da gredo, in je podobno, drek. 273 00:12:24,341 --> 00:12:25,520 Imam toliko levo storiti. 274 00:12:25,520 --> 00:12:26,520 In to je povsem v redu. 275 00:12:26,520 --> 00:12:28,740 Vsakdo se dogaja, da čutijo enako. 276 00:12:28,740 --> 00:12:31,074 >> Samo se zelo dobro zaveda koliko časa imate. 277 00:12:31,074 --> 00:12:33,490 In da je, zakaj sem ti povedati fantje prakso kvizi. 278 00:12:33,490 --> 00:12:36,672 Ker je res daje velik občutek česa kviz se bo podobno. 279 00:12:36,672 --> 00:12:39,130 Torej, če se znajdete pri čemer lahko končal prakso 280 00:12:39,130 --> 00:12:41,671 kvizi v dobro znesek Tokrat si lahko tempo dobro, 281 00:12:41,671 --> 00:12:45,695 potem ne boste imeli težav v sredo ali četrtek. 282 00:12:45,695 --> 00:12:46,575 >> Cool. 283 00:12:46,575 --> 00:12:49,200 Torej, če vse wants-- mislim večina ljudi ima listov papirja 284 00:12:49,200 --> 00:12:49,810 že ven. 285 00:12:49,810 --> 00:12:52,604 Jaz bom v bistvu samo vam vzorec vprašanja, 286 00:12:52,604 --> 00:12:54,520 vam fantje, kot so, a nekaj minut, da jih ne. 287 00:12:54,520 --> 00:12:59,610 In bomo šli čez kot razred kaj odgovori na njih. 288 00:12:59,610 --> 00:13:02,860 >> Torej, to je zelo tipičen zgodaj vprašanje bomo 289 00:13:02,860 --> 00:13:06,720 vas prosim, samo pretvorbo številke med različnimi bazami. 290 00:13:06,720 --> 00:13:09,070 Binarni, kot vidva lahko odpoklic, je osnova dva. 291 00:13:09,070 --> 00:13:12,470 Decimalno je osnova 10, ali pa tisto, kar smo kot ljudje interpretirajo. 292 00:13:12,470 --> 00:13:17,120 Hexadecimal je baza 16, ki je nič skozi devet kot tudi do F. 293 00:13:17,120 --> 00:13:19,990 >> Torej je štiri številke Jaz sem vas prosi fantje tukaj pretvoriti. 294 00:13:19,990 --> 00:13:23,909 Dam vam je všeč, tri do štiri minute, da mislijo s tem, kako 295 00:13:23,909 --> 00:13:25,200 bomo lotili reševanja tega. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> OBČINSTVO: Ali smo dovolili računala? 298 00:13:35,710 --> 00:13:37,630 >> Profesor: Ne, ne bo Potrebujete kalkulatorje, ja. 299 00:13:37,630 --> 00:13:42,420 Mislim, da osnovni dodatek, mislim, da je vsi fantje bodo morali storiti. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> In ravno zato sem nekako imajo občutek kdaj se vsakdo storiti, poglej gor, 302 00:14:45,070 --> 00:14:47,429 val, ne vem, nasmeh, videti srečni, če ste končali. 303 00:14:47,429 --> 00:14:47,929 Ja. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Mogoče nekaj več minut. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, dajmo ga prinašajo. 308 00:18:29,600 --> 00:18:31,580 Sem namenoma bo vam fantje manj časa 309 00:18:31,580 --> 00:18:33,760 kot ste verjetno morali naredite nekaj od teh težav, 310 00:18:33,760 --> 00:18:37,124 preprosto zato, ker želim, da poskrbite, da pridemo skozi kup težav. 311 00:18:37,124 --> 00:18:39,290 Torej brez skrbi, če niste imajo priložnost, da konča. 312 00:18:39,290 --> 00:18:43,770 Popolnoma v redu, dokler imate idejo, kako iti o tem. 313 00:18:43,770 --> 00:18:45,850 Torej, gremo naprej in narediti prvi. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Torej, najprej, ali ima kdo rad, da mi poveš v binarno, kaj vsaka od teh številk 316 00:18:57,870 --> 00:19:00,484 zastopanje v smislu njihovih vrednot? 317 00:19:00,484 --> 00:19:01,250 Ja? 318 00:19:01,250 --> 00:19:03,349 >> OBČINSTVO: Dva do moč nič, dva enem. 319 00:19:03,349 --> 00:19:04,140 Profesor: Točno tako. 320 00:19:04,140 --> 00:19:04,640 So. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Desno, tako da običajno ko smo v bazo 10 323 00:19:16,430 --> 00:19:20,580 Vsi ti dejavniki so, kot so, 10 do baze nič, prav? 324 00:19:20,580 --> 00:19:21,810 To je vaš one v mesto. 325 00:19:21,810 --> 00:19:24,520 Vse vaše 10 ali je mesto je 10 z močjo enega. 326 00:19:24,520 --> 00:19:26,600 Vi 100 je mesto 10 z močjo dveh. 327 00:19:26,600 --> 00:19:29,570 >> Karkoli baza ste v se dogaja storiti s točno isto stvar, 328 00:19:29,570 --> 00:19:31,480 Samo z drugačnim bazo. 329 00:19:31,480 --> 00:19:34,130 Torej binarni, vse, kar je, je osnova dva. 330 00:19:34,130 --> 00:19:37,110 Greš pretvoriti vse številke v dveh da ne glede na moč 331 00:19:37,110 --> 00:19:38,190 te cifro. 332 00:19:38,190 --> 00:19:41,450 In tako v tem smislu smo lahko lažji način 333 00:19:41,450 --> 00:19:43,800 , da lahko dodate gor ali sešteje vse številke, da bi 334 00:19:43,800 --> 00:19:46,010 pretvoriti v bazo 10. 335 00:19:46,010 --> 00:19:50,362 >> Torej, ali ima kdo rad, da mi poveš, kaj je Odgovor na prvo je v osnovi desetih? 336 00:19:50,362 --> 00:19:51,674 >> OBČINSTVO: Dva, [neslišno] 337 00:19:51,674 --> 00:19:52,340 Profesor: Ja. 338 00:19:52,340 --> 00:19:53,230 OBČINSTVO: 42. 339 00:19:53,230 --> 00:19:56,560 Profesor: 42, tam greš. 340 00:19:56,560 --> 00:20:00,660 Torej, kako smo dobili ta odgovor je bil s delaš dve mesti pa prvo, kar je za dva. 341 00:20:00,660 --> 00:20:02,760 Plus dva, tretji, ki je osem. 342 00:20:02,760 --> 00:20:07,590 Plus dva do peta, ki je vse, kar je ostala. 343 00:20:07,590 --> 00:20:09,390 Vi povzamem jih gor in je 42. 344 00:20:09,390 --> 00:20:12,000 >> Je kdo zmedeni o tem, kako smo dobili to? 345 00:20:12,000 --> 00:20:15,630 Torej osnovni dodatek, kot Rekel sem, da bi morali biti v redu. 346 00:20:15,630 --> 00:20:17,410 Če ne, pa bomo lahko vadite, da je preveč. 347 00:20:17,410 --> 00:20:18,720 Ampak to je vse v redu. 348 00:20:18,720 --> 00:20:20,560 Cool. 349 00:20:20,560 --> 00:20:25,570 >> Ali kdo želel, da mi odgovoriti na drugi pa tudi? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Dobro. 352 00:20:27,600 --> 00:20:30,044 Vsakdo zmedeni o tem, kako imamo, da bodisi? 353 00:20:30,044 --> 00:20:31,960 Cool, bom imela odgovori na naslednji diapozitiv. 354 00:20:31,960 --> 00:20:34,440 Torej brez skrbi, če vas Potrebujemo jo prepišite. 355 00:20:34,440 --> 00:20:38,860 >> OK, tako šestnajstiški je malo težje. 356 00:20:38,860 --> 00:20:41,840 ampak bom, da vam pokažem fantje bližnjica za kako to storiti. 357 00:20:41,840 --> 00:20:44,800 Torej šestnajstiški, saj vas zapomni si, vse, kar je bilo 16. 358 00:20:44,800 --> 00:20:48,920 In ker smo kot ljudje dejansko ne ima 16 številk predstavljajo, da 359 00:20:48,920 --> 00:20:56,940 gremo od nič do devet, ki je naša prva 10 vrednosti, nato pa delamo od A do F, 360 00:20:56,940 --> 00:20:58,630 ki so v naslednjih šestih vrednosti. 361 00:20:58,630 --> 00:21:03,040 >> In tako je najlažji način, da gredo iz vsaka binarna številka šestnajstiško 362 00:21:03,040 --> 00:21:05,350 je, da jih razbiti na polovice. 363 00:21:05,350 --> 00:21:10,042 In zato bo vsaka binarno število bova dala boste verjetno morali osem številk. 364 00:21:10,042 --> 00:21:11,750 Lahko samo odmor jih v sredini. 365 00:21:11,750 --> 00:21:17,460 >> Torej prva one-- eden on, eden on, on, on, ena ena. 366 00:21:17,460 --> 00:21:21,340 Nekako ga izmisliti, saj veš, pripravi poševnica ali vejico med njimi. 367 00:21:21,340 --> 00:21:23,800 In lahko samo pretvoriti neposredno karkoli 368 00:21:23,800 --> 00:21:26,670 To je prvi Število šestnajstiško, 369 00:21:26,670 --> 00:21:29,880 in karkoli tukaj je, da drugi v šestnajstiškem. 370 00:21:29,880 --> 00:21:37,584 >> Torej, ne pozabite, od skupnega zapis, Kaj šestnajstiške vrednosti začeti s? 371 00:21:37,584 --> 00:21:38,460 >> OBČINSTVO: Zero. 372 00:21:38,460 --> 00:21:39,270 >> Profesor: 0X. 373 00:21:39,270 --> 00:21:45,210 Torej vemo, da vsak, ko smo vas za pretvorbo kakršno koli številko šestnajstiški, 374 00:21:45,210 --> 00:21:48,230 ali kadarkoli vidite koli Številka, ki se začne z 0x, 375 00:21:48,230 --> 00:21:50,230 veste, da je vrednost šestnajstiško. 376 00:21:50,230 --> 00:21:54,160 >> In potem boste morali ugotoviti, kaj ti dve številki sta. 377 00:21:54,160 --> 00:21:59,690 In tako, kot si to naredil, preštevanje glasov up da je polovica in popisovanju up to polovico. 378 00:21:59,690 --> 00:22:02,870 Torej v tem primeru, kar bi on, on, on, eden biti? 379 00:22:02,870 --> 00:22:04,890 Kakšno vrednost bi to bilo? 380 00:22:04,890 --> 00:22:06,040 To bi bilo F, kajne? 381 00:22:06,040 --> 00:22:08,050 To bi bilo 15. 382 00:22:08,050 --> 00:22:11,780 >> Torej bi bilo to F. One, ena, ena, ena je tu tudi 383 00:22:11,780 --> 00:22:21,270 F. Torej on, on, on, on, on, on, on, ena v šestnajstiški, vse to se je 0XFF. 384 00:22:21,270 --> 00:22:25,350 Ker je ta polovica zastopa F vrednost 15, 385 00:22:25,350 --> 00:22:27,331 in to pol zastopa F vrednost 15. 386 00:22:27,331 --> 00:22:29,456 Saj se spomnite, smo šteto od nič do devet. 387 00:22:29,456 --> 00:22:35,290 A je kot 10, B je kot 11, F 15. 388 00:22:35,290 --> 00:22:41,690 >> Ali, da je smiselno, da se vsem, kako smo dobili od binarno do šestnajstiškem? 389 00:22:41,690 --> 00:22:44,595 >> OBČINSTVO: In tako kako smo dobili 15 Iz enega, enega, enega, eden? 390 00:22:44,595 --> 00:22:46,220 Profesor: Ja, to je binarna, kajne? 391 00:22:46,220 --> 00:22:48,090 Predstavljajte si, da je to samo binarno število. 392 00:22:48,090 --> 00:22:50,792 Torej imate dva do Ničti, ki je eden. 393 00:22:50,792 --> 00:22:51,500 OBČINSTVO: Oh, v redu. 394 00:22:51,500 --> 00:22:51,670 Torej si ga skupaj ven. 395 00:22:51,670 --> 00:22:52,670 >> Profesor: Ja, in potem si skupaj, da ven. 396 00:22:52,670 --> 00:22:53,380 To je vse, kar je. 397 00:22:53,380 --> 00:22:54,890 >> OBČINSTVO: OK. 398 00:22:54,890 --> 00:22:55,830 >> Profesor: OK. 399 00:22:55,830 --> 00:23:00,740 >> OBČINSTVO: Torej greš iz binarne da decimalni šestnajstiški? 400 00:23:00,740 --> 00:23:04,590 >> Profesor: To je Najlažji način, da to storijo, ja. 401 00:23:04,590 --> 00:23:11,390 Ne boš decimalno ker decimalno ima samo nič do devet. 402 00:23:11,390 --> 00:23:13,410 Mi smo le nekako to razdeliti na dva dela. 403 00:23:13,410 --> 00:23:15,201 >> OBČINSTVO: [neslišno] uporabo decimalko najti 404 00:23:15,201 --> 00:23:17,809 kar se ujema največ v šestnajstiški. 405 00:23:17,809 --> 00:23:20,100 Profesor: Mislim, da ste rovašenja z uporabo osnovne matematike. 406 00:23:20,100 --> 00:23:20,725 OBČINSTVO: Ja. 407 00:23:20,725 --> 00:23:22,300 Profesor: Ja, precej. 408 00:23:22,300 --> 00:23:23,630 To je malo zmedeno. 409 00:23:23,630 --> 00:23:26,410 Ampak samo vem, da vas lahko razdelimo glede na 410 00:23:26,410 --> 00:23:28,160 Ta vrednost je v le polovici. 411 00:23:28,160 --> 00:23:29,570 Poglejte, kaj je to v binarno? 412 00:23:29,570 --> 00:23:30,610 Koliko je to? 413 00:23:30,610 --> 00:23:33,270 To se dogaja, da Nekaj ​​od nič do F. 414 00:23:33,270 --> 00:23:35,722 >> Tu je tudi bo Nekaj ​​od nič do F. 415 00:23:35,722 --> 00:23:37,722 In potem si lahko samo dal ti dve tam. 416 00:23:37,722 --> 00:23:38,263 >> OBČINSTVO: OK. 417 00:23:38,263 --> 00:23:38,910 Profesor: Ja. 418 00:23:38,910 --> 00:23:39,410 V REDU. 419 00:23:39,410 --> 00:23:42,320 Torej si fantje želijo, da poskusite z naslednjo enega potem? 420 00:23:42,320 --> 00:23:49,601 Nič, ena, nič ena, ena, nič, ena nič. 421 00:23:49,601 --> 00:23:52,350 Dam ti fantje kot 30 sekund, saj vam verjetno ni vedel, 422 00:23:52,350 --> 00:23:53,850 trik, kako to storiti že prej. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, kdo želel, da bi dobili tale strel? 425 00:24:27,381 --> 00:24:28,774 >> 0X5A. 426 00:24:28,774 --> 00:24:29,440 Profesor: 0X5A. 427 00:24:29,440 --> 00:24:30,470 5a. 428 00:24:30,470 --> 00:24:31,340 Dobro. 429 00:24:31,340 --> 00:24:37,050 Torej bi to tukaj be-- želite da bi nam povedali, kako si dobil to? 430 00:24:37,050 --> 00:24:38,920 Najprej, kako ste prišli pet? 431 00:24:38,920 --> 00:24:42,030 >> OBČINSTVO: Ker nič, ena, nič, ena je pet. 432 00:24:42,030 --> 00:24:45,170 >> PROFESOR: Ali vsi razumeli Zato nič, ena, nič, ena je pet? 433 00:24:45,170 --> 00:24:46,260 Imaš tukaj. 434 00:24:46,260 --> 00:24:48,010 Imate nič v dveh do prvega. 435 00:24:48,010 --> 00:24:50,300 V dveh do drugega, vas imamo eno, ki je štiri. 436 00:24:50,300 --> 00:24:52,600 Torej ste dodali štiri plus tisti, ki jih imajo pet. 437 00:24:52,600 --> 00:24:53,600 Vsakdo dobro? 438 00:24:53,600 --> 00:24:54,100 V REDU. 439 00:24:54,100 --> 00:24:56,570 In potem, kaj je to bilo in zakaj? 440 00:24:56,570 --> 00:24:58,350 Katero številko Ali ustrezajo? 441 00:24:58,350 --> 00:24:59,350 >> OBČINSTVO: 10. 442 00:24:59,350 --> 00:25:00,976 >> Profesor: In kaj je to v osnovi dveh? 443 00:25:00,976 --> 00:25:01,850 OBČINSTVO: [neslišno] 444 00:25:01,850 --> 00:25:03,010 Profesor: Točno tako. 445 00:25:03,010 --> 00:25:06,370 Tako da bi ta druga vrednost tukaj biti 0X5A. 446 00:25:06,370 --> 00:25:08,410 >> Vsakdo dobro o tem, kako spremeniti? 447 00:25:08,410 --> 00:25:10,770 To je veliko lažje, kot si mislite, da je. 448 00:25:10,770 --> 00:25:13,330 Rad bi samo, da se prepričajte, veš koristne nasvete 449 00:25:13,330 --> 00:25:14,950 in triki za kako to storiti. 450 00:25:14,950 --> 00:25:18,432 >> OBČINSTVO: Zakaj lahko samo po delih je v sredini, kot je ta? 451 00:25:18,432 --> 00:25:21,390 Samo všeč, OK, grem samo na mar ti prva [neslišno]? 452 00:25:21,390 --> 00:25:24,240 >> Profesor: Ker to je dejansko Tako so zastopani šestnajstiške vrednosti. 453 00:25:24,240 --> 00:25:26,890 0X, ki dejansko pomeni nič drugega kot ti 454 00:25:26,890 --> 00:25:28,710 da je šestnajstiško število. 455 00:25:28,710 --> 00:25:31,580 In to vedno predstavlja prve štiri številke. 456 00:25:31,580 --> 00:25:34,330 In to vedno predstavlja zadnje štiri številke. 457 00:25:34,330 --> 00:25:37,835 In tako sta ti dve številki samo ustrezajo različnim bitov. 458 00:25:37,835 --> 00:25:39,200 >> OBČINSTVO: Torej bomo always-- 459 00:25:39,200 --> 00:25:41,830 >> Profesor: Vedno si bo dobil osem bitov vrednosti. 460 00:25:41,830 --> 00:25:44,580 >> OBČINSTVO: Je to tako kot stvar tukaj ali pa da stvar vsem? 461 00:25:44,580 --> 00:25:46,883 Profesor: To je samo stvar v računalnikih, ja. 462 00:25:46,883 --> 00:25:47,424 OBČINSTVO: OK. 463 00:25:47,424 --> 00:25:48,240 Awesome. 464 00:25:48,240 --> 00:25:51,290 >> Profesor: Prav tako v tem primeru smo se pretvori iz binarno decimalno, 465 00:25:51,290 --> 00:25:53,290 in od binarne za šestnajstiški. 466 00:25:53,290 --> 00:25:56,610 Vi želite, da poskrbite, da boste tudi praksi dogaja obratno. 467 00:25:56,610 --> 00:26:03,370 Torej, če sem ti dal 0XFF, lahko pripraviti, da v binarno, kajne? 468 00:26:03,370 --> 00:26:06,820 >> Pretvorite F v binarno, ki je ena, ena, ena, ena, 469 00:26:06,820 --> 00:26:09,380 pretvorbo F do binarno, ki je ena, ena, ena, ena. 470 00:26:09,380 --> 00:26:11,310 >> Tako bomo lahko zahteva, da stori obratno. 471 00:26:11,310 --> 00:26:14,817 Torej decimalno za dvokomponentne ali hexadecimal za binarno. 472 00:26:14,817 --> 00:26:16,650 Tako da boste želeli, da bi prepričani, da veste, v obe smeri. 473 00:26:16,650 --> 00:26:19,371 Vam bo verjetno vprašati kombinacija obeh. 474 00:26:19,371 --> 00:26:20,660 >> Ja, imate vprašanje? 475 00:26:20,660 --> 00:26:22,724 Lahko see-- ste dobri? 476 00:26:22,724 --> 00:26:23,348 OBČINSTVO: Ja. 477 00:26:23,348 --> 00:26:24,560 Profesor: OK. 478 00:26:24,560 --> 00:26:26,101 Sem dober izbrisati to? 479 00:26:26,101 --> 00:26:26,600 Great. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Vse je v redu, tako da odgovori so tu, če kdo je radoveden kasneje in zmeden. 482 00:26:40,437 --> 00:26:41,844 V REDU. 483 00:26:41,844 --> 00:26:46,070 >> OBČINSTVO: Ali je pomembno, če želimo postaviti naše črke v Kapitol ali male? 484 00:26:46,070 --> 00:26:50,360 >> Profesor: To počne, ker v šestnajstiški po dogovoru 485 00:26:50,360 --> 00:26:52,840 vsi liki so velike. 486 00:26:52,840 --> 00:26:54,650 Torej A do F, so bo z velikimi črkami. 487 00:26:54,650 --> 00:26:58,660 Če si dal malo začetnico a, ne vem če bi mi nujno označiti narobe. 488 00:26:58,660 --> 00:27:00,679 Ampak teoretično, da ni tehnično 489 00:27:00,679 --> 00:27:01,970 kako si naj bi ga imeli. 490 00:27:01,970 --> 00:27:03,303 Tako da bi morali biti z velikimi črkami. 491 00:27:03,303 --> 00:27:05,910 Ja, dobro vprašanje. 492 00:27:05,910 --> 00:27:07,780 >> V REDU. 493 00:27:07,780 --> 00:27:08,790 Drugo vprašanje. 494 00:27:08,790 --> 00:27:12,750 Razmislite to lepo programa tukaj. 495 00:27:12,750 --> 00:27:15,180 Bom vprašati, Vrnil se bom to. 496 00:27:15,180 --> 00:27:23,170 >> Torej, najprej, kaj je notri standarda io.h, da je v interesu programa? 497 00:27:23,170 --> 00:27:26,640 Drugič, kaj nična označi v skladu treh? 498 00:27:26,640 --> 00:27:30,572 In tretje, kaj se vračajo nič od Glavno, kot vrstnim šestvaljnikom, na splošno pomenijo? 499 00:27:30,572 --> 00:27:33,280 Če hočete, da napišete tiste, navzdol, saj sem moral preklopiti nazaj 500 00:27:33,280 --> 00:27:36,810 na diapozitiv samo zato, da si lahko ogledate kodo. 501 00:27:36,810 --> 00:27:40,400 To je primer, kot je, morda višja vprašanje nivo, kjer smo vas 502 00:27:40,400 --> 00:27:42,435 kaj stvari pomenijo v programu. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Vsakdo dobro zame, da pojdite nazaj na slide? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 OK kul. 507 00:27:54,361 --> 00:27:57,610 Torej, jaz ti bom dal fantje, kot morda tri minut, da pogled na to eno resnično hitro. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, tako da to je kot dokaj enostaven, konceptualno. 510 00:28:44,140 --> 00:28:49,280 Ali kdo želel, da mi pove, kaj je najprej v notranjosti s hash vključno 511 00:28:49,280 --> 00:28:52,630 naš standard io.h knjižnica datoteka? 512 00:28:52,630 --> 00:28:55,510 Zakaj moramo to knjižnico vključeni v ta program? 513 00:28:55,510 --> 00:28:56,930 Kaj tukaj ne bomo potrebovali za? 514 00:28:56,930 --> 00:28:56,980 >> Ja? 515 00:28:56,980 --> 00:28:58,340 >> OBČINSTVO: Je to, ko si dal to printf? 516 00:28:58,340 --> 00:28:59,131 >> Profesor: Točno tako. 517 00:28:59,131 --> 00:29:01,780 Torej printf, kadarkoli vam sprejme vnosa od uporabnika 518 00:29:01,780 --> 00:29:04,140 in tiskanje nekaj na zaslon, ki je 519 00:29:04,140 --> 00:29:05,600 standard input, output knjižnica. 520 00:29:05,600 --> 00:29:07,170 Pomislite na to, da way-- vhod, izhod. 521 00:29:07,170 --> 00:29:08,430 >> Ali imam izhod? 522 00:29:08,430 --> 00:29:09,207 Da. 523 00:29:09,207 --> 00:29:12,040 Zato vem, da bom vedno dogaja, da Potrebujemo knjižnico standardizirati i.o. 524 00:29:12,040 --> 00:29:16,400 >> Torej printf je funkcija s katero moramo dostop 525 00:29:16,400 --> 00:29:19,370 in hashtag vključujejo standardna i.o knjižnica. 526 00:29:19,370 --> 00:29:20,280 V REDU. 527 00:29:20,280 --> 00:29:22,660 >> Drugič, kaj nična pomenilo? 528 00:29:22,660 --> 00:29:26,970 Imamo int main (praznino), kaj izničijo tukaj pomeni tu na liniji tri? 529 00:29:26,970 --> 00:29:28,080 Ja, v hrbtu. 530 00:29:28,080 --> 00:29:29,020 >> OBČINSTVO: [neslišno] 531 00:29:29,020 --> 00:29:29,920 >> Profesor: Točno tako. 532 00:29:29,920 --> 00:29:33,320 Torej, ne pozabite, da smo se naučili začenši z našo pset 533 00:29:33,320 --> 00:29:35,360 da lahko dejansko določite ukazno vrstico 534 00:29:35,360 --> 00:29:39,010 Trditve, da je vaš program, da vas Glavna funkcija, je kot vi, uporabnik, 535 00:29:39,010 --> 00:29:39,650 ga pokličete. 536 00:29:39,650 --> 00:29:42,650 Če imamo nična, kar pomeni, da vas lahko samo zaženete program neposredno 537 00:29:42,650 --> 00:29:44,680 brez kakršnih koli argumentov ukazne vrstice. 538 00:29:44,680 --> 00:29:46,160 Vsakdo jasno, da je? 539 00:29:46,160 --> 00:29:46,660 V REDU. 540 00:29:46,660 --> 00:29:52,850 >> In nenazadnje, zakaj smo se sploh počne ta donos nič stvar tukaj? 541 00:29:52,850 --> 00:29:54,740 Zakaj sploh imajo int glavni? 542 00:29:54,740 --> 00:29:57,330 Zakaj ne moremo imeti le void main praznino? 543 00:29:57,330 --> 00:29:59,216 Ja? 544 00:29:59,216 --> 00:30:01,590 OBČINSTVO: Samo tako, da bomo lahko se prepričajte, da je program 545 00:30:01,590 --> 00:30:04,247 Uspešno izhodu, kakor nasprotuje če je oštevilčena. 546 00:30:04,247 --> 00:30:06,580 In bi vedeli, da je to drugačne vrste napak. 547 00:30:06,580 --> 00:30:07,621 >> Profesor: Ja, točno. 548 00:30:07,621 --> 00:30:10,670 To je samo zelo običajna stvar, ki jo počnemo, 549 00:30:10,670 --> 00:30:13,840 je, da šele na koncu vaš program, samo se prepričajte, 550 00:30:13,840 --> 00:30:15,830 da je vaše glavno funkcijo deluje pravilno, 551 00:30:15,830 --> 00:30:17,940 smo vedno želeli narediti donosnost nič. 552 00:30:17,940 --> 00:30:21,160 Čeprav smo lahko nujno Ne vidim, da je natisnjena kjerkoli. 553 00:30:21,160 --> 00:30:25,092 >> Saj, kot programerji, saj veš, če imate veliko različnih vrstic kode 554 00:30:25,092 --> 00:30:27,050 in ne veste, kje ti gredo narobe, 555 00:30:27,050 --> 00:30:30,240 in če se napaka zgodi želite poskrbite, da boste dobili to napako. 556 00:30:30,240 --> 00:30:33,240 In tako običajno, če gre kaj narobe, bomo imeli vrnitve enega pravkar 557 00:30:33,240 --> 00:30:34,669 se prepričajte, vemo, da je. 558 00:30:34,669 --> 00:30:36,460 Torej, če ste videli vrnitev zero, ki se običajno 559 00:30:36,460 --> 00:30:38,293 pomeni vaš program uspešno izvršen. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Dobra? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Cool. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, drugi program tukaj. 566 00:30:52,680 --> 00:30:54,827 Razmislite o tem. 567 00:30:54,827 --> 00:30:56,910 In če vi videli float, lahko vidva 568 00:30:56,910 --> 00:31:00,810 imajo dobro idejo, kaj Jaz sem na tem, da vas vprašam. 569 00:31:00,810 --> 00:31:05,200 >> Torej, ko se ta program izvaja, kot lahko vidite, 570 00:31:05,200 --> 00:31:09,330 Jaz sem razglasitvi plovec v mojem glavno funkcijo. 571 00:31:09,330 --> 00:31:13,470 Jaz sem poimenovanje je "odgovorili" in sem določanje ki je enaka enemu deljeno z 10. 572 00:31:13,470 --> 00:31:17,860 Jaz tiskanje, za eno decimalno mesto, da float. 573 00:31:17,860 --> 00:31:19,880 In potem sem se vračajo nič. 574 00:31:19,880 --> 00:31:24,470 >> Torej pri izvajanju programa, pomislite na pohlepni zdaj, 575 00:31:24,470 --> 00:31:26,550 ta program natisne 0.0. 576 00:31:26,550 --> 00:31:29,993 Kot vsi vemo, upajmo, da smo vsi vedeti, ena deljeno z 10 ni 0,00, 577 00:31:29,993 --> 00:31:32,350 to je 0,1. 578 00:31:32,350 --> 00:31:37,810 Ampak razloži, zakaj ta program misli da je 1 deljeno z 10 izpisov za 0,1 drugo 579 00:31:37,810 --> 00:31:39,504 od 0,1? 580 00:31:39,504 --> 00:31:42,545 Jaz vama bom morda kot 30 sekund, da le hitro razmišljati o tem, da je 581 00:31:42,545 --> 00:31:43,878 in bom šel nazaj k programu. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> V REDU. 584 00:32:20,290 --> 00:32:22,205 Kdorkoli želite, da ga je ustrelil? 585 00:32:22,205 --> 00:32:24,330 V treh stavkih ali manj, ker ponavadi smo 586 00:32:24,330 --> 00:32:27,650 dogaja, da omejite vse odgovore do treh stavkih ali manj 587 00:32:27,650 --> 00:32:31,130 tako da ne boste samo Izprazniti naključne stvari na vaš kvizu. 588 00:32:31,130 --> 00:32:32,740 >> Ja, vzemi strel. 589 00:32:32,740 --> 00:32:36,390 >> OBČINSTVO: Torej, jaz mislim, da je to stvar, ki se imenuje, kot so, [neslišno] 590 00:32:36,390 --> 00:32:42,320 Torej bi bilo treba, na primer, lahko pride, kot so, 0.09, 591 00:32:42,320 --> 00:32:47,250 da če tiskate prvi mestna, bi bilo za 0,0? 592 00:32:47,250 --> 00:32:49,100 >> Profesor: Close, ne povsem. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> OBČINSTVO: si delimo eno in 10, in oni oba cela. 595 00:32:51,770 --> 00:32:54,610 In zato je tako, da se dogaja za shranjevanje je kot celo število. 596 00:32:54,610 --> 00:32:56,480 In tako bi najbližje celo število, bo 0.0. 597 00:32:56,480 --> 00:32:57,471 In tako, da je 0,1. 598 00:32:57,471 --> 00:32:58,970 Profesor: Ja, to je res dober. 599 00:32:58,970 --> 00:33:00,040 To je pravi odgovor. 600 00:33:00,040 --> 00:33:03,597 Torej je to zelo zmedeno koncept za veliko otrok. 601 00:33:03,597 --> 00:33:06,680 In jaz res želite, da se prepričajte, da to je okrepiti vsakogar glavo. 602 00:33:06,680 --> 00:33:10,090 >> Torej tisto, čemur pravimo plavajoče točka nenatančnost, 603 00:33:10,090 --> 00:33:12,800 kjer je razlog, zakaj veliko vaših programov v požrešni 604 00:33:12,800 --> 00:33:17,010 ni delovalo na začetku je bil, ker si pozabil, da odda svoj spremenljivko. 605 00:33:17,010 --> 00:33:19,370 Torej, kaj je rekel Christabell je bila povsem pravilna. 606 00:33:19,370 --> 00:33:21,990 >> Plovec je inherentno nenatančen. 607 00:33:21,990 --> 00:33:26,400 Ker v računalniku, desno, imamo končna količina bitov pomnilnika 608 00:33:26,400 --> 00:33:28,480 lahko uporabimo za zastopanje številk. 609 00:33:28,480 --> 00:33:33,480 Tako, na primer, ta CS50 ID is-- Mislim, da je 64-bitni računalnik. 610 00:33:33,480 --> 00:33:37,520 >> Plovec lahko predstavljal le s končno količino teh bitov. 611 00:33:37,520 --> 00:33:42,260 In tako 0.1 z neskončno ničel, da je bilo 0,1, kajne? 612 00:33:42,260 --> 00:33:45,450 Vendar ne moremo dejansko shranjevanje da je število v našem računalniku. 613 00:33:45,450 --> 00:33:47,810 Mi samo nimajo dovolj pomnilnika, da to storijo. 614 00:33:47,810 --> 00:33:52,340 >> In tako najbližje približevanje kaj je shranjeno v spominu, je dejansko 615 00:33:52,340 --> 00:33:55,390 nekaj podobnega 0,000 nečesa, nekaj, nekaj, nekaj. 616 00:33:55,390 --> 00:34:01,240 Ki, ko ste skrajšajte to, zaokroži navzdol na 0,0. 617 00:34:01,240 --> 00:34:05,640 >> In zato je ta primer je le eden ki dokazuje veliko vprašanj 618 00:34:05,640 --> 00:34:08,469 imamo vsakič, ko smo poskuša nepravilno storite math 619 00:34:08,469 --> 00:34:11,000 brez ulivanje kot drug celo število. 620 00:34:11,000 --> 00:34:14,870 Torej, samo mora biti pozorna na to dogaja. 621 00:34:14,870 --> 00:34:18,239 >> Na kvizi, če Ponujamo vam dajejo blok kode in to je podobno, 622 00:34:18,239 --> 00:34:19,510 kaj natisne na koncu? 623 00:34:19,510 --> 00:34:24,096 In če je nekaj naključno vrednost, ki jo fantje bi morali vedeti, zakaj to dogaja. 624 00:34:24,096 --> 00:34:24,909 Ja? 625 00:34:24,909 --> 00:34:27,926 >> OBČINSTVO: odsekana se znebili Vse po določenem trenutku? 626 00:34:27,926 --> 00:34:28,513 [Neslišno] 627 00:34:28,513 --> 00:34:30,929 Profesor: Ja, tako dejansko to je res slab primer, 628 00:34:30,929 --> 00:34:37,870 ker je 0,100, kar dejansko bi odsekana do 0,1. 629 00:34:37,870 --> 00:34:41,389 Ampak, če ste bili, da it-- teči jaz ne ne pozabite, ker lani so 630 00:34:41,389 --> 00:34:42,830 tekel na drugem programu. 631 00:34:42,830 --> 00:34:45,300 So tekel v nekaj, kar se imenuje CS50 Appliance, ki 632 00:34:45,300 --> 00:34:46,389 se razlikuje od ID. 633 00:34:46,389 --> 00:34:48,520 Da je bil 32-bitni sistem, mislim. 634 00:34:48,520 --> 00:34:50,290 In tako je bilo različne številke. 635 00:34:50,290 --> 00:34:53,330 >> Ampak v bistvu, samo vem, da celoten koncept krajšanjem 636 00:34:53,330 --> 00:34:54,815 in kako to samo kosi stvari off. 637 00:34:54,815 --> 00:34:55,690 In tako, če ji rounds-- 638 00:34:55,690 --> 00:34:56,300 >> OBČINSTVO: Brez zaokroževanja. 639 00:34:56,300 --> 00:34:57,370 >> Profesor: Točno tako. 640 00:34:57,370 --> 00:34:57,870 Ja. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 Cool. 643 00:35:04,380 --> 00:35:05,250 >> Živjo, v hrbtu. 644 00:35:05,250 --> 00:35:07,634 Mi smo le, da bo čez nekaj pregled kviz vprašanja. 645 00:35:07,634 --> 00:35:08,430 >> V redu. 646 00:35:08,430 --> 00:35:10,150 Tako menijo drug program tukaj. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Grem, da vam fantje nekaj minut, da se glasi čez to. 649 00:35:15,380 --> 00:35:18,588 To je nekaj, kar je bilo za zelo pred kratkim, da mislim, da zapravila veliko od vas 650 00:35:18,588 --> 00:35:19,142 umi fantje to. 651 00:35:19,142 --> 00:35:21,100 Ampak bomo govorili skozi to spet samo 652 00:35:21,100 --> 00:35:24,152 poskrbite, da boste ga popolnoma razumem. 653 00:35:24,152 --> 00:35:24,652 V REDU. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 V REDU. 656 00:35:41,780 --> 00:35:44,342 Vsakdo, potrebujejo več časa preberite to kodo? 657 00:35:44,342 --> 00:35:45,650 V REDU. 658 00:35:45,650 --> 00:35:50,630 >> Tako se mi zdi, da V tem programu sem 659 00:35:50,630 --> 00:35:53,460 ustvarjanje dveh nizov z uporabo GetString. 660 00:35:53,460 --> 00:35:55,180 Ena imenovane ov in ena imenovana t. 661 00:35:55,180 --> 00:35:58,680 In če oni enako enaka drug drugemu, 662 00:35:58,680 --> 00:36:00,880 mora print "You vnesite isto stvar. " 663 00:36:00,880 --> 00:36:04,170 >> Ampak elsewise, bi bilo tiskati, "You vnesli različne stvari ", kajne? 664 00:36:04,170 --> 00:36:05,990 Zdi se zelo, zelo preprosta. 665 00:36:05,990 --> 00:36:08,720 Ampak kljub temu, če sem dejansko poskusite pisati ta program, 666 00:36:08,720 --> 00:36:12,230 zdi se, da tudi, ko sem Vhodni točno isto strune, 667 00:36:12,230 --> 00:36:15,490 še vedno natisne, "You vnesli različne stvari! " 668 00:36:15,490 --> 00:36:18,020 Ali kdorkoli želite, da traja strel, zakaj ta program vedno 669 00:36:18,020 --> 00:36:20,370 odgovarja, da so vhodi sta različna, celo 670 00:36:20,370 --> 00:36:22,090 ko so besede same enako? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Torej, če bi bil jaz input-- David ljubezen uporabiti za zgled, kot mamo, kajne? 673 00:36:29,170 --> 00:36:37,890 Male M-O-M za S, T enaka male M-O-M. 674 00:36:37,890 --> 00:36:40,340 Če bi ta tekel skozi da je koda, zakaj bi se 675 00:36:40,340 --> 00:36:44,180 izpisal "ste vnesli različne stvari?" 676 00:36:44,180 --> 00:36:46,336 >> Ali kdo potrebuje več Čas je, da razmišljajo o tem? 677 00:36:46,336 --> 00:36:47,294 OK, mislim, da smo dobri. 678 00:36:47,294 --> 00:36:48,716 Ja? 679 00:36:48,716 --> 00:36:53,930 >> OBČINSTVO: OK, tako da je nekaj o tem kjer je shranjena v pomnilniku, kajne? 680 00:36:53,930 --> 00:36:54,890 >> Profesor: Ja. 681 00:36:54,890 --> 00:37:00,400 >> OBČINSTVO: Kje je všeč, če je ta niz s, se shranijo v pomnilniku spot-- 682 00:37:00,400 --> 00:37:01,689 Jaz sem izumlja this-- nič. 683 00:37:01,689 --> 00:37:02,355 PROFESOR: Seveda. 684 00:37:02,355 --> 00:37:05,290 OBČINSTVO: In niz t je shranjena na pomnilniški lokaciji, 685 00:37:05,290 --> 00:37:11,000 podobno, 167 in nato nič ni enaka 167. 686 00:37:11,000 --> 00:37:12,610 >> Profesor: Točno tako. 687 00:37:12,610 --> 00:37:18,350 OK, zato ne pozabite, to neverjetno razodetje smo pojasnili, da vaju 688 00:37:18,350 --> 00:37:21,530 to čez teden dni, da strune v resnici ne obstaja? 689 00:37:21,530 --> 00:37:25,380 Ko smo ustvarili nekaj, kar se imenuje Niz smo v resnici, 690 00:37:25,380 --> 00:37:29,330 ustvariti nekaj, kar ti char zvezda. 691 00:37:29,330 --> 00:37:34,470 Kar vse je kazalec na niz ali niz znakov. 692 00:37:34,470 --> 00:37:39,480 >> In tako v tem primeru, če bi bi vhodni M-O-M pot 693 00:37:39,480 --> 00:37:49,350 da bi moj računalnik shraniti je v spominsko poševnico ničelno, kajne? 694 00:37:49,350 --> 00:37:53,180 Ti štirje znaki, znakov, bodo shranjeni nekje. 695 00:37:53,180 --> 00:37:59,290 >> In potem ti štirje znaki, poševnica nazaj nič, 696 00:37:59,290 --> 00:38:01,275 so shranjene nekje drugje, kajne? 697 00:38:01,275 --> 00:38:04,685 Nimam pojma, kje naslovi so, oni so nekje v mojem računalniku. 698 00:38:04,685 --> 00:38:07,080 Ampak jaz ne točno ve, kje so. 699 00:38:07,080 --> 00:38:10,170 >> Ko kreirajo niz ov, vse to je res 700 00:38:10,170 --> 00:38:15,550 kazalec na začetek tega niza. 701 00:38:15,550 --> 00:38:21,130 In ko sem ustvaril ta t vrednost, vse, kar je kazalec na tukaj. 702 00:38:21,130 --> 00:38:23,980 In tako, ko ste težaven izenačiti in preverite 703 00:38:23,980 --> 00:38:27,710 da vidim, če je s Ene enaka t, računalnik 704 00:38:27,710 --> 00:38:31,635 res samo vračajo si je naslov te m 705 00:38:31,635 --> 00:38:33,390 in naslov, da m. 706 00:38:33,390 --> 00:38:36,230 In zato, ker oni dve ločeni deli podatkov 707 00:38:36,230 --> 00:38:38,750 ki so shranjeni v dveh različnih naslovi v vašem računalniku, 708 00:38:38,750 --> 00:38:41,750 računalnik se ne bo nikoli jih prepoznali kot enake. 709 00:38:41,750 --> 00:38:43,500 Ali kdo želi dal strel na tisto, kar smo 710 00:38:43,500 --> 00:38:46,900 bi morali storiti, če smo želeli, da popravi to in imajo pravilno delujoči program 711 00:38:46,900 --> 00:38:49,360 namesto tega? 712 00:38:49,360 --> 00:38:52,070 Pomisli, da za nekaj sekund. 713 00:38:52,070 --> 00:38:54,929 Kaj moramo spremeniti, da najdem ta program delovanja 714 00:38:54,929 --> 00:38:56,220 način želimo, da deluje? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Ja, želim, da bi zabodel na to? 717 00:39:18,918 --> 00:39:24,082 >> OBČINSTVO: Lahko smo poskušali dereference kazalec in preverite skozi niz? 718 00:39:24,082 --> 00:39:25,540 Profesor: To je eden od načinov, da to storite. 719 00:39:25,540 --> 00:39:27,880 Torej, kaj je že ime? 720 00:39:27,880 --> 00:39:29,010 Oprosti, spomni me. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 Profesor: Ja, pa kaj Zee predlagal bi absolutno delo. 723 00:39:32,130 --> 00:39:32,629 Prav? 724 00:39:32,629 --> 00:39:35,730 Mi lahko dereference kazalca in dejansko šel in dostop 725 00:39:35,730 --> 00:39:38,460 fizikalni podatki notranjost tukaj. 726 00:39:38,460 --> 00:39:40,300 In bomo lahko samo primerjati celoten zaslon. 727 00:39:40,300 --> 00:39:43,670 >> Lahko rečemo, OK, kazalec, daj mi, kaj je notri tukaj. 728 00:39:43,670 --> 00:39:44,960 To bi vrnil m. 729 00:39:44,960 --> 00:39:47,168 In jaz bi rekel, kazalec, daj mi, kaj je notri tukaj. 730 00:39:47,168 --> 00:39:47,750 Vrniti m. 731 00:39:47,750 --> 00:39:48,410 Ali tiste tekmo? 732 00:39:48,410 --> 00:39:49,410 Da. 733 00:39:49,410 --> 00:39:50,340 Potem pa gremo naprej. 734 00:39:50,340 --> 00:39:54,240 >> Nenehno preverjanje celoten dva strune vse tja do konca 735 00:39:54,240 --> 00:39:56,635 in videli, če so enaki, če so vse vrednosti enake. 736 00:39:56,635 --> 00:39:59,680 In če so vse ugotovljene vrednosti enake, potem vemo, strune so resnične. 737 00:39:59,680 --> 00:40:01,600 Absolutno, to je, kako bi to naredil? 738 00:40:01,600 --> 00:40:03,930 >> Ali kdo zmeden na vse to? 739 00:40:03,930 --> 00:40:06,970 Celoten koncept kako godala so res le kazalci, 740 00:40:06,970 --> 00:40:08,440 in kako se v resnici ne obstaja? 741 00:40:08,440 --> 00:40:10,480 In zakaj smo dobili napake kot način smo ga dobili? 742 00:40:10,480 --> 00:40:15,070 Ker sem vam zagotavljajo fantje, kazalce in dodelitev niz in spomin 743 00:40:15,070 --> 00:40:16,470 se dogaja, da pridejo gor. 744 00:40:16,470 --> 00:40:17,410 >> Ja? 745 00:40:17,410 --> 00:40:21,072 >> OBČINSTVO: [neslišno] dereference to, si dal zvezdo [neslišno] 746 00:40:21,072 --> 00:40:21,780 Profesor: Right. 747 00:40:21,780 --> 00:40:28,430 Torej, da derererence kazalcem sredstva iti na ta naslov kazalca 748 00:40:28,430 --> 00:40:30,390 in pridobi podatke, vrednost tam. 749 00:40:30,390 --> 00:40:32,700 In način, da to, da je zvezda kazalec. 750 00:40:32,700 --> 00:40:34,262 Ne mešaj tega. 751 00:40:34,262 --> 00:40:35,186 >> OBČINSTVO: [neslišno]. 752 00:40:35,186 --> 00:40:35,852 >> Profesor: Ja. 753 00:40:35,852 --> 00:40:39,750 OBČINSTVO: Torej si lahko samo pisati če zvezde s enaka Ene zvezda t. 754 00:40:39,750 --> 00:40:40,630 >> Profesor: No, no. 755 00:40:40,630 --> 00:40:40,960 No. 756 00:40:40,960 --> 00:40:41,640 >> OBČINSTVO: To ni dovolj dober, kajne? 757 00:40:41,640 --> 00:40:43,760 >> Profesor: To ni, ker si le preverjanje prvo pismo. 758 00:40:43,760 --> 00:40:46,010 Ste verjetno bo Potrebujemo neko zanko, ki 759 00:40:46,010 --> 00:40:49,055 ponovi za vsak lik v obeh nizih. 760 00:40:49,055 --> 00:40:49,837 Ja. 761 00:40:49,837 --> 00:40:52,920 Torej, če si želel samo preverite če so začeli z isto stvar, 762 00:40:52,920 --> 00:40:58,220 lahko storite, če, zvezda s je enak zvezdic t. 763 00:40:58,220 --> 00:41:01,300 Potem veš, da vsaj Začelo se je z istim značajem. 764 00:41:01,300 --> 00:41:01,952 >> Ja? 765 00:41:01,952 --> 00:41:04,056 >> OBČINSTVO: Torej pot vam, da bi bilo 766 00:41:04,056 --> 00:41:06,064 kot vgrajeni za zanke ali kazalec? 767 00:41:06,064 --> 00:41:06,730 Profesor: Ja. 768 00:41:06,730 --> 00:41:08,170 Precej samo za zanko. 769 00:41:08,170 --> 00:41:12,430 Ne pozabite, da je David v razredu omenjeno prosta skladenjska sladkorja? 770 00:41:12,430 --> 00:41:17,690 In imel je prav ta zmedeno stvar zvezdicami t 771 00:41:17,690 --> 00:41:22,030 plus ena, kjer bi bilo vključiti skozi in ga premaknite kazalec? 772 00:41:22,030 --> 00:41:29,910 Lažji način dela to je samo t i. 773 00:41:29,910 --> 00:41:31,090 >> Torej, to je samo polje. 774 00:41:31,090 --> 00:41:34,630 Tako, da bi vas imeli za zanke, ki je potekal od nič do i, kjer 775 00:41:34,630 --> 00:41:36,580 i je dolžina niz, bi si 776 00:41:36,580 --> 00:41:39,510 pisati, da namesto početje cel kazalec, sklic stvar. 777 00:41:39,510 --> 00:41:43,510 Torej, te stvari so točno protivrednosti v vašem računalniku. 778 00:41:43,510 --> 00:41:45,905 >> Vidva verjetno ne bo morate vedeti, da, 779 00:41:45,905 --> 00:41:48,280 vendar je dobro, da le nekako imajo na zadnji strani vaš um. 780 00:41:48,280 --> 00:41:52,630 Samo vem, da je računalnik prepozna različne bloke kode 781 00:41:52,630 --> 00:41:53,890 kot isto stvar. 782 00:41:53,890 --> 00:41:57,510 Ker je to samo veliko bolj uporabniku prijazno za nas, da ga predstavi kot da je 783 00:41:57,510 --> 00:41:58,150 array. 784 00:41:58,150 --> 00:42:00,990 To je samo lažje. 785 00:42:00,990 --> 00:42:02,719 >> OBČINSTVO: Torej, uporabite strlen všeč, get-- 786 00:42:02,719 --> 00:42:03,385 Profesor: Ja. 787 00:42:03,385 --> 00:42:03,926 OBČINSTVO: OK. 788 00:42:03,926 --> 00:42:05,940 Profesor: Lahko bi uporabiti strlen ali, če 789 00:42:05,940 --> 00:42:10,420 niso imeli strlen lahko preprosto storite up dokler ne boste zadeli poševnico nič za oba. 790 00:42:10,420 --> 00:42:11,568 Ali bi delovalo. 791 00:42:11,568 --> 00:42:12,068 Ja. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 OBČINSTVO: Torej, to je do ciljne datoteke, vsak en znak, če bi bili dejansko 794 00:42:17,996 --> 00:42:21,044 pisanje to kodo smo bi pač t oklepajev i 795 00:42:21,044 --> 00:42:22,460 rad z zvezdo pred njo? 796 00:42:22,460 --> 00:42:27,700 >> Profesor: Ja, enaka je enaka ov nosilec i, in nato premikajo i 797 00:42:27,700 --> 00:42:29,790 navzdol, dokler si udaril konec. 798 00:42:29,790 --> 00:42:31,286 Ja, to je tisto, kar bi ti naredil. 799 00:42:31,286 --> 00:42:33,660 In bom dejansko imajo naslednji Primer, ko smo dejansko 800 00:42:33,660 --> 00:42:36,740 pisati strlen tako vidva bo vrsta za priti do igral z njim malo. 801 00:42:36,740 --> 00:42:43,567 >> Torej je vsakdo jasno samo spomin, strune, kazalci, kakovosti naslove? 802 00:42:43,567 --> 00:42:46,650 Nekateri koncepti višje ravni, ki jo bo zagotovo potrebe po seznanitvi na kvizu 803 00:42:46,650 --> 00:42:48,928 jutri. 804 00:42:48,928 --> 00:42:49,904 >> V redu. 805 00:42:49,904 --> 00:42:50,404 Dobro. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Ja. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, ena stvar, ki jo bomo tudi vprašati vi, kot to počnemo vsako leto na kvizu, je, 810 00:43:04,180 --> 00:43:08,340 Predvidevam, da si pozabil (ki se zdi, da bi pozabili, da vsako leto narediti) 811 00:43:08,340 --> 00:43:10,810 v kateri je glava datoteke strlen razglašena. 812 00:43:10,810 --> 00:43:13,860 In zato moramo to znova sami. 813 00:43:13,860 --> 00:43:16,350 >> Tukaj je seznam smernic da vam bomo lahko predstavili 814 00:43:16,350 --> 00:43:20,660 Fantje, kjer boste dobili za domnevo, da S niz ne bo null. 815 00:43:20,660 --> 00:43:23,830 Lahko domnevamo, da se bo s biti preneha s poševnico ničelno. 816 00:43:23,830 --> 00:43:26,670 Tako da boste vedeli, da je kaj da se bo končalo s. 817 00:43:26,670 --> 00:43:29,500 >> In, na primer, da je dolžina Pozdravljeni bi bilo pet. 818 00:43:29,500 --> 00:43:32,890 Torej lahko sklepamo, da Hello bo pet, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 Nimate domnevati, da backside nič račune za dolžino. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Ta zadnja stvar tukaj, ne skrbeti integer overflow. 822 00:43:42,300 --> 00:43:45,270 Ali kdo ne pozabite kar celo overflow je? 823 00:43:45,270 --> 00:43:48,041 >> OBČINSTVO: presega dolžina [neslišno]. 824 00:43:48,041 --> 00:43:50,740 >> Profesor: Ja, lahko pojasnite malo, kaj to pomeni? 825 00:43:50,740 --> 00:43:55,330 >> OBČINSTVO: Torej, mislim, da gre nazaj na primer pri krajšanju prej. 826 00:43:55,330 --> 00:43:58,380 Ampak, če imate samo toliko številk ki presegajo število bitov 827 00:43:58,380 --> 00:44:01,409 da lahko dejansko dodelite da bo to šele nekako odrezani. 828 00:44:01,409 --> 00:44:04,242 Profesor: Ja, tako na tipično Računalnik, koliko bitov imamo? 829 00:44:04,242 --> 00:44:05,306 OBČINSTVO: 32? 830 00:44:05,306 --> 00:44:06,430 Profesor: Ja, 32, desno. 831 00:44:06,430 --> 00:44:10,030 In tako, da je, kar štiri milijardo, dve milijardi? 832 00:44:10,030 --> 00:44:13,579 Štiri milijarde, do štiri milijarde pozitivna cela števila, kajne? 833 00:44:13,579 --> 00:44:15,370 Dve milijardi negativen, dve milijardi pozitiven, 834 00:44:15,370 --> 00:44:16,900 je odvisno od tega, kako želite, da to storite. 835 00:44:16,900 --> 00:44:21,470 >> In tako v bistvu lahko imamo dovolj cela števila, ki lahko gredo gor 836 00:44:21,470 --> 00:44:25,800 na dve do 31. minus 1, kajne? 837 00:44:25,800 --> 00:44:27,980 Ker ko smo zadeli dve do 32., ne bomo 838 00:44:27,980 --> 00:44:30,040 so, da je veliko pomnilnika v našem računalniku. 839 00:44:30,040 --> 00:44:32,310 >> In tako, teoretično sem bi lahko prišli do številnih 840 00:44:32,310 --> 00:44:34,560 to je podobno, dva do 46.. 841 00:44:34,560 --> 00:44:38,040 To je velika rit številka, vendar Teoretično bi lahko. 842 00:44:38,040 --> 00:44:42,730 In tako celo overflow je, če ste poskušali ustvariti celo število, ki presega tisto, kar 843 00:44:42,730 --> 00:44:44,790 računalnik lahko shrani. 844 00:44:44,790 --> 00:44:46,590 >> In tako vidva za Ta primer nimajo 845 00:44:46,590 --> 00:44:51,330 skrbeti za nas, ki vam daje velikana niz, ki je dva do 32. znakov 846 00:44:51,330 --> 00:44:51,830 dolgo. 847 00:44:51,830 --> 00:44:54,010 Da bi se v resnici pomeni. 848 00:44:54,010 --> 00:44:59,430 >> Vse je v redu, tako da sem le, da bo dal vidva osnovno strukturo tega. 849 00:44:59,430 --> 00:45:02,020 Ti boš, da ustvarite Funkcija se imenuje int strlen kjer 850 00:45:02,020 --> 00:45:08,436 za prepustnico, char zvezda, ali niz, kazalec na nizu imenovana s. 851 00:45:08,436 --> 00:45:10,820 >> Vredu, vsi kopirati to dol. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Cool. 854 00:45:14,850 --> 00:45:17,020 Oops-- drug način. 855 00:45:17,020 --> 00:45:21,360 >> Torej, to je nekako kot težje kos problemu, 856 00:45:21,360 --> 00:45:25,320 tako da vam bom dal fantje morda pet do šest minut do vrste Brainstorma 857 00:45:25,320 --> 00:45:27,478 in pisati to funkcijo ven. 858 00:45:27,478 --> 00:45:29,710 >> OBČINSTVO: Mi ne račun za [neslišno] 859 00:45:29,710 --> 00:45:30,200 nimamo uporabiti celo število? 860 00:45:30,200 --> 00:45:31,241 >> Profesor: Ne, ne. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Dam ti fantje namig. 863 00:48:06,930 --> 00:48:12,325 Nekaj ​​časa zanka je lahko zelo koristno tukaj. 864 00:48:12,325 --> 00:48:12,825 Ja. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Tukaj je 867 00:48:45,495 --> 00:48:45,995 sladkarije. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Sladkarije bo na voljo tudi za kviz, mislim. 870 00:48:53,410 --> 00:48:55,315 Torej vidva biti vse sugared jutri. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Lahko I-- si ga dobil. 873 00:49:02,962 --> 00:49:03,718 >> OBČINSTVO: OK. 874 00:49:03,718 --> 00:49:04,384 Profesor: Ja. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Mogoče še 30 sekund ali tako. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Vse je v redu, če ste niso storile, brez skrbi. 879 00:50:07,340 --> 00:50:08,810 Bomo premikate skozi to skupaj. 880 00:50:08,810 --> 00:50:09,310 V REDU. 881 00:50:09,310 --> 00:50:13,800 Torej bom samo na postavitev Osnovna struktura za to funkcijo tukaj. 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 Prvič, ne kdo želel povedati me, kaj to int pomeni? 885 00:50:23,460 --> 00:50:25,160 Moramo imeti v tej funkciji. 886 00:50:25,160 --> 00:50:26,709 >> OBČINSTVO: strlen [neslišno]. 887 00:50:26,709 --> 00:50:27,500 Profesor: Točno tako. 888 00:50:27,500 --> 00:50:31,140 Torej, karkoli se zgodi tu, moramo vrniti celo število. 889 00:50:31,140 --> 00:50:36,367 In, kot je določeno v spec, želimo return-- 890 00:50:36,367 --> 00:50:37,700 Gre za to fantje, samo nadaljuj. 891 00:50:37,700 --> 00:50:40,480 To je vse dobro. 892 00:50:40,480 --> 00:50:42,960 Pojej vse tako nimam da ga vzamem nazaj, pravzaprav. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 Int samo pomeni, da si dogaja se vrača celo število. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Kaj je to char zvezda je? 897 00:50:57,106 --> 00:50:58,640 Kaj to pomeni? 898 00:50:58,640 --> 00:51:00,879 >> OBČINSTVO: Like, kaj pa vhod v. 899 00:51:00,879 --> 00:51:01,670 Profesor: Točno tako. 900 00:51:01,670 --> 00:51:04,142 In tisto, kar je skoraj ista stvar kot char zvezda? 901 00:51:04,142 --> 00:51:04,850 OBČINSTVO: String? 902 00:51:04,850 --> 00:51:05,641 Profesor: Točno tako. 903 00:51:05,641 --> 00:51:09,080 Torej vse, kar počnete, je dajanje Ta kazalec na vrvico. 904 00:51:09,080 --> 00:51:09,580 V REDU. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 Cool. 907 00:51:13,360 --> 00:51:16,650 >> Prav tako ne pozabite, če bomo pozabili da vam te nosilce, 908 00:51:16,650 --> 00:51:18,330 ne pozabite, da jih pišejo sami. 909 00:51:18,330 --> 00:51:20,720 Ker teoretično, tvoja koda napačna, če ste pozabili, da jih pišejo. 910 00:51:20,720 --> 00:51:21,803 Samo vedno pozoren. 911 00:51:21,803 --> 00:51:23,750 Kot, malenkosti da ne boste opazili 912 00:51:23,750 --> 00:51:26,917 ko ste programiranje na vaš prenosnik, ker je vaš laptop počne za vas? 913 00:51:26,917 --> 00:51:28,624 Ne pozabite, če pišete z roko. 914 00:51:28,624 --> 00:51:29,170 Ja? 915 00:51:29,170 --> 00:51:30,954 >> OBČINSTVO: Toda kako napačna? 916 00:51:30,954 --> 00:51:33,190 Like, ne bomo dobili celoten problem narobe? 917 00:51:33,190 --> 00:51:34,190 >> Profesor: Ne, ne. 918 00:51:34,190 --> 00:51:34,860 Ne skrbite. 919 00:51:34,860 --> 00:51:39,270 To je pravzaprav teoretično možno za vas, da bi dobili polne točke o vprašanju, 920 00:51:39,270 --> 00:51:41,980 tudi če je vaša koda bo nikoli ne delujejo v resničnem življenju. 921 00:51:41,980 --> 00:51:46,052 Predlagam, da si ne poskušajte da bi se to zgodilo. 922 00:51:46,052 --> 00:51:48,260 Na primer, kot če bi vse da je tukaj prava, 923 00:51:48,260 --> 00:51:51,850 ampak ste pozabili debelo črevo ali nosilec, tvoja koda ne bo dejansko vozijo. 924 00:51:51,850 --> 00:51:53,740 Ampak mi lahko usmiljen. 925 00:51:53,740 --> 00:51:54,394 >> Ja? 926 00:51:54,394 --> 00:51:56,050 >> OBČINSTVO: Ali imate na komentar na našem rokopisu? 927 00:51:56,050 --> 00:51:57,758 >> Profesor: Ne, ne, ne skrbi, da je. 928 00:51:57,758 --> 00:51:58,440 Ni komentiral. 929 00:51:58,440 --> 00:51:59,400 Slog mora biti dober. 930 00:51:59,400 --> 00:52:01,470 Kot, ne Smush vse v eni vrstici. 931 00:52:01,470 --> 00:52:04,580 Ne bomo zadovoljni z vami, če vam to. 932 00:52:04,580 --> 00:52:07,250 >> Ali kdo želi daj mi prvo vrstico? 933 00:52:07,250 --> 00:52:08,633 Namig, da je zelo enostavno. 934 00:52:08,633 --> 00:52:09,320 >> Ja? 935 00:52:09,320 --> 00:52:11,920 >> OBČINSTVO: Int, n enaka nič. 936 00:52:11,920 --> 00:52:13,734 Ravnokar ustanovila števec. 937 00:52:13,734 --> 00:52:15,900 Profesor: Torej želimo nekaj neke vrste števec, kajne? 938 00:52:15,900 --> 00:52:19,780 Jaz sem šele tekoč, da ga imenujejo "računajo" zaradi berljivosti. 939 00:52:19,780 --> 00:52:21,265 Kaj želimo, da jo nastavite enako? 940 00:52:21,265 --> 00:52:21,890 >> OBČINSTVO: Zero. 941 00:52:21,890 --> 00:52:23,840 Profesor: Ja. 942 00:52:23,840 --> 00:52:24,340 Podpičje. 943 00:52:24,340 --> 00:52:26,250 To je tudi zelo čudne risanje podpičja. 944 00:52:26,250 --> 00:52:28,870 Samo vaditi tem. 945 00:52:28,870 --> 00:52:31,990 >> Zato želimo najprej števec tipa int. 946 00:52:31,990 --> 00:52:35,360 Ker želimo, da računajo gor, kako veliko znakov ali črke so 947 00:52:35,360 --> 00:52:36,780 V tem nizu, kajne? 948 00:52:36,780 --> 00:52:38,330 Zelo enostaven prvi korak. 949 00:52:38,330 --> 00:52:42,140 >> OK, morda malo bolj zapletena zdaj, kako bomo to storili? 950 00:52:42,140 --> 00:52:45,400 Ali kdo želi daj mi vrstico kode 951 00:52:45,400 --> 00:52:48,450 da bo lahko pomagal zanko skozi karkoli je to? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Ja, pogumna duša v hrbet? 954 00:52:56,900 --> 00:53:06,832 >> OBČINSTVO: OK, medtem ko točka zvezdice se ja, zvezda s, 955 00:53:06,832 --> 00:53:09,465 ni enaka nič, potem nekaj narediti? 956 00:53:09,465 --> 00:53:11,090 Profesor: To je res, res blizu. 957 00:53:11,090 --> 00:53:11,835 Res blizu. 958 00:53:11,835 --> 00:53:13,710 Tako da bom za reševanje Dve stvari s tem. 959 00:53:13,710 --> 00:53:18,240 Najprej, to ni ravno nič. 960 00:53:18,240 --> 00:53:20,110 Kaj je to? 961 00:53:20,110 --> 00:53:22,550 To je null terminator, ki je poševnica nazaj nič. 962 00:53:22,550 --> 00:53:24,960 Torej, oni so drugačni Pogoji kako oni shranjeni. 963 00:53:24,960 --> 00:53:26,270 Torej ste res blizu. 964 00:53:26,270 --> 00:53:30,330 >> In drugič, ne želimo, samo premaknete kazalec. 965 00:53:30,330 --> 00:53:32,320 Želimo, da dejansko dostop do vrednosti, kajne? 966 00:53:32,320 --> 00:53:34,050 In tako, kako to storimo? 967 00:53:34,050 --> 00:53:34,550 Zelo enostavno. 968 00:53:34,550 --> 00:53:36,841 Ne razmišljam o kazalci, ne razmišljajo o spominih. 969 00:53:36,841 --> 00:53:38,525 Pojdi nazaj na dva tedna tega predmeta. 970 00:53:38,525 --> 00:53:39,555 >> OBČINSTVO: [neslišno]. 971 00:53:39,555 --> 00:53:40,680 Profesor: Od, se spomniš? 972 00:53:40,680 --> 00:53:41,400 Kaj so strune? 973 00:53:41,400 --> 00:53:42,650 Kako so shranjeni v spominu? 974 00:53:42,650 --> 00:53:43,300 >> OBČINSTVO: Oni postavljeno. 975 00:53:43,300 --> 00:53:43,810 >> Profesor: So postavljeno. 976 00:53:43,810 --> 00:53:45,550 Torej, kako bomo dostop vsak znak notri? 977 00:53:45,550 --> 00:53:46,466 >> OBČINSTVO: [neslišno]. 978 00:53:46,466 --> 00:53:47,530 Profesor: Točno tako. 979 00:53:47,530 --> 00:53:53,195 Torej while--, kaj se dogaja v notranjosti tu? 980 00:53:53,195 --> 00:53:54,940 S izmed - 981 00:53:54,940 --> 00:53:55,920 >> OBČINSTVO: I. 982 00:53:55,920 --> 00:53:58,216 >> Profesor: Oh, jaz ne obstaja, kajne? 983 00:53:58,216 --> 00:53:59,620 >> OBČINSTVO: Oh, šteje? 984 00:53:59,620 --> 00:54:01,640 >> Profesor: Mi lahko samo uporabljate štetje, ne moremo? 985 00:54:01,640 --> 00:54:03,050 >> OBČINSTVO: Žal mi je, sem ga poimenoval i. 986 00:54:03,050 --> 00:54:04,341 >> Profesor: Ja, to je vse dobro. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Imamo spremenljivko tu gor, da je že razglašena kot naš števec. 989 00:54:10,760 --> 00:54:13,650 Torej, zakaj ne bomo samo uporabo, ki , da se premaknete skozi while? 990 00:54:13,650 --> 00:54:15,230 Ali to smiselno? 991 00:54:15,230 --> 00:54:20,864 >> Torej, medtem ko je za count-- does kdorkoli želite da bi me kaj se zgodi, ko tukaj? 992 00:54:20,864 --> 00:54:22,030 OBČINSTVO: To ni enako. 993 00:54:22,030 --> 00:54:23,405 PROFESOR: Ali ni enako, kajne? 994 00:54:23,405 --> 00:54:26,200 To je bang enaka, klicaj enaka, 995 00:54:26,200 --> 00:54:28,500 karkoli si fantje želijo, da rečejo ne equal-- 996 00:54:28,500 --> 00:54:29,496 >> OBČINSTVO: [neslišno]. 997 00:54:29,496 --> 00:54:30,990 >> Profesor: Ja. 998 00:54:30,990 --> 00:54:37,110 Zapomni enojni narekovaj je za char, dvojni narekovaji so za niz. 999 00:54:37,110 --> 00:54:38,630 Bodite previdni, ko jih uporabljate. 1000 00:54:38,630 --> 00:54:42,430 Torej, ko smo iskali s pomočjo matrika, zadnji znak, 1001 00:54:42,430 --> 00:54:46,420 vemo, nočemo da bi bilo Nagibnica nič. 1002 00:54:46,420 --> 00:54:47,340 >> Torej, medtem ko. 1003 00:54:47,340 --> 00:54:48,840 Nismo na koncu niza. 1004 00:54:48,840 --> 00:54:52,335 Kaj želimo narediti notri? 1005 00:54:52,335 --> 00:54:55,269 >> OBČINSTVO: Želimo, da dodate na Števec zato šteje plus plus? 1006 00:54:55,269 --> 00:54:56,060 Profesor: Točno tako. 1007 00:54:56,060 --> 00:55:03,064 Torej, tukaj bomo storili štetje, štetje plus plus. 1008 00:55:03,064 --> 00:55:03,980 Manjka še eno linijo. 1009 00:55:03,980 --> 00:55:05,090 Mi smo skoraj tam. 1010 00:55:05,090 --> 00:55:07,398 Kaj smo se pozablja, da naredim? 1011 00:55:07,398 --> 00:55:08,770 >> OBČINSTVO: Vrnitev nič? 1012 00:55:08,770 --> 00:55:10,820 >> Profesor: Hočeš, da se vrnete nič? 1013 00:55:10,820 --> 00:55:12,962 >> OBČINSTVO: Ne, vrača v strlen. 1014 00:55:12,962 --> 00:55:13,511 Počakajte. 1015 00:55:13,511 --> 00:55:14,760 Profesor: Katera je shranjena v? 1016 00:55:14,760 --> 00:55:15,090 OBČINSTVO: Grof. 1017 00:55:15,090 --> 00:55:15,589 Grof. 1018 00:55:15,589 --> 00:55:17,150 Profesor: Točno tako. 1019 00:55:17,150 --> 00:55:20,760 Torej, tukaj bomo vrnili štetje. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Ker tisto, kar smo delaš tukaj ultimately-- 1022 00:55:25,380 --> 00:55:29,780 imamo števca, ki je bo prirastek preko našega niza. 1023 00:55:29,780 --> 00:55:33,050 Bomo nadaljuj, da tekoč, okrog in okrog v to zanko. 1024 00:55:33,050 --> 00:55:37,700 In medtem ko nismo na koncu tega niz, ki je null terminator. 1025 00:55:37,700 --> 00:55:40,410 >> In vsakič, ko gremo skozi to, da smo dodali na naš števec. 1026 00:55:40,410 --> 00:55:42,640 In bomo še naprej dogaja vzdolž v tem polju. 1027 00:55:42,640 --> 00:55:44,880 In na koncu, ko smo hit null terminator, 1028 00:55:44,880 --> 00:55:48,469 vemo, oh, smo lahko prekinil, vrne število. 1029 00:55:48,469 --> 00:55:49,260 Imamo strlen. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Ali vsi dobili, kako to je bila izvedena? 1032 00:55:56,400 --> 00:55:58,830 Medtem loops-- Vem, da imamo ne narejeno preveč z njimi, 1033 00:55:58,830 --> 00:56:01,240 ampak oni so ponavadi Zelo, zelo koristno, če vas 1034 00:56:01,240 --> 00:56:05,390 Ne vem, kaj ste ustavljanje Pogoj je nujno. 1035 00:56:05,390 --> 00:56:06,220 >> Vprašanje? 1036 00:56:06,220 --> 00:56:10,080 >> OBČINSTVO: Lahko napišemo null o stanju, medtem ko? 1037 00:56:10,080 --> 00:56:10,940 >> Profesor: Ko? 1038 00:56:10,940 --> 00:56:15,304 Ja, tako da v tem problemu sem te imel fantje, predvidevam, da je ne bo nič. 1039 00:56:15,304 --> 00:56:17,220 Saj se spomnite, teoretično, če sem ti dal 1040 00:56:17,220 --> 00:56:21,180 kazalec, da je prevelika za spomin, da bi vam null, kajne? 1041 00:56:21,180 --> 00:56:23,770 To je tisto, kar je operacijski Sistem bi naredil. 1042 00:56:23,770 --> 00:56:26,960 >> Torej, če nisem vam povedal, da prevzame e bi bil ničen, morate preveriti. 1043 00:56:26,960 --> 00:56:32,050 Torej tu gor, ki bi jih storili, če s enaka enak null, vrne eno. 1044 00:56:32,050 --> 00:56:33,028 Nekaj ​​podobnega. 1045 00:56:33,028 --> 00:56:34,153 OBČINSTVO: [neslišno] nič. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 Profesor: OK, bom povedal, ti, zakaj ne moremo storiti. 1048 00:56:39,370 --> 00:56:43,357 Ker se spomnite v spomin, desno, tukaj. 1049 00:56:43,357 --> 00:56:43,940 Šla bova tukaj. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Imaš velikan blokov spomina vse z omrežji 1052 00:56:54,090 --> 00:56:56,680 da store različne vrednosti, kajne? 1053 00:56:56,680 --> 00:57:00,110 In tako vse niz is-- za Na primer, če smo na vhodu pozdravi, 1054 00:57:00,110 --> 00:57:05,490 da bi bilo H-E-L-L-O poševnica nazaj nič, kajne? 1055 00:57:05,490 --> 00:57:09,570 In kdo ve, kot naključno stvari, ki so tukaj po njej. 1056 00:57:09,570 --> 00:57:11,220 >> Mi dejansko ne vem, kaj je tam. 1057 00:57:11,220 --> 00:57:13,350 In tako, če ste bili storiti namesto poševnico ničlo, 1058 00:57:13,350 --> 00:57:15,590 null, ne sme biti nič. 1059 00:57:15,590 --> 00:57:17,680 Ker to lahko samo pomeni, nekaj naključnih drugih stvari 1060 00:57:17,680 --> 00:57:19,270 ki ne sodijo v niz. 1061 00:57:19,270 --> 00:57:23,219 In zato je tako, da smo vedno vedeli, da niz konča se s poševnico ničelno. 1062 00:57:23,219 --> 00:57:25,760 In tako, da je vedno, kako smo preverjanje za prikaz konca niza. 1063 00:57:25,760 --> 00:57:30,820 >> Null, vse to pomeni, če imate neobstoječa kazalec, najprej 1064 00:57:30,820 --> 00:57:36,160 ali če vaš spomin je prav tako velika, da ne moreš vrniti, potem bi bilo nič. 1065 00:57:36,160 --> 00:57:40,150 Torej biti zelo previdni pri razlikovanju razlika med ničlo 1066 00:57:40,150 --> 00:57:42,130 in poševnica nazaj nič. 1067 00:57:42,130 --> 00:57:43,670 Ja. 1068 00:57:43,670 --> 00:57:46,886 >> Vsakdo v redu s tem? 1069 00:57:46,886 --> 00:57:48,150 V REDU. 1070 00:57:48,150 --> 00:57:50,440 >> Torej sem imel vi napisali strlen. 1071 00:57:50,440 --> 00:57:53,790 Izvedljiv smo lahko zaprosi tudi pišete od A do I, ne pozabite, da je "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 ali karkoli hočete, da ga pokličete? 1073 00:57:55,400 --> 00:57:58,010 Ta funkcija v Vigenere in Cezar, ki 1074 00:57:58,010 --> 00:58:00,900 pretvori ASCII vrednost na celo število? 1075 00:58:00,900 --> 00:58:04,360 Ki je prav tako prišel na preteklih kvizov funkcij smo vas prosili, da pisati. 1076 00:58:04,360 --> 00:58:08,280 >> Precej koli funkcijo ki ste jih uporabili, in je 1077 00:58:08,280 --> 00:58:11,660 zelo enostavno sami pišejo, Senzorji všeč, je nižja, 1078 00:58:11,660 --> 00:58:14,620 je zgornja, znižati, da zgornji del. 1079 00:58:14,620 --> 00:58:17,964 Funkcije, ki bi pretvoriti niz iz male črke v velike črke. 1080 00:58:17,964 --> 00:58:19,380 Vsi vemo, kako to storiti, kajne? 1081 00:58:19,380 --> 00:58:21,100 To je zelo enostavno. 1082 00:58:21,100 --> 00:58:24,770 Samo želim, da poskrbite, da boste can-- je isto misel proces. 1083 00:58:24,770 --> 00:58:26,940 Pravkar ste ponovitev prek in zavijete stvari. 1084 00:58:26,940 --> 00:58:30,190 Vi ali štetje ali ko zavijete stvari drugače. 1085 00:58:30,190 --> 00:58:32,280 >> Jaz bi suggest-- I Ne vem, če gremo 1086 00:58:32,280 --> 00:58:39,080 da vas prosim, da si zapomnimo, kaj kapitalu ali kapital Z ali male črke A ali male črke 1087 00:58:39,080 --> 00:58:42,640 z so v ASCII, ampak jaz bi predlagal morda pisal, da v primeru, če 1088 00:58:42,640 --> 00:58:44,124 počnemo. 1089 00:58:44,124 --> 00:58:45,540 Samo, da vidva imela sklicujejo. 1090 00:58:45,540 --> 00:58:47,180 Tako kot velike črke A, kaj, 197? 1091 00:58:47,180 --> 00:58:51,320 In potem male je kot 50-nekaj. 1092 00:58:51,320 --> 00:58:52,492 65, ja, tam greš. 1093 00:58:52,492 --> 00:58:54,950 Torej, samo precej vedeti Razlika med njima je 32. 1094 00:58:54,950 --> 00:58:57,670 To je zelo pomembno. 1095 00:58:57,670 --> 00:58:58,170 Ja. 1096 00:58:58,170 --> 00:59:01,445 Sem dober v tem? 1097 00:59:01,445 --> 00:59:01,945 V REDU. 1098 00:59:01,945 --> 00:59:03,109 >> OBČINSTVO: Mi lahko teoretično napisati nekaj 1099 00:59:03,109 --> 00:59:04,410 od teh dol, kot tudi na naši little-- 1100 00:59:04,410 --> 00:59:07,035 >> Profesor: Ti teoretično lahko samo kopirajte funkcijo navzdol. 1101 00:59:07,035 --> 00:59:08,482 To drži. 1102 00:59:08,482 --> 00:59:11,080 >> OBČINSTVO: Ni [neslišno]. 1103 00:59:11,080 --> 00:59:12,720 >> Profesor: Vi imate list. 1104 00:59:12,720 --> 00:59:14,194 Vidva imajo note list. 1105 00:59:14,194 --> 00:59:14,860 Lahko ga vnesete. 1106 00:59:14,860 --> 00:59:15,490 Lahko pišete. 1107 00:59:15,490 --> 00:59:17,031 To lahko storite karkoli želite z njim. 1108 00:59:17,031 --> 00:59:18,530 Ja. 1109 00:59:18,530 --> 00:59:21,406 Torej teoretično, če hočeš, iti za. 1110 00:59:21,406 --> 00:59:23,338 >> OBČINSTVO: [neslišno] vendar pa v resnici ne 1111 00:59:23,338 --> 00:59:25,994 nujno, da se spomnimo vrednost, lahko smo samo 1112 00:59:25,994 --> 00:59:28,914 uporabiti na zgornji ali nižja funkcija, kajne? 1113 00:59:28,914 --> 00:59:29,580 Profesor: Ja. 1114 00:59:29,580 --> 00:59:32,740 Ampak, če vam je dal vprašanje ki pravi, da pišete na zgornji del, 1115 00:59:32,740 --> 00:59:34,350 potem bi morali pisati. 1116 00:59:34,350 --> 00:59:38,150 Tako lahko vidva Predvidevam, da vas Fantje imajo dostop do vseh funkcij, 1117 00:59:38,150 --> 00:59:41,523 če pa želite uporabiti za zgornji ali nižje, kaj imate tudi, da naredim? 1118 00:59:41,523 --> 00:59:43,840 >> OBČINSTVO: [neslišno] uporabite CS50 [neslišno] 1119 00:59:43,840 --> 00:59:44,840 >> Profesor: Je CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Bodite previdni tam. 1122 00:59:48,310 --> 00:59:50,640 >> Torej, da zgornji, znižati, je zgornja, nižja, 1123 00:59:50,640 --> 00:59:52,990 funkcije, ki vključujejo Niz manipulacija so 1124 00:59:52,990 --> 00:59:55,490 Vse bodisi v okviru ASCII ali v knjižnici matematike 1125 00:59:55,490 --> 00:59:57,350 ali v knjižnici niza. 1126 00:59:57,350 --> 01:00:00,290 Torej, če vi uporabljate tiste Funkcije, bodite previdni, da se spomnimo 1127 01:00:00,290 --> 01:00:01,451 ki vsebuje to glavo. 1128 01:00:01,451 --> 01:00:03,950 Torej, morda tudi kaj vas želeli v vašem listu vključujejo, 1129 01:00:03,950 --> 01:00:04,892 kaj so glava? 1130 01:00:04,892 --> 01:00:06,600 Kakšne so knjižnice ste uporabljali? 1131 01:00:06,600 --> 01:00:08,550 Katere funkcije so znotraj teh knjižnic? 1132 01:00:08,550 --> 01:00:09,230 To je pomembno. 1133 01:00:09,230 --> 01:00:10,420 >> Ja? 1134 01:00:10,420 --> 01:00:12,570 >> OBČINSTVO: Bi lahko samo policaj ven in narediti hashtag 1135 01:00:12,570 --> 01:00:14,955 z absolutno vsako pismo, ki smo jih doslej 1136 01:00:14,955 --> 01:00:17,340 gledati kot na vsa vprašanja? 1137 01:00:17,340 --> 01:00:18,320 >> Profesor: Lahko bi. 1138 01:00:18,320 --> 01:00:20,361 Ne vem, kako srečna bomo biti razredu 1139 01:00:20,361 --> 01:00:25,090 da kviz ko vsak kos kode je dvakrat toliko časa, kot je treba. 1140 01:00:25,090 --> 01:00:27,200 Ne vem, bomo morda vzlet točke za stil. 1141 01:00:27,200 --> 01:00:28,790 Ampak teoretično Vaš koda bi bilo prav. 1142 01:00:28,790 --> 01:00:30,915 Vidva bi policaj ven in samo vključuje vse. 1143 01:00:30,915 --> 01:00:32,044 To je v redu preveč, ja. 1144 01:00:32,044 --> 01:00:32,960 OBČINSTVO: [neslišno]. 1145 01:00:32,960 --> 01:00:33,270 Profesor: Ja. 1146 01:00:33,270 --> 01:00:34,900 Jaz bi predlagal, da ne gre, da je, čeprav. 1147 01:00:34,900 --> 01:00:35,505 Ja. 1148 01:00:35,505 --> 01:00:36,130 OBČINSTVO: Cool. 1149 01:00:36,130 --> 01:00:36,620 Profesor: Dobro vprašanje. 1150 01:00:36,620 --> 01:00:37,480 OBČINSTVO: Torej, najslabši možni scenarij. 1151 01:00:37,480 --> 01:00:38,563 Profesor: Najslabši primer. 1152 01:00:38,563 --> 01:00:40,350 Če ste popolnoma pozabili, bi lahko storili, da. 1153 01:00:40,350 --> 01:00:40,850 Ja. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Ja, koda je tam. 1156 01:00:45,400 --> 01:00:49,176 Včasih sem n namesto štetja, vendar vas Veste, ne glede plava svojo ladjo. 1157 01:00:49,176 --> 01:00:51,092 OBČINSTVO: Počakajte, zato smo ne bi bilo treba hashtag 1158 01:00:51,092 --> 01:00:53,460 vključujejo zato, ker smo začne na int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> Profesor: Ja, sem samo domneva, da smo morali napisati funkcijo. 1161 01:00:59,924 --> 01:01:02,340 Če bi želeli, da je varna, vas bi jo verjetno dal tja. 1162 01:01:02,340 --> 01:01:05,650 Ampak jaz samo ne trudim, ja. 1163 01:01:05,650 --> 01:01:09,919 >> Sploh ne vem, če vas potrebovali knjižnico za to. 1164 01:01:09,919 --> 01:01:12,710 Ker si res ne tiskate ven karkoli ali karkoli, kajne? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Ja, ne vem, če morate knjižnico. 1167 01:01:19,568 --> 01:01:22,400 >> V REDU. 1168 01:01:22,400 --> 01:01:26,020 To je tudi nekoliko bolj skupaj črte pomnilniške manipulacije. 1169 01:01:26,020 --> 01:01:27,400 Ta vrsta bit zapleteno. 1170 01:01:27,400 --> 01:01:28,960 Razmislite o tem. 1171 01:01:28,960 --> 01:01:30,580 Imate funkcijo imenovano func. 1172 01:01:30,580 --> 01:01:33,570 Lahko bi ga poimenovali karkoli, vendar sem se odločil, da jo poimenujete funkcijska. 1173 01:01:33,570 --> 01:01:36,000 Imam ga zgoraj moj glavni. 1174 01:01:36,000 --> 01:01:39,790 Ne pozabite, da želite imeti funkcija po vaše glavno, 1175 01:01:39,790 --> 01:01:42,370 želite, da poskrbite, da boste vključujejo prototip vrhu. 1176 01:01:42,370 --> 01:01:45,750 >> Toda v tem primeru je bilo tako kratek da sem se počutil, da sem lahko samo 1177 01:01:45,750 --> 01:01:47,260 vključiti na vrhu je glavni. 1178 01:01:47,260 --> 01:01:51,170 Nisem morajo imeti prototip, saj je že napisano zgoraj. 1179 01:01:51,170 --> 01:01:55,430 Torej, vse delam na mojem glavno funkcijo ustvarja celo število x je enako 10. 1180 01:01:55,430 --> 01:02:00,490 Kličem mojo funkcionalnem funkcijo, in nato tiskanje do nekaj. 1181 01:02:00,490 --> 01:02:02,840 >> In potem je to dejansko kaj funkcijska počne. 1182 01:02:02,840 --> 01:02:04,340 Vi želeli, da razmišljajo skozi to. 1183 01:02:04,340 --> 01:02:05,423 Ker je malce zapleteno. 1184 01:02:05,423 --> 01:02:07,220 To je zelo, zelo težavno, pravzaprav. 1185 01:02:07,220 --> 01:02:09,549 Pomislite, skozi kaj je to Program bo prikazovanje. 1186 01:02:09,549 --> 01:02:10,840 Dam ti fantje dve minuti. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Dobri pogovori? 1189 01:03:37,891 --> 01:03:38,853 >> OBČINSTVO: Ja. 1190 01:03:38,853 --> 01:03:39,815 >> Profesor: Ja. 1191 01:03:39,815 --> 01:03:42,220 Vse je v redu, tako da je to težavno z razlogom. 1192 01:03:42,220 --> 01:03:44,845 In to je razlog, zakaj sem si želel, da bi to pozornost vsakogar. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Ali kdo želel, da bi me predlog,, poskus? 1195 01:03:51,147 --> 01:03:52,230 Kaj bi to izpisal? 1196 01:03:52,230 --> 01:03:53,930 Popolnoma v redu, če se motiš. 1197 01:03:53,930 --> 01:03:55,619 Ja? 1198 01:03:55,619 --> 01:03:59,483 >> OBČINSTVO: Mislim, da je 100 in nato 10 na dveh ločenih linij. 1199 01:03:59,483 --> 01:04:00,940 >> Profesor: In 10? 1200 01:04:00,940 --> 01:04:03,154 Ima kdo kakšne druge ugibanja? 1201 01:04:03,154 --> 01:04:04,150 Ja? 1202 01:04:04,150 --> 01:04:09,040 >> OBČINSTVO: Mogoče samo 10, ker funkcijska se ne vrača ničesar? 1203 01:04:09,040 --> 01:04:11,610 >> Profesor: OK, tako da smo imajo guess številka ena 1204 01:04:11,610 --> 01:04:14,990 je, da je ugibanje številka dve le, da bo izpisal 10. 1205 01:04:14,990 --> 01:04:17,623 Ima kdo kakšne druge ugibanja? 1206 01:04:17,623 --> 01:04:19,654 V REDU. 1207 01:04:19,654 --> 01:04:21,070 Torej, kaj je sprehod skozi to, kajne? 1208 01:04:21,070 --> 01:04:23,903 Kadarkoli boste dobili kos kode, Samo ne gledate na to in se podobno, 1209 01:04:23,903 --> 01:04:25,060 ah, to je toliko stvari! 1210 01:04:25,060 --> 01:04:26,460 Tako sem zmeden! 1211 01:04:26,460 --> 01:04:28,220 Kot, pomiri se dol. 1212 01:04:28,220 --> 01:04:31,602 Samo vem, da si lahko samo pogledati skozi kodo po vrsticah. 1213 01:04:31,602 --> 01:04:32,310 To je vse, kar je. 1214 01:04:32,310 --> 01:04:33,840 To je kot branje knjige. 1215 01:04:33,840 --> 01:04:38,000 >> Torej, s katero koli funkcijo, smo se vedno začne na glavni. 1216 01:04:38,000 --> 01:04:40,860 Torej bomo začeti na int glavno praznino, 1217 01:04:40,860 --> 01:04:43,010 tudi v program, že spuščajo, kajne? 1218 01:04:43,010 --> 01:04:45,070 Začetek ob v glavnem praznino. 1219 01:04:45,070 --> 01:04:48,030 Int x enaka 10. 1220 01:04:48,030 --> 01:04:50,400 >> Torej bom izbrisati to. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Grem pripraviti spomin samo zato, da vas fantje lahko nekako vidim, kaj se dogaja. 1223 01:04:58,470 --> 01:05:02,190 >> Ne pozabite, tukaj imamo kup? 1224 01:05:02,190 --> 01:05:05,810 Tu imamo kup nekje tukaj. 1225 01:05:05,810 --> 01:05:07,470 Stack odraste, kajne? 1226 01:05:07,470 --> 01:05:10,150 In v skladovnice, imate omrežni delujejo kot tudi 1227 01:05:10,150 --> 01:05:12,230 vse Omrežni lokalnih spremenljivk. 1228 01:05:12,230 --> 01:05:14,310 >> Torej, tukaj, int x enaka 10. 1229 01:05:14,310 --> 01:05:17,670 V naši glavni funkciji smo ustvarjanje spremenljivko x. 1230 01:05:17,670 --> 01:05:20,590 Mi smo nastavitev, ki je enak 10. 1231 01:05:20,590 --> 01:05:24,200 Tukaj imaš nekaj x, in ste nastavitev, ki je enak 10, desno, 1232 01:05:24,200 --> 01:05:25,400 v glavnem. 1233 01:05:25,400 --> 01:05:27,430 Vsakdo dobro? 1234 01:05:27,430 --> 01:05:28,070 >> Funkcija. 1235 01:05:28,070 --> 01:05:30,330 Torej sedaj, v naših glavnih funkcija, bomo kliče 1236 01:05:30,330 --> 01:05:31,810 funkcija, ki smo jih napisal zgoraj. 1237 01:05:31,810 --> 01:05:34,550 Tako da smo zdaj vnesite drugo funkcijo. 1238 01:05:34,550 --> 01:05:40,120 Bomo ustvarili drugo spremenljivka int x 100. 1239 01:05:40,120 --> 01:05:42,410 Kaj se dogaja tu na kupu? 1240 01:05:42,410 --> 01:05:46,980 Kaj se zgodi, ko pokličete funkcija, ki ustvarja nove spremenljivke? 1241 01:05:46,980 --> 01:05:50,038 Kaj se zgodi tu na kupu? 1242 01:05:50,038 --> 01:05:52,134 >> OBČINSTVO: [neslišno] piloti na vrhu? 1243 01:05:52,134 --> 01:05:52,800 Profesor: Ja. 1244 01:05:52,800 --> 01:05:54,050 Torej je dejansko ustvari kopijo. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 In to nekako piloti na vrhu. 1247 01:05:57,740 --> 01:06:00,700 Pomislite na stack-- kup knjig, kup ničesar. 1248 01:06:00,700 --> 01:06:06,520 Piloti na vrhu, najprej v last ven, zadnji noter, prvi ven. 1249 01:06:06,520 --> 01:06:08,471 >> Tako se dogaja, da ustvarite x tukaj. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> To se dogaja, da imajo vse funcs spremenljivke. 1252 01:06:14,450 --> 01:06:14,950 Great. 1253 01:06:14,950 --> 01:06:20,980 Torej, zdaj imamo dva različna x, da predstavljata dve zelo različni stvari. 1254 01:06:20,980 --> 01:06:24,470 Potem bomo za tiskanje ven celo število x. 1255 01:06:24,470 --> 01:06:26,430 Torej, kaj je tiskanje 100, kajne? 1256 01:06:26,430 --> 01:06:29,389 Ker tukaj je 100. 1257 01:06:29,389 --> 01:06:31,680 Tako, da je prva stvar, da se dogaja, da natisnete. 1258 01:06:31,680 --> 01:06:35,710 Ker je ta funkcija vrne nič, Zdaj to funkcijo, da je linija v glavnem 1259 01:06:35,710 --> 01:06:37,070 je naredil. 1260 01:06:37,070 --> 01:06:39,160 Vsak dober z menoj tako daleč? 1261 01:06:39,160 --> 01:06:43,034 >> Torej, zdaj smo skozi dve od Tri linije naše glavno funkcijo. 1262 01:06:43,034 --> 01:06:44,450 Zdaj gremo v tretji vrstici. 1263 01:06:44,450 --> 01:06:46,350 Bomo printf. 1264 01:06:46,350 --> 01:06:48,222 Kaj je to x v glavni? 1265 01:06:48,222 --> 01:06:49,263 Kaj to predstavlja? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> Kakšno vrednost je x zdaj? 1268 01:06:54,280 --> 01:06:55,220 >> OBČINSTVO: 100. 1269 01:06:55,220 --> 01:06:56,799 >> Profesor: To je 100? 1270 01:06:56,799 --> 01:06:57,590 OBČINSTVO: Still 10. 1271 01:06:57,590 --> 01:06:58,878 Profesor: Still 10. 1272 01:06:58,878 --> 01:07:00,870 Ja. 1273 01:07:00,870 --> 01:07:06,810 Saj se spomnite, v Naša funkcijska, x 100. 1274 01:07:06,810 --> 01:07:09,690 Ampak, če se vrnemo nazaj na naše glavno funkcijo, 1275 01:07:09,690 --> 01:07:12,440 da spremenljivka je shranjena v drugo mesto na naši dimnika. 1276 01:07:12,440 --> 01:07:16,250 >> Torej sedaj moramo iti nazaj na Glavni stack, omrežje lokalnih spremenljivk. 1277 01:07:16,250 --> 01:07:18,460 In tu je x enako 10. 1278 01:07:18,460 --> 01:07:20,300 In tako bomo natisniti 10. 1279 01:07:20,300 --> 01:07:22,530 >> Torej je bila popolnoma prav. 1280 01:07:22,530 --> 01:07:25,053 Bova imela proizvodnja 100 in 10. 1281 01:07:25,053 --> 01:07:25,553 Ja? 1282 01:07:25,553 --> 01:07:28,700 OBČINSTVO: Ko malloc ali je to, heap ali Sveženj, ki je [neslišno]? 1283 01:07:28,700 --> 01:07:31,950 Profesor: Ko malloc, ste ob pomnilnika iz kopice 1284 01:07:31,950 --> 01:07:32,830 in dodeljevanje sredstev. 1285 01:07:32,830 --> 01:07:34,950 Tako da ne boste imeli zmešnjavo s katero koli od tega. 1286 01:07:34,950 --> 01:07:38,100 Torej, mislim, da je večji takeaway Tukaj je nekaj, kar se imenuje področje. 1287 01:07:38,100 --> 01:07:39,650 >> Za tiste, ki ste bili na seja pregled sinoči, 1288 01:07:39,650 --> 01:07:41,080 smo se pogovarjali na kratko o tem. 1289 01:07:41,080 --> 01:07:45,380 Obseg določa, kako in ko obstajajo vaše spremenljivke. 1290 01:07:45,380 --> 01:07:48,050 Ali v kakšnem okvirji storiti obstajajo vaše spremenljivke. 1291 01:07:48,050 --> 01:07:51,690 >> Precej pravilo splošno je, vaš variables-- če jih ustvarili 1292 01:07:51,690 --> 01:07:56,660 znotraj kodrasti braces-- obstajajo le znotraj teh zavitimi oklepaji. 1293 01:07:56,660 --> 01:08:00,312 >> Tako na primer v naši funkciji funkcijska, vidiš ti dve naramnice. 1294 01:08:00,312 --> 01:08:02,020 Če želite ustvariti kaj znotraj njega, 1295 01:08:02,020 --> 01:08:06,500 verjetno so vse, kar počnete, je ustvarjanje skladovnico in shranjevanje da obstaja. 1296 01:08:06,500 --> 01:08:07,430 Ista stvar v glavnem. 1297 01:08:07,430 --> 01:08:09,950 To je samo shranjeni znotraj glavnega. 1298 01:08:09,950 --> 01:08:13,560 >> Prav tako si želim, da bi zelo, zelo previdni tukaj. 1299 01:08:13,560 --> 01:08:18,310 Ker je področje tudi posoja sama različnih primerih. 1300 01:08:18,310 --> 01:08:25,950 Tako na primer za zanka, za int i enak 0. 1301 01:08:25,950 --> 01:08:28,460 I je manj kot, ne vem, 10. 1302 01:08:28,460 --> 01:08:32,111 I plus plus. 1303 01:08:32,111 --> 01:08:34,560 In imaš kodo znotraj njega, kajne? 1304 01:08:34,560 --> 01:08:38,830 >> Kje pa je ta spremenljivka, i, pravzaprav le obstajajo? 1305 01:08:38,830 --> 01:08:40,510 Le znotraj vaše zanko. 1306 01:08:40,510 --> 01:08:43,640 Torej Stavim mnogi od vas fantje imajo verjetno naleteli na to napako, ko 1307 01:08:43,640 --> 01:08:45,930 delaš programe v vaših psets. 1308 01:08:45,930 --> 01:08:49,990 Koliko od vas fantje so poskušali uporabiti i zunaj za zanke in prišlo do napake? 1309 01:08:49,990 --> 01:08:53,310 Kot unreferenced števil ali nekaj takega? 1310 01:08:53,310 --> 01:08:56,069 >> Razlog, zakaj se to zgodi je zato, ker tukaj ste 1311 01:08:56,069 --> 01:08:59,109 ustvariti nekaj, kar samo obstaja znotraj vaše zanko. 1312 01:08:59,109 --> 01:09:01,972 In če poskusite, da ga uporabljate, jaz ne dejansko obstaja zunaj njega. 1313 01:09:01,972 --> 01:09:04,930 Torej v bistvu računalnik rekel, sem Ne vem, kaj govoriš. 1314 01:09:04,930 --> 01:09:08,689 Vse kar vem je, da je bila i tukaj, zdaj pa ni več. 1315 01:09:08,689 --> 01:09:12,580 >> Torej, če bi bil jaz ustvariti za zanke znotraj, kajne? 1316 01:09:12,580 --> 01:09:19,080 In bom ustvariti drugo, kot int j, in imajo to storiti karkoli. 1317 01:09:19,080 --> 01:09:23,689 In imate kodo notranjost da je zanka, j obstaja samo tukaj. 1318 01:09:23,689 --> 01:09:26,029 Ampak da obstaja tudi znotraj i. 1319 01:09:26,029 --> 01:09:29,310 In tako obstaja samo j v to zanko, 1320 01:09:29,310 --> 01:09:33,850 ker jaz obstaja v vso stvar. 1321 01:09:33,850 --> 01:09:34,500 >> Vsakdo jasno? 1322 01:09:34,500 --> 01:09:37,416 Ista stvar s pogojnimi izjavami Če želite ustvariti ničesar. 1323 01:09:37,416 --> 01:09:40,390 Ista stvar z while zanke če želite ustvariti ničesar. 1324 01:09:40,390 --> 01:09:42,390 To je nekaj, kar bi bilo zelo, zelo previdni. 1325 01:09:42,390 --> 01:09:45,681 Torej, to je bil res dober problem v občutek, da se dokaže, dve stvari. 1326 01:09:45,681 --> 01:09:47,160 Najprej je pokazala, obseg. 1327 01:09:47,160 --> 01:09:49,550 In je dokazano tudi dodeljevanje pomnilnika. 1328 01:09:49,550 --> 01:09:54,130 Saj bi vidva vedeti, da Funkcije rastejo navzgor v plasteh. 1329 01:09:54,130 --> 01:09:56,710 In da ko pokličete Funkcije, ste ustvarili 1330 01:09:56,710 --> 01:09:59,060 v bistvu nova kup pomnilnika. 1331 01:09:59,060 --> 01:10:02,100 To je zelo drugačen od kaj vaš omrežni spomin. 1332 01:10:02,100 --> 01:10:03,300 Ja. 1333 01:10:03,300 --> 01:10:03,800 Uh! 1334 01:10:03,800 --> 01:10:05,470 Vsakdo OK na to? 1335 01:10:05,470 --> 01:10:06,750 To je bilo zmedeno. 1336 01:10:06,750 --> 01:10:09,380 Zelo dobre teme iti čez, ker ste verjetno 1337 01:10:09,380 --> 01:10:12,255 bo dobil nekaj trikov stvari, kot da je na kvizu. 1338 01:10:12,255 --> 01:10:13,350 Ja. 1339 01:10:13,350 --> 01:10:13,850 Cool. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Bom dal dobiš 100 na eni linijo in nato 10 na drugi strani. 1342 01:10:18,430 --> 01:10:21,468 Ja, zelo dobro. 1343 01:10:21,468 --> 01:10:26,350 >> OK, zdaj se bodo fantje dobili priložnost, da se TAS. 1344 01:10:26,350 --> 01:10:30,600 Dobiš odgovoriti na vsa lepa e-poštna sporočila, ki sem včasih. 1345 01:10:30,600 --> 01:10:34,290 >> Torej, dragi Andi, vidim, mislim, da je nekaj narobe z mojim prevajalnik. 1346 01:10:34,290 --> 01:10:37,910 Prepričan sem, da je moja koda pravilna, ampak jaz vztrajati pridobivanje napako segmentacije 1347 01:10:37,910 --> 01:10:39,074 vsakič, ko tečem. 1348 01:10:39,074 --> 01:10:39,740 Kaj se dogaja? 1349 01:10:39,740 --> 01:10:42,844 Prosim, pomagajte, veliko ljubezni. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Če vidva dobila nekaj podobnega da, kako bi se odzvali? 1352 01:10:49,410 --> 01:10:51,860 To so pravzaprav zelo pogosti vprašanja, vas bomo vprašali. 1353 01:10:51,860 --> 01:10:54,090 Je, če vam bom dal scenarij, smo nam bo dal 1354 01:10:54,090 --> 01:10:56,350 vaš najboljši ugibati, kaj se dogaja. 1355 01:10:56,350 --> 01:11:00,710 Vsakdo ima stab, kaj se dogaja? 1356 01:11:00,710 --> 01:11:02,654 Ja? 1357 01:11:02,654 --> 01:11:06,056 >> OBČINSTVO: Mogoče dereferenced null, nekaj takega kot kazalec 1358 01:11:06,056 --> 01:11:08,924 se kaže na nekaj null. 1359 01:11:08,924 --> 01:11:11,590 Profesor: Ja, to bi biti Primer, ko bi se to zgodilo. 1360 01:11:11,590 --> 01:11:14,467 Toda kaj je večja slika o tem, kaj se dogaja tukaj? 1361 01:11:14,467 --> 01:11:17,050 OBČINSTVO: Je to skušaš za dostop do pomnilnika, da niste 1362 01:11:17,050 --> 01:11:18,175 naj bi imeli dostop do? 1363 01:11:18,175 --> 01:11:19,200 Profesor: Točno tako. 1364 01:11:19,200 --> 01:11:24,800 Torej razmišljati o krivdi SEG, sivo omejitve, omejeno območje v spomin 1365 01:11:24,800 --> 01:11:27,780 da ne bi smeli biti ganljivo. 1366 01:11:27,780 --> 01:11:31,670 >> Torej, precej ko poskušate da index-- kot na primer, 1367 01:11:31,670 --> 01:11:34,110 da ste razglasitvi Niz od nič do devet. 1368 01:11:34,110 --> 01:11:37,360 Ampak poskusite dotakniti, da 10th vrednost, nimate dostopa do tega. 1369 01:11:37,360 --> 01:11:38,694 Ker niste je prijavil. 1370 01:11:38,694 --> 01:11:40,943 In tako je računalnik dogaja gledati, da je bilo podobno, 1371 01:11:40,943 --> 01:11:43,440 uh oh, skušaš iti izven meja indeksa. 1372 01:11:43,440 --> 01:11:45,270 Bom vam napaka segmentacijo. 1373 01:11:45,270 --> 01:11:46,590 >> Pomislite kot segmenta, kajne? 1374 01:11:46,590 --> 01:11:49,665 Dodaten segmenta, je napaka Ko poskušate kršijo nekaj 1375 01:11:49,665 --> 01:11:50,790 in da ne bi smelo biti. 1376 01:11:50,790 --> 01:11:53,660 Segmentacija napaka je kadarkoli poskusite dotakniti stvari 1377 01:11:53,660 --> 01:11:54,970 da ne bi smeli biti ganljivo. 1378 01:11:54,970 --> 01:11:56,815 >> Tako pogosti primeri so indeks. 1379 01:11:56,815 --> 01:11:58,940 Seveda, če ste poskušali na dotik, ki je nična, 1380 01:11:58,940 --> 01:12:00,220 da bi tudi deloval kot dobro. 1381 01:12:00,220 --> 01:12:02,300 Če je vaš kazalec je poskušal dotikajte stvari, ki jih ne sme dotikati, 1382 01:12:02,300 --> 01:12:03,730 da bi lahko tako deluje kot dobro. 1383 01:12:03,730 --> 01:12:07,120 Najpogosteje boste videti v matriki. 1384 01:12:07,120 --> 01:12:07,740 Vsakdo dobro? 1385 01:12:07,740 --> 01:12:10,374 >> OBČINSTVO: Torej, če želite dostopati do 10. točke 1386 01:12:10,374 --> 01:12:12,290 in tam je le omejitev devetih ali kaj podobnega. 1387 01:12:12,290 --> 01:12:13,160 >> Profesor: Ja, točno. 1388 01:12:13,160 --> 01:12:13,660 Precej. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Cool. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Dragi Andi. 1393 01:12:19,920 --> 01:12:23,440 Torej imamo to čudovito Stvari se imenuje vrste. 1394 01:12:23,440 --> 01:12:25,472 Če Merge sort-- kot mi žaga na primer pri 1395 01:12:25,472 --> 01:12:27,180 David storil celoten stvar v class-- zakaj, 1396 01:12:27,180 --> 01:12:29,760 če je tako veliko hitreje kot katerokoli drugo vrst, 1397 01:12:29,760 --> 01:12:33,310 Zakaj sploh trudim vedoč katerokoli vrst? 1398 01:12:33,310 --> 01:12:35,100 >> Kaj je to vprašanje res vprašam vas? 1399 01:12:35,100 --> 01:12:36,659 Kaj je tri word-- 1400 01:12:36,659 --> 01:12:37,950 OBČINSTVO: Kaj je trade-off? 1401 01:12:37,950 --> 01:12:38,530 Profesor: Točno tako. 1402 01:12:38,530 --> 01:12:39,946 To je tisto, kar je vprašanje prosi. 1403 01:12:39,946 --> 01:12:43,682 Kaj je kompromis med Zlivanjem verzi koli druge vrste? 1404 01:12:43,682 --> 01:12:45,850 >> OBČINSTVO: meni spomin, kajne? 1405 01:12:45,850 --> 01:12:47,720 >> PROFESOR: Ali vas pojasnjujejo, da malo več? 1406 01:12:47,720 --> 01:12:49,490 Najprej dajmo razložiti trgovino Merge. 1407 01:12:49,490 --> 01:12:50,970 Kako Merge nekako deluje? 1408 01:12:50,970 --> 01:12:55,220 >> OBČINSTVO: Torej, da deluje tako, delitvijo vse v pol 1409 01:12:55,220 --> 01:13:00,660 nato pa ga je dala skupaj in prerazporeditev v redu, 1410 01:13:00,660 --> 01:13:02,862 tako kot vsakič, ko se združita sklopov. 1411 01:13:02,862 --> 01:13:03,820 Profesor: Precej. 1412 01:13:03,820 --> 01:13:06,861 Tako da sem lahko to potegnili, vendar pa bi Vzemi me za pet minut, da ga potegnili. 1413 01:13:06,861 --> 01:13:10,220 Ozremo nazaj na rubriko diapozitive kjer smo pokrili z zlivanjem. 1414 01:13:10,220 --> 01:13:10,790 Točno tako. 1415 01:13:10,790 --> 01:13:13,406 >> Torej pot zlivanjem dela je razdeli stvari na pol, 1416 01:13:13,406 --> 01:13:15,780 in potem je samo se osredotoča na Prvi vrednosti vsi 1417 01:13:15,780 --> 01:13:17,000 in razvrsti le da. 1418 01:13:17,000 --> 01:13:20,364 Nenehno ustvarja nove nize in postavlja stvari bolj in bolj v redu. 1419 01:13:20,364 --> 01:13:23,030 In tako, ko da je res, res hitro, ker it's-- veste, 1420 01:13:23,030 --> 01:13:25,380 binarna iskanje je n log n. 1421 01:13:25,380 --> 01:13:27,880 Ste ustvarili tako veliko Različni nizi, da ste 1422 01:13:27,880 --> 01:13:29,700 s pomočjo velike količine pomnilnika. 1423 01:13:29,700 --> 01:13:33,080 In tako, medtem ko je hitrejši, trgovina off tukaj je, da ste z uporabo več pomnilnika. 1424 01:13:33,080 --> 01:13:38,490 >> In tako, namig, vrste in iskanja bili zajeti veliko bolj letos 1425 01:13:38,490 --> 01:13:41,610 kot so bili v letih prejšnjih. 1426 01:13:41,610 --> 01:13:45,100 Vi bi morali videti, da je zato na kviza odražajo. 1427 01:13:45,100 --> 01:13:49,160 Jaz bi definitivno nekaj časa dogaja nad tisto vseh različnih vrst 1428 01:13:49,160 --> 01:13:52,320 so, kako binarno iskanje, kako linearno iskanje dela. 1429 01:13:52,320 --> 01:13:54,750 Kako se morda psevdokoda kodo tiste ven. 1430 01:13:54,750 --> 01:13:55,950 Kakšne so teče čas? 1431 01:13:55,950 --> 01:13:59,210 Nekaj ​​podobnega se izvajajo časih je zelo enostavno prepišite mirno note stanja, 1432 01:13:59,210 --> 01:13:59,710 prav? 1433 01:13:59,710 --> 01:14:01,420 >> To je res težko, ko ste v sredini test 1434 01:14:01,420 --> 01:14:02,390 in boste morali ugotoviti, da je ven. 1435 01:14:02,390 --> 01:14:03,160 Ga kopirajte navzdol. 1436 01:14:03,160 --> 01:14:05,550 Garantiram vam, da ste bo treba vedeti, da. 1437 01:14:05,550 --> 01:14:06,860 Kaj so kompromisi? 1438 01:14:06,860 --> 01:14:10,064 V najslabšem primeru, najboljši scenariji primerov za vse od njih, zelo spoznali. 1439 01:14:10,064 --> 01:14:10,564 Ja? 1440 01:14:10,564 --> 01:14:12,730 >> OBČINSTVO: Ali moramo vedo, kako kodo zlivanjem? 1441 01:14:12,730 --> 01:14:15,470 Like, ne moramo spomnite rekurzivno? 1442 01:14:15,470 --> 01:14:18,950 >> Profesor: jaz zelo dvomim, samo ker je kot precej zapletena. 1443 01:14:18,950 --> 01:14:22,282 Ampak to ne sme biti neizvedljiv, če bomo vas prosimo, da uporabite psevdokoda ga ven. 1444 01:14:22,282 --> 01:14:22,781 Ja. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Ja, OK, še eno. 1447 01:14:29,170 --> 01:14:31,387 To bi lahko prišli v si zadnji košček v bit. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 Ja? 1450 01:14:43,090 --> 01:14:44,930 Ali ste vsi slišali? 1451 01:14:44,930 --> 01:14:48,360 >> OK, tako da precej najprej Vse, kar vrsta programa 1452 01:14:48,360 --> 01:14:51,000 bi vam daje moč, kot je ta? 1453 01:14:51,000 --> 01:14:54,350 Ne pozabite, smo vas prosili, da spoznajo Ta nova vrsta debugging funkcije? 1454 01:14:54,350 --> 01:14:57,340 Kako je bilo ime tega? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, desno 1456 01:14:59,460 --> 01:15:02,600 >> To je bil program, kjer Lahko pokličete, da bi 1457 01:15:02,600 --> 01:15:05,940 spremljate vse spomin, ki vas uporabo v vašem programu in se dogaja. 1458 01:15:05,940 --> 01:15:11,090 Torej, če imaš nekaj, kot so, definitivno izgubili, 40 bajtov v enem bloku. 1459 01:15:11,090 --> 01:15:14,870 Verjetno niste spomnimo, da ga osvobodi. 1460 01:15:14,870 --> 01:15:18,710 Ker če uporabljate bajtov pomnilnika, to pomeni, da ste pogledali ta pomnilnik, 1461 01:15:18,710 --> 01:15:20,240 vendar niste mogli sprostiti. 1462 01:15:20,240 --> 01:15:21,948 Tako da boste želeli, da bi prepričajte, da ste tudi 1463 01:15:21,948 --> 01:15:31,420 uporabo free-- da je function-- osvoboditi vse 1464 01:15:31,420 --> 01:15:34,930 pomnilnika prerazporedi s knjižnične funkcije malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Cool. 1466 01:15:35,500 --> 01:15:37,140 Torej ta diapozitiv, ga bom imel gor. 1467 01:15:37,140 --> 01:15:41,050 To je povsod v veliko predavanja, v veliko rubriki diapozitivov. 1468 01:15:41,050 --> 01:15:44,254 Si res želite, da se prepričajte, ste samo vem vse to. 1469 01:15:44,254 --> 01:15:47,170 Bodisi v zapisku stanja ali če vas želite zapomniti, vas prosimo, da. 1470 01:15:47,170 --> 01:15:48,836 To je res, res, res pomembno. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Prav tako zelo dobro Vprašanje, ki se lahko vprašamo. 1473 01:15:56,890 --> 01:16:00,320 Zakaj je izbirnem sort-- pogled na Izbira sort-- vse runtimes 1474 01:16:00,320 --> 01:16:02,060 so n kvadrat. 1475 01:16:02,060 --> 01:16:06,714 Ne glede na to, kako seznam gre za si kot, zakaj je izbor sort-- 1476 01:16:06,714 --> 01:16:08,630 Dam ti fantje 30 drugi mislijo o tem. 1477 01:16:08,630 --> 01:16:10,700 Ker to je nekako zmedeno. 1478 01:16:10,700 --> 01:16:12,710 Gre za nekaj konceptualno misel. 1479 01:16:12,710 --> 01:16:16,470 Zakaj bi časi Naklada biti enaka v tako najslabše in najboljše scenarije primerov? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> Ja? 1482 01:16:30,000 --> 01:16:38,084 >> OBČINSTVO: Ker Selection nekako vsak položaj ali prostor v tem majhnem polju 1483 01:16:38,084 --> 01:16:40,350 stvar ali karkoli. 1484 01:16:40,350 --> 01:16:44,430 Torej, tudi v najboljšem scenariju, tudi če je popolnoma urejeno, 1485 01:16:44,430 --> 01:16:47,380 da bi še vedno morali biti kot, OK, enega. 1486 01:16:47,380 --> 01:16:49,000 V mojem prvem mestu imam eno. 1487 01:16:49,000 --> 01:16:50,250 In iti skozi vse od njih. 1488 01:16:50,250 --> 01:16:51,249 OK, ena je najmanjša. 1489 01:16:51,249 --> 01:16:53,053 In potem gre zopet in podobno, v redu, dva 1490 01:16:53,053 --> 01:16:54,594 je najmanjši od vseh stvari. 1491 01:16:54,594 --> 01:16:56,804 Vendar je še vedno na preveriti vsak eno. 1492 01:16:56,804 --> 01:16:57,470 Profesor: Ja. 1493 01:16:57,470 --> 01:17:00,490 Tako, na primer, recimo, smo seznam, že razporejene, 1494 01:17:00,490 --> 01:17:03,390 matrika ena do pet. 1495 01:17:03,390 --> 01:17:07,100 Tako, da je izbor sort, ki gre skozi, da preveri te dve. 1496 01:17:07,100 --> 01:17:08,234 Potem pa preveri ta dva. 1497 01:17:08,234 --> 01:17:09,650 In potem se preverja, in to preveri. 1498 01:17:09,650 --> 01:17:13,285 To ohranja preverjanje vseh, ne glede na to, ali 1499 01:17:13,285 --> 01:17:14,160 to je dejansko razporejene. 1500 01:17:14,160 --> 01:17:16,450 Ker je to preprosto način neke deluje. 1501 01:17:16,450 --> 01:17:19,530 >> In tako je to vprašanje nekako kot konceptualno vprašanje, bomo vprašali. 1502 01:17:19,530 --> 01:17:21,430 Kje prvič, da si Veš kaj Selection vrste 1503 01:17:21,430 --> 01:17:23,304 je prav, da se lahko odgovoriti na vprašanje. 1504 01:17:23,304 --> 01:17:26,200 Moraš biti sposoben razumeti konceptualno, kaj se dogaja. 1505 01:17:26,200 --> 01:17:30,760 In potem ga lahko uporabljajo in mislim, OK kaj je samo predstavljate najslabšo možnost. 1506 01:17:30,760 --> 01:17:32,230 Oni so vsi v padajočem vrstnem redu. 1507 01:17:32,230 --> 01:17:33,290 Kako bi bilo, da to vpliva? 1508 01:17:33,290 --> 01:17:34,650 >> Kaj pa, če je to naraščajočem vrstnem redu? 1509 01:17:34,650 --> 01:17:35,640 Če je to že urejeno? 1510 01:17:35,640 --> 01:17:37,240 Kako bi to vplivalo na runtimes? 1511 01:17:37,240 --> 01:17:40,270 In potem Izbira vrste, boste opazili, da ne dejansko pomembno. 1512 01:17:40,270 --> 01:17:43,500 Ker ste preverjanje vse vrednosti glede na to, kaj se dogaja. 1513 01:17:43,500 --> 01:17:45,810 >> In tako dobre stvari, da se spomniš. 1514 01:17:45,810 --> 01:17:50,290 Zakaj nekatere vrste razlikujejo od drugih in kako najbolje in najslabše scenarije primerov 1515 01:17:50,290 --> 01:17:52,740 bi vplival na vseh. 1516 01:17:52,740 --> 01:17:56,700 >> Bom res hit v vrste ker je, da bo na kvizu. 1517 01:17:56,700 --> 01:17:57,199 Ja. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 V REDU. 1520 01:18:01,320 --> 01:18:05,590 Tam je šest minut tekme. 1521 01:18:05,590 --> 01:18:09,880 Lahko vzamem tri minute vprašanj. 1522 01:18:09,880 --> 01:18:12,290 Lahko tudi visi okoli za kot 20 minut po oddelku 1523 01:18:12,290 --> 01:18:13,850 če želite, da postavljajo vprašanja, kot dobro. 1524 01:18:13,850 --> 01:18:16,330 Ali kdo ima samo res kratek vprašanja ali konceptualna vprašanja 1525 01:18:16,330 --> 01:18:17,360 oni nejasnosti prav zdaj? 1526 01:18:17,360 --> 01:18:17,832 Ja? 1527 01:18:17,832 --> 01:18:19,720 >> OBČINSTVO: Lahko govorimo malo bit o bitni operaterjev? 1528 01:18:19,720 --> 01:18:20,280 >> Profesor: Ja. 1529 01:18:20,280 --> 01:18:22,446 Torej bitni operaterji nekaj, kar verjetno 1530 01:18:22,446 --> 01:18:24,170 lahko samo želim, da dajo na svoj list. 1531 01:18:24,170 --> 01:18:27,540 Torej quickly-- Nočem iti preveč v globino 1532 01:18:27,540 --> 01:18:31,164 ker Harvardu, v svojem pregledu seje, ga pokriva precej dobro. 1533 01:18:31,164 --> 01:18:33,080 Bitni operator, tam je pet izmed njih, kajne? 1534 01:18:33,080 --> 01:18:41,370 >> Tam je to, kar je x ali funkcija, tam je ampersand, ki je in. 1535 01:18:41,370 --> 01:18:44,050 Cevi, ki je ali. 1536 01:18:44,050 --> 01:18:46,790 In potem imate dve različne vrste izmenah. 1537 01:18:46,790 --> 01:18:50,610 >> Če ti dam dve vrednosti, bo po Vam dam, kot, ena in ena. 1538 01:18:50,610 --> 01:18:52,390 Kaj bi to ocenila za? 1539 01:18:52,390 --> 01:18:55,490 Če sem ti dal res in res, res? 1540 01:18:55,490 --> 01:18:56,930 Kaj je pravilna ali napačna? 1541 01:18:56,930 --> 01:18:57,830 Še vedno velja, kajne? 1542 01:18:57,830 --> 01:18:59,762 Ker tam je ali. 1543 01:18:59,762 --> 01:19:01,220 Bomo najverjetneje vam številke. 1544 01:19:01,220 --> 01:19:03,780 Torej, ne pozabite, ena enaka Res, nič enaka false. 1545 01:19:03,780 --> 01:19:07,407 In vam lahko dala te stvari in vas prosim, da nam poveste, kaj se dogaja. 1546 01:19:07,407 --> 01:19:10,240 Harvard ga zajema v prvi 10 minut njihovega študijskega seje 1547 01:19:10,240 --> 01:19:11,230 res, res dobro. 1548 01:19:11,230 --> 01:19:14,260 Torej si fantje želijo, da bi prepričani, da se ozremo na to. 1549 01:19:14,260 --> 01:19:16,387 >> OBČINSTVO: Je pisa5 bo na kvizu? 1550 01:19:16,387 --> 01:19:16,970 Profesor: Ne 1551 01:19:16,970 --> 01:19:18,240 Niti ne poglej pisa5 zdaj. 1552 01:19:18,240 --> 01:19:18,810 Težko je. 1553 01:19:18,810 --> 01:19:22,830 Samo niti ne trudim gledaš pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Vendar pa, kot nekaj namigov in predlogi, sem 1555 01:19:25,665 --> 01:19:28,320 Predlagam začnete pisa5 takoj, ko je kviz konec. 1556 01:19:28,320 --> 01:19:30,319 To bo najtežje teden, potem pa vidva 1557 01:19:30,319 --> 01:19:34,590 bo to opravil na hribih voznega zeleno in mladičke, 1558 01:19:34,590 --> 01:19:36,115 in to je v redu. 1559 01:19:36,115 --> 01:19:39,810 >> Ta razred postane pomemben lažje po petem pset. 1560 01:19:39,810 --> 01:19:41,560 OBČINSTVO: Uradne ure so Nedelja, ponedeljek? 1561 01:19:41,560 --> 01:19:44,260 Profesor: Ja, tako uradnih ur bo nedelja na ponedeljek za pset. 1562 01:19:44,260 --> 01:19:47,009 Uradne ure nocoj v bistvu bo zgolj pregled za kviz. 1563 01:19:47,009 --> 01:19:50,350 Če želi kdo, da pridejo in vprašajte TAS vprašanje, bomo tam. 1564 01:19:50,350 --> 01:19:53,220 >> Jaz bom morda še eno vprašanje če je vprašanje, kdo? 1565 01:19:53,220 --> 01:19:53,809 Ja? 1566 01:19:53,809 --> 01:19:55,850 OBČINSTVO: Ko ste opredeljujejo vozlišča, [neslišno] 1567 01:19:55,850 --> 01:20:00,700 če rečeš vozlišče zvezdo in nato naslednji, počne računalnik samodejno 1568 01:20:00,700 --> 01:20:03,610 razumeti, da ste sklicuje na drugo kazalca? 1569 01:20:03,610 --> 01:20:04,580 >> Profesor: Ne 1570 01:20:04,580 --> 01:20:06,710 >> OBČINSTVO: Moraš relink je [neslišno]? 1571 01:20:06,710 --> 01:20:09,270 >> Profesor: Torej v bistvu struct vozlišča je, ne pozabite, 1572 01:20:09,270 --> 01:20:12,620 to je, kot si ustvarite vozlišče in potem imate kazalec imenovano zraven. 1573 01:20:12,620 --> 01:20:14,630 Vse, kar delaš, je ob struktura tam. 1574 01:20:14,630 --> 01:20:16,387 Imate dodeliti da kazalec nekje. 1575 01:20:16,387 --> 01:20:18,470 Torej računalniki ne veste, kaj to je početje še. 1576 01:20:18,470 --> 01:20:20,250 Moraš ga dejansko dodeliti ko ste ustvarili svoj povezani seznam. 1577 01:20:20,250 --> 01:20:22,170 In to je tisto, kar v glavnem pset 5 bo na. 1578 01:20:22,170 --> 01:20:24,106 Torej, ne skrbi koli od tega zdaj. 1579 01:20:24,106 --> 01:20:26,380 >> OBČINSTVO: Torej nam ni treba osredotoči preveč na seznamu povezavo, samo 1580 01:20:26,380 --> 01:20:27,440 splošna zasnova? 1581 01:20:27,440 --> 01:20:30,980 >> Profesor: Le precej nizov, čakalne vrste, povezava seznami, drevesa, hash tabele. 1582 01:20:30,980 --> 01:20:33,639 Samo bi lahko vedeli, kaj so. 1583 01:20:33,639 --> 01:20:35,680 Ne bomo vprašati vam je všeč kaj posebnega 1584 01:20:35,680 --> 01:20:39,300 zato, ker smo v resnici ne opravljenega pset da pokriva nič od tega ni. 1585 01:20:39,300 --> 01:20:45,540 >> Torej, v zadnjih dveh minutah pred Postavil sem si prost, da bi ubil ta kviz. 1586 01:20:45,540 --> 01:20:49,370 Precej, kot, razmišljati o tem, kako daleč ste fantje prišli v tem razredu. 1587 01:20:49,370 --> 01:20:52,820 >> Spomnim se, ko dva tedna tega razreda, nekateri od vas 1588 01:20:52,820 --> 01:20:55,720 preživijo tri ure pisanje vodo. 1589 01:20:55,720 --> 01:20:57,970 Kako dolgo bo trajalo, fantje pisati vodo zdaj? 1590 01:20:57,970 --> 01:20:59,670 30 sekund, morda? 1591 01:20:59,670 --> 01:21:01,810 Pomisli, koliko vidva se naučili. 1592 01:21:01,810 --> 01:21:04,320 CS je zelo, zelo težko predmet. 1593 01:21:04,320 --> 01:21:06,190 Nobenega dvoma ni o tem. 1594 01:21:06,190 --> 01:21:09,160 Težko je, da je, zakaj nihče ne študira. 1595 01:21:09,160 --> 01:21:10,730 To je samo težko. 1596 01:21:10,730 --> 01:21:11,650 In to je povsem v redu. 1597 01:21:11,650 --> 01:21:14,150 >> In res sem ponosen, da vsakdo je daleč je bilo to. 1598 01:21:14,150 --> 01:21:16,380 Psets niso preproste. 1599 01:21:16,380 --> 01:21:17,790 Vzamejo veliko časa. 1600 01:21:17,790 --> 01:21:22,580 Vidva, ne bom nikoli vas, da napišete igra 15 ali Vigenere na pset. 1601 01:21:22,580 --> 01:21:24,160 Ni potrebe, da samo znorel zaradi tega. 1602 01:21:24,160 --> 01:21:28,080 Vsi smo testiranje tukaj je oceniti Vaše konceptualno znanje, kot tudi 1603 01:21:28,080 --> 01:21:31,524 kot nekaj vaših osnovnih znanj kodiranja. 1604 01:21:31,524 --> 01:21:33,440 Preizkus je namenjen biti res izziv. 1605 01:21:33,440 --> 01:21:36,180 Tako kot je bilo načrtovano za vas, da ne bi dobili 100. 1606 01:21:36,180 --> 01:21:39,880 To je zasnovan tudi za vas, da verjetno ne bi mogli dokončati v 75 minutah. 1607 01:21:39,880 --> 01:21:41,995 In to je povsem v redu. 1608 01:21:41,995 --> 01:21:42,870 Sem študent sam. 1609 01:21:42,870 --> 01:21:45,960 Vem, Sovražim, ko hodim iz kviza bilo všeč, drek. 1610 01:21:45,960 --> 01:21:47,044 To je bilo res težko. 1611 01:21:47,044 --> 01:21:49,460 Verjetno tisto, kar se dogaja, da happen-- in da je popolnoma v redu, 1612 01:21:49,460 --> 01:21:50,751 Povem ti fantje zdaj. 1613 01:21:50,751 --> 01:21:53,190 Sredstva na teh stvareh niso visoke sploh. 1614 01:21:53,190 --> 01:21:55,360 >> In za tiste, ki ste so dobili, kot so, 1615 01:21:55,360 --> 01:21:57,870 trojke na vaših problematičnih sklopov, to ne pomeni, da ste 1616 01:21:57,870 --> 01:21:59,536 dogaja, da bi dobili 60 odstotkov v tem razredu. 1617 01:21:59,536 --> 01:22:01,440 Če dobiš 60% na kviz, ki ne 1618 01:22:01,440 --> 01:22:03,330 pomeni, da boš dobili D v tem razredu. 1619 01:22:03,330 --> 01:22:05,740 Vidimo, predvsem jaz, za tiste, ki ste v mojem oddelku, 1620 01:22:05,740 --> 01:22:07,406 Vidim, kako težko fantje so vsi, ki delajo. 1621 01:22:07,406 --> 01:22:09,190 In jaz spremljate to. 1622 01:22:09,190 --> 01:22:11,420 >> Vidva bo v redu. 1623 01:22:11,420 --> 01:22:14,580 Ni institucionalni spomin sreča na koncu semestra. 1624 01:22:14,580 --> 01:22:16,840 Ker vsi otroci Harvard so povedali njihovi prijatelji, oh, boste v redu. 1625 01:22:16,840 --> 01:22:18,381 Nihče vam pove, fantje, da je tu. 1626 01:22:18,381 --> 01:22:20,950 Torej, moram vam povedati, fantje, da je tu. 1627 01:22:20,950 --> 01:22:22,280 >> Vidva bo v redu. 1628 01:22:22,280 --> 01:22:24,080 Tako sem ponosen na vse vas. 1629 01:22:24,080 --> 01:22:25,680 Test bo težko. 1630 01:22:25,680 --> 01:22:28,140 Študija za njim, in nato Pravkar vreči proč. 1631 01:22:28,140 --> 01:22:31,280 Bodite pripravljeni, da se naučijo novih stvari. 1632 01:22:31,280 --> 01:22:33,990 In jesti sladkarije. 1633 01:22:33,990 --> 01:22:35,940 Smo jih imeli veliko sladkarij. 1634 01:22:35,940 --> 01:22:37,760 >> Dobili dober spanec. 1635 01:22:37,760 --> 01:22:40,420 Ne, ne spati, ker to bi bilo res slabo. 1636 01:22:40,420 --> 01:22:41,490 CS je veliko logike. 1637 01:22:41,490 --> 01:22:44,960 Če ne spiš, ne more delovati, in vaši možgani ne morejo delovati. 1638 01:22:44,960 --> 01:22:48,780 In bom tukaj za naslednjih 20 minut, če kdo želi, da visi okoli. 1639 01:22:48,780 --> 01:22:51,150 Vidva se dogaja, da ga ubije. 1640 01:22:51,150 --> 01:22:53,000 Srečno. 1641 01:22:53,000 --> 01:22:55,663