[Predvajanje glasbe] ALLISON BUCHHOLTZ-AU: Hej vsem. Dobrodošli na vaš prvi Uradna oddelek CS50. Kot ste lahko videli da je to oddelek CS50-like, samo dvigni naš program za danes. Torej, kdo sem jaz, ker sem prepričan, ste vsi sprašujete. Jaz sem tvoj TF. Nisem samo random študent ki se lažno predstavlja svoj TF. In sem šel skozi vrsta odseke bo tok, pričakovanja, ki jih imamo, sredstva, tako naprej in tako naprej. Bomo govorili o nizi, ASCII funkcije, argumenti v ukazni vrstici in to ni tukaj, ampak I bo tudi pomagal si nekako mislim skozi vaš naslednji pset za ta teden. Katere sem prepričan, da bodo vsi cenili. Torej, najprej question-- kdo sem jaz, poleg vašega bujno TF tukaj. Sem Alison Buchholtz-Au. To je moje drugo leto TFing CS50. Jaz tudi TF CS51 spomladi. Morda boste videli spet tam če se boste odločili, da ga vzamete. Jaz sem tudi PAF, zato bo vsaka Freshmen-- in če niste novinec, To je moje tretje leto kot svetovalna kolega. Jaz sem zelo dobro podkovanega v vam bo svetoval o življenju in tečajev v CS in ne v CS. Jaz sem Computer Science Koncentrator. Jaz sem višji v Adams House, najboljši hišo. In preden sem se preklopi na CS my Letniku Spring, Pravzaprav sem biomedicinski inženir. Hotel sem iti na medicinsko šolo. Sem bil, da bo travma kirurg. In da je popolnoma spremenilo, odkar sem CS50. Vzel sem seveda moj Letniku Fall. To je bil moj prvi uvod v CS doslej. Bil sem eden od 78% vas, ki je nič izkušenj prihaja, in je popolnoma spremenil moje življenje. In zdaj delam na Microsoft, in vaš ljubek TF. In CS50 je verjetno ena izmed najboljših izkušenj da sem tukaj, je imela na Harvard-- tako vzeli razred in da bi lahko pomagal Naučiti študente, kot si ti. Tako da sem res navdušen da ste vsi tukaj. V primeru, da ste prišli v pozno, je sladkarije, ki jih je treba občutek prosimo, da pridejo zgrabi, ali pošljite nekdo drug, da ga zgrabite za vas. da je v redu. Ne želim, da bi jedli, da. Moja soba je dovolj čokolade, tako y'all bi morali poskusiti in končati to. Vem, da obstaja 100 kosov, ampak kot, 4:00 v ponedeljek, Mislim, da vsakdo lahko uporabite nekaj sladkorja. Torej vsi, ki ste uradno v mojem oddelku naj bi gotten e-mail: od mene z mojo telefonsko številko, email address-- vas prosimo, da me dodate na Gchat, vas prosimo, da me dodate na Facebook, pa tudi za ostale, si lahko mi tukaj. Obstajata dve H-jev. Vsakdo vedno ne kot sta L's ali dva C-jev. Dve H v zadnjem imenom. V nasprotnem primeru se bo premetavati, in Ne grem, da bi dobili e-pošte. Zato vas prosimo, da email mi, da me pokličete kadarkoli. Mogoče ne bom dobil nazaj ste v 24 minutah, ampak obljubim, da se vrnem do vas v roku 24 ur. Če me boš poklical pol ure pred Vaše pset je posledica, da si bil kot, Nimam pojma, kaj počnem Allison. Pomagaj mi. Bom vas pomiri, vendar ob koncu dneva, če ste me kliče pol ure pred Vaše pset je posledica z nič napisano, Bom všeč, no, morda je čas, da uporabite to pozno dan. Torej bom odgovoriti na vse vaše Zahteve v zelo pravočasno. Moj telefon je ponavadi pritrjena na mojih rokah. Jaz običajno odzovejo veliko hitreje kot 24 ur, vendar sem lahko le garancija odgovor 24 ur. Vse je v redu. Torej, zakaj smo tukaj? Tudi, če imate vprašanja na vsak čas, prosim povej mi. Govorim veliko. Govorim hitro, vendar vas prosimo, vas prosimo, da me prekine. To mi daje dihanje sobo, kot tudi. Torej odseki so čas za nas res samo dive leta, dobili nekaj hands-on izkušnje, da iti skozi teme, ki smo jih omenili v razredu ali v študijskih materialov, Priporočamo, da vaju na spletu. In bomo dejansko šel skozi nekateri od teh virov v bit. Torej nekaj zapiski o podpori oddelka. CS50-- ena od stvari, ki jih naredi je ena izmed mojih najljubših razredov je občutek, da si nikoli sami. Imamo zaposlenih več kot 100 ljudje, ki so tukaj, da vam pomaga. Imamo uradnih ur Od ponedeljka do četrtka. Tako da obstaja toliko ljudi, ki ljubezen razred, prav tako kot jaz in ki so res tukaj ker želijo biti tukaj. Večina od nas so študentje, in to je kot petem razredu, poleg za preostanek našega dela. In to je veliko dela, vendar to počnemo, ker imamo radi, in res radi, da vas nauči in pomagal deliti našo razburjenje za to temo in ta razred. Zato vas prosimo, da izkoristijo. Pridi govoriti z nami. Sem osamljen, ko moji učenci Ne govori z mano, tako da, če hočeš, pridejo družiti z mano. To bo super. Torej oddelek je očitno eden od vaših največjih stvari. Šli bomo skozi stvari da ste se naučili v predavanju, narediti nekaj kratkih primerov ko imamo čas, in splošno vrsta dobili predstavo o stvareh si je treba razmišljati o za nastavitev vaš problem. Shorts-- koliko ljudi dejansko gledal video iz vašega nič Skratka? Me kdo prepozna? Torej tistih, ki so zelo velike. Si je vsekakor treba gledati tiste. Veliko dela je bila dana v njih. In oni so samo mišljeno, da bo ugriz velikosti zrna za vas, da samo gledajo za tri ali štiri minute in dobili boljše razumevanje koncepta. Hodi throughs-- kako mnogi ljudje so si ogledali sprehod-kanale za prejšnje? Zamyla je neverjetno, kajne? Tako kot si želim, da so bili Zamyla včasih. Torej vsekakor uporabite svoje sprehod kanale. Ona bo razčleniti na majhen ugriz velikosti kosov. In ko imaš ti velik specifikacije iz vaše sklopih problematike, to se dogaja, da je res pomembno da lahko le našli nekje začeti in delati počasi skozi to. Vse je v redu, imamo tudi Study50, ki je study50.harvard.edu, verjamem. Lahko samo Google študij, in da bomo prišli do. To je ena izmed Najboljši viri imamo. To je Powerpointi s pojasnili in praksi težave za vas z rešitvami, ki jih lahko dejansko sprehod skozi. Torej, če si kdaj želeli več prakse, več, kot smo storili v oddelkih ali več od vaših sklopih problematike, to je res kraj, vas pozivam, da gredo. Zgrajena je bila lani poleti z nekaj mojih zelo dobrih prijateljev. In to je neverjetno. Dejstvo je, veliko diapozitive da bom s pomočjo za oddelek bo prišel iz Study50. Torej, veliko je TF uporabljati. In končno, kot sem omenjeno, uradne ure. Če imate težave pri domačih nalogah, ste težave z koncept, pridemo do uradnih ur. Pojdi v začetku tedna, če lahko. Ven na quad, ker je vrsta sedaj. Nihče ne mara hoditi ven. Ampak to je v vašo korist, ker potem ste dogaja, da imajo vse te TFS, [Neslišno] vas obkrožajo. In še posebej zdaj, samo namig, četrtkih Zelo chill zdaj v Mather, ker vaše psets zapadejo ob četrtkih. In vedo, želi uporabiti še svoje pozne dni. Torej, če imate težave s koncepti, obstaja veliko TF, ki so tam, da vam pomaga. Tako da pridejo ven, da Mather v četrtek. Če želite, da me vidi, Jaz bom tam. Jaz ponavadi opravljam svojo domačo nalogo, saj nihče ne želi mojo pomoč. Torej, pridi nas vidijo. Dobimo se na pol poti. Torej, koliko ljudi se je udeležilo predavanje ali pa gledal na spletu? Koliko ljudi je šlo za super oddelek prejšnji teden? Cool. To je pravzaprav pošteno število. Koliko vas Prebral vaš spec za ta teden, za vašo pset? Oh, jaz sem ponosen na vaju! Več sladkarije za y'all. Dobro, pa kaj mislimo "Izpolnjujejo nam na pol poti," je da odsek je res samo bo zelo koristno za vas če prideš v prebral vaš Specifikacija za vaš pset. Ker, ko sem šel skozi pregled stvari, ki jih je treba videti jasno zakaj, to ne dogaja, da bi toliko smisla, če vas Ne vem, kaj je tvoj problem nastaviti se dogaja, da se prosi, da narediš. Če ne boste prišli do oddelka, očitno Ne morem biti, da je koristno za vas. Ne grem, da ga vzamete osebno, če ti ne pridejo v mojo oddelku zdaj, ampak vsekakor bi morali. Če ne morete, gledam jih na spletu. Oni so tam z razlogom. Mine ne bo tam. Kot ste opazili, smo se snema, tako bo pa tam za vas. Kot je dobro, bo lectures--, ki je očitno kje ste dobili začetek vašega materiala tukaj. Tako da bom zagotovo poskusiti in pomaga toliko, kot sem lahko, vendar sem lahko srečate le tako daleč. Moraš nekako izpolnjujejo nam na pol poti tam. Grading-- tako, vse vas ki je dobil email od mene, ti si moj uradni oddelek. Bom razvrščanje vaših psets. In jaz samo želim povedati, eno stvar, ki morate res pozorni na so pripombe. Komentarji so pogosto bolj uporaben od dejanskega rezultata vam dati. In komentarji so dejansko kjer sem preživela veliko svojega časa ko sem razvrščanje. Torej, jaz bi cenil pa če si jih preberete. In oni so dejansko, kako boste Če želite izvedeti več o obliko in stil in stvari, ki so Malo manj cut in suha. Torej res pozoren na te pripombe. Če imate vprašanja v zvezi z njimi, ali vprašanja o vaš rezultat, prosim pridi govoriti z mano bodisi pred oddelkom, Bom verjetno se družim v preddverju, ali pozneje. Če želite, da urnik ena-na-ena sestanki o tem, kako vam lahko pomaga izboljšati pozneje problem sklopov, mi povej. In potem samo par nasvetov za vas. Torej eden izmed največjih stvari Vedno poudarjam, da moje oddelku Ko se učite, kako kodo je pisati stvari na papirju prvi. Če imate načrt igre za kjer kodo mora iti in kaj potrebuje, da storiti in je razčlenjena v majhne koščke psevdokoda Koda, ki ste jih izpisati, boš manj verjetno, da bi skladenjske napake ali ustvarite če zanko, ki nima drugega. Če veste, kje ste Splošni dogaja, da ste manj verjetno, da bo ta majhen napake, ki bo včasih se vam ur, da se določi, ker si všeč, kjer sem manjka ta nosilec? Na tej opombi, prosimo uporabite Style50. Še posebej, če ste bo uradnih ur, če je vaša koda je vse prešli na eni strani, je seveda politika da lahko rečemo, da to popravimo tako, da je videti kot pravi Style50 bi moral, in potem vam bomo pomagali. Torej bo to bo vaše življenje lažje. Da bomo lahko naše življenje lažje. Vsakdo je srečnejši. Vsakdo dobi boljše ocene. Ali ni to tisto, kar si vsi želimo? Tako pišejo na papir, preden Ste že kdaj dotikajte računalnik. Govoriti stvari na visoki ravni, in poskrbite, da boste vedeli, kam greste. In če ste prepričani, usesti z nekom in jim sprehod skozi korak za korakom kaj je tvoja koda naj naredim. In devetkrat od 10, boste kot so, oh, sem pozabil, če stanje ali pa sem pozabil podpičje tukaj ali Jaz sem posodabljanje tega spremenljivega narobe. Torej, to so moji nasveti za uspeh. Zato, ker približno polovica od vas pogled kot ste se udeležili super poglavje, Jaz sem le, da bo zelo Na kratko skozi zanke, ki niso bili na našem prvotnem dnevnem redu. Vendar pa so zelo pomembni. In tako bom vrste hitrosti skozi tiste preden smo prišli v naši dejanski oddelku. Preden sem naredil, da so tam vsaka questions-- logistično, osebno, je tam karkoli hočeš vedeti o meni ali o oddelek ali razred na splošno? Vse dobro? OK, v redu. Lovely. Torej loops-- vi vsi bi morali priznanje teh kosov iz nič. Torej zanke so v bistvu samo način za nas, da nekaj storiti nekatere večkrat, nekateri ponovi Tožba temelji na nekaterih pogojena. Torej imamo tri različne vrste. Imamo zanko, medtem ko je, in ne-časa. Torej za loops-- imamo samo zelo splošna postavitev Tu zanko. In to je super, ko veš, kako mnogokrat kaj potrebuje za izvedbo. Ko govorimo o druge zanke, boste zakaj to je pomembna razlika. Ampak za zanke so za nekaj, set. Veš, da si lahko bodisi izračun števila ali veste, kolikokrat ste ponudbe to ponovi na začetku. Torej, če vidite tu, imajo le splošni vrste okostja okvira za zanko tukaj. Torej za inicializacijo, to je, če vaše spremenljivke vključila. Z Mario, sem prepričan, da fantje naredili nekaj takega int i enak 0. To je, če bi se to zgodilo v modri barvi. Imate stanje, ki je tisto, kar se preverja vsakič. Če je ta pogoj izpolnjen, potem Preostanek kode izvrši. Potem bom teči again-- in vprašati. In potem imamo posodobitev, kjer ste modernizirati vaš spremenljivko. Torej, še enkrat, tako kot z Mario, sem prepričan, vidva storila kaj takega i plus plus. Torej, vsakič, zanka tekel, dobil sem tako posodobljen da, ko smo ga pred preverjanjem nekateri pogoj, je spreminjanje. Ker, če si pravkar imajo statično spremenljivko, če se izvaja prvič, je le, da bo neskončno izvršiti. Tako da boste morali poskrbite, da boste ustrezno posodobiti spremenljivke. In imamo tudi samo Vizualna predstavitev tam. Vsi dobro? Za zank. Bi morali videti to v vašem pset. Cool. Torej, tukaj je samo preprost primer. Natisni To je CS50! 10-krat. In tako imamo inicializacijo, kot smo videli tam, z int i enak 0, za i je manj od 10, in jaz plus plus. In da bomo natisniti, da se 10-krat. Torej, medtem ko loops-- while zanke so super, ko vam ni nujno, morali vedeti, kolikokrat je bo posodobitev na začetku. Moraš nekaj Pogoj, da se preveri. In to bi bilo nekaj podobnega while-- Vzemimo primer iz vašega pset. Če Mario, poskusite input negativno število. Kajne? Moral bi ponovni poziv svojega uporabnika. Tako da lahko rečem, dobro, če vhodov uporabnikov nekaj manj kot nič, re-takojšnji njih. In prepričan sem, da bi lahko je nekaj, kar nekateri od vas uporabljena v kodi. Torej, to je preprosta stvar. Imate medtem ko so nekateri pogojno, da se preveri vsakič koda gre za izvršitev. Če je ovrednoten kot resničen, ga zaženite. V nasprotnem primeru ne bomo. In kaj je res important-- nekaj I mislim, da je David govoril o v lecture-- so oporniki. Karkoli je v oporniki je tisto, kar usmrčen. Če ste pozabili tiste naramnice, to je samo še da je vrv neposredno po tem, ko je bila medtem izvršena. Torej, če imate tri stvari, ki so mišljeni zgodilo, ko je ta pogoj ovrednoten kot resničen, in nimate te naramnice, samo Prva stvar, ki se bo zgodilo. Tako zelo zaveda kjer si dal svoje naramnice. Če se držite z Style50, To bo zagotovo vam pomagajo. Cool. Torej je to odštevanje od 10 do nič. In kot vidite tu, inicializacijo nekateri števec zunaj njega. Ena stvar, ki je drugačen, je nismo inicializacijo našo spremenljivko v naši while. To je inicializiran zunaj njega. Mi smo preprosto samo dajanje pogoj iz naše časa. Torej, v tem primeru, je medtem število je večje od nič. In mi izpiše, kaj naš grof je, in potem bomo pojemanje našo spremenljivko. In to je še ena stvar, ki jo opazite. Naša posodobitev ne zgodi v da prvi del while. To bo dejansko zgodilo v objemke, telo besedila. Torej, medtem ko loops-- storiti, medtem ko zanke so super za potrditev uporabnika. Torej, nekateri od vas morda To se uporablja tudi v vašem pset. Lahko rečete, naredite, kot so, od uporabnika zahteva za vnos. Nato pa, kot so, vhod je manjša od neke števila. Torej za izrecne primeru z Mario, se bi naredil printf, vnesite celo število, in potem nekateri celo enaka getint. In potem se bom dejansko izvršiti to kodo prvič. Boste dejansko imajo neke vrste celo število. In potem bi lahko rekli, medtem da celo manjši od nič. Torej, kaj se dogaja, da storiti, je, da je tekoč izvršiti vsaj enkrat. To se dogaja, da preveri stanje. Če stanje Res, se bo ponovno zagnal. Stori, medtem ko zanke super za potrditev uporabnika, saj veš kodo bo vsaj izvršiti enkrat, medtem ko z medtem ko zanke, niste jamči, da je bo enkrat izvršiti. To se dogaja, da se preveri stanje prvi in ​​nato odloči, da ga bo izvršil, medtem ko je do-medtem ko bo najprej izvršiti kodo in nato preverite, ali je ga morate ponoviti. Ali to razlikovanje smisla za vsakogar? OK. Cool. Torej v tem primeru, to je vrsta tega, kar sem govoril, To ponovno navodilom, dokler vas dobili pozitivno število. Torej vemo, da printf "Vnesite pozitivno število" in dejansko prosi za to Vhod se bo zgodilo vsaj enkrat. Če uporabnik zlo in ohranja vnesete negativno število, ki ve, kolikokrat bo to izvesti. Vendar je ta oznaka zagotovljena izvesti vsaj enkrat. In to je razlog, zakaj je super za potrditev vnosa. In boste uporabili, da je zelo malo. Vse je v redu, na vsa vprašanja tako daleč? Mi smo vse dobro? Govorim prehitro? Mi smo dobri? OK. Awesome Zato smo šli naprej in govori o nizi. Cool. Torej, nizi so v bistvu le podatkovne strukture ki nam omogočajo, da shranite stvari iste vrste. Torej, če ste že kdaj imeli niz, to je bodisi samo dogaja, da imajo ints ali pa je samo dogaja, da imajo plovce ali pa je le, da bo imel znakov. Ne boš, da imajo int z char s plovcem z dvojno. Ena stvar. Nizi so le ena velikost, ali pa si samo ena vrsta. Torej, tukaj imamo celo paleto velikosti tri s tremi celih njej. Ti bi lahko plava, vendar smo reči oni ints. Torej, ena stvar, da zavedaš, da nizi so set velikost, ko inicializirati njih, in niso easily-- saj ste vsi so manj udoben, morate samo mislijo, da so ne bi mogli razširiti po velikosti. Vendar velik podaš Vaše niz na začetku, da je velikost se dogaja ostati, ker nizi so stalno bloki pomnilnika. In če vi zaslužiti v malo bolj o tem, kako je spomin dejansko določeno na diski in v kup in s sklada, da bom lahko malo bolj smiselno. Vendar lahko samo pomislite, kot, da je le vrsta prostorov na disku. In vam ne more zagotoviti, da obstaja bo dovolj prostora za njo. Lahko inicializirati array treh in potem morda zagnati drug niz petih kasneje, in to je prav po tem. Torej, če ste bili, da gredo mimo mesto trije v tej prvi niz, bi pisal čez nekaj drugega. Torej nizi are-- za vas, samo mislijo, da so fiksne velikosti. Tako ustvarja array-- greš da je treba to storiti zelo malo. Torej, na enak način, da imamo Splošna struktura naše za zanke, imamo lepo generala struktura za našo paleto. Ker so ene vrste, vse elementi v matriki so ene vrste, morate inicializirati kaj ta tip je. Torej, kot vidite, imamo lepo vrsto podatkov bracket. Torej, če smo ustvariti int matrika, ki bo int. Če bomo ustvarili char matrika, bo to znak. Če smo ustvariti niz matrika, to bo niz. In potem ime vašega polja, karkoli želite, da bo. Torej, morda je rezultati testov ali morda je študente, ali morda je sladkarije. Karkoli se boste odločili poimenovati matrika, da je tisto, kar bo pa bo. In nato v oklepaju, boste imajo velikost, ki jo želite. Torej, smo shranjevanje 10 študentov ali smo shranjevanje 15 vrst bonbonov? Kaj ne. Torej v našem primeru tukaj, smo ustvariti niz velikosti treh, ki si ga fantje glej tukaj na desni. In ko smo se prvič zažene to je vse nič. Torej, to je samo mislil od kot nepopisan list. Imamo vse te prostore, imamo vse te škatle, da bi lahko dal svoje podatke v, ampak oni so samo prazno zaenkrat. Torej, če želimo, da dejansko ki jih dodelijo te vrednosti, storimo tako, da tik pod tu kaže. Tako da boste morali, ne glede na ime vašega Niz je in kaj potem indeks hočeš. Torej indeks pravkar nanaša, všeč, kaj slot smo gledaš. In pomembna stvar, da obvestilo je, da so nizi nič indeksirajo. Torej, če želimo, prvi prostor v pomnilniku naše matrike, da se bo nič. Če želimo drugega, bo to eno. Če želimo tretjino, bo pa dva. Tako naprej in tako naprej. Kar je tudi razlog, konvencionalno, ko storimo za loops-- Prepričan sem, Vi ste se spraševali, zakaj začnemo pri 0 v primerjavi z 1? In da je zato, ker ko smo prehod v polja in jih preslika pravilno. Torej, če želite, da Ponovil v array, ga naredi veliko bolj smiselno, da storiti i enak 0, ker smo vemo, da bo ustrezala na prvo mesto v pomnilniku. Vsakdo dobro s tem? Cool. In nato je dno tukaj samo še en način, da bi začeli niz. Imate še vedno vaš podatkovni tip in ime, ampak dejansko dajanje velikost tam, lahko pač prazne nosilce. In nato z njimi kodrasti naramnice na dnu, Lahko samo vnos podatkov, ki jih želite ločene z vejicami. In da se bo samodejno reči, OK, vidim da imate tri stvari v teh naramnic. Zato vem, da moram dodeliti tri bloki pomnilnika in nato shranjevanje teh. Torej prva različica, ki jo lahko uporabite če ste se posvetovali s svojim uporabnikom z vhodom vrednosti, tako da lahko Ponovil skozi paleto in ask-- dobili nekaj int za njimi vhod. Če boste vnaprej vedeli, vrednote, naredi veliko bolj smiselno uporabi drugo smer. Vendar v večini primerov, morda ne boste vedeli, kaj te vrednosti se bodo. Cool. Katera koli druga vprašanja? Dobro. Tako dostop do elements-- tako eno od velikih stvari o nizi je, da so naključno dostop, kar pomeni, da vas ne bi bilo treba pogledati skozi vsak blok. Če veste, da vas želim, kaj je v bloku dva, lahko samo rečem, da mi blokira dva. In zato ti Indeksi so tako pomembni, in to je, kako smo dejansko dostop do njih. Torej, v tem primeru, kot smo videli prej, ko smo dodelili vrednost, v enem preden smo imeli ime in Indeks smo želeli dostop, kajne? Torej, na enak način, to je vse, kar smo storiti, da bi dejansko vleči, da so podatki out. Imamo ime in mi imajo indeks, ki jo želimo. Torej, v tem primeru, za zanko dol na dnu, kdo vem, kaj to počne, kaj bi to izpisal? Mmhmm? Točno tako. Torej, ja, to je samo s ponavljanjem. i je enaka zero-- se lahko sprehodimo s kodo samo hitro. i je enak nič, i manj kot tri na tej točki, kajne? Tako da preveri ven. In smo rekli, v redu, print f vse, kar je v temperaturi i. i je nič tukaj, ko smo se prvič Ponovil, da gremo na prvem mestu, in smo rekli, v redu, 65 je Število želimo natisniti. Torej bom natisnila 65 nato pa naredite novo linijo. i bo posodobil, tako da natisne 87. Spet posodablja, in ga bomo natisniti 30. Vsi kul? Super. Vse je v redu. Torej, tukaj je nekako ena stvar sem rekel, kako lahko spremljate ocena nekoga in zakaj bi jih uporabili najprej način za inicializacijo Namesto tega drugega načina. In to samo gre skozi. In opazili, da imamo velikostnem razredu 30. In smo inicializacijo to array ints, ki je velikosti 30. In potem smo se ponavljanjem skozi in smo prosi uporabnika na vhodu ocene za vsakega od njih in nato dodeljevanjem poseben prostor v pomnilniku nekje v tej matriki. Cool? Ali to smiselno za vsakogar? Mmhmm? Torej hashtag določiti velikost razreda 30 je Direktiva Predprocesor, ki pomeni le to, da ima gets-- storiti kot proces, ki pripravlja podatke. Lahko si misliš o njem kot globalno spremenljivko. Tako to počnemo, je typically-- omogoča kodo da se lažje spremeniti. Torej, recimo, da je naša velikostni razred nenadoma gre 30-15, če ne bi to definirana na ta način, bi jaz iti preko mojega celotnega programa in spremenite vsak primerek 30 do 15. Ampak s tem, sem dobil, da spremenite eno spot, in vse ostalo spremembe. Če si kdaj želeli storiti, hash določiti v primeru, kam ste sledenja nekateri določeno število točk za razred ali boste uporabljali več ki bo uporabljen, kot so, celotnem zelo dolgo programu, je bolje opredeliti, da na začetku tako da če kdaj ne spremeni, dobiš spremeniti eno mesto namesto 100. Ja? ŠTUDENT: Med tem, da je, in šele razglasitvi [neslišno] več na vrhu. ALLISON BUCHHOLTZ-AU: Torej ima opraviti z efficient-- to je nekako izven obsega kaj lahko pokrivajo v tem oddelku. Treba je narediti več z učinkovitostjo in kako stvari dejansko delo v procesu, ki pripravlja podatke. Če želite res vedeti o tem, da sem vesel, da vam pošljemo email s sredstvi v zvezi z njo. Hash opredeliti kaže, da je raje stvari. In kot ste kodo več, vrsta naučiti nianse kdaj morate uporabiti globalni primerjavi haše opredeliti. Vendar za zdaj, nimate res skrbeti, da je da kratek odgovor. Vsakdo dobro s tem? In tudi, če hočeš za uporabo hash opredeliti, to je res pomembno, da obvestilo da bi moralo biti ime v vseh kape. Nismo samo delaš RAZRED VELIKOSTI biti dramatičen. To bi bilo dejansko v vseh kape. Cool. Karkoli drugega tam? Mi smo dobri? Lovely. Dobrodošli. OK, zato želim vama, da si ogledate na to in videli, če lahko najdete hrošča. Dam ti namig. To je nekje v tej za zanko. Mmhmm? ŠTUDENT: mora biti manjša od enako 2. ALLISON: Torej bi lahko bilo manjše ali enaka 2, ali pa bi se manj kot 3. In kaj je razloge za to? ŠTUDENT: [neslišen], 0, 1, 2. ALLISON: Točno tako. Torej v paleto velikosti n, smo le indeksov n minus 1. Cool. In potem bomo lahko dobili res noro in dobili večdimenzionalne matrike. Ena od težav, ko sem ga vzel v moji leto, ki se zahtevajo multi-dimenzionalni nizi in mislim, da eden od njih lahko zahteva je v letošnjem letu, tako da se udobno. Zaviti svojo glavo okoli njega zdaj. To bo prišel nazaj preganjalo vi, ampak na hladnem način. Tako da lahko res samo pomislite multi-dimenzionalni nizi kot nizi nizi. Tako da lahko nekako mislijo o tem zgoraj vrstici kot prvi kos pomnilnika. In ta je Drugi kos pomnilnika, in zadnja vrstica Tretji kos pomnilnika. In znotraj, da obstaja niz. Ampak seveda, da je lažje upodobiti, kot je ta. Torej si ga inicializirati na enak način. To je znak odbor izmed treh s tri. Torej imate tri vrstice in trije stolpci. Mi smo ga predstavlja ta način. In ti bi jo tudi dostop enak način, stolpec z zapored. In tako 1,1 kot vidimo tukaj. Mi dodeliti nič, nič tam. 2,0 in 0,2. Torej bi samo dostop them-- če kdo je kdaj naredil linearno algebro, enak način lahko dostopate element v matrice, je ista ideja tukaj. Tako da lahko nanaša nazaj na matematiki. Vam ni treba skrbeti preveč toliko o tem zdaj. To je dobro, da so izpostavljenosti, vedeti, da lahko to storite. Lahko ustvarite nekaj crazy number-- lahko ustvariti noro nizi se Vse bom povedal. [Neslišno] To postane malce nor, ampak to je res kul. Super. In potem, da imamo primer tukaj. Izračunava dolžino niza. Torej, koliko ljudi je vedel, da strune, da ste z uporabo so le nizi znakov? OK, ja. Torej vi lahko mislite, da niste Rabljeni nizi prej, vendar kadarkoli uporabljate getstring v CSView knjižnica, ste pravzaprav le prosi za nabor znakov. In smo skrb za vse da je v back-end za vas. Ampak ste bili z uporabo nizi, odkar ste začeli. Pravkar ste si ga še ne vem. In ko ste niz znakov ali niz, ki je shranjevanje niz, Zadnja stvar, ki je vedno kaj imenovana ničelna terminator, ki je to prav tukaj. In da je na koncu vsaka beseda, ki ste shranjevanje. Torej, če želimo, da ugotovimo, dolžina niza, lahko rečemo, no, saj veš, vsebina tega bloka, ni enaka naši null terminator. To pomeni, da obstaja znak je, da smo dejansko skrbi, da je del besede. Boste povečali dolžino. In potem, ko smo dejansko prišli do konec besede, bo to prekine in da bomo vrnili našo dolžino za nas. Mmhmm? ŠTUDENT: Ali prostor štejeta kot null terminator? ALLISON: Torej, prostor je ni ničen terminator. Torej, če ste multiple-- imate prostor je dejansko poseben ASCII vrednost. ŠTUDENT: Kaj je Klicaj spet enako? ALLISON: Torej, to je tisto, kar ste se nanašajo na. Če ste kdaj me slišiš v uradnih urah, Vedno sem ga poklical, kot, bang enaka. Torej, pok ni. Tako da to ni enako. Torej, če ste poskušali vidim, če je nekaj false, veš vedno delati, bang karkoli spremenljivka, in če je napačna, je ovrednoten kot resničen in vam lahko narediš kul stvari s tem. Več o tem kasneje. Cool. Vse, kar je dobro? Super. Torej, zdaj je čas, vaše moškosti, da delo, saj sem že govoril. Torej, želim si, da bi tudi ustvarili niz s števil ena, dva, tri, nato pa so jih natisne. Vam ni treba storiti, kot so, Glavno, bla, bla, bla, karkoli. Želim samo, da bi začeli niz in nato ustvarite zanko, da jih natisnete out-- ali while zanko, do vas. Bom dal par minut, da delajo na tem. Jaz grem na počitek moj glas. Če imate kakršnakoli vprašanja, sem srečen da pridejo okoli in govoriti z vami. Vas prosimo, da se pogovorite s seboj. Pridobite več sladkarij. V resnici, bom samo hodi okoli z sladkarije. Kako pa je to? Želite koli? Kdorkoli v tej sobi rad sladkarije? Prav tako lahko traja več kot eno, fantje. Vzemite pest, če želite. Lahko pa tudi. Vsi ostali so v redu? OK. Prav, bom ustvariti anonimni Google Form, in vi lahko samo predložijo povratne informacije po vsakem oddelku če obstaja nekaj, kar si želiš izboljšujejo ali kaj želite storiti. Če sem malo preveč peppy za vas, ga lahko omilijo. Bom, da ustvarite in pošljete, da da se vam vsem tem. Vse je v redu. Torej začnimo majhna. Kako bi inicializacijo našo paleto? Kaj je tip našega paleto? Int, kajne? OK, pa kaj hočeš da pokličete svoj niz? Int matrika, cool. Vse je v redu, tako da imamo int int niz enaka, in kaj imamo potem? ŠTUDENT: [neslišno] oklepaji. ALLISON: Naramnice. In nato znotraj oklepajev? Ena vejica vejica dva tri. Cool. Tako, da je vse v redu. Torej, zdaj imamo zanko. Torej, v prvem delu našega zanke, kaj imamo? ŠTUDENT: i je enak 0? ALLISON: Torej int i enak 0, in kaj potem je naše stanje? Kaj je i bo manj kot? Manj kot tri, in kako se bomo posodobiti i? i plus plus, ga posodobiti po enega. In potem bomo imeli nekatere printf na celo število, in kaj je to zadnja Del, ki je dejansko reči, kaj bi bilo treba tiskati? Bilo bi ime matrika, ki je int matrika, kajne? In kaj je v oklepajih int paleto? i. [? Torej jaz?] Pozval my Na primer, vendar pa greste. Ni tako slabo. Vsi dobro? Cool. Tako smo končali z nizi. Čestitke. Vam je uspelo ponoviti skozi vse the-- ja? ŠTUDENT: [neslišno] ALLISON: Da. ŠTUDENT: Imam vprašanje. Se moraš zamakniti elastične trakove? ALLISON: Torej morajo oporniki line up s za zanko, nato pa vsem notri je treba oporniki zamaknjeni. ŠTUDENT: OK, naj za zanke zamaknjen? ALLISON: zanke ne Treba je zamaknjena na tej točki. Če ste bili v glavnem, če bomo dejansko še eno glavno funkcijo tod da bi zamaknjeni od glavnega. Toda v tem primeru, to je v redu. Ja, vprašanje. ŠTUDENT: Ali morate imeti oglatih oklepajih primer? ALLISON: Da, če ste inicializacijo tako. Torej zapomni, to je druga način inicializacijo paleto kjer imamo naramnice in nato naša dejanska Podatki so ločeni z vejicami znotraj. ŠTUDENT: Mislil sem, da je bilo nosilci za ta primer. ALLISON: Ne, oni so naramnice. Oni naramnice. Če ste inicializacijo da je drugi način, da je zobni aparat. Če bi rekli, int example-- če smo samo želeli prazen niz za ints, bi bilo int primer nosilce tri. Oklepaji predstavljajo velikost. Ko imate naramnice, to je dejanski podatki ste dajanje v njej na ta način. Mi lahko pomikate nazaj zelo hitro. Torej v tem enega, to je samo naše začetna matrika, inicializacija. In tukaj smo posamično dodeljevanje lise na njih, tako da to predstavlja indeks naše matrika, ki je, zakaj imamo nosilce. Ampak tukaj, če opazite, ki smo jih zapustil svoje oklepaje brez velikosti, in mi ga zažene z Dejanski podatki, vse-v-enem z naramnicami. ŠTUDENT: Torej, zakaj ne bomo imeli oklepaj v tem primeru? ALLISON: Torej, v katerem delu? ŠTUDENT: Ali ne bi mi Recimo, int primer nosilci je enaka naramnice [neslišno] nosilci za primer. ALLISON: Oh, oprostite. Prav imaš. Imamo oklepajev tam. Žal fantje, moja slaba. Ja, morate imeti oklepajih npr. Vi ste popolnoma prav. ŠTUDENT: [neslišno] ne delam. ALLISON: Ne, moraš imeti nosilci, ker drugače nje je ne bo razglasila za niz. ŠTUDENT: [neslišno]. Žal mi je zaradi tega. ALLISON: Oprostite, morate oklepajih npr. Slovnične napake. Dober ulov, zlata zvezda za vas. Tudi, če se sprašujem, če je vidva bi mi samo povej svoje ime, Rad bi, da je. Rada bi, da bi lahko vedo vse svoje ime. Ne grem na mraz klicu, sem dejansko ne samo želim, da poznate svoje ime. Zato vas prosimo, pravzaprav mi povejte imena. LEAH: Leah. ALLISON: Leah. OK, tako functions-- vem na kratko so se pogovarjali o tem med predavanjem. Torej funkcije so nekako le kot ti malo ugriz velikih stvari kjer se boste peljali v vložke, nekaj čarobna zgodi, in dobiš rezultate. Cool. Torej si dejansko uporablja Veliko jih je že. Get int, dobili niz, tiskanje f. To so vse funkcije kjer jih samo pokliči, tam je veliko čarobnih stvari dogaja v ozadju da ne boste vedno videli, in dobiš ven tisto, kar želite. Ali vsaj dobiš tisto, kar upam, da boste želeli. In v bistvu točka funkcij, in ena od glavnih tem CS, je, da bi prekinil svojo kodo v obvladljive kose. Ko začnete pisati ti res dolge programe, ali v Scratch, ko ste imeli ta grand ideja za igro, morate biti mogla zlomiti navzdol, kot, OK, kako naj začnem? Kakšne so majhne kose, ki sem jih? Oh, moram vprašati si za nekaj. Zdaj moram natisniti nekaj. Oh, rabim za izračun te vrednosti. In se naučiti, kako se zlomijo vaš Koda in velika vas težave imajo v te majhne koščke in ustvarjanje funkcij je dejansko eden veliki stebri CS. Torej si lahko zamislite funkcije, prav tako kot kot črno škatlo, čarobna black box, da si dal stvari v in boste dobili nekaj izhod. In ostali program ni treba nujno vedeti kaj se dogaja v tej črni škatli. Vse to briga je kaj gre v in kaj pride ven. Cool. Torej, zakaj deluje? Organization-- kot sem rekel, ko si ki se ukvarjajo z zelo velikimi kode baz, kako si organizirati kodo bo veliko lažje, če boste uporabili funkcije. Ker morda ne boste mogli da so, kot so, je to OK, je tisto, kar ta funkcija počne in Tukaj je tisto, kar še eden ne. In lahko enostavno videli kako so vsi fit skupaj. Torej je razstavljanje v vse ti obvladljive poddela. Torej simplification-- Prepričan sem, da fantje vse to videl, kot sem rekel, z Scratch. Imate to grand idejo, in ste všeč, kako se vse to delo? Toda, če je pristop kosih, ste rekli, v redu, kako narediti eno sprite plavajo po zaslonu? To je malo lažje. Tako dobra, uporaba funkcijskih znamk kodo precej lažje brati. To je lažje za odpravljanje napak, ki kot boste dobili v vaših kasnejših problemskih sklopov, boš res želijo biti sposoben narediti. In oni so tudi lažje za načrtovanje in izvajanje. Lahko kodo up majhna deluje razmeroma hitro in se prepričajte, da deluje proti poskuša ustvariti vso to dolgo programa in potem nekako šel skozi in vidim, kaj je delo in kaj ne. In nato ponovno uporabnost. Torej funkcije potrebujejo le biti napisana enkrat, in potem jih lahko uporabite tolikokrat, kot je mogoče. Torej, to je, kot, okolju prijazno, v nekem smislu. Če ste imeli stvari, kot so print f, kjer vas moral napisati ven čarobnost, ki gre od zadaj tiskanje f vsak čas ste želeli natisniti nekaj, vi bi bila zelo bolna in utrujena od tega do konca. Ena od stvari, ki jih boste učijo na kasnejše CS razrede, ali je eden od najbolje nasvetov dobim je, če ste kopiranjem in lepljenjem Koda, bi bilo verjetno funkcija. Če imate točno isto linije vse skozi svojo kodo, če jih vključeno ven, kodo bi verjetno biti, tako kot petkrat krajša in veliko bolj enostaven za branje. In namesto da bi poskušali odpraviti vsi ti različni kraji, kjer se stvari bi lahko šlo narobe, imate eno funkcijo da dobiš odpraviti. In obljubim, veliko o tem Morda se zdi nekakšen abstrakten zdaj, ampak kot ste dobili v kasneje in kasneje problem določa, da bom lahko veliko bolj smiselno in se res vozi domov. Ali obstajajo vprašanja o funkcijah tako daleč? Zakaj smo jih uporabljate? Vem, da še ni prišel v gnjidama kašaste še. Tako opredeljuje function-- tako kot nizi, potrebujemo nekakšen of-- to je samo splošna izhod. Torej je to funkcija, ki je le, da bo kocko nekaj vhod. In na naslednji strani, pravzaprav imamo vsi ti super tukaj malo stvari. Tako da lahko vsakdo bere da, iz radovednosti? Vem, vijolični in črni barvi morda malo težko. Vendar velike stvari know-- tako prva ena tukaj je naša vrsta donos. Zato je ta govoril o izhodu te funkcije, kadar so v tem primeru, smo se v nekem številu, kaj smo dobili, da je število kubikov. Torej mora biti int v tem primeru. Mogoče bi bilo dvojno ali nekaj drugega kasneje, vendar v tem primeru, je int. Sc, morate vedno vrsto donosa. To bo int. To bo float. To bo dvojno. Vendar morate navesti, kaj Ta funkcija se bo vrnil. V nasprotnem primeru bo to vpij vi, in to ne bo sestavil. Boste žalostni, in bom žalosten. In to je samo ni dobro. OK. In potem imamo ime funkcije. In kot lahko vidite tukaj, sc tam je to zelo dosledna paradigma. Kakšen je tvoj tip, kaj je ime, in še nekaj drugih stvari konec. Tako imamo vrsto vrednosti, naše ime funkcije, in nato imamo glavo z naš seznam parametrov. Tako da seznam parametrov je, kaj je To funkcijo bo trajalo leta? Seznam parametrov je preprosto sinonim, kakšni so naši vložki? In na enak način, da smo definirati našo funkcijo in njeno vrnitev tip, vsak od naših vložkov mora imeti tip povezan z njo. Torej vemo, kaj je naša naloga lahko dejansko delati. Torej, v tem primeru imamo nekaj int vhod. Torej še enkrat, bo to tip in kaj ste ga kliče. In potem, kot vidite Tukaj imamo naše telo. Torej imamo nekaj int izhod, da je le nekaj naših vhodnih sama krat krat sam, ki ga je pravkar kocke. In potem smo se vrnili, da je izhod. Torej, kot vidite, imamo int krat notr krat int, tako da vrne int, ki je bila tam razglašena. Torej vse, kar je kohezivna. Vse, kar je srečen. Tvoja naloga bo deloval. In to je samo splošno stvar. Torej vedno imeti vrsto vrednosti, ime, in vaš seznam parametrov. Vsaka stvar v vašem seznam parametrov, ali vhod, mora imeti tip povezan z njo. In potem imate telo tukaj, z vsemi želite storiti s svojim vhodom. In potem seveda vam želijo vrniti nekaj. Včasih deluje samo vrnitev. Dejansko ne vrnejo nekaj za vas, da uporabite. Vendar boste morali vrniti na nek način. In ko delaš lastne funkcije, bomo lahko dobili v to malo globlje. Osebno, če želite, obstaja veliko različnih stvari bi lahko naredil tam. Vsi dobro? Kaj na tem seznamu, da si me želiš iti čez, da nisi razumel? Vsakdo je dobro tam? Cool. Super. OK, tako da smo dajanje vse to skupaj zdaj. Torej imamo nekaj vhod int kock, tako To je popoln program tukaj. Do sedaj sem imel nekako so vam daje fantje odrezke, ki bi lahko se bo v okviru programa. Smo pravkar gledaš funkcij. Ampak tukaj je celoten program. Torej, koliko vas spomnim Beseda prototip iz predavanja? Cool. Imamo enega. Kako ti je ime? Steph: Steph. ALLISON: Steph? OK, super. Torej, se spomnite, kaj prototip? ŠTUDENT: Pravite [neslišno] preden ste dejansko ukvarjajo z njim. ALLISON: Se spomniš zakaj? STUDENT: No. ALLISON: OK. Zlata zvezda. Torej, ja, prototip imamo vnaprej, ker drugače, naš prevajalnik bo kričati na nas. To se dogaja, da se reči, OK, kaj je ta funkcija kocke? Všeč mi je, imate dobesedno mi je povedal ničesar o tem. To je tako, kot če vas hodi v razredu, in kdo je kot, tam je kviza danes. In si želite, Nikoli mi je povedal o tem. Nisem zadovoljen z nami. Prototip je v bistvu všeč svoj učni rekel, poglej. Glave gor. Tam se bo kviz na ta dan. Ne znorel, ko prideš do njega. Boš v redu. Tako da vse prototip pa je povedal, Glavno, da bom uporabljati to funkcijo. Obljubim, da jo bom opredelitvi kasneje. Ne znorel vame. Samo zbrati in to, kar sem vam povedal, da. Torej imamo prototip tam samo zato, da bi naše prevajalnik srečna. In to je v bistvu obljuba, da ki ste jo določili ta funkcija pozneje in da ste ne samo kliče to random stvar, ki ji ne vem, kaj ste da se delaš. Torej, v tem primeru imamo glavni tukaj. Mi inicializirati neko celo število x. To je dva. Bomo izpisal kaj je x. Bomo kocko x. Kot vidite, imamo Izjava funkcija dol, da smo govorili že prej. To bo kocko x, nato pa, če smo ne pozabite, dejansko funkcijo kocka vrne celo število do nam, ki je shranjena vx znova, tako da bomo lahko natisnete iz osmih ali kocke x prav zdaj. Ali to smiselno za vsakogar? Mi smo dobri? Vse je v redu. Super. Vse je v redu. Koliko od vas, fantje zapomni si to, da je to je v bistvu samo vaša kup in vaš heap, samo vizualizacija kako je pomnilnik tu shranjeni. Torej, želimo le, da bi Prepričajte se, da ste razumeli kako so ti zastopani v pomnilniku. Če ste vzeli razrede, kot so CS61 in stvari kasneje, boste dobili, da se naučijo to veliko bolj v globino, in to je res kul. Jaz zelo priporočam. Ampak za zdaj, bom dal vam širok pregled tako da ne bi bilo treba veš gnjidama kašaste. Torej, na vrhu le segmenta besedilo, ki vsebuje dejanske ničel in enic, binarni za to. In se ta uporablja za shranjevanje globalne spremenljivke, če imate. Ko se premaknete navzdol, smo imajo, kot vidite tu, inicializacijo podatkov, neinicializiranih podatkov, in nato kopice. Torej mi ne govoriti o kupu zdaj. Bomo prišli do nje pozneje. Za zdaj sem le, da bo val moje roke in podobne, vam ni treba vedeti o tem zdaj. Ampak bomo govorili malo bit okoli dimnika. Torej stack where-- imamo zoom. To je dejansko kako program smo samo pogledal pride v spomin. Torej, kaj se zgodi, je, vsak Tokrat smo pokličete funkcijo, smo dobili tisto, kar se imenuje sveženj okvir, ki je ena od teh. Parametri tako glavni je. Torej, to so stvari, da se peljemo v vod. Tako da si tukaj na dnu, ker je to prva stvar, ki jo imenujemo. In potem pridemo do glavne ih domačini, in ko smo rekli, da mislimo lokalne spremenljivke ki so shranjeni v glavni. Tako domačini tukaj bi, kot so, x je enak dvema v tem primeru. Ker, ki je lokaliziran na glavno. Ali vsi spomnite področje, šel čez, da je v predavanju? OK. Torej, le spremenljivke, ki inicializirata v glavni. Torej, to je, zakaj imamo glavno [? vokal. ?] In nato v glavnem pravimo kocko. Kajne? Tako smo dobili novo ogrodje s parametri kocka je. Torej, v tem primeru, kocka je parametri so sedaj x, ki smo jih opravili v, dva, ki smo jih opravili v. In potem domačini kocka je, kar je kjer dejansko cubing zgodi. In potem se vrne. Torej, kaj se zgodi, je, kot je kocka pravzaprav počne kaj pa naj naredim, da se vrne. Ko se vrne, ta okvir dopušča, in njena vrnil dol na glavno. In nato v glavnem smo pravzaprav ga lahko natisnete. Torej, če ste se vračajo nekaj, ko vaša funkcija vrne, To je kot, ki poteka na teh vrednot okvir pod njo in nato zapusti. In stvari, ki morajo izvršiti v redu. In ko prideš do večjih programov, lahko naredimo hladnejši in bolj zapletena diagrami. Toda za zdaj, to je samo splošni pregled tako da boste imeli nekakšno razumevanje, kaj se zgodi, ko kličeš funkcijo in kako to dejansko izgleda v spominu. Cool? Vsi dobro? Super. Torej, to je tista, ki je samo poskušam, da bi zamenjali stvari. Kot vidimo, imamo naša funkcija prototip tako da je naš prevajalnik ne kričijo na nas. Imamo nekaj glavnih, in smo želite preklopiti x in y. Še niso storile ta demo V predavanju še imajo oni? Imajo pa ne? OK. Tako smo šli nad tem zelo na kratko. Boste dobili v tem primeru več v globino, mislim, ta teden. In potem naslednji teden, bomo lahko resnično potopite zakaj to ne deluje. Torej imamo to praznino Funkcija here-- swap. Zato nična samo pomeni, da nič ne vrne. In imamo swap int a in int b. In imamo nekateri začasni spremenljivka, ki je. gets dodeljena b, nato pa b gets dodeljena temp tako da, in je B- Vrednosti so sedaj vklopljena. Ampak, parcela zasuk, to ne deluje. Del pa ima dejansko opraviti z dejstvom, da in b tukaj, tisti, ki so se opravili v tod so pravzaprav kopije x in y. Torej, ko funkcija dejansko vrne, preklopi kopij, vendar ne dejanska x in y je. Torej en način, da razmišljajo o tem, da je that-- pretvarjamo, to so swap. OK? Torej, v glavnem imamo x in y inicializiran. Toda, ko smo dejansko šel gor teh okvirjev z zamenjavo, smo mimo vrednosti preko z njim, in oni inicializiran. In le kdaj živeli tukaj. Tako in b živijo tukaj. In se do njihove zamenjave. Toda, ko se bomo vrnili, ne bomo storiti ničesar, s in b. in b dopust z našo funkcijo. In tako sta x in y ostanejo enake. Boste dobili več o tem, kako popraviti to in kako se dejansko ukvarjajo s tem kasneje. Ampak to je samo ena stvar, da nekako v mislih. Uporabite ga za prihodnost. Ne skrbite, če to ni uspelo vsi občutek na svetu. So kopije je največja stvar. Če ste tekoč, da bi karkoli stran od tega, ste opravili v kopijah. Torej izvirniki ostanejo nespremenjene. Vsi dobro? Cool. Tako da argumenti v ukazni vrstici. Prepričan sem, da je v začetku vidva vse imeli tiste velike, kot, int glavne praznine. In ste kot, OK kul. Res ne skrbi. To je samo tisto, kar sem moral napisati. Vendar v vaših novih programov, še posebej v tem pset, in zakaj je tam kredo na tleh? Vaš naslednji pset, ste dogaja, da se to videl. Int glavni int arg c, Niz arc v, nosilci. Torej, od kar smo pravkar danes naučil, kaj mislimo, da je drugi parameter ali da drugi element je tu? To je niz. Kakšen tip matrike? Nizov, ja. Cool. Torej, to je, kako boste se razglasi ti zdaj. Ali kdo spomnite kaj to stati? Ne? Hmm? ŠTUDENT: arg c. ALLISON: So arg c ohranja števec. To je int. To je številka, kajne? Torej, kaj menite, da je število? Ja. Torej arg c je število nizov ki tvorijo ukazno vrstico. Torej, če bi dejansko do--, obstajajo primeri po tem, tako da ne boste dobili pred sebe. To število nizov, ki samo da vaš ukazno vrstico. Torej, ko boste to storili, kot so, dot poševnica Mario, to je en niz, ki omogoča jo sestavljajo. V tem delu boste dejansko hranjenje stvari v ukazni vrstici, saj sem prepričan, da fantje, ki Prebral spec žago. Torej v teh primerih morda boste imajo dva ali tri argumente. To se dogaja, da je koristna stvar za uporabo. In potem arg v, kot smo rekli, je samo nizov. Tako da dejansko shranjuje kaj vnesete v ukazno vrstico. Tako da imamo te. Imate nekaj dot poševnica kopirati infile IZHODNA. Torej, če arg c je število nizov da smo prehajanje v ukazu linija, kaj je naša arg c v tem primeru? Tri. Točno tako. Torej, kaj je arg v nič? Torej, kaj je prva stvar, ki smo jo shranjeno? Dot poševnica kopijo, točno. In potem bi drugi lahko infile. Tretji bi outfile. Torej, kaj pa arg proti tri? To bi bilo za nično, ker je to konec našega paleto, kajne? Cool. In kaj potem o šestem enega? To je neke vrste trik vprašanje. Ish. Ali vemo, kaj je to? To je nedefinirana. Nimamo pojma, kaj bi to lahko bilo. To je vse, kar je prav po matriki v spominu, in nimamo pojma, kaj to je. In to je nevarno dotikati stvari, ker za vse veste, to je nek del spomina, ki vas ne sme biti dostop ali nična. In lahko naredi nore stvari. To je imenovano over-indeksiranje vaš vezan na svojo paleto. Ne gredo izven meja vaše matrika, ali slabe stvari se lahko zgodi. Prideš nazaj in podobno, zakoni fizike so bile uničene ali kaj podobnega. Cool. Ali to smiselno za vsakogar? Ni preveč slabo. Torej sedaj, vsi so najljubši del, pregled pset. Bravo! OK. Torej za tiste, ki ste niste prebrali pset spec, delaš nekaj res cool stuff s kriptografijo. Boste ustvarili Ceasar Šifra in Vigenere Cipher. Si je vsekakor treba prebrati spec, da vidite, kako tiste delo. In če imate kakršne koli težave glede kaj bi bilo dejansko počne, prosim pridi govoriti z mano, email mi ali besedilo me. Jaz sem okoli. Torej obstajajo trije glavni stvari tukaj, da smo želijo govoriti about-- le nekako podaljšanja predavanja. Stvari, ki jih morda ne poznate O, koristnih nasvetov in orodij. Tako bomo storili Hiter pregled ASCII, ker to se dogaja, da je super pomembno za Vigenere je Cipher. Bomo pretvorbo vhodi ukazni vrstici, ki bi bilo zelo koristno za Cezarjeva šifra. In potem modulo. Cool. Torej, ASCII znakov preslika na številke. To je velik zemljevid. Moral bi imeti to zaznamek nekje. Si ga boste želeli za vaš prvi vmesni. Prepričan sem, da ima vsakdo to Grafikon vmesno stanja. Tako da se ga učijo. Je všeč. Skrbite, da bo prav. To bo koristno. In vse to se je kodiranje ki preslika abecedna, številčna, in drugi znaki za številke za naš računalnik. Ker seveda v end, vse hranimo bo dobil pretvorjena do ničel in enic, zato moramo na nek način za zastopanje besedilo in znaki, da smo vsi vajeni kot neke vrste številko. Torej, kot smo videli, imamo velikimi črkami, kar je tam. To je 65. In male črke je 97. Tako lahko ugotovimo out-- kot sem že prej dejal, če ste imeli paleto večkratnik strune, kaj vsak od njih imajo null terminator. Bilo bi prostor. Prostor ima svoj special-- Pozabil sem, kje je tukaj. Ah. 32 je prostor. Torej je vse karte na njem. Torej imamo ASCII matematike. Pro tip-- v Vigenere je, vas bo morda zamikalo za pretvorbo številk na cela števila, ampak to je dejansko boljša praksa da bi lahko uporabila znakov, kot je ta ko ste jih dejansko manipulirajo. Torej, če želite uporabljati številke, lahko. Vendar je boljši način, ali tako, da smo nagnjeni, da vam je všeč fantje, da to storite, je na ta način, ko ste dejansko odšteje znakov. Zato vam želim fantje vrsta ugotovimo ti ven. Zakaj ne poskusite vsak drugi eno? Stori prvo, na tretja in peta. Ker želim, da poskrbite, da govorimo O vsem se moramo pogovoriti. Jaz sem samo reči, eno pomembne stvari to-- oh počakaj, fantje niso videli tega. OK, to prve tri. Naredimo to. Ker moramo govoriti o modulu. Vem. Math je težko. Lahko uporabite kalkulator. To je OK. Ali dvigni z ASCII tabelo, ker ste verjetno želeli, da je. Cool. Tako da bom hitro hoditi vi skozi njih. Torej, ljudje so tabele ASCII potegnil gor? Kakšna je naša številčna številka za male črke A? ŠTUDENT: Seven. ALLISON: Torej, male je 97 in velikimi črkami, je 65. Torej 97 minus 65? OBČINSTVO: 32? ALLISON: 62, ja. Torej, v tem primeru, kaj bi se izpisal? Da je prvi? Če imamo odstotni d, kaj bi to kaže? ŠTUDENT: številka. ALLISON: Mi tiskanje od dejanskega števila. Tako da smo dejansko dogaja natisniti 32 tukaj. In če bi bilo to odstotka c, 32 bi nam prostor. Tako razume, da znaki se lahko natisnejo tako kot številke in kot dejanski znaki je zelo pomembno, in plačevanje pozornost na dejanske vrste da delamo tukaj. Cool. Torej za vsak drugi od teh, kaj bomo, da se tiskanje? ŠTUDENT: znak. ALLISON: znak. Cool. Torej, če hočete vedeti, vam lahko delajo ti ven na svoje. Če imate težave, email mi. Toda drugi pa bo natisnete z malo začetnico b. Tretja bo izpisal velikimi B. četrti bo natisnil ven z velikimi črkami C, in zadnja bo male A. In nazadnje one-- smo dejansko dogaja priti v kaj to noro odstotkov znamenje tudi pomeni nekaj diapozitivov. Torej, poskusite s tistimi na svoje. Če imate težave, prosim pridi govoriti z mano. Če ste običajno v Adams D dvorani, me boš verjetno našli okoli. Torej, atoi. Koliko od vas je videl to funkcija ali slišali zanj sploh? Kdorkoli? Cool. Torej, kaj dejansko pomeni za je ASCII celoštevilčnemu. Torej, kaj lahko naredite, je, s Cezarjem, za tiste, ki se glasi spec, boš naredil dot slash Cezarja po tem, ko ste napisali svoj program, in potem boš input nekaj številko, ki jo želijo kodirati svojo skrivno sporočilo z. Ampak, če se spomnimo, vsi naši vhodi so shranjeni kot strune. Kajne? Imamo ARG proti niz da je vse tip niz. Torej, če si poskusite potegnite, da je eden, da bi mislim, da je, da je ena ali karkoli številka ki ste ga uporabili, je pravzaprav znak. Tako boste dobili nekateri nore rezultate. Torej, če ste dejansko želijo obrniti to v celo število ki jih lahko uporabite, da manipulira tvoja beseda ali vaše sporočilo, boste želeli uporabiti atoi. atoi samo pretvarja vaš niz v celo število. Torej, če imamo niz 12, če pravimo atoi 12., ali karkoli, da vhod, bo dejansko vrnil za vas celo število. Ni znak ali niz 12. Ki je, ko začnete dodati, da na številke, bo zelo drugačna, ker je niz 12 nekaj noro številka v ASCII, ampak celo 12 je pravzaprav 12, kar je tisto, kar želite. Tako da boste želeli, da poskrbite, da uporabite atoi. Boste želeli to pri cesarju, ker vas Potrebujemo int, ki jih uporabnik v ukazni vrstici. Toda, ko so ga dali v ukazu linija, je shranjena kot niz za začetek. Ali to smiselno? Vam ni nujno, to potrebujete za Vigenere. Z Vigenere, kot sem rekel pred, morate poskusiti in uporabo ASCII math, da izgleda bolj kot to, kje ste pravzaprav uporabo znakov, da smo dane za vas. Cool. Vsi dobro tam? Super. Torej modulo. Torej, kaj, če si dal To ogromno število za Cezarja? Imate to idejo, da če ste na Z in si dobijo številko dve, to pomeni, da need-- Z postane drugi pismo po sebi, kajne? Tako da boste morali nekako ovijte okoli, in modulo je način za to. Torej, vse kar naredi je, da vam preostanek delitve Prva številka na sekundo. In imamo nekaj primerov na da to malo več betona. Ampak v bistvu, da uporabljate modulu, ko ste želite nekaj zaviti okoli. Torej, če želite številke od ena do osem, lahko uporabite modulo na kateri koli drug število, da bo vedno vrne število od nič do osem. Tako da nekateri examples-- če imamo 55 modulo 10, vam samo daje preostanek 55 deljeno z 10, kar bi bilo 5. In potem tri modulo pet, kdo ugibati, kaj bi to bilo? Tri. Torej, če imate manjše število pred modulo, da ne more iti v enakomerno. To je nič. Tako da samo vrne število sam. Torej bi osem modulo osem bilo? ŠTUDENT: Zero. ALLISON: Zero. Ker gre v enakomerno. 16 modulo 15? OBČINSTVO: One. ALLISON: Cool. In potem je to zadnja je le, da kažejo you-- boste morda sprašujete, OK, kaj je vrstni red operacij tukaj? Storiti delimo prvi? Ali modulo prvi? Torej modulo ima enako prednost kot deljenja ali množenja, in njeno levo asociativna. Torej je na enak način. Ti bi vedno vse oklepaje, potem množenje, delitev, in modulo v vrstnem redu od leve proti desni. Torej standardna pravila. Daj ga v isti kategoriji kot delitev in razmnoževanje. Torej, v tem primeru, bi mi imajo 1 plus 2 nam daje 3. Množimo, da za 2, tako da smo dobili 6. Mi modulo, ki jih 2, ki nam daje? ŠTUDENT: 0. ALLISON: 0. In potem smo dodali 2, zato smo dobili 2 v tem zadnjem primeru. Torej modulo-- ste definitivno bo treba razmišljati o načinih za vključitev da, ko ste zavijanje po abecedi. Če ste na Z in morate premakniti naj tri prostore, da bi dobili na C, tam je, da je celoten koncept ovijanja okoli. Tako da bom moral prepustiti vi, da ugotovimo, kako točno boste jo uporabijo. Ampak vsekakor koristno orodje Za vašo pset ta teden. Res mi je všeč. To je ena izmed mojih najljubših psets. Potem, ko si to naredil, Če imate prijatelje, lahko, tako kot medsebojno izmenjujejo skrivnost sporočila in se prepričajte, da deluje. Ker ga bo pa ali karkoli dešifrirati. Veliko zabave. In da je konec odseka. Sem končal predčasno. Še vedno imam 15 minut z fantje, tako da, če je kaj da bi radi, da gredo čez nadalje, sem lahko srečen, da to storim. Katera koli druga vprašanja o Vaše pset za tiste med vami ki so se začeli ali brati spec. Vse, kar smo se pogovarjali prišlo v zadnji uri in 15 minut, da bi me rad na vrsto replikah, bom z veseljem. Ali lahko rečemo, da zapre in lahko vsi zapustijo in vzeli večji sladkarije z vami kot greš. Ampak, če obstajajo dolgotrajne vprašanja, prosim povej mi. Prav tako lahko prišel gor in govoriti z mano potem. Obljubim, da ne grizejo. Kaj drugega? Vsakdo je dobro? Občutek Vsakdo je všeč da zmorem to pset? Boš biti fini fantje. Uradne ure so tam z razlogom. Cool. Dobro. No, v tem primeru, hvala ste vsi toliko za prihod. Upam, da se vidimo naslednji teden. Ne bo več sladkarij. Obstajajo lahko druge kul stvari. In se veselim, da dobim letos vedeti vse vas.