[Glazbom] ALLISON BUCHHOLTZ-AU: Hej svima. Dobro došli u svoj prvi Službena CS50 poglavlje. Kao što možete, vidjeti je Dio CS50 nalik, samo podići naš plan za danas. Dakle, tko sam ja, kao što sam siguran vi ste svi pitate. Ja sam tvoj TF. Ja nisam samo slučajni učenik tko oponaša svoj TF. I ja ću proći vrsta ima sekcije će teći, očekivanja imamo, resursi, tako dalje i tako dalje. Idemo razgovarati o polja, ASCII funkcije, naredbenog retka argumenata, a to nije ovdje, ali Također ću se pomaže što vrsta razmisliti Vaš sljedeći pset za ovaj tjedan. Koji sam siguran da će svi poštovati. Dakle, prva question-- tko sam ja, osim vašeg bujna TF ovdje. Ja sam Alison Buchholtz-Au. Ovo je moja druga godina TFing CS50. Također sam TF CS51 u proljeće. Možda ćete vidjeti opet tu Ako se odlučite da ga uzme. Ja sam također PAF, tako da bilo Freshmen-- a ako nisi brucoš, ovo je moja treća godina kao savjetovanje kolegama. Ja sam vrlo dobro upućen u te savjetovanje o životu i tečajevima u CS, a ne u CS. Ja sam Computer Science usmjerivac. Ja sam viši u Adams House, najbolji kuće. I prije nego što sam se prebacio na CS moj student Proljeće, Bio sam zapravo biomedicinski inženjer. Htio sam ići u školu Med. Htjela sam biti kirurg traume. I to je posve promijenila otkad sam uzeo CS50. Uzeo sam tečaj moj student pada. To je bio moj prvi uvod u CS ikad. Bio sam jedan od 78% od vas koji je nula iskustva dolaze u, i to je potpuno promijenio moj život. I sada radim u Microsoft, i vaš lijep TF. I CS50 je vjerojatno jedan od najboljih iskustava da sam imao ovdje na Harvard-- i uzimanje klase i biti u mogućnosti pomoći naučiti studente poput tebe. Dakle, ja sam jako uzbuđen da ste svi ovdje. U slučaju da ste došli u kasno, nema slatkiša, koji bi trebali osjećati slobodno dolaze zgrabiti, ili pošaljite netko ga zgrabite za vas. to je u redu. Ne želim jesti to. Moja soba ima dovoljno čokoladu, pa svi vi trebali pokušati dovršiti. Znam da postoje 100 komada, ali kao, 04:00 u ponedjeljak, Mislim da je svatko mogao koristiti neke šećer. Dakle, svi vi koji ste službeno u mom dijelu trebala imati stečen e-mail od mene s mojim telefonskim brojem, e address-- slobodno me dodaj na Gchat, slobodno me dodajte na Facebooku, i za ostatak vas, možete mi e-mail ovdje. Dva su H a. Svatko uvijek radi kao i dvije L'poštom ili dva C-a. Dva H u posljednje ime. Inače će to odbijaju, i Neću dobiti svoj e-mail. Dakle, slobodno me e-mail, me kontaktirajte u bilo koje vrijeme. Ja ne mogu dobiti natrag li u roku od 24 minuta, ali obećavam da ću se vratiti u roku od 24 sata. Ako me zvati pola sata prije Vaš pset je zbog, što se kao, Nemam pojma što radim Allison. Pomozi mi. Ja ću vas smiriti, ali na kraju dana, ako me zovete pola sata prije Vaš pset je zbog ništa pisanom, Ja ću biti kao, dobro, možda vrijeme je da koristi taj kasni dan. Dakle, ja ću odgovoriti na sve vaše Zahtjevi u vrlo pravodobno. Moj telefon je obično priključen na mojim rukama. Ja obično reagiraju puno brže od 24 sata, ali ja mogu samo jamstvo Odgovor 24 sata. U redu. Pa zašto smo ovdje? Također, ako imate pitanja na bilo koje vrijeme, javite mi. Razgovaram puno. Govorim brzo, ali molim vas slobodno me prekidati. To mi daje disanje sobu kao dobro. Dakle, dijelovi su vrijeme za nas zapravo samo roniti u, dobili neke hands-on iskustvo, da se proći kroz teme koje smo spomenuli u razredu ili materijale koji preporučamo da vama na internetu. A mi ćemo zapravo ići kroz neke od tih sredstava u malo. Tako neke bilješke na stranicama za podršku. CS50-- jedna od stvari koja čini to je jedan od mojih omiljenih klase je osjećaj da nikad nisi sam. Imamo osoblje od preko 100 ljudi koji su tu da vam pomognemo. Imamo radno vrijeme Od ponedjeljka do četvrtka. Dakle, ima toliko ljudi koji ljubav razred, jednako kao i ja i tko su zapravo ovdje jer želim biti ovdje. Većina od nas su studenti, i to je kao peti razred uz na ostatak našeg rada. I to je puno posla, ali to radimo jer smo ga vole, i mi stvarno vole vas naučiti i pomoći podijeliti naše uzbuđenje za ovu temu i ovu klasu. Zato je iskoristite. Dođite razgovarati s nama. JA dobiti usamljen kad moji studenti nemojte razgovarati sa mnom, pa ako želite, dolaze družiti sa mnom. To će biti velik. Dakle, dio je očito jedan od vaših najvećih stvari. Mi ćemo proći kroz stvari koje ste naučili na predavanju, napraviti neke kratke primjere kad smo imali vremena, i općenito vrsta dobili ideju o stvarima mora se misliti o za postavljanje tvoj problem. Shorts-- koliko ljudi zapravo gledao video iz vašeg nule Ukratko? Svatko prepoznaju me? Dakle, oni su vrlo velike. Svakako treba gledati one. Puno posla je stavio u njih. I oni su samo trebali biti bite-size komada za vas samo gledati za tri ili četiri minute i dobiti bolje razumijevanje koncepta. Šetnja throughs-- kako mnogi ljudi su gledali Šetnja throughs za prijašnjih? Zamyla je nevjerojatna, zar ne? Kao, ja bih da sam Zamyla ponekad. Dakle, svakako koristite walk-provodnike. Ona će ga razbiti u male, ugristi-size komada. A kad ste to ogromna Specifikacije iz svojih problema seta, to će biti jako važno da bi mogli jednostavno naći negdje početi i raditi polako kroz njega. U redu, imamo i Study50, koji je study50.harvard.edu, vjerujem. Možete jednostavno Google studija, i to će doći. To je jedna od Najbolji izvori imamo. To je PowerPoints s bilješkama i praksi probleme za vas uz rješenja koja ste zapravo može prošetati. Dakle, ako ste ikada željeli više prakse, više nego mi u odjeljcima ili više od vaših problema setovima, ovo je stvarno mjesto vas potaknuti da ide. Izgrađena je prošlog ljeta od strane neki od mojih jako dobrih prijatelja. I to je nevjerojatno. U stvari, puno slajdova da ću biti koristeći Odjela će doći iz Study50. Dakle, puno je TFS ga koristiti. I na kraju, kao što sam spomenuti, radno vrijeme. Ako imate problema s s domaću zadaću, ti si ima problema s Koncept, dolaze u uredovno vrijeme. Idi početkom tjedna, ako možete. Izaći na quad, jer je vrsta daleko. Nitko ne voli hodati vani. Ali, to je na svoju korist, jer tada ste će imati sve te TFS, [Nečujan] okružuju vas. A pogotovo sada, Samo savjet, četvrtkom Vrlo odmarati upravo sada u Mather zbog svoje psets su zbog četvrtkom. A znajući želi koristiti svoje kasne dana još. Dakle, ako imate Problem s konceptima, ima puno TFS koji su tu da vam pomoći. Stoga dođite na Mather u četvrtak. Ako želite me vidjeti, Ja ću biti tamo. Ja sam obično rade svoj domaću zadaću, jer nitko ne želi moju pomoć. Dakle, doći vidjeti nas. Upoznajte nas na pola puta. Pa kako mnogi ljudi su prisustvovali predavanje ili je gledao na internetu? Koliko ljudi je otišao u super poglavlje prošli tjedan? Cool. To je zapravo priličan broj. Kako mnogi od vas su čitali svoje spec za ovaj tjedan, za svoju pset? Ooh, ja sam ponosan na vas dečki! Više bombona za y'all. Dobro, pa što mislimo "Susret nas na pola puta" je koji dio je zapravo samo će biti super korisna za vas Ako dođete u što je pročitao svoj Specifikacija za svoj pset. Jer kad idem kroz pregled stvari koje bi trebali biti u potrazi za, to neće napraviti koliko smisla ako vas ne znam koji je tvoj problem postavljen će se pitate što učiniti. Ako ne dođe do odjeljku, očito Ne može biti da je korisno za vas. Neću ga uzeti osobno, ako ne dolaze u moj odjeljak upravo sada, ali svakako biste trebali. Ako ne možete, gledati ih online. Oni su tu s razlogom. Rudnik će biti tamo. Kao što ste primijetili, mi smo se snima, tako da ću biti tu za vas dečki. Kao što je dobro, ide na lectures-- to je očito gdje ste uzimajući početak vašeg materijala ovdje. Dakle, ja ću svakako pokušati vam pomoći koliko god mogu, ali ja samo mogu sresti do sada. Morate vrsta upoznajte nas na pola puta. Grading-- tako, sve vas koji je dobio e-mail od mene, ti si moja službena poglavlje. Ja ću biti gradiranje svoje psets. A ja samo želim reći jednu stvar da je ti stvarno treba obratiti pozornost na su komentari. Komentari su često korisna od stvarnog rezultata smo vam dati. A komentari su zapravo gdje sam potrošiti puno svog vremena kad sam ocjenjivanje. Dakle, ja bih zahvalan što ako ih pročitali. I oni su zapravo kako ćete kako bi saznali više o dizajnu i stilu i stvari koje su malo manje izrezati i suha. Pa stvarno obratiti pažnju tim komentarima. Ako imate pitanja o njima, ili pitanja o svoj rezultat, molim te dođi sa mnom razgovarati bilo prije sekciji, Vjerojatno ću biti druženje U predvorju ili poslije. Ako želite zakazati jedan-na-jedan sastanaka o tome možete poboljšati kasnije problema setovi, samo javite mi. A onda samo par savjeta za vas dečki. Dakle, jedna od najvećih stvari Uvijek naglašavam da moj odjeljak kada ste učenje kako kod je pisati stvari na papiru prvi. Ako imate plan igre za gdje je vaš broj treba ići a ono što treba učiniti i to je oborio u malim komadićima Pseudokod Kod ste napisana, ti ćeš biti manje vjerojatno da bi pogreške u sintaksi ili stvoriti ako petlju da nema se što drugo. Ako znate gdje ste ide u ukupnom poretku, ti si manje je vjerojatno da bi to sitna pogreške koje ponekad će vas odvesti vrijeme popraviti, jer si kao, gdje sam ja nedostaje ovu konzolu? Na toj bilješci, molimo vas da koristite Style50. Pogotovo kad si ide radnog vremena, ako je vaš broj je sve prebacio na jednu stranu, Naravno da je politika da možemo reći, to popraviti tako da izgleda kao Style50 kaže što bi trebao, a onda ćemo vam pomoći. Dakle, to će učiniti vaš život lakšim. To će učiniti naš život lakšim. Svatko je sretniji. Svatko dobiva bolje ocjene. Nije li to ono što svi želimo? Dakle, pisati stvari na papiru prije li ikada dodir vaše računalo. Razgovarajte stvari na visokoj razini, a budite sigurni da znate kamo idete. A ako niste sigurni, sjesti s nekim te ih provesti kroz korak po korak što je vaš broj je trebalo učiniti. I devet puta od 10, vi ćete biti kao što su, oh, zaboravio sam ako stanje ili sam zaboravio zarez ovdje ili Ja sam ovo ažuriranje varijabilnog krivo. Dakle, to su moji savjeti za uspjeh. Dakle, budući da je oko pola od vas tražiti kao što ste sudjelovali super sekciju, Samo ću se vrlo ukratko proći kroz petlje, koji nisu bili na našem izvornom planu. No, oni su jako važni. I tako ću vrste brzine preko onih prije nego što smo dobili u naš stvarni dijelu. Prije nego što sam to učinio, postoje bilo questions-- logistički, Osobno, postoji bilo što drugo što želite znati o meni ili oko poglavlje ili klase u cjelini? Sve dobro? U redu, u redu. Lijepa. Dakle loops-- ti dečki trebali svi prepoznaju tih komada od nule. Dakle petlje su zapravo samo način da učinite nešto neki broj puta, neka ponovi Akcija se temelji na nekim uvjetna. Dakle, imamo tri različite vrste. Imamo za petlju, dok je, i ne-vrijeme. Tako je za loops-- smo samo jako opći izgled ovdje od for petlje. I to je super kad znaš kako je mnogo puta nešto treba izvršiti. Kada govorimo o druge petlje, vi ćete vidjeti zašto je to važna razlika. No, za petlje su za nešto set. Vi znate da možete ili izračunati broj ili znate koliko puta ste želim to ponoviti na početku. Dakle, ako vidite ovdje, mi imaju samo opću vrstu od kostura okvira za za petlju ovdje. Tako je za-inicijalizacije, ovo je mjesto gdje Vaši varijable pokrenut. S Mario, siguran sam da dečki učinio nešto poput int i jednak 0. To je mjesto gdje će se to dogoditi u plavom. Imate vaše stanje, koje je ono što se provjerava svaki put. Ako ovaj uvjet je istina, onda Ostatak koda izvršava. Onda to će pokrenuti again-- i pitati. I onda imamo ažuriranje, gdje ti si ažuriranju varijablu. Dakle, opet, sa sličnim Mario, siguran sam vi učinili nešto kao da sam plus plus. Dakle, svaki put petlje ran, ja dobio ažurira tako da kad smo ga provjeru protiv neki uvjet, to se mijenjalo. Jer ako vas baš imaju statičku varijablu, ako se izvršava prvi put, to je Upravo će izvršiti beskonačno. Dakle, morate biti sigurni da ažurirati svoj varijablu ispravno. I mi također imamo samo Vizualni prikaz postoji. Svi su dobro? Za petlje. Ukoliko ste vidjeli ove u vašem pset. Cool. Dakle, ovdje je samo jednostavan primjer. Ispis Ovo je CS50! 10 puta. I tako imamo inicijalizacije, kao što smo vidjeli tamo, s int i jednaka 0, jer je i manje od 10, a ja plus plus. I to će ispisati da je 10 puta. Dakle, dok loops-- dok su petlje super kada to nije nužno moraju znati koliko puta je to će se ažurirati u početku. Vi samo imaju neke stanje koje je označeno. A to bi moglo biti nešto poput while-- uzmimo primjer iz svog pset. Ako Mario, pokušate ulazna negativan broj. Pravo? Trebao si ponovno zatražiti vašu korisnika. Tako da mogu reći, dobro, ako korisnik ulaza nešto manje od nule, ponovno brz ih. A siguran sam da bi mogli imati je nešto što neki od vas koristiti u kodu. Dakle, to je jednostavna stvar. Imate dok su neki uvjetna da se provjerava svaki put kod ide na izvršavanje. Ako je to true, možemo ga pokrenuti. Inače mi ne. A ono što je stvarno important-- nešto što sam mislim da je David govorio o U lecture-- su aparatić. Što god je u roku aparatić je ono što je pogubljen. Ako ste zaboravili one aparatić, to samo ide biti liniju izravno nakon što je dok je bio pogubljen. Dakle, ako imate tri stvari koje bi trebalo dogoditi kada se to uvjeta true, a vi nemate one aparatić, samo Prvo što će se dogoditi. Dakle, biti vrlo svjesni gdje ste stavili svoje aparatić. Ako stick s Style50, To definitivno će vam pomoći. Cool. Dakle, ovo je odbrojavanje od 10 do nule. I kao što vidite ovdje, mi inicijalizirati neki brojač izvan nje. Jedna stvar koja je drugačija je nismo inicijalizacije našu varijablu unutar naše while petlje. To je inicijalizacije izvan nje. Mi smo jednostavno samo stavljajući stanje u našem vrijeme. Dakle, u ovom slučaju, to je dok je broj veći od nule. A mi ispisati ono što je naš kut je, a onda smo umanjuje našu varijablu. I to je također još jedna stvar za primijetiti. Naš ažuriranje ne događa unutar da je prvi dio while petlje. To će se zapravo dogoditi u roku braces, tijelo vašeg teksta. Dakle, nemojte-a loops-- učiniti-a petlji su veliki za korisnika validacije. Dakle, neki od vas možda Također se koristi u svoj pset. Možete reći, učiniti, kao što je, pitati korisnika za ulaz. A onda, dok, kao što su, ulaz je manji od nekog broja. Tako je za izričitog slučaj s Mariom, to bi to printf, unesite cijeli broj, a onda neki broj jednak getint. A onda ću zapravo izvršavati taj kod prvog. Vi zapravo ćete imati neka vrsta cijeli broj. A onda bi se moglo reći, dok je da je broj manji od nule. Dakle, ono što će učiniti je da je će se izvršiti najmanje jednom. To će provjeriti stanje. Ako je uvjet Istina, to će ponovno pokrenuti. Dakle, ne-while petlje su super za korisnika valjanosti, jer znate šifru će se izvršiti najmanje jednom, dok je s dok petlje, niste jamči da je će se izvršiti jednom. To će provjeriti stanje prvi i onda odlučiti za njezino izvršenje, dok je učiniti-a će izvršiti kod prvog a zatim provjerite da li morate ga ponoviti. Ima li tu razliku smisla svima? U redu. Cool. Dakle, u ovom slučaju, to je vrsta onoga što sam govorio, Ovo ponovno upite sve dok niste dobili pozitivan broj. Dakle, mi znamo da printf "Unesite pozitivan broj" i zapravo traži da se ulaz će se dogoditi barem jednom. Ako korisnik zla i čuva ulaska negativan niz, koji je zna koliko puta to će izvršavati. Ali to kod zajamčena izvršiti barem jednom. I to je razlog zašto je super za vrednovanje ulaz. A što će se koristiti da se vrlo malo. U redu, bilo kakva pitanja do sada? Svi smo dobri? Jesam li govori prebrzo? Mi smo dobri? U redu. Strašan Tako ćemo ići naprijed i razgovarati o polja. Cool. Dakle, polja su u osnovi samo strukture podataka da nam omogućiti da pohraniti stvari iste vrste. Dakle, ako ste ikada imati niz, to je bilo samo će imati Ints ili to samo će imati splavi ili to samo će imati znakova. Nećeš imati int s char s float s bračnim. Jedno. Nizovi su samo jedna veličina, ili su samo jedna vrsta. Dakle, ovdje imamo niz veličine tri sa tri brojeva u njemu. Mogli pluta, ali smo reći da su Ints. Dakle, jedna stvar za shvatiti je da nizovi su set veličine kada inicijalizirati ih, a oni nisu easily-- budući da su sve manje ugodno, samo treba misliti na njih kao Ne bude u mogućnosti proširiti u veličini. Međutim velika krenete Vaš polje u početku, to je veličina što se događa ostati, jer polja su kontinuirano blokovi memorije. A kad vi dobijete u malo više koliko memorije zapravo rasprostire se na diskova i na hrpi i stog, to će učiniti malo više smisla. Ali ti samo mogao misliti kao, to je Samo red prostora na disku. I ne može jamčiti da postoji će biti slobodnog prostora nakon njega. Ti bi mogao inicijalizirati niz tri, a onda možda inicijalizirati još jedan niz od pet kasnije, i to je odmah nakon toga. Dakle, ako ste bili da ide prošlosti mjesto tri u tom prvom nizu, što će biti pismeno više nešto drugo. Tako polja are-- za vas momci, samo misliti o njima kao fiksne veličine. Dakle, stvaranje array-- idete da je potrebno učiniti vrlo malo. Dakle, na isti način na koji smo Opća struktura za naše za petlje, imamo lijep generala Struktura za naš niz. Budući da su jedne vrste, sve elementi u nizu su od jedne vrste, morate inicijalizirati što je to tip je. Dakle, kao što vidite ovdje, imamo lijepo malo vrsta podataka nosač. Dakle, ako smo stvaranja int polje, koje će biti int. Ako smo stvaranje char polje, to će biti char. Ako smo stvaranje niza polje, to će biti niz. A onda naziv vašeg polja, što god želite da bude. Dakle, možda je test rezultate ili možda to studenti ili možda je slatkiša. Što god da se odlučite za ime svoje polje, to je ono što će biti. A onda u zagradi, vi ćete ima veličinu koju želite. Dakle, mi smo pohranjivanje 10 učenika ili smo pohranjivanje 15 vrsta slatkiša? Ono što ne. Dakle, ovdje našem primjeru, mi stvaramo niz veličine tri, što vam momci vidim ovdje na desnoj strani. A kad smo prvi inicijalizirati da, sve je postavljena na nulu. Dakle, to je samo mislio o kao prazna ploča. Imamo sve te prostore, imamo sve ove kutije mogli staviti svoje podatke u, ali oni su samo prazna za sada. Dakle, ako želimo da se zapravo dodijeliti im te vrijednosti, činimo kako točno ispod ovdje pokazuje. Dakle, imate bez obzira na ime svoje Niz je i ono indeks želite. Tako je indeks samo odnosi, kao, ono utor gledamo. A važna stvar za primijetiti je da su nizovi nula-indeksirane. Dakle, ako želimo prvo mjesto u memoriji naše ponude, to će biti nula. Ako želimo drugo, to će biti jedan. Ako želimo trećinu, to će biti dva. Tako dalje i tako dalje. Koji je razlog zašto, uobičajeno, kada radimo za loops-- sam siguran ti dečki su se pitali, zašto Ne možemo početi na 0 u odnosu na 1? A to je zato što kad smo tranziciju u korištenju polja, to preslikava ispravno. Dakle, ako želite ponoviti u nizu, to čini puno više smisla za Moram jednaka 0, jer mi znam da će odgovarati na prvo mjesto u memoriji. Svatko dobro s tim? Cool. A onda se na je dno ovdje samo još jedan način za započeti niz. Još uvijek imate svoj Vrsta podataka i ime, ali umjesto da se zapravo stavljajući veličinu tamo, možete jednostavno napraviti prazne nosače. A onda s tim kovrčava proteza na dnu, možete samo unos podataka koji koje želite odvojene zarezima. I to će automatski kažu, u redu, vidim da imate tri stvari u tim protezama. Dakle, znam da moram izdvojiti tri blokovi memorije, a zatim pohraniti one. Dakle, prva verzija mogla koristite ako tražiš svoj korisniku da ulaz vrijednosti, tako da možete ponoviti kroz niz i ask-- dobiti neki int da ih ulaz. Ako znate vrijednosti unaprijed, čini puno više smisla koristiti drugi način. No, u većini slučajeva, možda ne znate ono što su te vrijednosti će biti. Cool. Ima li još pitanja? U redu. Dakle, pristup elements-- tako jedan od velikih stvari o polja da su nasumično pristupa, što znači da vas Ne morate gledati kroz svaki blok. Ako znate da vas Želite što je u bloku dva, ti samo mogu reći, dajte mi blokirali dva. I to je razlog zašto oni Indeksi su tako važni, a to je kako smo zapravo im pristupiti. Dakle, u ovom slučaju, kao što smo vidjeli prije, kada bili smo dodjeljivanje vrijednosti, u jednom prije, imali smo ime i Indeks htjeli smo pristup, zar ne? Dakle, na isti način, to je sve što to zapravo povući taj podataka out. Imamo ime i mi imaju indeks koji želimo. Dakle, u ovom slučaju, za petlju ovdje dolje na dnu, svatko zna što radi, Što bi isprintati? Mmhmm? Točno. Pa da, to je samo iterating putem. ja je jednak zero-- možemo hodati kroz kod samo brzo. i je nula, i manje od tri u ovom trenutku, zar ne? Tako da provjerava. A mi kažemo, u redu, print f sve što je u temperaturi ja. i je nula upravo ovdje, kada smo prvi put ponoviti, pa idemo na ovom prvom licu, a mi reći, u redu, 65 Broj želimo ispisati. Dakle, to će ispisati 65 a zatim napraviti novu liniju. ja ću ažurirati, tako da ispisuje 87. To ažurira opet, i to će ispisati 30. Svi su cool? Strašan. U redu. Dakle, ovdje je vrsta jednog što sam govorio kako je možete pratiti nečiji rezultat i zašto biste koristili prvi način ga inicijalizacije umjesto da taj drugi način. I to samo prolazi kroz. I primijetiti imamo veličinu klase od 30. I mi smo to inicijalizacije Niz Ints koja je veličine 30. A onda smo se iterating putem, a mi smo traži od korisnika da unese rezultati za svaku od njih a zatim ga dodjeljivanje specifično mjesto u memoriji negdje u tom nizu. Cool? Je li to smisla svima? Mmhmm? Dakle hashtag definirati veličinu klase 30 preprocesor direktiva, što samo znači da gets-- ima raditi kao proces prikupljanja. Možete misliti na njega kao globalna varijabla. Način na koji to je typically-- to omogućuje svoj kod da se lakše mijenjati. Pa recimo da je naša veličina razreda Odjednom ide 30-15, da nisam to definira na ovaj način, ja bih moraju proći kroz cijeli moj programa i promijeniti svaki primjerak 30-15. Ali s tim, ja se promijeniti jedno mjesto, a sve ostalo se mijenja. Ako ste ikada željeli učiniti hash definirati u slučaju gdje ste praćenje nekih postaviti broj bodova za klasu ili da koristite broj koja će se koristiti, kao što su, tijekom vrlo dugog programa, to je bolje definirati da je na početku tako da ako se sve to promijeni, te dobiti za promjenu prvo mjesto umjesto 100. Da? UČENIK: Između taj događaj i jednostavno izjavljujući [nečujan] preko na vrhu. ALLISON BUCHHOLTZ-AU: Tako ima veze s efficient-- to je vrsta izvan opsega što možemo pokriti u ovom poglavlju. To mora učiniti više s učinkovitosti i kako stvari zapravo raditi u procesu sastavljanja. Ako želite da znam o tome, ja sam sretna što vas poslati e-mail s resurse o tome. Hash definirati teži da bude poželjna za stvari. I kao što kodirati više, vrsta naučiti nijanse kada ste trebali koristiti Globalna odnosu na mljeveno meso definirati. No, za sada, vi stvarno nemate brinuti o tome je da je kratki odgovor. Svatko dobro s tim? I također, ako želite koristiti ljestve definirati, to je stvarno važno primijetiti da ime treba biti u svim kape. Mi ne samo da rade KLASA VELIČINA biti dramatična. To bi zapravo trebao biti u svim kape. Cool. Sve drugo bilo? Mi smo dobri? Lijepa. Dobrodošli. U redu, tako da želim ti dečki pogledati ovo i vidjeti ako možete pronaći grešku. Ja ću vam dati savjet. To je negdje u tom za petlje. Mmhmm? UČENIK: Treba biti manji od jednak 2. ALLISON: Dakle, to može biti manja ili jednaka 2, ili to može biti manji od 3. A što je obrazloženje za to? UČENIK: [nečujan], 0, 1, 2. ALLISON: Točno. Dakle, u niz veličine n, mi samo indekse n minus 1. Cool. A onda možemo dobiti stvarno lud i dobiti višedimenzionalne polja. Jedan od problema kad sam ga uzeo u mom godine potrebne Višedimenzijski polja, i mislim da je jedan od njih može zahtijevati je ove godine, pa se ugodno. Zamotajte glavu oko njega sada. To će se vratiti na pohađati ti, ali na hladnom način. Dakle zaista možete samo misliti multi-dimenzionalnih polja kao polja od polja. Na taj način možete vrsta mislite o ovom vrh red kao prvi komad memorije. I ovo je jedna Drugi komad memorije, i zadnji red je Treći komad memorije. A unutar toga, postoji niz. Ali, naravno, to je lakše prikazati ovako. Znači li to inicijalizirati na isti način. To je lik odbor od tri do tri. Dakle, imate tri reda i tri stupca. Mi smo ga zastupa na ovaj način. I ti bi ga se pristupiti Isto tako, kolona po redu. I tako 1,1 kao što vidimo ovdje. Mi dodijeliti nula, nula tamo gore. 2,0 i 0,2. Tako da bi samo them-- pristupiti ako itko ikada učinio linearna algebra, isti način pristupiti element u UPC, to je ista ideja ovdje. Dakle, možete ga povezati natrag u matematici. Vi ne morate brinuti previše toliko o tome sada. To je dobro imati izlaganje, znati da to možete učiniti. Možete stvoriti neke luda number-- možete stvaraju lude polja se sve što ću reći. [Nečujan] Ona dobiva malo luda, ali to je stvarno cool. Strašan. A onda, pa imamo primjer ovdje. To izračunava duljinu string. Pa koliko ljudi znali da žice koje koristite samo su nizovi znakova? U redu, da. Dakle, vi možda mislite da niste Korištene polja i prije, ali bilo koje vrijeme koristite getstring u CSView knjižnica, ti si zapravo samo traži niz znakova. I mi smo brigu o svemu da je u back-end za vas. Ali ste koristeći nizovi od početka. Vi samo to još nisu znali. I kad god imate niz znakova ili niz koji je spremanje niz, Posljednja stvar je uvijek ono što je nazvao null terminator, koji je to upravo ovdje. I da se na kraju svaka riječ koju ste spremanje. Dakle, ako želimo shvatiti duljina niza, možemo reći, dobro, znate, Sadržaj tog bloka nije jednako našem null terminator. To znači da postoji neka lik tamo da smo zapravo stalo to je dio riječi. Možete povećati svoju duljinu. I onda, kada smo zapravo dobili kraj riječi, to će prekinuti i to će vratiti našu duljinu za nas. Mmhmm? STUDENT: Ima li prostora računati kao null terminator? ALLISON: Dakle, prostor je Ne null terminator. Dakle, ako imate multiple-- prostor je zapravo specifična ASCII vrijednost. UČENIK: Što je uzvik opet jednaki? ALLISON: Dakle, to je ono što se odnosi na. Ako ste ikada me čuti u radno vrijeme, Uvijek sam ga nazvati, kao što je, bang jednak. Dakle bang nije. Dakle, ovo nije jednak. Dakle, ako pokušavate vidjeti ako je nešto netočno, znaš uvijek činiti, prasak god varijabla, a ako je lažna, to true i vama može učiniti kul stvari s tim. Više o tome kasnije. Cool. Sve dobro tamo? Strašan. Dakle, sada je vrijeme svojih dečki 's raditi, jer sam razgovarao. Dakle, želim ti samo stvoriti niz s je cijeli brojevi jedan, dva, tri, a zatim su ih isprintati. Vi ne morate učiniti, kao što je, Glavni, bla, bla, bla, što god. Ja samo želim da inicijalizirati polje, a zatim stvoriti za petlje da ih ispisati out-- ili dok petlje, do vas. Samo ću vam dati par minuta da rade na tome. Idem na odmor moj glas. Ako imate bilo kakvih pitanja, ja sam sretna navratiti i razgovarati s vama. Slobodno razgovaraju jedni s drugima. Dobiti više slatkiša. U stvari, ja ću samo hodaju okolo s bombonima. Kako je to? Želite li bilo? Bilo tko drugi u ovoj sobi žele bombona? Također možete uzeti više od jedne, momci. Uzmi šaku ako želite. Neka kao dobro. Svi ostali dobri? U redu. Isto tako, ja ću stvoriti anonimni Google obrazac, a vi možete samo predati feedback nakon svake sekcije Ako postoji nešto što želite poboljšati ili nešto što želite učiniti. Ako sam malo previše energičan za vas, ja mogu ublažiti. Ja ću izraditi i poslati da to na sve vas nakon toga. U redu. Pa krenimo mali. Kako bismo resetirali naš niz? Što je vrsta našeg niza? Int, zar ne? U redu, pa što želiš nazvati svoj niz? Int niz, super. U redu, tako da imamo int int niz jednako, i što smo nakon toga? UČENIK: [nečujan] zagrade. ALLISON: Braces. A onda unutar aparatić? Jedan zarez dva zarez tri. Cool. Tako da je sve u redu. Dakle, sada mi imamo za petlju. Tako je u prvom dijelu naše za petlju, što imamo? UČENIK: ja jednak 0? ALLISON: Pa int i = 0, a onda ono što je naše stanje? Što ja ću biti manje od? Manje od tri, a kako smo mi ažurirati? I plus plus, to ažuriranje po jedan. A onda ćemo imati neki cijeli broj od printf, a što je ono posljednje Dio koji je zapravo reći ono što bismo trebali biti tiskanje? Bilo bi naziv polje, što je int niz, zar ne? A ono što je u zagradi od int niz? ja. [? Tako sam?] Nazvao moj Primjer, ali idete. Nije to loše. Svi su dobro? Cool. Tako smo učinili s polja. Čestitamo. Vi uspio ponoviti kroz sve the-- da? UČENIK: [nečujan] ALLISON: Da. UČENIK: Imam pitanje. Jeste li trebao uvući u aparatić? ALLISON: Tako aparatić moraju se podudarati sa za petlje, a zatim sve unutra se aparatić treba biti uvučen. UČENIK: U redu, trebao za petlju biti razvedena? ALLISON: for petlja ne trebaju biti uvučen u ovom trenutku. Ako ste bili u glavni, ako mi zapravo je imao glavnu ulogu ovdje, to će biti razvedena od glavnih. No, u ovom slučaju, to je u redu. Da, pitanje je. UČENIK: Da li je potrebno imati zagrade nakon primjer? ALLISON: Da, ako ste resetiranja ga na taj način. Dakle, zapamtite, ovo je drugi način resetiranja niz gdje imamo aparatić, a zatim naša stvarna Podaci odvojene zarezom u. UČENIK: Mislio sam da je bilo nosači za taj primjer. ALLISON: Ne, oni su aparatić. Oni aparatić. Ako ste ga inicijalizacije koji drugi način, to je aparatić. Ako bismo reći, int example-- ako samo smo htjeli prazan niz za Ints, bilo bi int primjer nosači tri. Nosači predstavljaju veličinu. Kada imate aparatić, to je stvarni podaci ste staviti u nju na ovaj način. Možemo dođite natrag jako brzo. Tako je u tom jednom, to je samo naše početno polje, pokrenuo. I ovdje, mi smo pojedinačno dodjeljivanje mjesta za njih, pa to predstavlja indeks naše polje, što je razlog zašto smo nosače. Ali ovdje, ako primijetite, mi smo ostavili nosače bez veličine, a mi ga inicijalizirati s stvarni podaci sve-u-jednom s aparatić. UČENIK: Pa zašto ne možemo imati nosači u ovom primjeru? ALLISON: Dakle, u kojem dijelu? UČENIK: Ne bismo recimo, int primjer zagrade jednaka aparatić [nečujan] nosači za primjer. ALLISON: Oh, ispričavam se. U pravu si. Mi nemamo zagrade tamo. Sorry dečki, moja loša. Da, trebali ste zagrade nakon primjer. Apsolutno si u pravu. UČENIK: [nečujan] ne radi. ALLISON: Ne, morate imati zagrade, jer bi u suprotnom to je neće proglasiti niz. UČENIK: [nečujan]. Žao nam je zbog toga. ALLISON: Nažalost, trebate zagrade nakon primjer. Pri upisu. Dobar ulov, zlato zvijezda za vas. Isto tako, ako pitate pitanje, ako je ti dečki bi mi samo reći svoje ime, Volio bih to. Volio bih biti u mogućnosti Znaš sve svoje nazive. Neću na hladno Pozivam vas, ja zapravo Ne samo želim znati vaše ime. Zato vas molim da zapravo reći mi svoje ime. Lea: Lea. ALLISON: Lea. U redu, tako da functions-- znam ukratko oni razgovarali o tome tijekom predavanja. Dakle funkcije su vrsta samo poput ovih malih zalogaja veličine stvari gdje prolaze ulaza, nešto čarobno se događa, a vi dobiti izlaza. Cool. Tako da zapravo koristi Mnogi od njih već. Nabavite int, dobili niz, ispis f. To su sve funkcije gdje ih samo nazvati, postoji puno čarobne stvari događa u pozadini da ne mora nužno vidjeti, a vi dobijete ono što želite. Ili barem da dobijete ono što se nadam što želite. A u osnovi točka funkcija, a jedna od glavnih tema CS, je razbiti svoj kod u upravljivu komada. Kada počnete pisati ti stvarno dugo programe, ili nule, kada ste imali ova velika ideja za igru, morate biti u mogućnosti da ga razbiti dolje, kao, u redu, kako mogu početi? Koji su mali komadi koje trebam? Oh, moram pitati Korisnik za nešto. Sada moram ispisati nešto. Oh, moram izračunati tu vrijednost. A učenje kako razbiti svoj kod i velike probleme vas imaju u ove male komadiće te stvaranje funkcije je zapravo jedan od velike Temelja CS. Dakle, možete misliti funkcije samo kao poput crne kutije, čarobno crna kutija, da ste stavili stvari u a vi dobiti neki izlaz. A ostatak programa ne treba nužno znati što se događa u toj crnoj kutiji. Sve to stalo je što ulazi i što izlazi. Cool. Pa zašto funkcionira? Organization-- kao što sam rekao, kad si koja se bavi vrlo velikim bazama koda, Kako organizirati vaš broj će biti mnogo lakše ako koristite funkcije. Budući da ćete biti u mogućnosti da se, kao, u redu to, je ono što ova funkcija radi i Evo što drugi ne. A što se lako može vidjeti kako su svi zajedno. Tako je razbijanje u sve ove rukovanje subparts. Tako simplification-- Siguran sam da dečki Svi su to vidjeli, kao što sam rekao, s nule. Imate tu veliku ideju, a ti si kao, kako se sve to radi? Ali ako joj prići parče, kažeš, u redu, Kako sam napraviti jedan sprite plutaju po ekranu? To je malo lakše. Pa dobro iskoristiti funkcijom Vaš kod mnogo lakše za čitanje. To ga čini lakšim za ispravljanje koji je kao ste dobili u svojim kasnijim problematičnim seta, idete stvarno želite biti u mogućnosti to učiniti. I oni su također lakše osmisliti i provesti. Možete kodirati do male funkcionirati relativno brzo i pobrinite se to radi u odnosu na težak stvoriti cijeli ovaj dugi programa a zatim vrsta proći i vidjeti što je raditi, a što nije. A onda višekratnog korištenja. Tako funkcionira samo trebate biti napisan jednom, i onda možete ih koristiti onoliko puta koliko je to moguće. Dakle, to je, kao, eko-friendly u smislu. Ako ste imali takve stvari print f, gdje vas morao napisati čaroliju koja ide iza ispis f svaki put ste htjeli ispisati nešto, što bi biti prilično bolestan i umoran od toga na kraju. Jedna od stvari koje ćete učiti u kasnijim CS nastavu, ili jedan od najboljih savjeta sam dobiti je, ako kopiranje i lijepljenje broj, to bi trebao vjerojatno biti funkcija. Ako imate isti linije tijekom cijelog kodu, ako ih uračunata van, Vaš broj bi vjerojatno biti, kao, pet puta kraći i biti puno lakše za čitanje. I umjesto da pokušavate riješiti sva ta različita mjesta gdje se stvari može poći po krivu, imate jednu funkciju da ste dobili otkloniti. I obećajem, puno toga može činiti takve apstraktne sada, ali kao što ste dobili u kasnije a kasnije je problem postavlja, to će učiniti puno više smisla i stvarno se odvezao kući. Ima li kakvih pitanja o funkcijama do sada? Zašto smo ih koristite? Znam da nismo stečen u gnjidama istrajan još. Dakle definiranje function-- baš kao polja, trebamo nekakav of-- to je samo opći izlaz. Dakle, to je funkcija koja je Upravo će kocke neki ulaz. I na sljedećoj stranici, zapravo, imamo sve ove strašan sitnice ovdje. Dakle, svatko može pročitati da, iz znatiželje? Znam ljubičasta i crna moglo biti malo teško. No, velike stvari za know-- tako prva jedan ovdje je naša vrsta povrata. Dakle, to govori o izlazu ove funkcije kada je, u ovom slučaju, stavimo u nekom broju, što smo uzimajući je taj broj kubu. Dakle, to bi trebao biti int u ovom slučaju. Možda će to biti bračni ili nešto kasnije, ali se u ovom slučaju, to int. Sa c, uvijek je potreban povratak vrstu. To će biti int. To će biti plovak. To će biti dvostruka. Ali, morate odrediti što ova funkcija će se vratiti. Inače će vikati na ti, a to se neće sastaviti. Vi ćete biti tužna, a ja ću biti tužan. A to jednostavno nije dobro. U redu. I onda mi imamo funkciju ime. I kao što možete vidjeti ovdje, s c postoji to vrlo dosljedan paradigma. Koji je tvoj tip, što je ime, a onda neka druga stvar na kraju. Dakle, mi imamo vrstu povrata, naše ime funkciju, a zatim mi imamo glavom s naša lista parametara. Tako Popis parametara, što je ova funkcija će poduzeti? Popis parametara jednostavno sinonim za ono što su naši ulazi? A na isti način na koji mi moraju definirati naše funkcije i dati mu povratak tipa, svaki od naših ulaznih Potrebno je imati vrstu povezane s njom. Dakle, mi znamo što je naša funkcija zapravo može raditi. Dakle, u ovom slučaju, imamo neke int ulaz. Pa opet, to će biti tipa i što ste ga zovete. A onda, kao što vidite Ovdje, mi imamo tijelo. Dakle, imamo neke int izlaz, da je samo naše ulazne puta sama Sama puta, koji je upravo to kocke. A onda smo se vratili taj izlaz. Dakle, kao što vidite ovdje, imamo int puta int puta int, pa se vraća int, koji je tamo proglašen. Dakle, sve je kohezivna. Sve je sretna. Vaš funkcija će se izvoditi. A ovo je samo opći stvar. Dakle, uvijek imaju vrstu povrata, ime, i vaš lista parametara. Svaka stvar u svoje Popis parametara, ili ulaz, Potrebno je imati vrstu povezane s njom. I onda imate svoj Tijelo ovdje s bilo želite učiniti sa svojim ulazom. A onda očito ti žele vratiti nešto. Ponekad djeluje samo će se vratiti. Oni zapravo ne vrati za korištenje nešto. Ali, morate se vratiti na neki način. A kad radite vlastite funkcije, možemo ući da malo dublje. Osobno, ako želite, postoji mnogo različitih stvari koje možete učiniti tamo. Svi su dobro? Sve se na ovom popisu da me želite ići više, da niste razumjeli? Svatko je dobro tamo? Cool. Strašan. U redu, tako da smo stavljajući sve to zajedno. Dakle, imamo neke int kocka ulaz, tako To je kompletan program ovdje. Do sada, ja sam vrsta je dajući vam dečki isječke koje bi mogle se događa unutar programa. Upravo smo bili u potrazi na funkcijama. No, ovdje je cijeli program. Pa koliko vas se sjetiti Riječ prototip od predavanja? Cool. Imamo jednu. Koje je tvoje ime? Steph: Steph. ALLISON: Steph? U redu, strašan. Dakle, sjećaš li se ono što je prototip? UČENIK: Kažete [nečujan] prije nego što zapravo nositi s time. ALLISON: Sjećate li se zašto? UČENIK: Ne. ALLISON: U redu. Zlato zvijezda. Tako da, prototip imamo unaprijed, jer u suprotnom, naš prevodilac će vikati na nas. To će reći, u redu, Što je ova funkcija kocka? Kao, što doslovno nemaju Rekao mi ništa o tome. To je kao kad vas hodati u učionici, i netko je kao, postoji kvizovima i danas. A ti si kao, vama Nikada mi je rekao o tome. Nisam sretan s nama. Prototip je u osnovi kao što je Vaš nastavni plan govoreći, izgleda. Glave gore. Tu će biti kviz na ovaj dan. Nemojte se izbezumila kada se na njega. Ti ćeš biti u redu. Dakle, sve je prototip ne kažem Glavni, ja ću koristiti ovu funkciju. Obećavam da ću ga definira kasnije. Nemojte šiziti na mene. Samo sastaviti i učiniti ono što ti kažem. Dakle, imamo prototip postoji samo da bi naš prevodilac sretni. I to je u osnovi obećanje ste definirali ova funkcija kasnije a da se ne samo poziv ovo slučajna stvar koja to ne znam što ste će biti događaj. Dakle, u ovom slučaju, imamo glavna ovdje. Mi inicijalizirati neki cijeli broj x. To je dva. Mi ćemo ispisati što je x. Idemo kocke x. Kao što vidite, mi imamo Funkcija izjava ovdje da mi razgovarali o tome prije. To će kocke x, a onda, ako smo zapamtite, funkciju kocka zapravo vraća cijeli broj na nas, koja je pohranjena U x opet, tako da možemo ispisati iz osam ili kocke x upravo sada. Je li to smisla svima? Mi smo dobri? U redu. Strašan. U redu. Koliko od vas zapamtite to tako da je ovo je u osnovi samo vaš stog i vaše gomila, Samo vizualizacija kako se memorija pohranjuje ovdje. Dakle, mi samo želimo napraviti sigurni da ste razumjeli kako su oni zastupljeni u memoriji. Ako se nastava kao CS61 i stvari kasnije, ste dobili na to naučiti daleko više u dubinu, i to je stvarno cool. JA visoko preporučiti to. Ali za sada, ja ću dati što široki pregled tako da ne morate Znaš gnjidama istrajan. Dakle, na vrhu samo tekst segmenta koji sadrži stvarne nule i one, binarni za to. A to se koristi za pohranjivanje globalne varijable, ako ih imate. Dok se krećete prema dolje, mi ima, kao što vidite ovdje, inicijalizacije podataka, nepokrenute podataka, a zatim gomila. Dakle, mi stvarno ne razgovaraju o gomili upravo sada. Mi ćemo doći na to kasnije. Za sada, samo ću val moje ruke i biti poput, ne morate znati o tome sada. No, mi ćemo govoriti malo malo o dimnjaku. Dakle snop where-- imamo zoom u. To je zapravo kako je program mi samo pogledao događa u memoriji. Pa što se događa, svaka Vrijeme zovemo funkciju, dobili smo ono što se zove snop Okvir, koji je jedan od njih. Dakle, glavni je parametre. Dakle, to su stvari da ćemo proći u glavnu. Dakle, oni su upravo ovdje na dnu, jer to je prvo što mi zovemo. I onda dođemo do glavne godina Mještani, a kad kažemo da, mislimo lokalne varijable koje su pohranjene u glavni. Dakle mještanima ovdje bi se, kao što je, X je u ovom slučaju dva. Budući da je lokaliziran na glavni. Da li su svi zapamtite opseg, prelaženju da je u predavanju? U redu. Dakle, samo varijable koje su inicijalizacije u glavni. Dakle, to je razlog zašto smo glavni [? vokal. ?] A onda u glavnom, zovemo kocku. Pravo? Tako smo dobili još jedan okvir s parametrima kocke. Dakle, u ovom slučaju, kocka je Parametri su sada x da smo prošli u, dvije koje smo prošli u. A onda kocke mještani, što je gdje je stvarna rotacije događa. A onda se vrati. Dakle, ono što se događa je kao kocka zapravo radi ono što je trebao učiniti, to vraća. Kad se vrati, to ostavlja okvir, a njegova se vratio do glavnog. A onda u glavni smo može zapravo ispisati. Dakle, kada ste povratku nešto, kad ti funkcija vraća, to je kao da prolazi na tim vrijednostima na okvir ispod nje, a zatim odlaze. A stvari moraju izvršiti u redu. A kad ste dobili na većim programima, možemo napraviti hladnije i složeniji dijagrama. Ali za sada, ovo je samo opći pregled tako da imate kakav razumijevanje onoga se događa kada ste pozivom na funkciju i kako to zapravo izgleda u memoriji. Cool? Svi su dobro? Strašan. Dakle, to je onaj koji je samo pokušava mijenjati stvari. Kao što vidimo ovdje, imamo naša funkcija prototip tako da naš prevodilac ne vikati na nas. Imamo neke glavne, a mi želite prebaciti X i Y. Oni nisu učinili ovaj demo U predavanju još, imaju oni? Oni nisu? U redu. Tako ćemo ići nad ovom veoma kratko. Vi ćete dobiti u ovom primjeru više U dubini, mislim, ovaj tjedan. A onda sljedeći tjedan možemo uistinu zaroniti zašto se to ne radi. Dakle, imamo tu prazninu Funkcija here-- zamjena. Dakle praznina samo znači da ništa se ne vrati. I mi imamo swap int A i int b. I mi imamo neki privremeni varijabla koja je. dobiva dodijeljen b, a zatim b dobiva dodijeljen temp tako da A i B je Vrijednosti su sada uključen. No, zemljište obrat, to ne rade. I dio toga zapravo ima učiniti s činjenicom da ib ovdje, one koje se donose u ovdje su zapravo kopije x i y. Dakle, kada je funkcija zapravo vraća, prebacuje kopije, ali ne stvarni x i y je. Dakle, jedan od načina da misle o tome je that-- pretvarati su zamjena. OK? Tako je u glavnom, imamo x i y inicijalizacije. No, kad smo zapravo ići gore tim okvirima s swapa, mi smo prolazeći vrijednosti iznad na njega, a oni inicijalizacije. I oni su samo ikada živjeli ovdje. Tako i b živi ovdje. I oni bi zamijenili. No, kad smo se vratili, mi ne ništa učiniti s i b. b dopust s našim funkciji. I tako x i y ostati ista. Vi ćete dobiti više u tome kako popraviti i koliko smo zapravo nositi s tim kasnije. Ali to je samo jedna stvar na neki način imati na umu. Koristite ga za budućnost. Ne brinite ako to ne čine Sve smisla u svijetu. Oni su kopije je najveća stvar. Ako ćete poduzeti ništa daleko od toga, donesen u primjeraka. Tako originali ostaju isti. Svi su dobro? Cool. Tako naredbenog retka argumenata. Siguran sam da u početku ti dečki sve imala one velike, poput, Int glavne šupljine. A ti si kao, OK cool. Ja stvarno ne briga. To je upravo ono što moram napisati. No, u svojim novim programima, pogotovo u ovom pset, i zašto je tu krede na terenu? Uz vaš sljedeći pset, ti si će se vidjeti ovo. Int glavna, int arg c, string luk v, zagrade. Dakle, iz onoga što smo upravo saznaje danas, što mislimo da je drugi parametar ili da je drugi element je ovdje? To je niz. Koji tip niza? Gudački polje, da. Cool. Dakle, to je kako idete se izjavljuje ovih sada. Se bilo tko sjetiti što to znači? Ne? Hmm? UČENIK: arg c. ALLISON: Pa arg c čuva brojač. To je int. To je broj, zar ne? Pa što misliš da je broj mjesta? Da. Dakle, arg c je broj žica koje čine naredbenog retka. Dakle, ako bismo do-- zapravo, postoje primjeri nakon toga, pa neću doći ispred sebe. To je broj nizova koji samo napraviti svoj naredbenog retka. Dakle, kada ste učinili, kao što je, dot slash Mario, to je jedan niz koji ga čini. U ovom komadu, zapravo ćete biti hranjenja stvari u naredbenog retka, kao što sam siguran da dečki koji Pročitao spec pilu. Dakle, u tim slučajevima, možda ćete imaju dva ili tri argumente. To će biti korisna stvar za korištenje. A onda arg protiv, kao što smo rekli, je samo niz polja. Tako da zapravo sprema što unesete u zapovjednoj liniji. Dakle, imamo ovo. Imate neki točkica crta kopirati infile outfile. Dakle, ako je Arg c je broj žica da smo prolazak u zapovjedništvo Linija, koja je naša arg c u ovom slučaju? Tri. Točno. Zato što je arg v nule? Dakle, što je prva stvar koju smo pohranjene? Dot slash kopiju, točno. A onda drugi će biti infile. Treći bi outfile. Pa što je s Arg protiv tri? To će biti nula, jer to je kraj naše ponude, zar ne? Cool. I onda što je šesti jedan? To je vrsta trik pitanje. Ish. Znamo li što je to? To je nedefinirano. Nemamo pojma što bi to moglo biti. To je ono što je ispravno Nakon niza u memoriji, a mi nemamo pojma što je to. I to je opasna na dodir onima stvari, jer za sve što znate, to je neki dio memorije koja vas Ne bi trebalo biti pristupa ili nula. I to može učiniti lude stvari. To se zove pretjerano indeksiranje Vaš dužan na svoj niz. Nemojte ići izvan granica svoje polje, ili se loše stvari mogu dogoditi. Možete se vratiti i, kao, zakonima fizike su uništeni ili nešto. Cool. Je li to smisla svima? Nije loše. Tako sada, svatko je omiljeni dio, pset pregled. Jupi! U redu. Dakle, za one od vas koji nisu pročitali pset spec, radite neke stvarno kul stvari s kriptografije. Ti ćeš stvoriti Cezar Šifra i Vigenèreova šifra. Svakako treba pročitati spec vidjeti kako one rade. A ako vi imate bilo kakvih problema oko Što to zapravo treba raditi, molim te dođi sa mnom razgovarati, me e-mail ili SMS mene. Ja sam okolo. Dakle, postoje tri glavna stvari ovdje da mi želite about-- razgovarati samo vrsta za proširenje predavanja. Stvari koje možda ne znate o, korisne savjete i alate. Tako ćemo učiniti brzi pregled ASCII, jer to će biti super važno za Vigenere je šifra. Idemo na obraćenje naredbenog retka ulaza, koji se će biti vrlo korisno za Cezarova šifra. I onda ostatak pri djeljenju. Cool. Dakle, ASCII znakova preslikava na brojeve. To je veliki grafikon. Trebali bi imati ovo označenim negdje. Vi ćete ga želite za Vaš prvi srednjoročna. Prilično sam siguran da svatko ima ovo grafikon na njihovom srednjoročnom list. Tako ga naučiti. Ljubav je. Držite ga pri ruci. To će biti korisno. I sve je to je kodiranje koji preslikava traka, numerička, i ostali likovi u Brojevi za naše računalo. Jer naravno, u kraj, sve što smo pohraniti će dobiti pretvaraju do nule i one, tako da moramo na neki način predstavlja tekst i likovi koje smo svi navikli vidjeti kao neku vrstu broja. Dakle, kao što vidimo ovdje, imamo velikim slovima, što je upravo tamo. To je 65. I mala je 97. Na taj način možete shvatiti out-- kao što sam rekao ranije, ako ste imali niz višestrukih žice, što je svaki od njih imaju null terminator. Bilo bi prostor. Prostor ima vlastiti special-- Zaboravio sam gdje je ovdje. Ah. 32 je prostor. Dakle, sve karte za njega. Dakle, imamo ASCII matematiku. Pro tip-- u Vigenere-a, možda ćete biti u iskušenju pretvoriti svoje brojeve na cijele brojeve, ali to je zapravo bolje praksa da bi mogli koristiti likovi kao što je ovaj kada ste ih zapravo manipulira. Dakle, ako želite koristiti brojeve, možete. No, bolji način, ili način na koji skloni smo da vam se sviđa dečki to učiniti, je na ovaj način, gdje ste zapravo oduzimanjem znakova. Dakle, želim vam dečki na vrsta lik ove out. Zašto ne probati svaki onaj drugi? Dakle, ne prvi, na treći i peti. Zato želim da biste bili sigurni da ćemo razgovarati o svemu moramo razgovarati o tome. Samo ću reći, jedan od važne stvari to-- oh čekati, vi niste vidjeli ovaj jedan. U redu, tako se prva tri. Učinimo to. Zato moramo govoriti o modulom. Znam. Matematika je teško. Možete koristiti kalkulator. To je u redu. Ili podići ASCII tablicu, jer je ste vjerojatno idući u ištanje to. Cool. Tako ću brzo hodati vi kroz njih. Dakle, ljudi su ASCII tablice izvukao? Što je naš numerička broj za malih slova A? UČENIK: Sedam. ALLISON: Dakle, mala je 97 i veliko je 65. Dakle, 97 minus 65? PUBLIKA: 32? ALLISON: 62, da. Dakle, u ovom slučaju, ono što će se ispisati? To je prvi? Ako imamo posto d, što bi to ukazuju? UČENIK: Broj. ALLISON: Mi smo ispis iz stvarnog broja. Tako smo zapravo događa otisnuti 32 ovdje. A kad bi to bilo posto c, 32 će nam dati prostora. Dakle, razumijevanje da Likovi se mogu ispisati i kao broj i kao stvarni likovi je jako važno, i plaćati pozornost na stvarne vrste kako radimo ovdje. Cool. Tako za svaki drugi od njih, ono što ćemo biti tiskanje? UČENIK: znak. ALLISON: znak. Cool. Dakle, ako vi želite znati, te može raditi to na svoju vlastitu. Ako imate problema, pošaljite email me. No, drugi će otisnuti malim slovom b. Treći će ispisati velikim slovom B. četvrti će se ispisati se nalaziti veliko C, i Posljednji će biti malo slovo A. I posljednja one-- mi zapravo događa da se u što to luda posto Znak čak znači u par slajdova. Na taj način pokušati onima na svoju vlastitu. Ako imate problema, molim te dođi sa mnom razgovarati. Ako ste obično u Adams D dvorani, vjerojatno ćete me okolo. Dakle, atoi. Kako mnogi od vas su vidjeli funkcija ili čuo za njega uopće? Svatko? Cool. Dakle, što to zapravo stoji je ASCII na cijeli broj. Pa što možete učiniti je, uz Cezara, za one koji su pročitali spec, idete raditi dot kose crte Cezara Nakon što napisati svoj program, a onda idete ulazna neki broj koji ste želite kodirati svoju tajnu poruku. Ali, ako se sjećate, sve naše Ulazi se pohranjuju kao žice. Pravo? Imamo arg v niz to je sve tipa string. Dakle, ako ste samo pokušati povući taj jedan, to bi mislim da je to jedan ili bez obzira na broj što koristi je zapravo znak. Dakle, ti si idući u dobiti neki ludi rezultata. Dakle, ako zaista želite pretvoriti ovo u cijeli broj koje možete koristiti da manipuliraju tvoja riječ ili vaša poruka, ćete želite koristiti atoi. atoi jednostavno pretvara Vaš string int. Dakle, ako imamo niz od 12, ako mi zovemo atoi 12., ili što god da je ulaz, što će se zapravo vratiti vama cijeli broj. Ne znak ili niz 12. Koji, kada počnete dodati da se brojevima, će biti vrlo različite, jer je niz 12 neki ludi broj u ASCII, ali broj 12 je zapravo 12, što je ono što želite. Dakle, želite biti sigurni da koristite atoi. Ti ćeš htjeti ovo U Cezara, jer vas potrebna int isporučuje Korisnik u zapovjednoj liniji. Ali kad su ga stavili u naredbu linije, to je pohranjena kao niz za početak. Znači li to smisla? Vi ne moraju nužno potrebno to za Vigenere. S Vigenere, kao što sam rekao prije, trebali biste probati i iskoristiti ASCII matematike koja izgleda više kao ovo, gdje ste zapravo pomoću znakova koje smo dali za vas. Cool. Svatko dobro tamo? Strašan. Tako modulu. Pa što ako si dao ovaj veliki broj za cara? Imate ideju da ako ste na Z i da ste dao broj dva, to znači da need-- Z postaje drugi Pismo nakon sebi, zar ne? Dakle, morate nekako omotati oko, a po modulu je način za to. Dakle, sve to je to vam daje ostatak podjele Prvi broj od sekunde. I mi imamo neke primjere na napraviti da se malo više betona. Ali u osnovi, koristite modulo kada vas želite napraviti nešto zaokrenuti. Dakle, ako želite samo brojevi jedan do osam, možete koristiti Modulo na bilo koji drugi broj, i to će uvijek povratak na broj od nula do osam. Dakle, ako neki examples-- imamo 55 modulo 10, to samo vam daje ostatak 55 podijeljeno s 10, što bi bilo 5. A onda tri modulu pet, tko pogodi što bi to bilo? Tri. Dakle, ako imate manji broj prije modulu, to ne može ići u ravnomjerno. To je nula. Pa to samo vraća samu broj. Dakle, osam modulu osam će biti? UČENIK: Zero. ALLISON: Zero. Jer to ide ravnomjerno. 16 ostatak pri djeljenju 15? PUBLIKA: Jedan. ALLISON: Cool. A onda je to posljednja je samo pokazati you-- možda se pitate, OK, što je redoslijed operacija ovdje? Da li ćemo podijeliti prvo? Da li smo ostatak pri djeljenju prvi? Dakle modulu drži istu prednost kao što je podjela ili množenja, i njegova lijeva asocijativni. Tako da je na isti način. Ti bi uvijek činiti zagrade, onda množenja, dijeljenja, i modulu kako s lijeva na desno. Dakle, standardna pravila. Samo ga stavi u istu kategoriju kao što je podjela i množenja. Dakle, u ovom slučaju, mi bi ima 1 plus 2 daje nam 3. Mi pomnožite to s 2, pa smo dobili 6. Mi ostatak pri djeljenju da je 2, što nam daje? UČENIK: 0. ALLISON: 0. A onda smo dodali 2, pa smo dobili 2 u ovom posljednjem slučaju. Dakle modulo-- ste definitivno idući u treba razmišljati o načinima da se uključi da kada ste omatanje oko abecede. Ako ste na Z i morate premjestiti proslijediti tri mjesta doći do C, tu je da cijeli koncept za omatanje oko. Tako ću ga ostaviti vi shvatiti kako je točno da ćeš biti koristeći ga. No, svakako koristan alat za svoj pset ovaj tjedan. Stvarno mi se sviđa ovo. Ovo je jedan od mojih omiljenih psets. Onda nakon što ste to učiniti, ako imate prijatelje, možete, kao što su, slati jedni druge u tajnosti poruke i pobrinite se to radi. Budući da ću to ili bilo što dešifrirati. Mnogo zabave. I to je kraj sekcije. Završio sam rano. Imam još 15 minuta s ti dečki, pa ako postoji išta da želite ići preko dalje, ja bih se rado učiniti. Ima li još pitanja o Vaš pset za one od vas koji su započeli ili čitati spec. Sve što smo razgovarali o je u posljednjih sat vremena i 15 minuta da bi mi se sviđa vrsti ponoviti, ja bih rado. Ili možemo odustati, a možete sve ostaviti i uzeti više slatkiša sa sobom kao i ti ići. No, ako postoje bilo odugovlačeći pitanja, molimo vas javite mi. Također možete doći i razgovarati sa mnom poslije. Obećavam da ne grizu. Bilo što drugo? Svatko je dobro? Svatko je osjećaj kao oni mogu nositi ovaj pset? Ti ćeš biti fini dečki. Radno vrijeme su tu s razlogom. Cool. U redu. Pa, u tom slučaju, hvala svi toliko za dolazak. Nadam se da ću vas vidjeti sljedeći tjedan. Tu će biti više slatkiša. Tu bi moglo biti i drugih cool stvari. I ja gledati prema naprijed za dobivanje znati sve vas ove godine.