1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> Profesor: Tak agenda pro tento týden, není tak moc věcí. 3 00:00:09,790 --> 00:00:12,801 Ale doufejme, že velmi, velmi užitečné a relevantní pro vás tento týden. 4 00:00:12,801 --> 00:00:15,550 Ale my se chystáte strávit možná 15, 20 minut jen rychle mluví 5 00:00:15,550 --> 00:00:17,370 o seznamu odkazů. 6 00:00:17,370 --> 00:00:19,694 Seznamy odkaz se chystáte vztahovat na kvíz. 7 00:00:19,694 --> 00:00:22,610 Takže možná, že by bylo velmi užitečné se dozvědět něco o tom, co to je. 8 00:00:22,610 --> 00:00:25,210 >> Chystáme se utratit obrovské Většina dnešních sekce 9 00:00:25,210 --> 00:00:27,640 bude přes kvíz nulovými problémy praxe. 10 00:00:27,640 --> 00:00:30,970 A pak budeme šetřit snad 20, 30 minut na konci pro všechny přetrvávající dotazy 11 00:00:30,970 --> 00:00:32,850 někdo má. 12 00:00:32,850 --> 00:00:34,610 >> A pak, poslední pět minut, jdu 13 00:00:34,610 --> 00:00:36,467 dát napumpovat řeč pro kvíz. 14 00:00:36,467 --> 00:00:38,050 Vy všichni chceme být za to tady. 15 00:00:38,050 --> 00:00:39,591 Vzhledem k tomu, že to bude ten správný čas. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Dobře, takže některé materiál na seznamu odkazů. 18 00:00:49,230 --> 00:00:52,620 Jak oni jsou typicky strukturované je Máte, co se nazývá uzel, že jo? 19 00:00:52,620 --> 00:00:54,870 Máte tyto věci zvané uzly, které jsou structs. 20 00:00:54,870 --> 00:00:57,360 Já půjdu nad tím, jak vytvořit uzel na další snímek. 21 00:00:57,360 --> 00:01:00,680 Ale v podstatě všichni napojeni Seznamy je jsou data, která 22 00:01:00,680 --> 00:01:03,340 bylo navlečené dohromady pomocí ukazatelů. 23 00:01:03,340 --> 00:01:09,110 >> A tak výhodu máme použití propojeného seznamu přes, 24 00:01:09,110 --> 00:01:11,280 možná, jako pole, je skutečnost, že v matici 25 00:01:11,280 --> 00:01:15,000 budete potřebovat jeden souvislý blok paměti vše na jednom místě, jeden 26 00:01:15,000 --> 00:01:16,870 po sobě, aby bylo možné, aby toto. 27 00:01:16,870 --> 00:01:20,200 Vzhledem k tomu, Google seznamu, můžete mají náhodné malé kousky paměti 28 00:01:20,200 --> 00:01:23,020 po celém vašem počítači navlečené dohromady ukazatelů. 29 00:01:23,020 --> 00:01:26,270 >> A tímto způsobem přístup k informacím 30 00:01:26,270 --> 00:01:28,610 že přichází jeden po jiné, po druhé 31 00:01:28,610 --> 00:01:32,720 aniž by bylo jen obrovský kus paměti v počítači někde. 32 00:01:32,720 --> 00:01:35,910 A tak to je jeden z hlavních Důvody, proč používáme seznam odkazů. 33 00:01:35,910 --> 00:01:40,300 >> Za druhé, je to velmi snadné dynamicky změnit velikost seznamu odkazů, protože v poli, 34 00:01:40,300 --> 00:01:44,720 při deklarovat pole, máte určitou nastavenou hodnotu. 35 00:01:44,720 --> 00:01:47,340 Řekněme, že jsem chtěl vytvořit Pole 10 celých čísel. 36 00:01:47,340 --> 00:01:49,970 I vytvořit řadu 10 celá čísla, a to je vše. 37 00:01:49,970 --> 00:01:50,580 Je to 10. 38 00:01:50,580 --> 00:01:52,038 Já nevím, co dělat po tom. 39 00:01:52,038 --> 00:01:53,680 Kdybych chtěl, aby se stalo 11, můžete to udělat. 40 00:01:53,680 --> 00:01:55,710 Pokud chci, aby se stalo 9, můžete to udělat. 41 00:01:55,710 --> 00:01:59,910 >> Vzhledem k tomu, v seznamu odkazů, můžete přidat a odstranit a vložit kamkoli budete chtít. 42 00:01:59,910 --> 00:02:04,940 Můžete dynamicky měnit velikost strukturu tady, vaše datové struktury. 43 00:02:04,940 --> 00:02:08,370 A to nám dává hodně více přidáno flexibility 44 00:02:08,370 --> 00:02:11,320 že my ne typicky mají s poli. 45 00:02:11,320 --> 00:02:15,210 >> Každý, kdo nevědí, základní struktura, jak je seznam odkaz 46 00:02:15,210 --> 00:02:17,930 nebo proč musíme použít jeden přes pole? 47 00:02:17,930 --> 00:02:20,330 Jo, půjdeme přes detailně jak se vlastně vytvořit. 48 00:02:20,330 --> 00:02:24,121 Ale to je jen druh obecný smysl právě teď. 49 00:02:24,121 --> 00:02:24,620 Bezva. 50 00:02:24,620 --> 00:02:28,770 A tak pole jsou navlečené spolu z těchto krásných maličkostí 51 00:02:28,770 --> 00:02:29,960 zvané uzly. 52 00:02:29,960 --> 00:02:32,210 Všechny uzel je je druh Struct. 53 00:02:32,210 --> 00:02:36,090 Pamatujte si, že struct je, pokud jste chtěli vytvořit určitý typ proměnné 54 00:02:36,090 --> 00:02:39,850 v C, že není již existují, vy, jako programátor, 55 00:02:39,850 --> 00:02:42,030 může skutečně vytvořit, že sami. 56 00:02:42,030 --> 00:02:46,540 >> A tak se tento typ dat Struktura se nazývá uzel, 57 00:02:46,540 --> 00:02:50,770 bylo skutečně vytvořen nás, že neexistuje v rámci C, na jeho vlastní. 58 00:02:50,770 --> 00:02:53,150 A způsob, jakým vás vytvořit z nich je máte 59 00:02:53,150 --> 00:02:57,170 hlavička typedef struct, který říká kompilátoru Jsem 60 00:02:57,170 --> 00:02:59,640 o vytvoření Struct. 61 00:02:59,640 --> 00:03:00,830 >> Jdeme pojmenujte ji "uzel". 62 00:03:00,830 --> 00:03:03,350 A uvnitř jdeme deklarovat proměnnou v, 63 00:03:03,350 --> 00:03:05,060 který se chystá uložit hodnotu. 64 00:03:05,060 --> 00:03:09,320 A pak jsme také bude se ukazatel s názvem "next" 65 00:03:09,320 --> 00:03:12,090 , který odkazuje na příští uzel v seznamu odkazů. 66 00:03:12,090 --> 00:03:14,730 A pak skončíte, že off pouhým opakováním uzel znovu tak, 67 00:03:14,730 --> 00:03:17,490 kompilátor ví, OK to je konec mého struct. 68 00:03:17,490 --> 00:03:22,540 >> A tak tímto způsobem, jsme trochu vytváření roztomilé pole 69 00:03:22,540 --> 00:03:25,450 Takové věci s hodnoty a s ukazatelem. 70 00:03:25,450 --> 00:03:27,757 A vy je můžete propojit všechny společně s těmito ukazateli. 71 00:03:27,757 --> 00:03:30,090 Tak, aby mohly být všechny druhy navlečené dohromady v řetězci. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Bezva. 74 00:03:34,162 --> 00:03:35,453 Můžete slyšet, že o něco lepší? 75 00:03:35,453 --> 00:03:36,140 >> Diváků: Jo. 76 00:03:36,140 --> 00:03:38,540 >> Profesor: Dobře. 77 00:03:38,540 --> 00:03:44,280 Takže způsob, který, jak je vy vidět, typický seznam odkaz je strukturován 78 00:03:44,280 --> 00:03:45,500 je budete mít hlavu. 79 00:03:45,500 --> 00:03:49,460 Máte hodnotu hlavy, která není nasměrován jiným ukazatelem. 80 00:03:49,460 --> 00:03:53,177 Ale bude to poukázat na, nebo reference, jiný uzel. 81 00:03:53,177 --> 00:03:56,510 Uzel po bude odkazovat uzel po tom, a tak dále a tak dále 82 00:03:56,510 --> 00:03:59,170 dokud se nakonec hit konec vašeho seznamu odkazů. 83 00:03:59,170 --> 00:04:00,980 A ty prostě nebude mít ukazatel tam. 84 00:04:00,980 --> 00:04:04,659 >> A tak, jako myslím, na řetězu, či dokonce pokud někdo z vás kluci vyrobených, já nevím, 85 00:04:04,659 --> 00:04:06,450 jako s ovocnými Loops když jsi byla malá. 86 00:04:06,450 --> 00:04:08,590 Ty by string je dohromady a nosit kolem krku. 87 00:04:08,590 --> 00:04:09,840 Myslíš, že je to přesně to samé. 88 00:04:09,840 --> 00:04:12,964 Máte tyto malé věci, které může řetězec sebe, že bod na jeden 89 00:04:12,964 --> 00:04:15,291 po tom, aby jeden po to, a tak dále a tak dále 90 00:04:15,291 --> 00:04:17,040 až budete mít řetěz datové struktury 91 00:04:17,040 --> 00:04:21,190 že můžete použít však budete chtít. 92 00:04:21,190 --> 00:04:27,370 >> Takže tak, že toto bychom typicky vložit nebo vymazat 93 00:04:27,370 --> 00:04:30,020 jakýkoli uzel z odkazu Seznam je velmi odlišná 94 00:04:30,020 --> 00:04:31,970 podle toho, kde je tento uzel. 95 00:04:31,970 --> 00:04:34,880 Tak, například, protože ukazatele jsou vždy 96 00:04:34,880 --> 00:04:38,645 ukazuje na určitou hodnotu, při odstranění nebo vložení uzlu, 97 00:04:38,645 --> 00:04:41,770 chcete, aby se ujistil, že ukazatel vše ukazuje na správné věci. 98 00:04:41,770 --> 00:04:46,200 >> Takže pokud byste chtěli potenciálně vložit nový uzel s hodnotou jednoho 99 00:04:46,200 --> 00:04:48,379 uvnitř seřazeném odkaz seznam, všichni víme, tady 100 00:04:48,379 --> 00:04:51,170 Z obrázku, co se děje na jít mezi hlavou a dva, že jo? 101 00:04:51,170 --> 00:04:52,620 Protože jeden sedí právě tam. 102 00:04:52,620 --> 00:04:59,060 Ale způsob, jakým budeme dělat, že je tím, že nejprve dereferencing ukazatel 103 00:04:59,060 --> 00:05:02,160 od hlavy a posílání, že k jednomu. 104 00:05:02,160 --> 00:05:05,040 >> Ale my přišli do problému zde. 105 00:05:05,040 --> 00:05:08,280 Může někdo vidět, co je problém je-li jsme byli na první dereference 106 00:05:08,280 --> 00:05:10,090 ukazatel od hlavy k jednomu? 107 00:05:10,090 --> 00:05:14,202 Jaký problém můžeme narazit když se snažíme přidat to do přední části naší nabídku? 108 00:05:14,202 --> 00:05:15,409 >> Diváků: [Neslyšitelné] 109 00:05:15,409 --> 00:05:16,200 Profesor: Přesně tak. 110 00:05:16,200 --> 00:05:20,000 Takže tady máme ukazatel, který byl jakmile směřující od hlavy až dva. 111 00:05:20,000 --> 00:05:23,120 Ale pokud jste se zbavili, že ukazatel, co si jen upozornit na jeden, 112 00:05:23,120 --> 00:05:26,500 nyní máme tušení kam jít najít dva. 113 00:05:26,500 --> 00:05:29,850 Vzhledem k tomu, jak jsem již řekl, že jste dostal obrovský kus paměti v počítači. 114 00:05:29,850 --> 00:05:31,860 Všechny tyto uzly by mohly náhodně promíchány 115 00:05:31,860 --> 00:05:33,350 v jakémkoli místě v počítači. 116 00:05:33,350 --> 00:05:36,140 A vy nevíte, jak jít o zjištění, že. 117 00:05:36,140 --> 00:05:40,420 >> A tak je potřeba mít ukazatele směřující ke všem uzlům na konci. 118 00:05:40,420 --> 00:05:42,420 Anebo pokud jste náhodou dereference jednoho 119 00:05:42,420 --> 00:05:44,485 bez první přidělování hodnota nejprve, že jste 120 00:05:44,485 --> 00:05:47,410 jen tak ztratit všechno poté. 121 00:05:47,410 --> 00:05:49,720 >> Takže to, co budeme udělat, je, byste nejprve 122 00:05:49,720 --> 00:05:53,270 Chcete vytvořit ukazatel na uzel, který chcete vložit. 123 00:05:53,270 --> 00:05:55,270 Bodě, kde jste chcete vložit ji do, 124 00:05:55,270 --> 00:05:59,410 a pak poté vám by mohl směřovat hlavu zpátky do jednoho. 125 00:05:59,410 --> 00:06:02,800 >> Znamená to, že smysl pro všechny tady? 126 00:06:02,800 --> 00:06:03,346 Skvělý. 127 00:06:03,346 --> 00:06:04,720 Ber to jako, stejně jako řetěz. 128 00:06:04,720 --> 00:06:07,420 Pokud přidáte řetězec, je to docela intuitivní 129 00:06:07,420 --> 00:06:10,742 jak byste jít o vložení to. 130 00:06:10,742 --> 00:06:15,274 >> OK, tak to je ve skutečnosti mnohem kratší, než jsem si myslel, že to bude, 131 00:06:15,274 --> 00:06:16,690 pět minut spiel na odkaz seznamech. 132 00:06:16,690 --> 00:06:19,960 Jen tak si kluci mají Základní myšlenkou, co to je. 133 00:06:19,960 --> 00:06:23,580 >> Zde máme program pro Quiz nula. 134 00:06:23,580 --> 00:06:24,895 Nedovolte, aby to zastrašit. 135 00:06:24,895 --> 00:06:26,270 Vím, že je to hodně informací. 136 00:06:26,270 --> 00:06:27,580 Vypadá to velmi děsivé. 137 00:06:27,580 --> 00:06:33,130 Je to také hodně, já myslím, CSC druh termínů. 138 00:06:33,130 --> 00:06:37,440 Věci jako hexadecimální řetězce, ukazovátka, dynamická alokace paměti 139 00:06:37,440 --> 00:06:40,120 jsou velmi děsivé znějící termíny. 140 00:06:40,120 --> 00:06:42,700 >> Ale budeme rozbít dolů, udělat nějaké problémy praxe 141 00:06:42,700 --> 00:06:44,980 takže vy všichni jsou připraveny pro tento test. 142 00:06:44,980 --> 00:06:47,104 Kolik z vás má Už začala studovat? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, vy pravděpodobně budete chtít na začátek Začínáme 145 00:06:53,670 --> 00:06:56,480 na to, že proto, že test je zítra. 146 00:06:56,480 --> 00:06:58,739 Nebo ve čtvrtek pro některé z vás. 147 00:06:58,739 --> 00:07:01,030 Jo, takže budeme jít nad některými problémy praxe. 148 00:07:01,030 --> 00:07:04,600 Pokud vy všichni chtějí, aby se out list papíru, tužku. 149 00:07:04,600 --> 00:07:07,310 Budeme jen strávit Drtivá většina dnešních sekce 150 00:07:07,310 --> 00:07:11,590 bude přes některé to tak kluci mají představu o tom, co lze očekávat na kvíz. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> DOBŘE. 153 00:07:16,890 --> 00:07:19,730 Pár logistické Detaily stejně, pro každého 154 00:07:19,730 --> 00:07:25,120 který nebyl k tomuto odkazu tam, pokud jdete do cs50.yale.edu, na přední straně 155 00:07:25,120 --> 00:07:28,566 Tato stránka je zde odkaz který říká, že "o Quiz Zero." 156 00:07:28,566 --> 00:07:29,440 Link se dostanete tam. 157 00:07:29,440 --> 00:07:31,065 Pokud jste nečetli, přečtěte si to. 158 00:07:31,065 --> 00:07:34,470 Vzhledem k tomu, to vám řekne opravdu důležité informace o kvízu. 159 00:07:34,470 --> 00:07:37,410 >> Chystám se vytáhnout to z že jen proto, fyzicky, 160 00:07:37,410 --> 00:07:40,200 pokud vy nevíte, kde jít, budeme mít problémy. 161 00:07:40,200 --> 00:07:44,220 A tak, pokud vaše poslední v podmínkách s N, jděte na Právnické fakultě hlediště. 162 00:07:44,220 --> 00:07:47,500 A pokud se vaše poslední začíná P od A do Z, jděte na Davies Auditorium. 163 00:07:47,500 --> 00:07:50,240 A to se vztahuje pouze na lidé v sekci středu. 164 00:07:50,240 --> 00:07:53,420 >> Užíváte-li kvíz na Čtvrtek, jdete do SSS 114 165 00:07:53,420 --> 00:07:55,078 kde se vaše přednáška je obvykle. 166 00:07:55,078 --> 00:07:55,953 Diváků: [Neslyšitelné] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 Profesor: O do Z, budete jít do Davies hlediště. 169 00:08:01,940 --> 00:08:03,273 Chystám se změnit, ne? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, jo, prostě nepodaří automaticky. 172 00:08:09,698 --> 00:08:11,753 >> Ach jo, to jste vy Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Jo, moje špatná. 175 00:08:16,030 --> 00:08:17,610 Jo, O A do Z, budete jít do Davies Auditorim. 176 00:08:17,610 --> 00:08:19,140 Chystám se opravit, když jsem nahrát. 177 00:08:19,140 --> 00:08:20,320 To jo. 178 00:08:20,320 --> 00:08:22,160 >> A pak také něco důležité na mysl 179 00:08:22,160 --> 00:08:25,290 je, že Středa, pokud jste oficiálně zapsal v sekci Středa, 180 00:08:25,290 --> 00:08:26,832 musíte vzít kvíz ve středu. 181 00:08:26,832 --> 00:08:29,706 A pokud jste se zapsal do čtvrtka, musíte vzít kvíz čtvrtek. 182 00:08:29,706 --> 00:08:31,000 A je to během vyučovací doby. 183 00:08:31,000 --> 00:08:35,970 Tam, kde si myslím, že je to jako na 1:00 02:15 ve středu a od 02:30 do 03:45 184 00:08:35,970 --> 00:08:37,220 ve čtvrtek. 185 00:08:37,220 --> 00:08:41,710 >> Máte-li za neslučitelné konflikty, Omluvy děkana jsou jediná věc, 186 00:08:41,710 --> 00:08:43,030 bohužel, můžeme vzít. 187 00:08:43,030 --> 00:08:45,560 Protože jsme měli Drtivá většina žádostí 188 00:08:45,560 --> 00:08:47,970 přejít od středy do čtvrtka. 189 00:08:47,970 --> 00:08:51,265 Což nemůžeme ctít, pokud máme požadavek na děkana. 190 00:08:51,265 --> 00:08:52,650 >> DOBŘE. 191 00:08:52,650 --> 00:08:57,000 Takže než začneme na Pár problémy praxe, 192 00:08:57,000 --> 00:09:00,540 Já jsem prostě jít přes Andy užitečné tipy pro dosažení úspěchu. 193 00:09:00,540 --> 00:09:04,140 Vy, když budete studovat, opravdu chcete praktikovat psát kód ručně. 194 00:09:04,140 --> 00:09:07,050 Poprvé, co jsem kdy vzal CS kvíz, jsem neměl 195 00:09:07,050 --> 00:09:09,960 Praxe psaní kódu ručně před a to bylo extrémně 196 00:09:09,960 --> 00:09:11,890 šokující, jak to bylo těžké. 197 00:09:11,890 --> 00:09:16,125 >> Kdy vy nedostanou do zvyk psát si vše, 198 00:09:16,125 --> 00:09:20,260 jde velmi je přirozeně schopen mít autocompleted 199 00:09:20,260 --> 00:09:22,015 držáky a středníky tam. 200 00:09:22,015 --> 00:09:23,890 Když napíšete to rukou, někdy je to 201 00:09:23,890 --> 00:09:27,100 velmi, velmi snadné zapomenout na středník, nebo zapomenete zavřít držák, 202 00:09:27,100 --> 00:09:30,970 nebo zapomenete zavřít dvojtečku, nebo něco takového. 203 00:09:30,970 --> 00:09:34,322 >> Takže při psaní kódu ručně, to je velmi odlišný pocit. 204 00:09:34,322 --> 00:09:37,280 Takže vy chlapi, když pracujete přes některé z problémů praxe, 205 00:09:37,280 --> 00:09:38,904 bylo by dobré, aby dnes opravdu cvičit. 206 00:09:38,904 --> 00:09:41,770 Nebo zítra, myslím, pokud jste brát kvíz na čtvrtek. 207 00:09:41,770 --> 00:09:45,280 >> Za druhé, máme poslední, stejně jako, osmiletý to stojí praxe 208 00:09:45,280 --> 00:09:47,070 kvízy online. 209 00:09:47,070 --> 00:09:50,759 Letošní kvíz bude pravděpodobně velmi, velmi podobné pro všechny z nich. 210 00:09:50,759 --> 00:09:51,800 Všichni jsou velmi podobné. 211 00:09:51,800 --> 00:09:54,220 Tak nějak dostat do styl typu otázek 212 00:09:54,220 --> 00:09:57,250 že se ptáme, typ funkce, které budeme napsat ji, 213 00:09:57,250 --> 00:09:58,580 a tak dále, a tak dále. 214 00:09:58,580 --> 00:10:01,980 >> Tak se v praxi kvízy, zvláště v časové tísni. 215 00:10:01,980 --> 00:10:05,390 75 minut udělat kvíz je není mnoho množství času. 216 00:10:05,390 --> 00:10:07,254 Je to velmi, velmi dlouho. 217 00:10:07,254 --> 00:10:09,670 A tak vy opravdu chcete aby se ujistil, že vy jste 218 00:10:09,670 --> 00:10:11,990 ve zvyku psaní kód ručně rychle. 219 00:10:11,990 --> 00:10:15,070 Vzhledem k tomu, vy nechcete, aby se jako první čas podívat kvíz z této délky 220 00:10:15,070 --> 00:10:16,560 být na kvíz. 221 00:10:16,560 --> 00:10:20,540 Vy opravdu chcete, aby se ujistil, že cvičíte předem. 222 00:10:20,540 --> 00:10:24,550 >> Za čtvrté, chcete přezkoumávat přednáška a sekce skluzavky. 223 00:10:24,550 --> 00:10:25,980 Nemusíte pamatovat věci. 224 00:10:25,980 --> 00:10:30,430 Ve skutečnosti, každý je povoleno jedním bílý papír poznámek, 225 00:10:30,430 --> 00:10:31,090 přední a zadní. 226 00:10:31,090 --> 00:10:32,920 Vy můžete psát a psát. 227 00:10:32,920 --> 00:10:37,070 Pokud zjistíte sami museli zapamatovat něco, položil ji na tomto listu. 228 00:10:37,070 --> 00:10:40,810 >> Já vám zaručit, nechcete, aby se zasekl v polovině tohoto kvízu 229 00:10:40,810 --> 00:10:43,890 bytí jako, ach jo, co je to runtime tohoto druhu proti tomuto druhu. 230 00:10:43,890 --> 00:10:46,490 Stačí uvést, že dolů a zkopírujte jej přímo z poznámky listu. 231 00:10:46,490 --> 00:10:50,420 Pak můžete vlastně jen použít vaše mozek přemýšlet o problémech, 232 00:10:50,420 --> 00:10:52,190 spíše než připomenout fakta. 233 00:10:52,190 --> 00:10:55,250 A tak se skutečně využít jakýchkoli specializovaných detailů 234 00:10:55,250 --> 00:11:00,140 že si myslíte, že je třeba pamatovat, plop ji na recenze listu. 235 00:11:00,140 --> 00:11:02,680 >> OK, jakékoliv otázky logisticky pokud jde o kvíz 236 00:11:02,680 --> 00:11:05,510 Než začneme některé Problémy kvíz praxi? 237 00:11:05,510 --> 00:11:06,416 To jo? 238 00:11:06,416 --> 00:11:10,040 >> Diváků: Neměl jsem šanci se podívat na testu [neslyšitelných] 239 00:11:10,040 --> 00:11:11,757 ale to bude Aplikace většinou, 240 00:11:11,757 --> 00:11:14,090 Nebo je tam také bude, jako, vědomostní otázky? 241 00:11:14,090 --> 00:11:14,940 >> Profesor: Je to hodně. 242 00:11:14,940 --> 00:11:16,731 Tak, tak, že jsem by popsal kvíz 243 00:11:16,731 --> 00:11:18,810 je-- jsem dal dohromady některé problémy praxe 244 00:11:18,810 --> 00:11:20,960 že jsem vytáhl ze všech kvízů. 245 00:11:20,960 --> 00:11:25,210 Ale uvidíte, že tam jsou dvě hlavní typy otázek budeme vás požádat, abyste. 246 00:11:25,210 --> 00:11:28,750 >> Jedním z nich je velmi nízká hladina detail věcí. 247 00:11:28,750 --> 00:11:31,720 Dáme vám malý kus kódu a říkají, že je chyba tady? 248 00:11:31,720 --> 00:11:33,110 Co by se tisknout tady? 249 00:11:33,110 --> 00:11:35,980 Co bude tento kód produkovat, a tak dále. 250 00:11:35,980 --> 00:11:38,710 Takže podrobnosti velmi nízké úrovni informace. 251 00:11:38,710 --> 00:11:42,700 >> A na druhou stranu, budeme mít velmi Otázky na znalostech založené na vysoké úrovni. 252 00:11:42,700 --> 00:11:45,190 Můžete mi vysvětlit, co se Rozdíl mezi binární vyhledávání 253 00:11:45,190 --> 00:11:46,148 a lineární vyhledávání? 254 00:11:46,148 --> 00:11:48,500 Proč by chceme použijte jednu nad druhou? 255 00:11:48,500 --> 00:11:49,960 Možná, že to, co je GDB? 256 00:11:49,960 --> 00:11:51,560 Proč chceme použít GDB? 257 00:11:51,560 --> 00:11:54,590 Vyšší level, zásadnější pochopení otázky. 258 00:11:54,590 --> 00:11:58,240 Tak uvidíte směs dva z nich na kvíz. 259 00:11:58,240 --> 00:12:01,462 >> Cokoliv jiného než my zamířit rovnou do toho? 260 00:12:01,462 --> 00:12:02,879 DOBŘE. 261 00:12:02,879 --> 00:12:03,670 Diváků: Ještě jeden. 262 00:12:03,670 --> 00:12:04,030 Profesor: Oh, ještě jeden. 263 00:12:04,030 --> 00:12:04,340 Litovat. 264 00:12:04,340 --> 00:12:05,631 >> Publikum: Jo, je to v pořádku. 265 00:12:05,631 --> 00:12:10,140 Takže říkáte, že 75 minut je příliš krátká, jak to je nepravděpodobné, 266 00:12:10,140 --> 00:12:11,640 že skončí? 267 00:12:11,640 --> 00:12:13,571 Nebo, jako, 75 minut je přesně tolik, kolik času 268 00:12:13,571 --> 00:12:15,700 jak bychom potřebovali, kdybychom byli náležitě připravený? 269 00:12:15,700 --> 00:12:17,450 Profesor: OK, takže kvíz je náročné. 270 00:12:17,450 --> 00:12:19,550 Je to určitě náročné. 271 00:12:19,550 --> 00:12:21,092 Ocitnete se málo času. 272 00:12:21,092 --> 00:12:24,341 Vy jste asi bude hit, jako je 10, 15 minut jít, a je rád, hovno. 273 00:12:24,341 --> 00:12:25,520 Jsem tolik zbývá. 274 00:12:25,520 --> 00:12:26,520 A to je úplně v pohodě. 275 00:12:26,520 --> 00:12:28,740 Každý, kdo to bude cítit stejně. 276 00:12:28,740 --> 00:12:31,074 >> Stačí být velmi dobře vědom kolik máte času. 277 00:12:31,074 --> 00:12:33,490 A tak to je důvod, proč jsem říct, kluci dělat praxe kvízy. 278 00:12:33,490 --> 00:12:36,672 Vzhledem k tomu, je to opravdu dává velký smysl toho, co kvíz bude podobně. 279 00:12:36,672 --> 00:12:39,130 Takže pokud se ocitnete bytí schopný dokončil praxi 280 00:12:39,130 --> 00:12:41,671 kvízů v dobrém výši čas, můžete tempo sám dobře, 281 00:12:41,671 --> 00:12:45,695 pak nebudete mít problém ve středu nebo ve čtvrtek. 282 00:12:45,695 --> 00:12:46,575 >> Bezva. 283 00:12:46,575 --> 00:12:49,200 Takže pokud všichni wants-- Myslím, většina lidí má listy papíru 284 00:12:49,200 --> 00:12:49,810 out už. 285 00:12:49,810 --> 00:12:52,604 Chystám se v podstatě jen vám otázky vzorku, 286 00:12:52,604 --> 00:12:54,520 ti kluci, podobně, pár minut k tomu je. 287 00:12:54,520 --> 00:12:59,610 A půjdeme přes jako třída jaké odpovědi na ně jsou. 288 00:12:59,610 --> 00:13:02,860 >> Tak to je velmi typický brzy otázka my budeme 289 00:13:02,860 --> 00:13:06,720 zeptá, jen konverze Čísla mezi různými základy. 290 00:13:06,720 --> 00:13:09,070 Binární, jak vy můžete Připomeňme, je základ dva. 291 00:13:09,070 --> 00:13:12,470 Desetinné je základ 10, nebo to, co jsme jako lidé typicky interpretovat. 292 00:13:12,470 --> 00:13:17,120 Hexadecimální je základna 16, což je nula do devíti, stejně jako A až F. 293 00:13:17,120 --> 00:13:19,990 >> Takže tam čtyři čísla jsem dotazem vám kluci převést zde. 294 00:13:19,990 --> 00:13:23,909 Dám vám líbí, tři až čtyři minuty promyslet, jak 295 00:13:23,909 --> 00:13:25,200 měli bychom jít o řešení tohoto. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> Diváků: Jsme povoleno kalkulačky? 298 00:13:35,710 --> 00:13:37,630 >> Profesor: Nebude Potřebujete kalkulačky, jo. 299 00:13:37,630 --> 00:13:42,420 Myslím si, že základní sčítání, myslím, že je všichni kluci budou vyzváni, aby dělat. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> A stejně tak jsem trochu mít smysl kdy se všichni provádí, podívejte se, 302 00:14:45,070 --> 00:14:47,429 vlna, já nevím, úsměv, vypadat šťastný, když máte hotovo. 303 00:14:47,429 --> 00:14:47,929 To jo. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Možná, že ještě pár minut. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, pojďme přivést ji. 308 00:18:29,600 --> 00:18:31,580 Já úmyslně chystá ti kluci méně času 309 00:18:31,580 --> 00:18:33,760 než budete pravděpodobně potřebovat dělat některé z těchto problémů, 310 00:18:33,760 --> 00:18:37,124 jednoduše proto, že chci, aby se ujistil, že dostaneme přes spoustu problémů. 311 00:18:37,124 --> 00:18:39,290 Takže žádné starosti, pokud jste neměli mají šanci dokončit. 312 00:18:39,290 --> 00:18:43,770 Zcela v pořádku tak dlouho, jak máte představu, jak jít o tom. 313 00:18:43,770 --> 00:18:45,850 Tak pojďme dál a udělat první. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Takže nejprve, někdo chce se mi říct, v binární, co dělat každý z těchto čísel 316 00:18:57,870 --> 00:19:00,484 představují, pokud jde o jejich hodnoty? 317 00:19:00,484 --> 00:19:01,250 To jo? 318 00:19:01,250 --> 00:19:03,349 >> Diváků: Two do síla nulová, dvě ku jedné. 319 00:19:03,349 --> 00:19:04,140 Profesor: Přesně tak. 320 00:19:04,140 --> 00:19:04,640 Tak. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Správně, takže typicky když jsme v základu 10 323 00:19:16,430 --> 00:19:20,580 všechny tyto představují, jsou, stejně jako, 10 k základně nuly, že? 324 00:19:20,580 --> 00:19:21,810 To je vaše něčí místo. 325 00:19:21,810 --> 00:19:24,520 Všechny vaše místo 10 je je 10 k výkonu jednoho. 326 00:19:24,520 --> 00:19:26,600 Místo, které je 10 100 k síle dva. 327 00:19:26,600 --> 00:19:29,570 >> Ať základna jste v děje co do činění s přesně stejnou věc, 328 00:19:29,570 --> 00:19:31,480 jen s jinou bázi. 329 00:19:31,480 --> 00:19:34,130 Takže binární, všechno, co je, je základ dva. 330 00:19:34,130 --> 00:19:37,110 Budeš převést všechny číslic do dvou na cokoliv napájení 331 00:19:37,110 --> 00:19:38,190 of číslice. 332 00:19:38,190 --> 00:19:41,450 A tak v tomto smyslu, jsme mohou mít jednodušší způsob 333 00:19:41,450 --> 00:19:43,800 že budou moci sečíst, nebo sečíst všechna čísla v pořadí 334 00:19:43,800 --> 00:19:46,010 převést do základu 10. 335 00:19:46,010 --> 00:19:50,362 >> Takže to někdo chtěl, aby mi říct, co odpověď na první z nich je v základě deset? 336 00:19:50,362 --> 00:19:51,674 >> Publikum: Two, [neslyšitelných] 337 00:19:51,674 --> 00:19:52,340 Profesor: Jo. 338 00:19:52,340 --> 00:19:53,230 Diváků: 42. 339 00:19:53,230 --> 00:19:56,560 Profesor: 42, tam jdete. 340 00:19:56,560 --> 00:20:00,660 Takže jak jsme dostali tuto odpověď byla o dělá dva První, který je dva. 341 00:20:00,660 --> 00:20:02,760 Plus dva třetí, což je osm. 342 00:20:02,760 --> 00:20:07,590 Plus dva až pátý, který je, co zbude. 343 00:20:07,590 --> 00:20:09,390 Můžete je shrnout a to je 42. 344 00:20:09,390 --> 00:20:12,000 >> Je někdo zmatený o tom, jak jsme se dostali, že? 345 00:20:12,000 --> 00:20:15,630 Takže základní Navíc, jako Řekl jsem, měli byste být v pořádku. 346 00:20:15,630 --> 00:20:17,410 Pokud ne, dobře, můžeme praktikovat, že taky. 347 00:20:17,410 --> 00:20:18,720 Ale to je v pořádku. 348 00:20:18,720 --> 00:20:20,560 Bezva. 349 00:20:20,560 --> 00:20:25,570 >> Má někdo chtěl mi dát odpověď na druhý stejně? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Dobrý. 352 00:20:27,600 --> 00:20:30,044 Každý, kdo nevědí, jak máme, že buď? 353 00:20:30,044 --> 00:20:31,960 Cool, budu mít Odpovědi na další snímek. 354 00:20:31,960 --> 00:20:34,440 Takže žádné starosti, pokud vás je třeba ho zkopírovali. 355 00:20:34,440 --> 00:20:38,860 >> OK, takže hexadecimální je trochu složitější. 356 00:20:38,860 --> 00:20:41,840 ale já vám ukážu kluci zástupce na to, jak to udělat. 357 00:20:41,840 --> 00:20:44,800 Takže hexadecimální, jako vy pamatujte, že vše, co je bude 16. 358 00:20:44,800 --> 00:20:48,920 A protože jsme jako lidé dělají ne vlastně mít 16 čísel reprezentovat to, 359 00:20:48,920 --> 00:20:56,940 jdeme od nuly do devíti, které naše první 10 hodnot, a pak budeme dělat A až F, 360 00:20:56,940 --> 00:20:58,630 které jsou dalších šest hodnoty. 361 00:20:58,630 --> 00:21:03,040 >> A tak nejjednodušší způsob, jak jít od jakýkoli binární číslo na šestnáctkové 362 00:21:03,040 --> 00:21:05,350 je rozdělit je do poloviny. 363 00:21:05,350 --> 00:21:10,042 A tak jakýkoli binární číslo dáme budete pravděpodobně mít osm číslic. 364 00:21:10,042 --> 00:21:11,750 Stačí si jen zlomit je až ve středu. 365 00:21:11,750 --> 00:21:17,460 >> Takže první one-- jedním one, jednoho jedna, jedna, jedna, jedna jednou. 366 00:21:17,460 --> 00:21:21,340 Druh si, že to, víte, kreslit lomítko nebo čárka mezi nimi. 367 00:21:21,340 --> 00:21:23,800 A můžete jen převést přímo cokoliv 368 00:21:23,800 --> 00:21:26,670 to je k prvnímu počet hexadecimální, 369 00:21:26,670 --> 00:21:29,880 a, co je zde druhý z šestnáctkové soustavě. 370 00:21:29,880 --> 00:21:37,584 >> Takže pamatujte z běžné notace, co hexadecimální hodnoty začít? 371 00:21:37,584 --> 00:21:38,460 >> Diváků: Zero. 372 00:21:38,460 --> 00:21:39,270 >> Profesor: 0x. 373 00:21:39,270 --> 00:21:45,210 Takže víme, že kdykoliv vás žádáme převést libovolný počet na šestnáctkové 374 00:21:45,210 --> 00:21:48,230 nebo kdykoliv vidíte jakýkoli číslo, které začíná 0x, 375 00:21:48,230 --> 00:21:50,230 víte, že je to hodnota v šestnáctkové soustavě. 376 00:21:50,230 --> 00:21:54,160 >> A pak budete vyzváni k zjistit, co tyto dvě číslice jsou. 377 00:21:54,160 --> 00:21:59,690 A tak, jak si to udělat, sčítání hlasů up že polovina a sčítání hlasů se, že polovina. 378 00:21:59,690 --> 00:22:02,870 Takže v tomto příkladu, to, co by jedna, jedna, jedna, jedna být? 379 00:22:02,870 --> 00:22:04,890 Co hodnota by to mělo být? 380 00:22:04,890 --> 00:22:06,040 To by bylo F, že jo? 381 00:22:06,040 --> 00:22:08,050 To by bylo 15. 382 00:22:08,050 --> 00:22:11,780 >> Takže by to bylo F. One, jeden, jeden, jeden je zde také 383 00:22:11,780 --> 00:22:21,270 F. Takže jeden, jedna, jedna, jedna, jedna, jedna, jedna, člověk v šestnáctkové soustavě, vše, co je, je 0xFF. 384 00:22:21,270 --> 00:22:25,350 Protože tato polovina zastoupena F, hodnota 15, 385 00:22:25,350 --> 00:22:27,331 a to polovice zastoupena F, hodnota 15. 386 00:22:27,331 --> 00:22:29,456 Vzhledem k tomu, pamatujte, že jsme počítání od nuly do devíti. 387 00:22:29,456 --> 00:22:35,290 A je jako 10, B je jako 11, F 15. 388 00:22:35,290 --> 00:22:41,690 >> Dává to smysl pro každého jak jsme se dostali z binárního na hexadecimální? 389 00:22:41,690 --> 00:22:44,595 >> Diváků: A tak, jak jsme se dostali 15 z jednoho, jeden, jedna, jedna? 390 00:22:44,595 --> 00:22:46,220 Profesor: Jo, to je binární, že jo? 391 00:22:46,220 --> 00:22:48,090 Představte si, že je to jen binární číslo. 392 00:22:48,090 --> 00:22:50,792 Takže budete muset do dvou zeroth, což je jedna. 393 00:22:50,792 --> 00:22:51,500 Publikum: Oh, OK. 394 00:22:51,500 --> 00:22:51,670 Takže si prostě celkem to. 395 00:22:51,670 --> 00:22:52,670 >> Profesor: Jo, a pak prostě celkem to ven. 396 00:22:52,670 --> 00:22:53,380 To je vše, co je. 397 00:22:53,380 --> 00:22:54,890 >> Diváků: OK. 398 00:22:54,890 --> 00:22:55,830 >> Profesor: OK. 399 00:22:55,830 --> 00:23:00,740 >> Diváků: Takže jdete z binární do desítkové na šestnáctkové? 400 00:23:00,740 --> 00:23:04,590 >> Profesor: To je Nejjednodušší způsob, jak dělat tak, jo. 401 00:23:04,590 --> 00:23:11,390 Nebudeš do desítkové soustavy, protože desítkové jen má nula až devět. 402 00:23:11,390 --> 00:23:13,410 Jsme tak nějak rozdělení toto nahoru na dvě části. 403 00:23:13,410 --> 00:23:15,201 >> Diváků: [Neslyšitelné] použití desetinné najít 404 00:23:15,201 --> 00:23:17,809 co to odpovídá až v šestnáctkové soustavě. 405 00:23:17,809 --> 00:23:20,100 Profesor: Myslím, že jsi sčítání hlasů up s využitím základních matematiky. 406 00:23:20,100 --> 00:23:20,725 Diváků: Jo. 407 00:23:20,725 --> 00:23:22,300 Profesor: Jo, docela hodně. 408 00:23:22,300 --> 00:23:23,630 Je to trochu matoucí. 409 00:23:23,630 --> 00:23:26,410 Ale vím, že vy může rozdělit cokoliv 410 00:23:26,410 --> 00:23:28,160 tato hodnota je na pouhých poloviny. 411 00:23:28,160 --> 00:23:29,570 Podívejte se, co je to v binární? 412 00:23:29,570 --> 00:23:30,610 Co je to číslo? 413 00:23:30,610 --> 00:23:33,270 Je to bude něco od nuly až F. 414 00:23:33,270 --> 00:23:35,722 >> Zde se také bude něco od nuly až F. 415 00:23:35,722 --> 00:23:37,722 A pak stačí dát ti dva tady. 416 00:23:37,722 --> 00:23:38,263 >> Diváků: OK. 417 00:23:38,263 --> 00:23:38,910 Profesor: Jo. 418 00:23:38,910 --> 00:23:39,410 DOBŘE. 419 00:23:39,410 --> 00:23:42,320 Takže vy chcete vyzkoušejte další jeden pak? 420 00:23:42,320 --> 00:23:49,601 Nula, jedna, nula jedna, jedním, nula, jedna nula. 421 00:23:49,601 --> 00:23:52,350 Dám vám kluci jako 30 sekund, protože jste asi nevěděli 422 00:23:52,350 --> 00:23:53,850 trik, jak to udělat dříve. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, někdo chtěl, aby si to jeden výstřel? 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 Dobrý. 429 00:24:31,340 --> 00:24:37,050 Tak tohle tady by be-- chcete aby nám řekli, jak se máš, že? 430 00:24:37,050 --> 00:24:38,920 Za prvé, jak jste se dostal pět? 431 00:24:38,920 --> 00:24:42,030 >> Publikum: Vzhledem k nule, jedním, nula, jedna je pět. 432 00:24:42,030 --> 00:24:45,170 >> Profesor: Rozumějí proč nula, jedna, nula, jedna je pět? 433 00:24:45,170 --> 00:24:46,260 Vy jste dostal jeden tady. 434 00:24:46,260 --> 00:24:48,010 Nemáte nic do dvou až první. 435 00:24:48,010 --> 00:24:50,300 Ve dvou do druhého, vás mít jeden, který je čtyři. 436 00:24:50,300 --> 00:24:52,600 Takže si přidat dva plus ten, máte pět. 437 00:24:52,600 --> 00:24:53,600 Všichni dobře? 438 00:24:53,600 --> 00:24:54,100 DOBŘE. 439 00:24:54,100 --> 00:24:56,570 A potom, co to bylo a proč? 440 00:24:56,570 --> 00:24:58,350 Jaké číslo dělá odpovídá? 441 00:24:58,350 --> 00:24:59,350 >> Diváků: 10. 442 00:24:59,350 --> 00:25:00,976 >> Profesor: A co to v základně dva? 443 00:25:00,976 --> 00:25:01,850 Diváků: [Neslyšitelné] 444 00:25:01,850 --> 00:25:03,010 Profesor: Přesně tak. 445 00:25:03,010 --> 00:25:06,370 Takže to druhá hodnota by zde bylo 0X5A. 446 00:25:06,370 --> 00:25:08,410 >> Všichni dobře na tom, jak převést? 447 00:25:08,410 --> 00:25:10,770 Je to mnohem jednodušší, než si myslíte, že je. 448 00:25:10,770 --> 00:25:13,330 Já jen chci, aby se ujistil, Víte, užitečné tipy 449 00:25:13,330 --> 00:25:14,950 a triky na to, jak to udělat. 450 00:25:14,950 --> 00:25:18,432 >> Diváků: Proč stačí rozdělit to ve středu takového? 451 00:25:18,432 --> 00:25:21,390 Jen se jako, OK, budu jen péče o nich nejprve [neslyšitelných]? 452 00:25:21,390 --> 00:25:24,240 >> Profesor: Vzhledem k tomu, že je to vlastně způsob hexadecimální hodnoty jsou zastoupeny. 453 00:25:24,240 --> 00:25:26,890 0x, že ve skutečnosti znamená, nic jiného, ​​než říkám 454 00:25:26,890 --> 00:25:28,710 že to je šestnáctkové číslo. 455 00:25:28,710 --> 00:25:31,580 A to vždy představuje První čtyři číslice. 456 00:25:31,580 --> 00:25:34,330 A to vždy představuje poslední čtyři číslice. 457 00:25:34,330 --> 00:25:37,835 A tak tyto dvě číslice jen odpovídají různým bitů. 458 00:25:37,835 --> 00:25:39,200 >> Diváků: Takže se budeme always-- 459 00:25:39,200 --> 00:25:41,830 >> Profesor: Jsi vždy dostane osm hodnoty bitů. 460 00:25:41,830 --> 00:25:44,580 >> Diváků: Je to stejně jako věc tady, nebo že věc po všem? 461 00:25:44,580 --> 00:25:46,883 Profesor: To je jen věc v oblasti počítačů, jo. 462 00:25:46,883 --> 00:25:47,424 Diváků: OK. 463 00:25:47,424 --> 00:25:48,240 Skvělý. 464 00:25:48,240 --> 00:25:51,290 >> Profesor: Také, takže v tomto případě jsme převedeny z dvojkové do desítkové, 465 00:25:51,290 --> 00:25:53,290 a od binární k hexadecimální. 466 00:25:53,290 --> 00:25:56,610 Vy chcete, aby se ujistil, můžete také cvičit jít opačným způsobem. 467 00:25:56,610 --> 00:26:03,370 Takže když jsem ti dal 0xFF, mohl byste čerpat, že v binární, že jo? 468 00:26:03,370 --> 00:26:06,820 >> Převést F do binární, což je jedna, jedna, jedna, jedna, 469 00:26:06,820 --> 00:26:09,380 převést F na binární, který je jeden, jeden, jedna, jedna. 470 00:26:09,380 --> 00:26:11,310 >> Tak jsme se požádat vás o to jiná cesta kolem. 471 00:26:11,310 --> 00:26:14,817 Takže desetinná binární, nebo hexadecimální na binární. 472 00:26:14,817 --> 00:26:16,650 Takže chcete, aby se jist, že víte oběma směry. 473 00:26:16,650 --> 00:26:19,371 Nejspíš vám položit Kombinace těchto dvou. 474 00:26:19,371 --> 00:26:20,660 >> Jo, máte nějakou otázku? 475 00:26:20,660 --> 00:26:22,724 Mohu see-- jste dobří? 476 00:26:22,724 --> 00:26:23,348 Diváků: Jo. 477 00:26:23,348 --> 00:26:24,560 Profesor: OK. 478 00:26:24,560 --> 00:26:26,101 Jsem dobrý vymazat to? 479 00:26:26,101 --> 00:26:26,600 Skvělý. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Dobře, takže odpovědi jsou zde, pokud někdo je zvědavý později a dostat zmatený. 482 00:26:40,437 --> 00:26:41,844 DOBŘE. 483 00:26:41,844 --> 00:26:46,070 >> Diváků: Záleží na tom, jestli dáme Naši dopisy v hlavním městě, nebo malá? 484 00:26:46,070 --> 00:26:50,360 >> Profesor: To dělá, protože v šestnáctkové soustavě, podle konvence, 485 00:26:50,360 --> 00:26:52,840 všechny postavy jsou velká písmena. 486 00:26:52,840 --> 00:26:54,650 Takže A až F jsou Bude velká písmena. 487 00:26:54,650 --> 00:26:58,660 Pokud dáte malými písmeny A, já nevím, pokud bychom nutně označit to špatně. 488 00:26:58,660 --> 00:27:00,679 Ale teoreticky, to není technicky 489 00:27:00,679 --> 00:27:01,970 jak se máš to mít. 490 00:27:01,970 --> 00:27:03,303 Takže všechny by měly být velká písmena. 491 00:27:03,303 --> 00:27:05,910 Jo, dobrá otázka. 492 00:27:05,910 --> 00:27:07,780 >> DOBŘE. 493 00:27:07,780 --> 00:27:08,790 Druhá otázka. 494 00:27:08,790 --> 00:27:12,750 Vezměme si tento krásný programu zde. 495 00:27:12,750 --> 00:27:15,180 Zeptám se na otázku, Vrátím se to. 496 00:27:15,180 --> 00:27:23,170 >> Tak, za prvé, co je uvnitř standardu io.h, že je v zájmu programu? 497 00:27:23,170 --> 00:27:26,640 Za druhé, co dělá void znamenat v řadě tři? 498 00:27:26,640 --> 00:27:30,572 A za třetí, co se vrací na nulu z hlavní, as linie šest, obecně znamenají? 499 00:27:30,572 --> 00:27:33,280 Pokud vy chcete napsat těm dolů, protože jsem se vrátit zpět 500 00:27:33,280 --> 00:27:36,810 do snímku jen tak můžete vidět kód. 501 00:27:36,810 --> 00:27:40,400 To je příklad, jako, možná vyšší úroveň otázka, kde vás žádáme 502 00:27:40,400 --> 00:27:42,435 co věci znamenají v programu. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Každý, kdo pro mě dobré, aby vrátit se na snímek? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 OK v pohodě. 507 00:27:54,361 --> 00:27:57,610 Takže já dám se vám bude líbit snad tří minut se podívat na tomto jednom opravdu rychle. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, takže tohle je jako poměrně snadné, koncepčně. 510 00:28:44,140 --> 00:28:49,280 Má někdo chtěl, aby mi řekl, co je nejprve zevnitř hash, včetně 511 00:28:49,280 --> 00:28:52,630 naším standardem io.h soubor knihovny? 512 00:28:52,630 --> 00:28:55,510 Proč potřebujeme tuto knihovnu součástí tohoto programu? 513 00:28:55,510 --> 00:28:56,930 To, co tady budeme potřebovat pro? 514 00:28:56,930 --> 00:28:56,980 >> To jo? 515 00:28:56,980 --> 00:28:58,340 >> Diváků: je, že když jste dal, že printf? 516 00:28:58,340 --> 00:28:59,131 >> Profesor: Přesně tak. 517 00:28:59,131 --> 00:29:01,780 Takže printf, kdykoliv budete brát vstup od uživatele 518 00:29:01,780 --> 00:29:04,140 a něco vytisknout na obrazovku, která je 519 00:29:04,140 --> 00:29:05,600 standardní vstup, výstup knihovnu. 520 00:29:05,600 --> 00:29:07,170 Myslete na to, že way-- vstup, výstup. 521 00:29:07,170 --> 00:29:08,430 >> Mám výstup? 522 00:29:08,430 --> 00:29:09,207 Ano. 523 00:29:09,207 --> 00:29:12,040 Takže vím, že jsem vždycky Potřebuji knihovnu Normován i.o. 524 00:29:12,040 --> 00:29:16,400 >> Takže printf je funkce , kterou bychom potřebovali přístup 525 00:29:16,400 --> 00:29:19,370 a hashtag zahrnují Standardní i.o knihovna. 526 00:29:19,370 --> 00:29:20,280 DOBŘE. 527 00:29:20,280 --> 00:29:22,660 >> Za druhé, co void znamenat? 528 00:29:22,660 --> 00:29:26,970 Máme int main (void), co dělá void zde na mysli tu na lince tři? 529 00:29:26,970 --> 00:29:28,080 Jo, v zádech. 530 00:29:28,080 --> 00:29:29,020 >> Diváků: [Neslyšitelné] 531 00:29:29,020 --> 00:29:29,920 >> Profesor: Přesně tak. 532 00:29:29,920 --> 00:29:33,320 Takže pamatujte, že jsme se naučili počínaje naším pset 533 00:29:33,320 --> 00:29:35,360 že můžete skutečně specifikovat příkazový řádek 534 00:29:35,360 --> 00:29:39,010 Argumenty, že váš program, který vás Hlavní funkcí, bere jako vy, uživatel, 535 00:29:39,010 --> 00:29:39,650 říkají. 536 00:29:39,650 --> 00:29:42,650 Máme-li void, což znamená, že vás mohl jen spustit program přímo 537 00:29:42,650 --> 00:29:44,680 bez jakýchkoliv argumentů příkazového řádku. 538 00:29:44,680 --> 00:29:46,160 Všichni jasné, že? 539 00:29:46,160 --> 00:29:46,660 DOBŘE. 540 00:29:46,660 --> 00:29:52,850 >> A nakonec proč se obtěžovat dělat tento návrat nula věc tady? 541 00:29:52,850 --> 00:29:54,740 Proč máme dokonce int main? 542 00:29:54,740 --> 00:29:57,330 Proč nemůžeme jen tak void main void? 543 00:29:57,330 --> 00:29:59,216 To jo? 544 00:29:59,216 --> 00:30:01,590 Diváků: Jen tak, že můžeme ujistěte se, že je program 545 00:30:01,590 --> 00:30:04,247 úspěšném ukončení, as na rozdíl od pokud byl očíslovány. 546 00:30:04,247 --> 00:30:06,580 A my bychom vědět, že je to jiný druh chyby. 547 00:30:06,580 --> 00:30:07,621 >> Profesor: Jo, přesně tak. 548 00:30:07,621 --> 00:30:10,670 To je jen velmi konvenční věc, kterou děláme, 549 00:30:10,670 --> 00:30:13,840 je to, že právě na konci váš program, jen aby se ujistil, 550 00:30:13,840 --> 00:30:15,830 že vaše hlavní funkci běží správně, 551 00:30:15,830 --> 00:30:17,940 vždy chceme udělat vrátit nulu. 552 00:30:17,940 --> 00:30:21,160 I když můžeme být nutně Není vidět, že tištěný kdekoliv. 553 00:30:21,160 --> 00:30:25,092 >> Vzhledem k tomu, jako programátoři, víte, pokud máte mnoho různých řádků kódu 554 00:30:25,092 --> 00:30:27,050 a vy nevíte, kde tito jdou špatně, 555 00:30:27,050 --> 00:30:30,240 a pokud se chyba stane, že chcete ujistěte se, že máte tuto chybu. 556 00:30:30,240 --> 00:30:33,240 A tak typicky pokud se něco špatně budeme mít návrat jednoho jen 557 00:30:33,240 --> 00:30:34,669 aby se ujistil, víme, že to je. 558 00:30:34,669 --> 00:30:36,460 Takže pokud uvidíte návrat nula, které typicky 559 00:30:36,460 --> 00:30:38,293 znamená, že váš program proveden úspěšně. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Dobrý? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Bezva. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, druhý program zde. 566 00:30:52,680 --> 00:30:54,827 Vezměme si, že. 567 00:30:54,827 --> 00:30:56,910 A jestli vy vidíte float, můžete kluci nejspíš 568 00:30:56,910 --> 00:31:00,810 mít dobrou představu o tom, co Chystám se vás zeptat. 569 00:31:00,810 --> 00:31:05,200 >> Takže když tento program provede, jak můžete vidět, 570 00:31:05,200 --> 00:31:09,330 Jsem deklarování plovák uvnitř mé hlavní funkci. 571 00:31:09,330 --> 00:31:13,470 Já jsem to pojmenování "odpověděl," a já jsem nastavení rovnající se jednomu děleno 10. 572 00:31:13,470 --> 00:31:17,860 Jsem vytisknout na jeden desetinné místo, které plovák. 573 00:31:17,860 --> 00:31:19,880 A pak jsem se vrátí na nulu. 574 00:31:19,880 --> 00:31:24,470 >> Takže při provádění programu, Vzpomeňte si na chamtivý teď, 575 00:31:24,470 --> 00:31:26,550 tento program vytiskne 0.0. 576 00:31:26,550 --> 00:31:29,993 Jak všichni víme, doufejme, že my všichni vědět, jeden děleno 10, není 0,00, 577 00:31:29,993 --> 00:31:32,350 to je 0,1. 578 00:31:32,350 --> 00:31:37,810 Ale vysvětlit, proč si myslí, že tento program že 1 děleno 10 kopií na 0,1 jiné 579 00:31:37,810 --> 00:31:39,504 než 0,1? 580 00:31:39,504 --> 00:31:42,545 Jsem, že jste dám možná jako 30. sekund jen rychle přemýšlet o tom, že 581 00:31:42,545 --> 00:31:43,878 a já půjdu zpět do programu. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> DOBŘE. 584 00:32:20,290 --> 00:32:22,205 Každý, kdo chce dát mu šanci? 585 00:32:22,205 --> 00:32:24,330 Ve třech větách nebo méně, neboť obvykle jsme 586 00:32:24,330 --> 00:32:27,650 chystá omezit všechny odpovědi na třech větách nebo méně 587 00:32:27,650 --> 00:32:31,130 takže se nemusíte jen chrlit náhodné věci, na pevném disku kvíz. 588 00:32:31,130 --> 00:32:32,740 >> Jo, mít šanci. 589 00:32:32,740 --> 00:32:36,390 >> Diváků: Takže si myslím, že je to věc zvaná, stejně jako, [neslyšitelných] 590 00:32:36,390 --> 00:32:42,320 Tak by mohlo být, například, že by mohlo být, stejně jako, 0.09, 591 00:32:42,320 --> 00:32:47,250 že pokud tisknete první číslice, bylo by to na 0,0? 592 00:32:47,250 --> 00:32:49,100 >> Profesor: Close, ne tak docela. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> Diváků: Jste jeden a dělení 10, a oba jsou celá čísla. 595 00:32:51,770 --> 00:32:54,610 A tak způsob, jakým to bude ukládat je jako celé číslo. 596 00:32:54,610 --> 00:32:56,480 A tak se nejbližší celé číslo bude 0.0. 597 00:32:56,480 --> 00:32:57,471 A tak to je 0,1. 598 00:32:57,471 --> 00:32:58,970 Profesor: Jo, to je opravdu dobrý. 599 00:32:58,970 --> 00:33:00,040 To je správná odpověď. 600 00:33:00,040 --> 00:33:03,597 Tak to je velmi matoucí koncept pro mnoho dětí. 601 00:33:03,597 --> 00:33:06,680 A já opravdu chci, aby se ujistil, že toto je posíleno v hlavě každého z nás. 602 00:33:06,680 --> 00:33:10,090 >> Takže to, co říkáme plovoucí bod nepřesnost, 603 00:33:10,090 --> 00:33:12,800 kde je důvod, proč mnoho z vašich programů v chamtivý 604 00:33:12,800 --> 00:33:17,010 nefungoval zpočátku bylo proto, jste zapomněli na obsazení vaší proměnné. 605 00:33:17,010 --> 00:33:19,370 Takže to, co řekl Christabell bylo zcela správné. 606 00:33:19,370 --> 00:33:21,990 >> Plovoucí je neodmyslitelně nepřesná. 607 00:33:21,990 --> 00:33:26,400 Protože v počítači, vpravo, my máme konečné množství bitů paměti 608 00:33:26,400 --> 00:33:28,480 můžeme použít představovat čísla. 609 00:33:28,480 --> 00:33:33,480 Tak, například, to CS50 ID je-- Myslím, že je to 64-bitový počítač. 610 00:33:33,480 --> 00:33:37,520 >> Plovák může být zastoupen pouze o konečné množství těchto bitů. 611 00:33:37,520 --> 00:33:42,260 A tak 0,1 s nekonečnou nulami, že je byl 0,1 je, že jo? 612 00:33:42,260 --> 00:33:45,450 Ale nemůžeme vlastně ukládat toto číslo v našem počítači. 613 00:33:45,450 --> 00:33:47,810 My prostě nemají dostatek paměti, aby tak učinily. 614 00:33:47,810 --> 00:33:52,340 >> A tak nejbližší přiblížení , co je uloženo v paměti je ve skutečnosti 615 00:33:52,340 --> 00:33:55,390 něco jako 0,000 něco, něco, něco, něco. 616 00:33:55,390 --> 00:34:01,240 Což, jakmile se zkrátit to, zaokrouhlí dolů na 0.0. 617 00:34:01,240 --> 00:34:05,640 >> A tak tento příklad je pouze jedním , který ukazuje spoustu otázek 618 00:34:05,640 --> 00:34:08,469 máme vždy, když jsme snaží nesprávně dělat matematiku 619 00:34:08,469 --> 00:34:11,000 bez osazení jako jiný celé číslo. 620 00:34:11,000 --> 00:34:14,870 Takže prostě mít na pozoru se to stává. 621 00:34:14,870 --> 00:34:18,239 >> Na kvízy, pokud dáme vám blok kódu a je to jako, 622 00:34:18,239 --> 00:34:19,510 co vytiskne na konci? 623 00:34:19,510 --> 00:34:24,096 A jestli je to nějaký náhodný hodnota, kterou kluci by měli vědět, proč se to děje. 624 00:34:24,096 --> 00:34:24,909 To jo? 625 00:34:24,909 --> 00:34:27,926 >> Diváků: Truncate, je zbavit se vše po určitém okamžiku? 626 00:34:27,926 --> 00:34:28,513 [NESLYŠITELNÝ] 627 00:34:28,513 --> 00:34:30,929 Profesor: Jo, tak vlastně tohle je opravdu špatný příklad, 628 00:34:30,929 --> 00:34:37,870 protože 0.100 co vlastně by zkrátit až na 0,1. 629 00:34:37,870 --> 00:34:41,389 Ale pokud jste měli spustit to-- vůbec se mi nelíbí pamatovat, protože v loňském roce, které 630 00:34:41,389 --> 00:34:42,830 běžel na jiném programu. 631 00:34:42,830 --> 00:34:45,300 Běželi ho v něco, co nazývá CS50 Appliance, který 632 00:34:45,300 --> 00:34:46,389 se liší od ID. 633 00:34:46,389 --> 00:34:48,520 To bylo 32-bitový systém, myslím. 634 00:34:48,520 --> 00:34:50,290 A tak tam byly různá čísla. 635 00:34:50,290 --> 00:34:53,330 >> Ale v podstatě, jen vím, že celý koncept zkrácení 636 00:34:53,330 --> 00:34:54,815 a jak to jen kusy věci pryč. 637 00:34:54,815 --> 00:34:55,690 A tak, pokud si to rounds-- 638 00:34:55,690 --> 00:34:56,300 >> Diváků: Bez zaokrouhlení. 639 00:34:56,300 --> 00:34:57,370 >> Profesor: Přesně tak. 640 00:34:57,370 --> 00:34:57,870 To jo. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 Bezva. 643 00:35:04,380 --> 00:35:05,250 >> Ahoj, v zádech. 644 00:35:05,250 --> 00:35:07,634 Právě jsme se nad některými kvíz přezkoumání otázky. 645 00:35:07,634 --> 00:35:08,430 >> Dobře. 646 00:35:08,430 --> 00:35:10,150 Takže zvažte jiný program zde. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Budu vám kluci pár minut ke čtení přes to. 649 00:35:15,380 --> 00:35:18,588 To je něco, co bylo pro velmi Nedávno si myslím, že foukal hodně z vás 650 00:35:18,588 --> 00:35:19,142 mysl GUYS je. 651 00:35:19,142 --> 00:35:21,100 Ale budeme mluvit přes to opět jen 652 00:35:21,100 --> 00:35:24,152 aby se ujistil, pochopit úplně. 653 00:35:24,152 --> 00:35:24,652 DOBŘE. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 DOBŘE. 656 00:35:41,780 --> 00:35:44,342 Každý, kdo potřebují více času číst prostřednictvím tohoto kódu? 657 00:35:44,342 --> 00:35:45,650 DOBŘE. 658 00:35:45,650 --> 00:35:50,630 >> Tak se mi zdá, že V tomto programu, že jsem 659 00:35:50,630 --> 00:35:53,460 vytvoření dvou řetězců pomocí getString. 660 00:35:53,460 --> 00:35:55,180 Jeden tzv s a jeden s názvem t. 661 00:35:55,180 --> 00:35:58,680 A v případě, že jsou rovny se rovná k sobě, 662 00:35:58,680 --> 00:36:00,880 Měla by vypisovat "You zadejte totéž. " 663 00:36:00,880 --> 00:36:04,170 >> Ale elsewise, bylo by to tisknout, "You napsal různé věci, "že jo? 664 00:36:04,170 --> 00:36:05,990 Zdá se, že velmi, velmi jednoduché. 665 00:36:05,990 --> 00:36:08,720 Ale, ale, jestli jsem vlastně zkuste napsat tento program, 666 00:36:08,720 --> 00:36:12,230 zdá se, že i když jsem Vstupní přesně stejné řetězce, 667 00:36:12,230 --> 00:36:15,490 stále tiskne, "You napsaný různé věci! " 668 00:36:15,490 --> 00:36:18,020 Má někdo chtěl vzít střílel na důvod, proč tento program vždy 669 00:36:18,020 --> 00:36:20,370 odpovídá, že vstupy jsou různé, a to i 670 00:36:20,370 --> 00:36:22,090 jsou-li tyto slova jsou stejné? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Takže pokud bych měl input-- David lásku použít příklad, jako máma, že jo? 673 00:36:29,170 --> 00:36:37,890 Malá písmena M-O-M pro S, T se rovná malá písmena M-O-M. 674 00:36:37,890 --> 00:36:40,340 Pokud bych běžel to prostřednictvím že kód, proč by to 675 00:36:40,340 --> 00:36:44,180 vytisknout "zadaný různé věci?" 676 00:36:44,180 --> 00:36:46,336 >> Potřebuje někdo více čas přemýšlet o tom? 677 00:36:46,336 --> 00:36:47,294 OK, myslím, že jsme dobří. 678 00:36:47,294 --> 00:36:48,716 To jo? 679 00:36:48,716 --> 00:36:53,930 >> Publikum: OK, tak to je něco o kde je uložen v paměti, že jo? 680 00:36:53,930 --> 00:36:54,890 >> Profesor: Jo. 681 00:36:54,890 --> 00:37:00,400 >> Diváků: Kde to je, je-li to řetězec s je uložen v paměti spot-- 682 00:37:00,400 --> 00:37:01,689 Jsem vynalézání tohle-- je nulová. 683 00:37:01,689 --> 00:37:02,355 Profesor: Jistě. 684 00:37:02,355 --> 00:37:05,290 Diváků: A string t je uložen v paměti na místě, 685 00:37:05,290 --> 00:37:11,000 jako je, 167, a poté nula se nerovná 167. 686 00:37:11,000 --> 00:37:12,610 >> Profesor: Přesně tak. 687 00:37:12,610 --> 00:37:18,350 OK, tak si pamatujte tento neuvěřitelný zjevení jsme vysvětlili vámi 688 00:37:18,350 --> 00:37:21,530 minulý týden, že Řetězce se ve skutečnosti neexistují? 689 00:37:21,530 --> 00:37:25,380 Když jsme se vytvořit něco s názvem string jsme, ve skutečnosti, 690 00:37:25,380 --> 00:37:29,330 vytvořit něco, co nazývá char hvězda. 691 00:37:29,330 --> 00:37:34,470 Což vše, co je, je ukazatel na řetězec nebo na pole znaků. 692 00:37:34,470 --> 00:37:39,480 >> A tak v tomto případě, když jsem bylo na vstup M-O-M cesta 693 00:37:39,480 --> 00:37:49,350 že můj počítač by ukládat je v paměti zpětné lomítko nula, ne? 694 00:37:49,350 --> 00:37:53,180 Tyto čtyři znaky, znaky, by byly uloženy někde. 695 00:37:53,180 --> 00:37:59,290 >> A pak tyto čtyři znaky, zpětné lomítko nula, 696 00:37:59,290 --> 00:38:01,275 jsou uloženy někde jinde, ne? 697 00:38:01,275 --> 00:38:04,685 Nemám ponětí, kde se adresy jsou, oni jsou někde v mém počítači. 698 00:38:04,685 --> 00:38:07,080 Ale nemyslím si, přesně vím, kde jsou. 699 00:38:07,080 --> 00:38:10,170 >> Když jsem se vytvořit řetězec s, vše, co je skutečně 700 00:38:10,170 --> 00:38:15,550 je ukazatel na začátek tohoto řetězce. 701 00:38:15,550 --> 00:38:21,130 A když jsem se vytvořit tuto hodnotu t, vše, co je ukazatel na ZDE. 702 00:38:21,130 --> 00:38:23,980 A tak když se snažíte rovnítko a kontrolovat 703 00:38:23,980 --> 00:38:27,710 aby zjistil, jestli to je rovná rovna t, počítač 704 00:38:27,710 --> 00:38:31,635 je opravdu jen návratu do jste adresu tohoto m 705 00:38:31,635 --> 00:38:33,390 a adresa tohoto m. 706 00:38:33,390 --> 00:38:36,230 A protože jsou dva samostatné kusy dat 707 00:38:36,230 --> 00:38:38,750 které jsou uloženy ve dvou různých adresy v počítači, 708 00:38:38,750 --> 00:38:41,750 váš počítač se nikdy uznat jako je stejný. 709 00:38:41,750 --> 00:38:43,500 Má někdo chtěl dát šanci na to, co jsme 710 00:38:43,500 --> 00:38:46,900 muset udělat, když bychom chtěli opravit to a mít správný spuštěný program 711 00:38:46,900 --> 00:38:49,360 místo toho? 712 00:38:49,360 --> 00:38:52,070 Přemýšlejte o tom, že na pár vteřin. 713 00:38:52,070 --> 00:38:54,929 Co je třeba změnit, aby Si tento program fungování 714 00:38:54,929 --> 00:38:56,220 tak, jak chceme, aby to fungovat? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Jo, chci, aby se bodnout se na to? 717 00:39:18,918 --> 00:39:24,082 >> Diváků: Můžeme zkusit dereference ukazatel a nechte přes pole? 718 00:39:24,082 --> 00:39:25,540 Profesor: To je jeden způsob, jak to udělat. 719 00:39:25,540 --> 00:39:27,880 Takže, co je zase Vaše jméno? 720 00:39:27,880 --> 00:39:29,010 Je mi to líto, mi připomínají. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 Profesor: Jo, tak co Zee navrhl by absolutně fungovat. 723 00:39:32,130 --> 00:39:32,629 Právo? 724 00:39:32,629 --> 00:39:35,730 Mohli bychom dereference ukazatel a skutečně jít a přístup 725 00:39:35,730 --> 00:39:38,460 fyzikální data uvnitř odsud. 726 00:39:38,460 --> 00:39:40,300 A my můžeme jen porovnat celou obrazovku. 727 00:39:40,300 --> 00:39:43,670 >> Dá se říci, OK, ukazatel, dej mi, co je uvnitř sem. 728 00:39:43,670 --> 00:39:44,960 To by vrátit m. 729 00:39:44,960 --> 00:39:47,168 A řekl bych, ukazatel, dej mi, co je uvnitř sem. 730 00:39:47,168 --> 00:39:47,750 Vrátit m. 731 00:39:47,750 --> 00:39:48,410 Myslíte ty zápas? 732 00:39:48,410 --> 00:39:49,410 Ano. 733 00:39:49,410 --> 00:39:50,340 Pak jsme dál. 734 00:39:50,340 --> 00:39:54,240 >> Stále prostudování celé dva Řetězce celou cestu až do konce 735 00:39:54,240 --> 00:39:56,635 a uvidíme, jestli to jsou stejné, pokud všechny zjištěné hodnoty jsou stejné. 736 00:39:56,635 --> 00:39:59,680 A je-li všechny hodnoty jsou stejné, pak víme, že řetězce jsou pravdivé. 737 00:39:59,680 --> 00:40:01,600 Určitě, to je, jak bychom to udělat? 738 00:40:01,600 --> 00:40:03,930 >> Má někdo zmaten na něco z toho? 739 00:40:03,930 --> 00:40:06,970 Celý koncept how řetězců jsou opravdu jen ukazatele, 740 00:40:06,970 --> 00:40:08,440 a jak se ve skutečnosti neexistují? 741 00:40:08,440 --> 00:40:10,480 A proč jsme si chyby jako způsob, jak bychom to? 742 00:40:10,480 --> 00:40:15,070 Vzhledem k tomu, Já vám zaručit, kluci, ukazatele a přidělení řetězec a paměť 743 00:40:15,070 --> 00:40:16,470 se chystáte přijít. 744 00:40:16,470 --> 00:40:17,410 >> To jo? 745 00:40:17,410 --> 00:40:21,072 >> Diváků: [Neslyšitelné] dereference to, stačí dát hvězdu [neslyšitelných] 746 00:40:21,072 --> 00:40:21,780 Profesor: Správně. 747 00:40:21,780 --> 00:40:28,430 Takže derererence ukazatel prostředky jít na tuto adresu ukazatele 748 00:40:28,430 --> 00:40:30,390 a získat data, hodnotu tam. 749 00:40:30,390 --> 00:40:32,700 A způsob, jak to udělat, je hvězda ukazatel. 750 00:40:32,700 --> 00:40:34,262 Nepleťte si to. 751 00:40:34,262 --> 00:40:35,186 >> Diváků: [Neslyšitelné]. 752 00:40:35,186 --> 00:40:35,852 >> Profesor: Jo. 753 00:40:35,852 --> 00:40:39,750 Diváků: Takže můžete jen psát jestliže hvězda s rovná rovni hvězda t. 754 00:40:39,750 --> 00:40:40,630 >> Profesor: No, no. 755 00:40:40,630 --> 00:40:40,960 Žádný. 756 00:40:40,960 --> 00:40:41,640 >> Diváků: To není dost dobrý, ne? 757 00:40:41,640 --> 00:40:43,760 >> Profesor: To ne, protože jsi Pouze kontrola první písmeno. 758 00:40:43,760 --> 00:40:46,010 Vy jste pravděpodobně bude potřebovat nějaký smyčce, která se 759 00:40:46,010 --> 00:40:49,055 projde každý charakter v obou řetězcích. 760 00:40:49,055 --> 00:40:49,837 To jo. 761 00:40:49,837 --> 00:40:52,920 Takže pokud byste chtěli jen zkontrolovat, v případě, začali se stejnou věc, 762 00:40:52,920 --> 00:40:58,220 pokud, hvězda, kterou můžete udělat s se rovná hvězdy t. 763 00:40:58,220 --> 00:41:01,300 Pak víte, že aspoň začal se stejným znakem. 764 00:41:01,300 --> 00:41:01,952 >> To jo? 765 00:41:01,952 --> 00:41:04,056 >> Diváků: Takže cesta si, že by bylo 766 00:41:04,056 --> 00:41:06,064 jako vložený pro smyčce nebo ukazatel? 767 00:41:06,064 --> 00:41:06,730 Profesor: Jo. 768 00:41:06,730 --> 00:41:08,170 Docela hodně jen pro smyčce. 769 00:41:08,170 --> 00:41:12,430 Pamatujte si, že David je uvedeno ve třídě volná syntaktický cukr? 770 00:41:12,430 --> 00:41:17,690 A měl to velice matoucí věc hvězdy t 771 00:41:17,690 --> 00:41:22,030 plus jedna, kde by integrovat díky a přesuňte ukazatel? 772 00:41:22,030 --> 00:41:29,910 Jednodušší způsob, jak dělat to je jen t i. 773 00:41:29,910 --> 00:41:31,090 >> Takže je to jen pole. 774 00:41:31,090 --> 00:41:34,630 Způsob, jakým byste mít pro smyčka, která běžela od nuly až i, kde 775 00:41:34,630 --> 00:41:36,580 i je po celé délce řetězec, mohli jste právě 776 00:41:36,580 --> 00:41:39,510 napsat, že místo toho dělají Celý ukazatel, referenční věc. 777 00:41:39,510 --> 00:41:43,510 Takže tyto věci jsou přesně ekvivalent v počítači. 778 00:41:43,510 --> 00:41:45,905 >> Vy jste asi nebude je třeba vědět, že, 779 00:41:45,905 --> 00:41:48,280 ale je to dobré, aby tak nějak mají vzadu své mysli. 780 00:41:48,280 --> 00:41:52,630 Jen vím, že počítač uznává různé bloky kódu 781 00:41:52,630 --> 00:41:53,890 jako stejnou věc. 782 00:41:53,890 --> 00:41:57,510 Vzhledem k tomu, to je jen mnohem více uživatelsky přátelské pro nás představit, jak to je 783 00:41:57,510 --> 00:41:58,150 pole. 784 00:41:58,150 --> 00:42:00,990 Je to prostě jednodušší. 785 00:42:00,990 --> 00:42:02,719 >> Diváků: Takže použít strlen rád, get-- 786 00:42:02,719 --> 00:42:03,385 Profesor: Jo. 787 00:42:03,385 --> 00:42:03,926 Diváků: OK. 788 00:42:03,926 --> 00:42:05,940 Profesor: Dalo by se používat strlen nebo, pokud 789 00:42:05,940 --> 00:42:10,420 neměl strlen můžete jen udělat up dokud nenarazíte zpětné lomítko nula pro obě strany. 790 00:42:10,420 --> 00:42:11,568 Buď bude fungovat. 791 00:42:11,568 --> 00:42:12,068 To jo. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 Diváků: Takže je to na dereference každý Jeden znak, když jsme byli vlastně 794 00:42:17,996 --> 00:42:21,044 psaní tohoto kódu, my mohl jen dělat t i držáky 795 00:42:21,044 --> 00:42:22,460 Líbí se mi s hvězdou před ním? 796 00:42:22,460 --> 00:42:27,700 >> Profesor: Jo, rovná se rovná ů držák i, a pak i dál 797 00:42:27,700 --> 00:42:29,790 down up, dokud nenarazíte na konec. 798 00:42:29,790 --> 00:42:31,286 Jo, to je to, co byste udělali. 799 00:42:31,286 --> 00:42:33,660 A já skutečně příští Příkladem, kdy jsme vlastně 800 00:42:33,660 --> 00:42:36,740 napsat strlen takže kluci bude druh ze si hrát si s ním trochu. 801 00:42:36,740 --> 00:42:43,567 >> Takže je jasné, všichni jen na paměti, struny, ukazovátka, kvalita adresy? 802 00:42:43,567 --> 00:42:46,650 Některé pojmy vyšší úrovně, které jste bude pro jistotu potřebují znát na kvízu 803 00:42:46,650 --> 00:42:48,928 zítra. 804 00:42:48,928 --> 00:42:49,904 >> Dobře. 805 00:42:49,904 --> 00:42:50,404 Dobrý. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Ano. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, tak jedna věc, kterou budeme také požádat vy, jako to děláme každý rok na kvíz, je, 810 00:43:04,180 --> 00:43:08,340 Předpokládám, že jste zapomněli (což zdá se, že zapomněli udělat ročně) 811 00:43:08,340 --> 00:43:10,810 , ve kterém je soubor záhlaví strlen deklaroval. 812 00:43:10,810 --> 00:43:13,860 A tak musíme přepsat ji sami. 813 00:43:13,860 --> 00:43:16,350 >> Zde je seznam pokynů že můžeme prezentovat vás 814 00:43:16,350 --> 00:43:20,660 kluci kde dostanete předpokládat, že S řetězec nebude null. 815 00:43:20,660 --> 00:43:23,830 Můžete předpokládat, že bude s ukončen zpětným lomítkem nula. 816 00:43:23,830 --> 00:43:26,670 Takže víte, že je to, co že to bude končit. 817 00:43:26,670 --> 00:43:29,500 >> A, například, že se délka Hello by bylo pět. 818 00:43:29,500 --> 00:43:32,890 Takže můžete předpokládat, že ahoj bude pět, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 Nemusíte se domnívat, že zadek žádný účet, pro délku. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> To poslední, co tady, ne bát integer overflow. 822 00:43:42,300 --> 00:43:45,270 Pamatuje si někdo, co integer overflow je? 823 00:43:45,270 --> 00:43:48,041 >> Diváků: jde nad rámec Délka [neslyšitelných]. 824 00:43:48,041 --> 00:43:50,740 >> Profesor: Jo, můžete vysvětlit trochu, co to znamená? 825 00:43:50,740 --> 00:43:55,330 >> Publikum: Takže, myslím, že se vrátí zpět k ořezávání příklad dříve. 826 00:43:55,330 --> 00:43:58,380 Ale pokud máte jen tolik čísel že přesahují počet bitů 827 00:43:58,380 --> 00:44:01,409 že můžete skutečně přiřadit že to bude jen trochu odříznout. 828 00:44:01,409 --> 00:44:04,242 Profesor: Jo, tak o typický počítač, kolik bitů máme? 829 00:44:04,242 --> 00:44:05,306 Diváků: 32? 830 00:44:05,306 --> 00:44:06,430 Profesor: Jo, 32, vpravo. 831 00:44:06,430 --> 00:44:10,030 A tak to je to, co, čtyři miliardy, dvou miliard? 832 00:44:10,030 --> 00:44:13,579 Čtyři miliardy až čtyři miliardy pozitivní celá čísla, že? 833 00:44:13,579 --> 00:44:15,370 Dvě miliardy negativní, dvou miliard pozitivní, 834 00:44:15,370 --> 00:44:16,900 závisí na tom, jak chcete, aby to udělat. 835 00:44:16,900 --> 00:44:21,470 >> A tak v podstatě můžeme mít dost celá čísla, která může jít až 836 00:44:21,470 --> 00:44:25,800 na dva do 31. minus 1, že jo? 837 00:44:25,800 --> 00:44:27,980 Vzhledem k tomu, jednou jsme narazili dva na 32., my ne 838 00:44:27,980 --> 00:44:30,040 mít tolik paměti v našem počítači. 839 00:44:30,040 --> 00:44:32,310 >> A tak, teoreticky, jsem by mohla přijít s číslem 840 00:44:32,310 --> 00:44:34,560 který je, stejně jako, dva až 46.. 841 00:44:34,560 --> 00:44:38,040 Je to číslo obrovský-ass, ale teoreticky mohl. 842 00:44:38,040 --> 00:44:42,730 A tak přetečení celé číslo je, pokud se pokusíte vytvořit celé číslo, které jde nad rámec 843 00:44:42,730 --> 00:44:44,790 váš počítač je schopen uložit. 844 00:44:44,790 --> 00:44:46,590 >> A tak si kluci pro tento příklad nemá 845 00:44:46,590 --> 00:44:51,330 se starat o nás dává vám obří řetězec, který je dvakrát až 32. znaků 846 00:44:51,330 --> 00:44:51,830 dlouho. 847 00:44:51,830 --> 00:44:54,010 To by bylo opravdu vážně. 848 00:44:54,010 --> 00:44:59,430 >> Dobře, tak jsem jen tak dát vy základní struktura tohoto. 849 00:44:59,430 --> 00:45:02,020 Budeš k vytvoření Funkce tzv int strlen kde 850 00:45:02,020 --> 00:45:08,436 Úspěšné absolvování, char hvězda, nebo řetězec, ukazatel na řetězec s názvem ů. 851 00:45:08,436 --> 00:45:10,820 >> V pořádku, všichni zkopírujte že dolů. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Bezva. 854 00:45:14,850 --> 00:45:17,020 Oops-- jiná cesta. 855 00:45:17,020 --> 00:45:21,360 >> Takže tohle je něco jako tvrdší kus problému, 856 00:45:21,360 --> 00:45:25,320 takže Dám ti kluci možná pět až Šest minut na druhu náhlý nápad 857 00:45:25,320 --> 00:45:27,478 a psát tuto funkci ven. 858 00:45:27,478 --> 00:45:29,710 >> Diváků: Nemáme Účet pro [neslyšitelných], 859 00:45:29,710 --> 00:45:30,200 nemusíme používat číslo? 860 00:45:30,200 --> 00:45:31,241 >> Profesor: Ne, to ne. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Dám vám kluci nápovědu. 863 00:48:06,930 --> 00:48:12,325 Smyčka while může být velmi užitečné zde. 864 00:48:12,325 --> 00:48:12,825 To jo. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Tady je 867 00:48:45,495 --> 00:48:45,995 bonbón. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Candy bude také k dispozici pro kvíz, myslím. 870 00:48:53,410 --> 00:48:55,315 Takže vy budou všichni slazené zítra. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Dokážete Já-- máš to. 873 00:49:02,962 --> 00:49:03,718 >> Diváků: OK. 874 00:49:03,718 --> 00:49:04,384 Profesor: Jo. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Možná, že 30 více sekund nebo tak. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Dobře, pokud jste neudělali, žádné starosti. 879 00:50:07,340 --> 00:50:08,810 Budeme procházet společně. 880 00:50:08,810 --> 00:50:09,310 DOBŘE. 881 00:50:09,310 --> 00:50:13,800 Takže jdu jen rozvržení základní struktura pro tuto funkci zde. 882 00:50:13,800 --> 00:50:17,255 Strlen Int. 883 00:50:17,255 --> 00:50:20,040 884 00:50:20,040 --> 00:50:23,460 Za prvé, někdo chce říct, mi, co to znamená int? 885 00:50:23,460 --> 00:50:25,160 Musíme mít v této funkci. 886 00:50:25,160 --> 00:50:26,709 >> Diváků: strlen [Neslyšitelné]. 887 00:50:26,709 --> 00:50:27,500 Profesor: Přesně tak. 888 00:50:27,500 --> 00:50:31,140 Takže ať se stane cokoli sem, Musíme se vrátit celé číslo. 889 00:50:31,140 --> 00:50:36,367 A jak je uvedeno v spec, chceme return-- 890 00:50:36,367 --> 00:50:37,700 Jdi do toho kluci, prostě dál. 891 00:50:37,700 --> 00:50:40,480 Je to všechno dobré. 892 00:50:40,480 --> 00:50:42,960 Sněz to všechno, takže nemám to vzít zpátky, ve skutečnosti. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 Int prostě znamená, že jste bude vrací celé číslo. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Co je to char hvězda s? 897 00:50:57,106 --> 00:50:58,640 Co to znamená? 898 00:50:58,640 --> 00:51:00,879 >> Publikum: Stejně jako to, co se na vstupu dovnitř. 899 00:51:00,879 --> 00:51:01,670 Profesor: Přesně tak. 900 00:51:01,670 --> 00:51:04,142 A co je téměř to samé jako char hvězda? 901 00:51:04,142 --> 00:51:04,850 Publikum: String? 902 00:51:04,850 --> 00:51:05,641 Profesor: Přesně tak. 903 00:51:05,641 --> 00:51:09,080 Takže všechno, co děláte, je dávat Tento ukazatel na řetězec. 904 00:51:09,080 --> 00:51:09,580 DOBŘE. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 Bezva. 907 00:51:13,360 --> 00:51:16,650 >> Také nezapomeňte, že pokud bychom zapomenout aby vám tyto konzole, 908 00:51:16,650 --> 00:51:18,330 nezapomeňte jim psát sami. 909 00:51:18,330 --> 00:51:20,720 Vzhledem k tomu, teoreticky, váš kód nesprávné, pokud jste zapomněl ně psát. 910 00:51:20,720 --> 00:51:21,803 Jen vždy věnovat pozornost. 911 00:51:21,803 --> 00:51:23,750 Stejně jako, maličkosti že si nevšimnete 912 00:51:23,750 --> 00:51:26,917 když jste programování na notebooku, protože váš laptop to udělá za vás? 913 00:51:26,917 --> 00:51:28,624 Nezapomeňte při píšete ručně. 914 00:51:28,624 --> 00:51:29,170 To jo? 915 00:51:29,170 --> 00:51:30,954 >> Diváků: Ale jak chybné? 916 00:51:30,954 --> 00:51:33,190 Stejně jako, dostaneme celý problém špatně? 917 00:51:33,190 --> 00:51:34,190 >> Profesor: Ne, ne. 918 00:51:34,190 --> 00:51:34,860 Nebojte se. 919 00:51:34,860 --> 00:51:39,270 Je to vlastně teoreticky možné pro vás dostat plný počet bodů na otázku, 920 00:51:39,270 --> 00:51:41,980 i když váš kód bude nikdy nedojde v reálném životě. 921 00:51:41,980 --> 00:51:46,052 Navrhuji to nezkusíte aby se to stalo. 922 00:51:46,052 --> 00:51:48,260 Například, kdyby všechno že tady je v pořádku, 923 00:51:48,260 --> 00:51:51,850 ale zapomenete tlustého střeva nebo konzolu, váš kód nebude ve skutečnosti spustit. 924 00:51:51,850 --> 00:51:53,740 Ale můžeme být milosrdní. 925 00:51:53,740 --> 00:51:54,394 >> To jo? 926 00:51:54,394 --> 00:51:56,050 >> Diváků: Máte na komentovat na našich rukopis? 927 00:51:56,050 --> 00:51:57,758 >> Profesor: Ne, ne, ne obavy o tom. 928 00:51:57,758 --> 00:51:58,440 Bez komentáře. 929 00:51:58,440 --> 00:51:59,400 Styl by měla být dobrá. 930 00:51:59,400 --> 00:52:01,470 Stejně jako, ne smush vše na jednom řádku. 931 00:52:01,470 --> 00:52:04,580 Nebudeme rádi s vámi, pokud to uděláte. 932 00:52:04,580 --> 00:52:07,250 >> Má někdo chtěl dej mi první řádek? 933 00:52:07,250 --> 00:52:08,633 Tip, je to velmi jednoduché. 934 00:52:08,633 --> 00:52:09,320 >> To jo? 935 00:52:09,320 --> 00:52:11,920 >> Publikum: Int, n se rovná nule. 936 00:52:11,920 --> 00:52:13,734 Stačí nastavit čítač. 937 00:52:13,734 --> 00:52:15,900 Profesor: Tak my chceme některé druh čítače, že jo? 938 00:52:15,900 --> 00:52:19,780 Já jsem prostě jít pojmenovat ji "počítat" kvůli čitelnosti. 939 00:52:19,780 --> 00:52:21,265 Co chceme nastavit rovný? 940 00:52:21,265 --> 00:52:21,890 >> Diváků: Zero. 941 00:52:21,890 --> 00:52:23,840 Profesor: Jo. 942 00:52:23,840 --> 00:52:24,340 Středník. 943 00:52:24,340 --> 00:52:26,250 Je to také velmi podivné kreslení středníky. 944 00:52:26,250 --> 00:52:28,870 Jen praxe tom, že. 945 00:52:28,870 --> 00:52:31,990 >> Takže chceme nejprve čítač typu int. 946 00:52:31,990 --> 00:52:35,360 Protože chceme spočítat, jak Mnoho znaky nebo písmena 947 00:52:35,360 --> 00:52:36,780 v tomto řetězci, že jo? 948 00:52:36,780 --> 00:52:38,330 Velmi snadné první krok. 949 00:52:38,330 --> 00:52:42,140 >> OK, možná trochu složitější Nyní, jak se budeme dělat tak? 950 00:52:42,140 --> 00:52:45,400 Má někdo chtěl dej mi řádek kódu 951 00:52:45,400 --> 00:52:48,450 , které mohou být schopni pomoci smyčky přes to, co je to? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Jo, statečná duše v zádech? 954 00:52:56,900 --> 00:53:06,832 >> Publikum: OK, takže i když bod hvězdičky se jo, hvězda s, 955 00:53:06,832 --> 00:53:09,465 není roven nule, pak něco udělat? 956 00:53:09,465 --> 00:53:11,090 Profesor: To je opravdu, opravdu blízko. 957 00:53:11,090 --> 00:53:11,835 Opravdu blízko. 958 00:53:11,835 --> 00:53:13,710 Takže budu řešit dvě věci, s tím. 959 00:53:13,710 --> 00:53:18,240 Za prvé, není to přesně nula. 960 00:53:18,240 --> 00:53:20,110 Co je to? 961 00:53:20,110 --> 00:53:22,550 Je to null terminátor, což je zpětné lomítko nula. 962 00:53:22,550 --> 00:53:24,960 Takže jsou odlišné hlediska toho, jak jsou uloženy. 963 00:53:24,960 --> 00:53:26,270 Takže ty jsi opravdu blízko. 964 00:53:26,270 --> 00:53:30,330 >> A za druhé, nechceme jen posunete ukazatel. 965 00:53:30,330 --> 00:53:32,320 Chceme vlastně přístup k hodnotám, že jo? 966 00:53:32,320 --> 00:53:34,050 A tak, jak to uděláme? 967 00:53:34,050 --> 00:53:34,550 Velmi snadné. 968 00:53:34,550 --> 00:53:36,841 Nemyslete si, že o ukazatele, si nemyslím, že o vzpomínkách. 969 00:53:36,841 --> 00:53:38,525 Vraťte se do týdne dva tohoto kurzu. 970 00:53:38,525 --> 00:53:39,555 >> Diváků: [Neslyšitelné]. 971 00:53:39,555 --> 00:53:40,680 Profesor: Jak, pamatuješ? 972 00:53:40,680 --> 00:53:41,400 Jaké jsou struny? 973 00:53:41,400 --> 00:53:42,650 Jak jsou uloženy v paměti? 974 00:53:42,650 --> 00:53:43,300 >> Diváků: Jsou aktivována. 975 00:53:43,300 --> 00:53:43,810 >> Profesor: Jsou chována. 976 00:53:43,810 --> 00:53:45,550 Tak jak máme přistupovat každá postava uvnitř? 977 00:53:45,550 --> 00:53:46,466 >> Diváků: [Neslyšitelné]. 978 00:53:46,466 --> 00:53:47,530 Profesor: Přesně tak. 979 00:53:47,530 --> 00:53:53,195 Tak while-- co jde dovnitř tady? 980 00:53:53,195 --> 00:53:54,940 S of - 981 00:53:54,940 --> 00:53:55,920 >> Publikum: I. 982 00:53:55,920 --> 00:53:58,216 >> Profesor: Oh, já neexistuje, to dělá? 983 00:53:58,216 --> 00:53:59,620 >> Publikum: Oh, počítat? 984 00:53:59,620 --> 00:54:01,640 >> Profesor: Můžeme jen používat počet, ne? 985 00:54:01,640 --> 00:54:03,050 >> Publikum: Promiň, volal jsem to i. 986 00:54:03,050 --> 00:54:04,341 >> Profesor: Jo, je to všechno dobré. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Máme proměnnou tady to je již byl prohlášen jako náš pult. 989 00:54:10,760 --> 00:54:13,650 Tak proč ne my prostě použít, že pohybovat přes while? 990 00:54:13,650 --> 00:54:15,230 Dává to smysl? 991 00:54:15,230 --> 00:54:20,864 >> Takže zatímco s o count-- někdo chce dát mi, co se stane po tady? 992 00:54:20,864 --> 00:54:22,030 Diváků: To není rovno. 993 00:54:22,030 --> 00:54:23,405 Profesor: Does not stejné, ne? 994 00:54:23,405 --> 00:54:26,200 Je to rána rovná, vykřičník rovná, 995 00:54:26,200 --> 00:54:28,500 co vy chcete volat to není equal-- 996 00:54:28,500 --> 00:54:29,496 >> Diváků: [Neslyšitelné]. 997 00:54:29,496 --> 00:54:30,990 >> Profesor: Jo. 998 00:54:30,990 --> 00:54:37,110 Nezapomeňte jediné citace je pro char, uvozovky jsou na provázku. 999 00:54:37,110 --> 00:54:38,630 Při jejich používání buďte opatrní. 1000 00:54:38,630 --> 00:54:42,430 Takže, když se díváme skrz pole, poslední znak, 1001 00:54:42,430 --> 00:54:46,420 víme, že nechceme že je backslash nula. 1002 00:54:46,420 --> 00:54:47,340 >> Takže zatímco. 1003 00:54:47,340 --> 00:54:48,840 Jsme není na konci řetězce. 1004 00:54:48,840 --> 00:54:52,335 Co chceme udělat uvnitř? 1005 00:54:52,335 --> 00:54:55,269 >> Diváků: Chceme přidat do počítadlo tak to počítá a navíc? 1006 00:54:55,269 --> 00:54:56,060 Profesor: Přesně tak. 1007 00:54:56,060 --> 00:55:03,064 Tak tady budeme dělat počítat, počítat a navíc. 1008 00:55:03,064 --> 00:55:03,980 Chybí ještě jednu linku. 1009 00:55:03,980 --> 00:55:05,090 Už tam skoro jsme. 1010 00:55:05,090 --> 00:55:07,398 Co budeme dělat zapomněl? 1011 00:55:07,398 --> 00:55:08,770 >> Diváků: Vrácení nula? 1012 00:55:08,770 --> 00:55:10,820 >> Profesor: Chcete vrátit nulu? 1013 00:55:10,820 --> 00:55:12,962 >> Publikum: Ne, návrat do strlen. 1014 00:55:12,962 --> 00:55:13,511 Počkejte. 1015 00:55:13,511 --> 00:55:14,760 Profesor: který je uložen v? 1016 00:55:14,760 --> 00:55:15,090 Diváků: hrabě. 1017 00:55:15,090 --> 00:55:15,589 Počítat. 1018 00:55:15,589 --> 00:55:17,150 Profesor: Přesně tak. 1019 00:55:17,150 --> 00:55:20,760 Tak tady budeme vracet počítat. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Protože to, co jsme tady děláš ultimately-- 1022 00:55:25,380 --> 00:55:29,780 máme proti proměnnou, která je chystá zvýšit prostřednictvím naší řetězec. 1023 00:55:29,780 --> 00:55:33,050 Budeme dál, udržet děje kolem a kolem této smyčky. 1024 00:55:33,050 --> 00:55:37,700 A když nejsme na konci tohoto řetězec, který je null terminátor. 1025 00:55:37,700 --> 00:55:40,410 >> A pokaždé, když projdeme to, my přidáváme do našeho pultu. 1026 00:55:40,410 --> 00:55:42,640 A jdeme dál spolu v tomto poli. 1027 00:55:42,640 --> 00:55:44,880 A na konci, jakmile jsme hit null zakončení, 1028 00:55:44,880 --> 00:55:48,469 Víme, oh, můžeme zlomit, vrácení počtu. 1029 00:55:48,469 --> 00:55:49,260 Máme strlen. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Má každý dostat jak to byla realizována? 1032 00:55:56,400 --> 00:55:58,830 Zatímco loops-- Vím, že jsme ne provedeno příliš s nimi, 1033 00:55:58,830 --> 00:56:01,240 ale oni jsou obvykle Velmi, velmi užitečné, pokud 1034 00:56:01,240 --> 00:56:05,390 Nevím, co jste zastavení podmínka nutně musí být. 1035 00:56:05,390 --> 00:56:06,220 >> Otázka? 1036 00:56:06,220 --> 00:56:10,080 >> Diváků: Můžeme napsat null na zatímco stavu? 1037 00:56:10,080 --> 00:56:10,940 >> Profesor: Zatímco? 1038 00:56:10,940 --> 00:56:15,304 Jo, takže v tomto problému jsem měl vás kluci předpokládají, že to nebude mít hodnotu null. 1039 00:56:15,304 --> 00:56:17,220 Vzhledem k tomu, pamatujte, teoreticky, kdybych vám dal 1040 00:56:17,220 --> 00:56:21,180 ukazatel, který byl příliš velký paměti, to by vám null, že jo? 1041 00:56:21,180 --> 00:56:23,770 To je to, co provozní systém by dělat. 1042 00:56:23,770 --> 00:56:26,960 >> Takže když jsem se ti předpokládat, s by být null, je třeba zkontrolovat. 1043 00:56:26,960 --> 00:56:32,050 Tak tady nahoře, měli byste dělat, když s rovná se rovná null, vrátí jeden. 1044 00:56:32,050 --> 00:56:33,028 Něco takového. 1045 00:56:33,028 --> 00:56:34,153 Diváků: [neslyšitelný] nulu. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 Profesor: OK, řeknu vy, proč nemůžeme udělat. 1048 00:56:39,370 --> 00:56:43,357 Vzhledem k tomu, pamatujte na paměti, že jo, tady. 1049 00:56:43,357 --> 00:56:43,940 Půjdeme sem. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Máš obří bloky paměti všechny s mřížkami 1052 00:56:54,090 --> 00:56:56,680 že ukládat různé hodnoty, ne? 1053 00:56:56,680 --> 00:57:00,110 A tak všechno řetězec je-- pro Například, jestliže my se na vstup ahoj, 1054 00:57:00,110 --> 00:57:05,490 bylo by H-E-L-L-O zpětné lomítko nula, ne? 1055 00:57:05,490 --> 00:57:09,570 A pak kdo ví, stejně jako náhodné věci, které jsou v tu po něm. 1056 00:57:09,570 --> 00:57:11,220 >> Nemáme vlastně vědět, co tam je. 1057 00:57:11,220 --> 00:57:13,350 A tak pokud jste měli udělat místo zpětné lomítko nula, 1058 00:57:13,350 --> 00:57:15,590 null, nemusí být null. 1059 00:57:15,590 --> 00:57:17,680 Vzhledem k tomu, že to může znamenat, některé náhodné další věci 1060 00:57:17,680 --> 00:57:19,270 které nepatří do vaší řetězci. 1061 00:57:19,270 --> 00:57:23,219 A tak způsob, jakým vždy víme, že řetězec končí se zpětným lomítkem nula. 1062 00:57:23,219 --> 00:57:25,760 A tak to je vždycky, jak my zkontrolujte, zda konec řetězce. 1063 00:57:25,760 --> 00:57:30,820 >> Null, všechno to znamená je, pokud máte neexistující ukazatel, v první řadě, 1064 00:57:30,820 --> 00:57:36,160 nebo pokud je tak velký, že vaše paměť nemůžete vrátit, pak by to bylo null. 1065 00:57:36,160 --> 00:57:40,150 Takže buďte velmi opatrní při rozlišování Rozdíl mezi null 1066 00:57:40,150 --> 00:57:42,130 a zpětné lomítko nula. 1067 00:57:42,130 --> 00:57:43,670 To jo. 1068 00:57:43,670 --> 00:57:46,886 >> Každý, kdo v pořádku s tím? 1069 00:57:46,886 --> 00:57:48,150 DOBŘE. 1070 00:57:48,150 --> 00:57:50,440 >> Takže jsem měl kluci vypsat strlen. 1071 00:57:50,440 --> 00:57:53,790 Reálně můžeme také požádat napíšete out A až I, pamatujte, že "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 nebo jak vy to chcete nazývat? 1073 00:57:55,400 --> 00:57:58,010 Tato funkce v Vigenere a Caesar, že 1074 00:57:58,010 --> 00:58:00,900 převede ASCII hodnotu na celé číslo? 1075 00:58:00,900 --> 00:58:04,360 To také má přijít na minulých kvízy funkcí jsme požádáni, abyste mohli napsat. 1076 00:58:04,360 --> 00:58:08,280 >> Skoro žádné funkce které jste použili, a je 1077 00:58:08,280 --> 00:58:11,660 velmi snadné psát sami, Senzory líbí, je nižší, 1078 00:58:11,660 --> 00:58:14,620 je horní, snížit, aby horní. 1079 00:58:14,620 --> 00:58:17,964 Funkce, které by převést řetězec z malých písmen na velká písmena. 1080 00:58:17,964 --> 00:58:19,380 Všichni víme, jak to udělat, ne? 1081 00:58:19,380 --> 00:58:21,100 Je to docela snadné. 1082 00:58:21,100 --> 00:58:24,770 Jen chci, aby se ujistil, že jste can-- je to stejný myšlenkový proces. 1083 00:58:24,770 --> 00:58:26,940 Právě jste iterovat a zapnete věci. 1084 00:58:26,940 --> 00:58:30,190 Buď počet, nebo když odbočíte věci jinak. 1085 00:58:30,190 --> 00:58:32,280 >> Já bych suggest-- I nevím, jestli jedeme 1086 00:58:32,280 --> 00:58:39,080 vás požádat, abyste zapamatovat co základním kapitálu nebo kapitál Z, či malá písmena A nebo malá písmena 1087 00:58:39,080 --> 00:58:42,640 z jsou v ASCII, ale řekla bych, že snad napsal, že se v případě, 1088 00:58:42,640 --> 00:58:44,124 my ano. 1089 00:58:44,124 --> 00:58:45,540 Jen tak si kluci mají odkaz. 1090 00:58:45,540 --> 00:58:47,180 Stejně jako velké písmeno A je to, co, 197? 1091 00:58:47,180 --> 00:58:51,320 A pak malá je jako 50 něco. 1092 00:58:51,320 --> 00:58:52,492 65, jo, tam jdete. 1093 00:58:52,492 --> 00:58:54,950 Takže jen docela hodně znát Rozdíl mezi nimi je 32. 1094 00:58:54,950 --> 00:58:57,670 To je docela důležité. 1095 00:58:57,670 --> 00:58:58,170 To jo. 1096 00:58:58,170 --> 00:59:01,445 Jsem dobrý na to? 1097 00:59:01,445 --> 00:59:01,945 DOBŘE. 1098 00:59:01,945 --> 00:59:03,109 >> Publikum: Mohli bychom teoreticky napsat nějaký 1099 00:59:03,109 --> 00:59:04,410 z nich se i na našich little-- 1100 00:59:04,410 --> 00:59:07,035 >> Profesor: Je teoreticky mohl jen zkopírovat funkci dolů. 1101 00:59:07,035 --> 00:59:08,482 To je pravda. 1102 00:59:08,482 --> 00:59:11,080 >> Diváků: Ne [Neslyšitelné]. 1103 00:59:11,080 --> 00:59:12,720 >> Profesor: Vy máte list. 1104 00:59:12,720 --> 00:59:14,194 Vy kluci mají poznámku list. 1105 00:59:14,194 --> 00:59:14,860 Můžete psát to. 1106 00:59:14,860 --> 00:59:15,490 Můžete to napsat. 1107 00:59:15,490 --> 00:59:17,031 Můžete dělat, co chcete s ním. 1108 00:59:17,031 --> 00:59:18,530 To jo. 1109 00:59:18,530 --> 00:59:21,406 Takže teoreticky, pokud Chcete-li, jít na. 1110 00:59:21,406 --> 00:59:23,338 >> Diváků: [Neslyšitelné] ale my opravdu 1111 00:59:23,338 --> 00:59:25,994 nutně mít na paměti je hodnota, můžeme jen 1112 00:59:25,994 --> 00:59:28,914 použijte na horní nebo na nižší funkce, že jo? 1113 00:59:28,914 --> 00:59:29,580 Profesor: Jo. 1114 00:59:29,580 --> 00:59:32,740 Ale pokud se vám dal otázku která říká, že psát na horní, 1115 00:59:32,740 --> 00:59:34,350 pak budete muset napsat. 1116 00:59:34,350 --> 00:59:38,150 Takže vy můžete předpokládat, že jste kluci mají přístup ke všem funkcím, 1117 00:59:38,150 --> 00:59:41,523 ale pokud chcete použít k horní nebo na nižší, co si také musíte udělat? 1118 00:59:41,523 --> 00:59:43,840 >> Diváků: [Neslyšitelné] použijte CS50 [neslyšitelných] 1119 00:59:43,840 --> 00:59:44,840 >> Profesor: Je to CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Buďte opatrní tam. 1122 00:59:48,310 --> 00:59:50,640 >> Tak, aby horní, snížit, je horní, je nižší, 1123 00:59:50,640 --> 00:59:52,990 funkce, které zahrnují manipulaci s řetězci jsou 1124 00:59:52,990 --> 00:59:55,490 vše v rámci buď v ASCII nebo v matematické knihovně 1125 00:59:55,490 --> 00:59:57,350 nebo v knihovně řetězce. 1126 00:59:57,350 --> 01:00:00,290 Takže pokud vy používat ty funkce, dávejte pozor, aby pamatovat 1127 01:00:00,290 --> 01:00:01,451 zahrnout tuto hlavičku. 1128 01:00:01,451 --> 01:00:03,950 Tak snad také něco vás chtějí zahrnout do listu, 1129 01:00:03,950 --> 01:00:04,892 jaké jsou záhlaví? 1130 01:00:04,892 --> 01:00:06,600 Jaké jsou knihovny jste používali? 1131 01:00:06,600 --> 01:00:08,550 Jaké funkce jsou Uvnitř těchto knihoven? 1132 01:00:08,550 --> 01:00:09,230 Je to důležité. 1133 01:00:09,230 --> 01:00:10,420 >> To jo? 1134 01:00:10,420 --> 01:00:12,570 >> Diváků: Mohli bychom prostě Poldové a dělat hashtag 1135 01:00:12,570 --> 01:00:14,955 prostřednictvím absolutně každý dopis, který jsme kdy 1136 01:00:14,955 --> 01:00:17,340 viděný jako na všechny otázky? 1137 01:00:17,340 --> 01:00:18,320 >> Profesor: Dalo by se. 1138 01:00:18,320 --> 01:00:20,361 Já nevím, jak šťastní budeme mít do platové třídy 1139 01:00:20,361 --> 01:00:25,090 že kvíz, kdy každý kus kódu je dvakrát tak dlouho, jak je potřeba, aby bylo. 1140 01:00:25,090 --> 01:00:27,200 Já nevím, jak bychom mohli vzlétnout bod za styl. 1141 01:00:27,200 --> 01:00:28,790 Ale teoreticky Váš code by bylo správné. 1142 01:00:28,790 --> 01:00:30,915 Vy jste mohl Poldové a jen patří všechno. 1143 01:00:30,915 --> 01:00:32,044 To je taky v pohodě, jo. 1144 01:00:32,044 --> 01:00:32,960 Diváků: [Neslyšitelné]. 1145 01:00:32,960 --> 01:00:33,270 Profesor: Jo. 1146 01:00:33,270 --> 01:00:34,900 Navrhoval bych nedělal, že ačkoli. 1147 01:00:34,900 --> 01:00:35,505 To jo. 1148 01:00:35,505 --> 01:00:36,130 Diváků: cool. 1149 01:00:36,130 --> 01:00:36,620 Profesor: Dobrá otázka. 1150 01:00:36,620 --> 01:00:37,480 Publikum: Takže, nejhorší scénář. 1151 01:00:37,480 --> 01:00:38,563 Profesor: Nejhorší případ. 1152 01:00:38,563 --> 01:00:40,350 Pokud jste úplně zapomněl, jsi to mohl udělat. 1153 01:00:40,350 --> 01:00:40,850 To jo. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Jo, kód je tady. 1156 01:00:45,400 --> 01:00:49,176 Použil jsem n místo počtu, ale vás Víte, co plave svou loď. 1157 01:00:49,176 --> 01:00:51,092 Publikum: Počkej, takže jsme nebude muset hashtag 1158 01:00:51,092 --> 01:00:53,460 zahrnují protože jsme začíná na int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> Profesor: Jo, jen jsem předpokládal, že jsme byli požádáni, aby napsali funkci. 1161 01:00:59,924 --> 01:01:02,340 Pokud byste chtěli být v bezpečí, vám by pravděpodobně to tam dal. 1162 01:01:02,340 --> 01:01:05,650 Ale já jsem prostě neměl obtěžovat, jo. 1163 01:01:05,650 --> 01:01:09,919 >> Já ani nevím, jestli vás potřebovat knihovnu pro toto. 1164 01:01:09,919 --> 01:01:12,710 Vzhledem k tomu, že jste opravdu tisk out cokoliv nebo něco, že jo? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Jo, já ne-li vědět, budete potřebovat knihovnu. 1167 01:01:19,568 --> 01:01:22,400 >> DOBŘE. 1168 01:01:22,400 --> 01:01:26,020 To je také trochu více podél linie manipulace paměti. 1169 01:01:26,020 --> 01:01:27,400 Tento druh trochu složitější. 1170 01:01:27,400 --> 01:01:28,960 Přemýšlejte o tom. 1171 01:01:28,960 --> 01:01:30,580 Máte funkci nazvanou FUNC. 1172 01:01:30,580 --> 01:01:33,570 Mohl jsem označil to za cokoliv, ale vybrat to pojmenovat FUNC. 1173 01:01:33,570 --> 01:01:36,000 Mám ji nad mým hlavním. 1174 01:01:36,000 --> 01:01:39,790 Pamatujte si, že chcete mít funkce poté, co váš hlavní, 1175 01:01:39,790 --> 01:01:42,370 se chcete ujistit, že zahrnují prototyp vrcholu. 1176 01:01:42,370 --> 01:01:45,750 >> Ale v tomto případě to bylo tak krátká že jsem cítil, že jsem mohl jen 1177 01:01:45,750 --> 01:01:47,260 zahrnout jej na vrcholu hlavní. 1178 01:01:47,260 --> 01:01:51,170 Nepotřeboval jsem mít prototyp, protože je to už napsáno výše. 1179 01:01:51,170 --> 01:01:55,430 Takže všechno, co dělám ve svém hlavní funkci vytváří čísla x rovná 10. 1180 01:01:55,430 --> 01:02:00,490 Volám svou FUNC funkce, a poté vytisknete něco. 1181 01:02:00,490 --> 01:02:02,840 >> A pak je to vlastně co func dělá. 1182 01:02:02,840 --> 01:02:04,340 Vy kluci chtějí myslet přes to. 1183 01:02:04,340 --> 01:02:05,423 Vzhledem k tomu, že je to trochu složitější. 1184 01:02:05,423 --> 01:02:07,220 Je to velmi, velmi složité, ve skutečnosti. 1185 01:02:07,220 --> 01:02:09,549 Promyslete si, co to program by byl výstup. 1186 01:02:09,549 --> 01:02:10,840 Dám ti kluci dvě minuty. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Dobré diskuse? 1189 01:03:37,891 --> 01:03:38,853 >> Diváků: Jo. 1190 01:03:38,853 --> 01:03:39,815 >> Profesor: Jo. 1191 01:03:39,815 --> 01:03:42,220 Dobře, takže to je ošidné z nějakého důvodu. 1192 01:03:42,220 --> 01:03:44,845 A to je důvod, proč jsem chtěl přivést to každého pozornost. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Má někdo chtěl, aby mi návrh, pokus? 1195 01:03:51,147 --> 01:03:52,230 Co by to vytisknout? 1196 01:03:52,230 --> 01:03:53,930 Zcela v pořádku, pokud se mýlíte. 1197 01:03:53,930 --> 01:03:55,619 To jo? 1198 01:03:55,619 --> 01:03:59,483 >> Diváků: Myslím si, že je to 100 a pak 10 na dvou samostatných linek. 1199 01:03:59,483 --> 01:04:00,940 >> Profesor: A 10? 1200 01:04:00,940 --> 01:04:03,154 Má někdo nějaké jiné odhady? 1201 01:04:03,154 --> 01:04:04,150 To jo? 1202 01:04:04,150 --> 01:04:09,040 >> Diváků: Možná jen proto, že 10 func se nevrací nic? 1203 01:04:09,040 --> 01:04:11,610 >> Profesor: OK, tak my mají hádat číslo jedna 1204 01:04:11,610 --> 01:04:14,990 je to, že odhad číslo dvě je právě chystá vytisknout 10. 1205 01:04:14,990 --> 01:04:17,623 Má někdo nějaké jiné odhady? 1206 01:04:17,623 --> 01:04:19,654 DOBŘE. 1207 01:04:19,654 --> 01:04:21,070 Takže pojďme projít to, že jo? 1208 01:04:21,070 --> 01:04:23,903 Kdykoliv dostanete kus kódu, to není jen se na to dívat, a to jako, 1209 01:04:23,903 --> 01:04:25,060 ach, to je tolik věcí! 1210 01:04:25,060 --> 01:04:26,460 Jsem tak zmatená! 1211 01:04:26,460 --> 01:04:28,220 Stejně jako, uklidni se. 1212 01:04:28,220 --> 01:04:31,602 Jen vím, že můžete prostě prohlédnout kód řádek po řádku. 1213 01:04:31,602 --> 01:04:32,310 To je vše, co je. 1214 01:04:32,310 --> 01:04:33,840 Je to jako čtení knihy. 1215 01:04:33,840 --> 01:04:38,000 >> Takže s jakoukoli funkcí, vždy začít na hlavní. 1216 01:04:38,000 --> 01:04:40,860 Takže budeme start na int main prázdnotě, 1217 01:04:40,860 --> 01:04:43,010 i programu se Již spustit dolů, že jo? 1218 01:04:43,010 --> 01:04:45,070 Začněte na v hlavním prázdnotě. 1219 01:04:45,070 --> 01:04:48,030 Int x rovná 10. 1220 01:04:48,030 --> 01:04:50,400 >> Takže budu vymazat to. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Budu čerpat paměti jen tak vás kluci může druh vidět, co se děje. 1223 01:04:58,470 --> 01:05:02,190 >> Pamatujte si, tady máme hromadu? 1224 01:05:02,190 --> 01:05:05,810 Tady nahoře Máme hromadit někde tady. 1225 01:05:05,810 --> 01:05:07,470 Stack vyroste, je to tak? 1226 01:05:07,470 --> 01:05:10,150 A v zásobníku, budete mít síťové funkce, stejně jako 1227 01:05:10,150 --> 01:05:12,230 všechny síťového lokálních proměnných. 1228 01:05:12,230 --> 01:05:14,310 >> Tak tady, int x rovná 10. 1229 01:05:14,310 --> 01:05:17,670 V rámci naší hlavní funkci jsme vytváří proměnnou s názvem x. 1230 01:05:17,670 --> 01:05:20,590 Jsme nastavení, které se rovná 10. 1231 01:05:20,590 --> 01:05:24,200 Zde máte nějaké x, a vy jste nastavení, které se rovná 10, vpravo, 1232 01:05:24,200 --> 01:05:25,400 v hlavní. 1233 01:05:25,400 --> 01:05:27,430 Všichni dobře? 1234 01:05:27,430 --> 01:05:28,070 >> Funkce. 1235 01:05:28,070 --> 01:05:30,330 Takže teď, v rámci našich hlavních funkce, voláme 1236 01:05:30,330 --> 01:05:31,810 Funkce jsme napsáno výše. 1237 01:05:31,810 --> 01:05:34,550 Takže jsme nyní zadat druhou funkci. 1238 01:05:34,550 --> 01:05:40,120 Chystáme se vytvořit další proměnná int x rovná 100. 1239 01:05:40,120 --> 01:05:42,410 Co se děje tady v zásobníku? 1240 01:05:42,410 --> 01:05:46,980 Co se stane, když říkáte Funkce, která vytváří nové proměnné? 1241 01:05:46,980 --> 01:05:50,038 Co se děje tady v zásobníku? 1242 01:05:50,038 --> 01:05:52,134 >> Diváků: [Neslyšitelné] hromádky na vrcholu? 1243 01:05:52,134 --> 01:05:52,800 Profesor: Jo. 1244 01:05:52,800 --> 01:05:54,050 Takže to vlastně vytvoří kopii. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 A to druh piloty na vrcholu. 1247 01:05:57,740 --> 01:06:00,700 Myslete na stack-- stoh knih, stoh cokoliv. 1248 01:06:00,700 --> 01:06:06,520 Piloty na vrcholu, nejprve v poslední out, poslední dovnitř, první ven. 1249 01:06:06,520 --> 01:06:08,471 >> Takže to bude vytvořit x sem. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> To bude mít všechny funcs proměnné. 1252 01:06:14,450 --> 01:06:14,950 Skvělý. 1253 01:06:14,950 --> 01:06:20,980 Takže teď máme dva rozdílné x, že představují dva velmi odlišné věci. 1254 01:06:20,980 --> 01:06:24,470 Pak budeme tisknout out celého čísla x. 1255 01:06:24,470 --> 01:06:26,430 Takže pojďme tisk 100, ne? 1256 01:06:26,430 --> 01:06:29,389 Protože tady je to 100. 1257 01:06:29,389 --> 01:06:31,680 Takže to je první věc, že to bude tisknout. 1258 01:06:31,680 --> 01:06:35,710 Protože tato funkce vrací nic, Nyní tato funkce, že linka v hlavní 1259 01:06:35,710 --> 01:06:37,070 je hotovo. 1260 01:06:37,070 --> 01:06:39,160 Všichni dobře se mnou tak daleko? 1261 01:06:39,160 --> 01:06:43,034 >> Takže teď jsme přes dvě ze tři řádky z našich hlavních funkcí. 1262 01:06:43,034 --> 01:06:44,450 Teď jdeme do třetí řady. 1263 01:06:44,450 --> 01:06:46,350 Jedeme do printf. 1264 01:06:46,350 --> 01:06:48,222 Co je to x v hlavní? 1265 01:06:48,222 --> 01:06:49,263 Co to představuje? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> Jaká je hodnota x teď? 1268 01:06:54,280 --> 01:06:55,220 >> Diváků: 100. 1269 01:06:55,220 --> 01:06:56,799 >> Profesor: Je to 100? 1270 01:06:56,799 --> 01:06:57,590 Diváků: Still 10. 1271 01:06:57,590 --> 01:06:58,878 Profesor: Still 10. 1272 01:06:58,878 --> 01:07:00,870 To jo. 1273 01:07:00,870 --> 01:07:06,810 Vzhledem k tomu, pamatujte, že v rámci náš func, x se rovná 100. 1274 01:07:06,810 --> 01:07:09,690 Ale pokud se vrátíme zpět na naši hlavní funkci, 1275 01:07:09,690 --> 01:07:12,440 že proměnná je uložena v jiné místo na našich zásobníku. 1276 01:07:12,440 --> 01:07:16,250 >> Takže teď musíme jít zpět do hlavní zásobník, síťový lokální proměnné. 1277 01:07:16,250 --> 01:07:18,460 A tady x je rovno 10. 1278 01:07:18,460 --> 01:07:20,300 A tak jsme se chystáte vytisknout 10. 1279 01:07:20,300 --> 01:07:22,530 >> A tak měla naprostou pravdu. 1280 01:07:22,530 --> 01:07:25,053 Budeme mít výstup 100 a 10. 1281 01:07:25,053 --> 01:07:25,553 To jo? 1282 01:07:25,553 --> 01:07:28,700 Diváků: Když malloc, je to haldy nebo zásobníku, který je [neslyšitelný]? 1283 01:07:28,700 --> 01:07:31,950 Profesor: Když malloc, Užíváte paměti z haldy 1284 01:07:31,950 --> 01:07:32,830 a jejich přidělování. 1285 01:07:32,830 --> 01:07:34,950 Takže nemáte bordel s nic z toho. 1286 01:07:34,950 --> 01:07:38,100 Takže myslím, že větší jídlo s sebou Zde je něco, co nazývá prostor. 1287 01:07:38,100 --> 01:07:39,650 >> Pro ty z vás, kteří byli na relace v noci recenzi, 1288 01:07:39,650 --> 01:07:41,080 jsme se bavili o tom krátce. 1289 01:07:41,080 --> 01:07:45,380 Rozsah určuje, jak a pokud existují vaše proměnné. 1290 01:07:45,380 --> 01:07:48,050 Nebo v jaké rámy Do vašeho proměnné existují. 1291 01:07:48,050 --> 01:07:51,690 >> Docela hodně pravidlo obecně je Vaše variables-- pokud jejich vytvoření 1292 01:07:51,690 --> 01:07:56,660 uvnitř kudrnaté braces-- existují pouze uvnitř těchto složených závorek. 1293 01:07:56,660 --> 01:08:00,312 >> Tak například v naší funkci func, vidíš ty dvě vzpěry. 1294 01:08:00,312 --> 01:08:02,020 Pokud vytváříte něco uvnitř ní, 1295 01:08:02,020 --> 01:08:06,500 šance je vše, co děláte, je vytvoření stack a ukládání, které tam. 1296 01:08:06,500 --> 01:08:07,430 Totéž v hlavní. 1297 01:08:07,430 --> 01:08:09,950 To je prostě uložen uvnitř hlavní. 1298 01:08:09,950 --> 01:08:13,560 >> Také chcete být velmi, velmi opatrní. 1299 01:08:13,560 --> 01:08:18,310 Protože oblast působnosti také půjčuje samo o sobě na různých příkladech. 1300 01:08:18,310 --> 01:08:25,950 Tak například pro smyčky, pro int i = 0. 1301 01:08:25,950 --> 01:08:28,460 I je nižší než, nevím, 10. 1302 01:08:28,460 --> 01:08:32,111 I s a. 1303 01:08:32,111 --> 01:08:34,560 A máte kód uvnitř o tom, že jo? 1304 01:08:34,560 --> 01:08:38,830 >> Kde se tato proměnná, i, vlastně jen existují? 1305 01:08:38,830 --> 01:08:40,510 Pouze uvnitř si na smyčky. 1306 01:08:40,510 --> 01:08:43,640 Tak jsem se vsadit, mnoho z vás má Pravděpodobně se setkal tuto chybu, když 1307 01:08:43,640 --> 01:08:45,930 děláte programy ve vašich psets. 1308 01:08:45,930 --> 01:08:49,990 Kolik z vás se pokusili použít i mimo cyklus for a měl chybu? 1309 01:08:49,990 --> 01:08:53,310 Jako neexistuje odkaz celých čísel nebo něco takového? 1310 01:08:53,310 --> 01:08:56,069 >> Důvod, proč se to stane Je tomu tak proto, že jsi zde 1311 01:08:56,069 --> 01:08:59,109 vytvoření něčeho, že pouze existuje ve svůj pro smyčce. 1312 01:08:59,109 --> 01:09:01,972 A pokud se pokusíte jej použít, i ne skutečně existují mimo něj. 1313 01:09:01,972 --> 01:09:04,930 Takže v podstatě počítač říká, já Nevím, o čem to mluvíte. 1314 01:09:04,930 --> 01:09:08,689 Vše, co vím, je, že jsem byl tady, ale teď už ne. 1315 01:09:08,689 --> 01:09:12,580 >> Takže pokud bych měl vytvořit pro smyčce uvnitř, ne? 1316 01:09:12,580 --> 01:09:19,080 A budu vytvářet jiný, jako int j, a mít to udělat cokoliv. 1317 01:09:19,080 --> 01:09:23,689 A máte kód vnitřek že smyčka, j existuje jen tady. 1318 01:09:23,689 --> 01:09:26,029 Ale existuje i uvnitř i. 1319 01:09:26,029 --> 01:09:29,310 A tak j existuje pouze uvnitř to pro smyčce, 1320 01:09:29,310 --> 01:09:33,850 zatímco já existuje v celé věci. 1321 01:09:33,850 --> 01:09:34,500 >> Všichni jasné? 1322 01:09:34,500 --> 01:09:37,416 Totéž se podmíněné příkazy Chcete-li vytvořit cokoliv. 1323 01:09:37,416 --> 01:09:40,390 Totéž s cykly while pokud Chcete-li vytvořit cokoliv. 1324 01:09:40,390 --> 01:09:42,390 To je něco, co se velmi, velmi opatrní. 1325 01:09:42,390 --> 01:09:45,681 Takže to byl opravdu dobrý problém v pocit, že prokázala dvě věci. 1326 01:09:45,681 --> 01:09:47,160 Je prokázáno, jako první, rozsah. 1327 01:09:47,160 --> 01:09:49,550 A prokázal Také alokace paměti. 1328 01:09:49,550 --> 01:09:54,130 Vzhledem k tomu, vy by měli vědět, že funkce rostou směrem nahoru ve stohu. 1329 01:09:54,130 --> 01:09:56,710 A že když zavoláte funkce, budete vytvářet 1330 01:09:56,710 --> 01:09:59,060 v podstatě nový zásobník paměti. 1331 01:09:59,060 --> 01:10:02,100 To je velmi odlišná od jaké jsou vaše síťové paměť. 1332 01:10:02,100 --> 01:10:03,300 To jo. 1333 01:10:03,300 --> 01:10:03,800 Páni! 1334 01:10:03,800 --> 01:10:05,470 Každý, kdo v pořádku na to? 1335 01:10:05,470 --> 01:10:06,750 To bylo matoucí. 1336 01:10:06,750 --> 01:10:09,380 Velmi dobré témata projít, protože jste pravděpodobně 1337 01:10:09,380 --> 01:10:12,255 dostane trochu ošidné věci, jako že na kvíz. 1338 01:10:12,255 --> 01:10:13,350 To jo. 1339 01:10:13,350 --> 01:10:13,850 Bezva. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Dám vám 100 na jeden linie a pak 10 na straně druhé. 1342 01:10:18,430 --> 01:10:21,468 Jo, velmi dobré. 1343 01:10:21,468 --> 01:10:26,350 >> OK, teď vy dostanete šanci být TA. 1344 01:10:26,350 --> 01:10:30,600 Dostanete se odpovědět na všechny krásné e-maily, které jsem se někdy dostanou. 1345 01:10:30,600 --> 01:10:34,290 >> Takže, Vážení Andi, vidím, myslím, že je něco špatně s mým kompilátorem. 1346 01:10:34,290 --> 01:10:37,910 Jsem si jistý, že můj kód je správný, ale Dostávám chybu segmentace 1347 01:10:37,910 --> 01:10:39,074 pokaždé, když jsem běžet. 1348 01:10:39,074 --> 01:10:39,740 Co se děje? 1349 01:10:39,740 --> 01:10:42,844 Prosím, pomozte, hodně lásky. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Pokud vy něco podobného že jak byste reagoval? 1352 01:10:49,410 --> 01:10:51,860 Jsou to vlastně velmi časté otázky, budeme vás požádat, abyste. 1353 01:10:51,860 --> 01:10:54,090 Je-li, vám dám scénář, dáme nám 1354 01:10:54,090 --> 01:10:56,350 váš nejlepší odhad na to, co se děje. 1355 01:10:56,350 --> 01:11:00,710 Každý, kdo má osten na to, co se děje? 1356 01:11:00,710 --> 01:11:02,654 To jo? 1357 01:11:02,654 --> 01:11:06,056 >> Diváků: Možná, že dereferenced null, něco jako ukazatel 1358 01:11:06,056 --> 01:11:08,924 ukazuje na něco null. 1359 01:11:08,924 --> 01:11:11,590 Profesor: Jo, to by být Příkladem, kdy že se to stane. 1360 01:11:11,590 --> 01:11:14,467 Ale co je to větší obrázek o tom, co se tady děje? 1361 01:11:14,467 --> 01:11:17,050 Diváků: Je to, že se snažíte přístup k paměti, že nejste 1362 01:11:17,050 --> 01:11:18,175 má mít přístup k? 1363 01:11:18,175 --> 01:11:19,200 Profesor: Přesně tak. 1364 01:11:19,200 --> 01:11:24,800 Takže myslíte, že na poruchy seg, off Limity, omezený prostor v paměti 1365 01:11:24,800 --> 01:11:27,780 že byste neměli dotýkat. 1366 01:11:27,780 --> 01:11:31,670 >> Takže docela hodně, když se snažíte k index--, jako je například 1367 01:11:31,670 --> 01:11:34,110 jste deklaroval array od nuly do devíti. 1368 01:11:34,110 --> 01:11:37,360 Ale zkuste se dotknout, že 10. hodnota, nemáte přístup k tomuto. 1369 01:11:37,360 --> 01:11:38,694 Vzhledem k tomu, jste není deklarováno to. 1370 01:11:38,694 --> 01:11:40,943 A tak váš počítač se děje podívat se na to být jako, 1371 01:11:40,943 --> 01:11:43,440 uh oh, se snažíte jít mimo hranice indexu. 1372 01:11:43,440 --> 01:11:45,270 Budu vám chyba segmentace. 1373 01:11:45,270 --> 01:11:46,590 >> Myslete jako segmentu, ne? 1374 01:11:46,590 --> 01:11:49,665 Extra segmentu, je porucha Při pokusu o porušení něco 1375 01:11:49,665 --> 01:11:50,790 a neměli byste tam být. 1376 01:11:50,790 --> 01:11:53,660 Porucha Segmentace je kdykoliv zkuste se dotknout věcí 1377 01:11:53,660 --> 01:11:54,970 že byste neměli dotýkat. 1378 01:11:54,970 --> 01:11:56,815 >> Takže běžné příklady jsou index. 1379 01:11:56,815 --> 01:11:58,940 Samozřejmě, pokud se snažíte dotýkat se, že byl null, 1380 01:11:58,940 --> 01:12:00,220 že by také fungovat stejně dobře. 1381 01:12:00,220 --> 01:12:02,300 Pokud je váš ukazatel se snaží dotýkat se věci, které by neměly dotknout, 1382 01:12:02,300 --> 01:12:03,730 které by rovněž mohly fungovat stejně dobře. 1383 01:12:03,730 --> 01:12:07,120 Většina obvykle budete vidět v matici. 1384 01:12:07,120 --> 01:12:07,740 Všichni dobře? 1385 01:12:07,740 --> 01:12:10,374 >> Diváků: Takže pokud chcete přístup 10. bod 1386 01:12:10,374 --> 01:12:12,290 a tam je jen limit devíti nebo tak něco. 1387 01:12:12,290 --> 01:12:13,160 >> Profesor: Jo, přesně tak. 1388 01:12:13,160 --> 01:12:13,660 Docela dost. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Bezva. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Vážení Andi. 1393 01:12:19,920 --> 01:12:23,440 Takže máme tyto podivuhodné věci volal druhy. 1394 01:12:23,440 --> 01:12:25,472 Pokud Sloučit sort-- jako my pila v příkladu, kdy 1395 01:12:25,472 --> 01:12:27,180 David udělal celý věc class-- proč, 1396 01:12:27,180 --> 01:12:29,760 pokud je to tak mnohem rychlejší než některý z dalších druhů, 1397 01:12:29,760 --> 01:12:33,310 proč ještě obtěžovat s vědomím kteroukoli další druhy? 1398 01:12:33,310 --> 01:12:35,100 >> Co je tato otázka skutečně po vás? 1399 01:12:35,100 --> 01:12:36,659 Co je to tři word-- 1400 01:12:36,659 --> 01:12:37,950 Diváků: Co je trade-off? 1401 01:12:37,950 --> 01:12:38,530 Profesor: Přesně tak. 1402 01:12:38,530 --> 01:12:39,946 To je to, co otázka se ptá. 1403 01:12:39,946 --> 01:12:43,682 Co je trade-off mezi Sloučit druh verše jinými druhy? 1404 01:12:43,682 --> 01:12:45,850 >> Publikum: bere na paměti, že jo? 1405 01:12:45,850 --> 01:12:47,720 >> Profesor: Líbí se vám vysvětlují, že trochu víc? 1406 01:12:47,720 --> 01:12:49,490 Nejprve si vysvětlíme Sloučit obchod. 1407 01:12:49,490 --> 01:12:50,970 Jak Merge sort funguje? 1408 01:12:50,970 --> 01:12:55,220 >> Diváků: Tak to funguje tak, že dělení všechno do poloviny 1409 01:12:55,220 --> 01:13:00,660 a pak ji dát dohromady a přerozdělení to v pořadí, 1410 01:13:00,660 --> 01:13:02,862 jako pokaždé, když sloučení sady. 1411 01:13:02,862 --> 01:13:03,820 Profesor: Tak nějak. 1412 01:13:03,820 --> 01:13:06,861 Takže můžu čerpat na to, ale to by trvat mi pět minut čerpat ji ven. 1413 01:13:06,861 --> 01:13:10,220 Podívejte se zpět na sekci snímků kde jsme pokryli merge sort. 1414 01:13:10,220 --> 01:13:10,790 Přesně. 1415 01:13:10,790 --> 01:13:13,406 >> Takže způsob, jak sloučit třídění díla to je rozděluje věci na polovinu, 1416 01:13:13,406 --> 01:13:15,780 a pak to prostě vypadá u První hodnoty všichni 1417 01:13:15,780 --> 01:13:17,000 a seřadí nejen to. 1418 01:13:17,000 --> 01:13:20,364 Neustále vytváří nové pole a klade věci stále více a více v pořadí. 1419 01:13:20,364 --> 01:13:23,030 A tak když to je opravdu, ale opravdu rychle, protože it's-- víte, 1420 01:13:23,030 --> 01:13:25,380 binární vyhledávání je n log n. 1421 01:13:25,380 --> 01:13:27,880 Budete vytvářet tolik různá pole, které jste nablízku 1422 01:13:27,880 --> 01:13:29,700 pomocí obrovské množství paměti. 1423 01:13:29,700 --> 01:13:33,080 A tak i když je rychlejší, obchod off Zde je, že používáte více paměti. 1424 01:13:33,080 --> 01:13:38,490 >> A tak, náznak, druhy a vyhledávání byly pokryty mnohem více v tomto roce 1425 01:13:38,490 --> 01:13:41,610 než tomu bylo v letech minulých. 1426 01:13:41,610 --> 01:13:45,100 Vy jste měli vidět, že odráží odpovídajícím způsobem na kvíz. 1427 01:13:45,100 --> 01:13:49,160 Rozhodně bych trávit čas jít nad tím, co všechno z různých druhů 1428 01:13:49,160 --> 01:13:52,320 jsou, jak binární vyhledávání, jak lineární hledání práce. 1429 01:13:52,320 --> 01:13:54,750 Jak možná pseudokód kódu těch ven. 1430 01:13:54,750 --> 01:13:55,950 Jaké jsou provozní doba? 1431 01:13:55,950 --> 01:13:59,210 Něco jako běh doby je velmi snadno kopírovat dolů na poznámkový list, 1432 01:13:59,210 --> 01:13:59,710 právo? 1433 01:13:59,710 --> 01:14:01,420 >> Je to opravdu těžké, když jste ve středu testy 1434 01:14:01,420 --> 01:14:02,390 a vy budete muset přijít na to ven. 1435 01:14:02,390 --> 01:14:03,160 Zkopírujte ho dolů. 1436 01:14:03,160 --> 01:14:05,550 Já vám zaručit, že jste bude vědět, že. 1437 01:14:05,550 --> 01:14:06,860 Jaké jsou kompromisy? 1438 01:14:06,860 --> 01:14:10,064 V nejhorším případě, nejlepším případě scénáře pro všechny z nich, velmi poznat. 1439 01:14:10,064 --> 01:14:10,564 To jo? 1440 01:14:10,564 --> 01:14:12,730 >> Diváků: Potřebujeme, aby vědět, jak se kód merge sort? 1441 01:14:12,730 --> 01:14:15,470 Stejně jako, potřebujeme pamatovat rekurzivní? 1442 01:14:15,470 --> 01:14:18,950 >> Profesor: Velmi o tom pochybuji, jen protože je to jako docela komplikovaný. 1443 01:14:18,950 --> 01:14:22,282 Ale to nemusí být neproveditelné, kdybychom požádat, abyste používali pseudocode to. 1444 01:14:22,282 --> 01:14:22,781 To jo. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Jo, OK, ještě jeden. 1447 01:14:29,170 --> 01:14:31,387 To může přijít v jste poslední kus za chvíli. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 To jo? 1450 01:14:43,090 --> 01:14:44,930 Copak všichni slyšet, že? 1451 01:14:44,930 --> 01:14:48,360 >> OK, tak do značné míry první všichni, jaký typ programu 1452 01:14:48,360 --> 01:14:51,000 bude vám dává výkon, jako je tento? 1453 01:14:51,000 --> 01:14:54,350 Nezapomeňte vás žádal, aby se dozvěděli o Tento nový typ ladění nástroje? 1454 01:14:54,350 --> 01:14:57,340 Jaké bylo jméno jeho? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, pravá 1456 01:14:59,460 --> 01:15:02,600 >> Byl to program, kde se dalo nazvat, které by mohly 1457 01:15:02,600 --> 01:15:05,940 Sledujte všechny paměti, kterou jste použití ve vašem programu, a se děje. 1458 01:15:05,940 --> 01:15:11,090 Takže pokud máte něco, jako: definitivně ztratil, 40 bytů v jednom bloku. 1459 01:15:11,090 --> 01:15:14,870 Pravděpodobně nejste vzpomněl si na to uvolnit. 1460 01:15:14,870 --> 01:15:18,710 Vzhledem k tomu, pokud používáte bajtů paměti, to znamená, že jste si přístup, že paměť, 1461 01:15:18,710 --> 01:15:20,240 ale vy jste nebyli schopni osvobodit. 1462 01:15:20,240 --> 01:15:21,948 Takže chcete, aby se Ujistěte se, že to také 1463 01:15:21,948 --> 01:15:31,420 pomocí free-- to je function-- osvobodit všechny 1464 01:15:31,420 --> 01:15:34,930 paměti znovu přidělen podle malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Bezva. 1466 01:15:35,500 --> 01:15:37,140 Takže tomto snímku, budu mít to. 1467 01:15:37,140 --> 01:15:41,050 Je to všude v mnoha přednášky, v mnoha sekce snímků. 1468 01:15:41,050 --> 01:15:44,254 Opravdu chcete, aby se ujistil, prostě víte, tohle všechno. 1469 01:15:44,254 --> 01:15:47,170 Buď v poznámce listu, nebo pokud jste Chcete jej pamatovat, neváhejte. 1470 01:15:47,170 --> 01:15:48,836 To je opravdu, opravdu, opravdu důležité. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Také velmi dobrý otázka, kterou můžeme ptát. 1473 01:15:56,890 --> 01:16:00,320 Proč je pohled Selection sort-- na Výběr sort-- všechny runtimes 1474 01:16:00,320 --> 01:16:02,060 n jsou na druhou. 1475 01:16:02,060 --> 01:16:06,714 Bez ohledu na to, jak se seznam přijde vy jako, tak proč je výběr sort-- 1476 01:16:06,714 --> 01:16:08,630 Dám vám kluci 30 Druhá přemýšlet o tom. 1477 01:16:08,630 --> 01:16:10,700 Vzhledem k tomu, je to trochu matoucí. 1478 01:16:10,700 --> 01:16:12,710 To s sebou nese určitá koncepční myšlení. 1479 01:16:12,710 --> 01:16:16,470 Proč by dobu chodu být stejné v jak nejhorší a nejlepší případ scénáře? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> To jo? 1482 01:16:30,000 --> 01:16:38,084 >> Diváků: Vzhledem k tomu, Selection sort každý poloha nebo prostor v tomto malém poli 1483 01:16:38,084 --> 01:16:40,350 věc nebo cokoliv jiného. 1484 01:16:40,350 --> 01:16:44,430 Takže i v nejlepším případě, i když je to naprosto řazeny, 1485 01:16:44,430 --> 01:16:47,380 to by ještě být jako, OK, jeden. 1486 01:16:47,380 --> 01:16:49,000 V mém prvním místě mám jeden. 1487 01:16:49,000 --> 01:16:50,250 A projít všechny z nich. 1488 01:16:50,250 --> 01:16:51,249 OK, jedna je nejmenší. 1489 01:16:51,249 --> 01:16:53,053 A pak to jde znovu a je jako, OK, dva 1490 01:16:53,053 --> 01:16:54,594 je nejmenší ze všech věcí. 1491 01:16:54,594 --> 01:16:56,804 Ale to ještě musí zkontrolovat každý a každý. 1492 01:16:56,804 --> 01:16:57,470 Profesor: Jo. 1493 01:16:57,470 --> 01:17:00,490 Tak například, řekněme, Máme seznam, již řazeno, 1494 01:17:00,490 --> 01:17:03,390 pole jedna až pět. 1495 01:17:03,390 --> 01:17:07,100 Způsob, jakým výběru druhů je, že prochází, kontroluje tyhle dva. 1496 01:17:07,100 --> 01:17:08,234 Pak se zkontroluje ti dva. 1497 01:17:08,234 --> 01:17:09,650 A pak to kontroluje a kontroluje. 1498 01:17:09,650 --> 01:17:13,285 Udržuje kontrolu všechny z nich, bez ohledu na to, zda 1499 01:17:13,285 --> 01:17:14,160 je to vlastně seřazeny. 1500 01:17:14,160 --> 01:17:16,450 Vzhledem k tomu, že je to prostě způsob, jakým se třídění funguje. 1501 01:17:16,450 --> 01:17:19,530 >> A tak tato otázka je něco jako koncepční otázka, budeme ptát. 1502 01:17:19,530 --> 01:17:21,430 Tam, kde jako první, abyste vím, jaké pro výběr 1503 01:17:21,430 --> 01:17:23,304 je, právo, aby bylo možné odpovědět na otázku. 1504 01:17:23,304 --> 01:17:26,200 Musíte být schopni porozumět koncepčně, co se děje. 1505 01:17:26,200 --> 01:17:30,760 A pak můžete použít, a přemýšlet, OK pojďme si představit nejhorší možný scénář. 1506 01:17:30,760 --> 01:17:32,230 Všichni jsou v sestupném pořadí. 1507 01:17:32,230 --> 01:17:33,290 Jak by to mít vliv na to? 1508 01:17:33,290 --> 01:17:34,650 >> Co když je to vzestupném pořadí? 1509 01:17:34,650 --> 01:17:35,640 Pokud je to již řazeno? 1510 01:17:35,640 --> 01:17:37,240 Jak by to vliv na dobu chodu? 1511 01:17:37,240 --> 01:17:40,270 A pak Selection sort, zjistíte, že není ve skutečnosti nezáleží. 1512 01:17:40,270 --> 01:17:43,500 Vzhledem k tomu, máte kontrolu všechny hodnoty bez ohledu na to, co se děje. 1513 01:17:43,500 --> 01:17:45,810 >> A tak dobré věci na paměti. 1514 01:17:45,810 --> 01:17:50,290 Proč některé druhy se liší od ostatních a jak nejlépe a nejhorší případ, 1515 01:17:50,290 --> 01:17:52,740 by mohly ovlivnit všechny z nich. 1516 01:17:52,740 --> 01:17:56,700 >> Budu opravdu hit v druzích protože to bude na kvíz. 1517 01:17:56,700 --> 01:17:57,199 To jo. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 DOBŘE. 1520 01:18:01,320 --> 01:18:05,590 K dispozici je šest minut zbývá. 1521 01:18:05,590 --> 01:18:09,880 Dokážu se tři minuty otázek. 1522 01:18:09,880 --> 01:18:12,290 Mohu také poflakovat pro stejně jako 20 minut po oddílu 1523 01:18:12,290 --> 01:18:13,850 Chcete-li klást otázky stejně. 1524 01:18:13,850 --> 01:18:16,330 Má někdo prostě opravdu krátký otázky nebo koncepční otázky 1525 01:18:16,330 --> 01:18:17,360 jsou nejasné, právě teď? 1526 01:18:17,360 --> 01:18:17,832 To jo? 1527 01:18:17,832 --> 01:18:19,720 >> Diváků: Můžeš mluvit trochu něco o bitové operátory? 1528 01:18:19,720 --> 01:18:20,280 >> Profesor: Jo. 1529 01:18:20,280 --> 01:18:22,446 Takže bitové operátory jsou něco, co pravděpodobně 1530 01:18:22,446 --> 01:18:24,170 Možná jen chcete dát na svůj list. 1531 01:18:24,170 --> 01:18:27,540 Tak quickly-- Nechci jít do hloubky příliš mnoho 1532 01:18:27,540 --> 01:18:31,164 protože Harvardu, v jejich přezkoumání sezení, to skryl docela dobře. 1533 01:18:31,164 --> 01:18:33,080 Bitová operátor, je tu pět z nich, že jo? 1534 01:18:33,080 --> 01:18:41,370 >> Tam je to, což je x nebo funkci, tam je ampersand, který je a. 1535 01:18:41,370 --> 01:18:44,050 Pipe, který je, nebo. 1536 01:18:44,050 --> 01:18:46,790 A pak máte dvě různé druhy směn. 1537 01:18:46,790 --> 01:18:50,610 >> Kdybych vám dvě hodnoty, pokud je to Dám vám, jako je, jednoho a jeden. 1538 01:18:50,610 --> 01:18:52,390 Co by to vyhodnotit? 1539 01:18:52,390 --> 01:18:55,490 Pokud dám vám pravda a pravda, pravda? 1540 01:18:55,490 --> 01:18:56,930 Co pravdivé nebo nepravdivé? 1541 01:18:56,930 --> 01:18:57,830 Stále platí, že jo? 1542 01:18:57,830 --> 01:18:59,762 Vzhledem k tomu, že to či. 1543 01:18:59,762 --> 01:19:01,220 Budeme s největší pravděpodobností vám čísla. 1544 01:19:01,220 --> 01:19:03,780 Takže pamatujte, že člověk se rovná pravda, nula se rovná false. 1545 01:19:03,780 --> 01:19:07,407 A mohli bychom dát tyto věci a požádá vás, aby nám řekli, co se stane. 1546 01:19:07,407 --> 01:19:10,240 Harvard pokrývá ji během prvních 10 minut svého studijního zasedání 1547 01:19:10,240 --> 01:19:11,230 opravdu, opravdu dobře. 1548 01:19:11,230 --> 01:19:14,260 Takže vy chcete, aby jisti, že se podíváte zpátky na to. 1549 01:19:14,260 --> 01:19:16,387 >> Publikum: Je pisa5 Bude na kvíz? 1550 01:19:16,387 --> 01:19:16,970 PROFESSOR: Ne. 1551 01:19:16,970 --> 01:19:18,240 Ani se na pisa5 právě teď. 1552 01:19:18,240 --> 01:19:18,810 Je to těžké. 1553 01:19:18,810 --> 01:19:22,830 Jen to ani neobtěžoval při pohledu na pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Nicméně, jak některé rady a návrhy, já 1555 01:19:25,665 --> 01:19:28,320 by naznačovaly, začnete pisa5 jakmile test je u konce. 1556 01:19:28,320 --> 01:19:30,319 To bude nejtěžší týden, ale pak kluci 1557 01:19:30,319 --> 01:19:34,590 bude předána to na kopcích z Rolling Green a štěňata, 1558 01:19:34,590 --> 01:19:36,115 a je to v pořádku. 1559 01:19:36,115 --> 01:19:39,810 >> Tato třída dostane významný snazší po pátém pset. 1560 01:19:39,810 --> 01:19:41,560 Publikum: Úřední hodiny jsou neděle, pondělí? 1561 01:19:41,560 --> 01:19:44,260 Profesor: Jo, takže úřední hodiny bude neděle na pondělí na pset. 1562 01:19:44,260 --> 01:19:47,009 Úřední hodiny dnes večer v podstatě bude jen hodnocen kvízu. 1563 01:19:47,009 --> 01:19:50,350 Chce-li někdo přijít a zeptat se TAS otázka, budeme tam. 1564 01:19:50,350 --> 01:19:53,220 >> Vezmu si možná ještě jednu otázku pokud má někdo otázku? 1565 01:19:53,220 --> 01:19:53,809 To jo? 1566 01:19:53,809 --> 01:19:55,850 Diváků: Když jste definující uzly, [neslyšitelných] 1567 01:19:55,850 --> 01:20:00,700 pokud řeknete uzlu hvězdy a pak další, dělá automaticky počítače 1568 01:20:00,700 --> 01:20:03,610 pochopit, že jste s odkazem na jiný ukazatel? 1569 01:20:03,610 --> 01:20:04,580 >> PROFESSOR: Ne. 1570 01:20:04,580 --> 01:20:06,710 >> Diváků: Musíš znovu sestavit to [neslyšitelných]? 1571 01:20:06,710 --> 01:20:09,270 >> Profesor: Takže v podstatě struct uzlu je, pamatujte, 1572 01:20:09,270 --> 01:20:12,620 je to jako byste vytvořit uzel a pak máte ukazatel s názvem další. 1573 01:20:12,620 --> 01:20:14,630 Vše, co děláte, je s struktura tam. 1574 01:20:14,630 --> 01:20:16,387 Musíte přiřadit že ukazatel někde. 1575 01:20:16,387 --> 01:20:18,470 Takže počítače není vím, co to ještě dělá. 1576 01:20:18,470 --> 01:20:20,250 Musíte skutečně přiřadit, když jste vytváření propojeného seznamu. 1577 01:20:20,250 --> 01:20:22,170 A to je to, co hlavně pset 5 bude dál. 1578 01:20:22,170 --> 01:20:24,106 Takže žádné obavy o nic z toho právě teď. 1579 01:20:24,106 --> 01:20:26,380 >> Diváků: Tak my nemusíme příliš soustředí na seznamu odkazů, jen 1580 01:20:26,380 --> 01:20:27,440 obecné koncepce? 1581 01:20:27,440 --> 01:20:30,980 >> Profesor: Jen do značné míry komíny, fronty, odkaz seznamy, stromy, hashovací tabulky. 1582 01:20:30,980 --> 01:20:33,639 Jen mít možnost poznat, co jsou. 1583 01:20:33,639 --> 01:20:35,680 Nebudeme se zeptat vám nic konkrétního líbí 1584 01:20:35,680 --> 01:20:39,300 proto, že jsme se opravdu udělal pset, že se vztahuje na nic z toho dosud. 1585 01:20:39,300 --> 01:20:45,540 >> Takže v posledních dvou minutách před Já vás osvobodí zabít tento kvíz. 1586 01:20:45,540 --> 01:20:49,370 Docela hodně, stejně jako, přemýšlet o tom, jak daleko jste kluci přišli v této třídě. 1587 01:20:49,370 --> 01:20:52,820 >> Vzpomínám si, když se dva týden této třídy, někteří z vás 1588 01:20:52,820 --> 01:20:55,720 tráví tři hodiny psaní vodu. 1589 01:20:55,720 --> 01:20:57,970 Jak dlouho by trvalo, než jsi kluci psát vodu teď? 1590 01:20:57,970 --> 01:20:59,670 30 sekund, možná? 1591 01:20:59,670 --> 01:21:01,810 Přemýšlejte o tom, jak moc vy jste se naučili. 1592 01:21:01,810 --> 01:21:04,320 CS je opravdu, opravdu těžké téma. 1593 01:21:04,320 --> 01:21:06,190 Není pochyb o tom. 1594 01:21:06,190 --> 01:21:09,160 Je to těžké, to je důvod, proč nikdo studuje. 1595 01:21:09,160 --> 01:21:10,730 Je to prostě těžké. 1596 01:21:10,730 --> 01:21:11,650 A je to naprosto v pořádku. 1597 01:21:11,650 --> 01:21:14,150 >> A jsem opravdu hrdý, že každý dělal to tak daleko. 1598 01:21:14,150 --> 01:21:16,380 Psets není snadné. 1599 01:21:16,380 --> 01:21:17,790 Berou hodně času. 1600 01:21:17,790 --> 01:21:22,580 Vy chlapi, nikdy vás požádat, abyste napsat hra 15 nebo Vigenère na pset. 1601 01:21:22,580 --> 01:21:24,160 Není třeba jen vyšilovat o tom. 1602 01:21:24,160 --> 01:21:28,080 Vše, co testujeme tady je zhodnotit Váš konceptuální znalosti, jakož i 1603 01:21:28,080 --> 01:21:31,524 jako některé z vašich základních dovedností kódování. 1604 01:21:31,524 --> 01:21:33,440 Test je navržen tak, aby být opravdu náročné. 1605 01:21:33,440 --> 01:21:36,180 Stejně jako, že je navržen tak, pro vás dostat 100. 1606 01:21:36,180 --> 01:21:39,880 Je určen také pro vás pravděpodobně nebude moci dokončit za 75 minut. 1607 01:21:39,880 --> 01:21:41,995 A to je úplně v pohodě. 1608 01:21:41,995 --> 01:21:42,870 Jsem student sám. 1609 01:21:42,870 --> 01:21:45,960 Já vím, já nesnáším, když jsem chodit z kvíz vypadat, hovno. 1610 01:21:45,960 --> 01:21:47,044 To bylo opravdu těžké. 1611 01:21:47,044 --> 01:21:49,460 Asi to, co se děje na happen-- a to je naprosto v pořádku, 1612 01:21:49,460 --> 01:21:50,751 Říkám vám kluci právě teď. 1613 01:21:50,751 --> 01:21:53,190 Prostředky na těchto věcech nejsou vysoké vůbec. 1614 01:21:53,190 --> 01:21:55,360 >> A pro ty z vás, kteří Byly stále, stejně jako, 1615 01:21:55,360 --> 01:21:57,870 trojky na Váš problém soupravy, to neznamená, že jste 1616 01:21:57,870 --> 01:21:59,536 bude mít 60 procent v této třídě. 1617 01:21:59,536 --> 01:22:01,440 Pokud se dostanete 60% na kvíz, který nemá 1618 01:22:01,440 --> 01:22:03,330 znamenat, budete dostat D v této třídě. 1619 01:22:03,330 --> 01:22:05,740 Vidíme, hlavně já, pro ty z vás, v mé části, 1620 01:22:05,740 --> 01:22:07,406 Vidím, jak těžké vy všichni pracují. 1621 01:22:07,406 --> 01:22:09,190 A já jsem sledovat to. 1622 01:22:09,190 --> 01:22:11,420 >> Vy bude v pořádku. 1623 01:22:11,420 --> 01:22:14,580 Neexistuje žádná institucionální paměť štěstí na konci semestru. 1624 01:22:14,580 --> 01:22:16,840 Protože všechny děti Harvard říkají jejich přátelé, oh, budete v pořádku. 1625 01:22:16,840 --> 01:22:18,381 Nikdo vám říká, že kluci tady. 1626 01:22:18,381 --> 01:22:20,950 Takže musím vám říct, že kluci tady. 1627 01:22:20,950 --> 01:22:22,280 >> Vy bude v pořádku. 1628 01:22:22,280 --> 01:22:24,080 Jsem tak hrdý na všechny z vás. 1629 01:22:24,080 --> 01:22:25,680 Zkouška bude těžké. 1630 01:22:25,680 --> 01:22:28,140 Studie na to, a pak prostě vyhodit. 1631 01:22:28,140 --> 01:22:31,280 Připravte se učit nové věci. 1632 01:22:31,280 --> 01:22:33,990 A jíst sladkosti. 1633 01:22:33,990 --> 01:22:35,940 Máme spoustu cukroví. 1634 01:22:35,940 --> 01:22:37,760 >> Dopřejte si dobrý noční spánek. 1635 01:22:37,760 --> 01:22:40,420 Nenechte spát, protože to by bylo opravdu špatné. 1636 01:22:40,420 --> 01:22:41,490 CS je hodně logiky. 1637 01:22:41,490 --> 01:22:44,960 Pokud nechcete spát, nemůžete fungovat, a váš mozek nemůže fungovat. 1638 01:22:44,960 --> 01:22:48,780 A já budu tady pro další 20 minut, pokud někdo chce poflakovat. 1639 01:22:48,780 --> 01:22:51,150 Vy se chystáte ji zabít. 1640 01:22:51,150 --> 01:22:53,000 Hodně štěstí. 1641 01:22:53,000 --> 01:22:55,663