Profesor: Tak agenda pro tento týden, není tak moc věcí. Ale doufejme, že velmi, velmi užitečné a relevantní pro vás tento týden. Ale my se chystáte strávit možná 15, 20 minut jen rychle mluví o seznamu odkazů. Seznamy odkaz se chystáte vztahovat na kvíz. Takže možná, že by bylo velmi užitečné se dozvědět něco o tom, co to je. Chystáme se utratit obrovské Většina dnešních sekce bude přes kvíz nulovými problémy praxe. A pak budeme šetřit snad 20, 30 minut na konci pro všechny přetrvávající dotazy někdo má. A pak, poslední pět minut, jdu dát napumpovat řeč pro kvíz. Vy všichni chceme být za to tady. Vzhledem k tomu, že to bude ten správný čas. Dobře, takže některé materiál na seznamu odkazů. Jak oni jsou typicky strukturované je Máte, co se nazývá uzel, že jo? Máte tyto věci zvané uzly, které jsou structs. Já půjdu nad tím, jak vytvořit uzel na další snímek. Ale v podstatě všichni napojeni Seznamy je jsou data, která bylo navlečené dohromady pomocí ukazatelů. A tak výhodu máme použití propojeného seznamu přes, možná, jako pole, je skutečnost, že v matici budete potřebovat jeden souvislý blok paměti vše na jednom místě, jeden po sobě, aby bylo možné, aby toto. Vzhledem k tomu, Google seznamu, můžete mají náhodné malé kousky paměti po celém vašem počítači navlečené dohromady ukazatelů. A tímto způsobem přístup k informacím že přichází jeden po jiné, po druhé aniž by bylo jen obrovský kus paměti v počítači někde. A tak to je jeden z hlavních Důvody, proč používáme seznam odkazů. Za druhé, je to velmi snadné dynamicky změnit velikost seznamu odkazů, protože v poli, při deklarovat pole, máte určitou nastavenou hodnotu. Řekněme, že jsem chtěl vytvořit Pole 10 celých čísel. I vytvořit řadu 10 celá čísla, a to je vše. Je to 10. Já nevím, co dělat po tom. Kdybych chtěl, aby se stalo 11, můžete to udělat. Pokud chci, aby se stalo 9, můžete to udělat. Vzhledem k tomu, v seznamu odkazů, můžete přidat a odstranit a vložit kamkoli budete chtít. Můžete dynamicky měnit velikost strukturu tady, vaše datové struktury. A to nám dává hodně více přidáno flexibility že my ne typicky mají s poli. Každý, kdo nevědí, základní struktura, jak je seznam odkaz nebo proč musíme použít jeden přes pole? Jo, půjdeme přes detailně jak se vlastně vytvořit. Ale to je jen druh obecný smysl právě teď. Bezva. A tak pole jsou navlečené spolu z těchto krásných maličkostí zvané uzly. Všechny uzel je je druh Struct. Pamatujte si, že struct je, pokud jste chtěli vytvořit určitý typ proměnné v C, že není již existují, vy, jako programátor, může skutečně vytvořit, že sami. A tak se tento typ dat Struktura se nazývá uzel, bylo skutečně vytvořen nás, že neexistuje v rámci C, na jeho vlastní. A způsob, jakým vás vytvořit z nich je máte hlavička typedef struct, který říká kompilátoru Jsem o vytvoření Struct. Jdeme pojmenujte ji "uzel". A uvnitř jdeme deklarovat proměnnou v, který se chystá uložit hodnotu. A pak jsme také bude se ukazatel s názvem "next" , který odkazuje na příští uzel v seznamu odkazů. A pak skončíte, že off pouhým opakováním uzel znovu tak, kompilátor ví, OK to je konec mého struct. A tak tímto způsobem, jsme trochu vytváření roztomilé pole Takové věci s hodnoty a s ukazatelem. A vy je můžete propojit všechny společně s těmito ukazateli. Tak, aby mohly být všechny druhy navlečené dohromady v řetězci. Bezva. Můžete slyšet, že o něco lepší? Diváků: Jo. Profesor: Dobře. Takže způsob, který, jak je vy vidět, typický seznam odkaz je strukturován je budete mít hlavu. Máte hodnotu hlavy, která není nasměrován jiným ukazatelem. Ale bude to poukázat na, nebo reference, jiný uzel. Uzel po bude odkazovat uzel po tom, a tak dále a tak dále dokud se nakonec hit konec vašeho seznamu odkazů. A ty prostě nebude mít ukazatel tam. A tak, jako myslím, na řetězu, či dokonce pokud někdo z vás kluci vyrobených, já nevím, jako s ovocnými Loops když jsi byla malá. Ty by string je dohromady a nosit kolem krku. Myslíš, že je to přesně to samé. Máte tyto malé věci, které může řetězec sebe, že bod na jeden po tom, aby jeden po to, a tak dále a tak dále až budete mít řetěz datové struktury že můžete použít však budete chtít. Takže tak, že toto bychom typicky vložit nebo vymazat jakýkoli uzel z odkazu Seznam je velmi odlišná podle toho, kde je tento uzel. Tak, například, protože ukazatele jsou vždy ukazuje na určitou hodnotu, při odstranění nebo vložení uzlu, chcete, aby se ujistil, že ukazatel vše ukazuje na správné věci. Takže pokud byste chtěli potenciálně vložit nový uzel s hodnotou jednoho uvnitř seřazeném odkaz seznam, všichni víme, tady Z obrázku, co se děje na jít mezi hlavou a dva, že jo? Protože jeden sedí právě tam. Ale způsob, jakým budeme dělat, že je tím, že nejprve dereferencing ukazatel od hlavy a posílání, že k jednomu. Ale my přišli do problému zde. Může někdo vidět, co je problém je-li jsme byli na první dereference ukazatel od hlavy k jednomu? Jaký problém můžeme narazit když se snažíme přidat to do přední části naší nabídku? Diváků: [Neslyšitelné] Profesor: Přesně tak. Takže tady máme ukazatel, který byl jakmile směřující od hlavy až dva. Ale pokud jste se zbavili, že ukazatel, co si jen upozornit na jeden, nyní máme tušení kam jít najít dva. Vzhledem k tomu, jak jsem již řekl, že jste dostal obrovský kus paměti v počítači. Všechny tyto uzly by mohly náhodně promíchány v jakémkoli místě v počítači. A vy nevíte, jak jít o zjištění, že. A tak je potřeba mít ukazatele směřující ke všem uzlům na konci. Anebo pokud jste náhodou dereference jednoho bez první přidělování hodnota nejprve, že jste jen tak ztratit všechno poté. Takže to, co budeme udělat, je, byste nejprve Chcete vytvořit ukazatel na uzel, který chcete vložit. Bodě, kde jste chcete vložit ji do, a pak poté vám by mohl směřovat hlavu zpátky do jednoho. Znamená to, že smysl pro všechny tady? Skvělý. Ber to jako, stejně jako řetěz. Pokud přidáte řetězec, je to docela intuitivní jak byste jít o vložení to. OK, tak to je ve skutečnosti mnohem kratší, než jsem si myslel, že to bude, pět minut spiel na odkaz seznamech. Jen tak si kluci mají Základní myšlenkou, co to je. Zde máme program pro Quiz nula. Nedovolte, aby to zastrašit. Vím, že je to hodně informací. Vypadá to velmi děsivé. Je to také hodně, já myslím, CSC druh termínů. Věci jako hexadecimální řetězce, ukazovátka, dynamická alokace paměti jsou velmi děsivé znějící termíny. Ale budeme rozbít dolů, udělat nějaké problémy praxe takže vy všichni jsou připraveny pro tento test. Kolik z vás má Už začala studovat? OK, vy pravděpodobně budete chtít na začátek Začínáme na to, že proto, že test je zítra. Nebo ve čtvrtek pro některé z vás. Jo, takže budeme jít nad některými problémy praxe. Pokud vy všichni chtějí, aby se out list papíru, tužku. Budeme jen strávit Drtivá většina dnešních sekce bude přes některé to tak kluci mají představu o tom, co lze očekávat na kvíz. DOBŘE. Pár logistické Detaily stejně, pro každého který nebyl k tomuto odkazu tam, pokud jdete do cs50.yale.edu, na přední straně Tato stránka je zde odkaz který říká, že "o Quiz Zero." Link se dostanete tam. Pokud jste nečetli, přečtěte si to. Vzhledem k tomu, to vám řekne opravdu důležité informace o kvízu. Chystám se vytáhnout to z že jen proto, fyzicky, pokud vy nevíte, kde jít, budeme mít problémy. A tak, pokud vaše poslední v podmínkách s N, jděte na Právnické fakultě hlediště. A pokud se vaše poslední začíná P od A do Z, jděte na Davies Auditorium. A to se vztahuje pouze na lidé v sekci středu. Užíváte-li kvíz na Čtvrtek, jdete do SSS 114 kde se vaše přednáška je obvykle. Diváků: [Neslyšitelné] Profesor: O do Z, budete jít do Davies hlediště. Chystám se změnit, ne? Oh, jo, prostě nepodaří automaticky. Ach jo, to jste vy Christa. Jo, moje špatná. Jo, O A do Z, budete jít do Davies Auditorim. Chystám se opravit, když jsem nahrát. To jo. A pak také něco důležité na mysl je, že Středa, pokud jste oficiálně zapsal v sekci Středa, musíte vzít kvíz ve středu. A pokud jste se zapsal do čtvrtka, musíte vzít kvíz čtvrtek. A je to během vyučovací doby. Tam, kde si myslím, že je to jako na 1:00 02:15 ve středu a od 02:30 do 03:45 ve čtvrtek. Máte-li za neslučitelné konflikty, Omluvy děkana jsou jediná věc, bohužel, můžeme vzít. Protože jsme měli Drtivá většina žádostí přejít od středy do čtvrtka. Což nemůžeme ctít, pokud máme požadavek na děkana. DOBŘE. Takže než začneme na Pár problémy praxe, Já jsem prostě jít přes Andy užitečné tipy pro dosažení úspěchu. Vy, když budete studovat, opravdu chcete praktikovat psát kód ručně. Poprvé, co jsem kdy vzal CS kvíz, jsem neměl Praxe psaní kódu ručně před a to bylo extrémně šokující, jak to bylo těžké. Kdy vy nedostanou do zvyk psát si vše, jde velmi je přirozeně schopen mít autocompleted držáky a středníky tam. Když napíšete to rukou, někdy je to velmi, velmi snadné zapomenout na středník, nebo zapomenete zavřít držák, nebo zapomenete zavřít dvojtečku, nebo něco takového. Takže při psaní kódu ručně, to je velmi odlišný pocit. Takže vy chlapi, když pracujete přes některé z problémů praxe, bylo by dobré, aby dnes opravdu cvičit. Nebo zítra, myslím, pokud jste brát kvíz na čtvrtek. Za druhé, máme poslední, stejně jako, osmiletý to stojí praxe kvízy online. Letošní kvíz bude pravděpodobně velmi, velmi podobné pro všechny z nich. Všichni jsou velmi podobné. Tak nějak dostat do styl typu otázek že se ptáme, typ funkce, které budeme napsat ji, a tak dále, a tak dále. Tak se v praxi kvízy, zvláště v časové tísni. 75 minut udělat kvíz je není mnoho množství času. Je to velmi, velmi dlouho. A tak vy opravdu chcete aby se ujistil, že vy jste ve zvyku psaní kód ručně rychle. Vzhledem k tomu, vy nechcete, aby se jako první čas podívat kvíz z této délky být na kvíz. Vy opravdu chcete, aby se ujistil, že cvičíte předem. Za čtvrté, chcete přezkoumávat přednáška a sekce skluzavky. Nemusíte pamatovat věci. Ve skutečnosti, každý je povoleno jedním bílý papír poznámek, přední a zadní. Vy můžete psát a psát. Pokud zjistíte sami museli zapamatovat něco, položil ji na tomto listu. Já vám zaručit, nechcete, aby se zasekl v polovině tohoto kvízu bytí jako, ach jo, co je to runtime tohoto druhu proti tomuto druhu. Stačí uvést, že dolů a zkopírujte jej přímo z poznámky listu. Pak můžete vlastně jen použít vaše mozek přemýšlet o problémech, spíše než připomenout fakta. A tak se skutečně využít jakýchkoli specializovaných detailů že si myslíte, že je třeba pamatovat, plop ji na recenze listu. OK, jakékoliv otázky logisticky pokud jde o kvíz Než začneme některé Problémy kvíz praxi? To jo? Diváků: Neměl jsem šanci se podívat na testu [neslyšitelných] ale to bude Aplikace většinou, Nebo je tam také bude, jako, vědomostní otázky? Profesor: Je to hodně. Tak, tak, že jsem by popsal kvíz je-- jsem dal dohromady některé problémy praxe že jsem vytáhl ze všech kvízů. Ale uvidíte, že tam jsou dvě hlavní typy otázek budeme vás požádat, abyste. Jedním z nich je velmi nízká hladina detail věcí. Dáme vám malý kus kódu a říkají, že je chyba tady? Co by se tisknout tady? Co bude tento kód produkovat, a tak dále. Takže podrobnosti velmi nízké úrovni informace. A na druhou stranu, budeme mít velmi Otázky na znalostech založené na vysoké úrovni. Můžete mi vysvětlit, co se Rozdíl mezi binární vyhledávání a lineární vyhledávání? Proč by chceme použijte jednu nad druhou? Možná, že to, co je GDB? Proč chceme použít GDB? Vyšší level, zásadnější pochopení otázky. Tak uvidíte směs dva z nich na kvíz. Cokoliv jiného než my zamířit rovnou do toho? DOBŘE. Diváků: Ještě jeden. Profesor: Oh, ještě jeden. Litovat. Publikum: Jo, je to v pořádku. Takže říkáte, že 75 minut je příliš krátká, jak to je nepravděpodobné, že skončí? Nebo, jako, 75 minut je přesně tolik, kolik času jak bychom potřebovali, kdybychom byli náležitě připravený? Profesor: OK, takže kvíz je náročné. Je to určitě náročné. Ocitnete se málo času. Vy jste asi bude hit, jako je 10, 15 minut jít, a je rád, hovno. Jsem tolik zbývá. A to je úplně v pohodě. Každý, kdo to bude cítit stejně. Stačí být velmi dobře vědom kolik máte času. A tak to je důvod, proč jsem říct, kluci dělat praxe kvízy. Vzhledem k tomu, je to opravdu dává velký smysl toho, co kvíz bude podobně. Takže pokud se ocitnete bytí schopný dokončil praxi kvízů v dobrém výši čas, můžete tempo sám dobře, pak nebudete mít problém ve středu nebo ve čtvrtek. Bezva. Takže pokud všichni wants-- Myslím, většina lidí má listy papíru out už. Chystám se v podstatě jen vám otázky vzorku, ti kluci, podobně, pár minut k tomu je. A půjdeme přes jako třída jaké odpovědi na ně jsou. Tak to je velmi typický brzy otázka my budeme zeptá, jen konverze Čísla mezi různými základy. Binární, jak vy můžete Připomeňme, je základ dva. Desetinné je základ 10, nebo to, co jsme jako lidé typicky interpretovat. Hexadecimální je základna 16, což je nula do devíti, stejně jako A až F. Takže tam čtyři čísla jsem dotazem vám kluci převést zde. Dám vám líbí, tři až čtyři minuty promyslet, jak měli bychom jít o řešení tohoto. Diváků: Jsme povoleno kalkulačky? Profesor: Nebude Potřebujete kalkulačky, jo. Myslím si, že základní sčítání, myslím, že je všichni kluci budou vyzváni, aby dělat. A stejně tak jsem trochu mít smysl kdy se všichni provádí, podívejte se, vlna, já nevím, úsměv, vypadat šťastný, když máte hotovo. To jo. Možná, že ještě pár minut. OK, pojďme přivést ji. Já úmyslně chystá ti kluci méně času než budete pravděpodobně potřebovat dělat některé z těchto problémů, jednoduše proto, že chci, aby se ujistil, že dostaneme přes spoustu problémů. Takže žádné starosti, pokud jste neměli mají šanci dokončit. Zcela v pořádku tak dlouho, jak máte představu, jak jít o tom. Tak pojďme dál a udělat první. Takže nejprve, někdo chce se mi říct, v binární, co dělat každý z těchto čísel představují, pokud jde o jejich hodnoty? To jo? Diváků: Two do síla nulová, dvě ku jedné. Profesor: Přesně tak. Tak. Správně, takže typicky když jsme v základu 10 všechny tyto představují, jsou, stejně jako, 10 k základně nuly, že? To je vaše něčí místo. Všechny vaše místo 10 je je 10 k výkonu jednoho. Místo, které je 10 100 k síle dva. Ať základna jste v děje co do činění s přesně stejnou věc, jen s jinou bázi. Takže binární, všechno, co je, je základ dva. Budeš převést všechny číslic do dvou na cokoliv napájení of číslice. A tak v tomto smyslu, jsme mohou mít jednodušší způsob že budou moci sečíst, nebo sečíst všechna čísla v pořadí převést do základu 10. Takže to někdo chtěl, aby mi říct, co odpověď na první z nich je v základě deset? Publikum: Two, [neslyšitelných] Profesor: Jo. Diváků: 42. Profesor: 42, tam jdete. Takže jak jsme dostali tuto odpověď byla o dělá dva První, který je dva. Plus dva třetí, což je osm. Plus dva až pátý, který je, co zbude. Můžete je shrnout a to je 42. Je někdo zmatený o tom, jak jsme se dostali, že? Takže základní Navíc, jako Řekl jsem, měli byste být v pořádku. Pokud ne, dobře, můžeme praktikovat, že taky. Ale to je v pořádku. Bezva. Má někdo chtěl mi dát odpověď na druhý stejně? 50? Dobrý. Každý, kdo nevědí, jak máme, že buď? Cool, budu mít Odpovědi na další snímek. Takže žádné starosti, pokud vás je třeba ho zkopírovali. OK, takže hexadecimální je trochu složitější. ale já vám ukážu kluci zástupce na to, jak to udělat. Takže hexadecimální, jako vy pamatujte, že vše, co je bude 16. A protože jsme jako lidé dělají ne vlastně mít 16 čísel reprezentovat to, jdeme od nuly do devíti, které naše první 10 hodnot, a pak budeme dělat A až F, které jsou dalších šest hodnoty. A tak nejjednodušší způsob, jak jít od jakýkoli binární číslo na šestnáctkové je rozdělit je do poloviny. A tak jakýkoli binární číslo dáme budete pravděpodobně mít osm číslic. Stačí si jen zlomit je až ve středu. Takže první one-- jedním one, jednoho jedna, jedna, jedna, jedna jednou. Druh si, že to, víte, kreslit lomítko nebo čárka mezi nimi. A můžete jen převést přímo cokoliv to je k prvnímu počet hexadecimální, a, co je zde druhý z šestnáctkové soustavě. Takže pamatujte z běžné notace, co hexadecimální hodnoty začít? Diváků: Zero. Profesor: 0x. Takže víme, že kdykoliv vás žádáme převést libovolný počet na šestnáctkové nebo kdykoliv vidíte jakýkoli číslo, které začíná 0x, víte, že je to hodnota v šestnáctkové soustavě. A pak budete vyzváni k zjistit, co tyto dvě číslice jsou. A tak, jak si to udělat, sčítání hlasů up že polovina a sčítání hlasů se, že polovina. Takže v tomto příkladu, to, co by jedna, jedna, jedna, jedna být? Co hodnota by to mělo být? To by bylo F, že jo? To by bylo 15. Takže by to bylo F. One, jeden, jeden, jeden je zde také F. Takže jeden, jedna, jedna, jedna, jedna, jedna, jedna, člověk v šestnáctkové soustavě, vše, co je, je 0xFF. Protože tato polovina zastoupena F, hodnota 15, a to polovice zastoupena F, hodnota 15. Vzhledem k tomu, pamatujte, že jsme počítání od nuly do devíti. A je jako 10, B je jako 11, F 15. Dává to smysl pro každého jak jsme se dostali z binárního na hexadecimální? Diváků: A tak, jak jsme se dostali 15 z jednoho, jeden, jedna, jedna? Profesor: Jo, to je binární, že jo? Představte si, že je to jen binární číslo. Takže budete muset do dvou zeroth, což je jedna. Publikum: Oh, OK. Takže si prostě celkem to. Profesor: Jo, a pak prostě celkem to ven. To je vše, co je. Diváků: OK. Profesor: OK. Diváků: Takže jdete z binární do desítkové na šestnáctkové? Profesor: To je Nejjednodušší způsob, jak dělat tak, jo. Nebudeš do desítkové soustavy, protože desítkové jen má nula až devět. Jsme tak nějak rozdělení toto nahoru na dvě části. Diváků: [Neslyšitelné] použití desetinné najít co to odpovídá až v šestnáctkové soustavě. Profesor: Myslím, že jsi sčítání hlasů up s využitím základních matematiky. Diváků: Jo. Profesor: Jo, docela hodně. Je to trochu matoucí. Ale vím, že vy může rozdělit cokoliv tato hodnota je na pouhých poloviny. Podívejte se, co je to v binární? Co je to číslo? Je to bude něco od nuly až F. Zde se také bude něco od nuly až F. A pak stačí dát ti dva tady. Diváků: OK. Profesor: Jo. DOBŘE. Takže vy chcete vyzkoušejte další jeden pak? Nula, jedna, nula jedna, jedním, nula, jedna nula. Dám vám kluci jako 30 sekund, protože jste asi nevěděli trik, jak to udělat dříve. OK, někdo chtěl, aby si to jeden výstřel? 0X5A. Profesor: 0X5A. 5a. Dobrý. Tak tohle tady by be-- chcete aby nám řekli, jak se máš, že? Za prvé, jak jste se dostal pět? Publikum: Vzhledem k nule, jedním, nula, jedna je pět. Profesor: Rozumějí proč nula, jedna, nula, jedna je pět? Vy jste dostal jeden tady. Nemáte nic do dvou až první. Ve dvou do druhého, vás mít jeden, který je čtyři. Takže si přidat dva plus ten, máte pět. Všichni dobře? DOBŘE. A potom, co to bylo a proč? Jaké číslo dělá odpovídá? Diváků: 10. Profesor: A co to v základně dva? Diváků: [Neslyšitelné] Profesor: Přesně tak. Takže to druhá hodnota by zde bylo 0X5A. Všichni dobře na tom, jak převést? Je to mnohem jednodušší, než si myslíte, že je. Já jen chci, aby se ujistil, Víte, užitečné tipy a triky na to, jak to udělat. Diváků: Proč stačí rozdělit to ve středu takového? Jen se jako, OK, budu jen péče o nich nejprve [neslyšitelných]? Profesor: Vzhledem k tomu, že je to vlastně způsob hexadecimální hodnoty jsou zastoupeny. 0x, že ve skutečnosti znamená, nic jiného, ​​než říkám že to je šestnáctkové číslo. A to vždy představuje První čtyři číslice. A to vždy představuje poslední čtyři číslice. A tak tyto dvě číslice jen odpovídají různým bitů. Diváků: Takže se budeme always-- Profesor: Jsi vždy dostane osm hodnoty bitů. Diváků: Je to stejně jako věc tady, nebo že věc po všem? Profesor: To je jen věc v oblasti počítačů, jo. Diváků: OK. Skvělý. Profesor: Také, takže v tomto případě jsme převedeny z dvojkové do desítkové, a od binární k hexadecimální. Vy chcete, aby se ujistil, můžete také cvičit jít opačným způsobem. Takže když jsem ti dal 0xFF, mohl byste čerpat, že v binární, že jo? Převést F do binární, což je jedna, jedna, jedna, jedna, převést F na binární, který je jeden, jeden, jedna, jedna. Tak jsme se požádat vás o to jiná cesta kolem. Takže desetinná binární, nebo hexadecimální na binární. Takže chcete, aby se jist, že víte oběma směry. Nejspíš vám položit Kombinace těchto dvou. Jo, máte nějakou otázku? Mohu see-- jste dobří? Diváků: Jo. Profesor: OK. Jsem dobrý vymazat to? Skvělý. Dobře, takže odpovědi jsou zde, pokud někdo je zvědavý později a dostat zmatený. DOBŘE. Diváků: Záleží na tom, jestli dáme Naši dopisy v hlavním městě, nebo malá? Profesor: To dělá, protože v šestnáctkové soustavě, podle konvence, všechny postavy jsou velká písmena. Takže A až F jsou Bude velká písmena. Pokud dáte malými písmeny A, já nevím, pokud bychom nutně označit to špatně. Ale teoreticky, to není technicky jak se máš to mít. Takže všechny by měly být velká písmena. Jo, dobrá otázka. DOBŘE. Druhá otázka. Vezměme si tento krásný programu zde. Zeptám se na otázku, Vrátím se to. Tak, za prvé, co je uvnitř standardu io.h, že je v zájmu programu? Za druhé, co dělá void znamenat v řadě tři? A za třetí, co se vrací na nulu z hlavní, as linie šest, obecně znamenají? Pokud vy chcete napsat těm dolů, protože jsem se vrátit zpět do snímku jen tak můžete vidět kód. To je příklad, jako, možná vyšší úroveň otázka, kde vás žádáme co věci znamenají v programu. Každý, kdo pro mě dobré, aby vrátit se na snímek? OK v pohodě. Takže já dám se vám bude líbit snad tří minut se podívat na tomto jednom opravdu rychle. OK, takže tohle je jako poměrně snadné, koncepčně. Má někdo chtěl, aby mi řekl, co je nejprve zevnitř hash, včetně naším standardem io.h soubor knihovny? Proč potřebujeme tuto knihovnu součástí tohoto programu? To, co tady budeme potřebovat pro? To jo? Diváků: je, že když jste dal, že printf? Profesor: Přesně tak. Takže printf, kdykoliv budete brát vstup od uživatele a něco vytisknout na obrazovku, která je standardní vstup, výstup knihovnu. Myslete na to, že way-- vstup, výstup. Mám výstup? Ano. Takže vím, že jsem vždycky Potřebuji knihovnu Normován i.o. Takže printf je funkce , kterou bychom potřebovali přístup a hashtag zahrnují Standardní i.o knihovna. DOBŘE. Za druhé, co void znamenat? Máme int main (void), co dělá void zde na mysli tu na lince tři? Jo, v zádech. Diváků: [Neslyšitelné] Profesor: Přesně tak. Takže pamatujte, že jsme se naučili počínaje naším pset že můžete skutečně specifikovat příkazový řádek Argumenty, že váš program, který vás Hlavní funkcí, bere jako vy, uživatel, říkají. Máme-li void, což znamená, že vás mohl jen spustit program přímo bez jakýchkoliv argumentů příkazového řádku. Všichni jasné, že? DOBŘE. A nakonec proč se obtěžovat dělat tento návrat nula věc tady? Proč máme dokonce int main? Proč nemůžeme jen tak void main void? To jo? Diváků: Jen tak, že můžeme ujistěte se, že je program úspěšném ukončení, as na rozdíl od pokud byl očíslovány. A my bychom vědět, že je to jiný druh chyby. Profesor: Jo, přesně tak. To je jen velmi konvenční věc, kterou děláme, je to, že právě na konci váš program, jen aby se ujistil, že vaše hlavní funkci běží správně, vždy chceme udělat vrátit nulu. I když můžeme být nutně Není vidět, že tištěný kdekoliv. Vzhledem k tomu, jako programátoři, víte, pokud máte mnoho různých řádků kódu a vy nevíte, kde tito jdou špatně, a pokud se chyba stane, že chcete ujistěte se, že máte tuto chybu. A tak typicky pokud se něco špatně budeme mít návrat jednoho jen aby se ujistil, víme, že to je. Takže pokud uvidíte návrat nula, které typicky znamená, že váš program proveden úspěšně. Dobrý? Bezva. OK, druhý program zde. Vezměme si, že. A jestli vy vidíte float, můžete kluci nejspíš mít dobrou představu o tom, co Chystám se vás zeptat. Takže když tento program provede, jak můžete vidět, Jsem deklarování plovák uvnitř mé hlavní funkci. Já jsem to pojmenování "odpověděl," a já jsem nastavení rovnající se jednomu děleno 10. Jsem vytisknout na jeden desetinné místo, které plovák. A pak jsem se vrátí na nulu. Takže při provádění programu, Vzpomeňte si na chamtivý teď, tento program vytiskne 0.0. Jak všichni víme, doufejme, že my všichni vědět, jeden děleno 10, není 0,00, to je 0,1. Ale vysvětlit, proč si myslí, že tento program že 1 děleno 10 kopií na 0,1 jiné než 0,1? Jsem, že jste dám možná jako 30. sekund jen rychle přemýšlet o tom, že a já půjdu zpět do programu. DOBŘE. Každý, kdo chce dát mu šanci? Ve třech větách nebo méně, neboť obvykle jsme chystá omezit všechny odpovědi na třech větách nebo méně takže se nemusíte jen chrlit náhodné věci, na pevném disku kvíz. Jo, mít šanci. Diváků: Takže si myslím, že je to věc zvaná, stejně jako, [neslyšitelných] Tak by mohlo být, například, že by mohlo být, stejně jako, 0.09, že pokud tisknete první číslice, bylo by to na 0,0? Profesor: Close, ne tak docela. Christabell? Diváků: Jste jeden a dělení 10, a oba jsou celá čísla. A tak způsob, jakým to bude ukládat je jako celé číslo. A tak se nejbližší celé číslo bude 0.0. A tak to je 0,1. Profesor: Jo, to je opravdu dobrý. To je správná odpověď. Tak to je velmi matoucí koncept pro mnoho dětí. A já opravdu chci, aby se ujistil, že toto je posíleno v hlavě každého z nás. Takže to, co říkáme plovoucí bod nepřesnost, kde je důvod, proč mnoho z vašich programů v chamtivý nefungoval zpočátku bylo proto, jste zapomněli na obsazení vaší proměnné. Takže to, co řekl Christabell bylo zcela správné. Plovoucí je neodmyslitelně nepřesná. Protože v počítači, vpravo, my máme konečné množství bitů paměti můžeme použít představovat čísla. Tak, například, to CS50 ID je-- Myslím, že je to 64-bitový počítač. Plovák může být zastoupen pouze o konečné množství těchto bitů. A tak 0,1 s nekonečnou nulami, že je byl 0,1 je, že jo? Ale nemůžeme vlastně ukládat toto číslo v našem počítači. My prostě nemají dostatek paměti, aby tak učinily. A tak nejbližší přiblížení , co je uloženo v paměti je ve skutečnosti něco jako 0,000 něco, něco, něco, něco. Což, jakmile se zkrátit to, zaokrouhlí dolů na 0.0. A tak tento příklad je pouze jedním , který ukazuje spoustu otázek máme vždy, když jsme snaží nesprávně dělat matematiku bez osazení jako jiný celé číslo. Takže prostě mít na pozoru se to stává. Na kvízy, pokud dáme vám blok kódu a je to jako, co vytiskne na konci? A jestli je to nějaký náhodný hodnota, kterou kluci by měli vědět, proč se to děje. To jo? Diváků: Truncate, je zbavit se vše po určitém okamžiku? [NESLYŠITELNÝ] Profesor: Jo, tak vlastně tohle je opravdu špatný příklad, protože 0.100 co vlastně by zkrátit až na 0,1. Ale pokud jste měli spustit to-- vůbec se mi nelíbí pamatovat, protože v loňském roce, které běžel na jiném programu. Běželi ho v něco, co nazývá CS50 Appliance, který se liší od ID. To bylo 32-bitový systém, myslím. A tak tam byly různá čísla. Ale v podstatě, jen vím, že celý koncept zkrácení a jak to jen kusy věci pryč. A tak, pokud si to rounds-- Diváků: Bez zaokrouhlení. Profesor: Přesně tak. To jo. Bezva. Ahoj, v zádech. Právě jsme se nad některými kvíz přezkoumání otázky. Dobře. Takže zvažte jiný program zde. Budu vám kluci pár minut ke čtení přes to. To je něco, co bylo pro velmi Nedávno si myslím, že foukal hodně z vás mysl GUYS je. Ale budeme mluvit přes to opět jen aby se ujistil, pochopit úplně. DOBŘE. DOBŘE. Každý, kdo potřebují více času číst prostřednictvím tohoto kódu? DOBŘE. Tak se mi zdá, že V tomto programu, že jsem vytvoření dvou řetězců pomocí getString. Jeden tzv s a jeden s názvem t. A v případě, že jsou rovny se rovná k sobě, Měla by vypisovat "You zadejte totéž. " Ale elsewise, bylo by to tisknout, "You napsal různé věci, "že jo? Zdá se, že velmi, velmi jednoduché. Ale, ale, jestli jsem vlastně zkuste napsat tento program, zdá se, že i když jsem Vstupní přesně stejné řetězce, stále tiskne, "You napsaný různé věci! " Má někdo chtěl vzít střílel na důvod, proč tento program vždy odpovídá, že vstupy jsou různé, a to i jsou-li tyto slova jsou stejné? Takže pokud bych měl input-- David lásku použít příklad, jako máma, že jo? Malá písmena M-O-M pro S, T se rovná malá písmena M-O-M. Pokud bych běžel to prostřednictvím že kód, proč by to vytisknout "zadaný různé věci?" Potřebuje někdo více čas přemýšlet o tom? OK, myslím, že jsme dobří. To jo? Publikum: OK, tak to je něco o kde je uložen v paměti, že jo? Profesor: Jo. Diváků: Kde to je, je-li to řetězec s je uložen v paměti spot-- Jsem vynalézání tohle-- je nulová. Profesor: Jistě. Diváků: A string t je uložen v paměti na místě, jako je, 167, a poté nula se nerovná 167. Profesor: Přesně tak. OK, tak si pamatujte tento neuvěřitelný zjevení jsme vysvětlili vámi minulý týden, že Řetězce se ve skutečnosti neexistují? Když jsme se vytvořit něco s názvem string jsme, ve skutečnosti, vytvořit něco, co nazývá char hvězda. Což vše, co je, je ukazatel na řetězec nebo na pole znaků. A tak v tomto případě, když jsem bylo na vstup M-O-M cesta že můj počítač by ukládat je v paměti zpětné lomítko nula, ne? Tyto čtyři znaky, znaky, by byly uloženy někde. A pak tyto čtyři znaky, zpětné lomítko nula, jsou uloženy někde jinde, ne? Nemám ponětí, kde se adresy jsou, oni jsou někde v mém počítači. Ale nemyslím si, přesně vím, kde jsou. Když jsem se vytvořit řetězec s, vše, co je skutečně je ukazatel na začátek tohoto řetězce. A když jsem se vytvořit tuto hodnotu t, vše, co je ukazatel na ZDE. A tak když se snažíte rovnítko a kontrolovat aby zjistil, jestli to je rovná rovna t, počítač je opravdu jen návratu do jste adresu tohoto m a adresa tohoto m. A protože jsou dva samostatné kusy dat které jsou uloženy ve dvou různých adresy v počítači, váš počítač se nikdy uznat jako je stejný. Má někdo chtěl dát šanci na to, co jsme muset udělat, když bychom chtěli opravit to a mít správný spuštěný program místo toho? Přemýšlejte o tom, že na pár vteřin. Co je třeba změnit, aby Si tento program fungování tak, jak chceme, aby to fungovat? Jo, chci, aby se bodnout se na to? Diváků: Můžeme zkusit dereference ukazatel a nechte přes pole? Profesor: To je jeden způsob, jak to udělat. Takže, co je zase Vaše jméno? Je mi to líto, mi připomínají. Zee: Zee. Profesor: Jo, tak co Zee navrhl by absolutně fungovat. Právo? Mohli bychom dereference ukazatel a skutečně jít a přístup fyzikální data uvnitř odsud. A my můžeme jen porovnat celou obrazovku. Dá se říci, OK, ukazatel, dej mi, co je uvnitř sem. To by vrátit m. A řekl bych, ukazatel, dej mi, co je uvnitř sem. Vrátit m. Myslíte ty zápas? Ano. Pak jsme dál. Stále prostudování celé dva Řetězce celou cestu až do konce a uvidíme, jestli to jsou stejné, pokud všechny zjištěné hodnoty jsou stejné. A je-li všechny hodnoty jsou stejné, pak víme, že řetězce jsou pravdivé. Určitě, to je, jak bychom to udělat? Má někdo zmaten na něco z toho? Celý koncept how řetězců jsou opravdu jen ukazatele, a jak se ve skutečnosti neexistují? A proč jsme si chyby jako způsob, jak bychom to? Vzhledem k tomu, Já vám zaručit, kluci, ukazatele a přidělení řetězec a paměť se chystáte přijít. To jo? Diváků: [Neslyšitelné] dereference to, stačí dát hvězdu [neslyšitelných] Profesor: Správně. Takže derererence ukazatel prostředky jít na tuto adresu ukazatele a získat data, hodnotu tam. A způsob, jak to udělat, je hvězda ukazatel. Nepleťte si to. Diváků: [Neslyšitelné]. Profesor: Jo. Diváků: Takže můžete jen psát jestliže hvězda s rovná rovni hvězda t. Profesor: No, no. Žádný. Diváků: To není dost dobrý, ne? Profesor: To ne, protože jsi Pouze kontrola první písmeno. Vy jste pravděpodobně bude potřebovat nějaký smyčce, která se projde každý charakter v obou řetězcích. To jo. Takže pokud byste chtěli jen zkontrolovat, v případě, začali se stejnou věc, pokud, hvězda, kterou můžete udělat s se rovná hvězdy t. Pak víte, že aspoň začal se stejným znakem. To jo? Diváků: Takže cesta si, že by bylo jako vložený pro smyčce nebo ukazatel? Profesor: Jo. Docela hodně jen pro smyčce. Pamatujte si, že David je uvedeno ve třídě volná syntaktický cukr? A měl to velice matoucí věc hvězdy t plus jedna, kde by integrovat díky a přesuňte ukazatel? Jednodušší způsob, jak dělat to je jen t i. Takže je to jen pole. Způsob, jakým byste mít pro smyčka, která běžela od nuly až i, kde i je po celé délce řetězec, mohli jste právě napsat, že místo toho dělají Celý ukazatel, referenční věc. Takže tyto věci jsou přesně ekvivalent v počítači. Vy jste asi nebude je třeba vědět, že, ale je to dobré, aby tak nějak mají vzadu své mysli. Jen vím, že počítač uznává různé bloky kódu jako stejnou věc. Vzhledem k tomu, to je jen mnohem více uživatelsky přátelské pro nás představit, jak to je pole. Je to prostě jednodušší. Diváků: Takže použít strlen rád, get-- Profesor: Jo. Diváků: OK. Profesor: Dalo by se používat strlen nebo, pokud neměl strlen můžete jen udělat up dokud nenarazíte zpětné lomítko nula pro obě strany. Buď bude fungovat. To jo. Diváků: Takže je to na dereference každý Jeden znak, když jsme byli vlastně psaní tohoto kódu, my mohl jen dělat t i držáky Líbí se mi s hvězdou před ním? Profesor: Jo, rovná se rovná ů držák i, a pak i dál down up, dokud nenarazíte na konec. Jo, to je to, co byste udělali. A já skutečně příští Příkladem, kdy jsme vlastně napsat strlen takže kluci bude druh ze si hrát si s ním trochu. Takže je jasné, všichni jen na paměti, struny, ukazovátka, kvalita adresy? Některé pojmy vyšší úrovně, které jste bude pro jistotu potřebují znát na kvízu zítra. Dobře. Dobrý. Ano. OK, tak jedna věc, kterou budeme také požádat vy, jako to děláme každý rok na kvíz, je, Předpokládám, že jste zapomněli (což zdá se, že zapomněli udělat ročně) , ve kterém je soubor záhlaví strlen deklaroval. A tak musíme přepsat ji sami. Zde je seznam pokynů že můžeme prezentovat vás kluci kde dostanete předpokládat, že S řetězec nebude null. Můžete předpokládat, že bude s ukončen zpětným lomítkem nula. Takže víte, že je to, co že to bude končit. A, například, že se délka Hello by bylo pět. Takže můžete předpokládat, že ahoj bude pět, H-E-L-L-O. Nemusíte se domnívat, že zadek žádný účet, pro délku. To poslední, co tady, ne bát integer overflow. Pamatuje si někdo, co integer overflow je? Diváků: jde nad rámec Délka [neslyšitelných]. Profesor: Jo, můžete vysvětlit trochu, co to znamená? Publikum: Takže, myslím, že se vrátí zpět k ořezávání příklad dříve. Ale pokud máte jen tolik čísel že přesahují počet bitů že můžete skutečně přiřadit že to bude jen trochu odříznout. Profesor: Jo, tak o typický počítač, kolik bitů máme? Diváků: 32? Profesor: Jo, 32, vpravo. A tak to je to, co, čtyři miliardy, dvou miliard? Čtyři miliardy až čtyři miliardy pozitivní celá čísla, že? Dvě miliardy negativní, dvou miliard pozitivní, závisí na tom, jak chcete, aby to udělat. A tak v podstatě můžeme mít dost celá čísla, která může jít až na dva do 31. minus 1, že jo? Vzhledem k tomu, jednou jsme narazili dva na 32., my ne mít tolik paměti v našem počítači. A tak, teoreticky, jsem by mohla přijít s číslem který je, stejně jako, dva až 46.. Je to číslo obrovský-ass, ale teoreticky mohl. A tak přetečení celé číslo je, pokud se pokusíte vytvořit celé číslo, které jde nad rámec váš počítač je schopen uložit. A tak si kluci pro tento příklad nemá se starat o nás dává vám obří řetězec, který je dvakrát až 32. znaků dlouho. To by bylo opravdu vážně. Dobře, tak jsem jen tak dát vy základní struktura tohoto. Budeš k vytvoření Funkce tzv int strlen kde Úspěšné absolvování, char hvězda, nebo řetězec, ukazatel na řetězec s názvem ů. V pořádku, všichni zkopírujte že dolů. Bezva. Oops-- jiná cesta. Takže tohle je něco jako tvrdší kus problému, takže Dám ti kluci možná pět až Šest minut na druhu náhlý nápad a psát tuto funkci ven. Diváků: Nemáme Účet pro [neslyšitelných], nemusíme používat číslo? Profesor: Ne, to ne. Dám vám kluci nápovědu. Smyčka while může být velmi užitečné zde. To jo. Tady je bonbón. Candy bude také k dispozici pro kvíz, myslím. Takže vy budou všichni slazené zítra. Dokážete Já-- máš to. Diváků: OK. Profesor: Jo. Možná, že 30 více sekund nebo tak. Dobře, pokud jste neudělali, žádné starosti. Budeme procházet společně. DOBŘE. Takže jdu jen rozvržení základní struktura pro tuto funkci zde. Strlen Int. Za prvé, někdo chce říct, mi, co to znamená int? Musíme mít v této funkci. Diváků: strlen [Neslyšitelné]. Profesor: Přesně tak. Takže ať se stane cokoli sem, Musíme se vrátit celé číslo. A jak je uvedeno v spec, chceme return-- Jdi do toho kluci, prostě dál. Je to všechno dobré. Sněz to všechno, takže nemám to vzít zpátky, ve skutečnosti. Int prostě znamená, že jste bude vrací celé číslo. Co je to char hvězda s? Co to znamená? Publikum: Stejně jako to, co se na vstupu dovnitř. Profesor: Přesně tak. A co je téměř to samé jako char hvězda? Publikum: String? Profesor: Přesně tak. Takže všechno, co děláte, je dávat Tento ukazatel na řetězec. DOBŘE. Bezva. Také nezapomeňte, že pokud bychom zapomenout aby vám tyto konzole, nezapomeňte jim psát sami. Vzhledem k tomu, teoreticky, váš kód nesprávné, pokud jste zapomněl ně psát. Jen vždy věnovat pozornost. Stejně jako, maličkosti že si nevšimnete když jste programování na notebooku, protože váš laptop to udělá za vás? Nezapomeňte při píšete ručně. To jo? Diváků: Ale jak chybné? Stejně jako, dostaneme celý problém špatně? Profesor: Ne, ne. Nebojte se. Je to vlastně teoreticky možné pro vás dostat plný počet bodů na otázku, i když váš kód bude nikdy nedojde v reálném životě. Navrhuji to nezkusíte aby se to stalo. Například, kdyby všechno že tady je v pořádku, ale zapomenete tlustého střeva nebo konzolu, váš kód nebude ve skutečnosti spustit. Ale můžeme být milosrdní. To jo? Diváků: Máte na komentovat na našich rukopis? Profesor: Ne, ne, ne obavy o tom. Bez komentáře. Styl by měla být dobrá. Stejně jako, ne smush vše na jednom řádku. Nebudeme rádi s vámi, pokud to uděláte. Má někdo chtěl dej mi první řádek? Tip, je to velmi jednoduché. To jo? Publikum: Int, n se rovná nule. Stačí nastavit čítač. Profesor: Tak my chceme některé druh čítače, že jo? Já jsem prostě jít pojmenovat ji "počítat" kvůli čitelnosti. Co chceme nastavit rovný? Diváků: Zero. Profesor: Jo. Středník. Je to také velmi podivné kreslení středníky. Jen praxe tom, že. Takže chceme nejprve čítač typu int. Protože chceme spočítat, jak Mnoho znaky nebo písmena v tomto řetězci, že jo? Velmi snadné první krok. OK, možná trochu složitější Nyní, jak se budeme dělat tak? Má někdo chtěl dej mi řádek kódu , které mohou být schopni pomoci smyčky přes to, co je to? Jo, statečná duše v zádech? Publikum: OK, takže i když bod hvězdičky se jo, hvězda s, není roven nule, pak něco udělat? Profesor: To je opravdu, opravdu blízko. Opravdu blízko. Takže budu řešit dvě věci, s tím. Za prvé, není to přesně nula. Co je to? Je to null terminátor, což je zpětné lomítko nula. Takže jsou odlišné hlediska toho, jak jsou uloženy. Takže ty jsi opravdu blízko. A za druhé, nechceme jen posunete ukazatel. Chceme vlastně přístup k hodnotám, že jo? A tak, jak to uděláme? Velmi snadné. Nemyslete si, že o ukazatele, si nemyslím, že o vzpomínkách. Vraťte se do týdne dva tohoto kurzu. Diváků: [Neslyšitelné]. Profesor: Jak, pamatuješ? Jaké jsou struny? Jak jsou uloženy v paměti? Diváků: Jsou aktivována. Profesor: Jsou chována. Tak jak máme přistupovat každá postava uvnitř? Diváků: [Neslyšitelné]. Profesor: Přesně tak. Tak while-- co jde dovnitř tady? S of - Publikum: I. Profesor: Oh, já neexistuje, to dělá? Publikum: Oh, počítat? Profesor: Můžeme jen používat počet, ne? Publikum: Promiň, volal jsem to i. Profesor: Jo, je to všechno dobré. Máme proměnnou tady to je již byl prohlášen jako náš pult. Tak proč ne my prostě použít, že pohybovat přes while? Dává to smysl? Takže zatímco s o count-- někdo chce dát mi, co se stane po tady? Diváků: To není rovno. Profesor: Does not stejné, ne? Je to rána rovná, vykřičník rovná, co vy chcete volat to není equal-- Diváků: [Neslyšitelné]. Profesor: Jo. Nezapomeňte jediné citace je pro char, uvozovky jsou na provázku. Při jejich používání buďte opatrní. Takže, když se díváme skrz pole, poslední znak, víme, že nechceme že je backslash nula. Takže zatímco. Jsme není na konci řetězce. Co chceme udělat uvnitř? Diváků: Chceme přidat do počítadlo tak to počítá a navíc? Profesor: Přesně tak. Tak tady budeme dělat počítat, počítat a navíc. Chybí ještě jednu linku. Už tam skoro jsme. Co budeme dělat zapomněl? Diváků: Vrácení nula? Profesor: Chcete vrátit nulu? Publikum: Ne, návrat do strlen. Počkejte. Profesor: který je uložen v? Diváků: hrabě. Počítat. Profesor: Přesně tak. Tak tady budeme vracet počítat. Protože to, co jsme tady děláš ultimately-- máme proti proměnnou, která je chystá zvýšit prostřednictvím naší řetězec. Budeme dál, udržet děje kolem a kolem této smyčky. A když nejsme na konci tohoto řetězec, který je null terminátor. A pokaždé, když projdeme to, my přidáváme do našeho pultu. A jdeme dál spolu v tomto poli. A na konci, jakmile jsme hit null zakončení, Víme, oh, můžeme zlomit, vrácení počtu. Máme strlen. Má každý dostat jak to byla realizována? Zatímco loops-- Vím, že jsme ne provedeno příliš s nimi, ale oni jsou obvykle Velmi, velmi užitečné, pokud Nevím, co jste zastavení podmínka nutně musí být. Otázka? Diváků: Můžeme napsat null na zatímco stavu? Profesor: Zatímco? Jo, takže v tomto problému jsem měl vás kluci předpokládají, že to nebude mít hodnotu null. Vzhledem k tomu, pamatujte, teoreticky, kdybych vám dal ukazatel, který byl příliš velký paměti, to by vám null, že jo? To je to, co provozní systém by dělat. Takže když jsem se ti předpokládat, s by být null, je třeba zkontrolovat. Tak tady nahoře, měli byste dělat, když s rovná se rovná null, vrátí jeden. Něco takového. Diváků: [neslyšitelný] nulu. Profesor: OK, řeknu vy, proč nemůžeme udělat. Vzhledem k tomu, pamatujte na paměti, že jo, tady. Půjdeme sem. Máš obří bloky paměti všechny s mřížkami že ukládat různé hodnoty, ne? A tak všechno řetězec je-- pro Například, jestliže my se na vstup ahoj, bylo by H-E-L-L-O zpětné lomítko nula, ne? A pak kdo ví, stejně jako náhodné věci, které jsou v tu po něm. Nemáme vlastně vědět, co tam je. A tak pokud jste měli udělat místo zpětné lomítko nula, null, nemusí být null. Vzhledem k tomu, že to může znamenat, některé náhodné další věci které nepatří do vaší řetězci. A tak způsob, jakým vždy víme, že řetězec končí se zpětným lomítkem nula. A tak to je vždycky, jak my zkontrolujte, zda konec řetězce. Null, všechno to znamená je, pokud máte neexistující ukazatel, v první řadě, nebo pokud je tak velký, že vaše paměť nemůžete vrátit, pak by to bylo null. Takže buďte velmi opatrní při rozlišování Rozdíl mezi null a zpětné lomítko nula. To jo. Každý, kdo v pořádku s tím? DOBŘE. Takže jsem měl kluci vypsat strlen. Reálně můžeme také požádat napíšete out A až I, pamatujte, že "Atwoa" nebo jak vy to chcete nazývat? Tato funkce v Vigenere a Caesar, že převede ASCII hodnotu na celé číslo? To také má přijít na minulých kvízy funkcí jsme požádáni, abyste mohli napsat. Skoro žádné funkce které jste použili, a je velmi snadné psát sami, Senzory líbí, je nižší, je horní, snížit, aby horní. Funkce, které by převést řetězec z malých písmen na velká písmena. Všichni víme, jak to udělat, ne? Je to docela snadné. Jen chci, aby se ujistil, že jste can-- je to stejný myšlenkový proces. Právě jste iterovat a zapnete věci. Buď počet, nebo když odbočíte věci jinak. Já bych suggest-- I nevím, jestli jedeme 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 z jsou v ASCII, ale řekla bych, že snad napsal, že se v případě, my ano. Jen tak si kluci mají odkaz. Stejně jako velké písmeno A je to, co, 197? A pak malá je jako 50 něco. 65, jo, tam jdete. Takže jen docela hodně znát Rozdíl mezi nimi je 32. To je docela důležité. To jo. Jsem dobrý na to? DOBŘE. Publikum: Mohli bychom teoreticky napsat nějaký z nich se i na našich little-- Profesor: Je teoreticky mohl jen zkopírovat funkci dolů. To je pravda. Diváků: Ne [Neslyšitelné]. Profesor: Vy máte list. Vy kluci mají poznámku list. Můžete psát to. Můžete to napsat. Můžete dělat, co chcete s ním. To jo. Takže teoreticky, pokud Chcete-li, jít na. Diváků: [Neslyšitelné] ale my opravdu nutně mít na paměti je hodnota, můžeme jen použijte na horní nebo na nižší funkce, že jo? Profesor: Jo. Ale pokud se vám dal otázku která říká, že psát na horní, pak budete muset napsat. Takže vy můžete předpokládat, že jste kluci mají přístup ke všem funkcím, ale pokud chcete použít k horní nebo na nižší, co si také musíte udělat? Diváků: [Neslyšitelné] použijte CS50 [neslyšitelných] Profesor: Je to CS50.h? Buďte opatrní tam. Tak, aby horní, snížit, je horní, je nižší, funkce, které zahrnují manipulaci s řetězci jsou vše v rámci buď v ASCII nebo v matematické knihovně nebo v knihovně řetězce. Takže pokud vy používat ty funkce, dávejte pozor, aby pamatovat zahrnout tuto hlavičku. Tak snad také něco vás chtějí zahrnout do listu, jaké jsou záhlaví? Jaké jsou knihovny jste používali? Jaké funkce jsou Uvnitř těchto knihoven? Je to důležité. To jo? Diváků: Mohli bychom prostě Poldové a dělat hashtag prostřednictvím absolutně každý dopis, který jsme kdy viděný jako na všechny otázky? Profesor: Dalo by se. Já nevím, jak šťastní budeme mít do platové třídy že kvíz, kdy každý kus kódu je dvakrát tak dlouho, jak je potřeba, aby bylo. Já nevím, jak bychom mohli vzlétnout bod za styl. Ale teoreticky Váš code by bylo správné. Vy jste mohl Poldové a jen patří všechno. To je taky v pohodě, jo. Diváků: [Neslyšitelné]. Profesor: Jo. Navrhoval bych nedělal, že ačkoli. To jo. Diváků: cool. Profesor: Dobrá otázka. Publikum: Takže, nejhorší scénář. Profesor: Nejhorší případ. Pokud jste úplně zapomněl, jsi to mohl udělat. To jo. Jo, kód je tady. Použil jsem n místo počtu, ale vás Víte, co plave svou loď. Publikum: Počkej, takže jsme nebude muset hashtag zahrnují protože jsme začíná na int? Profesor: Jo, jen jsem předpokládal, že jsme byli požádáni, aby napsali funkci. Pokud byste chtěli být v bezpečí, vám by pravděpodobně to tam dal. Ale já jsem prostě neměl obtěžovat, jo. Já ani nevím, jestli vás potřebovat knihovnu pro toto. Vzhledem k tomu, že jste opravdu tisk out cokoliv nebo něco, že jo? Jo, já ne-li vědět, budete potřebovat knihovnu. DOBŘE. To je také trochu více podél linie manipulace paměti. Tento druh trochu složitější. Přemýšlejte o tom. Máte funkci nazvanou FUNC. Mohl jsem označil to za cokoliv, ale vybrat to pojmenovat FUNC. Mám ji nad mým hlavním. Pamatujte si, že chcete mít funkce poté, co váš hlavní, se chcete ujistit, že zahrnují prototyp vrcholu. Ale v tomto případě to bylo tak krátká že jsem cítil, že jsem mohl jen zahrnout jej na vrcholu hlavní. Nepotřeboval jsem mít prototyp, protože je to už napsáno výše. Takže všechno, co dělám ve svém hlavní funkci vytváří čísla x rovná 10. Volám svou FUNC funkce, a poté vytisknete něco. A pak je to vlastně co func dělá. Vy kluci chtějí myslet přes to. Vzhledem k tomu, že je to trochu složitější. Je to velmi, velmi složité, ve skutečnosti. Promyslete si, co to program by byl výstup. Dám ti kluci dvě minuty. Dobré diskuse? Diváků: Jo. Profesor: Jo. Dobře, takže to je ošidné z nějakého důvodu. A to je důvod, proč jsem chtěl přivést to každého pozornost. Má někdo chtěl, aby mi návrh, pokus? Co by to vytisknout? Zcela v pořádku, pokud se mýlíte. To jo? Diváků: Myslím si, že je to 100 a pak 10 na dvou samostatných linek. Profesor: A 10? Má někdo nějaké jiné odhady? To jo? Diváků: Možná jen proto, že 10 func se nevrací nic? Profesor: OK, tak my mají hádat číslo jedna je to, že odhad číslo dvě je právě chystá vytisknout 10. Má někdo nějaké jiné odhady? DOBŘE. Takže pojďme projít to, že jo? Kdykoliv dostanete kus kódu, to není jen se na to dívat, a to jako, ach, to je tolik věcí! Jsem tak zmatená! Stejně jako, uklidni se. Jen vím, že můžete prostě prohlédnout kód řádek po řádku. To je vše, co je. Je to jako čtení knihy. Takže s jakoukoli funkcí, vždy začít na hlavní. Takže budeme start na int main prázdnotě, i programu se Již spustit dolů, že jo? Začněte na v hlavním prázdnotě. Int x rovná 10. Takže budu vymazat to. Budu čerpat paměti jen tak vás kluci může druh vidět, co se děje. Pamatujte si, tady máme hromadu? Tady nahoře Máme hromadit někde tady. Stack vyroste, je to tak? A v zásobníku, budete mít síťové funkce, stejně jako všechny síťového lokálních proměnných. Tak tady, int x rovná 10. V rámci naší hlavní funkci jsme vytváří proměnnou s názvem x. Jsme nastavení, které se rovná 10. Zde máte nějaké x, a vy jste nastavení, které se rovná 10, vpravo, v hlavní. Všichni dobře? Funkce. Takže teď, v rámci našich hlavních funkce, voláme Funkce jsme napsáno výše. Takže jsme nyní zadat druhou funkci. Chystáme se vytvořit další proměnná int x rovná 100. Co se děje tady v zásobníku? Co se stane, když říkáte Funkce, která vytváří nové proměnné? Co se děje tady v zásobníku? Diváků: [Neslyšitelné] hromádky na vrcholu? Profesor: Jo. Takže to vlastně vytvoří kopii. A to druh piloty na vrcholu. Myslete na stack-- stoh knih, stoh cokoliv. Piloty na vrcholu, nejprve v poslední out, poslední dovnitř, první ven. Takže to bude vytvořit x sem. To bude mít všechny funcs proměnné. Skvělý. Takže teď máme dva rozdílné x, že představují dva velmi odlišné věci. Pak budeme tisknout out celého čísla x. Takže pojďme tisk 100, ne? Protože tady je to 100. Takže to je první věc, že to bude tisknout. Protože tato funkce vrací nic, Nyní tato funkce, že linka v hlavní je hotovo. Všichni dobře se mnou tak daleko? Takže teď jsme přes dvě ze tři řádky z našich hlavních funkcí. Teď jdeme do třetí řady. Jedeme do printf. Co je to x v hlavní? Co to představuje? Jaká je hodnota x teď? Diváků: 100. Profesor: Je to 100? Diváků: Still 10. Profesor: Still 10. To jo. Vzhledem k tomu, pamatujte, že v rámci náš func, x se rovná 100. Ale pokud se vrátíme zpět na naši hlavní funkci, že proměnná je uložena v jiné místo na našich zásobníku. Takže teď musíme jít zpět do hlavní zásobník, síťový lokální proměnné. A tady x je rovno 10. A tak jsme se chystáte vytisknout 10. A tak měla naprostou pravdu. Budeme mít výstup 100 a 10. To jo? Diváků: Když malloc, je to haldy nebo zásobníku, který je [neslyšitelný]? Profesor: Když malloc, Užíváte paměti z haldy a jejich přidělování. Takže nemáte bordel s nic z toho. Takže myslím, že větší jídlo s sebou Zde je něco, co nazývá prostor. Pro ty z vás, kteří byli na relace v noci recenzi, jsme se bavili o tom krátce. Rozsah určuje, jak a pokud existují vaše proměnné. Nebo v jaké rámy Do vašeho proměnné existují. Docela hodně pravidlo obecně je Vaše variables-- pokud jejich vytvoření uvnitř kudrnaté braces-- existují pouze uvnitř těchto složených závorek. Tak například v naší funkci func, vidíš ty dvě vzpěry. Pokud vytváříte něco uvnitř ní, šance je vše, co děláte, je vytvoření stack a ukládání, které tam. Totéž v hlavní. To je prostě uložen uvnitř hlavní. Také chcete být velmi, velmi opatrní. Protože oblast působnosti také půjčuje samo o sobě na různých příkladech. Tak například pro smyčky, pro int i = 0. I je nižší než, nevím, 10. I s a. A máte kód uvnitř o tom, že jo? Kde se tato proměnná, i, vlastně jen existují? Pouze uvnitř si na smyčky. Tak jsem se vsadit, mnoho z vás má Pravděpodobně se setkal tuto chybu, když děláte programy ve vašich psets. Kolik z vás se pokusili použít i mimo cyklus for a měl chybu? Jako neexistuje odkaz celých čísel nebo něco takového? Důvod, proč se to stane Je tomu tak proto, že jsi zde vytvoření něčeho, že pouze existuje ve svůj pro smyčce. A pokud se pokusíte jej použít, i ne skutečně existují mimo něj. Takže v podstatě počítač říká, já Nevím, o čem to mluvíte. Vše, co vím, je, že jsem byl tady, ale teď už ne. Takže pokud bych měl vytvořit pro smyčce uvnitř, ne? A budu vytvářet jiný, jako int j, a mít to udělat cokoliv. A máte kód vnitřek že smyčka, j existuje jen tady. Ale existuje i uvnitř i. A tak j existuje pouze uvnitř to pro smyčce, zatímco já existuje v celé věci. Všichni jasné? Totéž se podmíněné příkazy Chcete-li vytvořit cokoliv. Totéž s cykly while pokud Chcete-li vytvořit cokoliv. To je něco, co se velmi, velmi opatrní. Takže to byl opravdu dobrý problém v pocit, že prokázala dvě věci. Je prokázáno, jako první, rozsah. A prokázal Také alokace paměti. Vzhledem k tomu, vy by měli vědět, že funkce rostou směrem nahoru ve stohu. A že když zavoláte funkce, budete vytvářet v podstatě nový zásobník paměti. To je velmi odlišná od jaké jsou vaše síťové paměť. To jo. Páni! Každý, kdo v pořádku na to? To bylo matoucí. Velmi dobré témata projít, protože jste pravděpodobně dostane trochu ošidné věci, jako že na kvíz. To jo. Bezva. Dám vám 100 na jeden linie a pak 10 na straně druhé. Jo, velmi dobré. OK, teď vy dostanete šanci být TA. Dostanete se odpovědět na všechny krásné e-maily, které jsem se někdy dostanou. Takže, Vážení Andi, vidím, myslím, že je něco špatně s mým kompilátorem. Jsem si jistý, že můj kód je správný, ale Dostávám chybu segmentace pokaždé, když jsem běžet. Co se děje? Prosím, pomozte, hodně lásky. Pokud vy něco podobného že jak byste reagoval? Jsou to vlastně velmi časté otázky, budeme vás požádat, abyste. Je-li, vám dám scénář, dáme nám váš nejlepší odhad na to, co se děje. Každý, kdo má osten na to, co se děje? To jo? Diváků: Možná, že dereferenced null, něco jako ukazatel ukazuje na něco null. Profesor: Jo, to by být Příkladem, kdy že se to stane. Ale co je to větší obrázek o tom, co se tady děje? Diváků: Je to, že se snažíte přístup k paměti, že nejste má mít přístup k? Profesor: Přesně tak. Takže myslíte, že na poruchy seg, off Limity, omezený prostor v paměti že byste neměli dotýkat. Takže docela hodně, když se snažíte k index--, jako je například jste deklaroval array od nuly do devíti. Ale zkuste se dotknout, že 10. hodnota, nemáte přístup k tomuto. Vzhledem k tomu, jste není deklarováno to. A tak váš počítač se děje podívat se na to být jako, uh oh, se snažíte jít mimo hranice indexu. Budu vám chyba segmentace. Myslete jako segmentu, ne? Extra segmentu, je porucha Při pokusu o porušení něco a neměli byste tam být. Porucha Segmentace je kdykoliv zkuste se dotknout věcí že byste neměli dotýkat. Takže běžné příklady jsou index. Samozřejmě, pokud se snažíte dotýkat se, že byl null, že by také fungovat stejně dobře. Pokud je váš ukazatel se snaží dotýkat se věci, které by neměly dotknout, které by rovněž mohly fungovat stejně dobře. Většina obvykle budete vidět v matici. Všichni dobře? Diváků: Takže pokud chcete přístup 10. bod a tam je jen limit devíti nebo tak něco. Profesor: Jo, přesně tak. Docela dost. Bezva. Vážení Andi. Takže máme tyto podivuhodné věci volal druhy. Pokud Sloučit sort-- jako my pila v příkladu, kdy David udělal celý věc class-- proč, pokud je to tak mnohem rychlejší než některý z dalších druhů, proč ještě obtěžovat s vědomím kteroukoli další druhy? Co je tato otázka skutečně po vás? Co je to tři word-- Diváků: Co je trade-off? Profesor: Přesně tak. To je to, co otázka se ptá. Co je trade-off mezi Sloučit druh verše jinými druhy? Publikum: bere na paměti, že jo? Profesor: Líbí se vám vysvětlují, že trochu víc? Nejprve si vysvětlíme Sloučit obchod. Jak Merge sort funguje? Diváků: Tak to funguje tak, že dělení všechno do poloviny a pak ji dát dohromady a přerozdělení to v pořadí, jako pokaždé, když sloučení sady. Profesor: Tak nějak. Takže můžu čerpat na to, ale to by trvat mi pět minut čerpat ji ven. Podívejte se zpět na sekci snímků kde jsme pokryli merge sort. Přesně. Takže způsob, jak sloučit třídění díla to je rozděluje věci na polovinu, a pak to prostě vypadá u První hodnoty všichni a seřadí nejen to. Neustále vytváří nové pole a klade věci stále více a více v pořadí. A tak když to je opravdu, ale opravdu rychle, protože it's-- víte, binární vyhledávání je n log n. Budete vytvářet tolik různá pole, které jste nablízku pomocí obrovské množství paměti. A tak i když je rychlejší, obchod off Zde je, že používáte více paměti. A tak, náznak, druhy a vyhledávání byly pokryty mnohem více v tomto roce než tomu bylo v letech minulých. Vy jste měli vidět, že odráží odpovídajícím způsobem na kvíz. Rozhodně bych trávit čas jít nad tím, co všechno z různých druhů jsou, jak binární vyhledávání, jak lineární hledání práce. Jak možná pseudokód kódu těch ven. Jaké jsou provozní doba? Něco jako běh doby je velmi snadno kopírovat dolů na poznámkový list, právo? Je to opravdu těžké, když jste ve středu testy a vy budete muset přijít na to ven. Zkopírujte ho dolů. Já vám zaručit, že jste bude vědět, že. Jaké jsou kompromisy? V nejhorším případě, nejlepším případě scénáře pro všechny z nich, velmi poznat. To jo? Diváků: Potřebujeme, aby vědět, jak se kód merge sort? Stejně jako, potřebujeme pamatovat rekurzivní? Profesor: Velmi o tom pochybuji, jen protože je to jako docela komplikovaný. Ale to nemusí být neproveditelné, kdybychom požádat, abyste používali pseudocode to. To jo. Jo, OK, ještě jeden. To může přijít v jste poslední kus za chvíli. To jo? Copak všichni slyšet, že? OK, tak do značné míry první všichni, jaký typ programu bude vám dává výkon, jako je tento? Nezapomeňte vás žádal, aby se dozvěděli o Tento nový typ ladění nástroje? Jaké bylo jméno jeho? Valgrind, pravá Byl to program, kde se dalo nazvat, které by mohly Sledujte všechny paměti, kterou jste použití ve vašem programu, a se děje. Takže pokud máte něco, jako: definitivně ztratil, 40 bytů v jednom bloku. Pravděpodobně nejste vzpomněl si na to uvolnit. Vzhledem k tomu, pokud používáte bajtů paměti, to znamená, že jste si přístup, že paměť, ale vy jste nebyli schopni osvobodit. Takže chcete, aby se Ujistěte se, že to také pomocí free-- to je function-- osvobodit všechny paměti znovu přidělen podle malloc. Bezva. Takže tomto snímku, budu mít to. Je to všude v mnoha přednášky, v mnoha sekce snímků. Opravdu chcete, aby se ujistil, prostě víte, tohle všechno. Buď v poznámce listu, nebo pokud jste Chcete jej pamatovat, neváhejte. To je opravdu, opravdu, opravdu důležité. Také velmi dobrý otázka, kterou můžeme ptát. Proč je pohled Selection sort-- na Výběr sort-- všechny runtimes n jsou na druhou. Bez ohledu na to, jak se seznam přijde vy jako, tak proč je výběr sort-- Dám vám kluci 30 Druhá přemýšlet o tom. Vzhledem k tomu, je to trochu matoucí. To s sebou nese určitá koncepční myšlení. Proč by dobu chodu být stejné v jak nejhorší a nejlepší případ scénáře? To jo? Diváků: Vzhledem k tomu, Selection sort každý poloha nebo prostor v tomto malém poli věc nebo cokoliv jiného. Takže i v nejlepším případě, i když je to naprosto řazeny, to by ještě být jako, OK, jeden. V mém prvním místě mám jeden. A projít všechny z nich. OK, jedna je nejmenší. A pak to jde znovu a je jako, OK, dva je nejmenší ze všech věcí. Ale to ještě musí zkontrolovat každý a každý. Profesor: Jo. Tak například, řekněme, Máme seznam, již řazeno, pole jedna až pět. Způsob, jakým výběru druhů je, že prochází, kontroluje tyhle dva. Pak se zkontroluje ti dva. A pak to kontroluje a kontroluje. Udržuje kontrolu všechny z nich, bez ohledu na to, zda je to vlastně seřazeny. Vzhledem k tomu, že je to prostě způsob, jakým se třídění funguje. A tak tato otázka je něco jako koncepční otázka, budeme ptát. Tam, kde jako první, abyste vím, jaké pro výběr je, právo, aby bylo možné odpovědět na otázku. Musíte být schopni porozumět koncepčně, co se děje. A pak můžete použít, a přemýšlet, OK pojďme si představit nejhorší možný scénář. Všichni jsou v sestupném pořadí. Jak by to mít vliv na to? Co když je to vzestupném pořadí? Pokud je to již řazeno? Jak by to vliv na dobu chodu? A pak Selection sort, zjistíte, že není ve skutečnosti nezáleží. Vzhledem k tomu, máte kontrolu všechny hodnoty bez ohledu na to, co se děje. A tak dobré věci na paměti. Proč některé druhy se liší od ostatních a jak nejlépe a nejhorší případ, by mohly ovlivnit všechny z nich. Budu opravdu hit v druzích protože to bude na kvíz. To jo. DOBŘE. K dispozici je šest minut zbývá. Dokážu se tři minuty otázek. Mohu také poflakovat pro stejně jako 20 minut po oddílu Chcete-li klást otázky stejně. Má někdo prostě opravdu krátký otázky nebo koncepční otázky jsou nejasné, právě teď? To jo? Diváků: Můžeš mluvit trochu něco o bitové operátory? Profesor: Jo. Takže bitové operátory jsou něco, co pravděpodobně Možná jen chcete dát na svůj list. Tak quickly-- Nechci jít do hloubky příliš mnoho protože Harvardu, v jejich přezkoumání sezení, to skryl docela dobře. Bitová operátor, je tu pět z nich, že jo? Tam je to, což je x nebo funkci, tam je ampersand, který je a. Pipe, který je, nebo. A pak máte dvě různé druhy směn. Kdybych vám dvě hodnoty, pokud je to Dám vám, jako je, jednoho a jeden. Co by to vyhodnotit? Pokud dám vám pravda a pravda, pravda? Co pravdivé nebo nepravdivé? Stále platí, že jo? Vzhledem k tomu, že to či. Budeme s největší pravděpodobností vám čísla. Takže pamatujte, že člověk se rovná pravda, nula se rovná false. A mohli bychom dát tyto věci a požádá vás, aby nám řekli, co se stane. Harvard pokrývá ji během prvních 10 minut svého studijního zasedání opravdu, opravdu dobře. Takže vy chcete, aby jisti, že se podíváte zpátky na to. Publikum: Je pisa5 Bude na kvíz? PROFESSOR: Ne. Ani se na pisa5 právě teď. Je to těžké. Jen to ani neobtěžoval při pohledu na pisa5. Nicméně, jak některé rady a návrhy, já by naznačovaly, začnete pisa5 jakmile test je u konce. To bude nejtěžší týden, ale pak kluci bude předána to na kopcích z Rolling Green a štěňata, a je to v pořádku. Tato třída dostane významný snazší po pátém pset. Publikum: Úřední hodiny jsou neděle, pondělí? Profesor: Jo, takže úřední hodiny bude neděle na pondělí na pset. Úřední hodiny dnes večer v podstatě bude jen hodnocen kvízu. Chce-li někdo přijít a zeptat se TAS otázka, budeme tam. Vezmu si možná ještě jednu otázku pokud má někdo otázku? To jo? Diváků: Když jste definující uzly, [neslyšitelných] pokud řeknete uzlu hvězdy a pak další, dělá automaticky počítače pochopit, že jste s odkazem na jiný ukazatel? PROFESSOR: Ne. Diváků: Musíš znovu sestavit to [neslyšitelných]? Profesor: Takže v podstatě struct uzlu je, pamatujte, je to jako byste vytvořit uzel a pak máte ukazatel s názvem další. Vše, co děláte, je s struktura tam. Musíte přiřadit že ukazatel někde. Takže počítače není vím, co to ještě dělá. Musíte skutečně přiřadit, když jste vytváření propojeného seznamu. A to je to, co hlavně pset 5 bude dál. Takže žádné obavy o nic z toho právě teď. Diváků: Tak my nemusíme příliš soustředí na seznamu odkazů, jen obecné koncepce? Profesor: Jen do značné míry komíny, fronty, odkaz seznamy, stromy, hashovací tabulky. Jen mít možnost poznat, co jsou. Nebudeme se zeptat vám nic konkrétního líbí proto, že jsme se opravdu udělal pset, že se vztahuje na nic z toho dosud. Takže v posledních dvou minutách před Já vás osvobodí zabít tento kvíz. Docela hodně, stejně jako, přemýšlet o tom, jak daleko jste kluci přišli v této třídě. Vzpomínám si, když se dva týden této třídy, někteří z vás tráví tři hodiny psaní vodu. Jak dlouho by trvalo, než jsi kluci psát vodu teď? 30 sekund, možná? Přemýšlejte o tom, jak moc vy jste se naučili. CS je opravdu, opravdu těžké téma. Není pochyb o tom. Je to těžké, to je důvod, proč nikdo studuje. Je to prostě těžké. A je to naprosto v pořádku. A jsem opravdu hrdý, že každý dělal to tak daleko. Psets není snadné. Berou hodně času. Vy chlapi, nikdy vás požádat, abyste napsat hra 15 nebo Vigenère na pset. Není třeba jen vyšilovat o tom. Vše, co testujeme tady je zhodnotit Váš konceptuální znalosti, jakož i jako některé z vašich základních dovedností kódování. Test je navržen tak, aby být opravdu náročné. Stejně jako, že je navržen tak, pro vás dostat 100. Je určen také pro vás pravděpodobně nebude moci dokončit za 75 minut. A to je úplně v pohodě. Jsem student sám. Já vím, já nesnáším, když jsem chodit z kvíz vypadat, hovno. To bylo opravdu těžké. Asi to, co se děje na happen-- a to je naprosto v pořádku, Říkám vám kluci právě teď. Prostředky na těchto věcech nejsou vysoké vůbec. A pro ty z vás, kteří Byly stále, stejně jako, trojky na Váš problém soupravy, to neznamená, že jste bude mít 60 procent v této třídě. Pokud se dostanete 60% na kvíz, který nemá znamenat, budete dostat D v této třídě. Vidíme, hlavně já, pro ty z vás, v mé části, Vidím, jak těžké vy všichni pracují. A já jsem sledovat to. Vy bude v pořádku. Neexistuje žádná institucionální paměť štěstí na konci semestru. Protože všechny děti Harvard říkají jejich přátelé, oh, budete v pořádku. Nikdo vám říká, že kluci tady. Takže musím vám říct, že kluci tady. Vy bude v pořádku. Jsem tak hrdý na všechny z vás. Zkouška bude těžké. Studie na to, a pak prostě vyhodit. Připravte se učit nové věci. A jíst sladkosti. Máme spoustu cukroví. Dopřejte si dobrý noční spánek. Nenechte spát, protože to by bylo opravdu špatné. CS je hodně logiky. Pokud nechcete spát, nemůžete fungovat, a váš mozek nemůže fungovat. A já budu tady pro další 20 minut, pokud někdo chce poflakovat. Vy se chystáte ji zabít. Hodně štěstí.