[Prehrávanie hudby] ALLISON Buchholtz-AU: Ahoj všetci. Vitajte na váš prvý oficiálna CS50 časť. Ako môžete, vidieť to je Sekcia CS50-like, len vytiahnuť náš program na dnešok. Takže, kto som ja, pretože som si istý, ste všetci zvedaví. Som tvoj TF. Nie som len náhodný študentka kto sa vydáva za svojou TF. A ja idem cez druh má sekcií potečie, očakávania máme, zdroje, tak ďalej a tak ďalej. Budeme hovoriť o pole, ASCII funkcie, argumenty príkazového riadku, a to nie je tu, ale Aj budú tiež pomáhať tak nejako premyslieť Vaše ďalšie pset pre tento týždeň. Čo som si istý, že všetci ocenia. Takže, prvý question-- kto som ja, okrem svojho rozjarení TF tu. Som Alison Buchholtz-Au. Toto je môj druhý rok TFing CS50. Tiež som TF CS51 na jar. Môžete vidieť zase tam ak sa rozhodnete vziať. Som tiež PAF, takže každý Freshmen-- a ak nie ste nováčik, toto je môj tretí rok ako radí kolega. Som veľmi dobre-zbehlý v poradenstvo vás na život a kurzy v SK a nie do SK. Som Computer Science koncentrátor. Som senior na Adams House, najlepší dom. A ako som prešiel na SK môj druhák jar, Vlastne som bol biomedicínsky inžinier. Chystal som sa ísť na medicínu. Chcel som byť trauma chirurg. A to úplne má zmenil od tej doby som sa CS50. Vzal som si kurz môj druhák Fall. Bola to moja prvá zoznámenie s CS vôbec. Bol som jedným z 78% z vás, ktorí bol nulový skúsenosti prichádza, a to úplne zmenilo môj život. A teraz som pracoval na Microsoft, a vaše krásne TF. A CS50 je pravdepodobne jedným z najlepších zážitkov že som tu mal na Harvard-- ako brať triedu a sú schopní pomôcť naučiť študentov, ako ste vy. Takže som naozaj nadšený že ste tu všetci. V prípade, že ste prišli neskoro, je cukroví, ktoré by ste mali pocit, voľne prichádzať chytiť, alebo poslať niekto chytiť za vás. to je v poriadku. Nechcem jesť to. Môj izba má dosť čokolády, tak vám všetkým by sa mali snažiť a dokončiť to. Viem, že tam sú 100 kusov, ale ako, 4 hod v pondelok, Myslím, že každý mohol použiť nejaký cukor. Takže vy všetci, ktorí sú oficiálne v mojom oddiele by sa dostali e-mail odo mňa s mojím telefónnym číslom, Napísať address-- neváhajte a pridajte si ma na Gchat, neváhajte ma pridať na Facebooku, aj pre vás ostatných, môžete mi e-mail práve tu. K dispozícii sú dve H. Každý robí vždycky ako dva L's alebo dve C je. Dve H v priezviska. V opačnom prípade to bude odraziť, a Nebudem sa dostať e-mail. Tak neváhajte a napíšte mi, kontaktujte ma kedykoľvek. Aj nesmie dostať späť do ste do 24 minút ale sľubujem, že sa vrátim do 24 hodín. Ak mi zavolať pol hodiny pred Váš pset je spôsobené, môžete byť rád, Nemám potuchy, čo robím Allison. Pomôžte mi. Budem ťa upokojiť, ale na konci dňa, ak ste ma volať pol hodiny pred Váš pset je splatná nič písomné, Ja budem rád, dobre, možno je čas použiť túto neskorú deň. Tak som sa reagovať na všetky vaše požiadavky vo veľmi včas. Môj telefón je zvyčajne pripojené k mojej ruke. Aj typicky reagovať oveľa rýchlejšie ako 24 hodín, ale môžem len záruka odpoveď 24 hodín. Dobrá. Tak prečo sme tu? Tiež, ak máte nejaké otázky na kedykoľvek, dajte mi prosím vedieť. Aj veľa hovoriť. Hovorím rýchlo, ale prosím neváhajte ma prerušiť. To mi dáva voľný priestor rovnako. Takže sekcie sú časovo pre nás naozaj len skok v, získať nejaké praktické skúsenosti, aby prejsť témy, ktoré sme spomenuli v triede alebo v študijných materiálov, ktoré odporúčame vami on-line. A my vlastne prejsť Niektoré z týchto zdrojov v trochu. Takže niekoľko poznámok o podpore časti. CS50-- jedna z vecí, ktoré robí je to jeden z mojich obľúbených skupín je pocit, že nie ste nikdy sami. Máme zamestnancov viac ako 100 ľudia, ktorí sú tu, aby vám pomohol. Máme úradné hodiny Od pondelka do štvrtka. Takže je tu veľa ľudí, ktorí láska triedu rovnako tak ako ja a ktorí sú naozaj tu preto, že chcú byť tu. Väčšina z nás sú študenti, a to je ako piatej triede naviac na zvyšok našej práce. A je to veľa práce, ale robíme to preto, že sme ho radi, a naozaj milujeme vás naučí, a pomôže zdieľať naše nadšenie k tejto téme a tejto triedy. Takže prosím, využiť. Príďte si s nami porozprávať. Som si sám, keď moji študenti nehovor na mňa, takže ak chcete, prísť zavesiť von so mnou. Bude to skvelé. Takže časť je samozrejme jeden z vašich najväčších vecí. Prejdeme veci ktoré ste sa naučili v prednáške, urobiť nejaké krátke príklady keď máme čas, a všeobecne druh získať predstavu o veciach, mali by ste myslieť o Pre nastavenie váš problém. Shorts-- koľko ľudí v skutočnosti sledoval video z nuly krátke? Každý, kto ma pozná? To sú veľmi vysoké. Určite by ste mali sledovať tie. Veľa práce bolo do nich. A sú to len chcel byť bite-size kúsky pre vás len pozerať tri alebo štyri minúty a získajte lepšie pochopenie konceptu. Prechádzka throughs-- ako mnoho ľudí sa pozerali Walk-priechodky pre tie predchádzajúce? Zamyla je úžasné, nie? Rovnako ako som si želal, aby som bol Zamyla niekedy. Takže určite používať prechádzka-priechodky. Ona ho rozloží do malý, bite-size kúsky. A keď máte tieto obrovské špecifikácia z vašich problémových sád, to bude naozaj dôležité aby bolo možné nájsť len niekde začať pracovať a pomaly sa cez to. Dobre, máme tiež Study50, ktorý je study50.harvard.edu, verím. Stačí si len Google študovať, a bude to prísť. To je jeden z Najlepšie zdroje máme. Je powerpoints s poznámkami a praxi problémy pre vás sa riešenie, ktoré vám môže skutočne prejsť. Takže ak ste niekedy chceli viac praxe, viac ako my v oddieloch alebo viac ako váš problém sád, to je naozaj miesto, kde som povzbudiť, aby ste šli. Bola postavená vlani v lete niektoré z mojich veľmi dobrých priateľov. A je to úžasné. V skutočnosti, mnoho z diapozitívov že budem používať pre oddiel bude pochádzať z Study50. Takže veľa TFS používať. A napokon, ako som bolo uvedené, úradné hodiny. Ak máte problémy s s domácimi úlohami, ty si ťažkosti s koncepcia, prišiel úradné hodiny. Prejdite na začiatku týždňa, ak môžete. Vystúpte na štvorkolky, pretože je to trochu ďaleko. Nikto nemá rád chodiť vonku. Ale to je vo svoj prospech, pretože potom ste bude mať všetky tieto TFS, [Nepočuteľné] vás obklopujú. A zvlášť teraz, len tip, štvrtok sú veľmi chill práve teraz Mather, pretože vaše psets sú splatné vo štvrtok. A vedieť, chce použitie, ale svoje neskoré dni. Takže ak máte ťažkosti s pojmami, existuje veľa TFS, ktorý sú tu, aby vám pomohol. Tak poď von Mather vo štvrtok. Ak chcete ma vidieť, Budem tam. Ja som zvyčajne robiť svoje vlastné úlohy, pretože nikto nechce moju pomoc. Tak príďte sa na nás pozrieť. Stretneme sa v polovici cesty. Tak koľko ľudí sa zúčastnilo prednáška a sledoval, ako on-line? Koľko ľudí išiel do Super časť minulý týždeň? V pohode. To je naozaj značný počet. Koľko z vás si prečítať spec pre tento týždeň, pre pset? Ooh, Som hrdý na vás chlapci! Viac cukroví pre vám všetkým. Dobre, takže to, čo máme na mysli, "Zídeme na polceste", je že časť je naozaj len bude mimoriadne užitočné pre vás ak prídete v po prečítaní vašich Špecifikácia pre pset. Pretože keď som sa prejsť prehľad vecí, ktoré by mali byť díval sa na, že to nebude robiť ako moc zmysel, ak Neviem, čo je tvoj problém nastaviť bude sa pýtať, budete robiť. Ak nechcete prísť do sekcie, samozrejme Nemôžem byť tak užitočné pre vás. Nebudem brať osobne, ak nechcete prísť do môjho časti práve teraz, ale rozhodne by ste mali. Ak nemôžete, pozerať sa na ne online. Sú tam z nejakého dôvodu. Mine bude práve tam. Ako si všimnete, že sme sa zaznamenáva, takže to bude tu pre vás. Rovnako tak, bude lectures-- to je samozrejme kam dostať štart vášho materiálu tu. Tak som sa určite snažiť pomôžu čo môžem, ale môžem stretnúť sa s tebou len tak ďaleko. Musíte druh stretnúť sa s nami v polovici cesty. Grading-- tak, vy všetci kto dostal e-mail odo mňa, ty si môj oficiálna časť. Budem triedenie svoje psets. A len chcem povedať, jedna vec, ktorá mali by ste naozaj venovať pozornosť sú komentáre. Komentáre sú často užitočnejšie než skutočné skóre dáme vám. A pripomienky sú v skutočnosti kde trávim veľa času keď som triedenia. Takže by som ocenil že ak ste si ich. A oni sú v skutočnosti, ako budete dozvedieť sa viac o dizajne a štýle a veci, ktoré sú trochu menej rezu a suché. Takže naozaj venovať pozornosť na tieto pripomienky. Ak máte otázky o tom, alebo otázky týkajúce sa vášho skóre, príďte so mnou hovoriť buď pred oddielu, Budem pravdepodobne visí von v hale, alebo neskôr. Ak chcete naplánovať one-on-one stretnutia o tom, ako môžete pomôcť zlepšiť neskôr problémové súpravy, dajte mi vedieť. A potom už len pár tipov pre vás. Takže jeden z najväčších vecí, Vždy som zdôrazniť, môj sekcie keď sa učíte, ako sa kód je písať veci na papier. Ak máte herný plán kde sa váš kód musí ísť a to, čo je potrebné, aby robiť, a to v členení na malé kúsky pseudokódu kód, ktorý ste napísali von, budete mať menej pravdepodobné, aby sa chyby syntaxe alebo vytvoriť slučku, ktorá v prípade, nemá iného. Ak viete, kde ste bude celkovo, že ste menej pravdepodobné, aby sa tieto malé chyby, ktoré sa niekedy môže trvať vás hodín opraviť, pretože ste ako, kde som chýba tento držiak? V takom prípade, prosím, použite Style50. Zvlášť, keď ste ísť na úradných hodinách, ak váš kód je všetko prešiel k jednej strane, to je samozrejme politika že môžeme povedať, opraviť takže to vyzerá, že Style50 hovorí by mal, a potom tí pomôžem. Takže to, aby váš život jednoduchší. Bude to náš život jednoduchší. Každý, kto je šťastnejší. Každý dostane lepšie známky. Nie je to, čo všetci chceme? Takže písať veci, na papier pred ste sa niekedy dotknúť počítača. Porozprávajte si veci na vysokej úrovni, a uistite sa, že viete, kam idete. A ak si nie ste istí, sadnúť si s niekým a pešo je cez krok za krokom čo váš kód má robiť. A deväťkrát z 10, budete mať ako, oh, zabudol som, ak podmienky alebo Zabudol som tu bodkočiarku alebo Ja som aktualizáciu tejto premennej zle. Tak to sú moje tipy pre úspech. Takže od tej doby asi polovica z vás vyzerajú ako ste sa zúčastnili Super časť, Ja som jednoducho ísť veľmi krátko prejsť slučky, ktoré neboli na našom pôvodnom programe. Ale sú naozaj dôležité. A tak budem druhu rýchlosti cez tie predtým, než sa dostaneme do našej aktuálnej sekcie. Ako som to urobiť, sú tam akýkoľvek questions-- logisticky, osobne, je tu všetko ostatné, čo chcete vedieť o mňa, alebo o časť alebo trieda všeobecne? Všetky dobré? OK, v pohode. Lovely. Takže loops-- vy mali všetci rozpoznať tieto kúsky od nuly. Takže slučky sú v podstate len spôsob, ako pre nás niečo urobiť niektoré počet časov, niektoré opakované činnosť na základe niektorej podmienené. Takže máme tri rôzne typy. Máme pre sláčiky, zatiaľ čo, a do-while. Takže loops-- musíme len veľmi celkové usporiadanie tu cykle for. A to je skvelé, keď viete, ako koľkokrát je potreba niečo vykonať. Keď hovoríme o ďalšie slučky, budete prečo to je dôležitý rozdiel. Ale slučky sú na niečo set. Viete, že môžete buď výpočet počtu alebo viete, koľkokrát ste chcem to opakuje od začiatku. Takže ak uvidíte tú sme majú len všeobecný druh skeletu rámca pre pre sláčiky tu. Takže pre-inicializácii, to je miesto, kde vaše premenné sú inicializované. S Mariom, som si istý, že chlapci urobili niečo ako int i = 0. To je miesto, kde že sa to stane v modrej farbe. Máte Váš zdravotný stav, ktorý je to, čo skontrolovať zakaždým. Ak je táto podmienka pravdivá, potom zvyšok kódu vykoná. Potom to bude bežať again-- a opýtajte sa. A potom tu máme aktualizáciu, kde ste aktualizáciu premenné. Takže znovu, s ako Mario, som si istý, vy ste urobil niečo ako ja a naviac plus. Takže zakaždým, keď slučky bežal som dostal aktualizované tak, že keď sme kontrolovali proti niektorí podmienka, že sa menil. Vzhľadom k tomu, ak ste práve majú statickú premennú, ak sa vykonáva prvýkrát, je to práve chystá vykonať nekonečne. Takže musíte sa uistiť, že náležite aktualizovať svoje premenné. A máme tiež len vizuálnej reprezentácie tam. Každý dobrý? Pre slučiek. Mali by ste vidieť tie v pset. V pohode. Tak tu je len jednoduchý príklad. Vytlačiť To je CS50! 10 krát. A tak máme inicializácii, ako vidíme tam, s int i = 0 pre i menej ako 10, a ja som navyše plus. A to bude tlačiť, že 10 krát. Takže zatiaľ čo loops-- zatiaľ čo slučky sú skvelé, keď nie nevyhnutne vedieť, koľkokrát je to bude aktualizovať na začiatku. Len máte nejaké podmienka, ktorá je kontrolovaná. A to by mohlo byť niečo ako while-- poďme vziať príklad z pset. Ak Mario, skúste vstup záporné číslo. Je to tak? Mal si znovu vyzve svojich užívateľov. Takže môžete povedať, dobre, ak užívateľských vstupov o niečo menšia ako nula, re-riadku je. A som si istý, že by mohli mať bolo niečo, že niektorí z vás použité v kóde. Takže je to jednoduchá vec. Máte kým niektoré podmienené, že je zaškrtnutá zakaždým kód ide spustiť. Ak sa vyhodnotí ako pravda, my ho spustiť. Inak nie. A čo je naozaj DÔLEŽITÉ niečo, čo som myslím, že David hovoril o v lecture-- sú rovnátka. Či už je v rámci traky je to, čo je popravený. Ak zabudnete tie, traky, je to len bude byť linku priamo po tú dobu bol popravený. Takže ak máte tri veci, ktoré by mali sa stane, keď to podmienka vyhodnotená ako true, a nemáte tie rovnátka, iba Prvá vec, ktorú sa bude diať. Takže veľmi vedomí kam dať svoje rovnátka. Ak sa budete držať s Style50, to vám určite pomôže. V pohode. Takže je odpočítavanie od 10 do nuly. A ako vidíte tu, my inicializovať niektoré čítača mimo neho. Jedna vec, ktorá je odlišná je nie sme inicializácia našu premennú v rámci nášho cyklu while. Je inicializovaný mimo neho. Sme proste len uvedenie stave, v našej dobe. Takže v tomto prípade, je to zároveň počet je väčší ako nula. A my vytlačiť to, čo náš počet je, a potom sme decrement našu premennú. A to je tiež ďalšia vec, ktorú si toho nevšimol. Naše aktualizácie neprebehne v rámci že prvá časť cyklu while. To sa skutočne stane v zátvorky, telo textu. Takže sa, zatiaľ čo loops-- do-while sú skvelé pre overenie užívateľa. Takže niektorí z vás môžu mať tiež používal toto v pset. Môžete povedať, áno, ako, požiadať užívateľa pre vstup. A potom, keď, ako, vstup je menšie ako určité číslo. Takže pre explicitné prípade sa Mario, ale bude robiť printf, zadajte celé číslo, a potom nejaké celé číslo rovná getint. A potom to bude v skutočnosti spustený ako prvý tento kód. Budete skutočne nejaké číslo. A potom by sa dalo povedať, zatiaľ čo že celé číslo je menšie ako nula. Tak čo to bude robiť, je, že je to bude vykonávať aspoň raz. Bude to skontrolovať stav. V prípade, že je podmienka pravda, bude to znova spustiť. Takže do-while slučky sú skvelé pre overenie užívateľa, pretože viete, že kód sa bude vykonávať aspoň raz, zatiaľ čo sa while, nie ste zaručené, že je to bude vykonávať raz. Bude to skontrolovať stav prvý a potom sa rozhodnúť pre jeho výkon zatiaľ čo do-while bude spustiť kód ako prvý a skontrolujte, či je potrebné ho opakovať. Znamená to, že rozdiel zmysel pre každého? OK. V pohode. Takže v tomto prípade, je to druh z toho, čo som hovoril o tom, Toto nové pokynov, kým nebudete dostať kladné číslo. Takže vieme, že printf "Zadajte kladné číslo" a vlastne žiadajú, aby Vstup sa stane aspoň raz. V prípade, že používateľ je zlo a udržiava zadanie záporného čísla, ktoré vie, koľkokrát sa to bude realizovať. Ale tento kód je zaručená vykonať aspoň raz. A to je dôvod, prečo je to skvelé pre validáciu vstupu. A budete používať, že celkom dosť. Dobre, nejaké otázky tak ďaleko? Sme všetci dobre? Hovorím príliš rýchlo? Sme dobrí? OK. Desivý Takže budeme pokračovať a hovoriť o polia. V pohode. Takže polia sú v podstate len dátové štruktúry ktoré nám umožňujú ukladať veci rovnakého druhu. Takže ak budete mať celý rad, je to Buď jednoducho musieť celých čísel alebo je to len bude mať plaváky alebo je to len bude mať znaky. Nebudeš mať int s char s plavákom s double. Jedna vec. Pole je len jedna veľkosť, alebo sú to len jeden typ. Takže tu máme celý rad veľkostí tri tri celé čísla v ňom. Mohli pláva, ale my sme chcel povedať, že sú celých čísel. Takže jedna vec je si uvedomiť, že pole je veľkosť súboru pri inicializácii im, a oni nie sú easily-- pretože všetci sú menej pohodlné, mali by ste si myslím, že z nich ako nie je schopný rozšíriť veľkosť. Avšak veľký vydáte vaše polia na začiatku, To je veľkosť, že to bude zostať, pretože pole sú spojité bloky pamäte. A keď vy dostanete do trochu viac o tom, ako pamäť je v skutočnosti stanovené na disky a v halde a zásobníka, to bude robiť trochu väčší zmysel. Ale vy ste mohol myslieť, ako je to len rad miest na disku. A nemôžete zaručiť, že je bude voľné miesto po ňom. Dalo by sa inicializovať pole tri a potom možno by ste inicializovať ďalšie rad piatich neskôr, a to hneď po tom. Takže ak ste mali ísť okolo miesto tri v tom prvom poli, by ste sa písať cez niečo iné. Takže pole are-- pre vás, len premýšľať o nich ako o pevnej veľkosti. Takže vytvorenie array-- ideš musieť urobiť docela dost. Takže rovnakým spôsobom, že máme všeobecná štruktúra pre naše pre slučky, máme pekný generál Štruktúra pre naše polia. Vzhľadom k tomu, že sú z jedného typu, všetko prvky v poli sú jedného typu, musíte inicializovať čo to je typ. Takže, ako vidíte tu, máme pekný malý držiak dátový typ. Takže ak budeme vytvárať int pole, ktoré bude int. Ak máme vytvoriť char pole, bude to char. Ak máme vytvoriť reťazec pole, bude to reťazec. A potom sa názov poľa, čo by ste chceli, aby to bolo. Takže možno je to výsledky testov alebo možno je to študentmi alebo možno je to pečivo. Či už sa rozhodnete na meno pole, to je to, čo to bude. A potom sa v zátvorkách, budete majú veľkosť, ktorú chcete. Takže sme skladovanie 10 študentov alebo sme skladovanie 15 druhov koláčov? Čo nie. Takže v našom príklade, sme vytvorenie poľa veľkosti tri, ktoré si chlapci pozri tu vpravo. A keď sme sa prvýkrát inicializuje to všetko sa nastaví na nulu. Takže je to len myšlienka ako sa nepopsaným listom. Máme všetky tieto priestory, máme všetci tieto krabice môžeme dať naše dáta do, ale sú to len prázdne v súčasnej dobe. Takže ak chceme skutočne priradiť tieto hodnoty, robíme tak, aby priamo pod tú ukáže. Takže budete musieť bez ohľadu na názov vášho Pole je a potom to, čo index chcete. Takže index len odkazuje, ako to, čo slot pozeráme. A dôležité všímať je to, že polia sú nulové indexované. Ak teda chceme prvé miesto v pamäti naše polia, to bude nula. Ak chceme druhý, bude to jedno. Ak chceme, aby tretinu, bude to dva. Tak ďalej a tak ďalej. Čo je tiež dôvod, prečo konvenčne, keď robíme pre loops-- som si istý, Vy ste boli zvedaví, prečo začneme na 0 proti 1? A to preto, že keď sme prechod pomocou polí, mapuje správne. Takže ak chcete, aby iterácii do poľa, je robí oveľa väčší zmysel robiť i = 0, pretože sme vedia, že budú zodpovedať na prvé miesto v pamäti. Všetci dobre s tým? V pohode. A potom na dno je tu len Ďalším spôsobom, ako inicializáciu poľa. Stále máte svoj dátový typ a meno, ale miesto skutočne uvedenie veľkosti tam, môžete jednoducho prázdne zátvorky. A potom sa tieto vlnité traky na dne, Stačí si len vstup dát, ktorá ktoré chcete oddelené čiarkami. A to automaticky hovoria, OK, vidím, že máte tri veci v týchto zátvoriek. Takže viem, že musím prideliť tri bloky pamäte a uložiť ty. Takže prvá verzia môžete použiť ak sa pýtate užívateľa do vstupu hodnoty, takže môžete iterovat pole a ask-- trochu int vstup je. Ak poznáte hodnoty vopred, to robí oveľa väčší zmysel použiť druhý spôsob. Ale vo väčšine prípadov možno neviete čo tieto hodnoty sa bude. V pohode. Nejaké ďalšie otázky? V poriadku. Takže prístup elements-- tak jeden z veľkých vecí, o poliach je, že sú náhodné prístup, čo znamená, že vás Nemusíte sa pozerať skrz každom bloku. Ak viete, že vás chcú to, čo je v bloku dvoch, stačí povedať, daj mi blokovať dva. A to je dôvod, prečo tieto indexy sú tak dôležité, a to je to, ako sme vlastne prístup k nim. Takže v tomto prípade, ako sme videli skôr, keď sme priradenie hodnoty, v jednom než sme mali názov a index sme chceli prístup, nie? Takže rovnakým spôsobom, to je všetko, čo urobiť, aby skutočne vytiahnuť, že dáta odchodu. Máme meno a my má index, ktorý chceme. Takže v tomto prípade, pre sláčiky tu dole, niekto vedieť, čo to robí, Čo by to vytlačiť? Mmhmm? Presne tak. Tak jo, je to len iterácie. i je rovné zero-- môžeme chodiť prostredníctvom kódu práve rýchlo. i sa rovná nule, aj je nižšia ako tri na tomto mieste, že jo? Tak to preveruje. A my hovoríme, OK, tlač f čo je v teplote i. i je tu nulová, keď sme sa prvýkrát opakovať, a tak sme išli do prvého bodu, a hovoríme, OK, 65 je Číslo chceme vytlačiť. Takže to bude tlačiť 65 a vykonajte nový riadok. budem aktualizovať, takže sa vytlačí 87. Znovu aktualizuje, a to bude tlačiť 30. Všetci v pohode? Úžasné. Dobrá. Tak tu je druh jedného vec, ktorú som hovoril, ako môžete sledovať niečí skóre a prečo mali by ste použiť prvý spôsob jeho inicializácii Namiesto tejto druhej cesty. A to práve prechádza. A všimnite si máme veľkostnej triedy 30. A my inicializácia to Pole ints, že je o veľkosti 30. A potom sme iterácie vďaka a my sme pýta užívateľa na vstup skóre pre každú z nich a potom zaradí do určitého miesta v pamäti niekde v tomto poli. V pohode? Znamená to, že zmysel pre každého? Mmhmm? Takže hashtag definovať veľkosť triedy 30 smernice preprocesor, čo práve znamená, že gets-- má robiť ako proces preklady. Môžete si ju ako globálny premennú. Spôsob, akým to robíme, je typically-- umožňuje kód sa ľahšie zmeniť. Takže povedzme, že naša veľkosť triedy Zrazu jede 30-15, keby som nie je definované to takto, ja by som musí prejsť celý môj program a zmeniť všetky stupne z 30. až 15. Ale s tým som si zmeniť niektorú mieste, a inde sa všetko zmení. Ak ste niekedy chceli urobiť hash definovať v prípade, kam sledovanie niektorých nastaviť počet skóre pre triedu alebo používate čísla ktoré budú použité, rovnako ako, po celú dobu veľmi dlhú programu, to je lepšie definovať, že na začiatku tak, aby v prípade, keď sa zmení, dostanete zmeniť jeden bod miesto 100. Áno? STUDENT: Medzi tým, že a len vyhlásil [nepočuteľné] cez hore. ALLISON Buchholtz-AU: Tak to má čo do činenia s efficient-- je to trochu mimo oblasť pôsobnosti čo môžeme pokryť v tejto sekcii. To má čo do činenia viac s účinnosťou a ako sa veci v skutočnosti práce v procese preklady. Ak chcete naozaj vedieť, o tom, že som rád, že ťa poslať e-mail s prostriedkami o tom. HASH definovať tendenciu byť prednostné pre veci. A ako ste kód ešte, vy druh učiť nuansy kedy by ste mali použiť Globálne verzus hash definovať. Ale v súčasnej dobe, nemáte naozaj sa obávať, že je že krátke odpoveď. Všetci dobre s tým? A tiež, ak chcete použiť hash definovať, je to naozaj dôležité si uvedomiť, že názov by mal byť vo všetkých čiapky. Nie sme len to, CLASS VEĽKOSŤ byť dramatický. To by malo byť v skutočnosti vo všetkých veľkých písmenách. V pohode. Ešte niečo? Sme dobrí? Lovely. Vitajte u nás. OK, takže chcem, vy sa pozrieť na to a uvidíme, či môžete nájsť chybu. Dám vám nápovedu. Je to niekde v tomto pre-slučky. Mmhmm? STUDENT: Mal by byť menšia alebo rovná 2. ALLISON: Tak to môže byť menšia než alebo rovná 2, alebo môže byť nižšia ako 3. A čo je úvaha, že? STUDENT: [nepočuteľné], 0, 1, 2. ALLISON: Presne tak. Takže v poli veľkosti n, sme iba indexy n mínus 1. V pohode. A potom sa môžeme dostať naozaj šialené a získať multi-dimenzionální pole. Jedným z problémov, keď som sa to v mojom rok požadované viacrozmerné polia, a myslím, že jeden z nich môže vyžadovať že v tomto roku, takže sa pohodlne. Zabaliť hlavu okolo neho teraz. To príde späť do obľúbeného miesta vy, ale v chladnom spôsobom. Takže si môžete naozaj si myslím, že multi-dimenzionální pole ako pole polí. Takže môžete trochu myslíte o tomto vrchole riadku ako prvý kus pamäte. A toto je Druhý kus pamäti, a posledný riadok je Tretí kus pamäte. A v to, že tam je pole. Ale samozrejme, je to jednoduchšie líčiť takhle. Takže si to inicializovať rovnakým spôsobom. To je znak doska z troch tromi. Takže máte tri riadky a tri stĺpce. Sme to predstavuje takto. A vy by ste to na prístup Rovnakým spôsobom, stĺpik riadok. A tak 1,1, ako vidíme tu. Priradíme nula, nula tam. 2,0 a 0,2. Takže by ste them-- len prístup, ak kto to kedy urobil lineárnej algebry, rovnakým spôsobom pristupovať k prvku v Matrice, je to rovnaký nápad tu. Takže si môže týkať späť do matematiky. Nemusíte sa báť príliš moc o tom teraz. Je dobré mať expozíciu, vedieť, že to možno urobiť. Môžete vytvárať niektoré blázon number-- môžete vytvárať šialené poľa je všetko, čo som chcel povedať. [Nepočuteľné] To je trochu blázon, ale je to naozaj cool. Úžasné. A potom, takže máme príklad tu. Je vypočíta dĺžku reťazca. Tak koľko ľudí vie, že reťazca, ktoré ste pomocou sú len pole znakov? OK, jo. Takže si chlapci môžu myslieť, že nemáte použité pole skôr, ale kedykoľvek Používate getString v CSView knižnica, ste vlastne len žiadať o pole znakov. A my sme starostlivosť o všetky že v back-end pre vás. Ale vy ste používali poľa od spustenia. Práve ste to nevedel ešte. A vždy, keď máte pole znakov alebo pole, ktoré je ukladanie reťazec, Posledná vec, ktorú je vždy to, čo je volal null terminátor, ktorý je to tu. A to je na konci Každé slovo, ktoré ste skladovania. Ak teda chceme zistiť, Dĺžka reťazca, môžeme povedať, no, vieš, Obsah tohto bloku nie je zhodný s našou null zakončenie. To znamená, že existuje určitá znak tam, že sme vlastne starostlivosť o to časť slova. Zvýšite svoju dĺžku. A potom, keď sme sa vlastne dostať koniec slova, bude to ukončiť a to vrátim našu dĺžku pre nás. Mmhmm? STUDENT: Má priestor počítať ako null zakončenie? ALLISON: Takže priestor je nemá nulový znakom. Takže ak máte multiple-- priestor je vlastne špecifická hodnota ASCII. STUDENT: Čo je to zvolanie opäť v rovnováhe? ALLISON: Takže, to je to, čo nájdete. Ak ste niekedy počujete ma úradných hodinách, Vždy hovorím, že niečo ako rana rovná. Takže bang nie je. Takže to nie je rovná. Takže ak sa snažíte zistiť, či je niečo nepravdivé, viete vždy, bang, čo premenná, a ak je to nepravdivé, vyhodnotí na true a vás môžete robiť super veci s tým. Viac o tom neskôr. V pohode. Všetko, čo tam dobre? Úžasné. Takže teraz je čas vašich obchodíky so pracovať, pretože som hovoril. Takže chcem vám len vytvoriť pole s celými číslami jeden, dva, tri, a potom nechať vytlačiť. Nemusíte robiť, ako, hlavné, bla, bla, bla, čokoľvek. Len chcem, aby si inicializovať pole a potom vytvoriť pre sláčiky vytlačiť out-- alebo while, záleží na vás. Budem vám pár minút, aby sa na tom pracovať. Chystám sa odpočívať môj hlas. Ak máte nejaké otázky, som rád, aby sa okolo a hovoriť s vami. Neváhajte a hovoriť s každým iný. Získajte viac cukroví. V skutočnosti, ja len chodiť s cukrovinkami. Ako to? Chceš nejaké? Niekto iný v tejto miestnosti chcete cukrovinky? Môžete si tiež vziať viac ako jednu, chlapci. Vezmite hrsť, ak chcete. Môže rovnako. Všetci ostatní dobré? OK. Tiež, budem vytvárať anonymný Google Form, a vy môžete len predložiť spätná väzba po každom oddieli v prípade, že je to niečo, čo chcete vylepšiť, alebo niečo, čo chcete hotovo. Ak som príliš peppy pre vás, môžete mi tón nadol. Budem vytvárať a odosielať, že to sa vám všetkým neskôr. Dobrá. Takže poďme začať v malom. Ako by sme inicializovať našu ponuku? Aký je typ našej ponuku? Int, že jo? OK, tak čo chceš volať svoje pole? Int pole, v pohode. Dobre, takže máme int int pole rovná, a čo máme po tom? STUDENT: [nepočuteľné] hranaté zátvorky. ALLISON: Traky. A potom vnútri zátvoriek? Jedna čiarka čiarka dva tri. V pohode. Tak to je v poriadku. Takže teraz máme pre slučke. Takže v prvej časti nášho slučky for, čo máme? STUDENT: i = 0? ALLISON: Takže int i = 0, a potom to, čo je naša podmienka? Čo sa to aj bude menšia ako? Menej ako tri, a Ako to robíme my aktualizovať aj? i a plus, je aktualizácia raz. A potom budeme mať niektoré printf na celé číslo, a čo je to, že posledný časť, ktorá je v skutočnosti bude hovoriť, čo by sme mali tlačiť? Bolo by meno pole, čo je int array, že jo? A čo je v zátvorke v poli int? i. [? Tak som?] Volal mojej príklad, ale je to tu. Nie je tak zlé. Každý dobrý? V pohode. Takže sme hotoví s poľami. Gratulujeme. Podarilo iteráciu cez všetky the-- áno? STUDENT: [nepočuteľné] ALLISON: Áno. STUDENT: Mám dotaz. Si mal odsadiť zátvorky? ALLISON: Takže rovnátka sa musí kryť s pre slučky, a potom všetko vnútri zátvorky by mali byť odsadené. STUDENT: OK, ak by slučky for odsadiť? ALLISON: pre sláčiky nie je musí byť odsadený v tomto bode. Ak ste boli v hlavnej, keby sme vlastne mal hlavnú funkciu tu, to by bolo odsadiť od hlavnej. Ale v tomto prípade, je to v poriadku. Áno, otázka. STUDENT: Potrebujete mať držiaky po príklade? ALLISON: Áno, ak ste inicializácia to tak. Takže pamätať, to je druhý spôsob inicializácie poľa kde máme traky a potom je naša skutočná Údaje oddelené čiarkami vnútri. STUDENT: Myslel som, že tam boli držiaky pre tento príklad. ALLISON: Nie, oni sú rovnátka. Sú rovnátka. Ak ste ju inicializácia že druhý spôsob, je to rovnátka. Ak by sme mali povedať, int example-- ak sme len chceli prázdne pole pre ints, že by bolo int príklad držiaky tri. Držiaky predstavujú veľkosť. Keď máte rovnátka, je to skutočná dáta dávate do nej týmto spôsobom. Môžeme sa posunúť späť naozaj rýchlo. Takže v tomto jednom, je to len náš Počiatočná polia, inicializácia. A tu sme jednotlivo priradenie škvrny na ne, tak to predstavuje index našej pole, čo je dôvod, prečo máme držiaky. Ale tu, ak si všimnete, máme opustil svoje konzoly bez veľkosti, a my sme ju inicializovať skutočné údaje all-in-one s rovnátka. Žiak: Takže prečo máme zátvorky v tomto príklade? ALLISON: Takže, v ktorej časti? STUDENT: By nie povedzme, príklad int držiaky rovná traky [nepočuteľné] držiaky napr. ALLISON: Oh, ospravedlňujem sa. Máš pravdu. Máme zátvorkách. Prepáčte chlapci, my bad. Áno, mali by ste mať zátvorky napr. Máte úplnú pravdu. STUDENT: [nepočuteľné] nerobí. ALLISON: Nie, musíte mať zátvorky, pretože inak je to nebude deklarovať pole. STUDENT: [nepočuteľné]. Ospravedlňujeme sa. ALLISON: Je nám ľúto, musíte zátvorky napr. Typo. Dobrý úlovok, zlatá hviezda pre vás. Tiež, ak sa pýtate na otázku, ak je vy by len mi povedz svoje meno, Som rád, že. Rád by som, aby bolo možné poznať všetky vaše mená. Nebudem na chlad vlastne hovoria vám, že si len chcú poznať vaše mená. Tak prosím, vlastne mi povedať svoje meno. LEAH: Leah. ALLISON: Leah. OK, takže functions-- viem, že v skratke hovorili o tom v priebehu prednášky. Takže funkcie sú trochu len ako sú tieto malé bite-size vecí kde sa odovzdať vstupmi, niečo magického sa deje, a dostanete výstupy. V pohode. Takže ste vlastne používa Mnoho z nich už. Get int, dostať reťazec, tlačové f. To sú všetky funkcie kde stačí zavolať, je tu veľa čarovných vecí sa deje v pozadí že nemusíte nutne vidieť, a dostanete, čo chcete. Alebo aspoň dostanete to, čo dúfam, že chcete. A v podstate bod funkcií, a je jedným z hlavných tém SK, je prelomiť kód na zvládnuteľné kúsky. Keď začnete písať Tieto naozaj dlhé programy, alebo Scratch, keď ste mali tento veľký nápad na hru, musíte byť schopní to zlomiť dole, ako, OK, ako mám začať? Aké sú malé kúsky, ktoré potrebujem? Oh, musím sa opýtať používateľ na niečo. Teraz už potrebujete vytlačiť niečo. Oh, musím túto hodnotu vypočítať. A naučiť sa, ako sa rozísť vaše kód a veľké problémy, ktoré sa majú na týchto malé kúsky a vytvorenie funkcie je v skutočnosti jednou z veľké kamene SK. Takže si môžete myslieť, funkcie, rovnako ako ako čierne skrinky, magické čierne skrinky, že ste dal veci do a máte výstup. A zvyšok programu nemusí nutne vedieť, čo sa deje v tej čiernej krabici. Všetko, čo sa stará o to, čo je ide a čo vyjde. V pohode. Tak prečo funguje? Organization-- ako som povedal, keď ste rokovania s veľmi veľkými bázou kódu, ako organizovať váš kód bude oveľa ľahšie, ak budete používať funkcie. Vzhľadom k tomu, budete mať možnosť byť, rovnako ako, v poriadku to, je to, čo táto funkcia robí a Tu je to, čo iný človek robí. A môžete ľahko zistiť, ako sa všetci do seba zapadajú. Tak lámanie to do všetkých Tieto zvládnuteľné čiastkové časti. Takže simplification-- som si istý, že chlapci všetko videl, ako som povedal, s Scratch. Máte tento veľkolepý nápad, a ste ako, ako to všetko funguje? Ale ak sa k nemu pristupovať kúsok po kúsku, hovoríte, OK, ako mám urobiť jednu sprite vznášať sa cez celú obrazovku? To je trochu jednoduchšie. Tak dobré využitie funkcie umožňuje kód oveľa čitateľnejší. To uľahčuje ladenie, ktoré ako sa dostanete do svojich neskorších problémov sád, budete naozaj chcú byť schopní robiť. A sú tiež jednoduchšie navrhnúť a realizovať. Môžete kód do malej fungujú pomerne rýchlo a uistite sa, že funguje proti pokusu vytvoriť celý tento dlhý program a potom sa trochu prejsť a vidieť, čo je práca a čo nie. A potom znovupoužitelnost. Takže iba funkcie potrebujú byť napísaný raz, a potom môžete použiť toľkokrát, koľkokrát je to možné. Takže je to ako, šetrné k životnému prostrediu v istom zmysle. Ak ste mali veci, ako je print f, kde na vás musel vypísať kúzlo, že ide na pozadí vytlačiť f každom jednom okamihu ste chceli niečo vytlačiť, môžete by bolo dosť chorý a unavený z toho do konca. Jedna z vecí, ktoré budete učiť sa v neskoršej tried SK, alebo jeden z najlepších rád by som dostať znamená, že ak sa kopírovanie a vkladanie kód, mal by pravdepodobne funkciu. Ak máte presne rovnaké vedenie v priebehu celého kódu, ak zapracované von, Váš kód by pravdepodobne byť, rovnako ako päťkrát kratšia a oveľa viac ľahko čitateľné. A namiesto toho sa snaží riešiť Všetky tieto rôzne miesta, kde sa veci môže ísť zle, budete mať jednu funkciu že sa dostanete do ťažkostí. A sľubujem, veľa to Mohlo by sa zdať druh abstraktné teraz, ale ako sa dostanete do neskôr a neskôr problém stanovuje, Bude to oveľa väčší zmysel a naozaj jazdiť domov. Sú nejaké otázky o funkciách tak ďaleko? Prečo sme ich používate? Viem, že sme sa dostali do natvrdlý kostrbata ešte. Takže definovanie function-- len ako pole, potrebujeme nejaký of-- to je len všeobecný výstup. Tak toto je funkcia, ktorá je len tak Cube nejaký vstup. A na nasledujúcej stránke, vlastne máme všetky tieto úžasné maličkosti tu. Takže si každý môže prečítať že zo zvedavosti? Viem, fialovej a čiernej by mohlo byť trochu ťažké. Ale veľké veci víš-- takže prvý jeden tu je náš návratový typ. Takže to hovorí o výstupe tejto funkcie, keď v tomto prípade, sme sa dať do nejakej číslo, to, čo sme dostať je, že číslo kocky. Tak to by malo byť int v tomto prípade. Možno, že by bolo dvojité alebo niečo neskôr, ale v tomto prípade, je to int. S c, potrebujete vždy návratový typ. Bude int. Bude to float. Bude to double. Ale musíte určiť, čo Táto funkcia bude vracať. V opačnom prípade bude kričať na vy, a to nebude kompilovať. Budeš smutný, a ja budem smutný. A to jednoducho nie je dobré. OK. A potom máme názov funkcie. A ako môžete vidieť tu, s c že je to veľmi konzistentné vzor. Aký je váš typ, aký je názov, a potom nejaká iná vec na konci. Takže máme návratový typ, naše funkcie názov, a potom máme hlavičku s náš zoznam parametrov. Takže Zoznam parametrov je to, čo je táto funkcia bude trvať do? Zoznam parametrov je jednoducho synonymum pre, aké sú naše vstupy? A rovnakým spôsobom, že sme definovať našu funkciu a dať mu návrat typu, každý z našich vstupov musí mať typ s ním spojené. Takže vieme, čo naše funkcie môže skutočne pracovať. Takže v tomto prípade máme nejaké int vstup. Takže znovu, bude to typ a to, čo voláte ho. A potom, ako vidíte tu máme naše telo. Takže máme nejaké int výstup, ktorý je len naša vstupná krát sám doba sama o sebe, ktorá sa práve kocky ju. A potom sme sa vrátiť, že výstup. Takže ako vidíte tu, máme int, koľkokrát sa doba int int, tak vráti int, ktorý bol tam vyhlásil. Takže všetko je súdržná. Všetko je šťastný. Vaša funkcia spustí. A to je len obyčajná vec. Takže vždy návratový typ, názov, a váš zoznam parametrov. Každá vec vo vašom Zoznam parametrov, alebo vstup, musí mať typ s ním spojené. A potom budete mať svoj Telo tu s tým, čo Ak chcete so svojím vstupom. A potom samozrejme vám chcete vrátiť niečo. Niekedy funkcie bude len vráti. Nemajú vlastne návrat niečo pre vás na použitie. Ale musíte sa vrátiť nejakým spôsobom. A keď robíš svoje vlastné funkcie, môžeme dostať do toho trochu hlbšie. Osobne, ak chcete, je ich tam veľa rôznych vecí, ktoré by ste mohli urobiť tam. Každý dobrý? Čokoľvek na tomto zozname, že ma chcete prejsť, že ste nepochopil? Každý, kto to tam dobré? V pohode. Úžasné. OK, takže sme uvedenie to všetko spolu. Takže máme nejaký int kocka vstup, tak To je kompletný program tu. Až do teraz, som druh dával vás chlapci úryvky, ktoré by mohli ísť v rámci programu. Práve sme sa pri pohľade na funkcie. Ale tu je to celý program. Tak koľko z vás pamätať Prototyp slovo z prednášky? V pohode. Máme jeden. Ako sa voláte? Steph: Steph. ALLISON: Steph? OK, super. Takže si spomenúť, čo je prototyp? STUDENT: Hovoríte, že [nepočuteľné] ako je skutočne sa s tým vysporiadať. ALLISON: Pamätáte si, prečo? STUDENT: Nie ALLISON: OK. Zlatá hviezda. Takže áno, prototyp máme vopred, pretože inak, náš prekladač bude revať na nás. Bude to povedať, OK, Čo je to funkcia kocka? Rovnako ako môžete mať doslova Povedal mi o tom nič. Je to ako keď vás chodiť do triedy, a niekto je rád, je tu kvíz dnes. A ty si ako, vy Nikdy mi o tom povedal. Nie som spokojný s nami. Prototyp je v podstate ako Váš sylabus hovorí, pozrite sa. Hlavy hore. Tam to bude kvíz na tento deň. Nepoužívajte šalieť, keď sa k nej dostanete. Budeš v poriadku. Takže všetko, čo robí, je prototyp povedať hlavné, budem používať túto funkciu. Sľubujem, že ti ju definovať neskôr. Nepoužívajte šalieť na mňa. Stačí zostaviť a robiť to, čo ti poviem. Takže máme prototyp tu len preto, aby náš prekladač šťastný. A to je v podstate sľub, že ste definovali túto funkciu neskôr a že nie sú len volanie to náhoda, že to nevie, čo ste bude robiť. Takže v tomto prípade, máme tú hlavnú. Sme inicializovať nejakú čísla x. To sú dva. Chystáme sa vytlačiť to, čo je x. Budeme Cube x. Ako vidíte, máme deklarácia funkcie tu dole, že my hovoril o minulosti. Je to kocka x, a potom, keď sme pamätajte, že funkciu kocky v skutočnosti vráti celé číslo k USA, ktorý je uložený v x znova, takže môžeme tlačiť z ôsmich, alebo kocky x práve teraz. Znamená to, že zmysel pre každého? Sme dobrí? Dobrá. Úžasné. Dobrá. Koľko z vás pamätať Tento takže to je v podstate len vaše stack a vaše haldy, len vizualizácia ako je pamäť uložená tu. Tak sme sa len chcem, aby Uistite sa, že ste pochopili ako sú tieto zastúpené v pamäti. Ak budete mať triedy, ako je CS61 a tak ďalej, dostanete sa naučiť oveľa viac do hĺbky, a je to naozaj cool. Veľmi odporúčam. Ale teraz, dám vám široký prehľad takže sa nemusíte vedieť natvrdlý odvážny. Takže hore len textový segment, ktorý obsahuje aktuálne núl a jednotiek, binárne za to. A to sa používa pre ukladanie globálne premenné, ak máte nejaké. Ako budete postupovať nadol, sme sa majú, ako vidíte tu, inicializované údaje, neinicializovaný dát a potom haldy. Tak sme to naozaj hovoriť o hromadu práve teraz. Dostaneme sa k nemu neskôr. Pre túto chvíľu som len tak vlna na moje ruky a byť rád, nemusíte vedieť o tom teraz. Ale budeme hovoriť trochu Niečo o zásobníka. Takže stack je where-- máme priblížiť. To je v skutočnosti, ako program sme sa len pozrel na sa vyskytuje v pamäti. Takže to, čo sa stane, je, každý Tentoraz sme volanie funkcie, dostaneme to, čo sa nazýva zásobník rám, ktorý je jedným z nich. Tak je hlavné parametre. Takže to sú veci, že sme sa prejsť do main. Takže sú tu dole, pretože to je prvá vec, ktorú hovoríme. A potom sa dostávame k hlavnej rokov miestni obyvatelia, a keď povieme, že máme na mysli lokálne premenné ktoré sú uložené v hlavnej. Takže miestni by tu bolo, ako, x sa rovná dvom v tomto prípade. Vzhľadom k tomu, že je lokalizovaný na hlavnej. Má každý pamätať si rozsah, ísť cez to v prednáške? OK. Takže, len premenné, ktoré sú inicializované v main. Takže to je dôvod, prečo máme hlavné [? spev. ?] A potom v hlavnej, nazývame kocky. Je to tak? Tak sme sa získať ďalšiu snímku s parametrami Cube. Takže v tomto prípade, kocky je parametre sú teraz x, ktoré sme absolvovali v, dva, ktoré sme absolvovali v. A potom miestnej kocky, ktorá je ak je skutočný cubing stane. A potom sa to vráti. Takže to, čo sa stane, je, ako kocka vlastne robí to, čo má robiť, to vráti. Keď sa vráti, tento rám listy, a jeho vrátil sa na hlavnú. A potom v hlavnej sme môže skutočne vytlačiť. Takže keď budete vracať niečo, keď vaše funkcia vracia, Je to ako odovzdávanie týchto hodnôt do rám pod ním a potom odíde. A čo majú vykonať v poriadku. A keď sa dostanete do väčších programov, môžeme chladnejšie a zložitejšie diagramy. Ale teraz je to len všeobecný prehľad takže máte druh pochopenie toho, čo sa stane, keď voláte funkciu a ako to vlastne vyzerá v pamäti. V pohode? Každý dobrý? Úžasné. Tak to je ten, ktorý je Len sa snažím prehodiť veci. Ako tu vidíme, máme naše funkcie prototyp aby naše kompilátor nemá kričať na nás. Máme niektoré hlavné, a my chcete prepnúť x a y. Oni neurobili demo ešte v prednáške, majú oni? Majú nie? OK. Takže sme ísť nad touto veľmi stručne. Dostanete do tohto príkladu viac do hĺbky, myslím, že tento týždeň. A budúci týždeň môžeme skutočne ponoriť sa do, prečo to nefunguje. Takže máme toto prázdno Funkcie here-- swap. Takže void jednoducho znamená, že nič je vrátená. A máme odkladacia INT a int b. A máme nejaké dočasné premenná, ktorá je. dostane pridelený k B, a potom b dostane pridelený na teplotu tak, že A a B je hodnoty sú zapnuté. Ale sprisahanecké krútenie, to nefunguje. A časť z toho vlastne má čo do činenia s tým, že a b tu, tie, ktoré si prešli v Tu sú vlastne kópie x a y. Takže keď funkcia skutočne vracia, prepne kópia, ale nie Skutočná x a y je. Takže jediný spôsob, ako premýšľať o tom, že je that-- predstierať, že sa jedná o swap. OK? Takže hlavné, máme x a y inicializovaný. Ale keď sme vlastne ísť hore týchto rámov s odkladací priestor, sme okolo hodnoty nad na to, a oni inicializovaný. A len niekedy žiť tu. Tak a b žiť. A oni si vymenili. Ale keď sa vrátime, my nie robiť niečo s a a b. a b dovolenku s našou funkciou. A tak X a Y zostávajú rovnaké. Získate viac o tom, ako napraviť a ako vlastne sa s tým vysporiadať neskôr. Ale je to len jedna vec na druh, majte na pamäti. Použite ju pre budúcnosť. Nebojte sa, ak to nedávalo všetky zmysel na svete. Sú to kópie je najväčšia vec. Ak sa chystáte vziať niečo od toho, ste prešiel v kópiách. Takže originály zostanú rovnaké. Každý dobrý? V pohode. Takže argumenty príkazového riadku. Som si istý, na začiatku vy všetci mal tie veľké, ako, int main priestor. A ty si ako, OK pohode. Ja naozaj nestarám. To je práve to, čo mám napísať. Ale vo svojich nových programov, najmä v tejto pset, a prečo je tam kriedou na zemi? S ďalšou pset, že ste bude vidieť to. Int main, int arg c, string oblúk v, zátvorky. Takže z toho, čo sme práve sa dnes dozvedel, čo si myslíme, že druhý parameter alebo že druhý prvok je tu? Je to pole. Aký typ poľa? String polia, áno. V pohode. Tak to je, ako budete k vyhláseniu týchto teraz. Pamätá si niekto, čo to znamená? Nie? Hmm? STUDENT: arg c. ALLISON: Takže arg c udržiava čítač. Je to int. Je to číslo, nie? Takže to, čo si myslíte, že toto číslo je? Jo. Takže arg c je počet reťazcov ktoré tvoria príkazového riadku. Takže ak by sme mali do-- skutočnosti, existujú príklady po tomto, tak som sa nedostal pred seba. Je to celá rada reťazcov, ktoré len aby sa vaše príkazového riadku. Takže, keď to urobíte, rovnako ako, bodka lomítko Mario, to je jeden reťazec, ktorý ho tvorí. V tomto kúsku budete skutočne kŕmenie veci do príkazového riadku, ako som si istý, že ľudí, ktorí Prečítal spec píly. Takže v týchto prípadoch možno budete majú dve alebo tri argumenty. Je to bude užitočná vec použiť. A potom arg V, ako sme povedali, je len pole reťazcov. Takže to vlastne ukladá to, čo zadáte do príkazového riadku. Takže máme tieto. Máte nejaký bodka lomítko kopírovať Infil outfile. Takže, ak arg c je počet reťazcov že sme prechádza do príkazu line, čo je naším arg c v tomto prípade? Tri. Presne tak. Takže to, čo je v arg nula? Takže to, čo je prvá vec, ktorú sme skladovať? Dot lomka kópiu, presne tak. A potom druhý bude Infil. Tretí by outfile. A čo arg V tri? Bolo by null, pretože to je koniec nášho poľa, nie? V pohode. A potom to, čo o šiestu? Je to tak trochu chyták. Ish. Vieme, čo to je? To je undefined. Nemáme tušenie, čo by to mohlo byť. Je to, čo je správne po pole v pamäti, a my nemáme poňatia, čo to je. A to je nebezpečné dotýkať tých, veci, pretože pre všetky viete, to je nejaká časť pamäte, ktorá vám by nemal byť prístup alebo null. A to môže robiť šialené veci. Je to tzv over-indexovanie zviazaného do svojho poľa. Nechoďte mimo hranice svojho pole, alebo zlé veci sa môže stať. Môžete sa vrátiť a podobne, zákony fyziky boli zničené alebo tak niečo. V pohode. Znamená to, že zmysel pre každého? Nie je to tak zlé. Takže teraz, každý je obľúbená časť, pset recenziu. Yay! OK. Takže pre tých z vás, ktorí Nečítal pset spec, robíte nejaké naozaj cool veci s kryptografiu. Budeš vytvoriť Caesara Cipher a Vigener Cipher. Určite by ste mali čítať spec vidieť, ako tie práce. A ak máte nejaké problémy, o čo by malo byť v skutočnosti robí, príďte so mnou hovoriť, napíšte mi alebo textu ma. Ja som sa okolo seba. Takže tam sú tri hlavné veci, ktoré tu my chceš hovoriť about-- len tak o rozšírení prednášky. Veci, ktoré možno neviete o, užitočné tipy a nástroje. Takže budeme robiť rýchly prehľad o ASCII, preto, že to bude super dôležité pre Vigener šifra. Budeme konverzie príkazového riadku vstupy, ktoré bude veľmi užitočné pre Caesara. A potom modulo. V pohode. Takže ASCII mapuje znaky čísiel. To je veľký graf. Mali by ste mať tento záložkou niekde. Budete chcieť ju váš prvý polovici obdobia. Som si istý, že každý má to graf na ich strednodobé liste. Tak sa to naučiť. Milovať. Majte ju po ruke. Bude to užitočné. A všetko je to je kódovanie ktorá mapuje písmená, čísla, a ďalšie znaky do Čísla na našom počítači. Vzhľadom k tomu, samozrejme, v koniec, všetko ukladáme dostane zariadená až do nuly a tie, takže musíme nejakým spôsobom reprezentovať textu a znaky, ktoré sme všetci zvyknutí vídať ako akési číslo. Takže, ako vidíme tu, máme veľké písmená, čo je tu. Je to 65. A malé je 97. Takže môžete prísť out-- ako som už povedal, ak by ste mali rad násobku reťazca, čo každý z nich zakončený nulovým znakom. Jednalo by sa o priestor. Priestor má vlastné special-- Zabudol som, kde je to tu. Ah. 32 miesto. Takže všetko mapuje to. Takže máme ASCII matematiky. Pre tip-- v Vigener je, môžete byť v pokušení previesť čísla na celé čísla, ale v skutočnosti je to lepšie prax aby bolo možné používať znaky, ako je táto keď ste ich v skutočnosti manipulácia. Takže ak budete chcieť použiť čísla, môžete. Ale lepší spôsob, alebo spôsob, ako máme tendenciu sa vám páči chalani, ako to urobiť, Je to spôsob, kde ste vlastne odpočítaním znaky. Takže chcem vám chlapci na druh prísť na to von. Prečo sa snažiť každý druhý? Tak to je prvý, na tretí a piaty. Pretože chcem, aby sa uistil, že hovoríme o všetkom, čo musíme hovoriť. Len som chcel povedať, jeden z dôležité veci to-- oh počkať, vy ste nevidel tento. OK tak sa prvé tri. Poďme to urobiť. Pretože máme hovoriť o modulo. Ja viem. Matematika je ťažké. Môžete použiť kalkulačku. To je v poriadku. Alebo vytiahnuť tabuľku ASCII, pretože budete pravdepodobne chcieť, že. V pohode. Tak som sa rýchlo prejsť vy cez to. Takže ľudia tabuľky ASCII vytiahol? Aká je naša číselná číslo pre malé písmo A? STUDENT: Sedem. ALLISON: Tak malé je 97 a veľké písmená je 65. Takže 97 mínus 65? Divákov: 32? ALLISON: 62, jo. Takže v tomto prípade, čo by to vytlačiť? To prvé? Ak máme percentuálne d, čo by to ukazovať? STUDENT: číslo. ALLISON: Sme tlače sa skutočné číslo. Takže sme vlastne deje vytlačiť 32 tu. A keby to bola percenta c, 32 by nám priestor. Tak pochopenie, že znaky môžu byť vytlačené ako hodnotách a ako skutočné znaky je naozaj dôležité, a platenie pozornosť skutočnej typy že tu robíme. V pohode. Takže pre každý druhý z nich, čo budeme tlačiť? STUDENT: znak. ALLISON: znak. V pohode. Takže ak vy chcete vedieť, tie môžu pracovať tie na vlastnú päsť. Ak máte problémy, napíšte mi. Ale druhý bude vytlačiť malé písmená b. Tretí z nich bude tlačiť veľká B. Štvrtá bude tlačiť z veľké písmeno C, a Posledný z nich bude malé písmená A. A posledná one-- sme vlastne deje sa dostať do toho, čo ten bláznivý percent znamenie dokonca znamená pár snímok. Tak skúste tie na vlastnú päsť. Ak máte problémy, príďte so mnou hovoriť. Ak ste zvyčajne vo Adams D hale, budete pravdepodobne zistíte, okolo mňa. Takže, atoi. Ako mnohí z vás videli toto funkcie alebo počuli o tom vôbec? Každý, kto? V pohode. Takže, čo to vlastne znamená pre ASCII na celé číslo. Takže to, čo môžete urobiť, je, s Caesar, pre tých, ktorí čítajú spec, budete robiť bodka lomítko Caesar potom, čo napísať program, a potom budete Vstup nejaké číslo, ktoré ste chcete zakódovať tajnú správu s. Ale ak si spomenieme, všetky naše Vstupy sú uložené ako reťazce. Je to tak? Máme arg obj pole to je všetko, typ string. Takže ak ste sa len snažím vytiahnuť, že jeden, bolo by si myslím, že jedna alebo čokoľvek číslo ktorú ste použili je vlastne charakter. Takže budete mať niektoré šialené výsledky. Takže ak sa skutočne chcú otočiť to na celé číslo ktoré môžete použiť na manipuláciu tvoje slovo, alebo vaša správa, budete chcieť použiť atoi. atoi len prevádza Váš string na int. Takže ak máme reťazec 12, keď zavoláme atoi na 12, alebo čo to je vstup, to bude skutočne vráti vám číslo. Nie je znak alebo reťazec 12. Čo, keď začnete dodať, že na čísla, bude veľmi líšiť, preto, že reťazec je 12 nejaké šialené číslo ASCII, ale číslo 12 je v skutočnosti 12, čo je to, čo chcete. Takže chcete, aby sa ubezpečil, používať atoi. Budeš chcieť tento v Caesar, pretože vás Potrebujete int dodané používateľ v príkazovom riadku. Ale keď dali ho do príkazu linka, je to uložené ako reťazec začať. Dáva to zmysel? Nemusíte nutne Potrebujem to pre Vigener. S Vigener, ako som povedal, pred, mali by ste vyskúšať a používať ASCII matematika, ktorá vyzerá skôr ako to, kde ste vlastne pomocou znakov, ktoré sme, ktoré ste dostali. V pohode. Každý, kto tam dobre? Úžasné. Tak modulo. Tak čo, ak ste daný toto obrovské množstvo cisárovi? Máte myšlienku, že ak ste na Z a ty si pridelené číslo dve, to znamená, že need-- Z sa stáva druhou List po sebe, že jo? Takže je potrebné nejakým spôsobom zabaliť okolo, a modulo je spôsob, ako to urobiť. Takže všetko, čo robí, je to vám dáva zvyšok o rozdelení Prvé číslo od druhého. A máme niekoľko príkladov aby to trochu konkrétnejší. Ale v podstate, môžete použiť modulo, keď sa chcú, aby sa niečo zábal okolo. Takže ak si chcete iba čísla jedna až osem, môžete použiť modulo na akýkoľvek iný číslo, a to bude vždy vráti číslo od nuly do ôsmich. Takže niektorí examples-- ak máme 55 modulo 10, to len vám dáva zvyšok 55 deleno 10, čo by bolo 5. A potom tri modulo päť, niekto hádať, čo by to bolo? Tri. Takže ak máte menší počet, než modulo, nemôže ísť rovnomerne. Je to nula. Tak to proste vráti číslo sám. Tak osem modulo osem by bolo? STUDENT: Zero. ALLISON: Zero. Vzhľadom k tomu, že ide v rovnomerne. 16 modulo 15? Divákov: One. ALLISON: cool. A potom to posledné, je len ukázať you-- môžete sa opýtať, OK, čo je poradie operácií tu? Páči sa delíme prvý? Máme modulo prvý? Takže modulo má rovnakú prioritu ako rozdelenie alebo násobenie, a jej ľavý asociatívne. Takže je to rovnakým spôsobom. Tie by vždycky zátvorky, potom násobenie, delenie, a modulo v poradí zľava doprava. Takže štandardné pravidlá. Proste to dať do rovnakej kategórie ako delenie a násobenie. Takže v tomto prípade, že by sme majú 1 plus 2 nám dáva 3. Vynásobíme to o 2, a tak sme si 6. Sme modulo, že 2, čo nám dáva? STUDENT: 0. ALLISON: 0. A potom pridáme 2, a tak sme 2 sa v tomto poslednom prípade. Takže modulo-- budete určite myslieť na spôsoby, ako začleniť že keď ste balenia okolo abecedy. Ak ste na Z a budete musieť presunúť odovzdal tri medzery sa dostať do C, tam je, že celý koncept na obal okolo. Tak som sa nechať na vy prísť na to, ako presne budete používať ju. Ale rozhodne užitočným nástrojom pre pset tento týždeň. Moc sa mi páči toto. To je jeden z mojich najobľúbenejších psets. Potom potom, čo robiť, Ak máte priateľov, môžete, rovnako ako, posielať si navzájom tajomstvo Správy a uistite sa, že to funguje. Vzhľadom k tomu, že to bude dešifrovať alebo čokoľvek. Veľa zábavy. A to je koniec sekcie. Som skončil skoro. Mám ešte 15 minút vy, takže ak tam je niečo, čo že by ste chceli ísť cez ďalej, bol by som rád, aby to urobil. Akékoľvek ďalšie otázky týkajúce sa Váš pset pre tých z vás, ktorí začali alebo si prečítajte špec. Čokoľvek, čo sme hovorili o poslednú hodinu 15 minút, ktoré by ste mi páčia na druhu odvar, by som rád. Alebo môžeme hovoriť, že to skončí, a môžete všetko opustiť a vziať viac cukríky so sebou as you go. Ale ak sú nejaké pretrvávajúce otázky, prosím, dajte mi vedieť. Môžete tiež prísť a so mnou hovoriť neskôr. Sľubujem, že nehryzú. Ešte niečo? Každý, kto je dobrý? Pocit každého z nás, ako oni môžu zvládnuť tento pset? Budeš v poriadku chlapci. Úradné hodiny sú tam z nejakého dôvodu. V pohode. V poriadku. No, v tom prípade, ďakujem vám všetkým moc za účasť. Dúfam, že sa budúci týždeň. K dispozícii bude viac cukroví. Tam by mohlo byť aj iné veci v pohode. A teším sa na získanie poznať všetky z vás v tomto roku.