[Přehrávání hudby] ALLISON Buchholtz-AU: Ahoj všichni. Vítejte na váš první oficiální CS50 část. Jak můžete, vidět to je Sekce CS50-like, jen vytáhnout náš program na dnešek. Takže, kdo jsem já, protože jsem si jistý, jste všichni zvědaví. Jsem tvůj TF. Nejsem jen náhodný studentka kdo se vydává za svou TF. A já jdu přes druh má sekcí poteče, očekávání máme, zdroje, tak dále a tak dále. Budeme mluvit o pole, ASCII funkce, argumenty příkazového řádku, a to není tady, ale I budou také pomáhat tak nějak promyslet Vaše další pset pro tento týden. Což jsem si jist, že všichni ocení. Takže, první question-- kdo jsem já, kromě svého rozjaření TF zde. Jsem Alison Buchholtz-Au. Toto je můj druhý rok TFing CS50. Také jsem TF CS51 na jaře. Můžete vidět zase tam pokud se rozhodnete vzít. Jsem také PAF, takže každý Freshmen-- a pokud nejste nováček, tohle je můj třetí rok jako radí kolega. Jsem velmi dobře-zběhlý v poradenství vás na život a kurzy v CS a nikoli do CS. Jsem Computer Science koncentrátor. Jsem senior na Adams House, nejlepší dům. A než jsem přešel na CS můj druhák jaro, Vlastně jsem byl biomedicínský inženýr. Chystal jsem se jít na medicínu. Chtěl jsem být trauma chirurg. A to zcela má změnil od té doby jsem se CS50. Vzal jsem si kurz můj druhák Fall. Byla to moje první seznámení s CS vůbec. Byl jsem jedním z 78% z vás, kteří byl nulový zkušenosti přichází, a to zcela změnilo můj život. A teď jsem pracoval na Microsoft, a vaše krásné TF. A CS50 je pravděpodobně jedním z nejlepších zážitků že jsem tu měl na Harvard-- jak brát třídu a jsou schopni pomoci naučit studenty, jako jste vy. Takže jsem opravdu nadšený že jste tu všichni. V případě, že jste přišli pozdě, je cukroví, které byste měli pocit, volně přicházet chytit, nebo poslat někdo chytit za vás. to je v pořádku. Nechci jíst to. Můj pokoj má dost čokolády, tak vám všem by se měli snažit a dokončit to. Vím, že tam jsou 100 kusů, ale jako, 4 hod v pondělí, Myslím, že každý mohl použít nějaký cukr. Takže vy všichni, kteří jsou oficiálně v mém oddíle by se dostali e-mail ode mne s mým telefonním číslem, Napsat address-- neváhejte a přidejte si mě na Gchat, neváhejte přidat mne na Facebooku, i pro vás ostatní, můžete mi e-mail právě zde. K dispozici jsou dvě H. Každý dělá vždycky jako dva L's nebo dvě C je. Dvě H v příjmení. V opačném případě to bude odrazit, a Nebudu se dostat e-mail. Tak neváhejte a napište mi, kontaktujte mě kdykoliv. I nesmí dostat zpět do jste do 24 minut ale slibuji, že se vrátím do 24 hodin. Pokud mi zavolat půl hodiny před Váš pset je způsobeno, můžete být rád, Nemám ponětí, co dělám Allison. Pomozte mi. Budu tě uklidnit, ale na konci dne, pokud jste mě volat půl hodiny před Váš pset je splatná nic písemné, Já budu rád, dobře, možná je čas použít tuto pozdní den. Tak jsem se reagovat na všechny vaše požadavky ve velmi včas. Můj telefon je obvykle připojené k mé ruce. I typicky reagovat mnohem rychleji než 24 hodin, ale mohu jen záruka odpověď 24 hodin. Dobrá. Tak proč jsme tady? Také, pokud máte nějaké dotazy na kdykoliv, dejte mi prosím vědět. I hodně hovořit. Mluvím rychle, ale prosím neváhejte mě přerušit. To mi dává volný prostor stejně. Takže sekce jsou časově pro nás opravdu jen skok v, získat nějaké praktické zkušenosti, aby projít témata, která jsme zmínili ve třídě nebo ve studijních materiálů, které doporučujeme vámi on-line. A my vlastně projít Některé z těchto zdrojů v trochu. Takže několik poznámek o podpoře části. CS50-- jedna z věcí, které dělá je to jeden z mých oblíbených skupin je pocit, že nejste nikdy sami. Máme zaměstnanců více než 100 lidé, kteří jsou zde, aby vám pomohl. Máme úřední hodiny Od pondělí do čtvrtka. Takže je tu mnoho lidí, kteří láska třídu stejně tak jako já a kteří jsou opravdu tady proto, že chtějí být tady. Většina z nás jsou studenti, a to je jako páté třídě navíc na zbytek naší práce. A je to hodně práce, ale děláme to proto, že jsme ho rádi, a opravdu milujeme vás naučí, a pomůže sdílet naše nadšení k tomuto tématu a této třídy. Takže prosím, využít. Přijďte si s námi popovídat. Jsem si sám, když moji studenti nemluv na mě, takže pokud chcete, přijít pověsit ven se mnou. Bude to skvělé. Takže část je samozřejmě jeden z vašich největších věcí. Projdeme věci které jste se naučili v přednášce, udělat nějaké krátké příklady když máme čas, a obecně druh získat představu o věcech, měli byste myslet o Pro nastavení váš problém. Shorts-- kolik lidí ve skutečnosti sledoval video z nuly krátké? Každý, kdo mě pozná? To jsou velmi vysoké. Určitě byste měli sledovat ty. Hodně práce bylo do nich. A jsou to jen chtěl být bite-size kousky pro vás jen dívat tři nebo čtyři minuty a získejte lepší pochopení konceptu. Procházka throughs-- jak mnoho lidí se dívali Walk-průchodky pro ty předchozí? Zamyla je úžasné, ne? Stejně jako jsem si přál, abych byl Zamyla někdy. Takže určitě používat procházka-průchodky. Ona ho rozloží do malý, bite-size kousky. A když máte tyto obrovské specifikace z vašich problémových sad, to bude opravdu důležité aby bylo možné najít jen někde začít pracovat a pomalu se přes to. Dobře, máme také Study50, který je study50.harvard.edu, věřím. Stačí si jen Google studovat, a bude to přijít. To je jeden z Nejlepší zdroje máme. Je powerpoints s poznámkami a praxi problémy pro vás se řešení, které vám může skutečně projít. Takže pokud jste někdy chtěli více praxe, víc než my v oddílech nebo více než váš problém sad, to je opravdu místo, kde jsem povzbudit, abyste šli. Byla postavena loni v létě některé z mých velmi dobrých přátel. A je to úžasné. Ve skutečnosti, mnoho z diapozitivů že budu používat pro oddíl bude pocházet z Study50. Takže hodně TFS používat. A konečně, jak jsem bylo uvedeno, úřední hodiny. Pokud máte potíže s s domácími úkoly, ty jsi potíže s koncepce, přišel úřední hodiny. Přejděte na začátku týdne, pokud můžete. Vystupte na čtyřkolky, protože je to trochu daleko. Nikdo nemá rád chodit venku. Ale to je ve svůj prospěch, protože pak jste bude mít všechny tyto TFS, [Neslyšitelné] vás obklopují. A zvlášť teď, jen tip, čtvrtek jsou velmi chill právě teď Mather, protože vaše psets jsou splatné ve čtvrtek. A vědět, chce použití, ale své pozdní dny. Takže pokud máte potíže s pojmy, existuje spousta TFS, který jsou zde, aby vám pomohl. Tak pojď ven Mather ve čtvrtek. Chcete-li mě vidět, Budu tam. Já jsem obvykle dělat své vlastní úkoly, protože nikdo nechce mou pomoc. Tak přijďte se na nás podívat. Setkáme se v půli cesty. Tak kolik lidí se zúčastnilo přednáška a sledoval, jak on-line? Kolik lidí šel do Super část minulý týden? V pohodě. To je opravdu značný počet. Kolik z vás si přečíst spec pro tento týden, pro pset? Ooh, Jsem hrdý na vás kluci! Více cukroví pro vám všem. Dobře, takže to, co máme na mysli, "Sejdeme na půli cesty", je že část je opravdu jen bude mimořádně užitečné pro vás pokud přijdete v po přečtení vašich Specifikace pro pset. Protože když jsem se projít přehled věcí, které by měly být díval se na, že to nebude dělat jak moc smysl, pokud Nevím, co je tvůj problém nastavit bude se ptát, budete dělat. Pokud nechcete přijít do sekce, samozřejmě Nemůžu být tak užitečné pro vás. Nebudu brát osobně, pokud nechcete přijít do mého části právě teď, ale rozhodně byste měli. Pokud nemůžete, dívat se na ně online. Jsou tam z nějakého důvodu. Mine bude právě tam. Jak si všimnete, že jsme se zaznamenává, takže to bude tady pro vás. Stejně tak, bude lectures-- to je samozřejmě kam dostat start vašeho materiálu zde. Tak jsem se určitě snažit pomohou co můžu, ale mohu setkat se s tebou jen tak daleko. Musíte druh setkat se s námi v půli cesty. Grading-- tak, vy všichni kdo dostal e-mail ode mě, ty jsi můj oficiální část. Budu třídění své psets. A jen chci říct, jedna věc, která měli byste opravdu věnovat pozornost jsou komentáře. Komentáře jsou často užitečnější než skutečné skóre dáme vám. A připomínky jsou ve skutečnosti kde trávím hodně času když jsem třídění. Takže bych ocenil že pokud jste si je. A oni jsou ve skutečnosti, jak budete dozvědět se více o designu a stylu a věci, které jsou trochu méně řezu a suché. Takže opravdu věnovat pozornost na tyto připomínky. Pokud máte dotazy o nich, nebo otázky týkající se vašeho skóre, přijďte se mnou mluvit buď před oddílu, Budu pravděpodobně visí ven v hale, nebo později. Chcete-li naplánovat one-on-one schůzky o tom, jak můžete pomoci zlepšit později problémové soupravy, dejte mi vědět. A pak už jen pár tipů pro vás. Takže jeden z největších věcí, Vždycky jsem zdůraznit, můj sekce když se učíte, jak se kód je psát věci na papír. Pokud máte herní plán kde se váš kód musí jít a to, co je třeba, aby dělat, a to v členění na malé kousky pseudokódu kód, který jste napsali ven, budete mít méně pravděpodobné, aby se chyby syntaxe nebo vytvořit smyčku, která v případě, nemá jiného. Pokud víte, kde jste bude celkově, že jste méně pravděpodobné, aby se tyto malé chyby, které se někdy může trvat vás hodin opravit, protože jste jako, kde jsem chybí tento držák? V takovém případě, prosím, použijte Style50. Zvlášť, když jste jít na úředních hodinách, pokud váš kód je vše přešel k jedné straně, to je samozřejmě politika že můžeme říci, opravit takže to vypadá, že Style50 říká by měl, a pak ti pomůžu. Takže to, aby váš život jednodušší. Bude to náš život jednodušší. Každý, kdo je šťastnější. Každý dostane lepší známky. Není to, co všichni chceme? Takže psát věci, na papír před jste se někdy dotknout počítače. Promluvte si věci na vysoké úrovni, a ujistěte se, že víte, kam jdete. A pokud si nejste jisti, sednout si s někým a pěšky je přes krok za krokem co váš kód má dělat. A devětkrát z 10, budete mít jako, oh, zapomněl jsem, pokud podmínky nebo Zapomněl jsem zde středník nebo Já jsem aktualizaci této proměnné špatně. Tak to jsou mé tipy pro úspěch. Takže od té doby asi polovina z vás vypadají jako jste se zúčastnili Super část, Já jsem prostě jít velmi krátce projít smyčky, které nebyly na našem původním programu. Ale jsou opravdu důležité. A tak budu druhu rychlosti přes ty předtím, než se dostaneme do naší aktuální sekce. Než jsem to udělat, jsou tam jakýkoli questions-- logisticky, osobně, je tu vše ostatní, co chcete vědět o mě, nebo o část nebo třída obecně? Všechny dobré? OK, v pohodě. Lovely. Takže loops-- vy měli všichni rozpoznat tyto kousky od nuly. Takže smyčky jsou v podstatě jen způsob, jak pro nás něco udělat některé počet časů, některé opakované činnost na základě některé podmíněné. Takže máme tři různé typy. Máme pro smyčce, zatímco, a do-while. Takže loops-- musíme jen velmi celkové uspořádání zde cyklu for. A to je skvělé, když víte, jak kolikrát je potřeba něco vykonat. Když mluvíme o další smyčky, budete proč to je důležitý rozdíl. Ale smyčky jsou na něco set. Víte, že můžete buď výpočet počtu nebo víte, kolikrát jste chci to opakuje od začátku. Takže pokud uvidíte tu jsme mají jen obecný druh skeletu rámce pro pro smyčce zde. Takže pro-inicializaci, to je místo, kde vaše proměnné jsou inicializovány. S Mariem, jsem si jistý, že kluci udělali něco jako int i = 0. To je místo, kde že se to stane v modré barvě. Máte Váš zdravotní stav, který je to, co zkontrolovat pokaždé. Pokud je tato podmínka pravdivá, pak zbytek kódu provede. Pak to bude běžet again-- a zeptejte se. A pak tu máme aktualizaci, kde jste aktualizaci proměnné. Takže znovu, s jako Mario, jsem si jistý, vy jste udělal něco jako já a navíc plus. Takže pokaždé, když smyčky běžel jsem dostal aktualizovány tak, že když jsme kontrolovali proti někteří podmínka, že se měnil. Vzhledem k tomu, pokud jste právě mají statickou proměnnou, pokud se provádí poprvé, je to právě chystá vykonat nekonečně. Takže musíte se ujistit, že náležitě aktualizovat své proměnné. A máme také jen vizuální reprezentace tam. Každý dobrý? Pro smyček. Měli byste vidět ty v pset. V pohodě. Tak tady je jen jednoduchý příklad. Vytisknout To je CS50! 10 krát. A tak máme inicializaci, jak vidíme tam, s int i = 0 pro i méně než 10, a já jsem navíc plus. A to bude tisknout, že 10 krát. Takže zatímco loops-- zatímco smyčky jsou skvělé, když ne nutně vědět, kolikrát je to bude aktualizovat na začátku. Jen máte nějaké podmínka, která je kontrolována. A to by mohlo být něco jako while-- pojďme vzít příklad z pset. Pokud Mario, zkuste vstup záporné číslo. Je to tak? Měl jsi znovu vyzve své uživatele. Takže můžete říct, dobře, pokud uživatelských vstupů o něco menší než nula, re-řádku je. A jsem si jistý, že by mohly mít bylo něco, že někteří z vás použity v kódu. Takže je to jednoduchá věc. Máte zatímco některé podmíněné, že je zaškrtnuta pokaždé kód jde spustit. Pokud se vyhodnotí jako pravda, my jej spustit. Jinak ne. A co je opravdu DŮLEŽITÉ něco, co jsem myslím, že David mluvil o v lecture-- jsou rovnátka. Ať už je v rámci šle je to, co je popraven. Jestliže jste zapomněl ty, šle, je to jen bude být linku přímo po tu dobu byl popraven. Takže pokud máte tři věci, které by měly se stane, když to podmínka vyhodnocena jako true, a nemáte ty rovnátka, pouze První věc, kterou se bude dít. Takže velmi vědomi kam dát své rovnátka. Pokud se budete držet s Style50, to vám určitě pomůže. V pohodě. Takže je odpočítávání od 10 do nuly. A jak vidíte tady, my inicializovat některé čítače mimo něj. Jedna věc, která je odlišná je nejsme inicializace naši proměnnou v rámci našeho cyklu while. Je inicializován mimo něj. Jsme prostě jen uvedení stavu, v naší době. Takže v tomto případě, je to zároveň počet je větší než nula. A my vytisknout to, co náš počet je, a pak jsme decrement naši proměnnou. A to je také další věc, kterou si toho nevšiml. Naše aktualizace neproběhne v rámci že první část cyklu while. To se skutečně stane v závorky, tělo textu. Takže se, zatímco loops-- do-while jsou skvělé pro ověření uživatele. Takže někteří z vás mohou mít také používal toto v pset. Můžete říci, ano, jako, požádat uživatele pro vstup. A pak, když, jako, vstup je menší než určité číslo. Takže pro explicitní případě se Mario, ale bude dělat printf, zadejte celé číslo, a pak nějaké celé číslo rovná getint. A pak to bude ve skutečnosti spuštěn jako první tento kód. Budete skutečně nějaké číslo. A pak by se dalo říct, zatímco že celé číslo je menší než nula. Tak co to bude dělat, je, že je to bude provádět alespoň jednou. Bude to zkontrolovat stav. V případě, že je podmínka pravda, bude to znovu spustit. Takže do-while smyčky jsou skvělé pro ověření uživatele, protože víte, že kód se bude provádět alespoň jednou, zatímco se while, nejste zaručeno, že je to bude provádět jednou. Bude to zkontrolovat stav první a pak se rozhodnout pro jeho výkon zatímco do-while bude spustit kód jako první a zkontrolujte, zda je třeba jej opakovat. Znamená to, že rozdíl smysl pro každého? OK. V pohodě. Takže v tomto případě, je to druh z toho, co jsem mluvil o tom, Toto nové pokynů, dokud nebudete dostat kladné číslo. Takže víme, že printf "Zadejte kladné číslo" a vlastně žádají, aby Vstup se stane alespoň jednou. V případě, že uživatel je zlo a udržuje zadání záporného čísla, která ví, kolikrát se to bude provádět. Ale tento kód je zaručena vykonat alespoň jednou. A to je důvod, proč je to skvělé pro validaci vstupu. A budete používat, že docela dost. Dobře, nějaké otázky tak daleko? Jsme všichni dobře? Mluvím příliš rychle? Jsme dobří? OK. Děsivý Takže budeme pokračovat a mluvit o pole. V pohodě. Takže pole jsou v podstatě jen datové struktury které nám umožňují ukládat věci stejného druhu. Takže pokud budete mít celou řadu, je to Buď prostě muset celých čísel nebo je to jen bude mít plováky nebo je to jen bude mít znaky. Nebudeš mít int s char s plovákem s double. Jedna věc. Pole je jen jedna velikost, nebo jsou to jen jeden typ. Takže tady máme celou řadu velikostí tři tři celá čísla v něm. Mohli plave, ale my jsme chtěl říct, že jsou celých čísel. Takže jedna věc je si uvědomit, že pole je velikost soubor při inicializaci jim, a oni nejsou easily-- protože všichni jsou méně pohodlné, měli byste si myslím, že z nich jako není schopen rozšířit velikost. Nicméně velký vydáte vaše pole na začátku, To je velikost, že to bude zůstat, protože pole jsou spojité bloky paměti. A když vy dostanete do trochu více o tom, jak paměť je ve skutečnosti stanoveny na disky a v haldě a zásobníku, to bude dělat trochu větší smysl. Ale vy jste mohl myslet, jako je to jen řada míst na disku. A nemůžete zaručit, že je bude volné místo po něm. Dalo by se inicializovat pole tři a pak možná byste inicializovat další řadu pěti později, a to hned po tom. Takže pokud jste měli jít kolem místo tři v tom prvním poli, byste se psát přes něco jiného. Takže pole are-- pro vás, jen přemýšlet o nich jako o pevné velikosti. Takže vytvoření array-- jdeš muset udělat docela dost. Takže stejným způsobem, že máme obecná struktura pro naše pro smyčky, máme pěkný generál Struktura pro naše pole. Vzhledem k tomu, že jsou z jednoho typu, vše prvky v poli jsou jednoho typu, musíte inicializovat co to je typ. Takže, jak vidíte zde, máme pěkný malý držák datový typ. Takže pokud budeme vytvářet int pole, které bude int. Pokud máme vytvořit char pole, bude to char. Pokud máme vytvořit řetězec pole, bude to řetězec. A pak se název pole, co byste chtěli, aby to bylo. Takže možná je to výsledky testů nebo možná je to studenty nebo možná je to cukroví. Ať už se rozhodnete na jméno pole, to je to, co to bude. A pak se v závorkách, budete mají velikost, kterou chcete. Takže jsme skladování 10 studentů nebo jsme skladování 15 druhů cukroví? Co ne. Takže v našem příkladě, jsme vytvoření pole velikosti tři, které si kluci viz tady vpravo. A když jsme se poprvé inicializuje to vše se nastaví na nulu. Takže je to jen myšlenka jako se nepopsaným listem. Máme všechny tyto prostory, máme všichni tyto krabice můžeme dát naše data do, ale jsou to jen prázdná v současné době. Takže chceme-li skutečně přiřadit tyto hodnoty, děláme tak, aby přímo pod tu ukáže. Takže budete muset bez ohledu na název vašeho Pole je a pak to, co index chcete. Takže index jen odkazuje, jako to, co slot díváme. A důležité všímat je to, že pole jsou nulové indexovány. Chceme-li tedy první místo v paměti naše pole, to bude nula. Chceme-li druhý, bude to jedno. Pokud chceme, aby třetinu, bude to dva. Tak dále a tak dále. Což je také důvod, proč konvenčně, když děláme pro loops-- jsem si jistý, Vy jste byli zvědaví, proč začneme na 0 proti 1? A to proto, že když jsme přechod pomocí polí, mapuje správně. Takže pokud chcete, aby iteraci do pole, je dělá mnohem větší smysl dělat i = 0, protože jsme vědí, že budou odpovídat na první místo v paměti. Všichni dobře s tím? V pohodě. A pak na dno je zde jen Dalším způsobem, jak inicializaci pole. Stále máte svůj datový typ a jméno, ale místo skutečně uvedení velikosti tam, můžete prostě prázdné závorky. A pak se tyto vlnité šle na dně, Stačí si jen vstup dat, která které chcete odděleny čárkami. A to automaticky říkají, OK, vidím, že máte tři věci v těchto závorek. Takže vím, že musím přidělit tři bloky paměti a uložit ty. Takže první verze můžete použít pokud se ptáte uživatele do vstupu hodnoty, takže můžete iterovat pole a ask-- trochu int vstup je. Pokud znáte hodnoty předem, to dělá mnohem větší smysl použít druhý způsob. Ale ve většině případů možná nevíte co tyto hodnoty se bude. V pohodě. Nějaké další otázky? V pořádku. Takže přístup elements-- tak jeden z velkých věcí, o polích je, že jsou náhodné přístup, což znamená, že vás Nemusíte se dívat skrz každém bloku. Pokud víte, že vás chtějí to, co je v bloku dvou, stačí říct, dej mi blokovat dva. A to je důvod, proč tyto indexy jsou tak důležité, a to je to, jak jsme vlastně přístup k nim. Takže v tomto případě, jak jsme viděli dříve, když jsme přiřazení hodnoty, v jednom než jsme měli název a index jsme chtěli přístup, ne? Takže stejným způsobem, to je vše, co udělat, aby skutečně vytáhnout, že data odjezdu. Máme jméno a my má index, který chceme. Takže v tomto případě, pro smyčce tady dole, někdo vědět, co to dělá, Co by to vytisknout? Mmhmm? Přesně tak. Tak jo, je to jen iterace. i je rovno zero-- můžeme chodit prostřednictvím kódu právě rychle. i je rovno nule, i je nižší než tři na tomto místě, že jo? Tak to prověřuje. A my říkáme, OK, tisk f co je v teplotě i. i je tady nulová, když jsme se poprvé opakovat, a tak jsme šli do prvního bodu, a říkáme, OK, 65 je Číslo chceme vytisknout. Takže to bude tisknout 65 a proveďte nový řádek. budu aktualizovat, takže se vytiskne 87. Znovu aktualizuje, a to bude tisknout 30. Všichni v pohodě? Úžasné. Dobrá. Tak tady je druh jednoho věc, kterou jsem říkal, jak můžete sledovat něčí skóre a proč měli byste použít první způsob jeho inicializaci Místo této druhé cesty. A to právě prochází. A všimněte si máme velikostní třídy 30. A my inicializace to Pole ints, že je o velikosti 30. A pak jsme iterace díky a my jsme ptá uživatele na vstup skóre pro každou z nich a pak zařadí do určitého místa v paměti někde v tomto poli. V pohodě? Znamená to, že smysl pro každého? Mmhmm? Takže hashtag definovat velikost třídy 30 směrnice preprocesor, což právě znamená, že gets-- má dělat jako proces překlady. Můžete si ji jako globální proměnnou. Způsob, jakým to děláme, je typically-- umožňuje kód se snadněji změnit. Takže řekněme, že naše velikost třídy Najednou jede 30-15, kdybych není definováno to takhle, já bych musí projít celý můj program a změnit všechny stupně ze dne 30. až 15. Ale s tím jsem si změnit některou místě, a jinde se všechno změní. Pokud jste někdy chtěli udělat hash definovat v případě, kam sledování některých nastavit počet skóre pro třídu nebo používáte čísla které budou použity, stejně jako, po celou dobu velmi dlouhou programu, to je lépe definovat, že na začátku tak, aby v případě, kdy se změní, dostanete změnit jeden bod místo 100. Ano? STUDENT: Mezi tím, že a jen prohlásil [neslyšitelné] přes nahoře. ALLISON Buchholtz-AU: Tak to má co do činění s efficient-- je to trochu mimo oblast působnosti co můžeme pokrýt v této sekci. To má co do činění více s účinností a jak se věci ve skutečnosti práce v procesu překlady. Chcete-li opravdu vědět, o tom, že jsem rád, že tě poslat e-mail s prostředky o tom. HASH definovat tendenci být přednostní pro věci. A jak jste kód ještě, vy druh učit nuance kdy byste měli použít Globální versus hash definovat. Ale v současné době, nemáte opravdu se obávat, že je že krátké odpověď. Všichni dobře s tím? A také, pokud chcete použít hash definovat, je to opravdu důležité si uvědomit, že název by měl být ve všech čepice. Nejsme jen to, CLASS VELIKOST být dramatický. To by mělo být ve skutečnosti ve všech velkých písmenech. V pohodě. Ještě něco? Jsme dobří? Lovely. Vítejte u nás. OK, takže chci, vy se podívat na to a uvidíme, jestli můžete najít chybu. Dám vám nápovědu. Je to někde v tomto pro-smyčky. Mmhmm? STUDENT: Měl by být menší nebo rovno 2. ALLISON: Tak to může být menší než nebo rovno 2, nebo může být nižší než 3. A co je úvaha, že? STUDENT: [neslyšitelné], 0, 1, 2. ALLISON: Přesně tak. Takže v poli velikosti n, jsme pouze indexy n mínus 1. V pohodě. A pak se můžeme dostat opravdu šílené a získat multi-dimenzionální pole. Jedním z problémů, když jsem se to v mém rok požadované vícerozměrná pole, a myslím, že jeden z nich může vyžadovat že v letošním roce, takže se pohodlně. Zabalit hlavu kolem něj teď. To přijde zpátky do oblíbeného místa vy, ale v chladném způsobem. Takže si můžete opravdu si myslím, že multi-dimenzionální pole jako pole polí. Takže můžete trochu myslíte o tomto vrcholu řádku jako první kus paměti. A tohle je Druhý kus paměti, a poslední řádek je Třetí kus paměti. A v to, že tam je pole. Ale samozřejmě, je to jednodušší líčit takhle. Takže si to inicializovat stejným způsobem. To je znak deska ze tří třemi. Takže máte tři řádky a tři sloupce. Jsme to představuje takhle. A vy byste to na přístup Stejným způsobem, sloupek řádek. A tak 1,1, jak vidíme zde. Přiřadíme nula, nula tam. 2,0 a 0,2. Takže byste them-- jen přístup, pokud kdo to kdy udělal lineární algebry, stejným způsobem přistupovat k prvku v Matrice, je to stejný nápad zde. Takže si může týkat zpět do matematiky. Nemusíte se bát příliš moc o tom teď. Je dobré mít expozici, vědět, že to lze udělat. Můžete vytvářet některé blázen number-- můžete vytvářet šílené pole je všechno, co jsem chtěl říct. [Neslyšitelné] To je trochu blázen, ale je to opravdu cool. Úžasné. A pak, takže máme příklad zde. Je vypočítá délku řetězce. Tak kolik lidí ví, že řetězce, které jste pomocí jsou jen pole znaků? OK, jo. Takže si kluci mohou myslet, že nemáte použité pole dříve, ale kdykoliv Používáte getString v CSView knihovna, jste vlastně jen žádat o pole znaků. A my jsme péči o všechny že v back-end pro vás. Ale vy jste používali pole od spuštění. Právě jste to nevěděl ještě. A vždy, když máte pole znaků nebo pole, které je ukládání řetězec, Poslední věc, kterou je vždy to, co je volal null terminátor, který je to tady. A to je na konci Každé slovo, které jste skladování. Chceme-li tedy zjistit, Délka řetězce, můžeme říci, no, víš, Obsah tohoto bloku není shodný s naší null zakončení. To znamená, že existuje určitá znak tam, že jsme vlastně péče o to část slova. Zvýšíte svou délku. A pak, když jsme se vlastně dostat konec slova, bude to ukončit a to vrátím naši délku pro nás. Mmhmm? STUDENT: Má prostor počítat jako null zakončení? ALLISON: Takže prostor je není zakončen nulovým znakem. Takže pokud máte multiple-- prostor je vlastně specifická hodnota ASCII. STUDENT: Co je to zvolání opět v rovnováze? ALLISON: Takže, to je to, co najdete. Pokud jste někdy slyšíte mě úředních hodinách, Vždycky říkám, že něco jako rána rovná. Takže bang není. Takže to není rovná. Takže pokud se snažíte zjistit, jestli je něco nepravdivé, víte vždycky, bang, co proměnná, a pokud je to nepravdivé, vyhodnotí na true a vás můžete dělat super věci s tím. Více o tom později. V pohodě. Všechno, co tam dobře? Úžasné. Takže teď je čas vašich obchůdky se pracovat, protože jsem mluvil. Takže chci vám jen vytvořit pole s celými čísly jeden, dva, tři, a pak nechat vytisknout. Nemusíte dělat, jako, hlavní, bla, bla, bla, cokoliv. Jen chci, abys inicializovat pole a pak vytvořit pro smyčce vytisknout out-- nebo while, záleží na vás. Budu vám pár minut, aby se na tom pracovat. Chystám se odpočívat můj hlas. Pokud máte nějaké dotazy, jsem rád, aby se kolem a mluvit s vámi. Neváhejte a mluvit s každým jiný. Získejte více cukroví. Ve skutečnosti, já jen chodit s cukrovinkami. Jak to? Chceš nějaké? Někdo jiný v této místnosti chcete cukroví? Můžete si také vzít více než jednu, kluci. Vezměte hrst, pokud chcete. Může stejně. Všichni ostatní dobré? OK. Také, budu vytvářet anonymní Google Form, a vy můžete jen předložit zpětná vazba po každém oddíle v případě, že je to něco, co chcete vylepšit, nebo něco, co chcete hotovo. Pokud jsem příliš peppy pro vás, můžete mi tón dolů. Budu vytvářet a odesílat, že to se vám všem později. Dobrá. Takže pojďme začít v malém. Jak bychom inicializovat naší nabídku? Jaký je typ naší nabídku? Int, že jo? OK, tak co chceš volat své pole? Int pole, v pohodě. Dobře, takže máme int int pole rovná, a co máme po tom? STUDENT: [neslyšitelné] hranaté závorky. ALLISON: Šle. A pak uvnitř závorek? Jedna čárka čárka dva tři. V pohodě. Tak to je v pořádku. Takže teď máme pro smyčce. Takže v první části našeho smyčky for, co máme? STUDENT: i = 0? ALLISON: Takže int i = 0, a pak to, co je naše podmínka? Co se to i bude menší než? Méně než tři, a Jak to děláme my aktualizovat i? i a plus, je aktualizace jednou. A pak budeme mít některé printf na celé číslo, a co je to, že poslední část, která je ve skutečnosti bude říkat, co bychom měli tisknout? Bylo by jméno pole, což je int array, že jo? A co je v závorce v poli int? i. [? Tak jsem?] Volal mé příklad, ale je to tu. Není tak špatné. Každý dobrý? V pohodě. Takže jsme hotovi s poli. Gratulujeme. Podařilo iteraci přes všechny the-- ano? STUDENT: [neslyšitelné] ALLISON: Ano. STUDENT: Mám dotaz. Jsi měl odsadit závorky? ALLISON: Takže rovnátka se musí krýt s pro smyčky, a pak všechno uvnitř závorky by měly být odsazeny. STUDENT: OK, pokud by smyčky for odsadit? ALLISON: pro smyčce není musí být odsazen v tomto bodě. Pokud jste byli v hlavní, kdybychom vlastně měl hlavní funkci zde, to by bylo odsadit od hlavní. Ale v tomto případě, je to v pořádku. Ano, otázka. STUDENT: Potřebujete mít držáky po příkladu? ALLISON: Ano, pokud jste inicializace to tak. Takže pamatovat, to je druhý způsob inicializace pole kde máme šle a pak je naše skutečná Údaje oddělené čárkami uvnitř. STUDENT: Myslel jsem, že tam byly držáky pro tento příklad. ALLISON: Ne, oni jsou rovnátka. Jsou rovnátka. Pokud jste ji inicializace že druhý způsob, je to rovnátka. Pokud bychom měli říci, int example-- pokud jsme jen chtěli prázdné pole pro ints, že by bylo int příklad držáky tři. Držáky představují velikost. Když máte rovnátka, je to skutečná data dáváte do ní tímto způsobem. Můžeme se posunout zpět opravdu rychle. Takže v tomto jednom, je to jen náš Počáteční pole, inicializace. A tady jsme jednotlivě přiřazení skvrny na ně, tak to představuje index naší pole, což je důvod, proč máme držáky. Ale tady, pokud si všimnete, máme opustil své konzoly bez velikosti, a my jsme ji inicializovat skutečné údaje all-in-one s rovnátka. Žák: Takže proč máme závorky v tomto příkladu? ALLISON: Takže, v které části? STUDENT: By ne řekněme, příklad int držáky rovná šle [neslyšitelné] držáky např. ALLISON: Oh, omlouvám se. Máš pravdu. Máme závorkách. Promiňte kluci, my bad. Ano, měli byste mít závorky např. Máte naprostou pravdu. STUDENT: [neslyšitelné] nedělá. ALLISON: Ne, musíte mít závorky, protože jinak je to nebude deklarovat pole. STUDENT: [neslyšitelné]. Omlouváme se. ALLISON: Je nám líto, musíte závorky např. Typo. Dobrý úlovek, zlatá hvězda pro vás. Také, pokud se ptáte na otázku, je-li vy by jen mi řekni své jméno, Jsem rád, že. Rád bych, aby bylo možné znát všechny vaše jména. Nebudu na chlad vlastně říkají vám, že si jen chtějí znát vaše jména. Tak prosím, vlastně mi říct své jméno. LEAH: Leah. ALLISON: Leah. OK, takže functions-- vím, že ve zkratce mluvili o tom v průběhu přednášky. Takže funkce jsou trochu jen jako jsou tyto malé bite-size věcí kde se předat vstupy, něco magického se děje, a dostanete výstupy. V pohodě. Takže jste vlastně používá Mnoho z nich už. Get int, dostat řetězec, tiskové f. To jsou všechny funkce kde stačí zavolat, je tu spousta kouzelných věcí se děje v pozadí že nemusíte nutně vidět, a dostanete, co chcete. Nebo alespoň dostanete to, co doufám, že chcete. A v podstatě bod funkcí, a je jedním z hlavních témat CS, je prolomit kód na zvládnutelné kousky. Když začnete psát Tyto opravdu dlouhé programy, nebo Scratch, když jste měli tento velký nápad na hru, musíte být schopni to zlomit dolů, jako, OK, jak mám začít? Jaké jsou malé kousky, které potřebuji? Oh, musím se zeptat uživatel na něco. Teď už potřebujete vytisknout něco. Oh, musím tuto hodnotu vypočítat. A naučit se, jak se rozejít vaše kód a velké problémy, které se mají na těchto malé kousky a vytvoření funkce je ve skutečnosti jednou z velké kameny CS. Takže si můžete myslet, funkce, stejně jako jako černé skříňky, magické černé skříňky, že jste dal věci do a máte nějaký výstup. A zbytek programu nemusí nutně vědět, co se děje v té černé krabici. Vše, co se stará o to, co je jde a co vyjde. V pohodě. Tak proč funguje? Organization-- jak jsem řekl, když jste jednání s velmi velkými bází kódu, jak organizovat váš kód bude mnohem snazší, pokud budete používat funkce. Vzhledem k tomu, budete mít možnost být, stejně jako, v pořádku to, je to, co tato funkce dělá a Zde je to, co jiný člověk dělá. A můžete snadno zjistit, jak se všichni do sebe zapadají. Tak lámání to do všech Tyto zvládnutelné dílčí části. Takže simplification-- jsem si jistý, že kluci vše viděl, jak jsem řekl, s Scratch. Máte tento velkolepý nápad, a jste jako, jak to všechno funguje? Ale pokud se k němu přistupovat kousek po kousku, říkáte, OK, jak mám udělat jednu sprite vznášet se přes celou obrazovku? To je trochu jednodušší. Tak dobré využití funkce umožňuje kód mnohem čitelnější. To usnadňuje ladění, které jako se dostanete do svých pozdějších problémů sad, budete opravdu chtějí být schopni dělat. A jsou také jednodušší navrhnout a realizovat. Můžete kód do malé fungují poměrně rychle a ujistěte se, že funguje proti pokusu vytvořit celý tento dlouhý program a pak se trochu projít a vidět, co je práce a co ne. A pak znovupoužitelnost. Takže pouze funkce potřebují být napsán jednou, a pak můžete použít tolikrát, kolikrát je to možné. Takže je to jako, šetrné k životnímu prostředí v jistém smyslu. Pokud jste měli věci, jako je print f, kde na vás musel vypsat kouzlo, že jde na pozadí vytisknout f každém jednom okamžiku jste chtěli něco vytisknout, můžete by bylo dost nemocný a unavený z toho do konce. Jedna z věcí, které budete učit se v pozdější tříd CS, nebo jeden z nejlepších rad bych dostat znamená, že pokud se kopírování a vkládání kód, měl by pravděpodobně funkci. Máte-li přesně stejné vedení v průběhu celého kódu, pokud zapracovány ven, Váš kód by pravděpodobně být, stejně jako pětkrát kratší a mnohem více snadno čitelné. A místo toho se snaží řešit Všechny tyto různé místa, kde se věci může jít špatně, budete mít jednu funkci že se dostanete do potíží. A slibuji, hodně to Mohlo by se zdát druh abstraktní teď, ale jak se dostanete do později a později problém stanovuje, Bude to mnohem větší smysl a opravdu jezdit domů. Jsou nějaké dotazy o funkcích tak daleko? Proč jsme je používáte? Vím, že jsme se dostali do natvrdlý kostrbatý ještě. Takže definování function-- jen jako pole, potřebujeme nějaký of-- to je jen obecný výstup. Tak tohle je funkce, která je jen tak Cube nějaký vstup. A na následující stránce, vlastně máme všechny tyto úžasné maličkosti zde. Takže si každý může přečíst že ze zvědavosti? Vím, fialové a černé by mohlo být trochu těžké. Ale velké věci víš-- takže první jeden tady je náš návratový typ. Takže to mluví o výstupu této funkce, když v tomto případě, jsme se dát do nějaké číslo, to, co jsme dostat je, že číslo kostičky. Tak to by mělo být int v tomto případě. Možná, že by bylo dvojité nebo něco později, avšak v tomto případě, je to int. S c, potřebujete vždy návratový typ. Bude int. Bude to float. Bude to double. Ale musíte určit, co Tato funkce bude vracet. V opačném případě bude křičet na vy, a to nebude kompilovat. Budeš smutný, a já budu smutný. A to prostě není dobré. OK. A pak máme název funkce. A jak můžete vidět zde, s c že je to velmi konzistentní vzor. Jaký je váš typ, jaký je název, a pak nějaká jiná věc na konci. Takže máme návratový typ, naše funkce název, a pak máme hlavičku s náš seznam parametrů. Takže Seznam parametrů je to, co je tato funkce bude trvat do? Seznam parametrů je prostě synonymum pro, jaké jsou naše vstupy? A stejným způsobem, že jsme definovat naši funkci a dát mu návrat typu, každý z našich vstupů musí mít typ s ním spojené. Takže víme, co naše funkce může skutečně pracovat. Takže v tomto případě máme nějaké int vstup. Takže znovu, bude to typ a to, co voláte ho. A pak, jak vidíte tady máme naše tělo. Takže máme nějaké int výstup, který je jen naše vstupní krát sám doba sama o sobě, která se právě kostky ji. A pak jsme se vrátit, že výstup. Takže jak vidíte zde, máme int, kolikrát se doba int int, tak vrátí int, který byl tam prohlásil. Takže všechno je soudržná. Všechno je šťastný. Vaše funkce spustí. A to je jen obecná věc. Takže vždy návratový typ, název, a váš seznam parametrů. Každá věc ve vašem Seznam parametrů, nebo vstup, musí mít typ s ním spojené. A pak budete mít svůj Tělo zde s tím, co Chcete-li se svým vstupem. A pak samozřejmě vám chcete vrátit něco. Někdy funkce bude jen vrátí. Nemají vlastně návrat něco pro vás k použití. Ale musíte se vrátit nějakým způsobem. A když děláš své vlastní funkce, můžeme dostat do toho trochu hlouběji. Osobně, chcete-li, je jich tam hodně různých věcí, které byste mohli udělat tam. Každý dobrý? Cokoliv na tomto seznamu, že mě chcete projít, že jste nepochopil? Každý, kdo to tam dobré? V pohodě. Úžasné. OK, takže jsme uvedení to všechno spolu. Takže máme nějaký int kostka vstup, tak To je kompletní program zde. Až do teď, jsem druh dával vás kluci úryvky, které by mohly jít v rámci programu. Právě jsme se při pohledu na funkce. Ale tady je to celý program. Tak kolik z vás pamatovat Prototyp slovo z přednášky? V pohodě. Máme jeden. Jak se jmenujete? Steph: Steph. ALLISON: Steph? OK, super. Takže si vzpomenout, co je prototyp? STUDENT: Říkáte, že [neslyšitelné] než je skutečně se s tím vypořádat. ALLISON: Pamatujete si, proč? STUDENT: Ne ALLISON: OK. Zlatá hvězda. Takže ano, prototyp máme předem, protože jinak, náš překladač bude řvát na nás. Bude to říct, OK, Co je to funkce kostka? Stejně jako můžete mít doslova Řekl mi o tom nic. Je to jako když vás chodit do třídy, a někdo je rád, je tu kvíz dnes. A ty jsi jako, vy Nikdy mi o tom řekl. Nejsem spokojený s námi. Prototyp je v podstatě jako Váš sylabus říká, podívejte se. Hlavy vzhůru. Tam to bude kvíz na tento den. Nepoužívejte šílet, když se k ní dostanete. Budeš v pořádku. Takže vše, co dělá, je prototyp říct hlavní, budu používat tuto funkci. Slibuji, že ti ji definovat později. Nepoužívejte šílet na mě. Stačí sestavit a dělat to, co ti řeknu. Takže máme prototyp zde jen proto, aby náš překladač šťastný. A to je v podstatě slib, že jste definovali tuto funkci později a že nejsou jen volání to náhoda, že to neví, co jste bude dělat. Takže v tomto případě, máme tu hlavní. Jsme inicializovat nějakou čísla x. To jsou dva. Chystáme se vytisknout to, co je x. Budeme Cube x. Jak vidíte, máme deklarace funkce tady dole, že my mluvil o minulosti. Je to kostka x, a pak, když jsme pamatujte, že funkci kostky ve skutečnosti vrátí celé číslo k USA, který je uložen v x znovu, takže můžeme tisknout z osmi, nebo krychle x právě teď. Znamená to, že smysl pro každého? Jsme dobří? Dobrá. Úžasné. Dobrá. Kolik z vás pamatovat Tento takže to je v podstatě jen vaše stack a vaše haldy, jen vizualizace jak je paměť uložena zde. Tak jsme se jen chci, aby Ujistěte se, že jste pochopili jak jsou tyto zastoupeny v paměti. Pokud budete mít třídy, jako je CS61 a tak dále, dostanete se naučit mnohem více do hloubky, a je to opravdu cool. Velmi doporučuji. Ale teď, dám vám široký přehled takže se nemusíte vědět natvrdlý odvážný. Takže nahoře jen textový segment, který obsahuje aktuální nul a jedniček, binární za to. A to se používá pro ukládání globální proměnné, pokud máte nějaké. Jak budete postupovat dolů, jsme se mají, jak vidíte zde, inicializovány údaje, neinicializovaný dat a potom haldy. Tak jsme to opravdu mluvit o hromadu právě teď. Dostaneme se k němu později. Pro tuto chvíli jsem jen tak vlna na mé ruce a být rád, nemusíte vědět o tom teď. Ale budeme mluvit trochu Něco o zásobníku. Takže stack je where-- máme přiblížit. To je ve skutečnosti, jak program jsme se jen podíval na se vyskytuje v paměti. Takže to, co se stane, je, každý Tentokrát jsme volání funkce, dostaneme to, co se nazývá zásobník rám, který je jedním z nich. Tak je hlavní parametry. Takže to jsou věci, že jsme se projít do main. Takže jsou tady dole, protože to je první věc, kterou říkáme. A pak se dostáváme k hlavní let místní obyvatelé, a když řekneme, že máme na mysli lokální proměnné které jsou uloženy v hlavní. Takže místní by zde bylo, jako, x se rovná dvěma v tomto případě. Vzhledem k tomu, že je lokalizován na hlavní. Má každý pamatovat si rozsah, jít přes to v přednášce? OK. Takže, jen proměnné, které jsou inicializovány v main. Takže to je důvod, proč máme hlavní [? zpěv. ?] A pak v hlavní, nazýváme kostky. Je to tak? Tak jsme se získat další snímek s parametry Cube. Takže v tomto případě, krychle je parametry jsou nyní x, které jsme absolvovali v, dva, které jsme absolvovali v. A pak místní krychle, která je je-li skutečný cubing stane. A pak se to vrátí. Takže to, co se stane, je, jak kostka vlastně dělá to, co má dělat, to vrátí. Když se vrátí, tento rám listy, a jeho vrátil se na hlavní. A pak v hlavní jsme může skutečně vytisknout. Takže když budete vracet něco, když vaše funkce vrací, Je to jako předávání těchto hodnot do rám pod ním a pak odejde. A co mají vykonat v pořádku. A když se dostanete do větších programů, můžeme chladnější a složitější diagramy. Ale teď je to jen obecný přehled takže máte druh pochopení toho, co se stane, když voláte funkci a jak to vlastně vypadá v paměti. V pohodě? Každý dobrý? Úžasné. Tak to je ten, který je Jen se snažím prohodit věci. Jak zde vidíme, máme naše funkce prototyp aby naše kompilátor nemá křičet na nás. Máme některé hlavní, a my chcete přepnout x a y. Oni neudělali demo ještě v přednášce, mají oni? Mají ne? OK. Takže jsme jít nad touto velmi stručně. Dostanete do tohoto příkladu více do hloubky, myslím, že tento týden. A příští týden můžeme skutečně ponořit se do, proč to nefunguje. Takže máme toto prázdno Funkce here-- swap. Takže void prostě znamená, že nic je vrácena. A máme odkládací INT a int b. A máme nějaké dočasné proměnná, která je. dostane přidělen k B, a pak b dostane přidělen na teplotu tak, že A a B je hodnoty jsou zapnuté. Ale spiklenecké kroucení, to nefunguje. A část z toho vlastně má co do činění s tím, že a b tady, ty, které si prošly v Zde jsou vlastně kopie x a y. Takže když funkce skutečně vrací, přepne kopie, ale ne Skutečná x a y je. Takže jediný způsob, jak přemýšlet o tom, že je that-- předstírat, že se jedná o swap. OK? Takže hlavní, máme x a y inicializován. Ale když jsme vlastně jít nahoru těchto rámů s odkládací prostor, jsme kolem hodnoty nad na to, a oni inicializován. A jen někdy žít tady. Tak a b žít. A oni si vyměnili. Ale když se vrátíme, my ne dělat něco s a a b. a b dovolenou s naší funkcí. A tak X a Y zůstávají stejné. Získáte více o tom, jak napravit a jak vlastně se s tím vypořádat později. Ale je to jen jedna věc na druh, mějte na paměti. Použijte ji pro budoucnost. Nebojte se, pokud to nedávalo všechny smysl na světě. Jsou to kopie je největší věc. Pokud se chystáte vzít něco od toho, jste prošel v kopiích. Takže originály zůstanou stejné. Každý dobrý? V pohodě. Takže argumenty příkazového řádku. Jsem si jistý, na začátku vy všichni měl ty velké, jako, int main prostor. A ty jsi jako, OK pohodě. Já opravdu nestarám. To je právě to, co mám napsat. Ale ve svých nových programů, zejména v této pset, a proč je tam křídou na zemi? S další pset, že jste bude vidět to. Int main, int arg c, string oblouk v, závorky. Takže z toho, co jsme právě se dnes dozvěděl, co si myslíme, že druhý parametr nebo že druhý prvek je tady? Je to pole. Jaký typ pole? String pole, ano. V pohodě. Tak to je, jak budete k vyhlášení těchto nyní. Pamatuje si někdo, co to znamená? Ne? Hmm? STUDENT: arg c. ALLISON: Takže arg c udržuje čítač. Je to int. Je to číslo, ne? Takže to, co si myslíte, že toto číslo je? Jo. Takže arg c je počet řetězců které tvoří příkazového řádku. Takže pokud bychom měli do-- skutečnosti, existují příklady po tomto, tak jsem se nedostal před sebe. Je to celá řada řetězců, které jen aby se vaše příkazového řádku. Takže, když to uděláte, stejně jako, tečka lomítko Mario, to je jeden řetězec, který jej tvoří. V tomto kousku budete skutečně krmení věci do příkazového řádku, jak jsem si jistý, že lidi, kteří Přečetl spec pily. Takže v těchto případech možná budete mají dvě nebo tři argumenty. Je to bude užitečná věc použít. A pak arg V, jak jsme řekli, je jen pole řetězců. Takže to vlastně ukládá to, co zadáte do příkazového řádku. Takže máme tyto. Máte nějaký tečka lomítko kopírovat infile outfile. Takže, pokud arg c je počet řetězců že jsme přechází do příkazu line, co je naším arg c v tomto případě? Tři. Přesně tak. Takže to, co je v arg nula? Takže to, co je první věc, kterou jsme skladovat? Dot lomítko kopii, přesně tak. A pak druhý bude infile. Třetí by outfile. A co arg V tři? Bylo by null, protože to je konec našeho pole, ne? V pohodě. A pak to, co o šestou? Je to tak trochu chyták. Ish. Víme, co to je? To je undefined. Nemáme tušení, co by to mohlo být. Je to, co je správné po pole v paměti, a my nemáme ponětí, co to je. A to je nebezpečné dotýkat těch, věci, protože pro všechny víte, to je nějaká část paměti, která vám by neměl být přístup nebo null. A to může dělat šílené věci. Je to tzv over-indexování svázaného do svého pole. Nechoďte mimo hranice svého pole, nebo špatné věci se může stát. Můžete se vrátit a podobně, zákony fyziky byly zničeny nebo tak něco. V pohodě. Znamená to, že smysl pro každého? Není to tak zlé. Takže teď, každý je oblíbená část, pset recenzi. Yay! OK. Takže pro ty z vás, kteří Nečetl pset spec, děláte nějaké opravdu cool věci s kryptografii. Budeš vytvořit Caesara Cipher a Vigenere Cipher. Určitě byste měli číst spec vidět, jak ty práce. A pokud máte nějaké potíže, o co by mělo být ve skutečnosti dělá, přijďte se mnou mluvit, napište mi nebo textu mě. Já jsem se kolem sebe. Takže tam jsou tři hlavní věci, které zde my chceš mluvit about-- jen tak o rozšíření přednášky. Věci, které možná nevíte o, užitečné tipy a nástroje. Takže budeme dělat rychlý přehled o ASCII, proto, že to bude super důležité pro Vigenère šifra. Budeme konverze příkazového řádku vstupy, které bude velmi užitečné pro Caesara. A pak modulo. V pohodě. Takže ASCII mapuje znaky čísel. To je velký graf. Měli byste mít tento záložkou někde. Budete chtít ji váš první polovině období. Jsem si jistý, že každý má to graf na jejich střednědobé listu. Tak se to naučit. Milovat. Mějte ji po ruce. Bude to užitečné. A všechno je to je kódování která mapuje písmena, čísla, a další znaky do Čísla na našem počítači. Vzhledem k tomu, samozřejmě, v konec, vše ukládáme dostane přestavěná až do nuly a ty, takže musíme nějakým způsobem reprezentovat textu a znaky, které jsme všichni zvyklí vídat jako jakési číslo. Takže, jak vidíme zde, máme velká písmena, což je tady. Je to 65. A malé je 97. Takže můžete přijít out-- jak jsem již řekl, pokud byste měli řadu násobku řetězce, co každý z nich zakončen nulovým znakem. Jednalo by se o prostor. Prostor má vlastní special-- Zapomněl jsem, kde je to tady. Ah. 32 místo. Takže všechno mapuje to. Takže máme ASCII matematiky. Pro tip-- v Vigenere je, můžete být v pokušení převést čísla na celá čísla, ale ve skutečnosti je to lepší praxe aby bylo možné používat znaky, jako je tato když jste je ve skutečnosti manipulace. Takže pokud budete chtít použít čísla, můžete. Ale lepší způsob, nebo způsob, jak máme tendenci se vám líbí kluci, jak to udělat, Je to způsob, kde jste vlastně odečtením znaky. Takže chci vám kluci na druh přijít na to ven. Proč se snažit každý druhý? Tak to je první, na třetí a pátý. Protože chci, aby se ujistil, že mluvíme o všem, co musíme mluvit. Jen jsem chtěl říct, jeden z důležité věci to-- oh počkat, vy jste neviděl tenhle. OK tak se první tři. Pojďme to udělat. Protože máme mluvit o modulo. Já vím. Matematika je těžké. Můžete použít kalkulačku. To je v pořádku. Nebo vytáhnout tabulku ASCII, protože budete pravděpodobně chtít, že. V pohodě. Tak jsem se rychle projít vy přes to. Takže lidé tabulky ASCII vytáhl? Jaká je naše číselná číslo pro malé písmo A? STUDENT: Sedm. ALLISON: Tak malé je 97 a velká písmena je 65. Takže 97 mínus 65? Diváků: 32? ALLISON: 62, jo. Takže v tomto případě, co by to vytisknout? To první? Máme-li procentní d, co by to ukazovat? STUDENT: číslo. ALLISON: Jsme tisku se skutečné číslo. Takže jsme vlastně děje vytisknout 32 zde. A kdyby to byla procenta c, 32 by nám prostor. Tak pochopení, že znaky mohou být vytištěny jak hodnotách a jako skutečné znaky je opravdu důležité, a placení pozornost skutečné typy že tady děláme. V pohodě. Takže pro každý druhý z nich, co budeme tisknout? STUDENT: znak. ALLISON: znak. V pohodě. Takže pokud vy chcete vědět, ty mohou pracovat ty na vlastní pěst. Pokud máte problémy, napište mi. Ale druhý bude vytisknout malá písmena b. Třetí z nich bude tisknout velká B. Čtvrtá bude tisknout z velké písmeno C, a Poslední z nich bude malá písmena A. A poslední one-- jsme vlastně děje se dostat do toho, co ten bláznivý procent znamení dokonce znamená pár snímků. Tak zkuste ty na vlastní pěst. Pokud máte potíže, přijďte se mnou mluvit. Pokud jste obvykle ve Adams D hale, budete pravděpodobně zjistíte, kolem mě. Takže, atoi. Jak mnozí z vás viděli toto funkce nebo slyšeli o tom vůbec? Každý, kdo? V pohodě. Takže, co to vlastně znamená pro ASCII na celé číslo. Takže to, co můžete udělat, je, s Caesar, pro ty, kteří čtou spec, budete dělat tečka lomítko Caesar poté, co napsat program, a pak budete Vstup nějaké číslo, které jste chcete zakódovat tajnou zprávu s. Ale pokud si vzpomeneme, všechny naše Vstupy jsou uloženy jako řetězce. Je to tak? Máme arg obj pole to je vše, typ string. Takže pokud jste se jen snažím vytáhnout, že jeden, bylo by si myslím, že jedna nebo cokoliv číslo kterou jste použili je vlastně charakter. Takže budete mít některé šílené výsledky. Takže pokud se skutečně chtějí otočit to na celé číslo které můžete použít k manipulaci tvé slovo, nebo vaše zpráva, budete chtít použít atoi. atoi jen převádí Váš string na int. Takže pokud máme řetězec 12, když zavoláme atoi na 12, nebo co to je vstup, to bude skutečně vrátí vám číslo. Není znak nebo řetězec 12. Což, když začnete dodat, že na čísla, bude velmi lišit, proto, že řetězec je 12 nějaké šílené číslo ASCII, ale číslo 12 je ve skutečnosti 12, což je to, co chcete. Takže chcete, aby se ujistil, používat atoi. Budeš chtít tento v Caesar, protože vás Potřebujete int dodané uživatel v příkazovém řádku. Ale když dali jej do příkazu linka, je to uloženo jako řetězec začít. Dává to smysl? Nemusíte nutně Potřebuji to pro Vigenère. S Vigenère, jak jsem řekl, před, měli byste vyzkoušet a používat ASCII matematika, která vypadá spíš jako to, kde jste vlastně pomocí znaků, které jsme, které jste dostali. V pohodě. Každý, kdo tam dobře? Úžasné. Tak modulo. Tak co, pokud jste daný toto obrovské množství císaři? Máte myšlenku, že pokud jste na Z a ty jsi přiděleno číslo dvě, to znamená, že need-- Z se stává druhou Dopis po sobě, že jo? Takže je potřeba nějakým způsobem zabalit kolem, a modulo je způsob, jak to udělat. Takže vše, co dělá, je to vám dává zbytek o rozdělení První číslo od druhého. A máme několik příkladů aby to trochu konkrétnější. Ale v podstatě, můžete použít modulo, když se chtějí, aby se něco zábal kolem. Takže pokud si chcete pouze čísla jedna až osm, můžete použít modulo na jakýkoli jiný číslo, a to bude vždy vrátí číslo od nuly do osmi. Takže někteří examples-- pokud máme 55 modulo 10, to jen vám dává zbytek 55 děleno 10, což by bylo 5. A pak tři modulo pět, někdo hádat, co by to bylo? Tři. Takže pokud máte menší počet, než modulo, nemůže jít rovnoměrně. Je to nula. Tak to prostě vrátí číslo sám. Tak osm modulo osm by bylo? STUDENT: Zero. ALLISON: Zero. Vzhledem k tomu, že jde v rovnoměrně. 16 modulo 15? Diváků: One. ALLISON: cool. A pak to poslední, je jen ukázat you-- můžete se zeptat, OK, co je pořadí operací zde? Líbí se dělíme první? Máme modulo první? Takže modulo má stejnou prioritu jako rozdělení nebo násobení, a její levý asociativní. Takže je to stejným způsobem. Ty by vždycky závorky, pak násobení, dělení, a modulo v pořadí zleva doprava. Takže standardní pravidla. Prostě to dát do stejné kategorie jako dělení a násobení. Takže v tomto případě, že bychom mají 1 plus 2 nám dává 3. Vynásobíme to o 2, a tak jsme si 6. Jsme modulo, že 2, což nám dává? STUDENT: 0. ALLISON: 0. A pak přidáme 2, a tak jsme 2 se v tomto posledním případě. Takže modulo-- budete určitě myslet na způsoby, jak začlenit že když jste balení kolem abecedy. Pokud jste na Z a budete muset přesunout předal tři mezery se dostat do C, tam je, že celý koncept na obal kolem. Tak jsem se nechat na vy přijít na to, jak přesně budete používat ji. Ale rozhodně užitečným nástrojem pro pset tento týden. Moc se mi líbí tohle. To je jeden z mých nejoblíbenějších psets. Pak poté, co dělat, Pokud máte přátele, můžete, stejně jako, posílat si navzájem tajemství Zprávy a ujistěte se, že to funguje. Vzhledem k tomu, že to bude dešifrovat nebo cokoliv. Spousta zábavy. A to je konec sekce. Jsem skončil brzy. Mám ještě 15 minut vy, takže pokud tam je něco, co že byste chtěli jít přes dále, byl bych rád, aby to udělal. Jakékoliv další dotazy týkající se Váš pset pro ty z vás, kteří začali nebo si přečtěte spec. Cokoliv, co jsme mluvili o poslední hodinu 15 minut, které byste mi líbí na druhu odvar, bych rád. Nebo můžeme říkat, že to skončí, a můžete vše opustit a vzít více bonbóny s sebou as you go. Ale pokud jsou nějaké přetrvávající dotazy, prosím, dejte mi vědět. Můžete také přijít a se mnou mluvit později. Slibuji, že nekoušou. Ještě něco? Každý, kdo je dobrý? Pocit každého z nás, jako oni mohou zvládnout tento pset? Budeš v pořádku kluci. Úřední hodiny jsou tam z nějakého důvodu. V pohodě. V pořádku. No, v tom případě, děkuji vám všem moc za účast. Doufám, že se příští týden. K dispozici bude více cukroví. Tam by mohlo být i jiné věci v pohodě. A těším se na získání znát všechny z vás v tomto roce.