1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> Profesor: Dakle, program za ovaj tjedan, ne toliko stvari. 3 00:00:09,790 --> 00:00:12,801 Ali nadamo se vrlo, vrlo korisno i relevantne za vas momci ovog tjedna. 4 00:00:12,801 --> 00:00:15,550 Ali ćemo provesti možda 15, 20 minuta samo brzo govori 5 00:00:15,550 --> 00:00:17,370 o popisu veza. 6 00:00:17,370 --> 00:00:19,694 Link liste idu biti pokrivena na kvizu. 7 00:00:19,694 --> 00:00:22,610 Dakle, možda bi bilo vrlo korisno kako bi naučili nešto o čemu se radi. 8 00:00:22,610 --> 00:00:25,210 >> Ćemo provesti velika Većina današnje sekcije 9 00:00:25,210 --> 00:00:27,640 prelaženju kviz nula praksi problema. 10 00:00:27,640 --> 00:00:30,970 A onda ćemo uštedjeti možda 20, 30 minuta na kraju za sve zaostalih pitanja 11 00:00:30,970 --> 00:00:32,850 tko ima. 12 00:00:32,850 --> 00:00:34,610 >> A onda, posljednji pet minuta, idem 13 00:00:34,610 --> 00:00:36,467 dati napumpati govor za kviz. 14 00:00:36,467 --> 00:00:38,050 Vi svi žele biti ovdje za to. 15 00:00:38,050 --> 00:00:39,591 Budući da će to biti dobar put. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> U redu, tako da su neki Materijal na popisu veza. 18 00:00:49,230 --> 00:00:52,620 Kako oni obično ste strukturiran je imate ono što se zove čvor, zar ne? 19 00:00:52,620 --> 00:00:54,870 Imaš ove stvari zove čvorovi, koji su konstrukt. 20 00:00:54,870 --> 00:00:57,360 Ja ću ići preko kako stvoriti čvor u sljedećem slajdu. 21 00:00:57,360 --> 00:01:00,680 No, u biti svi povezani Popisi je podatak da je 22 00:01:00,680 --> 00:01:03,340 je nanizati putem upućuje. 23 00:01:03,340 --> 00:01:09,110 >> I tako je prednost smo pomoću popisa povezani preko, 24 00:01:09,110 --> 00:01:11,280 Možda, kao što su niz je činjenica da je u nizu 25 00:01:11,280 --> 00:01:15,000 trebate jedan granični blok memorije sve na istom mjestu, jedan 26 00:01:15,000 --> 00:01:16,870 drugom, da bi mogli imati to. 27 00:01:16,870 --> 00:01:20,200 Dok popisu povezani, što bi ima slučajne male komadiće memorije 28 00:01:20,200 --> 00:01:23,020 cijelom računalu nanizani zajedno upućuje. 29 00:01:23,020 --> 00:01:26,270 >> I na ovaj način pristup informacijama 30 00:01:26,270 --> 00:01:28,610 koji dolazi jedna za drugo, nakon druge 31 00:01:28,610 --> 00:01:32,720 bez potrebe samo ogroman komad Memorija u računalu negdje. 32 00:01:32,720 --> 00:01:35,910 I tako to je jedan od glavnih Razlozi zašto mi koristimo popis poveznicu. 33 00:01:35,910 --> 00:01:40,300 >> Drugo, to je vrlo lako za dinamičko veličinu popisa veze, jer u nizu, 34 00:01:40,300 --> 00:01:44,720 kad proglasiti niz, imate određenu zadanu vrijednost. 35 00:01:44,720 --> 00:01:47,340 Recimo ja sam htjela napraviti niz od 10 brojeva. 36 00:01:47,340 --> 00:01:49,970 Ja stvoriti niz od 10 cijeli brojevi, i 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 znam što učiniti nakon toga. 39 00:01:52,038 --> 00:01:53,680 Ako sam htjela da ga 11, ne mogu to učiniti. 40 00:01:53,680 --> 00:01:55,710 Ako želim da on 9, ne mogu to učiniti. 41 00:01:55,710 --> 00:01:59,910 >> Dok je u popisu linkova, možete dodati i brisanje i umetanje gdje god želite. 42 00:01:59,910 --> 00:02:04,940 Ti dinamički promijeniti veličinu svoje struktura ovdje, svoju strukturu podataka. 43 00:02:04,940 --> 00:02:08,370 I to nam daje mnogo više dodaje fleksibilnost 44 00:02:08,370 --> 00:02:11,320 da mi ne obično imati s polja. 45 00:02:11,320 --> 00:02:15,210 >> Svatko zbunjeni na osnovni Struktura kako popis veza 46 00:02:15,210 --> 00:02:17,930 ili zašto moramo koristiti jedan preko niza? 47 00:02:17,930 --> 00:02:20,330 Da, mi ćemo ići preko detaljno kako zapravo stvoriti. 48 00:02:20,330 --> 00:02:24,121 No, to je samo vrsta opći osjećaj upravo sada. 49 00:02:24,121 --> 00:02:24,620 Cool. 50 00:02:24,620 --> 00:02:28,770 I tako su polja nanizati tih lijepim malim stvarima 51 00:02:28,770 --> 00:02:29,960 nazivaju čvorovi. 52 00:02:29,960 --> 00:02:32,210 Sve čvor je je tip Struct. 53 00:02:32,210 --> 00:02:36,090 Zapamtite, struct je ako ste htjeli stvoriti određeni tip varijable 54 00:02:36,090 --> 00:02:39,850 u C koji već ne postoji, što, kao programer, 55 00:02:39,850 --> 00:02:42,030 zapravo može napraviti da se sami. 56 00:02:42,030 --> 00:02:46,540 >> I tako je ova vrsta podataka struktura se naziva čvor, 57 00:02:46,540 --> 00:02:50,770 je zapravo stvoren od strane nas, da ne postoji u C na vlastitu. 58 00:02:50,770 --> 00:02:53,150 A način na koji vas stvoriti jedan je imate 59 00:02:53,150 --> 00:02:57,170 zaglavlje typedef STRUCT, koji govori prevodilac ja sam 60 00:02:57,170 --> 00:02:59,640 o stvaranje struct. 61 00:02:59,640 --> 00:03:00,830 >> Idemo ime je "čvor". 62 00:03:00,830 --> 00:03:03,350 I unutar ćemo proglasiti varijablu u, 63 00:03:03,350 --> 00:03:05,060 koja će se pohraniti vrijednost. 64 00:03:05,060 --> 00:03:09,320 I onda mi također ćeš su pokazivač zove "Sljedeći" 65 00:03:09,320 --> 00:03:12,090 koji ukazuje na sljedeći čvor u popisu linkova. 66 00:03:12,090 --> 00:03:14,730 I onda završiti da je off po samo ponavlja čvor opet tako 67 00:03:14,730 --> 00:03:17,490 prevodilac zna, u redu to je kraj moje Struct. 68 00:03:17,490 --> 00:03:22,540 >> I tako na ovaj način, mi smo vrsta stvaranja slatka mala niz 69 00:03:22,540 --> 00:03:25,450 vrsta stvar s vrijednosti i sa pokazivačem. 70 00:03:25,450 --> 00:03:27,757 A možete ih povezati sve zajedno s tim upućuje. 71 00:03:27,757 --> 00:03:30,090 Tako da svi oni mogu biti ljubazni nanizani zajedno u lancu. 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 Čujete li da su malo bolje? 75 00:03:35,453 --> 00:03:36,140 >> PUBLIKA: Da. 76 00:03:36,140 --> 00:03:38,540 >> PROFESOR: U redu. 77 00:03:38,540 --> 00:03:44,280 Tako je način na koji, kao što vi vidite, tipičan popis veza je strukturiran 78 00:03:44,280 --> 00:03:45,500 je imate glavu. 79 00:03:45,500 --> 00:03:49,460 Imate vrijednosti glave koja nije se ukazao na bilo koji drugi pokazivač. 80 00:03:49,460 --> 00:03:53,177 Ali to će ukazati na, ili referenca, još jedan čvor. 81 00:03:53,177 --> 00:03:56,510 Čvor nakon odlaska na referentni čvor nakon toga, i tako dalje i tako dalje 82 00:03:56,510 --> 00:03:59,170 dok na kraju hit kraj tvog popisa linkova. 83 00:03:59,170 --> 00:04:00,980 A ti jednostavno neće imati pokazivač tamo. 84 00:04:00,980 --> 00:04:04,659 >> I tako, mislim kao, na lancu, ili čak ako bilo koji od vas dečki napravili, ne znam, 85 00:04:04,659 --> 00:04:06,450 kao s voćem Loops kad ste bili mali. 86 00:04:06,450 --> 00:04:08,590 Ti bi niz ih zajedno i nositi ih oko vrata. 87 00:04:08,590 --> 00:04:09,840 Mislim da je točno istu stvar. 88 00:04:09,840 --> 00:04:12,964 Imaš ove sitnice koje može string zajedno da ukazuju na jedan 89 00:04:12,964 --> 00:04:15,291 Nakon toga, na jednom nakon to, i tako dalje i tako dalje 90 00:04:15,291 --> 00:04:17,040 dok imate lanac od strukture podataka 91 00:04:17,040 --> 00:04:21,190 koje možete koristiti kako god želite. 92 00:04:21,190 --> 00:04:27,370 >> Tako je način na koji to bismo obično umetanje ili brisanje 93 00:04:27,370 --> 00:04:30,020 bilo koji čvor s vezom Popis je vrlo različita 94 00:04:30,020 --> 00:04:31,970 ovisno o tome gdje da čvor. 95 00:04:31,970 --> 00:04:34,880 Tako je, na primjer, zbog toga pokazivače su uvijek 96 00:04:34,880 --> 00:04:38,645 pokazujući na određenu vrijednost, kada izbrišete ili umetnite čvor, 97 00:04:38,645 --> 00:04:41,770 Želite li biti sigurni da je pokazivač je sve ukazuje na prave stvari. 98 00:04:41,770 --> 00:04:46,200 >> Dakle, ako ste htjeli potencijalno umetanje novi čvor u vrijednosti od jedne 99 00:04:46,200 --> 00:04:48,379 unutar sortiranog vezu Popis, svi znamo ovdje 100 00:04:48,379 --> 00:04:51,170 sa slike koja će ići između glave i dva, zar ne? 101 00:04:51,170 --> 00:04:52,620 Jer on odgovara upravo tamo. 102 00:04:52,620 --> 00:04:59,060 No, način na koji bismo to je najprije dereferencing pokazivač 103 00:04:59,060 --> 00:05:02,160 od glave i slanje to jednom. 104 00:05:02,160 --> 00:05:05,040 >> Ali smo došli u problem ovdje. 105 00:05:05,040 --> 00:05:08,280 Može li itko vidjeti u čemu je problem je ako smo prvi dereference 106 00:05:08,280 --> 00:05:10,090 pokazivač od glave do jednog? 107 00:05:10,090 --> 00:05:14,202 Ono što je problem možda naletimo ako pokušamo da biste dodali ovaj ispred naše ponude? 108 00:05:14,202 --> 00:05:15,409 >> PUBLIKA: [nečujan] 109 00:05:15,409 --> 00:05:16,200 PROFESOR: Točno. 110 00:05:16,200 --> 00:05:20,000 Dakle, ovdje imamo pokazivač koji je bio jednom pokazujući od glave do dva. 111 00:05:20,000 --> 00:05:23,120 Ali, ako ste dobili osloboditi od koje pokazivač, možete ga usmjerite na jednu, 112 00:05:23,120 --> 00:05:26,500 sad nemam pojma gdje ići kako bi pronašli dva. 113 00:05:26,500 --> 00:05:29,850 Jer kao što sam rekao prije, imaš div komad memorije na računalu. 114 00:05:29,850 --> 00:05:31,860 Svi ovi čvorovi mogli se slučajno mjestimice 115 00:05:31,860 --> 00:05:33,350 u bilo kojem mjestu u vašem računalu. 116 00:05:33,350 --> 00:05:36,140 I ne znam kako ići o pronalaženju toga. 117 00:05:36,140 --> 00:05:40,420 >> I tako, morate imati pokazivače ukazujući na sve čvorove na kraju. 118 00:05:40,420 --> 00:05:42,420 Inače, ako ste slučajno dereference jedan 119 00:05:42,420 --> 00:05:44,485 bez prvog zauzimanja vrijednost Prvo, ti si 120 00:05:44,485 --> 00:05:47,410 Samo će izgubiti sve poslije. 121 00:05:47,410 --> 00:05:49,720 >> Pa što ćemo to je, što bi prvo 122 00:05:49,720 --> 00:05:53,270 želite stvoriti pokazivač na čvor želite umetnuti. 123 00:05:53,270 --> 00:05:55,270 Usmjerite ga na mjesto gdje želite umetnuti na, 124 00:05:55,270 --> 00:05:59,410 a onda nakon toga ti mogao ukazati glavu jednom. 125 00:05:59,410 --> 00:06:02,800 >> Znači li to da smisla svima ovdje? 126 00:06:02,800 --> 00:06:03,346 Veliki. 127 00:06:03,346 --> 00:06:04,720 Razmislite o tome što baš poput lanca. 128 00:06:04,720 --> 00:06:07,420 Ako dodate lanac, to je vrsta intuitivno 129 00:06:07,420 --> 00:06:10,742 Kako ćeš ići o umetanju to. 130 00:06:10,742 --> 00:06:15,274 >> U redu, tako da je zapravo mnogo kraće nego što sam mislio da će to biti, 131 00:06:15,274 --> 00:06:16,690 pet minuta nagovaranje na veze listama. 132 00:06:16,690 --> 00:06:19,960 Samo da ti dečki imaju Osnovna ideja što je to. 133 00:06:19,960 --> 00:06:23,580 >> Ovdje imamo plan za kviz nula. 134 00:06:23,580 --> 00:06:24,895 Ne dopustite da vas ovo zastrašiti. 135 00:06:24,895 --> 00:06:26,270 Znam da je puno informacija. 136 00:06:26,270 --> 00:06:27,580 To izgleda vrlo zastrašujuće. 137 00:06:27,580 --> 00:06:33,130 To je također puno, ja mislim, CSC vrsta uvjetima. 138 00:06:33,130 --> 00:06:37,440 Stvari kao heksadecimalni žice, pokazivače, dinamička memorija izdvajanja 139 00:06:37,440 --> 00:06:40,120 vrlo zastrašujuće zvuče uvjeti. 140 00:06:40,120 --> 00:06:42,700 >> Ali mi ćemo ih razbiti dolje, napraviti neke probleme prakse 141 00:06:42,700 --> 00:06:44,980 tako da vi svi su spremni za ovaj test. 142 00:06:44,980 --> 00:06:47,104 Koliko od vas ima Već je počeo studiranje? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> U redu, vi vjerojatno želite za početak početak 145 00:06:53,670 --> 00:06:56,480 na to, jer kviz je sutra. 146 00:06:56,480 --> 00:06:58,739 Ili četvrtak za neke od vas. 147 00:06:58,739 --> 00:07:01,030 Da, pa ćemo ići preko neke probleme prakse. 148 00:07:01,030 --> 00:07:04,600 Ako vi svi žele uzeti iz lista papira, olovke. 149 00:07:04,600 --> 00:07:07,310 Ćemo samo provesti Velika većina današnje sekcije 150 00:07:07,310 --> 00:07:11,590 ide preko neke da tako vi imate ideja o tome što možete očekivati ​​na kvizu. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> U REDU. 153 00:07:16,890 --> 00:07:19,730 Par logističku Detalji kao i za bilo koga 154 00:07:19,730 --> 00:07:25,120 koji nije bio na tom linku ima, ako idete cs50.yale.edu, na prednjoj strani 155 00:07:25,120 --> 00:07:28,566 ovu stranicu tu je link koji kaže: "O Quiz Zero". 156 00:07:28,566 --> 00:07:29,440 Link vas vodi tamo. 157 00:07:29,440 --> 00:07:31,065 Ako niste ga čitati, pročitajte ga. 158 00:07:31,065 --> 00:07:34,470 Zato što vam govori stvarno važno informacije o kvizu. 159 00:07:34,470 --> 00:07:37,410 >> Ću povući ovu iz da samo zato, fizički, 160 00:07:37,410 --> 00:07:40,200 Ako vi ne znate gdje ići ćemo imati problema. 161 00:07:40,200 --> 00:07:44,220 I tako, ako vaš posljednji u pogledu s do N, idite na Pravnom fakultetu dvorani. 162 00:07:44,220 --> 00:07:47,500 A ako vaš posljednjih počinje s P do Z, otići Davies dvorani. 163 00:07:47,500 --> 00:07:50,240 I to vrijedi samo za ljudi u odjeljku srijedu. 164 00:07:50,240 --> 00:07:53,420 >> Ako ste uzimajući kviz o Četvrtak, idete na SSS 114 165 00:07:53,420 --> 00:07:55,078 gdje vam Predavanje obično je. 166 00:07:55,078 --> 00:07:55,953 PUBLIKA: [nečujan] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 PROFESOR: O do Ž, idete ići u Davies dvorani. 169 00:08:01,940 --> 00:08:03,273 Idem to promijeniti, zar ne? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, da, samo uspjeti automatski. 172 00:08:09,698 --> 00:08:11,753 >> O da, to je što Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Da, moja loša. 175 00:08:16,030 --> 00:08:17,610 Da, o do Z, idete ići na Davies Auditorim. 176 00:08:17,610 --> 00:08:19,140 Idem popraviti ovaj put sam upload. 177 00:08:19,140 --> 00:08:20,320 Da. 178 00:08:20,320 --> 00:08:22,160 >> A onda i nešto važno umu 179 00:08:22,160 --> 00:08:25,290 je da je u srijedu, ako ste i službeno upisani u odjeljku srijedu, 180 00:08:25,290 --> 00:08:26,832 morate uzeti kviz u srijedu. 181 00:08:26,832 --> 00:08:29,706 A ako ste upisani u četvrtak, morate uzeti kviz u četvrtak. 182 00:08:29,706 --> 00:08:31,000 I to je za vrijeme nastave. 183 00:08:31,000 --> 00:08:35,970 Gdje, mislim da je to u 1:00 Dva i 15 srijedom i 2:30-četvrt do četiri 184 00:08:35,970 --> 00:08:37,220 četvrtkom. 185 00:08:37,220 --> 00:08:41,710 >> Ako imate nepomirljiva sukoba, Dekanova isprike su jedina stvar, 186 00:08:41,710 --> 00:08:43,030 nažalost, možemo uzeti. 187 00:08:43,030 --> 00:08:45,560 Budući da smo imali Velika većina zahtjeva 188 00:08:45,560 --> 00:08:47,970 prebacivanje od srijede do četvrtka. 189 00:08:47,970 --> 00:08:51,265 Što ne možemo poštovati, osim ako Imamo dekana zahtjev. 190 00:08:51,265 --> 00:08:52,650 >> U REDU. 191 00:08:52,650 --> 00:08:57,000 Dakle, prije nego što smo dobili počeo na Nekoliko problema prakse, 192 00:08:57,000 --> 00:09:00,540 Samo ću ići preko Andy korisne savjete za uspjeh. 193 00:09:00,540 --> 00:09:04,140 Vi, kad ste studirati, stvarno Želite vježbati pisanje koda rukom. 194 00:09:04,140 --> 00:09:07,050 Prvi put sam ikada uzeo CS kviz, nisam imao 195 00:09:07,050 --> 00:09:09,960 praksa pisanja koda rukom prije i to je bio iznimno 196 00:09:09,960 --> 00:09:11,890 šokantne kako teško bilo. 197 00:09:11,890 --> 00:09:16,125 >> Kad vi ne ući u Navika upišete sve, 198 00:09:16,125 --> 00:09:20,260 dolazi vrlo prirodno se mogli su automatski dovršiti 199 00:09:20,260 --> 00:09:22,015 zagrade i zarezom tamo. 200 00:09:22,015 --> 00:09:23,890 Kada ga napisati rukom, ponekad je 201 00:09:23,890 --> 00:09:27,100 vrlo, vrlo lako zaboraviti zarez, ili zaboraviti zatvoriti nosač, 202 00:09:27,100 --> 00:09:30,970 ili zaboraviti zatvoriti dvotočku, ili nešto slično. 203 00:09:30,970 --> 00:09:34,322 >> Dakle, kada pišete koda rukom, to je vrlo različito osjećaju. 204 00:09:34,322 --> 00:09:37,280 Tako da dečki, kada radite kroz neke od problema prakse, 205 00:09:37,280 --> 00:09:38,904 bilo bi dobro da se stvarno praksi danas. 206 00:09:38,904 --> 00:09:41,770 Ili sutra, pretpostavljam, ako ste uzimajući kviz u četvrtak. 207 00:09:41,770 --> 00:09:45,280 >> Drugo, mi smo posljednji, kao što je, osam godina vrijedi prakse 208 00:09:45,280 --> 00:09:47,070 kvizovi online. 209 00:09:47,070 --> 00:09:50,759 Ovogodišnji kviz će vjerojatno biti vrlo, vrlo sličan za sve njih. 210 00:09:50,759 --> 00:09:51,800 Oni su svi vrlo slični. 211 00:09:51,800 --> 00:09:54,220 Vi vrsta dobiti u Stil tipa pitanja 212 00:09:54,220 --> 00:09:57,250 da pitamo, tip Funkcije da ćemo ga pisati u, 213 00:09:57,250 --> 00:09:58,580 i tako dalje, i tako dalje. 214 00:09:58,580 --> 00:10:01,980 >> Tako se praksa kvizove, pogotovo pod vremenskih ograničenja. 215 00:10:01,980 --> 00:10:05,390 75 minuta za napraviti kviz je Nije puno vremena. 216 00:10:05,390 --> 00:10:07,254 To je vrlo, vrlo dugo. 217 00:10:07,254 --> 00:10:09,670 I tako ti dečki stvarno želite kako bi bili sigurni da su ti dečki su 218 00:10:09,670 --> 00:10:11,990 u naviku pisanja kod rukom brzo. 219 00:10:11,990 --> 00:10:15,070 Zato što ne želim prvi vrijeme da se vidi kviz tog duljine 220 00:10:15,070 --> 00:10:16,560 biti na kvizu. 221 00:10:16,560 --> 00:10:20,540 Vi stvarno želite da biste bili sigurni da vježbate prije. 222 00:10:20,540 --> 00:10:24,550 >> Četvrto, želite pregledati Predavanje i sekcija slajdova. 223 00:10:24,550 --> 00:10:25,980 Ne morate zapamtiti stvari. 224 00:10:25,980 --> 00:10:30,430 Zapravo, svatko je dopustio jedan list bijelog papira bilješke, 225 00:10:30,430 --> 00:10:31,090 sprijeda i straga. 226 00:10:31,090 --> 00:10:32,920 Vi možete upisati ili pisati. 227 00:10:32,920 --> 00:10:37,070 Ako vam se trebaju pamtiti ništa, stavi ga na taj list. 228 00:10:37,070 --> 00:10:40,810 >> Jamčim ti, ti ne želiš biti zaglavi u sredini tog kviza 229 00:10:40,810 --> 00:10:43,890 se kao, oh yeah, što je Runtime ove vrste u odnosu na takve vrste. 230 00:10:43,890 --> 00:10:46,490 Samo stavite ga i kopirajte ga ravno iz vašeg bilješku list. 231 00:10:46,490 --> 00:10:50,420 Tada zapravo možete samo koristiti mozak razmišljati o problemima 232 00:10:50,420 --> 00:10:52,190 umjesto da prisjetiti činjenice. 233 00:10:52,190 --> 00:10:55,250 I tako stvarno iskoristiti bilo niša detalja 234 00:10:55,250 --> 00:11:00,140 koje mislite da trebate zapamtiti, buć ga na pregled list. 235 00:11:00,140 --> 00:11:02,680 >> U redu, bilo kakva pitanja logistički u vezi kviz 236 00:11:02,680 --> 00:11:05,510 Prije nego što počnemo neke kviz problemi vježbati? 237 00:11:05,510 --> 00:11:06,416 Da? 238 00:11:06,416 --> 00:11:10,040 >> PUBLIKA: Nisam imao prilike gledati na kvizu [nečujan] 239 00:11:10,040 --> 00:11:11,757 ali to će biti Aplikacija najčešće, 240 00:11:11,757 --> 00:11:14,090 ili se tu će biti, kao, pitanje znanja? 241 00:11:14,090 --> 00:11:14,940 >> Profesor: To je puno. 242 00:11:14,940 --> 00:11:16,731 Dakle, način na koji sam bi opisao kviz 243 00:11:16,731 --> 00:11:18,810 is-- sam staviti zajedno neki problemi praksa 244 00:11:18,810 --> 00:11:20,960 da sam izvukao iz svih kvizova. 245 00:11:20,960 --> 00:11:25,210 Ali vidjet ćete da ima dva glavna vrste pitanja ćemo vas pitati. 246 00:11:25,210 --> 00:11:28,750 >> Jedan od njih je vrlo niska razina detalj stvari. 247 00:11:28,750 --> 00:11:31,720 Mi ćemo vam dati mali komad koda i reći, postoji pogreška ovdje? 248 00:11:31,720 --> 00:11:33,110 Što bi se ispisuje ovdje? 249 00:11:33,110 --> 00:11:35,980 Ono što će ovaj kod proizvodnju, i tako dalje. 250 00:11:35,980 --> 00:11:38,710 Tako da vrlo niska razina detalja informacije. 251 00:11:38,710 --> 00:11:42,700 >> I na flip strane, imat ćemo vrlo visok stupanj pitanja znanju. 252 00:11:42,700 --> 00:11:45,190 Možete li objasniti što Razlika između binarnog pretraživanja 253 00:11:45,190 --> 00:11:46,148 i linearni pretragu je? 254 00:11:46,148 --> 00:11:48,500 Zašto bi želimo koristiti jedan nad drugim? 255 00:11:48,500 --> 00:11:49,960 Možda, što je GDB? 256 00:11:49,960 --> 00:11:51,560 Zašto mi želite koristiti GDB? 257 00:11:51,560 --> 00:11:54,590 Viša razina, više temeljna Razumijevanje pitanja. 258 00:11:54,590 --> 00:11:58,240 Tako ćete vidjeti mješavinu njih dvojica na vašem kvizu. 259 00:11:58,240 --> 00:12:01,462 >> Sve ostalo prije nego što ravno u nju? 260 00:12:01,462 --> 00:12:02,879 U REDU. 261 00:12:02,879 --> 00:12:03,670 PUBLIKA: Još jedan. 262 00:12:03,670 --> 00:12:04,030 PROFESOR: Oh, još jedan. 263 00:12:04,030 --> 00:12:04,340 Oprostite. 264 00:12:04,340 --> 00:12:05,631 >> PUBLIKA: Da, to je u redu. 265 00:12:05,631 --> 00:12:10,140 Pa što govoriš 75 minuta se prekratak, kao što je to malo vjerojatno 266 00:12:10,140 --> 00:12:11,640 da ćemo završiti? 267 00:12:11,640 --> 00:12:13,571 Ili, kao što su, 75 minuta je točno onoliko vremena 268 00:12:13,571 --> 00:12:15,700 kao što bi nam je potrebno ako smo bili odgovarajući način pripremiti? 269 00:12:15,700 --> 00:12:17,450 PROFESOR: U redu, tako da je kviz je izazov. 270 00:12:17,450 --> 00:12:19,550 To je svakako izazov. 271 00:12:19,550 --> 00:12:21,092 Naći ćete se na kratko vrijeme. 272 00:12:21,092 --> 00:12:24,341 Vjerojatno ćete pogoditi, kao što su 10, 15 minuta da ide, i biti poput, govno. 273 00:12:24,341 --> 00:12:25,520 Imam toliko toga ostalo za učiniti. 274 00:12:25,520 --> 00:12:26,520 I to je sasvim u redu. 275 00:12:26,520 --> 00:12:28,740 Svatko će se osjećati na isti način. 276 00:12:28,740 --> 00:12:31,074 >> Samo budite vrlo svjesni koliko vremena imate. 277 00:12:31,074 --> 00:12:33,490 I tako to je razlog zašto sam vam reći Dečki to praksa kvizova. 278 00:12:33,490 --> 00:12:36,672 Zato što stvarno daje veliki osjećaj o tome što je kviz će biti slično. 279 00:12:36,672 --> 00:12:39,130 Dakle, ako vam se bude mogućnosti završio praksu 280 00:12:39,130 --> 00:12:41,671 kvizovi u dobrom iznosu od Vrijeme, možete koračati sami dobro, 281 00:12:41,671 --> 00:12:45,695 onda nećete imati problema u srijedu ili četvrtak. 282 00:12:45,695 --> 00:12:46,575 >> Cool. 283 00:12:46,575 --> 00:12:49,200 Dakle, ako svi wants-- mislim većina ljudi ima listove papira 284 00:12:49,200 --> 00:12:49,810 iz već. 285 00:12:49,810 --> 00:12:52,604 Idem u biti samo dati uzorak pitanja, 286 00:12:52,604 --> 00:12:54,520 dati vam dečki, slično, nekoliko minuta da ih učiniti. 287 00:12:54,520 --> 00:12:59,610 A mi ćemo ići preko kao klasa ono što su odgovori na njih. 288 00:12:59,610 --> 00:13:02,860 >> Dakle, to je vrlo tipično rano je pitanje što ću 289 00:13:02,860 --> 00:13:06,720 vas pitati, samo pretvoriti Brojevi između različitih baza. 290 00:13:06,720 --> 00:13:09,070 Binarni, što vi možete Podsjetimo, je baza dvije. 291 00:13:09,070 --> 00:13:12,470 Decimalni je baza 10, ili ono što mi kao ljudi obično interpretira. 292 00:13:12,470 --> 00:13:17,120 Heksadecimalni je baza 16, koji je nula kroz devet kao i do F. 293 00:13:17,120 --> 00:13:19,990 >> Tako je četiri broja sam traži dečki pretvoriti ovdje. 294 00:13:19,990 --> 00:13:23,909 Ja ću dati vam se sviđa, tri do Četiri minute razmisliti kako 295 00:13:23,909 --> 00:13:25,200 mi bi ići oko rješavanja toga. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> PUBLIKA: Jesmo li dopušteni kalkulatori? 298 00:13:35,710 --> 00:13:37,630 >> PROFESOR: Nećete potrebno kalkulatore, da. 299 00:13:37,630 --> 00:13:42,420 Mislim da osnovni dodatak, mislim, svi ti dečki će se tražiti da učiniti. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> I samo tako da vrsta ima smisla kada svatko učinio, pogledati, 302 00:14:45,070 --> 00:14:47,429 val, ne znam, osmijeh, sretno ako ste učinili. 303 00:14:47,429 --> 00:14:47,929 Da. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Možda još par minuta. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, neka je to dovesti u. 308 00:18:29,600 --> 00:18:31,580 Ja sam namjerno ide dati vam dečki manje vremena 309 00:18:31,580 --> 00:18:33,760 nego vjerojatno trebate to su neki od tih problema, 310 00:18:33,760 --> 00:18:37,124 jednostavno zato što želim da biste bili sigurni da smo dobili kroz hrpa problema. 311 00:18:37,124 --> 00:18:39,290 Dakle, bez brige, ako niste imaju priliku završiti. 312 00:18:39,290 --> 00:18:43,770 Totalno redu sve dok imate ideja kako to ide o tome. 313 00:18:43,770 --> 00:18:45,850 Tako ćemo ići naprijed i učiniti prvi. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Prvo, bilo tko želi mi reći u binarnom, što da svaki od tih brojki 316 00:18:57,870 --> 00:19:00,484 predstavlja u smislu njihove vrijednosti? 317 00:19:00,484 --> 00:19:01,250 Da? 318 00:19:01,250 --> 00:19:03,349 >> PUBLIKA: Dva do Snaga nula, dva na jedan. 319 00:19:03,349 --> 00:19:04,140 PROFESOR: Točno. 320 00:19:04,140 --> 00:19:04,640 Tako. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Točno, tako tipično kad smo u bazi 10 323 00:19:16,430 --> 00:19:20,580 Sve to predstavljaju se, kao što je, 10 do baze nule, zar ne? 324 00:19:20,580 --> 00:19:21,810 To je tvoj svoje mjesto. 325 00:19:21,810 --> 00:19:24,520 Sve vaše 10 je mjesto koje se nalazi 10 na snazi ​​jedan. 326 00:19:24,520 --> 00:19:26,600 Vam 100 je mjesto koje se nalazi 10 na snazi ​​dva. 327 00:19:26,600 --> 00:19:29,570 >> Što god da ste u bazu ide učiniti s točno istu stvar, 328 00:19:29,570 --> 00:19:31,480 samo s različitim baze. 329 00:19:31,480 --> 00:19:34,130 Dakle binarni, sve što je je jedno dva. 330 00:19:34,130 --> 00:19:37,110 Vi ćete pretvoriti sve znamenaka u dva do god snage 331 00:19:37,110 --> 00:19:38,190 te znamenke. 332 00:19:38,190 --> 00:19:41,450 I tako u tom smislu, mi može imati lakši put 333 00:19:41,450 --> 00:19:43,800 da bude u mogućnosti dodati ili zbroj svih brojeva u cilju 334 00:19:43,800 --> 00:19:46,010 pretvoriti u bazu 10. 335 00:19:46,010 --> 00:19:50,362 >> Tako se bilo tko želi mi reći što je Odgovor na prvo je u bazi deset? 336 00:19:50,362 --> 00:19:51,674 >> PUBLIKA: Dva, [nečujan] 337 00:19:51,674 --> 00:19:52,340 PROFESOR: Da. 338 00:19:52,340 --> 00:19:53,230 PUBLIKA: 42. 339 00:19:53,230 --> 00:19:56,560 PROFESOR: 42, tamo idete. 340 00:19:56,560 --> 00:20:00,660 Dakle, način na koji smo dobili ovaj odgovor bio od radi dvije Prvi, koji je dva. 341 00:20:00,660 --> 00:20:02,760 Plus dva treća, što je osam. 342 00:20:02,760 --> 00:20:07,590 Plus dva na peti, koji je ono što je ostalo više. 343 00:20:07,590 --> 00:20:09,390 Možete ih sumirati i to je 42. 344 00:20:09,390 --> 00:20:12,000 >> Je li netko zbunjeni o tome kako smo to? 345 00:20:12,000 --> 00:20:15,630 Dakle osnovni dodatak, kao što su Rekao sam, te bi trebao biti u redu. 346 00:20:15,630 --> 00:20:17,410 Ako ne, dobro, možemo vježbati previše. 347 00:20:17,410 --> 00:20:18,720 Ali to je u redu. 348 00:20:18,720 --> 00:20:20,560 Cool. 349 00:20:20,560 --> 00:20:25,570 >> Se bilo tko želi mi dati odgovoriti na drugom isto kao i? 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 Svatko zbunjeni o tome dobili smo da je bilo? 353 00:20:30,044 --> 00:20:31,960 Cool, ja ću imati odgovori na sljedeći slajd. 354 00:20:31,960 --> 00:20:34,440 Tako da nema brige ako vas morate ga kopirati dolje. 355 00:20:34,440 --> 00:20:38,860 >> U redu, tako da heksadecimalni je nešto složenije. 356 00:20:38,860 --> 00:20:41,840 ali ja ću vam pokazati dečki prečac za kako to učiniti. 357 00:20:41,840 --> 00:20:44,800 Dakle heksadecimalnom, kao i vi zapamtite, sve je to bilo 16. 358 00:20:44,800 --> 00:20:48,920 I zato što mi kao ljudi zapravo ne ima 16 brojeva za zastupanje da, 359 00:20:48,920 --> 00:20:56,940 idemo od nula do devet, koji je naš prvi 10 vrijednosti, a onda ćemo napraviti kroz F, 360 00:20:56,940 --> 00:20:58,630 koje su narednih šest vrijednosti. 361 00:20:58,630 --> 00:21:03,040 >> I tako je najlakše otići iz bilo binarni broj za heksadecimalnom 362 00:21:03,040 --> 00:21:05,350 je da ih razbiti na polovice. 363 00:21:05,350 --> 00:21:10,042 I tako svaki binarni broj ćemo dati vjerojatno ćete imati osam znamenki. 364 00:21:10,042 --> 00:21:11,750 Vi samo može slomiti ih u sredini. 365 00:21:11,750 --> 00:21:17,460 >> Dakle, prvi one-- jedan jedan, jedan jedan, jedan, jedan, jedan, jedan. 366 00:21:17,460 --> 00:21:21,340 Vrsta to mislim, znaš, crtanje kosom crtom ili zarez između njih. 367 00:21:21,340 --> 00:21:23,800 A možete jednostavno pretvoriti izravno god 368 00:21:23,800 --> 00:21:26,670 ovo je prvi Broj heksadecimalnom, 369 00:21:26,670 --> 00:21:29,880 i što god da se ovdje drugi od heksadecimalnom. 370 00:21:29,880 --> 00:21:37,584 >> Pa sjećate iz zajedničkog zapis, Što heksadecimalni vrijednosti početak? 371 00:21:37,584 --> 00:21:38,460 >> PUBLIKA: Zero. 372 00:21:38,460 --> 00:21:39,270 >> PROFESOR: 0x. 373 00:21:39,270 --> 00:21:45,210 Tako znamo da je bilo vrijeme da vas pitam pretvoriti bilo koji broj heksadecimalnom, 374 00:21:45,210 --> 00:21:48,230 ili svaki put kad vidim bilo broj koji počinje s 0x, 375 00:21:48,230 --> 00:21:50,230 znate da je heksadecimalna vrijednost. 376 00:21:50,230 --> 00:21:54,160 >> I onda ćeš biti zatraženo da odrediti što su ti dvije znamenke. 377 00:21:54,160 --> 00:21:59,690 A način na koji to učiniti, tallying se da je polovica i tallying se da polovica. 378 00:21:59,690 --> 00:22:02,870 Tako je u ovom primjeru, koji bi jedan, jedan, jedan, jedan biti? 379 00:22:02,870 --> 00:22:04,890 Koje vrijednosti će to biti? 380 00:22:04,890 --> 00:22:06,040 To bi bilo F, zar ne? 381 00:22:06,040 --> 00:22:08,050 To bi bilo 15. 382 00:22:08,050 --> 00:22:11,780 >> Dakle, to bi bilo F. Jedan, jedan, jedan, jedan ovdje je 383 00:22:11,780 --> 00:22:21,270 F. Dakle, jedan, jedan, jedan, jedan, jedan, jedan, jedan, jedan u heksadecimalnom, sve je to je 0xff. 384 00:22:21,270 --> 00:22:25,350 Budući da je ovaj pola zastupljena F, vrijednost 15, 385 00:22:25,350 --> 00:22:27,331 i to pola zastupljena F, vrijednost 15. 386 00:22:27,331 --> 00:22:29,456 Zato ne zaboravite, mi smo računajući od nula do devet. 387 00:22:29,456 --> 00:22:35,290 A je kao 10., B je kao 11, F 15. 388 00:22:35,290 --> 00:22:41,690 >> Da li to smisla da svima koliko smo dobili od binarnom se heksadecimalni? 389 00:22:41,690 --> 00:22:44,595 >> PUBLIKA: I tako kako smo dobili 15 od jedan, jedan, jedan, jedan? 390 00:22:44,595 --> 00:22:46,220 Profesor: Da, ovo je binarna, zar ne? 391 00:22:46,220 --> 00:22:48,090 Zamislite ovo je samo binarni broj. 392 00:22:48,090 --> 00:22:50,792 Dakle, imate dvije do 0., što je jedan. 393 00:22:50,792 --> 00:22:51,500 PUBLIKA: Oh, u redu. 394 00:22:51,500 --> 00:22:51,670 Dakle, samo ga ukupno van. 395 00:22:51,670 --> 00:22:52,670 >> Profesor: Da, i onda ti samo ukupne to van. 396 00:22:52,670 --> 00:22:53,380 To je sve što je. 397 00:22:53,380 --> 00:22:54,890 >> PUBLIKA: U redu. 398 00:22:54,890 --> 00:22:55,830 >> PROFESOR: U redu. 399 00:22:55,830 --> 00:23:00,740 >> PUBLIKA: Pa i ti ići s binarnim da decimalnih na heksadecimalnom? 400 00:23:00,740 --> 00:23:04,590 >> Profesor: To je najlakši način da to učinite, da. 401 00:23:04,590 --> 00:23:11,390 Nećeš se decimale jer decimale ima samo nulu do devet. 402 00:23:11,390 --> 00:23:13,410 Mi smo samo vrsta dijeleći ovo gore u dva. 403 00:23:13,410 --> 00:23:15,201 >> PUBLIKA: [nečujan] pomoću decimale pronaći 404 00:23:15,201 --> 00:23:17,809 što odgovara do u heksadecimalnom. 405 00:23:17,809 --> 00:23:20,100 PROFESOR: Mislim, da ste tallying gore koristeći osnovne matematike. 406 00:23:20,100 --> 00:23:20,725 PUBLIKA: Da. 407 00:23:20,725 --> 00:23:22,300 Profesor: Da, prilično. 408 00:23:22,300 --> 00:23:23,630 To je malo zbunjujuće. 409 00:23:23,630 --> 00:23:26,410 Ali samo znam da vas možete podijeliti god 410 00:23:26,410 --> 00:23:28,160 ova vrijednost u samo polovice. 411 00:23:28,160 --> 00:23:29,570 Gle, što je to u binarnom? 412 00:23:29,570 --> 00:23:30,610 Koji broj je to? 413 00:23:30,610 --> 00:23:33,270 To će biti nešto od nule do F. 414 00:23:33,270 --> 00:23:35,722 >> Ovdje također će biti nešto od nule do F. 415 00:23:35,722 --> 00:23:37,722 I onda možete jednostavno staviti njih dvoje upravo tamo. 416 00:23:37,722 --> 00:23:38,263 >> PUBLIKA: U redu. 417 00:23:38,263 --> 00:23:38,910 PROFESOR: Aha. 418 00:23:38,910 --> 00:23:39,410 U REDU. 419 00:23:39,410 --> 00:23:42,320 Dakle vi želite pokušajte sljedeći onda? 420 00:23:42,320 --> 00:23:49,601 Nula, jedan, jedan nula, jedan, nula, jedan nula. 421 00:23:49,601 --> 00:23:52,350 Dat ću ti dečki poput 30 sekundi, jer vjerojatno niste znali 422 00:23:52,350 --> 00:23:53,850 trik kako to učiniti ranije. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> U redu, tko želi dobiti ovaj jedan metak? 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 Dakle, ovo ovdje bi be-- želite da nam reći kako ste dobili to? 430 00:24:37,050 --> 00:24:38,920 Prvo, kako ste dobili pet? 431 00:24:38,920 --> 00:24:42,030 >> PUBLIKA: Zbog nule, jedan, nula, jedan od pet. 432 00:24:42,030 --> 00:24:45,170 >> Profesor: Da li svi razumiju Zato nula, jedan, nula, jedan od pet? 433 00:24:45,170 --> 00:24:46,260 Imaš ga ovdje. 434 00:24:46,260 --> 00:24:48,010 Nemate ništa za dva do prvog. 435 00:24:48,010 --> 00:24:50,300 U dva na drugi, te imati jedan, što je četiri. 436 00:24:50,300 --> 00:24:52,600 Tako da dodate četiri plus onaj, imate pet. 437 00:24:52,600 --> 00:24:53,600 Svatko dobro? 438 00:24:53,600 --> 00:24:54,100 U REDU. 439 00:24:54,100 --> 00:24:56,570 I onda što je to bilo i zašto? 440 00:24:56,570 --> 00:24:58,350 Koji broj Da li odgovarati? 441 00:24:58,350 --> 00:24:59,350 >> PUBLIKA: 10. 442 00:24:59,350 --> 00:25:00,976 >> Profesor: A što to na bazi dva? 443 00:25:00,976 --> 00:25:01,850 PUBLIKA: [nečujan] 444 00:25:01,850 --> 00:25:03,010 PROFESOR: Točno. 445 00:25:03,010 --> 00:25:06,370 Dakle, ovaj drugi Vrijednost ovdje bi se 0X5A. 446 00:25:06,370 --> 00:25:08,410 >> Svatko dobro o tome kako pretvoriti? 447 00:25:08,410 --> 00:25:10,770 To je puno jednostavnije nego što mislite da je. 448 00:25:10,770 --> 00:25:13,330 Ja samo želim da biste bili sigurni znate korisne savjete 449 00:25:13,330 --> 00:25:14,950 Umjesto za kako to učiniti. 450 00:25:14,950 --> 00:25:18,432 >> PUBLIKA: Zašto ste upravo podijeliti je u sredini kao što je to? 451 00:25:18,432 --> 00:25:21,390 Baš kao što se, u redu, ja sam samo ide na stalo ti prvi [nečujan]? 452 00:25:21,390 --> 00:25:24,240 >> PROFESOR: Zato što je to zapravo Način heksadecimalni vrijednosti su zastupljeni. 453 00:25:24,240 --> 00:25:26,890 0x, to zapravo znači ništa drugo nego vam govorim 454 00:25:26,890 --> 00:25:28,710 da je broj heksadecimalni. 455 00:25:28,710 --> 00:25:31,580 I ovo uvijek predstavlja prve četiri znamenke. 456 00:25:31,580 --> 00:25:34,330 I ovo uvijek predstavlja posljednjih četiri znamenke. 457 00:25:34,330 --> 00:25:37,835 I tako su ove dvije znamenke jednostavno odgovaraju različitim bitova. 458 00:25:37,835 --> 00:25:39,200 >> PUBLIKA: Tako ćemo always-- 459 00:25:39,200 --> 00:25:41,830 >> Profesor: Vi ste uvijek će dobiti osam vrijednost bita. 460 00:25:41,830 --> 00:25:44,580 >> PUBLIKA: Je li to baš kao stvar ovdje ili da je stvar u cijelom? 461 00:25:44,580 --> 00:25:46,883 Profesor: To je samo stvar je u računalima, Yep. 462 00:25:46,883 --> 00:25:47,424 PUBLIKA: U redu. 463 00:25:47,424 --> 00:25:48,240 Odlično. 464 00:25:48,240 --> 00:25:51,290 >> PROFESOR: Isto tako u ovom primjeru možemo pretvoriti iz binarnog na decimalnih, 465 00:25:51,290 --> 00:25:53,290 i od binarne do heksadecimalnom. 466 00:25:53,290 --> 00:25:56,610 Vi želite biti sigurni da i vi praksa ide obrnuto. 467 00:25:56,610 --> 00:26:03,370 Dakle, ako sam ti dao 0xff, što bi nacrtati da u binarnom, zar ne? 468 00:26:03,370 --> 00:26:06,820 >> Možete pretvoriti u binarni F, što je jedan, jedan, jedan, jedan, 469 00:26:06,820 --> 00:26:09,380 pretvoriti u binarne F, koja jedan, jedan, jedan, jedan. 470 00:26:09,380 --> 00:26:11,310 >> Dakle, možemo vas da učinite drugi način. 471 00:26:11,310 --> 00:26:14,817 Dakle decimalnih u binarne ili heksadecimalni u binarne. 472 00:26:14,817 --> 00:26:16,650 Dakle, želite biti sigurni da znate u oba smjera. 473 00:26:16,650 --> 00:26:19,371 Vjerojatno ćemo vas pitati kombinacija dva. 474 00:26:19,371 --> 00:26:20,660 >> Da, imate pitanje? 475 00:26:20,660 --> 00:26:22,724 Mogu see-- si dobar? 476 00:26:22,724 --> 00:26:23,348 PUBLIKA: Da. 477 00:26:23,348 --> 00:26:24,560 PROFESOR: U redu. 478 00:26:24,560 --> 00:26:26,101 Jesam li dobro obrisati ovo? 479 00:26:26,101 --> 00:26:26,600 Veliki. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> U redu, odgovori su ovdje, ako bilo tko je znatiželjan kasnije i zbunjeni. 482 00:26:40,437 --> 00:26:41,844 U REDU. 483 00:26:41,844 --> 00:26:46,070 >> PUBLIKA: Je li bitno ako stavimo naši slova u glavnom gradu ili malim slovima? 484 00:26:46,070 --> 00:26:50,360 >> Profesor: To čini, jer u heksadecimalnom, po konvenciji, 485 00:26:50,360 --> 00:26:52,840 svi likovi su velika slova. 486 00:26:52,840 --> 00:26:54,650 Tako A do F su će biti veliko. 487 00:26:54,650 --> 00:26:58,660 Ako stavite malim slovom A, ne znam ako bi nužno označiti pogrešno. 488 00:26:58,660 --> 00:27:00,679 Ali teoretski, to nije tehnički 489 00:27:00,679 --> 00:27:01,970 kako ste trebali imati. 490 00:27:01,970 --> 00:27:03,303 Tako su svi trebali biti velikim slovima. 491 00:27:03,303 --> 00:27:05,910 Da, dobro pitanje. 492 00:27:05,910 --> 00:27:07,780 >> U REDU. 493 00:27:07,780 --> 00:27:08,790 Drugo pitanje. 494 00:27:08,790 --> 00:27:12,750 Razmotrite ovu lijepu programa ovdje. 495 00:27:12,750 --> 00:27:15,180 Ja ću postaviti pitanje, Vratit ću to. 496 00:27:15,180 --> 00:27:23,170 >> Dakle, kao prvo, ono što je unutar standarda io.h to od interesa za program? 497 00:27:23,170 --> 00:27:26,640 Drugo, što se u nedostatku znači u redu tri? 498 00:27:26,640 --> 00:27:30,572 I treće, što se vraćaju na nulu od Glavna kao liniji šest, općenito znači? 499 00:27:30,572 --> 00:27:33,280 Ako vi želite pisati onima dolje, jer moram se vratiti 500 00:27:33,280 --> 00:27:36,810 na slajd samo tako da možete vidjeti broj. 501 00:27:36,810 --> 00:27:40,400 Ovo je primjer, kao što je, možda Viša razina pitanje gdje ćemo vas pitati 502 00:27:40,400 --> 00:27:42,435 što stvari znače u programu. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Svatko dobro za mene povratak na slajd? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 OK super. 507 00:27:54,361 --> 00:27:57,610 Dakle, ja ću vam dati dečki poput možda tri minuta da pogledate ovaj jedan jako brzo. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> U redu, tako da je ovo jedan je kao prilično jednostavan, konceptualno. 510 00:28:44,140 --> 00:28:49,280 Se bilo tko želi mi reći što je Prvi iznutra hash uključujući 511 00:28:49,280 --> 00:28:52,630 naš standardni io.h knjižnica datoteke? 512 00:28:52,630 --> 00:28:55,510 Zašto nam je potrebna da knjižnica uključene za ovaj program? 513 00:28:55,510 --> 00:28:56,930 Ono što ovdje mi je potrebno za? 514 00:28:56,930 --> 00:28:56,980 >> Da? 515 00:28:56,980 --> 00:28:58,340 >> PUBLIKA: Je li to, kada staviš da printf? 516 00:28:58,340 --> 00:28:59,131 >> PROFESOR: Točno. 517 00:28:59,131 --> 00:29:01,780 Dakle printf, bilo vam vrijeme uzeti ulaz od korisnika 518 00:29:01,780 --> 00:29:04,140 i ispis nešto na ekranu, to 519 00:29:04,140 --> 00:29:05,600 standardni ulaz, izlaz knjižnica. 520 00:29:05,600 --> 00:29:07,170 Razmislite o tome da way-- ulaz, izlaz. 521 00:29:07,170 --> 00:29:08,430 >> Imam li izlaz? 522 00:29:08,430 --> 00:29:09,207 Da. 523 00:29:09,207 --> 00:29:12,040 Dakle, ja znam da sam uvijek ću treba standardizirati i.o knjižnicu. 524 00:29:12,040 --> 00:29:16,400 >> Dakle printf je funkcija kojim trebamo pristupiti 525 00:29:16,400 --> 00:29:19,370 i hashtag uključuju standardni i.o knjižnica. 526 00:29:19,370 --> 00:29:20,280 U REDU. 527 00:29:20,280 --> 00:29:22,660 >> Drugo, to što se praznina znači? 528 00:29:22,660 --> 00:29:26,970 Imamo int glavni (prazninu), što se poništiti ovdje znači ovdje na liniji tri? 529 00:29:26,970 --> 00:29:28,080 Da, u leđa. 530 00:29:28,080 --> 00:29:29,020 >> PUBLIKA: [nečujan] 531 00:29:29,020 --> 00:29:29,920 >> PROFESOR: Točno. 532 00:29:29,920 --> 00:29:33,320 Tako zapamtite, naučili smo počevši s našim pset 533 00:29:33,320 --> 00:29:35,360 da možete zapravo odrediti komandne linije 534 00:29:35,360 --> 00:29:39,010 Argumenti da je vaš program, koji vam Glavna funkcija, traje kao i vi, korisnik, 535 00:29:39,010 --> 00:29:39,650 ga zovu. 536 00:29:39,650 --> 00:29:42,650 Ako imamo praznina, to znači da vas može samo pokrenuti program izravno 537 00:29:42,650 --> 00:29:44,680 bez naredbenog retka argumente. 538 00:29:44,680 --> 00:29:46,160 Svatko jasno? 539 00:29:46,160 --> 00:29:46,660 U REDU. 540 00:29:46,660 --> 00:29:52,850 >> I na kraju zašto se zamarati radi taj povratak nula stvar ovdje? 541 00:29:52,850 --> 00:29:54,740 Zašto mi čak ni int glavni? 542 00:29:54,740 --> 00:29:57,330 Zašto ne možemo samo void main prazninu? 543 00:29:57,330 --> 00:29:59,216 Da? 544 00:29:59,216 --> 00:30:01,590 PUBLIKA: Samo da možemo biti sigurni da je program 545 00:30:01,590 --> 00:30:04,247 Uspješno izlaska, kao razliku ako je numerirane. 546 00:30:04,247 --> 00:30:06,580 I mi bi znali da je to druga vrsta pogreške. 547 00:30:06,580 --> 00:30:07,621 >> Profesor: Da, točno. 548 00:30:07,621 --> 00:30:10,670 Ovo je samo vrlo konvencionalna stvar koju radimo, 549 00:30:10,670 --> 00:30:13,840 je da je samo na kraju vaš program, samo da bi bili sigurni 550 00:30:13,840 --> 00:30:15,830 da je vaš glavni funkcije radi ispravno, 551 00:30:15,830 --> 00:30:17,940 uvijek želimo napraviti povrat nula. 552 00:30:17,940 --> 00:30:21,160 Iako smo mora nužno Ne vidim da je tiskana nigdje. 553 00:30:21,160 --> 00:30:25,092 >> Jer kao programera, znaš, ako imate mnogo različitih linija koda 554 00:30:25,092 --> 00:30:27,050 a ne znate gdje oni su idući u krivu, 555 00:30:27,050 --> 00:30:30,240 a ako se pogreška dogodi želite pobrinite se da ste dobili tu pogrešku. 556 00:30:30,240 --> 00:30:33,240 I tako obično ako nešto pođe krivo mi ćemo imati povrat jednog jednostavno 557 00:30:33,240 --> 00:30:34,669 kako bi bili sigurni da znamo da je. 558 00:30:34,669 --> 00:30:36,460 Dakle, ako vidite povratak nula, koji obično 559 00:30:36,460 --> 00:30:38,293 znači vaš program Uspješno izvršena. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Dobro? 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 ovdje. 566 00:30:52,680 --> 00:30:54,827 Uzmite u obzir da. 567 00:30:54,827 --> 00:30:56,910 A ako vi vidite plutaju, vi možete Vjerojatno 568 00:30:56,910 --> 00:31:00,810 imaju dobru ideju o tome što Ja sam o to pitati. 569 00:31:00,810 --> 00:31:05,200 >> Dakle, kada je ovaj program izvršava, kao što možete vidjeti, 570 00:31:05,200 --> 00:31:09,330 Ja sam progla plovak u mojoj glavnoj funkciji. 571 00:31:09,330 --> 00:31:13,470 Ja sam imenovanja je "odgovor", a ja sam postavljanje koja je jednaka jednoj podijeljena 10. 572 00:31:13,470 --> 00:31:17,860 Ja sam ispis, jednom decimala, da plutaju. 573 00:31:17,860 --> 00:31:19,880 A onda sam se vraćaju na nulu. 574 00:31:19,880 --> 00:31:24,470 >> Dakle, kada izvršenja programa, mislim natrag pohlepni sada 575 00:31:24,470 --> 00:31:26,550 Ovaj program ispisuje 0.0. 576 00:31:26,550 --> 00:31:29,993 Kao što svi znamo, nadamo se svi Znate, jedan podijeljena 10 nije 0.00, 577 00:31:29,993 --> 00:31:32,350 to je 0,1. 578 00:31:32,350 --> 00:31:37,810 No, objasniti zašto je ovaj program misli da 1 podijeljeno s 10 grafika 0,1 druge 579 00:31:37,810 --> 00:31:39,504 od 0.1? 580 00:31:39,504 --> 00:31:42,545 Ja ću ti dečki daju možda kao 30 sekundi za samo brzo razmišljati o tome 581 00:31:42,545 --> 00:31:43,878 a ja ću se vratiti u program. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> U REDU. 584 00:32:20,290 --> 00:32:22,205 Svatko želi dati ga metak? 585 00:32:22,205 --> 00:32:24,330 U tri rečenice ili manje, jer obično smo 586 00:32:24,330 --> 00:32:27,650 će ograničiti sve odgovore tri rečenice ili manje 587 00:32:27,650 --> 00:32:31,130 tako da ne samo povratiti slučajnih stvari na vašem kvizu. 588 00:32:31,130 --> 00:32:32,740 >> Da, uzeti metak. 589 00:32:32,740 --> 00:32:36,390 >> PUBLIKA: Pa mislim da je ovo što se zove, kao što je, [nečujan] 590 00:32:36,390 --> 00:32:42,320 Dakle, može biti, na primjer, tu bi moglo biti, kao, 0.09, 591 00:32:42,320 --> 00:32:47,250 da gdje ste ispisati prvi znamenkasti, to bi bilo 0,0? 592 00:32:47,250 --> 00:32:49,100 >> PROFESOR: Blizu, ne sasvim. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> PUBLIKA: Ti si jedan i dijeljenjem 10 i oni su cijeli brojevi. 595 00:32:51,770 --> 00:32:54,610 I tako je način na koji se to događa pohraniti je kao cijeli broj. 596 00:32:54,610 --> 00:32:56,480 I tako najbliži cijeli broj će biti 0.0. 597 00:32:56,480 --> 00:32:57,471 I tako to je 0,1. 598 00:32:57,471 --> 00:32:58,970 Profesor: Da, to je stvarno dobro. 599 00:32:58,970 --> 00:33:00,040 To je pravi odgovor. 600 00:33:00,040 --> 00:33:03,597 Dakle, to je vrlo zbunjujuće Koncept za puno djece. 601 00:33:03,597 --> 00:33:06,680 A ja stvarno želite biti sigurni da je to je ojačana u svačijem glavi. 602 00:33:06,680 --> 00:33:10,090 >> Dakle, ono što mi zovemo pluta točka nepreciznost, 603 00:33:10,090 --> 00:33:12,800 gdje je razlog zašto puno svoje programe u pohlepni 604 00:33:12,800 --> 00:33:17,010 ne rade u početku bilo zbog zaboravili ste da se baci svoju varijablu. 605 00:33:17,010 --> 00:33:19,370 Dakle, ono što je rekao Christabell bio je posve točno. 606 00:33:19,370 --> 00:33:21,990 >> Plovak je inherentno neprecizan. 607 00:33:21,990 --> 00:33:26,400 Budući da u računalu, desno, imamo konačan iznos bita memorije 608 00:33:26,400 --> 00:33:28,480 možemo koristiti da predstavljaju brojeve. 609 00:33:28,480 --> 00:33:33,480 Tako, na primjer, to CS50 ID is-- Mislim da je 64-bitna računala. 610 00:33:33,480 --> 00:33:37,520 >> Plovak mogu zastupati samo od konačnih iznosa tih bitova. 611 00:33:37,520 --> 00:33:42,260 I tako 0,1 s beskonačnim nula, To je bio 0,1, zar ne? 612 00:33:42,260 --> 00:33:45,450 Ali mi zapravo ne može pohraniti taj broj je u naše računalo. 613 00:33:45,450 --> 00:33:47,810 Mi jednostavno nemamo dovoljno memorije za to. 614 00:33:47,810 --> 00:33:52,340 >> I tako je najbliža aproksimacija što je pohranjena u memoriji je zapravo 615 00:33:52,340 --> 00:33:55,390 nešto kao 0.000 nečega, nešto, nešto, nešto. 616 00:33:55,390 --> 00:34:01,240 Koji, nakon što skratiti da, zaokružuje do 0.0. 617 00:34:01,240 --> 00:34:05,640 >> I tako to je samo jedan primjer koja pokazuje puno pitanja 618 00:34:05,640 --> 00:34:08,469 imamo kad god smo pokušavajući pogrešno učiniti math 619 00:34:08,469 --> 00:34:11,000 bez lijevanje kao drugi cijeli broj. 620 00:34:11,000 --> 00:34:14,870 Dakle, samo budite oprezni da se to dogodi. 621 00:34:14,870 --> 00:34:18,239 >> Na kvizovima, ako ćemo Vam dati blok koda i to je kao, 622 00:34:18,239 --> 00:34:19,510 što ispisuje na kraju? 623 00:34:19,510 --> 00:34:24,096 A ako je to neka slučajna vrijednost koju dečki trebaju znati zašto to događa. 624 00:34:24,096 --> 00:34:24,909 Da? 625 00:34:24,909 --> 00:34:27,926 >> PUBLIKA: skratiti se riješiti sve nakon određene točke? 626 00:34:27,926 --> 00:34:28,513 [NEČUJAN] 627 00:34:28,513 --> 00:34:30,929 Profesor: Da, tako je zapravo ovo je stvarno loše primjer, 628 00:34:30,929 --> 00:34:37,870 jer sve što je zapravo 0.100 će skratiti do 0.1. 629 00:34:37,870 --> 00:34:41,389 Ali, ako ste bili na it-- pokrenuti Ne znam zapamtite, jer prošle godine su 630 00:34:41,389 --> 00:34:42,830 vodio ga na drugom programu. 631 00:34:42,830 --> 00:34:45,300 Ran su u nešto što se zove CS50 aparati, koji se 632 00:34:45,300 --> 00:34:46,389 razlikuje od ID. 633 00:34:46,389 --> 00:34:48,520 To je bila 32-bitni sustav, mislim. 634 00:34:48,520 --> 00:34:50,290 I tako su različiti brojevi. 635 00:34:50,290 --> 00:34:53,330 >> Ali u biti, samo znam da cijeli koncept kraćenja 636 00:34:53,330 --> 00:34:54,815 i kako to samo smanjuje off stvari. 637 00:34:54,815 --> 00:34:55,690 I tako, ako to rounds-- 638 00:34:55,690 --> 00:34:56,300 >> PUBLIKA: Bez zaokruživanja. 639 00:34:56,300 --> 00:34:57,370 >> PROFESOR: Točno. 640 00:34:57,370 --> 00:34:57,870 Da. 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 >> Bok, u leđa. 644 00:35:05,250 --> 00:35:07,634 Samo ćemo preko neke Kviz pregled pitanja. 645 00:35:07,634 --> 00:35:08,430 >> U redu. 646 00:35:08,430 --> 00:35:10,150 Dakle, razmislite drugačiji program ovdje. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Idem da vam dečki par minuta da pročitate o tome. 649 00:35:15,380 --> 00:35:18,588 To je nešto što je za vrlo nedavno da mislim da zasvira puno od vas 650 00:35:18,588 --> 00:35:19,142 Dečki umovi. 651 00:35:19,142 --> 00:35:21,100 Ali ćemo razgovarati kroz to opet samo 652 00:35:21,100 --> 00:35:24,152 kako bi bili sigurni da potpuno razumijem ga. 653 00:35:24,152 --> 00:35:24,652 U REDU. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 U REDU. 656 00:35:41,780 --> 00:35:44,342 Svatko treba više vremena za pročitajte ovaj kod? 657 00:35:44,342 --> 00:35:45,650 U REDU. 658 00:35:45,650 --> 00:35:50,630 >> Dakle, čini mi se da u ovom programu sam 659 00:35:50,630 --> 00:35:53,460 stvarajući dvije žice pomoću gumba GetString. 660 00:35:53,460 --> 00:35:55,180 Jedan nazivaju je i jedna se zove t. 661 00:35:55,180 --> 00:35:58,680 A ako su oni jednaki jednaka međusobno 662 00:35:58,680 --> 00:36:00,880 to bi trebalo ispisati "You upišite istu stvar. " 663 00:36:00,880 --> 00:36:04,170 >> Ali elsewise, to bi ispisati, "You upisali različite stvari ", zar ne? 664 00:36:04,170 --> 00:36:05,990 Čini se vrlo, vrlo jednostavan. 665 00:36:05,990 --> 00:36:08,720 No, međutim, ako sam zapravo pokušati napisati ovaj program, 666 00:36:08,720 --> 00:36:12,230 čini se da čak i kada sam Ulazni točno iste žice, 667 00:36:12,230 --> 00:36:15,490 još uvijek ispisuje, "You upisali različite stvari! " 668 00:36:15,490 --> 00:36:18,020 Se bilo tko želi uzeti pucao na zašto ovaj program uvijek 669 00:36:18,020 --> 00:36:20,370 odgovara da ulazi su različiti, pa čak 670 00:36:20,370 --> 00:36:22,090 kada su sami riječi su isto? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Dakle, ako su se input-- David ljubav koristiti primjer kao mama, zar ne? 673 00:36:29,170 --> 00:36:37,890 Mala M-O-M, S, T jednako malim slovom M-O-M. 674 00:36:37,890 --> 00:36:40,340 Ako sam trčao kroz ovo da kod, zašto bi 675 00:36:40,340 --> 00:36:44,180 ispis "ste upisali različite stvari?" 676 00:36:44,180 --> 00:36:46,336 >> Se bilo tko treba više Vrijeme je da mislite o tome? 677 00:36:46,336 --> 00:36:47,294 U redu, mislim da smo dobro. 678 00:36:47,294 --> 00:36:48,716 Da? 679 00:36:48,716 --> 00:36:53,930 >> PUBLIKA: U redu, tako da je nešto gdje je pohranjen u memoriji, zar ne? 680 00:36:53,930 --> 00:36:54,890 >> PROFESOR: Aha. 681 00:36:54,890 --> 00:37:00,400 >> PUBLIKA: Gdje je to, ako je to Niz je pohranjen u memoriji se spot-- 682 00:37:00,400 --> 00:37:01,689 Ja izmišljanje this-- je nula. 683 00:37:01,689 --> 00:37:02,355 PROFESOR: Naravno. 684 00:37:02,355 --> 00:37:05,290 PUBLIKA: I niz t se čuva na mjestu memorije, 685 00:37:05,290 --> 00:37:11,000 kao i 167, a potom nula nije jednak 167. 686 00:37:11,000 --> 00:37:12,610 >> PROFESOR: Točno. 687 00:37:12,610 --> 00:37:18,350 U redu, pa ne zaboravite ovaj nevjerojatan objava smo objasnili vama 688 00:37:18,350 --> 00:37:21,530 prošlog tjedna, da nizovi zapravo ne postoji? 689 00:37:21,530 --> 00:37:25,380 Kada smo stvorili nešto što se zove string smo, u stvarnosti, 690 00:37:25,380 --> 00:37:29,330 stvara nešto što se zove char zvijezda. 691 00:37:29,330 --> 00:37:34,470 Koje sve to je pokazivač niz ili niz znakova. 692 00:37:34,470 --> 00:37:39,480 >> I tako je u ovom primjeru, ako sam bili na ulaznim M-O-m puta 693 00:37:39,480 --> 00:37:49,350 da je moj računalo će pohraniti je unutar memorije kose crtice nula, zar ne? 694 00:37:49,350 --> 00:37:53,180 Ta četiri slova, znakova, će biti pohranjena negdje. 695 00:37:53,180 --> 00:37:59,290 >> A onda su četiri likovi, backslash nula, 696 00:37:59,290 --> 00:38:01,275 su pohranjene negdje drugdje, zar ne? 697 00:38:01,275 --> 00:38:04,685 Nemam pojma gdje su adrese su oni negdje u mom računalu. 698 00:38:04,685 --> 00:38:07,080 Ali ja ne znam točno gdje su. 699 00:38:07,080 --> 00:38:10,170 >> Kad sam stvoriti string a, sve što je stvarno 700 00:38:10,170 --> 00:38:15,550 je pokazivač na početak ovog niza. 701 00:38:15,550 --> 00:38:21,130 A kad sam stvoriti ovaj t vrijednost, sve što je pokazivač ovdje. 702 00:38:21,130 --> 00:38:23,980 I tako kada pokušavate izjednačiti i provjerite 703 00:38:23,980 --> 00:38:27,710 da li s je jednaki jednaka t, računalo 704 00:38:27,710 --> 00:38:31,635 je zapravo samo povratka što je adresa ovog m 705 00:38:31,635 --> 00:38:33,390 i adresu tog m. 706 00:38:33,390 --> 00:38:36,230 I zato jer su dva zasebni djelići podataka 707 00:38:36,230 --> 00:38:38,750 koji su pohranjeni u dvije različite adresa na vašem računalu, 708 00:38:38,750 --> 00:38:41,750 računalo nikad neće prepoznaje ih kao isti. 709 00:38:41,750 --> 00:38:43,500 Da li netko želi dati pucao na ono što smo 710 00:38:43,500 --> 00:38:46,900 će morati učiniti ako smo htjeli ispraviti ovaj i imaju ispravan trčanje programa 711 00:38:46,900 --> 00:38:49,360 umjesto toga? 712 00:38:49,360 --> 00:38:52,070 Razmislite o tome za par sekundi. 713 00:38:52,070 --> 00:38:54,929 Što trebamo promijeniti nabaviti ovaj program djelovanja 714 00:38:54,929 --> 00:38:56,220 način želimo da funkcionira? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Da, želim da se ubosti na nju? 717 00:39:18,918 --> 00:39:24,082 >> PUBLIKA: Možemo pokušati dereference pokazivač i provjerite kroz niz? 718 00:39:24,082 --> 00:39:25,540 Profesor: To je jedan od načina da to učinite. 719 00:39:25,540 --> 00:39:27,880 Dakle, ono što je vaše ime ponovo? 720 00:39:27,880 --> 00:39:29,010 Žao mi je, podsjećaju me. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 Profesor: Da, pa što Zee predložio bih apsolutno raditi. 723 00:39:32,130 --> 00:39:32,629 Pravo? 724 00:39:32,629 --> 00:39:35,730 Mogli bismo dereference pokazivača i zapravo ići i pristup 725 00:39:35,730 --> 00:39:38,460 fizički podaci unutar odavde. 726 00:39:38,460 --> 00:39:40,300 A mi samo možemo usporediti cijeli zaslon. 727 00:39:40,300 --> 00:39:43,670 >> Možemo reći, u redu, pokazivač, daj mi ono što je unutra ovdje. 728 00:39:43,670 --> 00:39:44,960 To bi vratiti m. 729 00:39:44,960 --> 00:39:47,168 I ja bih rekao, pokazivač, daj mi ono što je unutra ovdje. 730 00:39:47,168 --> 00:39:47,750 Povratak je m. 731 00:39:47,750 --> 00:39:48,410 Da li one utakmicu? 732 00:39:48,410 --> 00:39:49,410 Da. 733 00:39:49,410 --> 00:39:50,340 Zatim smo krenuti dalje. 734 00:39:50,340 --> 00:39:54,240 >> Mi stalno provjeravanje cijelog dva žice sve do kraja 735 00:39:54,240 --> 00:39:56,635 i vidjeti ako oni su jednaki, ako sve vrijednosti jednake. 736 00:39:56,635 --> 00:39:59,680 A ako su sve vrijednosti jednake, onda znamo žice su istinite. 737 00:39:59,680 --> 00:40:01,600 Apsolutno, to je kako ćemo to učiniti? 738 00:40:01,600 --> 00:40:03,930 >> Se bilo tko zbunjen na bilo koji od ovoga? 739 00:40:03,930 --> 00:40:06,970 Cijeli koncept kako se žice su stvarno samo pokazivače, 740 00:40:06,970 --> 00:40:08,440 i kako oni zapravo ne postoji? 741 00:40:08,440 --> 00:40:10,480 A zašto smo dobili pogreške kao i način na koji smo ga dobili? 742 00:40:10,480 --> 00:40:15,070 Jer Jamčim vam dečki, upućuje i dodjela string i memorije 743 00:40:15,070 --> 00:40:16,470 će doći gore. 744 00:40:16,470 --> 00:40:17,410 >> Da? 745 00:40:17,410 --> 00:40:21,072 >> PUBLIKA: [nečujan] dereference to, samo stavite zvjezdicu [nečujan] 746 00:40:21,072 --> 00:40:21,780 PROFESOR: Pravo. 747 00:40:21,780 --> 00:40:28,430 Tako da derererence pokazivač sredstva ići na tu adresu pokazivača 748 00:40:28,430 --> 00:40:30,390 i dobiti podatke, vrijednost tamo. 749 00:40:30,390 --> 00:40:32,700 A način da to učinite je zvijezda pokazivač. 750 00:40:32,700 --> 00:40:34,262 Nemojte brkati to. 751 00:40:34,262 --> 00:40:35,186 >> PUBLIKA: [nečujan]. 752 00:40:35,186 --> 00:40:35,852 >> PROFESOR: Da. 753 00:40:35,852 --> 00:40:39,750 PUBLIKA: Tako možete samo napisati Ako zvijezde s jednako jednaki zvijezda t. 754 00:40:39,750 --> 00:40:40,630 >> Profesor: Pa, ne. 755 00:40:40,630 --> 00:40:40,960 Ne. 756 00:40:40,960 --> 00:40:41,640 >> PUBLIKA: To nije dovoljno dobar, zar ne? 757 00:40:41,640 --> 00:40:43,760 >> Profesor: To nije, jer si samo provjeri prvo slovo. 758 00:40:43,760 --> 00:40:46,010 Vjerojatno ćete se potrebna neka vrsta petlje da 759 00:40:46,010 --> 00:40:49,055 iterira kroz svaki lik u obje žice. 760 00:40:49,055 --> 00:40:49,837 Da. 761 00:40:49,837 --> 00:40:52,920 Dakle, ako ste htjeli samo provjeriti da vidim ako su započeli s iste stvari, 762 00:40:52,920 --> 00:40:58,220 možete učiniti ako, zvijezde s je jednak zvjezdica t. 763 00:40:58,220 --> 00:41:01,300 Tada ćete znati da su barem započeo s istim karakterom. 764 00:41:01,300 --> 00:41:01,952 >> Da? 765 00:41:01,952 --> 00:41:04,056 >> PUBLIKA: Pa onako vi koji bi se 766 00:41:04,056 --> 00:41:06,064 kao što je ugrađen za petlju ili pokazivač? 767 00:41:06,064 --> 00:41:06,730 PROFESOR: Da. 768 00:41:06,730 --> 00:41:08,170 Prilično mnogo samo za petlju. 769 00:41:08,170 --> 00:41:12,430 Zapamtite, David je u klasi spomenuo slobodno sintaktički šećera? 770 00:41:12,430 --> 00:41:17,690 I on je imao to vrlo zbunjujući stvar zvjezdice t 771 00:41:17,690 --> 00:41:22,030 plus jedan, gdje će integrirati kroz te pomicanje pokazivača? 772 00:41:22,030 --> 00:41:29,910 Lakše način radi ovo je samo t i. 773 00:41:29,910 --> 00:41:31,090 >> Dakle, to je samo niz. 774 00:41:31,090 --> 00:41:34,630 Način na koji će imati za petlja koja je trajala od nule do i, gdje je 775 00:41:34,630 --> 00:41:36,580 Ni je duljina od string, možete se i samo 776 00:41:36,580 --> 00:41:39,510 pišu da, umjesto da se Cijeli pokazivač, referentna stvar. 777 00:41:39,510 --> 00:41:43,510 Dakle, te stvari su upravo protuvrijednost u računalu. 778 00:41:43,510 --> 00:41:45,905 >> Vi vjerojatno neće trebate znati da, 779 00:41:45,905 --> 00:41:48,280 ali to je dobro samo vrsta imaju u leđa svoje mišljenje. 780 00:41:48,280 --> 00:41:52,630 Samo znam da se računalo prepoznaje različite blokove koda 781 00:41:52,630 --> 00:41:53,890 kao istu stvar. 782 00:41:53,890 --> 00:41:57,510 Jer to je samo daleko više user prijateljski nam ga predstaviti kao da je 783 00:41:57,510 --> 00:41:58,150 niz. 784 00:41:58,150 --> 00:42:00,990 To je samo lakše. 785 00:42:00,990 --> 00:42:02,719 >> PUBLIKA: Dakle, koristite strlen se sviđa, get-- 786 00:42:02,719 --> 00:42:03,385 PROFESOR: Da. 787 00:42:03,385 --> 00:42:03,926 PUBLIKA: U redu. 788 00:42:03,926 --> 00:42:05,940 Profesor: Vi mogli koristiti strlen ili, ako 789 00:42:05,940 --> 00:42:10,420 nisu imali strlen možete jednostavno napraviti do sve dok ne dosegnete kosu crtu nula za oboje. 790 00:42:10,420 --> 00:42:11,568 Ili će raditi. 791 00:42:11,568 --> 00:42:12,068 Da. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 PUBLIKA: Tako da je za svaki dereference jedan znak da smo zapravo 794 00:42:17,996 --> 00:42:21,044 pisanja ovog koda, mi može samo učiniti t zagrade ja 795 00:42:21,044 --> 00:42:22,460 sviđa sa zvijezdom ispred njega? 796 00:42:22,460 --> 00:42:27,700 >> Profesor: Da, jednako jednaka S Nosač ja, a onda držati se kreće I 797 00:42:27,700 --> 00:42:29,790 prema dolje sve dok ne pogoditi kraj. 798 00:42:29,790 --> 00:42:31,286 Da, to je ono što će učiniti. 799 00:42:31,286 --> 00:42:33,660 A ja ću zapravo imaju sljedeća primjer kada smo zapravo 800 00:42:33,660 --> 00:42:36,740 Napiši strlen pa ti dečki će vrsta od dobiti poigrati s njom malo. 801 00:42:36,740 --> 00:42:43,567 >> Tako je svima jasno samo sjećanje, žice, pokazivače, kvaliteta adrese? 802 00:42:43,567 --> 00:42:46,650 Neki viši pojmovi razini koju će zasigurno trebate znati o kvizu 803 00:42:46,650 --> 00:42:48,928 sutra. 804 00:42:48,928 --> 00:42:49,904 >> U 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 Da. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 U redu, tako da jedna stvar koja ćemo pitati ste, kao i mi svake godine na kvizu, je, 810 00:43:04,180 --> 00:43:08,340 Pretpostavljam da ste zaboravili (koji mi se čini da zaboravite napraviti godišnje) 811 00:43:08,340 --> 00:43:10,810 u kojoj je zaglavlje datoteke strlen je proglašen. 812 00:43:10,810 --> 00:43:13,860 I tako se moramo ga prepisati sebe. 813 00:43:13,860 --> 00:43:16,350 >> Evo popis smjernica da možemo vam predstaviti 814 00:43:16,350 --> 00:43:20,660 Dečki kojoj ste dobili za pretpostaviti da S string neće biti nula. 815 00:43:20,660 --> 00:43:23,830 Možete pretpostaviti da je neće biti prestaje s obrnute kose crte nula. 816 00:43:23,830 --> 00:43:26,670 Pa znaš da je to što to će završiti. 817 00:43:26,670 --> 00:43:29,500 >> I, na primjer, da je Duljina Hello će biti pet. 818 00:43:29,500 --> 00:43:32,890 Dakle, možete pretpostaviti da je pozdrav biti pet, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 Ne morate se pretpostaviti da je backside nula račune za duljinu. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Ova posljednja stvar ovdje, zar ne brinuti cjelobrojnog preljeva. 822 00:43:42,300 --> 00:43:45,270 Se bilo tko sjetiti što cijeli preljev? 823 00:43:45,270 --> 00:43:48,041 >> PUBLIKA: nadilazi Duljina [nečujan]. 824 00:43:48,041 --> 00:43:50,740 >> Profesor: Da, možete li objasniti malo, što to znači? 825 00:43:50,740 --> 00:43:55,330 >> PUBLIKA: Pa, mislim da ide natrag do odvajanja primjer ranije. 826 00:43:55,330 --> 00:43:58,380 Ali ako imate samo toliko brojeva koja nadilaze broj bitova 827 00:43:58,380 --> 00:44:01,409 da zapravo možete ga dodijeliti da će samo vrsta odsječen. 828 00:44:01,409 --> 00:44:04,242 Profesor: Da, tako dalje tipična Računalo, koliko bitova imamo? 829 00:44:04,242 --> 00:44:05,306 PUBLIKA: 32? 830 00:44:05,306 --> 00:44:06,430 Profesor: Da, 32, u pravu. 831 00:44:06,430 --> 00:44:10,030 I tako je to, ono, četiri milijardi, dvije milijarde? 832 00:44:10,030 --> 00:44:13,579 Četiri milijarde do četiri milijarde pozitivno integers, zar ne? 833 00:44:13,579 --> 00:44:15,370 Dvije milijarde negativna, dvije milijarde pozitivni, 834 00:44:15,370 --> 00:44:16,900 ovisi o tome što želite učiniti. 835 00:44:16,900 --> 00:44:21,470 >> I tako zapravo možemo imati dovoljno cijeli brojevi koji mogu ići gore 836 00:44:21,470 --> 00:44:25,800 na dvije do 31. minus 1, zar ne? 837 00:44:25,800 --> 00:44:27,980 Jer kad smo udario dva na 32., mi ne 838 00:44:27,980 --> 00:44:30,040 ima tu puno memorije u računalo. 839 00:44:30,040 --> 00:44:32,310 >> I tako, teoretski, ja može se s brojem 840 00:44:32,310 --> 00:44:34,560 to je, kao, dva do 46.. 841 00:44:34,560 --> 00:44:38,040 To je broj ogroman-magarac, ali teoretski si mogao. 842 00:44:38,040 --> 00:44:42,730 I tako cijeli preljev je ako pokušate stvoriti cijeli broj koji ide dalje od onoga što 843 00:44:42,730 --> 00:44:44,790 računalo je sposoban za pohranu. 844 00:44:44,790 --> 00:44:46,590 >> I tako vi za ovaj primjer ne 845 00:44:46,590 --> 00:44:51,330 brinuti o nama dajući vam diva niz koji je dvije do 32. znakova 846 00:44:51,330 --> 00:44:51,830 dugo. 847 00:44:51,830 --> 00:44:54,010 To bi se stvarno znači. 848 00:44:54,010 --> 00:44:59,430 >> U redu, tako da sam samo ću dati vi baza struktura ovog. 849 00:44:59,430 --> 00:45:02,020 Ti ćeš stvoriti funkcija zove int strlen gdje 850 00:45:02,020 --> 00:45:08,436 propusnicu u, ugljen zvijezda, ili niz, pokazivač na string zove s. 851 00:45:08,436 --> 00:45:10,820 >> U redu, svi su kopirali taj niz. 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-- drugi način. 855 00:45:17,020 --> 00:45:21,360 >> Dakle, ovo je vrsta poput teže komad problema, 856 00:45:21,360 --> 00:45:25,320 pa ću vam dati dečki možda pet do Šest minuta do vrste ideja 857 00:45:25,320 --> 00:45:27,478 i napisati ovu funkciju van. 858 00:45:27,478 --> 00:45:29,710 >> PUBLIKA: Mi ne računa za [nečujan] 859 00:45:29,710 --> 00:45:30,200 nemamo koristiti cijeli broj? 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 Dat ću ti dečki savjet. 863 00:48:06,930 --> 00:48:12,325 While petlji može biti vrlo korisno ovdje. 864 00:48:12,325 --> 00:48:12,825 Da. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Evo 867 00:48:45,495 --> 00:48:45,995 bombon. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Candy će biti dostupan za kviz, mislim. 870 00:48:53,410 --> 00:48:55,315 Dakle, vi ćete biti sve sugared do sutra. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Možete I-- ste ga dobili. 873 00:49:02,962 --> 00:49:03,718 >> PUBLIKA: U redu. 874 00:49:03,718 --> 00:49:04,384 PROFESOR: Da. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Možda više od 30 sekundi. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> U redu, ako ste ne učini, ne brinite. 879 00:50:07,340 --> 00:50:08,810 Mi ćemo se kretati kroz to zajedno. 880 00:50:08,810 --> 00:50:09,310 U REDU. 881 00:50:09,310 --> 00:50:13,800 Zato ću samo Dijelovi Osnovna struktura za tu funkciju ovdje. 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 Prvo, bilo tko htio reći mi što to znači int? 885 00:50:23,460 --> 00:50:25,160 Moramo imati u ovu funkciju. 886 00:50:25,160 --> 00:50:26,709 >> PUBLIKA: Strlen [nečujan]. 887 00:50:26,709 --> 00:50:27,500 PROFESOR: Točno. 888 00:50:27,500 --> 00:50:31,140 Dakle, ono što se događa ovdje, moramo vratiti cijeli broj. 889 00:50:31,140 --> 00:50:36,367 I kao što je navedeno u spec, želimo return-- 890 00:50:36,367 --> 00:50:37,700 Ići za to dečki, samo zadržati ide. 891 00:50:37,700 --> 00:50:40,480 Sve je dobro. 892 00:50:40,480 --> 00:50:42,960 Jedite sve to tako nemam ga uzeti natrag, zapravo. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 Int samo znači da ste će se vratiti cijeli broj. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Što je ovo char zvijezda je? 897 00:50:57,106 --> 00:50:58,640 Što to znači? 898 00:50:58,640 --> 00:51:00,879 >> PUBLIKA: Kao što je bio ulaz u. 899 00:51:00,879 --> 00:51:01,670 PROFESOR: Točno. 900 00:51:01,670 --> 00:51:04,142 A što je gotovo Ista stvar kao char zvijezda? 901 00:51:04,142 --> 00:51:04,850 PUBLIKA: Gudački? 902 00:51:04,850 --> 00:51:05,641 PROFESOR: Točno. 903 00:51:05,641 --> 00:51:09,080 Dakle, sve što radimo je davanje ovo pointer na niz. 904 00:51:09,080 --> 00:51:09,580 U 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 >> Također, ne zaboravite, ako zaboravimo da vam ove zagrade, 908 00:51:16,650 --> 00:51:18,330 ne zaboravite da ih sami pisati. 909 00:51:18,330 --> 00:51:20,720 Jer teoretski, tvoja koda netočni ako zaboravite da ih pišu. 910 00:51:20,720 --> 00:51:21,803 Samo uvijek obratiti pozornost. 911 00:51:21,803 --> 00:51:23,750 Kao, sitnice da ne primjećuju 912 00:51:23,750 --> 00:51:26,917 kada ste programiranja na prijenosnom računalu, jer tvoj laptop to radi za vas? 913 00:51:26,917 --> 00:51:28,624 Ne zaboravite pri pišete rukom. 914 00:51:28,624 --> 00:51:29,170 Da? 915 00:51:29,170 --> 00:51:30,954 >> PUBLIKA: Ali kako pogrešna? 916 00:51:30,954 --> 00:51:33,190 Kao, mi se cijela problema krivi? 917 00:51:33,190 --> 00:51:34,190 >> Profesor: Ne, ne. 918 00:51:34,190 --> 00:51:34,860 Ne brinite. 919 00:51:34,860 --> 00:51:39,270 To je zapravo teoretski moguće za vas da biste dobili puni bodova na pitanje 920 00:51:39,270 --> 00:51:41,980 čak i ako je vaš broj će se Nikad se izvoditi u stvarnom životu. 921 00:51:41,980 --> 00:51:46,052 Predlažem da ne probati da bi se to dogodilo. 922 00:51:46,052 --> 00:51:48,260 Na primjer, kao što ako je sve to je ovdje u pravu, 923 00:51:48,260 --> 00:51:51,850 ali zaboravite debelo crijevo ili nosač, Vaš broj neće zapravo pokrenuti. 924 00:51:51,850 --> 00:51:53,740 Ali možemo biti milostiv. 925 00:51:53,740 --> 00:51:54,394 >> Da? 926 00:51:54,394 --> 00:51:56,050 >> PUBLIKA: Imate li na komentirati na našem rukopisom? 927 00:51:56,050 --> 00:51:57,758 >> Profesor: Ne, ne, ne brige o tome. 928 00:51:57,758 --> 00:51:58,440 Ne komentiranja. 929 00:51:58,440 --> 00:51:59,400 Stil bi trebao biti dobar. 930 00:51:59,400 --> 00:52:01,470 Kao, ne Smush sve na jednom retku. 931 00:52:01,470 --> 00:52:04,580 Nećemo biti zadovoljni s vama, ako ste to učiniti. 932 00:52:04,580 --> 00:52:07,250 >> Da li netko želi daj mi prvu liniju? 933 00:52:07,250 --> 00:52:08,633 Savjet, to je vrlo jednostavno. 934 00:52:08,633 --> 00:52:09,320 >> Da? 935 00:52:09,320 --> 00:52:11,920 >> PUBLIKA: Interesi, n jednak nuli. 936 00:52:11,920 --> 00:52:13,734 Samo postavljanje brojača. 937 00:52:13,734 --> 00:52:15,900 Profesor: Dakle, mi želimo neke vrsta pulta, zar ne? 938 00:52:15,900 --> 00:52:19,780 Samo ću ga nazvati "računati" zbog čitljivosti. 939 00:52:19,780 --> 00:52:21,265 Što želimo ga postaviti jednaka? 940 00:52:21,265 --> 00:52:21,890 >> PUBLIKA: Zero. 941 00:52:21,890 --> 00:52:23,840 PROFESOR: Aha. 942 00:52:23,840 --> 00:52:24,340 Točka i zarez. 943 00:52:24,340 --> 00:52:26,250 To je također vrlo čudan crtež zarezom. 944 00:52:26,250 --> 00:52:28,870 Samo praksa da radi. 945 00:52:28,870 --> 00:52:31,990 >> Dakle, želimo prvo morati brojač tipa int. 946 00:52:31,990 --> 00:52:35,360 Zato želimo brojati do koliko mnogo znakova ili slova 947 00:52:35,360 --> 00:52:36,780 u ovom nizu, zar ne? 948 00:52:36,780 --> 00:52:38,330 Vrlo jednostavno prvi korak. 949 00:52:38,330 --> 00:52:42,140 >> U redu, možda malo složeniji Sada, kako ćemo to učiniti? 950 00:52:42,140 --> 00:52:45,400 Da li netko želi daj mi liniju koda 951 00:52:45,400 --> 00:52:48,450 koji mogu biti u mogućnosti pomoći petlju kroz ono što je ovo? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Da, hrabri duša u leđa? 954 00:52:56,900 --> 00:53:06,832 >> PUBLIKA: OK, a točka zvjezdice, Yeah, zvijezda s, 955 00:53:06,832 --> 00:53:09,465 nije jednaka nuli, onda nešto? 956 00:53:09,465 --> 00:53:11,090 Profesor: To je jako, jako blizu. 957 00:53:11,090 --> 00:53:11,835 Jako blizu. 958 00:53:11,835 --> 00:53:13,710 Tako ću adresu Dvije stvari s tim. 959 00:53:13,710 --> 00:53:18,240 Prije svega, to nije točno nula. 960 00:53:18,240 --> 00:53:20,110 Što je? 961 00:53:20,110 --> 00:53:22,550 To je null terminator, što je obrnuta kosa crta nula. 962 00:53:22,550 --> 00:53:24,960 Dakle, oni su različiti u smislu kako oni pohranjeni. 963 00:53:24,960 --> 00:53:26,270 Dakle, ti si jako blizu. 964 00:53:26,270 --> 00:53:30,330 >> I drugo, ne želimo samo pomaknuli pokazivač. 965 00:53:30,330 --> 00:53:32,320 Želimo da se zapravo pristupiti vrijednosti, zar ne? 966 00:53:32,320 --> 00:53:34,050 I tako kako ćemo to učiniti? 967 00:53:34,050 --> 00:53:34,550 Vrlo jednostavno. 968 00:53:34,550 --> 00:53:36,841 Nemojte razmišljati o pokazivača, Ne razmišljam o uspomenama. 969 00:53:36,841 --> 00:53:38,525 Vratite se na tjedan-dva tečaja. 970 00:53:38,525 --> 00:53:39,555 >> PUBLIKA: [nečujan]. 971 00:53:39,555 --> 00:53:40,680 PROFESOR: Od, sjećaš se? 972 00:53:40,680 --> 00:53:41,400 Što su nizovi? 973 00:53:41,400 --> 00:53:42,650 Kako su pohranjeni u memoriji? 974 00:53:42,650 --> 00:53:43,300 >> PUBLIKA: Oni podigli. 975 00:53:43,300 --> 00:53:43,810 >> PROFESOR: Oni su podigli. 976 00:53:43,810 --> 00:53:45,550 Pa kako ćemo pristupiti svaki lik unutra? 977 00:53:45,550 --> 00:53:46,466 >> PUBLIKA: [nečujan]. 978 00:53:46,466 --> 00:53:47,530 PROFESOR: Točno. 979 00:53:47,530 --> 00:53:53,195 Dakle while-- ono što ide unutra ovdje? 980 00:53:53,195 --> 00:53:54,940 S mjesta - 981 00:53:54,940 --> 00:53:55,920 >> PUBLIKA: I. 982 00:53:55,920 --> 00:53:58,216 >> PROFESOR: Oh, ja ne postoji, zar ne? 983 00:53:58,216 --> 00:53:59,620 >> PUBLIKA: Oh, računati? 984 00:53:59,620 --> 00:54:01,640 >> Profesor: Možemo samo koristiti računati, zar ne? 985 00:54:01,640 --> 00:54:03,050 >> PUBLIKA: Žao nam je, nazvao sam ga ja. 986 00:54:03,050 --> 00:54:04,341 >> Profesor: Da, to je sve dobro. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Imamo varijablu ovdje to već je proglašen kao naš brojač. 989 00:54:10,760 --> 00:54:13,650 Pa zašto ne bismo samo koristiti da kretati kroz while petlji? 990 00:54:13,650 --> 00:54:15,230 Ima li to smisla? 991 00:54:15,230 --> 00:54:20,864 >> Dakle, dok je u count-- se bilo tko želite mi dati ono što se događa nakon ovdje? 992 00:54:20,864 --> 00:54:22,030 PUBLIKA: To nije jednak. 993 00:54:22,030 --> 00:54:23,405 PROFESOR: nije jednak, zar ne? 994 00:54:23,405 --> 00:54:26,200 To je prasak jednak, uskličnik jednak, 995 00:54:26,200 --> 00:54:28,500 što god vi želite ga zovu ne equal-- 996 00:54:28,500 --> 00:54:29,496 >> PUBLIKA: [nečujan]. 997 00:54:29,496 --> 00:54:30,990 >> PROFESOR: Da. 998 00:54:30,990 --> 00:54:37,110 Zapamtite jednu ponudu je za char, dvostruki navodnici su za niz. 999 00:54:37,110 --> 00:54:38,630 Budite oprezni kada ih koristite. 1000 00:54:38,630 --> 00:54:42,430 Dakle, kada gledamo kroz polje, zadnji znak, 1001 00:54:42,430 --> 00:54:46,420 znamo što ne želimo da bude backslash nula. 1002 00:54:46,420 --> 00:54:47,340 >> Dakle, dok. 1003 00:54:47,340 --> 00:54:48,840 Mi nismo na kraju niza. 1004 00:54:48,840 --> 00:54:52,335 Što želimo učiniti iznutra? 1005 00:54:52,335 --> 00:54:55,269 >> PUBLIKA: Želimo dodati brojač tako da broji plus plus? 1006 00:54:55,269 --> 00:54:56,060 PROFESOR: Točno. 1007 00:54:56,060 --> 00:55:03,064 Dakle, ovdje ćemo napraviti brojati, prebrojati plus plus. 1008 00:55:03,064 --> 00:55:03,980 Nedostaje još jednu liniju. 1009 00:55:03,980 --> 00:55:05,090 Mi smo skoro tamo. 1010 00:55:05,090 --> 00:55:07,398 Što smo zaboravljajući da radim? 1011 00:55:07,398 --> 00:55:08,770 >> PUBLIKA: Vraćanje na nulu? 1012 00:55:08,770 --> 00:55:10,820 >> Profesor: Vi želite da se vrati na nulu? 1013 00:55:10,820 --> 00:55:12,962 >> PUBLIKA: Ne, vraćajući se strlen. 1014 00:55:12,962 --> 00:55:13,511 Čekati. 1015 00:55:13,511 --> 00:55:14,760 PROFESOR: Koja je pohranjena u? 1016 00:55:14,760 --> 00:55:15,090 PUBLIKA: grof. 1017 00:55:15,090 --> 00:55:15,589 Računati. 1018 00:55:15,589 --> 00:55:17,150 PROFESOR: Točno. 1019 00:55:17,150 --> 00:55:20,760 Dakle, ovdje ćemo se vratiti računati. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Jer ono što smo radiš ovdje ultimately-- 1022 00:55:25,380 --> 00:55:29,780 imamo brojač varijablu koja je će povećavati kroz naš niz. 1023 00:55:29,780 --> 00:55:33,050 Idemo dalje, imajte ide, okolo i okolo u ovoj petlji. 1024 00:55:33,050 --> 00:55:37,700 I dok nismo na kraju ovog niz, koji je null terminator. 1025 00:55:37,700 --> 00:55:40,410 >> I svaki put kad smo proći kroz da, mi dodajemo našem šalteru. 1026 00:55:40,410 --> 00:55:42,640 I idemo dalje zajedno u ovom nizu. 1027 00:55:42,640 --> 00:55:44,880 I na kraju, kad smo hit nul terminator, 1028 00:55:44,880 --> 00:55:48,469 znamo, oh, možemo razbiti, vratite računati. 1029 00:55:48,469 --> 00:55:49,260 Mi imamo strlen. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Da li svatko dobiti kako ovo je proveden? 1032 00:55:56,400 --> 00:55:58,830 Dok loops-- znam nemamo učiniti previše s njima, 1033 00:55:58,830 --> 00:56:01,240 ali oni su obično vrlo, vrlo korisno ako 1034 00:56:01,240 --> 00:56:05,390 Ne znam što ste zaustavljanja Uvjet nužno mora biti. 1035 00:56:05,390 --> 00:56:06,220 >> Pitanje? 1036 00:56:06,220 --> 00:56:10,080 >> PUBLIKA: Možemo pisati nula pod uvjetom vrijeme? 1037 00:56:10,080 --> 00:56:10,940 >> PROFESOR: Dok? 1038 00:56:10,940 --> 00:56:15,304 Da, tako da u ovom problemu sam ti imala Dečki pretpostaviti da je neće biti nula. 1039 00:56:15,304 --> 00:56:17,220 Jer zapamtite, teoretski, ako sam ti dao 1040 00:56:17,220 --> 00:56:21,180 pokazivač da je prevelika memorije, to bi vam dati null, zar ne? 1041 00:56:21,180 --> 00:56:23,770 To je ono što se operativni Sustav će učiniti. 1042 00:56:23,770 --> 00:56:26,960 >> Dakle, ako nisam ti rekao da preuzme e će biti nula, morate provjeriti. 1043 00:56:26,960 --> 00:56:32,050 Dakle ovdje, što će učiniti, ako je jednak jednak null, vratiti jedan. 1044 00:56:32,050 --> 00:56:33,028 Nešto kao to. 1045 00:56:33,028 --> 00:56:34,153 PUBLIKA: [nečujan] nuli. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 PROFESOR: U redu, reći ću ti zašto ne možemo to učiniti. 1048 00:56:39,370 --> 00:56:43,357 Zato zapamtite u memoriji, odmah, ovdje. 1049 00:56:43,357 --> 00:56:43,940 Mi ćemo ići ovdje. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Imaš divovskih blokova memorije sve s rešetkama 1052 00:56:54,090 --> 00:56:56,680 da pohraniti različite vrijednosti, zar ne? 1053 00:56:56,680 --> 00:57:00,110 I tako sve niz is-- za Primjerice, ako smo na ulazu pozdravi, 1054 00:57:00,110 --> 00:57:05,490 da bi H-E-L-L-O backslash nula, zar ne? 1055 00:57:05,490 --> 00:57:09,570 A onda tko zna, kao što je slučajni stvari koje su ovdje nakon njega. 1056 00:57:09,570 --> 00:57:11,220 >> Mi zapravo ne znamo što je tamo. 1057 00:57:11,220 --> 00:57:13,350 I tako, ako ste bili učiniti umjesto obrnute kose crte nula, 1058 00:57:13,350 --> 00:57:15,590 null, to ne može biti nula. 1059 00:57:15,590 --> 00:57:17,680 Jer to samo može značiti neki slučajni druge stvari 1060 00:57:17,680 --> 00:57:19,270 koji ne spadaju u svom nizu. 1061 00:57:19,270 --> 00:57:23,219 I tako je način na koji smo uvijek znali da niz završava se kosom crticom nula. 1062 00:57:23,219 --> 00:57:25,760 I tako je to uvijek kako smo provjerite je kraj niza. 1063 00:57:25,760 --> 00:57:30,820 >> Null, sve to znači, ako imate ne postoji pokazivač, prije svega, 1064 00:57:30,820 --> 00:57:36,160 ili ako je vaša memorijska je samo toliko velika da ne možete ga vratiti, onda bih biti nula. 1065 00:57:36,160 --> 00:57:40,150 Dakle, biti vrlo oprezni kada razlikovanje razlika između null 1066 00:57:40,150 --> 00:57:42,130 i backslash nula. 1067 00:57:42,130 --> 00:57:43,670 Da. 1068 00:57:43,670 --> 00:57:46,886 >> Svatko u redu s tim? 1069 00:57:46,886 --> 00:57:48,150 U REDU. 1070 00:57:48,150 --> 00:57:50,440 >> Tako sam imao vi napisati strlen. 1071 00:57:50,440 --> 00:57:53,790 Feasibly bismo mogli upitati što pišete iz A do I, ne zaboravite da je "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 ili što god vi želite nazvati? 1073 00:57:55,400 --> 00:57:58,010 To je funkcija u Vigenere i Cezar, koji 1074 00:57:58,010 --> 00:58:00,900 pretvara ASCII vrijednost cijelog broja? 1075 00:58:00,900 --> 00:58:04,360 To je također došao gore na prošlim kvizovima funkcija smo vas pitali da napiše. 1076 00:58:04,360 --> 00:58:08,280 >> Prilično mnogo bilo funkcija koje ste koristili i 1077 00:58:08,280 --> 00:58:11,660 vrlo lako sami napisati, Senzori sviđa manji, 1078 00:58:11,660 --> 00:58:14,620 je gornja, smanjiti, na gornji. 1079 00:58:14,620 --> 00:58:17,964 Funkcije koje će pretvoriti niz od malih slova u velika slova. 1080 00:58:17,964 --> 00:58:19,380 Svi znamo kako to učiniti, zar ne? 1081 00:58:19,380 --> 00:58:21,100 To je prilično jednostavan. 1082 00:58:21,100 --> 00:58:24,770 Samo želim da biste bili sigurni da ste can-- to je isto misaoni proces. 1083 00:58:24,770 --> 00:58:26,940 Vi samo ponoviti kroz i uključite stvari. 1084 00:58:26,940 --> 00:58:30,190 Ili računati ili kada uključite stvari drugačije. 1085 00:58:30,190 --> 00:58:32,280 >> Ja bih suggest-- I ne znam ako ćemo 1086 00:58:32,280 --> 00:58:39,080 vas zamoliti da zapamtite ono što kapitalu ili grad Z, ili mala slova A ili mala slova 1087 00:58:39,080 --> 00:58:42,640 z su u ASCII, ali ja bih predložiti Možda pisanje da dolje u slučaju 1088 00:58:42,640 --> 00:58:44,124 radimo. 1089 00:58:44,124 --> 00:58:45,540 Samo da ti dečki imaju referencu. 1090 00:58:45,540 --> 00:58:47,180 Kao veliko A, ono, 197? 1091 00:58:47,180 --> 00:58:51,320 I onda mala je kao 50 nečega. 1092 00:58:51,320 --> 00:58:52,492 65, da, tamo idete. 1093 00:58:52,492 --> 00:58:54,950 Tako je samo prilično mnogo znati Razlika između njih je 32. 1094 00:58:54,950 --> 00:58:57,670 To je prilično važno. 1095 00:58:57,670 --> 00:58:58,170 Da. 1096 00:58:58,170 --> 00:59:01,445 Jesam li dobro na ovo? 1097 00:59:01,445 --> 00:59:01,945 U REDU. 1098 00:59:01,945 --> 00:59:03,109 >> PUBLIKA: Mogli smo teoretski pisati neke 1099 00:59:03,109 --> 00:59:04,410 od ovih dolje, kao i na našem little-- 1100 00:59:04,410 --> 00:59:07,035 >> Profesor: Vi teorijski mogao samo kopirati funkciju dolje. 1101 00:59:07,035 --> 00:59:08,482 To je istina. 1102 00:59:08,482 --> 00:59:11,080 >> PUBLIKA: Ne [nečujan]. 1103 00:59:11,080 --> 00:59:12,720 >> Profesor: Vi imate list. 1104 00:59:12,720 --> 00:59:14,194 Vi imate bilješke list. 1105 00:59:14,194 --> 00:59:14,860 Možete ga upisati. 1106 00:59:14,860 --> 00:59:15,490 Možete ga pisati. 1107 00:59:15,490 --> 00:59:17,031 To možete učiniti sve što želite s njom. 1108 00:59:17,031 --> 00:59:18,530 Da. 1109 00:59:18,530 --> 00:59:21,406 Dakle teoretski, ako želite, ići. 1110 00:59:21,406 --> 00:59:23,338 >> PUBLIKA: [nečujan] ali mi ne stvarno 1111 00:59:23,338 --> 00:59:25,994 nužno treba zapamtiti vrijednost, možemo samo 1112 00:59:25,994 --> 00:59:28,914 koristiti za gornji ili niža funkcija, zar ne? 1113 00:59:28,914 --> 00:59:29,580 PROFESOR: Da. 1114 00:59:29,580 --> 00:59:32,740 Ali ako mi ti dao pitanje koja kaže da gornja pisati, 1115 00:59:32,740 --> 00:59:34,350 onda te bi trebao pisati. 1116 00:59:34,350 --> 00:59:38,150 Dakle, vi možete pretpostaviti da vas Dečki imaju pristup svim funkcijama, 1117 00:59:38,150 --> 00:59:41,523 ali ako želite koristiti za gornji ili manja, što također morate učiniti? 1118 00:59:41,523 --> 00:59:43,840 >> PUBLIKA: [nečujan] koristiti CS50 [nečujan] 1119 00:59:43,840 --> 00:59:44,840 >> Profesor: Je li CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Budite oprezni tamo. 1122 00:59:48,310 --> 00:59:50,640 >> Tako da gornji, na niže, je gornji, niži, 1123 00:59:50,640 --> 00:59:52,990 Funkcije koje uključuju Niz manipulacija su 1124 00:59:52,990 --> 00:59:55,490 sve bilo u ASCII ili unutar matematike knjižnici 1125 00:59:55,490 --> 00:59:57,350 ili unutar niza knjižnici. 1126 00:59:57,350 --> 01:00:00,290 Dakle, ako vi koristite one funkcije, budite oprezni da ne zaboravite 1127 01:00:00,290 --> 01:00:01,451 uključiti tu glavom. 1128 01:00:01,451 --> 01:00:03,950 Pa možda i nešto vas želite uključiti u svoj list, 1129 01:00:03,950 --> 01:00:04,892 što su zaglavlja? 1130 01:00:04,892 --> 01:00:06,600 Koje su knjižnice ste koristili? 1131 01:00:06,600 --> 01:00:08,550 Koje su funkcije unutar tih knjižnica? 1132 01:00:08,550 --> 01:00:09,230 To je važno. 1133 01:00:09,230 --> 01:00:10,420 >> Da? 1134 01:00:10,420 --> 01:00:12,570 >> PUBLIKA: Može li mi samo policajac van i učiniti hashtag 1135 01:00:12,570 --> 01:00:14,955 kroz apsolutno svako slovo mi smo ikada 1136 01:00:14,955 --> 01:00:17,340 vidi kao na sva pitanja? 1137 01:00:17,340 --> 01:00:18,320 >> PROFESOR: Vi mogli. 1138 01:00:18,320 --> 01:00:20,361 Ne znam koliko je sretna ćemo biti razredu 1139 01:00:20,361 --> 01:00:25,090 koji kviz kada svaki dio koda je dva puta kao čeznuti kao što treba biti. 1140 01:00:25,090 --> 01:00:27,200 Ne znam, možda smo skinu točke za stil. 1141 01:00:27,200 --> 01:00:28,790 No, teoretski svoj blog broj će biti u redu. 1142 01:00:28,790 --> 01:00:30,915 Vi bi policajac van i Samo su sve. 1143 01:00:30,915 --> 01:00:32,044 To je u redu previše, da. 1144 01:00:32,044 --> 01:00:32,960 PUBLIKA: [nečujan]. 1145 01:00:32,960 --> 01:00:33,270 PROFESOR: Da. 1146 01:00:33,270 --> 01:00:34,900 Ja bih predložiti ne radi to ipak. 1147 01:00:34,900 --> 01:00:35,505 Da. 1148 01:00:35,505 --> 01:00:36,130 PUBLIKA: cool. 1149 01:00:36,130 --> 01:00:36,620 PROFESOR: Dobro pitanje. 1150 01:00:36,620 --> 01:00:37,480 PUBLIKA: Dakle, najgori scenarij. 1151 01:00:37,480 --> 01:00:38,563 PROFESOR: Najgori slučaj. 1152 01:00:38,563 --> 01:00:40,350 Ako potpuno zaboraviti, mogli učiniti. 1153 01:00:40,350 --> 01:00:40,850 Da. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Da, kod je upravo tamo. 1156 01:00:45,400 --> 01:00:49,176 Ja se nje umjesto računati, ali vas Znaš, ono što lebdi svoj brod. 1157 01:00:49,176 --> 01:00:51,092 PUBLIKA: Čekaj, pa smo ne bi hashtag 1158 01:00:51,092 --> 01:00:53,460 su jer smo s početkom u int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> Profesor: Da, samo sam pretpostavio da bili smo zamoljeni napisati funkciju. 1161 01:00:59,924 --> 01:01:02,340 Ako želiš biti siguran, te vjerojatno bi ga stavio tamo. 1162 01:01:02,340 --> 01:01:05,650 Ali ja jednostavno ne zamaram, da. 1163 01:01:05,650 --> 01:01:09,919 >> Ne znam je li vama trebate bilo knjižnica za to. 1164 01:01:09,919 --> 01:01:12,710 Budući da ste stvarno ne ispisuje kako ništa ili ništa, zar ne? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Da, ja ne znam je li trebate knjižnicu. 1167 01:01:19,568 --> 01:01:22,400 >> U REDU. 1168 01:01:22,400 --> 01:01:26,020 To je također malo više zajedno linije memorije manipulacije. 1169 01:01:26,020 --> 01:01:27,400 Ovakav malo lukav. 1170 01:01:27,400 --> 01:01:28,960 Razmislite o ovome. 1171 01:01:28,960 --> 01:01:30,580 Imate funkciju pod nazivom FUNC. 1172 01:01:30,580 --> 01:01:33,570 Mogao sam ga nazvali god, ali sam se odlučio za to ime FUNC. 1173 01:01:33,570 --> 01:01:36,000 Ja ga gore moj glavni. 1174 01:01:36,000 --> 01:01:39,790 Zapamtite, želite imati funkcija, nakon glavnog, 1175 01:01:39,790 --> 01:01:42,370 želite biti sigurni da uključuju prototip vrhu. 1176 01:01:42,370 --> 01:01:45,750 >> No, u ovom slučaju to je tako kratko da sam osjetio da sam mogao samo 1177 01:01:45,750 --> 01:01:47,260 to su na vrhu glavna. 1178 01:01:47,260 --> 01:01:51,170 Nisam trebate imati prototip, jer je već napisano gore. 1179 01:01:51,170 --> 01:01:55,430 Dakle, sve radim u mom glavnom funkciji stvara prirodan broj x jednako 10. 1180 01:01:55,430 --> 01:02:00,490 Zovem moj funkcionalnog funkciju, a zatim ispisuje se nešto. 1181 01:02:00,490 --> 01:02:02,840 >> A onda je to zapravo što FUNC radi. 1182 01:02:02,840 --> 01:02:04,340 Hoćete li razmisliti o tome. 1183 01:02:04,340 --> 01:02:05,423 Budući da je malo zeznuto. 1184 01:02:05,423 --> 01:02:07,220 To je vrlo, vrlo lukav, zapravo. 1185 01:02:07,220 --> 01:02:09,549 Razmislite što to Program će biti na izlaz. 1186 01:02:09,549 --> 01:02:10,840 Dat ću ti dečki dvije minute. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Dobra rasprava? 1189 01:03:37,891 --> 01:03:38,853 >> PUBLIKA: Da. 1190 01:03:38,853 --> 01:03:39,815 >> PROFESOR: Da. 1191 01:03:39,815 --> 01:03:42,220 U redu, tako da je ovo zeznuto s razlogom. 1192 01:03:42,220 --> 01:03:44,845 I to je razlog zašto sam htjela donijeti to svačije pozornosti. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Se bilo tko želi mi dati prijedlog, pokusaj? 1195 01:03:51,147 --> 01:03:52,230 Što bi to isprintati? 1196 01:03:52,230 --> 01:03:53,930 Totalno u redu ako si u krivu. 1197 01:03:53,930 --> 01:03:55,619 Da? 1198 01:03:55,619 --> 01:03:59,483 >> PUBLIKA: Mislim da je 100 i zatim 10 na dvije odvojene linije. 1199 01:03:59,483 --> 01:04:00,940 >> Profesor: I 10? 1200 01:04:00,940 --> 01:04:03,154 Se bilo tko imati bilo kakve druge pretpostavke? 1201 01:04:03,154 --> 01:04:04,150 Da? 1202 01:04:04,150 --> 01:04:09,040 >> PUBLIKA: Možda samo 10, jer FUNC ne vraća ništa? 1203 01:04:09,040 --> 01:04:11,610 >> PROFESOR: U redu, tako da smo ima pogodak broj jedan 1204 01:04:11,610 --> 01:04:14,990 je da je pretpostavka broj dva je Samo će ispisati 10. 1205 01:04:14,990 --> 01:04:17,623 Se bilo tko imati bilo kakve druge pretpostavke? 1206 01:04:17,623 --> 01:04:19,654 U REDU. 1207 01:04:19,654 --> 01:04:21,070 Tako ćemo proći kroz ovo, zar ne? 1208 01:04:21,070 --> 01:04:23,903 Kad god dobijete komad koda, ne samo gledati na to i biti, 1209 01:04:23,903 --> 01:04:25,060 Ah, to je toliko stvari! 1210 01:04:25,060 --> 01:04:26,460 Ja sam tako zbunjena! 1211 01:04:26,460 --> 01:04:28,220 Kao, smiri se dolje. 1212 01:04:28,220 --> 01:04:31,602 Samo znam da li se i samo gledati kroz koda liniju po liniju. 1213 01:04:31,602 --> 01:04:32,310 To je sve što je. 1214 01:04:32,310 --> 01:04:33,840 To je kao da čita knjigu. 1215 01:04:33,840 --> 01:04:38,000 >> Dakle, s bilo funkciju, uvijek početi na glavni. 1216 01:04:38,000 --> 01:04:40,860 Tako ćemo početi na int main prazninu, 1217 01:04:40,860 --> 01:04:43,010 čak i programa Već trknuti, zar ne? 1218 01:04:43,010 --> 01:04:45,070 Početak u glavnom u praznini. 1219 01:04:45,070 --> 01:04:48,030 Int x jednako 10. 1220 01:04:48,030 --> 01:04:50,400 >> Tako ću izbrisati ovaj. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Idem izvući sjećanje samo tako vas dečki mogu nekako vidjeti što se događa. 1223 01:04:58,470 --> 01:05:02,190 >> Zapamtite ovdje imamo hrpu? 1224 01:05:02,190 --> 01:05:05,810 Ovdje gore imamo naše gomila negdje ovdje. 1225 01:05:05,810 --> 01:05:07,470 Stack odrasta, zar ne? 1226 01:05:07,470 --> 01:05:10,150 I u stog, imate mrežni funkcioniraju kao 1227 01:05:10,150 --> 01:05:12,230 svi mrežni lokalnih varijabli. 1228 01:05:12,230 --> 01:05:14,310 >> Dakle ovdje, int x jednak 10. 1229 01:05:14,310 --> 01:05:17,670 Unutar našeg glavnog funkciju smo stvarajući varijablu pod nazivom x. 1230 01:05:17,670 --> 01:05:20,590 Mi smo postavljanje koje jednak 10. 1231 01:05:20,590 --> 01:05:24,200 Ovdje imaš neke x, a vi ste postavljanje koje jednak 10, pravo, 1232 01:05:24,200 --> 01:05:25,400 u glavni. 1233 01:05:25,400 --> 01:05:27,430 Svatko dobro? 1234 01:05:27,430 --> 01:05:28,070 >> Funkcija. 1235 01:05:28,070 --> 01:05:30,330 Tako sada, u naš glavni funkcija, mi smo zvati 1236 01:05:30,330 --> 01:05:31,810 funkcija smo gore napisano. 1237 01:05:31,810 --> 01:05:34,550 Dakle, sada smo ući u drugu funkciju. 1238 01:05:34,550 --> 01:05:40,120 Idemo napraviti još jedan varijabla int x jednaka 100. 1239 01:05:40,120 --> 01:05:42,410 Što se događa ovdje na dimnjaku? 1240 01:05:42,410 --> 01:05:46,980 Što se događa kada se nazvati funkcija koja stvara nove varijable? 1241 01:05:46,980 --> 01:05:50,038 Što se događa ovdje na dimnjaku? 1242 01:05:50,038 --> 01:05:52,134 >> PUBLIKA: [nečujan] gomile na vrhu? 1243 01:05:52,134 --> 01:05:52,800 PROFESOR: Da. 1244 01:05:52,800 --> 01:05:54,050 Dakle, to je zapravo stvara kopiju. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 I to vrsta pilota na vrhu. 1247 01:05:57,740 --> 01:06:00,700 Razmislite o stack-- snop knjiga, hrpom ništa. 1248 01:06:00,700 --> 01:06:06,520 Piloti na vrhu, prvo u posljednja van, trajati u, prvi van. 1249 01:06:06,520 --> 01:06:08,471 >> Dakle, to će stvoriti x ovdje. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> To će imati sve funcs varijable. 1252 01:06:14,450 --> 01:06:14,950 Veliki. 1253 01:06:14,950 --> 01:06:20,980 Dakle, sada imamo dvije različite x je to predstavljaju dvije vrlo različite stvari. 1254 01:06:20,980 --> 01:06:24,470 Zatim ćemo ispisati iz cijelog broja x. 1255 01:06:24,470 --> 01:06:26,430 Tako ćemo ispisati 100, zar ne? 1256 01:06:26,430 --> 01:06:29,389 Jer ovdje je 100. 1257 01:06:29,389 --> 01:06:31,680 Dakle, to je prva stvar da će ispisati. 1258 01:06:31,680 --> 01:06:35,710 Kao što je ova funkcija vraća ništa, sada kada je funkcija, koja je u glavni vod 1259 01:06:35,710 --> 01:06:37,070 Gotovo je. 1260 01:06:37,070 --> 01:06:39,160 Svi dobri sa mnom tako daleko? 1261 01:06:39,160 --> 01:06:43,034 >> Tako smo sada preko dvije od tri linije od naših glavnih funkcija. 1262 01:06:43,034 --> 01:06:44,450 Sada idemo na trećem retku. 1263 01:06:44,450 --> 01:06:46,350 Idemo printf. 1264 01:06:46,350 --> 01:06:48,222 Što je ovo x roku glavna? 1265 01:06:48,222 --> 01:06:49,263 Što to predstavlja? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> Što je vrijednost x sada? 1268 01:06:54,280 --> 01:06:55,220 >> PUBLIKA: 100. 1269 01:06:55,220 --> 01:06:56,799 >> Profesor: To je 100? 1270 01:06:56,799 --> 01:06:57,590 PUBLIKA: Još 10. 1271 01:06:57,590 --> 01:06:58,878 PROFESOR: Još 10. 1272 01:06:58,878 --> 01:07:00,870 Da. 1273 01:07:00,870 --> 01:07:06,810 Zato ne zaboravite, u roku naš FUNC, x jednaka 100. 1274 01:07:06,810 --> 01:07:09,690 Ali ako se vratimo natrag našem glavnom funkcijom, 1275 01:07:09,690 --> 01:07:12,440 varijabla koja je pohranjena u drugo mjesto na našem stog. 1276 01:07:12,440 --> 01:07:16,250 >> Tako sada moramo vratiti na Glavni snop, mrežni lokalne varijable. 1277 01:07:16,250 --> 01:07:18,460 I ovdje je x jednak 10. 1278 01:07:18,460 --> 01:07:20,300 I tako ćemo ispisati 10. 1279 01:07:20,300 --> 01:07:22,530 >> Dakle, ona je apsolutno u pravu. 1280 01:07:22,530 --> 01:07:25,053 Mi ćemo imati izlaz 100 i 10. 1281 01:07:25,053 --> 01:07:25,553 Da? 1282 01:07:25,553 --> 01:07:28,700 PUBLIKA: Kada malloc, je li to gomila ili snop koji je [nečujan]? 1283 01:07:28,700 --> 01:07:31,950 PROFESOR: Kada malloc, ste uzimajući memorije iz hrpe 1284 01:07:31,950 --> 01:07:32,830 i dodjele. 1285 01:07:32,830 --> 01:07:34,950 Tako da ne morate igrati s bilo to. 1286 01:07:34,950 --> 01:07:38,100 Pa valjda veći takeaway Ovdje je nešto što se zove opseg. 1287 01:07:38,100 --> 01:07:39,650 >> Za one od vas koji su bili na pregled sjednica sinoć, 1288 01:07:39,650 --> 01:07:41,080 Kratko smo razgovarali o tome. 1289 01:07:41,080 --> 01:07:45,380 Opseg definira kako i kad postoje tvoje varijable. 1290 01:07:45,380 --> 01:07:48,050 Ili unutar okvira onoga što vaši varijable postoje. 1291 01:07:48,050 --> 01:07:51,690 >> Prilično mnogo pravilo općenito je, vaš variables-- ako ih stvaraju 1292 01:07:51,690 --> 01:07:56,660 unutar kovrčavom braces-- oni postoje samo unutar tih vitičastih zagrada. 1293 01:07:56,660 --> 01:08:00,312 >> Tako na primjer u našoj funkciji FUNC, vidite one dvije aparatić. 1294 01:08:00,312 --> 01:08:02,020 Ako ste stvaranje bilo unutar nje, 1295 01:08:02,020 --> 01:08:06,500 šanse su sve što radite je stvara snop i pohranjivanje da postoji. 1296 01:08:06,500 --> 01:08:07,430 Ista stvar je u glavni. 1297 01:08:07,430 --> 01:08:09,950 To je samo pohranjena unutar glavne. 1298 01:08:09,950 --> 01:08:13,560 >> Također želite biti vrlo, vrlo oprezni ovdje. 1299 01:08:13,560 --> 01:08:18,310 Budući da opseg i posuđuje Sama različitim primjerima. 1300 01:08:18,310 --> 01:08:25,950 Tako na primjer za petlje, za int i jednak 0. 1301 01:08:25,950 --> 01:08:28,460 I je manje od, ne znam, 10. 1302 01:08:28,460 --> 01:08:32,111 I plus plus. 1303 01:08:32,111 --> 01:08:34,560 A ti imaš kod unutar nje, zar ne? 1304 01:08:34,560 --> 01:08:38,830 >> Gdje se ta varijabla, Ja, zapravo samo postoji? 1305 01:08:38,830 --> 01:08:40,510 Samo unutar vaše for petlje. 1306 01:08:40,510 --> 01:08:43,640 Pa kladim mnogi od vas ima Vjerojatno je naišao ovu pogrešku kada 1307 01:08:43,640 --> 01:08:45,930 radite programe u svojim psets. 1308 01:08:45,930 --> 01:08:49,990 Koliko od vas su pokušali da koristim izvan for petlje i imao pogrešku? 1309 01:08:49,990 --> 01:08:53,310 Poput unreferenced brojeva ili nešto slično? 1310 01:08:53,310 --> 01:08:56,069 >> Razlog zašto se to dogodi je, jer ovdje si 1311 01:08:56,069 --> 01:08:59,109 stvarajući nešto što je samo postoji unutar vaše for petlje. 1312 01:08:59,109 --> 01:09:01,972 A ako pokušate ga koristiti, ja ne zapravo postoji izvan nje. 1313 01:09:01,972 --> 01:09:04,930 Tako je u osnovi računala govoreći, ja Ne znaš što govoriš. 1314 01:09:04,930 --> 01:09:08,689 Sve što znam je da je sam bio ovdje, ali sada više ne. 1315 01:09:08,689 --> 01:09:12,580 >> Dakle, ako sam bila stvoriti for petlja unutar, zar ne? 1316 01:09:12,580 --> 01:09:19,080 A ja ću napraviti još jedan, poput int j, a to su učiniti sve. 1317 01:09:19,080 --> 01:09:23,689 I imate kod unutar to petlja, j postoji samo ovdje. 1318 01:09:23,689 --> 01:09:26,029 Ali to također postoji unutar i. 1319 01:09:26,029 --> 01:09:29,310 I tako j postoji samo u ovo petlji, 1320 01:09:29,310 --> 01:09:33,850 a ja postoji u cijelu stvar. 1321 01:09:33,850 --> 01:09:34,500 >> Svatko jasno? 1322 01:09:34,500 --> 01:09:37,416 Ista stvar s uvjetnim izjavama Ako želite stvoriti ništa. 1323 01:09:37,416 --> 01:09:40,390 Ista stvar s while petlje ako je Želite li stvoriti nešto. 1324 01:09:40,390 --> 01:09:42,390 To je nešto što se vrlo, vrlo oprezni. 1325 01:09:42,390 --> 01:09:45,681 Dakle, ovo je stvarno dobar problem u Osjećam da je pokazala dvije stvari. 1326 01:09:45,681 --> 01:09:47,160 To je pokazao prvi, opseg. 1327 01:09:47,160 --> 01:09:49,550 I to pokazao Također dodjela memorije. 1328 01:09:49,550 --> 01:09:54,130 Jer vi trebali znati da funkcija raste prema gore u snopu. 1329 01:09:54,130 --> 01:09:56,710 I to kada poziv funkcije, koju stvara 1330 01:09:56,710 --> 01:09:59,060 u biti novi snop memorije. 1331 01:09:59,060 --> 01:10:02,100 To je vrlo različito od što je vaš mrežni pamćenje. 1332 01:10:02,100 --> 01:10:03,300 Da. 1333 01:10:03,300 --> 01:10:03,800 Uh! 1334 01:10:03,800 --> 01:10:05,470 Svatko OK na to? 1335 01:10:05,470 --> 01:10:06,750 To je zbunjujuće. 1336 01:10:06,750 --> 01:10:09,380 Vrlo dobar teme ići preko, jer si vjerojatno 1337 01:10:09,380 --> 01:10:12,255 će dobiti neki lukav stvari kao da je na kvizu. 1338 01:10:12,255 --> 01:10:13,350 Da. 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 Stavit ću dobiti 100 na jednom linija 10, a zatim na drugoj. 1342 01:10:18,430 --> 01:10:21,468 Da, vrlo dobro. 1343 01:10:21,468 --> 01:10:26,350 >> OK, sad vi ćete priliku biti Tas. 1344 01:10:26,350 --> 01:10:30,600 Moći ćete odgovoriti na sva lijep e-mailove koje sam ponekad dobiti. 1345 01:10:30,600 --> 01:10:34,290 >> Dakle, Dragi Andi, vidim mislim da je nešto ide u redu s mojim prevodilac. 1346 01:10:34,290 --> 01:10:37,910 Siguran sam da je moj broj je ispravan, ali sam držati uzimajući greška segmentiranja 1347 01:10:37,910 --> 01:10:39,074 svaki put sam pokrenuti. 1348 01:10:39,074 --> 01:10:39,740 Što se događa? 1349 01:10:39,740 --> 01:10:42,844 Molim pomoć, puno ljubavi. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Ako vi dobili nešto poput da kako bi ti odgovorili? 1352 01:10:49,410 --> 01:10:51,860 To su zapravo vrlo česte Pitanja ćemo vas pitati. 1353 01:10:51,860 --> 01:10:54,090 Je li, mi ćemo vam dati scenarij, mi ćemo dati nam 1354 01:10:54,090 --> 01:10:56,350 Vaš najbolji pogodak na ono što se događa. 1355 01:10:56,350 --> 01:11:00,710 Svatko ima ubosti na ono što se događa? 1356 01:11:00,710 --> 01:11:02,654 Da? 1357 01:11:02,654 --> 01:11:06,056 >> PUBLIKA: Možda dereferenced null, nešto poput pokazivača 1358 01:11:06,056 --> 01:11:08,924 ukazuje na nešto null. 1359 01:11:08,924 --> 01:11:11,590 Profesor: Da, to bi bila primjer, kada će se to dogoditi. 1360 01:11:11,590 --> 01:11:14,467 Ali što je veća slika onoga što se ovdje događa? 1361 01:11:14,467 --> 01:11:17,050 PUBLIKA: Je li pokušavate pristupiti memorije da niste 1362 01:11:17,050 --> 01:11:18,175 trebao imati pristup? 1363 01:11:18,175 --> 01:11:19,200 PROFESOR: Točno. 1364 01:11:19,200 --> 01:11:24,800 Tako misliti greške SEG, sivo ograničenja, ograničeni prostor u memoriji 1365 01:11:24,800 --> 01:11:27,780 da ne bi trebalo biti dira. 1366 01:11:27,780 --> 01:11:31,670 >> Dakle, prilično kada pokušavate da index-- kao na primjer, 1367 01:11:31,670 --> 01:11:34,110 ste proglašen niz od nula do devet. 1368 01:11:34,110 --> 01:11:37,360 Ali pokušate dotaknuti kako će 10. vrijednost, nemate pristup to. 1369 01:11:37,360 --> 01:11:38,694 Budući da niste ga proglasili. 1370 01:11:38,694 --> 01:11:40,943 I tako je vaše računalo ide gledati da bude kao, 1371 01:11:40,943 --> 01:11:43,440 uh oh, pokušavate ići izvan granica indeksa. 1372 01:11:43,440 --> 01:11:45,270 Ja ću vam dati greška segmentacije. 1373 01:11:45,270 --> 01:11:46,590 >> Smatramo segmentu, zar ne? 1374 01:11:46,590 --> 01:11:49,665 Dodatni segment, kriv je kada pokušate probiti nešto 1375 01:11:49,665 --> 01:11:50,790 i da ne bi trebali biti tamo. 1376 01:11:50,790 --> 01:11:53,660 Segmentacija kriv je bilo pokušate dotaknuti stvari 1377 01:11:53,660 --> 01:11:54,970 da ne bi trebalo biti dira. 1378 01:11:54,970 --> 01:11:56,815 >> Dakle, uobičajeni primjeri su indeksa. 1379 01:11:56,815 --> 01:11:58,940 Naravno, ako pokušavate na dodir koji je null, 1380 01:11:58,940 --> 01:12:00,220 koji će također raditi kao dobro. 1381 01:12:00,220 --> 01:12:02,300 Ako pokazivač pokušavao dodirivati ​​stvari koje se ne smije dirati, 1382 01:12:02,300 --> 01:12:03,730 koja također može raditi kao dobro. 1383 01:12:03,730 --> 01:12:07,120 Najčešće vi ćete vidjeti u niz. 1384 01:12:07,120 --> 01:12:07,740 Svatko dobro? 1385 01:12:07,740 --> 01:12:10,374 >> PUBLIKA: Dakle, ako želite pristupiti na 10. točku 1386 01:12:10,374 --> 01:12:12,290 a tu je samo granica od devet ili nešto. 1387 01:12:12,290 --> 01:12:13,160 >> Profesor: Da, točno. 1388 01:12:13,160 --> 01:12:13,660 Prilično mnogo. 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 Dakle, imamo to divno stvari naziva vrste. 1394 01:12:23,440 --> 01:12:25,472 Ako Spoji sort-- kao i mi vidjeli u primjeru kada je 1395 01:12:25,472 --> 01:12:27,180 David činio cijeli stvar u class-- zašto, 1396 01:12:27,180 --> 01:12:29,760 ako je tako puno brže od bilo koji od ostalih vrsta, 1397 01:12:29,760 --> 01:12:33,310 zašto se onda uopće zamarati znajući bilo koje druge vrste? 1398 01:12:33,310 --> 01:12:35,100 >> Što je ovo pitanje stvarno te pitam? 1399 01:12:35,100 --> 01:12:36,659 Što je tri word-- 1400 01:12:36,659 --> 01:12:37,950 PUBLIKA: Što je trade-off? 1401 01:12:37,950 --> 01:12:38,530 PROFESOR: Točno. 1402 01:12:38,530 --> 01:12:39,946 To je ono što je pitanje pita. 1403 01:12:39,946 --> 01:12:43,682 Što je kompromis između Spoji vrsta stihova bilo koje druge vrste? 1404 01:12:43,682 --> 01:12:45,850 >> PUBLIKA: Vodi memorije, zar ne? 1405 01:12:45,850 --> 01:12:47,720 >> PROFESOR: Dali objasniti da malo više? 1406 01:12:47,720 --> 01:12:49,490 Prvo ćemo objasniti pisma dućan. 1407 01:12:49,490 --> 01:12:50,970 Kako Spoji vrsta raditi? 1408 01:12:50,970 --> 01:12:55,220 >> PUBLIKA: Tako to radi dijeleći sve na pola 1409 01:12:55,220 --> 01:13:00,660 a zatim ga stavljajući zajedno i preraspodjelom u redu, 1410 01:13:00,660 --> 01:13:02,862 kao i svaki put kada spojiti seta. 1411 01:13:02,862 --> 01:13:03,820 PROFESOR: Prilično mnogo. 1412 01:13:03,820 --> 01:13:06,861 Pa ja mogu nacrtati ovo, ali to bi uzeti mi pet minuta da ga izvući. 1413 01:13:06,861 --> 01:13:10,220 Pogledajte natrag na rubrikom slajdova gdje smo pokriveni pisma vrsta. 1414 01:13:10,220 --> 01:13:10,790 Točno. 1415 01:13:10,790 --> 01:13:13,406 >> Dakle, način na koji Spoji razvrstava radove je li to dijeli stvari na pola, 1416 01:13:13,406 --> 01:13:15,780 i onda samo gleda Prvi vrijednosti svih njih 1417 01:13:15,780 --> 01:13:17,000 i razvrstava samo to. 1418 01:13:17,000 --> 01:13:20,364 Kontinuirano stvara nove nizove i stavlja stvari sve više i više u redu. 1419 01:13:20,364 --> 01:13:23,030 I tako, dok je to jako, jako brzo jer it's-- znate, 1420 01:13:23,030 --> 01:13:25,380 binarno traženje n log n. 1421 01:13:25,380 --> 01:13:27,880 Vi stvarate toliko različitih polja da ste 1422 01:13:27,880 --> 01:13:29,700 koristite veliku količinu memorije. 1423 01:13:29,700 --> 01:13:33,080 I tako dok je brži, trgovina off ovdje je da koristite više memorije. 1424 01:13:33,080 --> 01:13:38,490 >> I tako, savjet, vrste i pretraga su pokriveni puno više ove godine 1425 01:13:38,490 --> 01:13:41,610 nego su oni bili u godinama prethodnih. 1426 01:13:41,610 --> 01:13:45,100 Vi bi trebali vidjeti da ogleda u skladu s kvizu. 1427 01:13:45,100 --> 01:13:49,160 Ja bi definitivno provesti vrijeme ide nad onim što sve različite vrste 1428 01:13:49,160 --> 01:13:52,320 su, kako binarni pretraživanje, kako linearno traži posao. 1429 01:13:52,320 --> 01:13:54,750 Kako možda pseudokod kodirati one out. 1430 01:13:54,750 --> 01:13:55,950 Koji su trčanje puta? 1431 01:13:55,950 --> 01:13:59,210 Nešto kao što je trčanje vremena je vrlo jednostavno zabilježite na bilješku list, 1432 01:13:59,210 --> 01:13:59,710 pravo? 1433 01:13:59,710 --> 01:14:01,420 >> To je stvarno teško kada ste u sredini test 1434 01:14:01,420 --> 01:14:02,390 a vi morate shvatiti da je van. 1435 01:14:02,390 --> 01:14:03,160 Kopirajte ga dolje. 1436 01:14:03,160 --> 01:14:05,550 Jamčim ti si ćete morati znati. 1437 01:14:05,550 --> 01:14:06,860 Koje su ustupke? 1438 01:14:06,860 --> 01:14:10,064 U najgorem slučaju, najbolje scenarije za sve njih, vrlo upoznati. 1439 01:14:10,064 --> 01:14:10,564 Da? 1440 01:14:10,564 --> 01:14:12,730 >> PUBLIKA: Ne trebamo znate kako to kod pisma vrsta? 1441 01:14:12,730 --> 01:14:15,470 Kao, trebamo zapamtite Rekurzivno? 1442 01:14:15,470 --> 01:14:18,950 >> Profesor: Ja jako sumnjam, samo jer to je kao prilično komplicirano. 1443 01:14:18,950 --> 01:14:22,282 Ali to ne mora biti nemoguća, ako mi Vas molimo da koristite pseudokod ga. 1444 01:14:22,282 --> 01:14:22,781 Da. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Da, u redu, još jedan. 1447 01:14:29,170 --> 01:14:31,387 To može doći u ste zadnji komad u malo. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 Da? 1450 01:14:43,090 --> 01:14:44,930 Jeste svi čuli? 1451 01:14:44,930 --> 01:14:48,360 >> OK, prilično prvi Sve, što tip programa 1452 01:14:48,360 --> 01:14:51,000 će biti dajući vam izlaz ovako? 1453 01:14:51,000 --> 01:14:54,350 Zapamtite da vas zamolio da uče o Ova nova vrsta debugging alat? 1454 01:14:54,350 --> 01:14:57,340 Što je ime od njega? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, pravo 1456 01:14:59,460 --> 01:15:02,600 >> To je program u kojem mogli nazvati mogla 1457 01:15:02,600 --> 01:15:05,940 pratiti sve memorije koji ste koristite u svom programu i događa. 1458 01:15:05,940 --> 01:15:11,090 Dakle, ako imaš nešto, kao što je, definitivno izgubili, 40 bajtova u jednom bloku. 1459 01:15:11,090 --> 01:15:14,870 Vjerojatno niste prisjećajući se da ga oslobodi. 1460 01:15:14,870 --> 01:15:18,710 Jer ako koristite bajtova memorije, to znači da ste pristupiti tu memoriju, 1461 01:15:18,710 --> 01:15:20,240 ali nisu bili u mogućnosti osloboditi. 1462 01:15:20,240 --> 01:15:21,948 Dakle, želite biti sigurni da ste također 1463 01:15:21,948 --> 01:15:31,420 pomoću free-- to je function-- da oslobodi sve 1464 01:15:31,420 --> 01:15:34,930 memorije realociran strane malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Cool. 1466 01:15:35,500 --> 01:15:37,140 Dakle ovaj slajd, ja ću ga gore. 1467 01:15:37,140 --> 01:15:41,050 To je svugdje u puno predavanja, u puno sekcija slajdova. 1468 01:15:41,050 --> 01:15:44,254 Vi stvarno želite biti sigurni samo znam sve ovo. 1469 01:15:44,254 --> 01:15:47,170 Ili u vašem bilješki listu ili ako želim ga pamtiti, slobodno. 1470 01:15:47,170 --> 01:15:48,836 To je jako, jako, jako važno. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Također vrlo dobar Pitanje koje se može postaviti. 1473 01:15:56,890 --> 01:16:00,320 Zašto je pogled na Izbor sort-- Izbor sort-- sve trajanjima 1474 01:16:00,320 --> 01:16:02,060 se n na kvadrat. 1475 01:16:02,060 --> 01:16:06,714 Bez obzira na to kako je popis u pitanju ti kao, pa zašto je izbor sort-- 1476 01:16:06,714 --> 01:16:08,630 Dat ću ti dečki 30 Drugi misle o tome. 1477 01:16:08,630 --> 01:16:10,700 Jer to je vrsta zbunjujuće. 1478 01:16:10,700 --> 01:16:12,710 To uključuje neki konceptualni misli. 1479 01:16:12,710 --> 01:16:16,470 Zašto bi se pokrenuti puta biti isti u i najgore i najbolje scenarije? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> Da? 1482 01:16:30,000 --> 01:16:38,084 >> PUBLIKA: Zbog izbora vrsta svaki položaj ili mjesto u ovom malom nizu 1483 01:16:38,084 --> 01:16:40,350 stvar ili što god. 1484 01:16:40,350 --> 01:16:44,430 Pa čak ni u najboljem slučaju, čak i ako je posve razvrstani, 1485 01:16:44,430 --> 01:16:47,380 to će i dalje biti kao, u redu, jedan. 1486 01:16:47,380 --> 01:16:49,000 U mom prvom mjestu imam jedan. 1487 01:16:49,000 --> 01:16:50,250 I proći kroz sve njih. 1488 01:16:50,250 --> 01:16:51,249 U redu, on je najmanji. 1489 01:16:51,249 --> 01:16:53,053 A onda to ide opet te je kao, u redu, dva 1490 01:16:53,053 --> 01:16:54,594 je najmanji od svih stvari. 1491 01:16:54,594 --> 01:16:56,804 Ali to i dalje mora provjeriti svaki jedan. 1492 01:16:56,804 --> 01:16:57,470 PROFESOR: Da. 1493 01:16:57,470 --> 01:17:00,490 Tako, na primjer, neka je samo reći Imamo popis, već razvrstani, 1494 01:17:00,490 --> 01:17:03,390 niz jedan do pet. 1495 01:17:03,390 --> 01:17:07,100 Način na koji vrste odabira je da to ide preko, on provjerava ove dvije. 1496 01:17:07,100 --> 01:17:08,234 Zatim se provjerava ta dva. 1497 01:17:08,234 --> 01:17:09,650 A onda provjerava i provjerava. 1498 01:17:09,650 --> 01:17:13,285 To čuva provjeru svih njih, bez obzira da li ili ne 1499 01:17:13,285 --> 01:17:14,160 to je zapravo riješeno. 1500 01:17:14,160 --> 01:17:16,450 Jer to je jednostavno način na koji je neka vrsta radova. 1501 01:17:16,450 --> 01:17:19,530 >> I tako to pitanje je vrsta kao konceptualni pitanje ćemo postaviti. 1502 01:17:19,530 --> 01:17:21,430 Gdje prvo, da znati kakav odabir 1503 01:17:21,430 --> 01:17:23,304 je, u pravu, da bi mogli odgovoriti na pitanje. 1504 01:17:23,304 --> 01:17:26,200 Morate biti u stanju razumjeti konceptualno što se događa. 1505 01:17:26,200 --> 01:17:30,760 A onda ga možete prijaviti i mislim, OK neka je samo zamisliti najgori mogući scenarij. 1506 01:17:30,760 --> 01:17:32,230 Svi su u silaznom redoslijedu. 1507 01:17:32,230 --> 01:17:33,290 Kako bi to utjecati na to? 1508 01:17:33,290 --> 01:17:34,650 >> Što ako je uzlaznom redoslijedu? 1509 01:17:34,650 --> 01:17:35,640 Ako je već razvrstani? 1510 01:17:35,640 --> 01:17:37,240 Kako bi to utjecati na runtimes? 1511 01:17:37,240 --> 01:17:40,270 A onda Izbor vrsta, primijetit ćete da zapravo ne smeta. 1512 01:17:40,270 --> 01:17:43,500 Budući da ste checking sve Vrijednosti bez obzira što se događa. 1513 01:17:43,500 --> 01:17:45,810 >> I tako dobre stvari koje treba zapamtiti. 1514 01:17:45,810 --> 01:17:50,290 Zašto neke vrste se razlikuju od drugih i kako najbolje i najgore scenarije 1515 01:17:50,290 --> 01:17:52,740 će utjecati na sve njih. 1516 01:17:52,740 --> 01:17:56,700 >> Idem stvarno hit u vrstama jer to će biti na kvizu. 1517 01:17:56,700 --> 01:17:57,199 Da. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 U REDU. 1520 01:18:01,320 --> 01:18:05,590 Postoji šest minuta utakmice. 1521 01:18:05,590 --> 01:18:09,880 Ja mogu uzeti tri minute pitanja. 1522 01:18:09,880 --> 01:18:12,290 Također možete objesiti oko za kao i 20 minuta nakon odjeljka 1523 01:18:12,290 --> 01:18:13,850 ako želite postaviti pitanja kao dobro. 1524 01:18:13,850 --> 01:18:16,330 Se bilo tko samo stvarno kratko pitanja ili konceptualnim pitanjima 1525 01:18:16,330 --> 01:18:17,360 oni su nejasno o sada? 1526 01:18:17,360 --> 01:18:17,832 Da? 1527 01:18:17,832 --> 01:18:19,720 >> PUBLIKA: Možete li govoriti malo malo o bitovima operatera? 1528 01:18:19,720 --> 01:18:20,280 >> PROFESOR: Da. 1529 01:18:20,280 --> 01:18:22,446 Dakle bitovima operateri nešto što je vjerojatno 1530 01:18:22,446 --> 01:18:24,170 Možda samo želite staviti na svoj list. 1531 01:18:24,170 --> 01:18:27,540 Dakle quickly-- Ne želim ići previše u dubinu 1532 01:18:27,540 --> 01:18:31,164 jer Harvardu, u svojoj pregled sjednici, pokrio ga prilično dobro. 1533 01:18:31,164 --> 01:18:33,080 Bitno operatora, postoji pet od njih, zar ne? 1534 01:18:33,080 --> 01:18:41,370 >> Tu je ovo, što je X ili funkcija, postoji znak za struju, koja je i. 1535 01:18:41,370 --> 01:18:44,050 Cijev, koja je ili. 1536 01:18:44,050 --> 01:18:46,790 I onda imate dva različite vrste smjene. 1537 01:18:46,790 --> 01:18:50,610 >> Ako sam vam dvije vrijednosti, ako je Dajem vam, kao što su, jedan i jedan. 1538 01:18:50,610 --> 01:18:52,390 Što bi to ocijeniti kako? 1539 01:18:52,390 --> 01:18:55,490 Ako sam vam dati istiniti i istiniti, istina? 1540 01:18:55,490 --> 01:18:56,930 Što je točno ili netočno? 1541 01:18:56,930 --> 01:18:57,830 Ipak istina, zar ne? 1542 01:18:57,830 --> 01:18:59,762 Jer postoji ili. 1543 01:18:59,762 --> 01:19:01,220 Mi ćemo vam najvjerojatnije dati brojeve. 1544 01:19:01,220 --> 01:19:03,780 Tako zapamtite, jedan jednako istina, nula jednako lažna. 1545 01:19:03,780 --> 01:19:07,407 I možemo vam dati ove stvari i molimo vas da nam reći što se događa. 1546 01:19:07,407 --> 01:19:10,240 Harvard ga pokriva u prvi 10 minuta studijskog sjednice 1547 01:19:10,240 --> 01:19:11,230 jako, jako dobro. 1548 01:19:11,230 --> 01:19:14,260 Dakle vi želite napraviti jeste li se osvrnuti na to. 1549 01:19:14,260 --> 01:19:16,387 >> PUBLIKA: Je pisa5 će biti na kvizu? 1550 01:19:16,387 --> 01:19:16,970 Profesor: Ne 1551 01:19:16,970 --> 01:19:18,240 Nemojte ni pogledajte pisa5 sada. 1552 01:19:18,240 --> 01:19:18,810 Teško. 1553 01:19:18,810 --> 01:19:22,830 Samo čak i ne zamarati gledajući pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Međutim, kao što neke savjete i prijedloge, ja 1555 01:19:25,665 --> 01:19:28,320 predlagati počnete pisa5 čim kviz je gotov. 1556 01:19:28,320 --> 01:19:30,319 To će biti najteži tjedno, ali onda dečki 1557 01:19:30,319 --> 01:19:34,590 će ga prenijeti na brdima valjanja zeleno i štenaca, 1558 01:19:34,590 --> 01:19:36,115 i to je u redu. 1559 01:19:36,115 --> 01:19:39,810 >> Ovaj razred dobiva značajne lakše nakon petog pset. 1560 01:19:39,810 --> 01:19:41,560 PUBLIKA: Radno vrijeme su nedjelja, ponedjeljak? 1561 01:19:41,560 --> 01:19:44,260 Profesor: Da, tako će se radno vrijeme nedjelja na ponedjeljak za pset. 1562 01:19:44,260 --> 01:19:47,009 Radno vrijeme večeras u biti će biti samo pregled za kviz. 1563 01:19:47,009 --> 01:19:50,350 Ako netko želi doći i pitati TAS pitanje, mi ćemo biti tamo. 1564 01:19:50,350 --> 01:19:53,220 >> Uzet ću možda i još jedno pitanje ako netko ima pitanje? 1565 01:19:53,220 --> 01:19:53,809 Da? 1566 01:19:53,809 --> 01:19:55,850 PUBLIKA: Kada ste definiranje čvorovi, [nečujan] 1567 01:19:55,850 --> 01:20:00,700 ako kažeš čvor zvijezda i onda sljedeći, radi se računalo automatski 1568 01:20:00,700 --> 01:20:03,610 Razumijem da si pozivajući se na drugom pokazivač? 1569 01:20:03,610 --> 01:20:04,580 >> Profesor: Ne 1570 01:20:04,580 --> 01:20:06,710 >> PUBLIKA: Morate Prebacite vezu je [nečujan]? 1571 01:20:06,710 --> 01:20:09,270 >> Profesor: Dakle, u osnovi struct od čvora je, zapamtite, 1572 01:20:09,270 --> 01:20:12,620 to je kao da stvorite čvor i onda imate pokazivač zove sljedeći. 1573 01:20:12,620 --> 01:20:14,630 Sve što radite je ima struktura tamo. 1574 01:20:14,630 --> 01:20:16,387 Morate dodijeliti da pokazivač negdje. 1575 01:20:16,387 --> 01:20:18,470 Tako računala ne Znaš što radi još. 1576 01:20:18,470 --> 01:20:20,250 Morate zapravo dodijeliti kada ste izrade popisa povezane. 1577 01:20:20,250 --> 01:20:22,170 I to je ono što uglavnom pset 5 će biti dalje. 1578 01:20:22,170 --> 01:20:24,106 Tako da nema brige o bilo koji da je upravo sada. 1579 01:20:24,106 --> 01:20:26,380 >> PUBLIKA: Dakle, mi ne trebaju previše usredotočiti na popisu linkova, samo 1580 01:20:26,380 --> 01:20:27,440 opća koncepcija? 1581 01:20:27,440 --> 01:20:30,980 >> PROFESOR: Samo prilično mnogo hrpe, redovi, veza liste, stabla, hash tablica. 1582 01:20:30,980 --> 01:20:33,639 Samo biti u stanju znati što su oni. 1583 01:20:33,639 --> 01:20:35,680 Nećemo pitati želite nešto specifično 1584 01:20:35,680 --> 01:20:39,300 jer mi stvarno nije učinio pset da pokriva ništa od toga još. 1585 01:20:39,300 --> 01:20:45,540 >> Tako je u posljednje dvije minute prije Ja vas osloboditi ubiti ovaj kviz. 1586 01:20:45,540 --> 01:20:49,370 Prilično mnogo, kao što je, razmišljati o tome kako koliko ti dečki su došli u ovoj klasi. 1587 01:20:49,370 --> 01:20:52,820 >> Sjećam se kad je dva tjedna ove klase, neki od vas 1588 01:20:52,820 --> 01:20:55,720 provesti tri sata pisanja vodu. 1589 01:20:55,720 --> 01:20:57,970 Koliko dugo će vas odvesti Dečki pisati vodu sada? 1590 01:20:57,970 --> 01:20:59,670 30 sekundi, možda? 1591 01:20:59,670 --> 01:21:01,810 Razmislite o tome koliko ti dečki su naučili. 1592 01:21:01,810 --> 01:21:04,320 CS je jako, jako teško predmet. 1593 01:21:04,320 --> 01:21:06,190 Nema sumnje u to. 1594 01:21:06,190 --> 01:21:09,160 To je teško, to je razlog zašto nitko ne proučava. 1595 01:21:09,160 --> 01:21:10,730 To je samo teško. 1596 01:21:10,730 --> 01:21:11,650 I to je sasvim u redu. 1597 01:21:11,650 --> 01:21:14,150 >> I ja sam jako ponosan što Svatko je to ovako daleko. 1598 01:21:14,150 --> 01:21:16,380 Psets nije lako. 1599 01:21:16,380 --> 01:21:17,790 Oni uzeti puno vremena. 1600 01:21:17,790 --> 01:21:22,580 Vi, neću vas pitati za pisanje igra 15 ili Vigenere na pset. 1601 01:21:22,580 --> 01:21:24,160 Nema potrebe da se samo nakaza out o tome. 1602 01:21:24,160 --> 01:21:28,080 Sve testiramo ovdje je ocijeniti Vaša konceptualna znanja, kao i 1603 01:21:28,080 --> 01:21:31,524 kao i neke od svojih temeljnih vještina kodiranja. 1604 01:21:31,524 --> 01:21:33,440 Test je dizajniran za biti vrlo izazovna. 1605 01:21:33,440 --> 01:21:36,180 Kao, to je dizajniran za vas ne bi dobili 100. 1606 01:21:36,180 --> 01:21:39,880 Također je dizajniran za vas vjerojatno neće moći završiti u 75 minuta. 1607 01:21:39,880 --> 01:21:41,995 I to je sasvim u redu. 1608 01:21:41,995 --> 01:21:42,870 Ja sam student sam. 1609 01:21:42,870 --> 01:21:45,960 Znam, Mrzim kad hodam iz kviza biti, sranje. 1610 01:21:45,960 --> 01:21:47,044 To je stvarno teško. 1611 01:21:47,044 --> 01:21:49,460 Vjerojatno što će se happen-- i to je sasvim u redu, 1612 01:21:49,460 --> 01:21:50,751 Govorim ti momci sada. 1613 01:21:50,751 --> 01:21:53,190 Sredstva na ove stvari nisu visoke uopće. 1614 01:21:53,190 --> 01:21:55,360 >> A za one od vas koji su sve, kao što je, 1615 01:21:55,360 --> 01:21:57,870 trojke na tvoj problem seta, to ne znači da ste 1616 01:21:57,870 --> 01:21:59,536 će dobiti 60 posto u ovoj klasi. 1617 01:21:59,536 --> 01:22:01,440 Ako dobijete 60% na kviz, da ne 1618 01:22:01,440 --> 01:22:03,330 znači da ćeš dobiti D u ovoj klasi. 1619 01:22:03,330 --> 01:22:05,740 Vidimo, pogotovo ja, jer one od vas u mom dijelu, 1620 01:22:05,740 --> 01:22:07,406 Vidim kako tvrdi vi svi rade. 1621 01:22:07,406 --> 01:22:09,190 I pratiti to. 1622 01:22:09,190 --> 01:22:11,420 >> Vi ćete biti u redu. 1623 01:22:11,420 --> 01:22:14,580 Nema institucionalno sjećanje sreća na kraju semestra. 1624 01:22:14,580 --> 01:22:16,840 Budući da sva djeca s Harvarda su govori njihovi prijatelji, oh, vi ćete biti u redu. 1625 01:22:16,840 --> 01:22:18,381 Nitko vam reći momci da je ovdje. 1626 01:22:18,381 --> 01:22:20,950 Dakle, moram vam reći momci da je ovdje. 1627 01:22:20,950 --> 01:22:22,280 >> Vi ćete biti u redu. 1628 01:22:22,280 --> 01:22:24,080 Ja sam ponosan na sve vas momci. 1629 01:22:24,080 --> 01:22:25,680 Test će biti teško. 1630 01:22:25,680 --> 01:22:28,140 Studija za to, a poslije samo ga baciti. 1631 01:22:28,140 --> 01:22:31,280 Nabavite spremni učiti nove stvari. 1632 01:22:31,280 --> 01:22:33,990 I jesti slatkiše. 1633 01:22:33,990 --> 01:22:35,940 Imamo imaju puno slatkiša. 1634 01:22:35,940 --> 01:22:37,760 >> Nabavite dobar noćni san. 1635 01:22:37,760 --> 01:22:40,420 Nemojte se ne spava, jer to bi bilo jako loše. 1636 01:22:40,420 --> 01:22:41,490 CS je puno logike. 1637 01:22:41,490 --> 01:22:44,960 Ako ne spavate, ne može funkcionirati, i tvoj mozak ne može funkcionirati. 1638 01:22:44,960 --> 01:22:48,780 A ja ću biti ovdje za sljedeći 20 minuta, ako netko želi družiti. 1639 01:22:48,780 --> 01:22:51,150 Vi će ga ubiti. 1640 01:22:51,150 --> 01:22:53,000 Sretno. 1641 01:22:53,000 --> 01:22:55,663