>> [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.
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.
>> 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.
>> 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.