[Prehrávanie hudby] ANDI PENG: Toto je CS50, a vitajte na týždeň dva oddielu. To je v skutočnosti, zatiaľ čo týždeň dvaja z našich class-- Vlastne, Prvý týždeň sme mali bod. Show rúk, koľko z vás všetkých prišiel sa do super sekcie minulý týždeň? OK, to je v poriadku. To je v poriadku. Ako mnohí z vás sledoval Super časť minulý týždeň? OK. A vy ste urobili v pohode Na problém nastaviť jednu? Takže budem brať tak, že máme partia naozaj inteligentných detí V tejto triede a veci bude v poriadku. OK. Tak first-- Po prvé, sme len tak krátko ísť cez agendu na dnešok. Porozprávame sa o kurze logistike. Mnoho z vás asi S otázkami týkajúcimi sa , Ako to beží v tomto kurze. Budeme na ne odpovedať. Chystáme sa krátko prejsť slučky v prípade, niektorý z vás minul Super sekcii. Porozprávame sa o mapovanie ASCII. Porozprávame sa o poliach, funkcie, argumenty príkazového riadku. A konečne, čo vy asi všetci Naozaj chcem byť tu a dozviete sa o, je vaša pset2. Budeme mať nejaké pekné triky a tipy na to, ako to urobiť. OK. Tiež, za druhé, máme veľa cukroví tu. Každý, kto má rád sladkosti, len prísť sem. Chyť niektoré z nich. Mám veľa. Máme tonu v kancelárii. Ja naozaj nechcem jesť sladkosti celý deň. Mali by ste zjesť všetky sladkosti, Vzhľadom k tomu, priniesol som tu pre vás. Len jesť sladkosti. Bude tam cukroví každá časť. Takže najprv, kto som? Volám sa Andi Peng. Ja som hlava TA CS50 tu v Yale. A okrem že budem tiež be-- ak by sa niekto jako-- bežiaceho kamaráde, vaše rameno k plaču na. V prípade, že noc pred Due vášho pset je, Máte tušenie, čo sa deje, hit me up. Budeme spolu poľutovať, et cetera. Len viem, že som tu ako zdroj pre vás ako predné línii ktorý vám pomôže zistiť, ako chlapci k riešeniu problémov v CS50 a mimo neho. Môj email je andi.peng@yale.edu. Budem tiež vyslať jednotlivca e-mail so svojím telefónnym číslom v ňom takže nie každý na internet môžete pozrieť na moje telefónne číslo. Neváhajte mi zavolať kedykoľvek. Vážne, môj telefón je zvyčajne sa viazal k ruke. Aj nemusí zodpovedať behom pár minút. Aj nesmie reagovať do pár hodín. Ale môžem vám zaručiť, ak je ste mi e-mail, ak sa mi hovoriť, textové ma, budem reagovať do 24 hodín. Častokrát, budem reagovať skôr že, pretože chápem, že každý má nejaké problémy, a chcete, aby vaše odpovede potrebné zodpovedať veľmi rýchlo. Avšak, ak zavoláte me 30 minút pred že kus, ktorý je kvôli štvrtok night-- byť ako, Andi, pomôžte mi, Nemám started-- môžem dať vám, že rameno k plaču na. Ale to môže byť čas premýšľať o tom, Ako to urobiť, že nabudúce. OK. Oops. Ako sa môžem vrátiť? Tam sme ísť. Takže v tomto kurze, máme ton podpory pre každého. Okrem práve sekcia, ktorá sem vás každý týždeň tráviť 90 nádherné minút so mnou, máme tiež úradné hodiny. Koľko z vás má už bol na pracovnú dobu o pomoc? Skvelé. To je naozaj dobré vidieť, pretože sme má tím viac ako 45 TA a CAS trénoval na tento kurz, ktorý sa tu za pomoc vám chalani s vašimi psets. Mondays, že sú držané v TEAL trieda v 17. Hill House tu na Yale. Utorok a vo štvrtok, oni sa konala v commons. 8:00 do 11:00 skoro každý všedný deň. Poď, poď von. Akýkoľvek problém, nie problem-- Len poď, a potom budeme vám pomohol von s tým. Po druhé, okrem úradných hodinách a profily, máme aj šortky. Má niekto niekedy videl pár z šortky alebo návody vo videách na webových stránkach? OK. Takže sú naozaj, naozaj užitočná. Naša krásna produkcia Harvard tím tamto na tej škole up na sever, oni natočili a produkoval Tieto neuveriteľné Walkthrough videa. Budú vás krok za krokom ako ísť o riešenie problému. Častokrát, ak ste zmätení o jednoduchý koncept, ojedinelá koncepcia, sa pozrieť, pretože sme pravdepodobne krátka na to niekde na našich webových stránkach. A je to zvyčajne skvelý zdroj hľadať, keď ste prvýkrát stratil o tom, ako zvládnuť problém. Po tretie, máme tiež study50 a reference50. Tak štúdie 50 na webové stránky je len odkaz. To je, myslím, study.cs50.net alebo niečo také. Len to google. Máme veľa snímok pripravených. Máme veľa šortky a walkthroughs-- veci všetky zostavené veľmi pekný a čistý pre vás všetkých prechádzať, vidieť žiadne koncepty že ste zmätená o. To by pravdepodobne pokrytý tamto study50. Reference50-- podobné. Máme veľa rôznych poznámok ľahko dostupné pre dispozícii. A konečne, máme to, čo je volal CS50 Diskutovať, fórom, na ktorom, v prípade, že noc pred robíte vaše problémy, hovoria, máte nejakú otázku. Prihláste sa do CS50 diskutovať. Pošlite svoju otázku. A potom jeden z hundreds-- Možno, thousands-- rovesníkov pričom tejto triedy on-line sa prihlásiť. A možno niekto môže dostať vaša odpoveď pred TA. Je to v podstate len on-line fórum, ktoré môžeme všetci použiť diskutovať o naše problémy. To je super. OK. Takže problém sady. Chystáme sa priamo v tučný problému set dva. Mnohí z nás už sa snažil prostredníctvom problému nastaviť jeden. Už vieme, že snáď čakajú na poslednú noc, aby sa váš pset nie je nejchytřejší vec v CS50. Tipy a tipy v podstate pre Úspech je prečítať celý špec. Koľko z vás má už čítať spec pre pset 2? OK. To je pevná čiastka. Viem, že vy ste pravdepodobne uznané teraz sú špecifikácie sú naozaj dlhé. Sú to naozaj, naozaj dlho. Je to naozaj ťažké čítať každý riadok tohto starostlivo slovo za slovom. Ak chcete len zbierať tam, kde to vám povie, aby ste niečo urobili. Môžem vám zaručiť, nerob to. Ak to urobíte, budete pravdepodobne bude chýbať niekam kde to vám povie ako začať problém alebo vám to povie, čo má meno váš problém alebo to vám povie, To je pravdepodobne najlepší spôsob, začať robiť váš problém. A potom budeš stratený. Pri pokuse o čítanie vašich spec v polovici, veľa dôležité information-- v tom, že nie ste bude môcť naozaj prístupom. Tak si prečítajte celý špec. Skúste si prečítať celý spec Než prídete do oddielu, preto, že potom, keď sme hovoriť o pset, my všetci môžeme mať predstavu o tom, čo sa deje. Po druhé, to je pojem že budem rád odkaz veľa priebehu semestra. Ale v podstate, zídeme na polceste, je to tak? Ja, ako TA a Jason ako kurz Manažér a Scaz ako profesor a Dávid ako profesor a všetci ostatné krásne TA v tomto kurze, asistenti v tomto course-- budeme v našich silách, aby bolo zaistené, že sú nastavené až uspieť v tomto kurze. Budeme sa držať oddiel. Budeme sa držať úradné hodiny. Budeme odpovedať na váš telefón hovory, odpovedať na vaše e-maily, urobiť všetko, čo je v našich silách, aby sa že vaše otázky sú zodpovedané. Avšak, pomáhajú nám príliš. Zoznámte sa nás na polceste. Ak prídete do úradné hodiny nie mať uplynulý k bodu, nie mať videný prednášok ,, ktoré nemajú predstavu, čo sa deje, bude ako, pomôž mi. Ja budem rád, dobre, je mi ľúto. To môže byť čas, aby požičiavať že rameno k plaču na, pretože si nie som istý, čo môžem urobiť, aby vám pomohol ak nechcete skúsiť aspoň pomoc si trochu na začiatku. Zoznámte sa nás na polceste. Viete, príďte pripravení odpovedať a získať pripravení sa zapojiť do materiálu. To robí veci tak moc jednoduchšie pre všetkých zúčastnených. Jo, to je celkom veľa to. Triedenie. Takže na osnovy, je to celkom do hĺbky o tom, ako triedy. Ale v podstate, členenie v tomto je 50% z vašej triedy budú psets, ktoré je krásne, pretože to je kde trávite drvivá väčšinu svojho času na kurze. Kvízy 40%, a vaše záverečný projekt bude 10%. Dve budú kvízy celej Priebeh semestra. Myslím si, že časy a dáta sú tiež uvedené na osnovy. Spôsob, akým budeme byť triedenie svoje psets je to, že majú v podstate štyri hodnoty, ktoré sme priradiť každej platovej triede. Máme hodnotu rozsahu, správnosť, dizajn a štýl. Takže ako vidíte, že je to druh našej Vzorec pre výpočet psets. Tri dávame najviac hmotnosť na správnosť, pretože samozrejme svojim trénerom by malo byť testovanie pre prípady že chceme, aby testovanie. Vy všetci majú check50 k dispozícii. Je to veľmi užitočná funkcia že vy môžete všetko nahrať svoj kód na naše servery, kde budeme kontrolovať to za vás. A ste videli tie, zamračený tváre, smajlíky. Sú to naozaj, naozaj užitočné. Prosím, byť študent, ktorý rád pokusov hardcode všetky odpovede na ne. Určite som videl pset kde niekto videl všetky hodnoty check50 a oni len pevne dané, ak in-- toto číslo, tlačiť toto číslo. Ak je tento počet, vytlačte tohto čísla. Nerob to. Aj keď technicky check50 je správne, váš spôsob riešenia Problém je, nie je správne. Takže stačí použiť check50 striedmo. Ale tiež uistiť, že ste pochopiť, ako to funguje, program funguje okrem check50, pretože nemôžeme testovať každý možný prípad check50. Budeme testovať niektoré z nich. Dizajn je v podstate, ako dobre navrhnutá je váš kód? Ak ste copy-vloženie násobok riadkov kódu mnohokrát. Možno, že nemáte dosť najlepší dizajn v kóde. Možno je na čase, aby dodať, že slučky. V podstate, tu je to proste všetko o snahe urobiť svoj kód, sa snaží napísať svoj kód, ako efektívne ako je možné, aby váš program beží tak rýchlo ako sa dá. A konečne, máme štýl. Takže štýl je trochu ľubovoľná, subjektívne pojem. Viem, že sme oficiálne mať štýl 50 sprievodca pre CS50, kde to vám povie, ach, tie by mal mať priestor tu. Mali by ste aký formát váš kód týmto spôsobom. Tie by mali vymenovať veci týmto spôsobom. Nemám naozaj jedno, samo o sebe, ako zvolíte štýl svoj kód, tak dlho, ako si pobyt v súlade. Napríklad, ak chcete zanechať medzeru po svojom štyroch pred štyrmi slučky, len to, že zakaždým. Nepoužívajte druh robiť. Nerob to inokedy. Ak si chcete udržať kučeravé traky priestor určitým spôsobom, Vždycky to urobiť takto. Nepoužívajte druh to niekde tu a tam niekde nie. Keď sme triedenie, je to naozaj ťažké keď mám tušenie, ako ste formátovanie kódu, veci sú šialený a na mieste. Ak máte len držať to konzistentné, je to oveľa jednoduchšie pre mňa ako väčšie aby bolo možné prečítať váš kód. Je to oveľa jednoduchšie pre vás ako študent aby bolo možné prehliadnuť kódu a vidieť, čo je zlé to lomítko prečo tam problémy. Štýl je jedna z najjednoduchších vecí, vy môžete urobiť, aby sa plný skóre. V podstate, ak ste práve jedno, pokiaľ platíte päť minút pozornosti aby váš kód každý týždeň, mali by ste sa dostať plný štýl bodov. A konečne, máme to, čo sa nazýva multiplikátor rozsah. Scope-- Viem, že je to veľký slovo, a to najmä v tejto triede. Ale rozsah, všetko to znamená je to, že sa snažíte sa psets, ako najlepšie svoje schopnosti. Ak zapnete v troch out z vašich štyroch problémov a ani pokus o posledný z nich, budete pravdepodobne prehrá nejaké body na rozsahu. Dokonca aj keď si len začať problém, robiť to najlepšie, ísť cez neho. Aj keď to nefunguje, zapnite ho v, pretože to ukazuje a dokazuje, nám, že sa snažíte, aby ste sa pokúsili problém set ako najlepšie svoje schopnosti. A potom vám môžeme dať plný počet bodov pre oblasť pôsobnosti. Rozsah je tiež veľmi dôležité, keď sme my hovoriť o najnižším pset skóre poklesom. Takže v priebehu z semester, vy chlapci majú deväť psets. A my bude skutočne klesá najnižší výsledok z tých deviatich, ale iba ak máte plnej šírke bodov. Takže ak sa dáte v neúplnej pset, bohužiaľ, nemôžeme klesnúť, že jeden, Pretože váš rozsah body neboli dokončené. Takže aj keď máte hrozný týždeň kam umieranie a ste chorá alebo Váš pes zomrie, vaša mačka zomrie, a vy ste preťažené s domácimi úlohami, Len pokus o pset. Urob to, ako najlepšie svoje schopnosti. Ak to nefunguje, na tom nezáleží. Stačí zapnúť ju. Prinajmenšom môžeme dať vám body za snahu. A pre úsilie v tejto triede. V najmenej najnižšieho bodového pádu pre úsilie. Tak jo. To je celkom veľa to. Má niekto nejaké otázky tak, ďaleko na tom, ako ročníka v triede? Alebo niektorý z nich? Niektoré z nich tak far-- profily, úradné hodiny? Super. OK. Tak to je téma, ktoré nie je človek naozaj rád hovoriť. Nemám naozaj rád o tom hovoriť. Vy ste naozaj nechceme počuť ma hovoriť o tom. Ale bohužiaľ, my všetci musí o tom hovoriť. David strávil 20 minút prednáška o tom hovorí. A to je predmetom akademické poctivosti. Takže sme všetci tu pravdepodobne písaný esej niekedy v našom Yale kariére. Sme pravdepodobne dostali rozhovor, kde sme bolo povedané, že nebude napodobniť svoju esej, pretože práca nie je naša. Vo vede o počítačoch, máme rovnaký druh konceptu. Všetky práce, ktoré odošlete, všetko kód, ktorý napíšete by mal byť kód, ktorý ste napísali. Nemalo by to byť kód, ktorý ste si skopírovaný z niekde inde. Nemalo by to byť kód, ktorý ste googled a zvalil na a nemáte naozaj vedieť, či to funguje. Tie druh mať zmysel čo to robí, ale nie tak celkom. Ak si nie ste istí, v podstate, je to len byť rozumná. Na našich osnov, máme celý zoznam vecí, vidíme za primeranú oproti nie je rozumné. Napríklad, rozumný je vy a váš priateľ o tom, čo je najlepší spôsob, ako ísť o logicky riešenie problému. To je celkom rozumné. To, čo by nebolo rozumné, je, ak vás chlapci sa dali dokopy, zadali rovnaký kód, a obrátil sa v rovnakom kódu. To nie je rozumné. To isté, druh eseje. Ak chcete diskutovať so svojím priateľom, hej, To je to, čo chcem písať. To sú kroky, ktoré som si chcú trvať, než písať o tom, skvelé. To je nádherné. Prosím, navzájom medzi sebou spolupracujú. Ak vy začať píše to isté, otáčať v rovnakom eseji, to je menej v poriadku. Takže v prípade pochybností, proste nerobte to. Tu sme v CS50, máme skripty že beh automatizovať testovanie nielen správnosť kódu, ale aj jedinečnosť kódu. Takže prosím, nedávajte nám v polohe aby musel postúpiť svoj prípad k EXCOMM. Prosím, len tak pre každého, nech to jednoducho aby to nádherný zážitok. Každý, kto sa učí lepšie, my všetci sú šťastnejší, a my sme všetci nastavený tak, aby uspieť v tomto kurze. Niečo, čo je to veľmi jedinečné o tejto triede že Myslím, že každý by mal naozaj venovať pozornosť, je, že máme čo sa nazýva ľútosť klauzula v našich osnov. Takže v podstate, do 72 hodín, v prípade, si myslíte, že ste urobili niečo si nie ste úplne istý bol vhodné, prosím, poď k nám. Sľubujeme vám, že do 72 hodín budeme spracovávať prípad sami bez odkazu na vyššiu autorita v administrácii. Takže ak ste prišiel ku mne a povedal: Andi, hej, je mi naozaj ľúto, ale myslím, že je pár riadkov v My Kód včera v noci, že som tak trochu googled, vystúpil z Stack Overflow, kopírovať a vložiť, a ja som naozaj, naozaj ľúto o tom, dajte mi vedieť. Prosím ťa, nechaj to hnisať a len dúfam, že som to chytiť. Budeme ho chytiť. Stačí prísť ku mne. Dajte mi vedieť do 72 hodín. Budeme vymyslieť riešenie. A sľubujeme, že nebudeme odkazovať na univerzitné orgány v podstate. Takže je to vo vašom najlepšom záujme len byť úprimný s každým ktoré sa podieľajú na priebehu. OK. OK. Takže teraz, rýchlo, ako Aj ďalej, má niekto S otázkami týkajúcimi sa logistiky o tom, ako kurzoch budeme prevádzkovať, ako úseky idú spustiť, niečo z toho? OK. Jo. Divákov: [Nepočuteľné]? ANDI PENG: Jo. Tak quizzes--, ako mnohí z vás sú v sekcii pondelok / streda? Ako mnohí z vás sú v utorok / štvrtok? OK, tak je to solídny rozkol tu. Takže spôsob, akým sme sa spustiť je to na Yale je, že sme budú mať dva oddelené quizzes-- jeden pre každú section-- že budú prijaté počas vyučovania. Myslím, že je október, koniec októbra, niečo také, ako jeden týždeň v kvíze. Jo, takže stačí prísť do triedy. Na tomto pondelok alebo v stredu, budete mať kvíz. Na tomto utorok alebo vo štvrtok, budete mať iný kvíz. Ale rovnaký materiál sa bude vzťahovať. Jo. Dobrá otázka. Jo. Divákov: Kam ísť na kontrolu našich známky? ANDI PENG: Jo. Tak som sa Rozoslať e-mail, čo každý týždeň keď kvízy sú graded-- alebo, Ospravedlňujem sa, ak psets sú odstupňované. Psets sú zvyčajne sa napoludnie alebo v piatok. Tak som sľúbiť, že budem pokúsiť sa dostať späť k vám podľa poludnie nasledujúceho piatok. Kedykoľvek som Grade A pset, pošlem out oznámenia na stupni knihe že vám povie svoje skóre si môžete prezrieť on-line. Takže hneď tento týždeň po tom, čo som dokončiť triedenie minulého týždňa psets, vy dostanete e-mail Oznámenie tí, hej je to kde na vás go zobraziť svojej triedy. A môžete vidieť každý rozpis svojich tried. Môžete vidieť pripomienky. Oh, rýchla vec tiež. Komentár Sekcia v veľký kniha je miesto, kde budem asi trávi väčšinu svojho času triedenia. Takže jedna vec, ktorá je naozaj dôležité, keď chlapci prezeráte Vaše stupňa na vašom psets nie je len hľadá na fyzické skóre ale tiež, že čas na naozaj čítať moje komentáre. Často, ktorý vám dáva spätnú väzbu o tom, ako ste riešenie problému. Ak potrebujete urobiť, niečo, čo trochu lepšie, konštruktívna kritika je zvyčajne najlepšie podať v týchto komentári časti. Takže, prosím, prosím, ja idem tráviť čas písať komentáre. Prosím, by som naozaj si to vážim či vy by čítal tieto pripomienky. OK. Super. Dobre. Tak sme sa chystáte začať hovoriť a len preskúmanie rýchlo niektoré z materiálu z týždeň nula len tak sme na pravej strane pre začínajúce problémy tento týždeň. Takže zatiaľ čo slučka je jeden z troch druhov slučiek sme diskutovali skôr v tejto triede. Slučka while nevyhnutne je písaný v syntaxi kde, zatiaľ čo určité stavu, to opakovane, že jo? Myslite na to v tejto grafike tu. Budete začínať vo určitý bod v kóde. Budeš vstúpiť do stavu slučky if-- Nemám víš-- x je menšia ako jedna. Ak je to pravda, budete na vykonanie tela slučky. A budete ďalej robiť že opäť, znovu, nad a over-- čo je dôvod, prečo je to loop-- kým sa váš stav sa stáva false. Takže týmto spôsobom, while je jedným zo spôsobov, ako jednoduchších písať nejaký druh podmienky, že je potrebné opakovať znovu a znovu a znovu. Len si dajte pozor, kedykoľvek píšete nejaký druh slučky že máte stav výstupných rovnako ako aktualizáciu bez ohľadu na to je tak, aby vaše slučka nie je len spustiť znovu a znovu donekonečna. V každom prípade, budete si chcete byť istý, že meníte nejaký aspekt kódu alebo na konci slučky len aby sa uistil, že máte spôsob, pre pokrok v dosahovaní stave že chcete stretnúť na koniec. Znamená to, že zmysel pre všetkých? My jednoducho nechcem byť zmieta v tejto špirále kde ideme dokola a dokola a neexistuje žiadny spôsob, ako prelomiť slučky. A každý v podstate slučka má spôsob, ako robiť to. OK. Po druhé, mnohí z vás vo vašich Mario psets pravdepodobne musel zamestnať tento typ slučky. To je nazývané robiť, zatiaľ čo slučka. Po prvé, môže mi niekto povedať, aký je rozdiel medzi úlohami while a keď je slučka? Jo. Divákov: Kutil while beží na prvom [nepočuteľných]. ANDI PENG: Jo, presne tak. Takže robiť, zatiaľ čo slučka vždy robí, čo je vnútri úloh, v zátvorkách tam a robí, že podmienka pred kontrolou the-- ľúto, Znamená to, že kód pred kontrola pre podmienku. A to je obzvlášť dôležité pre nás tu v tejto triede, pretože väčšina časy budeme chcieť vyzvať užívateľ na nejaký vstup. A potom, v závislosti na vstupné dávajú nám, potom môžeme hodnotiť, oh, robiť musíme ich znova výzvu? Takže Mario, pokiaľ užívateľ vám dal negatívne výška, napríklad, budete na prvý riadok a robiť, čo je vo vnútri. Potom budete kontrolovať chvíľu. Viete, je negatívny 1, je skutočnosť, že kladné číslo? Ak to nie je, ja idem dozadu a opakujte robiť a opakovanie a opakovať a opakovať, pokiaľ nebudú Nakoniec vám číslo, ktoré sa vám páči, že všetci môžeme použiť v našom kóde. Je to docela dôležité, v podstate žiadny vstup užívateľa. Môžem vám zaručiť, akýkoľvek tentoraz v pset kde Vás žiadame o vstupe nejaký druh kódu, my sme pravdepodobne bude, aby vám test prípad, v ktorom sme dám ti niečo zlé, že je to pokúsi zlomiť váš kód. Ak sa pokúsime vás opýtať na vstupnej an integer, môžeme len dať reťazec a uvidíte, ako by ste zvládnuť. Ak by sme vás požiadať, aby ste zamestnať veku, vám môže dať záporné číslo vidieť, ako by ste zvládnuť. Len sa uistite, vy ste testovaním prípady, v ktorých sa nechcete dostať to najlepšie vstup, povedzme. A robiť, zatiaľ čo slučka je často najlepšie spôsob, ako navrhnúť svoj kód tak, že spĺňa tento odbor. OK. OK. Takže to je pravdepodobne najviac Komplex slučka z troch že sme sa pozrel na tak ďaleko. A zdá sa, veľmi desivé na prvom mieste. Ale ja vám zaručiť, akonáhle vami dostanete na kĺb, ako používať pre sláčiky, je to jedna z najužitočnejších vecí, najužitočnejších nástrojov vo vašom arzenálu pre posun vpred v tejto triede. Tak napríklad, v Scratch, mali sme tento veľmi jednoduchý blok že práve povedal zopakovať isté vety určitý počet opakovaní. Mimochodom, SAJ-- to je Scaz Andi Jason. My často podpísať naše e-maily Saj. Ak hovoríme, Saj, nenechajte sa zmiasť. To len my. Takže Scratch, sme boli schopní mať blok, ktorý povedal, opakujem Milujem Saj! 10 krát. Veľmi jednoduché. Logika, že je veľmi, veľmi jednoducho, že? Chcem najprv prejsť prvý čas a vidím, druhýkrát a vidím, tretíkrát, tak ďalej a tak ďalej, kým nenarazíte na 10. A tak, ako by sme si predstavovať, že v kód je len pomocou jednoduchého pre slučky. Takže, budete deklarovať Váš variabilný tu, v tomto prípade, s int. Budeme sa volať to aj. Chystáme sa inicializovať ju na hodnotu 0. A zastavenie vydania je bude aj je menšia ako 10. A aktualizácia bude aj ++. A v rámci slučky, bude to vykonať až nakoniec ju narazí na koniec condition--, v ktorom prípad, že to bude prerušenie slučky. Tam by mali byť veci, ktoré vás chlapci majú všetky druhy nevideli a musel urobiť pre váš problém nastaviť jeden. Má niekto nejaké otázky, pokiaľ ide o slučky práve teraz? OK. Skvelé. OK. Takže pre tých z vás, ktorí majú prečítajte pset spec pre tento týždeň vieme, že budeme musieť zamestnávať niečo, čo nazýva ASCII a ASCII tabuľky. David v prednáške prešiel krátko ako počítače essentially-- všetko je kódovaný v počítači binárne, v núl a jednotiek. A tak, že počítače sú schopné ukladať rôzne hodnoty navyše sa núl a jednotiek sú prostredníctvom mapovania tieto čísla reprezentovať ďalšia číslica alebo v podstate iné znaky. Takže v tomto prípade ASCII table-- všetko, čo robí je mapa znakov alebo znakov, na čísla. Takže súboru zdrojového kódu v Váš computer-- to vidia, hej, partia núl a jednotiek, nuly a jednotky, nuly a jednotky. To je to, čo sa skladuje v skutočné pamäte vášho počítača. Ale keď my ľudia chcú komunikovať s počítačom, my want-- hovoriť, napríklad, ak chcem veľké písmená A, Budem potrebovať nejaký spôsob, rozprávanie počítač, oh, keď som typ s veľkým písmenom A, mám na mysli toto zastúpenie v binárnej. A tak spôsob, ako to urobiť, je hodil ľubovoľná, čomu sa hovorí tabuľku ASCII, kde sme, ako ľudia, as programátori, pred nejakým časom, sme sa rozhodli, že svojvoľne sa chystá priradiť tieto čísla Hodnoty týchto znakov. Takže vy môžete google tento online. Myslím si, že je tu odkaz na neho vo vašom pset-- len mapa ASCII tabuľky, ASCII stôl. Jednoducho to prekladá binárne Čísla do znakov. A to bude veľmi užitočné pre váš problém set kedykoľvek budete chcieť spočítať niečo, alebo ak vás chcete zobraziť určitý znaky alebo celé čísla alebo manipulovať určité znaky. Bude to veľmi dôležité, že ste všetci vedieť, ako sa orientovať tabuľku ASCII. Tak napríklad na veľké písmená A je reprezentovaná počtom 65. A malá je zastúpený 97. Preto je dôležité vedieť, že Rozdiel medzi týmito dvoma hodnotami je 32. Častokrát, ak potrebujete previesť z vzájomne k sebe, je rozdiel 32. A nebojte sa, ak ste typ zmätený o tom na prvom mieste. Pôjdeme nad tým, ako by sme zamestnávajú to v skutočnom kóde. OK. Takže pre tých z vás, s notebookmi von, neváhajte a vytiahnuť tabuľku ASCII, preto, že tieto budú pravdepodobne vyžadujú vy odkazovať aké postavy sú. OK. Tak s vedomím, že určitá Pre znaky na určité čísla, keby som bežať len prvý riadok, ktorý code-- printf A, malé písmená a, mínus veľké písmená A. Má niekto majú hádať o tom, čo by bolo vytlačiť z obrazovky práve teraz? Tak v prvom rade, čo robí Malé písmená predstavujú? To, čo je to číslo zakódovaný v tabuľke ASCII. Prosím? Divákov: 97? ANDI PENG: 97, veľký. A čo je s veľkým písmenom A? Divákov: 65. ANDI PENG: Takže to, čo je 97 mínus 65? Divákov: 32. ANDI PENG: OK. Tak čo vy na to bude stane, keď vstup, ktorý riadok kódu do môjho počítača? Divákov: [Nepočuteľné]. ANDI PENG: Je nám ľúto, ozvite sa. Bez obáv. Jedná sa o veľmi bezpečný životné prostredie, bez fotoaparátu. Všetci budeme to-- bez starostí. Len my všetci budeme predstierať, že je to len my schladenie v tejto miestnosti. Bez obáv. No otázka je príliš hlúpy. Žiadna odpoveď je hlúpa odpoveď. Som asi bude robiť chyby V priebehu môjho učenia. Vážne, chlapi, len rýchlo odpovedať na to. Buďte si istí, v sebe, vieš? Tak čo to bolo? Kto povedal, že posledný odpoveď? OK. Shout, že pekné a jasné. Divákov: 32? ANDI PENG: 32. OK, poďme spustiť tento kód a uvidíme, či to je to, čo sa stane. OK. Tak ako vy môžete druh vidieť, typické notáciu som nastaviť tu, ako by sme zamestnávame nejaký druh programu v našom počítači. Máme hlavnú funkciu v našej hlavnej funkcie. Ja som jednoducho ísť na kopírovanie a vložte tento riadok kódu. Rovnako buďte opatrní, keď chlapci kopírovanie a vkladanie kódu. Niekedy sa niektoré subjekty nemajú vložiť cez správne. V tomto prípade je mínus znamenie bol vlastne pomlčka. A tak sa počítač ani si to vyzdvihnúť. Takže som sa musel vrátiť a fyzicky prepíšte to. Len si dajte pozor, keď vy robíte to. OK. Chystáme sa spustiť toto. Takže ideme na CD do nášho section2. Zvolal som tento program asciimath. Takže pamätajte, že keď sme sa spustiť niektorý Program, chceme najprv skompilovať spustením to prostredníctvom našej značke. A potom chceme skutočne spustiť Program tým, že robí DOT-lomka. Takže budeme ./asciimath. Dobre, ideme tam. A vidíme, 32. Výborne. Zaslúžite si cukrík. Candy pre vás. Prepáčte. Dobre. OK. Takže sa môžeme vrátiť k nášmu príkladu tu. Aah, no. Aah. OK. Ja som jednoducho ísť, aby to takto. OK. OK. Tak ako vy môžete vidieť, môžeme to urobiť veľa veľmi zaujímavých vecí, veľa veľmi cool vecí, veľa veľmi komplikované veci zahŕňajúce Znaky a čísla ASCII. Akonáhle sa dostanete dole na linku päť, to je veľa sledovať spolu. Nebudeme ísť prostredníctvom sekcie. Neváhajte a, pokiaľ je to možné, Dôvod, prečo na papier najprv o tom, čo by malo byť deje, keď zadáte taký reťazec hodnôt. Napríklad, v tomto poslednom riadku, máme Z-, ktorá predstavuje určitý number-- je-- čo tiež predstavuje niektoré number-- navyše 1 módulos 26 a malé písmená a. Ak ste chlapci čítať ďalej Cez tieto, vám môže vidieť vzor prísť v Ako sme manipuláciu kód. Veľmi, veľmi naznačujú po časť vy všetci chlapci do toho pustite a vstup Všetci, ktorí vo vašom počítači a uvidíte, aký druh Čísla sú coming out a úvaha, prečo cez to sú deje, pretože pre vaše psets bude to naozaj dôležité, aby ste pochopili prečo niektoré veci sa dejú. Všetky tieto diapozitívov bude on-line. Takže žiadne obavy o snahe fyzicky kopírovať si poznámky. Všetko je online. To samo o sebe časť bude on-line. Celý môj zdrojový kód, ktorý Bežím bude on-line. Jo. Vedeli ste stále máte otázku? Divákov: Čo je módulos? ANDI PENG: OK. Takže modulo je operátor, ktorý to bude byť dosť dôležité pset vašich chlapci Detské sem. Takže spôsob, že prevádzkovatelia v C a v programovaní práci je to, že ste to, čo sa nazýva Divízie symbol a symbol modul, čo je rovnako ako znak percent. Tak v C, keď budeš robiť celé číslo deleno celé číslo s lomkou, C má tendenciu chcete znížiť off všetky desatinných miest, preto, že celé číslo chce previesť na celé číslo. To nebude chcieť byť double s partiou desatinné všetko po ňom. Takže ak mám 3 delené 2, bude to odrezať 0,5 a len dať 1. Tak to je niečo, čo bude veľmi opatrní, keď ste robí nejaký druh matematiky v programovaní, je to, že čísla dostanete nemusí byť čísla že ste si mysleli, čo je dôvod, prečo zaokrúhľovania vo vašom Posledná pset je tak dôležité. Modulo vám dáva zvyšok. Tak napríklad, ak som urobil 3 modulo 2-- tak 3 percentá znamení 2-- to by vám na zvyšok tohto. Takže 3 deleno 2 je 1.5. Je to 1 Zvyšná časť 1. To by vám na 1, ktorý je na zvyšok tohto. Takže keď vy ste v pohybe zo stola ASCII, modulo skončí na niečo, čo je veľmi dôležité, a budeme diskutovať, že neskôr. OK. Takže niečo, čo je pekná, docela nový a dosť jedinečné že sme o tom hovorili týždeň koncept toho, čo je pole. Takže pole je prvá druh dátové štruktúry že budeme stretávajú v tejto triede. Všetky dátové štruktúra je, je nejaký svojvoľný, doslova veci, ako je štruktúra že my ako programátori vytvorili, že sme vložili do nášho kódu, ktorý môže obsahovať ďalšie kusy kódu. Takže v tomto zmysle, array-- myslieť na to ako kartotéke, kde ak otvoríte iný police z vášho kartotéke, máte prístup rôzne veci. V pamäti, pole je len to, to isté na vašom počítači. Môžete mať rôzne blocks-- my nazývajú indices-- z poľa. Je to rovnako ako blok, policu pamäte že sme vytvorili v rámci svojich počítač, ktorý môžete zadať niektoré veci v rôznych priestoroch. Takže s množstvom, vy vždy musí specify-- musíte zadať deklarovaní poľa v nasledujúcom formáte. Budeš ako prvý určiť typ dát že chcete vytvoriť z poľa. Ak chcem pole celých čísel, Ja dám int práve tam. Ak chcem pole reťazcov, Chystám sa dať reťazca tam, meno vášho poľa, a potom budete mať hranaté zátvorky. A vo vnútri hranatých zátvoriek, že ste bude mať veľkosť vášho poľa. Niečo, čo je naozaj dôležité, majte na pamäti pri vytváraní polí je to, že akonáhle sa vytvoriť poľa, sa táto veľkosť nezmení. Takže ak viete, že práve teraz Máte poľa veľkosti 10, viete, že budem mať 10 buniek počas alebo 10 ukazovateľov v rámci tohto poľa, a to nikdy rozšíriť alebo zmenšiť bez ohľadu na to, a že je tu v súčasnosti len 10 blokov priestoru pridelené v pamäti, ktorá môže uložiť do 10 vecí, o čo ste dal. Takže týmto spôsobom, typ dát pole, dátová štruktúra, ktorá je pole je veľmi odlišná od niektorých iných budeme pokrývať neskôr v tomto kurze. Jo. Napríklad, ak ste chceli vytvorenie poľa veľkosti 3, ktoré obsiahnuté premenné integer-- oh, prepáč, z temperature-- a teploty, z Samozrejme, že je celé číslo. Takže by sme vytvárať int, čo je dátový typ, čo chceme uložiť. Budeme volať toto teplotám kvôli nomenklatúry pomenovanie niečo, čo sme všetci pochopili. A budeme mať hranaté zátvorky. A chceme tri čísla. Takže ideme dať Tri vnútri nej. Niečo, čo je naozaj dôležité mať na pamäti, je to, že pole sú indexované nulu. Všetko, čo znamená, že vás začať s indexom 0, a spúšťať prostredníctvom Veľkosť poľa mínus 1. Tak napríklad tu, sme majú celý rad veľkosti 3. Bude to byť schopní držať tri hodnoty. Ale čísla, ktoré themselves-- číslo, pole, že index, polia, sú 0 až 2. Tak chlapci, byť naozaj, ale naozaj opatrný, keď idete do vašich problémov stanovených a vytvoriť nejaký druh poľa, pretože mnoho časov to je naozaj, ale naozaj ľahké zabudnúť, že. Ja vlastne nemám index 3, a to v súčasnej dobe práve ja majú index 2. A ak sa pokúsite Prístup tretie index, že to bude to, čo je volal null zakončenie. Nebude to v skutočnosti existujú v matici. A je počítač nebude páčiť, že. Takže buďte opatrní, kedykoľvek máte prístup k veci, len aby zabezpečili, že si pamätáte že polia sú nula-indexované. OK. Takže prvý príklad je len Jeden spôsob, ako vytvoriť pole. Druhý príklad mám Nižšie je len samostatný spôsob vytvorenie toho, čo je rovnaké dáta štruktúra, ktorá sme práve zadáva. Takže namiesto toho, fyzicky beží až do konca a uvedenie teploty 0 rovná čokoľvek, teplota 1 zodpovedá za akýchkoľvek, teplotné 2 rovná čokoľvek, mohol som vlastne len priamo vytvoriť to všetko na jednom riadku do teplotných hranatých zátvoriek rovná. A upozornenia v tomto prípade nepotrebujete určiť, aký veľký je váš pole je, pretože počítač to bude prejsť a vidieť, že je tu tri prvky v týchto zložených zátvorkách. A že to bude vedieť, OK, Potrebujem poľa veľkosti 3. Nebudete musieť Vstup to nasledujúcim spôsobom. A tiež, jo, že cesta. Má niekto otázky o tom, ako robíme pole alebo ako štruktúra poľa funguje? Jo. Divákov: [Nepočuteľné]? ANDI PENG: Jo, presne tak. Takže ak ste boli deklarovať a inicializovať poľa nasledujúci metóda, čo je druhý spôsob, môžete len nechať tie. A počítač automaticky vie, že je potrebné počítať, koľko prvkov sú v týchto zložených zátvoriek, oddelená čiarkami. Tak tu vidí 65, 87, 30. Takže počítač vie, oh, tam tri celé čísla. Viem, že vytvoriť názov poľa Teplota sa tromi prvkami v ňom. Dobrá otázka. Jo. Divákov: Nie je to možné vytvoriť polia s rôznymi typmi dát ktoré by mohli byť zapísané do neho? Napríklad, s celými číslami [nepočuteľných]? ANDI PENG: Na účely tejto triedy, nie, práve teraz. Pri vytváraní dát štruktúru ako pole, hovoríte počítač, hej, potrebujem ťa na toľko prideliť pamäť v mojom pevnom disku, sa každá bunka byť určitý počet bitov. Nezabudnite, sme sa naučili v týždni nula, že rôzne údaje typy majú rôzne veľkosti? Tak napríklad reťazec je do rôznej miery priestoru než char, ktorý je iný množstvo priestoru z celej číslo. A tak ak nechcete špecifikovať a vy kombinovať, aké druhy premenných Máte počítač sa bude veľmi zmätený. A to nebude vedieť, koľko pamäte dať. Takže na účely práva Teraz môžu iba počítače rozpoznať jeden typ poľa. Dobrá otázka. OK. Tak prirodzene sa Druhá otázka, máme Je dobre, teraz, keď sme vytvorený poľa a my sme dať všetky tieto veci v poli, ako sme bude mať prístup? Tak typická štruktúra, že vždy prístup pole je naša milá pre sláčiky. Sľubujem vám, chlapci, že budeme vidieť veľa tohoto chlapíka tu. V podstate, kedykoľvek budete chcieť vložiť hodnoty do poľa alebo ak chcete prístup k nim je Najlepší spôsob, ako to je pre sláčiky, preto, že v cykle for, ty viem, koľkokrát ste bude chcieť prejsť poľa, preto, že máte stop vydanie, nie? A zakaždým, keď spustíte pomocou môžete pristupovať iný prvok poľa. A tiež, to je dôvod, prečo typicky začneme otázky pre slučky na hodnotu 0, pretože pri prístupe polí, môžete pristupovať k nulovej index. A tak sa vyrovná veľmi pekne. Vy môžu chceli písať pre int i = 1. i je menšie ako alebo rovný 3. Ale to by nefungovalo úplne as Tak tu, pretože ste len majú prvky 0, 1 a 2. A tak ak ste sa začať Váš i na prvku 1, 2, a 3, budete skončiť beh mimo hranice svojho poľa, a zlé veci sa bude diať. Takže dúfam, že vy vidieť segue prečo v predchádzajúcich triedach sme učili vám chalani, ako spustiť a Formátovanie pre sláčiky tak, že sme boli. Je to preto, že teraz máme prešla do polí, môžete vidieť, prečo 0 prepožičiava sama o sebe veľmi pekne k prístupu. Takže spôsob, ako to urobiť, je, že som that-- stačí vytlačiť to tu kvôli tlače to. Ale ja mám svoju zástupnú, čiarka. A skutočný pristupujúce časť sa deje. Názov poľa bol nazývaný teplota. Takže je to teplota a i-tý prvok poľa. Tak ako pre slučka prechádza, to bude začínať na 0 ° C. Bude to pre vytlačenie 0. index tohto poľa. Potom to bude tlačiť out prvého prvku. Potom to bude tlačiť z druhej. A potom budeme zlomiť. Je jasné, na každý ako sa to deje? Skvelé. Dobre. Takže tu máme spôsob, ako povediac, ak by sme nechceli na hard-kódu ma in-- ako programátor. Nechcel som, aby skutočne fyzicky dal v každom jednotlivom prvku tohto poľa. Keby som chcel, aby namiesto toho majú vstupné užívateľské hodnoty, to, čo je najlepší spôsob, ako to urobiť? No, tu som vytvoril tento krásny funkcie, , V ktorom môžem vyhlásiť poľa. Tak int scores-- poďme len povedať, chceme, aby sa poľom, ktoré držal akosťou všetky 18 študentov tu v tejto časti. Myslím si, že máme trochu viac ako 18 detí dnes. Ale napríklad príčinu, poďme sa len predpokladať, sme mali 18. Chcel by som vytvoriť názov poľa skóre s typu int, pretože skóre, samozrejme, sú čísla. A ja budem mať 18 v hranatých zátvorkách, pretože to je to, koľko študentov I chcú mať možnosť ukladať skóre. A ako ja by som naplniť poľa je, že by som spustite ho cez slučky for, zo Samozrejme, kde 0 je mojím 0. index. A potom s 18 byť mojím zastavenie vydania, pretože tam je 18 prvkov v poli. A potom budem robiť printf, Enter skóre pre student-- bla tlachy. Môže mi niekto povedať, prečo tu som si tlač i plus 1, a nie ja? Je to trochu trik otázka, naozaj nie. To nie je v skutočnosti fyzicky ovplyvňujú chod kódu. Jo. Divákov: [Nepočuteľné] 0? ANDI PENG: Jo, presne tak. Je to trochu trápne hovoriť, hej, ste 0. študentka v tejto triede. Je to trochu divné. Takže nás, ako ľudia, to naozaj ako premýšľať o tom, ako počítače myslieť. Takže aj keď v počítač, je to ukladanie hodnôt v 0-tého indexu, kedy Sme ľudia, my naozaj Páči sa odkazovať na seba ako nula. Takže keď som sa stačí vytlačiť to, Idem k tlači a pridať 1 len z dôvodu jasnosti. Takže keď som tlačiť, ja budem schopná vytlačiť študentov 1 až 18. To nie je v skutočnosti vplyv beh kódu akýmkoľvek spôsobom, ako vytlačiť. Ale pozor, keď ste v skutočnosti prístup poľa. Keď vidíte skóre i, Všimnite si, že som vlastne prístupu k 0. index a nie 1 plus 0-- alebo 1 plus 1, v tomto prípade, tak index že je to vlastne jasné. Sú všetci trochu OK na ako to beží cez a s každým indexom Som uvedenie hodnoty do poľa a vytvorenie poľa s 18 čísel že užívateľ bude vstup? OK. Super. OK. Teraz prejdeme na niečo, čo je celkom relevantné pre tento kus nastavená rovnako. Viem, že v prednáške, David-- Ospravedlňujem sa, ste mali otázku? Divákov: Môžeš to zväčšiť? ANDI PENG: Jo, tak som sa snažil. Ale ja neviem. Z nejakého dôvodu, to verzia programu PowerPoint je naozaj nefunguje dobre s displejom. Takže sme len tak aby to takto. Všetky tieto budú odoslané online. Ospravedlňujeme sa, chlapi. Jo. OK. Takže môžeme mať aj reťazca. Takže ak vy skutočne notice-- I viem, Rob šiel cez to v tejto prednáške že did-- reťazec je v skutočnosti len pole znakov, ak si myslíte o tom, že jo? Reťazec je názov alebo veta alebo slovo, že jo? Ak by som mal vytvoriť reťazec s názvom Andi-- len moje meno, A-N-D-I. Myslíte si, že o tom, ako len jednej premennej. Ale v skutočnosti, je to v členení do púhych poľa znakov. Takže to dostal charakter uložené v hodnote poľa. Má to charakter n uloženú vo druhý index, a tak ďalej a tak ďalej. Tak takým spôsobom, sme v skutočnosti tento druh štruktúry nastavená miesto pre naše reťazca. Tak tu, keď som bol na vstup do Slovo "jesť" - takže reťazec slovo presne dostať reťazec. Ak by som mal zadať slovo "jesť", že je fyzicky tak, že môj počítač ukladá tento reťazec v mojej pamäti. A keď som chcel bežať cez to a tlače, že out-- takže aj do sa rovná nule, pamätajte, že na prednáške sme vzťahuje niečo, čo nazýva strlen, alebo dĺžku reťazca. Pretože nemám vlastne vedieť, aký veľký je pole v akejkoľvek inputting-- užívateľa Napríklad som zadané slovo "jesť," a ja viem, To je dlhá tri znaky, je to tak? Takže som mohol dať do troch tam a všetko bude v poriadku. Ale ak vstupného užívateľ niečo to je iný počet hodnôt, budete mať ťažkosti s naozaj viem, že keď naprogramujete váš kód. Takže spôsob, akým nakladáme s testovacie prípady takto je to, že máme niečo volal strlen, čo je len funkcia že vám povie, ako dlho je reťazec. Takže strlen slová. Moje slovo je jesť. n sa rovná strlen Word. Môže mi niekto povedať, čo to hodnota vlastne je tu? Čo n predstavujúce právo Teraz, v tomto prípade, keby som mal jesť? Divákov: 3. ANDI PENG: 3, presne tak. Takže máme za int i rovná nula, n je rovné 3, v podstate. A aj bude bežať kým je to menej ako 3i ++. A to bude v podstate ísť až do konca a urobiť to isté. Bude to vytlačiť všetky hodnoty a dá vám E-A-T. Je to len naznačovať iný spôsob písania. To bude veľmi užitočné. Jo. Divákov: Čo je výhody uvedenie n sa rovná strlen slovo vo vnútri, že pre sláčiky [nepočuteľných]? ANDI PENG: Jo. Takže keď som bol to-- hovoriť, napríklad, keby som to urobiť, a potom do-- oop--, že v mojom kódu, to by skutočne robí rád rovnaké veci. Avšak spôsob, akým, že David je vysvetlené to počas prednášky, či niekto z vás chlapci pamätať, bolo to, že, ako je ľudia, ako programátori, naozaj snažiť programu Naši kód tak, že náš počítač má pracovať čo najmenší, tak že náš kód je veľmi efektívna. Takže keď som mal, že tam, čo by sa stalo, cez môj pre slučku je, že som sa prvýkrát vyhlásiť premenná pomenovaná aj bude 0. Idem skontrolovať, oh, čo je strlen programu Word? Ach, tá strlen je 3. Takže je aj menej ako tri? Ano je. Chystám sa spustiť. A potom druhýkrát sa späť slučky, budem zvyšovať aj. aj bude jeden. A ja sa chystá kontrolovať, oh, ale čo je to strlen slová? Oh, to je tri. A robí, že sa zdá trochu zbytočné, zakaždým, keď spustíte cez slučku, , Ktoré majú byť kontrolu funkcie, aj napriek tomu, že strlen slová Nikdy sa práve mení? Takže je to naviac moc pre počítač. Keď začnete hovoriť o veciach, že sú miliardy a miliardy a miliardy miest dlhá, predstavte si svoj počítač museli fyzicky prejsť a skontrolovať všetky, že každý jednotlivý čas. To je dôvod, prečo robiť len v záujme efektivity, máme tendenciu to jednoducho urobiť, pretože týmto spôsobom, že sme len volanie funkcie raz na začiatku, a že zakaždým to prechádza to ide ktorý bude ukladať hodnotu 3 tam, že nemáte musieť neustále kontrolovať zakaždým. Jo. Divákov: Ospravedlňujem sa. Len [nepočuteľný]. Mohli by ste to v pravý n rovná strlen a dal že nad vonkajšej strane pre slučky tiež? ANDI PENG: Jo. Dalo by sa to urobiť, absolútne. Dôvod, prečo to máme tu je pretože spôsob, akým cyklu for práce je, že to hovorí lokálna premenná v tom zmysle, že všetko, čo ste vytvára vo vnútri slučky for existuje iba vo vnútri cyklu for. Takže premenná i jediný existuje v týchto zátvorkách. A tu premennej n i existuje iba v tých zátvorkách. Takže ak ste mali používať strlen z Slovo niekoľkokrát dole pod nami, absolútne najlepší spôsob, ako to urobiť by bolo vyhlásiť ju na vrchol takže nemusíte robiť to raz. Jo. Divákov: Prečo máte nový riadok po percent vidieť, ak chcete, aby všetky listy vedľa oddeliť to? ANDI PENG: Oh, chcel som sa vytlačiť všetky na každom riadku. Nezáleží na tom. Jo, je to formátovanie. To je dobrá otázka, hoci. Jo, keby som chcel vytlačiť to všetko na jedinom riadku, Ja by som nemala pomlčku. OK. Všetci dobre? OK. Super. Takže myslím, že som hovoril dosť. Vy ste na rade, aby prejsť kód a povedz mi, čo je zle. Kde je chyba? Takže ako vidíte, ja som deklaroval nové polia typu string s názvom triedy. A ja som zadaná Sam, Jess, a Kim sa do neho. A ja som sa snaží vytlačiť všetky prvky poľa. Môže mi niekto povedať, prečo to sa chystá dať mi problémy? Dám vám chlapci 10 sekúnd premýšľať o tom. OK. Jo? Divákov: Je ľavý stred presne 3 alebo [nepočuteľných]? ANDI PENG: Správne. Takže koľkokrát je to vlastne bude prejsť tejto slučky? Publikum: Štyri. ANDI PENG: Presne tak. Bude to cez štyri krát. Bude to prejsť pri 0 ° C, 1, 2, a 3, pretože ich prvkom je aj je menšia než alebo rovné 3. Nebude to zastaviť, keď je to 2. Bude to mať deje, kým nenarazí 3. A ako vieme, je tu len tri prvky v našej aktuálnej poli. Ak sa pokúsite o prístup štvrtý prvok alebo index 3, budete hit niekam v pamäti, že neexistuje. Volá sa null zakončenie. Nič sa tam bude. Počítač nebude byť s tebou veľmi spokojný. Jo. Má niekto otázky o tom, prečo, čo sa deje? To je spoločný priestor, aby sa zabránilo. Jo. Divákov: Does not prvý posuňte tiež reťazec 2? ANDI PENG: Nie. Takže v podstate, ak robíš poľa, že držiak pravý tam, že všetky number-- je to, že musíte, je, ako mnoho prvkov mám. Nie je to vlastne hovorí me indexy čokoľvek. Takže v tomto prípade, viem, že chcem písať troch miestach, s tromi miestami do fyzickej držať čo chcem držať. Takže to je dôvod, prečo je tam číslo tri. Avšak, ak som chcel skutočne prístup, ak som chcel povedať, printf triedy číslo konzola, potom budete skutočne dať fyzická index tam. Jo, dobrá otázka. Divákov: Takže je fyzická index mal byť [nepočuteľných]? ANDI PENG: Je mi to ľúto. Môžeš hovoriť trochu? Divákov: Takže je fyzický index [Nepočuteľný] každej z krabíc? [Nepočuteľných]? ANDI PENG: Jo. Takže ja pôjdem späť do práve tu. Myslite na priamo tu. Máme poľa veľkosti 3. Je tu tri miesta, ako je, fyzikálne zástupné symboly tu. Ale oni s názvom 0, 1 a 2. Takže keď som chcel pre prístup k nim, tak, že som sa k nim je printf všetkého, čo som chcel tu. Budete musieť vytlačiť s menom toho, pretože potom v počítači vie, oh, musím sa pozrieť V tomto poli pre 0th indexu. Jo. Ale veľkosť sa nemení. Veľkosť je 3, bez ohľadu na to na to, ako je popísať. OK. Všetci dobre? Divákov: Takže zakaždým, keď som [nepočuteľných]? ANDI PENG: OK. Takže v tomto prípade sme naozaj nemám dostať sa do toho teraz v kurze. Ale viem, že string-- ako ja povedal skôr, reťazec je v podstate rad znakov. Takže keď som vytvoriť pole, reťazcov, druh I majú celý rad pole znakov, že jo? Takže v tomto prípade, pretože som majú pole reťazcov, ak ste boli na vstup naozaj dlhé slovo, že stále zaberá iba jeden priestor, pretože to je jeden reťazec. Ale ak by ste mali myslieť na znaky tohto poľa, Potom je to brať veľa viac znaky než ktorýkoľvek z Inými slovami, sú. Nie naozaj dôležité práve teraz. Ale to je len všeobecne ako to funguje. OK. Takže to je niečo, čo ťa nechám robiť veľa v priebehu semestra. Musím si oddýchnuť môj hlas. Vy potrebujete stimulovať sami. Mnoho z vás asi spať práve teraz. Som zadanie náhodné problémy kde sme ako trieda alebo s partnerom vedľa vás idú stráviť pár minút diskutovať na tom, ako by išlo o riešenie alebo vytvorenie programu, ako je tento. Takže teraz, chceme vytvoriť program-- budeme nazývať upper.c-- že konvertiti malé písmeno slovo hornej triedy string-- veľké písmená, je mi ľúto. Word v reťazcoch, sorry, je synonymom. Chystám sa ich zmeniť znamenať to isté. Jo. Vezmite pár minút. Nemusí to byť napísaný v akomkoľvek jazyku. Práve v pseudokódu kódu alebo logicky, ako by sme dokonca ísť robiť taký problém. Jo. [SIDE ROZHOVOR] Tiež som si všimol, že vy can-- Druh ja vidieť už program. Myslím, že môj nedostatok Režim moderátorka je problém. Ale to je v poriadku. [SIDE ROZHOVOR] Áno, prosím, chlapi. Poďte si cukrík. Poďte si cukrík. Hľadisko: Áno! [SIDE ROZHOVOR] ANDI PENG: Tiež, jo, Začnem hádzať cukroví na ľudí, ktorí nemajú odpovedal na otázky. Takže by ste mali všetky odpovede na otázky. Alebo Myslím, že ľudí, ktorí sa odpovedať na otázky. Jo, iná cesta okolo. [SIDE ROZHOVOR] Divákov: [Nepočuteľné] ANDI PENG: Jo. Jo. [SIDE ROZHOVOR] Dobre, chlapi. Vezmite, ako, 10 sekúnd. [SIDE ROZHOVOR] OK, chlapi. Takže než začneme sa snaží vlastne fyzicky písať kód, dobrý zvyk rozvíjať je, že Chceme prvého druhu rozumu logicky, ako by sme to urobiť. Chcete, aby sa ubezpečil, pred vami fyzicky začať sa snaží kód V Mario, že urobíte istí, že máte pseudocode. To znamená, že vás nimi to, čo potrebujete vytvoriť tak , Že keď vás fyzicky napísať svoj program neskôr, budete schopní lepšie zachytiť chyby v kóde a podobné veci. Takže budeme len začať by-- v angličtine, v pseudokódu, niekto chce dať mi všeobecný výklad o tom, ako by sme ísť asi robí? Jo. Divákov: [Nepočuteľné]. ANDI PENG: Jasne, žiadny strach. Divákov: Môžeš to opýtať alebo požiadať niekto sa dostať reťazec 1-- jo, reťazec, a potom-- ANDI PENG: Áno, takže je to dobrý začiatok. Začnem písať, je mi ľúto, ako hovoríte. Tak-- Publikum: --the malé písmená Čísla sú vyššie, nie? Alebo malé písmená vysoký počet? ANDI PENG: Presne tak. Divákov: Takže my odrátame 32 od toho, čo [nepočuteľných]. ANDI PENG: Skvelé. Takže sme druh má všeobecný pocit o tom, ako pre prácu o tomto probléme. S vedomím, že sme sa trochu naučil fyzický tak, že struny sú uložené v pamäti, Čo si už viem, že budete pravdepodobne musieť písať v kóde aby sa pohybovať reťazca? Obecenstvo: pre sláčiky. ANDI PENG: A pre sláčiky, presne tak. Skvelé. A tak sme trochu mať všeobecný pseudokód napísané tento druh dáva berie na vedomie, ste na tom, ako by sa pohybovala o riešenie tohto problému. Teraz, keď máte tento, tie môže odkazovať na neskôr o tom, kedy sa snažíte vlastne napísať svoj kód. Takže môžeme skutočne ísť sem. A ja mám funkciu nazvanú upper.c-- tam to je-- toho len prázdnym vzorom práve teraz, že vy sa chystáte pomôžte mi zistiť, o tom, ako písať táto rada code-- nie je riadok kódu. Bude to viac riadkov kódu. Pri spustení žiadny druh prázdneho pset, čo je Prvá vec, ktorú musím pamätať na robiť? Divákov: [Nepočuteľné]. ANDI PENG: Veľká Jo. Zahrnúť. stdio.h. Často sa jedná o jeden z najviac jednoduché chyby ľudia bude robiť, keď sú písanie, je to, že budete zabudol pre zahrnutie dôležité knižnica, čo potrebujú. Takže ak je to úradné hodiny a ste ako, Ja neviem, prečo môj kód nefunguje. Môžeš mi povedať, prečo to nefunguje? Chystáme sa povedať, ste #include? Mali by ste ho #include. OK. Takže máme štandard I / O tu. Je to jediná knižnica budeme potrebovať tú? Čo iného sa budeme robiť? Prepáčte. Niekto proste jačať to? Divákov: [Nepočuteľné]. ANDI PENG: Tu to je. OK. A ako mám ísť o začatí žiadny druh funkcie, nejaký druh hlavné funkcie v rámci nášho programu? Int main. OK. Čo som dal sem dovnútra? Čo je prvá vec, ktorú chcete urobiť? Ak chceme získať reťazec od užívateľa, čo s tým budeme mať robiť na tejto prvej línii? Ospravedlňujeme sa, ale vy ste jednoducho pocit zatiaľ hovoriť a nahlas. Len kričať čokoľvek. Divákov: Požiadajte užívateľa? ANDI PENG: Ako to urobíme? Ask-- budem písať "požiadať užívateľa"? Divákov: printf. ANDI PENG: OK. Printf. Čo chcem, aby printf? Divákov: Zadajte niečo. ANDI PENG: Ako, že? Chlapi, predstierať, že som počítač. Fyzicky mi na každom kroku že musím písať sem? Robím niečo zle? Mal som napísal niečo? Divákov: Potrebujete úvodzoviek. ANDI PENG: Potrebujem úvodzovky? OK. OK. Divákov: A potom nový riadok. Bodkočiarka. ANDI PENG: bodkočiarkou? OK. Dobre. Divákov: A možno špecifikovať že to chceš malými písmenami? ANDI PENG: Skvelé. Vy ste mi smiať zabudol dať bodkočiarka. Ja vám zaručiť, niekde v priebehu tejto triedy, zabudneš dať bodkočiarka, a to bude trvať tri hodiny prísť prečo váš kód nefunguje. Stalo sa to pre všetkých z nás. To bude pravdepodobne sa vám nestane. Buďte v dobrom zvyku používať bodkočiarkami. OK. Divákov: Chcete urobiť spätné lomítko v? ANDI PENG: Iste. Chcete urobiť spätné lomítko v? Divákov: Áno. ANDI PENG: Skvelé. OK. Čo mám robiť ďalej? Divákov: Získať reťazec. ANDI PENG: Získať reťazec. Tak čo mám písať? Niekto? Divákov: String s. ANDI PENG: String s. Divákov: GetString. ANDI PENG: Niekto, môžete mi povedať, kde táto funkcia GetString prichádza z? Divákov: string.h. ANDI PENG: string.h? Myslíte si, že je to z string.h? Divákov: [Nepočuteľné]. ANDI PENG: Tu to je. Je to od CS50.h. Ak ste stále zmätení na kde Súbor knižnice je alebo súbor hlavičky je, satelitný doslova string.h, a ja ti poviem, aké sú všetky funkcie ktoré sú v string.h. OK. Takže teraz, že som vytvoril reťazec A ja som vyzve používateľa pre to, Ja som uložený v premennej pomenované s, čo musím urobiť teraz? Divákov: Skontrolujte, či je malými písmenami. ANDI PENG: Sorry? Divákov: Skontrolujte, či je malými písmenami. ANDI PENG: Dobre, poďme to urobiť. Ako to mám urobiť? V skutočnosti, na účely triedy práve teraz, my len tak predpokladať, že všetko, že vstup je už malými písmenami. Ak by ste chceli skontrolovať, že nie stačí pridať podmieneného príkazu že skontroloval, že prebehol každý prvok poľa a kontrolovať, či je to medzi určitými hodnotami. Zabudol som, čo sa počet hodnôt malé písmená sú. Môžete to nájsť na stole ASCII. Ale jo, to je naozaj dobrý bod. Ale práve teraz, budeme len tak predpokladať, že všetky reťazce sme vstup sú malými písmenami. OK. Tak ako by som ísť o tento problém bude ďalej? Obecenstvo: pre sláčiky. ANDI PENG: Pre slučku? OK. Povedz mi, čo mám písať. Obecenstvo: pre int i = 0. ANDI PENG: OK. Publikum: Oh, vlastne, a potom vás urobiť čiarku a robiť n rovná strlen. ANDI PENG: So Dôležité že si myslím, že je tu všimla je to, že sme nemali hovoriť int n druhýkrát sme to urobili. Len viem, že v pre slučka, keď ste deklarovaní, ste skutočne nepotrebujete INT druhýkrát, čo urobiť premennú. Môžete povedať n strlen. Divákov: S. ANDI PENG: s. OK. Divákov: Potom bodkočiarku. ANDI PENG: Iste. Divákov: A potom [nepočuteľný] n. Potom som ++. ANDI PENG: Skvelé. Dobre. Čo chceme dovnútra z toho pre slučky teraz? Pamätajte, že ak budeme prejsť reťazec a beh cez pole, Chceme, aby skontrolovať veci v ňom. Čo budeme potrebovať? To je tak trochu chúlostivé časti teraz. Každý, kto má hádať? OK. Takže najprv, ako sme sa dokonca pristupovať? Ako sme sa aj prvá kontrola, alebo prístup k prvku v poli? Ako to urobíme? Čo je to notácie používame na to, že? Aký je názov tohto poľa volá? Volá sa to, jo? Pamätajte si, že ľubovoľný reťazec je vždy pole. Takže s držiak i, že jo? Vzhľadom k tomu, že je aktuálna hodnota alebo hodnota indexu sme kontrolu. A budeme sa nastaviť, že rovné to-- chceme malé písmená hodnotu, je to tak? Chceme sa obrátiť, že lower-- Ospravedlňujeme sa, chceme veľkými písmenami. Chceme otočiť malými písmenami hodnota do veľké písmená. A tak jako-- Je mi to ľúto, ako sa voláš? Divákov: Heidi. ANDI PENG: Sorry? Divákov: Heidi. ANDI PENG: Heidi. Ako povedala Heidi spočiatku, my sme zrejme bude potrebovať the-- sme pravdepodobne bude musieť odpočítať 32 z akéhokoľvek Charc to je, že jo? Vzhľadom k tomu, na ASCII stôl, rozdiel medzi malým písmenom a veľké písmeno je 32. Takže, keď to robíme, sme zrejme bude chcieť odpočítať 32, nie? Takže budeme robiť S i. Má každý pochopiť, prečo som to urobil? Pretože práve teraz, v našom poli, sme kontrolu 0. index, že jo? A v 0. indexe reťazec, to je prvý znak. A že postava ideme predpokladať, že je to malé písmená. Ak chceme, aby to veľké písmená, my musieť odpočítať 32 z jeho hodnoty, preto, že v našej ASCII stôl, to je, ako sme si to na ďalšie zodpovedajúce hodnota, ktorá robí to veľká. Rozumejú, že? Jo. Divákov: Mohli by ste tiež to malé písmená a minus-- ANDI PENG: Jo, tak to je v skutočnosti naozaj dobre. Chystám sa vrátiť k tomu Otázka potom, čo sme urobiť. Jo. A potom, keď chcem zistiť, čo sa deje, Ja nejspíš chcete vytlačiť, nie? Niekto mi povedal, čo Chcem vytlačiť tu. Publikum: printf percent c spätné lomítko [nepočuteľných]. To je hodnota [nepočuteľný] s i. ANDI PENG: s i, ospravedlňujem? Divákov: [Nepočuteľné]. ANDI PENG: Ja neviem. Co si myslis? Publikum: No, ja wouldn't-- Myslím, že by nebolo bring-- Vzal by som ju z dovnútra, pretože [nepočuteľný]. ANDI PENG: Oh, by si urobil? Divákov: Jo. ANDI PENG: Nechajme to tak, ako to je, a ja ti to vysvetlím, prečo neskôr. Pamätajte si, že aj keď majú zástupnú, Ak chcete vložiť zátvorky okolo neho. Dobre. Tak by to malo byť solídny funkciu tu. Poďme ho spustíme a uvidíme, či to preloží. Urobiť horný. Uh Oh. To nevyzerá moc dobre. Prečo sa to deje? Rovnako ako u akejkoľvek chyby, chceš ísť späť a začať s prvou, lebo zvyčajne raz príčin chýb veľa iných chýb po ňom. Tu vidíme upper.c: 18: 25, ktorý hovorí, ma v tomto programe s názvom upper.c, na linke 18, error implicitne deklarovať knižnica funkcií strlen s typom unassigned-- blah, neviem čo sa deje po tom. Všetko, čo to je mi povedať, teraz je že sa niečo deje na strlen. A počítač je zmätená, pretože je to ako, ja neviem, čo je strlen? Čo to asi poviem vám chýba? Divákov: Tie chýba [nepočuteľných]. ANDI PENG: Máš pravdu. Presne tak. Takže toto je miesto, kde je to dôležité sa uistiť, že každá funkcia, ktorú používate vo vašom kód má správnu hlavičku súbor pre knižnicu, alebo inak budete mať veľa chýb a váš kód nebude vedieť, čo sa deje. Takže budeme tu zahrnúť string.h. Teraz, keď sa snažíme zostaviť hornej. Kompilácie správne. Poďme tento program spustiť. Takže písať niečo malými písmenami. Čo si chlapci chcete písať? Shout niečo. Dobre, Charly práve vošiel. Budeme písať Charly meno. Charly malými písmenami. A dúfajme, dúfajme, že to je ísť vykríknuť a vypľuť Charly veľkými písmenami. Jaj! to všetci pochopili, ako Išiel som o riešenie, že? Tak, že môžem manipulovať pomocou celých čísel vyriešiť niečo, Chcem robiť v reťazcoch, preto, že postavy a celé čísla môžu odkazovať rovnakým spôsobom, pretože mapovanie ASCII. Takže ísť späť do bodu, keď som chcel dať tú namiesto 32 veľká mínus malé písmená spravodlivý ako že, že bude fungovať rovnako aj, pretože to je proste len Rozdiel medzi týmito dvoma hodnotami. Ak chcem, aby tento again-- Charly. Ale nie. Myslím si, že sme sa vydali zlým smerom, jo? Divákov: [Nepočuteľné] malé písmená a. ANDI PENG: Tu to je. Jo. A z pľuje Charly. Takže buďte opatrní pri ste odpočítaním hodnoty mať na pamäti, ktorý z nich je väčší ako druhý. Napríklad, tu som zabudol že malá a je v skutočnosti väčšie ako veľké písmená A. takže keď som sa Snažil sa im odpočítať na druhú stranu okolo, mám negatívne 32. A môj počítač bol rád, Ja neviem, čo to je. Je to pravdepodobnosť, len nejaký náhodný hodnota, ktorá nie je veľmi dobré. A tak sa uistite, že ste sa odpočíta v správnej dĺžke nájsť požadovaný znak. OK. Je niekto zmätený o tom, ako išlo o písaní tejto funkcie? OK. Takže v skutočnosti, funkcia už existuje v knižnici s názvom ctype.h. Knižnici sa volá ctype.h. Táto funkcia je v skutočnosti už napísaný pre vás. Je to len na hornej. A tak na účely tento pset, budete zistíte, že naozaj chcete použiť mnoho funkcií obsahovala v knižnici Cdruh. Ak chcete horný, znížiť, je horná, je lower-- tie sú všetky funkcie že budete môcť používať veľmi, veľmi rýchlo vo vlastnom kóde, ktorý robí presne to, čo to robí. Napísali sme na to, ako previesť reťazec na veľké písmená. To je však v skutočnosti kód že niekto iný napísal a že môžete pristupovať cez inú funkciu. Jo? Divákov: Takže stačí skopírovať je tam a to pre každú list? ANDI PENG: Jo, pretože sa mi nepáči starostlivosť o hodnotách a. Len ma to zaujíma, že rozdiel medzi nimi je 32, nie? Rozdiel medzi malými písmenami b a veľké písmená B, je tiež 32. A rozdiel medzi C a veľké písmená C je vždy 32. Len som sa starať o rozdiel medzi týmito dvoma, pretože všetky listy nasledovať rovnaký vzor, ​​je to tak? Mám ak rozdiel medzi jedným z nich, Viem, aký je rozdiel medzi všetkými z nich je. Dobrá otázka. Jo. Všetci dobre? OK. OOP. OK. Takže ďalší koncept, ktorý je Bude veľmi užitočné ako vy pokračovať vo vývoji váš kód je tento nápad, vytváranie funkcií alebo abstrakciu. Takže teraz sme všetci vziať algebry. V algebre, budete sa učia, že existuje to úžasná vec s názvom funkcie Stroj, kde ak ste vstup jedného druhu čísla, to prejde tejto nádhernej funkcie a sa objaví iný výstup, nie? V kóde, to isté sa deje v nejakom druhu funkcie. Tak som mohol fyzicky napísať v mojom tele mojom kódu hlavný vyhlásenie, že vlastne robí bez ohľadu na telo kódu robí. Ale mimo to, že môžem tiež napísať veľa rôznych funkcií, že robiť veľa rôznych vecí. Napríklad, máme už začali používať niektoré z nich. Printf--, že je Funkcie, že niekto iný už napísal, že môžeme zavolať nášho kódu. K upper-- v tomto prípade, upper-- je ďalšie funkcie písali sme, že my môže zavolať nášho kódu. A tak myslím prečo máme dokonca funkcie? Prečo nie my len PLOP to všetko v rovnakom riadku kódu? To uľahčuje pre každého. No, dôvody, ktoré je v prvom rade, organizácie. Je to naozaj nepríjemné ísť prostredníctvom kódu niečí a jednu funkciu, ako printf. Ak vy vlastne vie, čo Funkcia printf znamenalo písať, je to, ako, 1000 riadkov kódu. Ak zakaždým, keď som chcel printf na niečo, Musel som písať 1000 riadkov kódu, to by bolo naozaj otravné čítať, v poriadku? To je dôvod, prečo sme práve vytvoril tento abstraktné funkcie že máme už niekoho iný napísal niekde inde. A zakaždým, keď musíme použiť v náš kód, budeme musieť povedať printf. A to je schopný používať funkciu niekto iný niečo napísal do nášho kódu. To uľahčuje organizačne prečítať kód. Po druhé, je to zjednodušenie. To zjednodušuje kroky, ktoré máme aby na vyriešenie náš problém. Printf, funkcie ako printf, funkcie, ako na hornom sú všetko veci, ktoré nám umožňujú, aby zjednodušiť náš kód dole, takže je to jednoduchšie. A posledná vec, ktorú je znovupoužitelnost. Takže na to, že máme funkcia nazvaná printf ktoré môžeme nazvať mnoho rôznych časy a umožňuje, aby boli znovu použiteľné. Ak by som mal napísať printf, Len som raz napísať. Existuje len v jednom mieste. Keby som chcel urobiť znovu, urobila by som to musieť skopírovať a vložiť všetko do môj druhý riadok kódu. To je dôvod, prečo, keď sme vytvoriť funkciu že existuje mimo naše hlavné, môžeme len vyzývame to a znovu použiť kedykoľvek Potrebujeme tak, že je to oveľa jednoduchšie pre nás ako programy písať. Takže tak, že by sme vlastne napísať funkcia je veľmi podobná, nie? To je tak trochu ako prvý prípad, keď sme vám pozri funkciu Vezmite na štýle iný ako naša int main prázdnoty. V tomto prípade, ak som chcel napísať funkciu nazvanú q, že jo? A hodnota tu int všetko je mi povedať, Čo chcem to fungujú tak, že sa ku mne? Ak chcem, aby kocka celé číslo, Budem chcieť, aby vstup. Jedná sa o parametre. Chystám sa vstupy hodnotu typu int. A ja sa vrátiť iný typ hodnota int. A tu, ako vy vidíte, všetko robím je Cubing čo môj vstup je ako môj výstup a vrátením. Takže všetko je táto funkcia robí, je zaberie nejaký celé číslo. Dvakrát to násobí to samo o sebe tak, že sa kocky v platnosti. A potom sa to vráti čo to výstup je. Takže v tomto prípade, je to dva riadky kód, ktorý sme museli písať navyše. Ale ak sme chceli zavolať na týchto viackrát, je to oveľa jednoduchšie písať, že jeden linka tu to je v kocke, než musieť prejsť viackrát. Takže tak, že v podstate akákoľvek formátovanie pre nejaký druh funkcie bude existovať ako ich sem. Takže máme názov funkcie. V tomto prípade, je to len kocka. A my to meno kocku z nasledujúcich dôvodov je to ľahko zapamätateľné. Môžete pomenovať ich a námestia to môže byť v skutočnosti Cubed. Nezáleží na tom. Len meno, ktoré ste priradenie svoju funkciu. Toto právo je tu, int, je typ parametra, ktorý potrebujete. Takže to, čo robí túto funkciu je potrebné, aby fungoval? No, musí na to mať vstup. Pomenoval som ju vstupu. Môžete pomenovať to, čo chcete. Ale ja potrebujem niečo typu int. Bude to vlastne vykonať čo je vo vnútri tu, telo funkcie. A potom návratový typ tu, to int-- všetko, čo mi hovorí, je že táto funkcia je vracať ku mne v int. Takže to bude trvať do int, a to bude vám späť int. Má každý pochopiť, ako formátovanie tohto druhu funguje? Super. OK. Takže nemusíte mať strach, ak sa to zdá trochu abstraktné teraz hneď. To je niečo, čo budeme hovoriť. Budeme ponoriť hlbšie neskôr v kurze. Spôsob, akým nejaký druh vyššej úrovne abstrakcie z týchto vecí práce je to, že v pamäti, v počítač, všetko je uložený v tomto type zo zásobníka, mám povedať. Takže tam hore. Ja neviem, či vás ľudí vidieť, že dobre. Pokúsim sa priblížiť. Tu v hornej časti, sme majú fyzikálne textu z toho, čo je počítač interpreting-- všetky nuly a tie, ktoré existujú v našom počítači. A potom máme inicializácii dátových a neinicializované dát, to, čomu hovoríme globálne premenné. Takže premenných, ktoré existujú vo všetkých programoch a cez vaše celokrajné, v podstate, kód. Žiadne starosti, či vy ste druh nejasný na túto tému. Práve teraz nezáleží. A potom máme to, čo je volal haldy v zásobníku. Myslite na zásobníku doslova ako rovnako ako hromadu vecí, hromadu iný veci, tlačí na vrchol na sebe, že ukladať rôzne premenné a syntax v rámci vášho kódu. A potom tu na samom dne, máme premenné prostredie na to, čo sa v rámci vykonávania Len váš malý riadok kódu. A my sme len tak pre zväčšenie v na skutočné časti zásobníka. Tak tu, keď sme boli na zväčšenie v len na túto oblasť stohu, to je to, čo to vyzerá. A to je vlastne celkom dôležitá keď chlapci hovorí o funkciách, pretože oznámenie, že pamäte počítača ukladá premenné a funkcie a parametre oboch vašich funkcie a vaše hlavné premenné na rôznych miestach. Takže teraz, hlavné je skutočné funkcie že ste vykonávajúci v kóde. Vy ste jeho parametre uložené tu a jej lokálne premenné uložené tu. Miestne premenná jednoducho znamená akékoľvek premenné že existujú len v rámci tejto funkcie. A na vrchole toho, máte to samostatná funkcia nazýva kocky. Máte to parametre rovnako ako tie miestne. A dôvod, prečo môžete vidíte, je to, čo sa stane, keď kocka má v Hodnota z vašej hlavnej funkcie je, že v skutočnosti je to, že viac ako kopírovanie. Takže keď som chcel kocky 2 a vráti 8, že 2 je vlastne zadaná ako parameter, a to skopírované tak, že máte to súčasné v dvoch rôznych miestach v pamäti. A vy musíte byť veľmi opatrní na zapamätanie, ktorý z tých, ste skutočne manipuláciu. A príklad toho, čo sa stalo že by bolo veľmi, veľmi zlý Existuje tu. Tak tu, mám, teoreticky, program tu, hlavné funkcie že som deklarovať int x = 1. Som deklarovať ďalšie int y rovná 2. A potom som to beh Pomocou tejto funkcie volal odkladacím priestorom, kde predpokladám, že je to vymení dve hodnoty. A potom budem vytlačiť je, že jo? To je to, čo chcem tento program robiť. Takže poďme sa prísť dole a pozrieť sa. Takže keď som vlastne písať iný funkcie, ako môžete vidieť, máme hlavné funkcie tu. A potom Máme druhá funkcia tu. Void swapu. Void jednoducho znamená, že je to nebude vracať nič. Meno funkcie je volal swapu, a to je ísť na príjme dve premenné, int a a int b, z vášho [nepočuteľný] funkcie. Takže v podstate tu, my sme okolo x a y do tejto funkcie. A keby sme sa vytvoriť tohle-- takže chceme vytvoriť dočasný hodnotu, je to tak? Budeme priradiť, že pre a. A potom bude teraz rovné b. A b bude späť kde bola hodnota temp, čo je, pretože keď Ak chcete vymeniť veci, môžete nielen rád ich vymeniť. Musíte mať jeden von tu tak, že si pamätá čo to je, pretože akonáhle zamieňať jedno, ste zabudli čo to pôvodná hodnota bola, že jo? Takže v teórii, tento program by mali fungovať, nie? Keby som chcel prehodiť dva, by mali vymeniť. Takže poďme spustiť, a uvidíme, či to funguje. Tak ako vy môžete vidieť, x bol kedysi 1 a Y bol raz 2. A keď som vytlačiť, x je stále 1 a y je 2. Hmm, tento program sa nezdá byť pracuje tak, že chcem, aby to fungovať. Má niekto chcel mať šancu na hádať, prečo sa to dialo? To má čo do činenia s tým, ako že rôzne veci sú uložené na rôznych miestach v pamäti. OK. Takže vy nemusíte mať strach príliš veľa o tom práve teraz. Ale viem, že kocka je miestna premenné boli a a b, pretože tu v našej funkcii, sme vyhlásil, A a B ako premenné, ktoré existujú vnútri kocky, že funkcie. Ale ako vidíte, parametre, ktoré je to pričom v tu boli uložené. Ale boli sme vlastne vracať nič. Neboli sme skutočne mení, x a y. Len sme si zmenu a a b. Mali sme skopírovali x a y do takzvaný a b. Ale my sme vlastne nikdy manipulovať x a y sami. Vy ste chlapci vidia ako sa to deje? Je, že sme jednoducho skopírovaný u konca, ale my sme vlastne stále trať, kde boli v pamäti. A tak teraz počítač hľadá, oh, som spustiť túto vec prostredníctvom tento krásny funkcie. Ale x a y sú stále x a y. Nič sa nestalo, aby je vzhľadom k tomu, že týchto parametrov a lokálne premenné sú uložené v inom miesto v pamäti. A to je na vyššej úrovni Koncept, že budeme začnete vidieť neskôr v kurze. Ale viem, že je to o problém, ktorý sa môže stať a že budeme vymyslieť spôsoby, ako na to, ako sa s tým neskôr v kurze. OK. Dobre. Takže posledné koncept sme naozaj pokryť že to bude užitočné, pre pset tento týždeň sú, čo sa nazýva argumenty príkazového riadku. Tak Rob vo svojej prednáške prešiel druh krátko na to, ako tieto práce. V podstate vieme, že keď píšete ako hlavnú funkciu, keď sme napísal funkcií predtým, ako v minulosti, sme mali int main neplatné. A dôvod, prečo sme mali tam void bolo preto, že naše programy, nie je je potrebné, aby vstupné hodnoty pre spustenie, je to tak? Keď som bežal Mario, nepotreboval som skutočne stačí napísať do niečoho keď som bežal Mario. Mohol by som vyzvať užívateľa neskôr. Ale to nie je tak byť vždy. Napríklad, v tomto týždeň problém súpravy, sa otázka, že v Okrem spustenie vášho programu, budete chcieť vstup niektoré veci v priamej, ako budete spustite program. Takže spôsob, ako to urobiť, je nazývaný príkazového riadku argument, ktorý je ako argument môžete zadať priamo ako sa snažíte spustiť program. Takže zápis pre to, je to celkom zložité vyzerajúci, ale je to naozaj nie je tak ťažké. Tak int main-- to je len vaše hlavné funkcie. Do argc čiarkou reťazec argv zátvorkách. Takže všetko, čo hovorí, je, že to int argc-- všetko, čo hovorím je to, že to sú počet argumenty počítač by mal očakávať. Takže jedna vec, ktorá je naozaj dôležité sledovať je fyzický názov vášho programu sa počíta ako jeden z týchto argumentov. Takže keď som chcel mať svoj program spustiť a ešte jeden ďalší príkazový riadok Argument, že som vlastne bude mať dva. Argc to vlastne bude dva. A potom reťazec argv bracket-- všetko, čo robí, to dáva mi Pole reťazcov, ktoré je bude len zobrazovať a ukladať čo všetky tieto argumenty príkazového riadku sú. Tak napríklad, keď som chcel, aby to Program, ./copy vstupné-súbor výstupný-súbor, je to tak? To je len typický príkaz Linux. Čo je to vlastne argc? Koľko argumenty príkazového riadku sú tam vlastne v tom? To všetko robí, je vytvoriť kópiu Infil názvu jedného súboru a skopíruje ho do iný súbor, že jo? To je všetko toto robí. Ako môžete vidieť, robím to na jeden riadok bez toho by v skutočnosti potrebovať program. Aká je naša argc v tomto prípade? Koľko argumenty máme? Publikum: Tri? ANDI PENG: Máme tri, presne tak. Takže je to veľmi intuitívne Len si myslím, že je to len Infil a outfile. Ale vie, že fyzikálne názov z Program vediete počíta ako jeden. Takže v tomto prípade, argc je vlastne tri. Ako o tom, čo je argv 0? Pamätajte si, že všetky argumenty príkazového riadku boli uložené v pole reťazcov. Takže keď sa snažím pristupovať to, čo by argv držiak 0 mi dal? Divákov: [Nepočuteľné]. ANDI PENG: Presne tak. Bolo by mi bodku lomítko kópiu, pretože to je 0. prvok sa Prvý prvok mojej poľa. Čo argv 1? Divákov: Infil. ANDI PENG: Infil, presne tak. Čo argv 2? Divákov: outfile. ANDI PENG: outfile. To je teraz trochu zložitejšie. Čo vy na to argv 3 sa bude mi dávať keď som sa snažil vytlačiť to prišiel? Divákov: [Nepočuteľné]? ANDI PENG: Mali ste ruku? Jo. Divákov: Alternatívne. ANDI PENG: Presne tak. Takže pamätajte na prednáške, že sme majú na konci závodné niečo volal null terminátor? Dostaneme sa do toho tiež ďalej v triede. Ale viem, že v zápise, ako váš počítač vie, že je to koniec matice je to, že jej dá niečo, čo nazýva null terminátor alebo pomlčka nula. Takže ak sa pokúsite o prístup argv 3, budete hit tohto pomlčku 0. To je ešte o chyták. Čo argv 4? Tak toto je minulosť null terminátor, okolo hranice našej ponuku. Čo myslíš, že sa chystá stane, keď sa snažíme robiť, že? Divákov: [Nepočuteľné]? ANDI PENG: Sorry? Povedzme, že to trochu hlasnejšie? Divákov: [Nepočuteľné]. ANDI PENG: Áno. To je meno z Oblasť, budete s najväčšou pravdepodobnosťou dostať. Ale viem, že argv 4-- ktorý vám umožní prístup miesta počítače pamäť, ktorá vás naozaj nesmie dotýkať, pretože teraz viete, čo argv je. Viete, že je to pole veľkosti 3 ktorá má dot kopírovať, Infil a outfile. Ak sa pokúsite ísť tak ďaleko za tým že ste v minulosti null zakončenia, váš počítač má pravdepodobne uložené niečo v argv 4. A naozaj by nemal byť povolený vstup do argv 4, pretože máte súbor skriňa a vy ste len umožnený prístup k týmto trom policami. Ale ak sa pokúsite dostať ďaleko za police na to, kde sú povolené, sa chystáte začať hrať s ďalšie veci v pamäti počítača. To bude naozaj, ale naozaj zlé. Takže len viem, že. Buďte veľmi opatrní, aby ste nie sú len náhodne spustiť prístup k prvkov v poli, ktoré neboli v tom, čo ste chceli vytvoriť. Jo. OK. Takže budeme robiť ďalšie terminál príklad tu. OK. Tak Rob rýchlo v prednáške druhý deň šiel prostredníctvom tohto príkladu, kde mal int main int argc reťazec argv konzoly, ktorý mi hovorí, že som bude mať argumenty príkazového riadku. Ak má argc rovná rovná 2-- pamätať, rovná sa rovná znamená porovnanie. Ak je rovný 2, potom som do tlače ahoj, bez ohľadu na prvom prvok poľa je. Else tlač, hello world. Čo to bude sa stalo v podstate? Môže niekto vysvetliť, len v Angličtina, čo tento program robí? Jo. Divákov: Ak niekto zadali v príkaze a že ich meno a priezvisko, to nebude len vytlačiť Prvý a hovoria, ahoj, bez ohľadu na vaše krstné meno je. ANDI PENG: OK, poďme spustite ho. Tak napríklad, ak by som mal robiť tento súbor, aby ahoj to-- ahoj to-- to, čo chceš, aby som na vstup? Divákov: Meno a priezvisko. ANDI PENG: Meno a priezvisko? Priestory? Divákov: Jo. ANDI PENG: Môže niekto povedať, ma práve teraz, čo je argc? Práve tam? Jejda, prepáč. Nechaj ma ísť späť. Koľko argumenty príkazového riadku are-- vy nemôžete naozaj vidieť. Ale budem sa snažiť priblížiť. Snažím sa. Jo, je tu tri, nie? Je to bodka lomítko ahoj, to je Andi, a to je Peng. Tak čo si vy myslíte, že to Program sa bude tlačiť von? Aha. Oh, prepáč. Nesprávny názov. Je to vytlačiť, hello world. Má niekto chcel vysvetliť Preto, že sa to deje? Jo? Divákov: [Nepočuteľné]. ANDI PENG: Presne tak. Tak tu, sú podmienené je, ak je argc rovná sa rovná 2. Takže len v prípade, že je tu dva argumenty príkazového riadka. Potom idem k tlači, Dobrý deň, či je to čokoľvek. Ale inak, budem vytlačiť iba, hello world. Takže to niekto bude chcieť dať mi príklad o tom, ako budem môcť skutočne si to vytlačiť hodnotu argv 1? Čo by som musel vstup tu? Len jedna vec, že ​​jo? Vzhľadom k tomu, bodka hello to už sa počíta ako prvý argument. Mám ešte jeden jediný. Takže dot ahoj keď som jednoducho Andi. Dobrý deň, Andi. Rozumejú Preto, že sa to deje? Jo. Divákov: Takže priestor medzi Príkaz line-- je to [nepočuteľný]? ANDI PENG: Nie. Tak priestoru v príkazovom riadku Argument, x, povedať svoj počítač že sa jedná o začiatok nového reťazca. Takže string argv here-- ukladá všetky vaše príkazy riadku argumenty v reťazcoch. A tak sa priestor v príkazovom riadku argument-- všetko, čo robí, je povedať vám, to je na konci jedného reťazca a je čas prejsť na iný. Jo. To je docela dôležité pre Váš pset, pretože si bude testovanie týchto. Takže má niekto akékoľvek otázky na to? OK v pohode. Jo? Divákov: Takže dôvod, prečo by ste namiesto toho dať argument celého čísla Calc z [nepočuteľný] bude, keď budete chcieť zadajte doplňujúce informácie [Nepočuteľných]? ANDI PENG: Jo, presne tak. Niektoré programy budú vyžadovať, aby ste vložiť argument príkazového riadku že prechádza, a ktorý používa, ktoré. Jo. Divákov: Takže čo keď [nepočuteľných]? ANDI PENG: No, čo mám do tej doby zmeniť v mojom programe? Divákov: Just 3. ANDI PENG: Prečo je to, že deje, myslíš, že? Divákov: Vzhľadom k tomu, [nepočuteľných]. Divákov: Musel by si zmeňte ju na 2 [nepočuteľný]. Publikum: 1 a 2. ANDI PENG: 1 a 2, presne tak. Takže v tomto prípade, by ste najskôr Chcete mať dvoch printf statements-- ten, ktorý tlačený argv 1 a ten, že tlačený argv 2. Here. Ja si skutočne urobiť naozaj rýchlo. A je to. Aha. Nie tak celkom, čo ste chceli. Ale ak vy neporiadok okolo s formátovanie, bude to vyjde. Jo. Super. Viem, že sme trochu málo času. Ale ja som jednoducho ísť rýchlo stráviť pár minút prechádzajú helpful-- Divákov: Máte dve minúty. ANDI PENG: Mám dve minúty? Ďakujem. Niektoré rýchle tipy pset. Takže pre túto pset, vrelo odporúčam, ako som povedal, všetci čítať spec. Budete písať tri programs-- jeden volal initials.c, jeden s názvom caesar.c, jeden s názvom vigenere.c. Niektoré dôležité tipov, ktoré vy naozaj chcete udržiavať v mind-- tak je táto funkcia volal atoi-- ako som chcel povedať, je trois. Nejasné ak je to v skutočnosti, ako to povedať. Ale všetko to robí, je to zadaním. To prevádza reťazec na int. Takže predstavuje ASCII aj celé číslo. Je to len konverzia ASCII hodnoty na celé číslo hodnoty. Takže pamätajte argv, pole, ktorý ukladá všetky vaše príkazy riadku arguments-- uloží ich všetky ako reťazce. A tak ak chcete byť schopní majú jeden z nich stane celé číslo, budete mať použiť tu túto hodnotu. Modulo, ako by sme sa vzťahuje skôr v triede dnes, vám umožní mať Zvyšok, čo máte. Takže ak máme naozaj, naozaj hojnom počte Caesar, čo keď budeme mať na konci z reťazca Vigener? Ako sa vám bude môcť sa dostať, že na obal okolo? Ak by som hit z a ja chcem to sa vrátiť do A, Ako to mám dostať že na obal okolo? Pravdepodobne chcete použiť modulo tam niekde. Po druhé, prechádzať okolo vaše knižnica. ctype.h. To je nová knižnica, čo máme. Tu nájdete veľa naozaj, ale naozaj užitočné functions-- isupper, islower, toupper, tolower, IsAlpha, et cetera. Všetky funkcie, ktoré budú veľmi užitočné keď sa snažíte prísť na to, je to znak malé písmeno? Ako môžem previesť túto string na veľké písmená? Všetky tieto veci budú veľmi, veľmi užitočné pre vaše pset. OK. Úradné hodiny sú od 8:00 do dnes večer 11:00 v TEAL triede zajtra rovnako ako v stredu a vo štvrtok v noci. Úradné hodiny sú v snemovni. Vysoko navrhnúť vám chlapci všetky začať hneď, pretože nechcete, aby sa stať, že chlapec, ktorý vo štvrtok v noci má problémy Odoslaním pset a je ako, ja neviem, čo mám robiť. Začal, ja som skončil, som predložil. Snažte sa dať si nejaký priestor, pretože vždy sa vyskytne problém kód. Chcete, aby sa ubezpečil, že dávaš veľa času, aby bolo možné dokončiť psets. Super. Budem visieť tu. Divákov: už je to on-line? ANDI PENG: Ja neviem, či je to on-line už, ale bude to. Som sa, či niekto budem poflakovať tady má už nejaké otázky. Vďaka za príchod.