[Glazbom] ANDI PENG: Ovo je CS50 i dobrodošli na tjedan-dva odjeljka. To je zapravo, a tjedan dva od naših class-- Zapravo, prvi tjedan smo imali dio. Pokaži ruku, koliko vas sve došao u super poglavlju prošli tjedan? U redu, to je u redu. To je u redu. Kako mnogi od vas gledao super poglavlje prošli tjedan? U REDU. I vi učinili u redu o problemu postaviti jedan? Tako ću ga da imamo hrpa stvarno inteligentnih djecu u ovoj klasi i stvari će biti u redu. U REDU. Dakle first-- Prvo, mi samo ide na kratko ići preko dnevnog reda za danas. Razgovarat ćemo o naravno logistike. Puno vas vjerojatno imate pitanja u vezi kako se stvari pokreću na ovom tečaju. Mi ćemo odgovoriti na njih. Idemo ukratko ići preko petlje u slučaju bilo od vas propustili super odjeljak. Razgovarat ćemo o ASCII mapiranje. Razgovarat ćemo o polja, funkcije, argumente naredbenog retka. I na kraju, ono što ti dečki vjerojatno sve stvarno želim biti ovdje kako bi saznali o, je vaš pset2. Mi ćemo imati neke lijepe trikove i savjeta kako to učiniti. U REDU. Također, kao drugo, imamo puno slatkiša ovdje. Svatko tko voli slatkiše, samo doći ovdje. Grab neke. Imam hrpu. Imamo tonu u uredu. Ja stvarno ne želim jesti slatkiše cijeli dan. Vi bi trebali jesti sve slatkiše, jer sam ga doveo ovdje za vas momci. Samo jedu slatkiše. Tu će biti bombona svaki odjeljak. Tako je prvi, tko sam ja? Moje ime je Andi Peng. Ja sam šef PU od CS50 ovdje na Yaleu. I pored da, i ja ću be-- ako bi netko volimo-članovima vaše trčanje prijatelj, tvoj rame za plakanje. Ako je noć prije svoga pset je to zbog, nemate pojma što se događa, javi mi se. Mi ćemo suosjećati zajedno, i tako dalje. Samo znam da sam ovdje kao resurs za vas kao bojišnici u pomoći da dečki shvatiti kako za rješavanje problema u CS50 i šire. Moj e-mail je andi.peng@yale.edu. Ja ću također poslati pojedinca e-mail s mojim telefonskim brojem na njoj tako da nisu svi na Internet može vidjeti moj broj telefona. Slobodno me zvati u bilo koje vrijeme. Ozbiljno, moj telefon je Obično priključen na mojoj ruci. Ja ne mogu odgovoriti u roku od par minuta. Ja ne mogu odgovoriti u roku od par sati. Ali mogu vam jamčiti, ako što e-mail me, ako me zovu, tekst me, ja ću odgovoriti u roku od 24 sata. Često, ja ću odgovoriti prije da, jer ja razumijem da svatko ima neke probleme, i želite svoje odgovore da se odgovori vrlo brzo. Međutim, ako poziv mene 30 minuta prije da komad koji je zbog četvrtak night-- biti, Andi, pomozi mi, Nisam started-- mogu dati li da je rame za plakanje. Ali to može biti vrijeme da razmislite o kako da ne učiniti sljedeći put. U REDU. Ups. Kako vratiti? Idemo tamo. Tako je u ovom tečaju, imamo tona podrškom za sve. Uz jednostavno sekcije ovdje, što vam svaki tjedan se provesti 90 divni minuta sa mnom, imamo i radno vrijeme. Koliko od vas već bio u uredovno vrijeme za pomoć? Veliki. To je stvarno dobro vidjeti, jer mi imaju osoblje od preko 45 Tas i CA osposobljeni za ovaj tečaj koji su ovdje za pomoć dečki sa svojim psets. Ponedjeljkom oni održani u Teal učionica u 17 Hill House ovdje na Yaleu. Utorkom i četvrtkom, oni su održana u blagovaonici. 08:00 do 11:00 sati ljepušan velik dio svaki radni dan. Uđite, izaći. Bilo je problem, ne problem-- Samo uđi, a onda ćemo vam pomoći u tome. Drugo, osim radnog vremena i dijelovi, imamo i gaćice. Je li itko ikada vidio par od gaćice ili Walkthroughs u videozapisima na web stranici? U REDU. Dakle, oni su jako, jako korisno. Naš lijepi proizvodnja Harvarda tim tamo na toj školi do sjevera, oni su snimili i producirao ove nevjerojatne prohod videa. Oni će vas odvesti korak po korak kroz kako to ide o rješavanju problema. Često, ako ste zbunjeni o tome jednostavan koncept, jedinstvenog koncepta, pogledati, jer mi vjerojatno imati kratki na njega negdje na našoj web stranici. I to je obično veliki resurs tražiti kada ste prvi put izgubio na tome da obrađuju problem. Treće, mi također imaju study50 i reference50. Dakle, studija 50 Na web stranica je samo link. To je, mislim, study.cs50.net ili nešto slično. Samo je Google. Imamo puno slajdova pripremili. Imamo puno gaćice i walkthroughs-- stvari sve sastavio vrlo lijepo i uredno za vas momci sve za pregledavanje, vidim nikakve koncepte da ste zbunjeni o tome. To bih vjerojatno biti obuhvaćeni tamo u study50. Reference50-- slično. Imamo mnogo različitih bilješke dostupne za vam na raspolaganju. I na kraju, imamo ono što je zove CS50 Raspravite, forum u kojem, ako je noć prije radite svoje probleme, recimo, imate pitanje. Prijavite se na CS50 Raspravite. Postavite pitanje. A onda je jedan od hundreds-- možda, thousands-- vršnjaka uzimajući ovaj tečaj online će se prijaviti. A možda netko može dobiti Vaš odgovor prije TA može. To je u biti samo online forum koji svi možemo koristiti kako bi razgovarali o našim problemima. To je super. U REDU. Tako je problem postavlja. Mi smo o pravu na debeli problema postaviti dva. Mnogi od nas već borili problema postaviti jednu. Mi već znamo da je možda čeka za sinoć učiniti vaš pset nije najpametnije učiniti u CS50. Savjeti i savjete bitno za Uspjeh su pročitali cijelu spec. Kako mnogi od vas već pročitati spec za pset 2? U REDU. To je solidan iznos. Znam da dečki vjerojatno prepoznali do sada su naočale su jako dugo. Oni su stvarno, stvarno dugo. To je stvarno teško čitati svaki red te pažljivo riječ po riječ. Želite samo obrano gdje to vam govori nešto učiniti. Mogu vam jamčiti, nemojte to raditi. Ako to učinite, vjerojatno ste će propustiti negdje gdje vam govori kako započeti problem ili što vam govori što ime vaš problem ili vam govori, ovo je vjerojatno najbolji način početi raditi svoj problem. A onda ćete biti izgubljeni. Kada pokušate pročitati vaše spec pola puta, dosta važno information-- u koji niste će biti u mogućnosti da se stvarno pristupa. Pa pročitajte cijeli spec. Pokušajte pročitati cijeli spec prije nego što dođe do odjeljka, jer tada, kad smo govoriti o pset, svi mi možemo imati ideju onoga što se događa. Drugo, to je koncept da ću željeli referentnim puno tijekom semestra kolegija. Ali u biti, u susret nam pola puta, zar ne? Mene, kao TA i Jasona kao naravno Voditelj i Scaz kao profesor i David kao profesor i svi ostale lijepe TAS u ovom tečaju, asistenti u ovom course-- mi ćemo se potruditi kako bi se osiguralo da ste postavili do uspjeti u ovom tečaju. Mi ćemo održati odjeljak. Mi ćemo držati radnog vremena. Mi ćemo odgovoriti na vaš telefon pozivi, odgovoriti na e-mailove, učiniti sve što možemo kako bi da vaši pitanja su odgovori. Međutim, pomozi nam se previše. Upoznajte nas na pola puta. Ako ste došli do radnog vremena što nije otišao u odjeljku, ne nakon što su vidjeli predavanja, nemajući pojma što se događa, biti kao, pomozi mi. Ja ću biti kao, dobro, žao mi je. To može biti vrijeme za posuditi da rame za plakanje, jer nisam siguran što mogu učiniti kako bi vam pomoći ako ne pokušati barem pomoći se malo u početku. Upoznajte nas na pola puta. Znate, molim Vas, došli spreman odgovoriti i dobiti spremni da se uključe u materijalu. To čini stvari toliko lakše za sve uključene. Da, to je prilično zadovoljni. Ocjenjivanje. Tako se na nastavnom planu, to je prilično u dubini vezi kako smo razred. Ali u biti, slom u to je 50% od vaše ocjene će biti psets koje je lijep, jer to je gdje ste potrošnje velika Većina vremena vaš kolegij na. Kvizovi 40%, a svoj Završni projekt će biti 10%. Tu će biti dva kvizovi tijekom tijek semestra. Mislim da će vrijeme i datum su Također navedeni na nastavni plan i program. Način na koji ćemo biti ocjenjivanja vaše psets je da smo u biti četiri vrijednosti koje smo dodijeliti svakom razredu. Imamo vrijednost opsega, ispravnost, dizajn i stil. Dakle, kao što vidite, to je vrsta naših Formula za izračunavanje psets. Tri dajemo najviše masa za ispravnost, jer očito svojim trenerom Treba testiranje za slučajeve da želimo da se testirati. Vi svi imaju check50 na raspolaganju. To je vrlo korisna funkcija da ti dečki mogu sve upload tvoj kod na našim poslužiteljima, gdje ćemo to provjeriti za vas. A ste vidjeli one frowny lica, smješko lica. Oni su stvarno, stvarno korisno. Molim vas, nemojte biti student koji vole pokušaja da hardcode u svim odgovorima na njih. Ja definitivno nisam vidio pset gdje netko vidio sve vrijednosti check50 a oni samo teško kodirana in-- ako taj broj, ispisati taj broj. Ako taj broj, ispisati taj broj. Nemojte to učiniti. Iako tehnički check50 točna, Vaš način rješavanja problem nije točno. Dakle, samo koristiti check50 rijetko. No, također bi bili sigurni da ste Razumijem kako se to radi, program radi osim check50, jer ne možemo testirati svaki Moguće slučaj check50. Mi ćemo se testiranje neke od njih. Dizajn je bitno, kako dobro osmišljen je tvoj broj? Ako ste copy-lijepljenje višestruki linija koda mnogo, mnogo puta. Možda nemate dosta najbolji dizajn u kodu. Možda je vrijeme da dodate tu petlju. U biti, ovdje je baš sve o pokušavate napraviti svoj kôd, pokušavam napisati svoj kod kako učinkovito što je više moguće, tako da je vaš program radi što je prije moguće. Konačno, imamo stil. Dakle, stil je neka vrsta proizvoljan, subjektivan pojam. Znam da smo i službeno se stil 50 Vodič za CS50, gdje vam kaže, oh, treba imati prostor ovdje. Trebali bi vrsta formatu Vaš broj na ovaj način. Trebali imenovati stvari na ovaj način. Ja stvarno ne briga, samo po sebi, kako odlučite stil kôd, kao čeznuti kao te ostati dosljedni. Na primjer, ako želite nakon što četiri ostaviti prostora prije četiri petlje, Samo to svaki put. Ne vrsta to učiniti. Nemojte to raditi druge puta. Ako želite zadržati Kovrčava aparatić prostora na određeni način, Samo uvijek je na taj način učiniti. Ne vrsta to negdje tu i negdje ne postoji. Kad smo ocjenjivanja, to je stvarno teško ako ja nemam pojma kako ste oblikovanje svoj kôd, stvari otkačeno i izvan mjesta. Ako ste upravo ga zadržati dosljedan, to je puno lakše za mene kao veće biti u mogućnosti da čitaju vaš broj. To je puno lakše za vas kao student da bi mogli gledati kroz kodu i vidjeti što nije u redu s to slash zašto je pitanja. Stil je jedan od najlakših stvari vi možete učiniti da biste dobili punu rezultate. U osnovi, ako baš briga, ako plaćate pet minuta pažnje da svoj kod svakog tjedna, trebali biti uzimajući punu stil bodova. Konačno, imamo ono što se zove množitelj opsega. Scope-- Znam da je velika Riječ, pogotovo u ovoj klasi. Ali opseg, sve to znači je da ste pokušaja su psets na najbolji vaše sposobnosti. Ako uključite u tri Vaše četiri problema i uopće ne pokušavati posljednja, vjerojatno ste će izgubiti neke bodove na opsegu. Čak i ako ste tek početak problema, učiniti svoje najbolje hodati kroz njega. Čak i ako to ne uspije, okrenuti ga u, jer to pokazuje i demonstrira nam je da ste pokušavate, da ste pokušali problem postaviti na najbolji vaše sposobnosti. A onda možemo vam dati puna boda za opsegu. Područje je također vrlo važno kada smo govoriti o najnižoj pad pset rezultat. Dakle, tijekom od semestar, ti dečki imaju devet psets. A mi zapravo će biti ispuštanje najniža ocjena od onih devet, ali samo ako imate puni opseg bodova. Dakle, ako ste pretvoriti u nepotpunom pset, na žalost, ne možemo ispustiti tu jednu, jer vaš opseg Točke nisu završeni. Pa čak i ako imate grozan tjedan gdje ste umire i da ste bolesni ili vaš pas umre, tvoj mačka umire, a ti preopterećena s domaće zadaće, Samo pokušaj pset. Učinite to na najbolji vaše sposobnosti. Ako to ne uspije, to ne smeta. Samo ga uključite u. Najmanje što možemo dati što ukazuje na trud. A tijekom napora u ovoj klasi. Barem najniži rezultat pada za trud. Pa da. To je prilično zadovoljni. Se bilo tko imati pitanja pa sada o tome kako smo razred u razredu? Ili bilo koji od ovih? Svaka od tih tako far-- sekcije, radno vrijeme? Cool. U REDU. Dakle, to je tema koja nema jedan stvarno voli razgovarati. Ja stvarno ne volim govoriti o tome. Vi ne stvarno želite čuti da ja razgovaram o tome. No, na žalost, svi smo razgovarati o tome. David je proveo 20 minuta predavanje govori o tome. I to je predmet akademskog poštenja. Tako smo svi ovdje, vjerojatno ste napisali esej negdje u našem Yale karijere. Vjerojatno dobivši razgovor gdje smo je rekao da ne plagirati naš esej, jer rad nije naše. U računalnoj znanosti, imamo ista vrsta koncepta. Svi radovi koje podnosi, sve kod koji ste napisali treba biti kod koji ste napisali. Ne bi trebalo biti kod koji ste kopira od negdje drugdje. Ne bi trebalo biti kod koji ste googled i ubacio u i ti stvarno ne znam je li to radi. Vi vrsta ima osjećaj što to radiš, ali zapravo nije. Kada su u nedoumici, u biti, to je samo biti razuman. Na našem nastavnom planu, imamo cijeli popis stvari vidimo kako je razumna odnosu nije razumno. Na primjer, razumna je li i tvoj prijatelj raspravlja što je najbolji način da ide O logično rješavanje problema. To je prilično razumno. Ono što ne bi bilo razumno je li vama dečki dobili zajedno, upisali isti kod, i pretvorio je u istom kodu. To nije razumno. Ista stvar, vrsta eseja. Ako želite raspravljati o sa svojim prijateljem, hej, to je ono što ja želim pisati o tome. To su koraci želim uzeti pisati o tome, super. To je divno. Molimo surađuju jedni s drugima. Ako vi počnete pisanje istu stvar, okrenuti u istom eseju, to je manje u redu. Pa kad ste u nedoumici, samo ne to učiniti. Ovdje smo u CS50, imamo skripte koji rade za automatizaciju za testiranje ne samo ispravnost vašeg koda, ali i jedinstvenost vašeg koda. Dakle, nemojte nas staviti u položaj vlasništvo uputiti svoj slučaj EXCOMM. Molim vas za sve, neka je samo čine ovaj prekrasan doživljaj. Svatko uči bolje, svi smo sretniji, i svi smo se postavili na uspjeti u ovom tečaju. Nešto što je vrlo Jedinstveni o ovom razredu mislim da bi svatko trebao stvarno obratite pozornost na to da imamo ono što se zove žaljenje klauzula u našem planu. Pa u biti, u roku od 72 sata, ako je mislite da ste učinili nešto nisi baš siguran je prikladno, dođite k nama. Mi vam obećati da u roku od 72 sata ćemo obraditi slučaj sami bez pozivanja na višu tijelo u upravi. Dakle, ako ste došli k meni i reći, Andi, hej, stvarno mi je žao, ali mislim da postoji par redaka u mom kod sinoć da sam vrsta googled, dobio off stog Overflow, kopirati i zalijepiti, i ja sam jako, jako žao o tome, javite mi. Molimo vas da ne samo neka to zagnojiti i samo se nadam da ću ga uhvatiti. Mi ćemo ga uhvatiti. Samo dođite k meni. Javite mi u roku od 72 sata. Mi ćemo shvatiti rješenje. A mi obećati da nećemo se odnose na sveučilišnih tijela u osnovi. Dakle, to je u vašem najboljem interesu samo biti iskren sa svima uključen u tijeku. U REDU. U REDU. Tako sada, brzo prije I dalje, bilo tko Za sva pitanja u vezi logistike o tome kako tečajeva ćemo pokrenuti, kako dijelovi idu izvoditi, bilo što od toga? U REDU. Da. PUBLIKA: [nečujan]? ANDI PENG: Da. Dakle quizzes-- koliko vas je u odjeljku ponedjeljak / srijeda? Koliko vas je u utorak / četvrtak? U redu, tako da je solidan Split ovdje. Dakle, način na koji smo pokrenuti to na Yaleu je da smo će imati dva odvojena quizzes-- jedan za svaku section-- da će se tijekom nastave. Mislim da je listopad kraj listopada, nešto slično kao jedan tjedan iz kviza. Da, pa samo dolaze na nastavu. Na tom ponedjeljak ili srijedu, ćete uzeti kviz. Na taj utorak ili četvrtak, ćete uzeti drugačiji kviz. No, isti materijal će biti pokriveni. Da. Dobro pitanje. Da. PUBLIKA: Gdje smo to ići provjeriti naše ocjene? ANDI PENG: Da. Dakle, ja ću biti poslane iz E-mail god svaki tjedan kada kvizovi su graded-- ili, Žao mi je, kada psets ocjenjuju. Psets obično okrenuo u podne ili u petak. Dakle, obećavam da ću pokušati ih dobiti natrag na vas od podneva slijedećeg petka. Kad god sam Grade pset, poslat ću iz obavijesti o Grade knjige koji vam govori vaš rezultat može se pogledati na mreži. Pa zar ovaj tjedan, nakon što sam završiti ocjenjivanje prošlotjedne psets, vi ćete dobiti na e-mail Obavijest ti, hej ovo je mjesto gdje vas ići vidjeti svoje ocjene. I možete vidjeti sve slom vaše ocjene. Možete vidjeti komentare. Oh, brzo stvar također. Komentar poglavlje u velikom Knjiga je gdje vjerojatno ću provesti većinu svog vremena ocjenjivanja. Dakle, jedna stvar koja je jako važno kada vi gledate Vaše ocjene na svojim psets ne samo da gleda na fizičkoj rezultat ali i uzimanje vremena za stvarno čitati moje komentare. Često koja vam daje povratnu informaciju o tome kako ste rješavanju problema. Ako trebate napraviti nešto malo bolje, konstruktivna kritika je obično Najbolji dan u tim komentarima odjeljku. Dakle molim vas, molim vas, ja ću provesti vrijeme pisanja komentara. Molimo, ja stvarno će poštovati ako ti dečki će čitati te komentare. U REDU. Cool. U redu. Tako ćemo početi govoriti i samo pregledavanje brzo neke od materijala iz tjedan nula samo tako da smo na desnoj strani za počinju problemi ovotjedne. Tako je while petlja je jedno od tri vrste petlje smo ranije u ovoj klasi. While petlji bitno je zapisano u sintaksi gdje je, dok je određeni uvjet, to više puta, zar ne? Razmislite o tome u ovom grafički ovdje. Ti ćeš početi na određena točka u kodu. Vi ćete ući u stanje petlje if-- Ne know-- x je manji od jedan. Ako je to istina, ti ćeš izvršiti petlje tijelo. I ti ćeš nastaviti raditi opet, opet, opet, više i over-- što je razlog zašto je to loop-- dok se stanje postaje lažna. Dakle, na ovaj način, while petlji jedan od načina jednostavnije napisati bilo kakav uvjet da treba ponoviti iznova i iznova i iznova. Samo budite oprezni kada god pišete bilo kakve petlje imate li izlaz stanje kao i ažurirati na ono što tako da je vaš petlje ne samo pregaziti i preko beskonačno. U svakom slučaju, ti ćeš da želite biti sigurni da ste mijenjaju neki aspekt Vaš broj ili na kraju petlje samo da bi bili sigurni da ćete imati način napredovanja prema stanju da želite ispuniti kako bi kraj. Znači li to da smisla svima? Mi jednostavno ne želimo biti uhvaćen u ovoj spirali gdje idemo okolo i okolo i ne postoji način da se prekinuti petlju. I svaki petlje bitno je način da radi. U REDU. Drugo, mnogi od vas u svojim Mario psets Vjerojatno je morao zaposliti Ovaj tip petlje. To se zove do while petlja. Prije svega, može bilo tko reći mene što je razlika između obveza while petlja i while petlja je? Da. PUBLIKA: DO while petlja radi na prvi [nečujan]. ANDI PENG: Da, točno. Dakle, do while petlja uvijek radi ono je unutar obveza, unutar zagrada postoji i radi taj uvjet Prije provjere the-- žao, ti to kod prije provjere stanja. A to je posebno važno za nas ovdje u ovoj klasi, jer je najviše puta ćemo žele potaknuti korisnik nekakvu ulaz. A onda, ovisno o ulazni nam daju, onda možemo procijeniti, oh, ne moramo ih ponovno potaknuti? Tako je u Mario, ako korisnik vam je dao negativna visine, na primjer, ti si idući u prvom retku i učiniti sve što je unutra. Onda ideš provjeriti vrijeme. Znate, negativna 1, je da je pozitivan broj? Ako to nije, ja ću otići natrag i ponovite učiniti i ponoviti i ponoviti i ponavljati dok ne napokon vam dati broj koji vam se sviđa, da svi mogu zaposliti u našem kodu. To je prilično važno za u biti bilo koji korisnik ulaz. Ja vam mogu jamčiti bilo Vrijeme u pset gdje molimo Vas da unos bilo kakav kod, mi smo Vjerojatno će ti dati test slučaj u kojem smo će vam dati nešto loše to je će pokušati razbiti svoj kod. Ako ćemo pokušati vas da ulazni broj, možemo samo dati niz i vidjeti kako će nositi. Ako vas pitati zaposliti dob, možemo vam dati negativan broj vidjeti kako će nositi. Samo pazite da dečki testiranje slučajevi u kojima se ne dobijete najbolje ulaz, neka je samo reći. I do while petlja je često najbolji način da dizajn vaše kôd tako da ispunjava taj opseg. U REDU. U REDU. Dakle, to je vjerojatno Kompleks petlje iz tri da smo pogledao dosad. A čini se vrlo zastrašujuće na prvi. Ali ja vam jamčim, nakon što dečki naviknete na kako koristiti for petlje, to je jedan od najkorisnijih stvari, najkorisnijih alata u svoj arsenal za kretanje naprijed u ovoj klasi. Tako, na primjer, u nule, imali smo ovaj vrlo jednostavan blok da je samo rekao ponoviti to sigurno fraze određeni broj puta. Usput, SAJ-- to je Scaz Andi Jason. Mi često potpisati našu e-pošte Saj. Ako kažemo Saj, nemojte biti zbunjeni. To je samo nas. Tako je u nule, bili smo u mogućnosti da imaju blok koji je, ponavljam volim Saj! 10 puta. Vrlo jednostavno. Logika da je Vrlo, vrlo jednostavno, zar ne? Želim prvi proći kroz prvi Vrijeme i vidjeti da je, po drugi put i vidjeti da je, po treći put, itd i tako dalje, sve dok ne dosegnete do 10. A način na koji bi predstavljao da je u kod je samo putem jednostavnog za petlju. Tako, ti ćeš proglasiti Vaša varijabla ovdje, u ovom slučaju, sa int. Idemo to sam ime. Ćemo ga inicijalizirati na 0. Te zaustavljanje izdanje će biti i manji od 10. I ažuriranje će biti i ++. A unutar petlje, to će izvršiti sve dok na kraju ga pogađa kraj condition-- u kojoj slučaj, to će prekinuti petlju. Tu bi trebao biti stvari koje vas Dečki su sve vrste prije vidio i morao učiniti za vaš problem postaviti jedan. Se bilo tko imati bilo kakvih pitanja vezano za petlje sada? U REDU. Veliki. U REDU. Dakle, za one od vas koji imaju pročitajte pset spec za ovaj tjedan znam da ćemo morati zaposliti nešto što se zove ASCII i ASCII tablici. Tako je David u predavanju otišao kratko Kako računala essentially-- sve je kodiran u računalu binarna, u nula i jedinica. A način na koji su računala u stanju pohraniti različite vrijednosti osim na nula i jedinica su kroz mapiranje ti brojevi za zastupanje druge znamenke ili bitno drugih znakova. Tako je u ovom slučaju, ASCII table-- sve to radi je karta znakova ili znakova, brojeva. Dakle izvornog koda datoteke u Vaš computer-- vidi, hej, hrpa nula i jedinica, nula i jedinica, nula i jedinica. To je ono što pohranjeni u stvarna sjećanje na računalu. Ali kada mi ljudi žele komunicirati s računalom, što want-- reći, na primjer, ako želim na veliko A, Idem u potreba neki način reći računalo, oh, kada sam tip veliko A, mislim to zastupanje u binarnom. I tako je način na koji smo to je bacio proizvoljna stvar zove ASCII tablicu, gdje smo, kao ljudi, kao što je programeri, prije nekog vremena, mi samovoljno odlučio da mi su idući dodijeliti ove broj Vrijednosti ovih znakova. Dakle, vi možete google online. Mislim da postoji link na ga u pset-- samo tablica ASCII karta, ASCII stol. To samo znači binarna brojeve u slova. I to će biti vrlo korisno za vaš problem set kad god želite izračunati ništa ili ako želite prikazati određeni znakova ili cijeli brojevi ili manipulirati određene znakove. To će biti vrlo važno da svi Znaš kako se kretati ASCII tablicu. Tako na primjer, verzalnog A predstavljen brojem 65. I mala zastupa 97. Dakle, važno je znati da je Razlika između te dvije vrijednosti je 32. Često, ako je potrebno pretvoriti iz jedna na drugu, razlika je 32. I ne brinite, ako ste ljubazni od zbunjeni o tome na prvom mjestu. Mi ćemo ići preko kako bi zaposliti to u stvarnoj koda. U REDU. Dakle, za one od vas s laptopa istaknuti slobodno podići ASCII tablicu, jer to će vjerojatno zahtijevaju vi referenca što su likovi. U REDU. Dakle, znajući da sigurno likovi kartu na određene brojeve, ako su pokrenuti tek prvi linija koja code-- na printf A, mala slova a, minus veliko A. li itko ima jedan pogodak na ono što će biti ispis zaslona sada? Dakle, prije svega, što se mala, predstavljaju? Koji je broj koji kodirana u ASCII tablici. Žao nam je? PUBLIKA: 97? ANDI PENG: 97, super. A što je veliko A PUBLIKA: 65. ANDI PENG: Dakle, što je 97 minus 65? PUBLIKA: 32. ANDI PENG: U redu. Pa što vi mislite ide dogoditi kad sam ulaz koji redak koda u moje računalo? PUBLIKA: [nečujan]. ANDI PENG: Žao nam je, progovoriti. Bez brige. To je vrlo siguran okoliš, minus kamera. Svi ćemo to-- bez brige. Samo ćemo svi praviti kao to je samo nas chilling u ovoj sobi. Bez brige. Nema sumnje je previše glup. Bez odgovora je glupo odgovor. Ja sam vjerojatno će napraviti pogrešku u toku mog nastave. Ozbiljno, ljudi, samo ga izbrbljati. Budite sigurni u sebe, znaš? Dakle, što je to? Tko je rekao da je zadnji odgovor? U REDU. Vikati da je lijepo i jasno. PUBLIKA: 32? ANDI PENG: 32. OK, neka je pokrenuti ovaj kod i vidjeti ako je to ono što se događa. U REDU. Dakle, kao što vi možete vrsta vidi, tipičnu zapis sam postaviti ovdje kako bismo zaposliti bilo kakve programa u naše računalo. Mi imamo glavnu ulogu unutar naše glavne funkcije. Samo ću kopirati i zalijepite ovaj redak koda. Također budite oprezni kada dečki kopirate i zalijepite kôd. Ponekad neki operateri ne zalijepite preko ispravno. U tom slučaju, minus Znak je zapravo crtica. I tako se računalo nije ga pokupiti. Zato sam se morao vratiti i fizički upisivati ​​to. Samo budite oprezni kada ti dečki rade to. U REDU. Idemo pokrenuti ovo ovdje. Tako ćemo cd u naš Odjeljku 2. Ja sam nazvao ovaj program asciimath. Tako zapamtite, kada smo pokrenuti bilo Program, želimo ga prvi sastaviti ga prikazuju kroz naše marke. A onda želimo zapravo pokrenuti Program na taj dot-crta. Tako ćemo ./asciimath. Točno, tamo idemo. I vidimo 32. Dobro napravljeno. Vi zaslužujete komad slatkiša. Candy za vas. Oprostite. U redu. U REDU. Dakle, možemo se vratiti u naš primjer ovdje. Aah, br. Aah. U REDU. Samo ću ga zadržati kao što je to. U REDU. U REDU. Dakle, kao što vi vidite, možemo napraviti puno vrlo zanimljivih stvari, mnogo vrlo dobrih stvari, puno vrlo komplicirane stvari koje uključuju ASCII znakova i brojeva. Nakon što se dolje da se postroje pet, to je puno slijediti zajedno. Nećemo ići kroz odjeljak. Slobodno, ako možete, Stoga na papiru najprije na ono što bi trebao biti događa kada unesete kao niz vrijednosti. Na primjer, u tom posljednjem retku imamo z-- što predstavlja određenu number-- A- koji također predstavlja određene number-- plus 1 modulos 26 plus mala slova a. Ako dečki držati čitanje po njima, te mogu vidjeti uzorak doći u kako ćemo manipulira kôd. Ja visoko, visoko predlažemo Nakon poglavlje svima vama dečki samo naprijed i ulaz one sve u računalu i vidjeti što vrste Brojevi su izlazili i rasuđivanje kroz zašto su to događa, jer za psets to će biti jako važan za vas da razumijete zašto se neke stvari događaju. Sve ove slajdove će biti online. Tako da nema brige oko pokušava fizički kopirati bilješke. Sve je na internetu. To samo po sebi dio će biti online. Sve moje izvorni kod koji Ja sam trčanje će biti online. Da. Jeste li još uvijek imate pitanja? PUBLIKA: Što je modulos? ANDI PENG: U redu. Dakle modulo je operator koji će biti prilično važno da vaš dečki ¡ť pset ovdje. Tako način da operatori u C i programiranja rada je da imate ono što se zove Podjela simbol i simbol modul, koji je kao postotak znak. Tako je u C, kada to učinite cijeli broj podijeljena cijeli broj sa kosom crtom, C ima tendenciju da žele smanjiti off sve decimalnih mjesta, jer cijeli želi pretvoriti u cijeli broj. To neće htjeti biti dvostruko s hrpom decimala sve nakon njega. Dakle, ako ja 3 podijeljeno sa 2, to se događa da odsiječe 0.5 i samo vam dati 1. Dakle, to je nešto što se vrlo oprezni kada ste radite bilo kakve matematike u programiranju, je da su brojevi koje dobijete ne mogu biti brojevi da su mislili, zbog čega je zaokruživanje na svoj Posljednji pset je tako važno. Modulo vam daje ostatak. Tako na primjer, ako jesam 3 modulo 2-- tako 3 posto znak 2-- to će vam dati ostatak toga. Dakle 3 podijeljeno s 2 je 1,5. To je 1 ostatak 1. To bi vam dati 1, koji je ostatak toga. Dakle, kada ti dečki su se kreće kroz ASCII tablice, modulo će završiti kao nešto što je vrlo važno, a mi ćemo raspravljati o tome kasnije. U REDU. Dakle, nešto što je lijepo, prilično nova i prilično jedinstven da smo razgovarali ovaj tjedan se koncept što niz je. Dakle, niz je prvi vrsta strukture podataka kako ćemo susresti u ovoj klasi. Sve struktura podataka je nekakva proizvoljna, doslovno stvari kao što su struktura da mi kao programeri stvorili, da smo stavili u naše kôd koji može sadržavati i druge dijelove koda. Dakle, u tom smislu, u array-- mislim da je to kao ormar za kartoteku, gdje ako otvorite drugačije police vašem ormaru, možete pristupiti različite stvari. U spomen, niz je samo radi ista stvar na vašem računalu. Možete imati različite blocks-- mi ih nazvati indices-- od niza. To je samo kao blok, polica memorije koje smo stvorili u svoj računalo koje možete unijeti određene stvari u različitim prostorima. Tako je s nizom, što uvijek moraju specify-- morate odrediti proglašena niz u sljedećem obliku. Ti ćeš prvo navesti vrstu podataka koji želite stvoriti od polja. Ako želim niz brojeva, Ja ću staviti int pravo postoji. Ako želim niz žice, Idem staviti žice tamo, naziv vaše polje, a zatim ti si idući u morati uglate zagrade. A unutar uglatih zagrada, ti si će imati veličinu vaše polje. Nešto što je stvarno važno imajte na umu prilikom izrade polja je da, nakon što stvorite niz, da veličina ne može promijeniti. Dakle, ako znate da upravo sada imate niz veličine 10, znaš da ću imati 10 stanica unutar ili 10 indeksa unutar ovog polja, i to nikad ne događa proširiti ili smanjiti bez obzira na sve, i da je Trenutno samo 10 blokova prostora dodijeljen u sjećanju da može pohraniti do 10 stvari bez obzira što ste stavili. Tako je u ovom način, tip podataka niz, struktura podataka koja je niz je vrlo različita od nekih drugih ćemo se pokrivaju kasnije u ovom tečaju. Da. Na primjer, ako ste htjeli stvoriti niz veličine 3 koji sadržane varijable integer-- Oh, ispričavam se, od temperature-- i temperature, u Naravno, cijeli broj. Tako bismo stvorili int, koji je Tip podataka što želimo pohraniti. Ćemo nazvati ovu temperature radi nomenklaturi imenovanja nešto što smo svi razumjeli. I mi ćemo imati uglate zagrade. I mi želimo tri broja. Tako ćemo staviti tri unutar nje. Nešto što je stvarno važno je imati na umu je da su nizovi nula indeksiraju. Sve to znači da vas početi s indeksom 0, i ti izvoditi kroz veličina polja minus 1. Tako ovdje primjer, imaju niz veličine 3. To će biti u mogućnosti održati tri vrijednosti. Ali brojevi sobom, da broj, niz, taj je indeks, Niz su 0 do 2. Dakle dečki, biti jako, jako oprezni kada idete kroz vaše probleme postavljene i stvaranje bilo kakve ponude, jer mnogo je puta to je jako, jako lako zaboraviti. Ja zapravo nemam indeks 3, kako sam trenutno samo imaju indeks 2. A ako pokušate pristup treće indeks, to će biti ono što je zove null terminator. To neće zapravo postoje u nizu. A računalo neće svidjeti. Dakle, budite oprezni kada god vi pristupate stvari jednostavno kako bi se osiguralo da se sjetite da su nizovi nula klauzulom. U REDU. Dakle, prvi primjer je samo jedan od načina stvaranja niz. Drugi primjer imam u nastavku je samo poseban način stvaranja što je isti podaci struktura koja smo upravo unesene. Dakle, umjesto da fizički radi kroz i stavljanja u temperaturi od 0 jednako god, Temperatura 1 jednako što god, temperature 2 jednako sve što sam mogla zapravo samo izravno sve stvoriti u jednom retku u temperaturnim uglatih zagrada jednaka. I obavijest u ovom slučaju, ne trebate odrediti koliko je velika vaša polje je jer računalo će proći i vidjeti da postoji tri elementa u tim vitičastih zagrada. I to će znati, u redu, Trebam niz veličine 3. Nećeš se morati ulaz je na sljedeći način. I također, da, na taj način. Se bilo tko imati pitanja o tome kako ćemo napraviti polja ili kako struktura niz radova? Da. PUBLIKA: [nečujan]? ANDI PENG: Da, točno. Dakle, ako ste bili da proglasi i inicijalizirati niz sljedećih metoda, što je na drugi način, možete jednostavno ostaviti one. I računalo automatski zna da to treba prebrojati koliko elemenata su u tim vitičastih zagrada, odvojena zarezima. Dakle, ovdje se vidi 65, 87, 30. Tako se računalo ne zna, oh, postoji tri prirodna broja. Znam stvoriti ime array Temperatura s tri elementa u njoj. Dobro pitanje. Da. PUBLIKA: Nije bilo moguće stvoriti niz s različitim vrstama podataka koja bi mogla biti upisana u nju? Na primjer, s brojeva [nečujan]? ANDI PENG: U svrhe ove klase, ne, upravo sada. Kada stvorite podatke strukturirati kao niz, vi govorite računalo, hej, trebam te izdvojiti toliko memorije u mom hard disk, s svaka stanica bude određeni broj bitova. Zapamti smo naučili u tjednu nula da različiti podaci vrste imaju različite veličine? Tako na primjer, niz je drugačiji iznos prostora nego char, koja je drugačiji iznos prostor od cijelog broja. I tako, ako ne odredite i vi miješati i odgovaraju što vrste varijabli imate, računalo je će biti vrlo zbunjeni. A to neće znati koliko memorije da ti daju. Dakle, za svrhu prava Sada, računala mogu samo prepoznaje jednu vrstu polje. Dobro pitanje. U REDU. Pa naravno, Drugo pitanje imamo je, dobro, sad kad smo stvorio polja i mi smo stavili sve te stvari u nizu, kako ćemo će biti u mogućnosti to pristup? Dakle, tipična struktura koja uvijek pristupiti niz je naš lijepi za petlju. Obećavam vam dečki da ćemo biti vidim dosta ovog momka ovdje. U biti, kad god želite za unos vrijednosti u niz ili ih želite pristupiti je Najbolji način da to učinite je za petlje, jer u for petlji, što znam koliko puta ste će htjeti pokrenuti kroz polje, jer imate stop izdanje, zar ne? I svaki put kada pokrenete kroz, možete pristupiti različit element polja. I također, to je razlog zašto se obično započinjemo za petlje na 0 vrijednosti, jer kad pristupate polja, možete pristupiti indeks nula. I tako je to paralela vrlo lijepo. Vi možda željeli pisati za int i jednak 1. i manji od ili jednak 3. Ali to ne bi išlo baš tako i ovdje, samo zato što vas imaju elemente 0, 1 ili 2. I tako, ako ste bili na početak Vaš sam elementa 1, 2 i 3, ti si idući u kraj gore trčanje iz granica svoje polje, i loše stvari će se dogoditi. Dakle, nadam se da ćete vi vidjeti segue zašto u ranijim razredima smo podučavanje ti dečki kako pokrenuti i format for petlje na način na koji smo bili. To je zato, sada smo prebačen u polja, možete vidjeti zašto je 0 posuđuje Sam vrlo lijepo za pristupanje. Dakle, način na koji smo to je that-- sam samo ga ispisujete ovdje radi ga ispišete. Ali imam rezerviranog mjesta, zarez. A stvarni Pristup Dio se događa. Naziv polja zvao temperatura. Dakle, to je temperatura i ja-ti element niza. Dakle, kao što je za petlju prolazi kroz, to će započeti u 0. To će ispisati 0. indeks tog polja. Onda to će ispisati iz prvog elementa. Onda to će ispisati iz druge. A onda ćemo razbiti. Jesu li svi jasno kako se to događa? Veliki. U redu. Dakle, ovdje imamo način govoreći, ako nismo htjeli na hard-kod mene in-- kao programer. Nisam htio da se zapravo fizički staviti u svaki pojedinačni element koji ovog polja. Da sam htio, umjesto imaju korisnički ulazne vrijednosti, što je najbolji način za to? Pa, ovdje sam stvoren ovu lijepu funkcija, u kojem mogu proglasiti niz. Dakle int scores-- neka je samo reći želimo napraviti niz koji održava ocjene svih 18 odavde u ovom poglavlju studenata. Mislim da imamo malo više od 18 djece danas. No, zbog primjer je, neka je samo pretpostaviti da je imao 18 godina. Ja bi imenovati niz rezultate sa Vrsta int, jer rezultate, naravno, su brojevi. I ja ću imati 18 uglatim zagradama, jer to je koliko sam studentima žele biti u mogućnosti pohraniti rezultate. I onako sam popuniti Niz je da bih pokrenite ga kroz for petlje, od Naravno, s 0 što mi 0. indeks. A onda sa 18 bio moj zaustavljanja izdanje, jer je 18 elemenata u nizu. A onda ću napraviti printf, Enter bodova za student-- BLA naklapanje. Može bilo tko reći mene zašto sam ovdje tiskanje I plus 1, a ne ja? To je vrsta trik Pitanje, zapravo i nije. To zapravo ne fizički utjecati na tijek koda. Da. PUBLIKA: [nečujan] 0? ANDI PENG: Da, točno. To je malo nezgodno reći, hej, ti si 0. student u ovoj klasi. To je malo čudno. Tako nas, kao ljudi, ne stvarno poput razmišljati o tome kako računala misle. Dakle, iako se u računalo, to je pohranjivanje vrijednosti u 0-og indeksa, pri mi smo ljudi, mi ne stvarno vole da se odnosi na sebe kao nula. Dakle, kada sam samo ispisati to, Idem za ispis i dodati 1 samo radi jasnoće. Dakle, kada sam ispisati, ja ću biti mogućnosti ispisati učenike od 1 do 18 godina. To zapravo ne utječe Utrka koda na bilo koji način, način na koji sam ispisati. Ali budite oprezni kada ste zapravo pristupu polje. Kada vidite rezultate i, obavijest ovdje sam zapravo Pristupom 0th indeks i nije 1 plus 0-- ili 1 plus 1, u ovom slučaju, indeks tako da je to zapravo jasno. Jesu li svi vrsta OK na kako se to radi kroz i sa svakim indeksa sam stavljajući vrijednost u nizu i stvaranje niz sa 18 brojeva da korisnik ide na ulaz? U REDU. Cool. U REDU. Sada se presele u nešto što je lijepo relevantne za ovaj komad postavljen kao dobro. Znam da u predavanju, David-- Nažalost, imao pitanje? PUBLIKA: Možete li to povećanje? ANDI PENG: Da, pa sam pokušao. Ali ja ne znam. Iz nekog razloga, to verzija PowerPoint stvarno ne radi dobro zaslonu. Dakle, samo ćemo da bi ga ovako. Sve to će se prenijeti na internetu. Žao nam je, momci. Da. U REDU. Dakle, mi također mogu imati konce. Dakle, ako vi zapravo notice-- I. Znaš Rob je otišao preko ovaj u tom predavanju da did-- niz je zapravo samo niz znakova, ako mislite o tome, zar ne? Niz je ime ili rečenica ili riječ, zar ne? Ako mi je stvoriti string imenu Andi-- samo moje ime, A-N-D-ja. Misliš na to što je samo jedna varijabla. Ali zapravo, to je oborio u samo niz znakova. Dakle, to je dobio karakter pohranjene u vrijednosti polja. To je dobio karakter n pohranjene u Drugi indeks i tako dalje i tako dalje. Tako je na takav način, da zapravo imaju ovu vrstu strukture postavljena u mjesto za naše žice. Dakle ovdje, ako su za ulaz u Riječ "pojesti" - tako niz riječi jednak dobili niz. Da mi je ulaz riječ "jesti", koje fizički način da moje računalo pohranjuje taj niz u mom sjećanju. I ako sam htjela pokrenuti kroz to i print koji out-- tako da za u I. jednaka nuli, ne zaboravite, u predavanju smo pokriveno nešto što se zove strlen, ili duljina niza. Jer ja zapravo ne znati koliko je velika niz je od bilo kojeg korisnika inputting-- Na primjer, ja uneseni riječ "jesti", a ja znam to je duga tri znaka, zar ne? Tako sam mogao staviti u tri tamo i sve će biti u redu. Ali, ako vaš korisnički ulazni nešto to je različit broj vrijednosti, idete neće moći stvarno znam da kad programirate svoj kôd. Dakle, način na koji ćemo obraditi test slučajeva kao što je to da imamo nešto zove strlen, što je samo funkcija koji vam govori koliko dugo niz je. Dakle strlen od riječi. Moj riječ jesti. n = strlen od riječi. Može mi netko reći što je to vrijednost zapravo je upravo tamo? Što je n ne predstavlja pravu Sada, u ovom primjeru, ako sam imao jesti? PUBLIKA: 3. ANDI PENG: 3, točno. Tako smo za int ja jednako nula, n = 3, u biti. I ja će se izvoditi dok je manje od 3i ++. I to će bitno ići kroz i učiniti istu stvar. To će ispisati svaka vrijednost i dati vam E-A-T. To je samo označava drugačiji način pisanja. To će biti vrlo korisno. Da. PUBLIKA: Što je prednosti stavljanja n jednaka strlen riječ unutar koje za petlju [nečujan]? ANDI PENG: Da. Dakle, ako sam ja to-- reći, na primjer, ako su za to, a zatim do-- oop-- da, u mom kodu, to bi Zapravo se radi kao ista stvar. Međutim, način na koji, objasnio je David to tijekom predavanja, ako bilo koji od vas dečki sjećam, bio je da, kao što je ljudi, kao programera, mi stvarno pokušati programiraju kod tako da naše računalo ima raditi kao minimalan što je više moguće, tako da da je naš kod je jako učinkovit. Dakle, ako sam imao da postoji, što će se dogoditi kroz moje za petlju je da sam prvi put bih proglasiti varijabla zove ja će biti 0. Ja ću provjeriti, oh, što je strlen riječi? O, strlen je 3. Tako je i manje od tri? Da, jest. Idem raditi. A onda drugi put natrag oko petlje, idem ja prirast. ja će biti jedan. I ja se ide provjeriti, oh, ali ono što je strlen od riječi? Oh, to je tri. A ne da izgledaju vrsta razoran, svaki put kada pokrenete kroz petlju, da se provjere funkciju, iako je strlen od riječi nikad zapravo mijenja? Dakle, to je dodatna snaga za računalo. Kada početi govoriti o stvarima da su milijarde i milijarde i milijarde mjesta dugo, zamislite računalo da se fizički proći i provjerite sve to svaki put. Zato, da bi samo zbog učinkovitosti, skloni smo upravo to učinili, jer je to način na koji smo samo pozivom funkcije jednom u početku, i da svako vrijeme prolazi kroz to ide pohraniti vrijednost 3 tamo, a ne da to učinite moraju neprestano provjeravati svaki put. Da. PUBLIKA: Žao mi je. Samo [nečujan]. Možete li to int n = strlen i staviti gore izvan za petlju kao? ANDI PENG: Da. Ti bi mogao učiniti, apsolutno. Razlog zbog kojeg smo ga u ovdje jer način na koji se za radove petlje je da se zove Lokalni varijabla u smislu da je sve što si stvarajući unutrašnjost za petlju postoji samo unutar za petlju. Tako je varijabla ja samo postoji u onim zagradama. I ovdje su varijable n također postoji samo u onim zagradama. Dakle, ako ste bili na korištenje od strlen Riječ više puta dolje, Apsolutno najbolji način za to bio bi to proglasi se na vrh tako da ne morate to učiniti jednom. Da. PUBLIKA: Zašto imate Nova linija nakon posto vidim, ako želite staviti sve slova uz to odvojeno? ANDI PENG: Oh, ja sam htjela ispisati ih na svakoj liniji. Nije važno. Da, to je oblikovanje. To je dobro pitanje, ipak. Da, ako sam htjela ispisati sve to na samo jednoj liniji, Ne bi crticu u. U REDU. Svatko dobro? U REDU. Cool. Pa mislim da sam govorio dovoljno. Ti dečki red pokrenuti kroz broj i recite mi što je krivo ovdje. Gdje je bug? Dakle, kao što možete vidjeti, ja sam proglašen Novi niz tipa string imenu klase. I ja sam ulaznog Sam, Jess, i Kim u nju. I ja sam pokušavao ispisati svi elementi polja. Može netko reći mene zašto se to će mi dati problema? Dat ću ti dečki 10 sekunde razmišljati o tome. U REDU. Da? PUBLIKA: Jeli lijevi centar jednak 3 ili [nečujan]? ANDI PENG: Tako je. Pa koliko puta je to zapravo će se izvoditi kroz ovaj petlju? PUBLIKA: Četiri. ANDI PENG: Točno. To će kroz četiri puta. To će se izvoditi kroz u 0, 1, 2, i 3, jer je njihov element ja manji ili jednak 3. To neće prestati kada je 2. To će zadržati ide dok ne udari 3. A kao što znamo, postoji samo tri elementi u našem stvarnom polje. Ako pokušamo pristupiti četvrti element ili indeks od 3, ideš pogoditi negdje u memoriji koja ne postoji. To se zove null terminator. Ništa će biti tamo. Vaše računalo ne ide biti vrlo sretna s tobom. Da. Se bilo tko imati pitanja zašto da se događa? To je zajednički prostor kako bi se izbjeglo. Da. PUBLIKA: Zar prvi slajd također imaju niz od 2? ANDI PENG: Ne Pa u biti, kad radite niz, koji nosač pravo postoji, da je sve number-- to je priča koju je, kako mnogi elementi imam. Nije zapravo govori mene su indeksi ništa. Dakle, u ovom slučaju, ja znam što želim pisati s tri mjesta, s tri fizičkih mjesta do držite sve što želim zadržati. Dakle, to je razlog zašto je broj tri je tu. Međutim, ako sam htjela zapravo pristupiti, ako sam htjela reći, printf Klasa broj zagrada, a zatim idete zapravo staviti fizička indeks tamo. Da, dobro pitanje. PUBLIKA: Tako je fizički Indeks trebao biti [nečujan]? ANDI PENG: Žao mi je. Možete li govoriti malo? PUBLIKA: Tako je indeks fizičkog [Nečujan] svaki od kutije? [Nečujan]? ANDI PENG: Da. Dakle, ja ću se vratiti na ovdje. Razmislite o upravo ovdje. Imamo niz veličine 3. Ima tri mjesta, kao što su, fizičke rezerviranih mjesta ovdje. Ali oni su nazvali 0, 1 i 2. Dakle, ako sam htjela da ih koristiti, način na koji sam im pristupiti printf je od god sam htio ovdje. Ti bi ispisati izvan ime njega, jer tada računalo zna, oh, moram pogledati u ovom nizu za 0th indeksa. Da. No, veličina se ne mijenja. Veličina je 3, bez obzira na kako ih označiti. U REDU. Svatko dobro? PUBLIKA: Dakle, svaki put sam [nečujan]? ANDI PENG: U redu. Dakle, u ovom slučaju, mi ne stvarno ući u njega upravo sada u tijeku. Ali znam da je string-- kao ja rekao prije, niz je bitno niz znakova. Dakle, ako sam stvoriti niz žice, ja vrsta imaju niz polja znakova, zar ne? Dakle, u ovom slučaju, jer sam imaju niz žice, ako ste bili na ulazu stvarno dugo riječ, koji još uvijek zauzima samo jedan prostor, jer to je jedan niz. Ali, ako ste bili razmišljati o likovi tog polja, onda je to da se puno više likovi od bilo koje druge riječi su. Nije jako važno za sada. Ali to je samo općenito kako se to radi. U REDU. Dakle, to je nešto što ću vam učiniti puno tijekom semestra. Moram odmoriti glas. Vi trebate sami stimuliraju. Puno vas vjerojatno moraju spavati sada. Ja unosom slučajnim probleme gdje smo kao klasa ili s partnerom pored tebe idu provesti nekoliko minuta raspravljajući kako bismo ići oko rješavanja ili stvaranje programa kao što je ovaj. Tako sada, želimo stvoriti program-- ćemo nazvati upper.c-- koji pretvara malim slovom riječi na gornje klase string-- veliko, ispričavam se. Riječ je u nizovima, ispričavam se, je sinonim. Ja ću ih promijeniti znači istu stvar. Da. Potrajati nekoliko minuta. Ona ne mora biti napisan na bilo kojem jeziku. Samo u pseudokod koda ili logično kako bismo još ići oko radiš takav problem. Da. [SIDE RAZGOVOR] Također sam primijetio da ti dečki can-- Nekako sam vidjeti već program. Mislim da moj nedostatak voditelj način je problem. Ali to je u redu. [SIDE RAZGOVOR] Da, molim vas, dečki. Dođite dobili slatkiše. Dođite dobili slatkiše. PUBLIKA: Da! [SIDE RAZGOVOR] ANDI PENG: Također, da, Ja ću početi bacanje bombona na ljude koji ne odgovara na pitanja. Tako da bi trebao sve odgovoriti na pitanja. Ili pretpostavljam ljudi koji odgovorili na pitanja. Da, obrnuto. [SIDE RAZGOVOR] PUBLIKA: [nečujan] ANDI PENG: Da. Da. [SIDE RAZGOVOR] U redu, dečki. Uzmi, kao, više od 10 sekundi. [SIDE RAZGOVOR] U redu, dečki. Dakle, prije nego što počnete pokušavate zapravo fizički pisati kod, dobar običaj da se razvije da želimo prve vrste razuma iz logično kako će to učiniti. Vi želite biti sigurni, pred vama fizički početi pokušava da kod u Mario, da bi sigurni da imate svoj pseudokod. To je vodeći vas kroz što vam je potrebno za stvaranje tako da, kad vas fizički napisati svoj program kasnije, vi ste bolje mogli uhvatiti pogreške u kodu i slične stvari. Tako ćemo samo početak by-- na engleskom jeziku, u pseudokod, se bilo tko želi dati ja općenito objašnjenje kako bismo ići o događaj ovaj? Da. PUBLIKA: [nečujan]. ANDI PENG: Naravno, nema brige. PUBLIKA: Možete li ga zamoliti da ili pitajte netko dobiti niz 1-- Da, string, i onda-- ANDI PENG: Da, pa to je dobar početak. Ja ću početi tipkati, ispričavam se, kao što govore. So-- PUBLIKA: --the mala slova brojevi su veći, zar ne? Ili mala slova imaju visoke brojeve? ANDI PENG: Točno. PUBLIKA: Pa onda mi oduzeti 32 iz bilo kojeg [nečujan]. ANDI PENG: Veliki. Tako smo vrsta imati opći osjećaj kako raditi o ovom problemu. Znajući da smo vrsta naučili fizički način na koji žice pohranjuju se u memoriji, što vam je činiti već znam da ćeš vjerojatno napisati u kodu kako bi se kretati kroz niz? PUBLIKA: Za petlje. ANDI PENG: for petlji, točno. Veliki. Tako smo vrsta ima generički pseudokod zapisano takav je davanje vam bilješke o tome kako će se kretati rješavanju problema. Sada kada ste ovo, može referenca za kasnije kad pokušavate zapravo pisati svoj kod. Tako smo zapravo može ići ovdje. I ja sam dobio funkciju pod nazivom upper.c-- tamo is-- od samo prazan predložak odmah da su ti dečki će mi pomogne shvatiti kako napisati ova linija code-- ne liniju koda. To će biti više linija koda. Prilikom pokretanja bilo kakve praznog pset, što je prva stvar koju trebate zapamtiti da radim? PUBLIKA: [nečujan]. ANDI PENG: Veliki Aha. Uključite. stdio.h. Često je to jedan od najviše jednostavan grešaka ljudi će kada su pisanja, je da će zaboravite uključiti važno knjižnica im je potrebno. Dakle, ako je radno vrijeme i da ste kao, Ne znam zašto je moj broj ne radi. Možete li mi reći zašto to ne radi? Idemo reći si #include? Trebali bi ga #include. U REDU. Dakle, imamo standard I / O Ovdje. Je li to jedina knjižnica ćemo morati ovdje? Što još možemo učiniti? Oprostite. Netko ga samo kriknuti? PUBLIKA: [nečujan]. ANDI PENG: Postoji li ići. U REDU. A kako mogu ići o počevši bilo kakve funkcije, bilo kakve glavna funkcija unutar našeg programa? Int glavna. U REDU. Što sam stavio unutra ovdje? Što je prva stvar koju želite učiniti? Ako želimo dobiti Niz od korisnika, što ćemo imati raditi na tom prvom retku? Žao nam je, vi jednostavno osjećate slobodno govoriti i glasno. Samo vikati god. PUBLIKA: Pitajte korisnik? ANDI PENG: Kako ćemo to učiniti? Ask-- ću upišete "pitati korisnik"? PUBLIKA: printf. ANDI PENG: U redu. Printf. Što želim printf? PUBLIKA: Upišite nešto. ANDI PENG: Kao da je? Dečki, praviti se kao da sam na računalu. Fizički recite mi svaki korak da trebam upisati ovdje? Ja radim nešto krivo? Trebam li upisali nešto? PUBLIKA: Morate citati. ANDI PENG: trebam citati? U REDU. U REDU. PUBLIKA: A onda nova linija. Točka i zarez. ANDI PENG: zarezom? U REDU. Dobra. PUBLIKA: A možda navesti da je htio malim slovima? ANDI PENG: Veliki. Vi mi se smijati zaboravljajući staviti zarez. Jamčim ti negdje u tijeku ove klase, zaboravit ćete staviti točka-zarez, a će vam uzeti tri sata za shvatiti zašto je vaš broj ne radi. To se dogodilo na sve nas. To će vjerojatno dogoditi. Uzmite u dobrom naviku korištenja zarezom. U REDU. PUBLIKA: Želite li učiniti kosu crticu u? ANDI PENG: Naravno. Želite li napraviti obrnutu kosu crtu u? PUBLIKA: Da. ANDI PENG: Veliki. U REDU. Što trebam učiniti sljedeće? PUBLIKA: Dobiti niz. ANDI PENG: Dobiti niz. Pa što sam tip? Netko? PUBLIKA: String s. ANDI PENG: String s. PUBLIKA: GetString. ANDI PENG: Netko, Možete li mi reći gdje je ova funkcija GetString dolazi iz? PUBLIKA: String.h. ANDI PENG: String.h? Misliš da je od string.h? PUBLIKA: [nečujan]. ANDI PENG: Postoji li ići. To je od CS50.h. Ako ste uvijek zbunjeni na kojoj Knjižnica datoteka ili zaglavlje datoteke, google doslovno string.h, a ja ću ti reći što su sve funkcije koji su u string.h. U REDU. Pa sada da sam stvorio niz i imam brz korisnik za to, Ja sam ga pohraniti u varijablu imenovani s, što trebam učiniti sada? PUBLIKA: Provjerite ako je malim slovima. ANDI PENG: Žao nam je? PUBLIKA: Provjerite ako je malim slovima. ANDI PENG: Dobro, neka je učiniti. Kako ću to učiniti? U stvari, za svrhe klase sada, samo ćemo se Pretpostavljam da je sve da mi je unos već u mala slova. Ako ste htjeli provjeriti, što bi jednostavno dodajte uvjet to provjeriti, da je vodio kroz svaki element niza i provjerio je li to između pojedinih vrijednosti. Zaboravio sam što je broj od vrijednosti mala slova su. Možete ga pogledati na ASCII tablice. Ali da, to je stvarno dobra stvar. Ali sada, samo smo si idući u Pretpostavljam da je sve konce smo ulaz su malim slovima. U REDU. Pa kako bi ja ići oko ovaj problem je sljedeće? PUBLIKA: Za petlje. ANDI PENG: Za petlju? U REDU. Reci mi što da upišete. PUBLIKA: Za int i jednak 0. ANDI PENG: U redu. PUBLIKA: Oh, zapravo, onda vam napraviti zarez i to n jednaka strlen. ANDI PENG: Dakle važna stvar mislim da je ona primijetila ovdje je da nismo imali za reći int n drugi put smo to učinili. Samo znam da u za petlje kada izjavljuje, što zapravo ne treba int o drugi put vi varijablu. Možete reći n strlen. PUBLIKA: od S. ANDI PENG: s. U REDU. PUBLIKA: Onda zarezom. ANDI PENG: Naravno. PUBLIKA: I onda [nečujan] n. Onda i ++. ANDI PENG: Veliki. U redu. Što želimo unutra to za petlju sada? Zapamtite, ako ćemo pokrenuti kroz niz i prođite kroz niz, želimo provjeriti stvari u njemu. Što ćemo morati? To je vrsta lukav dio sada. Svatko ima pogađati? U REDU. Prvo, kako ćemo još pristupiti? Kako smo i prvi ček ili pristupiti element u nizu? Kako ćemo to učiniti? Što je zapis koristimo za to? Što je ime tog polja zove? To se zove s, zar ne? Zapamtite, svaki string je uvijek niz. Tako je nosač ja, zar ne? Budući da je trenutna vrijednost ili indeks vrijednosti ćemo provjeru. A mi ćemo postaviti da jednako to-- želimo malim slovom vrijednost, zar ne? Želimo skrenuti da lower-- Žao nam je, želimo se velikim slovima. Želimo okrenuti malim slovima vrijednost u velika slova. I tako volimo-članovima Žao mi je, kako se zoveš? PUBLIKA: Heidi. ANDI PENG: Žao nam je? PUBLIKA: Heidi. ANDI PENG: Heidi. Kao Heidi rekao u početku, mi smo vjerojatno Trebat će the-- smo Vjerojatno će morati oduzeti 32 od bilo charc koji je, zar ne? Jer na ASCII stol, razlika između malo slovo i veliko slovo je 32. Dakle, kada smo to, mi smo vjerojatno će htjeti oduzeti 32, zar ne? Tako ćemo napraviti S i. Da li svatko razumjeti zašto sam to učinio? Jer upravo sada, u našem polju, ćemo provjeru 0th indeks, zar ne? I u 0th indeksa string, to je prvi znak. A taj lik ćemo pretpostaviti da je mala. Ako želimo da bude velika slova, mi moraju oduzmite 32 od svoje vrijednosti, jer u našoj ASCII stol, to je kako smo ga dobili na sljedeći odgovara vrijednost koja ga čini velikim slovima. Da li su svi razumiju da? Da. PUBLIKA: Možete li također ne mala slova u minus-- ANDI PENG: Da, tako da je zapravo jako dobar. Idem se vratiti na to Pitanje nakon što smo to učinili. Da. A onda, ako želim vidjeti što se događa, Ja sam vjerojatno idući u želite ispisati, zar ne? Netko mi reći što Želim ispisati ovdje. PUBLIKA: printf posto c backslash [nečujan]. To je vrijednost [nečujan] e i. ANDI PENG: s ja, žao? PUBLIKA: [nečujan]. ANDI PENG: Ne znam. Što misliš? PUBLIKA: Pa, ja wouldn't-- Mislim da ne bih bring-- Ja bih ga izvadite unutra, jer se [nečujan]. ANDI PENG: Oh, što bi učinio? PUBLIKA: Da. ANDI PENG: Ostavimo to na način je, i ja ću objasniti zašto kasnije. Zapamtite, čak i kada imaju držač mjesta, želite staviti zagrade oko nje. U redu. Dakle, to bi trebao biti solidan funkciju ovdje. Idemo ga pokrenuti i vidjeti ako to izrađuje. Provjerite gornji. Uh oh. To ne izgleda previše dobro. Zašto se to događa? Kao i kod bilo koje pogreške, želite ići natrag i početi s prvom, jer obično uzrokuje jednu pogrešku mnoge druge pogreške nakon njega. Ovdje vidimo upper.c: 18: 25, koji govori ja u ovom programu pod nazivom upper.c, na liniji 18, greška implicitno progla Knjižnica funkcija strlen s tipom unassigned-- bla, ne znam što se događa nakon toga. Sve to mi govori upravo sada je da se nešto događa na strlen. A računalo je zbunjen, jer je To je kao, ne znam što je strlen? Što to vjerojatno kažem vam da ste nedostaje? PUBLIKA: Vi ste nedostaje [nečujan]. ANDI PENG: U pravu si. Točno. Dakle, ovo je mjesto gdje je važno kako bi bili sigurni da svaka funkcija koristite u svom broj ima ispravan zaglavlje datoteka za knjižnicu, inače ti si idući u dobiti puno pogrešaka i vaš broj ne ide znati što se događa. Tako ćemo uključiti string.h ovdje. Sada kada smo pokušati sastaviti gornju. Ispravno sastaviti. Idemo pokrenuti ovaj program. Tako upišete nešto u mala slova. Što dečki žele upisati? Vikati nešto. U redu, Charly upravo ušao. Mi ćemo upisati Charly ime. Charly malim slovima. I nadam se, nadam se, ovo je će vikati i ispljunuti Charly u velika slova. Jej! nema svatko razumjeti kako Otišao sam o rješavanju toga? Način na koji ja mogu manipulirati pomoću prirodnih brojeva riješiti nešto što Želim raditi u nizovima, jer likovi i cijeli brojevi mogu se pozivaju na isti način, jer ASCII mapiranje. Dakle, da se vrati na svoju točku, ako sam htio staviti ovdje, umjesto od 32 veliko minus mala slova pravedan poput da, to će raditi jednako dobro, jer to je jednostavno samo Razlika između te dvije vrijednosti. Ako želim da ovo again-- Charly. O ne. Mislim da smo otišli na pogrešan način, zar ne? PUBLIKA: [nečujan] mala slova a. ANDI PENG: Postoji li ići. Yep. A kako pljuje Charly. Dakle, budite oprezni kada ste oduzimanjem vrijednosti zapamtiti koje je veća od druge. Na primjer, ovdje sam zaboravio kako mala je a zapravo veći od verzalnog A. Dakle, kada sam Pokušao im oduzeti na drugu stranu oko, dobio sam negativan 32. A moj računalo je kao, Ne znam što je to. To je vjerojatnost samo neki slučajni vrijednost koja nije baš dobra. A kako bi bili sigurni da ste oduzimanjem u ispravnom duljine pronaći lik koji želite. U REDU. Je li netko zbunjeni o tome kako otišao o pisanju ove funkcije? U REDU. Pa zapravo, funkcija već postoji u knjižnici pod nazivom ctype.h. Knjižnice zove ctype.h. Ova funkcija je zapravo već napisana za vas. To se zove na gornji. I tako za potrebe ovo pset, idete da otkrijete da li doista želite koristiti puno funkcija sadržane u ctype knjižnici. Za gornji, na niže, je gornja, je lower-- to su sve funkcije da ćete biti u mogućnosti koristiti vrlo, vrlo brzo u svoj kod koji radi upravo ono što ovaj radi. Pisali smo kako to pretvoriti niz u velika slova. No, to je zapravo šifra da je netko drugi napisao i da možete pristupiti putem različitih funkcija. Da? PUBLIKA: Pa vi samo kopirate je unutra i to za svaku riječ? ANDI PENG: Da, jer ja ne briga o vrijednostima. Ja samo briga da je razlika između njih je 32, zar ne? Razlika između malih slova b i veliko B je 32. A razlika između c i veliko C je uvijek 32. Samo moram brinuti o Razlika između ta dva, jer sve od slova slijede isti obrazac, zar ne? Ako imam razliku između jednog od njih, Ja znam što je razlika između svih njih je. Dobro pitanje. Da. Svatko dobro? U REDU. OOP. U REDU. Dakle, još jedan koncept koji je će biti vrlo koristan kao ti nastaviti razvijati Vaš kod je ova ideja stvaranja funkcije ili apstrakciju. Tako sada, svi smo uzeli algebra. U algebra, što su učili da postoji Ova prekrasna stvar zove funkciju Stroj, gdje ako vas ulazna jedna vrsta broja, teče kroz ovaj prekrasan funkciju i iz pops drugačiji izlaz, zar ne? U kodu, ista stvar se događa u bilo kakve funkcije. Tako sam mogao fizički pisanje u mom tijelu mog koda glavni izjavu da zapravo ne bez obzira na tijelo koda radi. Ali izvan toga, mi također može pisati različite funkcije kako napraviti različite stvari. Na primjer, mi smo već počeli koristiti neke od njih. Printf-- da je funkcija koja je netko drugi napisao je da je već možemo nazvati u našem kodu. Za upper-- u ovom slučaju, upper-- je još jedna funkcija smo napisao da mi može nazvati u našem kodu. I tako mislim zašto čak imamo funkcije? Zašto ne bismo samo buć sve u istoj liniji koda? To ga čini lako za svakoga. Pa, obrazloženje da je, prije svega, organizacije. To je stvarno neugodno događa kroz nečije koda i jedna funkcija kao printf. Ako vi zapravo znao što Funkcija printf podrazumijevalo pisati, to je, kao, 1000 linija koda. Ako svaki put kad sam htjela da printf nešto, Morao sam napisati 1000 linija koda, to bi bilo jako neugodno čitati, zar ne? To je razlog zašto smo upravo stvorio ovu apstraktnu funkciju da smo već neko ostalo je zapisano negdje drugdje. I svaki put moramo ga koristiti u naš broj, mi samo reći printf. I to je u mogućnosti koristiti funkciju netko je napisao u našem kodu. To ga čini lakšim organizacijski pročitati kod. Drugo, to je pojednostavljenje. To pojednostavljuje korake imamo poduzeti da se riješi naš problem. Printf, djeluje kao printf, djeluje kao da se gornja su sve stvari koje nam omogućuju da pojednostaviti našu kôd dolje tako da je lakše. I posljednja stvar je višekratnog. Dakle činjenica da imamo funkcija zove printf koje možemo nazvati mnogo različitih vrijeme i omogućuje da se ponovno koristiti. Da sam pisati printf, Ja samo napisati jednom. To postoji samo u tom jednom mjestu. Ako sam htjela to učiniti opet, ja bih morati kopirati i zalijepiti sve to u moju drugu liniju koda. Zato, ako smo stvorili funkciju koja postoji izvan naše glavno, možemo samo pozvati to i ponovno ga kad god trebamo tako da je puno lakše za nas i programe za pisanje. Dakle, način na koji smo zapravo će pisati funkcija je vrlo sličan, zar ne? To je vrsta prvi instanca u kojoj ćete vidjeti funkciju preuzeti na stil razlikuje od našeg int main prazninu. U tom slučaju, ako sam htjela napisati funkciju zove q, zar ne? A int vrijednost ovdje sve se mi govori, ono što želim to raditi za povratak u meni? Ako želim kocke cijeli broj, Idem želite ulaz. To su parametri. Idem ulazi vrijednost tipa int. I ja ću se vratiti drugi tip vrijednost int. I ovdje, kao i vi možete vidjeti, sve radim je rotacije god moj ulaz kao moj izlaz i povratka. Dakle, sve je to funkcija radi se Potrebno nekakvu cijeli broj. To ga umnožava samo po sebi dva puta tako da se kocke na snazi. A onda se vrati što god da je izlaz. Dakle, u ovom slučaju, to je dvije linije kod koje smo morali pisati više. Ali, ako smo htjeli nazvati na ovaj više puta, to je puno lakše upisati da je jedan crta ovdje to u kocki od morati proći kroz više puta. Dakle, način na koji u biti bilo formatiranje za bilo kakve funkcije će postojati je kao ovdje. Tako imamo ime funkcija. U ovom slučaju, to se zove Cube. I ime mu kocku jer to je lako za zapamtiti. Možete ga imenovati trg i to zapravo može biti kubu. Nije važno. Samo ime koje ste Dodjela funkcije. Ovo ovdje, int, je vrsta parametra vam je potrebno. Dakle, što se tu funkciju potrebno kako bi se raditi? Pa, to treba ulaz. Nazvao sam ga ulaza. Možete ga nazvati što god želite. Ali moram nešto tipa int. To će zapravo izvršiti ono što je unutar ovdje tijelo funkcije. A onda je tip povratak upravo ovdje, ovo int-- Sve to mi govori se da je ova funkcija će se vratiti k meni u int. Tako da će uzeti u int, i to će vam vratiti int. Da li su svi razumjeti kako Oblikovanje ove vrste radi? Cool. U REDU. Dakle, nemojte se zabrinuti ako to čini malo apstraktno upravo sada. To je nešto što ćemo razgovarati o tome. Mi ćemo roniti dublje kasnije u tijeku. Način na koji bilo koja vrsta višoj razini apstrakcija tih stvari raditi je da je, u spomen, u računalo, sve je pohranjena u tom tipu dimnjaka, kažem. Dakle, tamo na vrhu. Ne znam je li vama dečki mogu vidjeti da je dobro. Pokušat ću za uvećanje. Ovdje na vrhu, mi imaju fizičke tekst onoga što je računalo interpreting-- sve nule i one koje postoje u našoj računala. I onda imamo inicijalizacije podataka i nepokrenute podataka, ono što nazivamo globalnim varijablama. Tako varijable koje postoje na svim programima i preko cijelu svoju, uglavnom, kod. Bez brige, ako ti dečki su vrsta nejasno o tome. To ne stvarno obzira sada. I onda imamo ono što je zove gomila u stog. Razmislite o stog doslovce kao baš kao stog stvari, snop drugačiji stvari guraju na vrhu jedan od drugoga da pohraniti razne varijable i sintaksa unutar kôda. I onda ovdje na samom dnu, imamo varijable okruženja onoga što se izvršavaju u roku samo tvoja mala linija koda. I samo ćemo za uvećanje u na stvarnoj stog dijelu. Dakle ovdje, ako smo bili za uvećanje u na samo ovom području dimnjaka, to je ono što izgleda. A to je zapravo prilično važno kad dečki govore o funkcijama, jer obavijest da je Sjećanje na računalu je spremanje varijabli i funkcije a parametri su vaših funkcija i vaše glavne varijable na različitim mjestima. Tako sada, glavna je stvarna funkcija da ste izvršavanju u kodu. Vi ste njegovi parametri pohranjene ovdje i njegove lokalne varijable pohranjene ovdje. Lokalni varijabla samo znači nikakvu varijablu koje postoje samo u toj funkciji. A na vrhu, što ste to zasebna funkcija zove kocke. Imaš to parametri kao i onih mještana. A razlog što možete vidim ovdje je da ono događa kada kocka uzima u vrijednost iz vaše glavne funkcije je da je zapravo to da je tijekom kopiranja. Dakle, ako sam htjela kocke 2 i 8 vrati, kako 2 zapravo unosi kao parametar i to je kopirana tako da ga postojeći na dva različita mjesta u memoriji. I morate biti vrlo oprezni na spomen kojoj jedan od onih ste zapravo manipulira. A primjer onoga što se dogodilo to bi bilo jako, jako loše postoji upravo ovdje. Dakle ovdje sam dobio, u teoriji, program ovdje, glavni funkcija da sam proglašena int x jednak 1. Ja sam proglasio još int y jednak 2. A onda sam ga prikazuju kroz ovu funkciju zove swap, gdje pretpostavljam da to je zamjene dvije vrijednosti. A onda ću ispisati ih, zar ne? To je ono što želim ovaj program učiniti. Tako ćemo doći i pogledati. Dakle, ako sam zapravo napisati drugačiji funkcija, kao što možete vidjeti, Ovdje imamo našu glavnu funkciju. I onda mi imamo Druga funkcija ovdje. Praznina zamjena. Praznina samo znači da je neće vratiti ništa. Ime je funkcija zove swap, i to je će usisnih dvije varijable, int a, i int b, iz svog [nečujan] funkciju. Dakle, u biti ovdje, mi smo prolazeći X i Y u ovu funkciju. A ako bismo stvoriti this-- tako želimo stvoriti privremene vrijednosti, zar ne? Idemo dodijeliti to do. A onda će se sada jednake b. Ib će se vratiti gdje je temp vrijednost bila, koji je, jer kad želite mijenjati stvari, ne možete baš kao i mijenjati ih. Morate držati jedan od njih ovdje tako da se pamti što je to, jer jednom swap jedan, zaboravite što je izvorna vrijednost je, zar ne? Dakle, u teoriji, ovaj program treba raditi, zar ne? Ako sam želio mijenjati dva, oni bi trebali zamijeniti. Tako ćemo ga pokrenuti i vidjeti ako to radi. Dakle, kao što vi vidite, x je nekad 1, a Y je nekad 2. A ako sam ga ispisati, x je 1, a y i dalje je 2. Hmm, ovaj program ne čini se da raditi na način na koji ja to želim raditi. Se bilo tko ištanje to uzeti pucao na nagađanje zašto se to događa? To ima veze s načinom da različite stvari pohranjeni u različitim mjestima u memoriji. U REDU. Pa vi ne morate brinuti previše o tome sada. Ali znam da kocka je lokalna varijable su a i b, jer ovdje u našoj funkciji, smo proglasili su a i b kao varijable koje postoje unutar kocke, koje funkcioniraju. Ali, kao što možete vidjeti, parametre koji to je da u su se pohranjuju ovdje. Ali nismo bili zapravo povratku ništa. Nismo zapravo mijenja X i Y. Mi smo samo mijenja aib. Imali smo kopirati X i Y u nešto zove i b. Ali mi zapravo nikada manipulirati X i Y sami. Jeste li vi viđenje kako se to događa? Je li to jednostavno sam ga kopirati više, ali nismo zapravo čuva staza gdje su bili u memoriji. I tako sada računalo gleda, oh, imam pokrenuti ovu stvar do ovu lijepu funkcija. Ali X i Y su dalje x i y. Ništa se dogodilo ih zbog činjenice da tih parametara i lokalne varijable su pohranjeni u različite mjesto u memoriji. A to je viša razina Koncept da ćemo početi dobivati ​​kasnije u tijeku. Ali samo znam da je to problem koji se može dogoditi i da ćemo shvatiti načine kako da nositi s tim kasnije u tijeku. U REDU. U redu. Tako posljednji koncept smo stvarno će pokriti koja će biti korisna za pset ovog tjedna su ono što se zove argumente naredbenog retka. Dakle, Rob je u svom predavanju prošli kroz vrsta kratko o tome kako se ta rada. U biti znam da kada pišete kao glavnu funkciju, kada smo napisao funkcije prije u prošlosti, imali smo int glavni prazninu. A razlog zbog kojeg smo imali praznina tamo bilo zato što su naši programi nisu trebate ulaznim vrijednostima pokrenuti, zar ne? Kada sam trčao Mario, nisam potrebna zapravo samo upišite u nešto kad sam trčao Mario. Mogao sam brz korisnik kasnije. Ali to neće uvijek biti slučaj. Na primjer, u ovom Tjedan problem postavlja, ti si idući u biti zatraženo da u dodatak izvodi svoj program, ti si idući u ištanje to ulaz određene stvari u ravno kao što pokrenuti program. Dakle, način na koji se to zove naredbenog retka argument a, koji je kao argument možete unijeti izravno kao što pokušavaš pokrenuti vaš program. Tako je zapis za to, to je prilično složena izgleda, ali to je stvarno ne da teško. Dakle int main-- to je samo tvoja glavna funkcija. U argc zarezom niz argv parova. Dakle, sve što je rekao je da je ova int argc-- sve što je vam govorim je da su to broj argumenti računalo treba očekivati. Dakle, jedna stvar koja je stvarno važno pratiti je fizička naziv vašeg programa broji kao jedan od onih argumenata. Dakle, ako sam htjela da moj program pokrenuti plus jednu dodatnu komandne linije Argument, ja sam zapravo će imati dva. Argc zapravo će biti dva. A onda niz argv bracket-- sve što radi, to me je davanje niz žice to je ide samo prikaz i pohranu ono sve te argumente naredbenog retka su. Tako na primjer, ako sam htjela da se ovaj Program, ./copy infile outfile, zar ne? To je samo tipičan Linux naredbe. Što je zapravo argc? Koliko argumente naredbenog retka postoje zapravo u tome? Sve to ipak napraviti kopiju infile o imenu jedne datoteke I to kopija u jedna datoteka, zar ne? To je sve ovo radi. Kao što možete vidjeti, ja sam to na jednoj liniji zapravo bez potrebe programa. Što je naša argc u ovom slučaju? Koliko argumenti imamo? PUBLIKA: Tri? ANDI PENG: Imamo tri, točno. Dakle, to je vrlo intuitivan za samo mislim da je to samo infile i outfile. Ali znam da je fizički ime za Program radite broji kao jedan. Dakle, u ovom slučaju, argc je zapravo tri. Kako o, što je argv 0? Zapamtite, sve od argumente naredbenog retka pohranjeni su u niz žice. Dakle, ako sam pokušati pristupiti, što bi argv nosač 0 daju mi? PUBLIKA: [nečujan]. ANDI PENG: Točno. Bilo bi mi dati točku slash primjerak, jer je to 0. element, Prvi element mog polja. Što je argv 1? PUBLIKA: infile. ANDI PENG: infile točno. Što je argv 2? PUBLIKA: outfile. ANDI PENG: outfile. To je malo zeznuto sada. Što vi mislite argv 3 će biti davanje mene ako sam pokušao ispisati kako van? PUBLIKA: [nečujan]? ANDI PENG: Jesi li ruku? Da. PUBLIKA: Alternativa. ANDI PENG: Točno. Dakle, ne zaboravite na predavanje koje smo su na kraju utrke nečega zove null terminator? Mi ćemo doći u ovo također dalje u klasi. Ali znam da je u zapisu, način vaše računalo zna da je kraj od niza je da to stavlja nešto zove null Terminator ili crtica nula. Dakle, ako pokušate pristupiti argv 3, ideš pogoditi ovu crticu 0. To je čak i više od trik pitanje. Što je argv 4? Dakle, to je prošlost null terminator, prošlosti granica naše ponude. Što mislite će dogoditi kada pokušavamo učiniti? PUBLIKA: [nečujan]? ANDI PENG: Žao nam je? Recimo da je malo glasniji? PUBLIKA: [nečujan]. ANDI PENG: Da. To je naziv Područje ćete najvjerojatnije dobiti. Ali znam da argv 4-- koja vam omogućuje da pristup mjesta u vašem računalu memorije da stvarno ne bi trebao biti dirljiv, jer sada znate što argv je. Vi znate da je to niz veličine 3 koja ima točkica kopiranja, infile i outfile. Ako pokušate ići tako daleko iznad toga da ste pokraj null Terminatora, vaše računalo ima vjerojatno pohranjuju nešto u argv 4. A ti stvarno ne bi trebalo biti dopušten pristup u argv 4, jer imate datoteku Vlada i da ste samo dozvoljen pristup tim trima policama. Ali ako pokušate doći način izvan polici gdje su dopušteni, ti ćeš početi petljaju druge stvari u memoriji računala. To će biti jako, jako loše. Dakle, samo znam da. Budite vrlo oprezni da vas ne samo slučajno početi Pristupom elemenata u niz koji nisu bili u ono što je želio stvoriti. Yep. U REDU. Tako ćemo napraviti još jedan terminala primjer ovdje. U REDU. Dakle, Rob brzo u predavanju drugi dan otišao po ovom primjeru, gdje je imali int int glavna argc niz argv zagrade, što mi govori da sam će imati argumente naredbenog retka. On je, ako argc jednaka jednako 2-- zapamtite, jednako jednaki znači usporedbu. Ako je jednaka 2, a onda sam tiskanja Pozdrav, bilo prvo element niza je. Inače ispisa, Hello World. Što se to događa na dogoditi u biti? Može li netko jednostavno objasniti Engleski što ovaj program radi? Da. PUBLIKA: Ako netko upisali u naredbi i rekao im ime i prezime, to neće samo print Prvi i reći, zdravo, bez obzira na ime je. ANDI PENG: OK, neka ga pokrenuti. Tako na primjer, ako bih napraviti Ova datoteka napraviti Pozdrav to-- Pozdrav to-- što želiš unijeti? PUBLIKA: ime i prezime. ANDI PENG: Ime i prezime? Prostori? PUBLIKA: Da. ANDI PENG: Može li netko reći ja upravo sada, što je argc? Samo upravo tamo? Ups, ispričavam se. Dopustite mi da se vrati. Koliko argumente naredbenog retka are-- vi stvarno ne možete vidjeti. Ali ja ću pokušati povećavanje. Pokušavam. Da, ima tri, zar ne? To je točka Slash Pozdrav, to je Andi, i to je Peng. Dakle, što vi mislite da je ovo Program će se ispis? Oh. O oprosti. Pogrešno ime. To je ispis, Hello World. Se bilo tko želi objasniti zašto se to događa? Da? PUBLIKA: [nečujan]. ANDI PENG: Točno. Dakle ovdje su uvjetno je, ako argc jednaka jednaka 2. Dakle, samo u slučaju da postoji Dva argumente naredbenog retka. Onda ću ispisati, Pozdrav, što god to bilo. Ali drugi, ja ću ispisivati ​​samo, Hello World. Tako se netko želi mi dati primjer kako bih biti u mogućnosti da se zapravo dobiti to ispisati vrijednost argv 1? Što bi ja moram ulaz ovdje? Samo jedna stvar, zar ne? Budući da je točka pozdravi već računa kao prvi argument. Imam samo još jedno. Dakle dot Pozdrav, ako sam samo učiniti Andi. Pozdrav, Andi. Da li su svi razumiju zašto se to događa? Da. PUBLIKA: Tako je prostor između Naredba line-- je to [nečujan]? ANDI PENG: Ne Dakle, prostor u naredbenom retku Argument, x, reći svoje računalo da je ovo početak novog niza. Dakle niz argv ga here-- trgovinama sve vaše naredbe retka argumente u žice. I tako se prostor u naredbenom retku argument-- sve što radi je da vam kažem, To je na kraju jednog niza i da je vrijeme za prelazak na drugu. Da. To je prilično važno za Vaša pset, jer si će se testiranje tih. Dakle, bilo tko imati bilo kakvih pitanja o ovome? OK super. Da? PUBLIKA: Dakle, ti bi razlog staviti cjelobrojne argument kamenac umjesto od [nečujan] će biti kada želite upisati dodatne informacije [Nečujan]? ANDI PENG: Da, točno. Neki programi će zahtijevati od vas za unos naredbenog retka argument da prolazi i koja koristi taj. Da. PUBLIKA: Pa što ako [nečujan]? ANDI PENG: Pa, ono što imam mijenjati onda u svom programu? PUBLIKA: Samo 3. ANDI PENG: Zašto je to događa, što mislite? PUBLIKA: Budući da je [nečujan]. PUBLIKA: Morao bi ga promijeniti 2 [nečujan]. PUBLIKA: 1 i 2. ANDI PENG: 1 i 2, točno. Dakle, u ovom slučaju, što bi vjerojatno Želite imati dva printf statements-- onaj koji tiskani argv 1 i onaj koji ispisuju argv 2. Ovdje. Ja zapravo mogu učiniti vrlo brzo. Izvoli. Oh. Nije baš ono što ste htjeli. Ali ako vi zabrljati okolo sa formatiranje, to će izaći. Da. Cool. Znam da smo malo kratki s vremenom. Ali ja sam samo ide da se brzo provesti par minuta prolaze kroz helpful-- PUBLIKA: Imate dvije minute. ANDI PENG: Imam dvije minute? Hvala. Neke brze savjete pset. Tako je za ovaj pset, ja visoko preporučiti, kao što sam rekao, svatko pročitati spec. Vi ćete biti pisanje tri programs-- jedan zove initials.c, jedan se zove caesar.c, jedan se zove vigenere.c. Neke važne savjete koji ti dečki zapravo žele držati u mind-- tako tu je ova funkcija nazvao atoi-- kao što sam želio reći, à trois. Jasno je li to zapravo kako se to kaže. No, sve to radi, to je unosom. Ona pretvara niz u int. Dakle predstavlja ASCII na sam cijeli broj. To je samo pretvoriti ASCII Vrijednosti na cjelobrojne vrijednosti. Tako zapamtite argv, na niz tu trgovinama sve svoje naredbe linija arguments-- što ih sve pohranjuje kao žice. I tako, ako želite biti u mogućnosti imaju jedan od njih postati broj, ti si idući u morati koristiti ovu vrijednost ovdje. Modulo, kao što smo pokriveno ranije u klasi danas, omogućuje vam da imaju Ostatak god imate. Dakle, ako imamo jako, jako velikom broju u cara, što ako smo kraj od niza Vigenere? Kako ćete biti u mogućnosti da se to zaokrenuti? Ako sam pogodio z i želim ga vratiti na, kako ću dobiti da bi zaokrenuti? Vjerojatno želite koristiti modulo tu negdje. Drugo, pregledavati oko Vaša knjižnica. ctype.h. To je nova knjižnica imamo. Naći ćete mnogo jako, jako korisne functions-- isupper, islower, toupper, tolower, isalpha, i tako dalje. Sve funkcije koje će biti vrlo korisno kada pokušavate shvatiti, je ovaj lik malo slovo? Kako pretvoriti ovo string na velika slova? Sve ove stvari će biti vrlo, vrlo korisno za svoj pset. U REDU. Radno vrijeme od 8.00 do večeras 11:00 u učionici TEAL sutra kao srijedu i četvrtak navečer. Radno vrijeme u blagovaonici. Visoko predlažemo vam dečki Sve početi odmah, jer ne želim da se taj klinac koji četvrtak navečer ima problema Slanjem pset a kao, ne znam što da radim. Počeo sam, što sam završio, podnio sam. Pokušajte dati sebi malo prostora, jer u kod problema uvijek dogoditi. Vi želite biti sigurni koje se daju puno vremena da bi mogli za dovršetak psets. Cool. Ja ću objesiti ovdje oko. PUBLIKA: Je li to on-line već? ANDI PENG: Ne znam je li to Već na internetu, ali to će biti. Ja ću objesiti oko ovdje ako bilo tko ima kakvih pitanja već. Hvala što ste došli.