[Glazbom] Jason Hirschhorn: OK, svatko. Dobrodošli na odsjeku. Ovo je CS50, naš vrlo prvi super poglavlje. Kao što svi znate, sljedeći tjedan redovite sekcije će početi, ali ovaj tjedan smo svi zajedno. Tu je osobno. Moje ime je Jason. Ja sam predavač u Computer Science. Imamo Andi, tko je šef PU od CS50. I Scaz, profesor Brian Scassellati, On je profesor u Computer Science. Mi smo CS50 glave na Yaleu. Uvijek možete putem e-pošte nas heads@cs50.yale.edu. Mi ćemo biti na predavanjima. Mi ćemo biti na radnog vremena. Ako postoji ikada išta možemo učiniti za vas, sve što trebate, slobodno nas kontaktirajte. Dakle, što ćemo raditi danas? Ili prije toga, ono što je dolazi ovaj tjedan? Tako radno vrijeme ponedjeljak, utorak, Srijeda i četvrtak, 08:00 do 11:00 sati. Postoji raspored na web stranici. Sekcije, kao što sam spomenuo, počinju sljedeći tjedan. A vi ćete saznati ovaj tjedan što Vrijeme tvoj dio je, koji je dan, i tko je vaš TA. Problem Set 1 je zbog na četvrtak podne, u petak u podne s krajem dana. Da, imate devet dana kasni. A tu su i devet problema seta. I može koristiti samo jedan kasno dan po setu problema. Da, u stvari, sve je problem setovi su zbog petka u podne. To je sve. Sve što su detalji o nastavnom planu. Svakog petka, imamo ručak. Mi smo željeli da ovaj veliki Naravno osjećati malo manji. Tako ste dobrodošli da RSVP. Besplatan ručak s kolegama kolege i osoblje. cs50.yale.edu/rsvp. Sve ove stvari koje Imam na zaslonu, i još mnogo toga, možete naći cs50.yale.edu ili cs50.harvard.edu, ako idete na Harvardu i gledaju online. Također, na tim web stranicama, ima tona sredstava za vas. Svako predavanje ne samo da ima video predavanja, ali i napominje. Netko će gledati predavanje i uzeti bilješke za vas. Tako možete samo platiti pozornost tijekom predavanja, ili možete koristiti svoje bilješke / našeg primjećuje da dopuni svoje bilješke. Postoji slajdova online. Izvor code-- sve David ide više u predavanju, ili Scaz ide preko predavanja, koja Izvorni kod je dostupan na internetu kao i, što je kao i ja, spomenuo videa. Sekcije, isto tako, svi će biti sniman. Sve od tih slajdova će biti dostupna. Sve to kod će biti dostupne za vas. Postoje gaćice na web stranici gdje Članovi CS50 osoblja provesti pet do 10 minute prolaze kroz teme za vas. Neki od onih koji ste već susresti u problemskim setovima. Radno vrijeme, kao što sam spomenuo, ponedjeljkom kroz Četvrtkom, 8:00 do 11:00 sati. CS50 Studija je fantastičan izvor. Postoji praksa problemi, uzorak klizi, poznati bugovi da učenici vole izvoditi u, za doslovno svaki topic mi će pokriti u ovom tečaju. I na kraju, na ovom slajdu barem Reference50 koji vam daje informacije na svim C funkcija ste ikada mogli eventualno nadati za korištenje i mnogo, mnogo više. Opet, da je dot dot dot na dno zaslona je ukazati da postoji i više resursa na one dvije web stranice: cs50.yale.edu, cs50.harvard.edu. Dakle, ono što mi radimo danas? Pa, prvo ću dati pogledate resursa. Već je učinio da je jedan. Pogledajte nas. Sada ćemo ići preko vrste podataka i operateri u C Zatim Andi će doći ovamo i ići preko knjižnica u C, printf (), funkcija s kojom ste već upoznati ili će vrlo brzo postati vrlo upoznati. A vi ćete prijeći uvjetne i petlje. I onda na kraju, Scaz će ići preko CS50 ID. Ako niste zaronili u već Problem Set 1, kao i kako se koristiti naredbe terminal i korisnih a zatim vam dati neke demo i praksa kodiranje u CS50 ID. Prije nego što sam skočiti na ovo Sadržaj na ovoj strani, Se bilo tko imati bilo kakvih pitanja do sada? Veliki. U REDU. Promjena stupnjeva prijenosa. [PROMJENA Gears] To je meni prebacuje zupčanici u ručnom automobilu. Dakle, vrste podataka u C, ne možete samo varijabla x i ima li to biti na liniji 10, cijeli broj, možda je broj 1, na liniji 20, decimalni broj 10,5, i onda par redaka kasnije niz, volim CS50. U C, varijable mogu biti samo jedna stvar, a samo jedna stvar. I tako da ćete morati dati im vrste. A na tom brodu, mi imate popis vrsta. Postoji znakova, koji stajati znakova. Dakle, to je jedno slovo A, B, C, D. To također može biti prostor, ili koji može biti nova linija lik. Postoji cijeli brojevi, koji su samo brojevi, cijeli numbers-- ili cijeli brojevi rather-- ali bez decimala. Za decimala, imamo brojeve s pomičnim zarezom. Brojeve s pomičnim zarezom su brojevi s decimala. Zatim tu su žudi, koji su u biti dulji cijeli brojevi. Primijetit ćete da dugo je 8 dok je int je 4. Ja ću doći na to u sekundi. To je zato žudi može pohraniti čak više integers nego int može pohraniti. Dvaput je dugo plutaju. I na kraju, imamo niz, što je vrsta da ste vjerojatno koristili prije. Ako su hashtag # includeCS50.h u vašem izvorišnoj datoteci, onda možete koristiti string tipa. To nije zapravo izgrađen u C Postoji nekoliko drugih vrsta, kao dobro. No, to su glavne one s koji ćete koristiti i susresti. C što je, opet sam spomenuo, svaki ga variable-- može biti samo jedan tip i jedna vrsta samo. To je zato C je statički upisali jezik, za razliku od dinamički tip jezika gdje ako stvorite varijablu možete promijeniti ono što je pohranjena u to kao da se u vašem programu. Ovamo zdesna strana, imam različite veličine ove vrste podataka u bajtovima. Dakle lik je 1 bajt. To je 8 bitova. A to znači, jer 8 bitova postoji osam 0s i 1s. Vidjeli smo one demo u prvom tjedan s tom binarnih žarulje. Sa 8 bita ili 1 bajt, možemo predstavlja brojeve od 0 do 255. Tako je. Ako su svi 8 bita su 0 to 0. Ako je prvi bit je 1, da je broj jedan, i tako dalje, sve do 255. I zato za znakove možete imaju u biti do 255 od njih, ali to je dosta da pokrije sve likovi moramo koristiti. Za brojeva, možete imati 0 i onda imate 2 do 32 minus 1. Oni su koliko opcija imate za cijelih brojeva. Za dugo, imate 0 na 2 do 64 minus 1. Dakle, imate mnogo, mnogo, više mogućnosti za žudi. Strings, to je upitnik jer to je alpinista za kasnije. Da. Mogao bih reći svatko je na rubu svog sjedala, kao što je to upitnik? To je roman u nastavcima. Mi na kraju će pokriti veličinu žice i razgovarati više o žice. Zbog niza je zapravo jedan od treninga kotača stavimo u ovom Naravno na početku a zatim skinuti kasnije na, jer žice u C zapravo pokazivače na karakter polja. Ali opet, to je Cliffhanger za kasnije. Prije nego što sam premjestiti na sva pitanja, komentari, zabrinutost o ovom slajdu? U REDU. Moram biti fantastičan explainer. Također, kada ste programiranje, idete koristiti ove operatore. Stvarno jednostavne znakove koje možete učiniti jednostavno operacije, s kojima ste vjerojatno već vrlo poznato. Na primjer, na desnoj ruka strana, vidjet ćemo dodati. Da biste dodali, samo napraviti znak plus. I tako možda imate dvije varijable x i y. Možete napraviti x + y u kodu. Možda želite to-- ti reći imaju broj 7 i 3, Želite li spremiti da u varijablu zove suma. Možete napraviti int za tipa, prostor iznos, naziv varijable, = 7 + 3; Što bi to pohraniti u sumi? Bilo tko? Ako sam imao u zbroju = 7 + 3. Što bi se pohraniti u sumi? Vi samo možete ga vikati. PUBLIKA: 10. Jason Hirschhorn: 10! To je točno. Što je u svemu = 7 do 3, Ja samo koristiti tu crtica znak. Što će biti pohranjena? PUBLIKA: 4. Jason Hirschhorn: 4. Sum je vjerojatno pogrešno ime koji variraju, ali će biti pohranjeni 4. Umnožiti u C, koristite malo Star karakter, ne koristite x. Podijeliti, koristite naprijed Ne Slash razdjelnu simbol. I da modulom, koristite posto simbol. Tako recimo želim vidjeti int z = 7% 3, što bi se pohraniti u z? Dakle, to je bitno traži što se modulo učiniti? Zna li itko što modulo radi? Da. y 4. SPEAKER 1: To je ostatak. Jason Hirschhorn: To je Ostatak kada podijeliti. Dakle 7 podijeljena 3 2 ostatak 1. Dakle, 1 će biti pohranjeni. Učinio si oduzimanje, ali to je kako se to radi. To je ono što operator modulo radi. Potrebno je nekoliko ga dijeli od drugi broj i vraća na vas ostatak. Pa opet, 7% 3 daje 1, jer je 7 podijeljen 3 2 ostatak 1, i vraća ostatak. Što je Vratimo se jedan korak na tom odjelu znak. Ako sam 7 / podijeljen 3 ne tko zna što bi to vratiti? ZVUČNIK 2: 2. Jason Hirschhorn: Zašto 2, a ne 2,333? ZVUČNIK 2: Mislim da smanjuje off nakon cijelog broja. Jason Hirschhorn: Pa to je točno. U C, ako ne podjele dva cijela broja 7 podijeljena 3, dobiva odgovor koji u ovom slučaju 2.3333 zauvijek i utvrđuje da decimalnu točku i kotleta sve off nakon decimalnog i to samo vraća vam 2. Dakle, ako sam 8 podijeljena 3. To je zapravo, znamo da se vrate 2.666, ali kotleta sve off na decimalni, truncatus sve, i samo se vraća na vas 2. Tako 6 podijeljena 3, 7 podijeljeni za 3, 8 podijeljen 3, svi će se vratiti k vama 2. Da li itko zna ili ima pogodak, kako sam zapravo mogao dobiti puni odgovor ako želim da decimale? Da. Samo naprijed. SPEAKER 3: Koristite plovak? Jason Hirschhorn: Što mislite? SPEAKER 3: Zato što je rekao plovak za brojeve [nečujan] Jason Hirschhorn: Tako je. Dakle, to je točno. 7 je cijeli broj. Ali, ako sam htjela da se uključite u plutajući broj točke, Ja bi za pohranu koji kao 7,0 jer računalo stvarno stupid-- smo vidjeli da s PB i J example-- to će samo učiniti upravo što reći. Dakle, ako ste napisali 7, to mislim da je cijeli broj. Ako pišete 7.0, iako smo znam te stvari su ekvivalentni, to tretira da poput pomičnim zarezom broj. Dakle, ako ste učinili 7.0 podijeljeni za 3 ili podijeljena 3.0, što će reći, u redu, sada imamo posla s plovcima. Ja ću se vratiti k vama 2.333333 zauvijek. Ali stvarno ne zauvijek, jer kao što smo vidjeli iu predavanju, ove brojeve s pomičnim zarezom nisu baš precizni. Dakle, ako ne želite da decimale, ili dio te decimale, onda morate use-- jedan od njih mora biti plutajući niz točka i računalo mora razumjeti da je ovo s pomičnim zarezom si bave, nije cijeli broj. Bilo kakva pitanja na tom stolu na Na desnoj strani, sada? Ili tvoja lijeva strana, svoj lijevo, tvoja lijeva strana. Da. SPEAKER 4: Tako je. Za samo kao redoviti cijeli brojevi, što bi write-- bi ste napisati plutaju? Jason Hirschhorn: Da tako. Pa, ako želite stvoriti varijabla koja je plovak, morate reći float z jednak nešto. SPEAKER 4: OK. Jason Hirschhorn: Ali ako sam htjela učinite 7 podijeljen po 3 i dobiti taj decimale, Ja bih to float z = 7,0 / 3,0; i da bi mi se s pomičnim zarezom broj. SPEAKER 4: OK. Jason Hirschhorn: Ako jesam nešto poput int z = 7 / za 3, kako bi mi cijeli broj, jer oni su svi prirodni brojevi. Ima li to smisla? SPEAKER 4: Da. Jason Hirschhorn: U redu. Veliki. Ima li još pitanja o tom stolu? Stvarno? Tako sam uzbuđen. U REDU. Dakle, neke druge stvari koje će koristiti, često u uvjetima ili petlje, su ove vrste operators-- ove vrste Boolean izraza. I kao što smo naučili, == je ono što koristiti da biste provjerili dvije stvari jednake. Dakle, ovdje sam ček ako je x == y, neka je opet pretpostaviti da je x 7 i y je 3. Dakle, ako sam napisao 7 == 3, što bi da se vrate k meni? Je li to istina ili laž? PUBLIKA: Netočno. Jason Hirschhorn: U redu. Osjećam se kao da svatko može dobiti ovaj jedan. Dakle, svatko, što bi to vratiti? PUBLIKA: Netočno. Jason Hirschhorn: Netočno. Veliki. 7 nije jednak 3. Dakle 7 == 3 će se vratiti false. Vi nemate ni znak jednakosti, pa ako sam checked 7! = 3, što bi to vratiti? PUBLIKA: Istina. Jason Hirschhorn: Istina. Izvrsno. Netko je bio vrlo naglašen u leđa i cijeniti to. Tada imate manje od operatora, manji ili jednak operatera, veći od operatera, veća od ili jednaka operatera. Dakle, još jedan duševne ček. Ako sam imao 7 veće od ili jednak 3. Što bi to vratiti? PUBLIKA: Istina. Jason Hirschhorn: Istina. Da. To ponovno soba, stražnja strana sobe, fantastično. Možete kombinirati ove izrazi, ako vam se sviđa, kao i, s logična I što je && Ili logična ili koji || ||. I tako sada možete testirati dva stvari together-- Je li to smiješno? Zašto je to smiješno? Dakle, ako sam htjela, ja mogu reći je 7 veći od 3, a 2 je manji od 4? Pa, ako je 7 veći od 3, to je istina. 2 je manje od 4, to je istina. Dakle, cijela ova stvar će se vratiti istinito. Ako sam testirao 7 veći od 3 and-- Ja sam samo branje slučajnih brojeva here-- 4 je manji od 2, dobro, to je laž. Dakle, istinito i lažno lažne. A možete ići na i kombinirati kao mnogi uvjeti zajedno kao što želite. Se bilo tko imati bilo kakvih pitanja, komentari, zabrinutost do sada? I ne vidim neke od vas fotografiranje mene na zaslonu, što cijenim. Na sreću, to nije Snapchat. Nadam se, da je za svoje bilješke. No, sve to ide biti dostupan online. Tako da ne morate fotografirati ovo. Kao što sam spomenuo, sve će biti dostupna online za vas. U REDU. Ja sam o tome da se izvan pozornice, tako da se bilo koga želim reći ništa prije se to dogodi? Pitanja? [Ubacivanjem GLAS] Jason Hirschhorn: Oh, prestani. Vi ste previše lijepo. U REDU. Idem označiti van. Idemo. ANDI PENG: Idemo raditi neugodan mic promjene sada. Jason Hirschhorn: Ja sam uzeti ovaj off. ANDI PENG: Cijenimo podršku, dečki. Možeš li me čuti? Je li to dobro? Savršeno. Lijepa. Dopustite mi samo ugurati da. U REDU. Dakle, ja sam o to učiniti poput diva Informacije deponij na vama upravo sada. I ne brinite, ako ste uopće ne slijedi svaku liniju ono malo Ja sam o to pokazivanje. Kao što je Jason rekao, sve potpuno je online. Samo ćemo pokušati uvesti svi konceptima pokriveni u nekim od ovih slajdova. Tako je samo slijediti zajedno. Bez brige, ako se ne razumiju sve; Međutim, ako se u bilo kojem trenutku osjećate izgubljeno, dignite ruku, zaustavit ćemo, bez brige. Cool. Dakle, mislim da nešto što je David Već vrsta spominje u predavanju Jason je vrsta aludira do danas je ono što je knjižnica. Tako je u programiranju, imamo ove stvari zove knjižnice. Gdje, u suštini, sve oni su je samo skup funkcija, odnosno u biti samo kod koji je već napisao netko drugi da svi možemo koristite u našim programima. Pa kako se normalno Knjižnica posao, zar ne? Ulazite vrata knjižnice. Imate sve ove knjige možete izvući i možete pristupiti informacijama u tim knjigama. Ista stvar u programiranju. Imate knjižnica koja ima već napisao drugih ljudi. A način na koji možete, kao programer ili student, može pristupiti toj knjižnici kroz hashtag # Include. Na primjer, u C mi ima tri C-- najviše najčešće koriste tri C standarda libraries-- ulazne / izlazne knjižnica, string knjižnica, i matematike knjižnica. Dakle, u svoj prvi Nekoliko problema postavlja, oni će biti tri da prije svega koristimo. Dakle, kao David je već objašnjeno u predavanju, standardni I / O biblioteka, ili standardni ulaz / izlaz knjižnice čini upravo to. To vam omogućuje, u kodu, za unos ništa od korisnika i izlaz da na zaslonu, bitno ispisa na zaslonu. I tako svaki put kada koristite bilo koje funkcije, primjerice funkcija printf () koja ćemo ići u sljedećem slajdu, pobrinite se da su standard I / O Knjižnica inače ne ide na moći koristiti printf () funkciju. Zato što, kao programer Nikad zapravo napisao tu funkciju, ti si samo pomoću nekog kod tuđe unutar svog koda. Da li to smisla svi? Cool. A onda smo dobili na osnovi string.h knjižnica i math.h knjižnica, .h jednostavno označava knjižnicu, druge knjižnice koje na kraju ćete se koristi u kodu. Međutim, u svrhu ove knjižnice, mi također have-- ovog class-- mi također imaju ono što se naziva CS50 knjižnici, cs50.h, gdje smo, za Vaša lektira stvorili mnoge važne i korisne funkcije. Tako da vi kao programer možete piggyback isključeno ono što sam napisao već da Ova funkcija je dostupna za vas za upotrebu. Ja ću biti pokrivanje par funkcije obično koriste, ali znam da su to Sve googleable online. Slobodno, izvucite CS50 knjižnicu i onda imate sve funkcije tamo. Da. SPEAKER 5: Dakle, ako niste bili pomoću softvera koji pruža nam klasa, ne da znači da ćemo morati skinuti i pronaći ovo zaglavlje se podnijeti i reći računalo gdje je to? ANDI PENG: Veliki pitanje. Točno. Dakle, to je kao, ako niste fizički prisutni u knjižnici, ne postoji način za vas zapravo ići i pristup. Dakle, ista stvar s Programiranje u C, vi kako biste bili sigurni da koristite naše Aparat jer knjižnica je već bili uključeni u to. I onda kad hashtag #include, knjižnica je tamo. Da. Dobro pitanje. Svatko dobro? Cool. U redu. Tako ćemo pogoditi, u biti, ono što je prva funkcija koja Mi kao programeri su će se koristiti u našoj koda. To se zove printf () funkcija. Dakle, printf () funkcija, kao što sam već rekao u zadnjem slajdu, uključena u standardnom I / O, standardni ulaz / izlaz, knjižnica. Zato pazite što god using-- Oh, neka mi zgrabite laser pointer-- kada koristite printf () funkcija, morate uključiti standard I / O Knjižnica inače, kad sastaviti, ti si idući u dobiti greška jer računalo će biti kao što je, oh ne znam gdje printf () je, što mi ne govoriš gdje printf () je. Pa printf () je uključena u standardni I / O, pa kada koristite printf (), pobrinite se da se taj crta iznad koda. Tako, na primjer, printf () Ovdje je funkcija. Sve je to ipak ispisati nešto unutar zagrada za korisnika. Želite li itko želio da se ubosti na ono što ovaj redak koda prava Ovdje će se ispisati? Dakle, odgovor je na zaslonu. Bilo tko? Verdi: Dno. ANDI PENG: Verdi, zašto ne odeš naprijed i reći cijelu izjavu? Verdi: Pozdrav, moje ime je Andi, i ja sam 20 godina. ANDI PENG: Ah, lijepo. Tako je u ovom retku ćemo ispis, Pozdrav, moje ime je Andi, i ja sam 20 godina, koji je zapravo istinita izjava. Sintaksa. Dakle, par sintaktičkih pitanja koja vi želite biti sigurni da znate. Citati. Dupli citati reći Računalo koje je sve unutar će se ispisati. Sve u limenci samo biti točno kako možete ga upisati, osim za obično na kraju ćemo želite uključiti hash-- oh sorry-- crtica n. Dakle crtica n. Se bilo tko želi uzeti pogodak na što to čini našu šifru? Da. SPEAKER 6: stavlja ga na novoj liniji. ANDI PENG: Točno. Dakle, sve to čini se dopustiti ono što se događa nakon toga, nakon ove izjave, za ispis na novu liniju. Tako da kada ste pisanja broj ne slučajno ima stvari priljepuša na kraju da ne želite. To je sve dobiva uredno ispisan jedan redak a onda ćemo početi na sljedećoj liniji. Se bilo tko sjetiti što da točka-zarez se kada smo kodiranja? Da. SPEAKER 7: Izjava. ANDI PENG: Žao nam je? SPEAKER 7: Je li to kraj izjavu? ANDI PENG: Da. Tako je u C, ili bilo programiranje jezika, zarez označava kraj programskog linije. Tako, na primjer, na engleskom mi koristimo razdoblje reći, oh ovo je kraj rečenica. U programiranju, ista stvar, imamo točka-zarez za označavanje kraja linije. Često, kad ste s početkom u program, ćete vas shvatiti zaboraviti dodati zarez a potom pokušate pokrenuti svoj broj i to ne radi. A ti si kao, Ah, ja ne znam zašto, to bi trebalo raditi. Šanse su vjerojatno zaboravili točka-zarez ili nosač ili nešto negdje. Dakle, to je važno zapamtiti. Cool. U redu, dizanjem ruku, kako mnogi ljudi ovdje imaju sve uzeti AP Computer Science, ili programirati u Javi prije, ikad? U REDU. Lijep. To neće biti primjenjiv tada, ali u Javi, što ima nešto što se zove Sustava koja ne postoji u C Tako je u C, kad god vas želite dodati u varijablama u sve što želite za ispis, postoji specifična sintaksa ćemo koristiti. To se zove placeholding-- bitno Dodamo rezervirana mjesta na mjesto od cijelog broja ili varijable da želimo ispisati. Dakle, kao što vi vidite što smo uključeni nova knjižnica zaglavlje datoteke ovdje. CS50 knjižnici. A sadržan u toj CS50 knjižnici je uobičajena funkcija ćemo se pomoću u našem naravno zove GetInt (). Da li itko želite uzeti ubosti na što GetInt () svibanj biti događaj. PUBLIKA: [nečujan] ANDI PENG: Žao mi je. Nije mogao čuti. Maddie, svatko. Maddie: Oh, traži što za cijeli broj. ANDI PENG: Točno. Dakle ova funkcija, još jedan funkcija koja je već je napisao netko drugi da možemo pozvati sada. Sve to je brz vas, korisnika, za unos god želite kao kod radi i sprema whatever-- u ovom slučaju smo GetInt () - ING, pa to znači da smo dobivanje cijeli broj. A mi ćemo pohraniti da je u drugom cijeli broj da smo upravo napravili zove dobi. To smisla svima? Cool. Dakle, sada kada smo pohranjeni ovaj cijeli broj, da smo zatraži od korisnika, u ovoj varijabli, mi smo stvorio tipa int zove dob, možemo ići naprijed i mjesto da u našem printf () funkcija. Dakle, sintaksa obično printf () je da tamo gdje se u vašem stvarni fizički crta želite uključiti taj cijeli broj, što učiniti da simbol pravo postoji, postotak simbol, s Vrsta varijable koje želite. Dakle, u ovom slučaju doba cijeli broj. Dakle, ti ćeš uključiti % i jer je cijeli broj. I onda nakon vašeg izjava, idete učiniti zarez i naziv varijable. Dakle ovdje, idemo ispisati van, Pozdrav, moje ime je Andi, i ja sam prazna godina. Hashta-- ili sorry--, dobi s bilo I ulaz. Dakle, ako su za unos 20 za moj GetInt () ovdje, to bi ispisati točno istu stvar. Ali, ako sam htjela nešto ulazni drugo, kao što je možda 40 ili 45, onda bi vidjeti da odražava u skladu s tim u kodu. Dakle, ovo je primjer nešto u kojima ispisuje se i izgleda da vi kao da je to ista stvar, ali ispod haube računalo tu je zapravo vrlo različite stvari događa. Cool. U redu. Pa što ako želimo više varijabli? Prilično jednostavno. Ista stvar. Također imamo novu funkciju Ovdje zove GetString (), Također su u knjižnici CS50, da je sve to ipak je brz korisnik za niz, koji je samo skup znakova, pa kao kaznu ili kao ime. Dakle, u ovom slučaju, mi bi dva rezerviranih% s za gudački i% i za cijeli broj. A mi ćemo slijediti da se dvije varijable Želimo uključeni, u cilju koji se pojavljuju u rečenici. Tako, na primjer, moje ime je prazno, želim ime tamo, pa ću imati ime prvi. I onda nakon toga, želim dob, žele imati dobnu sekundu. I tako, ako sam htjela ulaz, Pozdrav, moje ime je Andi i ja sam 20 godina. Ako sam unesene Andi i 20., točno istu stvar će ispisati; Međutim, sada imamo dva pohranjeni varijable ime kao int. Da. SPEAKER 8: Biste li se mogućnosti pokrenuti ako uključen ime i dob na kraju to? ANDI PENG: Da. To je stvarno dobro pitanje. Dakle duljimo, br. Zbog ime i age-- ono Vrsta varijable ime? SPEAKER 8: String. ANDI PENG: A što Vrsta varijable dob? SPEAKER 8: Integer. ANDI PENG: Dakle, ovdje imamo rezervirano mjesto za string i cijeli broj, zar ne? Dakle, ako ste bili da se prebaci njih, računalo neće znati. To će provjeriti niz, a ako pokušate dati int, to će biti kao pričekajte sam zbunjen, te mi je rekao da bih trebao biti dodjeljujući memorije za int. I upravo ovdje, kad očekuje cijeli broj a ti ga dati ime i ogrlicu, umjesto, također će biti vrlo zbunjujuće, to neće raditi točno onako kako vam je potrebna. Dakle ovdje, imenovanja i sintaksa je vrlo važno za pokretanje koda. Svatko dobro? Da. Maddie. Maddie: Evo, ja znam da sam gledao na primjer u razredu, gdje se pitaju ono što je vaše dobi, što je vaše ime. Ovdje bi to trebalo biti to doesn't-- ako smo pokrenuti ovaj kod, ne bi pitati za to? Ali ti bi samo ulazne dva broja a onda bi se izvoditi kao što je to? ANDI PENG: Da, točno. Dakle, ako ste htjeli za to Prikaz unesite svoju dob, možete samo dodati printf () funkcija kako kaže, unesite svoju dob, iznad. To je dobro pitanje. Da. SPEAKER 9: Dakle, već će biti uključeni u GetInt () [nečujan]. ANDI PENG: Ne, zapravo nije. Dakle, sve to ne samo traži prazan ekran korisniku na ulaznom nešto. Ako ga želite, ako želite da se ispisati kako nešto što govori korisniku kao što su, molim vas dajte mi svoje dobi, a zatim vam će morati printf () da sebi. Budući da svatko koristi ovaj Funkcija za različite stvari, možete biti spremanje dob, možete biti spremanje adresu, možete biti spremanje telefonskih brojeva. I tako to je stvarno do Vaše dečki 'pojedine namjene za ono što želite reći. Da. SPEAKER 10: Dakle, samo da pojasnimo, gdje to vam ulaz ime i dob tako da se pojavi na mjestu% s? ANDI PENG: Kao korisnik? SPEAKER 10: Da, kao i kako mi je činiti bi it-- odakle stavio sam Andi, i gdje da stavim 20? ANDI PENG: Da. Dakle, ako ste bili na zapravo pokrenuti ovaj kod, Nisam zapravo trčanje kod, to je samo sada ovdje. Da sam pokrenuti kod, ja bih sastaviti kod, napravite datoteku, izvoditi kod, a onda bi Samo se dva mjesta za mene da ga unijeti. Da. Vi ćete vidjeti kada igrate oko s kodom sami. Dobro ćemo se kretati u sljedećem poglavlju ono ćemo se pokriva i danas. Ćemo ići preko onoga što uvjetne izjave. Dakle, ako vi ne zaboravite i opoziva od predavanja, uvjetne izjave, svi su oni su skup uputa na računalu u što ako je neki uvjet istinit, te izvršiti kod unutar tog stanja. Tako je u suštini Scratch-- velika tema od danas je da vi već sve vidi logiku iza svega da smo pokriva. I sve što radimo je prevođenje nešto to je vrlo intuitivno u Scratch, i teško ga kodiranja u sintaksi ćemo se pomoću za klasu koja je C Pa logično, sve je to bio blok je da je dio koda upravo tamo. Da. U REDU. Također smo dobili u if ... else izjava koja je samo dodatni sloj složenosti na ako izjavi gdje računalo ima pogled na ovo i vidi, ako je to uvjet je istina, ne sve što je unutar te dvije zagrade, else-- tako nešto kao zadane ako ne ispunjavaju condition-- to učiniti. To je kao raskrižju. Ako pada kiša vani, sam stavio na kiše jaknu, inače ništa drugo ja ne stavi na kišu jaknu. Znači li to da je logika smisla svima? Cool. U redu. Dakle, kao što tvrdi primjer to da ćemo vidjeti u C je ako sam htjela stvoriti promjenjive nazivaju domaći sati. A ako domaći sati manje od pet, kažem Život je super. Predivno je. Međutim, kažu Borba je real-- što je ono što smo svi na ovoj ponedjeljak Poslijepodne se znanost Hill se Vjerojatno radi upravo now-- PUBLIKA: [smijeha] ANDI PENG: Oni način bi, hvala ti za to. Način na koji bi hardcode ovo u C je if-- pretpostavimo već imamo varijablu tipa int pozvao domaće sati ovdje. Ako domaći sati manje od pet printf (), život je super. Sjeti se držati / n, jer Želite novu liniju nakon. Drugo ispis Borba je stvaran. Da li su svi shvate kako Sam prebačen iz ovog bloka u ovaj blok koda? Cool. U redu. Dakle, sada ćemo pogledati više ako izjave uopce. Tako ćemo pretpostaviti Svrha ovog programa Bio mi brz korisnik za ocjenom. Mi redak pomoću GetInt () za razreda, a ulazna vrijednost, i želite prikazati što tip od razreda su dobili. Dakle, ako sam bila dizajnirati program, ja znači u pravilu u svim našim očima, 90-100 je A, 80-90 je B, i tako dalje i tako dalje. Što nije u redu s ovim dio koda koji to nije radiš ono što želim to učiniti. Da. SPEAKER 11: Oni imaju niže granice, ali oni nemaju gornje granice. ANDI PENG: Točno. Jeste svi čuli što je rekla? Tu će biti gornja ograničenja, ali ne i donje granice. Žao nam je, obrnuto, donja granica, nema ograničenja. gornji Dakle, želite uzeti ubosti na rekavši što će se ispisati na ovaj Zaslon da sam pokrenuti ovaj kod. SPEAKER 11: pogreške? ANDI PENG: pogreške? Izvrstan pogodak, nije u redu. Ima li netko drugi ubod? Da, Aron. AARON: Ako ste stavili u nešto veći od 90, to bi pokazati sve ocjene koje ste dobili. To će pokazati što je dobio peticu, imaš B, imaš C ANDI PENG: Da. To je točno. Dakle, to bi bilo divno. Međutim, oni su međusobno ekskluzivni, mislim. Da sam pokrenuti ovaj dio koda. A onda neka je samo reći, ja unesene razred 95. Dakle, 95 sada je pohranjena INT naziva ocjena. I tako je C jezik koji traje do vrha do dna, tako da će uvijek pokrenuti do dna. Tako da će doći ovdje, pročitati ako stupanj je veći od ili jednak 90, printf () imaš A. Veliki sam imaju 95, to je veći od 90. To će ispisati, Imam A. To se događa da pogledamo to ako, to se događa kažu, i 95 je veći od 80, to će ispisati također dobio Got oznaka B usklik, i tako dalje i tako naprijed. Dakle, kao što svi mogu vidjeti, to je čest bug koji se mogu pojaviti kada smo pisanje koda za gledati. Svatko, bilo kakva pitanja o Zato što se događalo? Veliki. U REDU. Pa kako ćemo riješiti to, očito logično slijedi pitanje. Pa, imamo ove prekrasne stvari nazivaju, ako drukčije ako drugi ako drugdje izjavama. Tako možete vidjeti, ako ste htjeli mijenjati taj problem, ste htjeli da je svaki od Uvjeti međusobno isključivi, što bi dodaj drugo ... ako priopćenju. A ovo za course-- mislite o njima kao ljestve, ili poput prečki na ladder-- možete dodati što mnogi od njih kao ti Želite što više uvjeta kao što želite. Dakle ovdje, ako sam unesene stupnja da se 95. Ako ocjena je veći od 95, printf (), dobio sam A. Velika. To će za prikaz drugo ... ako i to će znati, Oh ne, Ja već izvršen prvi drugo. Ja know-- ili prvi if-- znam da Ja ne moram gledati na bilo koji od ovih jer je jedan od njih već je istina. Dakle, to će trajati od vrha prema dolje. Čim prvi je istina, onda to će preskočiti sve ostalo od drugo ... MS. Ima li to smisla? Dakle, na ovaj način imate različite razine provjere i čim jedan od njih je netočno, Ostali su i oni neće ni provjeriti. Cool. U redu. Dakle, ovo je primjer drugačiji vrsta uvjet vidimo rjeđe, ali ćemo ih vidjeti i koristiti ih. I oni su često više učinkovit za pojedine slučajeve. Dakle, imamo ono što se zove izjava prekidač. Dakle, prije nego što smo pokriveno Što je ostalo izjava, if ... else. Evo, mi smo ono što smo zove prekidač izjave. Dakle, kada ćemo koristiti prekidač izjava je ključ? Tako je u priopćenju prekidač, što Obično, uobičajeno, zapravo vam mogu samo ulazni cijeli brojevi za svoje varijabla koja ste provjere. Dakle, ako sam htio provjeriti da se vidi ako se neka number-- primjerice za stupanj, ako sam dobio 90. Želim vidjeti ako je to A, B, ili C. bih mogao imati slučaj ovdje. Međutim, slučaj je biti još jedna konstanta. Dakle, u tom smislu, Prekidač izjava može samo provjeriti jednakost dvaju brojeva. To ne provjerite za bilo što drugo. Dakle, to je nešto što se vrlo oprezni kada koristite ovaj. Dakle ovdje, ako sam htjela provjeriti da se vidi ako je moj razred od 90 jednaka 90 ili 80 ili 70 ili 60, a zatim ispisati odgovarajući razred, Ja bih biti u stanju napisati da u priopćenju prekidača. Tako da će doći ovdje, provjera ovaj broj jednak ove konstante? Ako ne, to će preskočiti. Je li jednaka konstanta dva, i tako dalje i tako dalje, dok ne pogoditi zadane, ako nitko od njih su jednaki. Čim jedan od njih postavljen da bude jednaka, to će učiniti linija koda i odmor. Što znači da će pogoditi da trčanje, razbiti, i samo potpuno preskočiti na dnu kod. Dakle, u tom smislu vrsta funkcija kao if else if else if izjava. Dakle, ovdje je konkretan Primjer za vas momci. Dakle, pretpostavimo da sam htjela stvoriti varijablu nazvanu godine osnovana. I želim brz korisnik za unos godine da je njihova škola je osnovana. Dakle, ja mogu stvoriti izjavu prekidač ovdje. I neka je samo reći, sam ulaz 1636. Ovaj kod ovdje će se vidjeti prekidač godine osnovao što iznosi 1636. To će vidjeti slučaj 1636, oh oni su jednaki, printf () ne bi li se na toj školi do sjevera? Zato pretpostavimo da ne ići ovdje ako idu na Harvard, razbiti i preskočiti do kraja. Da mi je ulaz 1701, koji Pretpostavljam sve nas bi ulaz, to bi preskočiti ovaj slučaj, dolaze do slučaja dva što je 1701, i ispis Dobrodošli na Yaleu! Break, preskočite do kraja. Inače vjerojatno uzimate ovaj tečaj line u kojoj case-- strašan dobrodošlicu na Yale-- to će ići na zadani ispisa, Pozdrav internetu! I slomiti. Da. SPEAKER 12: Može li se drugi umjesto defaultu tamo? ANDI PENG: Ne, jer Način na koji je cijela ova funkcija Prekidač je izgrađen je ti sintaksa morate koristiti je slučaj slučaj zadana. To je kao da je, ako drukčije, ako to jedan je slučaj slučaj zadana. Da. SPEAKER 13: Vi možda već rekao, ali možeš imati više od dva slučaja? ANDI PENG: Da, mogao imati što više slučajeva kao što želite. Misli o tome kao baš kao i beskrajno dodavanje na. SPEAKER 14: Ako vas prebacio 1701 u 1636., to zapravo ne bi razlika zar ne? To samo će se provjere za to. ANDI PENG: To je jako dobro pitanje. A mi ćemo dotaknuti to kasnije, ali samo znam da je prekidač izjava infinitely-- je učinkovitiji od njega, a ako drugo, ako jer djeluje koristeći različite vrste funkcije koje omogućuje vam da u biti, samo skočiti ravno na Slučaj morate biti. Da. SPEAKER 14: cool. Hvala. ANDI PENG: Da SPEAKER 14: A ti ne mogu ne slučajeve kao što su i veći od. ANDI PENG: Ne Dakle, to je ono što ograničava o Prekidač izjava je da imate imati konstante samo, samo cijeli brojevi. Da. U REDU. Dakle, to je nešto što vam Dečki će se susresti rjeđe od, ali samo sam htio uvesti ga u slučaju. Imamo ovdje što je zove trodjelna operatora. Gdje u biti, to je samo kao Ako izjavu sastavio u jednu liniju. Evo, ja ću ići na sljedeću liniji, sljedeća stranica, jer to je lakše vidjeti. Tako smo svi vidjeli to pravo? To je prilično lako slijediti. Da sam htio napraviti varijablu nazvanu string zove a ako se određeni broj Dajem je manje od 100, ja želite dodijeliti niska u nizu, drugo Želim dodijeliti visoka. Ovo ovdje radi točno istu stvar te osam linija koda rade. Dakle ovdje želim stvoriti varijabla niz. A to je uvjet da sam provjeru, ako je broj manji od 100, onda vam dodijeliti vrijednost niska, drugo dodijeliti vrijednost visoka. Ovi slajdovi će biti online, bez brige Ako vi ne dobijete ovo. To je samo jednostavniji način, više učinkovit način pisanja koda. U REDU. Dakle, sada ćemo upišite što, za većinu ljudi su kao vrlo, vrlo zbunjujuće stvar razmišljati o na prvom mjestu. Dionica petlje. Tako je danas, idemo razgovarati oko tri vrste petlje. Idemo početi s vremena petlje, a zatim razgovarati o do while petlja, a zatim razgovarati o za petlje. Pa u biti, za više Vizualni učenici vani, imamo, u suštini, grafički prikaz što while petlja radi. Tako u programiranju, te će se početi i unesite petlju u određenom trenutku. Možete provjeriti stanje. A ako je uvjet istinit, te izvršiti kod iznutra. A ti se vratiti oko i provjerite. Ako je to još uvijek vrijedi li nastaviti prikazivati ovaj kod okolo i okolo u petlji. Međutim, drugi to stanje postaje lažna, ideš razbiti i na kraju petlje. A to je u biti Sintaksa ideš koristiti. Dok neki uvjet istina to učiniti, ako to nije istina, idete preskočiti do kraja i krenuti naprijed sa svojim programom. U REDU. Se bilo tko imati jedan primjer na ono što potencijalno može dogoditi ako pokušam pokrenuti ovaj dio koda? Usput, SAJ-- to Scaz, Andi, Jason-- ćemo potpisati naše e-mailove, Ljubav, SAJ. To nas. U REDU. Svatko ima primjer, ili su ideja o tome što bi to ispisati? Vrsta trik pitanje. Dakle ovdje, sjećaš stanje mi provjere je dok je istina. Dakle, dok je to istina, to je tiskanja, volim Saj! Ima li smisla u kojem bih promijeniti u bilo koji drugi način? Ne, zar ne? Dakle ovdje imamo naišao što je vjerojatno će biti prislušni puno svoje programe, beskonačna petlja. Naći ćete da ako pokrenuti ovaj dio koda, to je samo ide da bi tisak, volim Saj! Dok cijenimo potporu, ne želimo svoje računalo pad zbog tebe zadržati tiskanje Volim Saj! Dakle molim vas, molim vas, izbjeći beskonačnu petlju jer nikad ne događa ocijeniti false i nikad ne ide napustiti petlju. I ti ćeš biti usisan u zauvijek. Cool. U REDU. Drugi tip petlje ćemo govoriti o danas je do while petlja, ne dok petlje. I to se zove do while petlja jer imate učiniti i neko vrijeme. Dakle, to je prilično slično vrijeme petlje, ali malo drugačije. Evo, ti si idući u obaviti sve što je unutar toga dok je određeni uvjet true. Dakle, ako su C i računala sam sam trčanje dolje ovaj dio koda, Ja pogledati na vrhu. Idem C, kažem učiniti nešto takvo. A onda sam provjeriti, a to Istina je, moram to ponoviti. No, dok je to lažno, onda krenuti naprijed i nikad se vratiti na tom petljom. Može li netko uzeti ubod na što je razlika između petlje i jedna mi samo pogledala je gotovo. Da. SPEAKER 15: Uvjet dolazi nakon umjesto prije? ANDI PENG: Točno. Dakle, rekla je stanje dolazi nakon, a ne prije. U konačnici, razlika između ovog i while petlje da ste samo će učiniti sve što je unutra to bez obzira da li ili ne vaše stanje Istina, a zatim provjerite stanje. Dakle, u ovom slučaju, ti si always-- na ovaj način, ste uvijek sigurni sve što je unutra radi najmanje jednom prije checking vidjeti Ako ga želite ponovno pokrenuti. I ovdje je primjer kada bismo ga koristiti. Tako na primjer, ako želim imati varijabla tipa int imenom dob, i želim potaknuti korisnik za njihovu dob, Ja ću učiniti printf () Koliko imaš godina? dob = GetInt (), koji se je navelo korisniku. A neki ljudi će biti jako neugodno. A vi ne želite greške u svoj Program nekoga unosom slično, oh Ja sam negativna 4 godina ili bilo što drugo. U tom slučaju, ako oni to, to procjenjuje da istina, što znači da ću moraju zadržati ide natrag i to. Dakle, to će zadržati ponovno navelo korisniku da vam se kao pravi dob broj i to će zadržati ide natrag i redoing to sve oni vam dati pravi dob veće od jedan, ili nula. Dakle naslutiti, savjet. To će biti vrlo, vrlo korisno za jednu od svojih PSet problema. Da. SPEAKER 16: Ups, ispričavam se. ANDI PENG: Aha. SPEAKER 16: Postoje li, ne biti šupak, but-- ANDI PENG: Bez brige. SPEAKER 16: --are postoji različita pravila ovdje, ili si jednostavno zaboravio staviti citat? ANDI PENG: Oh Yeah. Nažalost, to je potpuno moja loša. To je svakako trebao biti citat. Dobar ulov. To ne bi pokrenuti. U REDU. Tako posljednji tip petlje ćemo razgovarati o i, u konačnici, vrsta najviše Kompleks je za petlju. Ne brinite ako ne znam što to znači. To je prilično zbunjujuće na prvi. Mi ćemo ići preko primjer. Sve što se događa u for petlji je da imate tri izjave da ćeš uključiti. Tako je za određenu stvar, ti si će inicijalizirati varijablu. Vi ćete dodati uvjet da koja ove petlje će se nastaviti prikazivati. I onda, na kraju od petlje, ti si idući u ga ažurirati. Možete ažurirati varijablu koje želite pratiti. Tako smo obično koristite za petlje kada smo želite pokrenuti petlju za određena količina vremena a mi već znamo, Oh želim Ova petlja izvršavati kao 10 puta, onda ste do-- ću ići preko primjer na sljedećoj stranici. Dakle ovdje na primjer, u nule, ako vas htjela nešto ponoviti 10 puta, sve što je imao za reći je, ponovite 10 puta volim Saj! što je prihvatljivija znak potpore nas nego beskonačnu petlju. Evo, kako što bi prijelaz na C i pisati to je za int-- ću stvoriti ili proglasiti varijabla tipa int imenu i. Idem inicijalizirati je na 0, pa sam = 0; i to će biti moje stanje. Tako je i manje od 10. A zatim na end-- posljednja izjava ste će imati je ažuriranje što se događa s varijable i na kraju svoga for petlje. Dakle, to je vrsta zbunjujuće, jer različiti dijelovi ove linije se događa na različite vrste petlje. Ali ja ću ići preko pseudokod primjer da a možda objasniti samo malo bolje. Dakle ovdje. To je petlje smo upravo vidjeli. U biti u pseudokod, što što se događa u ovom programu, prvo Izrađujem ja, inicijalizacije ga na 0. Ja sam ček vidjeti ako i je manje od 10, u tom slučaju prvi put je 0 jer je manje od 10. Tako se petlja će se pokrenuti. A onda ću ispisati ovu liniju. I onda na kraju ove linije, pravo ovdje, ja ću učiniti prirast ja, ja ++, Sve to znači ga povećavati po jedan. Dakle, ja je sada 1. Zato što je nekad 0, ako sam povećajte je, to je sada 1. A onda ću se vratiti na početku petlje i ja provjeriti stanje. Je li stanje još uvijek vrijedi? Da, 1 je još uvijek manje od 10. Dakle, to će ispisati to opet, go i onda sam povećajte i provjerite uvjet kontinuirano, kontinuirano, dok na kraju dobiti do točke gdje sam je 10. Ideš ispisati ovaj 10 puta a onda sam će jednaka 10. Vi ćete provjeriti stanje. Je 10 manje od 10? Ne, to je netočno. Dakle, ova petlja ne ide pokrenuti, to će razbiti, i ti ćeš nastaviti sa svojim kodom. Dakle, kao što vi vidite, ovaj je stvarno izvrstan primjer od petlje možete programirati u tome traje određeno vrijeme. Svatko jasno? Da. SPEAKER 17: Kako o prirastu eksponencijalno, to je drugačije kodiranje? ANDI PENG: Vi can-- ići ćemo više u sljedećem slajdu. Dobro pitanje. Je anyone-- prije nego što sam se presele on-- itko uopće zbunjeni, jer ovo je stvarno teško koncept. Bez brige, ako you're-- OK. Cool. U redu. Samo opći tobogan. Ovaj while petlja se rade točno istu stvar za petlju bio. To je samo napisao drugačije. Vi možete pregledati slajdove na praktičnost kasnije. Ali samo znam da ima višestruki načini pisanja istu stvar dogoditi s različitim petljama. U REDU. Dakle, sada smo dobili u pitanje što ako imamo petlju unutar petlje. Mi smo uzimajući u stvarnom Inception vrsta stvari ovdje. Kada želite raditi stvari višekratnik puta unutar drugih stvari kako raditi stvari više puta, te žele ono što se naziva ugniježđena za petlje. Za one od vas koji su prvi vidjeti i dobiti vrlo zbunjeni, svi mi radimo ovdje ima for petlje gdje imamo varijablu redu. No, unutar njega, imamo i još jedan za petlju promjenjivom naziva stupca. A ja visoko predlažemo svima vama koji su zbunjeni najprije bi track-- izvući ovo, crtati ovo. Ne pokušavajte samo razloga kroz njega, izvući ga van. U tvojoj glavi, na ovom komadu papir, ili što god, pisati red, pratiti što red jednaka. Napišite stupac, pratiti onoga stupac jednak. I pratiti što je ispis sa svakim iteracije. Svaka iteracija te petlje, svaki iteracija tog većeg petlje, samo držati po logici. A ja vam jamčim, svidjet će vam ono što vidite, jer to je također vrlo primjenjivi za vaš problem setovima. Cool. U redu. Dakle, najvažnija stvar da ti dečki su vjerojatno svi razmišljam o upravo sada, su tvoj problem Postavi 1s, koji su zbog četvrtak / petak. U Vašem water.c programu, naslutiti da ćeš imati za brz korisnik za ulaz. Unutar mario.c programu ti si idući u morati se na ugniježđena za petlje, što je for petlja unutar for petlje, ispisati blok piramide, u biti kao što je Mario mora skočiti kroz. A onda unutar vašeg greedy-- ili možda Izrada promjena, ako neko od vas dečki su ikada čuli za that-- ti si idući u morati biti vrlo oprezni prvih pomičnim zarezom vrijednosti. Zapamti plutajući decimale i cijeli brojevi nisu ista stvar. Pratite od kojih je jedan koji je. I ti si idući u iskoristiti uvjetne izjave, kao dobro. U redu, zadnja stvar. Imam par minuta preostalo. Stil. Dakle, to je nešto što ne zapravo utjecaj na efikasnost, ili stvarna vođenje kodu. Međutim, to nam djeluje kao your razreda osnovne škole, kao i svoje čitatelje. To se utječe, ako ste pokušavajući pronaći problem. To utječe na čitljivost kodu. Dakle stil, kao kad pokušavate stil esej za engleski, ako nisu imali stavke, imate sve vrste od ispremiješan zajedno na jednoj liniji, to čini stvarno teško za bilo koga čitati vaš esej, čak i ako Vaši bodovi su logično zvuk. Ista stvar u programiranju. Možete imati strahovito nejasan kod koje će Scaz pokriti, i to još uvijek može raditi i funkcionirati. Ali za nas, kao i vaš lijep TAS, koji će biti čitanje i vrednovanje svoje PSets, to nije lijepo. Dakle molim vas, radi od nas i sebe, kada pokušavate popraviti problem u kodu, i pokušavaš pročitajte svoj kôd, provjerite jeste li slijediti neke konvencije da ćemo ići preko. Dakle, na prvom mjestu. Dajte varijabli smislene nazive. Ako želite spremiti cijeli broj zove dob, molimo navesti ga dobi. Nemojte ime mu visinu. Kada pokušavaš pohraniti dobi u visinu, čini sve vrlo zbunjujuće za nas. Mi ne vole biti zbunjen. Ne vole biti zbunjen. Nitko ne voli biti zbunjen. Ako ćete stvoriti nešto, Ime je nešto smisleno. Međutim, u for petlji, singl varijable lik obično u redu. A u for petlji, ako želite samo ja, i j, k, slobodno samo to. Dosljedan pokrenuo. Dakle, što to znači? To znači da je tehnički, teoretski, možete pokrenuti i stvoriti više varijabli na istoj liniji. Tako na primjer, ja mogu stvoriti cijeli zove scaz_age, i broj pod nazivom andi_age = 20, i cijeli zove jason_age na istoj liniji. I ja sam također možete dodijeliti samo jedan od njih, a ne ostali na vrijednosti. Tražimo li, molim vas nemojte to raditi. Jer ovdje se u biti ste stvorili tri varijable, ali samo jedan od njih zapravo ima vrijednost. I onda kad smo pokušavajući pročitati svoj kod, ili ako pokušavate popraviti problem u kodu, to je vrlo zbunjujuće slijediti. Dakle, samo za svoju čitljivost, za naš čitljivost, nemojte to raditi. Dosljedan vitičastih zagrada. Neki ljudi vole staviti svoje vitičastih zagrada na različitim mjestima. To zapravo ne smeta. Samo pazite da ste dosljedni u svom vlastiti kod na kojoj želite da ih stavite. Dosljedan razmaka. Ako stavite razmak nakon for petlja, uvijek to učiniti. Ne baš kao vrsta to učiniti na nekim mjestima, nemojte to učiniti u drugima. Samo budite dosljedni. Drugo, ako netko želi za iščitavanje CS50 Style Guide, službeno imaju stil vodič koji govori vam sve od tih konvencija, plus više. To je on-line. To je kao cs50.net/style~~pobj ili nešto slično. Možete ga google. Dosljednost je ključ. Dakle, ne brinite što drugi ljudi rade, samo bi bili sigurni da ste dosljedni u svoj kod. Bilo tko imati bilo kakvih pitanja o tome? Da. SPEAKER 18: Pa pravi stvar učiniti s inicijalizacije je samo ih sve imati u zaseban crta, je li to ono što si rekao? ANDI PENG: Tako rijetko sam to dogoditi. Ali, ako ste htjeli, ako ste htjeli biti poput štedi prostor u kodu, ili što god, možete to učiniti. Tražimo da se jednostavno ne inicijalizirati jedna stvar, a ne drugi. Dakle, ako želite učiniti int scaz_age, int andi_age, int jason_age, to je u redu. Samo ne inicijalizirati jedan a ne drugi je sve. Pitanja? U redu. Idem proći off mikrofon, a laserski pokazivač, i pendrekom Scaz u ovom trenutku. To je nezgodno. Evo ga. BRIAN SCASSELLATI: Hvala vam. Kako je to za zvuk? Zvuk je dobar? , Izvrsno. U REDU. Dakle, Pozdrav svima. Idem pokušati raditi kroz praktičan primjer s vama. A mi ćemo koristiti CS50-a razvojno okruženje, što se naziva Integrirana razvojna okolina. A vi ste vidjeli ovo pokazao u predavanju. A Problem Set 1, ti si će imati priliku ga koristiti, i poigrati s da, i dobiti naviknuti na njega, zato što ćemo ga koristiti kroz ostatak semestra. Dakle, u ovom IDE, imate ono što izgleda kao vrlo tradicionalni preglednika datoteka preko jedne strane. Imaš dio gore Top kamo idete vidjeti svoj izvorni kod, svoj Cfile, kod koje pišete. A dolje dolje, vi ćete ima prozor terminala koji ćete koristiti za kako sastaviti svoj program i pokrenuti ili izvršiti svoj program. U REDU. Dakle, samo da nam malo temelj, u tom prozoru terminala, ti si idući u biti koristeći skup naredbi da su standardne naredbe tijekom većina Unix ili Linux sustava. I tako, ako ste ikada koristili bilo koji oblik Unix, Ubuntu, ili bilo koji od drugih okusa, to će izgledati poznato. Ako niste, ne brinite. Nema ništa komplicirano o njima. Oni samo pomoću drugačiji sintaksa, različita imenovanja Konvencija od vas prije nisam vidio. Tako da se popis datoteka unutar određenog imenik, oni će se na Naredba ls naziva ili Popis. Ako želite vidjeti sve sa svim detaljima, ćete koristiti naredbu crta argument s ls -l. A to će vam pokazati sve detaljnije, uključujući dozvole za datoteku. Za promjenu imenik, ćete koristiti cd naredbu. A vi ćete biti u mogućnosti promijeniti imenik i ići na kućnu imenik. To je samo cd sve strane sama, cd s dva točkice će vas vratiti jednu Razina na prethodni katalog. A također možete cd do poddirektorij upišete u cd a ime te poddirektorij. Također možete stvoriti nove mape. A mi ćemo hodati kroz to u samo minutu. Ali samo staviti sve na ekranu. Tako da ih možete vidjeti. Također ćete imati mogućnost manipulirati datotekama izravno iz naredbenog retka. Vi ćete biti u mogućnosti da ih kopirati, na premjestiti ih, ili ih ukloniti, to jest, učinkovito, da biste ih izbrisali. CS50 IDE vam daje puni Moć argumente naredbenog retka. A to znači da možete učiniti vrlo opasne stvari. U REDU. Na primjer, možete ukloniti, ili je izbrisati, file bez pitanja za potvrdu. A ti čak može ukloniti recursively-- to crtica r flag-- cijeli poddirektorij i sve svoje sadržaje. U REDU. Oni navedeni u crveno zbog tebe trebali misliti "opasna" svaki put vidiš te stvari. U REDU. U redu. Sada napokon, stvari koje su će biti jako vrijedno za vas, postoje nekoliko dobrih znakova znati što ste navigacija kroz ovaj prozor terminala. Prvo, možete brisanje zaslona na u bilo koje vrijeme tako da upišete u jasan. I ti ćeš vidjeti ja to vrlo često. Također možete prikazati samo tekst datoteke upisivanjem više i onda naziv datoteke. Tada ćete biti u mogućnosti za pomicanje natrag i naprijed s tim samo s razmaknicu i strijela tipke. Ako imate, kao što smo učinili danas u predavanju, program koji se izvodi kontinuirano u beskonačnu petlju, vi može zaustaviti taj program od izvršenja upišete u kontroli, da se držite Control-C. A možda ćete morati učiniti to više puta. Računalo dobiva daleko ispred tebe. A ponekad je potrebno Daju nekoliko pokušaja prije nego što će zapravo doći. Također ćete biti u mogućnosti da sortirati kroz naredbe da ste upravo upisali pomoću gore tipku, strelica, a zatim prema dolje strelica. A što je najkorisnije je umjesto tipkanja iz duge nazive datoteka, ćete biti u mogućnosti da uporabne tab kako biste dovršiti nekoliko uputa. Sada ćemo pokazati svi oni u samo sekundi. Dakle, ako se ne sjećate ih, ne brini. To su stvari koje ćete pokupiti i koristiti kao idemo zajedno. U REDU. Tako je u C-- razliku Scratch-- C je sastavio jezik. To znači da ćemo se izvor file-- to je tekst koji ste napisali, naredbe koje pišu je printf () izjavama, petlje, sve else-- i idemo da se tu datoteku i predati ga isključite u programu pod nazivom prevodilac. Prevodilac će onda uzmi da tekst koji ste napisali i to prevesti u binarni upute da je vaše računalo zapravo ide uporabu. To se zove objekt ili izvršna datoteka. Ako pogledate ovu sliku, vi ćete vidjeti kod koji ste napisali. Ako pogledate ovu sliku, vi ćete vidjeti slučajni niz znakova da nema smisla uopće. To je zato što je to binarni. To nije značilo za vas da se čita. Međutim, svaki put kada želite pokrenuti nešto, što ćeš biti pokrenut je ovaj objekt datoteka. Dakle, kada radimo s njima Datoteke ćemo napisati datoteku u C Zatim ćemo ga sastaviti, pomoću naredbenim napraviti koji će pozivati prevodilac zveket za C jezik. I to će proizvesti objekt podnijeti, kao out, ili u ovom slučaju, ime, moje datoteke, koje sam stavio u. U redu. Tako ćemo zapravo probati ovaj. Tako sam došao s primjerom ono što sam htjela probati. I jedna od stvari koje mene fascinira je animacija. Tako ćemo pokušati učiniti malo animacije koristeći samo ASCII znakova. Likovi možemo ispisati lako sada. Dakle, ovdje je moj najbolji pokušaj stvaranja za vas animacija za zeko trčanje kroz visoku travu. Tamo je. U REDU. Dakle, on ne radi, ali on je stajao u visokoj travi. Sada, ako sam ja animator, u staroj školi verzija animacije, što sam će učiniti je da će proizvesti slika ovog zeca u travi. I onda bih proizvesti još picture-- druga ono što se zove cell-- da je zeko samo malo pomaknuo. A onda treći onaj koji je imala zec preselio malo dalje. I ja bih se ispiše cijeli slijed ovih stanica. Neki gdje je zeko je više na lijevoj strani. A onda kreće polako, jedan jedan prema sredini. A onda od sredine na to pravo. A ako mi je tada, zapravo sretan, mogao sam ga staviti zajedno ih ja mogao animirati. I tu je moj kunić trčanje kroz travu. To je moja velika PowerPoint trik za dan. U REDU. Dakle, to je kao dobar kao Internet dobiva. U REDU. Dakle, ovdje još jednom, ovdje je naš zeka trčanje kroz travu. SPEAKER 19: Opet. BRIAN SCASSELLATI: Jedan više vremena, u redu. Tu je tvoj zeko. U REDU. Tako je danas ono što ćemo učiniti je da ćemo pokušati automatizirati proces proizvoditi ove stanice. Nećemo sasvim doći do točke biti u mogućnosti da ih sve zajedno. No, idemo pokušati automatizirati Proces generiranja ovaj slijed. A to je mnogo toga što Animacija je danas slično. To jest, ne činiti stvari nužno crtajući sve po ruci. Mi koristimo računala za automatizaciju dijelovi tog procesa. U REDU. Zato mi dopustite da prelaze Sada našem CS50 IDE. I ja sam stvoren za us-- i neka ja uvećanje ovdje malo bit-- sam stvoren za nas polazna točka. Svaki put kad smo vas da sjedite dolje i napisati komad koda, ono što mi stvarno tražimo od vas da učinite se tražimo da se riješi problem. A način na koji ste trebali mislim da radi o je počevši s nekim Jednostavan dio tog rješenja. A onda graditi iz tog dijela. I to je ono što ćemo učiniti danas. Dakle, umjesto da pokušavate sve odjednom napisati cijelu hrpu koda koji je će proizvoditi one 10 animacija stanice, ćemo početi umjesto s jednom komadu koji radi. A onda ćemo izgraditi malo oko toga i malo više i malo više. Sada je dobra stvar o Rješavanje problema na ovaj način je da će vam omogućiti da počnete uvijek s nečim što znate radi i uvesti jednu postupne promjene. I to je sjajan način naučiti kako to kod, jer svaki put kada napraviti promjena, vidite kakav učinak ima. U REDU. Dakle, ovdje je naša polazna točka. U REDU. Dakle, na početku moje datoteke, Imam hash #included stdio.h. To je tako da ja mogu dobiti printf () funkcija za rad. I onda imam glavnu ulogu. I to još uvijek izgleda malo arcane ili opskuran da neke od vas. To je u redu. Sve to govori da je glavna funkcija traje nema arguments-- ništavnima sredstva ništa u C. i to vraća po konvenciji cijeli broj. Glavna uvijek vraća cijeli broj, obično kod govoreći stvari dobro prošao ili ne ide dobro. U REDU. Ali glavno je da se taj čine za nas upravo sada. I onda sam stavio u tri linije koda. A uz svaku liniju broj sam stavio komentar. Sada jedna od stvari koje ćemo inzistirati na tome da to učinite, i to je tako važan programiranja prakse, je da se uvijek komentirati svoj kod. Uvijek zapisati u Engleski komentar nešto da li da kod je trebalo učiniti. Na taj način, kasnije kada se vratite na to, možete gledati na to i možete reći, Oh, sjećam se što sam bio pokušava učiniti s tim. Ili kad TA sjedi s vama pokušati vam pomoći u radno vrijeme, oni mogu gledati na to i ići, ja vidjeti što se pokušava učiniti, već je to što se stvarno događa. U REDU. Tako sam dobio tri dijela na moj broj, Idem prije svega ispis neke točkice na početku. I onda ću isprintati moj izuzetno sviđa zeko. I onda neki malo točkica na kraju. A ove tri ispisa izvještaja trebali bi izgleda poznato na vas u ovom trenutku. Sve što radim u svaki od njih je sam ispis niza znakova. Nema varijabli uključenih. Sve je samo stan. U REDU. Dakle, ako sam sići sada moj terminal-- neka je vidjeti ako ja mogu dobiti natrag u ovu out-- a ja ću opet upisati jasna. SPEAKER 20: Da li koristiti bračni Slash za komentar? BRIAN SCASSELLATI: Može koristiti double-- Da. Postoji više načina na ostavite komentare u C. One način je da koristite dvostruki udarac. Drugi je da koristite Slash i zvijezdu a zatim zatvorite sa zvijezdom i kosom crtom. U redu. Prije svega, idem početi s navigacijom ovdje. Dakle, ako idem na moj home direktorij, Ja sam promijenio direktorije tamo, Idem pogledati i vidjeti što je u tom direktoriju, ls, popis se. Idem vidjeti da imam dobio dvije podmape. Učinimo to malo veći ovdje, tako da svi možemo vidjeti. Vidim da imam dobio dvije podmape. Ja ću promijeniti imenik ići u radni prostor. A ja ću samo upisati se dio njega, a onda samo pritisnite Tab. I to ću završiti ostatak za mene. Fancy. Ja ću gledati i vidjeti u radnom prostoru. I upravo sada, radim na SuperSection da smo učeći upravo sada. Dakle, ja ću ići u tom direktoriju. I na kraju, gledati i vidjeti. I ja imam tu sliku bunny.c. Dobro pa neka mi jasan još jednom. A ja ću opet sam now-- još uvijek borave u tom direktoriju i to mi govori da sam u da SuperSection katalog. Ja ću ići naprijed i čine moj program zeko. I to naredba, napraviti zeca, dok sondiranje malo čudno, Također se poziva na zveket prevodilac. A to je proizvedena za mi izlaz koji je izvršna funny-- izvršna datoteka naziva zeko. U REDU. I onda, i to zvuči još gore, izvršiti zeko. U REDU. I da vidimo što to radi. U REDU. To je malo ono što sam očekivao. Imam moj zeko sliku tamo, ali ja vrsta sve to htjela sama po sebi. Što sam propustio? SPEAKER 21: Slash L ili slash n. BRIAN SCASSELLATI: Slash nje. U REDU. Tako ćemo se vratiti ovdje. A ja ću izaći iz toga. A ja ću se vratiti u ovaj jedan. I neka je pogledati sada iz moje glavne funkcije ovdje. Dakle, što da radim? Želim završiti liniju. Dakle, ja ću staviti u komentaru. Ja ću staviti u printf (). I što moram staviti u? / n. U REDU. Što moram to završiti? Točka i zarez. U redu. Sada, jedan od stvarno važne stvari je da provjerite svaki put kad napravite promjenu u kodu, da ga spasi. Ako niste spremili svoj kod, ti si će primijetiti malo zvijezda gore. I to vam kaže zvijezda nisu spremljene ovaj kod. Ako sam ga sastaviti upravo sada, to nije će odražavati bilo koje od tih promjena, jer prevodilac gleda datoteke to je na disku, a ne datoteke to otvoriti u vašem urednika. U redu. Tako ćemo ga spasiti, a onda ćemo ići pravo na ovdje dolje, vratite se. Siđi u moj terminal. I neka je opet jasno prostora. I možemo ići naprijed i još jedan Vrijeme bi naš zeko program. I izvršiti zeko. To nije uspjelo. Pogrešno Slash. Dakle, ako pogledate što imam, sam stavio / n tamo, ali sam imao pogrešan udarac. Sve što vaše računalo čini se vrlo eksplicitno. U REDU? Jedna mala pogreška interpunkcije i iznenada da ne dobijete ono što želite. U redu. Tako ćemo povećati vratiti opet. Mi ćemo se vratiti. Pa bi to vrlo brzo popraviti. Stavit ćemo pravi udarac u. Mi ćemo ga spasiti. Mi ćemo povećati natrag. Iz nekog razloga, to nije biti sretni, ali idemo naprijed a mi ćemo se vratiti u terminal ovdje. Očistite ga. Mi ćemo uvećanje. I još jednom, mi ćemo napraviti zeca. A sada dosta sigurni, to radi. Hura. U REDU. Tako ćemo pokušati učiniti to malo više općenito. Idemo vidjeti ako umjesto samo ispis jedan određeni okvir, neka je vidjeti ako mi može napraviti ovo tako da možemo dobiti sve 10 od onih animiranih okvira da smo htjeli imati. Pa opet, uzmimo ovo korak u isto vrijeme. Neka prvi je generalizirati, ne tako da ja sve okvire, ali tako da ja niti jedan Okvir da možda želite. Pa što je razlika između okvira? Je li zeko isto? PUBLIKA: Da. BRIAN SCASSELLATI: Da. Koja je razlika? PUBLIKA: Pozicija. BRIAN SCASSELLATI: Njegov stav, zar ne? I kako mogu kontrolirati svoju poziciju? Koliko točkice sam stavljajući na početku i koliko točkice sam stavljajući na kraju. Tako sam imao pet Na početak i pet na kraju. Idemo zamijeniti taj pet s for petlje. U REDU. I ja ću stvoriti za petlje sada da će reći, Idem ispisati neki broj točkica na početku. Idem koristiti varijablu. Recimo, o tome ja kao brojač u mom petlji. I ja ću ga objaviti do vrha. A onda se u for petlji Moram učiniti tri stvari. Prva stvar koju trebate učiniti je moram ja inicijalizirati. Što trebam inicijalizirati to za početak biti? 0. U REDU. Onda moram reći, ono što je prestanka stanje? Kada bih trebao prestati? Pa koliko točkice vas učiniti želite ispisati na ovom jednom? PUBLIKA: Pet. BRIAN SCASSELLATI: Pet opet? Kako o neka je učiniti nešto drugačije, nismo pet. Pokažimo da je drugačije. SPEAKER 22: Dva. BRIAN SCASSELLATI: Dva. U REDU. Dakle, ako želim dvije točkice, ono što sam trebao staviti ovdje? PUBLIKA: Tri. BRIAN SCASSELLATI: Tri. U REDU. Koliko puta je u tome što ići kroz? To će proći tri puta, 0, 1 i 2, zar ne? U redu, idemo natrag do dva. Sada ćemo dobiti dvije točkice. I što želim učiniti svaki Vrijeme idem kroz petlju? Ono što se mora promijeniti svaki put kad idem preko? SPEAKER 23: Dodaj točku. BRIAN SCASSELLATI: Moram zadržati ide. Idem dodati točku. Idem za ispis točku, svaki put kroz petlju. Ali kako ću praćenje kako mnogo puta sam kroz petlju? Ja sam koristeći ja, da promjenjiva, da brojač. Dakle, svaki put kroz, idem povećajte brojač za jedan. Sada, to je isti za mi je rekao i = i + 1. To je u redu. Ja mogu to učiniti that-- Sviđa mi se stenogram, pa ću reći i ++. U REDU. Idemo napraviti istu stvar ovdje na dnu. Samo sam vrsta učinio da je jedan. Ja ću vas dečki neka učinite ovo u potpunosti. U redu. Pa što bih trebao napisati ovdje? Evo moj za petlju. Idem napraviti printf () i idem to učiniti, tako da sam samo ispisati jednu točku na tom dnu. Što bih trebao pisati u ovo petlje sada? Pa, prije svega ono što varijable trebam koristiti? SPEAKER 24: j. BRIAN SCASSELLATI: Mogao bih iskoristiti j. Mogu li koristiti isti onaj? Mogu li koristiti opet? Da. To je u redu, jer je IS da ja sam koristeći se ovdje Ja ih ne opet kad je potrebno Ja bi se na tom pitanju. Pa što bih trebao ja inicijalizirati se? SPEAKER 25: 10. BRIAN SCASSELLATI: 0. Što bih trebao provjeriti? Koliko točkice moram sad na kraju ako imam dvije točkice na početku? Trebam osam na kraju, pa što trebao sam provjeriti, ja manje than-- PUBLIKA: Sedam, osam, devet. BRIAN SCASSELLATI: Čuo sam sedam. Čuo sam osam. I ja sam čuo devet. U REDU. Dakle, svi smo u pravu ball-- Jason kaže 10. U REDU. Ako mi je trebalo dvije točke za prvi, koliko je to I-- i moram osam točaka za Posljednji one-- sam stavio dva iznad, ono što sam trebao staviti dolje? PUBLIKA: Osam. BRIAN SCASSELLATI: Osam. Budući da će računati nula do sedam. I to je osam puta kroz petlju. U REDU. A što moram raditi na kraju? PUBLIKA: i ++. BRIAN SCASSELLATI: i ++. U redu. Tako da izgleda prilično dobro tamo. Idemo probati i neka je vidjeti što to radi. U REDU. Tako ćemo ga spasiti. Lijepo i spasio. Mi ćemo uvećanje natrag. Pokušat ćemo ovdje u terminalu. Mi ćemo uvećanje. Ups. Mi ćemo, još jednom, bi naš zeko program. I ići naprijed i izvršiti zeko. A tu je. Dakle, tu je naš zeko. Gdje ima dvije točkice na početku i osam točaka pri kraju. Svatko uvijek sa mnom? U REDU. Tako smo ga izgradili. Mi smo izgradili jedan zeko, jedan određeni okvir. Sada smo bili u mogućnosti generalizirati da su za izgradnju više, različite vrste okvira. Sada ćemo ići naprijed, i imaju ona stvaraju ne samo jedan okvir, ali neka je generirati 10 okviri, gdje smo se polako bi zeko premjestiti sve put preko polja. U redu. Vratimo. I pokušat ćemo sada. Dakle, ono što mi je stvarno potrebno promijeniti ovdje? Što trebam promijeniti? SPEAKER 26: Najprije trebate promijeniti broj točaka maksimum na početku. Jer ako smo radili 10 točaka, to će morati do razmjera. BRIAN SCASSELLATI: Da. Dakle, sada sam se nekako ožičenoj uvijek učiniti dvije točkice na početku i uvijek činiti osam točkice na kraju. Želim izgraditi još jednu petlju, zar ne? Jer ja ne želim graditi samo jedan zeko sliku, Želim izgraditi 10 zeka slike. Dakle, trebam izgraditi još jednu petlju, i kao što sam proći kroz tu petlju, Želim promijeniti koliko točkice ispisati na početku i koliko točkice ispisati na kraju, na temelju kojih ciklus kroz petlju Ja sam za. U redu. Tako ćemo dobiti još jedan šalter. Netko prije je rekao j, pa ćemo napraviti još j. A sada, idemo graditi drugi za petlje. Ono što ide u tu petlju? Ova stvar mora ići unutar petlje, zar ne? Je li zeko ima ići unutar petlje? Trebam li zeko u svaki od tih 10 sličica? PUBLIKA: Aha. BRIAN SCASSELLATI: Da. Želim zeko u svakoj od 10 sličica, zar ne? Kako o točkice na kraj, moram to? U REDU. Tako ću uvukli sve njih. Idem istaknuti sve to, a ja ću pogoditi Tab. I to će ih gurnuti u cijelom malo, tako da je lako za mene vidjeti što je u petlji. A onda ću ga završiti. Recimo. U REDU? Sada, u ovom petlje da Ja sam building-- Ups, čine to tako da možete see-- Imam moj brojač j. Ja ću ga počeli na 0. Koliko puta želim proći kroz ovu petlju? PUBLIKA: 10 puta. BRIAN SCASSELLATI: 10 puta. Dakle, što je broj trebam staviti ovdje? PUBLIKA: 9, 10. BRAJEN SCASSELLATI: 9, 10, Netko mora reći 11, zar ne? Htjela sam dvije točkice prije i ja staviti manje od 2. Htjela sam osam točaka, Ja sam stavio manje od 8. Sada želim proći kroz 10 puta, pa sam stavio j manje than-- PUBLIKA: 10. BRIAN SCASSELLATI: 10. Idemo tamo. A što da ja radim na kraju do j? ++, Povećajte ga. U REDU. Sada, ovdje je lukav dio, što je će se dogoditi sada, ako sam to učiniti? Ću ispisati 10 slika? SPEAKER 27: Mislim da je svi oni će biti isti. BRIAN SCASSELLATI: oni će svi biti isti, zar ne? Jer svi oni i dalje idu staviti dvije točkice na početku. Ali ja ne želim ih sve imaju dvije točkice početku. Koliko točkice mi je činiti Želite na početku? PUBLIKA: Promjena. BRIAN SCASSELLATI: ja želite promijeniti, zar ne? Pa što ja imam ovdje da mijenja svaki put se petlja prolazi? PUBLIKA: Broj točaka, j. BRIAN SCASSELLATI: j, broj točkica. Dakle, ja mogu promijeniti da je to j. Prvi put kroz petlje, što će to biti? Što mi je postavljena j se na prvi? PUBLIKA: 0. BRIAN SCASSELLATI: Pa koliko puta ću to učiniti? 0. Drugi put kroz petlju, j a će biti 1 jer sam ga povećavati. Koliko točkice ću ispisati? 1. Treći put kroz petlju, koliko točkice ću ispisati? PUBLIKA: Tri. BRIAN SCASSELLATI: j će biti 3. Koliko točkice ću ispisati? Oh, ispričavam se, j će biti 2. Koliko točkice ću ispisati? PUBLIKA: 2. BRIAN SCASSELLATI: 2. U redu, pa ću zadržati povećavati da kao idemo zajedno. Kako o dolje? Što se ovdje dolje? Ne želim 8 uvijek na kraju više? SPEAKER 28: 10. BRIAN SCASSELLATI: Želim 10 točaka? Želim da promijeniti, previše. Pa kako ja želim to promijeniti? PUBLIKA: [nečujan]. BRIAN SCASSELLATI: Pa, ako sam imate pet točkice na početku, koliko dot-a mogu dobiti na kraju? PUBLIKA: Pet. BRIAN SCASSELLATI: Ako imam šest točaka na početku, koliko mogu dobiti na kraju? PUBLIKA: Četiri. BRIAN SCASSELLATI: Ako sam dobio sedam točaka na početku, koliko mogu dobiti na kraju? PUBLIKA: Tri. BRIAN SCASSELLATI: Ako sam dobio j točkice na početku, koliko mogu dobiti na kraju? 10-j. U REDU. Dakle, pokušajmo to van. Tako ću spasiti naš zeko program. Još jednom ćemo smanjenje. Ići ćemo do našeg terminala. Mi ćemo to jasno. I uvećali. Mi ćemo napraviti naš zeko program, opet. A mi ćemo ga izvršiti. Uh oh. Čekaj, idemo udaljili. Jesam li dobiti 10 okvira? Pa, koliko zeko vidim tamo gore? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Imam 10 okvira. Jesu li svi isti? PUBLIKA: Da. Ne. BRIAN SCASSELLATI: Ne To prvi je zeko je daleko na lijevoj strani. I ovdje, zeko je daleko na SPEAKER 29: Točno. BRIAN SCASSELLATI: Dakle, ono što sam zaboravio učiniti? SPEAKER 30: Započnite novu liniju. BRIAN SCASSELLATI: Zaboravio sam započeti novu liniju, opet. Istu grešku sam napravio prije. U redu, idemo to popraviti. Sada, ja još uvijek imam kod tamo napraviti novu liniju. Zašto ne radi? SPEAKER 31: To nije unutar petlje. BRIAN SCASSELLATI: Oh, to nije unutar petlje. Tako je. To je sjedio vani ovdje. A za petlju je sve to je u tom tekstu. Tako ću premjestiti to unutar for petlje. A ja ću Tab ispred njega na pokazuju da je na pravom mjestu. I sada, mi ćemo ga spasiti ponovno. Mi ćemo smanjivanje. Mi ćemo prijeći na našem terminalu. Zumirajte. Mi ćemo preurediti naš zeko program. A sada, sada imamo naše 10 okvira. [Klicati] BRIAN SCASSELLATI: U redu. So. Ovdje je naš ugniježđena za petlje. Mi smo bili u mogućnosti generirati u Unutarnja petlja koliko točkice sam htjela ispisati na početku, na kraju. I kontrolira vanjski petlje koliko okviri sam gradi. Počeli smo s jedan mali srž problema, a mi smo izgradili iz te točke. U redu. Učinimo još jedan korak. Spreman? Postoji jedna stvar u kojoj se ovdje smo zapravo vrsta dobio više složenosti nego što je potrebno. Idemo pogledati. Dakle, u našem zeko programu, ako ja smanjivanje ovdje Ja sam zapravo napraviti neke od iste stvar iznova i iznova. Što da radim to je vrsta ista stvar ponavlja dva puta? SPEAKER 32: Ispišite točkice. BRIAN SCASSELLATI: Da Dva puta sam ispisati one točkice. Stvarno, ja bi trebao imati ovaj komentar ovdje. Ja ispisati neke točkice Na početak, zar se ovdje. A onda sam ispisati neke točkice na kraju. I ja vrsta istu stvar. Što ćemo početi radi na u sljedećih nekoliko tjedana je u mogućnosti da se one blokove kod koje smo koristili iznova i iznova, i kroz proces zove apstrakcija, ćemo ih izvaditi i napišite ih jednom, tako da možemo onda ponovno ih iznova i iznova. Dakle, pokušajmo to. Jeste li spremni? Idemo uzeti ovaj blok koda. I ja ću ga uzeti od tamo. I ja ću define-- dolje na dnu, Idem napisati novu funkciju. To se neće vratiti ništa. I ja ću ga nazvati printDots. To se događa da se jedan Argument, cijeli broj koji kaže howManyDots trebam ispisati. I sada, umjesto ispisa j točkice, ja ću ispisati reci howManyDots trebam ispisati. I tu je jedan mali problem ovdje. Tko zna što je to? Što moram da se na popisu Ovdje to nije definirano? PUBLIKA: [nečujan] BRIAN SCASSELLATI: Pa kako mnoge točke definiran desno gore ovdje, ali ja sam koristeći da sam varijablu. Zato ću uzeti tu varijablu ja i ja ću ga definirati dolje ovdje umjesto toga. Dakle, sada će to stay-- Ups, dobio je caps lock na somehow-- sam će zadržati sam se ovdje. Tako je sada ovdje je moja mala funkcija ili pod-rutinu, a ona kaže, koliko točkice ću ispisati? I to će proći kroz ove petlje i ispisati ih iznova i iznova. I onda mogu mijenjati moj program ovdje. A što ja nazivam kako funkcioniraju? printDots. Tako ću nazvati printDots. Koliko točkice želim ispisati prvi put prije zeko? PUBLIKA: j. BRIAN SCASSELLATI: j. Koliko točkice želim ispisati na kraju, nakon zeca? 10-j. I tu je jedna stvar mi nedostaje. Kao što ste danas vidjeli u predavanju, ćemo objaviti printDots iznad da se dobije prototip. U REDU. Dakle, ono što sam učinio je da sam pokušao izolirati da ponovno koristiti dio koda da sam učinio iznova i iznova. I ja sam pokušao ga izvući, tako da sve što je sadržano na jednom mjestu. Na taj način, ako imam pogrešku negdje, Imam samo to popraviti na jednom mjestu. U redu. Tako ćemo ga spasiti. I neka bi bili sigurni da radi. Dakle, idemo van. Ići ćemo opet na naš terminal. Mi ćemo uvećanje. Mi ćemo učiniti da proces zeko. Oh. I to mi je dao upozorenje. Što je to mi govori? Pa u bilo koji od ovih puta, uvijek želite za pomicanje do prvog error-- Sada na ovom jednom, imam samo jednu. To mi govori u bunny.c, na liniji 8, 9 kolona, ​​postoji problem. Ona kaže da ste proglasili ovu promjenjiva i i niste koristili. Sada normalno, to je nije najgore pogreške. To je jednostavno jedan popraviti. A u stvari, možemo se vratiti u. Možemo se vratiti na zeca. I u ovom slučaju, svi smo morate učiniti je riješiti i, jer mi ne koristite ja u glavnom više. Mi samo ga koristi unutar naše pod-rutinu. Tako ćemo spasiti. Mi ćemo se vratiti. I uvećali. Mi ćemo još jednom napraviti zeca. I opet su naši 10 okviri. U REDU. Svaki put kad si dao procedure-- Da. SPEAKER 33: Imam A- sam zbunjen. Možete li se vratiti na šifru? BRIAN SCASSELLATI: Aha. SPEAKER 33: Pa, kad si napisao Vaš Prototip je ti argument je to zove zvao howMany? No, below-- BRIAN SCASSELLATI: O da. SPEAKER 33: im --called nešto drugačije, ne razumijem. BRIAN SCASSELLATI: Zašto su različiti. Dakle, to je veliko pitanje. Dakle, pitanje je, do Ovdje, napisao sam howMany, a dolje, napisao sam howManyDots. Razlog tome je što se u svoj prototip, to je zapravo ne obraća pažnju na imena koja ste stavljanjem u. Sve što je stvarno stalo je da je cijeli broj. Ona želi znati obrazac onoga što ste stavljanjem u. Sada stylistically-- oops-- ono što sam trebao ne, je volim da ove danima. U REDU. Budući da će se zadržati Lakše mi je zapamtiti. Ali to je bila moja pogreška Da. SPEAKER 34: I tako za Prototip raditi, samo pisanje tu liniju, pisanje prototip, dopušta tu funkciju koja dolazi odmah ispod njega da ide do kraja i dohvatiti što to znači? BRIAN SCASSELLATI: Što to znači kada prevodilac prolazi kroz, to ide od vrha Vaš broj na dnu. A što je ovo prototip, je to je u osnovi obećanje. Ona kaže, tu će biti funkcija negdje definirano. To će se zvati printDots. I to se događa da se jedan argument to će biti cijeli broj i da će se vratiti ništa, praznina tipa. U REDU. Obećavam vam da će biti definira negdje niz cestu. Ali svaki put kad vidim da, kao što ide prema dolje kroz ostatak mog Glavna funkcija, želim da postupa da kao funkcija koji traje jedan cijeli broj unosa. I tako, kada prevodilac spušta kroz to, što vidi to obećanje. A kad se dobiva dolje, čuva ide, ide dalje, pronađe prvi put printDots spominje. A ona kaže, Oh, koju daje ja to j. j je cijeli broj. Pa što mi je obećao da će biti cijeli broj i to je u redu. To je u redu. I onda na kraju, prema dolje na samom dnu, prije nego što sam doći do kraja mog file, ja bi dobro na moje obećanje i ja sam ga definirati. U REDU? SPEAKER 35: Pa, to saves-- Program će uštedjeti praznine kako to ide natrag i ispunjava na kraju? BRIAN SCASSELLATI: Nije o raspodjeli memorije. To je zapravo samo o tome što Vrsta ste očekivali da će vidjeti. Ukoliko ova stvar ima jedan argument, ili pet argumenata? Ukoliko ga cijeli broj se s obzirom na to, ili žice? To je sve što gleda učiniti je da provjerite, ti mi daje Pravo vrsta argumenta. U REDU? U redu. Dopustite mi da vas ostaviti s jedna malo pogledati. ASCII umjetnost nije veliki uzor animacije kao što je danas. Ali neki ljudi naravno uzeti stvari i oni ga gurnuti na svoje krajnosti. To je, kao što je David pokazao u predavanju, komad koda da bi se trebali ni pod kojim uvjetima pokušati sebe udvostručiti. Jer to je strašno stilski. U stvari, to je osmišljen kako bi biti kao teško je moguće čitati. U REDU. Dakle, to učiniti opet, neka je povećavanje ovdje. Idem ići sada, promjena imenik. Ja ću ići jednu razini, natrag u moj radni prostor. I onda ću promijeniti imenik u ovo Drugi katalog koji sam stvorio. I ovo je Međunarodni Prikrivena C Programiranje natjecanje. Obfuscated sredstva kao što je teško što je moguće razumjeti. Dakle molim vas, nemojte se bojati ako pogledate ovo i otići, ne mogu pročitati da. To je točka to. U REDU? No, mi smo to prekrasan program koji sam ide pogledati tako da upišete više. I neka je vidjeti ako ja mogu smanjivanje samo malo, tako da možete vidjeti I ovo je program. To je nazvana endo.c. I to izgleda ovako kantu s vrsta slova F-L-U-I-D u njemu. To je zapravo program. To je zapisano u najviše zatamnjivati Način na koji su autori mogli eventualno pisati. Ali to je prekrasan mali komad koji stvara model dinamike fluida. I tako ćemo dati taj model ulazni koji izgleda ovako, od a stepeničasto set kontejnera s nekim tekućine, neki tekućina, se na vrhu. A mi ćemo ga simulirati što se događa s njim. Tako ću nazvati tu funkciju, endo. I ja ću ga dati da ulazne datoteke koje sam imao. A tu je naš simbol ASCII art. Pun dinamike fluida simulator trčanje u samo nekoliko linija koda. Sada ono što je zapravo jako Nevjerojatna o ovom malom programu je da želim ga zaustaviti, pa ću koristiti ono naredbu? PUBLIKA: Kontrola C. BRIAN SCASSELLATI: Control-C. U REDU. Dakle, ja ću koristiti Control-C. C To će ga zaustaviti. Ja ću opet jasno. A sada ću pozvati se na Program, izvršavanje programa, se koristi kao ulaz. I vidjet ćemo dinamiku fluida Simulacija njega topi. U REDU. Molimo vas da ne dopustite taj program biti stvar koja vas zbunjuje. To je samo tako da možemo završiti nešto cool i zanimljivo. U REDU. Najbolji od sreće sa svojim problemom setovima. Rado ćemo odgovoriti Pitanja nakon klasa. Hvala puno, dečki.